Используйте Web Money - это очень удобно

вторник, 25 марта 2008 г.

LinkTitle - используем скрипты Sharepoint

Собственно это попытка повторить функционал этого меню документа в списке.
Зачем:
В библиотеке есть документ 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 из скрытого поля.

Если кто-то может что-то дополнить буду благодарен.

1 комментарий:

Анонимный комментирует...

скрины бы выложил красивше былобы и информативнее )))!!!??