转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/

对CSOM(Not SSOM) Site Policy & Expiration Email的API的调用过程进行封装,做成tool,界面如下:

代码如下:

using System;
using System.Windows.Forms;
using Microsoft.SharePoint.Client;
using Microsoft.SharePoint.Client.InformationPolicy; namespace CSOMForm
{
public partial class MainForm : System.Windows.Forms.Form
{
public MainForm()
{
InitializeComponent();
} private void start_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
//Get all the site policies and add them into the combox.
var projectPolicies = GetAllSitePolicies(context, web);
try
{
sitePolicies_comboBox.Items.Clear();
foreach (ProjectPolicy projectPolicy in projectPolicies)
{
sitePolicies_comboBox.Items.Add(projectPolicy.Name);
}
}
catch (Exception ex)
{
returnDisplay_richTextBox.AppendText(ex.ToString() + System.Environment.NewLine);
}
}
} //Get all site policies from the server.
private ClientObjectList<ProjectPolicy> GetAllSitePolicies(ClientContext context, Web web)
{
//API test GetProjectPolicies.
var projectPolicies = ProjectPolicy.GetProjectPolicies(context, web);
context.Load(projectPolicies);
context.ExecuteQuery();
return projectPolicies;
} //The method to get the current applied site policy from the server.
private ProjectPolicy GetCurrentAppliedSitePolicy(ClientContext context, Web web)
{
//API test GetCurrentlyAppliedProjectPolicyOnWeb.
ProjectPolicy policy = ProjectPolicy.GetCurrentlyAppliedProjectPolicyOnWeb(context, web);
context.Load(policy,
p => p.Name,
p => p.Description,
p => p.EmailSubject,
p => p.EmailBody,
p => p.EmailBodyWithTeamMailbox);
context.ExecuteQuery();
return policy;
} //Apply the policy selected to the site.
private void ApplyProjectPolicy_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
try
{
var policies = GetAllSitePolicies(context, web);
ProjectPolicy selectedPolicy = null;
foreach (ProjectPolicy policy in policies)
{
if (policy.Name == sitePolicies_comboBox.Text)
{
selectedPolicy = policy;
}
}
//API test ApplyProjectPolicy.
ProjectPolicy.ApplyProjectPolicy(context, web, selectedPolicy);
returnDisplay_richTextBox.Text = "The policy we selected has been applied to the site. The current policy applied is:" + System.Environment.NewLine;
//API test GetCurrentAppliedSitePolicy.
ProjectPolicy AppliedPolicy = GetCurrentAppliedSitePolicy(context, web);
context.Load(AppliedPolicy);
context.ExecuteQuery();
//API test Name.
returnDisplay_richTextBox.AppendText(AppliedPolicy.Name.ToString() + System.Environment.NewLine);
//API test Description.
returnDisplay_richTextBox.AppendText(AppliedPolicy.Description.ToString() + System.Environment.NewLine);
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = "You may not have a project policy yet. Please check it." + System.Environment.NewLine;
returnDisplay_richTextBox.AppendText(ex.ToString());
}
}
} /*
Close the site.
The site must have a policy applied and the site is open.
*/
private void closeProject_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
//Close the site.
try
{
//API test CloseProject.
ProjectPolicy.CloseProject(context, web);
//API test IsProjectClosed.
returnDisplay_richTextBox.Text = "The site's project is now closed: ";
var ifClosed = ProjectPolicy.IsProjectClosed(context, web);
context.ExecuteQuery();
returnDisplay_richTextBox.AppendText(ifClosed.Value.ToString() + System.Environment.NewLine);
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
}
}
} private void doesProjectHavePolicy_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
try
{
//API test DoesProjectHavePolicy.
ClientResult<bool> result = ProjectPolicy.DoesProjectHavePolicy(context, web);
context.ExecuteQuery();
returnDisplay_richTextBox.Text = "DoesProjectHavePolicy: ";
returnDisplay_richTextBox.AppendText(result.Value.ToString());
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
}
}
} private void openProject_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
//Open the site.
try
{
//API test OpenProject.
ProjectPolicy.OpenProject(context, web);
//API test IsProjectClosed.
returnDisplay_richTextBox.Text = "The site's project is now closed: ";
var ifOpen = ProjectPolicy.IsProjectClosed(context, web);
context.ExecuteQuery();
returnDisplay_richTextBox.AppendText(ifOpen.Value.ToString() + System.Environment.NewLine);
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
}
}
} private void getProjectCloseDate_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
try
{
//API test GetProjectCloseDate.
returnDisplay_richTextBox.Text = "The project's close date is: ";
var projectCloseDate = ProjectPolicy.GetProjectCloseDate(context, web);
context.ExecuteQuery();
returnDisplay_richTextBox.AppendText(projectCloseDate.Value.ToString() + System.Environment.NewLine);
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
}
}
} private void getProjectExpirationDate_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
try
{
//API test GetProjectExpirationDate.
returnDisplay_richTextBox.Text = "The project's expiration date is: ";
var projectExpireDate = ProjectPolicy.GetProjectExpirationDate(context, web);
context.ExecuteQuery();
returnDisplay_richTextBox.AppendText(projectExpireDate.Value.ToString() + System.Environment.NewLine);
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
}
}
} private void postponeProject_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
try
{
//API test PostponeProject.
ProjectPolicy.PostponeProject(context, web);
context.ExecuteQuery();
returnDisplay_richTextBox.Text = "The project has been postponed.";
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
}
}
} /*
You should select a policy first.
*/
private void setEmailSubject_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
try
{
//API test set EmailSubject.
var policies = GetAllSitePolicies(context, web);
ProjectPolicy selectedPolicy = null;
foreach (ProjectPolicy policy in policies)
{
if (policy.Name == sitePolicies_comboBox.Text)
{
selectedPolicy = policy;
}
}
selectedPolicy.EmailSubject = emailSubject_textBox.Text;
selectedPolicy.SavePolicy();
context.ExecuteQuery();
context.Load(selectedPolicy,p => p.EmailSubject);
context.ExecuteQuery();
returnDisplay_richTextBox.Text = "The selected project's EmailSubject is now: " + selectedPolicy.EmailSubject.ToString();
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
}
}
} /*
You should select a policy first.
*/
private void setEmailBody_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
try
{
//API test set EmailBody.
var policies = GetAllSitePolicies(context, web);
ProjectPolicy selectedPolicy = null;
foreach (ProjectPolicy policy in policies)
{
if (policy.Name == sitePolicies_comboBox.Text)
{
selectedPolicy = policy;
}
}
selectedPolicy.EmailBody = emailBody_richTextBox.Text;
selectedPolicy.SavePolicy();
context.ExecuteQuery();
context.Load(selectedPolicy, p => p.EmailBody);
context.ExecuteQuery();
returnDisplay_richTextBox.Text = "The selected project's EmailBody is now: " + selectedPolicy.EmailBody.ToString();
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
}
}
} /*
You should select a policy first.
*/
private void setEmailBodyWithTeamMailbox_button_Click(object sender, EventArgs e)
{
using (ClientContext context = new ClientContext(scUrl_textBox.Text))
{
Site site = context.Site;
Web web = site.OpenWeb(relative_siteUrl_textBox.Text);
try
{
//API test set EmailBodyWithTeamMailbox.
var policies = GetAllSitePolicies(context, web);
ProjectPolicy selectedPolicy = null;
foreach (ProjectPolicy policy in policies)
{
if (policy.Name == sitePolicies_comboBox.Text)
{
selectedPolicy = policy;
}
}
selectedPolicy.EmailBodyWithTeamMailbox = emailBodyWithTeamMailbox_richTextBox.Text;
selectedPolicy.SavePolicy();
context.ExecuteQuery();
context.Load(selectedPolicy, p => p.EmailBodyWithTeamMailbox);
context.ExecuteQuery();
returnDisplay_richTextBox.Text = "The selected project's EmailBodyWithTeamMailbox is now: " + selectedPolicy.EmailBodyWithTeamMailbox.ToString();
}
catch (Exception ex)
{
returnDisplay_richTextBox.Text = ex.ToString() + System.Environment.NewLine;
}
}
}
}
}

