Skip to content

/ Zope / gocept svn checkins / Archive / 2005 / 2005-10 / SVN: r3630 - in AlphaFlow/trunk: . doc

[ << ] [ >> ]

[ SVN: r3624 - AlphaFlow/branches/roman-editor_xul_i... ] [ Re: [SVN public] SVN: r3635 - glome/trunk / ... ]

SVN: r3630 - in AlphaFlow/trunk: . doc
Christian Zagrodnick <cz(at)gocept.com>
2005-10-04 14:21:56 [ FULL ]
Author: zagy
Date: Tue Oct  4 14:21:47 2005
New Revision: 3630

Modified:
   AlphaFlow/trunk/activity.py
   AlphaFlow/trunk/doc/HISTORY.txt
Log:
    - Don't fail do show the possible assignees if user cannot access the
      'fullname' property. This regularly happened with CMFMember.




Modified: AlphaFlow/trunk/activity.py
==============================================================================
--- AlphaFlow/trunk/activity.py	(original)
+++ AlphaFlow/trunk/activity.py	Tue Oct  4 14:21:47 2005
(at)(at) -9,7 +9,7 (at)(at)
 
 # Zope imports
 from Globals import InitializeClass
-from AccessControl import ClassSecurityInfo, getSecurityManager
+from AccessControl import ClassSecurityInfo, getSecurityManager, Unauthorized
 from OFS.PropertyManager import PropertyManager
 from OFS.SimpleItem import SimpleItem
 from Products.CMFCore.utils import getToolByName
(at)(at) -237,7 +237,7 (at)(at)
             try:
                 fullname = '%s (%s)' % (x.getProperty('fullname', ''),
                                         username)
-            except AttributeError:
+            except (AttributeError, Unauthorized):
                 fullname = username
             nice_members.append((username, fullname))
         nice_members.sort(_sort_members)

Modified: AlphaFlow/trunk/doc/HISTORY.txt
==============================================================================
--- AlphaFlow/trunk/doc/HISTORY.txt	(original)
+++ AlphaFlow/trunk/doc/HISTORY.txt	Tue Oct  4 14:21:47 2005
(at)(at) -2,6 +2,18 (at)(at)
 AlphaFlow History
 =================
 
+AlphaFlow post 1.0
+==================
+
+New Features
+++++++++++++
+
+Bugs fixed
+++++++++++
+
+    - Don't fail do show the possible assignees if user cannot access the
+      'fullname' property. This regularly happened with CMFMember.
+
 AlphaFlow 1.0
 =============

SVN: r3635 - glome/trunk
Christian Zagrodnick <cz(at)gocept.com>
2005-10-05 09:14:46 [ FULL ]
Author: zagy
Date: Wed Oct  5 09:14:37 2005
New Revision: 3635

Modified:
   glome/trunk/aftypes.py
   glome/trunk/patch.py
Log:
fixed ATDocument.getText patch so it actually works :)



Modified: glome/trunk/aftypes.py
==============================================================================
--- glome/trunk/aftypes.py	(original)
+++ glome/trunk/aftypes.py	Wed Oct  5 09:14:37 2005
(at)(at) -172,8 +172,7 (at)(at)
             storage = getattr(aq_base(self), '_glome_subobjects')
         return storage
 
-documentBaseClass.getText = GlomeDocument.getText
 atapi.registerType(GlomeDocument, PROJECTNAME)
 
-glome_type_names = [ x[1] for x in glome_types ] 
+glome_type_names = [ x[1] for x in glome_types ]
 glome_type_names.append("GlomeDocument")

Modified: glome/trunk/patch.py
==============================================================================
--- glome/trunk/patch.py	(original)
+++ glome/trunk/patch.py	Wed Oct  5 09:14:37 2005
(at)(at) -14,6 +14,7 (at)(at)
 
 from Products.glome import config
 from Products.AlphaFlow.plone21check import plone21
+from Products.AlphaFlow.utils import installMethodOnClass
 
 _already_patched = False
 
