Index: openacs-4/packages/lars-blogger/tcl/category-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/category-procs-oracle.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/tcl/category-procs-oracle.xql 24 Nov 2003 13:32:15 -0000 1.1.2.1 @@ -0,0 +1,22 @@ + + + + oracle8.1.6 + + + + begin + :1 := pinds_blog_category.new ( + category_id => :category_id, + package_id => :package_id, + name => :name, + short_name => :short_name, + creation_user => :creation_user, + creation_ip => :creation_ip + ); + end; + + + + + Index: openacs-4/packages/lars-blogger/tcl/category-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/category-procs-postgresql.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/tcl/category-procs-postgresql.xql 24 Nov 2003 13:32:15 -0000 1.1.2.1 @@ -0,0 +1,20 @@ + + + + postgresql7.1 + + + + select pinds_blog_category__new ( + :category_id, + :package_id, + :name, + :short_name, + :creation_user, + :creation_ip + ) + + + + + Index: openacs-4/packages/lars-blogger/tcl/category-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/category-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/tcl/category-procs.tcl 24 Nov 2003 13:32:15 -0000 1.1.2.1 @@ -0,0 +1,48 @@ +ad_library { + Category Tcl APi +} + +namespace eval lars_blogger {} +namespace eval lars_blogger::category {} + +ad_proc lars_blogger::category::new { + {-package_id ""} + {-name:required} + {-category_id ""} + {-short_name ""} +} { + @return category_id of new category +} { + set creation_user [ad_conn user_id] + set creation_ip [ns_conn peeraddr] + + if { [empty_string_p $category_id] } { + set category_id [db_nextval acs_object_id_seq] + } + if { [empty_string_p $package_id] } { + set package_id [ad_conn package_id] + } + if { [empty_string_p $short_name] } { + set existing_short_names [lars_blogger::category::get_existing_short_names -package_id $package_id] + set short_name [util_text_to_url -existing_urls $existing_short_names -text $name] + } + + return [db_exec_plsql insert_category {}] +} + +ad_proc lars_blogger::category::edit { + {-category_id:required} + {-name:required} + {-short_name ""} +} { + @return category_id of new category +} { + return [db_exec_plsql update_category {}] +} + +ad_proc lars_blogger::category::get_existing_short_names { + {-package_id ""} +} { + return [db_list short_names {}] +} + Index: openacs-4/packages/lars-blogger/tcl/category-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/category-procs.xql,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/tcl/category-procs.xql 24 Nov 2003 13:32:15 -0000 1.1.2.1 @@ -0,0 +1,23 @@ + + + + + + + select short_name + from pinds_blog_categories + where package_id = :package_id + + + + + + update pinds_blog_categories + set name = :name, + short_name = :short_name + where category_id = :category_id + + + + + Index: openacs-4/packages/lars-blogger/tcl/entry-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/entry-procs-oracle.xql,v diff -u -N -r1.4 -r1.4.2.1 --- openacs-4/packages/lars-blogger/tcl/entry-procs-oracle.xql 17 Oct 2003 00:39:22 -0000 1.4 +++ openacs-4/packages/lars-blogger/tcl/entry-procs-oracle.xql 24 Nov 2003 13:32:15 -0000 1.4.2.1 @@ -3,6 +3,25 @@ oracle8.1.6 + + + begin + :1 := pinds_blog_entry.new ( + entry_id => :entry_id, + package_id => :package_id, + title => :title, + title_url => :title_url, + content => :content, + content_format => :content_format, + entry_date => nvl(to_date(:entry_date, 'YYYY-MM-DD'), sysdate), + draft_p => :draft_p, + creation_user => :creation_user, + creation_ip => :creation_ip + ); + end; + + + select b.entry_id, Index: openacs-4/packages/lars-blogger/tcl/entry-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/entry-procs-postgresql.xql,v diff -u -N -r1.4 -r1.4.2.1 --- openacs-4/packages/lars-blogger/tcl/entry-procs-postgresql.xql 1 Oct 2003 19:12:05 -0000 1.4 +++ openacs-4/packages/lars-blogger/tcl/entry-procs-postgresql.xql 24 Nov 2003 13:32:15 -0000 1.4.2.1 @@ -3,6 +3,24 @@ postgresql7.1 + + + select pinds_blog_entry__new ( + :entry_id, + :package_id, + :title, + :title_url, + :category_id, + :content, + :content_format, + coalesce(to_date(:entry_date, 'YYYY-MM-DD'), current_timestamp), + :draft_p, + :creation_user, + :creation_ip + ) + + + select b.entry_id, Index: openacs-4/packages/lars-blogger/tcl/entry-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/entry-procs.tcl,v diff -u -N -r1.9 -r1.9.2.1 --- openacs-4/packages/lars-blogger/tcl/entry-procs.tcl 1 Nov 2003 08:45:38 -0000 1.9 +++ openacs-4/packages/lars-blogger/tcl/entry-procs.tcl 24 Nov 2003 13:32:15 -0000 1.9.2.1 @@ -2,8 +2,46 @@ Entry procs for blogger. } +namespace eval lars_blogger {} namespace eval lars_blogger::entry {} +ad_proc -public lars_blogger::entry::new { + {-entry_id ""} + {-package_id ""} + {-title:required} + {-title_url ""} + {-category_id ""} + {-content ""} + {-content_format "text/plain"} + {-entry_date ""} + {-draft_p "t"} +} { + Add the blog entry and then flush the cache so that the new entry shows up. +} { + set creation_user [ad_conn user_id] + set creation_ip [ns_conn peeraddr] + + if { [empty_string_p $package_id] } { + set package_id [ad_conn package_id] + } + + db_transaction { + # Create the entry + set entry_id [db_exec_plsql entry_add {}] + lars_blog_flush_cache $package_id + } + + # If publish directly, fire off notifications and ping weblogs.com + if { [string equal $draft_p "f"] } { + lars_blogger::entry::publish \ + -entry_id $entry_id \ + -package_id $package_id \ + -no_update + } + + return $entry_id +} + ad_proc -public lars_blogger::entry::get { -entry_id:required -array:required @@ -30,7 +68,7 @@ } { if { !$no_update_p } { # Set draft_p = 'f' - db_dml update_entry { *SQL* } + db_dml update_entry {} # Flush cache lars_blog_flush_cache } @@ -40,12 +78,9 @@ ns_conn close } - # Setup instance feed if needed + # Setup instance/user feeds if needed lars_blog_setup_feed -package_id $package_id - # Setup user feed if needed - lars_blog_setup_feed -user -package_id $package_id - # Notifications lars_blogger::entry::do_notifications -entry_id $entry_id Index: openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-oracle.xql,v diff -u -N -r1.4 -r1.4.2.1 --- openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-oracle.xql 28 Aug 2003 09:41:55 -0000 1.4 +++ openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-oracle.xql 24 Nov 2003 13:32:15 -0000 1.4.2.1 @@ -3,25 +3,6 @@ oracle8.1.6 - - - begin - :1 := pinds_blog_entry.new ( - entry_id => :entry_id, - package_id => :package_id, - title => :title, - title_url => :title_url, - content => :content, - content_format => :content_format, - entry_date => to_date(:entry_date, 'YYYY-MM-DD'), - draft_p => :draft_p, - creation_user => :creation_user, - creation_ip => :creation_ip - ); - end; - - - begin Index: openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-postgresql.xql,v diff -u -N -r1.5 -r1.5.2.1 --- openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-postgresql.xql 29 Sep 2003 08:05:42 -0000 1.5 +++ openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-postgresql.xql 24 Nov 2003 13:32:15 -0000 1.5.2.1 @@ -3,24 +3,6 @@ postgresql7.1 - - - select pinds_blog_entry__new ( - :entry_id, - :package_id, - :title, - :title_url, - :category_id, - :content, - :content_format, - to_date(:entry_date, 'YYYY-MM-DD'), - :draft_p, - :creation_user, - :creation_ip - ) - - - select weblogger_channel__new ( Index: openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.tcl,v diff -u -N -r1.13 -r1.13.2.1 --- openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.tcl 21 Oct 2003 20:31:06 -0000 1.13 +++ openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.tcl 24 Nov 2003 13:32:15 -0000 1.13.2.1 @@ -5,7 +5,7 @@ @cvs-id $Id$ } -ad_proc -public lars_blog_entry_add { +ad_proc -deprecated -warn lars_blog_entry_add { {-entry_id:required} {-package_id:required} {-title:required} @@ -16,26 +16,18 @@ {-entry_date:required} {-draft_p:required} } { - Add the blog entry and then flush the cache so that the new entry shows up. + Add the blog entry and then flush the cache so that the new entry shows up. } { - set creation_user [ad_conn user_id] - set creation_ip [ns_conn peeraddr] - - db_transaction { - # Create the entry - set entry_id [db_exec_plsql entry_add {}] - lars_blog_flush_cache $package_id - } - - # If publish directly, fire off notifications and ping weblogs.com - if { [string equal $draft_p "f"] } { - lars_blogger::entry::publish \ - -entry_id $entry_id \ - -package_id $package_id \ - -no_update - } - - return $entry_id + return [lars_blogger::entry::new \ + -entry_id $entry_id \ + -package_id $package_id \ + -title $title \ + -title_url $title_url \ + -category_id $category_id \ + -content $content \ + -content_format $content_format \ + -entry_date $entry_date \ + -draft_p $draft_p] } ad_proc lars_blog_setup_feed { @@ -51,61 +43,64 @@ set creation_user [ad_conn user_id] set creation_ip [ns_conn peeraddr] - if { !$user_p } { - if { [parameter::get -parameter "package_rss_feed_p" -default 1]} { + # Package feed + if { [parameter::get -parameter "package_rss_feed_p" -package_id $package_id -default 1] } { + + # check whether there's been a channel setup for this instance + set summary_context_id [db_string select_instance_channel {} -default {}] - # check whether there's been a channel setup for this instance - set summary_context_id [db_string select_instance_channel {} -default {}] + if { [empty_string_p $summary_context_id] } { + # Setup a channel for this instance + set summary_context_id [db_exec_plsql create_instance_channel {}] + } + + # check whether there's been a feed setup for this instance + set exists_instance_feed_p [db_string exists_instance_feed_p {}] + + if { [string equal $exists_instance_feed_p "0"] } { + # Setup an RSS feed for this instance + set channel_link [lars_blog_public_package_url] - if { [empty_string_p $summary_context_id] } { - # Setup a channel for this instance - set summary_context_id [db_exec_plsql create_instance_channel {}] - } + set subscr_id [db_exec_plsql create_subscr {}] + db_dml update_subscr {} - # check whether there's been a feed setup for this instance - set exists_instance_feed_p [db_string exists_instance_feed_p {}] - - if { [string equal $exists_instance_feed_p "0"] } { - # Setup an RSS feed for this instance - set channel_link [lars_blog_public_package_url] - - set subscr_id [db_exec_plsql create_subscr {}] - db_dml update_subscr {} - - # Run it now - rss_gen_report $subscr_id - } + # Run it now + rss_gen_report $subscr_id } - } else { - if {[parameter::get -parameter "user_rss_feed_p" -default 0]} { + } - # check whether there's been a channel setup for this instance - set summary_context_id [db_string select_user_channel {} -default {}] + if { [parameter::get -parameter "user_rss_feed_p" -package_id $package_id -default 0] } { - if { [empty_string_p $summary_context_id] } { - # Setup a channel for this instance - set summary_context_id [db_exec_plsql create_user_channel {}] - } + # check whether there's been a channel setup for this instance + set summary_context_id [db_string select_user_channel {} -default {}] - # check whether there's been a feed setup for this user - set exists_user_feed_p [db_string exists_user_feed_p {}] - set screen_name [db_string screen_name {}] + if { [empty_string_p $summary_context_id] } { + # Setup a channel for this instance + set summary_context_id [db_exec_plsql create_user_channel {}] + } - if { [string equal $exists_user_feed_p "0"] && ![empty_string_p $screen_name] } { - # Setup an RSS feed for the user - set channel_link "[lars_blog_public_package_url]user/$screen_name/" + # check whether there's been a feed setup for this user + set exists_user_feed_p [db_string exists_user_feed_p {}] - set subscr_id [db_exec_plsql create_subscr {}] - db_dml update_subscr {} - + if { !$exists_user_feed_p } { + set screen_name [acs_user::get_element -user_id $creation_user -element screen_name] + + if { ![empty_string_p $screen_name] } { + # Setup an RSS feed for the user + set channel_link "[lars_blog_public_package_url]user/$screen_name/" + + set subscr_id [db_exec_plsql create_subscr {}] + db_dml update_subscr {} + # Run it now rss_gen_report $subscr_id + } else { + ns_log Warning "lars-blogger: User $creation_user has no screen_name, cannot setup an RSS feed for user" } } } } - ad_proc -private lars_blog_get_as_string_mem { package_id admin_p Index: openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.xql,v diff -u -N -r1.2 -r1.2.2.1 --- openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.xql 28 Aug 2003 09:41:55 -0000 1.2 +++ openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.xql 24 Nov 2003 13:32:15 -0000 1.2.2.1 @@ -59,10 +59,4 @@ - - - select screen_name from users where user_id = :creation_user - - - Index: openacs-4/packages/lars-blogger/tcl/rss-procs-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/rss-procs-oracle.xql,v diff -u -N -r1.4 -r1.4.2.1 --- openacs-4/packages/lars-blogger/tcl/rss-procs-oracle.xql 28 Sep 2003 16:24:52 -0000 1.4 +++ openacs-4/packages/lars-blogger/tcl/rss-procs-oracle.xql 24 Nov 2003 13:32:15 -0000 1.4.2.1 @@ -13,51 +13,41 @@ select * from (select entry_id, - title, - content, - entry_date, - posted_date, - to_char(posted_date, 'YYYY-MM-DD') as posted_date_string, - to_char(posted_date, 'HH:MI') as posted_time_string, - to_char(posted_date, 'YYYY-MM-DD HH24:MI:SS') as posted_time_ansi, - -6 as tzoffset_hour, - 0 as tzoffset_minute, - to_char(entry_date, 'DD Mon YYYY hh12:MI am') as entry_date_pretty, - to_char(entry_date, 'YYYY/MM/') as entry_archive_url - from pinds_blog_entries - where package_id = :package_id - and draft_p = 'f' - and deleted_p = 'f' - order by entry_date desc, posted_date desc) + e.title, + e.content, + to_char(e.posted_date, 'YYYY-MM-DD HH24:MI:SS') as posted_time_ansi, + c.name as category + from pinds_blog_entries e, + pinds_blog_categories c + where e.package_id = :package_id + and e.draft_p = 'f' + and e.deleted_p = 'f' + and c.category_id = e.category_id (+) + order by e.entry_date desc, e.posted_date desc) where rownum < 11 select * - from (select entry_id, - title, - content, - entry_date, - posted_date, - to_char(posted_date, 'YYYY-MM-DD') as posted_date_string, - to_char(posted_date, 'HH:MI') as posted_time_string, - to_char(posted_date, 'YYYY-MM-DD HH24:MI:SS') as posted_time_ansi, - -6 as tzoffset_hour, - 0 as tzoffset_minute, - to_char(entry_date, 'DD Mon YYYY hh12:MI am') as entry_date_pretty, - to_char(entry_date, 'YYYY/MM/') as entry_archive_url + from (select e.entry_id, + e.title, + e.content, + to_char(e.posted_date, 'YYYY-MM-DD HH24:MI:SS') as posted_time_ansi, + c.name as category from pinds_blog_entries e, acs_objects o, - users u - where e.package_id = :package_id - and o.object_id = e.entry_id - and o.creation_user = :user_id - and u.user_id = o.creation_user - and e.draft_p = 'f' - and e.deleted_p = 'f' - order by e.entry_date desc, e.posted_date desc) + users u, + pinds_blog_categories c + where e.package_id = :package_id + and o.object_id = e.entry_id + and o.creation_user = :user_id + and u.user_id = o.creation_user + and e.draft_p = 'f' + and e.deleted_p = 'f' + and c.category_id = e.category_id (+) + order by e.entry_date desc, e.posted_date desc) where rownum < 11 Index: openacs-4/packages/lars-blogger/tcl/rss-procs-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/rss-procs-postgresql.xql,v diff -u -N -r1.5 -r1.5.2.1 --- openacs-4/packages/lars-blogger/tcl/rss-procs-postgresql.xql 29 Sep 2003 19:53:30 -0000 1.5 +++ openacs-4/packages/lars-blogger/tcl/rss-procs-postgresql.xql 24 Nov 2003 13:32:15 -0000 1.5.2.1 @@ -14,15 +14,7 @@ select e.entry_id, e.title, e.content, - e.entry_date, - e.posted_date, - to_char(e.posted_date, 'YYYY-MM-DD') as posted_date_string, - to_char(e.posted_date, 'HH:MI') as posted_time_string, to_char(e.posted_date, 'YYYY-MM-DD HH24:MI:SS') as posted_time_ansi, - extract(timezone_hour from now()) as tzoffset_hour, - extract(timezone_minute from now()) as tzoffset_minute, - to_char(e.entry_date, 'DD Mon YYYY hh12:MI am') as entry_date_pretty, - to_char(e.entry_date, 'YYYY/MM/') as entry_archive_url, c.name as category from pinds_blog_entries e left outer join pinds_blog_categories c using (category_id) @@ -36,28 +28,21 @@ - select entry_id, - title, - content, - entry_date, - posted_date, - to_char(posted_date, 'YYYY-MM-DD') as posted_date_string, - to_char(posted_date, 'HH:MI') as posted_time_string, - to_char(posted_date, 'YYYY-MM-DD HH24:MI:SS') as posted_time_ansi, - extract(timezone_hour from now()) as tzoffset_hour, - extract(timezone_minute from now()) as tzoffset_minute, - to_char(entry_date, 'DD Mon YYYY hh12:MI am') as entry_date_pretty, - to_char(entry_date, 'YYYY/MM/') as entry_archive_url - - from pinds_blog_entries e join - acs_objects o on (o.object_id = e.entry_id) join - users u on (u.user_id = o.creation_user) - where e.package_id = :package_id - and o.creation_user = :user_id - and e.draft_p = 'f' - and e.deleted_p = 'f' - order by e.entry_date desc, e.posted_date desc - limit 10 + select e.entry_id, + e.title, + e.content, + to_char(e.posted_date, 'YYYY-MM-DD HH24:MI:SS') as posted_time_ansi, + c.name as category + from pinds_blog_entries e join + acs_objects o on (o.object_id = e.entry_id) join + users u on (u.user_id = o.creation_user) left outer join + pinds_blog_categories c using (category_id) + where e.package_id = :package_id + and o.creation_user = :user_id + and e.draft_p = 'f' + and e.deleted_p = 'f' + order by e.entry_date desc, e.posted_date desc + limit 10 Index: openacs-4/packages/lars-blogger/tcl/rss-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/rss-procs.tcl,v diff -u -N -r1.8 -r1.8.2.1 --- openacs-4/packages/lars-blogger/tcl/rss-procs.tcl 29 Sep 2003 19:53:30 -0000 1.8 +++ openacs-4/packages/lars-blogger/tcl/rss-procs.tcl 24 Nov 2003 13:32:15 -0000 1.8.2.1 @@ -5,6 +5,35 @@ @cvs-id $Id$ } +namespace eval lars_blogger {} +namespace eval lars_blogger::rss {} + + +ad_proc -public lars_blogger::rss::get_subscr_id_list { + {-package_id ""} +} { + if { [empty_string_p $package_id] } { + set package_id [ad_conn package_id] + } + + return [db_list select_subscr { + select s.subscr_id + from rss_gen_subscrs s + where s.summary_context_id = :package_id + or s.summary_context_id in (select c.channel_id + from weblogger_channels c + where c.package_id = :package_id) + }] +} + +ad_proc -public lars_blogger::rss::generate { + {-package_id ""} +} { + foreach subscr_id [lars_blogger::rss::get_subscr_id_list -package_id $package_id] { + rss_gen_report $subscr_id + } +} + ad_proc -private lars_blog__rss_datasource { summary_context_id } { @@ -13,7 +42,6 @@ @author Lars Pind (lars@pinds.com) } { - db_transaction { db_1row select_package_id_user_id {} @@ -25,7 +53,7 @@ set blog_url "[ad_url]$package_url" } - + set column_array(channel_title) $blog_title set column_array(channel_description) $blog_title Index: openacs-4/packages/lars-blogger/tcl/test/entry-test-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/tcl/test/entry-test-procs.tcl,v diff -u -N --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/tcl/test/entry-test-procs.tcl 24 Nov 2003 13:32:15 -0000 1.1.2.1 @@ -0,0 +1,68 @@ +ad_library { + Test cases for the entry API. +} + +aa_register_case rss_generation { + Test RSS generation +} { + # Test case written to expose bug in RSS datasource generation: + # The queries had not been updated to get category name. + + aa_run_with_teardown \ + -rollback \ + -test_code { + + # Setup a screen_name + set screen_name [ad_generate_random_string] + acs_user::update -user_id [ad_conn user_id] -screen_name $screen_name + + # Generate a node name + set node_name [site_node::verify_folder_name \ + -parent_node_id [site_node::get_node_id -url /] \ + -instance_name "Weblogger"] + + # Create a package + set package_id [site_node::instantiate_and_mount \ + -package_key "lars-blogger" \ + -node_name $node_name] + + # Create a category + set category_name [ad_generate_random_string] + set category_id [lars_blogger::category::new \ + -name $category_name] + + # Configure to set up a package and user RSS feed + parameter::set_value -parameter "package_rss_feed_p" -package_id $package_id -value 1 + parameter::set_value -parameter "user_rss_feed_p" -package_id $package_id -value 1 + + # Create an entry + set content [ad_generate_random_string] + set entry_id [lars_blogger::entry::new \ + -package_id $package_id \ + -title "Testing" \ + -category_id $category_id \ + -content $content \ + -draft_p "f"] + + lars_blogger::entry::get \ + -entry_id $entry_id \ + -array entry + + aa_equals "Entry content is correct" $entry(content) $content + aa_equals "Entry category is correct" $entry(category_name) $category_name + + # Force a rebuild of the RSS feeds + lars_blogger::rss::generate -package_id $package_id + + # Check that we have to RSS subscriptions + set subscr_ids [lars_blogger::rss::get_subscr_id_list -package_id $package_id] + aa_equals "Two RSS subscriptions (one package, one user)" [llength $subscr_ids] 2 + + # Find the directory, and verify that it exists + foreach subscr_id $subscr_ids { + set report_dir [rss_gen_report_dir -subscr_id $subscr_id] + set report_file $report_dir/rss.xml + aa_true "Report file $report_file exists" [file exists $report_file] + } + } +} Index: openacs-4/packages/lars-blogger/www/category-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/category-edit.tcl,v diff -u -N -r1.5 -r1.5.2.1 --- openacs-4/packages/lars-blogger/www/category-edit.tcl 16 Oct 2003 21:42:22 -0000 1.5 +++ openacs-4/packages/lars-blogger/www/category-edit.tcl 24 Nov 2003 13:32:15 -0000 1.5.2.1 @@ -56,10 +56,7 @@ } -on_submit { - if { [empty_string_p $short_name] } { - set existing_short_names [db_list short_names {}] - set short_name [util_text_to_url -existing_urls $existing_short_names -text $name] - } else { + if { ![empty_string_p $short_name] } { db_1row short_name_exists { *SQL* } if { $short_name_exists > 0 } { form set_error category short_name "This short name is already used by another category" @@ -69,13 +66,18 @@ } -new_data { - set creation_user [ad_conn user_id] - set creation_ip [ns_conn peeraddr] + lars_blogger::category::new \ + -name $name \ + -category_id $category_id \ + -short_name $short_name - db_exec_plsql insert_category {} - } -edit_data { - db_dml update_category {} + + lars_blogger::category::edit \ + -category_id $category_id \ + -name $name \ + -short_name $short_name + } -after_submit { ad_returnredirect $return_url ad_script_abort Index: openacs-4/packages/lars-blogger/www/category-edit.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/category-edit.xql,v diff -u -N -r1.3 -r1.3.2.1 --- openacs-4/packages/lars-blogger/www/category-edit.xql 17 Oct 2003 00:39:22 -0000 1.3 +++ openacs-4/packages/lars-blogger/www/category-edit.xql 24 Nov 2003 13:32:15 -0000 1.3.2.1 @@ -48,14 +48,5 @@ - - - update pinds_blog_categories - set name = :name, - short_name = :short_name - where category_id = :category_id - - - Index: openacs-4/packages/lars-blogger/www/drafts.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/drafts.tcl,v diff -u -N -r1.4 -r1.4.2.1 --- openacs-4/packages/lars-blogger/www/drafts.tcl 7 Nov 2003 17:35:42 -0000 1.4 +++ openacs-4/packages/lars-blogger/www/drafts.tcl 24 Nov 2003 13:32:15 -0000 1.4.2.1 @@ -20,6 +20,11 @@ link_url_eval {[export_vars -base entry-edit { entry_id { return_url [ad_return_url] } }]} link_html { title "Edit entry" } } +lappend elements title { + label "Title" + link_url_eval {[export_vars -base one-entry { entry_id }]} + link_html { title "Preview entry" } +} lappend elements entry_date { label "Date" display_col entry_date_pretty @@ -37,9 +42,7 @@ } lappend elements content { - label "Entry" - link_url_eval {[export_vars -base one-entry { entry_id { return_url [ad_return_url] } }]} - link_html { title "Preview entry" } + label "Content" } lappend elements publish { label {Publish} Index: openacs-4/packages/lars-blogger/www/entry-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/entry-edit.tcl,v diff -u -N -r1.8 -r1.8.2.1 --- openacs-4/packages/lars-blogger/www/entry-edit.tcl 19 Oct 2003 20:25:03 -0000 1.8 +++ openacs-4/packages/lars-blogger/www/entry-edit.tcl 24 Nov 2003 13:32:15 -0000 1.8.2.1 @@ -106,7 +106,7 @@ set insert_or_update [element get_value entry insert_or_update] if { [string equal $insert_or_update "insert"] } { - lars_blog_entry_add \ + lars_blogger::entry::new \ -entry_id $entry_id \ -package_id $package_id \ -title $title \ @@ -137,7 +137,7 @@ lappend set_clauses [db_map now] } - db_dml update_entry { *SQL* } + db_dml update_entry {} # Is this a publish? if { [string equal $draft_p "t"] && [string equal $org_draft_p "f"] } { Index: openacs-4/packages/lars-blogger/www/admin/drafts.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/drafts.adp,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/drafts.adp 22 May 2003 15:01:34 -0000 1.6 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,41 +0,0 @@ - -@page_title;noquote@ -@context_bar;noquote@ - - - No draft entries. - - - - - - -
- - - - - - - - - - - - - - - -
DateTitleContentAction
@draft_entries.entry_date_pretty@@draft_entries.title@@draft_entries.content@ - Preview - Publish - Edit - Delete -
-
-
- -

- Add entry - Add entry -

Index: openacs-4/packages/lars-blogger/www/admin/drafts.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/drafts.tcl,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/drafts.tcl 16 Sep 2002 13:01:34 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,30 +0,0 @@ -ad_page_contract {} { -} -properties { - context_bar -} - -set package_id [ad_conn package_id] - -set admin_p [ad_require_permission $package_id admin] - -set page_title "Draft Entries" - -set context_bar [ad_context_bar $page_title] - -db_multirow -extend { edit_url publish_url delete_url preview_url } draft_entries draft_entries { *SQL* } { - set return_url "[ad_conn url][ad_decode [ad_conn query] "" "" "?[ad_conn query]"]" - set edit_url "[ad_conn package_url]admin/entry-edit?[export_vars { entry_id return_url }]" - set delete_url "[ad_conn package_url]admin/entry-delete?[export_vars { entry_id return_url }]" - set preview_url "[ad_conn package_url]one-entry?[export_vars { entry_id return_url }]" - set publish_url "[ad_conn package_url]admin/entry-publish?[export_vars { entry_id return_url }]" - set content [ns_adp_parse -string $content] -} - -set entry_add_url "entry-edit" - -set arrow_url "[ad_conn package_url]graphics/arrow-box.gif" - -set header_background_color [lars_blog_header_background_color] - -ad_return_template - Index: openacs-4/packages/lars-blogger/www/admin/drafts.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/drafts.xql,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/drafts.xql 14 Sep 2002 16:40:35 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,19 +0,0 @@ - - - - - - - select entry_id, - to_char(entry_date, 'YYYY-MM-DD') as entry_date_pretty, - title, - content - from pinds_blog_entries - where package_id = :package_id - and draft_p = 't' - and deleted_p = 'f' - order by entry_date desc, posted_date desc - - - - Index: openacs-4/packages/lars-blogger/www/admin/entry-delete.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-delete.tcl,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-delete.tcl 19 Aug 2002 21:52:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -ad_page_contract {} { - entry_id:integer - {return_url ""} -} - -db_dml delete { - update pinds_blog_entries - set deleted_p = 't' - where entry_id = :entry_id -} - -ad_returnredirect $return_url \ No newline at end of file Index: openacs-4/packages/lars-blogger/www/admin/entry-delete.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-delete.xql,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-delete.xql 19 Aug 2002 21:52:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,13 +0,0 @@ - - - - - - - update pinds_blog_entries - set deleted_p = 't' - where entry_id = :entry_id - - - - Index: openacs-4/packages/lars-blogger/www/admin/entry-edit-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-edit-oracle.xql,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-edit-oracle.xql 19 Aug 2002 21:52:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,18 +0,0 @@ - - - - oracle8.1.6 - - - - select to_char(sysdate, 'YYYY-MM-DD') from dual - - - - - - posted_date = sysdate - - - - Index: openacs-4/packages/lars-blogger/www/admin/entry-edit-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-edit-postgresql.xql,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-edit-postgresql.xql 19 Aug 2002 21:52:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,18 +0,0 @@ - - - - postgresql7.1 - - - - select to_char(current_timestamp, 'YYYY-MM-DD') - - - - - - posted_date = current_timestamp - - - - Index: openacs-4/packages/lars-blogger/www/admin/entry-edit.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-edit.adp,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-edit.adp 21 Sep 2003 22:17:23 -0000 1.4 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,13 +0,0 @@ - -@page_title;noquote@ -entry.title -@context_bar;noquote@ - - - - - Index: openacs-4/packages/lars-blogger/www/admin/entry-edit.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-edit.tcl,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-edit.tcl 21 Sep 2003 22:17:23 -0000 1.21 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,110 +0,0 @@ -ad_page_contract {} { - {entry_id:integer ""} - {return_url ""} - {title ""} - {content:allhtml ""} -} -properties { - context_bar - today_html -} - -set today [db_string today {}] - -form create entry -cancel_url [ad_decode $return_url "" "../" $return_url] - -element create entry title -label "Title" -datatype text -html { size 50 } -element create entry content -label "Content" -datatype richtext -widget richtext -html { cols 80 rows 20 } -element create entry entry_date -label "Entry date" -datatype text \ - -help_text "If you set this to something other than today's date, you must use this form to publish your entry, otherwise the entry date will be set to the date you publish the item." \ - -after_html {(Set to today)} - -element create entry draft_p -label "Post Status" -datatype text -widget select -options { { "Draft" "t" } { "Publish" "f" } } - -element create entry entry_id -widget hidden -datatype text -element create entry return_url -widget hidden -datatype text -value $return_url - -if { [form is_request entry] } { - - if { [empty_string_p $entry_id] } { - set entry_id [db_nextval "acs_object_id_seq"] - element set_properties entry entry_date -value $today - element set_properties entry draft_p -value "t" - - # Prefill title and content with supplied values - if { [exists_and_not_null title] } { - element set_value entry title $title - } - if { [exists_and_not_null content] } { - element set_value entry content [template::util::richtext::acquire contents $content] - } - - } else { - db_1row entry {} - - element set_value entry content \ - [template::util::richtext::set_property format [template::util::richtext::acquire contents $content] $content_format] - - element set_value entry title $title - element set_value entry entry_date $entry_date - element set_value entry draft_p $draft_p - } - - element set_properties entry entry_id -value $entry_id -} - - -if { [form is_valid entry] } { - set entry_id [element get_value entry entry_id] - set title [element get_value entry title] - set content [template::util::richtext::get_property contents [element get_value entry content]] - set content_format [template::util::richtext::get_property format [element get_value entry content]] - set entry_date [element get_value entry entry_date] - set draft_p [element get_value entry draft_p] - set draft_p [ad_decode $draft_p "" "f" $draft_p] - - set return_url [element get_value entry return_url] - - - if { [db_string entry_exists {}] == 0 } { - lars_blog_entry_add \ - -entry_id $entry_id \ - -package_id [ad_conn package_id] \ - -title $title \ - -content $content \ - -content_format $content_format \ - -entry_date $entry_date \ - -draft_p "$draft_p" - } else { - set set_clauses { - "title = :title" - "content = :content" - "content_format = :content_format" - "entry_date = to_date(:entry_date, 'YYYY-MM-DD')" - "draft_p = :draft_p" - } - - set org_draft_p [db_string org_draft_p {}] - - if { [string equal $draft_p "t"] && [string equal $org_draft_p "f"] } { - # If this is a publish, set the posted_date to now - lappend set_clauses [db_map now] - } - - db_dml update_entry {} - - lars_blog_flush_cache [ad_conn package_id] - } - - if { [empty_string_p $return_url] } { - set return_url "[ad_conn package_url]one-entry?[export_vars { entry_id }]" - } - - ad_returnredirect $return_url - ad_script_abort -} - -set page_title "Blog Entry" - -set context_bar [ad_context_bar $page_title] - -ad_return_template Index: openacs-4/packages/lars-blogger/www/admin/entry-edit.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-edit.xql,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-edit.xql 27 Jan 2003 16:19:43 -0000 1.3 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,37 +0,0 @@ - - - - - - - select count(*) - from pinds_blog_entries - where entry_id = :entry_id - - - - - - select draft_p - from pinds_blog_entries - where entry_id = :entry_id - - - - - - select title, content, content_format, draft_p, to_char(entry_date, 'YYYY-MM-DD') as entry_date - from pinds_blog_entries - where entry_id = :entry_id - - - - - - update pinds_blog_entries - set [join $set_clauses ", "] - where entry_id = :entry_id - - - - Index: openacs-4/packages/lars-blogger/www/admin/entry-publish-oracle.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-publish-oracle.xql,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-publish-oracle.xql 19 Aug 2002 21:52:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,16 +0,0 @@ - - - - oracle8.1.6 - - - - update pinds_blog_entries - set entry_date = trunc(sysdate), - draft_p = 'f', - posted_date = sysdate - where entry_id = :entry_id - - - - Index: openacs-4/packages/lars-blogger/www/admin/entry-publish-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-publish-postgresql.xql,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-publish-postgresql.xql 19 Aug 2002 21:52:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,16 +0,0 @@ - - - - postgresql7.1 - - - - update pinds_blog_entries - set entry_date = date_trunc('day', current_timestamp), - draft_p = 'f', - posted_date = current_timestamp - where entry_id = :entry_id - - - - Index: openacs-4/packages/lars-blogger/www/admin/entry-publish.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-publish.tcl,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-publish.tcl 14 Sep 2002 21:43:37 -0000 1.2 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,19 +0,0 @@ -ad_page_contract {} { - entry_id:integer - {return_url "index"} -} - -db_dml update_entry { *SQL* } - -ad_returnredirect $return_url - -#ns_conn close - -# Notifications -lars_blogger::entry::do_notifications -entry_id $entry_id - -# Ping weblogs.com -lars_blog_weblogs_com_update_ping - -# Flush cache -lars_blog_flush_cache Index: openacs-4/packages/lars-blogger/www/admin/entry-revoke.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-revoke.tcl,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-revoke.tcl 19 Aug 2002 21:52:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,12 +0,0 @@ -ad_page_contract {} { - entry_id:integer - {return_url "index"} -} - -db_dml update_entry { *SQL* } - -ad_returnredirect $return_url -ns_conn close - -# Flush cache -lars_blog_flush_cache Index: openacs-4/packages/lars-blogger/www/admin/entry-revoke.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/Attic/entry-revoke.xql,v diff -u -N --- openacs-4/packages/lars-blogger/www/admin/entry-revoke.xql 19 Aug 2002 21:52:59 -0000 1.1 +++ /dev/null 1 Jan 1970 00:00:00 -0000 @@ -1,13 +0,0 @@ - - - - - - - update pinds_blog_entries - set draft_p = 't' - where entry_id = :entry_id - - - - Index: openacs-4/packages/lars-blogger/www/admin/rss-setup.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/rss-setup.tcl,v diff -u -N -r1.2 -r1.2.2.1 --- openacs-4/packages/lars-blogger/www/admin/rss-setup.tcl 28 Aug 2003 09:41:56 -0000 1.2 +++ openacs-4/packages/lars-blogger/www/admin/rss-setup.tcl 24 Nov 2003 13:32:16 -0000 1.2.2.1 @@ -2,7 +2,7 @@ Setup an RSS feed for this blogger. } -# Setup instance feed if needed +# Setup instance/user feeds if needed lars_blog_setup_feed ad_returnredirect .