Index: openacs-4/packages/calendar-portlet/www/calendar-full-portlet.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/calendar-portlet/www/calendar-full-portlet.tcl,v diff -u -r1.34 -r1.35 --- openacs-4/packages/calendar-portlet/www/calendar-full-portlet.tcl 2 May 2005 12:45:03 -0000 1.34 +++ openacs-4/packages/calendar-portlet/www/calendar-full-portlet.tcl 15 May 2007 20:14:23 -0000 1.35 @@ -24,7 +24,7 @@ {view ""} {page_num ""} {date ""} - {period_days 30} + {period_days:optional} {julian_date ""} } -properties { @@ -38,7 +38,6 @@ } } - # get stuff out of the config array array set config $cf if {[empty_string_p $view]} { @@ -56,6 +55,33 @@ set show_calendar_name_p 0 } +# set the period_days for calendar's list view, therefore we need +# to check which instance of calendar is currently displayed +if {[apm_package_installed_p dotlrn]} { + set site_node [site_node::get_node_id_from_object_id -object_id [ad_conn package_id]] + set dotlrn_package_id [site_node::closest_ancestor_package -node_id $site_node -package_key dotlrn -include_self] + set community_id [db_string get_community_id {select community_id from dotlrn_communities_all where package_id=:dotlrn_package_id} -default [db_null]] +} else { + set community_id "" +} + +set calendar_id [lindex $list_of_calendar_ids 0] +db_0or1row select_calendar_package_id {select package_id from calendars where calendar_id=:calendar_id} +if { ![info exists period_days] } { + if { [exists_and_not_null community_id] } { + set period_days [parameter::get -package_id $package_id -parameter ListView_DefaultPeriodDays -default 31] + } else { + foreach calendar $list_of_calendar_ids { + # returns 1 if calendar_id is user's personal calendar + if { [calendar::personal_p -calendar_id $calendar] } { + db_0or1row select_calendar_package_id {select package_id from calendars where calendar_id=:calendar} + set period_days [parameter::get -package_id $package_id -parameter ListView_DefaultPeriodDays -default 31] + break + } + } + } +} + if {[llength $list_of_calendar_ids] > 1} { set force_calendar_id [calendar::have_private_p -return_id 1 -calendar_id_list $list_of_calendar_ids -party_id [ad_conn user_id]] } else { @@ -67,6 +93,17 @@ set edit_p [ad_permission_p $force_calendar_id cal_item_edit] set admin_p [ad_permission_p $force_calendar_id calendar_admin] +if {[empty_string_p $view]} { + set view $config(default_view) +} +# else { +# if { [string equal $scoped_p t] && $admin_p } { +# #This is a user scoped portlet. Save the current view for next time. +# ns_log Debug "calendar-full-portlet: Saving view $view for next time." +# portal::set_element_param $config(element_id) default_view $view +# } +# } + # set up some vars if {[empty_string_p $date]} { if {[empty_string_p $julian_date]} { @@ -80,13 +117,15 @@ set current_date $date set date_format "YYYY-MM-DD HH24:MI" set return_url "[ns_conn url]?[ns_conn query]" + set encoded_return_url [ns_urlencode $return_url] +set add_item_url [export_vars -base "calendar/cal-item-new" {{date $current_date} {time_p 1} return_url}] set item_template "\[ad_quotehtml \$item\]" if {$create_p} { - set hour_template "\$localized_day_current_hour" - set item_add_template "+" + set hour_template "\$localized_day_current_hour" + set item_add_template "+" } else { set hour_template "\$localized_day_current_hour" set item_add_template "" @@ -175,12 +214,17 @@ set url_template "?view=list&sort_by=\$order_by&page_num=$page_num" } -ad_return_template +set export [ns_queryget export] - - - - - - - +if { [lsearch [list csv vcalendar] $export] != -1 } { + set user_id [ad_conn user_id] + set package_id [ad_conn package_id] + if { [string equal $view list] } { + calendar::export::$export -calendar_id_list $list_of_calendar_ids -view $view -date $date -start_date $start_date -end_date $end_date $user_id $package_id + } else { + calendar::export::$export -calendar_id_list $list_of_calendar_ids -view $view -date $date $user_id $package_id + } + ad_script_abort +} else { + ad_return_template +}