Scarab commit: svn commit: r10572 - branches/SCB1439-take2: build src/conf/classes src/conf/conf src/java/org/tigris/scarab/om src/schema src/sql src/sql/upgrade src/webapp/WEB-INF/templates/macros src/webapp/WEB-INF/templates/screens/admin src/webapp/WEB-INF/templates/viewIssue

[email protected]
Newsgroups gmane.comp.java.scarab.cvs
Message-ID <[email protected]>
Author: hair
Date: 2008-05-09 00:55:39-0700
New Revision: 10572

Added:
   branches/SCB1439-take2/src/sql/upgrade/mysql-upgrade-1.0b19-workflow-3.sql
      - copied unchanged from r10564, /branches/SCB1439/src/sql/upgrade/mysql-upgrade-1.0b19-workflow-3.sql
Modified:
   branches/SCB1439-take2/build/build.xml
   branches/SCB1439-take2/src/conf/classes/ScarabBundle_en.properties
   branches/SCB1439-take2/src/conf/classes/ScarabBundle_es.properties
   branches/SCB1439-take2/src/conf/conf/intake.xml
   branches/SCB1439-take2/src/java/org/tigris/scarab/om/AttributeGroup.java
   branches/SCB1439-take2/src/java/org/tigris/scarab/om/Issue.java
   branches/SCB1439-take2/src/schema/scarab-schema.xml
   branches/SCB1439-take2/src/sql/scarab-default-data.sql
   branches/SCB1439-take2/src/sql/scarab-sample-data.sql
   branches/SCB1439-take2/src/webapp/WEB-INF/templates/macros/GlobalMacros.vm
   branches/SCB1439-take2/src/webapp/WEB-INF/templates/screens/admin/AttributeGroupEdit.vm
   branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab1.vm
   branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab5.vm

Log:
Issue SCB1439:  ( AttributeGroup viewing permissions)


Modified: branches/SCB1439-take2/build/build.xml
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/build/build.xml?view=diff&rev=10572&p1=branches/SCB1439-take2/build/build.xml&p2=branches/SCB1439-take2/build/build.xml&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/build/build.xml	(original)
+++ branches/SCB1439-take2/build/build.xml	2008-05-09 00:55:39-0700
@@ -364,6 +364,20 @@
              dir="${runtime.config.dir}">
         </ant>        
     </target>
+    
+    <target name="migrate-workflow" description="Make changes to an existing b19 system, keeping the data, to allow migration to cheapworklow">
+        <sql
+            driver="${scarab.database.jdbc.driver}"
+            url="${scarab.database.url}"
+            userid="${scarab.database.admin.username}"
+            password="${scarab.database.admin.password}"
+	    onerror="continue">
+            <classpath refid="classpath"/>
+	<transaction src="${src.sql.dir}/upgrade/${scarab.database.type}-upgrade-1.0b19-workflow-1.sql"/>
+	<transaction src="${src.sql.dir}/upgrade/${scarab.database.type}-upgrade-1.0b19-workflow-2.sql"/>
+	<transaction src="${src.sql.dir}/upgrade/${scarab.database.type}-upgrade-1.0b19-workflow-3.sql"/>
+        </sql>
+    </target>
 
     <target name="migrate-from-b19" description="migrate from b19 to b20">        
         <ant antfile="build.xml"

Modified: branches/SCB1439-take2/src/conf/classes/ScarabBundle_en.properties
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/conf/classes/ScarabBundle_en.properties?view=diff&rev=10572&p1=branches/SCB1439-take2/src/conf/classes/ScarabBundle_en.properties&p2=branches/SCB1439-take2/src/conf/classes/ScarabBundle_en.properties&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/conf/classes/ScarabBundle_en.properties	(original)
+++ branches/SCB1439-take2/src/conf/classes/ScarabBundle_en.properties	2008-05-09 00:55:39-0700
@@ -434,6 +434,7 @@
 ChangeHistoryNavi=History
 DateStamp=Date stamp
 InitialEntry=Initial entry
+RestrictedActivityDescription=A restricted attribute was changed.
 HideCompleteHistory=Hide complete history
 ShowCompleteHistory=Show complete history
 NoneAssigned=None assigned
@@ -972,6 +973,7 @@
 IssueTypes=Issue types
 GroupNotFound=Group not found.  To proceed, please click
 AttributeGroupInfo=Attribute group information
