Beispiel #1
0
def updateMenu(site):
    pu = getToolByName(site, 'plone_utils')
    pa = getToolByName(site, 'portal_actions')
    portal_props = getToolByName(site, 'portal_properties')

    # collect all portal tabs
    context_state = getMultiAdapter((site, site.REQUEST),
                                    name=u'plone_context_state')
    actions = context_state.actions()
    portal_tabs_view = getMultiAdapter((site, site.REQUEST),
                                       name='portal_tabs_view')
    portal_tabs = portal_tabs_view.topLevelTabs(actions=actions)

    # dump to html
    value = u""
    enc = portal_props.site_properties.getProperty('default_charset', 'utf-8')
    for tab in portal_tabs:
        value += TAB_HTML_SNIPPET % {'id': toUnicode(tab['id'], enc),
                                     'url': toUnicode(tab['url'], enc),
                                     'desc': toUnicode(tab['description'], enc),
                                     'name': toUnicode(tab['name'], enc)}

    if not hasattr(portal_props.aq_base, PROPERTY_SHEET):
        portal_props.addPropertySheet(PROPERTY_SHEET,
                                      'DropDown Menu Properties')
    ap = getattr(portal_props.aq_base, PROPERTY_SHEET)
    safeEditProperty(ap, PROPERTY_FIELD, value, 'text')
Beispiel #2
0
def install(self):
    out=StringIO()
    portal = getToolByName(self, 'portal_url').getPortalObject()
    if not hasattr(portal, TOOL_ID):
        constructTransientObjectContainer(portal, id=TOOL_ID, timeout_mins=60)
    
    safeEditProperty(self, 'captcha_key', generateKey(8))
    Layers = []
    Layers += LAYERS
    qi = getToolByName(self, 'portal_quickinstaller')
    mtool = getToolByName(self, 'portal_migration')
    plone_version = mtool.getFileSystemVersion()
    
    if plone_version.startswith('2.1'):
        plone_version = '2.1.2'
    elif plone_version.startswith('2.0'):
        plone_version = '2.0.5'
    elif plone_version.startswith('2.5'):
        plone_version = '2.5'
    else:
        raise Exception("Error - Unsupported version. Suported versions: Plone 2.0.5-2.5")
    
    DiscussionLayer = LAYER_DISCUSSION
    if qi.isProductInstalled('qPloneComments'):
        DiscussionLayer = LAYER_QCOMMENTS
    if qi.isProductInstalled('PloneFormMailer'):
        formmailer_layer = LAYER_FORMMAILER+'/'+plone_version
        Layers.append(formmailer_layer)
    discussion_layer = DiscussionLayer+'/'+plone_version
    Layers.append(discussion_layer)
    out.write('Call setupSkin... \n')
    setupSkin(self, out, Layers)
