Beispiel #1
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());
        }
        public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] param)
        {
            StringBuilder html = new StringBuilder();

            NewsArticleDb db = new NewsArticleDb();

            NewsArticleDb.NewsArticleDetailsData news = db.fetchNewsDetails(page, identifier, langToRenderFor, true);

            html.Append("<h2>");
            html.Append(news.DateOfNews.ToString("MMM d yyyy"));
            html.Append("</h2>");
            writer.Write(html.ToString());
        }
 public override RevertToRevisionResult RevertToRevision(CmsPage oldPage, CmsPage currentPage, int[] identifiers, CmsLanguage language)
 {
     return(RevertToRevisionResult.NotImplemented); // this placeholder doesn't implement revisions
 }
Beispiel #4
0
        public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            string ControlId           = "Glossary_" + page.ID.ToString() + "_" + identifier.ToString() + "_" + langToRenderFor.shortCode;
            string renderEditorToDivId = ControlId + "RenderArea";
            string renderJsonToFormId  = ControlId + "JsonFormData";
            string jsonDataVarName     = ControlId + "_GlossaryJsonData";


            GlossaryDb db = new GlossaryDb();
            GlossaryPlaceholderData placeholderData = db.getGlossary(page, identifier, langToRenderFor, true);

            string action = PageUtils.getFromForm(ControlId + "_action", "");

            if (String.Compare(action, "updateGlossary", true) == 0)
            {
                string receivedJSONData = PageUtils.getFromForm(renderJsonToFormId, "");

                GlossaryData[] newData = fromJSON(receivedJSONData);

                placeholderData.SortOrder = (GlossaryPlaceholderData.GlossarySortOrder)PageUtils.getFromForm(ControlId + "SortOrder", typeof(GlossaryPlaceholderData.GlossarySortOrder), placeholderData.SortOrder);
                placeholderData.ViewMode  = (GlossaryPlaceholderData.GlossaryViewMode)PageUtils.getFromForm(ControlId + "ViewMode", typeof(GlossaryPlaceholderData.GlossaryViewMode), placeholderData.ViewMode);
                bool b = db.saveUpdatedGlossary(page, identifier, langToRenderFor, placeholderData, newData);
                if (b)
                {
                    GlossaryData[] dataToSave = db.getGlossaryData(placeholderData, "");
                    string         jsonToSave = getJSVariableStatement(jsonDataVarName, dataToSave);
                    try
                    {
                        string jsonFilename = System.Web.Hosting.HostingEnvironment.MapPath(CmsContext.ApplicationPath + "_system/writable/Glossary/" + jsonDataVarName + ".js");
                        System.IO.File.Delete(jsonFilename);
                        System.IO.File.WriteAllText(jsonFilename, jsonToSave);
                    }
                    catch
                    { }
                }
            } // if updateGlossary

            StringBuilder html = new StringBuilder();

            html.Append(PageUtils.getHiddenInputHtml(ControlId + "_action", "updateGlossary"));
            string EOL = Environment.NewLine;

            html.Append("<p><strong>Glossary Display Configuration:</strong></p>");

            html.Append("<table>");
            if (CmsConfig.Languages.Length > 1)
            {
                html.Append("<tr>");
                html.Append("<td>Language:</td><td>" + langToRenderFor.shortCode + "</td>");
                html.Append("</tr>");
            }
            html.Append("<tr>");
            html.Append("<td>Display Mode: </td>");
            html.Append("<td>");
            html.Append(PageUtils.getDropDownHtml(ControlId + "ViewMode", ControlId + "ViewMode", Enum.GetNames(typeof(GlossaryPlaceholderData.GlossaryViewMode)), Enum.GetName(typeof(GlossaryPlaceholderData.GlossaryViewMode), placeholderData.ViewMode)));
            html.Append("</td>");
            html.Append("</tr>");
            html.Append("<tr>");
            html.Append("<td>Output Sorting: </td>");
            html.Append("<td>");
            html.Append(PageUtils.getDropDownHtml(ControlId + "SortOrder", ControlId + "SortOrder", Enum.GetNames(typeof(GlossaryPlaceholderData.GlossarySortOrder)), Enum.GetName(typeof(GlossaryPlaceholderData.GlossarySortOrder), placeholderData.SortOrder)));
            html.Append("</td>");
            html.Append("</tr>");

            html.Append("</table>" + EOL);

            // -- glossary data
            // note: the form is linked to GlossaryEditor.js
            GlossaryData[] items = db.getGlossaryData(placeholderData, "");
            html.Append("<p><strong>Glossary Entries:</strong></p>");


            html.Append("<div id=\"" + renderEditorToDivId + "\"></div>");

            html.Append("<input type=\"button\" onclick=\"AddGlossaryElement('" + renderEditorToDivId + "');\" value=\"add new glossary entry\">" + Environment.NewLine);

            // -- the JSON data is passed to the server through this hidden form element
            html.Append(PageUtils.getHiddenInputHtml(renderJsonToFormId, renderJsonToFormId, ""));


            page.HeadSection.AddJavascriptFile(JavascriptGroup.Library, "js/_system/json2.js");
            page.HeadSection.AddJavascriptFile(JavascriptGroup.FrontEnd, "js/_system/GlossaryEditor.js");

            page.HeadSection.AddJSStatements(getJSVariableStatement(jsonDataVarName, items));


            page.HeadSection.AddJSOnReady("var " + ControlId + "Instance = new GlossaryEditor('" + renderEditorToDivId + "', '" + renderJsonToFormId + "', JSON.parse(" + jsonDataVarName + ")); ");
            page.HeadSection.AddJSOnReady("GlossaryEditorInstances[GlossaryEditorInstances.length] = " + ControlId + "Instance; ");
            page.HeadSection.AddJSOnReady("" + ControlId + "Instance.updateDisplay();");



            writer.Write(html.ToString());
        } // RenderEdit
