转载请注明出自天外归云的博客园: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. python学习笔记之基础数据和控制

    注释: 单行注释 # 多行注释'''    ''' 注意:当注释中有汉字时需要在python文件的第一行添加如下内容之一:#coding:gbk或#coding:utf-8或##-*- coding ...

  2. python 版websocket实现

    ubuntu下python2.76 windows python 2.79, chrome37 firefox35通过 代码是在别人(cddn有人提问)基础上改的, 主要改动了parsedata和se ...

  3. Spring mvc中@RequestMapping 6个基本用法小结

    Spring mvc中@RequestMapping 6个基本用法小结 小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: @RequestMa ...

  4. jQuery+PHP动态显示(项目)实时时间和倒计时

    jQuery动态显示当前时间:    html代码:<div id="current_time"></div> setInterval()使用:setInt ...

  5. 转:PHP关于反斜杠处理函数addslashes()和stripslashes()的用法

    1.php处理\函数:addslashes()和stripslashes()函数 addslashes():对输入字符串中的某些预定义字符前添加反斜杠,这样处理是为了数据库查询语句等的需要.这些预定义 ...

  6. Linux各主要发行版的包管理命令对照

    Linux各主要发行版的包管理命令对照 Debian使用的是apt和dpkg,Gentoo则用的是emerge,Redhat的yum.Suse的zypper.Arch的pacman.Slackware ...

  7. BasicAuth和OAuth

    参考资料 百度百科BasicAuth 维基百科OAuth BasicAuth基本授权 BasicAuth又叫HttpAuth,它非常简单.例如你访问一个页面时,会弹出用户名密码框 它的优点是:简单,只 ...

  8. 网站跳转到cgi-sys/defaultwebpage.cgi的原因和解决方式

    cpanel遇到这种问题,看了这篇文章老鹰主机域名解析A记录教程–关于cgi-sys/defaultwebpage.cgi后,尝试后     首先ping 域名,结果如下     看到没有ping结果 ...

  9. eclipse背景颜色调整参考(绿色养眼哟),其他工具也可以设置

    http://hi.baidu.com/630270730/blog/item/d64f64dcc05376385982ddf6.html 提示键配置.提示快捷键.提示背景色.关键字颜色.代码显示.编 ...

  10. socket 请求接收完整的一个http响应(设置recv 接收超时选项SO_RCVTIMEO)

    在前面的系列网络编程文章中,我们都是使用socket 自己实现客户端和服务器端来互相发数据测试,现在尝试使用socket 客户端发 送http 请求给某个网站,然后接收网站的响应数据.http 协议参 ...