Index: openacs-4/packages/project-manager/project-manager.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/project-manager.info,v diff -u -r1.37 -r1.38 --- openacs-4/packages/project-manager/project-manager.info 11 Nov 2005 20:21:48 -0000 1.37 +++ openacs-4/packages/project-manager/project-manager.info 13 Nov 2005 17:54:44 -0000 1.38 @@ -7,15 +7,15 @@ f f - + Jade Rubick Project management tool for OpenACS 2005-11-08 Integrated Bakery Resources Track tasks, estimates and actual progress for a project. See the <a href="http://openacs.org/projects/dotwrk/project_management/">project page</a> for more information. 0 - + Index: openacs-4/packages/project-manager/catalog/project-manager.de_DE.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/catalog/project-manager.de_DE.ISO-8859-1.xml,v diff -u -r1.18 -r1.19 --- openacs-4/packages/project-manager/catalog/project-manager.de_DE.ISO-8859-1.xml 21 Oct 2005 14:10:47 -0000 1.18 +++ openacs-4/packages/project-manager/catalog/project-manager.de_DE.ISO-8859-1.xml 13 Nov 2005 17:54:44 -0000 1.19 @@ -1,5 +1,5 @@ - + --- noch nicht festgelegt --- -- geschlossen @@ -35,6 +35,7 @@ Hinzugef�gt: %new% Admin Aggregiere die Projekte von diesem Zeitpunkt der letzten Jahre und davor + Alle Von den Kategorien aus zuteilen %assign% entfernt %assign% gespeichert @@ -68,6 +69,7 @@ Erstellt Erstellt am CSV + Laufende Zurzeit integriert: Zurzeit markiert: Kunde @@ -132,6 +134,7 @@ Gesch�tzte Stunden (max.) Gesch�tzte Stunden (min.) Gesch�tzte Stunden an Arbeit + Falsch Text mit gesetzter Breite Format: Drucker freundliches Format @@ -371,6 +374,8 @@ Reihenfolge �berf�llige Aufgaben �berblick �ber den Prozess: + Paketinstanz + Paketinstanz Seite) Parameter Party ID @@ -468,6 +473,7 @@ Einrichten Auch Abgeschlossene anzeigen Dieses Projekt anzeigen + Subproject anzeigen Diese Aufgabe auslassen? Pufferzeit: Puffer-<br>zeit @@ -512,6 +518,7 @@ Gesamtbetrag Gesamte Arbeit Gesamte ben�tigte Arbeit: + Wahr Typ Nicht zugewiesen Alle aktualisieren Index: openacs-4/packages/project-manager/catalog/project-manager.en_US.ISO-8859-1.xml =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/catalog/project-manager.en_US.ISO-8859-1.xml,v diff -u -r1.49 -r1.50 --- openacs-4/packages/project-manager/catalog/project-manager.en_US.ISO-8859-1.xml 4 Nov 2005 21:42:28 -0000 1.49 +++ openacs-4/packages/project-manager/catalog/project-manager.en_US.ISO-8859-1.xml 13 Nov 2005 17:54:44 -0000 1.50 @@ -1,5 +1,5 @@ - + --- TBD --- -- Closed @@ -550,6 +550,7 @@ Show Show closed Show this projects + Show Subprojects Skip this task? Slack: Slack Index: openacs-4/packages/project-manager/lib/projects-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/projects-postgresql.xql,v diff -u -r1.10 -r1.11 --- openacs-4/packages/project-manager/lib/projects-postgresql.xql 21 Oct 2005 17:13:03 -0000 1.10 +++ openacs-4/packages/project-manager/lib/projects-postgresql.xql 13 Nov 2005 17:54:44 -0000 1.11 @@ -5,17 +5,6 @@ SELECT - CASE - WHEN SUM(rx.estimated_hours_work) = 0 - THEN - 100 - WHEN SUM(rx.estimated_hours_work) IS NULL - THEN - 0 - ELSE - FLOOR(SUM(rx.percent_complete * rx.estimated_hours_work) / - SUM(rx.estimated_hours_work)) - END AS percent_complete, p.item_id as project_item_id, p.project_id, p.status_id, @@ -38,14 +27,10 @@ case when o.name is null then '--no customer--' else o.name end as customer_name, o.organization_id as customer_id, - f.package_id, + p.object_package_id as package_id, to_char(p.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date, to_char(p.planned_start_date, 'YYYY-MM-DD HH24:MI:SS') as start_date FROM pm_projectsx p - LEFT JOIN pm_tasks_revisionsx rx ON rx.parent_id = - p.item_id - LEFT JOIN pm_project_assignment pa - ON p.item_id = pa.project_id LEFT JOIN organizations o ON p.customer_id = o.organization_id LEFT JOIN ( @@ -61,42 +46,45 @@ om.category_id = t.category_id and ctg.category_id = t.category_id and ctg.deprecated_p = 'f') + c ON p.item_id = c.object_id $subprojects_from_clause $pa_from_clause + WHERE exists (select 1 from acs_object_party_privilege_map ppm + where ppm.object_id = p.project_id + and ppm.privilege = 'read' + and ppm.party_id = :user_id) + [template::list::filter_where_clauses -and -name projects] + [template::list::page_where_clause -and -name "projects" -key "p.project_id"] + [template::list::orderby_clause -orderby -name projects] + + + + + + SELECT + p.project_id + FROM pm_projectsx p + LEFT JOIN ( + select + om.category_id, + om.object_id, + t.name as category_name + from + category_object_map om, + category_translations t, + categories ctg + where + om.category_id = t.category_id and + ctg.category_id = t.category_id and + ctg.deprecated_p = 'f') c ON p.item_id = c.object_id, - cr_items i, - cr_items i2, - cr_folders f, - pm_roles pr + cr_items i $subprojects_from_clause $pa_from_clause WHERE p.project_id = i.live_revision - and rx.object_id = i2.live_revision $current_package_where_clause and exists (select 1 from acs_object_party_privilege_map ppm where ppm.object_id = p.project_id and ppm.privilege = 'read' and ppm.party_id = :user_id) [template::list::filter_where_clauses -and -name projects] - GROUP BY - p.item_id, - p.project_id, - p.status_id, - p.parent_id, - p.object_type, - p.title, - p.project_code, - p.planned_start_date, - p.planned_end_date, - p.ongoing_p, - c.category_id, - c.category_name, - p.earliest_finish_date, - p.latest_finish_date, - p.actual_hours_completed, - p.estimated_hours_total, - p.estimated_finish_date, - o.name, - o.organization_id, - f.package_id, - p.creation_date [template::list::orderby_clause -orderby -name projects] Index: openacs-4/packages/project-manager/lib/projects.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/projects.tcl,v diff -u -r1.27 -r1.28 --- openacs-4/packages/project-manager/lib/projects.tcl 4 Nov 2005 21:42:28 -0000 1.27 +++ openacs-4/packages/project-manager/lib/projects.tcl 13 Nov 2005 17:54:44 -0000 1.28 @@ -5,10 +5,20 @@ # @arch-tag: 2f586eec-4768-42ef-a09a-4950ac00ddaf # @cvs-id $Id$ -set required_param_list [list package_id] -set optional_param_list [list orderby status_id searchterm bulk_p action_p \ +# Pagination and orderby: +# ---------------------- +# page The page to show on the paginate. +# page_size The number of rows to display in the list +# orderby_p Set it to 1 if you want to show the order by menu. +# orderby To sort the list using this orderby value +# +# package_id The package_id which to limit the query to. +# subprojects_p Should subprojects be displayed as well? + +set required_param_list "package_id" +set optional_param_list [list orderby status_id searchterm bulk_p action_p page_num page_size\ filter_p base_url end_date_f user_space_p hidden_vars] -set optional_unset_list [list assignee_id date_range is_observer_p previous_status_f current_package_f] +set optional_unset_list [list assignee_id date_range is_observer_p previous_status_f current_package_f subprojects_p] set dotlrn_installed_p [apm_package_installed_p dotlrn] set user_id [ad_conn user_id] @@ -18,6 +28,10 @@ } } +if ![exists_and_not_null page_size] { + set page_size 25 +} + set package_ids [join $package_id ","] foreach optional_param $optional_param_list { @@ -38,6 +52,9 @@ set format "normal" } +# initialize the pa_from_clause. It should be empty unless needed +set pa_from_clause "" + if [empty_string_p $user_space_p] { set user_space_p 0 set dotlrn_club_id [dotlrn_community::get_community_id] @@ -67,22 +84,33 @@ set assignees_filter [linsert $assignees_filter 0 [list "All" "-1"]] -# Set assigne -set assignee_where_clause "pa.party_id = :assignee_id" +# Set assignee if { ![exists_and_not_null assignee_id]} { - set assignee_id $user_id - + set pa_from_clause ",pm_project_assignment pa" + set assignee_where_clause "pa.party_id = :user_id and p.item_id = pa.project_id" } elseif { [string equal $assignee_id "-1"] } { - set asg_ids [list] - foreach assignee $assignees_filter { - lappend asg_ids [lindex $assignee 1] - } - set asg_ids [join $asg_ids ","] - set assignee_where_clause "pa.party_id in ($asg_ids)" + # assignee_id of "-1" means all assignees + set assignee_where_clause "" +} else { + set pa_from_clause ",pm_project_assignment pa" + set assignee_where_clause "pa.party_id = :assignee_id and p.item_id = pa.project_id" } +# By default we show all subprojects as well +set subprojects_from_clause "" +set subprojects_where_clause "" - +if {[exists_and_not_null subprojects_p]} { + if {[string eq "f" $subprojects_p]} { + set subprojects_from_clause ", acs_objects ao" + set subprojects_where_clause "ao.object_type = 'content_folder' and ao.object_id = p.parent_id" + } else { + unset subprojects_p + } +} else { + unset subprojects_p +} + # We want to set up a filter for each category tree. set export_vars [export_vars -form {status_id orderby}] @@ -152,7 +180,7 @@ -set row_list "checkbox {}\npercent_complete {} \nproject_name {}\n" +set row_list "checkbox {}\nproject_name {}\n" foreach element $elements { append row_list "$element {}\n" } @@ -166,25 +194,22 @@ if {$actions_p == 1} { - if {[info exists portal_info_name]} { - - set actions [list "$portal_info_name" "$portal_info_url" "$portal_info_name" "[_ project-manager.Add_project]" "[export_vars -base "${base_url}add-edit" -url {customer_id}]" "[_ project-manager.Add_project]" "[_ project-manager.Customers]" "[site_node::get_package_url -package_key contacts]" "[_ project-manager.View_customers]" "[_ project-manager.Projects_reports]" "reports" "[_ project-manager.Projects_reports]"] - - } else { - set actions [list "[_ project-manager.Add_project]" "[export_vars -base "${base_url}add-edit" -url {customer_id}]" "[_ project-manager.Add_project]" "[_ project-manager.Customers]" "[site_node::get_package_url -package_key contacts]" "[_ project-manager.View_customers]" "[_ project-manager.Projects_reports]" "reports" "[_ project-manager.Projects_reports]"] - } - } else { set actions [list "Project: $community_name" "$base_url"] } -if { $user_space_p } { - set user_space_clause "pa.role_id = pr.role_id and pr.is_observer_p = :is_observer_p" +if {[exists_and_not_null is_observer_p]} { + set pa_from_clause ",pm_project_assignment pa, pm_roles pr" + if { $user_space_p } { + set user_space_clause "pa.role_id = pr.role_id and pr.is_observer_p = :is_observer_p and p.item_id = pa.project_id" + } else { + set user_space_clause "pa.role_id = pr.role_id and pr.is_observer_p = :is_observer_p + and p.object_package_id = :package_id and p.item_id = pa.project_id" + } } else { - set user_space_clause "pa.role_id = pr.role_id and pr.is_observer_p = :is_observer_p - and f.package_id = :package_id and i.parent_id = f.folder_id" + set user_space_clause "" } # If this filter is provided we can watch the projects in @@ -193,10 +218,10 @@ if { [string equal $current_package_f 1] } { set current_package_where_clause "" } else { - set current_package_where_clause "and f.package_id = :current_package_f and i.parent_id = f.folder_id" + set current_package_where_clause "and p.object_package_id = :current_package_f" } } else { - set current_package_where_clause "and f.package_id in ($package_ids) and i.parent_id = f.folder_id" + set current_package_where_clause "and p.object_package_id in ($package_ids)" } # We are going to create the available options for the possible pairs @@ -266,9 +291,12 @@ where_clause {c.category_id = [join [value_if_exists category_id] ","]} ] \ user_space_p [list] \ - is_observer_p [list \ - label "[_ project-manager.Observer]" \ + subprojects_p [list \ + label "[_ project-manager.ShowSubprojects]" \ values { {"[_ project-manager.True]" t } { "[_ project-manager.False]" f} } \ + where_clause { $subprojects_where_clause } + ] \ + is_observer_p [list \ where_clause { $user_space_clause } ] \ previous_status_f [list \ @@ -288,9 +316,6 @@ -selected_format $format \ -key project_item_id \ -elements { - percent_complete { - label "%" - display_template "
 
@projects.percent_complete@%" } project_name { label "[_ project-manager.Project_name]" link_url_col item_url @@ -342,11 +367,6 @@ -filters $filters \ -orderby { default_value $default_orderby - percent_complete { - label "[_ project-manager.percent]" - orderby_desc "percent_complete desc" - orderby_asc "percent_complete asc" - } project_name { label "[_ project-manager.Project_name]" orderby_desc "upper(p.title) desc" @@ -402,6 +422,10 @@ default_direction asc } } \ + -page_size_variable_p 1 \ + -page_size $page_size \ + -page_flush_p 0 \ + -page_query_name projects_pagination \ -formats { normal { label "[_ project-manager.Table]" @@ -431,16 +455,6 @@ set item_url [export_vars -base "${base_url}one" {project_item_id}] - if {$dotlrn_installed_p} { - set community_id [dotlrn_community::get_community_id_from_url -url $base_url] - - if { ![empty_string_p $community_id] } { - set community_name [dotlrn_community::get_community_name $community_id] - set portal_info_name "Project: $community_name" - set portal_info_url "$base_url" - } - - } # root CR folder set root_folder [pm::util::get_root_folder -package_id $package_id] Index: openacs-4/packages/project-manager/www/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/www/index.adp,v diff -u -r1.12 -r1.13 --- openacs-4/packages/project-manager/www/index.adp 21 Oct 2005 17:10:34 -0000 1.12 +++ openacs-4/packages/project-manager/www/index.adp 13 Nov 2005 17:54:44 -0000 1.13 @@ -22,5 +22,9 @@ hidden_vars="@hidden_vars;noquote@" previous_status_f="@previous_status_f@" current_package_f="@current_package_f@" + page_size="@page_size@" + page="@page@" + page_num="@page_num@" + subprojects_p="@subprojects_p@" /> Index: openacs-4/packages/project-manager/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/www/index.tcl,v diff -u -r1.11 -r1.12 --- openacs-4/packages/project-manager/www/index.tcl 21 Oct 2005 17:10:34 -0000 1.11 +++ openacs-4/packages/project-manager/www/index.tcl 13 Nov 2005 17:54:44 -0000 1.12 @@ -25,9 +25,13 @@ {format "normal"} {assignee_id ""} {user_space_p "0"} + {subprojects_p "t"} {is_observer_p ""} {previous_status_f ""} {current_package_f ""} + {page ""} + {page_size 25} + {page_num ""} } -properties { Index: openacs-4/packages/project-manager/www/comments/add.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/www/comments/add.tcl,v diff -u -r1.4 -r1.5 --- openacs-4/packages/project-manager/www/comments/add.tcl 17 Oct 2005 21:28:08 -0000 1.4 +++ openacs-4/packages/project-manager/www/comments/add.tcl 13 Nov 2005 17:54:44 -0000 1.5 @@ -95,15 +95,15 @@ {section "[_ project-manager.Email]" } {html {onclick check_uncheck_boxes(this.checked)}} } - {to:text(checkbox) + {to:text(checkbox),optional {label "[_ project-manager.Send_email]"} {options $assignee_list} {html {checked 1}} } } } else { ad_form -extend -name comment -form { - {to:text(checkbox) + {to:text(checkbox),optional {label "[_ project-manager.Send_email]"} {section "[_ project-manager.Email]" } {options $assignee_list}