Beispiel #5
0
 public string getFilenameOnDisk(CmsPage page, int identifier, CmsLanguage language)
 {
     return(getFilenameOnDisk(page, identifier, language, this.Filename));
 }
        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("");
        }
Beispiel #7
0
        public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            GlossaryDb db = new GlossaryDb();
            GlossaryPlaceholderData placeholderData = db.getGlossary(page, identifier, langToRenderFor, true);

            string letterToDisplay = getLetterToDisplay(placeholderData);

            GlossaryData[] items = db.getGlossaryData(placeholderData, letterToDisplay);
            string[]       charactersWithData = db.getAllCharactersWithData(placeholderData);

            StringBuilder html = new StringBuilder();

            html.Append(GetHtmlDisplay(page, items, placeholderData, charactersWithData, letterToDisplay));

            writer.Write(html.ToString());
        } // RenderView
        public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            if (CmsConfig.Languages.Length > 1)
            {
                throw new Exception("Error: Contacts placeholder can not be used in multilingual sites yet!");
            }
            PlaceholderDisplayMode mode = currentViewRenderMode;

            switch (mode)
            {
            case PlaceholderDisplayMode.MultipleContacts:
                RenderViewSummary(writer, page, identifier, langToRenderFor, paramList);
                break;

            case PlaceholderDisplayMode.SingleContact:
                RenderViewIndividual(writer, page, identifier, langToRenderFor, paramList);
                break;

            default:
                throw new ArgumentException("invalid PlaceholderDisplayMode");
            }
        }
        } // getAddEditContactForm

        public override Rss.RssItem[] GetRssFeedItems(CmsPage page, CmsPlaceholderDefinition placeholderDefinition, CmsLanguage langToRenderFor)
        {
            throw new Exception("The method or operation is not implemented.");
        }
        private void RenderViewIndividual(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            ContactsDb             db   = new ContactsDb();
            ContactPlaceholderData data = db.getContactPlaceholderData(page, identifier, true);

            int contactId = PageUtils.getFromForm(CurrentContactIdFormName, -1);

            ContactData contactToView = ContactData.getContact(contactId);

            bool canEdit = page.currentUserCanWrite;

            string backUrl = page.Url;

            writer.Write("<p><a href=\"" + backUrl + "\">&#171; back to contact listing</a></p>");
            // -- begin output
            if (canEdit)
            {
                writer.Write(getAddEditContactForm(data, contactToView, page, identifier, langToRenderFor));
            }
            else
            {
                StringBuilder html = new StringBuilder();
                html.Append("<table border=\"0\">");

                string dividerLineHtml = getDividerLineHtml(2);

                html.Append(dividerLineHtml);

                html.Append("<tr>");
                html.Append("<td colspan=\"2\" align=\"center\"><h2>" + StringUtils.JoinNonBlanks(" ", new string[] { contactToView.firstName, contactToView.lastName }) + "</h2></td>");

                html.Append(dividerLineHtml);

                string colspan = "1";

                html.Append("<td>Categories:</td>");
                ContactDataCategory[] allCategories = ContactDataCategory.getAllContactCategories();
                html.Append("<td colspan=\"" + colspan + "\">");
                int cbid = 0;
                foreach (ContactDataCategory cat in allCategories)
                {
                    bool   check = (contactToView.contactCategoryIds.IndexOf(cat.CategoryId) > -1);
                    string cb    = PageUtils.getCheckboxHtml(cat.Title, "category", "category" + cbid.ToString(), cat.CategoryId.ToString(), check);
                    html.Append(cb + "<br />");
                    cbid++;
                } // foreach
                html.Append("</td>");

                html.Append(dividerLineHtml);

                html.Append("<tr>");
                html.Append("<td>Title:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.title + "</td>");
                html.Append("</tr>");

                html.Append("<tr>");
                html.Append("<td>Organization:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.organizationName + "</td>");
                html.Append("</tr>");

                html.Append(dividerLineHtml);

                html.Append("<tr>");
                html.Append("<td>Address 1:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.address1 + "</td>");
                html.Append("</tr>");

                html.Append("<tr>");
                html.Append("<td>Address 2:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.address2 + "</td>");
                html.Append("</tr>");

                html.Append("<tr>");
                html.Append("<td>City:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.city + "</td>");
                html.Append("</tr>");

                html.Append("<tr>");
                html.Append("<td>Province/State:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.provinceState + "</td>");
                html.Append("</tr>");

                html.Append("<tr>");
                html.Append("<td>Postal/Zip Code:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.postalZipCode + "</td>");
                html.Append("</tr>");

                html.Append(dividerLineHtml);

                html.Append("<tr>");
                html.Append("<td>Phone Number 1:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.phoneNumber1 + "</td>");
                html.Append("</tr>");

                html.Append("<tr>");
                html.Append("<td>Phone Number 2:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.phoneNumber2 + "</td>");
                html.Append("</tr>");

                html.Append("<tr>");
                html.Append("<td>Fax Number:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.faxNumber + "</td>");
                html.Append("</tr>");

                html.Append("<tr>");
                html.Append("<td>Mobile Number:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + contactToView.mobileNumber + "</td>");
                html.Append("</tr>");

                html.Append(dividerLineHtml);

                string emailDisplay = "";
                if (contactToView.emailAddress.Trim() != "")
                {
                    emailDisplay = "<a href=\"mailto:" + contactToView.SpamEncodedEmailAddress + "\">" + contactToView.SpamEncodedEmailAddress + "</a>";
                }

                html.Append("<tr>");
                html.Append("<td>Email Address:</td>");
                html.Append("<td colspan=\"" + colspan + "\">" + emailDisplay + "</td>");
                html.Append("</tr>");

                html.Append("</table>");

                writer.Write(html.ToString());
            }
        }
        private string getAddEditContactForm(ContactPlaceholderData data, ContactData contactToEdit, CmsPage page, int identifier, CmsLanguage langToRenderFor)
        {
            string ControlId = "Contacts_" + page.Id.ToString() + "_" + identifier.ToString() + langToRenderFor.shortCode;
            bool   editing   = (contactToEdit.contactId > -1);

            // -- process form actions
            string action              = PageUtils.getFromForm(ControlId + "action", "");
            string _userErrorMessage   = "";
            string _userMessage        = "";
            bool   _showContactDetails = true;

            if (editing && String.Compare(action, "deleteContact", true) == 0)
            {
                bool b = ContactData.DeleteContact(contactToEdit);
                if (b)
                {
                    _userMessage        = "The contact \"" + getNameDisplayOutput(data, contactToEdit) + "\" has been deleted";
                    _showContactDetails = false;
                }
                else
                {
                    _userErrorMessage = "Error: could not delete contact. There was a database error";
                }
            }
            else if (String.Compare(action, "addNewContact", true) == 0)
            {
                if (!editing)
                {
                    contactToEdit = new ContactData();
                }

                contactToEdit.firstName        = PageUtils.getFromForm(ControlId + "firstName", contactToEdit.firstName);
                contactToEdit.lastName         = PageUtils.getFromForm(ControlId + "lastName", contactToEdit.lastName);
                contactToEdit.title            = PageUtils.getFromForm(ControlId + "title", contactToEdit.title);
                contactToEdit.organizationName = PageUtils.getFromForm(ControlId + "organizationName", contactToEdit.organizationName);
                contactToEdit.address1         = PageUtils.getFromForm(ControlId + "address1", contactToEdit.address1);
                contactToEdit.address2         = PageUtils.getFromForm(ControlId + "address2", contactToEdit.address2);
                contactToEdit.city             = PageUtils.getFromForm(ControlId + "city", contactToEdit.city);
                contactToEdit.provinceState    = PageUtils.getFromForm(ControlId + "provinceState", contactToEdit.provinceState);
                contactToEdit.postalZipCode    = PageUtils.getFromForm(ControlId + "postalZipCode", contactToEdit.postalZipCode);
                contactToEdit.phoneNumber1     = PageUtils.getFromForm(ControlId + "phoneNumber1", contactToEdit.phoneNumber1);
                contactToEdit.phoneNumber2     = PageUtils.getFromForm(ControlId + "phoneNumber2", contactToEdit.phoneNumber2);
                contactToEdit.faxNumber        = PageUtils.getFromForm(ControlId + "faxNumber", contactToEdit.faxNumber);
                contactToEdit.mobileNumber     = PageUtils.getFromForm(ControlId + "mobileNumber", contactToEdit.mobileNumber);
                contactToEdit.emailAddress     = PageUtils.getFromForm(ControlId + "emailAddress", contactToEdit.emailAddress);

                string[] s_catIds = PageUtils.getFromForm(ControlId + "category");
                int[]    catIds   = StringUtils.ToIntArray(s_catIds);
                contactToEdit.contactCategoryIds.Clear();
                contactToEdit.contactCategoryIds.AddRange(catIds);

                if (contactToEdit.firstName.Trim() == "")
                {
                    _userErrorMessage = "Please enter the contact's first name";
                }
                else if (contactToEdit.lastName.Trim() == "")
                {
                    _userErrorMessage = "Please enter the contact's last name";
                }
                else if (contactToEdit.contactCategoryIds.Count < 1)
                {
                    _userErrorMessage = "Please select at least one category for the contact";
                }
                else
                {
                    bool b = contactToEdit.SaveToDatabase();
                    if (!b)
                    {
                        _userErrorMessage = "There was a problem saving the contact to the database";
                    }
                    else
                    {
                        if (editing)
                        {
                            string nameDisplay = getNameDisplayOutput(data, contactToEdit);
                            _userMessage = "The changes to \"" + nameDisplay + "\" have been saved.";
                        }
                        else
                        {
                            string nameDisplay = getNameDisplayOutput(data, contactToEdit);
                            _userMessage  = "The contact \"" + nameDisplay + "\" has been added.";
                            contactToEdit = new ContactData(); // remove all previously submitted values
                            editing       = false;
                        }
                    }
                }
            } // if process

            StringBuilder html = new StringBuilder();

            if (editing)
            {
                string nameDisplay = getNameDisplayOutput(data, contactToEdit);
                html.Append("<h2>Edit contact \"" + nameDisplay + "\":</h2>");
            }
            else
            {
                html.Append("<h2>Add a new contact:</h2>");
            }

            if (_userErrorMessage != "")
            {
                html.Append("<p style=\"color: red\">Error: " + _userErrorMessage + "</p>");
            }
            if (_userMessage != "")
            {
                html.Append("<p style=\"color: green\">" + _userMessage + "</p>");
            }

            if (!_showContactDetails)
            {
                return(html.ToString());
            }

            string formId = "editContact";

            html.Append(page.getFormStartHtml(formId));
            html.Append("<table border=\"0\">");

            string dividerLineHtml = getDividerLineHtml(4);

            html.Append(dividerLineHtml);

            html.Append("<tr>");
            html.Append("<td>First Name:</td>");
            html.Append("<td>" + PageUtils.getInputTextHtml(ControlId + "firstName", ControlId + "firstName", contactToEdit.firstName, 20, 255) + "</td>");


            html.Append("<td>Last Name:</td>");
            html.Append("<td>" + PageUtils.getInputTextHtml(ControlId + "lastName", ControlId + "lastName", contactToEdit.lastName, 20, 255) + "</td>");
            html.Append("</tr>");

            html.Append(dividerLineHtml);

            string colspan = "3";

            html.Append("<td>Categories:</td>");
            ContactDataCategory[] allCategories = ContactDataCategory.getAllContactCategories();
            html.Append("<td colspan=\"" + colspan + "\">");
            int cbid = 0;

            foreach (ContactDataCategory cat in allCategories)
            {
                bool   check = (contactToEdit.contactCategoryIds.IndexOf(cat.CategoryId) > -1);
                string cb    = PageUtils.getCheckboxHtml(cat.Title, ControlId + "category", ControlId + "category" + cbid.ToString(), cat.CategoryId.ToString(), check);
                html.Append(cb + "<br />");
                cbid++;
            }  // foreach
            html.Append("</td>");

            html.Append(dividerLineHtml);

            html.Append("<tr>");
            html.Append("<td>Title:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "title", ControlId + "title", contactToEdit.title, 40, 255) + "</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>Organization:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "organizationName", ControlId + "organizationName", contactToEdit.organizationName, 40, 255) + "</td>");
            html.Append("</tr>");

            html.Append(dividerLineHtml);

            html.Append("<tr>");
            html.Append("<td>Address 1:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "address1", ControlId + "address1", contactToEdit.address1, 40, 255) + "</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>Address 2:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "address2", ControlId + "address2", contactToEdit.address2, 40, 255) + "</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>City:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "city", ControlId + "city", contactToEdit.city, 40, 255) + "</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>Province/State:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "provinceState", ControlId + "provinceState", contactToEdit.provinceState, 20, 255) + "</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>Postal/Zip Code:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "postalZipCode", ControlId + "postalZipCode", contactToEdit.postalZipCode, 10, 255) + "</td>");
            html.Append("</tr>");

            html.Append(dividerLineHtml);

            html.Append("<tr>");
            html.Append("<td>Phone Number 1:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "phoneNumber1", ControlId + "phoneNumber1", contactToEdit.phoneNumber1, 20, 255) + "</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>Phone Number 2:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "phoneNumber2", ControlId + "phoneNumber2", contactToEdit.phoneNumber2, 20, 255) + "</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>Fax Number:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "faxNumber", ControlId + "faxNumber", contactToEdit.faxNumber, 20, 255) + "</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>Mobile Number:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "mobileNumber", ControlId + "mobileNumber", contactToEdit.mobileNumber, 20, 255) + "</td>");
            html.Append("</tr>");

            html.Append(dividerLineHtml);

            html.Append("<tr>");
            html.Append("<td>Email Address:</td>");
            html.Append("<td colspan=\"" + colspan + "\">" + PageUtils.getInputTextHtml(ControlId + "emailAddress", ControlId + "emailAddress", contactToEdit.emailAddress, 40, 255) + "</td>");
            html.Append("</tr>");

            html.Append("</table>");

            html.Append(PageUtils.getHiddenInputHtml(ControlId + "action", "addNewContact"));


            if (editing)
            {
                html.Append(PageUtils.getHiddenInputHtml(CurrentContactIdFormName, contactToEdit.contactId.ToString()));
                html.Append("<input type=\"submit\" value=\"save changes\">");
            }
            else
            {
                html.Append("<input type=\"submit\" value=\"add contact\">");
            }


            html.Append(page.getFormCloseHtml(formId));

            if (editing)
            {
                formId = formId + "_Delete";
                html.Append(page.getFormStartHtml(formId));
                html.Append("<p align=\"right\">Delete:");
                html.Append(PageUtils.getHiddenInputHtml(CurrentContactIdFormName, contactToEdit.contactId.ToString()));
                html.Append(PageUtils.getHiddenInputHtml(ControlId + "action", "deleteContact"));
                html.Append("<input type=\"submit\" value=\"delete contact\">");
                html.Append("</p>");
                html.Append(page.getFormCloseHtml(formId));
            }

            return(html.ToString());
        } // getAddEditContactForm
        } // RenderViewSummary

        private string getSummaryDisplay(ContactPlaceholderData data, ContactData[] contacts, CmsLanguage langToRenderFor, CmsPage page)
        {
            StringBuilder html = new StringBuilder();

            if (contacts.Length < 1)
            {
                html.Append("<p><em>there are no contacts to display</em></p>");
            }
            else
            {
                html.Append("<table class=\"ContactsSummaryList\"><tr>");

                int numContactsPerCol = Convert.ToInt32(Math.Ceiling((double)contacts.Length / (double)data.numColumnsToShow));
                if (numContactsPerCol == 1 && (contacts.Length > data.numColumnsToShow))
                {
                    numContactsPerCol++;
                }
                if (numContactsPerCol < 1)
                {
                    numContactsPerCol = contacts.Length;
                }

                bool internalTableStarted = false;
                for (int contactCount = 0; contactCount < contacts.Length; contactCount++)
                {
                    if ((contactCount % numContactsPerCol) == 0)
                    {
                        if (internalTableStarted)
                        {
                            html.Append("</table></td>");
                        }
                        html.Append("<td valign=\"top\"><table>");
                        internalTableStarted = true;
                    }

                    ContactData contact    = contacts[contactCount];
                    string      detailsUrl = getContactDetailsDisplayUrl(contact, page);
                    html.Append("<tr><td class=\"ContactInformationDisplay\">");
                    html.Append("<strong><a href=\"" + detailsUrl + "\">" + getNameDisplayOutput(data, contact) + "</a></strong>");
                    string details = getContactDetailsSummaryDisplay(contact);
                    if (details != "")
                    {
                        html.Append("<br />" + details);
                    }
                    html.Append("</td></tr>");
                } // foreach
                if (internalTableStarted)
                {
                    html.Append("</table></td>");
                }

                html.Append("</tr></table>");
            }

            return(html.ToString());
        }
        public void RenderViewSummary(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            string ControlId = "Contacts_" + page.Id.ToString() + "_" + identifier.ToString() + langToRenderFor.shortCode;

            ContactsDb             db   = new ContactsDb();
            ContactPlaceholderData data = db.getContactPlaceholderData(page, identifier, true);

            // -- before getContacts, process the form
            string addFormHtml = "";

            if (page.currentUserCanWrite)
            {
                addFormHtml = getAddEditContactForm(data, new ContactData(), page, identifier, langToRenderFor);
            }

            int[]         categoryIdsToDisplay = getCategoryIdsToDisplay(data);
            string[]      orgsToDisplay        = getOrgNamesToDisplay();
            ContactData[] contacts             = ContactData.getContacts(data, categoryIdsToDisplay, orgsToDisplay);

            StringBuilder html = new StringBuilder();

            html.Append("<table width=\"100%\"><tr>");
            html.Append("<td valign=\"top\">");
            html.Append(getSummaryDisplay(data, contacts, langToRenderFor, page));
            html.Append("</td>");
            html.Append("<td valign=\"top\">");
            if (contacts.Length > 1)
            {
                html.Append(getSummaryDisplayFilterForm(data, contacts, page, identifier));
            }
            html.Append("</td>");
            html.Append("</tr>");
            html.Append("</table>");
            if (page.currentUserCanWrite)
            {
                html.Append("<p>" + addFormHtml + "</p>");
            }

            writer.Write(html.ToString());
        } // RenderViewSummary
        public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            string ControlId = "Contacts_" + page.Id.ToString() + "_" + identifier.ToString() + langToRenderFor.shortCode;

            ContactsDb             db   = new ContactsDb();
            ContactPlaceholderData data = new ContactPlaceholderData();

            data = db.getContactPlaceholderData(page, identifier, true);

            string action = PageUtils.getFromForm(ControlId + "_action", "");

            if (String.Compare(action, "saveNewValues", true) == 0)
            {
                data.numColumnsToShow        = PageUtils.getFromForm(ControlId + "numColumnsToShow", data.numColumnsToShow);
                data.forceFilterToCategoryId = PageUtils.getFromForm(ControlId + "forceFilterToCategoryId", data.forceFilterToCategoryId);
                data.nameDisplayMode         = (ContactPlaceholderData.ContactNameDisplayMode)PageUtils.getFromForm(ControlId + "nameDisplayMode", typeof(ContactPlaceholderData.ContactNameDisplayMode), data.nameDisplayMode);

                data.allowFilterByCategory = PageUtils.getFromForm(ControlId + "allowFilterByCategory", false);
                data.allowFilterByCompany  = PageUtils.getFromForm(ControlId + "allowFilterByCompany", false);

                data.accessLevelToAddContacts  = (BaseCmsPlaceholder.AccessLevel)PageUtils.getFromForm(ControlId + "accessLevelToAddContacts", typeof(BaseCmsPlaceholder.AccessLevel), data.accessLevelToAddContacts);
                data.accessLevelToEditContacts = (BaseCmsPlaceholder.AccessLevel)PageUtils.getFromForm(ControlId + "accessLevelToEditContacts", typeof(BaseCmsPlaceholder.AccessLevel), data.accessLevelToEditContacts);
                db.saveUpdatedContactPlaceholderData(page, identifier, data);
            }


            StringBuilder html = new StringBuilder();

            html.Append("Contacts Display Configuration:");


            html.Append("<table>");

            html.Append("<tr>");
            html.Append("<td>Force Category filter to display: </td>");
            html.Append("<td>");
            ContactDataCategory[] allCats = ContactDataCategory.getAllContactCategories();
            NameValueCollection   options = new NameValueCollection();

            options.Add("-1", "do not force category to filter");
            foreach (ContactDataCategory cat in allCats)
            {
                options.Add(cat.CategoryId.ToString(), cat.Title);
            } // foreach
            html.Append(PageUtils.getDropDownHtml(ControlId + "forceFilterToCategoryId", ControlId + "forceFilterToCategoryId", options, data.forceFilterToCategoryId.ToString()));
            html.Append("</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>Allow filter by: </td>");
            html.Append("<td>");
            html.Append(PageUtils.getCheckboxHtml("Category", ControlId + "allowFilterByCategory", ControlId + "allowFilterByCategory", true.ToString(), data.allowFilterByCompany));
            html.Append("<br>");
            html.Append(PageUtils.getCheckboxHtml("Company Name", ControlId + "allowFilterByCompany", ControlId + "allowFilterByCompany", true.ToString(), data.allowFilterByCompany));
            html.Append("</td>");
            html.Append("</tr>");


            html.Append("<tr>");
            html.Append("<td>Number of columns: </td>");
            html.Append("<td>");
            html.Append(PageUtils.getInputTextHtml(ControlId + "numColumnsToShow", ControlId + "numColumnsToShow", data.numColumnsToShow.ToString(), 3, 5));
            html.Append("</td>");
            html.Append("</tr>");

            html.Append("<tr>");
            html.Append("<td>Name display format: </td>");
            html.Append("<td>");
            html.Append(PageUtils.getDropDownHtml(ControlId + "nameDisplayMode", ControlId + "nameDisplayMode", Enum.GetNames(typeof(ContactPlaceholderData.ContactNameDisplayMode)), Enum.GetName(typeof(ContactPlaceholderData.ContactNameDisplayMode), data.nameDisplayMode)));
            html.Append("</td>");
            html.Append("</tr>");

            // -- deprecated items
            PageUtils.getHiddenInputHtml(ControlId + "accessLevelToAddContacts", Enum.GetName(typeof(BaseCmsPlaceholder.AccessLevel), BaseCmsPlaceholder.AccessLevel.CmsAuthor));
            PageUtils.getHiddenInputHtml(ControlId + "accessLevelToEditContacts", Enum.GetName(typeof(BaseCmsPlaceholder.AccessLevel), BaseCmsPlaceholder.AccessLevel.CmsAuthor));

            html.Append("</table>");

            html.Append(PageUtils.getHiddenInputHtml(ControlId + "_action", "saveNewValues"));

            writer.Write(html.ToString());
        } // RenderEditSummary
        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
        }
Beispiel #16
0
        }         // resolveUrl

        private void RenderViewStatus(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            PageRedirectDb db          = new PageRedirectDb();
            string         url         = db.getPageRedirectUrl(page, identifier, langToRenderFor.shortCode, true);
            string         resolvedUrl = resolveRedirectUrl(url);

            string width  = "100%";
            string height = "1.5em";

            if (CmsConfig.TemplateEngineVersion == CmsTemplateEngineVersion.v2)
            {
                width  = PlaceholderUtils.getParameterValue("width", width, paramList);
                height = PlaceholderUtils.getParameterValue("height", height, paramList);
            }
            else
            {
                throw new NotImplementedException("Error: invalid TemplateEngine version");
            }

            System.Text.StringBuilder html = new System.Text.StringBuilder();
            html.Append("<div style=\"background: #CCC; padding: 0.2em;\">");
            html.Append("Normal site viewers (people who are not site authors) will be automatically redirected to :");
            html.Append("<a href=\"" + resolvedUrl + "\" style=\"font-size: " + height + ";\">");
            html.Append(url);
            html.Append("</a>");

            if (resolvedUrl != "")
            {
                StringBuilder js = new StringBuilder();

                js.Append("var start=new Date();" + Environment.NewLine);
                js.Append("start=Date.parse(start)/1000;" + Environment.NewLine);
                js.Append("var counts=10;" + Environment.NewLine);

                js.Append("function CountDownToRedirect(){" + Environment.NewLine);
                js.Append("	var now=new Date();" + Environment.NewLine);
                js.Append("	now=Date.parse(now)/1000;" + Environment.NewLine);
                js.Append("	var x=parseInt(counts-(now-start),10);" + Environment.NewLine);
                js.Append("	document.getElementById('redirectCountDown').value = x;" + Environment.NewLine);
                js.Append("	if(x>0){" + Environment.NewLine);
                js.Append("		timerID=setTimeout(\"CountDownToRedirect()\", 100)"+ Environment.NewLine);
                js.Append("	}else{" + Environment.NewLine);
                js.Append("		location.href=\""+ resolvedUrl + "\"" + Environment.NewLine);
                js.Append("	}" + Environment.NewLine);
                js.Append("} // CountDownToRedirect" + Environment.NewLine);

                page.HeadSection.AddJSStatements(js.ToString());
                page.HeadSection.AddJSOnReady("CountDownToRedirect();");

                page.HeadSection.registerBlockForOutput("RedirectTimer");

                int numSecondsToWait = CmsConfig.getConfigValue("RedirectPlaceholder_autoRedirectAfterSeconds", 10);;

                html.Append("<p>You are being redirected in <input type=\"text\" name=\"clock\" id=\"redirectCountDown\" size=\"2\" value=\"" + numSecondsToWait.ToString() + "\"> seconds.</p>" + Environment.NewLine);
            }

            html.Append("</div>");

            writer.WriteLine(html);
        } // RenderViewStatus
        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);
        }
Beispiel #18
0
        } // RenderViewStatus

        public override Rss.RssItem[] GetRssFeedItems(CmsPage page, CmsPlaceholderDefinition placeholderDefinition, CmsLanguage langToRenderFor)
        {
            return(new Rss.RssItem[0]); // no rss feed items to return.
        }
        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());
        }
