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
+}