Beispiel #1
0
    public void LoadData()
    {
        if (node != null)
        {
            string layoutText = String.Empty;

            // get template info
            pti = PageTemplateInfoProvider.GetPageTemplateInfo(node.GetUsedPageTemplateId());
            if ((pti == null) && (DocumentContext.CurrentPageInfo != null) && (DocumentContext.CurrentPageInfo.UsedPageTemplateInfo != null))
            {
                pti = DocumentContext.CurrentPageInfo.UsedPageTemplateInfo;
            }

            if (pti != null)
            {
                PageTemplateLayoutTypeEnum type = PageTemplateLayoutTypeEnum.PageTemplateLayout;
                // Try get device layout
                object layoutObject = PageTemplateDeviceLayoutInfoProvider.GetLayoutObject(pti, DeviceContext.CurrentDeviceProfile, out type);
                layoutText = pti.PageTemplateLayout;

                // Set layout text with dependence on current layout type
                switch (type)
                {
                // Shared layouts
                case PageTemplateLayoutTypeEnum.SharedLayout:
                case PageTemplateLayoutTypeEnum.DeviceSharedLayout:
                case PageTemplateLayoutTypeEnum.SharedLayoutMapped:
                    layoutText = (layoutObject as LayoutInfo).LayoutCode;
                    break;

                // Custom device layout
                case PageTemplateLayoutTypeEnum.DeviceLayout:
                    layoutText = (layoutObject as PageTemplateDeviceLayoutInfo).LayoutCode;
                    break;
                }
            }
            ltlLayoutCode.Text = HTMLHelper.EnsureHtmlLineEndings(HTMLHelper.HighlightHTML(layoutText));
            ltlLayoutCode.Text = RegexHelper.GetRegex("[ ](?![^<>]*>)").Replace(ltlLayoutCode.Text, "&nbsp;");

            // Load node data
            if (!RequestHelper.IsPostBack())
            {
                txtBodyCss.Text      = node.NodeBodyElementAttributes;
                txtBodyScripts.Value = node.NodeBodyScripts;
                txtDocType.Text      = node.NodeDocType;
                txtHeadTags.Value    = node.NodeHeadTags;
            }
        }

        lblAfterDocType.Text  = HighlightHTML("<html>") + "<br />" + AddSpaces(1) + HighlightHTML("<head>");
        lblAfterHeadTags.Text = AddSpaces(1) + HighlightHTML("</head>");
        lblAfterLayout.Text   = AddSpaces(1) + HighlightHTML("</body>") + "<br />" + HighlightHTML("</html>");
        lblBodyEnd.Text       = HighlightHTML(">");
        lblBodyStart.Text     = AddSpaces(1) + HighlightHTML("<body " + HttpUtility.HtmlDecode(mBody));
    }
    /// <summary>
    /// Validates customer payment data.
    /// </summary>
    public override string ValidateData()
    {
        var errorMessage = base.ValidateData();

        if (!string.IsNullOrEmpty(errorMessage))
        {
            lblError.Visible = true;
            lblError.Text    = HTMLHelper.EnsureHtmlLineEndings(HTMLHelper.HTMLEncode(errorMessage));
        }
        else
        {
            lblError.Visible = false;
        }

        return(errorMessage);
    }
    /// <summary>
    /// Gets row column content.
    /// </summary>
    /// <param name="dr">DataRow</param>
    /// <param name="dc">DataColumn</param>
    /// <param name="toCompare">Indicates if comparison will be used for content</param>
    /// <returns>String with column content</returns>
    private string GetRowColumnContent(DataRow dr, DataColumn dc, bool toCompare)
    {
        if (dr == null)
        {
            // Data row was not specified
            return(string.Empty);
        }

        if (!dr.Table.Columns.Contains(dc.ColumnName))
        {
            // Data row does not contain the required column
            return(string.Empty);
        }

        var value = dr[dc.ColumnName];

        if (DataHelper.IsEmpty(value))
        {
            // Column is empty
            return(string.Empty);
        }

        var content = ValidationHelper.GetString(value, "");

        Func <string> render = () =>
        {
            if (toCompare)
            {
                return(content);
            }

            content = HTMLHelper.EnsureHtmlLineEndings(content);

            return(content);
        };

        Func <string> standardRender = () =>
        {
            if (toCompare)
            {
                return(content);
            }

            if (EncodeDisplayedData)
            {
                content = HTMLHelper.HTMLEncode(content);
            }
            content = content.Replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;");
            content = "<div style=\"max-height: 300px; overflow: auto;\">" + content + "</div>";
            content = HTMLHelper.EnsureHtmlLineEndings(content);

            return(content);
        };

        // Binary columns
        if (dc.DataType == typeof(byte[]))
        {
            var data = (byte[])dr[dc.ColumnName];
            content = string.Format("<{0}: {1}>", GetString("General.BinaryData"), DataHelper.GetSizeString(data.Length));

            return(standardRender());
        }

        // DataTime columns
        if (dc.DataType == typeof(DateTime))
        {
            var dateTime    = Convert.ToDateTime(content);
            var cultureInfo = CultureHelper.GetCultureInfo(MembershipContext.AuthenticatedUser.PreferredUICultureCode);
            content = dateTime.ToString(cultureInfo);

            return(standardRender());
        }

        switch (dc.ColumnName.ToLowerCSafe())
        {
        // Document content
        case "documentcontent":
            var sb = new StringBuilder();

            Action <MultiKeyDictionary <string>, string, string> addItems = (dictionary, titleClass, textClass) =>
            {
                foreach (DictionaryEntry item in dictionary)
                {
                    var regionContent = HTMLHelper.ResolveUrls((string)item.Value, SystemContext.ApplicationPath);

                    if (toCompare)
                    {
                        sb.AppendLine((string)item.Key);
                        sb.AppendLine(regionContent);
                    }
                    else
                    {
                        sb.AppendFormat("<span class=\"{0}\">{1}</span>", titleClass, item.Key);
                        sb.AppendFormat("<span class=\"{0}\">{1}</span>", textClass, HTMLHelper.HTMLEncode(regionContent));
                    }
                }
            };

            var items = new EditableItems();
            items.LoadContentXml(ValidationHelper.GetString(value, ""));

            // Add regions
            addItems(items.EditableRegions, "VersionEditableRegionTitle", "VersionEditableRegionText");

            // Add web parts
            addItems(items.EditableWebParts, "VersionEditableWebPartTitle", "VersionEditableWebPartText");

            content = sb.ToString();
            return(render());

        // XML columns
        case "pagetemplatewebparts":
        case "webpartproperties":
        case "reportparameters":
        case "classformdefinition":
        case "classxmlschema":
        case "classformlayout":
        case "userdialogsconfiguration":
        case "siteinvoicetemplate":
        case "userlastlogoninfo":
        case "formdefinition":
        case "formlayout":
        case "classsearchsettings":
        case "graphsettings":
        case "tablesettings":
        case "issuetext":
        case "issuewidgets":
        case "savedreportparameters":
        case "emailwidgetproperties":

        // HTML columns
        case "emailtemplatetext":
        case "emailwidgetcode":
        case "templatebody":
        case "templateheader":
        case "templatefooter":
        case "containertextbefore":
        case "containertextafter":
        case "savedreporthtml":
        case "layoutcode":
        case "webpartlayoutcode":
        case "transformationcode":
        case "reportlayout":
#pragma warning disable CS0618 // Type or member is obsolete
            if (BrowserHelper.IsIE())
#pragma warning restore CS0618 // Type or member is obsolete
            {
                content = HTMLHelper.ReformatHTML(content, " ");
            }
            else
            {
                content = HTMLHelper.ReformatHTML(content);
            }
            break;

        // File columns
        case "metafilename":
            var metaFileName = HTMLHelper.HTMLEncode(ValidationHelper.GetString(dr["MetaFileName"], ""));

            if (ShowLinksForMetafiles)
            {
                var metaFileGuid = ValidationHelper.GetGuid(dr["MetaFileGuid"], Guid.Empty);
                if (metaFileGuid != Guid.Empty)
                {
                    var metaFileUrl = ResolveUrl(MetaFileInfoProvider.GetMetaFileUrl(metaFileGuid, metaFileName));
                    content = string.Format("<a href=\"{0}\" target=\"_blank\">{1}</a>", metaFileUrl, metaFileName);
                }
            }
            else
            {
                content = metaFileName;
            }

            return(render());
        }

        return(standardRender());
    }
