[Erp5-report] r21670 - in /erp5admin/trunk: ./ content/erp5admin/

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jun 18 11:28:42 CEST 2008


Author: bartek
Date: Wed Jun 18 11:28:41 2008
New Revision: 21670

URL: http://svn.erp5.org?rev=21670&view=rev
Log:
new version - with a dialog for navigating between versions of a form or script, customizing and reverting

Modified:
    erp5admin/trunk/CHANGELOG
    erp5admin/trunk/content/erp5admin/erp5admin.js
    erp5admin/trunk/content/erp5admin/erp5admin.xul
    erp5admin/trunk/content/erp5admin/erp5admin_async.js
    erp5admin/trunk/content/erp5admin/location_info.css
    erp5admin/trunk/content/erp5admin/location_info.js
    erp5admin/trunk/content/erp5admin/location_info.xul
    erp5admin/trunk/install.rdf

Modified: erp5admin/trunk/CHANGELOG
URL: http://svn.erp5.org/erp5admin/trunk/CHANGELOG?rev=21670&r1=21669&r2=21670&view=diff
==============================================================================
--- erp5admin/trunk/CHANGELOG (original)
+++ erp5admin/trunk/CHANGELOG Wed Jun 18 11:28:41 2008
@@ -1,3 +1,9 @@
+2008-06-18 2.3
+ * a "form" button now opens a navigation dialog which displays detailed info about current thing (a form or a script):
+   * location in skins
+   * what does it overwrite, and what overwrites it (e.g. versions in other skin folders)
+ * the dialog allows navigating between versions, and doing "customize" and "revert" on them (diff-ing is planned)
+
 2008-03-25 2.2
  * the security window is not automatically refreshed anymore (it was redundant and dangerous); instead it has two buttons - "refresh" which reloads security info for the object it was opened at, and "go here" to show info for the current context if we have wandered elsewhere
  * security window can be resized, and the size is peristent

Modified: erp5admin/trunk/content/erp5admin/erp5admin.js
URL: http://svn.erp5.org/erp5admin/trunk/content/erp5admin/erp5admin.js?rev=21670&r1=21669&r2=21670&view=diff
==============================================================================
--- erp5admin/trunk/content/erp5admin/erp5admin.js (original)
+++ erp5admin/trunk/content/erp5admin/erp5admin.js Wed Jun 18 11:28:41 2008
@@ -134,17 +134,21 @@
     return;
 }
 
