Changeset 1198
- Timestamp:
- 08/07/08 04:13:55
- Files:
-
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup.plonetabs.egg-info/PKG-INFO (modified) (1 diff)
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup.plonetabs.egg-info/SOURCES.txt (modified) (3 diffs)
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/kssactions.zcml (modified) (1 diff)
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py (modified) (4 diffs)
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/resources/plonetabs.kss (modified) (3 diffs)
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/configure.zcml (modified) (5 diffs)
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/plugin.js (modified) (5 diffs)
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/profiles/default/jsregistry.xml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup.plonetabs.egg-info/PKG-INFO
r1174 r1198 1 1 Metadata-Version: 1.0 2 2 Name: quintagroup.plonetabs 3 Version: 0.5dev-r1 0953 Version: 0.5dev-r1193 4 4 Summary: Quintagroup Plone Tabs 5 5 Home-page: http://projects.quintagroup.com/products/wiki/qPloneTabs qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup.plonetabs.egg-info/SOURCES.txt
r1174 r1198 13 13 quintagroup.plonetabs.egg-info/namespace_packages.txt 14 14 quintagroup.plonetabs.egg-info/not-zip-safe 15 quintagroup.plonetabs.egg-info/paster_plugins.txt 15 16 quintagroup.plonetabs.egg-info/requires.txt 16 17 quintagroup.plonetabs.egg-info/top_level.txt … … 25 26 quintagroup/plonetabs/browser/interfaces.py 26 27 quintagroup/plonetabs/browser/kssactions.zcml 27 quintagroup/plonetabs/browser/manage.zcml28 28 quintagroup/plonetabs/browser/plonetabs.py 29 29 quintagroup/plonetabs/browser/resources.zcml … … 39 39 quintagroup/plonetabs/browser/templates/autogenerated.pt 40 40 quintagroup/plonetabs/browser/templates/plonetabs.pt 41 quintagroup/plonetabs/browser/templates/plonetabs_header_macro.pt 41 42 quintagroup/plonetabs/browser/templates/sections.pt 42 43 quintagroup/plonetabs/plugins/__init__.py qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/kssactions.zcml
r1193 r1198 67 67 /> 68 68 69 <browser:page 70 for="plone.app.kss.interfaces.IPortalObject" 71 attribute="kss_orderActions" 72 class=".plonetabs.PloneTabsControlPanel" 73 name="plonetabs-orderActions" 74 permission="cmf.ManagePortal" 75 /> 76 69 77 </configure> qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py
r1193 r1198 1 import copy, sys 1 import copy 2 import sys 3 import urllib 4 2 5 from Acquisition import aq_inner 3 6 from OFS.CopySupport import CopyError … … 36 39 "available_expr": "condition", 37 40 "visible": "visible"} 41 42 bad_id = re.compile(r'[^a-zA-Z0-9-_~,.$\(\)# @]').search 38 43 39 44 class PloneTabsControlPanel(PloneKSSView): … … 539 544 @kssaction 540 545 def kss_editAction(self): 541 """ KSS Method to update action"""546 """ Update action's properties """ 542 547 id, cat_name, data = self.parseEditForm(self.request.form) 543 548 … … 575 580 # send error message 576 581 kssplone.issuePortalMessage(_(u"Please correct the indicated errors."), msgtype="error") 582 583 @kssaction 584 def kss_orderActions(self): 585 """ Update actions order in the given category """ 586 form = self.request.form 587 cat_name = form['cat_name'] 588 category = self.getActionCategory(cat_name) 589 590 # decode URI components and collect ids from request 591 components = urllib.unquote(form['actions']).split('&') 592 if self.sufix == '': 593 ids = [component[len(self.prefix):] for component in components] 594 else: 595 ids = [component[len(self.prefix):-len(self.sufix)] for component in components] 596 597 # do actual sorting 598 category.moveObjectsByDelta(ids, -len(category.objectIds())) 599 600 # update client 601 self.updatePage(cat_name) 577 602 578 603 # qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/resources/plonetabs.kss
r1193 r1198 16 16 } 17 17 18 19 /* Add allowMultiSubmit class to submit buttons 20 to avoid those annoying warnings about form 'multisubmittion' */ 18 21 .add-controls input:load { 19 22 action-client: addClass; … … 21 24 } 22 25 23 .edit-controls input:load {26 /*.edit-controls input:load { 24 27 action-client: addClass; 25 28 addClass-value: allowMultiSubmit; 26 } 29 }*/ 27 30 28 31 /* Remember portal actions category */ … … 174 177 } 175 178 179 /* Reordering rules */ 180 #tabslist:load { 181 action-client: plonetabs-createSortable; 182 plonetabs-createSortable-handle: 'drag-handle'; 183 } 176 184 177 185 #tabslist li:load { 186 action-client: plonetabs-updateSortable; 187 plonetabs-updateSortable-handle: 'drag-handle'; 188 } qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/configure.zcml
r1194 r1198 12 12 command_factory="selector" 13 13 jsfile="plugin.js" 14 params_mandatory=""15 14 params_optional="protocol host pathname search searchparams searchvalues hash" 16 15 /> … … 20 19 command_factory="selector" 21 20 jsfile="plugin.js" 22 params_mandatory=""23 21 params_optional="collapsed expanded collapse" 24 22 /> … … 27 25 name="plonetabs-handleServerError" 28 26 jsfile="plugin.js" 29 params_mandatory=""30 27 params_optional="message" 31 28 /> … … 35 32 command_factory="selector" 36 33 jsfile="plugin.js" 37 params_mandatory=""38 params_optional=""39 34 /> 40 35 … … 44 39 jsfile="plugin.js" 45 40 params_mandatory="target var_name" 46 params_optional=""47 41 /> 48 42 43 <kss:action 44 name="plonetabs-createSortable" 45 command_factory="selector" 46 jsfile="plugin.js" 47 /> 48 49 <kss:action 50 name="plonetabs-updateSortable" 51 command_factory="selector" 52 jsfile="plugin.js" 53 /> 49 54 50 55 </configure> qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/plugin.js
r1194 r1198 4 4 /* KSS plugins for plonetabs */ 5 5 6 kukit.actionsGlobalRegistry.register( "plonetabs-redirectTo", function(oper) {7 ;;; oper.componentName = "[plonetabs-redirectTo] action";6 kukit.actionsGlobalRegistry.register('plonetabs-redirectTo', function(oper) { 7 ;;; oper.componentName = '[plonetabs-redirectTo] action'; 8 8 var wl = window.location; 9 oper.evaluateParameters([], { "protocol": wl.protocol,10 "host": wl.host,11 "pathname": wl.pathname,12 "search": wl.search,13 "searchparams" : "",14 "searchvalues" : "",15 "hash": wl.hash});9 oper.evaluateParameters([], {'protocol' : wl.protocol, 10 'host' : wl.host, 11 'pathname' : wl.pathname, 12 'search' : wl.search, 13 'searchparams' : '', 14 'searchvalues' : '', 15 'hash' : wl.hash}); 16 16 17 17 // normalize parameters 18 var protocol = oper.parms.protocol + (oper.parms.protocol[oper.parms.protocol.length - 1] == ":") ? "" : ":";18 var protocol = oper.parms.protocol + (oper.parms.protocol[oper.parms.protocol.length - 1] == ':') ? '' : ':'; 19 19 var host = oper.parms.host; 20 20 var pathname = oper.parms.pathname; 21 21 if ((params = oper.parms.searchparams) && (values = oper.parms.searchvalues)) { 22 search = "?";23 params = params.split( ",");24 values = values.split( ",");22 search = '?'; 23 params = params.split(','); 24 values = values.split(','); 25 25 for (var i = 0; i < params.length; i++) { 26 26 search += params[i] + '=' + values[i] + '&'; … … 29 29 } else { 30 30 search = oper.parms.search; 31 search = (search && search.substr(0, 1) == "?") ? search : (search ? "?" + search : "");31 search = (search && search.substr(0, 1) == '?') ? search : (search ? '?' + search : ''); 32 32 } 33 var hash = (oper.parms.hash.length > 1) ? ((oper.parms.hash.substr(0, 1) == "#" ? "" : "#") + oper.parms.hash) : "";33 var hash = (oper.parms.hash.length > 1) ? ((oper.parms.hash.substr(0, 1) == '#' ? '' : '#') + oper.parms.hash) : ''; 34 34 35 url = protocol + "//"+ host + pathname + search + hash;35 url = protocol + '//' + host + pathname + search + hash; 36 36 window.location.replace(url); 37 37 38 38 }); 39 39 40 kukit.commandsGlobalRegistry.registerFromAction( "plonetabs-redirectTo", kukit.cr.makeSelectorCommand);40 kukit.commandsGlobalRegistry.registerFromAction('plonetabs-redirectTo', kukit.cr.makeSelectorCommand); 41 41 42 42 43 kukit.actionsGlobalRegistry.register( "plonetabs-toggleCollapsible", function(oper) {44 ;;; oper.componentName = "[plonetabs-toggleCollapsible] action";45 oper.evaluateParameters([], { "collapsed" : "collapsedBlock",46 "expanded" : "expandedBlock",47 "collapse": "none"});43 kukit.actionsGlobalRegistry.register('plonetabs-toggleCollapsible', function(oper) { 44 ;;; oper.componentName = '[plonetabs-toggleCollapsible] action'; 45 oper.evaluateParameters([], {'collapsed' : 'collapsedBlock', 46 'expanded' : 'expandedBlock', 47 'collapse': 'none'}); 48 48 49 49 var node = oper.node.parentNode; // collapsible section 50 50 51 if (oper.parms.collapse != "none") {52 if (oper.parms.collapse == "true") {51 if (oper.parms.collapse != 'none') { 52 if (oper.parms.collapse == 'true') { 53 53 removeClassName(node, oper.parms.expanded); 54 54 addClassName(node, oper.parms.collapsed); … … 69 69 }); 70 70 71 kukit.commandsGlobalRegistry.registerFromAction( "plonetabs-toggleCollapsible", kukit.cr.makeSelectorCommand);71 kukit.commandsGlobalRegistry.registerFromAction('plonetabs-toggleCollapsible', kukit.cr.makeSelectorCommand); 72 72 73 73 74 kukit.actionsGlobalRegistry.register( "plonetabs-resetForm", function(oper) {75 ;;; oper.componentName = "[plonetabs-resetForm] action";74 kukit.actionsGlobalRegistry.register('plonetabs-resetForm', function(oper) { 75 ;;; oper.componentName = '[plonetabs-resetForm] action'; 76 76 oper.evaluateParameters([], {}); 77 77 78 if (typeof(oper.node.reset) == "function") {78 if (typeof(oper.node.reset) == 'function') { 79 79 oper.node.reset(); 80 80 } else { 81 kukit.logWarning( "plonetabs-resetForm: reset could only be executed on form element");81 kukit.logWarning('plonetabs-resetForm: reset could only be executed on form element'); 82 82 } 83 83 84 84 }); 85 85 86 kukit.commandsGlobalRegistry.registerFromAction( "plonetabs-resetForm", kukit.cr.makeSelectorCommand);86 kukit.commandsGlobalRegistry.registerFromAction('plonetabs-resetForm', kukit.cr.makeSelectorCommand); 87 87 88 88 89 kukit.actionsGlobalRegistry.register( "plonetabs-handleServerError", function(oper) {90 oper.componentName = "[plonetabs-handleServerError] action";91 oper.evaluateParameters([], { "message": kukit.E});89 kukit.actionsGlobalRegistry.register('plonetabs-handleServerError', function(oper) { 90 oper.componentName = '[plonetabs-handleServerError] action'; 91 oper.evaluateParameters([], {'message' : kukit.E}); 92 92 alert(oper.parms.message); 93 93 }); … … 96 96 var PLONETABS_ADD_PATTERN = new RegExp('[^a-zA-Z0-9-_~,.\\$\\(\\)# ]','g'); 97 97 98 kukit.actionsGlobalRegistry.register( "plonetabs-generateId", function(oper) {99 oper.componentName = "[plonetabs-generateId] action";100 oper.evaluateParameters([ "target", "var_name"], {});98 kukit.actionsGlobalRegistry.register('plonetabs-generateId', function(oper) { 99 oper.componentName = '[plonetabs-generateId] action'; 100 oper.evaluateParameters(['target', 'var_name'], {}); 101 101 102 102 var source = oper.node; 103 103 var var_name = oper.parms.var_name; 104 var initialValue = typeof(kukit.engine.stateVariables[var_name]) != "undefined"? kukit.engine.stateVariables[var_name] : '';104 var initialValue = typeof(kukit.engine.stateVariables[var_name]) != 'undefined' ? kukit.engine.stateVariables[var_name] : ''; 105 105 var target = document.getElementById(oper.parms.target); 106 106 107 107 if (target == null) { 108 kukit.logWarning( "plonetabs-generateId: target element ('" + oper.parms.target + "') not found");108 kukit.logWarning('plonetabs-generateId: target element ("' + oper.parms.target + '") not found'); 109 109 return ; 110 110 } … … 116 116 117 117 }); 118 119 function plonetabs_notifySortableUpdate(element, oper) { 120 var draggables = element.getElementsByTagName('LI'); 121 var ids = []; 122 for (var i = 0, o; o = draggables[i]; i++) { 123 ids.push(o.id); 124 } 125 oper.parms = {'actions': ids.join('&'), 'cat_name': kukit.engine.stateVariables['plonetabs-category']}; 126 oper.executeServerAction('plonetabs-orderActions'); 127 } 128 129 kukit.actionsGlobalRegistry.register('plonetabs-createSortable', function(oper) { 130 oper.componentName = '[plonetabs-createSortable] action'; 131 oper.evaluateParameters([], {}, '', true); 132 var parms = oper.clone().parms; 133 134 var new_oper = oper.clone(); 135 parms['onUpdate'] = function(element){plonetabs_notifySortableUpdate(element, new_oper);}; 136 Sortable.create(oper.node, parms); 137 }); 138 139 kukit.actionsGlobalRegistry.register('plonetabs-updateSortable', function(oper) { 140 oper.componentName = '[plonetabs-updateSortable] action'; 141 oper.evaluateParameters([], {}, '', true); 142 var parms = oper.clone().parms; 143 var node = oper.node; 144 var sort_list = node.parentNode; 145 var options_ = Sortable.sortables[sort_list.id]; 146 147 if (typeof(options_) != 'undefined') { 148 // check whether node element isn't already registered as draggables 149 for (var i = 0, drag; drag = options_.draggables[i]; i++) { 150 if (node == drag.element) { 151 return false; 152 } 153 } 154 // destroy sortable list 155 Sortable.destroy(sort_list.id); 156 } 157 158 var new_oper = oper.clone(); 159 parms['onUpdate'] = function(element){plonetabs_notifySortableUpdate(element, new_oper);}; 160 Sortable.create(sort_list, parms); 161 }); 162 163 kukit.commandsGlobalRegistry.registerFromAction('plonetabs-updateSortable', kukit.cr.makeSelectorCommand); 164 qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/profiles/default/jsregistry.xml
r1194 r1198 1 1 <?xml version="1.0"?> 2 2 <object name="portal_javascripts" meta_type="JavaScripts Registry"> 3 <javascript cacheable="True" compression="safe" cookable="True"4 enabled="True" expression="" id="++resource++prototype.js" inline="False" />5 <javascript cacheable="True" compression="safe" cookable="True"6 enabled="True" expression="" id="++resource++effects.js" inline="False" />7 3 <javascript cacheable="True" compression="safe" cookable="True" enabled="True" 8 expression="" id="++resource++sa_dragdrop.js" inline="False" insert-after="++resource++effects.js" /> 4 expression="python:request['URL'].endswith('/@@plonetabs-controlpanel')" id="++resource++prototype.js" inline="False" insert-bottom="True" /> 5 <javascript cacheable="True" compression="safe" cookable="True" enabled="True" 6 expression="python:request['URL'].endswith('/@@plonetabs-controlpanel')" id="++resource++effects.js" inline="False" insert-after="++resource++prototype.js"/> 7 <javascript cacheable="True" compression="safe" cookable="True" enabled="True" 8 expression="python:request['URL'].endswith('/@@plonetabs-controlpanel')" id="++resource++sa_dragdrop.js" inline="False" insert-after="++resource++effects.js" /> 9 9 </object>
