阅读文章

MOSS SDK学习(8):手工创建MOSS站点

[日期:2008-04-10] 来源:  作者: [字体: ]

    
  在MOSS的管理界面中我们可以很方便的创建一个网站,不过在有的情况下可能需要动态的、程序化的创建一个网站。本文就是演示在客户端使用WinForm来创建一个MOSS的网站,主要实现的功能有:
  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/的形式
  
  二、给新建网站分配一个超级管理员
  代码如下:
   //配置管理员
   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、首先打开新建的网站,把原有的用户都删除,然后加入一个用户;
  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:
  <Feature
   Id="4292625E-5811-47a4-9B88-58A206C53515"
  四、在主页上加入新建网站的链接
  创建好子网站之后肯定希望在主页上能够看到:
   //在主页加入链接
   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);
  
  附:
  演示界面如下:
  
  演示代码下载:http://www.cnblogs.com/Files/firstyi/MOSSClient8.rar
    


阅读:
录入:blue1000

评论 】 【 推荐 】 【 打印
上一篇:Silverlight图片公告栏正式版
下一篇:收发短信的选择:短信猫、企信通系统还是MAS...
相关文章      
本文评论
发表评论


点评: 字数
姓名:

  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款