Beispiel #20
0
 public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
 {
     if (page.currentUserCanWrite)
     {
         RenderViewStatus(writer, page, identifier, langToRenderFor, paramList);
     }
     else
     {
         RenderView(writer, page, identifier, langToRenderFor, paramList);
     }
 }
Beispiel #21
0
        } // RenderView

        public override Rss.RssItem[] GetRssFeedItems(CmsPage page, CmsPlaceholderDefinition placeholderDefinition, CmsLanguage langToRenderFor)
        {
            GlossaryDb db = new GlossaryDb();
            GlossaryPlaceholderData placeholderData = db.getGlossary(page, placeholderDefinition.Identifier, langToRenderFor, true);

            GlossaryPlaceholderData.GlossaryViewMode origViewMode = placeholderData.ViewMode;

            // -- gets all glossary items (regardless of the ViewMode)
            GlossaryData[] items = db.getGlossaryData(placeholderData.GlossaryId);

            // -- each glossary item gets its own rssItem
            List <Rss.RssItem> ret = new List <Rss.RssItem>();

            foreach (GlossaryData glData in items)
            {
                Rss.RssItem rssItem = new Rss.RssItem();
                rssItem = base.InitRssItem(rssItem, page, langToRenderFor);

                rssItem.Description = glData.description;
                // -- setup the proper link
                switch (placeholderData.ViewMode)
                {
                case GlossaryPlaceholderData.GlossaryViewMode.PagePerLetter:

                    Dictionary <string, string> urlParams = new Dictionary <string, string>();
                    urlParams.Add("l", glData.word.ToUpper()[0].ToString());
                    rssItem.Link = new Uri(page.getUrl(urlParams, langToRenderFor));
                    break;

                case GlossaryPlaceholderData.GlossaryViewMode.SinglePageWithJumpList:
                    // nothing to do
                    break;

                default:
                    throw new Exception("Error: invalid GlossaryViewMode");
                } // switch
            }
            return(ret.ToArray());
        }
