2014年1月26日星期日

使用PowerShell / CSOM添加/删除和列出远程事件接收器

最近我’越来越多地关注远程事件接收器,因为如果您尝试构建远程事件接收器,那么它们很重要(并且在某些情况下是不可避免的)“cloud-friendly”SharePoint解决方案– either because you’重新安装Office 365,或者只是想敞开大门进行这种移动。您可能需要在主机Web或应用程序Web中使用RER。一世’将来很有可能会撰写更多有关RER的文章,但是如果您需要有关远程事件接收器的基本分步指南,我的上一篇文章 将SP2013提供程序托管的应用程序/远程事件接收器部署到Azure网站(用于Office 365应用程序) 可能有用。 在这篇文章中,我想为那些使用RER的人分享一些潜在有用的PowerShell(和背景信息)。

正如我在上一个链接的文章中所指出的那样,当您创建RER时,您实际上需要为SharePoint创建一个应用程序,即使它是要在宿主Web中使用的RER。该应用程序必须是提供商托管的或自动托管的。对于生产用途,我喜欢提供者托管的选项,即使代码已部署到Azure等云服务。与自动托管相比,这提供了更多的灵活性’t具有用于配置/监视/放大等的相同选项。需要一个应用程序,因为您正在创建远程代码,该代码很可能需要使用OAuth来与SharePoint通信,并且信任模型意味着(在标准情况下,至少)管理员(例如网站所有者)需要同意该应用所请求的权限。这可能是“Web – Read” or “Site Collection – FullControl” and so on.

注册远程事件接收器

注册RER的方法有几种:

  • 声明式地
  • 使用CSOM代码在AppInstalled事件中
  • 使用PowerShell / CSOM脚本

声明式方法的一大缺点是 它只能用于应用程序网络中的列表(即应用程序部署的SharePoint列表))。它不能用于宿主网站中的列表(例如,将RER添加到团队站点中的列表中)。为了完整起见,声明性XML如下所示– it’就像您可能用于其他任何事件接收器的XML一样,唯一的不同是“Url” element in the XML:

** N.B.这里有一个代码示例,但不会在RSS阅读器中显示- 点击这里查看全文 **

I’我发现越来越多的东西’在进行开发时,PowerShell方法非常有用。有时,您只需要直接与列表进行交互-可能要查看您的RER是否确实已正确注册,或者将URL更改为其他WCF服务以进行测试。由于没有用于设置RER的用户界面,因此一些快速的PowerShell是理想的–这篇文章是分享我的功能,以防他们’re useful. I’将列出用于添加/删除/列出RER的不同脚本,然后在最后提供完整/组合的脚本。

顺便说一句,如果你’对于其中嵌入了CSOM代码的PowerShell脚本的新概念,请参阅 在Office 365中的PowerShell脚本中使用CSOM.

添加一个新的远程事件接收器

下面的函数将远程事件接收器添加到命名的SharePoint列表中。

(N.B.请注意,以下所有功能都需要传入有效的ClientContext对象–有关更多详细信息,请参阅本文结尾处的“先决条件”部分。)

** N.B.这里有一个代码示例,但不会在RSS阅读器中显示- 点击这里查看全文 **

删除远程事件接收器

下面的功能从命名的SharePoint列表中删除远程事件接收器。

** N.B.这里有一个代码示例,但不会在RSS阅读器中显示- 点击这里查看全文 **

在SharePoint列表中列出远程事件接收器

实际上,RER声明就像常规事件接收器一样–SPList类只有一个“EventReceivers”财产,而不是为 远程 事件接收者和常规事件接收者:

** N.B.这里有一个代码示例,但不会在RSS阅读器中显示- 点击这里查看全文 **

组合/全部脚本

因此,分别浏览了这些功能之后,以下是用于下载/复制和粘贴的组合脚本:

** N.B.这里有一个代码示例,但不会在RSS阅读器中显示- 点击这里查看全文 **

先决条件

要开始使用这些脚本,您应该遵循“Getting Started” section of 在Office 365中的PowerShell脚本中使用CSOM, 包括“脚本顶部–引用DLL和身份验证” section.

