Index: openacs-4/contrib/packages/project-manager/www/one-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/one-postgresql.xql,v
diff -u -r1.23.2.5 -r1.23.2.6
--- openacs-4/contrib/packages/project-manager/www/one-postgresql.xql	8 Oct 2004 21:25:05 -0000	1.23.2.5
+++ openacs-4/contrib/packages/project-manager/www/one-postgresql.xql	26 Oct 2004 01:21:11 -0000	1.23.2.6
@@ -21,20 +21,25 @@
         to_char(p.latest_finish_date,'YYYY-MM-DD HH24:MI') as latest_finish_date,
         p.actual_hours_completed,
         p.estimated_hours_total,
-        p.parent_id
+        p.parent_id,
+        s.status_type
 	FROM
-	pm_projectsx p, cr_items i
+	pm_projectsx p, 
+        cr_items i,
+        pm_project_status s
 	WHERE
-	p.item_id = :project_item_id and
+	p.item_id    = :project_item_id and
         p.project_id = :project_id and
-        p.item_id = i.item_id
+        p.item_id    =  i.item_id and
+        p.status_id  =  s.status_id
     </querytext>
   </fullquery>
 
   <fullquery name="project_tasks_query">
     <querytext>
 	SELECT
-        t.item_id as task_id,
+        t.item_id as task_item_id,
+        t.parent_id as project_item_id,
         t.title,
 	to_char(t.end_date,'YYYY-MM-DD HH24:MI') as end_date,
 	to_char(t.earliest_start,'YYYY-MM-DD HH24:MI') as earliest_start,
@@ -48,6 +53,7 @@
 	to_char(current_date,'J') as today_j,
 	to_char(t.latest_finish,'YYYY-MM-DD HH24:MI') as latest_finish,
 	t.latest_finish - current_date as days_to_latest_finish,
+        u.person_id,
         u.first_names,
         u.last_name,
         t.percent_complete,
@@ -61,9 +67,25 @@
         s.description as status_description,
         r.is_lead_p
 	FROM
-	(select * from pm_tasks_revisionsx 
+	(select tr.item_id,
+                ta.party_id,
+                ta.role_id,
+                tr.title,
+                tr.end_date,
+                tr.earliest_start,
+                tr.earliest_finish,
+                tr.latest_start,
+                tr.latest_finish,
+                tr.percent_complete,
+                tr.estimated_hours_work,
+                tr.estimated_hours_work_min,
+                tr.estimated_hours_work_max,
+                tr.actual_hours_worked,
+                tr.parent_id,
+                tr.revision_id
+         from pm_tasks_revisionsx tr
          LEFT JOIN
-         pm_task_assignment ON item_id = task_id) t 
+         pm_task_assignment ta ON tr.item_id = ta.task_id) t 
            LEFT JOIN 
            persons u 
            ON 
@@ -83,6 +105,7 @@
         t.revision_id   = i.live_revision and
         t.item_id       = ti.task_id and
         ti.status       = s.status_id
+        [template::list::filter_where_clauses -and -name tasks]
         [template::list::orderby_clause -name tasks -orderby]
     </querytext>
   </fullquery>
@@ -119,7 +142,8 @@
         SELECT
         a.project_id,
         r.one_line as role_name,
-        p.first_names || ' ' || p.last_name as user_name
+        p.first_names || ' ' || p.last_name as user_name,
+        r.is_lead_p
         FROM 
         pm_project_assignment a,
         pm_roles r,
Index: openacs-4/contrib/packages/project-manager/www/one.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/one.adp,v
diff -u -r1.31.2.5 -r1.31.2.6
--- openacs-4/contrib/packages/project-manager/www/one.adp	8 Oct 2004 21:25:05 -0000	1.31.2.5
+++ openacs-4/contrib/packages/project-manager/www/one.adp	26 Oct 2004 01:21:11 -0000	1.31.2.6
@@ -1,6 +1,11 @@
 <master src="lib/master" />
- 
-  <property name="title">@my_title;noquote@</property>
+
+  <if @project.status_type@ eq c>
+    <property name="title">@my_title;noquote@ -- Closed</property>
+  </if>
+  <else>
+    <property name="title">@my_title;noquote@</property>
+  </else>
   <property name="context">@context;noquote@</property>
   
   <if @project.live_revision@ ne @project.project_id@>
@@ -11,9 +16,17 @@
   <tr>
     <td valign="top">
       
-      <table border="1" cellpadding="0" cellspacing="0" width="100%" class="list">
+      <table border="0" cellpadding="0" cellspacing="0" width="100%" class="list">
         <tr>
-          <th class="project">
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
+          <if @project.status_type@ eq c>
+            <th class="shaded">
+          </if>
+          <else>
+            <th class="project">
+          </else>
             <a href="@edit_url@">
               <img border="0" src="/shared/images/Edit16.gif"
                 alt="Edit" />
@@ -22,6 +35,9 @@
             &nbsp;&nbsp;@project_term@
             
           </th>
+        <th align="right" valign="top" width="10" class="project">
+          <img src="resources/tr-9999cc" />
+        </th>
           
         </tr>
         
@@ -61,13 +77,19 @@
       
       <p />
       
-      <table border="1" cellpadding="0" cellspacing="0" width="100%" class="list">
+      <table border="0" cellpadding="0" cellspacing="0" width="100%" class="list">
         <tr>
-          <th class="project" colspan="2">Dates</th>
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
+          <th class="project">Dates</th>
+          <th align="right" valign="top" width="10" class="project">
+            <img src="resources/tr-9999cc" />
+          </th>
         </tr>
         
         <tr>
-          <td>
+          <td colspan="3">
             <table border="0" cellpadding="1" cellspacing="1" width="100%">
               <tr>
                 <td class="highlight">Start</td>
@@ -106,17 +128,23 @@
       
       <p />
       
-      <table border="1" class="list" width="100%">
+      <table border="0" class="list" width="100%" cellpadding="0">
         <tr>
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
           <th class="project">Assignees</th>
+          <th align="right" valign="top" width="10" class="project">
+            <img src="resources/tr-9999cc" />
+          </th>
         </tr>
         <tr>
-          <td>
+          <td colspan="3">
             <listtemplate name="people"></listtemplate>
           </td>
         </tr>
         <tr>
-          <td>
+          <td colspan="3">
             <ul>
               <li>@assignee_add_self_widget;noquote@</li>
               <li><a href="@assignee_remove_self_url;noquote@">Remove myself</a></li>
@@ -130,13 +158,19 @@
 
       <if @use_project_customizations_p@>
         <p />
-        <table border="1" cellpadding="0" cellspacing="0" width="100%" class="list">
+        <table border="0" cellpadding="0" cellspacing="0" width="100%" class="list">
           <tr>
-            <th class="project" colspan="2">Project information</th>
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
+          <th class="project" colspan="2">Project information</th>
+          <th align="right" valign="top" width="10" class="project">
+            <img src="resources/tr-9999cc" />
+          </th>
           </tr>
           
           <tr>
-            <td>
+            <td colspan="3">
               <table border="0" cellpadding="1" cellspacing="1" width="100%">
                 <tr>
                   <td class="highlight">Customer</td>
@@ -150,13 +184,19 @@
       
       <p />
       
-      <table border="1" cellpadding="0" cellspacing="0" width="100%" class="list">
+      <table border="0" cellpadding="0" cellspacing="0" width="100%" class="list">
         <tr>
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
           <th class="project" colspan="2">Categories</th>
+          <th align="right" valign="top" width="10" class="project">
+            <img src="resources/tr-9999cc" />
+          </th>
         </tr>
         
         <tr>
-          <td>
+          <td colspan="3">
             <table border="0" cellpadding="1" cellspacing="1" width="100%">
               <tr>
                 <td class="highlight">
@@ -181,11 +221,17 @@
       <if @use_subprojects_p@>
         <table class="list" cellpadding="3" cellspacing="1" width="100%" border="0">
           <tr>
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
             <th colspan="2">Subprojects</th>
+          <th align="right" valign="top" width="10" class="project">
+            <img src="resources/tr-9999cc" />
+          </th>
           </tr>
           
           <tr class="list-button-bar">
-            <td><span class="list-button-header"><a
+            <td><span class="list-button-header" colspan="3"><a
                   href="add-edit?parent_id=@project_item_id@" class="list-button"
                   title="Add a subproject to this project">Add subproject</a></span>
               
@@ -198,13 +244,19 @@
         <p />
       </if>
 
-      <table class="list" cellpadding="3" cellspacing="1" width="100%" border="1">
+      <table class="list" cellpadding="0" cellspacing="0" width="100%" border="0">
         <tr>
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
           <th class="project" colspan="2">Comments</th>
+          <th align="right" valign="top" width="10" class="project">
+            <img src="resources/tr-9999cc" />
+          </th>
         </tr>
         
         <tr class="list-button-bar">
-          <td>
+          <td colspan="4">
             @comments;noquote@
             <ul>
               <li> @comments_link;noquote@
@@ -214,13 +266,19 @@
       </table>
 
       <p />
-      <table class="list" cellpadding="3" cellspacing="1" width="100%" border="1">
+      <table class="list" cellpadding="0" cellspacing="0" width="100%" border="0">
         <tr>
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
           <th class="project" colspan="2">Actions</th>
+          <th align="right" valign="top" width="10" class="project">
+            <img src="resources/tr-9999cc" />
+          </th>
         </tr>
         
         <tr>
-          <td colspan="2">
+          <td colspan="4">
             <ul> 
               <li> <a href="project-revisions?project_item_id=@project_item_id@">View project changes</a></li>
             </ul>
@@ -237,32 +295,51 @@
       </if>
 
       <table border="1" cellpadding="0" cellspacing="1" width="100%"
-        id="rightcontent" class="list">
+        id="rightcontent" class="list" align="right">
         <tr>
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
           <th class="project">@task_term@</th>
+          <th align="right" valign="top" width="10" class="project">
+            <img src="resources/tr-9999cc" />
+          </th>
         </tr>
-        
+
         <tr>
-          <td>
+          <td colspan="3">@instance_html;noquote@</td>
+        </tr>
+
+        <tr>
+          <td colspan="3">
             <listtemplate name="tasks"></listtemplate>
           </td>
         </tr>
         <tr class="list-button-bar">
-          <td class="list-button-bar">  
+          <td class="list-button-bar" colspan="3">  
             <ul>
               <li> 
                 <form action="task-add-edit" method="post"> 
                   Add 
                   <input type="hidden" name="project_item_id" value="@project_item_id@" />
-                  <input type="hidden" name="project_id"
-                value="@project_id@" />
                   <input type="hidden" name="return_url"
                 value="@return_url@" />
-                  <input type="text"   name="number" size="3" value="1" />
+                  <input type="text"   name="new_tasks" size="3" value="1" />
                   Tasks
                   <input type="submit" name="submit" value="Go" />
                 </form>
               </li>
+
+              <li>
+                <form action="process-one" method="post"> 
+                  <input type="hidden" name="project_item_id" value="@project_item_id@" />
+                  <input type="hidden" name="return_url" value="@return_url@" />
+                  <select name="process_id">
+                    @processes_html;noquote@
+                  </select>
+                  <input type="submit" name="submit" value="Use" />
+                </form>
+
             </ul>
             
           </td>
@@ -272,25 +349,31 @@
       
       <p />
       
-      <table border="1" cellpadding="3" cellspacing="1" id="rightcontent" class="list">
+      <table border="0" cellpadding="0" cellspacing="0"
+    id="rightcontent" class="list" align="right">
         <tr>
+          <th align="left" valign="top" width="10" class="project">
+            <img src="resources/tl-9999cc" />
+          </th>
           <th class="project">Logger</th>
+          <th align="right" valign="top" width="10" class="project">
+            <img src="resources/tr-9999cc" />
+          </th>
         </tr>
         
         <tr class="list-button-bar">
-          <td class="list-button-bar" valign="top">
+          <td class="list-button-bar" valign="top" colspan="3">
             <form action="one" method="post">
               @variable_widget;noquote@
               @variable_exports;noquote@
               @day_widget;noquote@
               <input type="submit" name="submit" value="View" />
             </form>
-
           </td>
         </tr>
         
         <tr>
-          <td>
+          <td colspan="3">
             <include src="/packages/logger/lib/entries"
               project_id="@project.logger_project;noquote@"
               variable_id="@logger_variable_id;noquote@"
Index: openacs-4/contrib/packages/project-manager/www/one.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/one.tcl,v
diff -u -r1.30.2.9 -r1.30.2.10
--- openacs-4/contrib/packages/project-manager/www/one.tcl	8 Oct 2004 21:25:05 -0000	1.30.2.9
+++ openacs-4/contrib/packages/project-manager/www/one.tcl	26 Oct 2004 01:21:11 -0000	1.30.2.10
@@ -22,6 +22,7 @@
     @param use_project_code_p Specifies whether or not to show the user-specified project code 1 = yes
     @param use_uncertain_completion_times_p Specifies whether or not to use PERT style uncertainty times 1 = yes
     @param logger_days The number of days back to view logged entries
+    @param instance_id The process instance ID to show for tasks
 } {
 
     project_item_id:integer,optional
@@ -30,6 +31,7 @@
     {orderby_tasks ""}
     {logger_variable_id:integer ""}
     {logger_days:integer "30"}
+    {instance_id:integer ""}
 
 } -properties {
     categories:onelist
@@ -112,6 +114,32 @@
 set create_p [permission::permission_p -object_id $package_id -privilege create]
 
 
+set process_instance_options [pm::process::instance_options \
+                                  -project_item_id $project_item_id \
+                                  -process_instance_id $instance_id]
+
+
+if {[empty_string_p $process_instance_options]} {
+    set instance_html ""
+} else {
+
+    set instance_html "
+<form action=\"one\" method=\"get\">
+  [export_vars -form -entire_form -exclude {instance_id}]
+  <select name=\"instance_id\">
+    <option value=\"\">View all tasks</option>
+    $process_instance_options
+  </select>
+  <input type=\"submit\" name=\"submit\" value=\"Go\" />
+</form>"
+}
+
+# we do this so that the list builder templates don't add a where
+# clause when instance_id is set.
+if {[empty_string_p $instance_id]} {
+    unset instance_id
+}
+
 # categories
 
 set categories [list]
@@ -185,22 +213,25 @@
     set context [list [list "one?project_item_id=$project(parent_id)" "Parent"] "$project(project_name)"]
 }
 
+set processes_html [pm::process::select_html]
+
 # Tasks, using list-builder ---------------------------------
 
 set process_link "process-use?project_item_id=$project_item_id"
 
 template::list::create \
     -name tasks \
     -multirow tasks \
