jdgue 发表于 2015-9-24 09:07:51

SharePoint 2007 文档库实现缩略图

  最近太忙,到处出差,从新加坡到德国,再到美国,好容易才回到祖国的怀抱,发现自己的博客了,草长了一大推,所以决定重新好好打理这片地,等着升值.
  
  今天我们就来记录下如何在SharePoint 2007 实现文档库缩略图.
  
  需求: 创建一个SharePoint 图片库, 并需要一个conteng approve 工作流, 在approver组没有审批同意之前, 公司其他人看不到图片.
  环境:SharePoint 2007
  
  这本来是个非常简单的需求,SharePoint 2007 自带图片图,但是难在,在SharePoint 2007里,picture library 没有自带的content approve 工作流,虽然document library有,但是文档库却没有缩略图功能,真不知道microsoft怎么想的(不过SharePoint 2010都有了).
  经过短暂思考,有两张解决方案:
  1. 创建一个自定义的content approve workflow
  2. 在document library实现缩略图.
  
  综合考虑下来,觉得方案2实现更简单,更稳定.
  下面开始动手:
  经过对比document library和picture library,发现区别在于 picture library shema definition有一个"Thumbnail"列,而document library 没有.所以当你创建一个Picture Library的时候,就会创建一个"Thumbnail"列.所以我们只要在Document Library 的shema definition里加上这个列,是否就会出现"thumbnail" 列呢?
  




Note: that “Thumbnail” is a computed field and hence
it has several other field references defined inside it.
They are “ ImageWidth”,”ImageHeight”,”FSObjType”,”EncodedAbsThumbnailUrl”
and “Description”.
  
  创建缩略图列
  1. 在文档库中启用"Picture" content type, 并设置为默认content type
  2. 定义下面" thumbnail" 列
  






<Field ID="{ac7bb138-02dc-40eb-b07a-84c15575b6e9}"
ReadOnly="TRUE" Type="Computed" Name="Thumbnail"
ShowInNewForm="FALSE" ShowInFileDlg="FALSE" ShowInEditForm="FALSE"
DisplayName="Thumbnail" Sealed="TRUE" Sortable="FALSE" Filterable="FALSE"
SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Thumbnail">
            <FieldRefs>
                  <FieldRef Name="ImageWidth" />
                  <FieldRef Name="ImageHeight" />
                  <FieldRef Name="FSObjType" />
                  <FieldRef Name="EncodedAbsUrl" />
                  <FieldRef Name="Description" />
            </FieldRefs>
            <DisplayPattern>
                  <IfEqual>
                        <Expr1>
                              <LookupColumn Name="FSObjType" />
                        </Expr1>
                        <Expr2>0</Expr2>
                        <Then>
                              <IfEqual>
                                    <Expr1>
                                          <LookupColumn Name="ImageWidth" />
                                    </Expr1>
                                    <Expr2>
                                    </Expr2>
                                    <Then>
                                    </Then>
                                    <Else>
                                          <IfEqual>
                                                <Expr1>
                                                      <LookupColumn Name="ImageWidth" />
                                                </Expr1>
                                                <Expr2>0</Expr2>
                                                <Then>
                                                </Then>
                                                <Else>
                                                      <HTML><!]></HTML>
                                                      <URL Cmd="Display" />
                                                      <HTML><!]></HTML>
                                                      <IfEqual>
                                                            <Expr1>
                                                                  <Column Name="Description" />
                                                            </Expr1>
                                                            <Expr2>
                                                            </Expr2>
                                                            <Then>
                                                                  <HTML><!]></HTML>
                                                            </Then>
                                                            <Else>
                                                                  <Column Name="Description" HTMLEncode="TRUE" />
                                                            </Else>
                                                      </IfEqual>
                                                      <HTML><!]></HTML>
                                                      <Field Name="EncodedAbsUrl" />
                                                      <HTML>
                                                            <![CDATA[">
                                        </a>
                                        ]]>
                                                      </HTML>
                                                </Else>
                                          </IfEqual>
                                    </Else>
                              </IfEqual>
                        </Then>
                  </IfEqual>
            </DisplayPattern>
   </Field>