Beispiel #3
0
def install(self):
    out=StringIO()
    portal = getToolByName(self, 'portal_url').getPortalObject()
    # add captchas_tool
    install_tool(self, out)

    safeEditProperty(self, 'captcha_key', generateKey(8))

    # add Property sheet to portal_properies
    pp = getToolByName(self, 'portal_properties')
    if not 'qPloneCaptchas' in pp.objectIds():
        pp.addPropertySheet(id='qPloneCaptchas', title= '%s Properties' % 'qPloneCaptchas')
        out.write("Adding %s property sheet to portal_properies\n" % 'qPloneComments' )
    props_sheet = pp['qPloneCaptchas']
    updateProperties(props_sheet, out, PROPERTIES)

    Layers = []
    Layers += LAYERS
    Layers.append(LAYER_STATIC_CAPTCHAS)

    mtool = getToolByName(self, 'portal_migration')
    plone_version = mtool.getFileSystemVersion()

    if plone_version.startswith('2.1'):
        plone_version = '2.1.2'
    elif plone_version.startswith('2.0'):
        plone_version = '2.0.5'
    elif plone_version.startswith('2.5'):
        plone_version = '2.5'
    elif plone_version.startswith('3.0'):
        plone_version = '3.0'
    elif plone_version.startswith('3.1'):
        plone_version = '3.1'
    else:
        raise Exception("Error - Unsupported version. Suported versions: Plone 2.0.5-3")

    DiscussionLayer = LAYER_DISCUSSION
    qi = getToolByName(self, 'portal_quickinstaller')
    if qi.isProductInstalled('PloneFormMailer'):
        formmailer_layer = LAYER_FORMMAILER+'/'+ plone_version
        Layers.append(formmailer_layer)
    discussion_layer = '/'.join([DiscussionLayer, plone_version])
    Layers.append(discussion_layer)

    join_form_layer = '/'.join([LAYER_JOIN_FORM, plone_version])
    Layers.append(join_form_layer)

    sendto_form_layer = '/'.join([LAYER_SENDTO_FORM, plone_version])
    Layers.append(sendto_form_layer)

    out.write('Call setupSkin... \n')
    setupSkin(self, out, Layers)

    # Add Configlet. Delete old version before adding, if exist one.
    controlpanel_tool = getToolByName(self, 'portal_controlpanel')
    controlpanel_tool.unregisterConfiglet(CONFIGLET_ID)
    controlpanel_tool.registerConfiglet(id=CONFIGLET_ID, name=CONFIGLET_NAME, category='Products',
                                        action='string:${portal_url}/%s' % CONFIGLET_ID,
                                        appId=PRODUCT_NAME, permission=ManagePortal, imageUrl='group.gif')
    return out.getvalue()
Beispiel #4
0
def updateMenu(self):
    out = ''

    pu = getToolByName(self, 'plone_utils')

    if hasattr(pu, 'createTopLevelTabs'):
        pactions = getToolByName(self, 'portal_actions').listFilteredActionsFor(self)
        tl_tabs = pu.createTopLevelTabs(pactions)

        for act in tl_tabs:
                out += '<li id="portaltab-%s" class="plain"><a href="%s" accesskey="t">' % \
                    (act['id'], act['url']) + act['name'] + '</a></li>\n'
    else:
        portal = getToolByName(self, 'portal_url').getPortalObject()

        portal_act = getToolByName(self, 'portal_actions')
        actions=portal_act._cloneActions()

        for act in actions:
            if act.category == 'portal_tabs':
                out += '<li id="portaltab-%s" class="plain"><a href="%s" accesskey="t">%s</a></li>\n' % \
                    (act.id, \
                     Expression(act.getActionExpression())(createExprContext(portal, portal, portal)), \
                     act.title)

    portal_props = getToolByName(self, 'portal_properties')
    if not hasattr(portal_props, PROPERTY_SHEET):
        portal_props.addPropertySheet(PROPERTY_SHEET, 'DropDown Menu Properties')
    ap = getattr(portal_props, PROPERTY_SHEET)
    safeEditProperty(ap, 'menu', out, 'text')
 def removeFromTemplates(self, ids):
     raw_templates = self.getProperty('templates', [])
     filtered = []
     for t in raw_templates:
         id, path, title = t.split('|')
         if id not in ids:
             filtered.append(t)
     safeEditProperty(self, 'templates', filtered, 'lines')
 def addNavigationTransitions(self, transitions):
     """
     Adds Navigation Transitions in portal properties
     """
     # Plone2 management
     if self.hasFormController():
         return
     for (key, value) in transitions:
         safeEditProperty(self.navigation_properties, key, value)
 def addNavigationTransitions(self, transitions):
     """
     Adds Navigation Transitions in portal properties
     """
     # Plone2 management
     if self.hasFormController():
         return
     for (key, value) in transitions:
         safeEditProperty(self.navigation_properties, key, value)
 def addFormValidators(self, mapping):
     """
     Adds the form validators.
     DON'T ADD ANYTHING IF CMFFORMCONTROLLER IS INSTALLED
     """
     # Plone2 management
     if self.hasFormController():
         return
     for (key, value) in mapping:
         safeEditProperty(self.form_properties, key, value)
 def addFormValidators(self, mapping):
     """
     Adds the form validators.
     DON'T ADD ANYTHING IF CMFFORMCONTROLLER IS INSTALLED
     """
     # Plone2 management
     if self.hasFormController():
         return
     for (key, value) in mapping:
         safeEditProperty(self.form_properties, key, value)
