Index: openacs-4/packages/news-aggregator-portlet/news-aggregator-portlet.info =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator-portlet/news-aggregator-portlet.info,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator-portlet/news-aggregator-portlet.info 13 Jun 2003 08:53:22 -0000 1.1.2.1 @@ -0,0 +1,25 @@ + + + + + News Aggregator Portlet + News Aggregator Portlets + f + t + + + Simon Carstensen + 2003-05-15 + + + + + + + + + + + + + Index: openacs-4/packages/news-aggregator-portlet/tcl/apm-callback-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator-portlet/tcl/apm-callback-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator-portlet/tcl/apm-callback-procs.tcl 13 Jun 2003 08:53:22 -0000 1.1.2.1 @@ -0,0 +1,212 @@ +ad_library { + Procedures for initializing service contracts etc. for the + news aggregator portlet package. Should only be executed + once upon installation. + + @creation-date 8 May 2003 + @author Simon Carstensen (simon@collaboraid.biz) + @cvs-id $Id: apm-callback-procs.tcl,v 1.1.2.1 2003/06/13 08:53:22 simonc Exp $ +} + + +namespace eval news_aggregator_portlet {} +namespace eval news_aggregator_admin_portlet {} + +ad_proc -private news_aggregator_portlet::after_install {} { + Create the datasources needed by the news aggregator portlet. +} { + + db_transaction { + set ds_id [portal::datasource_new \ + -name "news_aggregator_portlet" \ + -description "News Aggregator Portlet"] + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key shadeable_p \ + -value t + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key hideable_p \ + -value t + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key user_editable_p \ + -value f + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key shaded_p \ + -value f + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key link_hideable_p \ + -value f + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p f \ + -key package_id \ + -value "" + + register_portal_datasource_impl + + news_aggregator_admin_portlet::after_install + + } +} + + + +ad_proc -private news_aggregator_portlet::register_portal_datasource_impl {} { + Create the service contracts needed by the news-aggregator portlet. +} { + set spec { + name "news_aggregator_portlet" + contract_name "portal_datasource" + owner "news-aggregator-portlet" + aliases { + GetMyName news_aggregator_portlet::get_my_name + GetPrettyName news_aggregator_portlet::get_pretty_name + Link news_aggregator_portlet::link + AddSelfToPage news_aggregator_portlet::add_self_to_page + Show news_aggregator_portlet::show + Edit news_aggregator_portlet::edit + RemoveSelfFromPage news_aggregator_portlet::remove_self_from_page + } + } + + acs_sc::impl::new_from_spec -spec $spec +} + + + +ad_proc -private news_aggregator_portlet::uninstall {} { + News Aggregator Portlet package uninstall proc +} { + unregister_implementations + + news_aggregator_admin_portlet::unregister_implementations +} + + + +ad_proc -private news_aggregator_portlet::unregister_implementations {} { + Unregister service contract implementations +} { + acs_sc::impl::delete \ + -contract_name "portal_datasource" \ + -impl_name "news_aggregator_portlet" +} + + + +ad_proc -private news_aggregator_admin_portlet::after_install {} { + Create the datasources needed by the news aggregator portlet. +} { + + db_transaction { + set ds_id [portal::datasource_new \ + -name "news_aggregator_admin_portlet" \ + -description "News Aggregator Admin Portlet"] + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key shadeable_p \ + -value f + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key hideable_p \ + -value f + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key user_editable_p \ + -value f + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key shaded_p \ + -value f + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p t \ + -key link_hideable_p \ + -value t + + portal::datasource_set_def_param \ + -datasource_id $ds_id \ + -config_required_p t \ + -configured_p f \ + -key package_id \ + -value "" + + register_portal_datasource_impl + } +} + + + +ad_proc -private news_aggregator_admin_portlet::register_portal_datasource_impl {} { + Create the service contracts needed by the news-aggregator admin portlet. +} { + set spec { + name "news_aggregator_admin_portlet" + contract_name "portal_datasource" + owner "news-aggregator-portlet" + aliases { + GetMyName news_aggregator_admin_portlet::get_my_name + GetPrettyName news_aggregator_admin_portlet::get_pretty_name + Link news_aggregator_admin_portlet::link + AddSelfToPage news_aggregator_admin_portlet::add_self_to_page + Show news_aggregator_admin_portlet::show + Edit news_aggregator_admin_portlet::edit + RemoveSelfFromPage news_aggregator_admin_portlet::remove_self_from_page + } + } + + acs_sc::impl::new_from_spec -spec $spec +} + + + +ad_proc -private news_aggregator_admin_portlet::before_uninstall {} { + News Aggregator Portlet package uninstall proc +} { + unregister_implementations +} + + + +ad_proc -private news_aggregator_admin_portlet::unregister_implementations {} { + Unregister service contract implementations +} { + acs_sc::impl::delete \ + -contract_name "portal_datasource" \ + -impl_name "news_aggregator_admin_portlet" +} Index: openacs-4/packages/news-aggregator-portlet/tcl/news-aggregator-admin-portlet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator-portlet/tcl/news-aggregator-admin-portlet-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator-portlet/tcl/news-aggregator-admin-portlet-procs.tcl 13 Jun 2003 08:53:22 -0000 1.1.2.1 @@ -0,0 +1,82 @@ +ad_library { + + Procedures to support the news aggregator admin portlet + + @creation-date Mar 2003 + @author simon@bcuni.net + +} + +namespace eval news_aggregator_admin_portlet {} + +ad_proc -private news_aggregator_admin_portlet::get_my_name { +} { + return "news_aggregator_admin_portlet" +} + + + +ad_proc -public news_aggregator_admin_portlet::get_pretty_name { +} { + return "News Aggregator Administration" +} + + + +ad_proc -private news_aggregator_admin_portlet::my_package_key { +} { + return "news-aggregator-portlet" +} + + + +ad_proc -public news_aggregator_admin_portlet::link { +} { + return "" +} + + + +ad_proc -public news_aggregator_admin_portlet::add_self_to_page { + {-portal_id:required} + {-page_name ""} + {-package_id:required} +} { + Adds a news-aggregator admin PE to the given portal + + @param portal_id The page to add self to + @param package_id The package_id of the news-aggregator package + + @return element_id The new element's id +} { + return [portal::add_element_parameters \ + -portal_id $portal_id \ + -portlet_name [get_my_name] \ + -key package_id \ + -value $package_id + ] +} + + + +ad_proc -public news_aggregator_admin_portlet::remove_self_from_page { + {-portal_id:required} +} { + Removes a news-aggregator admin PE from the given page +} { + portal::remove_element \ + -portal_id $portal_id \ + -portlet_name [get_my_name] +} + + + +ad_proc -public news_aggregator_admin_portlet::show { + cf +} { + portal::show_proc_helper \ + -package_key [my_package_key] \ + -config_list $cf \ + -template_src "news-aggregator-admin-portlet" + +} Index: openacs-4/packages/news-aggregator-portlet/tcl/news-aggregator-portlet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator-portlet/tcl/news-aggregator-portlet-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator-portlet/tcl/news-aggregator-portlet-procs.tcl 13 Jun 2003 08:53:22 -0000 1.1.2.1 @@ -0,0 +1,92 @@ +ad_library { + + Procedures to support the news-aggregator portlet + + @creation-date Mar 2003 + @author simon@bcuni.net + +} + +namespace eval news_aggregator_portlet {} + + +ad_proc -private news_aggregator_portlet::get_my_name { +} { + return "news_aggregator_portlet" +} + + + +ad_proc -private news_aggregator_portlet::my_package_key { +} { + return "news-aggregator-portlet" +} + + + +ad_proc -public news_aggregator_portlet::get_pretty_name { +} { + return "News Aggregator" +} + + + +ad_proc -public news_aggregator_portlet::link { +} { + return "" +} + + + +ad_proc -public news_aggregator_portlet::add_self_to_page { + {-portal_id:required} + {-package_id:required} + {-param_action:required} +} { + Adds a news-aggregator PE to the given portal. + + @param portal_id The page to add self to + @param package_id The community with the folder + + @return element_id The new element's id +} { + return [portal::add_element_parameters \ + -portal_id $portal_id \ + -portlet_name [get_my_name] \ + -value $package_id \ + -force_region [parameter::get_from_package_key \ + -parameter "news_aggregator_portlet_force_region" \ + -package_key [my_package_key]] \ + -pretty_name [get_pretty_name] \ + -param_action $param_action + ] +} + + + +ad_proc -public news_aggregator_portlet::remove_self_from_page { + {-portal_id:required} + {-package_id:required} +} { + Removes a news-aggregator PE from the given page or the package_id of the + news-aggregator package from the portlet if there are others remaining + + @param portal_id The page to remove self from + @param package_id +} { + portal::remove_element_parameters \ + -portal_id $portal_id \ + -portlet_name [get_my_name] \ + -value $package_id +} + + + +ad_proc -public news_aggregator_portlet::show { + cf +} { + portal::show_proc_helper \ + -package_key [my_package_key] \ + -config_list $cf \ + -template_src "news-aggregator-portlet" +} Index: openacs-4/packages/news-aggregator-portlet/www/news-aggregator-admin-portlet.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator-portlet/www/news-aggregator-admin-portlet.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator-portlet/www/news-aggregator-admin-portlet.tcl 13 Jun 2003 08:53:23 -0000 1.1.2.1 @@ -0,0 +1,23 @@ +ad_page_contract { + The display logic for the news aggregator portlet + + @author Simon Carstensen (simon@bcuni.net) +} -properties { + +} + + +array set config $cf +set user_id [ad_conn user_id] +set list_of_package_ids $config(package_id) + +if {[llength $list_of_package_ids] > 1} { + # We have a problem! + return -code error "There should be only one instance of news aggregator for admin purposes" +} + +set package_id [lindex $list_of_package_ids 0] +set url [lindex [site_node::get_url_from_object_id -object_id $package_id] 0] + + +ad_return_template Index: openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet-oracle.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet-oracle.xql 13 Jun 2003 08:53:23 -0000 1.1.2.1 @@ -0,0 +1,28 @@ + + + +postgresql7.1 + + + + select s.source_id, + s.link, + s.description, + s.title, + to_char(last_scanned, 'YYYY-MM-DD HH24:MI:SS') as last_scanned, + to_char(creation_date, 'YYYY-MM-DD HH24') as sort_date, + feed_url, + item_id, + i.title as item_title, + i.link as item_link, + i.description as item_description + from na_sources s, na_items i + where s.source_id = i.source_id + and deleted_p = '0' + and package_id in ([join $list_of_package_ids ", "]) + and rownum <= 10 + order by creation_date desc + + + + Index: openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator-portlet/www/Attic/news-aggregator-portlet-postgresql.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet-postgresql.xql 13 Jun 2003 08:53:23 -0000 1.1.2.1 @@ -0,0 +1,31 @@ + + + +postgresql7.1 + + + + select s.source_id, + s.link, + s.description, + s.title, + to_char(last_scanned, 'YYYY-MM-DD HH24:MI:SS') as last_scanned, + to_char(creation_date, 'YYYY-MM-DD HH24') as sort_date, + (select site_node__url(site_nodes.node_id) + from site_nodes + where site_nodes.object_id = package_id) as url, + feed_url, + item_id, + i.title as item_title, + i.link as item_link, + i.description as item_description + from na_sources s left outer join + na_items i on (s.source_id = i.source_id) + where deleted_p = '0' + and package_id in ([join $list_of_package_ids ", "]) + order by creation_date desc + limit 10 + + + + Index: openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet.tcl 13 Jun 2003 08:53:23 -0000 1.1.2.1 @@ -0,0 +1,26 @@ +ad_page_contract { + The display logic for the news aggregator portlet + @author Simon Carstensen (simon@bcuni.net) +} { + item_id:integer,notnull,optional,multiple +} -properties { + +} + +set user_id [ad_conn user_id] +set write_p [ad_permission_p $user_id write] + +array set config $cf +set shaded_p 0 + +set list_of_package_ids $config(package_id) +set one_instance_p [ad_decode [llength $list_of_package_ids] 1 1 0] + +db_multirow -extend content items select_items {} { + set text_only [string_truncate -len 300 $item_description] + if {[exists_and_not_null item_title] && ![string equal -nocase $item_title $text_only] } { + set content "$item_title. $text_only" + } else { + set content $text_only + } +} Index: openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/news-aggregator-portlet/www/news-aggregator-portlet.xql 13 Jun 2003 08:53:23 -0000 1.1.2.1 @@ -0,0 +1,11 @@ + + + + + + + update na_items set deleted_p = '1' where item_id = :delete_id + + + +