-function erp5admin_openUrlInTab(url, newtab){
+function erp5admin_openUrlInTab(url, newtab, win){
     /* first check if this is not already open
-     */
-    var br = getBrowser()
+     * win(dow) is passed in case this is used by a dialog
+     */
+    if(win == undefined){
+        win = window;
+    }
+    var browser = win.getBrowser();
     var hr;
     cmp_url = url.split('?')[0];
-    for(var i=0; i<br.browsers.length; i++){
-        tab = br.getBrowserAtIndex(i)
+    for(var i=0; i<browser.browsers.length; i++){
+        tab = browser.getBrowserAtIndex(i)
         hr = tab.currentURI.spec.split('?')[0];
         if(hr == cmp_url){
-            br.selectedTab = br.mTabContainer.childNodes[i];
+            browser.selectedTab = browser.mTabContainer.childNodes[i];
             if(url != tab.currentURI.spec){ // reload if different parameters
                 tab.loadURI(url); // otherwise 'find selected' would work only once ;)
             }
@@ -155,9 +159,9 @@
         newtab == true;
     }
     if(newtab){
-        getBrowser().selectedTab = getBrowser().addTab(url); 
+        browser.selectedTab = browser.addTab(url); 
     }else{
-        window.content.document.location = url;
+        win.content.document.location = url;
     }
 }
 

Modified: erp5admin/trunk/content/erp5admin/erp5admin.xul
URL: http://svn.erp5.org/erp5admin/trunk/content/erp5admin/erp5admin.xul?rev=21670&r1=21669&r2=21670&view=diff
==============================================================================
--- erp5admin/trunk/content/erp5admin/erp5admin.xul (original)
+++ erp5admin/trunk/content/erp5admin/erp5admin.xul Wed Jun 18 11:28:41 2008
@@ -31,13 +31,8 @@
 
     <toolbox id="navigator-toolbox">
         <toolbar id="erp5admin-toolbar" class="chromeclass-toolbar" collapsed="false" iconsize="small" mode="full" inherits="collapsed,hidden" hidden="false" persist="collapsed,hidden" >
-            <button label="form" id="manage-form-button" tooltiptext="Manage form" oncommand="erp5admin_gotoFormManage(true)"/>
-            <button label="object" id="manage-object-button" tooltiptext="Manage object" oncommand="erp5admin_gotoManage('object',true)"/>
-            <menu id="toolbar_form" label="form/script" tooltiptext="Varia">
-                <menupopup>
-                    <menuitem label="Position" id="manage-form-location-item" tooltiptext="Manage object" oncommand="erp5admin_showFormLocation();"/>
-                </menupopup>
-            </menu>
+            <button label="form" id="manage-form-button" tooltiptext="Manage form" oncommand="erp5admin_showFormLocation();"/>
+            <button label="object" id="manage-object-button" tooltiptext="Manage object" oncommand="erp5admin_gotoManage('object',true);"/>
             <menu id="toolbar_object" label="object" tooltiptext="Object menu" position="1">
                 <menupopup onpopupshowing="erp5admin_updateObjectMenu();">
                     <menuitem label="Manage object" id="manage-object-item" tooltiptext="Manage object" oncommand="erp5admin_gotoManage('object',true)"/>

Modified: erp5admin/trunk/content/erp5admin/erp5admin_async.js
URL: http://svn.erp5.org/erp5admin/trunk/content/erp5admin/erp5admin_async.js?rev=21670&r1=21669&r2=21670&view=diff
==============================================================================
--- erp5admin/trunk/content/erp5admin/erp5admin_async.js (original)
+++ erp5admin/trunk/content/erp5admin/erp5admin_async.js Wed Jun 18 11:28:41 2008
@@ -115,12 +115,19 @@
         alert('could not find form_id');
         return;
     }
-    url = erp5admin_getSiteURL() + '/Admin_getFormLocationInfo?object_id=' + form_id ;
+    // see if we are in a skin
+    var m = erp5admin_getLocation().href.match(/portal_skins\/([^/]+)\//);
+    if(m != null){
+        skin_id = m[1];
+        url = erp5admin_getSiteURL() + '/Admin_getFormLocationInfo?object_id=' + form_id + '&skin_id=' + skin_id;
+    }else{
+        url = erp5admin_getSiteURL() + '/Admin_getFormLocationInfo?object_id=' + form_id ;
+    }
     erp5admin_sendRequest(url, erp5admin_displayFormLocation);
 }
 
 function erp5admin_displayFormLocation(val){
-    window.openDialog("chrome://erp5admin/content/location_info.xul", "webdeveloper-about-dialog", "centerscreen,chrome", val);
+    window.openDialog("chrome://erp5admin/content/location_info.xul", "erp5admin-location-dialog", "centerscreen,chrome,modal", val);
 }
 
 function erp5admin_inspectFromString(newtab){

Modified: erp5admin/trunk/content/erp5admin/location_info.css
URL: http://svn.erp5.org/erp5admin/trunk/content/erp5admin/location_info.css?rev=21670&r1=21669&r2=21670&view=diff
==============================================================================
--- erp5admin/trunk/content/erp5admin/location_info.css (original)
+++ erp5admin/trunk/content/erp5admin/location_info.css Wed Jun 18 11:28:41 2008
@@ -12,14 +12,14 @@
     padding: 0 !important;
 }
 
-#erp5admin-location_info-details
+/*#erp5admin-location_info-details
 {
     background-color: #ffffff !important;
     color: #000000 !important;
     padding: 0.5em !important;
-}
+}*/
 
-#erp5admin-location_info-details hbox
+/*#erp5admin-location_info-details hbox
 {
     background-position: top right !important;
     background-repeat: no-repeat !important;
@@ -48,6 +48,17 @@
     padding-top: 0.25em !important;
 }
 
+*/
+
+#erp5admin-location_info-details hbox
+{
+    min-height: 15px !important;
+}
+
+#location_main {
+    padding: 10px !important;
+}
+
 .url
 {
     color: #0000ff !important;
@@ -58,3 +69,7 @@
 {
     color: #ff0000 !important;
 }
+
+.erp5admin_location_link {font-weight:bold;}
+.erp5admin_location_header {font-weight:bold;}
+.erp5admin_location_comment {font-style:italic;}

Modified: erp5admin/trunk/content/erp5admin/location_info.js
URL: http://svn.erp5.org/erp5admin/trunk/content/erp5admin/location_info.js?rev=21670&r1=21669&r2=21670&view=diff
==============================================================================
--- erp5admin/trunk/content/erp5admin/location_info.js (original)
+++ erp5admin/trunk/content/erp5admin/location_info.js Wed Jun 18 11:28:41 2008
@@ -1,47 +1,126 @@
+function makeButton(label, cmd){
+    dsc = document.createElement('description');
+    dsc.setAttribute('value', '[' + label + ']');
+    dsc.setAttribute('onclick', cmd);
+    dsc.setAttribute('class', 'url');
+    return dsc;
+}
+
+
+function makeBox(skin_id, button_list, allow_jump){
+    box = document.createElement('hbox');
+    lab = document.createElement('description');
+    lab.setAttribute('value', skin_id);
+    if(allow_jump == true){
+        cmd = 'erp5admin_location_goto("' + info_dict['form_id'] + '", "' + skin_id + '")';
+        lab.setAttribute('onclick', cmd);
+        lab.setAttribute('class', 'url erp5admin_location_link');
+    }
+    box.appendChild(lab);
+    spc = document.createElement('spacer');
+    spc.setAttribute('flex', 1);
+    spc.setAttribute('minwidth', 50);
+    box.appendChild(spc);
+    for(var i=0;i<button_list.length;i++){
+        box.appendChild(button_list[i]);
+    }
+    return box;
+}
+
+
 function on_location_info_load(){
-    info_dict = parseDict(window.arguments[0]);
+    erp5admin_location_fill(window.arguments[0]);
+}
+
+
+function erp5admin_location_fill(info){
+    info_dict = parseDict(info);
+    form_id = info_dict['form_id'];
     document.getElementById('form_id').value = info_dict['form_id'];
-    document.getElementById('location').value = info_dict['location'];
+    loc = document.getElementById('location');
+    loc.value = info_dict['location'];
+    cmd = 'erp5admin_location_goto("' + info_dict['form_id'] + '", "' + info_dict['location'] + '")';
+    loc.setAttribute('onclick', cmd);
     var cont = document.getElementById('erp5admin-location_info-details');
-    if(info_dict['overwrites'] != null){
+    // remove all children
+    while (cont.firstChild) {
+      cont.removeChild(cont.firstChild);
+    }
+
+    if(info_dict['is_overwritten'] != null){
         head = document.createElement('label');
-        head.setAttribute('value', 'Overwrites ' + info_dict['form_id'] + ' in skins:');
+        head.setAttribute('value', 'Is overwritten by ' + info_dict['form_id'] + ' in skins:');
+        head.setAttribute('class', 'erp5admin_location_header');
         cont.appendChild(head);
-        for(var i=0;i<info_dict['overwrites'].length;i++){
-            n = document.createElement('label');
-            n.setAttribute('value', info_dict['overwrites'][i]);
-            cont.appendChild(n);
+        for(var i=0;i<info_dict['is_overwritten'].length;i++){
+            skin_id = info_dict['is_overwritten'][i];
+            box = makeBox(skin_id, new Array(), true);
+            cont.appendChild(box);
         }
     }else{
         head = document.createElement('label');
-        head.setAttribute('value', '(does not overwrite anything)');
+        head.setAttribute('value', '(is not overwritten)');
+        head.setAttribute('class', 'erp5admin_location_comment');
         cont.appendChild(head);
     }
     sep = document.createElement('separator');
     sep.setAttribute('class', 'groove');
     cont.appendChild(sep);
+
+    if(info_dict['overwrites'] != null){
+        head = document.createElement('label');
+        head.setAttribute('value', 'Overwrites ' + info_dict['form_id'] + ' in skins:');
+        head.setAttribute('class', 'erp5admin_location_header');
+        cont.appendChild(head);
+        for(var i=0;i<info_dict['overwrites'].length;i++){
+            skin_id = info_dict['overwrites'][i];
+            cmd = 'erp5admin_revert("' + form_id + '", "' + skin_id + '");window.close();';
+            but1 = makeButton('revert', cmd);
+            cmd = 'erp5admin_backupAndRevert("' + form_id + '", "' + skin_id + '");window.close();';
+            but2 = makeButton('backup and revert', cmd);
+            box = makeBox(skin_id, new Array(but1, but2), true);
+            cont.appendChild(box);
+        }
+    }else{
+        head = document.createElement('label');
+        head.setAttribute('value', '(does not overwrite anything)');
+        head.setAttribute('class', 'erp5admin_location_comment');
+        cont.appendChild(head);
+    }
+    sep = document.createElement('separator');
+    sep.setAttribute('class', 'groove');
+    cont.appendChild(sep);
+
     if(info_dict['customize'] != null){
         head = document.createElement('label');
         head.setAttribute('value', 'Can be customized in skins:');
         cont.appendChild(head);
         for(var i=0;i<info_dict['customize'].length;i++){
-            n = document.createElement('label');
-            n.setAttribute('value', info_dict['customize'][i]);
-            cont.appendChild(n);
+            skin_id = info_dict['customize'][i];
+            cmd = 'erp5admin_customize("' + form_id + '", "' + skin_id + '", "' + info_dict['location'] + '");window.close();';
+            but = makeButton('customize', cmd);
+            box = makeBox(skin_id, new Array(but), false);
+            cont.appendChild(box);
         }
+    }else{
+        head = document.createElement('label');
+        head.setAttribute('value', '(no place to customize)');
+        cont.appendChild(head);
     }
 }
 
 function parseDict(s){
     var dict = new Object();
     // find lists
-    var lists = s.match(/'[^']+':\s?\[[^]+?\]/g)
+    var lists = s.match(/'[^']+':\s?\[[^]*?\]/g)
     if(lists != null){
         for(var i=0;i<lists.length;i++){
             parms = lists[i].split(':');
             key = parms[0].replace(/'/g, "");
-            val = parms[1].replace(/'/g, "").replace(/\[/g, "").replace(/\]/g, "").split(',');
-            dict[key] = val;
+            val = parms[1].replace(/'/g, "").replace(/\[/g, "").replace(/\]/g, "").replace(/ */g, "").split(',');
+            if(val[0].length > 1){
+                dict[key] = val;
+            }
         }
     }
     // find strings
@@ -50,9 +129,58 @@
         for(var i=0;i<strs.length;i++){
             parms = strs[i].split(':');
             key = parms[0].replace(/'/g, "");
-            val = parms[1].replace(/'/g, "");
+            val = parms[1].replace(/'/g, "").replace(/ */g, "");
             dict[key] = val;
         }
     }
     return dict;
 }
+
+function erp5admin_customize(form_id, skin_id, source_skin_id){
+    site_url = erp5admin_location_getSiteURL();
+    cmd = site_url + '/Admin_customizeObject?object_id=' + form_id + '&skin_id=' + skin_id + '&source_skin_id=' + source_skin_id;
+    window.opener.content.document.location = cmd;
+}
+
+function erp5admin_backupAndRevert(form_id, skin_id){
+    site_url = erp5admin_location_getSiteURL();
+    cmd = site_url + '/Admin_revertObject?object_id=' + form_id + '&skin_id=' + skin_id + '&backup:boolean=True';
+    window.opener.content.document.location = cmd;
+}
+
+function erp5admin_revert(form_id, skin_id){
+    site_url = erp5admin_location_getSiteURL();
+    cmd = site_url + '/Admin_revertObject?object_id=' + form_id + '&skin_id=' + skin_id + '&backup:boolean=False';
+    window.opener.content.document.location = cmd;
+}
+
+function erp5admin_location_goto(form_id, skin_id){
+    // change content of the location dialog
+    var url = erp5admin_location_getSiteURL() + '/Admin_getFormLocationInfo?object_id=' + form_id + '&skin_id=' + skin_id;
+    erp5admin_sendRequest(url, erp5admin_location_fill);
+    // reload browser window
+    site_url = erp5admin_location_getSiteURL();
+    cmd = site_url + '/portal_skins/' + skin_id + '/' + form_id + '/manage_main';
+    // if we are not in skins then open new tab, otherwise just change location
+    var win = window.opener;
+    var m = win.content.document.location.href.match(/portal_skins\/([^/]+)\//);
+    var newtab;
+    if(m == null){
+        newtab = true;
+    }else{
+        newtab = false;
+    }
+    erp5admin_openUrlInTab(cmd, newtab, win);
+}
+
+function erp5admin_location_getSiteURL(){
+    href = window.opener.content.document.location;
+    root = '/';
+    path = href.pathname.split('/');
+    if(path[1] == 'erp5'){
+        root = '/erp5';
+    }
+    url = href.protocol + '//' + href.host + root;
+    return url
+}
+

Modified: erp5admin/trunk/content/erp5admin/location_info.xul
URL: http://svn.erp5.org/erp5admin/trunk/content/erp5admin/location_info.xul?rev=21670&r1=21669&r2=21670&view=diff
==============================================================================
--- erp5admin/trunk/content/erp5admin/location_info.xul (original)
+++ erp5admin/trunk/content/erp5admin/location_info.xul Wed Jun 18 11:28:41 2008
@@ -8,18 +8,20 @@
         onload="on_location_info_load();">
 
     <script type="application/x-javascript" src="chrome://erp5admin/content/erp5admin.js"/>
+    <script type="application/x-javascript" src="chrome://erp5admin/content/erp5admin_async.js"/>
     <script type="application/x-javascript" src="chrome://erp5admin/content/location_info.js"/>
 
-    <vbox id="erp5admin-location_info-details">
+    <vbox id="location_main">
         <hbox>
-            <label>Form/Script id:</label>
+            <label class="erp5admin_location_header">Form/Script id:</label>
             <description id="form_id">Form id</description>
         </hbox>
         <hbox>
-            <label>Default location:</label>
-            <description id="location">Default skin</description>
+            <label class="erp5admin_location_header">Location:</label>
+            <description id="location" class="url erp5admin_location_link">Default skin</description>
         </hbox>
         <separator class="groove"/>
+        <vbox id="erp5admin-location_info-details"/>
     </vbox>
     <separator class="groove"/>
 </dialog>

Modified: erp5admin/trunk/install.rdf
URL: http://svn.erp5.org/erp5admin/trunk/install.rdf?rev=21670&r1=21669&r2=21670&view=diff
==============================================================================
--- erp5admin/trunk/install.rdf (original)
+++ erp5admin/trunk/install.rdf Wed Jun 18 11:28:41 2008
@@ -9,7 +9,7 @@
  <em:id>{12a1584b-2123-473d-8752-e82e74e3cb1b}</em:id>
  <em:version>DEVELOPMENT</em:version>
  <em:description>Admin tool for ERP5 ZMI interface</em:description>
- <em:creator>Bartek Górny</em:creator>
+ <em:creator>Bartek Gorny</em:creator>
 
  <em:targetApplication>
  <Description>




More information about the Erp5-report mailing list