Beispiel #10
0
def addProperty(self, out):
    """ Add property sheet to portal_properties """

    portal_props = getToolByName(self, 'portal_properties')
    if not hasattr(portal_props, PROPERTY_SHEET):
        portal_props.addPropertySheet(PROPERTY_SHEET, 'Maps Properties')
        out.write('Added %s property sheet...\n' % PROPERTY_SHEET)
    ap = getattr(portal_props, PROPERTY_SHEET)
    if not hasattr(ap, PROPERTY_FIELD):
        safeEditProperty(ap, PROPERTY_FIELD, MAP_API_KEYS, 'lines')
        out.write('Added %s property field to %s property sheet...\n' % (PROPERTY_FIELD, PROPERTY_SHEET))
    else: out.write('Skipped adding property...\n')
Beispiel #11
0
def addPropertySheet(self, out):
    """ Add seo_properties property sheet to portal_properties and some needed field to it """
    portal_props = getToolByName(self, 'portal_properties')
    if not hasattr(portal_props, PROPERTY_SHEET):
        portal_props.addPropertySheet(PROPERTY_SHEET, SHEET_TITLE)
        out.write('Added %s property sheet to portal_properties\n' % PROPERTY_SHEET)
    else:
        out.write('Skipped adding %s property sheet to portal_properties\n' % PROPERTY_SHEET)
    sheet = getattr(portal_props, PROPERTY_SHEET)

    safeEditProperty(sheet, 'stop_words', STOP_WORDS, 'lines')
    out.write('Added \'stop_words\' property field to %s property sheet\n' % PROPERTY_SHEET)

    safeEditProperty(sheet, 'fields', FIELDS, 'lines')
    out.write('Added \'fields\' property field to %s property sheet\n' % PROPERTY_SHEET)
Beispiel #12
0
def addPropertySheet(self, out):
    """ Add tabs_properties property sheet to portal_properties and some needed field to it """
    portal_props = getToolByName(self, 'portal_properties')
    if not hasattr(portal_props, PROPERTY_SHEET):
        portal_props.addPropertySheet(PROPERTY_SHEET, SHEET_TITLE)
        out.write('Added %s property sheet to portal_properties\n' % PROPERTY_SHEET)
    else:
        out.write('Skipped adding %s property sheet to portal_properties\n' % PROPERTY_SHEET)
    sheet = getattr(portal_props, PROPERTY_SHEET)

    if not hasattr(sheet, FIELD_NAME):
        safeEditProperty(sheet, FIELD_NAME, PROPERTY_FIELD, 'lines')
        out.write('Added %s property field to %s property sheet\n' % (FIELD_NAME, PROPERTY_SHEET))
    else:
        out.write('Skipped adding %s property field to %s property sheet\n' % (FIELD_NAME, PROPERTY_SHEET))
 def setTemplate(self, id, title, obj):
     raw_templates = list(self.getProperty('templates', []))
     url = getToolByName(self, 'portal_url').getRelativeContentURL(obj)
     filtered = []
     added = False
     for t in raw_templates:
         _id, path, _title = t.split('|')
         if path == url:
             filtered.append("%s|%s|%s" % (id, url, title))
             added = True
         elif _id == id:
             raise "Duplicated tempalte id!"
         else:
             filtered.append(t)
     if not added:
         filtered.append("%s|%s|%s" % (id, url, title))
     safeEditProperty(self, 'templates', filtered, 'lines')
