Changeset 1201

Show
Ignore:
Timestamp:
08/07/08 09:48:08
Author:
piv
Message:

Make switching between categories without page reload, fixed one more bug

Files:

Legend:

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

    r1085 r1201  
    2222        """ Return html code for actions list with given category """ 
    2323     
     24    def getAutoGenereatedSection(cat_name, errors): 
     25        """ Return html code for all autogenerated section """ 
     26     
    2427    def getGeneratedTabs(): 
    2528        """ Return html code for autogenerated tabs """ 
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/kssactions.zcml

    r1198 r1201  
    7474        permission="cmf.ManagePortal" 
    7575        /> 
     76    <browser:page 
     77        for="plone.app.kss.interfaces.IPortalObject" 
     78        attribute="kss_changeCategory" 
     79        class=".plonetabs.PloneTabsControlPanel" 
     80        name="plonetabs-changeCategory" 
     81        permission="cmf.ManagePortal" 
     82        /> 
    7683     
    7784</configure> 
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/plonetabs.py

    r1200 r1201  
    5050    actionslist_template = ViewPageTemplateFile("templates/actionslist.pt") 
    5151    autogenerated_template = ViewPageTemplateFile("templates/autogenerated.pt") 
     52    autogenerated_list = ViewPageTemplateFile("templates/autogeneratedlist.pt") 
    5253     
    5354    # custom templates used to update page sections 
     
    285286        return self.actionslist_template(**kw) 
    286287     
     288    def getAutoGenereatedSection(self, cat_name, errors={}): 
     289        """ See interface """ 
     290        return self.autogenerated_template(category=cat_name, errors=errors) 
     291     
    287292    def getGeneratedTabs(self): 
    288293        """ See interface """ 
    289         return self.autogenerated_template() 
     294        return self.autogenerated_list() 
    290295     
    291296    def getRootTabs(self): 
     
    385390    ########################## 
    386391     
     392    #@kssaction 
     393    def kss_changeCategory(self, cat_name): 
     394        """ Change action category to manage """ 
     395        ksscore = self.getCommandSet('core') 
     396         
     397        # update actions list 
     398        actionslist = self.getActionsList(category=cat_name) 
     399        ksscore.replaceInnerHTML(ksscore.getHtmlIdSelector('tabslist'), actionslist) 
     400         
     401        # update autogenerated sections 
     402        section = self.getAutoGenereatedSection(cat_name) 
     403        ksscore.replaceHTML(ksscore.getHtmlIdSelector('autogeneration_section'), section) 
     404         
     405        # update category hidden field on adding form 
     406        ksscore.setAttribute(ksscore.getCssSelector('#addaction input[name=category]'), 'value', cat_name) 
     407         
     408        # update state variable 'plonetabs-category' on client  
     409        ksscore.setStateVar('plonetabs-category', cat_name) 
     410        return self.render() 
     411     
    387412    @kssaction 
    388413    def kss_toggleGeneratedTabs(self, field, checked='0'): 
     
    525550        # update client 
    526551        ksscore = self.getCommandSet("core") 
    527         content = self.actionslist_template(tabs=[action_info,]) 
     552        content = self.getActionsList(category=cat_name, tabs=[action_info,]) 
    528553        ksscore.replaceHTML(ksscore.getHtmlIdSelector(id), content) 
    529554         
     
    538563        # update client 
    539564        ksscore = self.getCommandSet("core") 
    540         content = self.actionslist_template(tabs=[action,]) 
     565        content = self.getActionsList(category=cat_name, tabs=[action,]) 
    541566        ksscore.replaceHTML(ksscore.getHtmlIdSelector(id), content) 
    542567     
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/resources/plonetabs.kss

    r1200 r1201  
    2929}*/ 
    3030 
    31 /* Remember portal actions category */ 
    32 #select_category:load { 
    33     action-client: setStateVar; 
    34     setStateVar-varname: plonetabs-category; 
    35     setStateVar-value: currentFormVar(); 
    36 } 
    37  
    3831/* Collapse expanded sections on load */ 
    3932.collapseAdvanced:load { 
     
    4437} 
    4538 
     39/* Remember portal actions category */ 
     40#select_category:load { 
     41    action-client: setStateVar; 
     42    setStateVar-varname: plonetabs-category; 
     43    setStateVar-value: currentFormVar(); 
     44} 
     45 
    4646/* Change portal actions category page */ 
    4747#select_category:change { 
    48     action-client: plonetabs-redirectTo
    49     plonetabs-redirectTo-searchparams: 'category'
    50     plonetabs-redirectTo-searchvalues: currentFormVar()
     48    action-server: plonetabs-changeCategory
     49    plonetabs-changeCategory-cat_name: currentFormVar()
     50    plonetabs-changeCategory-error: plonetabs-handleServerError
    5151} 
    5252 
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/templates/autogenerated.pt

    r1174 r1201  
    11<metal:header_macro use-macro="context/@@plonetabs-header-macro/macros/header" /> 
    22 
    3 <tal:tabs tal:define="dummy python:request.RESPONSE.setHeader('Expires', 'Mon, 26 Jul 1996 05:00:00 GMT')" 
    4           tal:repeat="tab view/getRootTabs"> 
    5 <li tal:define="id tab/id; 
    6                 visible not: tab/exclude_from_nav" 
    7     tal:attributes="id string:roottabs_${id}; 
    8                     title tab/description|nothing; 
    9                     class python:view.test(visible, '', 'invisible')"> 
    10   <div class="bridge"> 
    11     <input type="checkbox" class="visibility" value="1" name="id"  title="visibility" 
    12            tal:attributes="name id; 
    13                            checked python:view.test(visible, 'checked', None)" /> 
     3  <div id="autogeneration_section" 
     4       tal:define="category options/category; 
     5                   errors options/errors|nothing; 
     6                   test nocall:view/test"> 
     7 
     8    <form name="generated_tabs_form" 
     9          action="@@plonetabs-controlpanel" 
     10          method="post" 
     11          tal:attributes="action string:${portal_url}/${attrs/action}" 
     12          tal:condition="python:category == 'portal_tabs'"> 
     13 
     14      <input type="hidden" name="form.submitted:boolean" value="True" /> 
     15 
     16      <div class="field" 
     17           tal:define="generated_tabs request/generated_tabs|view/isGeneratedTabs; 
     18                       error errors/generated_tabs|nothing" 
     19           tal:attributes="class python:test(error, 'field error', 'field')"> 
     20        <input type="checkbox" 
     21               id="generated_tabs" 
     22               name="generated_tabs" 
     23               value="1" 
     24               tal:attributes="checked python:test(generated_tabs, 'checked', None)" /> 
     25        <label for="generated_tabs" i18n:translate="label_generated_tabs_enable">Automatically generate tabs</label> 
     26        <div class="formHelp" i18n:translate="help_generated_tabs"> 
     27          By default, all folders created at the root level will have global section 
     28          navigation generated. You can turn this off if you prefer manually constructing 
     29          this part of the navigation. 
     30        </div> 
     31      </div> 
     32 
     33      <div class="field" 
     34           tal:define="nonfolderish_tabs request/nonfolderish_tabs|view/isNotFoldersGenerated; 
     35                       error errors/nonfolderish_tabs|nothing" 
     36           tal:attributes="class python:test(error, 'field error', 'field')"> 
     37        <input type="checkbox" 
     38               id="nonfolderish_tabs" 
     39               name="nonfolderish_tabs" 
     40               value="1" 
     41               tal:attributes="checked python:test(nonfolderish_tabs, 'checked', None)" /> 
     42        <label for="nonfolderish_tabs" i18n:translate="label_nonfolderish_tabs_enable">Generate tabs for items other than folders</label> 
     43        <div class="formHelp" i18n:translate="help_nonfolderish_tabs"> 
     44          By default, any content item in the root of the portal will be shown as 
     45          a global section. If you turn this option off, only folders will be shown. 
     46          This only has an effect if "Automatically generate tabs" is enabled 
     47        </div> 
     48      </div> 
     49 
     50      <ul class="csshover" id="roottabs" 
     51          tal:content="structure view/getGeneratedTabs" /> 
     52 
     53      <div id="autogeneration_controls"> 
     54          <input class="submit-button" type="submit" name="autogenerated.save" value="Save" /> 
     55      </div> 
     56 
     57    </form> 
     58 
    1459  </div> 
    15   <span class="url-helper" tal:content="tab/url">Tab Action</span> 
    16   <span class="tab-title"  tal:content="tab/name">Tab Name</span> 
    17 </li> 
    18 </tal:tabs> 
  • qPloneTabs/branches/quintagroup.plonetabs/trunk/quintagroup/plonetabs/browser/templates/plonetabs.pt

    r1199 r1201  
    144144  </form> 
    145145 
    146   <div id="autogeneration_section" tal:condition="python:category == 'portal_tabs'"> 
    147  
    148     <form name="generated_tabs_form" 
    149           action="@@plonetabs-controlpanel" 
    150           method="post" 
    151           tal:attributes="action string:${portal_url}/${attrs/action}"> 
    152  
    153       <input type="hidden" name="form.submitted:boolean" value="True" /> 
    154  
    155       <div class="field" 
    156            tal:define="generated_tabs request/generated_tabs|view/isGeneratedTabs; 
    157                        error errors/generated_tabs|nothing" 
    158            tal:attributes="class python:test(error, 'field error', 'field')"> 
    159         <input type="checkbox" 
    160                id="generated_tabs" 
    161                name="generated_tabs" 
    162                value="1" 
    163                tal:attributes="checked python:test(generated_tabs, 'checked', None)" /> 
    164         <label for="generated_tabs" i18n:translate="label_generated_tabs_enable">Automatically generate tabs</label> 
    165         <div class="formHelp" i18n:translate="help_generated_tabs"> 
    166           By default, all folders created at the root level will have global section 
    167           navigation generated. You can turn this off if you prefer manually constructing 
    168           this part of the navigation. 
    169         </div> 
    170       </div> 
    171  
    172       <div class="field" 
    173            tal:define="nonfolderish_tabs request/nonfolderish_tabs|view/isNotFoldersGenerated; 
    174                        error errors/nonfolderish_tabs|nothing" 
    175            tal:attributes="class python:test(error, 'field error', 'field')"> 
    176         <input type="checkbox" 
    177                id="nonfolderish_tabs" 
    178                name="nonfolderish_tabs" 
    179                value="1" 
    180                tal:attributes="checked python:test(nonfolderish_tabs, 'checked', None)" /> 
    181         <label for="nonfolderish_tabs" i18n:translate="label_nonfolderish_tabs_enable">Generate tabs for items other than folders</label> 
    182         <div class="formHelp" i18n:translate="help_nonfolderish_tabs"> 
    183           By default, any content item in the root of the portal will be shown as 
    184           a global section. If you turn this option off, only folders will be shown. 
    185           This only has an effect if "Automatically generate tabs" is enabled 
    186         </div> 
    187       </div> 
    188  
    189       <ul class="csshover" id="roottabs" 
    190           tal:content="structure view/getGeneratedTabs" /> 
    191  
    192       <div id="autogeneration_controls"> 
    193           <input class="submit-button" type="submit" name="autogenerated.save" value="Save" /> 
    194       </div> 
    195  
    196     </form> 
    197  
    198   </div> 
     146  <tal:autogenerated_section tal:replace="structure python:view.getAutoGenereatedSection(cat_name=category, errors=errors)" /> 
    199147 
    200148</div>