Beispiel #4
0
    /// <summary>
    /// Processes the content.
    /// </summary>
    /// <param name="sb">StringBuilder to write</param>
    /// <param name="source">Source object</param>
    /// <param name="column">Column</param>
    /// <param name="content">Content</param>
    protected void ProcessContent(StringBuilder sb, object source, string column, ref string content)
    {
        bool standard = true;

        switch (column.ToLowerCSafe())
        {
        // Document content
        case "documentcontent":
            EditableItems items = new EditableItems();
            items.LoadContentXml(content);

            // Add regions
            foreach (DictionaryEntry region in items.EditableRegions)
            {
                sb.Append("<span class=\"VersionEditableRegionTitle\">" + (string)region.Key + "</span>");

                string regionContent = HTMLHelper.ResolveUrls((string)region.Value, SystemContext.ApplicationPath);

                sb.Append("<span class=\"VersionEditableRegionText\">" + regionContent + "</span>");
            }

            // Add web parts
            foreach (DictionaryEntry part in items.EditableWebParts)
            {
                sb.Append("<span class=\"VersionEditableWebPartTitle\">" + (string)part.Key + "</span>");

                string regionContent = HTMLHelper.ResolveUrls((string)part.Value, SystemContext.ApplicationPath);
                sb.Append("<span class=\"VersionEditableWebPartText\">" + regionContent + "</span>");
            }

            standard = false;
            break;

        // XML columns
        case "pagetemplatewebparts":
        case "webpartproperties":
        case "reportparameters":
        case "classformdefinition":
        case "classxmlschema":
        case "classformlayout":
        case "userdialogsconfiguration":
            content = HTMLHelper.ReformatHTML(content);
            break;

        // File columns
        case "metafilename":
        {
            Guid metaFileGuid = ValidationHelper.GetGuid(GetValueFromSource(source, "MetaFileGuid"), Guid.Empty);
            if (metaFileGuid != Guid.Empty)
            {
                string metaFileName = ValidationHelper.GetString(GetValueFromSource(source, "MetaFileName"), "");

                content = "<a href=\"" + ResolveUrl(MetaFileInfoProvider.GetMetaFileUrl(metaFileGuid, metaFileName)) + "\" target=\"_blank\" >" + HTMLHelper.HTMLEncode(metaFileName) + "</a>";
                sb.Append(content);

                standard = false;
            }
        }
        break;
        }

        // Standard rendering
        if (standard)
        {
            if (content.Length > 500)
            {
                content = TextHelper.EnsureMaximumLineLength(content, 50, "&#x200B;", true);
            }
            else
            {
                content = HTMLHelper.HTMLEncode(content);
            }

            content = HTMLHelper.EnsureHtmlLineEndings(content);
            content = content.Replace("\t", "&nbsp;&nbsp;&nbsp;&nbsp;");
            sb.Append("<div style=\"max-height: 300px; overflow: auto;\">" + content + "</div>");
        }
    }