public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { StringBuilder html = new StringBuilder(); html.Append("<div style=\"text-align: center;\">"); string msg = validate(); if (msg != "") { return(formatErrorMsg(msg)); } CmsPage p = getCmsPage(); if (p.hasPlaceholder("FileLibraryAggregator")) { msg += handleFileLibraryAggregatorDelete(p); } if (p.hasPlaceholder("FileLibraryDetails")) { msg += handleFileLibraryDetailsDelete(p); } if (msg != "") { return(formatErrorMsg(msg)); } html.Append(renderCloseButton(p.ParentPage.Url)); html.Append("</div>"); return(html.ToString()); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { if (!CmsContext.currentUserIsSuperAdmin) { return("Access denied"); } StringBuilder html = new StringBuilder(); html.Append("<h1>Manage Website Users</h1>"); PageDisplayMode displayMode = (PageDisplayMode)PageUtils.getFromForm("display", typeof(PageDisplayMode), PageDisplayMode.ListUsers); switch (displayMode) { case PageDisplayMode.ListUsers: html.Append(getListUsersDisplay()); break; case PageDisplayMode.AddUser: html.Append(getEditUserDisplay(Int32.MinValue, CmsContext.currentPage)); break; case PageDisplayMode.EditSelectedUser: html.Append(getEditUserDisplay(PageUtils.getFromForm("uid", Int32.MinValue), CmsContext.currentPage)); break; } // switch return(html.ToString()); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { CmsPage page = CmsContext.currentPage; addJavascript(CmsConfig.Languages, page); page.HeadSection.AddJSOnReady("updateOpener( window.name );"); StringBuilder html = new StringBuilder(); string controlId = "fileLibraryCategory_"; CmsLanguage[] langArray = CmsConfig.Languages; html.Append(handleFormSubmit(langArray, controlId) + EOL); string tHeader = generateHeader(langArray); string tContent = generateContent(langArray, controlId); string tFooter = generateFooter(langArray, controlId); string url = page.getUrl(CmsContext.currentLanguage); html.Append(page.getFormStartHtml(controlId + "form") + EOL); html.Append(PageUtils.getHiddenInputHtml(controlId + "id", controlId + "id", "") + EOL); html.Append(PageUtils.getHiddenInputHtml(controlId + "delete", controlId + "delete", "") + EOL); html.Append("<table style=\"border-collapse: collapse; width: 100%;\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\">" + EOL); html.Append(tHeader + tContent + tFooter + EOL); html.Append("</table>" + EOL); html.Append("</form>" + EOL); return(html.ToString()); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { CmsPage page = CmsContext.currentPage; addJavascript(CmsConfig.Languages, page); page.HeadSection.AddJSOnReady("updateOpener( window.name );"); string controlId = "jobLocation_"; CmsLanguage[] langArray = CmsConfig.Languages; StringBuilder html = new StringBuilder(); html.Append(handleFormSubmit(langArray, controlId) + EOL); string tHeader = generateHeader(langArray); string tContent = generateContent(langArray, controlId); string tFooter = generateFooter(langArray, controlId); string url = page.getUrl(CmsContext.currentLanguage); html.Append("<form name=\"" + controlId + "Form\" method=\"get\" action=\"" + url + "\" >" + EOL); html.Append("<input type=\"hidden\" name=\"" + controlId + "id\" id=\"" + controlId + "id\" />" + EOL); html.Append("<table style=\"border-collapse: collapse; width: 100%;\" border=\"1\" cellspacing=\"0\" cellpadding=\"2\">" + EOL); html.Append(tHeader + tContent + tFooter + EOL); html.Append("</table>" + EOL); html.Append("</form>" + EOL); return(html.ToString()); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { StringBuilder sb = new StringBuilder(); int pageId = getTargetPageId(sb); if (pageId == Int32.MinValue) { return(sb.ToString()); } Stack <CmsPage> cmsPageStack = new Stack <CmsPage>(); getCmsPageTree(cmsPageStack, pageId); string controlId = "MenuVisibilityPopup_"; if (PageUtils.getFromForm(controlId + "action", "") == "updateForm") { return(handleHtmlFormSubmit(cmsPageStack, pageId, controlId)); } else { return(displayHtmlForm(cmsPageStack, pageId, controlId)); } }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { int targetPageId = PageUtils.getFromForm("target", Int32.MinValue); CmsPage targetPage = CmsContext.getPageById(targetPageId); string appendToTargetUrl = PageUtils.getFromForm("appendToTargetUrl", ""); NameValueCollection paramList = new NameValueCollection(); if (appendToTargetUrl.Trim() != "") { // -- split by | (pipe), and then by = (equals). string[] parts = appendToTargetUrl.Split(new char[] { '|' }); foreach (string s in parts) { string[] subParts = s.Split(new char[] { '=' }); if (subParts.Length == 2) { paramList.Add(subParts[0], subParts[1]); } } } CmsContext.setEditModeAndRedirect(CmsEditMode.View, targetPage, paramList); return(""); }
public override string[] getControlParameterKeys(CmsControlDefinition controlDefinition) { Dictionary <string, string> parameters = tokenizeCommandParameters(controlDefinition); List <string> keys = new List <string>(parameters.Keys); return(keys.ToArray()); }
public override string getControlParameterKeyValue(CmsControlDefinition controlDefinition, string key, string defaultValue) { Dictionary <string, string> parameters = tokenizeCommandParameters(controlDefinition); if (parameters.ContainsKey(key)) { return(parameters[key]); } return(defaultValue); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { string html = "<p><center>"; int targetPageId = PageUtils.getFromForm("target", Int32.MinValue); if (targetPageId < 0) { html = html + "<span style=\"color: red\">Invalid Target parameter. No page to delete.</span>"; } else { if (!CmsContext.pageExists(targetPageId)) { html = html + "<span style=\"color: red\">Target page does not exist. No page to delete.</span>"; } else { CmsPage page = CmsContext.getPageById(targetPageId); if (!page.currentUserCanWrite) { return("Access Denied"); } if (page.isSecurityZoneBoundary == true) // if the cms page is a zone boundary, do not allow delete { html += "<span style=\"color: red\">Cannot delete the page because it is located at the zone boundary.</span>"; html += "<p><input type=\"button\" onclick=\"window.close();\" value=\"close this window\">"; html += "</center>"; return(html); } bool success = page.DeleteThisPage(); if (!success) { html = html + "<span style=\"color: red\">Database error: could not delete page.</span>"; } else { string script = "<script>" + Environment.NewLine; script = script + "function go(url){" + Environment.NewLine; script = script + "opener.location.href = url;" + Environment.NewLine; script = script + "window.close();\n}"; script = script + "</script>" + Environment.NewLine; html = html + "<span style=\"color: green; font-weight: bold;\">The Page has successfully been deleted.</span>"; html = html + "<p><input type=\"button\" onclick=\"go('" + page.ParentPage.Url + "');\" value=\"close this window\">"; return(script + html); } } } html = html + "<p><input type=\"button\" onclick=\"window.close();\" value=\"close this window\">"; html = html + "</center>"; return(html); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { StringBuilder html = new StringBuilder(); if (CmsContext.currentPage.currentUserCanWrite && CmsContext.currentEditMode == CmsEditMode.Edit) { html.Append(CmsContext.currentPage.getFormStartHtml(FormId, "submitting = true;")); CmsContext.currentPage.HeadSection.AddEmbeddedJavascriptFile(JavascriptGroup.FrontEnd, typeof(StartEditForm).Assembly, "beforeUnload.js"); } return(html.ToString()); }
public override bool getControlParameterKeyValue(CmsControlDefinition controlDefinition, string key, bool defaultValue) { Dictionary <string, string> parameters = tokenizeCommandParameters(controlDefinition); if (parameters.ContainsKey(key)) { try { return(Convert.ToBoolean(parameters[key])); } catch { } } return(defaultValue); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { string html = "<p><center>"; int targetPageId = PageUtils.getFromForm("target", Int32.MinValue); if (targetPageId < 0) { html = html + "<span style=\"color: red\">Invalid Target parameter. No lock to remove.</span>"; } else { if (!CmsContext.pageExists(targetPageId)) { html = html + "<span style=\"color: red\">Target page does not exist. No lock to remove.</span>"; } else { CmsPage targetPage = CmsContext.getPageById(targetPageId); if (!targetPage.currentUserCanWrite || !targetPage.currentUserCanRead) { return("Access Denied"); } targetPage.clearCurrentPageLock(); bool success = (targetPage.getCurrentPageLockData() == null); if (!success) { html = html + "<span style=\"color: red\">Database error: could not remove page edit lock.</span>"; } else { string script = "<script>" + Environment.NewLine; script = script + "function go(url){" + Environment.NewLine; script = script + "opener.location.href = url;" + Environment.NewLine; script = script + "window.close();\n}"; script = script + "</script>" + Environment.NewLine; html = html + "<span style=\"color: green; font-weight: bold;\">The Page Edit Lock has successfully been removed.</span>"; html = html + "<p><input type=\"button\" onclick=\"go('" + targetPage.Url + "');\" value=\"close this window\">"; return(script + html); } } } html = html + "<p><input type=\"button\" onclick=\"window.close();\" value=\"close this window\">"; html = html + "</center>"; return(html); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { // -- render based on the current edit mode if (CmsContext.currentEditMode == CmsEditMode.Edit) { if (PageUtils.getFromForm("EndEditForm", "") == "submit") { NameValueCollection paramList = new NameValueCollection(); string appendToTargetUrl = PageUtils.getFromForm("appendToTargetUrl", ""); if (appendToTargetUrl != "") { string[] p1 = appendToTargetUrl.Split(new char[] { '|', ',' }); foreach (string s in p1) { string[] p2 = s.Split(new char[] { '=' }); if (p2.Length == 2) { paramList.Add(p2[0], p2[1]); } } } CmsContext.setEditModeAndRedirect(CmsEditMode.View, CmsContext.currentPage, paramList); return(""); // -- setEditModeAndRedirect ends response } // if submit StringBuilder html = new StringBuilder(); html.Append(PageUtils.getHiddenInputHtml("EndEditForm", "submit")); html.Append(PageUtils.getHiddenInputHtml(CmsContext.EditModeFormName, "1")); // track the edit mode html.Append(CmsContext.currentPage.getFormCloseHtml(StartEditForm.FormId)); return(html.ToString()); } // if in edit mode else { // -in View mode return(""); } }
/// <summary> /// returns an array of CmsControlDefinitions for this template. /// note: all ControlPath entries are converted to lower case /// </summary> /// <returns></returns> public override CmsControlDefinition[] getAllControlDefinitions() { List <CmsControlDefinition> ret = new List <CmsControlDefinition>(); // -- get the template file contents string templateText = getTemplateFileContents(); string[] CommandParams = getCommandStatementParameters("rendercontrol", templateText); foreach (string rawStatement in CommandParams) { Dictionary <string, string> tokens = tokenizeCommandParameters(rawStatement); string controlNameOrPath = tokens["##commandname##"].ToLower(); CmsControlDefinition def = new CmsControlDefinition(controlNameOrPath, rawStatement); ret.Add(def); } // -- get the TemplateLayout statement string[] layouts = getCommandStatementParameters("TemplateLayout", templateText); if (layouts.Length > 0) { string layoutText = getTemplateLayoutFileContents(layouts[0]); CommandParams = getCommandStatementParameters("rendercontrol", layoutText); foreach (string rawStatement in CommandParams) { Dictionary <string, string> tokens = tokenizeCommandParameters(rawStatement); string controlNameOrPath = tokens["##commandname##"].ToLower(); CmsControlDefinition def = new CmsControlDefinition(controlNameOrPath, rawStatement); ret.Add(def); } // foreach } return(ret.ToArray()); } // getAllPlaceholderDefinitions
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { if (!CmsContext.currentPage.currentUserCanRead) { return("Access Denied"); } StringBuilder html = new StringBuilder(); // -- always render the admin menu AdminMenu adminMenu = new AdminMenu(); html.Append(adminMenu.Render()); BaseCmsAdminTool toolToRun = AdminMenu.getToolToRun(); if (toolToRun.getToolInfo().Category != BaseCmsAdminTool.CmsAdminToolCategory._AdminMenu) { string toolHtml = toolToRun.Render(); html.Append(toolHtml); } return(html.ToString()); }
public static Dictionary <string, string> tokenizeCommandParameters(CmsControlDefinition controlDefinition) { // note: see getAllControlDefinitions(): the whole command is stored in RawTemplateParameters. return(tokenizeCommandParameters(controlDefinition.RawTemplateParameters)); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { if (!CmsContext.currentUserIsLoggedIn) { return("Access Denied"); } StringBuilder html = new StringBuilder(); int PageIdToRename = PageUtils.getFromForm("target", Int32.MinValue); if (PageIdToRename < 0) { html.Append("<span style=\"color: red\">Invalid Target parameter. No page to rename.</span>"); return(html.ToString()); } else { if (!CmsContext.pageExists(PageIdToRename)) { html.Append("<span style=\"color: red\">Target page does not exist. No page to rename.</span>"); return(html.ToString()); } else { CmsPage pageToRename = CmsContext.getPageById(PageIdToRename); if (!pageToRename.currentUserCanWrite) { html.Append("<span style=\"color: red\">Access denied. You do not have write-access to this page.</span>"); return(html.ToString()); } if (pageToRename.ID == CmsContext.HomePage.ID) { html.Append("<span style=\"color: red\">Error: you can not rename the home page!</span>"); return(html.ToString()); } // -- process the action string action = PageUtils.getFromForm("RenamePageAction", ""); if (String.Compare(action.Trim(), "RenamePage", true) == 0) { string newPageName = PageUtils.getFromForm("newName", pageToRename.Name); newPageName = newPageName.Trim().ToLower(); if (newPageName == "") { _errorMessage = "Please specify a new name for the page"; } else { // -- check for invalid characters. foreach (string invalidChar in CmsPage.InvalidPageNameChars) { if (newPageName.IndexOf(invalidChar) >= 0) { _errorMessage = "The page name can not include the \"" + invalidChar + "\" character."; } } if (_errorMessage == "") { bool nameAlreadyExists = CmsContext.childPageWithNameExists(pageToRename.ParentID, newPageName); if (nameAlreadyExists) { _errorMessage = "A page named \"" + newPageName + "\" already exists."; } else { bool success = RenamePage(pageToRename, newPageName); if (success) { string script = "<script>" + Environment.NewLine; script = script + "function go(url){" + Environment.NewLine; script = script + "opener.location.href = url;" + Environment.NewLine; script = script + "window.close();\n}"; script = script + "</script>" + Environment.NewLine; script = script + "<span style=\"color: green; font-weight: bold;\">The Page has successfully been renamed.</span>"; script = script + "<p><input type=\"button\" onclick=\"go('" + pageToRename.Url + "');\" value=\"close this window\">"; // script = script + "<p>" + htmlOutput + "</p>"; return(script); } } } } // else } // if action String newLine = Environment.NewLine; CmsPage page = CmsContext.currentPage; html.Append("<head>" + newLine); html.Append("<title>Rename Page</title>" + newLine); html.Append("</head>" + newLine); html.Append("<body style=\"margin: 0px; padding: 0px);\">"); string formId = "RenamePage"; html.Append(page.getFormStartHtml(formId)); html.Append("<table width=\"100%\" cellpadding=\"1\" cellspacing=\"2\" border=\"0\">" + newLine); html.Append("<tr>" + newLine); html.Append(" <td colspan=\"2\" bgcolor=\"#ffffd6\"><strong>Rename page</strong></td>"+ newLine); html.Append("</tr>" + newLine); if (_errorMessage != "") { html.Append("<tr>" + newLine); html.Append(" <td colspan=\"2\">"); html.Append("<span style=\"color: red;\">" + _errorMessage + "</span>"); html.Append(" </td>"); html.Append("</tr>" + newLine); } html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Page to rename : </td><td>\""+ pageToRename.Title + "\" <br />(" + pageToRename.Path + ")"); html.Append(" </td>"); html.Append("</tr>" + newLine); if (CmsConfig.Languages.Length > 1) { html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" For language : </td><td>"+ CmsContext.currentLanguage.shortCode); html.Append(" </td>"); html.Append("</tr>" + newLine); } html.Append("<tr>" + newLine); html.Append(" <td colspan=\"2\">New name:"); html.Append(PageUtils.getInputTextHtml("newName", "newName", pageToRename.Name, 50, 255)); html.Append(" </td>"); html.Append("</tr>" + newLine); html.Append("</table>"); html.Append(PageUtils.getHiddenInputHtml("target", PageIdToRename.ToString())); html.Append(PageUtils.getHiddenInputHtml("RenamePageAction", "RenamePage")); html.Append("<input type=\"submit\" value=\"rename page\"> "); html.Append("<input type=\"button\" value=\"cancel\" onclick=\"window.close()\">"); html.Append(page.getFormCloseHtml(formId)); html.Append("</body>"); } // else page exists } return(html.ToString()); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { // -- get the target page int targetPageId = PageUtils.getFromForm("target", Int32.MinValue); if (targetPageId < 0) { return("Error: invalid target page!"); } CmsPage page = CmsContext.getPageById(targetPageId); if (!page.currentUserCanWrite) { return("Access Denied"); } string html = "<Strong>Sort Sub-Pages</Strong><br>"; // -- process the submitted form string action = PageUtils.getFromForm("action", ""); if (action.ToLower() == "dosort") { string[] newOrderIds = PageUtils.getFromForm("order"); // writer.WriteLine(String.Join(",",newOrderIds)+"<p>"); for (int i = 0; i < newOrderIds.Length; i++) { int id = Convert.ToInt32(newOrderIds[i]); CmsPage tempPage = CmsContext.getPageById(id); if (tempPage.Id != -1) { tempPage.setSortOrdinal(i); } } // for html = html + "<script>" + Environment.NewLine; html = html + "function go(url){" + Environment.NewLine; html = html + "opener.location.href = url;" + Environment.NewLine; html = html + "window.close();\n}"; html = html + "</script>" + Environment.NewLine; html = html + "<p><center>Sub-Pages Successfully Sorted<p>"; html = html + "<input type=\"button\" value=\"close this window\" onclick=\"go('" + page.Url + "')\">"; html = html + "</center>"; return(html); } // if action = doSort // -- render the form CmsPage currentPage = CmsContext.currentPage; currentPage.HeadSection.AddEmbeddedJavascriptFile(JavascriptGroup.ControlOrPlaceholder, typeof(SortSubPagesPopup).Assembly, "sortSelectList.js"); string formId = "sortSubPagesForm"; html = html + currentPage.getFormStartHtml(formId, "selectall('order');"); html = html + "<table align=\"center\" border=\"0\">"; html = html + "<tr>"; html = html + "<td valign=\"top\">"; int size = Math.Min((int)page.ChildPages.Length, 20); html = html + "<select name=\"order\" size=\"" + size.ToString() + "\" multiple=\"multiple\" id=\"order\" onmousewheel=\"mousewheel(this);\" ondblclick=\"selectnone(this);\">"; // <option value="13" id="a01">0Red 1</option> foreach (CmsPage childPage in page.ChildPages) { html = html + "<option value=\"" + childPage.Id + "\">" + childPage.Title + "</option>" + Environment.NewLine; } html = html + "</select>"; html = html + "</td>"; html = html + "<td valign=\"middle\">"; html = html + "<input type=\"button\" value=\"Move to Top\" onclick=\"top('order');\" style=\"width: 100px;\" /><br><br>"; html = html + "<input type=\"button\" value=\"Move Up\" onclick=\"up('order');\" style=\"width: 100px;\" /><br>"; html = html + "<input type=\"button\" value=\"Move Down\" onclick=\"down('order');\" style=\"width: 100px;\" /><br><br>"; html = html + "<input type=\"button\" value=\"Move to Bottom\" onclick=\"bottom('order');\" style=\"width: 100px;\" /><br><br>"; html = html + "</td>"; html = html + "</tr>"; html = html + "</table>"; html = html + "<input type=\"hidden\" name=\"action\" value=\"doSort\">"; html = html + "<input type=\"hidden\" name=\"target\" value=\"" + targetPageId.ToString() + "\">"; html = html + "<input type=\"submit\" value=\"Save Order\">"; html = html + currentPage.getFormCloseHtml(formId); return(html); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { StringBuilder html = new StringBuilder(); int PageIdToMove = PageUtils.getFromForm("target", Int32.MinValue); if (PageIdToMove < 0) { html.Append("<span style=\"color: red\">Invalid Target parameter. No page to move.</span>"); return(html.ToString()); } else { if (!CmsContext.pageExists(PageIdToMove)) { html.Append("<span style=\"color: red\">Target page does not exist. No page to move.</span>"); return(html.ToString()); } else { CmsPage pageToMove = CmsContext.getPageById(PageIdToMove); if (!pageToMove.currentUserCanWrite) { return("Access Denied"); } // -- form variable int parent = PageUtils.getFromForm("parent", Int32.MinValue); // -- process the action string action = PageUtils.getFromForm("MovePageAction", ""); if (String.Compare(action.Trim(), "MovePage", true) == 0) { if (!CmsContext.pageExists(parent)) { _errorMessage = "No parent page specified"; } else if (parent == pageToMove.Id) { _errorMessage = "can not move page to the same location!"; } else { CmsPage newParentPage = CmsContext.getPageById(parent); if (pageToMove.Id == CmsContext.HomePage.Id) { html.Append("<span style=\"color: red\">Error: you can not move the home page!</span>"); return(html.ToString()); } else { bool success = MovePage(pageToMove, newParentPage); if (success) { string script = "<script>" + Environment.NewLine; script = script + "function go(url){" + Environment.NewLine; script = script + "opener.location.href = url;" + Environment.NewLine; script = script + "window.close();\n}"; script = script + "</script>" + Environment.NewLine; script = script + "<span style=\"color: green; font-weight: bold;\">The Page has successfully been moved.</span>"; script = script + "<p><input type=\"button\" onclick=\"go('" + newParentPage.Url + "');\" value=\"close this window\">"; return(script); } } } } // if action String newLine = Environment.NewLine; CmsPage page = CmsContext.currentPage; html.Append("<head>" + newLine); html.Append("<title>Move Page</title>" + newLine); html.Append("<style>" + Environment.NewLine); html.Append(" #fp { width: 150px; }" + Environment.NewLine); html.Append("</style>" + Environment.NewLine); html.Append("</head>" + newLine); html.Append("<body style=\"margin: 0px; padding: 0px);\">"); string formId = "movePage"; html.Append(page.getFormStartHtml(formId)); html.Append("<table width=\"100%\" cellpadding=\"1\" cellspacing=\"2\" border=\"0\">" + newLine); html.Append("<tr>" + newLine); html.Append(" <td colspan=\"2\" bgcolor=\"#ffffd6\"><strong>Move page</strong></td>"+ newLine); html.Append("</tr>" + newLine); if (_errorMessage != "") { html.Append("<tr>" + newLine); html.Append(" <td colspan=\"2\">"); html.Append("<span style=\"color: red;\">" + _errorMessage + "</span>"); html.Append(" </td>"); html.Append("</tr>" + newLine); } html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Page to move : </td><td>\""+ pageToMove.Title + "\" <br />(" + pageToMove.Path + ")"); html.Append(" </td>"); html.Append("</tr>" + newLine); html.Append("<tr>" + newLine); html.Append(" <td>"); Dictionary <int, CmsPage> allPages = CmsContext.HomePage.getLinearizedPages(); NameValueCollection targetDropDownVals = new NameValueCollection(); foreach (int pageId in allPages.Keys) { CmsPage pageToAdd = allPages[pageId]; // -- don't allow moving a page to a child of the page, or to the same location as it is now. bool zoneAuthorized = pageToAdd.SecurityZone.canWrite(CmsContext.currentWebPortalUser); if (zoneAuthorized && !pageToAdd.isChildOf(pageToMove) && pageToAdd.Id != pageToMove.ParentID) { targetDropDownVals.Add(pageId.ToString(), pageToAdd.Path); } } html.Append(" move page so that it is under : </td><td>"+ PageUtils.getDropDownHtml("parent", "fp", targetDropDownVals, parent.ToString())); html.Append(" </td>"); html.Append("</tr>" + newLine); html.Append("</table>"); html.Append(PageUtils.getHiddenInputHtml("target", pageToMove.Id.ToString())); html.Append(PageUtils.getHiddenInputHtml("MovePageAction", "MovePage")); html.Append("<input type=\"submit\" value=\"move page\"> "); html.Append("<input type=\"button\" value=\"cancel\" onclick=\"window.close()\">"); html.Append(page.getFormCloseHtml(formId)); if (CmsConfig.Languages.Length > 1) { html.Append("<p><em>Note: All translated versions of the page to move will be moved to the new location as well.</em></p>"); } html.Append("</body>"); } // else page exists } return(html.ToString()); }
public abstract string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor);
} // getControlParameterKeys public bool parameterKeyExists(CmsPage page, CmsControlDefinition controlDefinition, string keyNameToFind) { return(CmsControlUtils.hasControlParameterKey(page, controlDefinition, keyNameToFind)); }
public static string[] getParameterKeys(CmsPage page, CmsControlDefinition controlDefinition) { return(CmsControlUtils.getControlParameterKeys(page, controlDefinition)); } // getControlParameterKeys
} // getParameterValue public static string getParameterValue(CmsPage page, CmsControlDefinition controlDefinition, string key, string defaultValue) { return(CmsControlUtils.getControlParameterKeyValue(page, controlDefinition, key, defaultValue)); }
private void renderCommand(System.Web.UI.UserControl parentUserControl, string command) { // command is the full command, such as ##Placeholder(HtmlContent id="1")## or ##RenderContro(_system/PageTitle)##. int parseFrom = command.IndexOf("(", StringComparison.CurrentCultureIgnoreCase); int parseTo = command.Length - ")".Length - COMMAND_DELIMITER.Length; string rawParameters = ""; Dictionary <string, string> parameters = new Dictionary <string, string>(); if (command.IndexOf("StartPageBody", StringComparison.CurrentCultureIgnoreCase) < 0 && command.IndexOf("EndPageBody", StringComparison.CurrentCultureIgnoreCase) < 0) { if (parseFrom < 0 || parseTo < 0) { throw new TemplateExecutionException(templateName, "Template statement \"" + command + "\" is not formatted properly."); } parseFrom += "(".Length; rawParameters = command.Substring(parseFrom, (parseTo - parseFrom)); parameters = tokenizeCommandParameters(rawParameters); } string langShortCode = ""; if (currentLangIndex < CmsConfig.Languages.Length) { langShortCode = CmsConfig.Languages[currentLangIndex].shortCode.ToLower().Trim(); } string langDivId = "lang_" + langShortCode; // note: this divId is used (hard-coded) all over the place!!! // -- only output multiple languages if we are in Edit mode bool outputMultipleLanguages = (CmsContext.currentEditMode == CmsEditMode.Edit); if (outputMultipleLanguages && command.StartsWith(COMMAND_DELIMITER + "StartPageBody", StringComparison.CurrentCultureIgnoreCase)) { // -- if the first StartPageBody, start the form - the same as in StartEditForm.ascx if (currentLangIndex == 0) { RenderTextToPage(parentUserControl, COMMAND_DELIMITER + "RenderControl(_system/StartEditForm)" + COMMAND_DELIMITER); } string cssStyle = "display: none;"; CmsLanguage langToRender = CmsConfig.Languages[currentLangIndex]; // -- default to view the current Language first if (langToRender == CmsContext.currentLanguage) { cssStyle = "display: block;"; } parentUserControl.Controls.Add(new LiteralControl("<!-- Start Language " + langDivId + " --> ")); parentUserControl.Controls.Add(new LiteralControl("<div id=\"" + langDivId + "\" class=\"" + langDivId + " PageLanguageBody\" style=\"" + cssStyle + "\">")); } else if (outputMultipleLanguages && command.StartsWith(COMMAND_DELIMITER + "EndPageBody", StringComparison.CurrentCultureIgnoreCase)) { parentUserControl.Controls.Add(new LiteralControl("</div>")); parentUserControl.Controls.Add(new LiteralControl("<!-- End Language " + langDivId + " --> ")); currentLangIndex++; // increment to the next language if (currentLangIndex < CmsConfig.Languages.Length) { string pageBody = getPageBodyText(); RenderTextToPage(parentUserControl, pageBody); } else { // -- the last EndPageBody, so close the edit form using the EndEditForm control RenderTextToPage(parentUserControl, COMMAND_DELIMITER + "RenderControl(_system/EndEditForm)" + COMMAND_DELIMITER); } } else if (command.StartsWith(COMMAND_DELIMITER + "PlaceholderRegion", StringComparison.CurrentCultureIgnoreCase)) { if (!parameters.ContainsKey("##commandname##")) { throw new TemplateExecutionException(templateName, "Template statement \"" + command + "\" must have at least one parameter!"); } string regionName = parameters["##commandname##"]; string regionCommands = getTemplatePlaceholderRegionText(regionName); RenderTextToPage(parentUserControl, regionCommands); } else if (command.StartsWith(COMMAND_DELIMITER + "placeholder", StringComparison.CurrentCultureIgnoreCase)) { // AddControlToPage(new LiteralControl("placeholder: " + rawParameters)); if (!parameters.ContainsKey("##commandname##")) { throw new TemplateExecutionException(templateName, "Template statement \"" + command + "\" must have at least one parameter!"); } string placeholderName = parameters["##commandname##"]; if (!parameters.ContainsKey("id")) { throw new TemplateExecutionException(templateName, "The placeholder statement must have an id attribute (\"" + command + "\")."); } int identifier = -1; try { identifier = Convert.ToInt32(parameters["id"]); } catch { throw new TemplateExecutionException(templateName, "The placeholder statement must have an integer id attribute (\"" + command + "\")."); } // do not output if: // 1) we are making a printer friendly version, and the placeholder has its printer friendly parameter name set to false. // 2) we are making an offline version, and the placeholder has its offline version parameter name set to false. bool doNotOutput = ( /* print friendly version: */ (CmsContext.currentUserIsRequestingPrintFriendlyVersion && parameters.ContainsKey(PRINTER_FRIENDLY_VERSION_OUTPUT_CONTROL_PARAMETERNAME) && String.Compare(parameters[PRINTER_FRIENDLY_VERSION_OUTPUT_CONTROL_PARAMETERNAME], "false", true) == 0) || /* offline version: */ (CmsContext.currentUserIsRequestingPrintFriendlyVersion && parameters.ContainsKey(OFFLINE_VERSION_OUTPUT_CONTROL_PARAMETERNAME) && String.Compare(parameters[OFFLINE_VERSION_OUTPUT_CONTROL_PARAMETERNAME], "false", true) == 0)); if (!doNotOutput) { // params[0] contains the rawParameters string[] subParamsArray = new string[] { rawParameters }; System.Text.StringBuilder sb = new System.Text.StringBuilder(); HtmlTextWriter writer = new HtmlTextWriter(new StringWriter(sb)); CmsLanguage langToRender = CmsConfig.Languages[currentLangIndex]; // the currentLangIndex is incremented when the EndPageBody statement is found in the template // dynamically load the Placeholder class and call its Render method switch (CmsContext.currentEditMode) { case CmsEditMode.Edit: PlaceholderUtils.RenderInEditMode(placeholderName, writer, page, identifier, langToRender, subParamsArray, templateName); break; case CmsEditMode.View: PlaceholderUtils.RenderInViewMode(placeholderName, writer, page, identifier, langToRender, subParamsArray, templateName); break; } string txt = sb.ToString(); // -- Run Placeholder Filters txt = CmsOutputFilterUtils.RunPlaceholderFilters(placeholderName, page, txt); LiteralControl literal = new LiteralControl(txt); parentUserControl.Controls.Add(literal); } } else if (command.StartsWith(COMMAND_DELIMITER + "rendercontrol", StringComparison.CurrentCultureIgnoreCase)) { if (!parameters.ContainsKey("##commandname##")) { throw new TemplateExecutionException(templateName, "Template statement \"" + command + "\" must have at least one parameter!"); } string controlNameOrPath = parameters["##commandname##"]; // -- try to dynamically load the control onto the page from the ASCX file. // if the ASCX file is not found, we try to load the control as a class. If that fails, throw an Exception if (CmsControlUtils.ControlExists(controlNameOrPath)) { // do not output if: // 1) we are making a printer friendly version, and the control has its printer friendly parameter name set to false. // 2) we are making an offline version, and the control has its offline version parameter name set to false. bool doNotOutput = ( /* print friendly version: */ (CmsContext.currentUserIsRequestingPrintFriendlyVersion && parameters.ContainsKey(PRINTER_FRIENDLY_VERSION_OUTPUT_CONTROL_PARAMETERNAME) && String.Compare(parameters[PRINTER_FRIENDLY_VERSION_OUTPUT_CONTROL_PARAMETERNAME], "false", true) == 0) || /* offline version: */ (CmsContext.currentUserIsRequestingPrintFriendlyVersion && parameters.ContainsKey(OFFLINE_VERSION_OUTPUT_CONTROL_PARAMETERNAME) && String.Compare(parameters[OFFLINE_VERSION_OUTPUT_CONTROL_PARAMETERNAME], "false", true) == 0)); if (!doNotOutput) { int langIndex = currentLangIndex; if (langIndex >= CmsConfig.Languages.Length) { langIndex = 0; } CmsLanguage langToRender = CmsConfig.Languages[langIndex]; // the currentLangIndex is incremented when the EndPageBody statement is found in the template CmsControlDefinition controlDef = new CmsControlDefinition(controlNameOrPath, rawParameters); CmsControlUtils.AddControlToPage(controlNameOrPath, controlDef, parentUserControl, langToRender); } } else { string ControlNotFoundMessage = "Could not find or load Control: \"" + controlNameOrPath + "\""; throw new TemplateExecutionException(templateName, ControlNotFoundMessage); } } // renderRonctol }
public System.Web.UI.LiteralControl ToLiteralControl(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { return(new RenderingControl(this, controlDefnToRender, langToRenderFor)); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { if (!CmsContext.currentUserIsLoggedIn) { return("Access Denied"); } string action = PageUtils.getFromForm("CreateNewPageAction", ""); CmsCreateNewPageOptions options = CmsCreateNewPageOptions.ReadFromQueryString(); if (!options.RequiresUserInput() && (String.Compare(action, "createnew", true) != 0)) { CmsPage pageToCreate = options.ToCmsPageObject(); if (!pageToCreate.ParentPage.currentUserCanWrite) { _errorMessage = "Access denied - you do not have access to create a page in this location."; } else if (CmsContext.childPageWithNameExists(pageToCreate.ParentID, pageToCreate.LanguageInfo)) { _errorMessage = "a page with the specified filename already exists!"; } else if (StringUtils.IndexOf(CmsPage.InvalidPageNameChars, pageToCreate.Name, StringComparison.CurrentCulture) >= 0) { _errorMessage = "The page's filename contains invalid characters. Invalid charactes include: " + StringUtils.Join("', '", "' and '", CmsPage.InvalidPageNameChars) + ". "; } else { // -- page does not already exist, so create it bool success = CmsPage.InsertNewPage(pageToCreate); if (!success) { _errorMessage = "Database error: could not create new page."; } else { CmsContext.setEditModeAndRedirect(CmsEditMode.Edit, pageToCreate); } } } // -- get the form variables string name = PageUtils.getFromForm("_name", ""); name = name.Trim(); string title = PageUtils.getFromForm("_title", ""); title = title.Trim(); string menuTitle = PageUtils.getFromForm("_menuTitle", ""); menuTitle = menuTitle.Trim(); bool showInMenu = PageUtils.getFromForm("_showInMenu", options.ShowInMenu); string template = PageUtils.getFromForm("_template", options.Template); string parent = PageUtils.getFromForm("target", options.ParentPageId.ToString()); // -- process the action if (String.Compare(action, "createnew", true) == 0) { if ((!options.PromptUserForFilename || isNotEmpty(name, "Please enter in the page's filename")) && (!options.PromptUserForTemplate || isNotEmpty(template, "Please enter in the page's template")) && (!options.PromptUserForParentPage || isNotEmpty(parent, "Please enter in the page's parent")) && (!options.PromptUserForTitle || isNotEmpty(title, "Please enter in the page's title")) && (!options.PromptUserForMenuTitle || isNotEmpty(menuTitle, "Please enter in the page's navigation menu text")) && nameDoesNotContainInvalidCharacters(name) && doesNotStartWithUnderscoreForNonSuperAdmin(name, "the filename can not start with an \"_\" character.") ) // note when adding new restrictions for the filename, add them also to the RenamePagePopup control, and to the PageTitle placeholder getPageNameFromTitle() function! { int parentId = Convert.ToInt32(parent); CmsPage newPage = new CmsPage(); // -- setup the page's language info List <CmsPageLanguageInfo> langInfos = new List <CmsPageLanguageInfo>(); foreach (CmsLanguage lang in CmsConfig.Languages) { CmsPageLanguageInfo langInfo = new CmsPageLanguageInfo(); langInfo.LanguageShortCode = lang.shortCode; langInfo.Name = name; langInfo.MenuTitle = menuTitle; langInfo.Title = title; langInfo.SearchEngineDescription = ""; langInfo.Page = newPage; langInfos.Add(langInfo); } // foreach languages newPage.LanguageInfo = langInfos.ToArray(); newPage.ShowInMenu = showInMenu; newPage.ParentID = parentId; newPage.TemplateName = template; newPage.ShowInMenu = showInMenu; // -- set sortOrdinal CmsPage parentPage = CmsContext.getPageById(parentId); int highestSiblingSortOrdinal = -1; foreach (CmsPage sibling in parentPage.ChildPages) { highestSiblingSortOrdinal = Math.Max(sibling.SortOrdinal, highestSiblingSortOrdinal); } if (highestSiblingSortOrdinal > -1) { newPage.SortOrdinal = highestSiblingSortOrdinal + 1; } else { newPage.SortOrdinal = 0; } if (CmsContext.childPageWithNameExists(parentId, name)) { _errorMessage = "a page with the specified filename and parent already exists!"; } else { // -- page does not already exist, so create it bool success = CmsPage.InsertNewPage(newPage); if (!success) { _errorMessage = "database could not create new page."; } else { // -- success: redirect main page to the new page, and close this window. StringBuilder script = new StringBuilder(); script.Append("<script>" + Environment.NewLine); script.Append("function go(url){" + Environment.NewLine); script.Append("opener.location.href = url;" + Environment.NewLine); script.Append("window.close();}" + Environment.NewLine); script.Append("</script>" + Environment.NewLine); // -- Switch to Edit Mode NameValueCollection paramList = new NameValueCollection(); paramList.Add("target", newPage.Id.ToString()); string toggleEditUrl = CmsContext.getUrlByPagePath(CmsConfig.getConfigValue("GotoEditModePath", "/_admin/action/gotoEdit"), paramList); script.Append("<center>"); script.Append("<b>Your new page has been created.</b><p>"); script.Append("<a href=\"#\" onclick=\"go('" + newPage.Url + "')\">"); script.Append("take me to this new page"); script.Append("</a><p>"); script.Append("<a href=\"#\" onclick=\"go('" + toggleEditUrl + "')\">"); script.Append("edit this new page"); script.Append("</a><p>"); script.Append("<a href=\"#\" onclick=\"opener.location.reload(); window.close()\">"); script.Append("close this window"); script.Append("</a><br>"); script.Append("</center>"); return(script.ToString()); } } } } // if action is set // -- Render the page CmsPage page = CmsContext.currentPage; StringBuilder html = new StringBuilder(); string newLine = Environment.NewLine; string formId = "createPage"; html.Append(page.getFormStartHtml(formId)); html.Append("<table width=\"100%\" cellpadding=\"1\" cellspacing=\"2\" border=\"0\">" + newLine); html.Append("<tr>" + newLine); html.Append(" <td colspan=\"2\" bgcolor=\"#ffffd6\"><strong>Create a new page</strong></td>"+ newLine); html.Append("</tr>" + newLine); if (_errorMessage != "") { html.Append("<tr>" + newLine); html.Append(" <td colspan=\"2\">"); html.Append("<span style=\"color: red;\">" + _errorMessage + "</span>"); html.Append(" </td>"); html.Append("</tr>" + newLine); } if (options.PromptUserForFilename) { html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Filename: </td><td>"+ PageUtils.getInputTextHtml("_name", "fn", name, 20, 255)); html.Append(" </td>"); html.Append("</tr>" + newLine); } else { html.Append(PageUtils.getHiddenInputHtml("_name", options.NewPageLanguageInfos[0].Name)); } if (options.PromptUserForTitle) { html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Title: </td><td>"+ PageUtils.getInputTextHtml("_title", "ft", title, 20, 255)); html.Append(" </td>"); html.Append("</tr>" + newLine); } else { html.Append(PageUtils.getHiddenInputHtml("_title", options.NewPageLanguageInfos[0].Title)); } if (options.PromptUserForMenuTitle) { html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Navigation Menu Text: </td><td>"+ PageUtils.getInputTextHtml("_menutitle", "mt", title, 20, 255)); html.Append(" </td>"); html.Append("</tr>" + newLine); } else { html.Append(PageUtils.getHiddenInputHtml("_menutitle", options.NewPageLanguageInfos[0].MenuTitle)); } if (options.PromptUserForShowInMenu) { html.Append("<tr>"); html.Append(" <td>"); NameValueCollection ynOptions = new NameValueCollection(); ynOptions.Add("1", "Yes"); ynOptions.Add("0", "No"); html.Append(" Show In Menu: </td><td>"+ PageUtils.getRadioListHtml("_showInMenu", "mt", ynOptions, Convert.ToInt32(showInMenu).ToString(), "", " ")); html.Append(" </td>"); html.Append("</tr>"); } else { html.Append(PageUtils.getHiddenInputHtml("_showInMenu", Convert.ToInt32(options.ShowInMenu))); } if (options.PromptUserForTemplate) { string[] templates = CmsContext.getTemplateNamesForCurrentUser(); html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Template: </td><td>"+ PageUtils.getDropDownHtml("_template", "ft", templates, template)); html.Append(" </td>"); html.Append("</tr>" + newLine); } else { html.Append(PageUtils.getHiddenInputHtml("_template", options.Template)); } if (options.PromptUserForParentPage) { html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Parent Page: </td><td>"+ PageUtils.getDropDownHtml("target", "fp", getParentPageOptions(CmsContext.HomePage), parent)); html.Append(" </td>"); html.Append("</tr>" + newLine); } else { html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Parent Page: </td><td>"+ CmsContext.getPageById(Convert.ToInt32(parent)).Path); html.Append(PageUtils.getHiddenInputHtml("target", "fp", parent)); html.Append(" </td>"); html.Append("</tr>" + newLine); } html.Append("</table>"); html.Append("<p><em>All fields are required</em></p>"); NameValueCollection optionParams = options.GetCreatePagePopupParams(); foreach (string key in optionParams.AllKeys) { html.Append(PageUtils.getHiddenInputHtml(key, "option_" + key, optionParams[key])); } html.Append(PageUtils.getHiddenInputHtml("CreateNewPageAction", "createNew")); html.Append("<input type=\"submit\" value=\"create new page\">"); html.Append("<input type=\"button\" value=\"cancel\" onclick=\"window.close()\">"); html.Append(page.getFormCloseHtml(formId)); return(html.ToString()); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { // -- don't render anything unless the user is logged in. if (!CmsContext.currentUserIsLoggedIn) { return(""); } StringBuilder html = new StringBuilder(); CmsPage page = CmsContext.currentPage; if (!page.currentUserCanWrite) // if the page is not writable, skip rendering the edit menu { return(""); } // -- use the PerRequest cache to ensure that this control is only displayed once (not multiple times per language) string cacheName = "FloatingEditMenu"; if (PerRequestCache.CacheContains(cacheName)) { throw new TemplateExecutionException(page.TemplateName, "The FloatingEditMenu control should be placed after the ##EndPageBody## template file statement."); } PerRequestCache.AddToCache(cacheName, true); page.HeadSection.AddEmbeddedJavascriptFile(JavascriptGroup.ControlOrPlaceholder, typeof(FloatingEditMenu).Assembly, "FloatingEditMenu.js"); string divId = "editConsole_" + page.Id.ToString(); string persistKey = "editConsole_" + page.TemplateName + CmsContext.currentEditMode.ToString(); persistKey = persistKey.Replace("/", "_"); persistKey = persistKey.Replace("\\", "_"); persistKey = persistKey.Replace(" ", "_"); string consoleDivId = "editConsoleOptions_" + page.Id.ToString(); string leftPos = "580px"; string topPos = "30px"; // -- read the position of the floating toolbar from the cookie. // note that the cookie name must be the same as is defined in FloatingEditMenu.js. if (HttpContext.Current != null && HttpContext.Current.Request != null) { System.Web.HttpRequest req = HttpContext.Current.Request; if (req.Cookies[persistKey + "_left"] != null && req.Cookies[persistKey + "_top"] != null) { string l = req.Cookies[persistKey + "_left"].Value; string t = req.Cookies[persistKey + "_top"].Value; if (l.EndsWith("px") && t.EndsWith("px")) { try { // if the edit menu is off the screen, move it back into view. // note: for max screen sizes, you can not use Request.Browser.ScreenPixelsWidth int ll = Convert.ToInt32(l.Substring(0, l.Length - "px".Length)); int tt = Convert.ToInt32(t.Substring(0, t.Length - "px".Length)); if (ll < 10) { ll = 10; } if (tt < 10) { tt = 10; } leftPos = ll.ToString() + "px"; topPos = tt.ToString() + "px"; } catch { } } } } html.Append("<div id=\"" + divId + "\" ondblclick=\"OpenCloseDiv('" + consoleDivId + "')\" style=\"PADDING-RIGHT: 0px; PADDING-LEFT: 0px; Z-INDEX: 10; PADDING-BOTTOM: 0px; WIDTH: 200px; PADDING-TOP: 0px; POSITION: absolute; LEFT: " + leftPos + "; TOP: " + topPos + "; BACKGROUND-COLOR: transparent; TEXT-ALIGN: left\">"); html.Append("<table class=\"wbcedit\" onmouseover=\"drag('" + divId + "','" + persistKey + "')\" onfocus=\"this.blur()\" cellSpacing=\"0\" cellPadding=\"0\" border=\"0\">"); html.Append("<tr>"); html.Append("<td ondblclick=\"OpenCloseDiv('" + consoleDivId + "')\" style=\"cursor: move; font-family: arial; padding-left: 5px; padding-right: 5px; background-color: #4a87bd; opacity:0.95; filter:alpha(opacity=95); text-align: center;\">"); html.Append("<span style=\"font-weight: bold;\">Edit Menu</span><span style=\"font-size: 8pt;\"><br /><nobr>(drag here to move menu)</span></nobr></td>"); html.Append("<td style=\"background-color: #4a87bd; opacity:0.95; filter:alpha(opacity=95);\"><img src=\"" + CmsContext.ApplicationPath + "images/_system/hatCms_logo.png\" /></td>"); html.Append("</tr>"); html.Append("</table>"); html.Append("<div class=\"wbcedit\" id=\"" + consoleDivId + "\">"); html.Append("<table borderColor=\"#4a87bd\" cellSpacing=\"0\" cellPadding=\"5\" width=\"100%\" border=\"3\" style=\"border-top-right-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px;\">"); html.Append(" <tr>"); html.Append("<td nowrap=\"nowrap\" style=\"background: yellow; opacity:0.95; filter:alpha(opacity=95); font-size: 10pt; font-family: arial;\" >"); html.Append(getCurrentEditMenuActionsHtml(page)); html.Append("</td>"); html.Append("</tr>"); html.Append("</table>"); html.Append("</div>"); html.Append("</div>"); return(html.ToString()); }
public RenderingControl(BaseCmsControl parentControl, CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { ParentControl = parentControl; ControlDefnToRender = controlDefnToRender; LangToRenderFor = langToRenderFor; }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { // -- get the target page int targetPageId = PageUtils.getFromForm("target", Int32.MinValue); if (targetPageId < 0) { return("Error: invalid target page!"); } CmsPage page = CmsContext.getPageById(targetPageId); if (page.ID < 0) { return("Error: invalid target page!"); } if (!page.currentUserCanWrite) { return("Access Denied"); } string userMessage = ""; string action = PageUtils.getFromForm("action", ""); int VersionNumberToRevertTo = PageUtils.getFromForm("VersionNumberToRevertTo", -1); if (string.Compare(action, "revertToVersion", true) == 0 && VersionNumberToRevertTo > 0) { bool b = page.revertToRevision(VersionNumberToRevertTo); if (b) { userMessage = "<p style=\"color: green;\">Revision # " + VersionNumberToRevertTo + " has been reverted to, and has been made the live version</p>"; } else { userMessage = "<p style=\"color: red;\">Error: could not revert to revision # " + VersionNumberToRevertTo + " - there was a database error.</p>"; } } string closeButtonHtml = "<input type=\"button\" value=\"close window\" onclick=\"go('" + page.Url + "'); window.close();\">"; StringBuilder html = new StringBuilder(); html.Append("<strong>Revisions of \"" + page.Title + "\"</strong>" + Environment.NewLine); html.Append(userMessage); html.Append("<p align=\"center\">" + closeButtonHtml + "</p>"); html.Append("<script>" + Environment.NewLine + Environment.NewLine); html.Append("function go(url){" + Environment.NewLine); html.Append("opener.location.href = url;" + Environment.NewLine); html.Append("}" + Environment.NewLine); html.Append("</script>" + Environment.NewLine); html.Append("<style>" + Environment.NewLine); html.Append(" form { padding: 0px; margin: 0px; } " + Environment.NewLine); html.Append("</style>" + Environment.NewLine); // -- get the data and render the table CmsPageRevisionData[] allRevs = page.getAllRevisionData(); allRevs = CmsPageRevisionData.SortMostRecentFirst(allRevs); string prevTitle = ""; if (allRevs.Length < 1) { html.Append("<p><em>Sorry, no revisions have been tracked for this page yet.</em></p>"); } else { CmsPage thisPopup = CmsContext.currentPage; html.Append("<table border=\"1\">" + Environment.NewLine); for (int i = 0; i < allRevs.Length; i++) { CmsPageRevisionData rev = allRevs[i]; bool isLiveVersion = false; if (i == 0) { isLiveVersion = true; } string title = "Revisions saved " + getLastModifiedTitle(rev); if (prevTitle != title) { html.Append("<tr><td colspan=\"5\" style=\"background-color: #CCC;\">" + title + "</td></tr>" + Environment.NewLine); } html.Append("<tr>"); if (isLiveVersion) { html.Append("<td><strong>Live version</strong></td>"); } else { html.Append("<td>Rev # " + rev.RevisionNumber.ToString() + "</td>"); } html.Append("<td>" + rev.RevisionSavedAt.ToString("d MMM yyyy") + " at " + rev.RevisionSavedAt.ToString("%h:mm tt") + "</td>" + Environment.NewLine); html.Append("<td>" + rev.RevisionSavedByUsername + "</td>" + Environment.NewLine); if (CmsConfig.Languages.Length >= 1) { NameValueCollection urlParams = new NameValueCollection(); urlParams.Add("revNum", rev.RevisionNumber.ToString()); html.Append("<td>"); foreach (CmsLanguage lang in CmsConfig.Languages) { string viewUrl = page.getUrl(urlParams, lang); html.Append("<input type=\"button\" value=\"view - " + lang.shortCode + "\" onclick=\"go('" + viewUrl + "');\">"); } // foreach Language html.Append("</td>"); } else { } html.Append("<td>"); if (!isLiveVersion && CmsContext.currentUserIsSuperAdmin) { string formId = "ViewRevision" + i.ToString(); html.Append(thisPopup.getFormStartHtml(formId)); html.Append(PageUtils.getHiddenInputHtml("target", targetPageId.ToString())); html.Append(PageUtils.getHiddenInputHtml("action", "revertToVersion")); html.Append(PageUtils.getHiddenInputHtml("VersionNumberToRevertTo", rev.RevisionNumber.ToString())); html.Append("<input type=\"submit\" value=\"revert to this revision\">"); html.Append(thisPopup.getFormCloseHtml(formId)); } html.Append("</td>" + Environment.NewLine); html.Append("</tr>" + Environment.NewLine); prevTitle = title; } // foreach html.Append("</table>"); } html.Append("<p align=\"center\">" + closeButtonHtml + "</p>"); return(html.ToString()); }
public override string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor) { if (!CmsContext.currentUserIsSuperAdmin) { return("Access Denied"); } StringBuilder html = new StringBuilder(); int PageIdToChange = PageUtils.getFromForm("target", Int32.MinValue); if (PageIdToChange < 0) { html.Append("<span style=\"color: red\">Invalid Target parameter. No page to change.</span>"); return(html.ToString()); } else { if (!CmsContext.pageExists(PageIdToChange)) { html.Append("<span style=\"color: red\">Target page does not exist. No page to change.</span>"); return(html.ToString()); } else { CmsPage pageToChange = CmsContext.getPageById(PageIdToChange); // -- form variable string newTemplateName = PageUtils.getFromForm("template", pageToChange.TemplateName); // -- process the action string action = PageUtils.getFromForm("ChangeTemplatePageAction", ""); if (String.Compare(action.Trim(), "ChangeTemplate", true) == 0) { if (newTemplateName.Trim() == "") { _errorMessage = "The new template name was not specified"; } else if (string.Compare(newTemplateName, pageToChange.TemplateName, true) == 0) { _errorMessage = "The new template name is the same as the old one!"; } else { string htmlOutput = ""; bool success = pageToChange.setTemplateName(newTemplateName); if (success) { string script = "<script>" + Environment.NewLine; script = script + "function go(url){" + Environment.NewLine; script = script + "opener.location.href = url;" + Environment.NewLine; script = script + "window.close();\n}"; script = script + "</script>" + Environment.NewLine; script = script + "<span style=\"color: green; font-weight: bold;\">The Page template has successfully been changed.</span>"; script = script + "<p><input type=\"button\" onclick=\"go('" + pageToChange.Url + "');\" value=\"close this window\">"; script = script + "<p>" + htmlOutput + "</p>"; html.Append(script); return(html.ToString()); } } } // if action String newLine = Environment.NewLine; CmsPage page = CmsContext.currentPage; html.Append("<head>" + newLine); html.Append("<title>Change Page Template</title>" + newLine); html.Append("<style>" + Environment.NewLine); html.Append(" #fp { width: 150px; }" + Environment.NewLine); html.Append("</style>" + Environment.NewLine); html.Append("</head>" + newLine); html.Append("<body style=\"margin: 0px; padding: 0px);\">"); string formId = "ChangePageTemplate"; html.Append(page.getFormStartHtml(formId)); html.Append("<table width=\"100%\" cellpadding=\"1\" cellspacing=\"2\" border=\"0\">" + newLine); html.Append("<tr>" + newLine); html.Append(" <td colspan=\"2\" bgcolor=\"#ffffd6\"><strong>Change Page Template</strong></td>"+ newLine); html.Append("</tr>" + newLine); if (_errorMessage != "") { html.Append("<tr>" + newLine); html.Append(" <td colspan=\"2\">"); html.Append("<span style=\"color: red;\">" + _errorMessage + "</span>"); html.Append(" </td>"); html.Append("</tr>" + newLine); } html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Page to change : </td><td>\""+ pageToChange.Title + "\" <br />(" + pageToChange.Path + ")"); html.Append(" </td>"); html.Append("</tr>" + newLine); html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" Current template : </td><td>\""+ pageToChange.TemplateName + "\""); html.Append(" </td>"); html.Append("</tr>" + newLine); string[] templates = CmsContext.getTemplateNamesForCurrentUser(); html.Append("<tr>" + newLine); html.Append(" <td>"); html.Append(" New Template: </td><td>"+ PageUtils.getDropDownHtml("template", "ft", templates, newTemplateName)); html.Append(" </td>"); html.Append("</tr>" + newLine); html.Append("</table>"); html.Append(PageUtils.getHiddenInputHtml("target", PageIdToChange.ToString())); html.Append(PageUtils.getHiddenInputHtml("ChangeTemplatePageAction", "ChangeTemplate")); html.Append("<input type=\"submit\" value=\"change page template\"> "); html.Append("<input type=\"button\" value=\"cancel\" onclick=\"window.close();\">"); html.Append(page.getFormCloseHtml(formId)); html.Append("</body>"); } // else page exists } return(html.ToString()); }