上面的所有示例都需要您传递有效的ClientContext对象–一旦提供了凭据和URL,并通过了SharePoint / Office 365身份验证,就可以了。就像我以前的文章一样,我在一个单独的文件中获得了该文件,该文件称为TopOfScript_PSCSOM.ps1。为了清楚起见,这里’对您的需求有一个想法:

** N.B.这里有一个代码示例,但不会在RSS阅读器中显示- 点击这里查看全文 **

概要

希望该脚本对使用RER的人员有用。不使用PowerShell / CSOM’声明远程事件接收器的唯一方法–在生产环境中,您可以在AppInstalled事件中使用CSOM代码(事件本身在AppManifest.xml中以声明方式声明–唯一的方法),但是PowerShell / CSOM方法在开发人员中绝对有用。祝您编码愉快!

2014年1月6日,星期一

Extending the SP2013/Office 365 search 悬停面板 (e.g. adding “post to my feed” functionality)

增强的搜索体验是SharePoint 2013的一大优点,并且“hover panel”,当您将鼠标悬停在结果上时,它会显示有关结果的更多信息,这是其中的关键部分。能够浏览文档或演示文稿,或查看网页的预览 没有 点击结果可提高搜索效率。就像搜索结果本身一样,悬停面板的外观和功能可以通过HTML,CSS和JavaScript轻松扩展–在这篇文章中,我提供一些示例代码’我在会议演讲中使用过,我认为这很好地突出了这方面的内容。我的示例可以原样使用,也可以进行修改以向悬停面板提供其他自定义设置。

对于上下文,这里’s a reminder of what the 悬停面板 looks like:

Standard 悬停面板 2 
Actually 那 image shows a document preview *without* Office 网页Apps being available –仅显示该文档的简单摘要。可以说,更普通的体验是拥有OWA(例如,在Office 365中是标准操作),在这种情况下,您可以翻阅文档/演示文稿以查看是否’s what you’re looking for:

Standard 悬停面板 - OWA

大。所以现在让’s look 在 tweaking the 悬停面板 to add some 习俗 行为。

Customizing the 悬停面板 – adding an “action”

[次要转移/故事]: 2013年9月,Microsoft向Office 365添加了一些新功能,使用户可以“post to Yammer” from the search 悬停面板. The entry point is a new “action” in the bottom part of the 悬停面板:

O365 发布到Yammer

巧合的是,在几个月前的2013年4月,我进行了演示’d在伦敦的SharePoint Evolutions Conference上进行了非常相似的自定义,但就我而言,我的代码发布到了SharePoint 2013社交feed(即不是Yammer)。足够怪异的是,我什至选择了相同的词,“POST”:

Hover Panel 行动s - with guide - edges
看到Office 365的更改提醒我应该将此代码发布到某个地方–如果您的组织使用SharePoint新闻源而不是Yammer,则对您可能有用,或者您’re just generally looking for technical info on the 悬停面板.

[轻微改道/故事结束]

我的定制

我的代码修改了所有项目类型(例如网页,Word文档,Excel文档等)的悬停面板。如上所述,“POST”操作已添加到操作栏中。单击时,*悬停面板中会出现一个文本框,*允许用户键入要发布的消息(至伴随链接):

悬停面板 - before post to feed - large

[I’确保我工作场所的UX团队对此有话要说(非常糟糕!),但实际上我’m just trying to show 那 you can do 所有 sorts of things with the 悬停面板 :)]

我显示一个新按钮来做实际“Post” 在 this point. Once a message is typed and this button is clicked, an AJAX request is fired to the SharePoint social API, and a success or failure confirmation is displayed in the 悬停面板:

悬停面板 - after post to feed - small
和你一样’d期望,此消息现已广播给我的关注者(带有原始文档的链接),并列在我的个人资料的“活动”部分中:

社交Feed中显示的消息

Search 悬停面板 – key info

The 悬停面板 is broken down into three areas:

悬停面板-带有边缘的导轨 
所有这些东西都来自SharePoint搜索网站母版页画廊中的HTML / JavaScript文件。 – so to be clear, let’假设您有一个搜索中心网站,网址为“/search”(如在Office 365中),则可以在以下位置找到这些文件 现场’的母版页画廊。您’会在“显示模板/搜索” folder path:

