在MOSS的管理界面中我们可以很方便的创建一个网站,不过在有的情况下可能需要动态的、程序化的创建一个网站。本文就是演示在客户端使用WinForm来创建一个MOSS的网站,主要实现的功能有:
1、使用特定的一个模板创建网站
2、给新建网站分配一个超级管理员
3、创建网站的同时激活某个feature
4、在主页上加入新建网站的链接
5、删除指定的网站
对于一些基本操作,如在Winform中连接到MOSS站点等,如果有不清楚的朋友可以看我此系列的前面几篇文章,我这里就不再列出了
一、使用特定的一个模板创建网站
在MOSS中创建模板比较简单:首先定制好一个站点,然后在网站管理中把它导出为模板就可以了。
创建一个指定模板的代码如下:
二、给新建网站分配一个超级管理员
代码如下:
2、取得"完全控制"的角色定义
3、把用户加入角色
4、把角色分配加入网站
三、创建网站的同时激活某个feature
feature是MOSS中很重要的一个功能,激活MOSS灵活定制的功能都需要用feature来实现,比如给菜单加入一个链接,加入一个事件(在 MOSS SDK学习(5) 中有提到),也可以把一个独立的模块做成一个feature,灵活动态的加载(我准备在下篇文章中说一下如何把独立模块做成feature,其实也比较简单)
这里的代码很简单,不过我google了半天才找到-_-
四、在主页上加入新建网站的链接
创建好子网站之后肯定希望在主页上能够看到:
五、删除指定的网站
这一步比较简单,直接删除就可以了
附:
演示界面如下:
1、使用特定的一个模板创建网站
2、给新建网站分配一个超级管理员
3、创建网站的同时激活某个feature
4、在主页上加入新建网站的链接
5、删除指定的网站
对于一些基本操作,如在Winform中连接到MOSS站点等,如果有不清楚的朋友可以看我此系列的前面几篇文章,我这里就不再列出了
一、使用特定的一个模板创建网站
在MOSS中创建模板比较简单:首先定制好一个站点,然后在网站管理中把它导出为模板就可以了。
创建一个指定模板的代码如下:
SPWeb mySite
=
_siteCollection.OpenWeb(
"
/
"
);
SPWebCollection subSites = mySite.Webs;
SPWebTemplate myWebTemplate = null ;
// 取得模板
// 取得系统模板 _siteCollection.GetWebTemplates(2052);
// 取得自定义的模板
foreach (SPWebTemplate webTemplate in _siteCollection.GetCustomWebTemplates( 2052 ))
{
if (webTemplate.Title == "测试")
{
myWebTemplate = webTemplate;
break;
}
}
string siteUrl = textBox1.Text.ToString(); // 相对路径,不包含 /
string siteTitle = textBox2.Text.ToString();
string siteDescription = textBox3.Text.ToString();
subSites.Add(siteUrl, siteTitle, siteDescription, 2052 ,
mySite.WebTemplate,
true , // true:使用单独的权限,不从父站点继承
false // false:当指定的目录存在时抱错
);
由于我们使用的是自定义模板,所以使用
GetCustomWebTemplates
方法,参数中的2052表示中文的模板,我们自定义模板的名称为"测试",其他要注意的地方可以看代码中的注释,特别是siteUrl参数只是一个站点的相对路径就可以了,不能包含 “/”, 不能写成
http://domain:800/aaa/
的形式
SPWebCollection subSites = mySite.Webs;
SPWebTemplate myWebTemplate = null ;
// 取得模板
// 取得系统模板 _siteCollection.GetWebTemplates(2052);
// 取得自定义的模板
foreach (SPWebTemplate webTemplate in _siteCollection.GetCustomWebTemplates( 2052 ))
{
if (webTemplate.Title == "测试")
{
myWebTemplate = webTemplate;
break;
}
}
string siteUrl = textBox1.Text.ToString(); // 相对路径,不包含 /
string siteTitle = textBox2.Text.ToString();
string siteDescription = textBox3.Text.ToString();
subSites.Add(siteUrl, siteTitle, siteDescription, 2052 ,
mySite.WebTemplate,
true , // true:使用单独的权限,不从父站点继承
false // false:当指定的目录存在时抱错
);
二、给新建网站分配一个超级管理员
代码如下:
//
配置管理员
SPWeb newSite = _siteCollection.OpenWeb( " / " + textBox1.Text + " / " );
SPUserCollection users = newSite.AllUsers;
for ( int i = 0 ; i < users.Count; i ++ )
{
users.Remove(i);
}
users.Add( " domain\\username " , "" , "" , "" );
// 给用户赋予权限
SPRoleDefinitionCollection roles = newSite.RoleDefinitions;
SPRoleDefinition role = roles[ " 完全控制 " ];
SPUser user = users[ " domain\\username " ];
SPRoleAssignment raUser = new SPRoleAssignment(user);
raUser.RoleDefinitionBindings.Add(role);
newSite.RoleAssignments.Add(raUser);
1、首先打开新建的网站,把原有的用户都删除,然后加入一个用户;
SPWeb newSite = _siteCollection.OpenWeb( " / " + textBox1.Text + " / " );
SPUserCollection users = newSite.AllUsers;
for ( int i = 0 ; i < users.Count; i ++ )
{
users.Remove(i);
}
users.Add( " domain\\username " , "" , "" , "" );
// 给用户赋予权限
SPRoleDefinitionCollection roles = newSite.RoleDefinitions;
SPRoleDefinition role = roles[ " 完全控制 " ];
SPUser user = users[ " domain\\username " ];
SPRoleAssignment raUser = new SPRoleAssignment(user);
raUser.RoleDefinitionBindings.Add(role);
newSite.RoleAssignments.Add(raUser);
2、取得"完全控制"的角色定义
3、把用户加入角色
4、把角色分配加入网站
三、创建网站的同时激活某个feature
feature是MOSS中很重要的一个功能,激活MOSS灵活定制的功能都需要用feature来实现,比如给菜单加入一个链接,加入一个事件(在 MOSS SDK学习(5) 中有提到),也可以把一个独立的模块做成一个feature,灵活动态的加载(我准备在下篇文章中说一下如何把独立模块做成feature,其实也比较简单)
这里的代码很简单,不过我google了半天才找到-_-
//
激活某个Feature
newSite.Features.Add( new Guid( " 4292625E-5811-47a4-9B88-58A206C53515 " ));
这里的参数就是feature的ID:
newSite.Features.Add( new Guid( " 4292625E-5811-47a4-9B88-58A206C53515 " ));
<
Feature
Id ="4292625E-5811-47a4-9B88-58A206C53515"
Id ="4292625E-5811-47a4-9B88-58A206C53515"
四、在主页上加入新建网站的链接
创建好子网站之后肯定希望在主页上能够看到:
//
在主页加入链接
SPNavigationNodeCollection topNav = mySite.Navigation.TopNavigationBar;
topNav[ 0 ].Children.AddAsLast( new SPNavigationNode(textBox1.Text, " / " + textBox1.Text));
SPNavigationNodeCollection topNav = mySite.Navigation.TopNavigationBar;
topNav[ 0 ].Children.AddAsLast( new SPNavigationNode(textBox1.Text, " / " + textBox1.Text));
五、删除指定的网站
这一步比较简单,直接删除就可以了
SPWeb mySite
=
_siteCollection.OpenWeb(
"
/
"
);
SPWebCollection subSites = mySite.Webs;
subSites.Delete(textBox4.Text);
SPWebCollection subSites = mySite.Webs;
subSites.Delete(textBox4.Text);
附:
演示界面如下:
演示代码下载:http://files.cnblogs.com/firstyi/MOSSClient8.rar
本文转自永春博客园博客,原文链接:http://www.cnblogs.com/firstyi/archive/2008/04/09/1145628.html,如需转载请自行联系原作者