(at)(at) -407,6 +408,22 (at)(at)
             data = data.replace(asset, new)
 
         return data
+    
+    def getText(self):
+        """Return the text.
+
+        Modify links to subobjects to match default plone base tag.
+
+        XXX This method is all but memory efficient.
+        """
+        data = self.getField('text').get(self)
+        # No official way to get to those names
+        subobjects = self._get_subobject_storage()
+        for asset in subobjects:
+            new = "%s/%s" % (self.getId(), asset)
+            data = data.replace(asset, new)
+
+        return data
 
     zLOG.LOG("glome", zLOG.INFO, "Patching "
             "ATContentTypes.types.ATFile.ATFile")
(at)(at) -419,8 +436,7 (at)(at)
         from Products.ATContentTypes.atct import ATDocument
     else:
         from Products.ATContentTypes.types.ATDocument import ATDocument
-    from Products.glome.aftypes import GlomeDocument
-    ATDocument.getText = GlomeDocument.getText
+    ATDocument.getText = getText
     ATDocument._get_subobject_storage = _get_subobject_storage

SVN: r3639 - AlphaFlow/trunk
Christian Zagrodnick <cz(at)gocept.com>
2005-10-06 10:21:32 [ FULL ]
Author: zagy
Date: Thu Oct  6 10:21:29 2005
New Revision: 3639

Modified:
   AlphaFlow/trunk/utils.py
Log:
- manage_addLocalRole does no longer implicitly add the dynamic roles to
  the fixed roles.




Modified: AlphaFlow/trunk/utils.py
==============================================================================
--- AlphaFlow/trunk/utils.py	(original)
+++ AlphaFlow/trunk/utils.py	Thu Oct  6 10:21:29 2005
(at)(at) -299,7 +299,14 (at)(at)
         dict=self.__ac_local_roles__
         if dict is None:
             self.__ac_local_roles__ = dict = {}
-        local_roles = list(dict.get(userid, []))
+        
+        # make sure we don't blend in dynamic roles:
+        try:
+            non_computed_dict = dict._original
+        except AttributeError:
+            non_computed_dict = dict
+
+        local_roles = list(non_computed_dict.get(userid, []))
         for r in roles:
             if r not in local_roles:
                 local_roles.append(r)

SVN: r3640 - in AlphaFlow/trunk: . activities tests
Christian Zagrodnick <cz(at)gocept.com>
2005-10-06 10:32:45 [ FULL ]
Author: zagy
Date: Thu Oct  6 10:32:40 2005
New Revision: 3640

Added:
   AlphaFlow/trunk/activities/roleassign.py   (contents, props changed)
   AlphaFlow/trunk/tests/test_roleassign.py   (contents, props changed)
Modified:
   AlphaFlow/trunk/__init__.py
   AlphaFlow/trunk/activities/interfaces.py
Log:
- Added roleassign activity. It's a configurable but automatic activity
  which sets agiven set of roles to the configured users.




Modified: AlphaFlow/trunk/__init__.py
==============================================================================
--- AlphaFlow/trunk/__init__.py	(original)
+++ AlphaFlow/trunk/__init__.py	Thu Oct  6 10:32:40 2005
(at)(at) -40,7 +40,7 (at)(at)
     from activities import \
         task, review, permission, version, expression, dcworkflow, \
         recursion, notify, alarm, condition, routing, gates, ntask, \
-        decision, configuration, parent, switch
+        decision, configuration, parent, switch, roleassign
 
 
 def initialize_content(context):

Modified: AlphaFlow/trunk/activities/interfaces.py
==============================================================================
--- AlphaFlow/trunk/activities/interfaces.py	(original)
+++ AlphaFlow/trunk/activities/interfaces.py	Thu Oct  6 10:32:40 2005
(at)(at) -217,6 +217,20 (at)(at)
 class IParentWorkItem(IAutomaticWorkItem):
     """continue with parent of a certain activity"""
 
