Как настроить выбранную вкладку в режиме редактирования EPiServer CMS? - PullRequest
0 голосов
/ 24 января 2019

У нас есть окно редактирования EPiServer (формы) с несколькими вкладками.Заказчик потребовал, чтобы вкладка с номером 2 (называемая «альтернативный контент») была автоматически выбрана при определенных условиях, когда редакторы открывают страницу редактирования.Мы не хотим менять порядок вкладок.Как это можно сделать?Мы запускаем EPiServer 11.

Обновление:

Я пытался выполнить это с помощью Dojo-скрипта.Результат в EPiServer зависит от того, как я его настроил, что странно для меня в этом случае.Вот файл

Web \ modules \ CMSDefaultTabSelector \ module.config :

module.config

Вот как это называетсяв ModifyMetadata:

Calling code in ModifyMetadata

... и сам скрипт CMSDefaultTabSelector.js выглядит следующим образом:

CMSDefaultTabSelector.js

Результат, в зависимости от того, отправляете ли вы в EditLayoutContainer, Dialog или полностью его пропускаете (способ, которым должен выглядеть), выглядит следующим образом:

Результат с EditLayoutContainer

Result with EditLayoutContainer

Результат с диалогом

Result with Dialog

Результат, как и должно быть

Result original

Если я пытаюсь пропуститьпо этому параметру я получаю ошибку "ctor не является конструктором" .Другие элементы макета просто отображают пустую вкладку, странные ошибки или другие сообщения об ошибках.Если я использую require([...]), функция вызывается при каждой перезагрузке страницы, что не , что я хочу.Я хочу, чтобы он вызывался только всякий раз, когда включается код из ModifyMetadata. Надеюсь, кто-то может помочь.

1 Ответ

0 голосов
/ 30 января 2019

Поработав некоторое время, я наконец нашел магический код. Поскольку другие люди могут также задаться вопросом, как это делается, вот как это было решено в конце (с помощью Dojo):

define([
"dojo/_base/declare",
"epi/shell/layout/SimpleContainer"
],

function (
    declare,
    SimpleContainer
)
{
    return declare([SimpleContainer], {
        //constructor: function () {},

        postCreate: function () { /* PostCreate fires too soon, and the tab strip is not completely rendered */ },

        startup: function () {
            // Use Jquery to select the tab we manually want to change to, and click it:
            var tabElement = $("div.dijitContentPane span.tabLabel:contains('Additional content')");
            if ($(tabElement).length) {
                $(tabElement).trigger("click");
            }
        }

    });
}

);

...