Index: openacs-4/packages/project-manager/tcl/task-procs.tcl
===================================================================
RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/tcl/task-procs.tcl,v
diff -u -r1.26 -r1.27
--- openacs-4/packages/project-manager/tcl/task-procs.tcl 23 Mar 2007 07:52:25 -0000 1.26
+++ openacs-4/packages/project-manager/tcl/task-procs.tcl 21 Jul 2007 00:03:48 -0000 1.27
@@ -1177,17 +1177,23 @@
ad_proc -public pm::task::email_status {} {
- set send_email_p [parameter::get_from_package_key -package_key "project-manager" -parameter SendDailyEmail -default "0"]
+ set package_ids [list]
+ foreach package_id [apm_package_ids_from_key -package_key "project-manager" -mounted] {
+ if { [parameter::get -package_id $package_id -parameter SendDailyEmail -default "0"] } {
+ lappend package_ids $package_id
+ }
+ }
- if {[string is false $send_email_p]} {
- ns_log Notice "Parameter SendDailyEmail for project manager says skip email today"
- return
+ if { [llength $package_ids] eq "0" } {
+ ns_log Notice "Parameter SendDailyEmail for project manager says skip email today"
+ return
}
# also don't send reminders on weekends.
set today_j [db_string get_today "select to_char(current_timestamp,'J')"]
if {![pm::project::is_workday_p $today_j]} {
+ ns_log Notice "SendDailyEmail will not be used today since it is not a workday"
return
}
@@ -1196,7 +1202,7 @@
# what if the person assigned is no longer a part of the subsite?
# right now, we still email them.
- db_foreach get_all_open_tasks {
+ db_foreach get_all_open_tasks "
SELECT
ts.task_id,
ts.task_id as item_id,
@@ -1206,8 +1212,6 @@
to_char(t.earliest_start,'J') as earliest_start_j,
to_char(current_timestamp,'J') as today_j,
to_char(t.latest_start,'J') as latest_start_j,
- to_char(t.latest_start,'YYYY-MM-DD HH24:MI') as latest_start,
- to_char(t.latest_finish,'YYYY-MM-DD HH24:MI') as latest_finish,
t.percent_complete,
t.estimated_hours_work,
t.estimated_hours_work_min,
@@ -1218,38 +1222,53 @@
to_char(t.earliest_finish,'YYYY-MM-DD HH24:MI') as earliest_finish,
to_char(t.latest_start,'YYYY-MM-DD HH24:MI') as latest_start,
to_char(t.latest_finish,'YYYY-MM-DD HH24:MI') as latest_finish,
+ to_char(t.end_date,'YYYY-MM-DD HH24:MI') as end_date,
+ to_char(t.end_date,'J') as end_date_j,
p.first_names || ' ' || p.last_name as full_name,
p.party_id,
- (select one_line from pm_roles r where ta.role_id = r.role_id) as role
+ (select one_line from pm_roles r where ta.role_id = r.role_id) as role,
+ t.priority,
+ t.estimated_hours_work
FROM
- pm_tasks_active ts,
+ pm_tasks_active ts,
pm_tasks_revisionsx t,
pm_task_assignment ta,
acs_users_all p,
cr_items i,
- pm_task_status s
+ pm_task_status s,
+ pm_roles r,
+ acs_objects ao
WHERE
ts.task_id = t.item_id and
i.item_id = t.item_id and
t.task_revision_id = i.live_revision and
ts.status = s.status_id and
s.status_type = 'o' and
t.item_id = ta.task_id and
- ta.party_id = p.party_id
+ ta.party_id = p.party_id and
+ ta.role_id = r.role_id and
+ r.one_line = 'Lead' and
+ t.item_id = ao.object_id and
+ ao.package_id in ( [template::util::tcl_to_sql_list $package_ids] )
ORDER BY
- t.latest_start asc
- } {
+ t.priority desc, t.end_date asc
+ " {
set earliest_start_pretty [lc_time_fmt $earliest_start "%x"]
set earliest_finish_pretty [lc_time_fmt $earliest_finish "%x"]
set latest_start_pretty [lc_time_fmt $latest_start "%x"]
set latest_finish_pretty [lc_time_fmt $latest_finish "%x"]
-
+ if { $latest_finish eq "" } {
+ set earliest_start_j $end_date_j
+ set latest_start_j $end_date_j
+ set latest_finish_pretty [lc_time_fmt $end_date "%x"]
+ }
+ # reset slack time
+ set slack_time ""
if {[exists_and_not_null earliest_start_j]} {
set slack_time [pm::task::slack_time \
-earliest_start_j $earliest_start_j \
-today_j $today_j \
- -latest_start_j $latest_start_j]
-
+ -latest_start_j $latest_start_j]
}
if {[lsearch $parties $party_id] == -1} {
@@ -1259,6 +1278,8 @@
lappend task_list($party_id) $task_id
set titles_arr($task_id) $title
set ls_arr($task_id) $latest_start_pretty
+ set priority_arr($task_id) $priority
+ set hours_arr($task_id) $estimated_hours_work
set lf_arr($task_id) $latest_finish_pretty
set slack_arr($task_id) $slack_time
set roles($task_id-$party_id) $role
@@ -1300,108 +1321,64 @@
}
if {![empty_string_p $which_pile]} {
-
- lappend $which_pile "
-
\#$task | $titles_arr($task) | $roles($task-$party) | $ls_arr($task) | $lf_arr($task) | $slack_arr($task) | "
-
+ # Role is remove since we are only informing leads
+ lappend $which_pile "
\#$task | $titles_arr($task) | $priority_arr($task) | $lf_arr($task) |
"
}
}
- set overdue_title "[_ project-manager.Overdue_Tasks]
"
+ set table_heading "
+
+ [_ project-manager.Task] \# |
+ [_ project-manager.Subject_1] |
+ [_ project-manager.Priority] |
+ [_ project-manager.Latest_finish] |
+
+ "
- set overdue_description "[_ project-manager.lt_consult_with_people_a]"
-
- set pressing_title "[_ project-manager.Pressing_Tasks]
"
-
- set pressing_description "[_ project-manager.lt_you_need_to_start_wor]"
-
- set longterm_title "[_ project-manager.Long_Term_Tasks]
"
-
- set longterm_description "[_ project-manager.lt_look_over_these_to_pl]"
-
set cur_task_count $task_count($party)
# okay, let's now set up the email body
- set description "
-[_ project-manager.lt_This_is_a_daily_remin]
+ set description "[_ project-manager.lt_This_is_a_daily_remin]
"
+ if { [llength $overdue] > 0 } {
+ append description "[_ project-manager.Overdue_Tasks]
"
+ append description "[_ project-manager.lt_consult_with_people_a]
"
+ append description $table_heading
+ foreach overdue_item $overdue {
+ append description $overdue_item
+ }
+ append description "
"
+ }
+ if { [llength $pressing] > 0 } {
+ append description "[_ project-manager.Pressing_Tasks]
"
+ append description "[_ project-manager.lt_you_need_to_start_wor]
"
+ append description $table_heading
+ foreach pressing_item $pressing {
+ append description $pressing_item
+ }
+ append description ""
+ }
+ if { [llength $longterm] > 0 } {
+ append description "[_ project-manager.Long_Term_Tasks]
"
+ append description "[_ project-manager.lt_look_over_these_to_pl]
"
+ append description $table_heading
-$overdue_title
+ foreach longterm_item $longterm {
+ append description $longterm_item
+ }
-
+ append description ""
-$overdue_description
+ }
-
-
- [_ project-manager.Task] \# |
- [_ project-manager.Subject_1] |
- [_ project-manager.Role] |
- [_ project-manager.Latest_start] |
- [_ project-manager.Latest_finish] |
- [_ project-manager.Slack_1] |
-
-"
-
- foreach overdue_item $overdue {
- append description $overdue_item
- }
-
- append description "
-
-
-$pressing_title
-
-
-
-$pressing_description
-
-
-
- [_ project-manager.Task] \# |
- [_ project-manager.Subject_1] |
- [_ project-manager.Role] |
- [_ project-manager.Latest_start] |
- [_ project-manager.Latest_finish] |
- [_ project-manager.Slack_1] |
-
-"
-
- foreach pressing_item $pressing {
- append description $pressing_item
- }
-
- append description "
-
-
-$longterm_title
-
-$longterm_description
-
-
-
- [_ project-manager.Task] \# |
- [_ project-manager.Subject_1] |
- [_ project-manager.Role] |
- [_ project-manager.Latest_start] |
- [_ project-manager.Latest_finish] |
- [_ project-manager.Slack_1] |
-
-"
-
- foreach longterm_item $longterm {
- append description $longterm_item
- }
-
- append description "
"
-
pm::util::email \
-to_addr $address \
-from_addr $address \
-subject $subject \
-body $description \
-mime_type "text/html"
+
}
# consider also sending out emails to people who have created