SharePoint API测试系列——Manage SharePoint Site Policy & Expiration Email with CSOM API的更多相关文章

  1. SharePoint API测试系列——Records.BypassLocks测试

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对于SharePoint中已经是Record的Item,我们想要修改他的属性,这在UI界面是无法完 ...

  2. SharePoint API测试系列——对Recorded Item做OM操作(委托的妙用)

    转载请注明出自天外归云的博客园:http://www.cnblogs.com/LanTianYou/ 对Recorded Item动态调用OM Methods进行测试,界面如下: 输入Site的URL ...

  3. 初学者的API测试技巧

    API(应用程序编程接口)测试是一种直接在API级别执行验证的软件测试.它是集成测试的一部分,它确认API是否满足测试人员对功能.可靠性.性能和安全性的期望.与UI测试不同,API测试是在没有GUI层 ...

  4. SharePoint 2010 PowerShell 系列 之 备份、还原、部署 .WSP

    转:http://www.cnblogs.com/Fengger/archive/2012/08/24/2654093.html PowerShell系列目录 最近在部署测试环境,就顺便把PowerS ...

  5. [转载]SharePoint 2013测试环境安装配置指南

    软件版本 Windows Server 2012 标准版 SQL Server 2012 标准版 SharePoint Server 2013 企业版 Office Web Apps 2013 备注: ...

  6. 系列文章--SharePoint 2013 Designer 入门教程

    SharePoint的使用中,SharePoint Designer是非常重要的工具,我们可以通过Designer设计页面.母版页,维护.管理站点,也可以定制列表表单.数据视图,设计工作流等等.下面总 ...

  7. 实战:ADFS3.0单点登录系列-集成SharePoint

    这是本系列第四篇了,终于轮到SharePoint上场了,但是本文不会过多讲解SharePoint安装等话题,而是直入主题,讲解如何进行配置,让其于ADFS配合完成SSO的工作. 注意:本文使用的Sha ...

  8. ASP.NET Web API 2系列(三):查看WebAPI接口的详细说明及测试接口

    引言 前边两篇博客介绍了Web API的基本框架以及路由配置,这篇博客主要解决在前后端分离项目中,为前端人员提供详细接口说明的问题,主要是通过修改WebApi HelpPage相关代码和添加WebAp ...

  9. 自动化测试系列(二)|API测试

    在上次的自动化测试系列(一)中为大家大体介绍了自动化测试的概念,本文主要针对API测试的概念及API测试在猪齿鱼Choerodon中的实践展开. API(应用程序编程接口)测试是一种软件测试,可以直接 ...

