Запретить перезагрузку страницы при выборе модуля DNN 9

Когда я щелкаю модуль внутри диалогового окна выбора модуля, DNN обновляет страницу (до того, как на странице появится перетаскиваемый элемент, на который наведен курсор). Это происходит только при использовании нашей оболочки (https://github.com/2sic/dnn-theme-bootstrap3-instant).

DNN ищет элемент #dnn_ContentPane_SyncPanel (который, похоже, является оболочкой ajax) с помощью метода Teleriks findComponent. Поскольку элемент не может быть найден, DNN выполняет перезагрузку страницы.

Панель содержимого наших скинов:

<div id="ContentPane" runat="server" containertype="G" containername="Invisible Container" containersrc="default.ascx"></div>

Код DNN, запускающий перезагрузку (последний вызов функции):

refreshPane: function (paneName, args, callback, callOnReload) {
    var paneId;
    if (!paneName) {
        paneId = this.getModuleManager().getPane().attr('id');
    } else {
        paneId = this.getPaneById(paneName).attr('id');
    }

    var pane = $('#' + paneId);
    var parentPane = pane.data('parentpane');
    if (parentPane) {
        this.refreshPane(parentPane, args, callback);
        return;
    }
    //set module manager to current refresh pane.
    this._moduleManager = pane.data('dnnModuleManager');
    var ajaxPanel = $find(paneId + "_SyncPanel");
    if (ajaxPanel) {
        //remove action menus from DOM bbefore fresh pane.
        var handler = this;
        pane.find('div.DnnModule').each(function () {
            var moduleId = handler._moduleManager._findModuleId($(this));
            $('#moduleActions-' + moduleId).remove();
        });

        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(this._refreshCompleteHandler);
        this._refreshPaneId = paneId;
        this._refreshCallback = callback;
        ajaxPanel.ajaxRequest(args);
    } else {
        //save the args into cookie, after page reload then catch the cookie
        //and float the module for drag
        if (args && !this._noFloat) {
            this._setCookie('CEM_CallbackData', args);
        }

        if (callOnReload && typeof callback == "function") {
            callback.call($('#' + paneId), [true]);
        }

        location.reload();
    }
}

person Christoph Bühler    schedule 01.06.2017    source источник


Ответы (1)


Через некоторое время мы выяснили, в чем проблема. Наш скин использовал синтаксис <%=SkinPath%> вместо <%#SkinPath%>, что заставляло DNN принудительно перезагружать. Вероятно, это связано с жизненным циклом документа.

person Christoph Bühler    schedule 01.06.2017