Ignore:
Timestamp:
Aug 14, 2006 12:44:42 PM (18 years ago)
Author:
piv
Message:

added ajax congiglet with necessary functionality (but not sufficient)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • qPloneDropDownMenu/branches/0.2/Extensions/Install.py

    r59 r463  
    44from Products.CMFCore.utils import getToolByName 
    55from Products.CMFCore.DirectoryView import addDirectoryViews 
    6  
    7 from Products.CMFPlone.migrations.migration_util import safeEditProperty 
    8 from Products.CMFCore.Expression import Expression, createExprContext 
     6from Products.CMFCore.CMFCorePermissions import ManagePortal 
    97 
    108from Products.qPloneDropDownMenu.config import * 
    119 
    12 configlets = ({'id':PROJECT_NAME, 
     10configlets = ({'id':PROJECTNAME, 
    1311    'name':'Drop Down Menu', 
    1412    'action':'string:${portal_url}/prefs_dropdownmenu_edit_form', 
     
    1614    'category':'Products', 
    1715    'visible':1, 
    18     'appId':PROJECT_NAME, 
    19     'permission':VIEW_PERMISSION, 
    20     'imageUrl':'qplonedropdownmenu.gif'}, 
    21    {'id':'csshover', 
    22     'name':'CSS Hover', 
    23     'action':'string:${portal_url}/prefs_csshover_edit_form', 
    24     'condition':'', 
    25     'category':'Products', 
    26     'visible':1, 
    27     'appId':'csshover', 
    28     'permission':VIEW_PERMISSION},) 
     16    'appId':PROJECTNAME, 
     17    'permission':ManagePortal, 
     18    'imageUrl':'qplonedropdownmenu.gif'},) 
     19 
     20def setupConfiglets(self, out): 
     21    configTool = getToolByName(self, 'portal_controlpanel', None) 
     22    if configTool: 
     23        for conf in configlets: 
     24            configTool.registerConfiglet(**conf) 
     25            out.write('Added configlet %s\n' % conf['id']) 
     26 
     27def removeConfiglets(self, out): 
     28    configTool = getToolByName(self, 'portal_controlpanel', None) 
     29    if configTool: 
     30        for conf in configlets: 
     31            configTool.unregisterConfiglet(conf['id']) 
     32            out.write('Removed configlet %s\n' % conf['id']) 
    2933 
    3034def registerCSS(self, out): 
    31  
    3235    qi = getToolByName(self, 'portal_quickinstaller', None) 
    3336    if qi is not None: 
     
    4952 
    5053def unregisterCSS(self, out): 
    51  
    5254    qi = getToolByName(self, 'portal_quickinstaller', None) 
    5355    if qi is not None: 
     
    6567            pass 
    6668 
    67 def updateMenu(self): 
    68     out = '' 
    69  
    70     pu = getToolByName(self, 'plone_utils') 
    71  
    72     if hasattr(pu, 'createTopLevelTabs'): 
    73         pactions = getToolByName(self, 'portal_actions').listFilteredActionsFor(self) 
    74         tl_tabs = pu.createTopLevelTabs(pactions) 
    75  
    76         for act in tl_tabs: 
    77                 out += '<li id="portaltab-%s" class="plain"><a href="%s" accesskey="t">' % \ 
    78                     (act['id'], act['url']) + act['name'] + '</a></li>\n' 
    79     else: 
    80         portal = getToolByName(self, 'portal_url').getPortalObject() 
    81  
    82         portal_act = getToolByName(self, 'portal_actions') 
    83         actions=portal_act._cloneActions() 
    84  
    85         for act in actions: 
    86             if act.category == 'portal_tabs': 
    87                 out += '<li id="portaltab-%s" class="plain"><a href="%s" accesskey="t">%s</a></li>\n' % \ 
    88                     (act.id, \ 
    89                      Expression(act.getActionExpression())(createExprContext(portal, portal, portal)), \ 
    90                      act.title) 
    91  
    92     portal_props = getToolByName(self, 'portal_properties') 
    93     if not hasattr(portal_props, PROPERTY_SHEET): 
    94         portal_props.addPropertySheet(PROPERTY_SHEET, 'DropDown Menu Properties') 
    95     ap = getattr(portal_props, PROPERTY_SHEET) 
    96     safeEditProperty(ap, 'menu', out, 'text') 
    97  
    9869def setupSkin(self, out, skinFolder): 
    99  
    10070    skinstool=getToolByName(self, 'portal_skins') 
    101  
    102     addDirectoryViews(skinstool, SKINS_DIR, GLOBALS) 
    103  
    10471    for skin in skinstool.getSkinSelections(): 
    10572        path = skinstool.getSkinPath(skin) 
    106         path = map( string.strip, string.split( path,',' ) ) 
    107  
     73        path = map(string.strip, string.split(path,',')) 
    10874        if not skinFolder in path: 
    10975            try: 
    110                 path.insert( path.index( 'custom')+1, skinFolder ) 
     76                path.insert(path.index('custom')+1, skinFolder) 
    11177            except ValueError: 
    11278                path.append(skinFolder) 
    113             path = string.join( path, ', ' ) 
    114             skinstool.addSkinSelection( skin, path ) 
     79            path = string.join(path, ', ') 
     80            skinstool.addSkinSelection(skin, path) 
    11581            out.write('  %s layer sucessfully installed into skin %s.\n' % (skinFolder, skin)) 
    11682        else: 
    11783            out.write('  %s layer was already installed into skin %s.\n' % (skinFolder, skin)) 
    11884 
    119 def setupTool(self): 
     85def removeSkin(self, skins=[]): 
     86    if skins: 
     87        skinstool = getToolByName(self, 'portal_skins') 
     88        for skinName in skinstool.getSkinSelections(): 
     89            path = skinstool.getSkinPath(skinName) 
     90            path = [i.strip() for i in  path.split(',')] 
     91            for s in skins: 
     92                if s in path: 
     93                    path.remove(s) 
     94                s += '/' 
     95                for layer in path: 
     96                    if layer.startswith(s): 
     97                        path.remove(layer) 
     98            path = ','.join(path) 
     99            skinstool.addSkinSelection(skinName, path) 
    120100 
     101def setupTool(self, out): 
     102    if hasattr(self, UNIQUE_ID): 
     103        self.manage_delObjects([UNIQUE_ID]) 
     104        out.write('Deleting old %s\n' % (UNIQUE_ID)) 
    121105    portal_url = getToolByName(self, 'portal_url') 
    122106    p = portal_url.getPortalObject() 
    123     x = p.manage_addProduct[PROJECT_NAME].manage_addTool(type='DropDownMenu Tool') 
     107    x = p.manage_addProduct[PROJECTNAME].manage_addTool(type='DropDownMenu Tool') 
     108 
     109def deleteTool(self, out): 
     110    if hasattr(self, UNIQUE_ID): 
     111        self.manage_delObjects([UNIQUE_ID]) 
     112        out.write('Deleted %s tool\n' % (UNIQUE_ID)) 
    124113 
    125114def install(self): 
    126115    out = StringIO() 
    127  
    128116    registerCSS(self, out) 
    129  
    130     configTool = getToolByName(self, 'portal_controlpanel', None) 
    131     if configTool: 
    132         for conf in configlets: 
    133             configTool.registerConfiglet(**conf) 
    134             out.write('Added configlet %s\n' % conf['id']) 
    135  
    136     if hasattr(self, UNIQUE_ID): 
    137         self.manage_delObjects([UNIQUE_ID]) 
    138         out.write('Deleting old %s\n' % (UNIQUE_ID)) 
    139     setupTool(self) 
     117    out.write('setupSkin... \n') 
     118    skinstool=getToolByName(self, 'portal_skins') 
     119    addDirectoryViews(skinstool, SKINS_DIR, GLOBALS) 
     120    setupSkin(self, out, 'qPloneDropDownMenu') 
     121    mtool = getToolByName(self, 'portal_migration') 
     122    plone_version = mtool.getFileSystemVersion() 
     123    if plone_version == '2.0.5': 
     124         setupSkin(self, out, PROJECTNAME+'/2.0.5') 
     125         out.write('Added %s/2.0.5 Layer to portal_skins\n' % PROJECTNAME) 
     126    setupConfiglets(self, out) 
    140127    out.write('Added %s to the portal root folder\n' % (UNIQUE_ID)) 
    141  
    142     portal_props = getToolByName(self, 'portal_properties') 
    143     if not hasattr(portal_props, PROPERTY_SHEET): 
    144         out.write('updateMenu... \n') 
    145         updateMenu(self) 
    146     else: 
    147         out.write('skipping updateMenu... \n') 
    148  
    149     out.write('setupSkin... \n') 
    150     setupSkin(self, out, 'qPloneDropDownMenu') 
    151  
     128    setupTool(self, out) 
    152129    return out.getvalue() 
    153130 
    154131def uninstall(self): 
    155132    out = StringIO() 
    156  
    157133    unregisterCSS(self, out) 
    158  
    159     configTool = getToolByName(self, 'portal_controlpanel', None) 
    160     if configTool: 
    161         for conf in configlets: 
    162             configTool.unregisterConfiglet(conf['id']) 
    163             out.write('Removed configlet %s\n' % conf['id']) 
    164  
     134    removeConfiglets(self, out) 
     135    removeSkin(self, [PROJECTNAME, PROJECTNAME+'/2.0.5']) 
     136    deleteTool(self, out) 
    165137    return out.getvalue() 
Note: See TracChangeset for help on using the changeset viewer.