+RoleNeededForViewing=Role needed for viewing
 ClickAddButton=Click the "Add" button to add attributes to this group.
 AttributesInGroup=Attributes in this group
 PerProjectName=Per project name

Modified: branches/SCB1439-take2/src/conf/classes/ScarabBundle_es.properties
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/conf/classes/ScarabBundle_es.properties?view=diff&rev=10572&p1=branches/SCB1439-take2/src/conf/classes/ScarabBundle_es.properties&p2=branches/SCB1439-take2/src/conf/classes/ScarabBundle_es.properties&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/conf/classes/ScarabBundle_es.properties	(original)
+++ branches/SCB1439-take2/src/conf/classes/ScarabBundle_es.properties	2008-05-09 00:55:39-0700
@@ -941,6 +941,7 @@
 IssueTypes = Tipos de petición
 GroupNotFound = Grupo no encontrado. Para seguir pulsa
 AttributeGroupInfo = Información del grupo de atributos
+RoleNeededForViewing=Rol necesario
 ClickAddButton = Pulsa "Añadir" para agregar atributos a este grupo.
 AttributesInGroup = Atributos en este grupo
 PerProjectName = Nombre por proyecto

Modified: branches/SCB1439-take2/src/conf/conf/intake.xml
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/conf/conf/intake.xml?view=diff&rev=10572&p1=branches/SCB1439-take2/src/conf/conf/intake.xml&p2=branches/SCB1439-take2/src/conf/conf/intake.xml&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/conf/conf/intake.xml	(original)
+++ branches/SCB1439-take2/src/conf/conf/intake.xml	2008-05-09 00:55:39-0700
@@ -137,6 +137,7 @@
         <field name="Description" key="desc" type="String">
             <rule name="maxLength" value="255">intake_AttributeGroupDescriptionMustBeLessThan255Characters</rule>
         </field>
+        <field name="ViewRoleId" key="roleview" type="int"></field>
         <field name="Active" key="act" type="boolean"/>
         <field name="Order" key="order" type="int" mapToProperty="Order">
            <rule name="minValue" value="1">intake_EnterValueGreaterThan0</rule>

Modified: branches/SCB1439-take2/src/java/org/tigris/scarab/om/AttributeGroup.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/java/org/tigris/scarab/om/AttributeGroup.java?view=diff&rev=10572&p1=branches/SCB1439-take2/src/java/org/tigris/scarab/om/AttributeGroup.java&p2=branches/SCB1439-take2/src/java/org/tigris/scarab/om/AttributeGroup.java&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/java/org/tigris/scarab/om/AttributeGroup.java	(original)
+++ branches/SCB1439-take2/src/java/org/tigris/scarab/om/AttributeGroup.java	2008-05-09 00:55:39-0700
@@ -52,6 +52,16 @@
 import java.util.ArrayList;
 import java.util.LinkedList;
 import java.util.Iterator;
+
+import org.apache.fulcrum.security.TurbineSecurity;
+import org.apache.fulcrum.security.entity.Group;
+import org.apache.fulcrum.security.entity.Role;
+import org.apache.fulcrum.security.impl.db.entity.TurbineRolePeer;
+import org.apache.fulcrum.security.util.AccessControlList;
+import org.apache.fulcrum.security.util.DataBackendException;
+import org.apache.fulcrum.security.util.GroupSet;
+import org.apache.torque.NoRowsException;
+import org.apache.torque.TooManyRowsException;
 import org.apache.torque.TorqueException;
 import org.apache.torque.om.SimpleKey;
 import org.apache.torque.om.Persistent;
@@ -671,4 +681,68 @@
         newGroup.setOrder(getOrder());
         return newGroup;
     }
