public static string SaveAndViewThisPage(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { StringBuilder js = new StringBuilder(); js.Append("function FloatingEditMenuSubmit() {" + Environment.NewLine); js.Append(" submitting = true;" + Environment.NewLine); js.Append(" document.getElementById('" + HatCMS.Controls.EditingSystem.StartEditForm.FormId + "').submit();" + Environment.NewLine); js.Append(" return false;" + Environment.NewLine); js.Append("}" + Environment.NewLine); pageToRenderFor.HeadSection.AddJSStatements(js.ToString()); return("<input type=\"button\" onclick=\"return FloatingEditMenuSubmit();\" value=\"Save & view this page\">"); }
public static string getDMSDownloadUrl(CmsPage pageLinkedToFile, int identifier, CmsLanguage language, string fileName) { string baseUrl = getDMSStorageFolderUrl(pageLinkedToFile, identifier, language); string url = baseUrl + fileName; return(url); }
} // CKEditorDependencies public static void AddPageJavascriptStatements(CmsPage page, string editorId, string renderWidth, string renderHeight, CmsLanguage language) { // ckeditor.js can not be aggregated because there is sniffing done based on this filename page.HeadSection.AddJavascriptFile(JavascriptGroup.Library, "js/_system/ckeditor/ckeditor.js", AggregateMode.DoNotAggregate); string lang = ""; if (language.isValidLanguage && CmsConfig.Languages.Length > 1) { lang = "language: \"" + language.shortCode.ToLower() + "\", "; } page.HeadSection.AddJSOnReady("CKEDITOR.replace( '" + editorId + "', {width:\"" + renderWidth + "\", height:\"" + renderHeight + "\", " + lang + "stylesCombo_stylesSet: 'site_styles:" + PageUtils.ApplicationPath + "js/_system/ckeditor/styles.js', stylesSet: 'site_styles:" + PageUtils.ApplicationPath + "js/_system/ckeditor/styles.js', scayt_autoStartup: false} );"); }
public static string ViewCurrentPageRevisionInformation(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { StringBuilder html = new StringBuilder(); CmsPageRevisionData revData = pageToRenderFor.getRevisionData(CmsContext.requestedPageVersionNumberToView); CmsPageRevisionData[] allRevs = pageToRenderFor.getAllRevisionData(); bool isLiveVersion = false; if (revData.RevisionNumber == allRevs[allRevs.Length - 1].RevisionNumber) { isLiveVersion = true; } if (isLiveVersion) { html.Append("Viewing live version"); } else { html.Append("Viewing page version #" + revData.RevisionNumber.ToString()); } html.Append("<br />"); html.Append("Saved by " + revData.RevisionSavedByUsername + "<br />"); html.Append("on " + revData.RevisionSavedAt.ToString("d MMM yyyy") + " at " + revData.RevisionSavedAt.ToString("%h:mm tt") + "<br />"); // revert to this revision if (isLiveVersion) { html.Append("<a href=\"" + pageToRenderFor.Url + "\">view full edit menu</a>"); } else { html.Append("<a href=\"" + pageToRenderFor.Url + "\">go to live version</a>"); } return(html.ToString()); }
/// <summary> /// derive the file storage folder path /// </summary> /// <param name="aggregatorPage"></param> /// <param name="identifier"></param> /// <returns></returns> public static string getDMSStorageFolderUrl(CmsPage fileDetailsPage, int identifier, CmsLanguage language) { string DMSFileStorageFolderUrl = CmsConfig.getConfigValue("DMSFileStorageFolderUrl", ""); DMSFileStorageFolderUrl = VirtualPathUtility.ToAbsolute(DMSFileStorageFolderUrl); DMSFileStorageFolderUrl = VirtualPathUtility.AppendTrailingSlash(DMSFileStorageFolderUrl); string subDir = ""; if (CmsConfig.getConfigValue("DMSFileStorageLocationVersion", "V1") == "V2") { subDir = fileDetailsPage.ID.ToString() + identifier.ToString() + language.shortCode.ToLower() + "/"; } return(DMSFileStorageFolderUrl + subDir); }
public static string RemoveEditLock(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { CmsPageLockData lockData = pageToRenderFor.getCurrentPageLockData(); NameValueCollection paramList = new NameValueCollection(); StringBuilder html = new StringBuilder(); // -- Kill lock link if (lockData.LockedByUsername == CmsContext.currentWebPortalUser.UserName || CmsContext.currentUserIsSuperAdmin) { paramList.Clear(); paramList.Add("target", pageToRenderFor.ID.ToString()); paramList.Add("action", "logoff"); string killLockLink = CmsContext.getUrlByPagePath(CmsConfig.getConfigValue("KillLockPath", "/_admin/actions/killLock"), paramList); html.Append("<a href=\"#\" onclick=\"EditMenuConfirmModal('Do you really want to remove the edit lock?','" + killLockLink + "',300, 300);\"><strong>Remove</strong> edit lock</a><br />"); } return(html.ToString()); }
public static string AdminReportsAndTools(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { return(RenderPopupLink("AuditPagePath", "/_admin/Audit", pageToRenderFor, langToRenderFor, "<strong>Admin</strong> reports & tools", 700, 400)); }
public static string Logoff(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { string actionPagePath = CmsConfig.getConfigValue("LoginPath", "/_login"); NameValueCollection paramList = new NameValueCollection(); paramList.Add("action", "logoff"); string actionUrl = CmsContext.getUrlByPagePath(actionPagePath, paramList, langToRenderFor); return("<a href=\"" + actionUrl + "\"><strong>Logoff</strong></a>"); }
public static string MoveThisPage(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { return(RenderPopupLink("MovePagePath", "/_admin/actions/movePage", pageToRenderFor, langToRenderFor, "<strong>Move</strong> this page", 500, 400)); }
public static string RenderPopupLink(string actionConfigPagePathKey, string actionDefaultPagePath, NameValueCollection actionPageParams, CmsPage linkTargetPage, CmsLanguage langToRenderFor, string linkText, int popupWidth, int popupHeight) { string actionPagePath = CmsConfig.getConfigValue(actionConfigPagePathKey, actionDefaultPagePath); actionPageParams.Add("target", linkTargetPage.ID.ToString()); string toggleEditUrl = CmsContext.getUrlByPagePath(actionPagePath, actionPageParams, langToRenderFor); return("<a href=\"" + toggleEditUrl + "\" onclick=\"EditMenuShowModal(this.href," + popupWidth + "," + popupHeight + "); return false;\">" + linkText + "</a>"); }
public static string EditThisPage(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { return(RenderLink("GotoEditModePath", "/_admin/action/gotoEdit", pageToRenderFor, langToRenderFor, "<strong>Edit</strong> this page")); }
public static string RenderPopupLink(string actionConfigPagePathKey, string actionDefaultPagePath, CmsPage linkTargetPage, CmsLanguage langToRenderFor, string linkText, int popupWidth, int popupHeight) { return(RenderPopupLink(actionConfigPagePathKey, actionDefaultPagePath, new NameValueCollection(), linkTargetPage, langToRenderFor, linkText, popupWidth, popupHeight)); }
public static string RenderLink(string actionConfigPagePathKey, string actionDefaultPagePath, NameValueCollection actionPageParams, CmsPage linkTargetPage, CmsLanguage langToRenderFor, string linkText) { string actionPagePath = CmsConfig.getConfigValue(actionConfigPagePathKey, actionDefaultPagePath); actionPageParams.Add("target", linkTargetPage.ID.ToString()); string toggleEditUrl = CmsContext.getUrlByPagePath(actionPagePath, actionPageParams, langToRenderFor); return("<a href=\"" + toggleEditUrl + "\">" + linkText + "</a>"); }
public string RunInlineGlossaryFilter(CmsPage pageBeingFiltered, string placeholderHtml) { try { bool enabled = CmsConfig.getConfigValue("GlossaryHighlightFilter:Enable", false); // disabled by default if (!enabled || CmsContext.currentEditMode == CmsEditMode.Edit) { return(placeholderHtml); } #if DEBUG CmsContext.currentPage.HeadSection.AddCSSStyleStatements("span.InlineGlossaryTerm { border-bottom: 1px dotted red; }"); #endif // -- get the glossaryID to get data for (language specific) int glossaryId = 2; string glossaryIds = CmsConfig.getConfigValue("GlossaryHighlightFilter:GlossaryId", ""); try { string[] glossaryIdsParts = glossaryIds.Split(new char[] { CmsConfig.PerLanguageConfigSplitter }, StringSplitOptions.RemoveEmptyEntries); if (glossaryIdsParts.Length >= CmsConfig.Languages.Length) { int index = CmsLanguage.IndexOf(CmsContext.currentLanguage.shortCode, CmsConfig.Languages); if (index >= 0) { glossaryId = Convert.ToInt32(glossaryIdsParts[index]); } } } catch (Exception ex) { throw new Exception("Error: GlossaryHighlightFilter is incorrectly configured!"); } // -- get the glossary data from the database. The data is cached so that we don't hit the database for this info every time. GlossaryData[] gData; string cacheKey = "GlossaryHighlightFilter_Data_" + glossaryId; if (!CmsContext.currentUserIsLoggedIn && System.Web.Hosting.HostingEnvironment.Cache[cacheKey] != null) { gData = (GlossaryData[])System.Web.Hosting.HostingEnvironment.Cache[cacheKey]; } else { GlossaryDb db = new GlossaryDb(); gData = db.getGlossaryData(glossaryId); if (!CmsContext.currentUserIsLoggedIn) { System.Web.Hosting.HostingEnvironment.Cache.Insert(cacheKey, gData, null, DateTime.Now.AddHours(1), System.Web.Caching.Cache.NoSlidingExpiration); } // go through longer words first (longer words/phrases are usually more specific than shorter ones) gData = GlossaryData.SortByWordLength(gData, SortDirection.Descending); } // -- short-circuit processing if there aren't any glossary terms in the system. if (gData.Length == 0) { return(placeholderHtml); } // -- process the placeholderHTML string html = placeholderHtml; List <string> toSurround = new List <string>(); List <string> prefixs = new List <string>(); List <string> suffixs = new List <string>(); foreach (GlossaryData d in gData) { int index = html.IndexOf(d.word.Trim(), StringComparison.CurrentCultureIgnoreCase); if (index >= 0 && d.word.Trim().Length > 0) { // string safeDesc = StringUtils.AddSlashes(d.description); string safeDesc = HttpUtility.HtmlEncode(d.word + ": " + d.description); safeDesc = safeDesc.Replace("\n", " "); safeDesc = safeDesc.Replace("\r", " "); safeDesc = safeDesc.Replace("\t", " "); safeDesc = safeDesc.Replace(" ", " "); string prefix = "<span title=\"" + safeDesc + "\" class=\"InlineGlossaryTerm\">"; string suffix = "</span>"; toSurround.Add(d.word.Trim()); prefixs.Add(prefix); suffixs.Add(suffix); } } // foreach word html = SurroundInHtml(toSurround.ToArray(), prefixs.ToArray(), suffixs.ToArray(), html); return(html.ToString()); } catch (Exception ex) { placeholderHtml += ("<!-- GlossaryHighlightingFilter Error: " + ex.Message + " -->"); } return(placeholderHtml); }
public static string ExitFromEditing(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { // return RenderLink("GotoEditModePath", "/_admin/action/gotoView", pageToRenderFor, langToRenderFor, "<strong>Exit from editing</strong>"); NameValueCollection paramList = new NameValueCollection(); paramList.Add("target", pageToRenderFor.ID.ToString()); string url = CmsContext.getUrlByPagePath(CmsConfig.getConfigValue("GotoViewModePath", "/_admin/action/gotoView"), paramList, langToRenderFor); return("<input type=\"button\" onclick=\"window.location = '" + url + "';\" value=\"Exit from editing\">"); }
public static string ChangeTemplate(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { return(RenderPopupLink("ChangePageTemplatePath", "/_admin/actions/changeTemplate", pageToRenderFor, langToRenderFor, "Change page template", 500, 400)); }
public static string SwitchEditLanguage(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { if (CmsConfig.Languages.Length > 1) { pageToRenderFor.HeadSection.AddCSSStyleStatements(".FloatingLangCurrent { text-decoration: none; color: black; font-weight: bold; } "); pageToRenderFor.HeadSection.AddCSSStyleStatements(".FloatingLangNotCurrent { text-decoration: underline; color: #444; font-weight: normal; } "); List <string> shortCodes = new List <string>(); foreach (CmsLanguage lang in CmsConfig.Languages) { shortCodes.Add(lang.shortCode.ToLower().Trim()); } StringBuilder js = new StringBuilder(); js.Length = 0; js.Append("function FloatingEditMenuSelectLanguage(langCode){" + Environment.NewLine); js.Append(" var codes = [" + StringUtils.Join(",", shortCodes.ToArray(), "'", "'") + "];" + Environment.NewLine); js.Append(" for(var i=0; i< codes.length; i++){" + Environment.NewLine); js.Append(" if (langCode == codes[i]){" + Environment.NewLine); js.Append(" document.getElementById('lang_'+codes[i]).style.display = 'block';" + Environment.NewLine); js.Append(" document.getElementById('langSel_'+codes[i]).className = 'FloatingLangCurrent';" + Environment.NewLine); js.Append(" } else {" + Environment.NewLine); js.Append(" document.getElementById('lang_'+codes[i]).style.display = 'none';" + Environment.NewLine); js.Append(" document.getElementById('langSel_'+codes[i]).className = 'FloatingLangNotCurrent';" + Environment.NewLine); js.Append(" }" + Environment.NewLine); js.Append(" }" + Environment.NewLine); js.Append("}" + Environment.NewLine); pageToRenderFor.HeadSection.AddJSStatements(js.ToString()); List <string> links = new List <string>(); foreach (CmsLanguage lang in CmsConfig.Languages) { string linkClass = "FloatingLangNotCurrent"; if (lang == CmsContext.currentLanguage) { linkClass = "FloatingLangCurrent"; } links.Add("<a href=\"#\" class=\"" + linkClass + "\" id=\"langSel_" + lang.shortCode.ToLower() + "\" onclick=\"FloatingEditMenuSelectLanguage('" + lang.shortCode.ToLower() + "'); return false;\">" + lang.shortCode + "</a>"); } // foreach StringBuilder html = new StringBuilder(); html.Append("Edit Language: "); html.Append(string.Join(" | ", links.ToArray())); return(html.ToString()); } return(""); }
public static string ViewRevisions(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { return(RenderPopupLink("ViewRevisionsPagePath", "/_admin/ViewRevisions", pageToRenderFor, langToRenderFor, "Revisions", 500, 400)); }
public static string RefreshEditLockStatus(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { CmsPageLockData lockData = pageToRenderFor.getCurrentPageLockData(); StringBuilder html = new StringBuilder(); if (lockData != null) { html.Append("<strong>Editing is locked</strong><br />"); html.Append("Locked by: " + lockData.LockedByUsername + "<br />"); TimeSpan expiresIn = TimeSpan.FromTicks(lockData.LockExpiresAt.Ticks - DateTime.Now.Ticks); int numMinutes = Convert.ToInt32(Math.Round(expiresIn.TotalMinutes)); html.Append("Lock expires in " + numMinutes + " minutes or when editing is complete<br />"); html.Append("<a href=\"" + pageToRenderFor.Url + "\">refresh status</a>"); } return(html.ToString()); }
public static string DeleteThisPage(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { NameValueCollection paramList = new NameValueCollection(); paramList.Add("target", pageToRenderFor.ID.ToString()); string confirmText = "Do you really want to delete this page?"; int numPagesToDelete = pageToRenderFor.getLinearizedPages().Keys.Count; if (numPagesToDelete > 1) { confirmText = "Do you really want to delete this page and all " + (numPagesToDelete - 1) + " sub-pages?"; } string deletePageUrl = CmsContext.getUrlByPagePath(CmsConfig.getConfigValue("DeletePagePath", "/_admin/actions/deletePage"), paramList, langToRenderFor); return("<a href=\"#\" onclick=\"EditMenuConfirmModal('" + confirmText + "','" + deletePageUrl + "',300, 300);\"><strong>Delete</strong> this page</a>"); }
public static string UserManagement(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { return(RenderPopupLink("EditUsersPagePath", "/_admin/EditUsers", pageToRenderFor, langToRenderFor, "<strong>User</strong> management", 500, 400)); }
public static string CreateNewPage(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { action.CreateNewPageOptions = CmsCreateNewPageOptions.CreateInstanceWithDefaultsForCurrentUser(pageToRenderFor); NameValueCollection createPageParams = action.CreateNewPageOptions.GetCreatePagePopupParams(); if (action.CreateNewPageOptions.RequiresUserInput()) { return(RenderPopupLink("CreateNewPagePath", "/_admin/createPage", createPageParams, pageToRenderFor, langToRenderFor, "<strong>Create</strong> a new sub-page", 500, 400)); } else { return(RenderLink("CreateNewPagePath", "/_admin/createPage", createPageParams, pageToRenderFor, langToRenderFor, "<strong>Create</strong> a new sub-page")); } }
/// <summary> /// Add a control that is located on disk or as a class name to the parentToAddControlTo. /// </summary> /// <param name="controlNameOrPathToAdd"></param> /// <param name="controlDefn"></param> /// <param name="parentToAddControlTo"></param> /// <param name="langToRenderFor"></param> /// <returns></returns> public static bool AddControlToPage(string controlNameOrPathToAdd, CmsControlDefinition controlDefnToAdd, System.Web.UI.UserControl parentToAddControlTo, CmsLanguage langToRenderFor) { if (ControlOnDiskExists(controlNameOrPathToAdd)) { Control ascxControl = LoadControlOnDisk(controlNameOrPathToAdd); if (ascxControl != null) { parentToAddControlTo.Controls.Add(ascxControl); ascxControl.ID = controlDefnToAdd.RawTemplateParameters; return(true); } } else if (ControlClassExists(controlNameOrPathToAdd)) { HatCMS.Controls.BaseCmsControl c = LoadControlFromClass(controlNameOrPathToAdd); if (c != null) { parentToAddControlTo.Controls.Add(c.ToLiteralControl(controlDefnToAdd, langToRenderFor)); return(true); } } return(false); }
public static string SortSubPages(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { return(RenderPopupLink("SortSubPagesPath", "/_admin/actions/sortSubPages", pageToRenderFor, langToRenderFor, "<strong>Sort</strong> sub-pages", 500, 400)); }
public static string getDMSStorageFilenameOnDisk(CmsPage pageLinkedToFile, int identifier, CmsLanguage language, string userFilename) { string prependToFilename = ""; if (CmsConfig.getConfigValue("DMSFileStorageLocationVersion", "V1") == "V1") { prependToFilename = pageLinkedToFile.ID.ToString() + identifier.ToString(); } string baseUrl = getDMSStorageFolderUrl(pageLinkedToFile, identifier, language); string fn = baseUrl + prependToFilename + userFilename; string fnOnDisk = System.Web.Hosting.HostingEnvironment.MapPath(fn); return(fnOnDisk); }
public static string ChangeMenuVisibility(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor) { return(RenderPopupLink("ChangeMenuVisibilityPath", "/_admin/actions/MenuVisibilityPopup", pageToRenderFor, langToRenderFor, "<strong>Change</strong> menu visibility", 650, 400)); }
private CmsDependencyMessage[] contentMatches(string ContentToSearch, CmsPage inPage, CmsLanguage inLang) { if (ContentToSearch.Trim() == "") { return(new CmsDependencyMessage[0]); // short circuit if ContentToSearch is blank } List <CmsDependencyMessage> ret = new List <CmsDependencyMessage>(); string errMsg = errMsg = "<a href=\"" + inPage.getUrl(inLang) + "\" target=\"_blank\">This page</a> {0} contain the text '" + contentToFind + "'";; if (placeholderTypeToMatch == "") { errMsg = "The " + placeholderTypeToMatch + " placeholder on <a href=\"" + inPage.getUrl(inLang) + "\" target=\"_blank\">this page</a> {0} contain the text '" + contentToFind + "'"; } switch (existsMode) { case ExistsMode.MustExist: if (ContentToSearch.IndexOf(contentToFind, comparisonMode) < 0) { ret.Add(new CmsDependencyMessage(CmsDependencyMessage.MessageLevel.Error, String.Format(errMsg, "must"))); } break; case ExistsMode.MustNotExist: if (ContentToSearch.IndexOf(contentToFind, comparisonMode) >= 0) { ret.Add(new CmsDependencyMessage(CmsDependencyMessage.MessageLevel.Error, String.Format(errMsg, "must NOT"))); } break; } return(ret.ToArray()); }
public void ProcessRequest(HttpContext context) { string pagePath = ""; if (context.Request.QueryString["p"] != null) { pagePath = context.Request.QueryString["p"]; } CmsLanguage pageLang = CmsConfig.Languages[0]; if (CmsConfig.Languages.Length > 1 && context.Request.QueryString["l"] != null) { string langCode = context.Request.QueryString["l"]; CmsLanguage testLang = CmsLanguage.GetFromHaystack(langCode, CmsConfig.Languages); if (!testLang.isInvalidLanguage) { pageLang = testLang; } } CmsPage pageToRenderRSSFor = CmsContext.getPageByPath(pagePath, pageLang); if (pageToRenderRSSFor.Id < 0 || !pageToRenderRSSFor.currentUserCanRead) { context.Response.ContentType = "text/plain"; context.Response.Write("Error: CMS page not found"); context.Response.Flush(); context.Response.End(); } else { // -- generate the RssFeed RssFeed rssFeed = new RssFeed(System.Text.UTF8Encoding.UTF8); rssFeed.Version = RssVersion.RSS20; // -- setup the RSS channel string titlePrefix = CmsConfig.getConfigValue("pageTitlePrefix", ""); string titlePostfix = CmsConfig.getConfigValue("pageTitlePostfix", ""); string rssTitle = titlePrefix + pageToRenderRSSFor.getTitle(pageLang) + titlePostfix; string rssDescription = pageToRenderRSSFor.getSearchEngineDescription(pageLang); Uri rssLink = new Uri(pageToRenderRSSFor.getUrl(CmsUrlFormat.FullIncludingProtocolAndDomainName, pageLang), UriKind.RelativeOrAbsolute); RssChannel rssChannel = new RssChannel(rssTitle, rssDescription, rssLink); rssChannel.Generator = "HatCMS: https://code.google.com/p/hatcms/"; // -- call "GetRssFeedItems()" for each placeholder. CmsPlaceholderDefinition[] phDefs = pageToRenderRSSFor.getAllPlaceholderDefinitions(); foreach (CmsPlaceholderDefinition phDef in phDefs) { RssItem[] items = Placeholders.PlaceholderUtils.GetRssFeedItems(phDef.PlaceholderType, pageToRenderRSSFor, phDef, pageLang); foreach (RssItem item in items) { rssChannel.Items.Add(item); } } rssFeed.Channels.Add(rssChannel); context.Response.ContentType = "application/rss+xml"; rssFeed.Write(context.Response.OutputStream); context.Response.Flush(); context.Response.End(); } }