存档在 ‘SharePoint’ 分类

Sharepoint 2013下载链接百度网盘

2016年6月12日

Sharepoint 2013下载链接如下:

链接:http://pan.baidu.com/s/1gfjUpZt 密码:nthv

对于硬件配置较低的用户,至少需要2台服务器

A:安装windows 2008 R2(启用AD功能 + Office Web Apps

B:安装windows 2008 R2(加入上面的AD服务器域) + SharePoint Server 2013 + SQL Server 2014

对于土豪开发用户,可以安装4台服务器,分别是

A: AD服务器

B:SQL Server

C:SharePoint Server 2013

D:Office Web APP

包含整套开发环境需要的软件:

操作系统 windows 2008R2,硬件好的话建议装个Server 2012 or above

cn_windows_server_2008_r2_with_sp1_x64_dvd

SharePoint Server 2013 安装包

cn_sharepoint_server_2013_with_sp1_x64_dvd_3831969

SQL Server 2014安装包:

cn_sql_server_2014_enterprise_edition_x64_dvd_3932882

Office Web APPS服务器,用于在线预览Office 文档

Microsoft Office Web Apps Server EN-US wacserver

Microsoft Office Web Apps Server ZH-CN wacserver

传说Sharepoint是扩展很灵活的,支持上千上万名用户那是没有问题的,只要money 足够。

社会摇。。。

SharePoint REST 排序orderby使用的问题

2014年9月14日

参考在 SharePoint REST 请求中使用 OData 查询操作

http://msdn.microsoft.com/zh-cn/library/office/fp142385(v=office.15).aspx

orderby

如果要从大到小排序应该是$orderby=fieldname dsc《《但怎么写都是错的,用asc就正常,然后习惯性的试了一下desc就成功了。

REST有时候觉得比client object model好用,有时候又觉得又长又烦。(例如&符号的文档库你就头痛了,要使用guid进行查询,搞几个中文字段,呵呵,有排玩。)

pagelayout页面布局的一些笔记

2014年5月24日

在sharepoint里面“页面布局”是用来规定页面的内容布局,以前刚学的时候理解为只是控制页面的“布局”,现在sharepoint 2013里面,再进一步理解它的概念觉得以前理解太少

在sharepoint 2013里面,masterpage和layout page都有2个相同名称的文件,例如oslo.master就会有一个oslo.html,archive.aspx这个页面布局就会有archive.html文件

我们普通使用的时候,只要编辑html这个文件,系统会自动同步到aspx或master(单向同步),如果你要控制更多,可以去掉这种关联,编辑html的页面属性“Associated File”,将这个修改为FALSE即可,这个时候直接编辑.master或.aspx文件即可

说回page layout,它其实是关联到content type的,用于表示一种content type,我们在content type里面定义各种各样的字段,然后通过page layout显示出来,例如定义标题,图标,标签等,然后用page layout展示出来。所以它不但是页面布局,还是content type的一种展示方式!

content type

mastrepage模板页的一个技巧

2014年5月22日

我们在制作模板页的时候,需要按当前用户身份隐藏或显示一些按钮,例如未登录的用户显示“登录按钮”,登录后不显示,已登录的用户显示公司通告,像这样的需要有很多的

在sharepoint 里面已经提供这样的解决办法,那就是使用一个叫“SPSecurityTrimmedControl“的控件

使用的例子像下面这样:

<SharePoint:SPSecurityTrimmedControl runat="server" AuthenticationRestrictions="AnonymousUsersOnly">
    <li>
    <a href="#"><img src="/_catalogs/masterpage/login.png" alt="登录" /></a>
    </li>
</SharePoint:SPSecurityTrimmedControl>

这里面设置为”如果是匿名用户 “那么显示”登录“这个链接,让用户登录 ,

这个控件的AuthenticationRestrictions就是控制显示条件的,它有下面的这些值可供选择

Member name Description
  AllUsers Access is available to all users.(所有用户 可以看到)
  AuthenticatedUsersOnly Access is available only to authenticated users.(已经登录的用户 看到)
  AnonymousUsersOnly Access is available only to anonymous users.(匿名用户 看到)

masterpage

Office 365使用XsltListViewWebPart通过url参数ParameterBinding查询记录的问题

2014年4月26日

今天要在office 365实现一个页面显示指定列表的一条记录内容,这个需求也不复杂,直接创建页面,然后插入displayform,加个querystring参数,打算就这样搞定,但现实总是很骨感的,出错了

怎么试都会出错,然后就改为自己加入datasource,再放个表单什么的进行绑定,还是出错

Sorry, something went wrong

No item exists at  xxx/Pages/Untitled_2.aspx?id=4. It may have been deleted or renamed by another user.

caml 1

页面的数据源和绑定代码如下

    <View Name="{74D13C73-CD04-4E43-9085-BDAD16FFACA1}" MobileView="TRUE" Type="HTML" DisplayName="StdView" Url="/Lists/xxx/StdView.aspx" Level="1" BaseViewID="1" ContentTypeID="0x" ImageUrl="/_layouts/15/images/generic.png?rev=35">
        <Query>
            <Where>
                <Eq>
                    <FieldRef Name="ID"/>
                    <Value Type="Integer">{id}</Value>
                </Eq>
            </Where>
        </Query>
        <ViewFields>
            <FieldRef Name="LinkTitle"/>
            <FieldRef Name="Date"/>
            <FieldRef Name="ID"/>
        </ViewFields>
        <RowLimit Paged="TRUE">30</RowLimit>
        <Aggregations Value="Off"/>
        <JSLink>clienttemplates.js</JSLink>
        <XslLink Default="TRUE">main.xsl</XslLink>
        <Toolbar Type="Standard"/>
    </View>
</XmlDefinition>
<parameterbindings>
    <ParameterBinding Name="id" Location="QueryString(id)" DefaultValue=""/>
    <ParameterBinding Name="dvt_sortdir" Location="Postback;Connection"/>
    <ParameterBinding Name="dvt_sortfield" Location="Postback;Connection"/>
    <ParameterBinding Name="dvt_startposition" Location="Postback" DefaultValue=""/>
    <ParameterBinding Name="dvt_firstrow" Location="Postback;Connection"/>
    <ParameterBinding Name="OpenMenuKeyAccessible" Location="Resource(wss,OpenMenuKeyAccessible)"/>
    <ParameterBinding Name="open_menu" Location="Resource(wss,open_menu)"/>
    <ParameterBinding Name="select_deselect_all" Location="Resource(wss,select_deselect_all)"/>
    <ParameterBinding Name="idPresEnabled" Location="Resource(wss,idPresEnabled)"/>
    <ParameterBinding Name="NoAnnouncements" Location="Resource(wss,noXinviewofY_LIST)"/>
    <ParameterBinding Name="NoAnnouncementsHowTo" Location="Resource(core,noXinviewofY_DEFAULT)"/>
    <ParameterBinding Name="AddNewAnnouncement" Location="Resource(wss,addnewitem)"/>
    <ParameterBinding Name="MoreAnnouncements" Location="Resource(wss,moreItemsParen)"/>
</parameterbindings></WebPartPages:XsltListViewWebPart>

由于 office 365上面不能通过错误id查看日志,灰常的麻烦,所以只能自己想办法,我发现可能是这个名字改的不够漂亮,然后我将它改为aid,再运行就通过了

页面请求的格式如下:xx.aspx?aid=4《《这个可以正常的过滤 出结果。。。

caml 2

然后又顺便测试一下?id=4的情况,出错了

caml 3

所以,这个故事告诉我们,名称一定要改漂亮些,这样运气就会好些!

sharepoint designer编辑出现value does not fall within the expected range错误

2014年4月23日

最近遇到一个神奇的问题,用sharepoint designer编辑首页的时候总是出现这个错误“

soap:Server was unable to process request. —> Value does not fall within the expected range”

SharePoint Designer 1

尝试过下面的操作:

一、还原网站

二、创建空白网站

三、创建新的 web application,始终未能解决

 

最终拿出最强大的谷哥,才知道原因,就是一个小小的问题,以前一直使用http://sp2010/这样的方式访问,最近在sharepoint designer输入的地址是”http://localhost“,结果就出现上面的异常问题了

sharepoint遇到这种情况就最郁闷的,问题不大,但现象却是千奇百怪

 

知道原因就好解决了,在映射里面增加一个localhost的映射就解决问题了

SharePoint Designer 2

SharePoint Designer 3

 

因为sharepoint写代码的时候也经常遇到value does not fall within the expected range,所以本能的以为是哪个代码出错了,或者访问的字段类型不正确什么的。

这次的问题告诉我们,现象有时候不是本质的问题!

SharePoint项目引用现成的DLL使EventReceiver调试无效,事件不触发

2013年12月12日

用winform .net 2.0写了一个小程序,然后有一个公共的 dll文件。

在SharePoint新建一个event receiver,总是不能触发事件,直接调试也没有效果。

最后还是将代码移入shareponit项目,暂时未分享为独立的dll

检查的步骤如下:

一、.net的版本, SP2010为3.5, SP2013为4.5

由于winform的dll是2.0的,所以改为4.5

sharepoint的dll必需签名,然后又搞了个签名。

二、将公共的dll加入sharepoint项目的package进而,选择部署到 gac

结果显示Error: Cannot add the specified assembly to the global assembly cache:

就是无法将dll加入gac,这个时候怎么试都不行,用powershell命令行部署过,也是相同的错误。

三、最终由于时间关系,就不再测试引用dll的问题,直接将代码加入sharepoint项目,然后编译部署,一次成功!

注意,由于第二个测试会影响vs,所以要在 package删除引用的dll后,重启vs2013后,再编译的。

 

正常来说,Sharepoint是支持引用第三方dll的,可以放在web下面的bin目录或者GAC,有兴趣时间再折腾吧。

SharePoint读取layouts路径和路径处理

2013年12月11日

以前经常混淆SharePoint里面的路径 ,因为太多了,什么相对路径,绝对路径,部署路径,经常使用的还是layouts里面的文件,因为项目部署后就放在这里。

今天将路径有关的整理出来,方便以后使用:

SPContext.Current.Web.Url:SharePoint开发
SPContext.Current.Web.ServerRelativeUrl:/
Server.MapPath(SPContext.Current.Web.ServerRelativeUrl):C:\inetpub\wwwroot\wss\VirtualDirectories\802d43787b-9f53-4d42-a97b-93a5f5ed55a3\
Server.MapPath("/"):C:\inetpub\wwwroot\wss\VirtualDirectories\802d43787b-9f53-4d42-a97b-93a5f5ed55a3\
Server.MapPath("~/"):C:\inetpub\wwwroot\wss\VirtualDirectories\802d43787b-9f53-4d42-a97b-93a5f5ed55a3\
this.AppRelativeVirtualPath:~/_layouts/15/sharepointproject1/p1.aspx
this.MapPath(this.AppRelativeVirtualPath):C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\template\layouts\sharepointproject1\p1.aspx
SPUtility.GetGenericSetupPath(string.Empty):C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\
SPUtility.GetVersionedGenericSetupPath(string.Empty, 15):C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\
SPUtility.GetVersionedGenericSetupPath(string.Empty, 14):C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\

 

输出上面路径的html代码如下:

SPContext.Current.Web.Url:<%=SPContext.Current.Web.Url%><br />
SPContext.Current.Web.ServerRelativeUrl:<%=SPContext.Current.Web.ServerRelativeUrl%><br />
Server.MapPath(SPContext.Current.Web.ServerRelativeUrl):<%=Server.MapPath(SPContext.Current.Web.ServerRelativeUrl) %><br />
Server.MapPath("/"):<%=Server.MapPath("/")%><br />
Server.MapPath("~/"):<%=Server.MapPath("~/")%><br />
this.AppRelativeVirtualPath:<%=this.AppRelativeVirtualPath%><br />
this.MapPath(this.AppRelativeVirtualPath):<%=this.MapPath(this.AppRelativeVirtualPath)%><br />
SPUtility.GetGenericSetupPath(string.Empty):<%=SPUtility.GetGenericSetupPath(string.Empty)%><br />
SPUtility.GetVersionedGenericSetupPath(string.Empty, 15):<%=SPUtility.GetVersionedGenericSetupPath(string.Empty, 15)%><br />
SPUtility.GetVersionedGenericSetupPath(string.Empty, 14):<%=SPUtility.GetVersionedGenericSetupPath(string.Empty, 14)%><br />

顺便说一下小技巧,在SharePoint里面,aspx文件部署后放在layouts里面,如果只是修改aspx,可以直接修改该文件,iis会实时编译输出,这样调试速度会快很多。

SharePoint的一个权限判断控件使用技巧

2013年12月3日

<Sharepoint:SPSecurityTrimmedControl ID="SPSecurityTrimmedControl2"runat="server" PermissionsString="AddAndCustomizePages">

如果符合PermissionsString限制的权限要求,那么本内容会输出显示,否则不输出。
</Sharepoint:SPSecurityTrimmedControl>

通过使用上面的权限判断控件,可以根据当前用户权限做一些控制,例如如果用户没有编辑页面,那么不显示ribbon

1) Open your SharePoint master page