+
+class IRoleAssignActivity(IAutomaticActivity):
+    """Sets a given set of roles to the configured users."""
+
+    def getPossibleUsers():
+        """return a sequence of users which possibly might be given the role
+
+        returns [(user_id, readable_name), ...]
+        """
+
+class IRoleAssignWorkItem(IAutomaticWorkItem):
+    """Sets a given set of roles to the configured users."""
+
+
 
 ##################
 # deprecated stuff

Added: AlphaFlow/trunk/activities/roleassign.py
==============================================================================
--- (empty file)
+++ AlphaFlow/trunk/activities/roleassign.py	Thu Oct  6 10:32:40 2005
(at)(at) -0,0 +1,124 (at)(at)
+# Copyright (c) 2004-2005 gocept gmbh & co. kg
+# See also LICENSE.txt
+# $Id: task.py 3545 2005-09-16 09:42:09Z ctheune $
+"""Task activity and work item."""
+
+# Zope imports
+from AccessControl import ClassSecurityInfo, Unauthorized
+
+# Plone/AT imports
+from Products.CMFCore.utils import getToolByName
+from Products.Archetypes import public as atapi
+
+# Sibling imports
+from Products.AlphaFlow.workitem import registerWorkItem,
BaseAutomaticWorkItem
+from Products.AlphaFlow.activity import registerActivity,
BaseAutomaticActivity
+from Products.AlphaFlow import config, utils
+from Products.AlphaFlow.action import Action
+from Products.AlphaFlow.workflowattr import WorkflowAttribute
+from Products.AlphaFlow.activities.interfaces import \
+        IRoleAssignActivity, IRoleAssignWorkItem
+
+
+class RoleAssignActivity(BaseAutomaticActivity):
+    
+    __implements__ = BaseAutomaticActivity.__implements__ + \
+            (IRoleAssignActivity,)
+    security = ClassSecurityInfo()
+
+    meta_type = "AlphaFlow Task Activity"
+    activity_type = nodeName = "roleassign"
+    icon = "misc_/AlphaFlow/task"
+
+    attributes = BaseAutomaticActivity.attributes + (
+        WorkflowAttribute('roles', 'roles', (),
+                          'Roles to assign on content object.',
+                          encoding="ascii", datatype=tuple),
+        WorkflowAttribute('completion_activity', 'completion_activity', (),
+                          'Activity to start after completion.',
+                          encoding="ascii", datatype=tuple),
+        )
+    
+    configurationSchema = atapi.Schema((
+        atapi.LinesField(
+            "users",
+             vocabulary="getPossibleUsers",
+             enforceVocabulary=True,
+             required=True,
+             default_method='_get_assignees_default',
+             widget=atapi.MultiSelectionWidget(
+                 label="Selected users",
+                 description="Select one or more users for this task")),
+        ))
+
+
+    security.declareProtected(config.WORK_WITH_PROCESS, 'getPossibleUsers')
+    def getPossibleUsers(self):
+        
+        def _sort_members(a, b):
+            return cmp(a[1], b[1])
+
+        pm = getToolByName(self, 'portal_membership')
+        members = pm.listMembers()
+        nice_members = []
+        for member in members:
+            member_id = member.getUserName()
+            try:
+                fullname = '%s (%s)' % (member.getProperty('fullname'),
+                                        member_id)
+            except (Attributes, Unauthorized):
+                fullname = member_id
+            nice_members.append((member_id, fullname))
+
+        nice_members.sort(_sort_members)
+        return nice_members
+        
+
+    security.declarePrivate('_get_assignees_default')
+    def _get_assignees_default(self):
+        return [getSecurityManager().getUser().getUserName()]
+
+
+class RoleAssignWorkItem(BaseAutomaticWorkItem):
+
+    __implements__ = BaseAutomaticWorkItem.__implements__ + \
+            (IRoleAssignWorkItem, )
+    security = ClassSecurityInfo()
+
+    activity_type  = "roleassign"
+
+    def run(self):
+        activity = self.getActivity()
+        users = self.getActivityConfiguration('users')
+        content = self.getContentObject()
+        
+        if content is not None:
+            for role in activity.roles:
+                self._removeLocalRoleFromAllUsers(role, content)
+                self._addLocalRole(role, users, content)
+            content.aq_inner.reindexObjectSecurity()
+       
+    def _removeLocalRoleFromAllUsers(self, role, content):
+        """remove a given local role from all users on content
+        """
+        users_with_role = content.users_with_local_role(role)
+        for user in users_with_role:
+            roles_of_user = list(content.get_local_roles_for_userid(user))
+            try:
+                roles_of_user.remove(role)
+            except ValueError:
+                pass
+            else:
+                content.manage_setLocalRoles(user, roles_of_user)
+
+    def _addLocalRole(self, role, users, content):
+        """add a role to all given users"""
+        for user in users:
+            content.manage_addLocalRoles(user, [role])
+
+        
+
+
+# register the stuff
+registerActivity(RoleAssignActivity)
+registerWorkItem(RoleAssignWorkItem)

