Changeset 1214

Show
Ignore:
Timestamp:
08/26/08 10:10:51
Author:
piv
Message:

fix page referesh in case action were empty in some categories, js/viewlets issues

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py

    r1209 r1214  
    1313from zope.exceptions import UserError 
    1414from zope.app.container.interfaces import INameChooser 
     15from zope.viewlet.interfaces import IViewletManager, IViewlet 
    1516 
    1617from Products.CMFCore.utils import getToolByName 
     
    796797        command = self.commands.addCommand('plonetabs-resetForm', selector) 
    797798     
     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     
    798825    # 
    799826    # Basic API to work with portal actions tool in a more pleasent way 
     
    859886    def updatePortalTabsPageSection(self): 
    860887        """ 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') 
    872894     
    873895    def updateSiteActionsPageSection(self): 
    874896        """ 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") 
    880912     
    881913    def updateUserPageSection(self): 
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/configure.zcml

    r1198 r1214  
    5353        /> 
    5454     
     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     
    5563</configure> 
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/plugins/plugin.js

    r1209 r1214  
    163163kukit.commandsGlobalRegistry.registerFromAction('plonetabs-updateSortable', kukit.cr.makeSelectorCommand); 
    164164 
    165 kukit.actionsGlobalRegistry.register('plonetabs-replaceOrAppend', function(oper) { 
    166     oper.componentName = '[plonetabs-replaceOrAppend] action'; 
    167     oper.evaluateParameters(['selector', 'html'], {'withKssSetup':true, 'alternative_html':''}); 
    168  
     165kukit.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'); 
    169175    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'; 
    183194            } 
    184195        } 
    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 
     203kukit.commandsGlobalRegistry.registerFromAction('plonetabs-replaceOrInsert', kukit.cr.makeSelectorCommand); 
     204 
     205