[commits] r117 - in selinux-site/trunk: . selinux.policy selinux.policy/selinux selinux.policy/selinux/policy selinux.policy/selinux/policy/browser selinux.policy/selinux/policy/profiles selinux.policy/selinux/policy/profiles/default selinux.policy/selinux/policy/profiles/default/workflows selinux.policy/selinux/policy/profiles/default/workflows/news_workflow selinux.policy/selinux/policy/profiles/default/workflows/selinux_workflow selinux.theme/selinux/theme selinux.theme/selinux/theme/browser selinux.theme/selinux/theme/profiles/default
tim at mail.se.linux.org
tim at mail.se.linux.org
Mon Okt 29 08:39:56 CET 2007
Author: tim
Date: 2007-10-29 08:39:55 +0100 (Mon, 29 Oct 2007)
New Revision: 117
Added:
selinux-site/trunk/selinux.policy/
selinux-site/trunk/selinux.policy/README.txt
selinux-site/trunk/selinux.policy/selinux/
selinux-site/trunk/selinux.policy/selinux/__init__.py
selinux-site/trunk/selinux.policy/selinux/policy/
selinux-site/trunk/selinux.policy/selinux/policy/__init__.py
selinux-site/trunk/selinux.policy/selinux/policy/browser/
selinux-site/trunk/selinux.policy/selinux/policy/browser/__init__.py
selinux-site/trunk/selinux.policy/selinux/policy/browser/caching.py
selinux-site/trunk/selinux.policy/selinux/policy/browser/configure.zcml
selinux-site/trunk/selinux.policy/selinux/policy/browser/frontpage.py
selinux-site/trunk/selinux.policy/selinux/policy/caching_subscribers.py
selinux-site/trunk/selinux.policy/selinux/policy/configure.zcml
selinux-site/trunk/selinux.policy/selinux/policy/profiles/
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/import_steps.xml
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/memberdata_properties.xml
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/properties.xml
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/propertiestool.xml
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/rolemap.xml
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows.xml
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/news_workflow/
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/news_workflow/definition.xml
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/selinux_workflow/
selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/selinux_workflow/definition.xml
selinux-site/trunk/selinux.policy/selinux/policy/setuphandlers.py
selinux-site/trunk/selinux.policy/selinux/policy/version.txt
selinux-site/trunk/selinux.policy/setup.py
Removed:
selinux-site/trunk/selinux.theme/selinux/theme/browser/caching.py
selinux-site/trunk/selinux.theme/selinux/theme/browser/frontpage.py
selinux-site/trunk/selinux.theme/selinux/theme/caching_subscribers.py
selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/memberdata_properties.xml
selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/properties.xml
selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/propertiestool.xml
selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/rolemap.xml
selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/workflows.xml
selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/workflows/
Modified:
selinux-site/trunk/selinux.theme/selinux/theme/browser/configure.zcml
selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml
selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/import_steps.xml
selinux-site/trunk/selinux.theme/selinux/theme/setuphandlers.py
Log:
Refactored out stuff from selinux.theme to selinux.policy. selinux.theme should only contain the theme (looks and layout) and policy should be its own package. So now anyone with a plone site should be able to use our theme and get their site to look exactly like ours.
Added: selinux-site/trunk/selinux.policy/README.txt
===================================================================
--- selinux-site/trunk/selinux.policy/README.txt (rev 0)
+++ selinux-site/trunk/selinux.policy/README.txt 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1 @@
+This package provides policy for the site.
Property changes on: selinux-site/trunk/selinux.policy/README.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: selinux-site/trunk/selinux.policy/selinux/__init__.py
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/__init__.py (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/__init__.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,5 @@
+try:
+ __import__('pkg_resources').declare_namespace(__name__)
+except ImportError:
+ from pkgutil import extend_path
+ __path__ = extend_path(__path__, __name__)
Property changes on: selinux-site/trunk/selinux.policy/selinux/__init__.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: selinux-site/trunk/selinux.policy/selinux/policy/__init__.py
===================================================================
Property changes on: selinux-site/trunk/selinux.policy/selinux/policy/__init__.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: selinux-site/trunk/selinux.policy/selinux/policy/browser/__init__.py
===================================================================
Property changes on: selinux-site/trunk/selinux.policy/selinux/policy/browser/__init__.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: selinux-site/trunk/selinux.policy/selinux/policy/browser/caching.py
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/browser/caching.py (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/browser/caching.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,30 @@
+from Products.CMFCore.utils import getToolByName
+
+PATH1 = '/VirtualHostBase/http/'
+PATH2 = ':8000/selinux/VirtualHostRoot/'
+DOMAINS = ['se.linux.org',
+ 'selinux.se',
+ 'svenskalinuxforeningen.se',
+ 'svenskalinuxföreningen.se',]
+
+class InstallCaching(object):
+
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+
+ def __call__(self):
+ portal_props = getToolByName(self, 'portal_properties')
+ site_props = getattr(portal_props, 'site_properties')
+
+ if not site_props.hasProperty('purging_enabled'):
+ site_props.manage_addProperty('purging_enabled', True, 'boolean')
+ if not site_props.hasProperty('purging_paths'):
+ paths = [PATH1 + domain + PATH2 for domain in DOMAINS]
+ site_props.manage_addProperty('purging_paths', paths, 'lines')
+ if not site_props.hasProperty('purging_host'):
+ site_props.manage_addProperty('purging_host', 'localhost', 'string')
+ if not site_props.hasProperty('purging_port'):
+ site_props.manage_addProperty('purging_port', '8000', 'string')
+
+ return 'Caching properties are added to site_properties'
Property changes on: selinux-site/trunk/selinux.policy/selinux/policy/browser/caching.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: selinux-site/trunk/selinux.policy/selinux/policy/browser/configure.zcml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/browser/configure.zcml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/browser/configure.zcml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,19 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:browser="http://namespaces.zope.org/browser">
+
+ <browser:page
+ for="Products.CMFCore.interfaces.ISiteRoot"
+ name="frontpage"
+ class=".frontpage.FrontPage"
+ permission="zope.Public"
+ />
+
+ <browser:page
+ for="Products.CMFCore.interfaces.ISiteRoot"
+ name="install_caching"
+ class=".caching.InstallCaching"
+ permission="cmf.ManagePortal"
+ />
+
+</configure>
Property changes on: selinux-site/trunk/selinux.policy/selinux/policy/browser/configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: selinux-site/trunk/selinux.policy/selinux/policy/browser/frontpage.py
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/browser/frontpage.py (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/browser/frontpage.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,49 @@
+from Products.CMFCore.utils import getToolByName
+from zope.component import getUtility
+
+class FrontPage(object):
+
+ def __init__(self, context, request):
+ self.context = context
+ self.request = request
+
+ def intro(self):
+ intro = getattr(self.context, 'introdoc', None)
+ if intro:
+ mship = getToolByName(self.context, 'portal_membership')
+ member_count = len(mship.listMemberIds())
+ text = intro.getText()
+ return text.replace('MEMBERS', str(member_count))
+ else:
+ return None
+
+ def news(self):
+ mtool = getToolByName(self.context, 'portal_membership')
+ trans_util = getToolByName(self.context, 'translation_service')
+ catalog = getToolByName(self.context, 'portal_catalog')
+ query = { 'portal_type': 'News Item',
+ 'sort_on': 'created',
+ 'sort_order': 'reverse',
+ 'review_state': 'published' }
+
+ news = []
+ brains = catalog.searchResults(query)[:5]
+ for brain in brains:
+ author = mtool.getMemberInfo(brain.Creator)
+ author_name = author and author['fullname'] or brain.Creator
+
+ modified = trans_util.ulocalized_time(brain.ModificationDate,
+ True, self.context,
+ domain='plonelocales')
+
+ newsitem = { 'title': brain.Title,
+ 'author': author_name,
+ 'author_id': brain.Creator,
+ 'date': modified,
+ 'body': brain.getObject().getText(),
+ 'url': brain.getURL(),
+ 'discussion_count': 0,
+ 'discussion_url': 'hoho' }
+ news.append(newsitem)
+
+ return news
Property changes on: selinux-site/trunk/selinux.policy/selinux/policy/browser/frontpage.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: selinux-site/trunk/selinux.policy/selinux/policy/caching_subscribers.py
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/caching_subscribers.py (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/caching_subscribers.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,44 @@
+from Products.CMFCore.utils import getToolByName
+from httplib import HTTPConnection
+
+def purge_frontpage(obj):
+ portal_props = getToolByName(obj, 'portal_properties')
+ site_props = getattr(portal_props, 'site_properties')
+
+ if not site_props.getProperty('purge_enabled', False):
+ return
+
+ host = site_props.getProperty('purging_host', None)
+ port = site_props.getProperty('purging_port', None)
+ paths = site_props.getProperty('purging_paths', None)
+
+ for path in paths:
+ try:
+ connection = HTTPConnection(host, port)
+ connection.putrequest('PURGE', path)
+ connection.endheaders()
+ response = connection.getresponse()
+ connection.close()
+ except socket.error, msg:
+ pass
+
+def news_added(obj, event):
+ """ This is called when a news item is added to the site. """
+ workflow = getToolByName(obj, 'portal_workflow')
+ state = workflow.getInfoFor(obj, 'review_state')
+
+ # when a news item is created it's first added to a temporary folder
+ # that shouldn't trigger purge
+ if state == 'published' and obj.aq_parent.portal_type != 'TempFolder':
+ purge_frontpage(obj)
+
+def news_modified(obj, event):
+ """ This is called when a news item is modified. """
+ workflow = getToolByName(obj, 'portal_workflow')
+ state = workflow.getInfoFor(obj, 'review_state')
+ if state == 'published':
+ purge_frontpage(obj)
+
+def news_workflow_transition(obj, event):
+ """ This is called when a news item's workflow state changed. """
+ purge_frontpage(obj)
Property changes on: selinux-site/trunk/selinux.policy/selinux/policy/caching_subscribers.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: selinux-site/trunk/selinux.policy/selinux/policy/configure.zcml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/configure.zcml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/configure.zcml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,28 @@
+<configure
+ xmlns="http://namespaces.zope.org/zope"
+ xmlns:cmf="http://namespaces.zope.org/cmf"
+ xmlns:browser="http://namespaces.zope.org/browser"
+ xmlns:genericsetup="http://namespaces.zope.org/genericsetup"
+ i18n_domain="plone">
+
+ <include package=".browser" />
+
+ <subscriber
+ for="Products.ATContentTypes.content.newsitem.ATNewsItem
+ zope.lifecycleevent.interfaces.IObjectModifiedEvent"
+ handler=".caching_subscribers.news_modified"
+ />
+
+ <subscriber
+ for="Products.ATContentTypes.content.newsitem.ATNewsItem
+ zope.app.container.interfaces.IObjectAddedEvent"
+ handler=".caching_subscribers.news_added"
+ />
+
+ <subscriber
+ for="Products.ATContentTypes.content.newsitem.ATNewsItem
+ Products.CMFCore.interfaces.IActionSucceededEvent"
+ handler=".caching_subscribers.news_workflow_transition"
+ />
+
+</configure>
Property changes on: selinux-site/trunk/selinux.policy/selinux/policy/configure.zcml
___________________________________________________________________
Name: svn:eol-style
+ native
Added: selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/import_steps.xml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/import_steps.xml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/import_steps.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<import-steps>
+ <import-step id="selinuxtheme-various" version="20070531"
+ handler="selinux.theme.setuphandlers.setupVarious"
+ title="Setup SeLinux policy">
+ Set site title, roles, permissions, theme etc.
+ </import-step>
+</import-steps>
Added: selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/memberdata_properties.xml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/memberdata_properties.xml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/memberdata_properties.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<object name="portal_memberdata" meta_type="Plone Memberdata Tool">
+ <property name="surname" type="string"></property>
+ <property name="givenname" type="string"></property>
+ <property name="mobile" type="string"></property>
+ <property name="postadress" type="string"></property>
+ <property name="postnr" type="string"></property>
+ <property name="telenr" type="string"></property>
+</object>
Added: selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/properties.xml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/properties.xml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/properties.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<site>
+ <property name="layout" type="string">selinux_index</property>
+ <property name="email_from_address"
+ type="string">webb at se.linux.org</property>
+ <property name="email_from_name"
+ type="string">SeLinux</property>
+ <property name="validate_email" type="boolean">True</property>
+ <property name="email_charset" type="string">utf-8</property>
+ <property name="enable_permalink" type="boolean">False</property>
+</site>
Added: selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/propertiestool.xml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/propertiestool.xml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/propertiestool.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,8 @@
+<?xml version="1.0"?>
+<object name="portal_properties" meta_type="Plone Properties Tool">
+ <object name="site_properties" meta_type="Plone Property Sheet">
+ <property name="default_language" type="string">sv</property>
+ <property name="localTimeFormat" type="string">%Y-%m-%d</property>
+ <property name="localLongTimeFormat" type="string">%Y-%m-%d %H:%M</property>
+ </object>
+</object>
Added: selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/rolemap.xml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/rolemap.xml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/rolemap.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,9 @@
+<?xml version="1.0"?>
+<rolemap>
+ <permissions>
+ <permission name="Add portal member"
+ acquire="False">
+ <role name="Anonymous"/>
+ </permission>
+ </permissions>
+</rolemap>
Added: selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/news_workflow/definition.xml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/news_workflow/definition.xml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/news_workflow/definition.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,156 @@
+<?xml version="1.0"?>
+<dc-workflow workflow_id="news_workflow"
+ title="News Workflow" description=""
+ state_variable="review_state"
+ initial_state="pending">
+ <permission>Access contents information</permission>
+ <permission>Change portal events</permission>
+ <permission>List folder contents</permission>
+ <permission>Modify portal content</permission>
+ <permission>View</permission>
+ <state state_id="pending" title="Pending">
+ <description>Waiting to be reviewed, not editable by the owner.</description>
+ <exit-transition transition_id="publish"/>
+ <permission-map name="Access contents information"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ <permission-role>Owner</permission-role>
+ <permission-role>Editor</permission-role>
+ <permission-role>Reader</permission-role>
+ <permission-role>Contributor</permission-role>
+ <permission-role>Reviewer</permission-role>
+ </permission-map>
+ <permission-map name="Change portal events"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ <permission-role>Reviewer</permission-role>
+ </permission-map>
+ <permission-map name="List folder contents"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ <permission-role>Owner</permission-role>
+ <permission-role>Editor</permission-role>
+ <permission-role>Reader</permission-role>
+ <permission-role>Contributor</permission-role>
+ <permission-role>Reviewer</permission-role>
+ </permission-map>
+ <permission-map name="Modify portal content"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ <permission-role>Reviewer</permission-role>
+ </permission-map>
+ <permission-map name="View" acquired="False">
+ <permission-role>Manager</permission-role>
+ <permission-role>Owner</permission-role>
+ <permission-role>Editor</permission-role>
+ <permission-role>Reader</permission-role>
+ <permission-role>Contributor</permission-role>
+ <permission-role>Reviewer</permission-role>
+ </permission-map>
+ </state>
+ <state state_id="published" title="Published">
+ <description>Visible to everyone, not editable by the owner.</description>
+ <exit-transition transition_id="retract"/>
+ <exit-transition transition_id="reject"/>
+ <permission-map name="Access contents information"
+ acquired="False">
+ <permission-role>Anonymous</permission-role>
+ </permission-map>
+ <permission-map name="Change portal events"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ </permission-map>
+ <permission-map name="List folder contents"
+ acquired="False">
+ <permission-role>Anonymous</permission-role>
+ </permission-map>
+ <permission-map name="Modify portal content"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ </permission-map>
+ <permission-map name="View" acquired="False">
+ <permission-role>Anonymous</permission-role>
+ </permission-map>
+ </state>
+ <transition transition_id="publish" title="Publish"
+ new_state="published" trigger="USER"
+ before_script="" after_script="">
+ <description>Publishing the item makes it visible to other users.</description>
+ <action url="%(content_url)s/content_status_modify?workflow_action=publish"
+ category="workflow">Publish</action>
+ <guard>
+ <guard-permission>Review portal content</guard-permission>
+ </guard>
+ </transition>
+ <transition transition_id="reject" title="Send back"
+ new_state="pending" trigger="USER"
+ before_script="" after_script="">
+ <description>Sending the item back will return the item to the original author instead of publishing it. You should preferably include a reason for why it was not published.</description>
+ <action url="%(content_url)s/content_status_modify?workflow_action=reject"
+ category="workflow">Send back</action>
+ <guard>
+ <guard-permission>Review portal content</guard-permission>
+ </guard>
+ </transition>
+ <worklist worklist_id="reviewer_queue" title="">
+ <description>Reviewer tasks</description>
+ <action url="%(portal_url)s/search?review_state=pending"
+ category="global">Pending (%(count)d)</action>
+ <guard>
+ <guard-permission>Review portal content</guard-permission>
+ </guard>
+ <match name="review_state" values="pending"/>
+ </worklist>
+ <variable variable_id="action" for_catalog="False"
+ for_status="True" update_always="True">
+ <description>Previous transition</description>
+ <default>
+
+ <expression>transition/getId|nothing</expression>
+ </default>
+ <guard>
+ </guard>
+ </variable>
+ <variable variable_id="actor" for_catalog="False"
+ for_status="True" update_always="True">
+ <description>The ID of the user who performed the previous transition</description>
+ <default>
+
+ <expression>user/getUserName</expression>
+ </default>
+ <guard>
+ </guard>
+ </variable>
+ <variable variable_id="comments" for_catalog="False"
+ for_status="True" update_always="True">
+ <description>Comment about the last transition</description>
+ <default>
+
+ <expression>python:state_change.kwargs.get('comment', '')</expression>
+ </default>
+ <guard>
+ </guard>
+ </variable>
+ <variable variable_id="review_history" for_catalog="False"
+ for_status="False" update_always="False">
+ <description>Provides access to workflow history</description>
+ <default>
+
+ <expression>state_change/getHistory</expression>
+ </default>
+ <guard>
+ <guard-permission>Request review</guard-permission>
+ <guard-permission>Review portal content</guard-permission>
+ </guard>
+ </variable>
+ <variable variable_id="time" for_catalog="False"
+ for_status="True" update_always="True">
+ <description>When the previous transition was performed</description>
+ <default>
+
+ <expression>state_change/getDateTime</expression>
+ </default>
+ <guard>
+ </guard>
+ </variable>
+</dc-workflow>
Added: selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/selinux_workflow/definition.xml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/selinux_workflow/definition.xml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows/selinux_workflow/definition.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,149 @@
+<?xml version="1.0"?>
+<dc-workflow workflow_id="selinux_workflow"
+ title="Community Workflow"
+ description=" - Users can create content that is immediately publicly accessible. - Content can be submitted for publication by the content's creator or a Manager, which is typically done to promote events or news to the front page. - Reviewers can publish or reject content, content owners can retract their submissions. - While the content is awaiting review it is readable by anybody. - If content is published, it can only be retracted by a Manager."
+ state_variable="review_state"
+ initial_state="visible">
+ <permission>Access contents information</permission>
+ <permission>Change portal events</permission>
+ <permission>Modify portal content</permission>
+ <permission>View</permission>
+ <state state_id="published" title="Published">
+ <description>Visible to everyone, not editable by the owner.
+</description>
+ <exit-transition transition_id="reject"/>
+ <exit-transition transition_id="retract"/>
+ <permission-map name="Access contents information"
+ acquired="False">
+ <permission-role>Anonymous</permission-role>
+ </permission-map>
+ <permission-map name="Change portal events"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ </permission-map>
+ <permission-map name="Modify portal content"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ </permission-map>
+ <permission-map name="View" acquired="False">
+ <permission-role>Anonymous</permission-role>
+ </permission-map>
+ </state>
+ <state state_id="visible" title="Public draft">
+ <description>Visible to everyone, but not approved by the reviewers.
+</description>
+ <exit-transition transition_id="hide"/>
+ <exit-transition transition_id="publish"/>
+ <exit-transition transition_id="submit"/>
+ <permission-map name="Access contents information"
+ acquired="False">
+ <permission-role>Anonymous</permission-role>
+ </permission-map>
+ <permission-map name="Change portal events"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ <permission-role>Owner</permission-role>
+ <permission-role>Editor</permission-role>
+ </permission-map>
+ <permission-map name="Modify portal content"
+ acquired="False">
+ <permission-role>Manager</permission-role>
+ <permission-role>Owner</permission-role>
+ <permission-role>Editor</permission-role>
+ </permission-map>
+ <permission-map name="View" acquired="False">
+ <permission-role>Anonymous</permission-role>
+ </permission-map>
+ </state>
+ <transition transition_id="publish"
+ title="Reviewer publishes content"
+ new_state="published" trigger="USER"
+ before_script="" after_script="">
+ <description>Publishing the item makes it visible to other users.
+</description>
+ <action url="%(content_url)s/content_status_modify?workflow_action=publish"
+ category="workflow">Publish</action>
+ <guard>
+ <guard-permission>Review portal content</guard-permission>
+ </guard>
+ </transition>
+ <transition transition_id="retract"
+ title="Member retracts submission"
+ new_state="visible" trigger="USER"
+ before_script="" after_script="">
+ <description>If you submitted the item by mistake or want to perform additional edits, this will take it back.
+</description>
+ <action url="%(content_url)s/content_status_modify?workflow_action=retract"
+ category="workflow">Retract</action>
+ <guard>
+ <guard-permission>Request review</guard-permission>
+ </guard>
+ </transition>
+ <worklist worklist_id="reviewer_queue" title="">
+ <description>Reviewer tasks
+</description>
+ <action url="%(portal_url)s/search?review_state=pending"
+ category="global">Pending (%(count)d)</action>
+ <guard>
+ <guard-permission>Review portal content</guard-permission>
+ </guard>
+ <match name="review_state" values="pending"/>
+ </worklist>
+ <variable variable_id="action" for_catalog="False"
+ for_status="True" update_always="True">
+ <description>Previous transition
+</description>
+ <default>
+
+ <expression>transition/getId|nothing</expression>
+ </default>
+ <guard>
+ </guard>
+ </variable>
+ <variable variable_id="actor" for_catalog="False"
+ for_status="True" update_always="True">
+ <description>The ID of the user who performed the last transition
+</description>
+ <default>
+
+ <expression>user/getId</expression>
+ </default>
+ <guard>
+ </guard>
+ </variable>
+ <variable variable_id="comments" for_catalog="False"
+ for_status="True" update_always="True">
+ <description>Comment about the last transition
+</description>
+ <default>
+
+ <expression>python:state_change.kwargs.get('comment', '')</expression>
+ </default>
+ <guard>
+ </guard>
+ </variable>
+ <variable variable_id="review_history" for_catalog="False"
+ for_status="False" update_always="False">
+ <description>Provides access to workflow history
+</description>
+ <default>
+
+ <expression>state_change/getHistory</expression>
+ </default>
+ <guard>
+ <guard-permission>Request review</guard-permission>
+ <guard-permission>Review portal content</guard-permission>
+ </guard>
+ </variable>
+ <variable variable_id="time" for_catalog="False"
+ for_status="True" update_always="True">
+ <description>When the previous transition was performed
+</description>
+ <default>
+
+ <expression>state_change/getDateTime</expression>
+ </default>
+ <guard>
+ </guard>
+ </variable>
+</dc-workflow>
Added: selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows.xml
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows.xml (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/profiles/default/workflows.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<object name="portal_workflow" meta_type="Plone Workflow Tool">
+ <property
+ name="title">Contains workflow definitions for your portal</property>
+ <object name="news_workflow" meta_type="Workflow"/>
+ <object name="selinux_workflow" meta_type="Workflow"/>
+ <bindings>
+ <default>
+ <bound-workflow workflow_id="selinux_workflow"/>
+ </default>
+ <type type_id="News Item">
+ <bound-workflow workflow_id="news_workflow"/>
+ </type>
+ <type type_id="Event">
+ <bound-workflow workflow_id="news_workflow"/>
+ </type>
+ </bindings>
+</object>
Added: selinux-site/trunk/selinux.policy/selinux/policy/setuphandlers.py
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/setuphandlers.py (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/setuphandlers.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,144 @@
+from Products.CMFCore.utils import getToolByName
+from Products.CMFPlone.utils import _createObjectByType
+from Products.ATContentTypes.lib import constraintypes
+
+def setupVarious(context):
+ site = context.getSite()
+ setupFrontpage(site)
+ removePloneContent(site)
+ setupMemberFolder(site)
+ createNewsFolder(site)
+ createEventsFolder(site)
+ publishInitialFolders(site)
+ createLatestFeed(site)
+
+def createEventsFolder(site):
+ wftool = getToolByName(site, 'portal_workflow')
+ existing = site.objectIds()
+
+ # Events topic
+ if 'handelser' in existing:
+ folder = site.handelser
+ folder.setConstrainTypesMode(constraintypes.ENABLED)
+ folder.setLocallyAllowedTypes(['Event'])
+ folder.setImmediatelyAddableTypes(['Event'])
+ folder.setDefaultPage('aggregator')
+ folder.unmarkCreationFlag()
+
+ if wftool.getInfoFor(folder, 'review_state') != 'published':
+ wftool.doActionFor(folder, 'publish')
+
+ topic = folder.aggregator
+ topic.unmarkCreationFlag()
+
+ type_crit = topic.addCriterion('Type','ATPortalTypeCriterion')
+ type_crit.setValue('Event')
+ sort_crit = topic.addCriterion('start','ATSortCriterion')
+ state_crit = topic.addCriterion('review_state', 'ATSimpleStringCriterion')
+ state_crit.setValue('published')
+ date_crit = topic.addCriterion('start', 'ATFriendlyDateCriteria')
+ # Set date reference to now
+ date_crit.setValue(0)
+ # Only take events in the future
+ date_crit.setDateRange('+') # This is irrelevant when the date is now
+ date_crit.setOperation('more')
+
+ if wftool.getInfoFor(topic, 'review_state') != 'published':
+ wftool.doActionFor(topic, 'publish')
+
+
+def createLatestFeed(site):
+ existing = site.objectIds()
+
+ # Collection for making a feed
+ if 'nytt' not in existing:
+ site.invokeFactory('Topic', id='nytt', title='Senaste')
+ topic = site.nytt
+
+ topic.setLimitNumber(True)
+ topic.setItemCount(30)
+ state_crit = topic.addCriterion('review_state',
+ 'ATSimpleStringCriterion')
+ state_crit.setValue('published')
+ topic.setSortCriterion('effective', True)
+ topic.manage_addProperty('layout', 'folder_summary_view', 'string')
+ topic.unmarkCreationFlag()
+
+
+def createNewsFolder(site):
+ wftool = getToolByName(site, 'portal_workflow')
+ existing = site.objectIds()
+
+ # News topic
+ if 'nyheter' in existing:
+ folder = site.nyheter
+ folder.setConstrainTypesMode(constraintypes.ENABLED)
+ folder.setLocallyAllowedTypes(['News Item'])
+ folder.setImmediatelyAddableTypes(['News Item'])
+ folder.setDefaultPage('aggregator')
+ folder.unmarkCreationFlag()
+
+ if wftool.getInfoFor(folder, 'review_state') != 'published':
+ wftool.doActionFor(folder, 'publish')
+
+ topic = site.nyheter.aggregator
+ type_crit = topic.addCriterion('Type','ATPortalTypeCriterion')
+ type_crit.setValue('News Item')
+ sort_crit = topic.addCriterion('created','ATSortCriterion')
+ state_crit = topic.addCriterion('review_state', 'ATSimpleStringCriterion')
+ state_crit.setValue('published')
+ topic.setSortCriterion('effective', True)
+ topic.manage_addProperty('layout', 'folder_summary_view', 'string')
+ topic.unmarkCreationFlag()
+
+ if wftool.getInfoFor(topic, 'review_state') != 'published':
+ wftool.doActionFor(topic, 'publish')
+
+def setupFrontpage(site):
+ if site.hasProperty('default_page'):
+ site.manage_delProperties(ids=['default_page'])
+
+ #left_column = getUtility(IPortletManager, name=u'plone.leftcolumn',
+ # context=site)
+
+ #left = getMultiAdapter((site, left_column,), IPortletAssignmentMapping,
+ # context=site)
+
+ #keys = list(left.keys())
+ #for key in keys:
+ # del left[key]
+
+
+# until plone supports setting up the site without creating some initial
+# folders, we need to remove a few folders
+def removePloneContent(site):
+ for id in ('Members', 'news', 'events'):
+ if getattr(site, id, None):
+ site.manage_delObjects([id])
+
+def setupMemberFolder(site):
+ mship = getToolByName(site, 'portal_membership')
+ workflow = getToolByName(site, 'portal_workflow')
+
+ # we call the members folder 'medlemmar'
+ mship.setMembersFolderById('medlemmar')
+
+ # member folders should be created
+ if not mship.getMemberareaCreationFlag():
+ mship.setMemberareaCreationFlag()
+
+ # publish member folder
+ members = getattr(site, 'medlemmar', None)
+ if members is not None:
+ if workflow.getInfoFor(members, 'review_state') != 'published':
+ workflow.doActionFor(members, 'publish')
+
+def publishInitialFolders(site):
+ workflow = getToolByName(site, 'portal_workflow')
+
+ folders = ('arbetsgrupper', 'dokumentation', 'support', 'foreningen')
+ for folder_id in folders:
+ folder = getattr(site, folder_id, None)
+ if folder is not None:
+ if workflow.getInfoFor(folder, 'review_state') != 'published':
+ workflow.doActionFor(folder, 'publish')
Property changes on: selinux-site/trunk/selinux.policy/selinux/policy/setuphandlers.py
___________________________________________________________________
Name: svn:keywords
+ Id
Added: selinux-site/trunk/selinux.policy/selinux/policy/version.txt
===================================================================
--- selinux-site/trunk/selinux.policy/selinux/policy/version.txt (rev 0)
+++ selinux-site/trunk/selinux.policy/selinux/policy/version.txt 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1 @@
+0.1
Property changes on: selinux-site/trunk/selinux.policy/selinux/policy/version.txt
___________________________________________________________________
Name: svn:eol-style
+ native
Added: selinux-site/trunk/selinux.policy/setup.py
===================================================================
--- selinux-site/trunk/selinux.policy/setup.py (rev 0)
+++ selinux-site/trunk/selinux.policy/setup.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -0,0 +1,25 @@
+from setuptools import setup, find_packages
+import sys, os
+
+version = '0.1'
+
+setup(name='selinux.policy',
+ version=version,
+ description="SeLinux site policy",
+ long_description="""\
+""",
+ # Get more strings from http://www.python.org/pypi?%3Aaction=list_classifiers
+ author='Tim Terlegard',
+ url='http://svn.se.linux.org/selinux-site/trunk/selinux.policy',
+ license='GPL',
+ packages=find_packages(exclude=['ez_setup']),
+ namespace_packages=['selinux'],
+ include_package_data=True,
+ zip_safe=False,
+ install_requires=[
+ 'setuptools',
+ ],
+ entry_points="""
+ # -*- Entry points: -*-
+ """,
+ )
Property changes on: selinux-site/trunk/selinux.policy/setup.py
___________________________________________________________________
Name: svn:keywords
+ Id
Deleted: selinux-site/trunk/selinux.theme/selinux/theme/browser/caching.py
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/browser/caching.py 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/browser/caching.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -1,30 +0,0 @@
-from Products.CMFCore.utils import getToolByName
-
-PATH1 = '/VirtualHostBase/http/'
-PATH2 = ':8000/selinux/VirtualHostRoot/'
-DOMAINS = ['se.linux.org',
- 'selinux.se',
- 'svenskalinuxforeningen.se',
- 'svenskalinuxföreningen.se',]
-
-class InstallCaching(object):
-
- def __init__(self, context, request):
- self.context = context
- self.request = request
-
- def __call__(self):
- portal_props = getToolByName(self, 'portal_properties')
- site_props = getattr(portal_props, 'site_properties')
-
- if not site_props.hasProperty('purging_enabled'):
- site_props.manage_addProperty('purging_enabled', True, 'boolean')
- if not site_props.hasProperty('purging_paths'):
- paths = [PATH1 + domain + PATH2 for domain in DOMAINS]
- site_props.manage_addProperty('purging_paths', paths, 'lines')
- if not site_props.hasProperty('purging_host'):
- site_props.manage_addProperty('purging_host', 'localhost', 'string')
- if not site_props.hasProperty('purging_port'):
- site_props.manage_addProperty('purging_port', '8000', 'string')
-
- return 'Caching properties are added to site_properties'
Modified: selinux-site/trunk/selinux.theme/selinux/theme/browser/configure.zcml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/browser/configure.zcml 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/browser/configure.zcml 2007-10-29 07:39:55 UTC (rev 117)
@@ -9,13 +9,6 @@
permission="zope.Public"
/>
- <browser:page
- for="Products.CMFCore.interfaces.ISiteRoot"
- name="install_caching"
- class=".caching.InstallCaching"
- permission="cmf.ManagePortal"
- />
-
<!-- portal title -->
<browser:viewlet
name="selinux.portaltitle"
Deleted: selinux-site/trunk/selinux.theme/selinux/theme/browser/frontpage.py
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/browser/frontpage.py 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/browser/frontpage.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -1,49 +0,0 @@
-from Products.CMFCore.utils import getToolByName
-from zope.component import getUtility
-
-class FrontPage(object):
-
- def __init__(self, context, request):
- self.context = context
- self.request = request
-
- def intro(self):
- intro = getattr(self.context, 'introdoc', None)
- if intro:
- mship = getToolByName(self.context, 'portal_membership')
- member_count = len(mship.listMemberIds())
- text = intro.getText()
- return text.replace('MEMBERS', str(member_count))
- else:
- return None
-
- def news(self):
- mtool = getToolByName(self.context, 'portal_membership')
- trans_util = getToolByName(self.context, 'translation_service')
- catalog = getToolByName(self.context, 'portal_catalog')
- query = { 'portal_type': 'News Item',
- 'sort_on': 'created',
- 'sort_order': 'reverse',
- 'review_state': 'published' }
-
- news = []
- brains = catalog.searchResults(query)[:5]
- for brain in brains:
- author = mtool.getMemberInfo(brain.Creator)
- author_name = author and author['fullname'] or brain.Creator
-
- modified = trans_util.ulocalized_time(brain.ModificationDate,
- True, self.context,
- domain='plonelocales')
-
- newsitem = { 'title': brain.Title,
- 'author': author_name,
- 'author_id': brain.Creator,
- 'date': modified,
- 'body': brain.getObject().getText(),
- 'url': brain.getURL(),
- 'discussion_count': 0,
- 'discussion_url': 'hoho' }
- news.append(newsitem)
-
- return news
Deleted: selinux-site/trunk/selinux.theme/selinux/theme/caching_subscribers.py
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/caching_subscribers.py 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/caching_subscribers.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -1,44 +0,0 @@
-from Products.CMFCore.utils import getToolByName
-from httplib import HTTPConnection
-
-def purge_frontpage(obj):
- portal_props = getToolByName(obj, 'portal_properties')
- site_props = getattr(portal_props, 'site_properties')
-
- if not site_props.getProperty('purge_enabled', False):
- return
-
- host = site_props.getProperty('purging_host', None)
- port = site_props.getProperty('purging_port', None)
- paths = site_props.getProperty('purging_paths', None)
-
- for path in paths:
- try:
- connection = HTTPConnection(host, port)
- connection.putrequest('PURGE', path)
- connection.endheaders()
- response = connection.getresponse()
- connection.close()
- except socket.error, msg:
- pass
-
-def news_added(obj, event):
- """ This is called when a news item is added to the site. """
- workflow = getToolByName(obj, 'portal_workflow')
- state = workflow.getInfoFor(obj, 'review_state')
-
- # when a news item is created it's first added to a temporary folder
- # that shouldn't trigger purge
- if state == 'published' and obj.aq_parent.portal_type != 'TempFolder':
- purge_frontpage(obj)
-
-def news_modified(obj, event):
- """ This is called when a news item is modified. """
- workflow = getToolByName(obj, 'portal_workflow')
- state = workflow.getInfoFor(obj, 'review_state')
- if state == 'published':
- purge_frontpage(obj)
-
-def news_workflow_transition(obj, event):
- """ This is called when a news item's workflow state changed. """
- purge_frontpage(obj)
Modified: selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/configure.zcml 2007-10-29 07:39:55 UTC (rev 117)
@@ -19,22 +19,4 @@
<include package=".browser" />
- <subscriber
- for="Products.ATContentTypes.content.newsitem.ATNewsItem
- zope.lifecycleevent.interfaces.IObjectModifiedEvent"
- handler=".caching_subscribers.news_modified"
- />
-
- <subscriber
- for="Products.ATContentTypes.content.newsitem.ATNewsItem
- zope.app.container.interfaces.IObjectAddedEvent"
- handler=".caching_subscribers.news_added"
- />
-
- <subscriber
- for="Products.ATContentTypes.content.newsitem.ATNewsItem
- Products.CMFCore.interfaces.IActionSucceededEvent"
- handler=".caching_subscribers.news_workflow_transition"
- />
-
</configure>
Modified: selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/import_steps.xml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/import_steps.xml 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/import_steps.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -3,7 +3,6 @@
<import-step id="selinuxtheme-various" version="20070531"
handler="selinux.theme.setuphandlers.setupVarious"
title="Setup SeLinux theme">
- <dependency step="content" />
- Add logo, styles and templates that defines the SeLinux site design.
+ Add logo, styles and templates that defines the SeLinux site design.
</import-step>
</import-steps>
Deleted: selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/memberdata_properties.xml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/memberdata_properties.xml 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/memberdata_properties.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-<object name="portal_memberdata" meta_type="Plone Memberdata Tool">
- <property name="surname" type="string"></property>
- <property name="givenname" type="string"></property>
- <property name="mobile" type="string"></property>
- <property name="postadress" type="string"></property>
- <property name="postnr" type="string"></property>
- <property name="telenr" type="string"></property>
-</object>
Deleted: selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/properties.xml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/properties.xml 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/properties.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<site>
- <property name="layout" type="string">selinux_index</property>
- <property name="email_from_address"
- type="string">webb at se.linux.org</property>
- <property name="email_from_name"
- type="string">SeLinux</property>
- <property name="validate_email" type="boolean">True</property>
- <property name="email_charset" type="string">utf-8</property>
- <property name="enable_permalink" type="boolean">False</property>
-</site>
Deleted: selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/propertiestool.xml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/propertiestool.xml 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/propertiestool.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -1,8 +0,0 @@
-<?xml version="1.0"?>
-<object name="portal_properties" meta_type="Plone Properties Tool">
- <object name="site_properties" meta_type="Plone Property Sheet">
- <property name="default_language" type="string">sv</property>
- <property name="localTimeFormat" type="string">%Y-%m-%d</property>
- <property name="localLongTimeFormat" type="string">%Y-%m-%d %H:%M</property>
- </object>
-</object>
Deleted: selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/rolemap.xml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/rolemap.xml 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/rolemap.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -1,9 +0,0 @@
-<?xml version="1.0"?>
-<rolemap>
- <permissions>
- <permission name="Add portal member"
- acquire="False">
- <role name="Anonymous"/>
- </permission>
- </permissions>
-</rolemap>
Deleted: selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/workflows.xml
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/workflows.xml 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/profiles/default/workflows.xml 2007-10-29 07:39:55 UTC (rev 117)
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<object name="portal_workflow" meta_type="Plone Workflow Tool">
- <property
- name="title">Contains workflow definitions for your portal</property>
- <object name="news_workflow" meta_type="Workflow"/>
- <object name="selinux_workflow" meta_type="Workflow"/>
- <bindings>
- <default>
- <bound-workflow workflow_id="selinux_workflow"/>
- </default>
- <type type_id="News Item">
- <bound-workflow workflow_id="news_workflow"/>
- </type>
- <type type_id="Event">
- <bound-workflow workflow_id="news_workflow"/>
- </type>
- </bindings>
-</object>
Modified: selinux-site/trunk/selinux.theme/selinux/theme/setuphandlers.py
===================================================================
--- selinux-site/trunk/selinux.theme/selinux/theme/setuphandlers.py 2007-10-04 20:52:09 UTC (rev 116)
+++ selinux-site/trunk/selinux.theme/selinux/theme/setuphandlers.py 2007-10-29 07:39:55 UTC (rev 117)
@@ -1,144 +1,2 @@
-from Products.CMFCore.utils import getToolByName
-from Products.CMFPlone.utils import _createObjectByType
-from Products.ATContentTypes.lib import constraintypes
-
def setupVarious(context):
- site = context.getSite()
- setupFrontpage(site)
- removePloneContent(site)
- setupMemberFolder(site)
- createNewsFolder(site)
- createEventsFolder(site)
- publishInitialFolders(site)
- createLatestFeed(site)
-
-def createEventsFolder(site):
- wftool = getToolByName(site, 'portal_workflow')
- existing = site.objectIds()
-
- # Events topic
- if 'handelser' in existing:
- folder = site.handelser
- folder.setConstrainTypesMode(constraintypes.ENABLED)
- folder.setLocallyAllowedTypes(['Event'])
- folder.setImmediatelyAddableTypes(['Event'])
- folder.setDefaultPage('aggregator')
- folder.unmarkCreationFlag()
-
- if wftool.getInfoFor(folder, 'review_state') != 'published':
- wftool.doActionFor(folder, 'publish')
-
- topic = folder.aggregator
- topic.unmarkCreationFlag()
-
- type_crit = topic.addCriterion('Type','ATPortalTypeCriterion')
- type_crit.setValue('Event')
- sort_crit = topic.addCriterion('start','ATSortCriterion')
- state_crit = topic.addCriterion('review_state', 'ATSimpleStringCriterion')
- state_crit.setValue('published')
- date_crit = topic.addCriterion('start', 'ATFriendlyDateCriteria')
- # Set date reference to now
- date_crit.setValue(0)
- # Only take events in the future
- date_crit.setDateRange('+') # This is irrelevant when the date is now
- date_crit.setOperation('more')
-
- if wftool.getInfoFor(topic, 'review_state') != 'published':
- wftool.doActionFor(topic, 'publish')
-
-
-def createLatestFeed(site):
- existing = site.objectIds()
-
- # Collection for making a feed
- if 'nytt' not in existing:
- site.invokeFactory('Topic', id='nytt', title='Senaste')
- topic = site.nytt
-
- topic.setLimitNumber(True)
- topic.setItemCount(30)
- state_crit = topic.addCriterion('review_state',
- 'ATSimpleStringCriterion')
- state_crit.setValue('published')
- topic.setSortCriterion('effective', True)
- topic.manage_addProperty('layout', 'folder_summary_view', 'string')
- topic.unmarkCreationFlag()
-
-
-def createNewsFolder(site):
- wftool = getToolByName(site, 'portal_workflow')
- existing = site.objectIds()
-
- # News topic
- if 'nyheter' in existing:
- folder = site.nyheter
- folder.setConstrainTypesMode(constraintypes.ENABLED)
- folder.setLocallyAllowedTypes(['News Item'])
- folder.setImmediatelyAddableTypes(['News Item'])
- folder.setDefaultPage('aggregator')
- folder.unmarkCreationFlag()
-
- if wftool.getInfoFor(folder, 'review_state') != 'published':
- wftool.doActionFor(folder, 'publish')
-
- topic = site.nyheter.aggregator
- type_crit = topic.addCriterion('Type','ATPortalTypeCriterion')
- type_crit.setValue('News Item')
- sort_crit = topic.addCriterion('created','ATSortCriterion')
- state_crit = topic.addCriterion('review_state', 'ATSimpleStringCriterion')
- state_crit.setValue('published')
- topic.setSortCriterion('effective', True)
- topic.manage_addProperty('layout', 'folder_summary_view', 'string')
- topic.unmarkCreationFlag()
-
- if wftool.getInfoFor(topic, 'review_state') != 'published':
- wftool.doActionFor(topic, 'publish')
-
-def setupFrontpage(site):
- if site.hasProperty('default_page'):
- site.manage_delProperties(ids=['default_page'])
-
- #left_column = getUtility(IPortletManager, name=u'plone.leftcolumn',
- # context=site)
-
- #left = getMultiAdapter((site, left_column,), IPortletAssignmentMapping,
- # context=site)
-
- #keys = list(left.keys())
- #for key in keys:
- # del left[key]
-
-
-# until plone supports setting up the site without creating some initial
-# folders, we need to remove a few folders
-def removePloneContent(site):
- for id in ('Members', 'news', 'events'):
- if getattr(site, id, None):
- site.manage_delObjects([id])
-
-def setupMemberFolder(site):
- mship = getToolByName(site, 'portal_membership')
- workflow = getToolByName(site, 'portal_workflow')
-
- # we call the members folder 'medlemmar'
- mship.setMembersFolderById('medlemmar')
-
- # member folders should be created
- if not mship.getMemberareaCreationFlag():
- mship.setMemberareaCreationFlag()
-
- # publish member folder
- members = getattr(site, 'medlemmar', None)
- if members is not None:
- if workflow.getInfoFor(members, 'review_state') != 'published':
- workflow.doActionFor(members, 'publish')
-
-def publishInitialFolders(site):
- workflow = getToolByName(site, 'portal_workflow')
-
- folders = ('arbetsgrupper', 'dokumentation', 'support', 'foreningen')
- for folder_id in folders:
- folder = getattr(site, folder_id, None)
- if folder is not None:
- if workflow.getInfoFor(folder, 'review_state') != 'published':
- workflow.doActionFor(folder, 'publish')
+ pass
More information about the commits
mailing list