Beispiel #14
0
def updateMenu(site):
    pu = getToolByName(site, 'plone_utils')
    pa = getToolByName(site, 'portal_actions')
    portal_props = getToolByName(site, 'portal_properties')

    # collect all portal tabs
    context_state = getMultiAdapter((site, site.REQUEST), name=u'plone_context_state')
    actions = context_state.actions()
    portal_tabs_view = getMultiAdapter((site, site.REQUEST), name='portal_tabs_view')
    portal_tabs = portal_tabs_view.topLevelTabs(actions=actions)

    # dump to html
    value = ''
    for tab in portal_tabs:
        value += '<li id="portaltab-%s" class="plain">\n' % tab['id']
        value += '  <a href="%s" accesskey="t" title="%s">%s</a>\n' % (tab['url'], tab['description'], tab['name'])
        value += '</li>\n'

    if not hasattr(portal_props.aq_base, PROPERTY_SHEET):
        portal_props.addPropertySheet(PROPERTY_SHEET, 'DropDown Menu Properties')
    ap = getattr(portal_props.aq_base, PROPERTY_SHEET)
    safeEditProperty(ap, PROPERTY_FIELD, value, 'text')
Beispiel #15
0
def install(self):
    out = StringIO()

    installTypes(self, out, listTypes(PROJECTNAME), PROJECTNAME)
    portal = getToolByName(self, 'portal_url').getPortalObject()
    if not hasattr(portal, TOOL_ID):
        portal.invokeFactory(id=TOOL_ID, type_name='PingTool')

    # Add PortalActions Tool Configlet. Delete old version before adding, if exist one.
    controlpanel_tool = getToolByName(self, 'portal_controlpanel')
    controlpanel_tool.unregisterConfiglet(TOOL_ID)
    controlpanel_tool.registerConfiglet(id=TOOL_ID, name='Ping Tool', category='Products',
                                        action='string:${portal_url}/'+TOOL_ID+'/folder_contents',
                                        appId=PROJECTNAME,  permission=ManagePortal, imageUrl='group.gif')

    # Add 'portal_actionstool' to action provider list, if not yet exist
    action_tool = getToolByName(portal, 'portal_actions')
    if TOOL_ID not in action_tool.listActionProviders():
        action_tool.addActionProvider(TOOL_ID)


    install_subskin(self,out,GLOBALS)
   

    for site in SITES_LIST:
        portal.portal_pingtool.invokeFactory(id = site[0], type_name = "PingInfo", title = site[1],url = site[2])

    pp = getToolByName(self,'portal_properties')
    np = getattr(pp,'navtree_properties')
    meta_types = list(np.getProperty('metaTypesNotToList'))
    if 'PingTool' not in meta_types:
        meta_types.append('PingTool')
    safeEditProperty(np,'metaTypesNotToList', meta_types, 'lines')


    
    print >> out, "\nSuccessfully installed %s." % PROJECTNAME
    return out.getvalue()
Beispiel #16
0
 def __init__(self):
     # Properties to be edited by site manager
     safeEditProperty(self, 'max_chain_length', 1, data_type='int')
Beispiel #17
0
 def setMaxChainLength(self, max_chain_length):
     """Set the max workflow chain length"""
     safeEditProperty(self, 'max_chain_length', max_chain_length, data_type='int')
def changePortalSettings(self, portal):
    p = portal.portal_properties.site_properties
    safeEditProperty(p, 'default_language', 'zh', 'string')
