Краткое описание поведения по умолчанию, которое я хочу переопределить: Создание списка SharePoint и использование «Заголовка (связанного с элементом)» в представлении обеспечивает ссылку на DispForm для этого списка. По умолчанию эта ссылка добавляет параметр Source к строке запроса URL.
Я хотел бы каким-то образом отключить это поведение, сохранив при этом веб-часть представления списка по умолчанию, созданную SharePoint при определении представления.
Чтобы было ясно, я знаю, как преобразовать веб-часть представления списка в XSLT, а затем управлять этим поведением. Если это вообще возможно, я бы не хотел этого делать, чтобы представление списка по-прежнему могло легко поддерживаться службой поддержки, а также сохраняло преимущества стандартного представления списка (например, экспорт в Excel и т. д.).
Любые идеи? Заранее спасибо за помощь. Троя
1 ответ
SharePoint (2007) динамически добавляет параметр source
в метод javascript с именем GoToLink
. Этот метод определен в файле core.js SharePoint, и его можно легко настроить без редактирования исходного файла. Фактически, вы никогда не захотите редактировать этот файл напрямую; он переведет SharePoint в состояние «не поддерживается».
Мы создадим решение для нашей настройки, чтобы его можно было легко развернуть или отозвать согласованным образом. Создайте новое пустое решение SharePoint в Visual Studio, предназначенное для развертывания GAC. В вашем проекте создайте следующую структуру папок:
- Шаблоны
- Макеты <ул>
- 1033
(«1033» для английской локализации; если вы используете другой язык, ваш идентификатор будет другим).
В «1033» создайте новый файл Javascript (мы называем наш «CustomCore.js»). Он будет содержать ТОЛЬКО тот код, который мы хотим переопределить из Core.js. Поскольку GoToLink — это единственное, что нас интересует, давайте сосредоточимся на нем. Вот оригинал из Core.js:
function GoToLink(elm) {
if (elm.href==null)
return;
var ch=elm.href.indexOf("?") >=0 ? "&" : "?";
var srcUrl=GetSource();
if (srcUrl !=null && srcUrl !="")
srcUrl=ch+"Source="+srcUrl;
var targetUrl=elm.href+srcUrl;
if (isPortalTemplatePage(targetUrl))
window.top.location=STSPageUrlValidation(targetUrl);
else
window.location=STSPageUrlValidation(targetUrl);
}
Не так уж много. Для нашего переопределения нам просто нужно опустить биты, которые добавляют параметр source
. По моим расчетам, модифицированный метод выглядит так:
function GoToLink(elm) {
if (elm.href==null)
return;
if (isPortalTemplatePage(elm.href))
window.top.location=STSPageUrlValidation(elm.href);
else
window.location=STSPageUrlValidation(elm.href);
}
Это должно быть так. Упакуйте решение, и Visual Studio должна правильно интерпретировать структуру папки «Шаблоны» при создании WSP (посмотрите в сгенерированном файле манифеста элемент TemplateFile
и его развертывание в «Layouts\1033\CustomCore.js» ).
После того как ваше решение WSP будет развернуто в SharePoint, у нас есть последний шаг — ссылка на него на главной странице. В разделе HEAD
главной страницы вы должны увидеть ссылку на Core.js следующим образом:
<SharePoint:ScriptLink Language="javascript" runat="server" Defer="True" Name="core.js"/>
Мы просто добавляем ссылку на новый JS-файл прямо под этой строкой:
<SharePoint:ScriptLink Language="javascript" runat="server" Defer="True" Name="core.js"/>
<SharePoint:ScriptLink Language="javascript" runat="server" Defer="True" Name="customcore.js"/>
Протестируйте его и убедитесь, что он работает. Обратите внимание, что это повлияет на ВСЕ списки на сервере, на котором вы развернули «CustomCore.js» и которые используют главную страницу.
Похожие вопросы
Новые вопросы
sharepoint
По вопросам, связанным с SharePoint, посетите сайт Exchange Stack Exchange (https://sharepoint.stackexchange.com). Используйте этот тег для вопросов программирования, которые могут касаться SharePoint. Microsoft SharePoint - это платформа и семейство программных продуктов, разработанных Microsoft для совместной работы и веб-публикации.