MOSS中有两种页面:Site Pages 和Application Pages,他们分别使用不同的母版页,Site Pages 使用的是
Default.master, Application Pages使用的是Application.master。我们下面讨论的主要是针对
default.master的,因为Application.master是不支持被定制的。
Default.master在安装目录的C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\GLOBAL\目录下,站点中引用的相对路径为/_catalogs/masterpage/default.master。MOSS中
母版页是可以嵌套的:<%@ Master master=MyParent.master %>。不能添加webpart区域,但可以添加静
态的wetpart 。
该母版页中主要有以下几部分:
1. 链接,菜单,图标和导航控件。
MOSS已经给我们提供了很多封装好的控件,比如SPWebPartManager,导航的控件等等。
2. 占位符(Named Placeholds)
我们可以利用占位符来给继承自Default.master的页面添加内容,下面会有例子。
3. Delegate controls
这个词就不翻译了,使用它可以替换掉母版页中的内容。
下面是Default.master中的一段代码:
%@Master language="C#"%
<%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls"
Assembly="Microsoft.SharePoint, …" %>
<HTML runat="server">
<HEAD runat="server">
<!-- SharePoint 控件-->
<SharePoint:CssLink ID="CssLink1" runat="server"/>
<SharePoint:Theme ID="Theme1" runat="server"/>
<SharePoint:ScriptLink language="javascript" name="core.js" Defer="true" runat="server"/>
<!-- Named Placeholders -->
<Title ID=onetidTitle>
<asp:ContentPlaceHolder id=PlaceHolderPageTitle runat="server"/>
</Title>
<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/>
<!-- Named Delegate Control -->
<SharePoint:DelegateControl ID="DelegateControl1" runat="server" ControlId="AdditionalPageHead"
AllowMultipleControls="true"/>
</HEAD>
Head中的CssLink 和Theme,ScriptLink都是moss中标准的服务器控件,这两个控件在application.master中也是有的.
Head中有两个Named Placeholders,ID 分别为PlaceHolderPageTitle 和 PlaceHolderAdditionalPageHead,
PlaceHolderPageTitle表示页面的标题,PlaceHolderAdditionalPageHead表示页面的Head区域,你可以添加类似
<meta>的标签,示例如下:
<%@ Page MasterPageFile="~masterurl/default.master" %>
<asp:Content ID="PageTitle" runat="server" ContentPlaceHolderID="PlaceHolderPageTitle">
My Custom Page Title
</asp:Content>
<asp:Content ID="AdditionalPageHead" runat="server" ContentPlaceHolderID="PlaceHolderAdditionalPageHead">
<META name="keywords" content="Software, Consulting, Money, Fame" />
</asp:Content>
下面是MOSS中已定义的Named placeholds
占位符的Name |
描述 |
PlaceHolderAdditionalPageHead | 需要写在页面<head>标签里的附加内容,如引用的脚本或样式文件 |
PlaceHolderBodyAreaClass | 附加在页面顶部的body中的样式 |
PlaceHolderBodyLeftBorder | 页面body的边框元素 |
PlaceHolderBodyRightMargin | 页面body的右边距 |
PlaceHolderCalendarNavigator | 在页面中有日历时为其显示一个日期选择框 |
PlaceHolderFormDigest | 这是页面中必备的 "form digest"安全组件 |
PlaceHolderGlobalNavigation | 站点导航 |
PlaceHolderHorizontalNav | 导航标签 |
PlaceHolderLeftActions | 左侧导航区下面的动作区 |
PlaceHolderLeftNavBar | 左侧导航区 |
PlaceHolderLeftNavBarBorder | 左侧导航区的边框元素 |
PlaceHolderLeftNavBarDataSource | 左侧导航区菜单的数据源 |
PlaceHolderLeftNavBarTop | 左侧导航区上面的导航区 |
PlaceHolderMain | 页面主体 |
PlaceHolderMiniConsole | 一个放置页面级命令的地方,比如在WIKI站点里的Edit Page, History, Incoming Links |
PlaceHolderNavSpacer | 左侧导航区的宽度 |
PlaceHolderPageDescription | 页面描述区 |
PlaceHolderPageImage | 页面左上的图标 |
PlaceHolderPageTitle | 页面的<Title>,通常显示在浏览器的标题栏 |
PlaceHolderSearchArea | 搜索框 |
PlaceHolderSiteName | 站点名称 |
PlaceHolderTitleAreaClass | TitleArea附加的样式 |
PlaceHolderTitleAreaSeparator | TitleAreaSeparator区 |
PlaceHolderTitleBreadcrumb | TitleBreadcrumb区 |
PlaceHolderTitleInTitleArea | Breadcrumb区下面的标题 |
PlaceHolderTitleLeftBorder | Title区左侧边框 |
PlaceHolderTitleRightMargin | Title区右侧空白 |
PlaceHolderTopNavBar | 标签导航区 |
PlaceHolderUtilityContent | 页面底部需要的一块特殊内容 |
SPNavigation | 在 Windows SharePoint Services中默认为空,用于附加的页面编辑控件 |
WSSDesignConsole | 页面编辑控件,当页面进入编辑页面模式时使用(当我们点 Site Actions, Edit Page后) |
导航组件:
MOSS提供了很多标准的导航组件,如NavigationProvider, SPSiteMapProvider, SPContentMapProvider, 和SPXmlContentMapProvider,所有被激活的你都可以在站点的web.config的siteMap节点中配置,示例如下:
<siteMap defaultProvider="CurrentNavSiteMapProvider" enabled="true"> <providers> <add name="SPNavigationProvider" type="Microsoft.SharePoint.Navigation.SPNavigationProvider,
Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" /> </providers> </siteMap>
顶部链接栏和快速启动菜单是Default.master 中定义的两个主导航组件。顶部链接栏是即AspMenu。它由数据
源为SiteMapDataSource 控件的 SPNavigationProvider的定义的。快速启动和顶部链接栏是以同样的方式定义
的,他们之间的区别是顶部链接的SiteMapDataSource中的StartingNodeUrl属性使用值为 sid:1002,而快速启
动菜单对应的StartingNodeUrl 属性值为 sid:1025。1002和1025是用于跟踪导航节点的,顶部链接的顶部节点的
id是1002,快速启动的顶部节点的id为1025。
顶部链接和快速启动的节点的添加也是非常方便的,在后台的"网站设置"即可以灵活的设置.也可以使用MOSS对
象模型来填加,示例代码如下:
SPWeb site = (SPWeb)properties.Feature.Parent; SPNavigationNodeCollection topNav = site.Navigation.TopNavigationBar; // 创建下拉菜单SPNavigationNode DropDownMenu1; DropDownMenu1 = new SPNavigationNode("SitePages", "", false); topNav[0].Children.AddAsLast(DropDownMenu1); // 添加节点 DropDownMenu1.Children.AddAsLast(new SPNavigationNode("Page1","SitePages/Page1.aspx")); DropDownMenu1.Children.AddAsLast(new SPNavigationNode("Page2","SitePages/Page2.aspx"));
Delegate Controls
我们可以设置它影响的范围,有四个级分别是:site scope, site collection scope, Web application scope, 和
farm scope。下面我们就以MOSS中的搜索栏为例说明,下面是MOSS中默认的:
<SharePoint:DelegateControl ID="DelegateControl5" runat="server" ControlId="SmallSearchInputBox" />
MOSS中使用名为ContentLightup的feature来实现这功能的,SearchArea.xml中对应的代码为:
<Control Id="SmallSearchInputBox" Sequence="100" ControlSrc="~/_controltemplates/searcharea.ascx" />
下面我们就用我们自己定制的搜索栏来替默认的,我们就需要在我们自定义的feature中做如下设置:
<Control Id="SmallSearchInputBox" Sequence="10" ControlSrc="~/_controltemplates/OurSearchArea.ascx" />
在这里要注意一点,Sequence属性的值一定要小于默认提供的,这个Sequence的值在wss中是100,在moss
标准版中是50,企业版是25。这个你可以去MOSS的安装目录下搜索feature中对应的xml文件来核对(名字:
SearchArea.xml)。由于我们定义的这个是站点的级别的,那么你整个站点页面中的搜索控件都会被替换为
你自己定制的样式。
下面就是我们自定义的搜索样式的页面.ascx代码:
<%@ Control Language="C#" %>
<script runat="server">
protected void OurSearchArea_Click(object sender, EventArgs e)
{ }
</script>
<table>
<tr><td><asp:Button ID="cmdRunSearch" runat="server" Text="Search" OnClick="OurSearchArea_Click" /></td>
<td><asp:TextBox ID="txtSearchText" runat="server" Width="120" /></td></tr>
</table>
下图是替换的效果:
上面我们使用了用户控件方式(.ascx),我们还可以使用控件类的方式来自定义,下面是MOSS提供的标准的
QuickLaunchDataSource.
<SharePoint:DelegateControl ID="DelegateControl8" runat="server" ControlId="QuickLaunchDataSource"> <Template_Controls> <asp:SiteMapDataSource SiteMapProvider="SPNavigationProvider" ShowStartingNode="False" id="QuickLaunchSiteMap" StartingNodeUrl="sid:1025" runat="server" /> </Template_Controls> </SharePoint:DelegateControl>
这个DelegateControl 使用QuickLaunchDataSource控件来填充他的内容,并不是asc.aspx用户控件的
方式。他默认使用了id为QuickLaunchSiteMap的SiteMapDataSource控件,如果你想替换这个控件,你
可以在feature中添加一下代码
<Control Id="QuickLaunchDataSource" Sequence="1" ControlAssembly="System.Web, ..."
ControlClass="System.Web.UI.WebControls.SiteMapDataSource">
<Property Name="ID">QuickLaunchSiteMap</Property>
<Property Name="SiteMapProvider">SPSiteMapProvider</Property>
<Property Name="ShowStartingNode">False</Property>
</Control>
这个Control的id要和你要替换的id是一样的才可以。
自定义Default.master
我们可以使用SPD来定制母版页,母版页和其他的Site Page的原理是一样的,你定制过后就会被存到内容数
据库中。所以我们不要去文件目录下直接修改default.master文件,修改了也是没有用的。
下面我们就自定义一个母版页实现简单的换肤功能,在elements.xml中定义如下:
<Module Name="MasterPages" List="116" Url="_catalogs/masterpage"> <File Url="OurCustom.master" Type="GhostableInLibrary" />
</Module>
Url:"_catalogs/masterpage"是母版页的相对路径。
Type:"GhostableInLibrary" 会在文档库中存储该母版页。
List:属性代表不同的列表类型,下表是MOSS中已经定义的,微软建议我们自定义的最好大于10000,以避免
和已定义的冲突。
ID | Description |
100 | Generic list |
101 | Document library |
102 | Survey |
103 | Links list |
104 | Announcements list |
105 | Contacts list |
106 | Events list |
107 | Tasks list |
108 | Discussion board |
109 | Picture library |
110 | Data sources |
111 | Site template gallery |
112 | UserInformation |
113 | Web Part gallery |
114 | List template gallery |
115 | XML Form library |
116 | MasterPageCatalog |
117 | NoCodeWorkflows |
118 | WorkflowProcess |
119 | WebPageLibrary |
120 | Custom grid for a list |
130 | DataConnectionLibrary |
140 | WorkflowHistory |
150 | GanttTasks |
200 | Meeting Series list |
201 | Meeting Agenda list |
202 | Meeting Attendees list |
204 | Meeting Decisions list |
207 | Meeting Objectives list |
210 | Meeting text box |
211 | Meeting Things To Bring list |
212 | Meeting Workspace Pages list |
300 | Portal Sites list. |
301 | Posts |
302 | Comments |
303 | Categories |
1100 | Issue tracking |
1200 | AdminTasks |
2002 | Personal document library |
2003 | Private document library |
Page的MasterPageFile属性指定使用的母版页,MOSS中的母版页默认提供了一些token,主要有动态tokens ("~masterurl/default.master"
和"~masterurl/custom.master"
) 和静态 tokens ("~site/default
and
.master" "~sitecollection/default.master"
),说明如下:
Dynamic token "~masterurl/default.master"
可以通过SPWeb的MasterUrl
属性来指定网站的母版页的URL,即指定page中的
MasterPageFile,页面的<%@
中的
Page MasterPageFile="~masterurl\default.master"%>"~masterurl/default.master"
在运
SPWeb的
行时将会被MasterUrl
属性取代
Dynamic token "~masterurl/custom.master"
与上面的类似,他是通过SPWeb的CustomMasterUrl属性来指定的。
Static tokens "~site/default.master"
和"~sitecollection/default.master"
如果你的内容页在
http://siteColl/subsite1/subsite2/default.aspx
,你使用了静态tokens"~sitecollection/mypage.master"
, 你内容页使用的母版页在这个位置 http://siteColl/
. 如果你用的tokens 是
mypage.master"~site/mypage.master"
, 你的母版页就在这个位置 http://siteColl/subsite1/subsite2/mypage.master.
注意:MasterUrl 和 CustomMasterUrl 默认都是这个值"/_catalogs/masterpage/default.master" ,如果你要
改变的话,要两个都改变,必须一致才行。
下面我们就来实现动态设定母版页,由于我们定义的是站点级的,而站点中的每个子站点都是应用的自己独立
的一个master,所以我们使用递归来替换所有的站点的母版页代码如下:
protected void btnApplyOurCustomMaster_Click(object sender, EventArgs e)
{ SPWeb site = SPContext.Current.Site.RootWeb string MasterUrlPath = site.ServerRelativeUrl; if (!MasterUrlPath.EndsWith(@"/")) MasterUrlPath += @"/"; MasterUrlPath += @"_catalogs/masterpage/OurCustom.master"; ApplyCustomBrand(MasterUrlPath, site); } protected void ApplyOurCustomMaster(string MasterUrlPath, SPWeb site) { site.MasterUrl = MasterUrlPath; site.Update(); foreach (SPWeb child in site.Webs) { ApplyCustomBrand(MasterUrlPath, child); } }
下图是前后的效果:
发表评论
-
平淡的2007
2007-12-24 08:04 824早上起来,送女朋友去公交车站,然后回来赶紧打开电脑,先 ... -
DreamSpark发布,高校学生免费使用Visual Studio 2008 Professional Edition 等微软软件
2008-02-20 13:23 1422今天上网无意中搜索到学生可以免费使用VS2008专业版,后来又 ... -
坚持学习WF(1):从HelloWorld开始
2008-04-04 16:30 902[置顶]坚持学习WF文章索 ... -
坚持学习WF(2):WF创作模式和设计时工具
2008-04-05 17:19 644[置顶]坚持学习WF文章索 ... -
坚持学习WF(3):WF框架概览
2008-04-08 07:27 788[置顶]坚持学习WF文章索 ... -
坚持学习WF(4):活动(Activity)和依赖属性(DependencyProperty)
2008-04-12 00:01 1154[置顶]坚持学习WF文章索引 活动(Activity) 活动 ... -
坚持学习WF(5):自定义活动(CustomActivity)
2008-04-13 15:25 941当WF提供的标准活动不能满足我们的需求的时候,我们就需要定义自 ... -
MOSS点滴(1):如何开发和部署feature
2008-04-16 21:35 838Features 是MOSS 2007以开箱即用的一套新功能, ... -
MOSS点滴(2):自定义Application Page
2008-04-19 20:07 851在MOSS中后台管理的页面都是Application Pag ... -
坚持学习WF(6):开发可复用的宿主程序
2008-04-21 21:45 699我们之前写工作流宿主 ... -
MOSS点滴(4):实现Form认证
2008-04-29 21:12 713本文主要参考了网上的一些文章,但有些文章有些地方说的不是很明确 ... -
坚持学习WF(7):流程控制(Flow Control)
2008-04-30 18:10 848本文主要说说WF中和流 ... -
坚持学习WF(8):本地服务之调用外部方法
2008-05-09 08:17 770WF提供了一组核心服务 ... -
MOSS中的WebPart开发
2008-05-10 13:53 1071由于在asp.net1.1的时候asp.net中还没有webp ... -
坚持学习WF(9):本地服务之事件处理
2008-05-28 07:49 812[置顶]坚持学习WF文章索引 一:先来介绍两个活动 Even ... -
坚持学习WF(10):在工作流中使用关联
2008-06-01 13:03 704[置顶]坚持学习WF文章索 ... -
坚持学习WF(11):工作流通信与队列
2008-06-07 15:45 740[置顶]坚持学习WF文章索引 WF 提供的通信模型是构建于 ... -
MOSS中创建自定义内容类型
2008-06-12 20:23 1122一:简要介绍 某类内容 ... -
.NET中IDisposable接口的基本使用
2008-06-15 12:01 955首先来看MSDN中关于这个接口的说明: [ComVisible ... -
坚持学习WF(12):使用EventHandlingScopeActivity活动
2008-06-18 22:46 700[置顶]坚持学习WF文章索引 EventHandlingSco ...
相关推荐
在SharePoint 2007(MOSS)中,母版页(Master Page)是整个网站界面的基础,它定义了页面的全局布局和样式,为内容页提供统一的外观和感觉。母版页的制作是一个结合了开发与设计的综合性工作,需要对HTML、CSS、ASP...
2. **MOSS中的母版页和内容页** - 在MOSS中,创建母版页的过程与ASP.NET类似,但增加了对SharePoint特定功能的支持。例如,你可以使用`<%@ Register>`指令引入SharePoint的WebPartPages和SharePoint命名空间,以便...
【知识点详解:MOSS开发中母版页的应用】 在探讨MOSS(Microsoft Office SharePoint Server)2007中母版页及其设计制作之前,我们首先需要理解母版页(Master Page)在Web开发中的核心作用。母版页是ASP.NET框架下...
Moss 2007 中的列表迁移到 Moss 2010 的方法 Moss 2007 是 Microsoft Office SharePoint Server 2007 的一部分,提供了强大的协作和内容管理功能。然而,随着技术的发展和业务的增长,许多组织开始迁移到 Moss 2010...
它是为编写的,用于处理Python作业提交中的相似性。 它是使用及其方言。安装pip install mosspy用法 import mosspyuserid = 987654321m = mosspy . Moss ( userid , "python" )m . addBaseFile ( "submission/...
||苔藓翻译Moss是一种动态编程语言。它的解释器内核是用Rust编写的。从Rust调用Moss代码的示例: use moss :: object :: Object;fn main () { let i = moss :: Interpreter :: new (); i.rte. set ( "a" ,Object :: ...
1. **使用SharePoint XSDs**:MOSS2007 SDK提供了预定义的XSD(XML Schema Definitions),以供开发者验证SharePoint XML文件,确保其正确性。 2. **调试**:在调试过程中,可以附加到w3wp.exe进程来调试Web应用...
3. **MOSS Search容量规划建议:** - 索引服务器所需存储:根据预期的索引大小计算所需的存储空间。 - 查询服务器所需存储:考虑查询结果缓存等因素,估算查询服务器的存储需求。 此外,文档还提供了有关硬件配置...
它为用户提供了强大的功能,以便更有效地探索和操作MOSS中的数据。CamlViewer2007是该工具的一个组件,用于查看和编辑CAML(Collaborative Application Markup Language)查询,这是在SharePoint中进行复杂数据检索...
标题中的“moss中使用第三方邮箱解决方案”指的是在Microsoft Office SharePoint Server (MOSS)中集成非微软提供的电子邮件系统,例如Google Workspace、Zimbra、Exchange Online等。MOSS作为一个企业级的内容管理和...
这是一个如何向提交中添加MOSS分析的示例: $submission = $assignment->submissions->add_program("project2program", "Project 2 Program"); $moss = $submission->add_analysis(new \CL\MOSS\MossAnalysis()); ...
4. MOSS是什么:MOSS 2007基于.NET Framework 3.0,其中包含的Windows Workflow Foundation(WWF)支持工作流的设计和实施。配置完成后,用户可以通过“SharePoint管理中心”创建并管理SharePoint站点。 5. 端口的...
1. **了解Webpart**:Webpart是MOSS中的可重用组件,可以显示数据、提供交互功能。 2. **创建Webpart**:使用Visual Studio创建新的SharePoint Webpart项目。 3. **设计界面**:利用ASP.NET控件构建Webpart界面。 4....
Step 3: 安装 SQL Server 组件 MOSS 2010 需要 SQL Server 来存储数据,因此需要安装 SQL Server 组件,包括: * SP1 * CU1 Step 4: 安装 SharePoint 2010 必备软件 在安装 MOSS 2010 之前,需要安装必备软件,...
在节点链接图中可视化 如何使用 只需打开index.html即可看到可视化效果。 它将打开一个示例数据文件Moss Results.html ,可以直接从网站保存该文件。 可视化 此标准节点链接图是使用实现的。 每个节点都是一个带有其...
下面我们将深入探讨如何在MOSS中实现图片的自动上传,以及这一过程涉及的关键知识点。 1. **Web服务接口**: MOSS 提供了一系列 Web 服务接口,如 SharePoint Web Services,使得开发者可以通过编程方式与 MOSS ...
苔藓地区 处理翻译、格式和内容的基本工具。 语言环境 处理语言环境名称、时区和货币子单位的类。 $ locale = new Locale ( 'en_GB' , 'UTC' , 100 ); echo $ locale -> locale (); // will print "en_GB" ...
- **工作流**:MOSS 2007 支持多种工作流类型,可以帮助自动化业务流程,提高效率。 - **Excel Services**:允许用户在 Web 上查看和交互 Excel 工作表,无需安装 Excel 客户端。 - **Form Services**:用于创建和...
2. **Web部件开发**:MOSS支持自定义Web部件的创建,这使得我们可以根据业务需求构建功能丰富的用户界面元素。学习如何使用Visual Studio创建、调试和部署Web部件是开发中的关键技能。 3. **事件处理程序**:在...
Matlab代码verilog 描述 Ruby gem将文件提交到。 这是叉子! 归功于谁曾在美国从事宝石开发工作。...迄今为止,Moss的主要应用一直是在编程类中检测抄袭。 自1994年成立以来,Moss在这一角色上一直非常有效。 m