diff --git a/CHANGES.rst b/CHANGES.rst index 7dbfab9a95..48c8b1b492 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -14,6 +14,9 @@ https://github.com/zopefoundation/Zope/blob/4.0a6/CHANGES.rst Fixes +++++ +- Improved showing/hiding of the left-hand tree pane + (`#457 `_) + - Recreate ``App.version_txt.getZopeVersion`` (`#411 `_) diff --git a/src/App/dtml/manage.dtml b/src/App/dtml/manage.dtml index f0c997fda0..c2cd889b31 100644 --- a/src/App/dtml/manage.dtml +++ b/src/App/dtml/manage.dtml @@ -1,24 +1,33 @@ - - + -Zope on &dtml-BASE0; + Zope on &dtml-BASE0; + + + + + + + + + + + -/manage_menu" - name="manage_menu" - marginwidth="2" marginheight="2" - /> -/manage_workspace" - name="manage_main" - marginwidth="2" marginheight="2" - /> - - <body> - <p>Management interfaces require the use of a <b>frames-capable</b> web - browser.</p> - </body> - + /manage_menu" + name="manage_menu" + marginwidth="2" marginheight="2" + /> + " + name="manage_main" + marginwidth="2" marginheight="2" + /> + + <body> + <p>Management interfaces require the use of a <em>frames-capable</em> web browser.</p> + </body> + diff --git a/src/App/dtml/manage_navbar.dtml b/src/App/dtml/manage_navbar.dtml index 27bba65767..4f8dc70b2c 100644 --- a/src/App/dtml/manage_navbar.dtml +++ b/src/App/dtml/manage_navbar.dtml @@ -19,7 +19,7 @@ data-title_inactive="STATUS INACTIVE: Tree Menu Button is only active on List Views. Navigate up a level to show the tree view again." data-is_folderish="" > - + manage?came_from=" target="_parent" onclick="javascript:if ( manage_menu ) {window.parent.frames[0].menu_toggle();return false;} else { return true; }"> diff --git a/src/App/dtml/manage_page_footer.dtml b/src/App/dtml/manage_page_footer.dtml index 17d6286daf..fb59be63fb 100644 --- a/src/App/dtml/manage_page_footer.dtml +++ b/src/App/dtml/manage_page_footer.dtml @@ -1,4 +1,11 @@ + + + \ No newline at end of file diff --git a/src/App/dtml/manage_page_header.dtml b/src/App/dtml/manage_page_header.dtml index db74a3fcce..66f7917579 100644 --- a/src/App/dtml/manage_page_header.dtml +++ b/src/App/dtml/manage_page_header.dtml @@ -14,7 +14,7 @@ - + diff --git a/src/App/dtml/menu.dtml b/src/App/dtml/menu.dtml index a6804d6b7b..e907870542 100644 --- a/src/App/dtml/menu.dtml +++ b/src/App/dtml/menu.dtml @@ -58,5 +58,38 @@ > + + + + diff --git a/src/zmi/styles/resources/zmi.localstorage.api.js b/src/zmi/styles/resources/zmi.localstorage.api.js new file mode 100644 index 0000000000..b40c40bd91 --- /dev/null +++ b/src/zmi/styles/resources/zmi.localstorage.api.js @@ -0,0 +1,120 @@ +/** + * $ZMILocalStorageAPI + * + * @see http://fortuito.us/diveintohtml5/storage.html +*/ +ZMILocalStorageAPI = function() { +}; +ZMILocalStorageAPI.prototype._clear = function(cb) { + for (var k in localStorage) { + if (!(k.indexOf("_")==0)) { + delete localStorage[k]; + } + } +} +ZMILocalStorageAPI.prototype.keys = function() { + var l = []; + for (var k in localStorage) { + l.push(k); + } + l.sort(); + return l; +} +ZMILocalStorageAPI.prototype.get = function(k,d) { + var v = d; + var l = this.keys(); + var done = []; + for (var i=0; i < l.length; i++) { + var lsk = l[i]; + var nv = null; + if (lsk.indexOf(k+".")==0) { + var nk = lsk.substr((k+".").length); + if (nk.indexOf(".") > 0) { + nk = nk.substr(0,nk.indexOf(".")); + if ($.inArray(k+"."+nk,done)<0) { + nv = $ZMILocalStorageAPI.get(k+"."+nk); + done.push(k+"."+nk); + } + } + else { + nv = localStorage[lsk]; + } + if (nv != null) { + if (isNaN(nk)) { + if (typeof v == "undefined") { + v = {}; + } + v[nk] = nv; + } + else { + if (typeof v == "undefined") { + v = []; + } + v.push(nv); + } + } + } + else if (lsk==k) { + nv = localStorage[lsk]; + if (typeof nv != "undefined") { + v = nv; + } + } + } + return v; +} +ZMILocalStorageAPI.prototype._set = function(k,v) { + if (typeof v == "object") { + if (Array.isArray(v)) { + for (var i = 0; i < v.length; i++) { + this._set(k+"."+i,v[i]); + } + } + else { + for (var i in v) { + this._set(k+"."+i,v[i]); + } + } + } + else { + localStorage[k] = v; + } +} +ZMILocalStorageAPI.prototype.set = function(k,v,r) { + this._set(k,v); + if (r) { + self.location.reload(); + } +} +ZMILocalStorageAPI.prototype._del = function(k) { + var l = this.keys(); + for (var i=0; i < l.length; i++) { + var lsk = l[i]; + if (lsk==k || lsk.indexOf(k+".")==0) { + delete localStorage[lsk]; + } + } +} +ZMILocalStorageAPI.prototype.del = function(k,r) { + this._del(k); + if (r) { + self.location.reload(); + } +} +ZMILocalStorageAPI.prototype.toggle = function(k,r) { + if (this.get(k,null)==null) { + this.set(k,"1",r); + } + else { + this.del(k,r); + } +} +ZMILocalStorageAPI.prototype.replace = function(k,v,r) { + this._del(k); + this._set(k,v); + if (r) { + self.location.reload(); + } +} + +$ZMILocalStorageAPI = new ZMILocalStorageAPI(); diff --git a/src/zmi/styles/resources/zmi_base.js b/src/zmi/styles/resources/zmi_base.js index 61ad09acaf..3ac97c6d4a 100644 --- a/src/zmi/styles/resources/zmi_base.js +++ b/src/zmi/styles/resources/zmi_base.js @@ -2,39 +2,7 @@ // NAVBAR-FUNCTIONS -function setupShowHideTreeView() { - /* - Disable the show sidebar button if the sidebar cannot be shown - without navigating away from the current view. - - It would be cool to get rid of this, but that would require - reworking the TreeTagView to understand that it could show the - elements above the current object if it is not a folderish thing. - */ - var $li = $('#toggle_menu'); - if (0 === $li.length) { - return // no menu toggle on this page - } - - var $a = $li.find('a'); - // var isInFrameset = window.parent.location.href.endsWith('/manage'); - var isShowingFrameset = window !== window.parent; - var isFolderish = !! $li.data().is_folderish - if (isShowingFrameset) { - $a.attr('href', 'manage_main') - } - else { - if ( isFolderish ) { - $a.attr('href', 'manage') - } - else { - $li.attr('title', $li.attr('data-title_inactive')); - $a.addClass('disabled'); - } - } -} - -// [2] Add New Object Item (with Modal Dialog) +// Add New Object Item (with Modal Dialog) function addItem( elm, base_url ) { // e.g. manage_addProduct/OFSP/folderAdd var url_action = elm.options[elm.selectedIndex].value; @@ -235,7 +203,6 @@ $(function() { $('#addItemSelect').attr( 'title', $('#addItemSelect').attr('data-title-inactive') ); } - setupShowHideTreeView() if (!window.matchMedia || (window.matchMedia("(max-width: 767px)").matches)) { $('.zmi header.navbar li.zmi-authenticated_user').tooltip({'placement':'bottom'});