2) Locate this line:
<div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle">

3) Change it to:
<div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle"style="display:none">

4) Now find the end of the “s4-ribbonrow” tag and add following block right after it:
<Sharepoint:SPSecurityTrimmedControl ID="SPSecurityTrimmedControl2"runat="server" PermissionsString="AddAndCustomizePages">
<script type="text/javascript">
document.getElementById("s4-ribbonrow").style.display = "block";
</script>
</Sharepoint:SPSecurityTrimmedControl>

5) Save the new master page and publish it.

下面是可以填入的PermissionString值,根据名字已经大概知道用法了。

PermissionString. The available options include:

  • List Permissions
    • ManageLists
    • CancelCheckout
    • AddListItems
    • EditListItems
    • DeleteListItems
    • ViewListItems
    • ApproveItems
    • OpenItems
    • ViewVersions
    • DeleteVersions
    • CreateAlerts
    • ViewFormPages
  • Site Permissions
    • ManagePermissions
    • ViewUsageData
    • ManageSubwebs
    • ManageWeb
    • AddAndCustomizePages
    • ApplyThemeAndBorder
    • ApplyStyleSheets
    • CreateGroups
    • BrowseDirectories
    • CreateSSCSite
    • ViewPages
    • EnumeratePermissions
    • BrowseUserInfo
    • ManageAlerts
    • UseRemoteAPIs
    • UseClientIntegration
    • Open
    • EditMyUserInfo
  • Personal Permissions
    • ManagePersonalViews
    • AddDelPrivateWebParts
    • UpdatePersonalWebParts