+    
+    /**
+     * Returns the role needed for "view" this attributegroup.
+     * @return
+     */
+    public Role getRole4View()
+    {
+        Role role = null;
+        if (this.getViewRoleId() != null && this.getViewRoleId().intValue() != -1)
+        {
+            try
+            {
+                role = TurbineRolePeer.retrieveByPK(this.getViewRoleId());
+            }
+            catch (NoRowsException e)
+            {
+                // No error.
+            }
+            catch (Exception e)
+            {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }            
+        }
+        return role;
+    }
+    
+    /** Can this AttributeGroup be viewed by the user. 
+     * 
+     * @param user can be null.
+     * @return
+     * @throws TorqueException
+     */
+    public boolean isVisible4User(ScarabUser user) throws TorqueException
+    {
+        Role role = this.getRole4View();
+        boolean bRdo = false;
+        if (role == null)
+        {
+            bRdo = true;
+        }
+        else
+        {
+            if (user != null)
+            {
+                try
+                {
+	            AccessControlList acl = TurbineSecurity.getACL(user);
+	            GroupSet allGroups = TurbineSecurity.getAllGroups();
+                    Group group = allGroups.getGroup(user.getCurrentModule().getName());
+                    bRdo = acl.hasRole(role, group);
+                }
+                catch(org.apache.fulcrum.security.util.DataBackendException dbe)
+                {
+                    throw new TorqueException("failed to get user's groups", dbe);
+                }
+                catch(org.apache.fulcrum.security.util.UnknownEntityException uee)
+                {
+                    throw new TorqueException("failed to get user's groups", uee);
+                }
+            }
+        }
+        return bRdo;	
+    }
 }

Modified: branches/SCB1439-take2/src/java/org/tigris/scarab/om/Issue.java
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/java/org/tigris/scarab/om/Issue.java?view=diff&rev=10572&p1=branches/SCB1439-take2/src/java/org/tigris/scarab/om/Issue.java&p2=branches/SCB1439-take2/src/java/org/tigris/scarab/om/Issue.java&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/java/org/tigris/scarab/om/Issue.java	(original)
+++ branches/SCB1439-take2/src/java/org/tigris/scarab/om/Issue.java	2008-05-09 00:55:39-0700
@@ -1686,17 +1686,17 @@
     /**
      * Returns list of Activity objects associated with this Issue.
      */
-    public List getActivity() throws TorqueException  
+    public List getActivity(ScarabUser user) throws TorqueException  
     {
-        return getActivity(false, getHistoryLimit());
+        return getActivity(false, getHistoryLimit(), user);
     }
 
     /**
      * Returns limited list of Activity objects associated with this Issue.
      */
-    public List getActivity(int limit) throws TorqueException  
+    public List getActivity(int limit, ScarabUser user) throws TorqueException  
     {
-        return getActivity(false, limit);
+        return getActivity(false, limit, user);
     }
 
     /**
@@ -1704,15 +1704,30 @@
      * If fullHistory is false, it limits it,
      * (this is the default)
      */
+    public List getActivity(boolean fullHistory, ScarabUser user) throws TorqueException
+    {
+        return getActivity(fullHistory, getHistoryLimit(), user);
+    }
+    
+    /**
+     * Returns limited list of Activity objects associated with this Issue.
+     * If fullHistory is false, it limits it,
+     * (this is the default)
+     */
     public List getActivity(boolean fullHistory) throws TorqueException  
     {
-        return getActivity(fullHistory, getHistoryLimit());
+        return this.getActivity(fullHistory, null);
     }
 
+    private List getActivity(boolean fullHistory, int limit) throws TorqueException
+    {
+        return this.getActivity(fullHistory, limit, null);
+    }
+    
     /**
      * Returns full list of Activity objects associated with this Issue.
      */
-    private List getActivity(boolean fullHistory, int limit) throws TorqueException  
+    private List getActivity(boolean fullHistory, int limit, ScarabUser user) throws TorqueException  
     {
         List result = null;
         Boolean fullHistoryObj = fullHistory ? Boolean.TRUE : Boolean.FALSE;
@@ -1735,7 +1750,23 @@
         {
             result = (List)obj;
         }
-        return result;
+
+        /**
+         * Filter all activities related to attributegroups restricted to any role
+         * to which current user does not belong to.
+         * 
+         */
+        final List visibleActivities = new ArrayList();
+        for (Iterator it = result.iterator(); it.hasNext(); )
+        {
+            final Activity act = (Activity)it.next();
+            final Attribute attr = act.getAttribute();
+            if (isAttributeVisible(attr, user))
+            {
+                visibleActivities.add(act);
+            }
+        }
+        return visibleActivities;
     }
 
     /**
@@ -1761,6 +1792,8 @@
 
     /**
      * Returns a list of ActivitySet objects associated to this issue.
+     * It it up to caller to filter out internal activities that 
+     *  the current user shouldn't be permitted to see.
      */
     public List getActivitySets()
         throws TorqueException