Beispiel #22
0
        public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            PageRedirectDb db = new PageRedirectDb();

            string formName = "PageRedirect_" + page.ID.ToString() + identifier.ToString() + langToRenderFor.shortCode;
            string width    = "100%";
            string height   = "1.5em";

            if (CmsConfig.TemplateEngineVersion == CmsTemplateEngineVersion.v2)
            {
                width  = PlaceholderUtils.getParameterValue("width", width, paramList);
                height = PlaceholderUtils.getParameterValue("height", height, paramList);
            }
            else
            {
                throw new NotImplementedException("Error: invalid TemplateEngine version");
            }


            string pageRedirectUrl = db.getPageRedirectUrl(page, identifier, langToRenderFor.shortCode, true);
            // string Message = "";

            // ------- CHECK THE FORM FOR ACTIONS
            string action = Hatfield.Web.Portal.PageUtils.getFromForm(formName + "_Action", "");

            if (action.Trim().ToLower() == "saveUrl".ToLower())
            {
                pageRedirectUrl = Hatfield.Web.Portal.PageUtils.getFromForm(formName + "_value", "");
                if (!db.saveUpdatedPageRedirect(page, identifier, langToRenderFor.shortCode, pageRedirectUrl))
                {
                    throw new Exception("Problem with database: could not set redirect url");
                }
            }

            // ------- START RENDERING
            // -- get the Javascript
            string html = "";
            // -- render the Control
            // note: no need to put in the <form></form> tags.

            string id = formName + "_id";

            html = html + "<div style=\"background: #CCC; padding: 0.2em;\">";
            html = html + "URL to redirect to: <input style=\"font-size: " + height + "; font-weight: bold; width: " + width + "; height:" + height + " \" type=\"text\" id=\"" + id + "\" name=\"" + formName + "_value\" value=\"" + pageRedirectUrl + "\">";
            //html = html + "<br><a href=\"#\" onclick=\"var url = document.getElementById('"+id+"').value; window.open(url,'"+id+"_window');\">test link</a>";
            html = html + "<br>hint: use a '~' for a local link (eg: '~/' links to the home page, '~" + page.ParentPage.Path + "' links to the " + page.ParentPage.Title + " page )";
            html = html + "<input type=\"hidden\" name=\"" + formName + "_Action\" value=\"saveUrl\">";
            html = html + "</div>";

            writer.WriteLine(html);
        }         // RenderEdit