Added: AlphaFlow/trunk/tests/test_roleassign.py
==============================================================================
--- (empty file)
+++ AlphaFlow/trunk/tests/test_roleassign.py	Thu Oct  6 10:32:40 2005
(at)(at) -0,0 +1,66 (at)(at)
+# Copyright (c) 2005 gocept gmbh & co. kg
+# See also LICENSE.txt
+# $Id: test_parent.py 3376 2005-09-06 06:43:55Z nilo $
+
+import common
+import unittest
+
+from DateTime import DateTime
+from Testing import ZopeTestCase
+
+from Products.CMFCore.utils import getToolByName
+
+from Products.AlphaFlow.tests.AlphaFlowTestCase import AlphaFlowTestCase
+from Products.AlphaFlow.activities.interfaces import \
+        IRoleAssignActivity, IRoleAssignWorkItem
+from Products.AlphaFlow.activities.roleassign import \
+        RoleAssignActivity, RoleAssignWorkItem
+
+class RoleAssignTest(AlphaFlowTestCase):
+
+    interfaces_to_test = [
+       (IRoleAssignWorkItem, RoleAssignWorkItem),
+       (IRoleAssignActivity, RoleAssignActivity)
+     ]
+
+
+    def test_roleassign(self):
+        self.loginAsPortalOwner()
+        self._create_test_users()
+        portal = self.getPortal()
+        
+        doc = self.create(portal, 'DummyContent', 'doc1')
+        wi = RoleAssignWorkItem('myid', 'my-activity')
+
+        def _init_test_roles():
+            # set a few roles on doc
+            doc.manage_setLocalRoles('editor1', ['foo', 'bar'])
+            doc.manage_setLocalRoles('editor2', ['foo', 'bar', 'baz'])
+            doc.manage_setLocalRoles('editor3', ['bar', 'baz'])
+        
+        def _assert_role(role, expected_users):
+            got = doc.users_with_local_role(role)
+            got.sort()
+            self.assertEquals(expected_users, got)
+        # check if removeal of a single role 'foo' works
+        _init_test_roles()
+        _assert_role('foo', ['editor1', 'editor2'])
+        _assert_role('bar', ['editor1', 'editor2', 'editor3'])
+        _assert_role('baz', ['editor2', 'editor3'])
+        wi._removeLocalRoleFromAllUsers('foo', doc)
+        _assert_role('foo', [])
+        _assert_role('bar', ['editor1', 'editor2', 'editor3'])
+        _assert_role('baz', ['editor2', 'editor3'])
+       
+        # now check the assignment of roles to users
+        wi._addLocalRole('newrole', ['editor1', 'editor3'], doc)
+        _assert_role('foo', [])
+        _assert_role('bar', ['editor1', 'editor2', 'editor3'])
+        _assert_role('baz', ['editor2', 'editor3'])
+        _assert_role('newrole', ['editor1', 'editor3'])
+
+def test_suite():
+    suite = unittest.TestSuite()
+    suite.addTest(unittest.makeSuite(RoleAssignTest))
+    return suite
+

SVN: r3641 - AlphaFlow/trunk/doc
Christian Zagrodnick <cz(at)gocept.com>
2005-10-06 10:32:56 [ FULL ]
Author: zagy
Date: Thu Oct  6 10:32:53 2005
New Revision: 3641

