`

MOSS点滴(2):自定义Application Page

阅读更多

在MOSS中后台管理的页面都是Application Page,比如网站设置的页面(settings.aspx)就是典型的Application Page,它不能被Sharepoint Desiger定制。如果我们要修改只能手动的使用其他工具来修改,我们也可以添加Application Page,必须放在C:\Program Files\Common Files\Microsoft Shared\web server extensions\12\TEMPLATE\LAYOUTS目录下,它对应的虚拟路径为_layouts。所有的Application Page都使用application.master这个母版页,我们自定义的Application Page也是一样,可以使用内嵌代码也可以使用后置代码。自定义的application page继承自LayoutsPageBase类,下面我们就来做两个自定义的Application Page,下面是项目的结构:

1

Feature.xml中代码如下:
<?xml version="1.0" encoding="utf-8" ?>
<Feature Id="86689158-7048-4421-AD21-E0DEF0D67C81"
   Title="自定义ApplicationPage"
   Description="使用SPTreeViw演示自定义ApplicationPage"
   Version="1.0.0.0"
   Scope="Web"
   Hidden="FALSE"        
   ImageUrl="TPG\PithHelmet.gif"        
   xmlns="http://schemas.microsoft.com/sharepoint/">
<ElementManifests>
<ElementManifest Location="elements.xml" />
</ElementManifests>
</Feature>

ApplicationPage1.aspx和ApplicationPage2.aspx就是我们自定义的Application Page,ApplicationPage1.aspx演示的是在一个列表库的列表项的编辑菜单里出现一个链接,统计该列表的信息,如下图:

2

要添加此菜单须在Elements.xml中填加如下代码:

<!-- 出现在控件的编辑项中-->
<CustomAction Id="CustomApplicationPage1"
RegistrationType
="List"
RegistrationId
="101"
ImageUrl
="/_layouts/images/GORTL.GIF"
Location
="EditControlBlock"
Sequence
="240"
Title
="此文档库信息" >
<UrlAction Url="~site/_layouts/CustomApplicationPages/ApplicationPage1.aspx?ItemId={ItemId}&amp;ListId={ListId}"/>
</CustomAction>


RegistrationType="List":代表注册的类型是列表.
Location="EditControlBlock":代表菜单将出现在控件编辑项当中.
UrlAction 是它的链接,URL中的ItemId 和ListId是通过 QueryString得到的。


ApplicationPage1.cs中代码如下:

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace CustomApplicationPages 
{
  
public class ApplicationPage1 : LayoutsPageBase 
 {
    
protected Label lblSiteTitle;
    
protected Label lblSiteID;
    
protected Label lblSiteUrl;
    
protected Label lblListID;
    
protected Label lblListTile;
    
protected Label lblRootFolderUrl;
    
protected Label lblDocumentID;
    
protected Label lblDocumentName;
    
protected Label lblDocumentUrl;
    
protected Label lblDocumentTemplateUrl;
    
protected Label lblFileAuthor;
    
protected Label lblFileSize;
    
protected Label lblFileLastModified;
    
protected Label lblFileCheckOutStatus;

    
protected override void OnLoad(EventArgs e) 
   {
      SPSite siteCollection = this.Site;
      SPWeb site 
= this.Web;
      lblSiteTitle.Text 
= site.Title;
      lblSiteUrl.Text 
= site.Url.ToLower();      
      
string ListId = Request.QueryString["ListId"];
      lblListID.Text 
= ListId;
      SPList list 
= site.Lists[new Guid(ListId)];
      lblListTile.Text 
= list.Title;
      lblRootFolderUrl.Text 
= list.RootFolder.Url;      
      
string ItemId = Request.QueryString["ItemId"];
      lblDocumentID.Text 
= ItemId;
      SPListItem item 
= list.Items.GetItemById(Convert.ToInt32(ItemId));
      lblDocumentName.Text 
= item.Name;
      lblDocumentUrl.Text 
= item.Url;

      
if (list is SPDocumentLibrary)
    {
        SPDocumentLibrary documentLibrary 
= (SPDocumentLibrary)list;
        lblDocumentTemplateUrl.Text 
= documentLibrary.DocumentTemplateUrl;

        SPFile file 
= site.GetFile(item.Url);
        lblFileAuthor.Text 
= file.Author.Name;
        lblFileSize.Text 
= file.TotalLength.ToString("0,###"+ " bits";
        lblFileLastModified.Text 
= "By " + file.ModifiedBy.Name +
                                   
" on " + file.TimeLastModified.ToLocalTime().ToString();
        lblFileCheckOutStatus.Text 
= file.CheckOutStatus.ToString();
      }
    }
    
  }
}


结果如下图:

3

ApplicationPage2.aspx中我们使用控件SPTreeView来显示该站点的文件夹结构,我们将菜单添加到“网站操作“中,并且设置只有管理员权限才可以看到,如下图:

4

Elements.xml中填加如下代码:

<!-- 有管理员权限才可以察看 -->
<CustomAction Id="CustomApplicationPage2"
GroupId
="SiteActions"
Location
="Microsoft.SharePoint.StandardMenu"
Sequence
="2006"
Title
="获取站点信息"
Description
="使用SPTreeView获取站点信息"
RequireSiteAdministrator
="True">
<UrlAction Url="~site/_layouts/CustomApplicationPages/ApplicationPage2.aspx"/>
</CustomAction>


RequireSiteAdministrator="True":改属性说明该项操作只有拥有管理员权限的用户才可以操作

ApplicationPage2.cs中代码如下:

using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

namespace CustomApplicationPages
{
  
public class ApplicationPage2 : LayoutsPageBase 
  {    
    
protected SPTreeView treeSitesFiles;
    
const string siteImg = @"\_layouts\images\FPWEB16.GIF";
    
const string foloerImg = @"\_layouts\images\FOLDER16.GIF";
    
const string ghostedFileImg = @"\_layouts\images\NEWDOC.GIF";
    
const string unGhostedFileImg = @"\_layouts\images\RAT16.GIF";

    
protected override void OnLoad(EventArgs e)
    {
      SPWeb site 
= SPContext.Current.Web;
      SPFolder rootFolder 
= site.RootFolder;
      TreeNode rootNode 
= new TreeNode(site.Url, site.Url, siteImg);
      LoadFolderNodes(rootFolder, rootNode);
      treeSitesFiles.Nodes.Add(rootNode);
      treeSitesFiles.ExpandDepth 
= 1;
    }

    
protected void LoadFolderNodes(SPFolder folder, TreeNode folderNode)
    {
      
foreach (SPFolder childFolder in folder.SubFolders) 
      {
        TreeNode childFolderNode 
= new TreeNode(childFolder.Name, childFolder.Name, foloerImg);
        childFolderNode.NavigateUrl 
= Site.MakeFullUrl(childFolder.Url);
        LoadFolderNodes(childFolder, childFolderNode);        
        folderNode.ChildNodes.Add(childFolderNode);
      }

      
foreach (SPFile file in folder.Files) 
      {
        TreeNode fileNode;
        
if (file.CustomizedPageStatus == SPCustomizedPageStatus.Uncustomized) 
        {
            fileNode 
= new TreeNode(file.Name, file.Name, ghostedFileImg);          
        }
        
else 
        {
            fileNode 
= new TreeNode(file.Name, file.Name, unGhostedFileImg);
        }
        fileNode.NavigateUrl 
= Site.MakeFullUrl(file.Url);
        folderNode.ChildNodes.Add(fileNode);
      }
    } 
  }
}


效果如下图:

5

如何调试:
1.修改当前web应用程序的配置文件如下:
<configuration>
  
<SharePoint>
    
<SafeMode CallStack="true" />
   
</SharePoint>
  
<system.web>
    
<customErrors mode="Off" />
    
<compilation debug="true" />
  
</system.web>
</configuration>
2.然后附加w3wp进程,设置断点即可调试了。
分享到:
评论

相关推荐

    moss 自定义web控件流程

    ### MOSS自定义Web控件流程详解 #### 一、前言 Microsoft Office SharePoint Server (MOSS) 2007 是一个强大的企业级协作平台,它提供了多种方式来扩展和定制其功能。其中,自定义Web控件是实现个性化需求的一种...

    MOSS2010列表添加自定义下拉菜单

    在Microsoft Office SharePoint Server (MOSS) 2010中,为列表添加自定义下拉菜单是提升用户体验和数据管理效率的重要方式。下拉菜单可以让用户在预设的选项中选择,避免输入错误,同时也使得界面更为简洁。下面将...

    Moss 自定义左侧导航

    在SharePoint 2007,也称为Microsoft Office SharePoint Server (MOSS)中,自定义左侧导航是一项重要的功能,它允许用户根据需求调整网站结构,提高用户体验和工作效率。本实例聚焦于如何在Moss环境中创建和修改左侧...

    moss自定义登陆页面(技術文檔)

    在Microsoft SharePoint 2007 (Moss) 中,自定义登录页面对于提供更好的用户体验和品牌形象至关重要,尤其是在对外服务或客户导向的站点中。默认情况下,SharePoint 2007 使用的表单认证登录页面可能显得单调乏味。...

    moss 自定义内容类型

    在Microsoft Office SharePoint Server (MOSS) 中,自定义内容类型是一种强大的功能,它允许用户根据自己的业务需求创建和管理特定类型的列表项或文档库条目。这个功能极大地扩展了SharePoint的基础功能,使得用户...

    Moss+自定义Feature

    【Moss+自定义Feature】是指在微软的MOSS(Microsoft Office SharePoint Server)平台上通过创建和部署自定义Feature来扩展和定制系统功能的一种技术。Feature是MOSS中一个核心的概念,它允许开发者打包并部署一系列...

    moss.py:Moss的Python客户端

    moss.py 的Python客户端:用于检测软件相似性的系统介绍它是客户端的Python接口。 它是为编写的,用于处理Python作业提交中的相似性。 它是使用及其方言。安装pip install mosspy用法 import mosspyuserid = ...

    moss2007 利用vs开发自定义workflow相关页面

    在本文中,我们将深入探讨如何利用Visual Studio 2008在Microsoft Office SharePoint Server (MOSS) 2007环境中开发自定义Workflow相关的页面。MOSS 2007是一个强大的企业级协作平台,而Workflow是其核心功能之一,...

    moss:Moss解释器(实验实现)

    ||苔藓翻译Moss是一种动态编程语言。它的解释器内核是用Rust编写的。从Rust调用Moss代码的示例: use moss :: object :: Object;fn main () { let i = moss :: Interpreter :: new (); i.rte. set ( "a" ,Object :: ...

    MOSS开发常用集锦

    2. **Web部件开发**:MOSS支持自定义Web部件的创建,这使得我们可以根据业务需求构建功能丰富的用户界面元素。学习如何使用Visual Studio创建、调试和部署Web部件是开发中的关键技能。 3. **事件处理程序**:在...

    Matlab代码verilog-moss-cl:MOSS对CourseLib的支持

    MOSS提交分析组件 此组件支持将课程库系统的提交发送到MOSS(软件相似性度量)系统,以检测不当复制。 有关使用cl / moss组件的更多详细信息,请参见。 MOSS组件取决于分类/课程,并向提交系统添加功能。 安装: ...

    moss-locale:moss 框架的翻译模块

    苔藓地区 处理翻译、格式和内容的基本工具。 语言环境 处理语言环境名称、时区和货币子单位的类。 $ locale = new Locale ( 'en_GB' , 'UTC' , 100 ); echo $ locale -&gt; locale (); // will print "en_GB" ...

    MOSS QueryTool

    CamlViewer2007是该工具的一个组件,用于查看和编辑CAML(Collaborative Application Markup Language)查询,这是在SharePoint中进行复杂数据检索的关键技术。 **CAML查询语言** CAML是XML格式的语言,用于构建...

    MOSS+K2数据迁移

    2. **环境安装**:在目标系统上安装必要的软件和服务,如 SQL Server 2005、.NET Framework 3.0、MOSS 2007 和 K2 blackpearl。 3. **数据备份**:对 MOSS 和 K2 的现有环境进行数据备份,包括网站资源备份和数据库...

    MOSS 2007部署过程完整版 pdf

    2. **安装SQL Server**:作为MOSS的后端数据库,负责存储所有内容和服务数据。 3. **安装WSS 3.0**:作为MOSS的基础,先安装Windows SharePoint Services 3.0,提供基本的SharePoint功能。 4. **安装MOSS 2007**:...

    自定义MOSS服务,启动流程

    在IT行业中,特别是SharePoint平台的应用开发中,创建自定义MOSS(Microsoft Office SharePoint Server)服务是一项关键任务,它能够极大地扩展SharePoint的功能并满足特定业务需求。标题“自定义MOSS服务,启动流程...

    MOSS2007之开发概述

    2. **自定义Web部件**:使用Visual Studio来编写事件处理器、自定义工作流、创建自定义Web服务、编写自定义Web部件和BDC元数据。 3. **列表和功能的创建**:创建包含列表定义的功能、使用WSS UI创建自定义列表、...

    Matlab代码verilog-moss_ruby:Rubygem将文件提交到MOSS

    但是,在使用示例的指定user_id的情况下,您可以毫无问题地访问MOSS服务器(MOSS对每个人都是公开的,但并非总是如此,也许这个要求实际上并不是更多要求)。 什么是苔藓? Moss(用于度量软件相似性)是一种用于...

Global site tag (gtag.js) - Google Analytics