0

我目前在尝试在我们的 MOSS 2007 站点定义中设置 HTML 富文本编辑器的样式时遇到问题。

我在 body 标记的自定义母版页上指定了内联公司徽标,如下所示:

<%@Master language="C#"%>
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint" %>
<%@ Import Namespace="Microsoft.SharePoint.ApplicationPages" %>
<%@ Register Tagprefix="WebPartPages" Namespace="Microsoft.SharePoint.WebPartPages" Assembly="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Register TagPrefix="wssuc" TagName="Welcome" src="~/_controltemplates/Welcome.ascx" %>
<%@ Register TagPrefix="wssuc" TagName="DesignModeConsole" src="~/_controltemplates/DesignModeConsole.ascx" %>
<HTML id="HTML1" dir="<%$Resources:wss,multipages_direction_dir_value%>" runat="server" xmlns:o="urn:schemas-microsoft-com:office:office">
<HEAD id="HEAD1" runat="server">
    <META Name="GENERATOR" Content="Microsoft SharePoint">
    <META Name="progid" Content="SharePoint.WebPartPage.Document">
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
    <META HTTP-EQUIV="Expires" content="0">
    <SharePoint:RobotsMetaTag ID="RobotsMetaTag1" runat="server"/>
    <Title ID=onetidTitle><asp:ContentPlaceHolder id=PlaceHolderPageTitle runat="server"/></Title>
    <SharePoint:CssLink ID="CssLink1" runat="server"/>
    <SharePoint:Theme ID="Theme1" runat="server"/>
    <SharePoint:ScriptLink ID="ScriptLink1" language="javascript" name="core.js" Defer="true" runat="server" />
    <SharePoint:CustomJSUrl ID="CustomJSUrl1" runat="server" />
    <SharePoint:SoapDiscoveryLink ID="SoapDiscoveryLink1" runat="server" />
    <asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/>
    <SharePoint:DelegateControl ID="DelegateControl1" runat="server" ControlId="AdditionalPageHead" AllowMultipleControls="true"/>

    <style>
body
{
    background-image:url(/_layouts/images/corp/corpLogo.gif);
    background-repeat:no-repeat;
}
</style>
</HEAD>

...

当作为一项功能部署时,此母版页适用于我们所有的标准开箱即用页面和站点 - 徽标出现在左上角(并且代码还使用单独定义的样式表应用配色方案) .

但是,当我们尝试使用 CEWP 修改一段内容时,富文本编辑器也会在左上角显示此徽标,部分遮挡了用户需要编辑的文本。

我试图修改母版页中的样式以隐藏此徽标,但找不到这样做的方法。我也研究过修改

C:\Program Files\Common Files\Microsoft Shared\web 服务器扩展\12\TEMPLATE\LAYOUTS\1033\htmleditor.js

和实际的富文本编辑器本身

C:\Program Files\Common Files\Microsoft Shared\web 服务器扩展\12\TEMPLATE\LAYOUTS\RTE2PUEditor.aspx

但这并没有带来任何成功(而且我真的宁愿不这样做!!)。

有人可以指出我正确的方向吗?

我想要一个适用于所有页面的自定义品牌(徽标、css 等),但不适用于弹出的富文本编辑器。这可能吗?如果是这样,怎么做?

4

1 回答 1

2

HtmlEditor.js 中的 RTE2_GenerateLaunchArguments 方法复制页面上的所有样式表和样式:

var styleRules=new Array();
var styleRulesUrl=new Array();
for (var i=0; i<document.styleSheets.length; i++)
{
    var styleSheet_href=document.styleSheets[i].href;
    if (styleSheet_href !="")
    {
        styleRulesUrl[styleRulesUrl.length]=styleSheet_href;
    }
    else
    {
        var rules=document.styleSheets[i].rules;
        for (var j=0; j<rules.length; j++)
        {
            styleRules[styleRules.length]=rules[j];
        }
    }
}

然后将这些值传递并应用到模式对话框 RTE2PUEditor.aspx。看起来最快的解决方法是使用表单而不是正文标记:

form#aspnetForm
{
    background-image:url(/_layouts/images/corp/corpLogo.gif);
    background-repeat:no-repeat;
}

RTE2PUEditor.aspx 上的表单 ID 是 RTE2PUEditorForm,而其他大多数页面(尤其是使用母版页的页面)都使用 aspnetForm。

也就是说,您可能希望研究设置站点徽标而不是使用 CSS。您可以通过转到站点设置 > 标题、描述和图标 > 徽标 URL 和描述并更改 URL 来手动设置徽标。或者,您可以使用SPWeb.SiteLogoUrl属性通过代码进行设置。请注意,这要求您的自定义母版页上存在SiteLogoImage控件。

于 2010-03-09T22:45:37.293 回答