public OpenContentSettings(IDictionary moduleSettings) { var template = moduleSettings["template"] as string; //templatepath+file or //manifestpath+key FirstTimeInitialisation = string.IsNullOrEmpty(template); if (!FirstTimeInitialisation) { var templateUri = new FileUri(template); TemplateKey = new TemplateKey(templateUri); TemplateManifest templateManifest; Manifest = ManifestUtils.GetManifest(TemplateKey, out templateManifest); Template = templateManifest; } var sTabId = moduleSettings["tabid"] as string; var sModuleId = moduleSettings["moduleid"] as string; TabId = -1; ModuleId = -1; if (sTabId != null && sModuleId != null) { TabId = int.Parse(sTabId); ModuleId = int.Parse(sModuleId); } Data = moduleSettings["data"] as string; _query = moduleSettings["query"] as string; var sDetailTabId = moduleSettings["detailtabid"] as string; DetailTabId = -1; if (!string.IsNullOrEmpty(sDetailTabId)) { DetailTabId = int.Parse(sDetailTabId); } }
public HttpResponseMessage Settings() { string data = (string)ActiveModule.ModuleSettings["data"]; string template = (string)ActiveModule.ModuleSettings["template"]; try { var templateUri = new FileUri(template); string key = templateUri.FileNameWithoutExtension; var fb = new FormBuilder(templateUri); JObject json = fb.BuildForm(key, DnnLanguageUtils.GetCurrentCultureCode()); var dataJson = data.ToJObject("Raw settings json"); if (dataJson != null) { json["data"] = dataJson; } return(Request.CreateResponse(HttpStatusCode.OK, json)); } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public HttpResponseMessage UpdateBuilder(JObject json) { try { OpenContentSettings settings = ActiveModule.OpenContentSettings(); if (json["data"] != null && json["schema"] != null && json["options"] != null) { var key = json["key"].ToString(); string prefix = string.IsNullOrEmpty(key) ? "" : key + "-"; var schema = json["schema"].ToString(); var options = json["options"].ToString(); var view = json["view"].ToString(); var index = json["index"].ToString(); var data = json["data"].ToString(); var datafile = new FileUri(settings.TemplateDir, $"{prefix}builder.json"); var schemafile = new FileUri(settings.TemplateDir, $"{prefix}schema.json"); var optionsfile = new FileUri(settings.TemplateDir, $"{prefix}options.json"); var viewfile = new FileUri(settings.TemplateDir, $"{prefix}view.json"); var indexfile = new FileUri(settings.TemplateDir, $"{prefix}index.json"); try { File.WriteAllText(datafile.PhysicalFilePath, data); File.WriteAllText(schemafile.PhysicalFilePath, schema); File.WriteAllText(optionsfile.PhysicalFilePath, options); File.WriteAllText(viewfile.PhysicalFilePath, view); if (string.IsNullOrEmpty(index)) { if (indexfile.FileExists) { File.Delete(indexfile.PhysicalFilePath); } } else { File.WriteAllText(indexfile.PhysicalFilePath, index); } } catch (Exception ex) { string mess = $"Error while saving file [{datafile.FilePath}]"; App.Services.Logger.Error(mess, ex); throw new Exception(mess, ex); } } return(Request.CreateResponse(HttpStatusCode.OK, new { isValid = true })); } catch (Exception exc) { App.Services.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
public void RegisterStyleSheet(string filePath) { if (!filePath.StartsWith("http") && !filePath.StartsWith("/")) { filePath = VirtualPath + filePath; } if (!filePath.StartsWith("http")) { var file = new FileUri(filePath); filePath = file.UrlFilePath; } ClientResourceManager.RegisterStyleSheet((Page)HttpContext.Current.CurrentHandler, filePath, CSSOrder); CSSOrder++; }
public static string GetDefaultTemplate(string physicalFolder) { string template = ""; FolderUri folder = new FolderUri(FolderUri.ReverseMapPath(physicalFolder)); var manifest = ManifestUtils.GetFileManifest(folder); if (manifest != null && manifest.HasTemplates) { //get the requested template key //var templateManifest = manifest.Templates.First().Value; //var templateUri = new FileUri(folder, templateManifest.Main.Template); template = folder.FolderPath + "/" + manifest.Templates.First().Key; } else { foreach (var item in Directory.GetFiles(physicalFolder)) { string fileName = Path.GetFileName(item).ToLower(); if (fileName == "template.hbs") { template = item; break; } else if (fileName == "template.cshtml") { template = item; break; } if (fileName.EndsWith(".hbs")) { template = item; } if (fileName.EndsWith(".cshtml")) { template = item; } } } return(FileUri.ReverseMapPath(template)); }
public HttpResponseMessage UpdateBuilder(JObject json) { try { OpenContentSettings settings = ActiveModule.OpenContentSettings(); if (json["data"] != null && json["schema"] != null && json["options"] != null) { var key = json["key"].ToString(); string prefix = string.IsNullOrEmpty(key) ? "" : key + "-"; var schema = json["schema"].ToString(); var options = json["options"].ToString(); var view = json["view"].ToString(); var data = json["data"].ToString(); var datafile = new FileUri(settings.TemplateDir.UrlFolder + prefix + "builder.json"); var schemafile = new FileUri(settings.TemplateDir.UrlFolder + prefix + "schema.json"); var optionsfile = new FileUri(settings.TemplateDir.UrlFolder + prefix + "options.json"); var viewfile = new FileUri(settings.TemplateDir.UrlFolder + prefix + "view.json"); try { File.WriteAllText(datafile.PhysicalFilePath, data); File.WriteAllText(schemafile.PhysicalFilePath, schema); File.WriteAllText(optionsfile.PhysicalFilePath, options); File.WriteAllText(viewfile.PhysicalFilePath, view); } catch (Exception ex) { string mess = $"Error while saving file [{datafile.FilePath}]"; Log.Logger.Error(mess, ex); throw new Exception(mess, ex); } } return(Request.CreateResponse(HttpStatusCode.OK, "")); } catch (Exception exc) { Log.Logger.Error(exc); return(Request.CreateErrorResponse(HttpStatusCode.InternalServerError, exc)); } }
internal static void RegisterScript(Page page, string sourceFolder, string jsfilename, int jsOrder, string provider = "DnnBodyProvider") { if (page == null) { return; } if (string.IsNullOrEmpty(jsfilename)) { return; } if (!jsfilename.StartsWith("/") && !jsfilename.Contains("//")) { jsfilename = sourceFolder + jsfilename; } else if (!jsfilename.Contains("//")) { var file = new FileUri(jsfilename); jsfilename = file.UrlFilePath; } ClientResourceManager.RegisterScript(page, jsfilename, jsOrder, provider); }
public HttpResponseMessage Css(int tabid, int portalid) { List <string> templates = new List <string>(); StringBuilder css = new StringBuilder(); var tab = TabController.Instance.GetTab(tabid, portalid); foreach (ModuleInfo module in tab.Modules.Cast <ModuleInfo>().Where(m => m.ModuleDefinition.DefinitionName == App.Config.Opencontent && !m.IsDeleted)) { var moduleSettings = module.OpenContentSettings(); if (moduleSettings.Template != null) { var filePath = moduleSettings.Template.MainTemplateUri().FilePath; if (!templates.Contains(filePath)) { var cssfilename = new FileUri(Path.ChangeExtension(filePath, "css")); if (cssfilename.FileExists) { if (UserInfo.IsSuperUser) { css.Append("/*").Append((cssfilename.FilePath)).AppendLine("*/"); } css.AppendLine(CssMin.CompressCSS(File.ReadAllText(cssfilename.PhysicalFilePath))); } templates.Add(filePath); } } } var res = new HttpResponseMessage(HttpStatusCode.OK) { Content = new StringContent(css.ToString(), Encoding.UTF8, "text/css") }; res.Headers.CacheControl = new CacheControlHeaderValue { MaxAge = new TimeSpan(365, 0, 0, 0), Public = true, Private = false }; return(res); }
public List <PageDto> GetDetailPages(string template, int tabModuleId) { string format; int othermoduleTabId = ActiveModule.TabID; int moduleId = ActiveModule.ModuleID; var listItems = new List <PageDto>(); var templateUri = new FileUri(template); var manifest = templateUri.ToTemplateManifest(); int othermoduleDetailTabId = -1; if (manifest != null && manifest.IsListTemplate && manifest.Manifest.Templates.Any(t => t.Value.Detail != null)) { if (tabModuleId > 0) { var dsModule = (new ModuleController()).GetTabModule(tabModuleId); othermoduleTabId = dsModule.TabID; moduleId = dsModule.ModuleID; othermoduleDetailTabId = GetOtherModuleDetailTabId(othermoduleTabId, moduleId); //if (othermoduleDetailTabId > 0) //{ // //add extra li with "Default Detail Page" directly to dropdown // format = LogContext.IsLogActive ? "Main Module Detail Page - [{0}]" : "Main Module Detail Page"; // listItems.Add(new PageDto() // { // Text = string.Format(format, othermoduleDetailTabId), // TabId = othermoduleDetailTabId // }); //} } Dictionary <string, int> tabs = TabController.GetTabPathDictionary(ActiveModule.PortalID, DnnLanguageUtils.GetCurrentCultureCode()); foreach (var tabId in tabs.Where(i => IsTabWithModuleWithSameMainModule(i.Value, moduleId) && IsAccessibleTab(i.Value))) { string tabname = tabId.Key.Replace("//", " / ").TrimStart(" / "); List <string> infoText = new List <string>(); if (othermoduleDetailTabId > 0 && tabId.Value == othermoduleDetailTabId) { infoText.Add("Main Module Detail"); } if ((othermoduleTabId > 0 && tabId.Value == othermoduleTabId) || (othermoduleTabId == -1 && tabId.Value == ActiveModule.TabID)) { //add extra li with "Main Module Page" directly to dropdown //format = LogContext.IsLogActive ? "Main Module Page - {0} [{1}]" : "Main Module Page"; //listItems.Add(new PageDto() //{ // Text = string.Format(format, tabname, tabId.Value), // TabId = -1 //}); infoText.Add("Main Module "); } if (othermoduleTabId > 0 && tabId.Value == ActiveModule.TabID) { //add extra li with "CurrentPage" directly to dropdown //format = LogContext.IsLogActive ? "Current Page - {0} [{1}]" : "Current Page"; //listItems.Add(new PageDto() //{ // Text = string.Format(format, tabname, tabId.Value), // TabId = tabId.Value //}); infoText.Add("Current"); } format = LogContext.IsLogActive ? "{0} [{1}]" : "{0}"; if (othermoduleTabId > 0 && tabId.Value == ActiveModule.TabID) { listItems.Add(new PageDto() { Text = string.Format(format, tabname, tabId.Value) + " (Current)", TabId = tabId.Value }); } else { listItems.Add(new PageDto() { Text = string.Format(format, tabname, tabId.Value) + (infoText.Any() ? " (" + string.Join(",", infoText.ToArray()) + ")" : ""), TabId = tabId.Value }); } } return(listItems.OrderBy(x => x.Text).ToList()); } return(listItems); }
public static List <ListItem> GetTemplates(PortalSettings portalSettings, int moduleId, FileUri selectedTemplate, string moduleSubDir) { if (selectedTemplate == null) { return(GetTemplates(portalSettings, moduleId, null as TemplateManifest, moduleSubDir)); } return(GetTemplates(portalSettings, moduleId, selectedTemplate.ToTemplateManifest(), moduleSubDir)); }
public static List <ListItem> GetTemplatesFiles(PortalSettings portalSettings, int moduleId, TemplateManifest selectedTemplate, string moduleSubDir, FileUri otherModuleTemplate) { //bool otherModuleSkinTemplate = otherModuleTemplate != null && otherModuleTemplate.PhysicalFilePath.Contains(HostingEnvironment.MapPath(GetSkinTemplateFolder(portalSettings, moduleSubDir))); string basePath = HostingEnvironment.MapPath(GetSiteTemplateFolder(portalSettings, moduleSubDir)); if (!Directory.Exists(basePath)) { Directory.CreateDirectory(basePath); } var dirs = Directory.GetDirectories(basePath); if (otherModuleTemplate != null) { var selDir = otherModuleTemplate.PhysicalFullDirectory; if (!dirs.Contains(selDir)) { selDir = Path.GetDirectoryName(selDir); } if (dirs.Contains(selDir)) { dirs = new string[] { selDir } } ; else { dirs = new string[] { } }; } List <ListItem> lst = new List <ListItem>(); foreach (var dir in dirs) { string templateCat = "Site"; //string dirName = Path.GetFileNameWithoutExtension(dir); string dirName = dir.Substring(basePath.Length); int modId = -1; if (int.TryParse(dirName, out modId)) { // if numeric directory name --> module template if (modId == moduleId) { // this module -> show templateCat = "Module"; } else { // if it's from an other module -> don't show continue; } } IEnumerable <string> files = Directory.EnumerateFiles(dir, "*.*", SearchOption.AllDirectories); IEnumerable <string> manifestfiles = files.Where(s => s.EndsWith("manifest.json")); var manifestTemplateFound = false; if (manifestfiles.Any()) { foreach (string manifestFile in manifestfiles) { FileUri manifestFileUri = FileUri.FromPath(manifestFile); var manifest = ManifestUtils.GetFileManifest(manifestFileUri); if (manifest != null && manifest.HasTemplates) { manifestTemplateFound = true; foreach (var template in manifest.Templates) { FileUri templateUri = new FileUri(manifestFileUri.FolderPath, template.Key); string templateName = Path.GetDirectoryName(manifestFile).Substring(basePath.Length).Replace("\\", " / "); if (!string.IsNullOrEmpty(template.Value.Title)) { templateName = templateName + " - " + template.Value.Title; } var item = new ListItem((templateCat == "Site" ? "" : templateCat + " : ") + templateName, templateUri.FilePath); if (selectedTemplate != null && templateUri.FilePath.ToLowerInvariant() == selectedTemplate.Key.ToString().ToLowerInvariant()) { item.Selected = true; } lst.Add(item); } } } } if (!manifestTemplateFound) { IEnumerable <string> scriptfiles = files.Where(s => s.EndsWith(".cshtml") || s.EndsWith(".vbhtml") || s.EndsWith(".hbs")); foreach (string script in scriptfiles) { FileUri templateUri = FileUri.FromPath(script); string scriptName = script.Remove(script.LastIndexOf(".")).Replace(basePath, ""); if (templateCat == "Module") { if (scriptName.ToLower().EndsWith("template")) { scriptName = ""; } else { scriptName = scriptName.Substring(scriptName.LastIndexOf("\\") + 1); } } else if (scriptName.ToLower().EndsWith("template")) { scriptName = scriptName.Remove(scriptName.LastIndexOf("\\")); } else { scriptName = scriptName.Replace("\\", " - "); } var item = new ListItem((templateCat == "Site" ? "" : templateCat + " : ") + scriptName, templateUri.FilePath); if (selectedTemplate != null && templateUri.FilePath.ToLowerInvariant() == selectedTemplate.Key.ToString().ToLowerInvariant()) { item.Selected = true; } lst.Add(item); } } } // skin basePath = HostingEnvironment.MapPath(GetSkinTemplateFolder(portalSettings, moduleSubDir)); if (Directory.Exists(basePath)) { dirs = Directory.GetDirectories(basePath); if (otherModuleTemplate != null /*&& */) { var selDir = otherModuleTemplate.PhysicalFullDirectory; if (!dirs.Contains(selDir)) { selDir = Path.GetDirectoryName(selDir); } if (dirs.Contains(selDir)) { dirs = new string[] { selDir } } ; else { dirs = new string[] { } }; } foreach (var dir in dirs) { string templateCat = "Skin"; IEnumerable <string> files = Directory.EnumerateFiles(dir, "*.*", SearchOption.AllDirectories); IEnumerable <string> manifestfiles = files.Where(s => s.EndsWith("manifest.json")); var manifestTemplateFound = false; if (manifestfiles.Any()) { foreach (string manifestFile in manifestfiles) { FileUri manifestFileUri = FileUri.FromPath(manifestFile); var manifest = ManifestUtils.GetFileManifest(manifestFileUri); if (manifest != null && manifest.HasTemplates) { manifestTemplateFound = true; foreach (var template in manifest.Templates) { FileUri templateUri = new FileUri(manifestFileUri.FolderPath, template.Key); string templateName = Path.GetDirectoryName(manifestFile).Substring(basePath.Length).Replace("\\", " / "); if (!string.IsNullOrEmpty(template.Value.Title)) { templateName = templateName + " - " + template.Value.Title; } var item = new ListItem((templateCat == "Site" ? "" : templateCat + " : ") + templateName, templateUri.FilePath); if (selectedTemplate != null && templateUri.FilePath.ToLowerInvariant() == selectedTemplate.Key.ToString().ToLowerInvariant()) { item.Selected = true; } lst.Add(item); } } } } if (!manifestTemplateFound) { var scriptfiles = Directory.EnumerateFiles(dir, "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".cshtml") || s.EndsWith(".vbhtml") || s.EndsWith(".hbs")); foreach (string script in scriptfiles) { string scriptName = script.Remove(script.LastIndexOf(".")).Replace(basePath, ""); if (scriptName.ToLower().EndsWith("template")) { scriptName = scriptName.Remove(scriptName.LastIndexOf("\\")); } else { scriptName = scriptName.Replace("\\", " - "); } FileUri templateUri = FileUri.FromPath(script); var item = new ListItem(templateCat + " : " + scriptName, templateUri.FilePath); if (selectedTemplate != null && templateUri.FilePath.ToLowerInvariant() == selectedTemplate.Key.ToString().ToLowerInvariant()) { item.Selected = true; } lst.Add(item); } } } } return(lst); }
private static string[] GetDirs(TemplateManifest selectedTemplate, FileUri otherModuleTemplate, bool advanced, string basePath, string[] dirs, List <ListItem> lst, string folderType) { if (Directory.Exists(basePath)) { dirs = Directory.GetDirectories(basePath); if (otherModuleTemplate != null /*&& */) { var selDir = otherModuleTemplate.PhysicalFullDirectory; if (!dirs.Contains(selDir)) { selDir = Path.GetDirectoryName(selDir); } if (dirs.Contains(selDir)) { dirs = new string[] { selDir } } ; else { dirs = new string[] { } }; } foreach (var dir in dirs) { string templateCat = folderType; IEnumerable <string> files = Directory.EnumerateFiles(dir, "*.*", SearchOption.AllDirectories); IEnumerable <string> manifestfiles = files.Where(s => s.EndsWith("manifest.json")); var manifestTemplateFound = false; if (manifestfiles.Any()) { foreach (string manifestFile in manifestfiles) { FileUri manifestFileUri = FileUri.FromPath(manifestFile); var manifest = ManifestUtils.LoadManifestFileFromCacheOrDisk(manifestFileUri); if (manifest != null && manifest.HasTemplates) { manifestTemplateFound = true; foreach (var template in manifest.Templates) { FileUri templateUri = new FileUri(manifestFileUri.FolderPath, template.Key); string templateName = Path.GetDirectoryName(manifestFile).Substring(basePath.Length).Replace("\\", " / "); if (!String.IsNullOrEmpty(template.Value.Title)) { if (advanced) { templateName = templateName + " - " + template.Value.Title; } } var item = new ListItem((templateCat == "Site" ? "" : templateCat + " : ") + templateName, templateUri.FilePath); if (selectedTemplate != null && templateUri.FilePath.ToLowerInvariant() == selectedTemplate.Key.ToString().ToLowerInvariant()) { item.Selected = true; } lst.Add(item); if (!advanced) { break; } } } } } if (!manifestTemplateFound) { var scriptfiles = Directory.EnumerateFiles(dir, "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".cshtml") || s.EndsWith(".vbhtml") || s.EndsWith(".hbs")); foreach (string script in scriptfiles) { string scriptName = script.Remove(script.LastIndexOf(".")).Replace(basePath, ""); if (scriptName.ToLower().EndsWith("template")) { scriptName = scriptName.Remove(scriptName.LastIndexOf("\\")); } else { scriptName = scriptName.Replace("\\", " - "); } FileUri templateUri = FileUri.FromPath(script); var item = new ListItem(templateCat + " : " + scriptName, templateUri.FilePath); if (selectedTemplate != null && templateUri.FilePath.ToLowerInvariant() == selectedTemplate.Key.ToString().ToLowerInvariant()) { item.Selected = true; } lst.Add(item); } } } } return(dirs); }