-    -key task_id \
+    -key task_item_id \
+    -html {width 100%} \
     -elements {
-        task_id {
+        task_item_id {
             label "ID"
         }
         status_type {
             label "Done"
             display_template {
-                <a href="task-add-edit?task_id=@tasks.task_id@"><if @tasks.status_type@ eq c><img border="0" src="/resources/checkboxchecked.gif" /></if><else><img border="0" src="/resources/checkbox.gif" /></else></a>
+                <a href="task-add-edit?task_item_id=@tasks.task_item_id@&project_item_id=@tasks.project_item_id@"><if @tasks.status_type@ eq c><img border="0" src="/resources/checkboxchecked.gif" /></if><else><img border="0" src="/resources/checkbox.gif" /></else></a>
             }
         }
         title {
@@ -241,7 +272,18 @@
         last_name {
             label "Who"
             display_template {
-                <group column="task_id"><if @tasks.is_lead_p@><i></if>@tasks.first_names@&nbsp;@tasks.last_name@<if @tasks.is_lead_p@></i></if><br></group>
+                <group column="task_item_id">
+                  <if @tasks.person_id@ eq @tasks.my_user_id@>
+                    <span class="selected">
+                  </if>
+                  <if @tasks.is_lead_p@><i></if>
+                  @tasks.first_names@&nbsp;@tasks.last_name@
+                  <if @tasks.is_lead_p@></i></if>
+                  <if @tasks.person_id@ eq @tasks.my_user_id@>
+                    </span>
+                  </if>
+                  <br>
+                </group>
             }
 
         }
@@ -251,8 +293,6 @@
     } \
     -bulk_action_export_vars {
         project_item_id
-        project_id
-        {my_key 1}
         {return_url}
     } \
     -sub_class {
@@ -262,6 +302,10 @@
         project_item_id {
             hide_p 1
         }
+        instance_id {
+            hide_p 1
+            where_clause {ti.process_instance = :instance_id}
+        }
         orderby_subproject {
             hide_p 1
         }
@@ -272,37 +316,37 @@
     -orderby {
         default_value latest_start,asc
         title {
-            orderby_asc "title asc, task_id asc"
-            orderby_desc "title desc, task_id desc"
+            orderby_asc "title asc, task_item_id asc"
+            orderby_desc "title desc, task_item_id desc"
             default_direction asc
         }
         earliest_start {
-            orderby_asc "earliest_start, task_id asc, u.first_names, u.last_name"
-            orderby_desc "earliest_start desc, task_id desc, u.first_names, u.last_name"
+            orderby_asc "earliest_start, task_item_id asc, u.first_names, u.last_name"
+            orderby_desc "earliest_start desc, task_item_id desc, u.first_names, u.last_name"
             default_direction asc
         }
         earliest_finish {
-            orderby_asc "earliest_finish, task_id asc, u.first_names, u.last_name"
-            orderby_desc "earliest_finish desc, task_id desc, u.first_names, u.last_name"
+            orderby_asc "earliest_finish, task_item_id asc, u.first_names, u.last_name"
+            orderby_desc "earliest_finish desc, task_item_id desc, u.first_names, u.last_name"
             default_direction asc
         }
         latest_start {
-            orderby_asc "latest_start, task_id asc, u.first_names, u.last_name"
-            orderby_desc "latest_start desc, task_id desc, u.first_names, u.last_name"
+            orderby_asc "latest_start, task_item_id asc, u.first_names, u.last_name"
+            orderby_desc "latest_start desc, task_item_id desc, u.first_names, u.last_name"
             default_direction asc
         }
         latest_finish {
-            orderby_asc "latest_finish, task_id asc, u.first_names, u.last_name"
-            orderby_desc "latest_finish desc, task_id desc, u.first_names, u.last_name"
+            orderby_asc "latest_finish, task_item_id asc, u.first_names, u.last_name"
+            orderby_desc "latest_finish desc, task_item_id desc, u.first_names, u.last_name"
             default_direction asc
         }
     } \
     -orderby_name orderby_tasks
 
 
-db_multirow -extend { item_url earliest_start_pretty earliest_finish_pretty latest_start_pretty latest_finish_pretty slack_time} tasks project_tasks_query {
+db_multirow -extend { item_url earliest_start_pretty earliest_finish_pretty latest_start_pretty latest_finish_pretty slack_time my_user_id} tasks project_tasks_query {
 } {
-    set item_url [export_vars -base "task-one" { revision_id task_id}]
+    set item_url [export_vars -base "task-one" { {task_id $task_item_id}}]
 
     set earliest_start_pretty [lc_time_fmt $earliest_start "%x"]
     set earliest_finish_pretty [lc_time_fmt $earliest_finish "%x"]
@@ -313,7 +357,8 @@
                         -earliest_start_j $earliest_start_j \
                         -today_j $today_j \
                         -latest_start_j $latest_start_j]
-                    
+
+    set my_user_id $user_id
 }
 
 
@@ -373,6 +418,11 @@
     -elements {
         user_name {
             label "Who"
+            display_template {
+                <if @people.is_lead_p@><i></if>
+                @people.user_name@
+                <if @people.is_lead_p@></i></if>
+            }
         }
         role_name {
             label "Role"
Index: openacs-4/contrib/packages/project-manager/www/process-one-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/process-one-postgresql.xql,v
diff -u -r1.3.2.1 -r1.3.2.2
--- openacs-4/contrib/packages/project-manager/www/process-one-postgresql.xql	2 Jul 2004 23:13:49 -0000	1.3.2.1
+++ openacs-4/contrib/packages/project-manager/www/process-one-postgresql.xql	26 Oct 2004 01:21:11 -0000	1.3.2.2
@@ -11,14 +11,28 @@
         t.estimated_hours_work_min,
         t.estimated_hours_work_max,
         d.dependency_type,
-        t.ordering
+        t.ordering,
+        p.first_names,
+        p.last_name,
+        p.person_id
 	FROM
         pm_process_task t 
+          LEFT JOIN
+          pm_process_task_assignment a
+          ON 
+          t.process_task_id = a.process_task_id
+            LEFT JOIN
+            pm_roles r
+            ON r.role_id = a.role_id
           LEFT JOIN 
+          persons p 
+          ON p.person_id = a.party_id
+          LEFT JOIN 
           pm_process_task_dependency d 
           ON t.process_task_id = d.process_task_id 
 	WHERE
-	t.process_id = :process_id
+	t.process_id = :process_id and
+        (r.is_lead_p = 't' or r.is_lead_p is null)
         [template::list::orderby_clause -orderby -name tasks]
     </querytext>
   </fullquery>
Index: openacs-4/contrib/packages/project-manager/www/process-one.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/process-one.adp,v
diff -u -r1.4 -r1.4.2.1
--- openacs-4/contrib/packages/project-manager/www/process-one.adp	11 Dec 2003 21:39:44 -0000	1.4
+++ openacs-4/contrib/packages/project-manager/www/process-one.adp	26 Oct 2004 01:21:11 -0000	1.4.2.1
@@ -8,13 +8,13 @@
 Process tasks:
 
 <ul>
-  <li> Use this process: @use_link;noquote@<p />
+  <li> Use all tasks in this process: @use_link;noquote@<p />
   <li> 
     <form action="process-task-add-edit" method="post"> 
       Add 
       <input type="hidden" name="process_id" value="@process_id@">
       <input type="text"   name="number" size="3" value="1" />
-      process tasks
+      new task(s) to this process
       <input type="submit" name="submit" value="Go" />
     </form>
   </li>
Index: openacs-4/contrib/packages/project-manager/www/process-one.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/process-one.tcl,v
diff -u -r1.9.2.2 -r1.9.2.3
--- openacs-4/contrib/packages/project-manager/www/process-one.tcl	2 Jul 2004 23:13:49 -0000	1.9.2.2
+++ openacs-4/contrib/packages/project-manager/www/process-one.tcl	26 Oct 2004 01:21:11 -0000	1.9.2.3
@@ -13,17 +13,20 @@
 
 } {
 
-    process_id:integer
+    process_id:integer,notnull
     orderby:optional
+    {project_item_id ""}
     
 } -properties {
     process_id:onevalue
     context_bar:onevalue
     use_link:onevalue
 } -validate {
+} -errors {
+    process_id:notnull {You must specify a process to use. Please back up and select a process}
 }
 
-# --------------------------------------------------------------- #
+# --------------------------------------------------------------- 
 
 # the unique identifier for this package
 set package_id [ad_conn package_id]
@@ -41,74 +44,41 @@
 
 set context_bar [ad_context_bar [list "processes?process_id=$process_id" "Processes"] "One"]
 
-set use_link "<a href=\"task-select-project?process_id=$process_id\"><img border=\"0\" src=\"/shared/images/go.gif\"></a>"
+set use_link "<a href=\"[export_vars -base task-select-project {process_id project_item_id}]\"><img border=\"0\" src=\"/shared/images/go.gif\"></a>"
 
 
-if {[string is true $use_uncertain_completion_times_p]} {
-    set elements [list \
-                      one_line {
-                          label "Subject"
-                          display_template {<a href="process-task-add-edit?process_id=[set process_id]&process_task_id=@tasks.process_task_id@">@tasks.one_line@</a>
-                              <if @tasks.dependency_type@ eq start_before_start>
-                              <img border="0" src="resources/start_before_start.png">
-                              </if>
-                              <if @tasks.dependency_type@ eq start_before_finish>
-                              <img border="0" src="resources/start_before_finish.png">
-                              </if>
-                              <if @tasks.dependency_type@ eq finish_before_start>
-                              <img border="0" src="resources/finish_before_start.png">
-                              </if>
-                              <if @tasks.dependency_type@ eq finish_before_finish>
-                              <img border="0" src="resources/finish_before_finish.png">
-                              </if>
-                          }
-                      } \
-                      description {
-                          label "Description"
-                      } \
-                      estimated_hours_work_min {
-                          label "Work estimate min"
-                      } \
-                      estimated_hours_work_max {
-                          label "Work estimate max"
-                      } \
-                      ordering {
-                          label "Order"
-                      } ]
-    
-} else {
-    
-    set elements [list \
-                      one_line {
-                          label "Subject"
-                          display_template {<a href="process-task-add-edit?process_id=[set process_id]&process_task_id=@tasks.process_task_id@">@tasks.one_line@</a>
-                              <if @tasks.dependency_type@ eq start_before_start>
-                              <img border="0" src="resources/start_before_start.png">
-                              </if>
-                              <if @tasks.dependency_type@ eq start_before_finish>
-                              <img border="0" src="resources/start_before_finish.png">
-                              </if>
-                              <if @tasks.dependency_type@ eq finish_before_start>
-                              <img border="0" src="resources/finish_before_start.png">
-                              </if>
-                              <if @tasks.dependency_type@ eq finish_before_finish>
-                              <img border="0" src="resources/finish_before_finish.png">
-                              </if>
-                          }
-                      } \
-                      description {
-                          label "Description"
-                      } \
-                      estimated_hours_work {
-                          label "Work estimate"
-                      } \
-                      ordering {
-                          label "Order"
-                      } ]
-}
+set elements \
+    [list \
+         one_line {
+             label "Subject"
+             display_template {<a href="process-task-add-edit?process_id=[set process_id]&process_task_id=@tasks.process_task_id@">@tasks.one_line@</a>
+                 <if @tasks.dependency_type@ eq start_before_start>
+                 <img border="0" src="resources/start_before_start.png">
+                 </if>
+                 <if @tasks.dependency_type@ eq start_before_finish>
+                 <img border="0" src="resources/start_before_finish.png">
+                 </if>
+                 <if @tasks.dependency_type@ eq finish_before_start>
+                 <img border="0" src="resources/finish_before_start.png">
+                 </if>
+                 <if @tasks.dependency_type@ eq finish_before_finish>
+                 <img border="0" src="resources/finish_before_finish.png">
+                 </if>
+             }
+         } \
+         description {
+             label "Description"
+         } \
+         person_id {
+             label "Lead"
+             display_template {
+                 <group column="process_task_id">
+                 <i>@tasks.first_names@ @tasks.last_name@</i><br />
+                 </group>
+             }
+         }]    
 
 
-
 # Process tasks, using list-builder ---------------------------------
 
 template::list::create \
@@ -120,27 +90,19 @@
         default_value ordering,asc
         ordering {
             label "Order"
-            orderby_asc "t.ordering, t.process_task_id"
-            orderby_desc "t.ordering desc, t.process_task_id desc"
+            orderby_asc "t.ordering, t.process_task_id, p.first_names, p.last_name"
+            orderby_desc "t.ordering desc, t.process_task_id desc, p.first_names, p.last_name"
             default_direction asc
         }
-        one_line {
-            orderby_asc "t.one_line, t.ordering"
-            orderby_desc "t.one_line desc, t.ordering desc"
-            default_direction asc
-        }
-        estimated_hours_work {orderby estimated_hours_work}
-        estimated_hours_work_min {orderby estimated_hours_work_min}
-        estimated_hours_work_max {orderby estimated_hours_work_max}
-
     } \
     -bulk_actions {
+        "Use" "task-select-project" "Use process"
         "Edit" "process-task-add-edit" "Edit tasks"
         "Delete" "process-task-delete" "Delete tasks"
     } \
     -bulk_action_export_vars {
         process_id
-        project_id
+        project_item_id
     } \
     -sub_class {
         narrow
@@ -157,7 +119,3 @@
 } {
 }
 
-
-ad_return_template
-
-# ------------------------- END OF FILE ------------------------- #
Index: openacs-4/contrib/packages/project-manager/www/process-task-add-edit.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/process-task-add-edit.adp,v
diff -u -r1.7.4.1 -r1.7.4.2
--- openacs-4/contrib/packages/project-manager/www/process-task-add-edit.adp	2 Jul 2004 23:13:49 -0000	1.7.4.1
+++ openacs-4/contrib/packages/project-manager/www/process-task-add-edit.adp	26 Oct 2004 01:21:11 -0000	1.7.4.2
@@ -1,4 +1,4 @@
-<master>
+<master src="lib/master">
   <property name="context_bar">@context_bar;noquote@</property>
   <property name="title">@title@</property>
 
Index: openacs-4/contrib/packages/project-manager/www/process-task-add-edit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/process-task-add-edit.tcl,v
diff -u -r1.8.2.2 -r1.8.2.3
--- openacs-4/contrib/packages/project-manager/www/process-task-add-edit.tcl	2 Jul 2004 23:13:49 -0000	1.8.2.2
+++ openacs-4/contrib/packages/project-manager/www/process-task-add-edit.tcl	26 Oct 2004 01:21:11 -0000	1.8.2.3
@@ -61,20 +61,10 @@
 set package_id [ad_conn package_id]
 set user_id    [ad_maybe_redirect_for_registration]
 
-set subsite_id [ad_conn subsite_id]
-set user_group_id [application_group::group_id_from_package_id \
-                       -package_id $subsite_id]
-
-# -----------
-# permissions
-# -----------
-permission::require_permission -party_id $user_id -object_id $package_id -privilege read
-
 # ------------------------------------------------------------
 # if process_task_id is set, then we are editing process tasks
 # ------------------------------------------------------------
 
-
 if {[exists_and_not_null process_task_id]} {
 
     set edit_p 1
@@ -132,25 +122,9 @@
 
 set roles_list_of_lists [pm::role::select_list_filter]
 
-set assignee_list_of_lists [db_list_of_lists get_assignees {
-    select
-    p.first_names || ' ' || p.last_name as name,
-    p.person_id
-    FROM
-    persons p,
-    acs_rels r,
-    membership_rels mr
-    WHERE
-    r.object_id_one = :user_group_id and
-    mr.rel_id = r.rel_id and
-    p.person_id = r.object_id_two and
-    member_state = 'approved'
-    ORDER BY
-    p.first_names, p.last_name
-}]
+set assignee_list_of_lists [pm::util::subsite_assignees_list_of_lists]
 
 
-
 template::multirow create num process_task_id one_line description work work_min work_max ordering checked assignee_html
 
 for {set i 1} {$i <= $number} {incr i} {
Index: openacs-4/contrib/packages/project-manager/www/processes-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/processes-postgresql.xql,v
diff -u -r1.1.4.1 -r1.1.4.2
--- openacs-4/contrib/packages/project-manager/www/processes-postgresql.xql	2 Jul 2004 23:13:49 -0000	1.1.4.1
+++ openacs-4/contrib/packages/project-manager/www/processes-postgresql.xql	26 Oct 2004 01:21:11 -0000	1.1.4.2
@@ -9,9 +9,11 @@
         p.one_line,
         p.description,
         p.party_id,
-        to_char(p.creation_date,'YYYY-MM-DD') as creation_date_ansi
+        to_char(p.creation_date,'YYYY-MM-DD') as creation_date_ansi,
+        (select count(*) from pm_process_instance i where i.process_id =
+        p.process_id) as instances
         FROM 
-        pm_process p
+        pm_process_active p
         ORDER BY
         p.one_line        
     </querytext>
Index: openacs-4/contrib/packages/project-manager/www/processes.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/processes.tcl,v
diff -u -r1.7.2.2 -r1.7.2.3
--- openacs-4/contrib/packages/project-manager/www/processes.tcl	2 Jul 2004 23:13:49 -0000	1.7.2.2
+++ openacs-4/contrib/packages/project-manager/www/processes.tcl	26 Oct 2004 01:21:11 -0000	1.7.2.3
@@ -59,11 +59,6 @@
     -multirow processes \
     -key item_id \
     -elements {
-        process_id {
-            label ""
-            display_template {<a href="task-select-project?process_id=@processes.process_id@"><img border="0" src="/shared/images/go.gif"></a>
-            }
-        }
         one_line {
             label "Subject"
             display_template {
@@ -73,6 +68,9 @@
         description {
             label "Description"
         }
+        instances {
+            label "Times used"
+        }
         creation_date {
             label "Created"
         }
Index: openacs-4/contrib/packages/project-manager/www/style.css
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/style.css,v
diff -u -r1.9.2.2 -r1.9.2.3
--- openacs-4/contrib/packages/project-manager/www/style.css	8 Oct 2004 21:25:05 -0000	1.9.2.2
+++ openacs-4/contrib/packages/project-manager/www/style.css	26 Oct 2004 01:21:11 -0000	1.9.2.3
@@ -3,10 +3,174 @@
 }
 
 th.project {
-        background-color:#ccffcc;
+        background-color:#9999cc;
 }
 
 td.project-filter-pane {
-        background-color: #ddffdd;
+        background-color: #bbbbee;
         vertical-align: top;
 }
+
+.shaded {
+        background-color: #dddddd;
+}
+
+.selected {
+        background-color: #eeccdd;
+}
+
+<!-- Many of these are not used and can be removed. This was
+                    lifted from logger -->
+<!-- Shall we lift these classes to the OpenACS level? -->
+
+.no_items_text {
+  font-style: italic;
+  font-family: tahoma,verdana,arial,helvetica; 
+}
+
+.logger_explanation_text {
+   font-style: italic;
+}
+
+.logger_emphasized_text {
+   font-weight: bold;
+}
+
+table.logger_navbar {
+  background-color: #41329c;
+  clear: both;
+}
+a.logger_navbar { 
+    color: white; 
+    text-decoration: none;
+}
+a.logger_navbar:visited { 
+  color: white; 
+}
+a.logger_navbar:hover { 
+    color: white; 
+    text-decoration: underline;
+}
+td.logger_navbar {
+  font-family: tahoma,verdana,arial,helvetica; 
+  font-size: 70%; 
+  font-weight: bold; 
+  color: #ccccff; 
+  text-decoration: none; 
+}
+
+.logger_filter_bar_header {
+    font-weight: bold;
+    text-align: center;
+}
+.logger_filter_bar_section_header {
+    font-weight: bold;
+    background-color: #bbbbff; 
+}
+
+.logger_filter_bar_selected_link {
+   font-weight: bold;
+}
+
+table.logger_table {
+  background-color: #999999;
+  margin: 10px;
+}
+.logger_table_header { 
+  background-color: #dddddd;
+}
+.logger_table_rows {
+  background-color: white;
+}
+
+table.logger_listing {
+  font-family: tahoma, verdana, helvetica; 
+  font-size: 85%;
+}
+table.logger_listing_tiny {
+  font-family: tahoma, verdana, helvetica; 
+  font-size: 75%;
+}
+tr.logger_listing_header {
+  background-color: #cccccc; 
+}
+tr.logger_listing_subheader {
+  background-color: #bbbbbb; 
+  font-weight: bold;
+}
+tr.logger_listing_even {
+  background-color: #f0f0f0;
+}
+tr.logger_listing_spacer {
+  background-color: #f9f9f9;
+}
+tr.logger_listing_odd {
+  background-color: #e0e0e0;
+}
+td.logger_listing_narrow {
+  padding-left: 4px; 
+  padding-right: 4px;
+}
+td.logger_listing {
+  padding-left: 16px; 
+  padding-right: 16px;
+}
+th.logger_listing_narrow {
+  padding-left: 4px; 
+  padding-right: 4px;
+}
+th.logger_listing {
+  padding-left: 16px; 
+  padding-right: 16px;
+}
+
+.logger_font {
+  font-family: tahoma,verdana,arial,helvetica; 
+}
+
+h1.logger {
+  font-family: verdana,arial,helvetica; 
+}
+h2.logger {
+  font-family: verdana,arial,helvetica; 
+}
+h3.logger {
+  font-family: verdana,arial,helvetica; 
+}
+h4.logger {
+  font-family: verdana,arial,helvetica; 
+}
+
+
+.logger_filter { 
+  font-size: 70%; 
+  font-family: tahoma,verdana,arial,helvetica; 
+}
+tr.logger_filter_selected { 
+  background-color: #eeeeff;
+}
+span.logger_filter_selected { 
+  color: black;
+}
+.logger_filter_header { 
+  font-size: 70%; 
+  font-family: tahoma,verdana,arial,helvetica; 
+  font-weight: bold; 
+}
+.logger_filter_section { 
+  font-size: 70%; 
+  font-family: tahoma,verdana,arial,helvetica; 
+  font-weight: bold; 
+  background-color: #bbbbff; 
+  padding-left: 4px; 
+  padding-top: 4px; 
+  padding-bottom: 4px; 
+  margin-top: 0px; 
+  margin-bottom: 8px;
+}
+
+th { 
+     font-size: 9pt;
+     text-align: left;
+     background-color:dfdfff;
+}
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/contrib/packages/project-manager/www/task-add-edit-2.tcl'.
Fisheye: No comparison available.  Pass `N' to diff?
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/contrib/packages/project-manager/www/task-add-edit-3.tcl'.
Fisheye: No comparison available.  Pass `N' to diff?
Index: openacs-4/contrib/packages/project-manager/www/task-add-edit.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/task-add-edit.adp,v
diff -u -r1.12.2.5 -r1.12.2.6
--- openacs-4/contrib/packages/project-manager/www/task-add-edit.adp	9 Jul 2004 17:38:28 -0000	1.12.2.5
+++ openacs-4/contrib/packages/project-manager/www/task-add-edit.adp	26 Oct 2004 01:21:11 -0000	1.12.2.6
@@ -4,294 +4,289 @@
   
   
   <center>
-    
-    <table border="0" cellpadding="5" cellspacing="0" class="list">
+    <form action="task-add-edit-2" method="post">
+      @export_vars;noquote@ 
       
-      <formtemplate id="add_edit" style="standard-lars">
+      <span class="selected">
+        Send email to assignees? 
+        <select name="send_email_p" >
+          <option value="t" selected="selected">Yes</option>
+          <option value="f">No</option>
+        </select>
 
-        <tr colspan="2">
-          <td align="right">
-            Send email to assignees? 
-            <formwidget id="send_email_p">
-              <formerror id="send_email_p"> 
-                <br />
-                <font color="red">Error</font>
-              </formerror>
-            </formwidget>
-          </td>
-        </tr>
+        <if @using_process_p@ true>
+          Process name <input type="text" name="process_name" size="25" value="@process_name@" />
+        </if>
+      </span>
+
+      <table border="0" cellpadding="0" cellspacing="0">
         
-        <multiple name="num">
-          
-          <tr bgcolor="#AA9999">
-            <td valign="bottom">
-              <if @edit_p@ false>
-                &nbsp;#@num.rownum@&nbsp;&nbsp;
+        <multiple name="tasks">
+
+          <tr bgcolor="#9999cc">
+            <td align="left" valign="top" width="10">
+              <img src="resources/tl-9999cc.jpg" />
+            </td>
+            
+            <td colspan="2">
+              <if @edit_p@ true>
+                @task_term_lower;noquote@ &nbsp;@tasks.task_item_id@
               </if>
               <else>
-                #@num.task_id@
+                @task_term_lower;noquote@ &nbsp;@tasks.rownum@
               </else>
             </td>
-            <td valign="bottom">
-              <if @using_process_p@ true>
-                Skip this task?
-              </if>
-              
-              <formwidget id="skip_task_p.@num.rownum@">
-                <formerror id="skip_task_p.@num.rownum@"> 
-                  <br />
-                  <font color="red">Error</font>
-                </formerror>
-              </formwidget>
+            
+            <td align="right" valign="top" width="10">
+              <img src="resources/tr-9999cc.jpg" />
             </td>
             
           </tr>
-
-          <if @num.rownum@ odd>
-            <tr bgcolor="lavender">
+          
+          <if @tasks.rownum@ odd>
+            <tr bgcolor="#e6e6fa">
           </if>
           <else>
             <tr bgcolor="#ddffdd">
           </else>
 
-          <td valign="top">
-            
-            <b>Subject:</b><font color="red">*</font><br />
-            <formwidget id="task_title.@num.rownum@">
-              <formerror id="task_title.@num.rownum@">
-                <br />
-                <font color="red">Error</font>
-              </formerror>
-            </formwidget>
-            <p />
+          <td rowspan="2" align="center" valign="top">
+            <input type="hidden" name="task_item_id.@tasks.rownum@" value="@tasks.task_item_id@" />
+            <input type="hidden" name="number" value="@tasks.rownum@" />
+          </td>
 
-            <b>Description:</b><br />
-            <formwidget id="description.@num.rownum@">
-              <formerror id="description.@num.rownum@"> 
-                <br />
-                <font color="red">Error</font>
-              </formerror>
-            </formwidget>
-            <p />
+          <td valign="top"><b>Subject:</b><font color="red">*</font><br /><input type="text" size="39" name="task_title.@tasks.rownum;noquote@" value="@tasks.one_line@"><p />
 
-            <if @edit_p@ true>
-              <b>Comment:</b><br />
-            </if>
-            <formwidget id="comment.@num.rownum@">
-              <formerror id="comment.@num.rownum@"> 
-                <br />
-                <font color="red">Error</font>
-              </formerror>
-            </formwidget>
+              <b>Description:</b><br />
+              <textarea name="description.@tasks.rownum;noquote@" rows="14" cols="40" id="richtext__add_edit__description.@tasks.rownum;noquote@">@tasks.description@</textarea><br />
 
-         </td>
+              Format: 
+              <select name="description_mime_type.@tasks.rownum;noquote@" id="richtext__add_edit__description.@tasks.rownum@">
+                
+                <if @tasks.description_mime_type@ eq "text/enhanced">
+                  <option value="text/enhanced" selected="selected">Enhanced Text</option>
+                </if>
+                <else>
+                  <option value="text/enhanced">Enhanced Text</option>
+                </else>
 
-          <td valign="top">
+                <if @tasks.description_mime_type@ eq "text/plain">
+                  <option value="text/plain" selected="selected">Plain Text</option>
+                </if>
+                <else>
+                  <option value="text/plain">Plain Text</option>
+                </else>
 
-            <table border="0" cellpadding="0" cellspacing="0" width="100%">
-              <tr class="form-element">
-                <td align="left" colspan="2"><b>Total work required:</b>
-                  <font color="red">*</font><p />
-                </td>
-              </tr>
+                <if @tasks.description_mime_type@ eq "text/fixed-width">
+                  <option value="text/fixed-width" selected="selected">Fixed-width Text</option>
+                </if>
+                <else>
+                  <option value="text/fixed-width">Fixed-width Text</option>
+                </else>
 
-              <if @use_uncertain_completion_times_p@ eq 1>
-                <tr class="form-element">
-                  <td class="form-label" width="40%">Min:</td>
-                  <td class="form-widget">
-                    <formwidget id="estimated_hours_work_min.@num.rownum@"> hrs
+                <if @tasks.description_mime_type@ eq "text/html">
+                  <option value="text/html" selected="selected">HTML</option>
+                </if>
+                <else>
+                  <option value="text/html">HTML</option>
+                </else>
+              </select>
 
-                      <formerror id="estimated_hours_work_min.@num.rownum@">
-                        <br />
-                        <font color="red">Error</font>
-                      </formerror>
-                    </formwidget>
-                  </td>
-                </tr>
+              <if @edit_p@ true>
 
-                <tr class="form-element">
-                  <td class="form-label" width="40%">Max:</td>
-                  <td class="form-widget">
-                    <formwidget id="estimated_hours_work_max.@num.rownum@"> hrs
+                <p />
+                <b>Comment</b><br />
+                <textarea name="comments.@tasks.rownum;noquote@" rows="7" cols="40"></textarea><br />
 
-                      <formerror id="estimated_hours_work_max.@num.rownum@">
-                        <br />
-                        <font color="red">Error</font>
-                      </formerror>
-                    </formwidget>
-                    
-                  </td>
-                </tr>
+                Format: 
+                <select name="comments_mime_type.@tasks.rownum;noquote@">
+                  <option value="text/enhanced">Enhanced Text</option>
+                  <option value="text/plain" selected="selected">Plain Text</option>
+                  <option value="text/fixed-width">Fixed-width Text</option>
+                  <option value="text/html">HTML</option>
+                </select>
+                
               </if>
-
               <else>
-                <tr>
-                  <td>
-                    <formwidget id="estimated_hours_work.@num.rownum@"> hrs
-
-                      <formerror id="estimated_hours_work.@num.rownum@">
-                        <br />
-                        <font color="red">Error</font>
-                      </formerror>
-                    </formwidget>
-                  </td>
-                </tr>
+                <input type="hidden" name="comments.@tasks.rownum@" value="" />
+                <input type="hidden" name="comments_mime_type.@tasks.rownum@" value="text/plain" />
               </else>
 
-              <tr class="form-element">
-                <td>
-                  <td class="form-widget">
-                    <p style="margin-top: 4px; margin-bottom: 2px; color: #666666; font-family: tahoma,verdana,arial,helvetica,sans-serif; font-size: 75%;">
-                      <img src="/shared/images/info.gif" width="12" height="9" alt="[i]" title="Help text" border="0">
-                        You must enter a number here (make your best
-                        guess)
-                    </p>
-                  </td>
+          </td>
+
+        </td>
+          
+          <td width="15">&nbsp;</td>
+
+          <td valign="top">
+            <table border="0" cellpadding="0" cellspacing="0">
+              <tr>
+                <td><b>Work required:</b><font color="red">*</font></td>
               </tr>
 
-            <if @edit_p@ true>
-                <tr class="form-element">
-                  <td colspan="2" align="left"><p /><b>Log entry:</b><p />
-                  </td>
+              <if @use_uncertain_completion_times_p@ eq 1>
+                <tr><td>Min:</td>
+                  <td><input type="text" name="estimated_hours_work_min.@tasks.rownum;noquote@" size="5" value="@tasks.work_min@"> hrs</td>
                 </tr>
-                <tr class="form-element">
-                  <td class="form-label">Complete:</td>
-                  <td class="form-widget">
-                    <formwidget id="percent_complete.@num.rownum@">
-                      <formerror id="percent_complete.@num.rownum@">
-                        <font color="red">Error</font>
-                      </formerror>
-                    </formwidget> %
-                  </td>
 
-                  <tr class="form-element">
-                    <td>
-                      <td class="form-widget">
-                        <p style="margin-top: 4px; margin-bottom: 2px; color: #666666; font-family: tahoma,verdana,arial,helvetica,sans-serif; font-size: 75%;">
-                          <img src="/shared/images/info.gif" width="12" height="9" alt="[i]" title="Help text" border="0">
-                            Enter 100% to close the @task_term_lower@, or less
-                            to open it.
-                        </p>
-                      </td>
-                  </tr>
-                  
+                <tr><td>Max:</td>
+                  <td><input type="text" name="estimated_hours_work_max.@tasks.rownum;noquote@" size="5" value="@tasks.work_max@"> hrs</td>
                 </tr>
-                <tr class="form-element">
-                  <td class="form-label">Time:</td>
-                  <td class="form-widget">
-                    <formwidget id="new_hours_logged.@num.rownum@">
-                      <formerror id="new_hours_logged.@num.rownum@">
-                        <font color="red">Error</font>
-                      </formerror>
-                    </formwidget> hours
-                  </td>
-                </tr>
-                <tr class="form-element">
-                  <td class="form-label">Description:</td>
-                  <td class="form-widget">
-                    <formwidget id="new_description_logged.@num.rownum@">
-                      <formerror id="new_description_logged.@num.rownum@">
-                        <font color="red">Error</font>
-                      </formerror>
-                    </formwidget>
-                  </td>
-                </tr>
-                
-                <tr class="form-element">
-                  <td>
-                    <td class="form-widget">
-                      <p style="margin-top: 4px; margin-bottom: 2px; color: #666666; font-family: tahoma,verdana,arial,helvetica,sans-serif; font-size: 75%;">
-                        <img src="/shared/images/info.gif" width="12" height="9" alt="[i]" title="Help text" border="0">
-                          You can optionally log time worked here.
-                      </p>
-                    </td>
-                </tr>
-                
+              </if>
+              <else>
+                <tr><td><input type="text" name="estimated_hours_work.@tasks.rownum;noquote@" size="5" value="@tasks.work@"> hrs</tr>
+              </else>
+
             </table>
 
-          </if>
-            <else>
-              <formwidget id="percent_complete.@num.rownum@">
-                <formerror id="percent_complete.@num.rownum@">
-                  <font color="red">Error</font>
-                </formerror>
-              </formwidget>
-              </table>
-            </else>
+            <p />
+          
+            <div class="shaded">
 
-            <table bgcolor="#dddddd" width="100%" cellpadding="0" cellspacing="0">
-      
-              <tr>
-                <td valign="top">
-                  Deadline: <br />
+              Deadline: @tasks.end_date_html;noquote@</p>
 
-                  <formwidget id="end_date.@num.rownum@">
-                    <formerror id="end_date.@num.rownum@">
-                      <font color="red">Error</font>
-                    </formerror>
-                  </formwidget>
+              <input type="hidden" name="process_task_id.@tasks.rownum@" value="@tasks.process_task_id;noquote@" />
 
-                  <p style="margin-top: 4px; margin-bottom: 2px; color: #666666; font-family: tahoma,verdana,arial,helvetica,sans-serif; font-size: 75%;">
-                    <img src="/shared/images/info.gif" width="12" height="9" alt="[i]" title="Help text" border="0">
-                      You may optionally enter a hard deadline
-                  </p>
-                </td>
-              </tr>
+              <p />
 
-              <tr>
-                <td valign="top"> 
-                  <p />Dependency:<br />
+              <if @edit_p@ true>
+                @project_term@:
+                <select name="project_item_id.@tasks.rownum@">
+                  @project_options;noquote@
+                </select>
+                
+              </if>
+              <else>
+                <input type="hidden" name="project_item_id.@tasks.rownum@" value="@project_item_id;noquote@" />
+              </else>
 
-                  <formwidget id="dependency_task_id.@num.rownum@">
-                    <formerror id="dependency_task_id.@num.rownum@">
-                      <font color="red">Error</font>
-                    </formerror>
-                  </formwidget>
+              <p />
 
-                  <formwidget id="dependency_type.@num.rownum@">
-                    <formerror id="dependency_type.@num.rownum@">
-                      <font color="red">Error</font>
-                    </formerror>
-                  </formwidget>
+              Dependency: <br />
+              <select name="dependency.@tasks.rownum@">
+                @tasks.dependency_html;noquote@
+              </select>
 
-                  <p style="margin-top: 4px; margin-bottom: 2px; color: #666666; font-family: tahoma,verdana,arial,helvetica,sans-serif; font-size: 75%;">
-                    <img src="/shared/images/info.gif" width="12" height="9" alt="[i]" title="Help text" border="0">
-                      You may enter a @task_term_lower@ that needs to
-                      be completed before this @task_term_lower@
-                  </p>
+              <p />
 
-                </td>
-              </tr>
+              <if @edit_p@ true>
+                Status:
+                <input type="text" name="percent_complete.@tasks.rownum@" value="@tasks.percent_complete@" size="4"/>
+                %<br />
+                <span style="margin-top: 4px; margin-bottom: 2px; color:
+                  #666666; font-family:
+                  tahoma,verdana,arial,helvetica,sans-serif; font-size:
+                  75%;">
+                  <img src="/shared/images/info.gif" width="12"
+                    height="9" alt="[i]" title="Help text" border="0">
+                    Enter 100% to close the @task_term_lower@, or less to open it.
+                </span>
+              </if>
+              <elseif @using_process_p@ true>
+                Status: 
+                <select name="percent_complete.@tasks.rownum@">
+                  <option value="0">Open</option>
+                  <option value="100">Closed</option>
+                </select>
+              </elseif>
+              <else>
+                <input type="hidden" name="percent_complete.@tasks.rownum@" value="0" />
+              </else>
+              
 
-              <tr>
-                <td valign="top"> 
-                  <p />Project:<br />
-                  <formwidget id="project_item_ids.@num.rownum@">
-                    <formerror id="project_item_ids.@num.rownum@">
-                    <br />
-                    <font color="red">Error</font>
-                    </formerror>
-                  </formwidget>
-                </td>
-              </tr>
-            </table>
+              <p />
 
-            <formwidget id="task_item_id.@num.rownum@">
-              <formerror id="task_item_id.@num.rownum@">
-                  <font color="red">Error</font>
-              </formerror>
-            </formwidget>
+              <if @edit_p@ true>
+                <p />
+                Log entry:
+                <table border="0" class="list">
+                  <tr class="form-element">
+                    <td class="form-label">Quantity:</td>
+                    <td class="form-widget">
+                      <input type="text" name="hours.@tasks.rownum@"
+                        size="4" />
+                      @tasks.logger_variable_html;noquote@
+                    </td>
+                  </tr>
 
-            </td>
-          </tr>
+                  <tr class="form-element">
+                    <td class="form-label">Description:</td>
+                    <td class="form-widget">
+                      <input type="text"
+                        name="log.@tasks.rownum@" size="30" />
+                    </td>
+                  </tr>
+                  
+                  <tr class="form-element">
+                    <td>
+                      <td class="form-widget">
+                        <p style="margin-top: 4px; margin-bottom: 2px;
+                    color: #666666; font-family:
+                    tahoma,verdana,arial,helvetica,sans-serif;
+                    font-size: 75%;">
+                          <img src="/shared/images/info.gif"
+                    width="12" height="9" alt="[i]" title="Help text"
+                    border="0">
+                            You can optionally log time worked here.
+                        </p>
+                      </td>
+                  </tr>
+                </table>
 
+              </if>
+
+          </td>
+          
+        </tr>
+          
+          <if @tasks.rownum@ odd>
+            <tr bgcolor="lavender">
+          </if>
+          <else>
+            <tr bgcolor="#ddffdd">
+          </else>
+          
+          <td colspan="3">@tasks.assignee_html;noquote@</td>
+
+        </tr>
+
+          <if @tasks.rownum@ odd>
+            <tr bgcolor="#e6e6fa">
+              <td align="left" valign="bottom" width="10">
+                <img src="resources/bl-e6e6fa.jpg" />
+              </td>
+              
+              <td colspan="2">&nbsp;</td>
+              
+              <td align="right" valign="bottom" width="10">
+                <img src="resources/br-e6e6fa.jpg" />
+              </td>
+          </if>
+          <else>
+            <tr bgcolor="#ddffdd">
+              <td align="left" valign="bottom" width="10">
+                <img src="resources/bl-ddffdd.jpg" />
+              </td>
+              
+              <td colspan="2">&nbsp;</td>
+              
+              <td align="right" valign="bottom" width="10">
+                <img src="resources/br-ddffdd.jpg" />
+              </td>
+          </else>
+
+          <tr bgcolor="#ffffff">
+            <td colspan="4">&nbsp;</td>
+          </tr>
+          
         </multiple>
 
-    <tr><td colspan="99" align="center">
-        <formwidget id="formbutton:ok" />
-      </td></tr>
-    
-  </formtemplate>
-  </table>
+        <input type="hidden" name="process_id" value="@process_id;noquote@" />
+        <tr>
+          <td colspan="5" align="center"><input type="submit" name="formbutton:ok" value = "       OK       "></td>
+        </tr>
+      </form>
+    </table>
   </center>
-  
+
+    <table border="0" cellpadding="5" cellspacing="0" class="list">
Index: openacs-4/contrib/packages/project-manager/www/task-add-edit.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/task-add-edit.tcl,v
diff -u -r1.27.2.13 -r1.27.2.14
--- openacs-4/contrib/packages/project-manager/www/task-add-edit.tcl	24 Sep 2004 19:22:03 -0000	1.27.2.13
+++ openacs-4/contrib/packages/project-manager/www/task-add-edit.tcl	26 Oct 2004 01:21:11 -0000	1.27.2.14
@@ -2,1170 +2,333 @@
 
     Add/edit form for tasks
 
-    <p />
+    Needs to handle the following cases:
+    <ul>
+    <li> Adding a new task or tasks</li>
+    <li> Editing a task or tasks</li>
+    <li> Using a process to add new tasks</li>
+    </ul>
 
-    I plan to eventually get rid of the task-select-project page, because
-    the ability to choose the project is now within this page. However,
-    I'm waiting to do that until after my company updates our projects 
-    with the customer in each field.
-
-    <p />
-
-    I'd also like to move the assignments to this page, in the same manner
-    as the processes.
-
     @author jader@bread.com
     @creation-date 2003-07-28
     @cvs-id $Id$
 
     @return context Context bar
     @return title Page title.
-    @return num A multirow datasource to iterate over the ad_form elements
-    @return edit_p if t then we are editing. Used to show different portions of the form
 
-    @param process_task_ids Specifies what process task ids were used if a process were used. We pass this on to future pages to determine things such as assignments
-    @param project_item_id Specifies which project each task is associated with. If this is a new task, this specifies the project that it will be assigned under.
-    @param my_key if set, then ad_form knows that this is an edit.
-    @param process_task_ids
-    @param project_item_id This is optionally passed in to this page to 
-    indictate the project that the tasks should be associated with. 
-    @param project_item_ids Used internally to keep track of the projects
-    associated with each task
-    @param number The number of Tasks to create
-    @param task_revision_id Specifies the revision this task represents (each revision of a task has a separate id)
-    @param task_id Specifies the item for the task (every revision of a task shares the same task_id) Also used as the key for the ad_form. For this reason, when editing, we have to pass in task_iid instead
-    @param task_title
-    @param process_id The process we're using to create this task
-    @param description
-    @param old_description
-    @param old_description_mime_type
-    @param comment
-    @param name
-    @param end_date
-    @param percent_complete
-    @param actual_hours_worked
-    @param new_hours_logged
-    @param new_description_logged
-    @param estimated_hours_work
-    @param estimated_hours_work_min
-    @param estimated_hours_work_max
-    @param dependency_type
-    @param dependency_task_id
-    @param skip_task_p Whether or not to skip this particular task. Used by processes, if t, then the task is not created
-    @param using_process_p Lets the UI know if there is a process being used (t if so)
-    @param send_email_p Send out emails to assignees of new task(s)
+    @param task_item_id list of tasks to edit, if there are any
+    @project_item_id The project these tasks are assigned to.
+    @param process_id The id for the process used, if any
+    @param process_task_id The process task IDs if there is a process used.
+    @param return_url 
+    @param new_tasks if we are creating new tasks, how many to create
 } {
-
-    my_key:integer,optional
-    process_task_ids:array,optional
-    {project_item_id:integer ""}
-    project_item_ids:array,optional
-    {number:integer "1"}
-    task_revision_id:integer,optional
-    {task_id:multiple ""}
-    task_item_id:array,optional
-    task_title:array,optional
+    {task_item_id:integer,multiple ""}
+    {project_item_id:integer,notnull}
     {process_id:integer ""}
-    description:html,array,optional
-    {old_description ""}
-    {old_description_mime_type ""}
-    comment:html,array,optional
-    name:array,optional
-    end_date:array,optional
-    percent_complete:array,optional
-    actual_hours_worked:array,optional
-    new_hours_logged:array,optional
-    new_description_logged:array,optional
-    estimated_hours_work:array,optional
-    estimated_hours_work_min:array,optional
-    estimated_hours_work_max:array,optional
-    dependency_type:array,optional
-    dependency_task_id:array,optional
-    skip_task_p:array,optional
-    {using_process_p "f"}
+    {process_task_id:integer,multiple ""}
     {return_url ""}
-    {send_mail_p "t"}
+    {new_tasks "1"}
 } -properties {
 
-    context:onevalue
-    title:onevalue
-    num:multirow
-    use_uncertain_completion_times_p:onevalue
-    edit_p:onevalue
-    using_process_p:onevalue
-
 } -validate {
-    number_is_in_range -requires {number:integer} {
-        # todo: make 100 a parameter
-        if {$number < 1 || $number > 100} {
-            ad_complain
-        }
-    }
-    percent_is_in_range {
-        for {set i 1} {$i <= $number} {incr i} {
-            if {[exists_and_not_null percent_complete($i)]} {
-                if {$percent_complete($i) < 0 || $percent_complete($i) > 100} {
-                    ad_complain
-                }
-            }
-        }
-    }
 } -errors {
-    project_exists {You must enter a project}
-    number_is_in_range {Number must be between 1 and 100}
-    percent_is_in_range {Percent completed must be between 0 and 100}
 }
 
-# --------------------------------------------------------------- #
+# --------------------------------------------------------------- 
+# Set up
+# --------------------------------------------------------------- 
+set user_id       [ad_maybe_redirect_for_registration]
+set package_id    [ad_conn package_id]
 
-set user_id    [ad_maybe_redirect_for_registration]
-set package_id [ad_conn package_id]
-
-
-# --------------------------------------------------------------- #
+# --------------------------------------------------------------- 
 # terminology
-# --------------------------------------------------------------- #
+# --------------------------------------------------------------- 
 set project_term    [parameter::get -parameter "ProjectName" -default "Project"]
 set task_term       [parameter::get -parameter "TaskName" -default "Task"]
 set task_term_lower [parameter::get -parameter "taskname" -default "task"]
 set use_uncertain_completion_times_p [parameter::get -parameter "UseUncertainCompletionTimesP" -default "1"]
-# --------------------------------------------------------------- #
 
-# -----------------------------------------
-# if we have a task_id, then we are editing
-# -----------------------------------------
+# -------------------------
+# Set up flags to use later
+# -------------------------
 
-if {![exists_and_not_null my_key] && ![empty_string_p $task_id]} {
-    set my_key 1
-}
-
-# --------------------------------------------------------------------
-# If we are using a process, then we need to get the information on
-# the process now. This is necessary because we need to do things like
-# set the number of tasks we're going to be entering. We save this for
-# later, so we can get the values
-# --------------------------------------------------------------------
-
-set process_tasks [list]
-
-if {[exists_and_not_null process_id]} {
-
-    # we need the ADP page to know we're using processes, so we can
-    # modify the interface a little bit
-    set using_process_p t
-
-    # get all the process task info
-    pm::task::process_task_info \
-        -process_id                      $process_id \
-        -one_line_array                  one_line_v \
-        -description_array               description_v \
-        -estimated_hours_work_array      estimated_hours_work_v \
-        -estimated_hours_work_min_array  estimated_hours_work_min_v \
-        -estimated_hours_work_max_array  estimated_hours_work_max_v \
-        -dependency_array                dependency_v \
-        -tasks_list                      process_tasks
-
-    set number [llength $process_tasks]
-}
-
-
-
-# --------------------------------------------------------------- #
-
-
-
-# we use this to get around the lack of a hidden multiple in ad_form
-set task_id [string map {"-" " "} $task_id]
-
-# we sort this because we want to keep the ordering
-# consistent. Otherwise, we can run into problems when editing
-# multiple tasks. Their values can get crossed, causing bad things
-# to happen
-set task_id [lsort -integer $task_id]
-
-# --------------------------------------------------------------- #
-# Create a multirow: num
-# --------------------------------------------------------------- #
-
-if {![ad_form_new_p -key task_id]} {
-    # -----------------------------------------------------
-    # Editing!
-    # -----------------------------------------------------
-    # create a multirow we can use to iterate
-    # we also set the number variable for future use
-    # -----------------------------------------------------
-    template::multirow create num number task_id
-
-    set i 1
-    set number 0
-    foreach tid $task_id {
-        template::multirow append num $i [lindex $task_id [expr $i-1]]
-        incr i
-        incr number
-    }
-
+if {[exists_and_not_null task_item_id]} {
     set edit_p t
-
 } else {
-    # create a multirow we can use to iterate
-    template::multirow create num number task_id
-    
-    for {set i 1} {$i <= $number} {incr i} {
-        template::multirow append num $i [lindex $task_id [expr $i-1]]
-    }
-
     set edit_p f
 }
 
-
-# ------------------------------------------------------- #
-# The evilest hack of all time. 
-# -------------------------------------------------------
-# This is a workaround the fact that using multiple dates
-# with ad_form is extremely difficult. Dates are formatted
-# like arrays, with values like end_date.day, end_date.month,
-# end_date.year, and end_date.format . The problem is we want
-# to have multiple end_dates. Using the multiple method, we
-# then get entries like this: end_date.1.year, end_date.2.year,
-# end_date.2.day, etc..
-# 
-# What this loop does is go through the array, and rename the 
-# values into other variables. We then feed these variables into
-# the SQL function that creates the new tasks. This works. I'm 
-# sure there must be a better way to do it, but my posting on 
-# the forums didn't result in any other suggestions.
-# ------------------------------------------------------- #
-
-if {[info exists end_date]} {
-
-    set searchToken [array startsearch end_date]
-
-    while {[array anymore end_date $searchToken]} {
-
-        set keyname [array nextelement end_date $searchToken]
-        set keyvalu $end_date($keyname)
-
-        # ns_log Notice "keyname: $keyname keyvalu: $keyvalu"
-
-        # element_num is 1...n, element_type is year, format, day, month
-        regexp {(.*)\.(.*)} $keyname match element_num element_type
-
-        # ns_log Notice "element_num: $element_num element_type: $element_type"
-
-        set end_date_[set element_type]($element_num) $keyvalu
-
-        # ns_log notice "set end_date_[set element_type] to $keyvalu"
-    }
-
-    for {set i 1} {$i <= $number} {incr i} {
-        # set up date variable names
-        set end_date_$i [list $end_date_year($i) $end_date_month($i) $end_date_day($i) {} {} {}]
-        # ns_log Notice "end_date_$i: [set end_date_$i]"
-    }
-}
-
-# ------------------------------------------------------- #
-# The second evilest hack of all time. 
-# -------------------------------------------------------
-# This is a workaround the fact that using multiple richtext items
-# with ad_form is extremely difficult. The description field
-# will come in like an array, with values like 
-#        description.1 = 1234 <b>bold</b>
-#        description.1.format = text/enhanced
-#        description.1.spellcheck = :nospell:
-# The problem is we want
-# to have multiple descriptions. 
-# 
-# What this loop does is go through the array, and rename the 
-# values into other variables. We then feed these variables into
-# the SQL function that creates the new tasks. This works. I'm 
-# sure there must be a better way to do it.
-# ------------------------------------------------------- #
-
-if {[info exists description] && ![exists_and_not_null process_id]} {
-
-    set searchToken [array startsearch description]
-
-    while {[array anymore description $searchToken]} {
-
-        # these next two lines are important
-        set element_num ""
-        set element_type ""
-
-        set keyname [array nextelement description $searchToken]
-        set keyvalu $description($keyname)
-
-        # ns_log Notice "keyname: $keyname keyvalu: $keyvalu"
-        
-        # element_num is 1...n, element_type is format, spellcheck
-        regexp {(.*)\.(.*)} $keyname match element_num element_type
-
-        # ns_log Notice "element_num: $element_num element_type: $element_type"
-
-        set description_[set element_type]($element_num) $keyvalu
-
-        # ns_log notice "set description_[set element_type] to $keyvalu"
-
-    }
-
-}
-
-# ------------------------------------------------------- #
-# The third evilest hack of all time. 
-# -------------------------------------------------------
-# This is a workaround the fact that using multiple richtext items
-# with ad_form is extremely difficult. The comment field
-# will come in like an array (if the task is edited), 
-# with values like 
-#        comment.1 = 1234 <b>bold</b>
-#        comment.1.format = text/enhanced
-#        comment.1.spellcheck = :nospell:
-# The problem is we want
-# to have multiple comments.
-# 
-# What this loop does is go through the array, and rename the 
-# values into other variables. We then feed these variables into
-# the SQL function that creates the new tasks. This works. I'm 
-# sure there must be a better way to do it.
-# ------------------------------------------------------- #
-if {[string is true $edit_p] && [info exists comment]} {
-
-    set searchToken [array startsearch comment]
-
-    while {[array anymore comment $searchToken]} {
-
-        # these next two lines are important
-        set element_num ""
-        set element_type ""
-
-        set keyname [array nextelement comment $searchToken]
-        set keyvalu $comment($keyname)
-
-        # ns_log Notice "keyname: $keyname keyvalu: $keyvalu"
-        
-        # element_num is 1...n, element_type is format, spellcheck
-        regexp {(.*)\.(.*)} $keyname match element_num element_type
-
-        # if element_num is null, then this is actually the value for
-        # the comment
-        if {[empty_string_p $element_num]} {
-            set comment_[set keyname] $keyvalu
-        }
-
-        # ns_log Notice "element_num: $element_num element_type: $element_type"
-
-        set comment_[set element_type]($element_num) $keyvalu
-
-        # ns_log notice "set comment_[set element_type] to $keyvalu"
-
-    }
-
+if {[exists_and_not_null process_id]} {
+    set using_process_p t
 } else {
-
-    for {set i 1} {$i <= $number} {incr i} {
-        # we explicitly set all the values to plaintext and empty for
-        # new tasks
-        set comment_format($i) "text/plain"
-        set comment_$i ""
-    }
+    set using_process_p f
 }
 
-for {set i 1} {$i <= $number} {incr i} {
-
-    set format $comment_format($i)
-    set richtext_list [list [set comment_$i] $format]
-    lappend comment_list [template::util::richtext::get_property html_value $richtext_list]
-    lappend comment_formats $format
-}
-
-
-# ns_log Notice "comment_list $comment_list"
-
-
-
-
-# --------------------------------------------------------------- #
+# --------------------------------------------------------------- 
 # permissions and title setup, etc
-# we should update the permissions to not just use package_id, so
-# users can have permissions on particular tasks but not others.
-# Right now it's an open system. If you have write permissions on 
-# the package_id, you have permissions to write anywhere
-# --------------------------------------------------------------- #
+# --------------------------------------------------------------- 
 
-if {[exists_and_not_null task_id]} {
+if {[string is true $edit_p]} { 
 
     set title "Edit a $task_term_lower"
     set context [list [list $return_url "Go back"] "Edit $task_term"]
+
     permission::require_permission \
         -party_id $user_id \
         -object_id $package_id \
         -privilege write
 
 } else {
 
-    set title "Add a $task_term_lower"
+    set title "Add $task_term_lower"
     set context [list [list "one?item_id=$project_item_id" "One $project_term"] "New $task_term"]
+
     permission::require_permission \
         -party_id $user_id \
         -object_id $package_id \
         -privilege create
 
 }
 
-# we use this to pass through the task_ids
-set task_id_pass [string map {" " "-"} $task_id]
+# -------------------------------------------------------------
+# Start creating the multirow we'll use to create the interface
+# -------------------------------------------------------------
 
-# set up options for editing projects
-set project_options [pm::project::get_list_of_open]
+template::multirow create \
+    tasks \
+    task_item_id \
+    process_task_id \
+    one_line \
+    description \
+    description_mime_type \
+    work \
+    work_min \
+    work_max \
+    percent_complete \
+    end_date_html \
+    depends \
+    assignee_html \
+    dependency_html \
+    logger_variable_html 
 
 
-# --------------------------------------------------------------- #
-# Begin our form
-# --------------------------------------------------------------- #
+if {[string is true $edit_p]} {
 
-ad_form -name add_edit -form {
-    my_key:key(acs_object_id_seq)
+    # -------
+    # EDITING
+    # -------
 
-    {task_id:text(hidden)
-	{value $task_id_pass}
-    }
+    set project_options [pm::project::select_list_of_open \
+                             -selected $project_item_id]
 
-    {send_email_p:text(select)
-        {options {{"Yes" t} {"No" f}}}
-        {value t}
-    }
+    # find out the default logger variable for this project
+    set logger_project [pm::project::get_logger_project \
+                            -project_item_id $project_item_id]
+    set logger_variable_id [logger::project::get_primary_variable \
+                                -project_id $logger_project]
 
-    {edit_p:text(hidden)
-	{value $edit_p}
-    }
+    # get old values
+    pm::task::get \
+        -tasks_item_id                  $task_item_id \
+        -one_line_array                  task_one_line \
+        -description_array               task_description \
+        -description_mime_type_array     task_description_mime_type \
+        -estimated_hours_work_array      task_estimated_hours_work \
+        -estimated_hours_work_min_array  task_estimated_hours_work_min \
+        -estimated_hours_work_max_array  task_estimated_hours_work_max \
+        -dependency_array                task_dependency \
+        -percent_complete_array          task_percent_complete \
+        -end_date_day_array              task_end_date_day \
+        -end_date_month_array            task_end_date_month \
+        -end_date_year_array             task_end_date_year \
+        -project_item_id_array           task_project_item_id
 
-    {return_url:text(hidden)
-	{value $return_url}
-    }
+    set number 1
+    set total_number [llength $task_item_id]
 
-    {number:text(hidden)
-	{value $number}
-    }
-
-}
-
-
-# ----------------------------------
-# we set the values for edited tasks
-# ----------------------------------
-
-
-# we set the initial value to 0, because we need at least one value to
-# pass to SQL. Otherwise, when we do the IN (123, 234, 455), there
-# won't be any values inside, and it will fail. 
-set my_dependencies         [list 0]
-
-
-if {![ad_form_new_p -key task_id]} {
-
-    # this form is being edited, not new
-
-    # note we are indexing values from 1...
-    set i 1
-    set old_description [list]
-    set old_description_mime_type [list]
-
-    db_foreach get_old_tasks { *SQL* } {
-
-        set task_title_arr($i)          $my_task_title
-        set description_arr($i)         $my_description
-        lappend old_description         $my_description
-        lappend old_description_mime_type $my_mime_type
-        set mime_type_arr($i)           $my_mime_type
-        set template_arr($i)            [list $my_description $my_mime_type]
-        set estimated_hours_arr($i)     $my_estimated_work
-        set estimated_hours_min_arr($i) $my_estimated_work_min
-        set estimated_hours_max_arr($i) $my_estimated_work_max
-
-        # We need the date to be in the right format in order to pass
-        # through the validate filter.
-        set end_date_arr($i) [pm::util::reformat_date $my_end_date]
-
-        set percent_complete_arr($i)    $my_percent_complete
-        set actual_hours_worked_arr($i) $my_actual_hours_worked
-        set project_item_id_arr($i)     $my_project_item_id
-        set task_item_id_arr($i)        [lindex $task_id [expr $i - 1]]
-        set dependency_arr($i)          $my_dependency
-        # we keep track of this to make sure that depedencies that
-        # are from closed tasks are still shown on the list of
-        # possible dependencies to select from
-        if {[exists_and_not_null my_dependency]} {
-            lappend my_dependencies         $my_dependency
+    set deps [list]
+    foreach task $task_item_id {
+        if {[lsearch $deps $task_dependency($task)] == -1 && \
+                ![empty_string_p $task_dependency($task)]} {
+            lappend deps $task_dependency($task)
         }
-
-        # we are not using a process
-        set process_task_id_arr($i)     ""
-
-        # -----------------------------------------------------
-        # if we are editing the tasks, then we want to show the 
-        # percent_complete, and give the users the chance to 
-        # log hours as well.
-        # -----------------------------------------------------
-
-        # we also want to pass throught he old description so that
-        # we can do a word diff on the next page, so people can see
-        # what has changed
-
-
-        ad_form -extend \
-            -name add_edit \
-            -form \
-            [list [list percent_complete.$i:text \
-                       {label "Percent complete"} \
-                       {html {size 4}} \
-                       {value {$percent_complete_arr($i)}} \
-                       ] \
-                 [list new_hours_logged.$i:text,optional \
-                      {label "Hours logged"} \
-                      {html {size 4}} \
-                     ] \
-                 [list new_description_logged.$i:text,optional \
-                      {label "Description"} \
-                      {html {size 30}} \
-                     ] \
-                ]
-
-        # --------------------------------------
-        # we don't skip tasks when we're editing
-        # --------------------------------------
-        ad_form -extend \
-            -name add_edit \
-            -form \
-            [list [list \
-                       skip_task_p.$i:text(hidden) \
-                       {value {f}} \
-                      ] \
-                ]
-
-        # ------------------------------------------------------
-        # we allow people to enter general comments when editing
-        # ------------------------------------------------------
-        ad_form -extend \
-            -name add_edit \
-            -form \
-            [list [list \
-                       comment.$i:richtext,optional,nospell \
-                       {label "Comment"} \
-                       {html {rows 7 cols 40}} \
-                      ] \
-                ]
-
-
-        incr i
     }
 
-    # we want to add in the old_description values as well
-    ad_form -extend \
-        -name add_edit \
-        -form \
-        [list [list \
-                   comment.$i:text(hidden) \
-                   {value {$old_description}} \
-                  ] \
-            ]
-    
+    foreach task $task_item_id {
 
-} else {
-    
-    # ----------------------------------------------------------
-    # if we are using a process, then we want to fill in all the
-    # default values for the user.
-    # ----------------------------------------------------------
+        set end_date_html [pm::task::date_html \
+                               -selected_day $task_end_date_day($task) \
+                               -selected_month $task_end_date_month($task) \
+                               -selected_year $task_end_date_year($task)] 
 
-    # get the values
+        set assignee_html [pm::task::assignee_html \
+                               -task_item_id $task \
+                               -number $number]
 
-    for {set i 1} {$i <= $number} {incr i} {
-        set task_title_arr($i)          ""
-        set description_arr($i)         ""
-        set mime_type_arr($i)           "text/plain"
-        set template_arr($i)            [list "" "text/plain"]
-        set estimated_hours_arr($i)     "0"
-        set estimated_hours_min_arr($i) "0"
-        set estimated_hours_max_arr($i) "0"
-        set parent_arr($i)              ""
-        set end_date_arr($i)            ""
-        set percent_complete_arr($i)    0
-        set actual_hours_worked_arr($i) 0
-        set project_item_id_arr($i)     $project_item_id
-        set task_item_id_arr($i)        ""
-        set process_task_id_arr($i)     ""
-        set dependency_arr($i)          ""
+        set dependency_options_full [pm::task::options_list_html \
+                                         -edit_p $edit_p \
+                                         -task_item_id $task \
+                                         -project_item_id $project_item_id \
+                                         -dependency_task_id $task_dependency($task) \
+                                         -dependency_task_ids "$deps" \
+                                         -number $total_number \
+                                         -current_number $number]
 
-        if {[exists_and_not_null process_id]} {
+        set variable_widget [logger::ui::variable_select_widget \
+                                 -project_id $logger_project \
+                                 -current_variable_id $logger_variable_id \
+                                 -select_name logger_variable.$number]
 
-            set ptask_id [lindex $process_tasks [expr $i-1]]
-
-            set task_title_arr($i)          $one_line_v($ptask_id)
-            set description_arr($i)         $description_v($ptask_id)
-
-            set mime_type_arr($i)           "text/plain"
-            set template_arr($i)            [list "$description_v($ptask_id)" "text/plain"]
-
-            set estimated_hours_arr($i)     $estimated_hours_work_v($ptask_id)
-            set estimated_hours_min_arr($i) $estimated_hours_work_min_v($ptask_id)
-            set estimated_hours_max_arr($i) $estimated_hours_work_max_v($ptask_id)
-
-
-            # keeps track of what process_task_id this was based on
-            # so we can later get info on what assignments the process
-            # task had, and what dependencies as well
-            set process_task_id_arr($i)     $ptask_id
-
-
-            # We also want to make it optional for the user whether or
-            # not they use any given task when they are using a
-            # process. Often, they will want to skips some of the
-            # tasks, and this gives them that option
-
-            ad_form -extend \
-                -name add_edit \
-                -form \
-                [list [list \
-                     skip_task_p.$i:text(select) \
-                     {label \"Skip this task?\"} \
-                     {options {{No f} {Yes t}}} \
-                     {value {f}} \
-                     {help_text {If you skip this task, it will not be created}} \
-                     ] \
-                     ]
-
+        template::multirow append tasks \
+            $task \
+            "" \
+            $task_one_line($task) \
+            $task_description($task) \
+            $task_description_mime_type($task) \
+            $task_estimated_hours_work($task) \
+            $task_estimated_hours_work_min($task) \
+            $task_estimated_hours_work_max($task) \
+            $task_percent_complete($task) \
+            $end_date_html \
+            $task_dependency($task) \
+            $assignee_html \
+            $dependency_options_full \
+            $variable_widget
             
-        } else {
 
-            # we never skip when there is no process being used
 
-            ad_form -extend \
-                -name add_edit \
-                -form \
-                [list [list \
-                           skip_task_p.$i:text(hidden) \
-                           {value {f}} \
-                          ] \
-                    ]
-            
-        }
-
-        # -----------------------------------------------------
-        # for new tasks, we hide the percent_complete
-        # -----------------------------------------------------
-
-        ad_form -extend \
-            -name add_edit \
-            -form \
-            [list [list percent_complete.$i:text(hidden) \
-                       {label "Percent complete \#$i"} \
-                       {html {size 4}} \
-                       {value {$percent_complete_arr($i)}} \
-                       ] \
-                ]
-
-        # -----------------------------------------------------------
-        # we only allow people to enter general comments when editing
-        # we also want to pass throught he old description so that
-        # we can do a word diff on the next page, so people can see
-        # what has changed
-        # -----------------------------------------------------------
-        ad_form -extend \
-            -name add_edit \
-            -form \
-            [list [list \
-                       comment.$i:text(hidden) \
-                       {value ""} \
-                      ] \
-                ]
-
-
+        incr number
     }
 
-    # we want to add in the old_description values as well
-    ad_form -extend \
-        -name add_edit \
-        -form \
-        [list [list \
-                   comment.$i:text(hidden) \
-                   {value {}} \
-                  ] \
-            ]
 
+} elseif {[string is true $using_process_p]} {
 
-}
+    # -------------
+    # USING PROCESS
+    # -------------
 
-# get dependency types
+    set process_name [pm::process::process_name \
+                          -process_id $process_id]
 
-#set options [list]
-#db_foreach get_dependency_types { } -column_array dependencies {
-#    lappend options "{\"$dependencies(description)\" $dependencies(short_name)}"
-#}
+    # get all the process task info
+    pm::process::get \
+        -process_id                      $process_id \
+        -process_task_id                 $process_task_id \
+        -one_line_array                  process_one_line \
+        -description_array               process_description \
+        -description_mime_type_array     process_description_mime_type \
+        -estimated_hours_work_array      process_estimated_hours_work \
+        -estimated_hours_work_min_array  process_estimated_hours_work_min \
+        -estimated_hours_work_max_array  process_estimated_hours_work_max \
+        -dependency_array                process_dependency \
+        -tasks_list                      process_tasks
 
-
-# ----------------------------------------------
-# extend the form with all the items that repeat
-# ----------------------------------------------
-
-for {set i 1} {$i <= $number} {incr i} {
-
-    # ----------------------------------------------------------------
-    # reading this code, you may wonder why we put the .$i at the end.
-    # DaveB showed me this trick. It lets you make a multiple out of
-    # the items by stuffing them in an array. Long live DaveB.
-    # ----------------------------------------------------------------
-
-    # set up the tasks that can be viewed. Take out the current task. 
-
-    # ---------------------------------------------------
-    # set up the tasks that this task can be dependent on
-    # For new tasks, that includes the other new tasks
-    # We have to check later that the user doesn't enter
-    # any loops!
-    # ---------------------------------------------------
-    
-    if {[string is false $edit_p]} {
-
-        # if we have a process, we need to bring in the dependencies
-        # from the process.
-        # 
-        # We have the following:
-        # process_tasks: a list of all the process task ids, which act
-        #   as keys for the other information. 
-        # dependency_v(process_task_id) which process these tasks rely on.
-        #
-
-        if {[exists_and_not_null process_id]} {
-
-            # what is the task that the process says this task
-            # depends on?            
-            set process_index [expr $i - 1]
-            set this_process  [lindex $process_tasks $process_index]
-
-            if {[exists_and_not_null dependency_v($this_process)]} {
-                set process_depend $dependency_v($this_process)
-            } else {
-                set process_depend "XXX"
-            }
-
-            # lsearch gives us the index value inside the
-            # process_tasks list. That corresponds to the task minus
-            # one. So we add one to this index, as long as the value
-            # is not -1 (which indicates that process_depend is not in
-            # the process_tasks list)
-            # can have more than one match, so we use -all
-
-            set which_dep_task_list [lsearch -all $process_tasks $process_depend]
-
-            foreach which_dep $which_dep_task_list {
-
-                # indexes are from 0, we want from 1
-                incr which_dep
-
-                # num1 is a convention, used to indicate dependencies
-                # on tasks that haven't been created yet.
-                set dependency_arr($i) "num$which_dep"
-            }
-
+    # we now have an array (process_dependency) that contains all the
+    # templates for where the dependencies should lie. However, the
+    # user may not have selected all the process tasks to be
+    # created. We also need to keep track of which new task
+    # corresponds with which process task, so we can make sure the
+    # default process
+    set number 1
+    foreach pt $process_tasks {
+        set task_num($pt) $number
+        incr number
+    }
+    foreach pt $process_tasks {
+        if {[exists_and_not_null process_dependency($pt)]} {
+            # keep track of which task the new task should by default
+            # depend upon
+            set task_parent_num($pt) $task_num($process_dependency($pt))
+        } else {
+            set task_parent_num($pt) ""
         }
-
-
     }
 
+    set new_tasks [llength $process_tasks]
 
-    set dependency_options_full [pm::task::options_list \
-                                     -edit_p $edit_p \
-                                     -task_item_id $task_item_id_arr($i) \
-                                     -project_item_id $project_item_id_arr($i) \
-                                     -dependency_task_ids "$my_dependencies" \
-                                     -number $number \
-                                     -current_number $i]
+    set end_date_html [pm::task::date_html]
 
+    set number 1
+    set total_number [llength $process_tasks]
 
-    # if the current project is closed, we need to append it to the
-    # list of open projects
-    if {![pm::project::open_p -project_item_id "$project_item_id_arr($i)"] && [exists_and_not_null project_item_id_arr($i)]} {
-        set project_options_plus [db_list_of_lists get_closed_project "
-            SELECT 
-            case when o.name is null then p.title || ' -- Closed' else o.name || ' - ' || p.title || ' -- Closed' end as title,
-            p.item_id
-            FROM
-            pm_projectsx p LEFT JOIN
-            organizations o ON p.customer_id = o.organization_id
-            WHERE
-            p.item_id = $project_item_id_arr($i)
-        "]
+    foreach pt $process_tasks {
 
-        set project_options_plus [concat $project_options_plus $project_options]
-    } else {
-        set project_options_plus $project_options
-    }
+        set assignee_html [pm::task::assignee_html \
+                               -number $number \
+                               -process_task_id $pt]
 
-    ad_form -extend \
-        -name add_edit \
-        -form \
-        [list \
-             [list \
-                  task_title.$i:text \
-                  {label "Subject \#$i"} \
-                  {html {size 40}} \
-                  {value {$task_title_arr($i)}}
-             ] \
-             [list project_item_ids.$i:text(select) \
-                  {label "Project"} \
-                  {options $project_options_plus} \
-                  {value {$project_item_id_arr($i)}} \
-                 ] \
-             [list task_item_id.$i:text(hidden) \
-                  {label "Task item id"} \
-                  {value {$task_item_id_arr($i)}} \
-                 ] \
-             [list process_task_ids.$i:text(hidden) \
-                  {label "Process task id"} \
-                  {value {$process_task_id_arr($i)}} \
-                 ] \
-             [list \
-                  description.$i:richtext,optional,nospell \
-                  {label "Description"} \
-                  {html {rows 7 cols 40}} \
-                  {value {$template_arr($i)}} \
-             ] \
-             [list \
-                  end_date.$i:date,to_sql(linear_date),optional \
-                  {label "Deadline"} \
-                  {format "MONTH DD YYYY"} \
-                  {value $end_date_arr($i)} \
-                  {help} \
-                 ] \
-             [list \
-                  dependency_type.$i:text(hidden),optional \
-                  {label \"Dependency type\"} \
-                  {value {finish_before_start}} \
-                  ] \
-             [list \
-                  dependency_task_id.$i:text(select),optional \
-                  {label \"Dependency\"} \
-                  {options {$dependency_options_full}} \
-                  {value {$dependency_arr($i)}} \
-                  {help_text {$task_term the dependency is based on}} \
-                 ] \
-            ]
 
-    if {$use_uncertain_completion_times_p} {
-        ad_form -extend \
-            -name add_edit \
-            -form \
-            [list \
-                 [list \
-                      estimated_hours_work_min.$i:text \
-                      {label "Hours estimate - min"} \
-                      {html {size 5}} \
-                      {value {$estimated_hours_min_arr($i)}} \
-                     ] \
-                 [list \
-                      estimated_hours_work_max.$i:text \
-                      {label "Hours estimate - max"} \
-                      {html {size 5}} \
-                      {value {$estimated_hours_max_arr($i)}} \
-                     ] \
-                 ]
-    } else {
-        ad_form -extend -name add_edit \
-            -form \
-            [list \
-                 [list \
-                      estimated_hours_work.$i:text \
-                      {label "Hours estimate"} \
-                      {html {size 5}} \
-                      {value {$estimated_hours_arr($i)}} \
-                     ] \
-                ]
-    }
-}
+        set dependency_options_full [pm::task::options_list_html \
+                                         -edit_p $edit_p \
+                                         -project_item_id $project_item_id \
+                                         -depends_on_new $task_parent_num($pt) \
+                                         -number $new_tasks \
+                                         -current_number $number]
 
+        # make sure deps are working.
 
+        template::multirow append tasks \
+            "" \
+            $process_task_id \
+            $process_one_line($pt) \
+            $process_description($pt) \
+            $process_description_mime_type($pt) \
+            $process_estimated_hours_work($pt) \
+            $process_estimated_hours_work_min($pt) \
+            $process_estimated_hours_work_max($pt) \
+            "0" \
+            $end_date_html \
+            $process_dependency($pt) \
+            $assignee_html \
+            $dependency_options_full \
+            ""
 
-
-ad_form -extend -name add_edit -select_query_name task_query -on_submit {
-    
-    set user_id [ad_conn user_id]
-    set peeraddr [ad_conn peeraddr]
-
-} -new_data {
-
-    # --------------------------------------------------------------
-    # each task we add in returns a task_revision_id
-    # --------------------------------------------------------------
-
-    set task_id [list]
-
-    for {set i 1} {$i <= $number} {incr i} {
- 
-        if {![exists_and_not_null estimated_hours_work($i)]} {
-            set estimated_hours_work($i) [expr .5 * ($estimated_hours_work_max($i) - $estimated_hours_work_min($i)) + $estimated_hours_work_min($i)]
-        }
-
-        if {![exists_and_not_null estimated_hours_work_min($i)]} {
-            set estimated_hours_work_min($i) $estimated_hours_work($i)
-        }
-
-        if {![exists_and_not_null estimated_hours_work_max($i)]} {
-            set estimated_hours_work_max($i) $estimated_hours_work($i)
-        }
-
-
-        if {![exists_and_not_null end_date_$i]} {
-            set end_date_$i "{} {} {} {} {} {}"
-        }
-
-        # set up variables, pulling from arrays
-        set p_project_item_id $project_item_ids($i)
-
-        set p_task_title   $task_title($i)
-
-        set p_description  $description($i)
-        set p_mime_type    $description_format($i)
-
-        set p_work         $estimated_hours_work($i)
-        set p_work_min     $estimated_hours_work_min($i)
-        set p_work_max     $estimated_hours_work_max($i)
-        set p_end_date     [set end_date_$i]
-        set p_dep_type     $dependency_type($i)
-        set p_parent_task_id $dependency_task_id($i)
-        set p_skip_p       $skip_task_p($i)
-
-        # we don't do anything for the comments field, because they
-        # are not added in for new tasks.
-
-        # add in the new task
-
-        if {[string equal $p_skip_p "f"]} {
-            set this_revision_id [pm::task::new \
-                                      -project_id $p_project_item_id \
-                                      -title $p_task_title \
-                                      -description $p_description \
-                                      -mime_type $p_mime_type \
-                                      -end_date $p_end_date \
-                                      -percent_complete "0" \
-                                      -estimated_hours_work $p_work \
-                                      -estimated_hours_work_min $p_work_min \
-                                      -estimated_hours_work_max $p_work_max \
-                                      -creation_user $user_id \
-                                      -creation_ip $peeraddr \
-                                      -package_id $package_id]
-            
-            set this_task_id [db_string get_task_item_id {}] 
-            
-            set dependent_task_id($i) $this_task_id
-
-            if {[exists_and_not_null p_parent_task_id]} {
-                
-                # if the p_parent_task_id contains num at the beginning, then
-                # the task is supposed to depend on other tasks that 
-                # are currently being created. We have to wait until
-                # the tasks have been created
-                if {[regexp {num.*} $p_parent_task_id]} {
-                    regexp {num(.*)} $p_parent_task_id match d_parent
-                    
-                    # dep_parent tracks who is parent of what
-                    set dep_parent($i) $d_parent
-                    set dep_type($i) $p_dep_type
-                    lappend parent_new_task $i
-                    # we wait until after all the tasks have been created to create these
-                    # dependencies
-                } else {
-                    
-                    # add in the new dependency
-                    pm::task::dependency_add \
-                        -task_item_id $this_task_id \
-                        -parent_id $p_parent_task_id \
-                        -dependency_type $p_dep_type \
-                        -project_item_id $p_project_item_id
-                }
-            }
-
-            lappend process_task_id $process_task_ids($i)
-            lappend revisions $this_revision_id
-            lappend task_id $this_task_id
-        }
+        incr number
     }
 
-    if {[exists_and_not_null parent_new_task]} {
-        # there are tasks that depend on newly created tasks.
-        # 1. check for loops
-        # 2. if no loops, create dependencies
+} else {
 
-        foreach dep_task $parent_new_task {
+    # ---
+    # NEW
+    # ---
 
-            set this_task_id $dependent_task_id($dep_task)
-            if {[info exists dependent_task_id($dep_parent($dep_task))]} {
-                set parent_task_id $dependent_task_id($dep_parent($dep_task))
-                set p_dep_type $dep_type($dep_task)
+    set end_date_html [pm::task::date_html]
 
-                pm::task::dependency_add \
-                    -task_item_id $this_task_id \
-                    -parent_id $parent_task_id \
-                    -dependency_type $p_dep_type \
-                    -project_item_id $p_project_item_id
-            }
+    for {set i 1} {$i <= $new_tasks} {incr i} {
 
-        }
+        set assignee_html [pm::task::assignee_html \
+                              -number $i]
 
-    }
+        set dependency_options_full [pm::task::options_list_html \
+                                         -edit_p $edit_p \
+                                         -project_item_id $project_item_id \
+                                         -number $new_tasks \
+                                         -current_number $i]
 
-} -edit_data {
+        # sorry this isn't internationalized. The choice is to cludge
+        # around dates, or to cludge around ad_forms poor support for
+        # multiple dates. 
 
-    set timestamp_ansi [db_string get_today "
-    SELECT
-    to_char(current_date, 'YYYY-MM-DD')"]
+        template::multirow append tasks \
+            "" \
+            "" \
+            "" \
+            "" \
+            "text/plain" \
+            0 \
+            0 \
+            0 \
+            0 \
+            $end_date_html \
+            "" \
+            $assignee_html \
+            $dependency_options_full \
+            ""
 
-    # --------------------------------------------------------------
-    # each task we edit returns a task_revision_id
-    # --------------------------------------------------------------
-
-    for {set i 1} {$i <= $number} {incr i} {
- 
-        if {![exists_and_not_null end_date_$i]} {
-            set end_date_$i "{} {} {} {} {} {}"
-        }
-        
-        if {![exists_and_not_null estimated_hours_work($i)]} {
-            set estimated_hours_work($i) [expr .5 * ($estimated_hours_work_max($i) - $estimated_hours_work_min($i)) + $estimated_hours_work_min($i)]
-        }
-            
-        if {![exists_and_not_null estimated_hours_work_min($i)]} {
-                set estimated_hours_work_min($i) $estimated_hours_work($i)
-        }
-            
-        if {![exists_and_not_null estimated_hours_work_max($i)]} {
-            set estimated_hours_work_max($i) $estimated_hours_work($i)
-        }
-
-        # set up variables, pulling from arrays
-        set p_project_item_id $project_item_ids($i)
-
-        set p_task_item_id $task_item_id($i)
-        set p_task_title   $task_title($i)
-        set p_description  $description($i)
-        set p_mime_type    $description_format($i)
-
-        set p_comment      $comment($i)
-        set p_comment_type $comment_format($i)
-
-        set p_percent      $percent_complete($i)
-        set p_work         $estimated_hours_work($i)
-        set p_work_min     $estimated_hours_work_min($i)
-        set p_work_max     $estimated_hours_work_max($i)
-        set p_parent_task_id    $dependency_task_id($i)
-
-        set p_new_hours         $new_hours_logged($i)
-        set p_new_description   $new_description_logged($i)
-
-        if {![empty_string_p $p_new_hours] && \
-                $p_new_hours > 0} {
-            
-            set logger_project [pm::project::get_logger_project \
-                                    -project_item_id $p_project_item_id]
-            set variable_id [logger::variable::get_default_variable_id]
-            
-            # add in the new log entry
-            set p_hours [pm::project::log_hours \
-                             -logger_project_id $logger_project \
-                             -variable_id $variable_id \
-                             -value $p_new_hours \
-                             -description $p_new_description \
-                             -timestamp_ansi $timestamp_ansi \
-                             -task_item_id $p_task_item_id \
-                             -project_item_id $p_project_item_id \
-                             -update_status_p f]
-
-            if {[string equal p_hours -1]} {
-                ns_log Error "Error in logging hours in task-add-edit"
-                set p_hours 0
-            }
-        } else {
-            set p_hours [pm::task::update_hours \
-                             -task_item_id $p_task_item_id \
-                             -update_tasks_p f]
-        }
-
-        # do the actual edit
-        set this_revision_id [pm::task::edit \
-                                  -task_item_id $p_task_item_id \
-                                  -project_item_id $p_project_item_id \
-                                  -title $p_task_title \
-                                  -description $p_description \
-                                  -mime_type $p_mime_type \
-                                  -comment $p_comment \
-                                  -comment_type $p_comment_type \
-                                  -end_date "[set end_date_[set i]]" \
-                                  -percent_complete $p_percent \
-                                  -estimated_hours_work $p_work \
-                                  -estimated_hours_work_min $p_work_min \
-                                  -estimated_hours_work_max $p_work_max \
-                                  -actual_hours_worked $p_hours \
-                                  -update_user $user_id \
-                                  -update_ip $peeraddr \
-                                  -package_id $package_id]
-            
-
-        lappend revisions $this_revision_id
-
-        pm::task::dependency_delete_all \
-            -task_item_id $p_task_item_id
-
-        if {![empty_string_p $p_parent_task_id]} {
-
-            pm::task::dependency_add \
-                -task_item_id $p_task_item_id \
-                -parent_id  $p_parent_task_id \
-                -dependency_type jfdsafesa\
-                -project_item_id $p_project_item_id
-        }
-
-        # add in general comments for the task
-
-        if {![empty_string_p $p_comment]} {
-
-            pm::util::general_comment_add \
-                -object_id $p_task_item_id \
-                -title "$p_task_title" \
-                -comment "$p_comment" \
-                -mime_type "$p_comment_type" \
-                -user_id $user_id \
-                -peeraddr $peeraddr \
-                -send_email_p "f" 
-            
-        }
-
     }
+}
 
-} -after_submit {
 
-    ad_returnredirect -message "Task(s) saved. Now choose assignees" "task-assign-add-edit?[export_vars -url {comment_list comment_formats edit_p return_url process_task_id:multiple revisions:multiple task_id:multiple old_description old_description_mime_type send_email_p}]"
 
-    # compile a list of which projects the tasks are assigned to
-    # there is a bug here, because we don't update a project when a
-    # task is edited and changed to another project.
-
-    set project_item_id_list [list]
-    for {set i 1} {$i <= $number} {incr i} {
-
-        if {[string equal [lsearch $project_item_id_list $project_item_ids($i)] -1]} {
-            lappend project_item_id_list $project_item_ids($i)
-        }
-        
-    }
-
-    foreach proj_item $project_item_id_list {
-
-        # to add back in subproject support, should use
-        # compute_parent_status 
-        pm::project::compute_status $proj_item
-
-    }
-
-    ad_script_abort
-
-}
-
+set export_vars [export_vars -form {edit_p using_process_p return_url}]
Index: openacs-4/contrib/packages/project-manager/www/task-calendar.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/task-calendar.tcl,v
diff -u -r1.1.2.5 -r1.1.2.6
--- openacs-4/contrib/packages/project-manager/www/task-calendar.tcl	15 Sep 2004 23:05:52 -0000	1.1.2.5
+++ openacs-4/contrib/packages/project-manager/www/task-calendar.tcl	26 Oct 2004 01:21:11 -0000	1.1.2.6
@@ -48,10 +48,6 @@
     border-top: thin dotted grey;
 }
 
-.calendar-item strong {
-    color: \#f99;
-}
-
 .calendar-item strike {
     color: \#bbb;
     text-decoration: line-through;
Fisheye: Tag 1.1 refers to a dead (removed) revision in file `openacs-4/contrib/packages/project-manager/www/task-link.tcl'.
Fisheye: No comparison available.  Pass `N' to diff?
Index: openacs-4/contrib/packages/project-manager/www/task-one-postgresql.xql
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/task-one-postgresql.xql,v
diff -u -r1.19.2.3 -r1.19.2.4
--- openacs-4/contrib/packages/project-manager/www/task-one-postgresql.xql	8 Oct 2004 21:25:05 -0000	1.19.2.3
+++ openacs-4/contrib/packages/project-manager/www/task-one-postgresql.xql	26 Oct 2004 01:21:11 -0000	1.19.2.4
@@ -23,20 +23,23 @@
         t.percent_complete,
         i.live_revision,
 	p.first_names || ' ' || p.last_name as creation_user,
-        proj_rev.title as project_name
+        proj_rev.title as project_name,
+        a.process_instance
 	FROM
 	pm_tasks_revisionsx t, 
         cr_items i,
         persons p,
         cr_items proj,
-        cr_revisions proj_rev
+        cr_revisions proj_rev,
+        pm_tasks_active a
 	WHERE
         t.item_id = :task_id and
         t.revision_id = :task_revision_id and
         t.item_id = i.item_id and
         t.creation_user = p.person_id and
         t.parent_id = proj.item_id and
-        proj.live_revision = proj_rev.revision_id
+        proj.live_revision = proj_rev.revision_id and
+        t.item_id = a.task_id
     </querytext>
   </fullquery>
 
Index: openacs-4/contrib/packages/project-manager/www/task-one.adp
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/task-one.adp,v
diff -u -r1.23.2.5 -r1.23.2.6
--- openacs-4/contrib/packages/project-manager/www/task-one.adp	15 Jul 2004 20:31:47 -0000	1.23.2.5
+++ openacs-4/contrib/packages/project-manager/www/task-one.adp	26 Oct 2004 01:21:11 -0000	1.23.2.6
@@ -5,17 +5,40 @@
   <property name="context">@context;noquote@</property>
   
   <if @task_info.live_revision@ ne @task_info.revision_id@>
-  <h4>(not current, select live version from the <a href="task-revisions?task_id=@task_info.item_id@">task change</a> page)</h4>
+    <h4>(not current, select live version from the <a href="task-revisions?task_id=@task_info.item_id@">task change</a> page)</h4>
   </if>
-
+  
   <table border="0" cellpadding="3" cellspacing="0" width="100%">
+    
     <tr>
       <td valign="top">
       
-        <table border="1" cellpadding="0" cellspacing="0" width="100%"
+      <if @process_html@ not nil>
+        <table border="0" cellpadding="0" cellspacing="0" width="100%" class="list">
+          <tr>
+            <th align="left" valign="top" width="10">
+              <img src="resources/tl-e6e6fa" />
+            </th>
+            <th>Process status</th>
+            <th align="right" valign="top" width="10">
+              <img src="resources/tr-e6e6fa" />
+            </th>
+          </tr>
+
+          <tr>
+            <td colspan="3">@process_html;noquote@</td>
+          </tr>
+        </table>
+        <p />
+      </if>
+
+        <table border="0" cellpadding="0" cellspacing="0" width="100%"
           class="list">
           
           <tr>
+            <th align="left" valign="top" width="10">
+              <img src="resources/tl-e6e6fa" />
+            </th>
             <th>
               <a href="@task_edit_url;noquote@">
                 <img border="0" src="/shared/images/Edit16.gif"
@@ -26,20 +49,26 @@
                   alt="Print">
               </a>
             </th>
-            
-            <th>@task_term@ #@task_id@: @task_info.task_title@
-            </th>
-            
-            <th align="right">
+
+            <if @task_info.percent_complete@ ge 100>
+              <th class="shaded">@task_term@ #@task_id@: @task_info.task_title@</th>
+            </if>
+            <else>
+              <th>@task_term@ #@task_id@: @task_info.task_title@</th>
+            </else>
+
+            <th align="left">
               <a href="task-delete?task_item_id=@task_id@">
                 <img border="0" src="/shared/images/Delete16.gif">
               </a>
             </th>
-            
+            <th align="right" valign="top" width="10">
+              <img src="resources/tr-e6e6fa" />
+            </th>
           </tr>
           
           <tr>
-            <td colspan="3">
+            <td colspan="5">
               
               <table border=0 cellpadding=3 cellspacing=1 width="100%"
                 class="list"> 
@@ -98,13 +127,19 @@
       </td>
       <td valign="top">
 
-        <table border="1" cellpadding="0" cellspacing="0" width="100%"
+        <table border="0" cellpadding="0" cellspacing="0" width="100%"
           class="list">
           <tr>
+            <th align="left" valign="top" width="10">
+              <img src="resources/tl-e6e6fa" />
+            </th>
             <th colspan="2">Dates</th>
+            <th align="right" valign="top" width="10">
+              <img src="resources/tr-e6e6fa" />
+            </th>
           </tr>
           <tr>
-            <td>
+            <td colspan="4">
               <table border="0" class="list" width="100%">
                 <tr class="list-even">
                   <td>Earliest start</td>
@@ -128,30 +163,60 @@
               </table>
             </td>
           </tr>
+          <tr>
+            <th align="left" valign="bottom" width="10">
+              <img src="resources/bl-e6e6fa" />
+            </th>
+            <th colspan="2">&nbsp;</th>
+            <th align="right" valign="bottom" width="10">
+              <img src="resources/br-e6e6fa" />
+            </th>
+          </tr>
         </table>
         <p />
         
-        <table border="1" class="list" width="100%">
+        <table border="0" class="list" width="100%" cellpadding="0" cellspacing="0">
           <tr>
+            <th align="left" valign="top" width="10">
+              <img src="resources/tl-e6e6fa" />
+            </th>
             <th>Assignees</th>
+            <th align="right" valign="top" width="10">
+              <img src="resources/tr-e6e6fa" />
+            </th>
           </tr>
           <tr>
-            <td>
+            <td colspan="3">
               <listtemplate name="people"></listtemplate>
             </td>
           </tr>
+          <tr>
+            <th align="left" valign="bottom" width="10">
+              <img src="resources/bl-e6e6fa" />
+            </th>
+            <th>&nbsp;</th>
+            <th align="right" valign="bottom" width="10">
+              <img src="resources/br-e6e6fa" />
+            </th>
+          </tr>
         </table>
     
         <p />
         
-        <table border="1" cellpadding="3" cellspacing="1"
+        <table border="0" cellpadding="0" cellspacing="0"
           id="rightcontent" class="list" width="100%">
           <tr>
+            <th align="left" valign="top" width="10">
+              <img src="resources/tl-e6e6fa" />
+            </th>
             <th colspan="2">Logger</th>
+            <th align="right" valign="top" width="10">
+              <img src="resources/tr-e6e6fa" />
+            </th>
           </tr>
           
           <tr class="list-filter-header">
-            <td class="list-button-bar" align="center">
+            <td class="list-button-bar" align="center" colspan="4">
               Hours remaining: @task_info.hours_remaining@<br />
 
               <if @task_info.slack_time@ nil>
@@ -171,7 +236,7 @@
           
           <tr class="list-filter-header">
 
-            <td class="list-button-bar" valign="top">
+            <td valign="top" colspan="4">
               <form action="task-one" method="post">
                 @variable_widget;noquote@
                 @variable_exports;noquote@
@@ -184,7 +249,7 @@
           
           
           <tr>
-            <td colspan="2">
+            <td colspan="4">
               <include src="/packages/logger/lib/entries"
                 project_id="@logger_project@"
                 variable_id="@logger_variable_id@"
@@ -200,45 +265,108 @@
                 return_url="@return_url;noquote@" />
             </td>
           </tr>
+          <tr>
+            <th align="left" valign="bottom" width="10">
+              <img src="resources/bl-e6e6fa" />
+            </th>
+            <th colspan="2">&nbsp;</th>
+            <th align="right" valign="bottom" width="10">
+              <img src="resources/br-e6e6fa" />
+            </th>
+          </tr>
         </table>
 
         <P />
         
-        <table border="1" class="list" width="100%">
+        <table border="0 class="list" width="100%" cellpadding="0" cellspacing="0">
           <tr>
+            <th align="left" valign="top" width="10">
+              <img src="resources/tl-e6e6fa" />
+            </th>
             <th>@task_term@s this depends on.</th>
+            <th align="right" valign="top" width="10">
+              <img src="resources/tr-e6e6fa" />
+            </th>
           </tr>
           <tr>
-            <td>
+            <td colspan="3">
               <listtemplate name="dependency"></listtemplate>
             </td>
           </tr>
+          <tr>
+            <th align="left" valign="bottom" width="10">
+              <img src="resources/bl-e6e6fa" />
+            </th>
+            <th>&nbsp;</th>
+            <th align="right" valign="bottom" width="10">
+              <img src="resources/br-e6e6fa" />
+            </th>
+          </tr>
         </table>
         
         <P />
         
-        <table border="1" class="list" width="100%">
+        <table border="0" class="list" width="100%" cellspacing="0" cellpadding="0">
           <tr>
+            <th align="left" valign="top" width="10">
+              <img src="resources/tl-e6e6fa" />
+            </th>
             <th>@task_term@s depending on this @task_term@</th>
+            <th align="right" valign="top" width="10">
+              <img src="resources/tr-e6e6fa" />
+            </th>
           </tr>
           <tr>
-            <td>
+            <td colspan="3">
               <listtemplate name="dependency2"></listtemplate>
             </td>
           </tr>
+          <tr>
+            <th align="left" valign="bottom" width="10">
+              <img src="resources/bl-e6e6fa" />
+            </th>
+            <th>&nbsp;</th>
+            <th align="right" valign="bottom" width="10">
+              <img src="resources/br-e6e6fa" />
+            </th>
+          </tr>
         </table>
         
         <p />
         
-        <table border="1" class="list" width="100%">
+        <table border="0" class="list" width="100%" cellspacing="0" cellpadding="0">
           <tr>
+            <th align="left" valign="top" width="10">
+              <img src="resources/tl-e6e6fa" />
+            </th>
             <th>Related @task_term@s</th>
+            <th align="right" valign="top" width="10">
+              <img src="resources/tr-e6e6fa" />
+            </th>
           </tr>
           <tr>
-            <td>
+            <td colspan="3">
               <listtemplate name="xrefs"></listtemplate>
             </td>
           </tr>
+          <tr>
+            <td colspan="3">
+              <form action="task-link" method="post">
+                Link task: 
+                <input type="text" name="to_task" size="7" />
+                <input type="hidden" name="from_task" value="@task_id;noquote@" />
+                <input type="hidden" name="return_url" value="@return_url@" />
+            </td>
+          </tr>
+          <tr>
+            <th align="left" valign="bottom" width="10">
+              <img src="resources/bl-e6e6fa" />
+            </th>
+            <th>&nbsp;</th>
+            <th align="right" valign="bottom" width="10">
+              <img src="resources/br-e6e6fa" />
+            </th>
+          </tr>
         </table>
         
       </td>
Index: openacs-4/contrib/packages/project-manager/www/task-one.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/task-one.tcl,v
diff -u -r1.24.2.7 -r1.24.2.8
--- openacs-4/contrib/packages/project-manager/www/task-one.tcl	8 Oct 2004 21:25:05 -0000	1.24.2.7
+++ openacs-4/contrib/packages/project-manager/www/task-one.tcl	26 Oct 2004 01:21:11 -0000	1.24.2.8
@@ -145,6 +145,18 @@
 }
 
 
+# if part of a process, offer link to process
+if {![empty_string_p $task_info(process_instance)]} {
+    set process_url [pm::process::url \
+                         -process_instance_id $task_info(process_instance) \
+                         -project_item_id     $task_info(project_item_id) \
+                         -fully_qualified_p "f"]
+    set process_name [pm::process::name \
+                          -process_instance_id $task_info(process_instance)]
+    set process_html "<a href=\"$process_url\">$process_name</a>"
+} else {
+    set process_html ""
+}
 
 # set link to comments
 
@@ -156,11 +168,10 @@
 
 
 # how to get back here
-set return_url [ad_return_url -qualified]
+set return_url [ad_return_url]
 
-set task_edit_url "task-add-edit?my_key=1&task_id=$task_id&return_url=$return_url"
+set task_edit_url [export_vars -base task-add-edit {{task_item_id $task_id} return_url project_item_id}]
 
-
 set logger_project [pm::project::get_logger_project \
                         -project_item_id $task_info(project_item_id)]
 
@@ -327,7 +338,7 @@
     -elements {
         first_names {
             label {
-                Who <a href="task-assign-add-edit?revisions=$task_revision_id&[export_url_vars task_id return_url]"><img border="0" src="/shared/images/Edit16.gif" align="center"></a>
+                Who
             }
             display_template {
                 <if @people.is_lead_p@><i></if>@people.user_info@<if @people.is_lead_p@></i></if>
Index: openacs-4/contrib/packages/project-manager/www/task-select-project.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/task-select-project.tcl,v
diff -u -r1.2.2.2 -r1.2.2.3
--- openacs-4/contrib/packages/project-manager/www/task-select-project.tcl	2 Jul 2004 23:13:49 -0000	1.2.2.2
+++ openacs-4/contrib/packages/project-manager/www/task-select-project.tcl	26 Oct 2004 01:21:11 -0000	1.2.2.3
@@ -14,6 +14,8 @@
 } {
 
     {process_id:integer ""}
+    {process_task_id:integer,multiple ""}
+    {project_item_id ""}
     {return_url ""}
     {status_type "o"}
     {searchterm ""}
@@ -41,16 +43,25 @@
     unset searchterm
 }
 
+set hidden_vars [export_vars -form {process_id return_url process_task_id:multiple}]
 
-# terminology
-set project_term    [parameter::get -parameter "ProjectName" -default "Project"]
-set task_term       [parameter::get -parameter "TaskName" -default "Task"]
-# set task_term_lower [parameter::get -parameter "taskname" -default "task"]
-# set use_uncertain_completion_times_p [parameter::get -parameter "UseUncertainCompletionTimesP" -default "1"]
+if {[exists_and_not_null project_item_id]} {
+    ad_returnredirect [export_vars -base task-add-edit {project_item_id process_id return_url process_task_id:multiple}]
+}
 
 
-set title "Select a $project_term to assign this $task_term to"
+# terminology
+set Project_Term    [parameter::get -parameter "ProjectName" -default "Project"]
+set project_term    [parameter::get -parameter "projectname" -default "project"]
+set Task_Term       [parameter::get -parameter "TaskName" -default "Task"]
+set task_term       [parameter::get -parameter "taskname" -default "task"]
 
+if {[empty_string_p $process_id]} {
+    set title "Select a $project_term to assign this $task_term to"
+} else {
+    set title "Select a $project_term to assign this process to"
+}
+
 if {![exists_and_not_null searchterm]} {
     set searchterm_copy ""
     set searchterm_where_clause ""
@@ -71,8 +82,6 @@
 
 set root_folder [db_string get_root "select pm_project__get_root_folder (:package_id, 'f')"]
 
-set hidden_vars [export_vars -form {process_id return_url}]
-
 template::list::create \
     -name projects \
     -multirow projects \
@@ -139,7 +148,7 @@
 
 db_multirow -extend { item_url description_html } projects select_a_project {
 } {
-    set item_url [export_vars -base "task-add-edit" {project_item_id process_id return_url}]
+    set item_url [export_vars -base "task-add-edit" {project_item_id process_id process_task_id:multiple return_url}]
 
     set richtext_list [list $description $mime_type]
     set description_html [template::util::richtext::get_property html_value $richtext_list]
Index: openacs-4/contrib/packages/project-manager/www/tasks.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/tasks.tcl,v
diff -u -r1.5.2.9 -r1.5.2.10
--- openacs-4/contrib/packages/project-manager/www/tasks.tcl	22 Sep 2004 18:30:52 -0000	1.5.2.9
+++ openacs-4/contrib/packages/project-manager/www/tasks.tcl	26 Oct 2004 01:21:11 -0000	1.5.2.10
@@ -178,7 +178,7 @@
         }
     } \
     -orderby {
-        default_value latest_start_pretty,asc
+        default_value latest_finish_pretty,asc
         task_number {
             label "Task \#"
             orderby_desc "ts.task_number desc, p.first_names, p.last_name"
Index: openacs-4/contrib/packages/project-manager/www/resources/bl-ddffdd.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/bl-ddffdd.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/bl-e6e6fa.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/bl-e6e6fa.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/br-ddffdd.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/br-ddffdd.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/br-e6e6fa.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/br-e6e6fa.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/tl-9999cc.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/tl-9999cc.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/tl-ddffdd.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/tl-ddffdd.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/tl-dfdfff.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/tl-dfdfff.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/tl-e6e6fa.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/tl-e6e6fa.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/tr-9999cc.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/tr-9999cc.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/tr-ddffdd.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/tr-ddffdd.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/tr-dfdfff.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/tr-dfdfff.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ
Index: openacs-4/contrib/packages/project-manager/www/resources/tr-e6e6fa.jpg
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/resources/Attic/tr-e6e6fa.jpg,v
diff -u -r1.1 -r1.1.2.1
Binary files differ