Собственно это попытка повторить функционал этого меню документа в списке.
Зачем:
В библиотеке есть документ 1 в той же библиотеке есть связанный с ним документ 2.
В карточке документа 1 отобразить LinkTitle документа 2.
Непосредственно разметка:
  <TD Class="ms-vb-title" height="100%">
    <table height="100%" cellspacing="0"
         class="ms-unselectedtitle"
         onmouseover="ggg();OnItem(this)"
         CTXName="ctx1"
         Id="4"
         Url="/sites/test/DocLib2/Поиск.aspx"
         DRef="sites/test/DocLib2"
         Perm="0x400001f07fff1bff"
         Type="SharePoint.WebPartPage.Document"
         Ext="aspx"
         Icon="icsmrtpg.gif|Microsoft Office SharePoint Designer|SharePoint.OpenDocuments"
         OType="0"
         COUId=""
         SRed="1"
         COut="0"
         HCD=""
         CSrc=""
         MS="0"
         CType="Документ"
         CId="0x0101004C213AE6D661A548A1237AF7852AFA98"
         UIS="512"
         SUrl="">
      <tr>
        <td width="100%" Class="ms-vb">
          <A onfocus="OnLink(this)"
             HREF="/sites/test/DocLib2/Поиск.aspx"
             onclick="return DispEx(this,event,'TRUE','FALSE','FALSE','','0','SharePoint.OpenDocuments',
'SharePoint.WebPartPage.Document','1','',
'1073741823','0','0','0x400001f07fff1bff')">
            Поиск<img src="/_layouts/images/blank.gif" class="ms-hidden" border="0" width="1" height="1" alt="Для открытия меню воспользуйтесь сочетанием клавиш SHIFT+ВВОД (в новом окне).">
          </A>
        </td>
        <td>
          <img src="/_layouts/images/blank.gif" width="13" style="visibility:hidden" alt="">
          </td>
      </tr>
    </table>
  </TD>
  <td>
И скрипт который заполняет объект тип ContextInfo который передается для форматирования меню:
    <script>
var ctx1 = new ContextInfo();
      function ggg()
      {
     
ctx1.ContentTypesEnabled=false;
ctx1.ctxId=1;
ctx1.CurrentUserId=1073741823;
ctx1.displayFormUrl="/sites/test/DocLib2/Forms/DispForm.aspx";
ctx1.editFormUrl="/sites/test/DocLib2/Forms/EditForm.aspx";
ctx1.EnableMinorVersions=false;
ctx1.HttpPath="/sites/test/_vti_bin/owssvr.dll?CS=65001";
ctx1.HttpRoot="http://server/sites/test";
ctx1.imagesPath="/_layouts/images/";
ctx1.isForceCheckout=false;
ctx1.isModerated=false;
ctx1.isPortalTemplate=null;
ctx1.isVersions=0;
ctx1.isWebEditorPreview=0;
ctx1.listBaseType=1;
ctx1.listName="{AC2D4CC5-7971-4627-8E58-F6A40E80AA70}";
ctx1.listTemplate=101;
ctx1.ListTitle="Библиотека документов";
ctx1.listUrlDir="/sites/test/DocLib2";
ctx1.ModerationStatus=0;
ctx1.newFormUrl=null;
ctx1.OfficialFileName="";
ctx1.PortalUrl=null;
ctx1.recursiveView=false;
ctx1.RecycleBinEnabled -=1;
ctx1.rootFolderForDisplay=null;
ctx1.SendToLocationName="Lib";
ctx1.SendToLocationUrl="http://server/sites/test/DocLib/";
ctx1.serverUrl=null;
ctx1.SiteTitle="test2";
ctx1.verEnabled=1;
ctx1.view="{B810C9B4-434E-4EA3-BADB-C466199D3F74}";
ctx1.WorkflowsAssociated=true;
ctx1.WriteSecurity="1";
      }
    </script>
У меня возник ряд сложностей с разбором кода: не совсем понимаю откуда берутся некоторые параметры и что это за параметры:
onmouseover="OnItem(this)" - это вызов js функции она строит меню.
CTXName="ctx1" - ContextInfo данные об объекте.
Id="4" - это ИД элемента в списке
Url="/sites/test/DocLib2/Поиск.aspx" - БК
DRef="sites/test/DocLib2" БК
Perm="0x400001f07fff1bff" - ? я так понимаю необходимый уровень разрешений - где его брать пока не знаю
Type="SharePoint.WebPartPage.Document" -БК
Ext="aspx" - БК
Icon="icsmrtpg.gif|Microsoft Office SharePoint Designer|SharePoint.OpenDocuments" - БК
OType="0" - ?
COUId="" -?
SRed="1" -?
COut="0" -?
HCD="" -?
CSrc="" -?
MS="0" -?
CType="Документ" - БК
CId="0x0101004C213AE6D661A548A1237AF7852AFA98" - ИД типа содержимого
UIS="512" - ?
SUrl="" -?
Отдельный вопрос как раздобыть ИД текущего пользователя.
ctx1.CurrentUserId=1073741823;
Собственно решение:
Создаем свой тип поля (наследуя MultiColumn) в котором сохраняем все необходимые переменные.
Далее повторяем HTML разметку меню в схеме отображения нашего поля.
Создаем контрол/вебчасть которая записывает ИД текущего пользователя в скрытое поле с известным идом.
Добавляем скрипт на мастер-страницу (либо на нашу страницу) который задает значение ctx1.CurrentUserId из скрытого поля.
Если кто-то может что-то дополнить буду благодарен.
вторник, 25 марта 2008 г.
Подписаться на:
Комментарии к сообщению (Atom)
1 комментарий:
скрины бы выложил красивше былобы и информативнее )))!!!??
Отправить комментарий