Beispiel #23
0
 public static string GetFileStorageDirectoryUrl(CmsPage page, int identifier, CmsLanguage language)
 {
     return(FileLibraryDetailsData.getFileStorageFolderUrl(page, identifier, language));
 }
Beispiel #24
0
 public ProcurementDetailsData(CmsPage page, int identifier, CmsLanguage lang)
 {
     this.pageId     = page.ID;
     this.identifier = identifier;
     this.lang       = lang;
 }
Beispiel #25
0
        /// <summary>
        /// Render the "Add an user image gallery"
        /// </summary>
        /// <param name="action"></param>
        /// <param name="pageToRenderFor"></param>
        /// <param name="langToRenderFor"></param>
        /// <returns></returns>
        protected static string AddGalleryEditMenuRender(CmsPageEditMenuAction action, CmsPage pageToRenderFor, CmsLanguage langToRenderFor)
        {
            NameValueCollection createPageParams = action.CreateNewPageOptions.GetCreatePagePopupParams();

            if (action.CreateNewPageOptions.RequiresUserInput())
            {
                return(CmsPageEditMenu.DefaultStandardActionRenderers.RenderPopupLink("CreateNewPagePath", "/_admin/createPage", createPageParams, pageToRenderFor, langToRenderFor, "<strong>Add</strong> an image gallery", 500, 400));
            }
            else
            {
                return(CmsPageEditMenu.DefaultStandardActionRenderers.RenderLink("CreateNewPagePath", "/_admin/createPage", createPageParams, pageToRenderFor, langToRenderFor, "<strong>Add</strong> an image gallery"));
            }
        }