Modified:
   AlphaFlow/trunk/doc/HISTORY.txt
Log:
updated history



Modified: AlphaFlow/trunk/doc/HISTORY.txt
==============================================================================
--- AlphaFlow/trunk/doc/HISTORY.txt	(original)
+++ AlphaFlow/trunk/doc/HISTORY.txt	Thu Oct  6 10:32:53 2005
(at)(at) -14,6 +14,9 (at)(at)
     - Don't fail do show the possible assignees if user cannot access the
       'fullname' property. This regularly happened with CMFMember.
 
+    - manage_addLocalRole does no longer implicitly add the dynamic roles to
+      the fixed roles.
+
 AlphaFlow 1.0
 =============

SVN: r3643 - AlphaFlow/trunk/doc
Christian Zagrodnick <cz(at)gocept.com>
2005-10-06 11:23:50 [ FULL ]
Author: zagy
Date: Thu Oct  6 11:23:47 2005
New Revision: 3643

Modified:
   AlphaFlow/trunk/doc/HISTORY.txt
Log:
updated history



Modified: AlphaFlow/trunk/doc/HISTORY.txt
==============================================================================
--- AlphaFlow/trunk/doc/HISTORY.txt	(original)
+++ AlphaFlow/trunk/doc/HISTORY.txt	Thu Oct  6 11:23:47 2005
(at)(at) -8,6 +8,9 (at)(at)
 New Features
 ++++++++++++
 
+    - Added roleassign activity. It's a configurable but automatic activity
+      which sets a given set of roles to the configured users.
+
 Bugs fixed
 ++++++++++

SVN: r3644 - in AlphaFlow/trunk: activities tests
Christian Zagrodnick <cz(at)gocept.com>
2005-10-06 11:30:01 [ FULL ]
Author: zagy
Date: Thu Oct  6 11:29:56 2005
New Revision: 3644

Modified:
   AlphaFlow/trunk/activities/roleassign.py
   AlphaFlow/trunk/tests/test_roleassign.py
Log:
- fixed bug in role removal: last role could not be removed



Modified: AlphaFlow/trunk/activities/roleassign.py
==============================================================================
--- AlphaFlow/trunk/activities/roleassign.py	(original)
+++ AlphaFlow/trunk/activities/roleassign.py	Thu Oct  6 11:29:56 2005
(at)(at) -107,9 +107,14 (at)(at)
             try:
                 roles_of_user.remove(role)
             except ValueError:
+                # The user doesn't have the role. Should not happen since we
+                # asked only for users who had the role in the first place.
                 pass
             else:
-                content.manage_setLocalRoles(user, roles_of_user)
+                if roles_of_user:
+                    content.manage_setLocalRoles(user, roles_of_user)
+                else:
+                    content.manage_delLocalRoles([user])
 
     def _addLocalRole(self, role, users, content):
         """add a role to all given users"""

Modified: AlphaFlow/trunk/tests/test_roleassign.py
==============================================================================
--- AlphaFlow/trunk/tests/test_roleassign.py	(original)
+++ AlphaFlow/trunk/tests/test_roleassign.py	Thu Oct  6 11:29:56 2005
(at)(at) -34,7 +34,7 (at)(at)
 
         def _init_test_roles():
             # set a few roles on doc
-            doc.manage_setLocalRoles('editor1', ['foo', 'bar'])
+            doc.manage_setLocalRoles('editor1', ['foo'])
             doc.manage_setLocalRoles('editor2', ['foo', 'bar', 'baz'])
             doc.manage_setLocalRoles('editor3', ['bar', 'baz'])
         
(at)(at) -42,20 +42,21 (at)(at)
             got = doc.users_with_local_role(role)
             got.sort()
             self.assertEquals(expected_users, got)
+
         # check if removeal of a single role 'foo' works
         _init_test_roles()
         _assert_role('foo', ['editor1', 'editor2'])
