SharePoint (2007) динамически добавляет параметр source
в метод javascript с именем GoToLink
. Этот метод определен в файле core.js в SharePoint, и его можно легко настроить без редактирования исходного файла. На самом деле, вы никогда не хотите редактировать этот файл напрямую; это переведет SharePoint в «неподдерживаемое» состояние.
Мы создадим решение для нашей настройки, чтобы его можно было легко развернуть или отозвать согласованным образом. Создайте новое решение Empty SharePoint в Visual Studio, предназначенное для развертывания GAC. В вашем проекте создайте следующую структуру папок:
(«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» и который использует главную страницу.