Beispiel #19
0
def init_portal(self, out):
    urltool = getToolByName(self, 'portal_url')
    portal = urltool.getPortalObject()

    ### CONFIG root properties ###
    portal.title = PORTAL_TITLE
    portal.description = PORTAL_DESC
    portal.validate_email = PORTAL_CHECKMAIL
    portal.default_charset = PORTAL_CHARSET
    portal.enable_permalink = PORTAL_FIXLINK

    safeEditProperty(portal, 'default_page', PORTAL_DEFAULT_VIEW, 'string')

    ## left_slots
    # TODO save & restore old slots
    # old_left_slots = list(portal.left_slots)
    left_slots = PORTAL_LEFTSLOTS
    portal._updateProperty('left_slots', left_slots)

    ## right_slots
    # TODO save & restore old slots
    # old_right_slots = list(portal.right_slots)
    right_slots = PORTAL_RIGHTSLOTS
    portal._updateProperty('right_slots', right_slots)

    ### PORTAL PROPERTIES ###
    props = portal.portal_properties.site_properties

    #  visible_ids boolean true (short name)
    safeEditProperty(props, 'visible_ids', VISIBLE_IDS, 'boolean')

    # calendar_starting_year (2006)
    safeEditProperty(props, 'calendar_starting_year', CALENDAR_START, 'int')

    # allowRolesToAddKeywords lines Member
    addLinesToProperty(props, 'allowRolesToAddKeywords', 'Member')

    ## portal_properties/navtree_properties
    navprops = portal.portal_properties.navtree_properties
    navprops.manage_changeProperties(enable_wf_state_filtering=True,
                                     wf_states_to_show=['published', 'open'],
                                     topLevel=1,
                                     bottomLevel=4)
    addLinesToProperty(navprops, 'metaTypesNotToList', TYPESNOTTOLIST)

    ### PORTAL MEMBERSHIP ###
    membership = portal.portal_membership
    membership.setMemberAreaType('Weblog')

    type_tool = portal.portal_types
    member_folder = membership.getMembersFolder()
    mtype = member_folder.getPortalTypeName()
    cur_id = member_folder.getId()

    if cur_id != MEMBERS_FOLDER_ID:
        # hack to rename
        type_tool[mtype].global_allow = True
        #member_folder.manage_renameObjects(MEMBERS_FOLDER_ID, id=MEMBERS_FOLDER_ID, text=MEMBERS_FOLDER_DESC)
        #        portal.manage_renameObjects([cur_id], [MEMBERS_FOLDER_ID])
        type_tool[mtype].global_allow = False

    member_folder.setTitle(MEMBERS_FOLDER_ID)
    member_folder.setDescription(MEMBERS_FOLDER_DESC)

    #    membership.setMembersFolderById(MEMBERS_FOLDER_ID)

    # delete default index_html
    if 'index_html' in member_folder.objectIds():
        member_folder.manage_delObjects('index_html')
    member_folder.reindexObject()

    # change default view
    safeEditProperty(member_folder, 'default_page', MEMBER_DEFAULT_VIEW,
                     'string')

    # Set member Manage Portal permission on user home
    member_folder.manage_permission(ManagePortal, ['Manager', 'Owner'],
                                    acquire=False)
    member_folder.manage_permission(AddWeblogPerm, ['Manager'], acquire=False)
    #member_folder.manage_permission(AddContentPanelsPerm, ['Manager'], acquire=False)
    member_folder.manage_permission(AddGroupSpacePerm, ['Manager'],
                                    acquire=False)

    # set member folder slots
    safeEditProperty(member_folder, 'left_slots', ROOT_MEMBER_LEFTSLOTS,
                     'lines')
    safeEditProperty(member_folder, 'right_slots', ROOT_MEMBER_RIGHTSLOTS,
                     'lines')

    ### ADD USER GROUPS
    gtool = portal.portal_groups
    existing = gtool.listGroupIds()

    for grp in USERGROUPS:
        if grp[0] not in existing:
            gtool.addGroup(grp[0], roles=grp[1])
            out.write("Added %s group to portal_groups with %s role.\n" %
                      (grp[0], grp[1]))


### MISC settings
# GrufSpaces - enable use_groupspace_areas
    portal.portal_properties.grufspaces_properties.use_groupspace_areas = 1

    # close site - Disable Add portal member
    portal.manage_permission(AddPortalMember, ['Manager'], acquire=False)

    # Enable Reply to Item
    portal.manage_permission(ReplyToItem, ['Anonymous', 'Authenticated'],
                             acquire=True)

    # KUPU enable linkbyuid
    kupuTool = getToolByName(self, 'kupu_library_tool')
    kupuTool.linkbyuid = True
Beispiel #20
0
def addMemberData(portal, out):
    """Add the must_change_password property to member data"""
    mt = safeGetMemberDataTool(portal)
    if mt is not None:
        safeEditProperty(mt, 'must_change_password', 0, 'boolean')
        out.append('Added must_change_password property to member data')