Index: openacs-4/packages/project-manager/lib/customer-group-list.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/customer-group-list.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/project-manager/lib/customer-group-list.adp 5 Oct 2005 18:24:24 -0000 1.1 @@ -0,0 +1,10 @@ + + + + + + + + + +
\ No newline at end of file Index: openacs-4/packages/project-manager/lib/customer-group-list.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/customer-group-list.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/project-manager/lib/customer-group-list.tcl 5 Oct 2005 18:24:24 -0000 1.1 @@ -0,0 +1,144 @@ +# /packages/project-manager/lib/customer-group-list.tcl +# +# author Miguel Marin (miguelmarin@viaro.net) +# author Viaro Netorks www.viaro.net +# creation-date 2005-10-05 +# +# Displays a list of users that are part of a group specified in group_name +# that have worked on a project for one customer specified in customer_id +# +# Use it as an include in an adp file: +# +# +# +# Where: +# group_name (required) The name of the group to get the members list +# customer_id (required) The customer_id of the customer to get the projects. +# show_filter_p (optional) If you want to show the filters or not. Default to "t" +# elemetns (optional) Elements to show in the list template. If not provided +# then will show just: name email project_name deadline. +# cgl_orderby (optional) The orderby variable to know how to sort the list +# page (optional) The page number of the pagination. Default to "1". +# In orther to the pagination work entirelly you need to provide +# this variable. +# page_size (optional) Number that specified how many rows will be shown on the list. +# Defautl to 5. + +set required_param_list [list group_name customer_id] +set optional_param_list [list show_filter_p elements page page_size] +set optional_unset_list [list cgl_orderby] + +# Checking required parameters +foreach required_param $required_param_list { + if {![info exists $required_param]} { + return -code error "$required_param is a required parameter." + } +} + +# We verify if the group exist or not in the system +set group_id [group::get_id -group_name $group_name] +if { [empty_string_p $group_id] } { + ad_return_complaint 1 "The Group \"$group_name\" doesn't exist on the system" + ad_script_abort +} + +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 show_filter_p] } { + set show_filter_p "t" +} + +if { ![exists_and_not_null page] } { + set page 1 +} + +if { ![exists_and_not_null page_size] } { + set page_size 5 +} + +# To see wich elements we will show on the list +set rows_list [list] +if { ![exists_and_not_null elements] } { + set rows_list [list name email project_name deadline] +} else { + foreach element $elements { + lappend rows_list $element + lappend rows_list [list] + } +} + +# Get the group members list +set group_members_list [group::get_members -group_id $group_id] + +# We set the default format of the table, right now always using "normal" +set format normal + +template::list::create \ + -name members \ + -multirow members \ + -selected_format normal \ + -page_query_name get_members_pagination \ + -page_size $page_size \ + -page_flush_p f \ + -key "proj.item_id" \ + -filters { + page_size + } -elements { + name { + label "[_ project-manager.Name]:" + display_template { + @members.name@ + } + } + email { + label "[_ project-manager.Email]:" + } + project_name { + label "[_ project-manager.Project]" + display_template { + @members.project_name@ + } + } + deadline { + label "[_ project-manager.Deadline]" + } + } -orderby_name cgl_orderby \ + -orderby { + deadline { + label "[_ project-manager.Deadline_1]" + orderby_desc {deadline desc, name desc} + orderby_asc {deadline asc, name asc } + } + } -formats { + normal { + label "[_ project-manager.Table]" + layout table + row $rows_list + } + } + +# Create the multirow +db_multirow -extend { project_name project_url } members get_members { } { + set project_name [pm::project::name -project_item_id $project_id] + set project_url "[site_node::get_url_from_object_id -object_id $object_package_id]one?project_item_id=$project_id" +} \ No newline at end of file Index: openacs-4/packages/project-manager/lib/customer-group-list.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/project-manager/lib/customer-group-list.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/project-manager/lib/customer-group-list.xql 5 Oct 2005 18:24:24 -0000 1.1 @@ -0,0 +1,53 @@ + + + + + + select + distinct + pa.*, + pn.party_name as name, + p.email as email, + to_char(proj.planned_end_date, 'YYYY-MM-DD') as deadline, + proj.object_package_id + from + pm_project_assignment pa, + party_names pn, + parties p, + pm_projectsx proj + where + p.party_id = pn.party_id + and pa.party_id = pn.party_id + and proj.item_id = pa.project_id + and pa.party_id in ([template::util::tcl_to_sql_list $group_members_list]) + and proj.customer_id = :customer_id + and [template::list::page_where_clause -name "members"] + [template::list::orderby_clause -orderby -name "members"] + + + + + + select + distinct + pa.*, + pn.party_name as name, + p.email as email, + to_char(proj.planned_end_date, 'YYYY-MM-DD') as deadline, + proj.object_package_id + from + pm_project_assignment pa, + party_names pn, + parties p, + pm_projectsx proj + where + p.party_id = pn.party_id + and pa.party_id = pn.party_id + and proj.item_id = pa.project_id + and pa.party_id in ([template::util::tcl_to_sql_list $group_members_list]) + and proj.customer_id = :customer_id + [template::list::orderby_clause -orderby -name members] + + + + \ No newline at end of file