随机推荐

  1. Java基础1-反射篇

    1.页首请关注 思维导航大纲 2.大牛文章学习: 序号 博主 主要内容 1  sinat_38259539 总结的较全面的反射内容 2     3.自己的理解: 3.1.本文大纲 3.2.正文 1.获 ...

  2. 细说HTML元素的隐藏和显示

    CSS文档对HTML的显示和隐藏有2个属性可供选择: 1.display 2.visiblity 这2个有什么区别呢? display: display版本:CSS1/CSS2 兼容性:IE4+ NS ...

  3. Content-Length实体的大小

    •15.2 Content-Length实体的大小 Content-Length首部指出了报文中实体主体的字节大小,这个大小包含了所有内容的编码,如对文本进行gzip压缩的话,那么Content-Le ...

  4. 媒体类型(MIME类型)

    # encoding=utf-8 #python 2.7.10 #xiaodeng #HTTP权威指南 #HTTP协议:超文本传输协议是在万维网上进行通信时所使用的协议方案. #媒体类型: #HTTP ...

  5. 如何在MyEclipse中将项目部署Tomcat

    如果系统里面还没有配置Tomcat,请参照<Windows下如何配置tomcat环境变量>. 1.新建一个web project项目.如下: 效果如下: 2.编写一个实现Servlet接口 ...

  6. eclipse下使用cygwin的方法(Windows下用eclipse玩gcc/g++和gdb)

    明天就回国了,今晚回国前写写如何配置eclipse和CDT.这个配置方法网上讨论不是很多,可能用的人少,毕竟Windows上写C++程序多数喜欢VS,即使写的是Linux程序,很多人仍然会用VS(说只 ...

  7. RabbitMQ消息队列生产者和消费者

    概述 生产者生产数据至 RabbitMQ 队列,消费者消费 RabbitMQ 队列里的数据. 详细 代码下载:http://www.demodashi.com/demo/10723.html 一.准备 ...

  8. iOS- 快速实现展示布局

    概述 比较有规律的页面, 快速实现展示布局, 提高开发效率. 详细 代码下载:http://www.demodashi.com/demo/10713.html 看到这个界面,是不是觉得不像那种比较有规 ...

  9. Linux(CentOS)的server安装及配置图解(图文)

    CentOS,据说这个如今在server上装机量非常大. 安装的分区划分 watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdXBpMnU=/font/5a6L ...

  10. awk打印倒数第2列

    cat 1-iplist.txt | awk '{ print $(NF-2) }'|wc 实际示例: 打印nginx日志中 变量request_time超过3秒的日志信息 [root@datalin ...