人无信不立/2008-04-26 22:30

永春阁

专注于技术,切不可沉湎于技术

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  213 Posts :: 20 Stories :: 1051 Comments :: 64 Trackbacks
在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

posted on 2008-04-09 19:53 永春 阅读(1880) 评论(15)  编辑 收藏 所属分类: SharePoint

Feedback

#1楼  2008-04-10 08:31 李战      
偷问一下,MOSS是啥?
  回复  引用  查看    

#2楼 [楼主] 2008-04-10 08:52 永春      
@李战
-_-
MOSS是Microsoft Office Sharepoint Server,功能很强大的一个服务器端产品
  回复  引用  查看    

#3楼  2008-04-10 08:57 fish lee [未注册用户]
支持!希望楼主继续下去。不知道是否也有WSS SDK的学习笔记呢?
  回复  引用  查看    

#4楼 [楼主] 2008-04-10 09:03 永春      
@fish lee
其实我这边的很多例子在WSS中都是可以使用的
在MOSS中是肯定可以使用WSS SDK的
  回复  引用  查看    

#5楼  2008-04-10 09:10 生鱼片      
WSS的SDK讲object module多一点
  回复  引用  查看    

#6楼  2008-04-10 15:35 刘任林 [未注册用户]
你能不能给我一个有太阳的QQ吗

  回复  引用  查看    

不错!
  回复  引用  查看    

#8楼  2008-04-11 13:14 PENGYQ      
要向楼主学习!
  回复  引用  查看    

#9楼  2008-04-13 10:32 dsss [未注册用户]
好文,一直在做Moss的配置,开发上的资料太少,楼主继续努力
  回复  引用  查看    

#10楼  2008-04-14 09:28 CJK674      
我想知道WSS或者MOSS里面能不能想办法看到一些源代码??
  回复  引用  查看    

#11楼 [楼主] 2008-04-14 09:39 永春      
@CJK674
好像不能,不过你可以反编译microsoft.sharepoint.dll
  回复  引用  查看    

#12楼  2008-04-14 09:46 CJK674      
是这样的,我们公司的SHAREPOINT是来自国外的一个服务商提供的,因为国外访问速度不是太好,我打算把里面的数据移植到自己的服务器上面,另外我看到上面有一些功能很不错,我很想去看看方法和源代码,如果只有DLL了,有方法用也是可以的,你哪个microsoft.sharepoint.dll 可以给我一份吗,我用的是VS2005

chenjink674@gmail.com
  回复  引用  查看    

#13楼 [楼主] 2008-04-14 10:05 永春      
@CJK674
microsoft.sharepoint.dll 是在安装sharepoint的时候自带的
你如果想在自己的服务器上配置的话,肯定是需要安装sharepoint的。
另外:如果那个网站上面的功能是他们自己开发的wepart等,你在本地是不能用的,除非他们给你提供webpart
  回复  引用  查看    

#14楼  2008-04-14 10:09 CJK674      
呵呵,我很想尝试下在本地安装SHAREPOINT,不过最新的2007版是需要FRAMEWORK3.X的,并且也是需要服务器版的系统,而我的XP则没办法玩这个,本想借此好文好好发挥一下 MOSS的强劲功能的,如果要开发它 还真不知道从那儿开始
  回复  引用  查看    

#15楼 [楼主] 2008-04-14 10:16 永春      
@CJK674
呵呵,如果想开发MOSS,本地不装MOSS的话是不好运行的
  回复  引用  查看    


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
向地震灾区捐赠爱心