[MOSS汇编SDK]Web Content Management:自定义页面的工具栏
来源:互联网 发布:数据库开发怎么样 编辑:程序博客网 时间:2024/05/15 16:00
1.1自定义页面编辑工具栏组件
页面编辑工具栏是一个用户界面的面板元素,它提供了页面信息和页面支持的各种操作方法。本节描述了两个方法去修改这个页面编辑工具栏。你可以:
修改XML数据源文件
创建用户服务器控件然后再引用一个自定义XML文件
页面编辑工具栏被划分成三个主要的区域或是UI控件。
UI 控件
描述
页面状态栏
提供关于页面当前版本的信息,包括版本信息和页面状态
页面编辑菜单
让用户对页面进行相关的操作,比如发布版本,批准,签入以共享草稿等等。.
快速访问按钮
最常用的操作,给定页面状态和上下文内容。
页面编辑菜单和快速访问按钮都把UI控件和数据源进行了分离,你可以分别修改数据源和UI控件。
修改XML数据源文件
EditingMenu.xml文件和QuickAcces.xml文件是页面编辑菜单和快速访问按钮的数据源文件。XML文件中的数据源驱动了页面编辑栏的配置和行为。在这个示例中,我们要创建一个继承ConsoleAction类的对象,修改CustomQuickAccess.xml文件来新增一个按钮给页面编辑工具栏。实验完这个过程,一个新的按钮就会出瑞在页面编辑工具栏中。如果你单击它,允许有批准权限的用户去取消另一个用户对该页面的签出状态。
注意:由于一致性的原因,不要改变EditingMenu.xml和quickAcces.xml文件的内容。如果要自定义操作,可以编辑CustomEditngMenu.xml和CustomQuickAccess.xml文件,它们位于母版页与页面布局文档库中的编辑菜单文件夹。
Note:
你也可以应用自定义的描述,来加入快速访问按钮和网站操作菜单。
创建用户服务器控件来改变快速访问按钮的配置
1. 打开Microsoft Visual Studio
2. 在“文件”菜单,单击“新建“然后单击“ASP.NET WEB网站“
3. 创建一个新的项目。
4. 复制、粘贴如下的代码到项目的CS文件。
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint.Publishing;
using Microsoft.SharePoint.Publishing.WebControls.EditingMenuActions;
using Microsoft.SharePoint.Publishing.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Utilities;
namespace PageEditingToolbarMenuItemControls
{
/**//// <remarks>
/// Adds to the Quick Access toolbar a button that checks in
/// a document that is checked out by another user.
/// </remarks>
public sealed class DiscardOtherUserCheckoutAction : ConsoleAction
{
/**//// <summary>
/// This is the constructor of the specific ConsoleAction
/// </summary>
public DiscardOtherUserCheckoutAction() : base()
{
this.DisplayText = "Discard Other User's Checkout";
}
/**//// <summary>
/// SPBasePermissions are required to use this Action.
/// </summary>
/// <value></value>
public override SPBasePermissions UserRights
{
get { return SPBasePermissions.CancelCheckout; }
}
/**//// <summary>
/// Checks for the AuthoringStates required for the button to be enabled.
/// </summary>
/// <value></value>
public override AuthoringStates RequiredStates
{
get
{
return AuthoringStates.CheckedOutVersionExistsTrue | AuthoringStates.IsCheckedOutToCurrentUserFalse | AuthoringStates.IsDocLibListItemTrue;
}
}
/**//// <summary>
/// Defines the PostBack behavior when the URL for this control is clicked.
/// </summary>
/// <param name="eventArgument"></param>
public override void RaisePostBackEvent(string eventArgument)
{
if (eventArgument == DiscardOtherUserCheckoutAction.DiscardCheckOutPostBackEventArgument)
{
try
{
SPFile myFile = SPContext.Current.File;
myFile.UndoCheckOut();
}
catch (SPException e)
{
ConsoleNode actionsNode = new ConsoleNode();
ConsoleNode exitNoSaveNode = new ConsoleNode(actionsNode);
exitNoSaveNode.Action = new ExitWithoutSavingAction();
exitNoSaveNode.Action.ID = "checkOutDiscardErrorActionExitNoSave";
actionsNode.ChildConsoleNodes.Add(exitNoSaveNode);
this.ShowError(e, new ConsoleError(e.Message, actionsNode));
}
finally
{
SPUtility.Redirect(SPContext.Current.ListItemServerRelativeUrl, SPRedirectFlags.Default, Context);
}
}
}
/**//// <summary>
/// Specifies the URL for this Action.
/// </summary>
/// <value></value>
public override string NavigateUrl
{
get
{
return "javascript:" + Page.ClientScript.GetPostBackEventReference(this, DiscardOtherUserCheckoutAction.DiscardCheckOutPostBackEventArgument);
}
}
private const string DiscardCheckOutPostBackEventArgument = "discardUserCheckout";
}
}
5. 保存。
6. 生成这个项目,使用GAC注册这个DLL,在Web.config文件里加上<SafeControl>引用。
7. 重启IIS
8. 在"Program Files"Common Files"Microsoft Shared"Web Server Extensions"12"TEMPLATE"LAYOUTS"EditingMenu文件夹下
9. 复制粘贴QuickAcces.xml文件然后重新命名为customQuickAccess.xml.
10. 编辑CustomQuickAccess.xml然后替代其中的内容如下:
<Console>
<references>
///The following tag must refer to the assembly you created
///and compiled in step 3.
<reference TagPrefix="demo" assembly="WebControlLibrary1, Version=1.0.11.876, Culture=neutral, PublicKeyToken=b3795d44e71a79a4" namespace="PageEditingToolbarMenuItemControls" />
</references>
<structure>
<ConsoleNode Action="demo:DiscardOtherUserCheckoutAction" DisplayText="Discard Checkout" ConfigMenu="Add" UseResourceFile="false" Sequence="1700" RequiredRightsMode="Any" ImageUrl="/_layouts/images/ActionsSettings.gif" ID="DiscardCheckedout" />
</structure>
</Console>
11、保存关闭CustomQuickAccess.xml文件创建用户服务器控件并引用XML文件
可以使用程序扩展CustomEditingMenu.xml文件内容然后继承EditingMenu.xml文件的配置。如下过程包括的标记包括了CustomEditingMenu.xml文件的示例代码。这个文件给页面编辑菜单新增了一个新的包括两个新的项目(一个查看页面库和一个查看母版页库)的链接菜单。
开发者可以通过创建一个用户服务器控件来修改讨页面编辑菜单和快速访问按钮。如下代码示例描述了如何去创建一个用户服务器控件来重新恢复一个已经被签出的文档到签入的状态。
可以直接编辑XML数据源或是写一个用户自定义服务器控件来修改UI页面编辑工具栏或是快速访问按钮的配置。尽管如此,如果XML数据源被自定义且用户服务器控件正在运行,用户服务器控件比XML数据源的优先级更高。
修改XML数据源改变“页面编辑工具栏”界面配置
1. 打开一个XML编辑器
2. 定位到如下文件夹"Program Files"Common Files"Microsoft Shared"Web Server Extensions"12"TEMPLATE"LAYOUTS"EditingMenu
3. 复制、粘贴EditingMenu.xml和QuickAccess.xml文件,分别重新命名为:CustomEditingMenu.xml and CustomQuickAccess.xml
4. 复制如下的代码到两个文件中。
Copy Code
<?xml version="1.0" encoding="utf-8" ?>
<Console>
<references>
<reference TagPrefix="cms" assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral,
PublicKeyToken=93de0004b6e3fcc5" namespace="Microsoft.SharePoint.Publishing.WebControls.EditingMenuActions" />
</references>
<structure>
<ConsoleNode ConfigMenu="Add" Sequence="600"
NavigateUrl="javascript:" AccessKey="L" DisplayText="Links"
UserRights="EmptyMask" UseResourceFile="false"
RequiredStates="InSharedView" ID="LinksMenu" >
<ConsoleNode
DisplayText="View Pages Library"
UseResourceFile="false"
ImageUrl="/_layouts/images/ActionsSettings.gif"
UserRights="BrowseDirectories|ManageLists"
RequiredRightsMode="Any"
PermissionContext="CurrentSite"
IsSiteRelative="true"
NavigateUrl="Pages/forms/allitems.aspx"
ChangedNodeID="ViewPagesList">
</ConsoleNode>
<ConsoleNode IsSeparatorImage="True" UserRights="EmptyMask" />
<ConsoleNode
DisplayText="View Master Page Gallery"
UseResourceFile="false"
ImageUrl="/_layouts/images/ActionsSettings.gif"
UserRights="BrowseDirectories|ManageLists"
RequiredRightsMode="Any"
PermissionContext="CurrentSite"
IsSiteRelative="false"
NavigateUrl="/_catalogs/masterpage/Forms/AllItems.aspx"
ChangedNodeID="ViewPagesLibSettings">
</ConsoleNode>
</ConsoleNode>
</structure>
</Console>
5. 修改示例中的代码,如下的表格给出一个示范:
标记
描述
References
包括在ConsoleNode节中部署的引用,你可以增加你的DLL给你的菜单自定义操作。
Note:
在代码示例中,<references>标记是一个可选项,如果你想要支持本地化,设置这个参数为Ture。同样,这个标记必须有一个公钥(PublicKeyToken)属性来匹配你正在使用的应用。
ConsoleNode
包括页面编辑菜单的菜单项,每一个菜单可以包括DispayText属性,UserRights属性,RequiredRightsMode属性和PermissionContext枚举(其中菜单是可见的),这个菜单可能是一个映射到一个部署到服务器控件操作或是一个URL。
开发者可以通过修改已存在节点的ID来同样替代或是删除已经存在的项。
Structure
描述菜单结构
6. 使用一个布尔型表达式去配置可选的位蒙板属性,每一个菜单项节点有两个可选的属性,你可以设置控件的上下文,比如何时或是何地该菜单项(consoleNode )对用户可见。
类型
属性名称
描述
上文下
RequiredStates
确定菜单项在什么页面状态或是编辑模式下有效。包括:在编辑模式(InEditModeTrue)、非编辑模式(InEditModeFalse)和签出(IsCheckOutToCurrentUserTrue)。
用户权限
UserRights
基于WSS权限管理来控制对该项的访问。
上述布尔表达式的示例:UserRights="BrowseDirectories|ManageLists”,允许有“浏览目录”或是“管理列表”的用户去访问该菜单项。
7. 保存“CustomEditingMenu.xml”文件。
- [MOSS汇编SDK]Web Content Management:自定义页面的工具栏
- web content management新手入门--工作流的创建
- moss自定义登陆页面
- moss自定义登陆页面
- 隐藏 MOSS 2007 页面版本工具栏
- Web Content Management With Documentum
- MOSS SDK学习(3)-MOSS的用户
- web content management新手入门--分页功能的实现
- SharePoint : 为WSS或者MOSS编写自定义的Web Service
- 关于MOSS 2007的Content Types
- WIN32 汇编 工具栏的使用
- 自定义myeclipse的工具栏
- 创建自定义的工具栏
- web content management新手入门--一个简单的wcm新闻发部
- Bob关于content management的理解!(转载)
- 流行的CMS(Content Management System) 比较.
- 现已可用:更新Updated Windows Azure SDK 和 Windows Azure Management的页面
- MOSS应用程序页面的HelloWord示例代码
- C#中窗体之间的数据传递
- 翻译 项目管理艺术 前言
- 在VC中使用Automation操纵Word和Excel
- 西门子PLC200的modbus Slave库可以支持广播了
- 翻译 项目管理艺术 2.5-2.6 第二章 大结局
- [MOSS汇编SDK]Web Content Management:自定义页面的工具栏
- Microsoft.Press.Microsoft.Expression.Web.Step.by.Step.Nov.2007.eBook-BBL
- 翻译 项目管理艺术 2.4 这是个大块
- 将GEF模型显示保存为图片
- 关于敲了很多遍Symbian的资源文件
- 翻译 项目管理艺术 2.3
- 运用VC或Java对Office进行编程操作
- [转]赚得了你想的,却失去更重要的东西
- 项目管理艺术 词汇表