<Field ID="{ac7bb138-02dc-40eb-b07a-84c15575b6e9}" ReadOnly="TRUE" Type="Computed" Name="Thumbnail" ShowInNewForm="FALSE" ShowInFileDlg="FALSE" ShowInEditForm="FALSE" DisplayName="Thumbnail" Sealed="TRUE" Sortable="FALSE" Filterable="FALSE" SourceID="http://schemas.microsoft.com/sharepoint/v3" StaticName="Thumbnail">
            <FieldRefs>
                  <FieldRef Name="ImageWidth" />
                  <FieldRef Name="ImageHeight" />
                  <FieldRef Name="FSObjType" />
                  <FieldRef Name="EncodedAbsUrl" />
                  <FieldRef Name="Description" />
            </FieldRefs>
            <DisplayPattern>
                  <IfEqual>
                        <Expr1>
                              <LookupColumn Name="FSObjType" />
                        </Expr1>
                        <Expr2>0</Expr2>
                        <Then>
                              <IfEqual>
                                    <Expr1>
                                          <LookupColumn Name="ImageWidth" />
                                    </Expr1>
                                    <Expr2>
                                    </Expr2>
                                    <Then>
                                    </Then>
                                    <Else>
                                          <IfEqual>
                                                <Expr1>
                                                      <LookupColumn Name="ImageWidth" />
                                                </Expr1>
                                                <Expr2>0</Expr2>
                                                <Then>
                                                </Then>
                                                <Else>
                                                      <HTML><!]></HTML>
                                                      <URL Cmd="Display" />
                                                      <HTML><!]></HTML>
                                                      <IfEqual>
                                                            <Expr1>
                                                                  <Column Name="Description" />
                                                            </Expr1>
                                                            <Expr2>
                                                            </Expr2>
                                                            <Then>
                                                                  <HTML><!]></HTML>
                                                            </Then>
                                                            <Else>
                                                                  <Column Name="Description" HTMLEncode="TRUE" />
                                                            </Else>
                                                      </IfEqual>
                                                      <HTML><!]></HTML>
                                                      <Field Name="EncodedAbsUrl" />
                                                      <HTML>
                                                            <![CDATA[">
                                        </a>
                                        ]]>
                                                      </HTML>
                                                </Else>
                                          </IfEqual>
                                    </Else>
                              </IfEqual>
                        </Then>
                  </IfEqual>
            </DisplayPattern>
   </Field>

  3. 创建一个visual studio console 程序,添加"thumbnail"列到文档库
  




using (SPSite osite = new SPSite("URL of your SharePoint Site”)
            {
                using (SPWeb oweb = osite.OpenWeb())
                {
                  SPList olist = oweb.Lists["YourListName"];
                  StreamReader rdr = new StreamReader("Definition text file path which has the field definition");
                  string fld = rdr.ReadToEnd();
                  olist.Fields.AddFieldAsXml(fld, true, SPAddFieldOptions.AddToDefaultContentType);
                  olist.Update();
                }
            }

  
  
  
  4. 现在就上传个图片试试吧

  
  content approve workflow

  .
  
  好了.结束了,好久不写,本来想写详细点,发现好累.就匆匆忙忙了.
  
  
  
  



1.      
“ImageWidth” – Gets
included when you add the picture content type

       2.       “ImageHeight”- Gets included when
you add the picture content type

       3.       “FSObjType” – This field is available in
the BASE TYPE and will be available to all the listsso no need to
include.

       4.       “EncodedAbsThumbnailUrl” �� This field is very specific to Picture library and will not
be included to other list just by adding the Picture content type.


      
5.      
“Description” – Gets
included when you add the picture content type.
页: [1]
查看完整版本: SharePoint 2007 文档库实现缩略图