Index: openacs-4/contrib/packages/project-manager/www/one.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/contrib/packages/project-manager/www/Attic/one.tcl,v diff -u -r1.39 -r1.40 --- openacs-4/contrib/packages/project-manager/www/one.tcl 24 Jul 2004 08:33:55 -0000 1.39 +++ openacs-4/contrib/packages/project-manager/www/one.tcl 13 Jan 2005 13:54:36 -0000 1.40 @@ -22,6 +22,7 @@ @param use_project_code_p Specifies whether or not to show the user-specified project code 1 = yes @param use_uncertain_completion_times_p Specifies whether or not to use PERT style uncertainty times 1 = yes @param logger_days The number of days back to view logged entries + @param instance_id The process instance ID to show for tasks } { project_item_id:integer,optional @@ -30,6 +31,7 @@ {orderby_tasks ""} {logger_variable_id:integer ""} {logger_days:integer "30"} + {instance_id:integer ""} } -properties { categories:onelist @@ -100,6 +102,7 @@ set project_term_lower [parameter::get -parameter "projectname" -default "project"] set task_term [parameter::get -parameter "TaskName" -default "Task"] set use_goal_p [parameter::get -parameter "UseGoalP" -default "1"] +set hide_done_tasks_p [parameter::get -parameter "HideDoneTaskP" -default "1"] set use_project_code_p [parameter::get -parameter "UseUserProjectCodesP" -default "1"] set use_uncertain_completion_times_p [parameter::get -parameter "UseUncertainCompletionTimesP" -default "1"] set use_project_customizations_p [parameter::get -parameter "UseProjectCustomizationsP" -default "0"] @@ -112,6 +115,34 @@ set create_p [permission::permission_p -object_id $package_id -privilege create] +set process_instance_options [pm::process::instance_options \ + -project_item_id $project_item_id \ + -process_instance_id $instance_id] + + +set process_reminder_url [export_vars -base process-reminder {instance_id project_item_id return_url}] + +if {[empty_string_p $process_instance_options]} { + set instance_html "" +} else { + + set instance_html " +
+ [export_vars -form -entire_form -exclude {instance_id}] + + +
" +} + +# we do this so that the list builder templates don't add a where +# clause when instance_id is set. +if {[empty_string_p $instance_id]} { + unset instance_id +} + # categories set categories [list] @@ -147,8 +178,6 @@ set logger_project_url "$logger_url?project_id=$project(logger_project)" if {![exists_and_not_null logger_variable_id]} { - #set logger_variable_id - # [logger::variable::get_default_variable_id] set logger_variable_id [logger::project::get_primary_variable \ -project_id $project(logger_project)] } @@ -162,9 +191,20 @@ set log_url "${logger_url}log?project_id=$project(logger_project)&pm_project_id=$project_item_id&return_url=$return_url&variable_id=$logger_variable_id" -set assignee_add_self_widget "Add myself as
[export_vars -form {project_item_id user_id return_url}][pm::role::select_list -select_name "role_id"]
" +# There is no point showing an empty listbox, which happens if the user assigns all roles to himself. Doing it this way avoids another trip to the database. +set select_list_html [pm::role::project_select_list -select_name "role_id" -project_item_id $project_item_id -party_id $user_id] +if {[string compare $select_list_html ""]} { + set assignee_add_self_widget "Add myself as
[export_vars -form {project_item_id user_id return_url}]$select_list_html
" + set roles_listbox_p 1 +} else { + set roles_listbox_p 0 +} -set assignee_remove_self_url [export_vars -base project-assign-remove {project_item_id user_id return_url}] +# Only need a 'remove myself' link if you are already assigned +set assigned_p [pm::project::assigned_p -project_item_id $project_item_id -party_id $user_id] +if {$assigned_p} { + set assignee_remove_self_url [export_vars -base project-assign-remove {project_item_id user_id return_url}] +} set assignee_edit_url [export_vars -base project-assign-edit {project_item_id return_url}] @@ -187,64 +227,108 @@ set context [list [list "one?project_item_id=$project(parent_id)" "Parent"] "$project(project_name)"] } +set processes_html [pm::process::select_html] + # Tasks, using list-builder --------------------------------- +# Hide finished tasks. This should be added as a filter, but I did not have time to look it up in the howto. + +if {$hide_done_tasks_p} { + set done_clause "and t.percent_complete < 100" +} else { + set done_clause "" +} + set process_link "process-use?project_item_id=$project_item_id" +set default_orderby [pm::project::one_default_orderby] + +if {[exists_and_not_null orderby_tasks]} { + pm::project::one_default_orderby \ + -set $orderby_tasks +} + + template::list::create \ -name tasks \ -multirow tasks \ - -key task_id \ + -key task_item_id \ + -html {width 100%} \ -elements { - task_id { + task_item_id { label "ID" } + status_type { + label "Done" + display_template { + + } + } title { label "Subject" - display_template "@tasks.title@@tasks.title@ -- closed" + display_template "@tasks.title@@tasks.title@" } parent_task_id { label "Dep" display_template { @tasks.parent_task_id@ } } + priority { + label "Priority" + display_template { + @tasks.priority@ + } + } slack_time { label "Slack" - display_template "@tasks.slack_time@" + display_template " + + + @tasks.slack_time@ + + " } earliest_start { label "Earliest Start" - display_template "@tasks.earliest_start_pretty@@tasks.earliest_start_pretty@" + display_template "@tasks.earliest_start_pretty@@tasks.earliest_start_pretty@" } earliest_finish { label "Earliest Finish" - display_template "@tasks.earliest_finish_pretty@@tasks.earliest_finish_pretty@" + display_template "@tasks.earliest_finish_pretty@@tasks.earliest_finish_pretty@" } latest_start { label "Latest Start" - display_template "@tasks.latest_start_pretty@@tasks.latest_start_pretty@" + display_template "@tasks.latest_start_pretty@@tasks.latest_start_pretty@" } latest_finish { label "Latest Finish" - display_template "@tasks.latest_finish_pretty@@tasks.latest_finish_pretty@" + display_template "@tasks.latest_finish_pretty@@tasks.latest_finish_pretty@" } last_name { label "Who" display_template { - @tasks.first_names@ @tasks.last_name@
+ + + + + + @tasks.first_names@ @tasks.last_name@ + + + + +
+
} } } \ - -actions [list "Use process" $process_link "Use a process"] \ -bulk_actions { "Edit" "task-add-edit" "Edit tasks" } \ -bulk_action_export_vars { project_item_id - project_id - {my_key 1} {return_url} } \ -sub_class { @@ -254,6 +338,10 @@ project_item_id { hide_p 1 } + instance_id { + hide_p 1 + where_clause {ti.process_instance = :instance_id} + } orderby_subproject { hide_p 1 } @@ -262,39 +350,44 @@ } } \ -orderby { - default_value latest_start,asc + default_value $default_orderby title { - orderby_asc "status_type desc, title asc, task_id asc" - orderby_desc "status_type asc, title desc, task_id desc" + orderby_asc "title asc, task_item_id asc" + orderby_desc "title desc, task_item_id desc" default_direction asc } + priority { + orderby_asc "priority, earliest_start, task_item_id asc, u.first_names, u.last_name" + orderby_desc "priority desc, earliest_start desc, task_item_id desc, u.first_names, u.last_name" + default_direction desc + } earliest_start { - orderby_asc "status_type desc, earliest_start, task_id asc, u.first_names, u.last_name" - orderby_desc "status_type asc, earliest_start desc, task_id desc, u.first_names, u.last_name" + orderby_asc "earliest_start, task_item_id asc, u.first_names, u.last_name" + orderby_desc "earliest_start desc, task_item_id desc, u.first_names, u.last_name" default_direction asc } earliest_finish { - orderby_asc "status_type desc, earliest_finish, task_id asc, u.first_names, u.last_name" - orderby_desc "status_type asc, earliest_finish desc, task_id desc, u.first_names, u.last_name" + orderby_asc "earliest_finish, task_item_id asc, u.first_names, u.last_name" + orderby_desc "earliest_finish desc, task_item_id desc, u.first_names, u.last_name" default_direction asc } latest_start { - orderby_asc "status_type desc, latest_start, task_id asc, u.first_names, u.last_name" - orderby_desc "status_type asc, latest_start desc, task_id desc, u.first_names, u.last_name" + orderby_asc "latest_start, task_item_id asc, u.first_names, u.last_name" + orderby_desc "latest_start desc, task_item_id desc, u.first_names, u.last_name" default_direction asc } latest_finish { - orderby_asc "status_type desc, latest_finish, task_id asc, u.first_names, u.last_name" - orderby_desc "status_type asc, latest_finish desc, task_id desc, u.first_names, u.last_name" + orderby_asc "latest_finish, task_item_id asc, u.first_names, u.last_name" + orderby_desc "latest_finish desc, task_item_id desc, u.first_names, u.last_name" default_direction asc } } \ -orderby_name orderby_tasks -db_multirow -extend { item_url earliest_start_pretty earliest_finish_pretty latest_start_pretty latest_finish_pretty slack_time} tasks project_tasks_query { +db_multirow -extend { item_url earliest_start_pretty earliest_finish_pretty latest_start_pretty latest_finish_pretty slack_time my_user_id} tasks project_tasks_query { } { - set item_url [export_vars -base "task-one" { revision_id task_id}] + set item_url [export_vars -base "task-one" { {task_id $task_item_id}}] set earliest_start_pretty [lc_time_fmt $earliest_start "%x"] set earliest_finish_pretty [lc_time_fmt $earliest_finish "%x"] @@ -305,7 +398,8 @@ -earliest_start_j $earliest_start_j \ -today_j $today_j \ -latest_start_j $latest_start_j] - + + set my_user_id $user_id } @@ -365,6 +459,11 @@ -elements { user_name { label "Who" + display_template { + + @people.user_name@ + + } } role_name { label "Role"