@@ -1782,6 +1815,29 @@
         }
         return result;
     }
+    
+    public boolean isAttributeVisible(final Attribute attr, final ScarabUser user)
+        throws TorqueException
+    {
+        final List/*<AttributeGroup>*/ attrGroups = this.getIssueType().getAttributeGroups();
+
+        boolean foundInAnyGroup = false;
+        boolean visibleInFoundGroup = false;
+        
+        for(Iterator itAny = attrGroups.iterator(); !foundInAnyGroup && itAny.hasNext();)
+        {
+            final AttributeGroup ag = (AttributeGroup)itAny.next();
+            if(getModuleId().equals(ag.getModuleId()) && ag.getAttributes().contains(attr))
+            {
+                foundInAnyGroup = true;
+                if(null == ag.getViewRoleId() || ag.isVisible4User(user))
+                {
+                    visibleInFoundGroup = true;
+                }
+            }
+        }
+        return !foundInAnyGroup || visibleInFoundGroup;
+    }
 
     /**
      * Creates a new ActivitySet object for the issue.
@@ -3761,7 +3817,6 @@
         return users;
     }
 
-
     public String toString()
     {
     // Only return the issueId

Modified: branches/SCB1439-take2/src/schema/scarab-schema.xml
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/schema/scarab-schema.xml?view=diff&rev=10572&p1=branches/SCB1439-take2/src/schema/scarab-schema.xml&p2=branches/SCB1439-take2/src/schema/scarab-schema.xml&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/schema/scarab-schema.xml	(original)
+++ branches/SCB1439-take2/src/schema/scarab-schema.xml	2008-05-09 00:55:39-0700
@@ -183,6 +183,7 @@
 		<column name="ACTIVE" required="false" type="BOOLEANINT" default="0" javaType="primitive"/>
 		<column name="DEDUPE" required="false" type="BOOLEANINT" default="0" javaType="primitive"/>
 		<column name="PREFERRED_ORDER" javaName="Order" required="false" default="-1" type="INTEGER" javaType="primitive"/>
+        <column name="VIEW_ROLE_ID" type="INTEGER"></column>
 		<foreign-key foreignTable="SCARAB_MODULE">
 			<reference local="MODULE_ID" foreign="MODULE_ID"/>
 		</foreign-key>

Modified: branches/SCB1439-take2/src/sql/scarab-default-data.sql
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/sql/scarab-default-data.sql?view=diff&rev=10572&p1=branches/SCB1439-take2/src/sql/scarab-default-data.sql&p2=branches/SCB1439-take2/src/sql/scarab-default-data.sql&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/sql/scarab-default-data.sql	(original)
+++ branches/SCB1439-take2/src/sql/scarab-default-data.sql	2008-05-09 00:55:39-0700
@@ -439,20 +439,20 @@
 -- Insert attribute groups for project 0
 -- group_id, name, description, module_id, issue_type_id, active, dedupe, preferred order
 
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (1, 'AttributeGroupOne', 'dedupeAttributes', 0, 1, 1, 1, 1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (2, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 1, 1, 0, 3);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (1, 'AttributeGroupOne', 'dedupeAttributes', 0, 1, 1, 1, 1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (2, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 1, 1, 0, 3,NULL);
 
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (3, 'AttributeGroupOne', 'dedupeAttributes', 0, 3, 1, 1, 1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (4, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 3, 1, 0, 3);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (3, 'AttributeGroupOne', 'dedupeAttributes', 0, 3, 1, 1, 1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (4, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 3, 1, 0, 3,NULL);
 
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (5, 'AttributeGroupOne', 'dedupeAttributes', 0, 5, 1, 1, 1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (6, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 5, 1, 0, 3);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (5, 'AttributeGroupOne', 'dedupeAttributes', 0, 5, 1, 1, 1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (6, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 5, 1, 0, 3,NULL);
 
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (7, 'AttributeGroupOne', 'dedupeAttributes', 0, 7, 1, 1, 1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (8, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 7, 1, 0, 3);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (7, 'AttributeGroupOne', 'dedupeAttributes', 0, 7, 1, 1, 1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (8, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 7, 1, 0, 3,NULL);
 
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (9, 'AttributeGroupOne', 'dedupeAttributes', 0, 9, 1, 1, 1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (10, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 9, 1, 0, 3);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (9, 'AttributeGroupOne', 'dedupeAttributes', 0, 9, 1, 1, 1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (10, 'AttributeGroupTwo', 'nonDedupeAttributes', 0, 9, 1, 0, 3,NULL);
  
 -- Insert mapping between attributes and groups 
 -- group_id, attribute_id, preferred order

Modified: branches/SCB1439-take2/src/sql/scarab-sample-data.sql
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/sql/scarab-sample-data.sql?view=diff&rev=10572&p1=branches/SCB1439-take2/src/sql/scarab-sample-data.sql&p2=branches/SCB1439-take2/src/sql/scarab-sample-data.sql&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/sql/scarab-sample-data.sql	(original)
+++ branches/SCB1439-take2/src/sql/scarab-sample-data.sql	2008-05-09 00:55:39-0700
@@ -70,76 +70,76 @@
 -- attribute_group_id, name, description, module_id, issue_type_id,
 -- active, dedupe, referred_order
 
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (100,'AttributeGroupOne','dedupeAttributes',1,1,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (101,'AttributeGroupTwo','nonDedupeAttributes',1,1,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (102,'AttributeGroupOne','dedupeAttributes',1,3,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (103,'AttributeGroupTwo','nonDedupeAttributes',1,3,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (104,'AttributeGroupOne','dedupeAttributes',1,5,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (105,'AttributeGroupTwo','nonDedupeAttributes',1,5,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (106,'AttributeGroupOne','dedupeAttributes',1,7,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (107,'AttributeGroupTwo','nonDedupeAttributes',1,7,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (108,'AttributeGroupOne','dedupeAttributes',1,9,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (109,'AttributeGroupTwo','nonDedupeAttributes',1,9,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (110,'AttributeGroupOne','dedupeAttributes',2,1,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (111,'AttributeGroupTwo','nonDedupeAttributes',2,1,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (112,'AttributeGroupOne','dedupeAttributes',2,3,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (113,'AttributeGroupTwo','nonDedupeAttributes',2,3,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (114,'AttributeGroupOne','dedupeAttributes',2,5,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (115,'AttributeGroupTwo','nonDedupeAttributes',2,5,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (116,'AttributeGroupOne','dedupeAttributes',2,7,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (117,'AttributeGroupTwo','nonDedupeAttributes',2,7,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (118,'AttributeGroupOne','dedupeAttributes',2,9,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (119,'AttributeGroupTwo','nonDedupeAttributes',2,9,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (120,'AttributeGroupOne','dedupeAttributes',3,1,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (121,'AttributeGroupTwo','nonDedupeAttributes',3,1,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (122,'AttributeGroupOne','dedupeAttributes',3,3,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (123,'AttributeGroupTwo','nonDedupeAttributes',3,3,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (124,'AttributeGroupOne','dedupeAttributes',3,5,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (125,'AttributeGroupTwo','nonDedupeAttributes',3,5,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (126,'AttributeGroupOne','dedupeAttributes',3,7,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (127,'AttributeGroupTwo','nonDedupeAttributes',3,7,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (128,'AttributeGroupOne','dedupeAttributes',3,9,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (129,'AttributeGroupTwo','nonDedupeAttributes',3,9,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (130,'AttributeGroupOne','dedupeAttributes',5,1,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (131,'AttributeGroupTwo','nonDedupeAttributes',5,1,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (132,'AttributeGroupOne','dedupeAttributes',5,3,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (133,'AttributeGroupTwo','nonDedupeAttributes',5,3,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (134,'AttributeGroupOne','dedupeAttributes',5,5,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (135,'AttributeGroupTwo','nonDedupeAttributes',5,5,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (136,'AttributeGroupOne','dedupeAttributes',5,7,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (137,'AttributeGroupTwo','nonDedupeAttributes',5,7,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (138,'AttributeGroupOne','dedupeAttributes',5,9,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (139,'AttributeGroupTwo','nonDedupeAttributes',5,9,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (140,'AttributeGroupOne','dedupeAttributes',4,1,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (141,'AttributeGroupTwo','nonDedupeAttributes',4,1,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (142,'AttributeGroupOne','dedupeAttributes',4,3,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (143,'AttributeGroupTwo','nonDedupeAttributes',4,3,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (144,'AttributeGroupOne','dedupeAttributes',4,5,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (145,'AttributeGroupTwo','nonDedupeAttributes',4,5,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (146,'AttributeGroupOne','dedupeAttributes',4,7,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (147,'AttributeGroupTwo','nonDedupeAttributes',4,7,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (148,'AttributeGroupOne','dedupeAttributes',4,9,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (149,'AttributeGroupTwo','nonDedupeAttributes',4,9,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (150,'AttributeGroupOne','dedupeAttributes',6,1,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (151,'AttributeGroupTwo','nonDedupeAttributes',6,1,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (152,'AttributeGroupOne','dedupeAttributes',6,3,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (153,'AttributeGroupTwo','nonDedupeAttributes',6,3,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (154,'AttributeGroupOne','dedupeAttributes',6,5,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (155,'AttributeGroupTwo','nonDedupeAttributes',6,5,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (156,'AttributeGroupOne','dedupeAttributes',6,7,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (157,'AttributeGroupTwo','nonDedupeAttributes',6,7,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (158,'AttributeGroupOne','dedupeAttributes',6,9,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (159,'AttributeGroupTwo','nonDedupeAttributes',6,9,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (160,'AttributeGroupOne','dedupeAttributes',7,1,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (161,'AttributeGroupTwo','nonDedupeAttributes',7,1,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (162,'AttributeGroupOne','dedupeAttributes',7,3,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (163,'AttributeGroupTwo','nonDedupeAttributes',7,3,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (164,'AttributeGroupOne','dedupeAttributes',7,5,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (165,'AttributeGroupTwo','nonDedupeAttributes',7,5,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (166,'AttributeGroupOne','dedupeAttributes',7,7,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (167,'AttributeGroupTwo','nonDedupeAttributes',7,7,1,0,3);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (168,'AttributeGroupOne','dedupeAttributes',7,9,1,1,1);
-INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (169,'AttributeGroupTwo','nonDedupeAttributes',7,9,1,0,3);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (100,'AttributeGroupOne','dedupeAttributes',1,1,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (101,'AttributeGroupTwo','nonDedupeAttributes',1,1,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (102,'AttributeGroupOne','dedupeAttributes',1,3,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (103,'AttributeGroupTwo','nonDedupeAttributes',1,3,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (104,'AttributeGroupOne','dedupeAttributes',1,5,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (105,'AttributeGroupTwo','nonDedupeAttributes',1,5,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (106,'AttributeGroupOne','dedupeAttributes',1,7,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (107,'AttributeGroupTwo','nonDedupeAttributes',1,7,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (108,'AttributeGroupOne','dedupeAttributes',1,9,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (109,'AttributeGroupTwo','nonDedupeAttributes',1,9,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (110,'AttributeGroupOne','dedupeAttributes',2,1,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (111,'AttributeGroupTwo','nonDedupeAttributes',2,1,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (112,'AttributeGroupOne','dedupeAttributes',2,3,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (113,'AttributeGroupTwo','nonDedupeAttributes',2,3,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (114,'AttributeGroupOne','dedupeAttributes',2,5,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (115,'AttributeGroupTwo','nonDedupeAttributes',2,5,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (116,'AttributeGroupOne','dedupeAttributes',2,7,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (117,'AttributeGroupTwo','nonDedupeAttributes',2,7,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (118,'AttributeGroupOne','dedupeAttributes',2,9,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (119,'AttributeGroupTwo','nonDedupeAttributes',2,9,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (120,'AttributeGroupOne','dedupeAttributes',3,1,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (121,'AttributeGroupTwo','nonDedupeAttributes',3,1,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (122,'AttributeGroupOne','dedupeAttributes',3,3,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (123,'AttributeGroupTwo','nonDedupeAttributes',3,3,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (124,'AttributeGroupOne','dedupeAttributes',3,5,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (125,'AttributeGroupTwo','nonDedupeAttributes',3,5,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (126,'AttributeGroupOne','dedupeAttributes',3,7,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (127,'AttributeGroupTwo','nonDedupeAttributes',3,7,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (128,'AttributeGroupOne','dedupeAttributes',3,9,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (129,'AttributeGroupTwo','nonDedupeAttributes',3,9,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (130,'AttributeGroupOne','dedupeAttributes',5,1,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (131,'AttributeGroupTwo','nonDedupeAttributes',5,1,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (132,'AttributeGroupOne','dedupeAttributes',5,3,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (133,'AttributeGroupTwo','nonDedupeAttributes',5,3,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (134,'AttributeGroupOne','dedupeAttributes',5,5,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (135,'AttributeGroupTwo','nonDedupeAttributes',5,5,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (136,'AttributeGroupOne','dedupeAttributes',5,7,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (137,'AttributeGroupTwo','nonDedupeAttributes',5,7,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (138,'AttributeGroupOne','dedupeAttributes',5,9,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (139,'AttributeGroupTwo','nonDedupeAttributes',5,9,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (140,'AttributeGroupOne','dedupeAttributes',4,1,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (141,'AttributeGroupTwo','nonDedupeAttributes',4,1,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (142,'AttributeGroupOne','dedupeAttributes',4,3,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (143,'AttributeGroupTwo','nonDedupeAttributes',4,3,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (144,'AttributeGroupOne','dedupeAttributes',4,5,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (145,'AttributeGroupTwo','nonDedupeAttributes',4,5,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (146,'AttributeGroupOne','dedupeAttributes',4,7,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (147,'AttributeGroupTwo','nonDedupeAttributes',4,7,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (148,'AttributeGroupOne','dedupeAttributes',4,9,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (149,'AttributeGroupTwo','nonDedupeAttributes',4,9,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (150,'AttributeGroupOne','dedupeAttributes',6,1,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (151,'AttributeGroupTwo','nonDedupeAttributes',6,1,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (152,'AttributeGroupOne','dedupeAttributes',6,3,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (153,'AttributeGroupTwo','nonDedupeAttributes',6,3,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (154,'AttributeGroupOne','dedupeAttributes',6,5,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (155,'AttributeGroupTwo','nonDedupeAttributes',6,5,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (156,'AttributeGroupOne','dedupeAttributes',6,7,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (157,'AttributeGroupTwo','nonDedupeAttributes',6,7,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (158,'AttributeGroupOne','dedupeAttributes',6,9,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (159,'AttributeGroupTwo','nonDedupeAttributes',6,9,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (160,'AttributeGroupOne','dedupeAttributes',7,1,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (161,'AttributeGroupTwo','nonDedupeAttributes',7,1,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (162,'AttributeGroupOne','dedupeAttributes',7,3,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (163,'AttributeGroupTwo','nonDedupeAttributes',7,3,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (164,'AttributeGroupOne','dedupeAttributes',7,5,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (165,'AttributeGroupTwo','nonDedupeAttributes',7,5,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (166,'AttributeGroupOne','dedupeAttributes',7,7,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (167,'AttributeGroupTwo','nonDedupeAttributes',7,7,1,0,3,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (168,'AttributeGroupOne','dedupeAttributes',7,9,1,1,1,NULL);
+INSERT INTO SCARAB_ATTRIBUTE_GROUP VALUES (169,'AttributeGroupTwo','nonDedupeAttributes',7,9,1,0,3,NULL);
 
 -- SCARAB_R_ATTRIBUTE_ATTRGROUP
 -- group_id, attribute_id, preferred_order

Modified: branches/SCB1439-take2/src/webapp/WEB-INF/templates/macros/GlobalMacros.vm
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/webapp/WEB-INF/templates/macros/GlobalMacros.vm?view=diff&rev=10572&p1=branches/SCB1439-take2/src/webapp/WEB-INF/templates/macros/GlobalMacros.vm&p2=branches/SCB1439-take2/src/webapp/WEB-INF/templates/macros/GlobalMacros.vm&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/webapp/WEB-INF/templates/macros/GlobalMacros.vm	(original)
+++ branches/SCB1439-take2/src/webapp/WEB-INF/templates/macros/GlobalMacros.vm	2008-05-09 00:55:39-0700
@@ -1061,7 +1061,7 @@
 
 <div class="axial">
 #foreach ($group in $moduleAttributeGroups)
- #if (!$group.Attributes.isEmpty())
+ #if (!$group.Attributes.isEmpty() && $group.isVisible4User($user))
   <h4>$group.Name #asterisk()</h4>
   <table cellpadding="3" cellspacing="2" border="0" width="100%">
   #foreach ($att in $group.Attributes)

Modified: branches/SCB1439-take2/src/webapp/WEB-INF/templates/screens/admin/AttributeGroupEdit.vm
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/webapp/WEB-INF/templates/screens/admin/AttributeGroupEdit.vm?view=diff&rev=10572&p1=branches/SCB1439-take2/src/webapp/WEB-INF/templates/screens/admin/AttributeGroupEdit.vm&p2=branches/SCB1439-take2/src/webapp/WEB-INF/templates/screens/admin/AttributeGroupEdit.vm&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/webapp/WEB-INF/templates/screens/admin/AttributeGroupEdit.vm	(original)
+++ branches/SCB1439-take2/src/webapp/WEB-INF/templates/screens/admin/AttributeGroupEdit.vm	2008-05-09 00:55:39-0700
@@ -54,6 +54,15 @@
      #textAreaMedium("$agGroup.Description.Key" $agGroup.Description.Value)</td>
     #end
  </tr>
+ <th>$l10n.RoleNeededForViewing</th>
+ <td>
+	<select name="$agGroup.ViewRoleId.Key">
+	  <option selected="selected" value="-1" >$l10n.TransitionsAnyRole</option>
+	  #foreach ($role in $securityAdmin.Roles)
+	    <option value="$role.RoleId" #if ($role.roleId == $group.viewRoleId) selected #end>$role.Name</option>
+	  #end
+	</select> 
+ </tr> 
  </table>
 </div>
 

Modified: branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab1.vm
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab1.vm?view=diff&rev=10572&p1=branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab1.vm&p2=branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab1.vm&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab1.vm	(original)
+++ branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab1.vm	2008-05-09 00:55:39-0700
@@ -33,7 +33,7 @@
   <div class="axial">

     #foreach ($group in $issueType.getAttributeGroups($module, true))

       #set ($attributes = $group.Attributes)

-      #if ($attributes && !$attributes.isEmpty())

+      #if ($attributes && !$attributes.isEmpty() && $group.isVisible4User($user))

         <h4>$group.Name #if ($isEditAttributes)#asterisk()#end</h4>

         <table cellpadding="3" cellspacing="2" border="0" width="100%">

           #foreach ($att in $attributes)


Modified: branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab5.vm
Url: http://scarab.tigris.org/source/browse/scarab/branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab5.vm?view=diff&rev=10572&p1=branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab5.vm&p2=branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab5.vm&r1=10571&r2=10572
==============================================================================
--- branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab5.vm	(original)
+++ branches/SCB1439-take2/src/webapp/WEB-INF/templates/viewIssue/ViewIssueTab5.vm	2008-05-09 00:55:39-0700
@@ -1,4 +1,4 @@
-#set ($allActivitySets = $scarabG.reverse($currentIssue.getActivitySets()))
+#set ($allActivitySets = $scarabG.reverse($currentIssue.activitySets))
 #if (!$fullHistory.equals("true"))
   #set ($allActivitySets = $scarabG.subset($allActivitySets, 0, $currentIssue.HistoryLimit))
 #end
@@ -18,14 +18,19 @@
   
     #indexedRows($velocityCount)
      <td>
-        #set ($user = $scarabR.getUser($activitySet.CreatedBy))
-        <a href="mailto:$user.Email">$!user.Name</a>
+        #set ($actSetUser = $scarabR.getUser($activitySet.CreatedBy))
+        <a href="mailto:$actSetUser.Email">$!user.Name</a>
         <br>$format.getDate($scarabR.DateFormat, $activitySet.CreatedDate)
      </td>
      <td>
         #foreach ($act in $activities)
-          #set($desc = $act.getDescription($l10n))
-          #if ($desc.length()>0) $desc<br/> #end
+<!-- $act.getDescription($l10n) -->
+          #if($currentIssue.isAttributeVisible($act.attribute, $user))
+              #set($desc = $act.getDescription($l10n))
+              #if ($desc.length()>0) $desc<br/> #end
+          #else
+              $l10n.RestrictedActivityDescription<br/>
+          #end
         #end
         #set ($reason = $activitySet.getActivityReason($l10n))
         $!scarabG.textToHTML($reason, $link, $scarabR.CurrentModule)
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.