Index: openacs-4/packages/project-manager/lib/task-calendar.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/task-calendar.adp,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/project-manager/lib/task-calendar.adp 21 Jul 2005 21:15:51 -0000 1.1 @@ -0,0 +1,45 @@ + + View options + Key +
+
+
+ + @edit_hidden_vars;noquote@ + + @calendar;noquote@ + +
+ +

View options

+ + @hide_show_closed;noquote@ + +

Key

+ +
+ +
@roles.abbreviation;noquote@
+
@roles.role;noquote@
+
+
+ +

Users to view

+ +
+ @edit_hidden_vars;noquote@ + + + + + @users.name@
+
+ + + @users.name@
+
+ +
+ + +
Index: openacs-4/packages/project-manager/lib/task-calendar.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/task-calendar.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/project-manager/lib/task-calendar.tcl 21 Jul 2005 21:15:51 -0000 1.1 @@ -0,0 +1,110 @@ +set user_id [auth::require_login] + +set date [calendar::adjust_date -date $date -julian_date $julian_date] +set base_url [ad_conn package_url]project-manager/ + + +set title "Task calendar" +set context [list $title] +set header_stuff " +" + +set return_url [ad_return_url]\#top + +set edit_hidden_vars [export_vars -form {return_url}] + +set calendar [pm::calendar::one_month_display \ + -user_id $user_id \ + -date $date \ + -hide_closed_p $hide_closed_p \ + ] + + +if {[string is true $hide_closed_p]} { + set hide_show_closed "Show closed" + set here [export_vars -base "task-calendar" {{hide_closed_p f} view date julian_date return_url }] +} else { + set hide_show_closed "Hide closed" + set here [export_vars -base "task-calendar" {{hide_closed_p t} view date julian_date return_url }] +} + +# --------------------------------------------- +# make a key of list of roles and abbreviations +# --------------------------------------------- + +db_multirow roles roles_and_abbrevs { + SELECT + one_line as role, + substring(one_line from 1 for 1) as abbreviation + FROM + pm_roles +} + + +# ------------------------------------- +# make a list of users in this subsite. +# ------------------------------------- + +set users_to_view [pm::calendar::users_to_view] + +set subsite_id [ad_conn subsite_id] + +set user_group_id [application_group::group_id_from_package_id \ + -package_id $subsite_id] + + +db_multirow -extend {checked_p} users users_list { + select + p.first_names || ' ' || p.last_name as name, + p.person_id as party_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 +} { + if {[lsearch $users_to_view $party_id] == -1} { + set checked_p f + } else { + set checked_p t + } +} Index: openacs-4/packages/project-manager/tcl/calendar-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/tcl/calendar-procs-postgresql.xql,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/project-manager/tcl/calendar-procs-postgresql.xql 26 May 2005 09:34:29 -0000 1.3 +++ openacs-4/packages/project-manager/tcl/calendar-procs-postgresql.xql 21 Jul 2005 21:15:17 -0000 1.4 @@ -40,6 +40,7 @@ r.is_lead_p, projectr.title as project_name FROM + acs_objects o, pm_tasks_active ts, pm_task_status s, cr_items i, @@ -60,13 +61,112 @@ t.latest_start >= :first_of_month_date and t.latest_start <= :last_of_month_date and t.parent_id = projecti.item_id and + o.object_id=t.item_id and projecti.live_revision = projectr.revision_id + $instance_clause $hide_closed_clause $selected_users_clause ORDER BY t.latest_start, ts.task_id, r.role_id, p.first_names, p.last_name + + + SELECT + p.item_id as project_item_id + FROM pm_projectsx p + 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 ( + 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_folders f, + pm_project_status s + WHERE + p.project_id = i.live_revision and + s.status_id = p.status_id + and i.parent_id = f.folder_id + and f.package_id = :package_id + [template::list::filter_where_clauses -and -name projects] + [template::list::orderby_clause -orderby -name projects] + + + + + + SELECT + ts.task_id, + ts.task_id as item_id, + ts.task_number, + t.task_revision_id, + t.title, + t.parent_id as project_item_id, + 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_finish,'J') as latest_finish_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, + t.estimated_hours_work_max, + case when t.actual_hours_worked is null then 0 + else t.actual_hours_worked end as actual_hours_worked, + to_char(t.earliest_start,'YYYY-MM-DD HH24:MI') as earliest_start, + 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, + p.first_names || ' ' || p.last_name || ' (' || + substring(r.one_line from 1 for 1) || ')' as full_name, + p.person_id, + s.status_type as status, + r.is_lead_p, + projectr.title as project_name + FROM + pm_tasks_active ts, + pm_task_status s, + cr_items i, + pm_tasks_revisionsx t + LEFT JOIN pm_task_assignment ta + ON t.item_id = ta.task_id + LEFT JOIN persons p + ON ta.party_id = p.person_id + LEFT JOIN pm_roles r + ON ta.role_id = r.role_id, + cr_items projecti, + cr_revisions projectr + WHERE + ts.status = s.status_id and + ts.task_id = t.item_id and + i.item_id = t.item_id and + t.task_revision_id = i.live_revision and + t.latest_start >= :first_of_month_date and + t.latest_start <= :last_of_month_date and + t.parent_id = projecti.item_id and + projecti.live_revision = projectr.revision_id + $instance_clause + $hide_closed_clause + $selected_users_clause + ORDER BY + t.latest_start, ts.task_id, r.role_id, p.first_names, p.last_name + + + Index: openacs-4/packages/project-manager/tcl/calendar-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/tcl/calendar-procs.tcl,v diff -u -N -r1.3 -r1.4 --- openacs-4/packages/project-manager/tcl/calendar-procs.tcl 26 May 2005 09:34:29 -0000 1.3 +++ openacs-4/packages/project-manager/tcl/calendar-procs.tcl 21 Jul 2005 21:15:17 -0000 1.4 @@ -51,10 +51,19 @@ } { Creates a month widget for tasks } { + set day_template "\$day_number" set prev_nav_template "<" set next_nav_template ">" + set instance_clause "" + set package_id [dotlrn_community::get_package_id_from_package_key -package_key project-manager -community_id [dotlrn_community::get_community_id]] + + + if { ![string eq [ad_conn package_id] [dotlrn::get_package_id]]} { + set instance_clause "and o.package_id=:package_id" + } + if {[empty_string_p $date]} { set date [dt_systime] } @@ -82,83 +91,86 @@ set last_latest_start_j "" set assignee_list [list] - db_foreach select_monthly_tasks {} { - - # highlight what you're assigned to. - if {[string equal $person_id $user_id]} { - set font_begin "" - set font_end "" - } else { - set font_begin "" - set font_end "" - } - - if { \ - ![empty_string_p $is_lead_p] && \ - [string is true $is_lead_p]} { - - set font_begin "$font_begin" - set font_end "$font_end" - } - - # if this is another row of the same item, just add the name. - if {[string equal $last_task_id $task_id]} { - append day_details "
  • , ${font_begin}${full_name}${font_end}
  • " - } else { - - # this is the beginning of an item. - - # save the last item for output - if {![empty_string_p $last_task_id]} { - ns_set put $items $last_latest_start_j "${day_details}

    " - } - - # set up the next item for output - - if {[string equal $status "c"]} { - set detail_begin "" - set detail_end "" - } else { - set detail_begin "" - set detail_end "" - } - - # begin setting up this calendar item - set day_details "

    ${detail_begin}$task_id
    $title${detail_end}

    $project_name
    " - - # only add to the list if we want to see closed tasks - append day_details "

    " - } - - - # Display stuff - set day_number_template "$day_template" - - return [dt_widget_month -calendar_details $items -date $date \ - -master_bgcolor black \ - -header_bgcolor lavender \ - -header_text_color black \ - -header_text_size "+1" \ - -day_header_bgcolor lavender \ - -day_bgcolor white \ - -today_bgcolor #FFF8DC \ - -empty_bgcolor lightgrey \ - -day_text_color black \ - -prev_next_links_in_title 1 \ - -prev_month_template $prev_nav_template \ - -next_month_template $next_nav_template \ - -day_number_template $day_number_template] + + db_foreach select_monthly_tasks {} { + + # highlight what you're assigned to. + if {[string equal $person_id $user_id]} { + set font_begin "" + set font_end "" + } else { + set font_begin "" + set font_end "" + } + + if { \ + ![empty_string_p $is_lead_p] && \ + [string is true $is_lead_p]} { + + set font_begin "$font_begin" + set font_end "$font_end" + } + + # if this is another row of the same item, just add the name. + if {[string equal $last_task_id $task_id]} { + append day_details "
  • , ${font_begin}${full_name}${font_end}
  • " + } else { + + # this is the beginning of an item. + + # save the last item for output + if {![empty_string_p $last_task_id]} { + ns_set put $items $last_latest_start_j "${day_details}

    " + } + + # set up the next item for output + + if {[string equal $status "c"]} { + set detail_begin "" + set detail_end "" + } else { + set detail_begin "" + set detail_end "" + } + + # begin setting up this calendar item + set day_details "

    ${detail_begin}$task_id
    $title${detail_end}

    $project_name
    " + + # only add to the list if we want to see closed tasks + append day_details "

    " + } + + + # Display stuff + set day_number_template "$day_template" + + return [dt_widget_month -calendar_details $items -date $date \ + -master_bgcolor black \ + -header_bgcolor lavender \ + -header_text_color black \ + -header_text_size "+1" \ + -day_header_bgcolor lavender \ + -day_bgcolor white \ + -today_bgcolor #FFF8DC \ + -empty_bgcolor lightgrey \ + -day_text_color black \ + -prev_next_links_in_title 1 \ + -prev_month_template $prev_nav_template \ + -next_month_template $next_nav_template \ + -day_number_template $day_number_template] + } - -} + + +} \ No newline at end of file Index: openacs-4/packages/project-manager/www/calendar-users-update.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/www/calendar-users-update.tcl,v diff -u -N -r1.4 -r1.5 --- openacs-4/packages/project-manager/www/calendar-users-update.tcl 26 May 2005 09:34:29 -0000 1.4 +++ openacs-4/packages/project-manager/www/calendar-users-update.tcl 21 Jul 2005 21:15:17 -0000 1.5 @@ -10,14 +10,15 @@ @cvs-id $Id$ } { {party_id:integer,multiple ""} + {return_url ""} } -properties { } -validate { } -errors { } -set user_id [ad_maybe_redirect_for_registration] +set user_id [auth::require_login] -if {[empty_string_p party_id]} { +if {[empty_string_p $party_id]} { set party_id [list $user_id] } @@ -39,4 +40,8 @@ } } -ad_returnredirect -message "[_ project-manager.lt_Updated_who_you_will_]" task-calendar +if { [empty_string_p $return_url]} { + ad_returnredirect -message "Updated who you will see on the task calendar" task-calendar +} else { + ad_returnredirect -message "Updated who you will see on the task calendar" $return_url +}