Changeset 1214
- Timestamp:
- 08/26/08 10:10:51
- Files:
-
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py (modified) (3 diffs)
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/configure.zcml (modified) (1 diff)
- qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/plugin.js (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py
r1209 r1214 13 13 from zope.exceptions import UserError 14 14 from zope.app.container.interfaces import INameChooser 15 from zope.viewlet.interfaces import IViewletManager, IViewlet 15 16 16 17 from Products.CMFCore.utils import getToolByName … … 796 797 command = self.commands.addCommand('plonetabs-resetForm', selector) 797 798 799 def kss_replaceOrInsert(self, selector, parentSelector, html, withKssSetup='True', alternativeHTML='', selectorType='', 800 position='', positionSelector='', positionSelectorType=''): 801 """ KSS Server command to execute replaceOrInsert client action """ 802 command = self.commands.addCommand('plonetabs-replaceOrInsert', selector) 803 data = command.addParam('selector', parentSelector) 804 data = command.addHtmlParam('html', html) 805 data = command.addParam('withKssSetup', withKssSetup) 806 if alternativeHTML: 807 data = command.addHtmlParam('alternativeHTML', alternativeHTML) 808 if selectorType: 809 data = command.addParam('selectorType', selectorType) 810 if position: 811 data = command.addParam('position', position) 812 if positionSelector: 813 data = command.addParam('positionSelector', positionSelector) 814 if positionSelectorType: 815 data = command.addParam('positionSelectorType', positionSelectorType) 816 817 def renderViewlet(self, manager, name): 818 if isinstance(manager, basestring): 819 manager = getMultiAdapter((self.context, self.request, self,), IViewletManager, name=manager) 820 renderer = getMultiAdapter((self.context, self.request, self, manager), IViewlet, name=name) 821 renderer = renderer.__of__(self.context) 822 renderer.update() 823 return renderer.render() 824 798 825 # 799 826 # Basic API to work with portal actions tool in a more pleasent way … … 859 886 def updatePortalTabsPageSection(self): 860 887 """ Method for updating global-sections on client """ 861 #ksscore = self.getCommandSet("core") 862 #ksscore.replaceHTML( 863 #ksscore.getHtmlIdSelector("portal-globalnav"), 864 #self.sections_template(), 865 #withKssSetup="False") 866 867 ksszope = self.getCommandSet("zope") 868 ksszope.refreshViewlet( 869 self.getCommandSet("core").getHtmlIdSelector("portal-globalnav"), 870 "plone.portalheader", 871 "plone.global_sections") 888 ksscore = self.getCommandSet("core") 889 self.kss_replaceOrInsert(ksscore.getHtmlIdSelector("portal-header"), 890 "portal-globalnav", 891 self.sections_template(), 892 withKssSetup='False', 893 selectorType='htmlid') 872 894 873 895 def updateSiteActionsPageSection(self): 874 896 """ Method for updating site action on client """ 875 ksszope = self.getCommandSet("zope") 876 ksszope.refreshViewlet( 877 self.getCommandSet("core").getHtmlIdSelector("portal-siteactions"), 878 "plone.portalheader", 879 "plone.site_actions") 897 ksscore = self.getCommandSet("core") 898 self.kss_replaceOrInsert(ksscore.getHtmlIdSelector("portal-header"), 899 "portal-siteactions", 900 self.renderViewlet("plone.portalheader", "plone.site_actions"), 901 withKssSetup='False', 902 selectorType='htmlid', 903 position="before", 904 positionSelector="portal-searchbox", 905 positionSelectorType="htmlid") 906 907 #ksszope = self.getCommandSet("zope") 908 #ksszope.refreshViewlet( 909 #self.getCommandSet("core").getHtmlIdSelector("portal-siteactions"), 910 #"plone.portalheader", 911 #"plone.site_actions") 880 912 881 913 def updateUserPageSection(self): qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/configure.zcml
r1198 r1214 53 53 /> 54 54 55 <kss:action 56 name="plonetabs-replaceOrInsert" 57 command_factory="selector" 58 jsfile="plugin.js" 59 params_mandatory="selector html" 60 params_optional="alternativeHTML selectorType position positionSelector positionSelectorType withKssSetup" 61 /> 62 55 63 </configure> qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/plugin.js
r1209 r1214 163 163 kukit.commandsGlobalRegistry.registerFromAction('plonetabs-updateSortable', kukit.cr.makeSelectorCommand); 164 164 165 kukit.actionsGlobalRegistry.register('plonetabs-replaceOrAppend', function(oper) { 166 oper.componentName = '[plonetabs-replaceOrAppend] action'; 167 oper.evaluateParameters(['selector', 'html'], {'withKssSetup':true, 'alternative_html':''}); 168 165 kukit.actionsGlobalRegistry.register('plonetabs-replaceOrInsert', function(oper) { 166 oper.componentName = '[plonetabs-replaceOrInsert] action'; 167 var defaultSelectorType = kukit.selectorTypesGlobalRegistry.defaultSelectorType 168 oper.evaluateParameters(['selector', 'html'], {'alternativeHTML': '', 169 'selectorType': defaultSelectorType, 170 'position': 'last', // can be one of the following: first, last, after, before 171 'positionSelector': '', // work together with position=after|before 172 'positionSelectorType': defaultSelectorType, 173 'withKssSetup': true}); 174 oper.evalBool('withKssSetup'); 169 175 var parentNode = oper.node; 170 171 var 172 173 var parms = oper.clone().parms; 174 var node = oper.node; 175 var sort_list = node.parentNode; 176 var options_ = Sortable.sortables[sort_list.id]; 177 178 if (typeof(options_) != 'undefined') { 179 // check whether node element isn't already registered as draggables 180 for (var i = 0, drag; drag = options_.draggables[i]; i++) { 181 if (node == drag.element) { 182 return false; 176 var nodes = kukit.selectorTypesGlobalRegistry.get(oper.parms.selectorType)(oper.parms.selector, parentNode); 177 if (nodes.length > 0) { 178 var content = oper.parms.html; 179 var new_node = nodes[0]; 180 var action_ = 'replaceHTML'; 181 } else { 182 var content = oper.parms.alternativeHTML ? oper.parms.alternativeHTML : oper.parms.html; 183 var action_ = 'insertHTMLAsLastChild'; 184 var new_node = parentNode; 185 var position = oper.parms.position; 186 if (position == 'first') { 187 action_ = 'insertHTMLAsFirstChild'; 188 } else if (position == 'after' || position == 'before') { 189 var posSelector = kukit.selectorTypesGlobalRegistry.get(oper.parms.positionSelectorType); 190 nodes = posSelector(oper.parms.positionSelector, new_node); 191 if (nodes.length > 0) { 192 new_node = nodes[0]; 193 action_ = (position == 'after') ? 'insertHTMLAfter' : 'insertHTMLBefore'; 183 194 } 184 195 } 185 // destroy sortable list 186 Sortable.destroy(sort_list.id); 187 } 188 189 var new_oper = oper.clone(); 190 parms['onUpdate'] = function(element){plonetabs_notifySortableUpdate(element, new_oper);}; 191 Sortable.create(sort_list, parms); 192 }); 193 194 kukit.commandsGlobalRegistry.registerFromAction('plonetabs-replaceOrAppend', kukit.cr.makeSelectorCommand); 195 196 196 } 197 var new_oper = new kukit.op.Oper({'node': new_node, 198 'parms': {'html': content, 199 'withKssSetup': oper.parms.withKssSetup}}); 200 kukit.actionsGlobalRegistry.get(action_)(new_oper); 201 }); 202 203 kukit.commandsGlobalRegistry.registerFromAction('plonetabs-replaceOrInsert', kukit.cr.makeSelectorCommand); 204 205
