[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