搜索显示模板
首先你’上面会注意到,每个JavaScript文件都有一个HTML文件–对于启用了发布功能并因此Design Manager支持显示模板的任何站点都是如此。除此之外,还有三种文件类型:

  • “Item” display templates - for each item type, such as 项目_PDF.js, 项目_Word.js, 项目_Person.js and so on. Customize these if you wish to 调整如何特别 结果类型 查找搜索结果
  • “Hover panel” templates – again for each item type, such as 项目_PDF_HoverPanel.js and so on. Customize these to tweak the 悬停面板 (这就是我们’我会在这篇文章中做)
  • 的档案“misc”事物-例如最佳选择,搜索框控件等。

重要的是,以及“per item type”文件有一些“common” files –这些是可用于实现跨定制的钩子 所有 结果类型,而不必编辑每个文件。实际上,Microsoft在JavaScript中实现了一些伪继承,其中“common” and “specific” templates are used provide the UI for a 具体 item (nice work Product Group). For the 悬停面板, this works in the following way:

  • 每“specific” file provides some outer HTML which may be 具体 to 那 item type, but also calls functions called:
    • ctx.RenderHeader()
    • ctx.RenderBody()
    • ctx.RenderFooter()
  • 这些功能在“common” files

Effectively you could throw away the idea of calling the 共同 functions for a 具体 item type if you wanted, and provide an 完全 习俗 悬停面板 - usually you’ll want to keep the consistency though. The 共同 files are:

通用显示模板
It’s these files we’ll be modifying.

我的自定义代码

因此,我的示例添加了一些HTML / CSS,但也添加了一些自定义JavaScript代码–有效的运动部分是:

  • 一些新的CSS和JavaScript文件,需要在页面上进行引用
  • Some changes to the HTML/JS files in the Master Page Gallery which are used for the 悬停面板

这里’是我对哪个文件所做的更改的摘要:

文件

变更说明

项目_CommonHoverPanel_Actions.html 添加“POST” 行动 link which sits in the “actions” bar
项目_CommonHoverPanel_Body.html 添加核心定制–在其中输入要输入的注释的文本框和执行实际操作的按钮“Post”.

也有JavaScript呼叫我 习俗 处理功能的JavaScript函数。
COB-js-demos.js 包含我的自定义功能的自定义JavaScript文件,例如:
“ShowHoverPanelTextBox”
“PostToCurrentUserFeed”
等等

我使用CustomAction将其添加到页面中。

如您所见,我’m修改HTML文件并允许生成JS文件。在生产中,您可能希望将JS文件打包为WSP并覆盖OOTB文件(当然要保留原始文件的副本)。一世’ll提供指向所有末尾文件的zip文件的链接,但这是每个文件中的新代码:

项目_CommonHoverPanel_Actions.html
** N.B.这里有一个代码示例,但不会在RSS阅读器中显示- 点击这里查看全文 **
项目_CommonHoverPanel_Body.html
** N.B.这里有一个代码示例,但不会在RSS阅读器中显示- 点击这里查看全文 **
COB-js-demos.js
** N.B.这里有一个代码示例,但不会在RSS阅读器中显示- 点击这里查看全文 **

因此,总而言之,我们在页面上引用了自定义JS文件(例如,在母版页的ScriptLink,CustomAction或script标签中),并对悬停面板文件进行了更改。一世’m在下面的zip链接中提供构成我的解决方案的所有文件,但只是作为一组文件-您’ll need to package 如果他们将它们纳入WSP’所需的内容(并选择要将CSS / JS文件部署到的位置)。 

概要

搜索悬停面板是SharePoint 2013 / Office 365搜索体验的关键部分,其设计旨在进行自定义以满足不同的需求。可以在所有项目类型上实现新行为,也可以仅针对特定项目(例如Word文档或“person”结果。在此示例中,我不仅展示了如何调整HTML / CSS,还在悬停面板中提供了一些基于AJAX的自定义功能。我选择使用SharePoint社交订阅源,但是机制可以适应SharePoint通过REST / CSOM /其他客户端API公开的任何行为。

下载

COB.SharePoint.SearchHoverPanel-Files.zip