コード例 #1
0
        public int CreateNewRepository(ref CmsPage page, CmsPageRevisionData newrevision)
        {
            PageRevisionDataRepository revisionrepository = new PageRevisionDataRepository();

            if (revisionrepository.SaveOrUpdate(newrevision).Id < 0)
            {
                return(-1);
            }
            else
            {
                page.RevisionNumber = newrevision.RevisionNumber;
                if (this.SaveOrUpdate(page).Id < 0)
                {
                    return(-1);
                }
                else
                {
                    return(page.RevisionNumber);
                }
            }
        }
コード例 #2
0
        private string getLastModifiedTitle(CmsPageRevisionData revData)
        {
            TimeSpan timespan = TimeSpan.FromTicks(DateTime.Now.Ticks - revData.RevisionSavedAt.Ticks);

            if (timespan.TotalDays < 7)
            {
                return("less than a week ago");
            }
            else if (timespan.TotalDays < 31)
            {
                return("less than a month ago");
            }
            else if (timespan.TotalDays < 365)
            {
                int monthsAgo = Convert.ToInt32(Math.Round(timespan.TotalDays / 31));
                return(monthsAgo.ToString() + " months ago");
            }
            else
            {
                int yearsAgo = Convert.ToInt32(Math.Round(timespan.TotalDays / 365));
                return(yearsAgo.ToString() + " years ago");
            }
        }
コード例 #3
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());
        }