-        _assert_role('bar', ['editor1', 'editor2', 'editor3'])
+        _assert_role('bar', ['editor2', 'editor3'])
         _assert_role('baz', ['editor2', 'editor3'])
         wi._removeLocalRoleFromAllUsers('foo', doc)
         _assert_role('foo', [])
-        _assert_role('bar', ['editor1', 'editor2', 'editor3'])
+        _assert_role('bar', ['editor2', 'editor3'])
         _assert_role('baz', ['editor2', 'editor3'])
        
         # now check the assignment of roles to users
         wi._addLocalRole('newrole', ['editor1', 'editor3'], doc)
         _assert_role('foo', [])
-        _assert_role('bar', ['editor1', 'editor2', 'editor3'])
+        _assert_role('bar', ['editor2', 'editor3'])
         _assert_role('baz', ['editor2', 'editor3'])
         _assert_role('newrole', ['editor1', 'editor3'])

SVN: r3649 - AlphaFlow/trunk/doc/manual
Christian Zagrodnick <cz(at)gocept.com>
2005-10-07 10:18:11 [ FULL ]
Author: zagy
Date: Fri Oct  7 10:18:06 2005
New Revision: 3649

Modified:
   AlphaFlow/trunk/doc/manual/activities.tex
Log:
fixed Bug 2932
        
permission-change permission set documented wrong




Modified: AlphaFlow/trunk/doc/manual/activities.tex
==============================================================================
--- AlphaFlow/trunk/doc/manual/activities.tex	(original)
+++ AlphaFlow/trunk/doc/manual/activities.tex	Fri Oct  7 10:18:06 2005
(at)(at) -626,7 +626,7 (at)(at)
     Remove the given permission for the given roles.
 \end{funcdesc}
 
-\begin{funcdesc}{set}{permission, roles, [acquire]}
+\begin{funcdesc}{permission}{permission, roles, [acquire]}
     Set the given permission for exactly the given roles. Optionally, modify
the 
     acquisition flag.
 \end{funcdesc}
(at)(at) -643,7 +643,7 (at)(at)
             roles="Owner"/>
     <add name="View"
          roles="Anonymous"/>
-    <set name="Access contents information" 
+    <permission name="Access contents information" 
          roles="Anonymous Manager" 
          acquire="True"/>
 </permission-change>

SVN: r3652 - AlphaFlow/trunk
Christian Zagrodnick <cz(at)gocept.com>
2005-10-07 14:02:40 [ FULL ]
Author: zagy
Date: Fri Oct  7 14:02:37 2005
New Revision: 3652

Modified:
   AlphaFlow/trunk/version.txt
Log:
1.0.1


Modified: AlphaFlow/trunk/version.txt
==============================================================================
--- AlphaFlow/trunk/version.txt	(original)
+++ AlphaFlow/trunk/version.txt	Fri Oct  7 14:02:37 2005
(at)(at) -1 +1 (at)(at)
-1.0
+1.0.1

SVN: r3657 - AlphaFlow/trunk/doc/manual
Christian Theune <ct(at)gocept.com>
2005-10-07 15:22:50 [ FULL ]
Author: ctheune
Date: Fri Oct  7 15:22:45 2005
New Revision: 3657

Modified:
   AlphaFlow/trunk/doc/manual/Makefile
Log:
 - different place for nightly builds


Modified: AlphaFlow/trunk/doc/manual/Makefile
==============================================================================
--- AlphaFlow/trunk/doc/manual/Makefile	(original)
+++ AlphaFlow/trunk/doc/manual/Makefile	Fri Oct  7 15:22:45 2005
(at)(at) -1,6 +1,6 (at)(at)
 # Makefile für Jucon-Handbuch
 
-MKHOWTO="/home/ctheune/tmp/Python-2.4.1/Doc/tools/mkhowto"
+MKHOWTO="/home/mac/data/pkg/python/Python-2.4.1/Doc/tools/mkhowto"
 
 .PHONY: all pdf html clean

