Отключить параметр источника в ссылках - PullRequest
0 голосов
/ 08 апреля 2011

Краткое описание поведения по умолчанию, которое я хочу переопределить: создание списка SharePoint и использование «Заголовок (связанный с элементом)» в представлении предоставляет ссылку на DispForm для этого списка.По умолчанию эта ссылка добавляет параметр Source в строку запроса URL.

Я бы хотел каким-то образом отключить это поведение, сохраняя при этом веб-часть представления списка по умолчанию, которая создается SharePoint, когда представление определено.

Чтобы было ясно, я знаю, как преобразовать веб-часть представления списка в XSLT и затем управлять этим поведением.Если это вообще возможно, я бы хотел не делать этого, чтобы справочная служба по-прежнему могла легко поддерживать справочную службу, а также сохранить преимущества стандартного представления списка (например, экспорт в Excel и т. Д.).

Есть идеи?Заранее спасибо за помощь.Трой

1 Ответ

1 голос
/ 11 апреля 2011

SharePoint (2007) динамически добавляет параметр source в метод javascript с именем GoToLink. Этот метод определен в файле core.js в SharePoint, и его можно легко настроить без редактирования исходного файла. На самом деле, вы никогда не хотите редактировать этот файл напрямую; это переведет SharePoint в «неподдерживаемое» состояние.

Мы создадим решение для нашей настройки, чтобы его можно было легко развернуть или отозвать согласованным образом. Создайте новое решение Empty 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» и который использует главную страницу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...