Changeset 1189

Show
Ignore:
Timestamp:
07/29/08 08:28:34
Author:
piv
Message:

refactored actions ajax visibility switching method

Files:

Legend:

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

    r1177 r1189  
    1313    <browser:page 
    1414        for="plone.app.kss.interfaces.IPortalObject" 
    15         attribute="toggleActionsVisibility" 
     15        attribute="kss_toggleActionsVisibility" 
    1616        class=".plonetabs.PloneTabsControlPanel" 
    1717        name="plonetabs-toggleActionsVisibility" 
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py

    r1188 r1189  
    391391     
    392392    @kssaction 
    393     def toggleActionsVisibility(self, id, checked='0', category=None): 
    394         """ Toggle visibility for portal actions """ 
    395         portal_actions = getToolByName(self.context, "portal_actions") 
    396         cat_container, act_id = self.validateAction(id, category) 
     393    def toggleRootsVisibility(self, id, checked='0'): 
     394        """ Toggle visibility for portal root objects (exclude_from_nav) """ 
     395        portal = getMultiAdapter((aq_inner(self.context), self.request), name='plone_portal_state').portal() 
     396         
     397        # remove prefix, added for making ids on configlet unique ("roottabs_") 
     398        obj_id = id[len("roottabs_"):] 
     399         
     400        if obj_id not in portal.objectIds(): 
     401            raise KSSExplicitError, "Object with %s id doesn't exist in portal root" % obj_id 
    397402         
    398403        if checked == '1': 
     
    401406            checked = False 
    402407         
    403         cat_container[act_id].visible = checked 
     408        portal[obj_id].update(excludeFromNav=not checked) 
    404409         
    405410        ksscore = self.getCommandSet("core") 
     
    409414            ksscore.addClass(ksscore.getHtmlIdSelector(id), value="invisible") 
    410415         
    411         self.updatePage(cat_name) 
    412      
    413     @kssaction 
    414     def toggleRootsVisibility(self, id, checked='0'): 
    415         """ Toggle visibility for portal root objects (exclude_from_nav) """ 
    416         portal = getMultiAdapter((aq_inner(self.context), self.request), name='plone_portal_state').portal() 
    417          
    418         # remove prefix, added for making ids on configlet unique ("roottabs_") 
    419         obj_id = id[len("roottabs_"):] 
    420          
    421         if obj_id not in portal.objectIds(): 
    422             raise KSSExplicitError, "Object with %s id doesn't exist in portal root" % obj_id 
    423          
    424         if checked == '1': 
    425             checked = True 
    426         else: 
    427             checked = False 
    428          
    429         portal[obj_id].update(excludeFromNav=not checked) 
    430          
    431         ksscore = self.getCommandSet("core") 
    432         if checked: 
    433             ksscore.removeClass(ksscore.getHtmlIdSelector(id), value="invisible") 
    434         else: 
    435             ksscore.addClass(ksscore.getHtmlIdSelector(id), value="invisible") 
    436          
    437416        # update global-sections viewlet 
    438417        self.updatePortalTabs() 
     418     
     419    @kssaction 
     420    def kss_toggleActionsVisibility(self, id, checked='0', cat_name=None): 
     421        """ Toggle visibility for portal actions """ 
     422        # validate input 
     423        act_id, category, action = self.kss_validateAction(id, cat_name) 
     424        self.updateAction(act_id, cat_name, {'id': act_id, 'visible': (checked == '1') or False}) 
     425         
     426        # update client 
     427        ksscore = self.getCommandSet("core") 
     428        method = (checked == '1') and ksscore.removeClass or ksscore.addClass 
     429        method(ksscore.getHtmlIdSelector(id), value="invisible") 
     430        self.updatePage(cat_name) 
    439431     
    440432    @kssaction 
     
    447439        # update client 
    448440        ksscore = self.getCommandSet("core") 
     441        # XXX TODO: fade effect during removing, to do this we need kukit js action/command plugin 
    449442        ksscore.deleteNode(ksscore.getHtmlIdSelector(id)) 
    450443        self.kss_checkReorderControls(category) 
    451         # XXX TODO: fade effect during removing, for this kukit js action/command plugin needed 
    452444        self.updatePage(cat_name) 
    453445     
     
    666658         
    667659        # update action properties 
    668         for attr in ACTION_ATTRS
     660        for attr in data.keys()
    669661            if data.has_key(attr): 
    670662                action._setPropValue(attr, data[attr]) 
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/resources/plonetabs.kss

    r1188 r1189  
    99/* General stylesheet for Plone Tabs AJAX configlet */ 
    1010 
    11 /* Add class to body to allow conditional styling when kss is available */ 
    12  
     11/* Add 'kssTabsActive' class to application root element 
     12   to enable ajax styles when kss is available */ 
    1313#plonetabs_form:load { 
    1414  action-client: addClass; 
     
    1616} 
    1717 
     18/* Remember portal actions category */ 
    1819#select_category:load { 
    1920    action-client: setStateVar; 
     
    2223} 
    2324 
     25/* Change portal actions category page */ 
    2426#select_category:change { 
    2527    action-client: plonetabs-redirectTo; 
     
    5860    plonetabs-toggleActionsVisibility-id: nodeAttr(id, true); 
    5961    plonetabs-toggleActionsVisibility-checked: currentFormVar(); 
    60     plonetabs-toggleActionsVisibility-category: stateVar(plonetabs-category); 
     62    plonetabs-toggleActionsVisibility-cat_name: stateVar(plonetabs-category); 
     63    plonetabs-toggleActionsVisibility-error: plonetabs-handleServerError; 
    6164} 
    6265