Index: openacs-4/packages/project-manager/lib/all-party-projects.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/all-party-projects.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/project-manager/lib/all-party-projects.adp 11 Nov 2005 20:20:24 -0000 1.1 @@ -0,0 +1,6 @@ + + + + + + Index: openacs-4/packages/project-manager/lib/all-party-projects.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/all-party-projects.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/project-manager/lib/all-party-projects.tcl 11 Nov 2005 20:20:24 -0000 1.1 @@ -0,0 +1,210 @@ +# Author: Miguel Marin (miguelmarin@viaro.net) +# Author: Viaro Networs www.viaro.net +# creation_date: 2005-11-11 +# +# Description: Display all projects across all project-manager instances +# where a user id is currently working on. +# +# Required Values: +# --------------- +# from_party_id To get the tasks from. +# +# Order by: +# -------- +# ap_orderby To sort the list using this orderby value +# +# Other Values: +# ------------- +# elements A list of the elements to show in the list. +# format The format of the listtemplate layout. Default to "normal" +# show_filters_p Boolean that indicates if you want to show the filters or not +# ped_filter Show projects that have set the planned_end_date value. + +set required_param_list [list from_party_id] +set optional_param_list [list format show_filters_p elements] +set optional_unset_list [list ped_filter ap_orderby] + +foreach required_param $required_param_list { + if {![info exists $required_param]} { + return -code error "$required_param is a required parameter." + } +} + +foreach optional_param $optional_param_list { + if {![info exists $optional_param]} { + set $optional_param {} + } +} + +foreach optional_unset $optional_unset_list { + if {[info exists $optional_unset]} { + if {[empty_string_p [set $optional_unset]]} { + unset $optional_unset + } + } +} + +if {![exists_and_not_null ped_filter] } { + set ped_filter 1 +} + +if {![info exists format]} { + set format "normal" +} + +set exporting_vars { status_id category_id format } +set hidden_vars [export_vars -form $exporting_vars] + + +# set up context bar +set context [list] + +# the unique identifier for this package +set user_id [ad_maybe_redirect_for_registration] + + +# Get url of the contacts package if it has been mounted for the links on the index page. +set contacts_url [util_memoize [list site_node::get_package_url -package_key contacts]] +if {[empty_string_p $contacts_url]} { + set contacts_p 0 + set contact_column "@projects.customer_name@" +} else { + set contacts_p 1 + set contact_column "@projects.customer_name@" +} + +# Get the rows to display +if { ![exists_and_not_null elements] } { + set elements [list project_name customer_name status_id planned_end_date] +} + +foreach element $elements { + lappend row_list $element + lappend row_list [list] +} + +set ped_where_clause "" +if { [exists_and_not_null ped_filter] } { + switch $ped_filter { + 2 { + set ped_where_clause "" + } + 1 { + set ped_where_clause "proj.planned_end_date is not null" + } + 0 { + set ped_where_clause "proj.planned_end_date is null" + } + } +} + +set actions [list] +set bulk_actions [list] + +template::list::create \ + -name "projects" \ + -multirow projects \ + -selected_format $format \ + -key project_item_id \ + -row_pretty_plural "Projects" \ + -orderby_name "ap_orderby" \ + -elements { + project_name { + label "[_ project-manager.Project_name]" + link_url_col item_url + link_html { title "[_ project-manager.lt_View_this_project_ver]" } + } + customer_name { + label "[_ project-manager.Customer]" + display_template { + + $contact_column + + + @projects.customer_name@ + + } + } + status_id { + label "[_ project-manager.Status_1]" + display_template { + + #project-manager.Closed# + + + #project-manager.Open# + + } + } + planned_end_date { + label "[_ project-manager.Deadline]" + display_template { + + @projects.planned_end_date@ + + + @projects.planned_end_date@ + + } + } + } \ + -actions $actions \ + -bulk_actions $bulk_actions \ + -sub_class { + narrow + } -filters { + ped_filter { + label "[_ project-manager.Deadline]" + values { { [_ project-manager.All] "2"} {[_ project-manager.Yes] "1"} { [_ project-manager.No] "0"}} + where_clause $ped_where_clause + } + } -orderby { + default_value planned_end_date + project_name { + label "[_ project-manager.Project_name]" + orderby_asc "proj.project_name asc" + orderby_desc "proj.project_name desc" + default_direction asc + } + planned_end_date { + label "[_ project-manager.Deadline_1]" + orderby_asc "proj.planned_end_date asc" + orderby_desc "proj.planned_end_date desc" + default_direction desc + } + } -formats { + normal { + label "[_ project-manager.Table]" + layout table + row $row_list + } + csv { + label "[_ project-manager.CSV]" + output csv + page_size 0 + row $row_list + } + } \ + -html { + width 100% + } + +db_multirow -extend { item_url customer_name red_title_p } "projects" projects { } { + acs_object::get -object_id $project_item_id -array project_array + set base_url [lindex [site_node::get_url_from_object_id -object_id $project_array(package_id)] 0] + set item_url [export_vars -base "${base_url}one" {project_item_id}] + + set customer_name "" + if { $contacts_p } { + set customer_name [contact::name -party_id $customer_id] + } + + set red_title_p 0 + set sysdate [dt_sysdate -format "%Y-%m-%d %H:%M:%S"] + if { $sysdate > $planned_end_date } { + set red_title_p 1 + } +} + +ad_return_template + Index: openacs-4/packages/project-manager/lib/all-party-projects.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/all-party-projects.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/project-manager/lib/all-party-projects.xql 11 Nov 2005 20:20:24 -0000 1.1 @@ -0,0 +1,46 @@ + + + + + + select + * + from ( + select + distinct + p.item_id as project_item_id, + p.project_id, + p.status_id, + p.parent_id as folder_id, + p.object_type as content_type, + p.title as project_name, + p.project_code, + to_char(p.planned_end_date, 'YYYY-MM-DD HH24:MI:SS') as planned_end_date, + p.ongoing_p, + p.customer_id as customer_id, f.package_id + from + pm_projectsx p, + cr_items i, + cr_folders f, + pm_project_assignment a + where + p.project_id = i.live_revision + and i.parent_id = f.folder_id + and a.project_id = p.item_id + and a.party_id = :from_party_id + ) proj + where + exists ( + select 1 + from acs_object_party_privilege_map ppm + where ppm.object_id = proj.project_id + and ppm.privilege = 'read' + and ppm.party_id = :user_id + ) + and proj.status_id = '1' + [template::list::filter_where_clauses -and -name projects] + [template::list::orderby_clause -name projects -orderby] + + + +