Index: openacs-4/packages/project-manager/lib/tasks-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/tasks-postgresql.xql,v diff -u -r1.12 -r1.13 --- openacs-4/packages/project-manager/lib/tasks-postgresql.xql 27 Oct 2005 21:48:03 -0000 1.12 +++ openacs-4/packages/project-manager/lib/tasks-postgresql.xql 27 Oct 2005 22:57:18 -0000 1.13 @@ -4,8 +4,7 @@ - SELECT distinct - t.item_id as task_item_id, + SELECT 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:SS') as end_date, @@ -22,22 +21,19 @@ t.latest_finish - current_date as days_to_latest_finish, to_char(t.end_date,'YYYY-MM-DD HH24:MI:SS') as end_date, t.end_date - current_date as days_to_end_date, - t.party_id, t.percent_complete, - d.parent_task_id, - d.dependency_type, t.estimated_hours_work, t.estimated_hours_work_min, t.estimated_hours_work_max, t.actual_hours_worked, s.status_type, s.description as status_description, - r.is_lead_p, + t.is_lead_p, + t.is_observer_p, t.priority, - p.customer_id, - p.title as project_name, - t.description, - ar.object_id_two as logger_project + t.party_id, + t.parent_id, + o.title as project_name FROM (select tr.item_id, ta.party_id, @@ -55,47 +51,70 @@ tr.actual_hours_worked, tr.parent_id, tr.revision_id, + pr.is_observer_p, tr.description, - tr.priority - from pm_tasks_revisionsx tr - LEFT JOIN - pm_task_assignment ta ON tr.item_id = ta.task_id) t - LEFT JOIN - pm_roles r - ON t.role_id = r.role_id, - cr_items i - LEFT JOIN - pm_task_dependency d - ON - i.item_id = d.task_id, + tr.priority, + pr.is_lead_p + from pm_tasks_revisionsx tr, pm_task_assignment ta, cr_items ci, pm_roles pr, + -- Select only tasks where you are participating in a certain role. + (select distinct task_id from pm_task_assignment where party_id = :user_id) my_tasks + where ta.task_id = tr.item_id + -- We need to join again with the role, as we are supposed to get all the participants + -- This is not good... We should probably get them in the TCL view.. + and ta.role_id = pr.role_id + and ci.live_revision = tr.revision_id and + tr.item_id = my_tasks.task_id + $done_clause) t, pm_tasks_active ti, pm_task_status s, - pm_projectsx p, - acs_rels ar, + cr_items cp, acs_objects o WHERE - t.parent_id = p.item_id and - t.revision_id = i.live_revision and + t.parent_id = cp.item_id and t.item_id = ti.task_id and ti.status = s.status_id - and ar.object_id_one = t.parent_id - and ar.rel_type = 'application_data_link' - and o.object_id = ar.object_id_two - and o.object_type = 'logger_project' + and cp.live_revision = o.object_id and exists (select 1 from acs_object_party_privilege_map ppm where ppm.object_id = ti.task_id and ppm.privilege = 'read' and ppm.party_id = :user_id) - $done_clause [template::list::filter_where_clauses -and -name tasks] [template::list::orderby_clause -name tasks -orderby] + - select distinct task_item_id from (SELECT - t.item_id as task_item_id + SELECT 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:SS') as end_date, + to_char(t.earliest_start,'YYYY-MM-DD HH24:MI:SS') as earliest_start, + t.earliest_start - current_date as days_to_earliest_start, + to_char(t.earliest_start,'J') as earliest_start_j, + to_char(t.earliest_finish,'YYYY-MM-DD HH24:MI:SS') as earliest_finish, + t.earliest_finish - current_date as days_to_earliest_finish, + to_char(t.latest_start,'YYYY-MM-DD HH24:MI:SS') as latest_start, + t.latest_start - current_date as days_to_latest_start, + to_char(t.latest_start,'J') as latest_start_j, + to_char(current_date,'J') as today_j, + to_char(t.latest_finish,'YYYY-MM-DD HH24:MI:SS') as latest_finish, + t.latest_finish - current_date as days_to_latest_finish, + to_char(t.end_date,'YYYY-MM-DD HH24:MI:SS') as end_date, + t.end_date - current_date as days_to_end_date, + t.percent_complete, + t.estimated_hours_work, + t.estimated_hours_work_min, + t.estimated_hours_work_max, + t.actual_hours_worked, + s.status_type, + s.description as status_description, + t.is_lead_p, + t.is_observer_p, + t.priority, + t.party_id, + o.title as project_name FROM (select tr.item_id, ta.party_id, @@ -107,62 +126,67 @@ tr.latest_start, tr.latest_finish, tr.percent_complete, - tr.description, tr.estimated_hours_work, tr.estimated_hours_work_min, tr.estimated_hours_work_max, tr.actual_hours_worked, tr.parent_id, tr.revision_id, - tr.priority - from pm_tasks_revisionsx tr - LEFT JOIN - pm_task_assignment ta ON tr.item_id = ta.task_id) t - LEFT JOIN - pm_roles r - ON t.role_id = r.role_id, - cr_items i - LEFT JOIN - pm_task_dependency d - ON - i.item_id = d.task_id, + pr.is_observer_p, + tr.description, + tr.priority, + pr.is_lead_p + from pm_tasks_revisionsx tr, pm_task_assignment ta, cr_items ci, pm_roles pr, + -- Select only tasks where you are participating in a certain role. + (select distinct task_id from pm_task_assignment where party_id = :user_id) my_tasks + where ta.task_id = tr.item_id + -- We need to join again with the role, as we are supposed to get all the participants + -- This is not good... We should probably get them in the TCL view.. + and ta.role_id = pr.role_id + and ci.live_revision = tr.revision_id and + tr.item_id = my_tasks.task_id + $done_clause) t, pm_tasks_active ti, pm_task_status s, - pm_projectsx p + cr_items cp, + acs_objects o WHERE - t.parent_id = p.item_id and - t.revision_id = i.live_revision and + t.parent_id = cp.item_id and t.item_id = ti.task_id and ti.status = s.status_id + and cp.live_revision = o.object_id and exists (select 1 from acs_object_party_privilege_map ppm where ppm.object_id = ti.task_id and ppm.privilege = 'read' and ppm.party_id = :user_id) - $done_clause [template::list::filter_where_clauses -and -name tasks] - [template::list::orderby_clause -name tasks -orderby]) t + [template::list::orderby_clause -name tasks -orderby] - + - select - distinct item_id + select + username from - pm_projectsx + users where - parent_id = :project_item_id + user_id = :party_id - + select - username + rel.object_id_two from - users - where - user_id = :party_id + acs_rels rel, + acs_objects o + where + rel_type ='application_data_link' + and object_id_two = o.object_id + and o.object_type = 'logger_project' + and rel.object_id_one = :parent_id Index: openacs-4/packages/project-manager/lib/tasks.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/tasks.tcl,v diff -u -r1.28 -r1.29 --- openacs-4/packages/project-manager/lib/tasks.tcl 27 Oct 2005 21:48:03 -0000 1.28 +++ openacs-4/packages/project-manager/lib/tasks.tcl 27 Oct 2005 22:57:18 -0000 1.29 @@ -55,7 +55,7 @@ set extra_join "" if {$status_id == "1"} { - set done_clause "and t.percent_complete < 100" + set done_clause "and tr.percent_complete < 100" } else { set done_clause "" } @@ -187,7 +187,7 @@ where_clause "t.party_id = :party_id" ] \ filter_package_id [list \ - where_clause "p.object_package_id = :filter_package_id" + where_clause "o.package_id = :filter_package_id" ] \ ] @@ -296,6 +296,7 @@ } title { label "[_ project-manager.Subject_1]" + display_template {@tasks.title@@tasks.title@} } parent_task_id { label "[_ project-manager.Dep]" @@ -373,7 +374,7 @@ hide_p {[ad_decode [exists_and_not_null project_item_id] 1 1 0]} } log_url { - display_template {L} + display_template {L} } edit_url { display_template {E} @@ -475,6 +476,7 @@ set item_url [export_vars \ -base "task-one" {{task_id $task_item_id}}] + set logger_project [db_string get_logger_project { } -default ""] set log_url [export_vars \ -base "${logger_url}log" {{project_id $logger_project} {pm_task_id $task_item_id} {pm_project_id $project_item_id} {return_url $return_url}}]