SVN: r3658 - in AlphaFlow/trunk: activities doc/manual
Daniel Havlik <dh(at)gocept.com>
2005-10-07 15:30:12 [ FULL ]
Author: nilo
Date: Fri Oct  7 15:30:06 2005
New Revision: 3658

Modified:
   AlphaFlow/trunk/activities/roleassign.py
   AlphaFlow/trunk/doc/manual/activities.tex
Log:
- repaired roleassign activity (completion_activity -> continue_activity)
- added documentation  


Modified: AlphaFlow/trunk/activities/roleassign.py
==============================================================================
--- AlphaFlow/trunk/activities/roleassign.py	(original)
+++ AlphaFlow/trunk/activities/roleassign.py	Fri Oct  7 15:30:06 2005
(at)(at) -34,9 +34,6 (at)(at)
         WorkflowAttribute('roles', 'roles', (),
                           'Roles to assign on content object.',
                           encoding="ascii", datatype=tuple),
-        WorkflowAttribute('completion_activity', 'completion_activity', (),
-                          'Activity to start after completion.',
-                          encoding="ascii", datatype=tuple),
         )
     
     configurationSchema = atapi.Schema((

Modified: AlphaFlow/trunk/doc/manual/activities.tex
==============================================================================
--- AlphaFlow/trunk/doc/manual/activities.tex	(original)
+++ AlphaFlow/trunk/doc/manual/activities.tex	Fri Oct  7 15:30:06 2005
(at)(at) -649,6 +649,35 (at)(at)
 </permission-change>
 \end{verbatim}
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\subsection{\module{Roleassign} --- Assign local roles to users on the content
object}
+
+\declaremodule{standard}{roleassign}
+\modulesynopsis{Assign local roles to users on the content object}
+ 
+The \module{Roleassign} activity is able to assign or remove given local roles
for configurable 
+users on the content object. 
+  
+\subsubsection{Activity configuration}
+
+\begin{memberdesc}{roles}
+    List of roles to assign users to on the content object. 
+\end{memberdesc}
+
+\subsubsection{Instance configuration}
+
+    \begin{description}
+        \item[users] Lets the user select which users the roles should be
assigned.
+    \end{description}
+
+\subsubsection{ALF Example}
+
+\begin{verbatim}
+  <roleassign id="choose_manager"
+              continue_activity="some_activity"
+              roles="Manager"/>
+\end{verbatim}
+

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \subsection{\module{Switch} --- Programmatically select routes in the
workflow}
 
(at)(at) -667,7 +696,7 (at)(at)
 \subsubsection{Activity configuration}
 
 \begin{memberdesc}{mode}
-    Either set to \var{all} or \var{first}. 
+    oither set to \var{all} or \var{first}. 
 \end{memberdesc}
 \begin{memberdesc}{case}
     A TALES expression that evaluates to \var{True} or \var{False}.

SVN: r3660 - AlphaFlow/trunk/doc/manual
Christian Theune <ct(at)gocept.com>
2005-10-07 15:42:10 [ FULL ]
Author: ctheune
Date: Fri Oct  7 15:42:07 2005
New Revision: 3660

Modified:
   AlphaFlow/trunk/doc/manual/manual.tex
Log:
 - bumped version number


Modified: AlphaFlow/trunk/doc/manual/manual.tex
==============================================================================
--- AlphaFlow/trunk/doc/manual/manual.tex	(original)
+++ AlphaFlow/trunk/doc/manual/manual.tex	Fri Oct  7 15:42:07 2005
(at)(at) -20,13 +20,13 (at)(at)
     E-Mail: \email{ct(at)gocept.com}
 }
 
-\date{16 June 2006}     % update before release!
+\date{unreleased}     % update before release!
                 % Use an explicit date so that reformatting
                 % doesn't cause a new date to be used.  Setting
                 % the date to \today can be used during draft
                 % stages to make it easier to handle versions.
 
-\release{1.0}           % release version; this is used to define the
+\release{1.0.1+ SVN/unreleased}           % release version; this is used to
define the
                 % \version macro
 
 \makeindex          % tell \index to actually write the .idx file

MailBoxer