Beispiel #26
0
        public ProcurementAggregatorData fetchProcurementAggregator(CmsPage page, int identifier, CmsLanguage lang, bool createIfNotExist)
        {
            if (page.ID < 0 || identifier < 0)
            {
                return(new ProcurementAggregatorData());
            }

            StringBuilder sql = new StringBuilder("SELECT DefaultYearToDisplay FROM ");

            sql.Append(TableNameAggregator);
            sql.Append(" WHERE PageId=" + page.ID.ToString());
            sql.Append(" AND LangCode='" + lang.shortCode + "'");
            sql.Append(" AND Identifier=" + identifier.ToString());
            sql.Append(" AND Deleted is null;");

            ProcurementAggregatorData entity = new ProcurementAggregatorData();
            DataSet ds = this.RunSelectQuery(sql.ToString());

            if (this.hasSingleRow(ds))
            {
                DataRow dr = ds.Tables[0].Rows[0];
                entity.YearToDisplay = Convert.ToInt32(dr["DefaultYearToDisplay"]);
            }
            else
            {
                if (createIfNotExist)
                {
                    if (addProcurementAggregator(page, identifier, lang, entity) == false)
                    {
                        throw new Exception("fetchProcurementAggregator() database error: Error creating new placeholder");
                    }
                }
                else
                {
                    throw new Exception("fetchProcurementAggregator() database error: placeholder does not exist");
                }
            }
            return(entity);
        }
        public override Rss.RssItem[] GetRssFeedItems(CmsPage page, CmsPlaceholderDefinition placeholderDefinition, CmsLanguage langToRenderFor)
        {
            Rss.RssItem rssItem = base.CreateAndInitRssItem(page, langToRenderFor);
            rssItem.Description = page.renderPlaceholderToString(placeholderDefinition, langToRenderFor, CmsPage.RenderPlaceholderFilterAction.RunAllPageAndPlaceholderFilters);

            return(new Rss.RssItem[] { rssItem });
        }
        /// <summary>
        /// Renders a template with all its controls and placeholders, and add these controls and placeholders to the parentUserControl.
        /// Note: do not use Render to HtmlWriter - Control events are not called properly.
        /// </summary>
        public override void CreateChildControls(System.Web.UI.UserControl parentUserControl)
        {
            // -- get the template file contents
            string templateText = getTemplateFileContents();

            // -- get the TemplateLayout statement
            string[] layouts = getCommandStatementParameters("TemplateLayout", templateText);
            if (layouts.Length == 0)
            {
                throw new TemplateExecutionException(templateName, "Template does not have a TemplateLayout statement.");
            }
            else if (layouts.Length > 1)
            {
                throw new TemplateExecutionException(templateName, "Template has more than one TemplateLayout statement - only one is allowed.");
            }

            // -- read the template layout file
            string layoutText = getTemplateLayoutFileContents(layouts[0]);

            // -- start with the first language if we are editing a page.
            currentLangIndex = 0;
            if (CmsContext.currentEditMode == CmsEditMode.View)
            {
                currentLangIndex = CmsLanguage.IndexOf(CmsContext.currentLanguage.shortCode, CmsConfig.Languages);
            }

            // -- make sure that StartPageBody and EndPageBody commands are included
            int start = layoutText.IndexOf("StartPageBody", StringComparison.CurrentCultureIgnoreCase);

            if (start < 0)
            {
                start = templateText.IndexOf("StartPageBody", StringComparison.CurrentCultureIgnoreCase);
            }

            if (start < 0)
            {
                throw new TemplateExecutionException(templateName, "You must include a StartPageBody and EndPageBody command in the template when multiple languages are used");
            }

            int end = layoutText.IndexOf("EndPageBody", StringComparison.CurrentCultureIgnoreCase);

            if (end < 0)
            {
                end = templateText.IndexOf("EndPageBody", StringComparison.CurrentCultureIgnoreCase);
            }
            if (end < 0)
            {
                throw new TemplateExecutionException(templateName, "You must include a StartPageBody and EndPageBody command in the template when multiple languages are used");
            }


            string startEditFormCommand = COMMAND_DELIMITER + "RenderControl(_system/StartEditForm)" + COMMAND_DELIMITER;
            string endEditFormCommand   = COMMAND_DELIMITER + "RenderControl(_system/EndEditForm)" + COMMAND_DELIMITER;

            if (layoutText.IndexOf(startEditFormCommand, StringComparison.CurrentCultureIgnoreCase) >= 0 ||
                templateText.IndexOf(startEditFormCommand, StringComparison.CurrentCultureIgnoreCase) >= 0 ||
                layoutText.IndexOf(endEditFormCommand, StringComparison.CurrentCultureIgnoreCase) >= 0 ||
                templateText.IndexOf(endEditFormCommand, StringComparison.CurrentCultureIgnoreCase) >= 0)
            {
                throw new TemplateExecutionException(templateName, "Do not include the StartEditForm or EndEditForm controls");
            }


            templateLayoutFileContents = layoutText;
            templateFileContents       = templateText;

            // -- render the output
            RenderTextToPage(parentUserControl, templateLayoutFileContents);
        } // CreateChildControls
        public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] param)
        {
            // CmsContext.setCurrentCultureInfo(langToRenderFor);
            NewsArticleDb db = new NewsArticleDb();

            NewsArticleDb.NewsArticleDetailsData entity = new NewsArticleDb.NewsArticleDetailsData(page, identifier, langToRenderFor);
            string dateString = "";
            string editId     = "newsDetails_" + page.Id.ToString() + "_" + identifier.ToString() + "_" + langToRenderFor.shortCode;

            // ------- CHECK THE FORM FOR ACTIONS
            string action = PageUtils.getFromForm(editId + "_Action", "");

            if (action.Trim().ToLower() == "update")
            {
                dateString = PageUtils.getFromForm("dateOfNews_" + editId, "");
                try
                {
                    entity.DateOfNews = Convert.ToDateTime(dateString);
                }
                catch { }
                db.updateNewsDetails(page, identifier, langToRenderFor, entity);
            }
            else
            {
                entity     = db.fetchNewsDetails(page, identifier, langToRenderFor, true);
                dateString = entity.DateOfNews.ToString("d");
            }

            // ------- START RENDERING
            StringBuilder arg0 = new StringBuilder();

            arg0.Append("<div style=\"width: 100%\">");
            arg0.Append("<p>Date of News (" + CmsLanguage.CurrentShortDateFormat + "): ");
            arg0.Append(PageUtils.getInputTextHtml("dateOfNews_" + editId, "dateOfNews_" + editId, dateString, 10, 10));
            arg0.Append("</p>");

            arg0.Append("<input type=\"hidden\" name=\"" + editId + "_Action\" value=\"update\">");
            arg0.Append("</div>");

            writer.WriteLine(arg0.ToString());
        }
