コード例 #1
0
        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());
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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());
        }
コード例 #4
0
        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());
        }
コード例 #5
0
        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));
            }
        }
コード例 #6
0
        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("");
        }
コード例 #7
0
        public override string[] getControlParameterKeys(CmsControlDefinition controlDefinition)
        {
            Dictionary <string, string> parameters = tokenizeCommandParameters(controlDefinition);
            List <string> keys = new List <string>(parameters.Keys);

            return(keys.ToArray());
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
        }
コード例 #10
0
        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());
        }
コード例 #11
0
        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);
        }
コード例 #12
0
        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);
        }
コード例 #13
0
        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("");
            }
        }
コード例 #14
0
        /// <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
コード例 #15
0
        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());
        }
コード例 #16
0
 public static Dictionary <string, string> tokenizeCommandParameters(CmsControlDefinition controlDefinition)
 {
     // note: see getAllControlDefinitions(): the whole command is stored in RawTemplateParameters.
     return(tokenizeCommandParameters(controlDefinition.RawTemplateParameters));
 }
コード例 #17
0
        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());
        }
コード例 #18
0
        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);
        }
コード例 #19
0
        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());
        }
コード例 #20
0
 public abstract string RenderToString(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor);
コード例 #21
0
        } // getControlParameterKeys

        public bool parameterKeyExists(CmsPage page, CmsControlDefinition controlDefinition, string keyNameToFind)
        {
            return(CmsControlUtils.hasControlParameterKey(page, controlDefinition, keyNameToFind));
        }
コード例 #22
0
 public static string[] getParameterKeys(CmsPage page, CmsControlDefinition controlDefinition)
 {
     return(CmsControlUtils.getControlParameterKeys(page, controlDefinition));
 } // getControlParameterKeys
コード例 #23
0
        } // getParameterValue

        public static string getParameterValue(CmsPage page, CmsControlDefinition controlDefinition, string key, string defaultValue)
        {
            return(CmsControlUtils.getControlParameterKeyValue(page, controlDefinition, key, defaultValue));
        }
コード例 #24
0
        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
        }
コード例 #25
0
 public System.Web.UI.LiteralControl ToLiteralControl(CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor)
 {
     return(new RenderingControl(this, controlDefnToRender, langToRenderFor));
 }
コード例 #26
0
        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());
        }
コード例 #27
0
        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());
        }
コード例 #28
0
 public RenderingControl(BaseCmsControl parentControl, CmsControlDefinition controlDefnToRender, CmsLanguage langToRenderFor)
 {
     ParentControl       = parentControl;
     ControlDefnToRender = controlDefnToRender;
     LangToRenderFor     = langToRenderFor;
 }
コード例 #29
0
        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());
        }
コード例 #30
0
        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());
        }