internal void Initialize() { if (!Initialized) { foreach (var es in EntitySettings.Values) { if (string.IsNullOrEmpty(es.WebTypeName) && !es.StaticType.IsEmbeddedEntity()) { es.WebTypeName = TypeLogic.TypeToName.TryGetC(es.StaticType) ?? Reflector.CleanTypeName(es.StaticType); } } WebTypeNames = EntitySettings.Values.Where(es => es.WebTypeName.HasText()) .ToDictionary(es => es.WebTypeName, es => es.StaticType, StringComparer.InvariantCultureIgnoreCase, "WebTypeNames"); Navigator.RegisterArea(typeof(Navigator), areaName: "Signum", resourcesNamespace: "Signum.Web.Signum"); FileRepositoryManager.Register(new LocalizedJavaScriptRepository(typeof(JavascriptMessage), "Signum")); FileRepositoryManager.Register(new CalendarLocalizedJavaScriptRepository("~/Signum/calendarResources/")); FileRepositoryManager.Register(new UrlsRepository("~/Signum/urls/")); Schema.Current.ApplicationName = System.Web.Hosting.HostingEnvironment.ApplicationHost.GetPhysicalPath(); if (Initializing != null) { Initializing(); } Initialized = true; } }
public static string ReadStaticFile(string virtualPath) { if (FileRepositoryManager.FileExists(virtualPath)) { ActionResult result = FileRepositoryManager.GetFile(virtualPath); StaticContentResult staticResult = result as StaticContentResult; using (MemoryStream ms = new MemoryStream(staticResult.Uncompressed)) using (StreamReader reader = new StreamReader(ms)) return(reader.ReadToEnd()); } else { if (virtualPath.StartsWith("~")) { virtualPath = VirtualPathUtility.ToAbsolute(virtualPath); } using (Stream str = VirtualPathProvider.OpenFile(virtualPath)) using (StreamReader reader = new StreamReader(str)) return(reader.ReadToEnd()); } }
public static void RegisterArea(Type clientType, string areaName = null, string controllerNamespace = null, string resourcesNamespace = null) { if (areaName == null) { areaName = clientType.Namespace.AfterLast('.'); } if (areaName.Start(1) == "/") { throw new SystemException("Invalid start character / in {0}".FormatWith(areaName)); } if (controllerNamespace == null) { controllerNamespace = clientType.Namespace; } if (resourcesNamespace == null) { resourcesNamespace = clientType.Namespace; } var assembly = clientType.Assembly; CompiledViews.RegisterArea(assembly, areaName); SignumControllerFactory.RegisterControllersIn(assembly, controllerNamespace, areaName); EmbeddedFilesRepository rep = new EmbeddedFilesRepository(assembly, "~/" + areaName + "/", resourcesNamespace); if (!rep.IsEmpty) { FileRepositoryManager.Register(rep); } }
/// <param name="copyTranslationsToRootFolder">avoids Web Application restart when translations change</param> public static void Start(ITranslator translator, bool translatorUser, bool translationReplacement, bool instanceTranslator, bool copyNewTranslationsToRootFolder = true) { if (Navigator.Manager.NotDefined(MethodInfo.GetCurrentMethod())) { CultureInfoClient.Start(); Translator = translator; Navigator.RegisterArea(typeof(TranslationClient)); if (translatorUser) { Navigator.AddSettings(new List <EntitySettings> { new EntitySettings <TranslatorUserEntity> { PartialViewName = t => ViewPrefix.FormatWith("TranslatorUser") }, new EmbeddedEntitySettings <TranslatorUserCultureEmbedded> { PartialViewName = t => ViewPrefix.FormatWith("TranslatorUserCulture") }, }); } if (translationReplacement) { FileRepositoryManager.Register(new LocalizedJavaScriptRepository(typeof(TranslationJavascriptMessage), "translation")); Navigator.AddSettings(new List <EntitySettings> { new EntitySettings <TranslationReplacementEntity> { PartialViewName = t => ViewPrefix.FormatWith("TranslationReplacement") }, }); } SpecialOmniboxProvider.Register(new SpecialOmniboxAction("TranslateCode", () => TranslationPermission.TranslateCode.IsAuthorized(), uh => uh.Action((TranslationController tc) => tc.Index(null)))); SpecialOmniboxProvider.Register(new SpecialOmniboxAction("LocalizableTypeUsedNotLocalized", () => TranslationPermission.TranslateCode.IsAuthorized(), uh => uh.Action((TranslationController tc) => tc.LocalizableTypeUsedNotLocalized(null)))); if (instanceTranslator) { SpecialOmniboxProvider.Register(new SpecialOmniboxAction("TranslateInstances", () => TranslationPermission.TranslateInstances.IsAuthorized(), uh => uh.Action((TranslatedInstanceController tic) => tic.Index()))); } if (copyNewTranslationsToRootFolder) { string path = Path.Combine(Path.GetDirectoryName(Path.GetDirectoryName(new Uri(typeof(DescriptionManager).Assembly.CodeBase).LocalPath)), "Translations"); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } var existingFiles = Directory.GetFiles(path).ToHashSet(); foreach (string fromFile in Directory.GetFiles(DescriptionManager.TranslationDirectory)) { string toFile = Path.Combine(path, Path.GetFileName(fromFile)); if (!existingFiles.Contains(toFile) || File.GetLastWriteTime(toFile) < File.GetLastWriteTime(fromFile)) { File.Copy(fromFile, toFile, overwrite: true); } } DescriptionManager.TranslationDirectory = path; } } }
public ActionResult GetFile(string file) { return(FileRepositoryManager.GetFile("~/" + file)); }