Beispiel #30
0
        public EventCalendarAggregatorData fetchAggregatorData(CmsPage page, int identifier, CmsLanguage lang, bool createIfNotExist)
        {
            if (page.Id < 0 || identifier < 0)
            {
                return(new EventCalendarAggregatorData());
            }

            StringBuilder sql = new StringBuilder("SELECT ViewMode FROM ");

            sql.Append(TableNameAggregator);
            sql.Append(" WHERE PageId=" + page.Id.ToString());
            sql.Append(" AND LangCode='" + lang.shortCode + "'");
            sql.Append(" AND Identifier=" + identifier.ToString());
            sql.Append(" AND Deleted IS NULL;");

            EventCalendarAggregatorData entity = new EventCalendarAggregatorData();
            DataSet ds = this.RunSelectQuery(sql.ToString());

            if (this.hasSingleRow(ds))
            {
                DataRow dr = ds.Tables[0].Rows[0];
                rowToData(dr, entity);
            }
            else
            {
                if (createIfNotExist)
                {
                    if (insertAggregatorData(page, identifier, lang, entity) == false)
                    {
                        throw new Exception("EventCalendarDb.fetchAggregatorData() database error: Error creating new placeholder");
                    }
                }
                else
                {
                    throw new Exception("EventCalendarDb.fetchAggregatorData() database error: placeholder does not exist");
                }
            }
            return(entity);
        }