Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp,v diff -u -r1.2.2.4 -r1.2.2.5 --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp 9 Jun 2016 08:53:54 -0000 1.2.2.4 +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-acceptance-test.adp 1 Jul 2016 09:11:53 -0000 1.2.2.5 @@ -92,30 +92,30 @@ </font></pre> <ol> -<li><font>Go to /admin/group-types and select "Developer defined -test types"</font></li><li><font>Add a permissible rel type of Membership +<li><font>Go to /admin/group-types and select "Developer +defined test types"</font></li><li><font>Add a permissible rel type of Membership Relation</font></li><li><font>Add a group named "Test group"</font></li> </ol> <h3><font>GROUP TYPE PAGES BASIC FUNCTIONALITY</font></h3> <font><strong>(Start at /admin)</strong></font> <ol> -<li><font>Click on group types</font></li><li><font>Click on Groups</font></li><li><font>Click on "Group name" under "Attributes of this type of -group"</font></li><li><font>Ensure that you see the properties of the attribute and +<li><font>Click on group types</font></li><li><font>Click on Groups</font></li><li><font>Click on "Group name" under "Attributes of +this type of group"</font></li><li><font>Ensure that you see the properties of the attribute and that you are offered no administrative links</font></li><li><font>Make sure you cannot add attributes or do anything under administration</font></li><li><font>Make sure you see Composition and Membership Relation as -the default relationship types</font></li><li><font>Add a new group called "Foobar" - Make sure Foobar -appears after adding the group</font></li><li><font>Click on Foobar</font></li><li><font>Click on nuke this group then click no. Ensure group is +the default relationship types</font></li><li><font>Add a new group called "Foobar" - Make sure +Foobar appears after adding the group</font></li><li><font>Click on Foobar</font></li><li><font>Click on nuke this group then click no. Ensure group is not deleted</font></li><li><font>Click on nuke this group then click yes. Group should no longer show up</font></li><li><font>Recreate the group Foobar</font></li><li><font>Click on foobar, then change the name to -"ArsDigita"</font></li><li><font>Change ArsDigita's join policy to closed</font></li> +"ArsDigita"</font></li><li><font>Change ArsDigita's join policy to closed</font></li> </ol> <h3><font>DYNAMICALLY EXTENDING GROUPS</font></h3> <font><strong>(Start at /admin/group-types/)</strong></font> <ol> -<li><font>Click on "Define a new group type" and create a new group -type called "Project" with type "project". Ensure that all the -fields you see are required (try submitting without entering in -anything).</font></li><li><font>Define another group type, child of group, named +<li><font>Click on "Define a new group type" and create a +new group type called "Project" with type +"project". Ensure that all the fields you see are +required (try submitting without entering in anything).</font></li><li><font>Define another group type, child of group, named "Test"</font></li><li><font>Define another group type, 'subproject', child of project. Ensure that the index page correctly displays the hierarchy.</font></li><li><font>Define a new group type with group type = group. See @@ -126,35 +126,38 @@ default relationship types</font></li><li><font>You have a link to change the default join policy</font></li><li><font>You have a link to delete the group type</font></li> </ul> -</li><li><font>Click on "Add a permissible relationship type." Ensure -that you are not given a select bar but are offered a link to -"create a new relationship type"</font></li><li><font>Create a group of type test.</font></li><li><font>Delete the test group type (first verify that the cancel -button works)</font></li><li><font>Go to the "project" group type</font></li><li><font>Add a required attribute called "Project type" of -datatype enumeration. Values are "Client" "Toolkit"</font></li><li><font>Add an optional attribute "Monthly fee" of type integer -and default of "10000"</font></li><li><font>Add a third attribute called test.</font></li><li><font>Make sure you can see all the attributes. Delete the test +</li><li><font>Click on "Add a permissible relationship type." +Ensure that you are not given a select bar but are offered a link +to "create a new relationship type"</font></li><li><font>Create a group of type test.</font></li><li><font>Delete the test group type (first verify that the cancel +button works)</font></li><li><font>Go to the "project" group type</font></li><li><font>Add a required attribute called "Project type" +of datatype enumeration. Values are "Client" +"Toolkit"</font></li><li><font>Add an optional attribute "Monthly fee" of type +integer and default of "10000"</font></li><li><font>Add a third attribute called test.</font></li><li><font>Make sure you can see all the attributes. Delete the test attribute</font></li><li> -<font>Go to "/admin/object-types/one?object_type=project" and -ensure that start_date and monthly fees are listed as attributes. -Also make sure:</font><ul> +<font>Go to +"/admin/object-types/one?object_type=project" and ensure +that start_date and monthly fees are listed as attributes. Also +make sure:</font><ul> <li><font>test attribute is not visible</font></li><li><font>monthly_fee has a default specified (NULL) in the pl/sql parameter list</font></li><li><font>start_date has no default specified</font></li> </ul> -</li><li><font>Go to "/admin/object-types/one?object_type=subproject" -and ensure the new attributes of project are in the pl/sql +</li><li><font>Go to +"/admin/object-types/one?object_type=subproject" and +ensure the new attributes of project are in the pl/sql package</font></li><li><font>Now go back to the group type admin page for the -"Projects" group type. Remove the composition relation. Make sure -you get a link back to add a relationship type. Add back the -composition relation.</font></li><li><font>Add a group of type project named +"Projects" group type. Remove the composition relation. +Make sure you get a link back to add a relationship type. Add back +the composition relation.</font></li><li><font>Add a group of type project named GuideStar.org</font></li> </ol> <h3><font>RELATIONSHIP TYPE PAGES BASIC FUNCTIONALITY</font></h3> <ol> <li><font>Create a new relationship type, Employment relation, that is a subtype of Membership relation, between group and person. Group has role of employer, person role of employee.</font></li><li><font>Select the employment relation and add an attribute age -(integer, not required)</font></li><li><font>Delete the employment relationship type.</font></li><li><font>Re-add the employment relationship type (we're testing to -make sure the age attribute is correctly removed and flushed from -the cache)</font></li><li><font>Click on membership relation, then click on create +(integer, not required)</font></li><li><font>Delete the employment relationship type.</font></li><li><font>Re-add the employment relationship type (we're +testing to make sure the age attribute is correctly removed and +flushed from the cache)</font></li><li><font>Click on membership relation, then click on create subtype</font></li><li><font>Click on membership relation -> Create subtype type: project_lead_relation name: Project Lead between projects (the composite) and persons (the project leader new role)</font></li><li><font>Create a new, dummy rel type, subtype of Project Lead @@ -168,35 +171,37 @@ <li><font>Go back to the admin page (/admin)</font></li><li><font>Click on the Groups -> GuideStar.org. Add ArsDigita as a component</font></li><li><font>Remove the composition rel type from this group</font></li><li><font>Readd the composition rel type. Make sure arsdigita -doesn't show up</font></li><li><font>remove the composition rel type</font></li><li><font>Add a permissible rel type: +doesn't show up</font></li><li><font>remove the composition rel type</font></li><li><font>Add a permissible rel type: project_lead_relation</font></li><li><font>Click yes to create a rel segment named "GuideStar Project Leads"</font></li><li><font>Go back to /admin/groups</font></li><li><font>Click on "relationship to site"</font></li><li><font>Remove yourself from the group.</font></li><li><font>Add yourself again as a member (using the membership relation). You will have to select an existing party from the -system.</font></li><li><font>Make sure you see the segment "Main Site Members" for -parties with a membership relation to the main site.</font></li><li><font>Go to the ArsDigita group.</font></li><li><font>Add guidestar.org as a component</font></li><li><font>Remove the membership relation type from this -group</font></li><li><font>Add the employment relation type</font></li><li><font>Create a segment named "ArsDigita employees"</font></li><li><font>Add a constraint named "ArsDigita employees must be Main -Site Members" for employees and the segment "Main Site -Members"</font></li><li><font>Go back to the guidestar.org group</font></li><li><font>Add yourself as a project lead.</font></li><li><font>Click on the project lead segment "GuideStar Project +system.</font></li><li><font>Make sure you see the segment "Main Site +Members" for parties with a membership relation to the main +site.</font></li><li><font>Go to the ArsDigita group.</font></li><li><font>Add guidestar.org as a component</font></li><li><font>Remove the membership relation type from this +group</font></li><li><font>Add the employment relation type</font></li><li><font>Create a segment named "ArsDigita +employees"</font></li><li><font>Add a constraint named "ArsDigita employees must be +Main Site Members" for employees and the segment "Main +Site Members"</font></li><li><font>Go back to the guidestar.org group</font></li><li><font>Add yourself as a project lead.</font></li><li><font>Click on the project lead segment "GuideStar Project Leads"</font></li><li><font>Click delete this segment. Say no.</font></li><li><font>Click delete this segment. Say Yes.</font></li><li><font>Recreate the "GuideStar Project Leads" -segment</font></li><li><font>Add a constraint named "Project leads must be employees" -that says all "project leaders must be employees of -ArsDigita"</font></li><li><font>Make sure you see yourself as a violation. Remove the +segment</font></li><li><font>Add a constraint named "Project leads must be +employees" that says all "project leaders must be +employees of ArsDigita"</font></li><li><font>Make sure you see yourself as a violation. Remove the violating relation and finish adding the constraint</font></li><li><font>Try to add a project leader to guidestar. You should see -that there "There is no other Person that can be added as Project -Leader to GuideStar.Org"</font></li><li><font>Add yourself as an arsdigita employee</font></li><li><font>Make yourself the project lead on -guidestar.org</font></li><li><font>Go back to /admin/groups and select "relationship typ -site." Remove your membership relation. You should get prompted to -remove relation to arsdigita, then to guidestar. Remove all of -these relations.</font></li><li><font>Make yourself a project lead of guidestar +that there "There is no other Person that can be added as +Project Leader to GuideStar.Org"</font></li><li><font>Add yourself as an arsdigita employee</font></li><li><font>Make yourself the project lead on +guidestar.org</font></li><li><font>Go back to /admin/groups and select "relationship +typ site." Remove your membership relation. You should get +prompted to remove relation to arsdigita, then to guidestar. Remove +all of these relations.</font></li><li><font>Make yourself a project lead of guidestar again.</font></li> </ol> <h3><font>Testing with more Users</font></h3> -<font>Now we're going to test that the user interface remains +<font>Now we're going to test that the user interface remains consistent if there are a few more users.</font> <ol> -<li><font>Go to /acs-admin/users and add 4 users</font></li><li><font>Go to /admin/groups and click on "relationship to site." -You should see all of the people you just entered listed as members -of the subsite.</font></li><li><font>Try to remove your Membership relation. You should see +<li><font>Go to /acs-admin/users and add 4 users</font></li><li><font>Go to /admin/groups and click on "relationship to +site." You should see all of the people you just entered +listed as members of the subsite.</font></li><li><font>Try to remove your Membership relation. You should see only one constraint violation.</font></li><li><font>Remove one of the other people from the registered users group. You should be allowed to do it immediately.</font></li><li><font>Add back the person you removed.</font></li><li><font>Remove yourself from the registered users group. Make yourself a project lead on guidestar again.</font></li><li><font>Make another user a project lead on @@ -207,7 +212,8 @@ <li><font>Go to /admin/group-types</font></li><li><font>Select the project group type</font></li><li><font>Delete this group type. Should get prompted to delete sub projects group type.</font></li><li><font>Delete the sub projects group type.</font></li><li><font>Should get prompt to delete the project lead rel type</font></li><li><font>Delete the project lead rel type. Continue until you -delete the project group type.</font></li><li><font>Delete the ArsDigita group.</font></li><li><font>Go to /admin/rel-types/</font></li><li><font>Click on "View all roles"</font></li><li><font>Click on "Project Leader" - delete this role</font></li><li><font>Click on "Employer" then on Employment +delete the project group type.</font></li><li><font>Delete the ArsDigita group.</font></li><li><font>Go to /admin/rel-types/</font></li><li><font>Click on "View all roles"</font></li><li><font>Click on "Project Leader" - delete this +role</font></li><li><font>Click on "Employer" then on Employment Relation</font></li><li><font>Delete the employment relation type.</font></li><li><font>Delete the employee, employer, and project_leader roles</font></li><li><font>Delete any groups you created for the developer defined type</font></li><li> Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.adp,v diff -u -r1.2.2.3 -r1.2.2.4 --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.adp 9 Jun 2016 08:53:54 -0000 1.2.2.3 +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-design.adp 1 Jul 2016 09:11:53 -0000 1.2.2.4 @@ -15,13 +15,13 @@ </ul> <h3>II. Introduction</h3> -The group administration packages provides a "control panel" to -allow the administrator of a subsite to control the groups in use -on that subsite. Administrators manage the types of groups in use -on a subsite. For each of these group types, the administrator can -create new groups, specify applicable relationship types, create -relations between these groups, and modify attributes of the types -and groups. +The group administration packages provides a "control +panel" to allow the administrator of a subsite to control the +groups in use on that subsite. Administrators manage the types of +groups in use on a subsite. For each of these group types, the +administrator can create new groups, specify applicable +relationship types, create relations between these groups, and +modify attributes of the types and groups. <h3>III. Historical Considerations</h3> Versions 4.0.x of the ACS lacked a useful group administration @@ -111,8 +111,9 @@ constraint acs_obj_types_dynamic_p_ck check (dynamic_p in ('t', 'f')) </pre> -<p><strong>Note that the <code>dynamic_p</code> is still experimental -and may be removed in a future version of ACS</strong></p> +<p><strong>Note that the <code>dynamic_p</code> is still +experimental and may be removed in a future version of +ACS</strong></p> <h3>VII. Data Model Discussion</h3> ... @@ -138,9 +139,9 @@ <p>We also may add a few additional package parameters including:</p> <ul> -<li>"Create Group Types" (Boolean). Determines whether new group -types can be created dynamically.</li><li>"Create Relationship Types" (Boolean). Determines whether new -relationship types can be created dynamically.</li> +<li>"Create Group Types" (Boolean). Determines whether +new group types can be created dynamically.</li><li>"Create Relationship Types" (Boolean). Determines +whether new relationship types can be created dynamically.</li> </ul> <h3>XI. Authors</h3> Index: openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp,v diff -u -r1.2.2.4 -r1.2.2.5 --- openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp 9 Jun 2016 08:53:54 -0000 1.2.2.4 +++ openacs-4/packages/acs-subsite/www/doc/group-admin-pages-requirements.adp 1 Jul 2016 09:11:53 -0000 1.2.2.5 @@ -17,11 +17,11 @@ <h3><font>II. Vision Statement</font></h3> <font>From <a href="/doc/subsites-requirements">/doc/subsites-requirements.html</a>:</font> <blockquote><font>The other piece of the subsite system is a -subsite package that provides subsite admins a "control panel" for -administering their subsite. This is the same package used to -provide all the community core functionality available at the -"main" site which is in fact simply another -subsite.</font></blockquote> +subsite package that provides subsite admins a "control +panel" for administering their subsite. This is the same +package used to provide all the community core functionality +available at the "main" site which is in fact simply +another subsite.</font></blockquote> <font>This control panel needs to treat individual groups as belonging to a single instance of a subsite. However, groups themselves are not enough. We must allow a subsite to specify its @@ -42,11 +42,11 @@ <h3><font>IV. Use case and User Scenarios</font></h3> <font><strong>The Intranet Application</strong></font> <p><font>The Intranet application may model employees in many ways. -Without loss of generality, we assume each employee is a "person" -with an "employment relation" to a company. Figure 1 shows an -outline of what the ACS Site Map may look like with several -companies. Note that each company represents one instance of the -intranet application.</font></p> +Without loss of generality, we assume each employee is a +"person" with an "employment relation" to a +company. Figure 1 shows an outline of what the ACS Site Map may +look like with several companies. Note that each company represents +one instance of the intranet application.</font></p> <center><table border="1" cellspacing="5" cellpadding="5"><tr><td align="center"> <img src="intranet-company-structure.gif" border="0"><br><hr><strong>Figure 1: Structure of Multiple Intranets</strong> </td></tr></table></center> @@ -76,19 +76,23 @@ groups</strong></font></dt><dd><p><font>The administrator must be able to specify the permissible relationship types to use for each group. The defaults are inherited from the list of permissible relationship types for the -group's type.</font></p></dd> +group's type.</font></p></dd> </dl> <h3><font>VI.B Requirements: API</font></h3> <dl> -<dt><font><strong>20.10 Define a new group type</strong></font></dt><dd><p><font>Users should be able to create a new type of +<dt><font><strong>20.10 Define a new group +type</strong></font></dt><dd><p><font>Users should be able to create a new type of group.</font></p></dd><dt><font><strong>30.10 Specify attributes</strong></font></dt><dd><p><font>Users should be able to dynamically add attributes to group types. These attributes should be stored efficiently.</font></p></dd><dt><font><strong>35.10 Remove attributes</strong></font></dt><dd><p><font>Users should be able to dynamically remove attributes from a group type. Removing the attribute removes all values specified -for that attribute.</font></p></dd><dt><font><strong>40.10 Relationship Constraints</strong></font></dt><dd><p><font>The API must support the following types of constraints on -relationships:</font></p></dd><dt><font><strong>40.10.10 Permissible relationships</strong></font></dt><dd><p><font>Each group type should maintain a list of all relationship +for that attribute.</font></p></dd><dt><font><strong>40.10 Relationship +Constraints</strong></font></dt><dd><p><font>The API must support the following types of constraints on +relationships:</font></p></dd><dt><font><strong>40.10.10 Permissible +relationships</strong></font></dt><dd><p><font>Each group type should maintain a list of all relationship types that can be used to add elements to groups of this group -type.</font></p></dd><dt><font><strong>40.10.20 Constraints on relationships</strong></font></dt><dd><p><font>Relationships listed as allowable for a given group type +type.</font></p></dd><dt><font><strong>40.10.20 Constraints on +relationships</strong></font></dt><dd><p><font>Relationships listed as allowable for a given group type should link to more information about the relationship type, including any constraints that must be satisfied before relations of the specified type are created.</font></p></dd><dt><font><strong>40.10.30 Constrain membership to a given @@ -103,7 +107,8 @@ <strong>100.10</strong> Create a group type with attributes</font></dt><dd><p><font>When creating a new group type, the UI should support ACS datatypes with appropriate UI.</font></p></dd><dt><font> -<strong>130.10</strong> Group type summary page</font></dt><dd><blockquote><dl> +<strong>130.10</strong> Group type summary +page</font></dt><dd><blockquote><dl> <dt><font> <strong>130.10.10</strong> Display allowable relationship types</font></dt><dd><p><font>The group type summary page should display all the @@ -112,19 +117,21 @@ existing ones.</font></p></dd><dt><font> <strong>130.10.20</strong> Display groups</font></dt><dd><p><font>Display all groups of this type, based on permissions. UI should scale well with a large number of groups.</font></p></dd><dt><font> -<strong>110.10</strong> Create an instance of a particular group -type</font></dt><dd><p><font>When creating a new group of the specified type, the UI +<strong>110.10</strong> Create an instance of a +particular group type</font></dt><dd><p><font>When creating a new group of the specified type, the UI must request values for each of the attributes of that type, including attributes of all supertypes (up the type tree until the object of type 'group').</font></p></dd><dt><font> -<strong>130.10.20</strong> Display type attributes</font></dt><dd><p><font>Display all attributes for this group type, including +<strong>130.10.20</strong> Display type +attributes</font></dt><dd><p><font>Display all attributes for this group type, including supertypes.</font></p></dd><dt><font> <strong>130.10.20</strong> Delete group type</font></dt><dd><p><font>Allow administrators to delete the group type. This action removes all groups of this type.</font></p></dd> </dl></blockquote></dd> </dl> <dl><dt><font> -<strong>150.10</strong> Group instance summary page</font></dt></dl> +<strong>150.10</strong> Group instance summary +page</font></dt></dl> <blockquote><dl> <dt><font> <strong>150.10.10</strong> Display relations</font></dt><dd><p><font>Each group should display all the parties related to it @@ -135,8 +142,8 @@ each.</font></p></dd><dt><font> <strong>150.10.20</strong> Delete group</font></dt><dd><p><font>Allow administrators to delete the group including all relations to the group.</font></p></dd><dt><font> -<strong>150.20</strong> Integration with relational Segments and -Constraints</font></dt><dd><p><font>The group summary page should offer links to define +<strong>150.20</strong> Integration with relational +Segments and Constraints</font></dt><dd><p><font>The group summary page should offer links to define relational segments for the group, based on a particular relationship type. The UI must also integrate with the relational constraints data model to support defining constraints on