以上的内容参考自:

http://blogs.msdn.com/b/zwsong/archive/2010/04/29/how-to-hide-ribbon-from-users-without-edit-page-privilege.aspx

https://www.nothingbutsharepoint.com/sites/eusp/Pages/hiding-the-sharepoint-2010-ribbon-from-anonymous-users.aspx

文档管理系统的权限控制

2013年12月2日

文档管理系统的权限控制怎么设计才能即安全又不会增加用户操作复杂度?如果使用传统的“功能-角色-人员“或再加一个横向的增、删、改、查等,维护的工作量会很大,创建角色的时候就会很多工作,要一个一个功能勾选,再将角色分配给人员。

SharePoint的权限体系从外面看是很简单的,为用户分配角色,用户登录后系统根据角色自动过滤显示内容。如果与AD接上,那就更简单,整个集团的人员和用户组都在AD上面,SharePoint会自动同步AD的信息到Sharepoint里面,所以这个时候授权就变为对AD的用户或角色进行授权。使用AD还有一个好处,可以进行用户组套用户组,在SharePoint里面的用户组是不能套用户组的。

从内部看,SharePoint的权限可以控制到每一个对象,例如列表里面的每一条记录,文档库里面的每一个文档都可以单独设置权限,或承继列表的权限,列表又承继网站的权限,这样就一级一级的减少工作,也可以满足一些个别控制的场景。

安全

粤ICP备10090854号-1