Index: openacs-4/packages/news/tcl/news-apm-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news/tcl/news-apm-callback-procs.tcl,v diff -u -r1.3 -r1.4 --- openacs-4/packages/news/tcl/news-apm-callback-procs.tcl 4 Aug 2005 02:10:00 -0000 1.3 +++ openacs-4/packages/news/tcl/news-apm-callback-procs.tcl 8 Aug 2006 21:27:04 -0000 1.4 @@ -14,7 +14,7 @@ ad_proc -public ::news::install::after_install { } { - Setup RSS support service contract + Setup service contracts @author Dave Bauer (dave@thedesignexperience.org) @creation-date 2005-01-20 @@ -24,8 +24,16 @@ @error } { news::sc::register_news_fts_impl + news::install::register_rss + news::install::register_notifications - set spec { +} + +ad_proc -public ::news::install::register_rss { +} { + setup RSS support +} { +set spec { name "news" aliases { datasource news__rss_datasource @@ -37,7 +45,23 @@ acs_sc::impl::new_from_spec -spec $spec } -ad_proc -public ::news::install::after_mount { +ad_proc -public ::news::install::register_notifications { +} { + setup notifications +} { + db_transaction { + # Create the impl and aliases for a news item + set impl_id [create_news_item_impl] + + # Create the notification type for a news item + set type_id [create_news_item_type $impl_id] + + # Enable the delivery intervals and delivery methods for a news item + enable_intervals_and_methods $type_id + } +} + +ad_proc -public ::news::install::after_instantiate { -package_id -node_id } { @@ -57,7 +81,7 @@ -impl_name "news" \ -owner "news" \ -lastbuild ""] - rss_gen_report $subscr_id + } ad_proc -private news::install::after_upgrade { @@ -71,8 +95,23 @@ -to_version_name $to_version_name \ -spec { 5.1.0d1 5.1.0b1 { - news::install::after_install + news::install::register_rss + news::install::register_notifications } + 5.2.0d3 5.2.0d4 { + + } + 5.2.0d4 5.2.0d5 { + + # Create the impl and aliases for a news item + set impl_id [create_news_item_impl] + + # Create the notification type for a news item + set type_id [create_news_item_type $impl_id] + + # Enable the delivery intervals and delivery methods for a news item + enable_intervals_and_methods $type_id + } } } @@ -94,3 +133,56 @@ news_items_delete [db_list dead_news ""] rss_support::del_subscription -summary_context_id $package_id -owner news -impl_name news } + +ad_proc -public create_news_item_impl { + +} { + Register the service contract implementation and return the impl_id + @return impl_id of the created implementation +} { + return [acs_sc::impl::new_from_spec -spec { + name news_item_notif_type + contract_name NotificationType + owner news + aliases { + GetURL news_notification_get_url + ProcessReply news_notification_process_reply + } + }] +} + +ad_proc -public create_news_item_type { + impl_id +} { + Create the notification type for one news item + @return the type_id of the created type +} { + return [notification::type::new \ + -sc_impl_id $impl_id \ + -short_name one_news_item_notif \ + -pretty_name "One News Item" \ + -description "Notification of a new news item"] +} + + +ad_proc -public enable_intervals_and_methods {type_id} { + Enable the intervals and delivery methods of a specific type +} { + # Enable the various intervals and delivery method + notification::type::interval_enable \ + -type_id $type_id \ + -interval_id [notification::interval::get_id_from_name -name instant] + + notification::type::interval_enable \ + -type_id $type_id \ + -interval_id [notification::interval::get_id_from_name -name hourly] + + notification::type::interval_enable \ + -type_id $type_id \ + -interval_id [notification::interval::get_id_from_name -name daily] + + # Enable the delivery methods + notification::type::delivery_method_enable \ + -type_id $type_id \ + -delivery_method_id [notification::delivery::get_id -short_name email] +}