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}