2017-06-01 2 views
0

Wenn ich auf ein Modul innerhalb des Modulauswahldialogs klicke, aktualisiert DNN die Seite (bevor das schwebende, ziehbare Element auf der Seite erscheint). Dies geschieht nur mit unserer Haut (https://github.com/2sic/dnn-theme-bootstrap3-instant).Seite verhindern Neu laden bei Modulauswahl DNN 9

DNN sucht nach dem Element #dnn_ContentPane_SyncPanel (das ein Ajax-Wrapper zu sein scheint) mit Teleriks findComponent Methode. Da das Element nicht gefunden werden kann, führt DNN eine Neuladung der Seite durch.

Unsere Felle Inhaltsbereich:

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

Der DNN-Code, der die reload (letzter Funktionsaufruf) löst:

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(); 
    } 
} 

Antwort

0

Nach einiger Zeit fanden wir heraus, was das Problem war. Unsere Skin verwendete die <%=SkinPath%>-Syntax anstelle von <%#SkinPath%>, was dazu führte, dass DNN ein Neuladen erzwang. Dies hat wahrscheinlich mit dem Lebenszyklus des Dokuments zu tun.