Index: openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-categories-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-categories-create.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-categories-create.sql 29 Sep 2003 08:05:42 -0000 1.1 @@ -0,0 +1,106 @@ +-- +-- lars-blogger-categories-create.sql +-- +-- @author Steffen Tiedemann Christensen +-- +-- @cvs-id $Id: lars-blogger-categories-create.sql,v 1.1 2003/09/29 08:05:42 steffenc Exp $ +-- + + +select acs_object_type__create_type ( + 'pinds_blog_category', -- object_type + 'Blog Category', -- pretty_name + 'Blog Categories', -- pretty_plural + 'acs_object', -- supertype + 'pinds_blog_categories', -- table_name + 'category_id', -- id_column + null, -- package_name + 'f', -- abstract_p + null, -- type_extension_table + 'pinds_blog_category__name' -- name_method +); + +create table pinds_blog_categories ( + category_id integer + constraint pinds_blog_category_id_fk + references acs_objects(object_id) + constraint pinds_blog_categories_pk + primary key, + package_id integer + constraint pinds_blog_entry_package_id_kf + references apm_packages(package_id), + name varchar(500) not null, + short_name varchar(50) not null +); + +create or replace function pinds_blog_category__name (integer) +returns varchar as ' +declare + p_category_id alias for $1; + v_name varchar; +begin + select title into v_name + from pinds_blog_categories + where category_id = p_category_id; + return v_name; +end; +' language 'plpgsql'; + +create or replace function pinds_blog_category__new ( + integer, -- category_id + integer, -- package_id + varchar, -- name + varchar, -- short_name + integer, -- creation_user + varchar -- creation_ip +) returns integer as ' +declare + p_category_id alias for $1; + p_package_id alias for $2; + p_name alias for $3; + p_short_name alias for $4; + p_creation_user alias for $5; + p_creation_ip alias for $6; + v_category_id integer; +begin + v_category_id := acs_object__new ( + p_category_id, + ''pinds_blog_category'', + current_timestamp, + p_creation_user, + p_creation_ip, + p_package_id + ); + + insert into pinds_blog_categories ( + category_id, + package_id, + name, + short_name + ) values ( + v_category_id, + p_package_id, + p_name, + p_short_name + ); + + return v_category_id; +end; +' language 'plpgsql'; + +create or replace function pinds_blog_category__delete (integer) +returns integer as ' +declare + p_category_id alias for $1; +begin + update pinds_blog_entries + set category_id = 0 + where category_id = p_category_id; + + delete from pinds_blog_categories + where category_id = p_category_id; + + PERFORM acs_object__delete(p_category_id); + return 0; +end; +' language 'plpgsql'; Index: openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-categories-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-categories-drop.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-categories-drop.sql 29 Sep 2003 08:05:42 -0000 1.1 @@ -0,0 +1,12 @@ +-- +-- lars-blogger-categories-drop.sql +-- +-- @author Steffen Tiedemann Christensen +-- + +--STC +drop function pinds_blog_category__new (integer, integer, varchar, varchar, integer, varchar); +drop function pinds_blog_category__name (integer); +drop function pinds_blog_category__delete (integer); +drop table pinds_blog_categories; +select acs_object_type__drop_type ('pinds_blog_category', true); Index: openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-create.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-create.sql,v diff -u -r1.6 -r1.7 --- openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-create.sql 28 Aug 2003 09:41:55 -0000 1.6 +++ openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-create.sql 29 Sep 2003 08:05:42 -0000 1.7 @@ -6,6 +6,8 @@ -- @cvs-id $Id$ -- +\i lars-blogger-categories-create.sql + select acs_object_type__create_type ( 'pinds_blog_entry', -- object_type 'Blog Entry', -- pretty_name @@ -30,6 +32,7 @@ references apm_packages(package_id), title varchar(500), title_url varchar(500), + category_id integer not null default 0, content varchar(32000), content_format varchar(50) default 'text/html' @@ -66,6 +69,7 @@ integer, -- package_id varchar, -- title varchar, -- title_url + integer, -- category_id varchar, -- content varchar, -- content_format timestamptz, -- entry_date @@ -78,12 +82,13 @@ p_package_id alias for $2; p_title alias for $3; p_title_url alias for $4; - p_content alias for $5; - p_content_format alias for $6; - p_entry_date alias for $7; - p_draft_p alias for $8; - p_creation_user alias for $9; - p_creation_ip alias for $10; + p_category_id alias for $5; + p_content alias for $6; + p_content_format alias for $7; + p_entry_date alias for $8; + p_draft_p alias for $9; + p_creation_user alias for $10; + p_creation_ip alias for $11; v_entry_id integer; begin v_entry_id := acs_object__new ( @@ -100,6 +105,7 @@ package_id, title, title_url, + category_id, content, content_format, entry_date, @@ -111,6 +117,7 @@ p_package_id, p_title, p_title_url, + p_category_id, p_content, p_content_format, p_entry_date, Index: openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-drop.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-drop.sql,v diff -u -r1.4 -r1.5 --- openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-drop.sql 28 Aug 2003 09:41:55 -0000 1.4 +++ openacs-4/packages/lars-blogger/sql/postgresql/lars-blogger-drop.sql 29 Sep 2003 08:05:42 -0000 1.5 @@ -64,3 +64,5 @@ drop table pinds_blog_entries; select acs_object_type__drop_type ('pinds_blog_entry', true); + +\i lars-blogger-categories-drop.sql Index: openacs-4/packages/lars-blogger/sql/postgresql/upgrade/upgrade-0.9.3-1.0d1.sql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/sql/postgresql/upgrade/upgrade-0.9.3-1.0d1.sql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/sql/postgresql/upgrade/upgrade-0.9.3-1.0d1.sql 29 Sep 2003 08:05:42 -0000 1.1 @@ -0,0 +1,85 @@ +\i ../lars-blogger-categories-create.sql + +alter table pinds_blog_entries add column category_id integer; +--alter table pinds_blog_entries alter column category_id set not null; +alter table pinds_blog_entries alter column category_id set default 0; + +update pinds_blog_entries set category_id = 0; + + +drop function pinds_blog_entry__new ( + integer, integer, varchar, varchar, varchar, varchar, timestamptz, char, integer, varchar +); + + +create or replace function pinds_blog_entry__new ( + integer, -- entry_id + integer, -- package_id + varchar, -- title + varchar, -- title_url + integer, -- category_id + varchar, -- content + varchar, -- content_format + timestamptz, -- entry_date + char, -- draft_p + integer, -- creation_user + varchar -- creation_ip +) returns integer as ' +declare + p_entry_id alias for $1; + p_package_id alias for $2; + p_title alias for $3; + p_title_url alias for $4; + p_category_id alias for $5; + p_content alias for $6; + p_content_format alias for $7; + p_entry_date alias for $8; + p_draft_p alias for $9; + p_creation_user alias for $10; + p_creation_ip alias for $11; + v_entry_id integer; +begin + v_entry_id := acs_object__new ( + p_entry_id, + ''pinds_blog_entry'', + current_timestamp, + p_creation_user, + p_creation_ip, + p_package_id + ); + + insert into pinds_blog_entries ( + entry_id, + package_id, + title, + title_url, + category_id, + content, + content_format, + entry_date, + posted_date, + draft_p, + deleted_p + ) values ( + v_entry_id, + p_package_id, + p_title, + p_title_url, + p_category_id, + p_content, + p_content_format, + p_entry_date, + current_timestamp, + p_draft_p, + ''f'' + ); + + PERFORM acs_permission__grant_permission( + v_entry_id, + p_creation_user, + ''admin'' + ); + + return v_entry_id; +end; +' language 'plpgsql'; 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 -r1.2 -r1.3 --- openacs-4/packages/lars-blogger/tcl/entry-procs-postgresql.xql 28 Aug 2003 09:41:55 -0000 1.2 +++ openacs-4/packages/lars-blogger/tcl/entry-procs-postgresql.xql 29 Sep 2003 08:05:42 -0000 1.3 @@ -8,6 +8,7 @@ select b.entry_id, b.title, b.title_url, + b.category_id, b.content, b.content_format, b.draft_p, 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 -r1.5 -r1.6 --- openacs-4/packages/lars-blogger/tcl/entry-procs.tcl 25 Sep 2003 12:30:09 -0000 1.5 +++ openacs-4/packages/lars-blogger/tcl/entry-procs.tcl 29 Sep 2003 08:05:42 -0000 1.6 @@ -12,6 +12,14 @@ upvar $array row db_1row select_entry {} -column_array row + + # If there's a category set up for the entry, we need to fill the array with the proper information. + if { $row(category_id) > 0 } { + set category_id $row(category_id) + db_1row select_category { *SQL* } + set row(category_name) $category_name + set row(category_short_name) $category_short_name + } } ad_proc -public lars_blogger::entry::require_write_permission { Fisheye: Tag 1.2 refers to a dead (removed) revision in file `openacs-4/packages/lars-blogger/tcl/entry-procs.xql'. Fisheye: No comparison available. Pass `N' to diff? 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 -r1.4 -r1.5 --- openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-postgresql.xql 28 Aug 2003 09:41:55 -0000 1.4 +++ openacs-4/packages/lars-blogger/tcl/lars-blogger-procs-postgresql.xql 29 Sep 2003 08:05:42 -0000 1.5 @@ -10,6 +10,7 @@ :package_id, :title, :title_url, + :category_id, :content, :content_format, to_date(:entry_date, 'YYYY-MM-DD'), 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 -r1.9 -r1.10 --- openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.tcl 28 Aug 2003 09:41:55 -0000 1.9 +++ openacs-4/packages/lars-blogger/tcl/lars-blogger-procs.tcl 29 Sep 2003 08:05:42 -0000 1.10 @@ -10,6 +10,7 @@ {-package_id:required} {-title:required} {-title_url ""} + {-category_id "0"} {-content:required} {-content_format:required} {-entry_date:required} @@ -173,3 +174,12 @@ } return [ad_parameter -package_id $package_id "HeaderBackgroundColor" "lars-blogger" "#dcdcdc"] } + +ad_proc -public lars_blog_categories_p { + -package_id +} { + if { ![exists_and_not_null package_id] } { + set package_id [ad_conn package_id] + } + return [ad_parameter -package_id $package_id "EnableCategoriesP" "lars-blogger" "1"] +} Index: openacs-4/packages/lars-blogger/www/blog-postgresql.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/blog-postgresql.xql,v diff -u -r1.6 -r1.7 --- openacs-4/packages/lars-blogger/www/blog-postgresql.xql 28 Aug 2003 09:41:55 -0000 1.6 +++ openacs-4/packages/lars-blogger/www/blog-postgresql.xql 29 Sep 2003 08:05:42 -0000 1.7 @@ -23,6 +23,7 @@ to_char(entry_date, 'YYYY-MM-DD') as entry_date, title, title_url, + category_id, content, content_format, draft_p, @@ -53,6 +54,7 @@ to_char(entry_date, 'YYYY/MM/DD/') as entry_archive_url, to_char(entry_date, 'YYYY-MM-DD') as entry_date, title, + category_id, content, content_format, draft_p, Index: openacs-4/packages/lars-blogger/www/blog.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/blog.tcl,v diff -u -r1.11 -r1.12 --- openacs-4/packages/lars-blogger/www/blog.tcl 22 Sep 2003 16:26:11 -0000 1.11 +++ openacs-4/packages/lars-blogger/www/blog.tcl 29 Sep 2003 08:05:42 -0000 1.12 @@ -20,6 +20,12 @@ set write_p [permission::permission_p -object_id $package_id -privilege write] +if { ![info exists category_id] } { + set blog_category_id {} +} else { + set blog_category_id $category_id +} + if { ![info exists screen_name] } { set screen_name "" set blog_user_id {} @@ -107,11 +113,27 @@ } } +set arr_category_name(0) None +set arr_category_short_name(0) none +db_foreach categories { *SQL* } { + set arr_category_name($category_id) $name + set arr_category_short_name($category_id) $short_name +} + + if { [empty_string_p $blog_user_id] } { - db_multirow blog all_blogs { *SQL* } + db_multirow -extend {category_name category_short_name} blog all_blogs { *SQL* } { + if { [string length $blog_category_id] && $category_id != $blog_category_id } {continue} + set category_name "$arr_category_name($category_id)" + set category_short_name $arr_category_short_name($category_id) + } set archive_url "${package_url}archive/" } else { - db_multirow blog blog { *SQL* } + db_multirow -extend {category_name category_short_name} blog blog { *SQL* } { + if { [string length $blog_category_id] && $category_id != $blog_category_id } {continue} + set category_name "$arr_category_name($category_id)" + set category_short_name $arr_category_short_name($category_id) + } set archive_url "${package_url}user/$screen_name/archive/" } Index: openacs-4/packages/lars-blogger/www/blog.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/blog.xql,v diff -u -r1.3 -r1.4 --- openacs-4/packages/lars-blogger/www/blog.xql 28 Sep 2003 23:32:07 -0000 1.3 +++ openacs-4/packages/lars-blogger/www/blog.xql 29 Sep 2003 08:05:42 -0000 1.4 @@ -25,4 +25,12 @@ and deleted_p = 'f' + + + + select * + from pinds_blog_categories + where package_id = :package_id + + Index: openacs-4/packages/lars-blogger/www/calendar.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/calendar.adp,v diff -u -r1.5 -r1.6 --- openacs-4/packages/lars-blogger/www/calendar.adp 18 Sep 2003 20:07:17 -0000 1.5 +++ openacs-4/packages/lars-blogger/www/calendar.adp 29 Sep 2003 08:05:42 -0000 1.6 @@ -1,6 +1,2 @@ @widget;noquote@ -

-@prev_month_name@ - -@next_month_name@ - Index: openacs-4/packages/lars-blogger/www/calendar.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/calendar.tcl,v diff -u -r1.4 -r1.5 --- openacs-4/packages/lars-blogger/www/calendar.tcl 28 Aug 2003 09:41:55 -0000 1.4 +++ openacs-4/packages/lars-blogger/www/calendar.tcl 29 Sep 2003 08:05:42 -0000 1.5 @@ -44,17 +44,3 @@ -calendar_details $calendar_details \ -day_number_template $day_number_template] -if {[empty_string_p $screen_name]} { - - set prev_month_url "${package_url}archive/[clock format [clock scan $prev_month] -format %Y/%m]/" - set next_month_url "${package_url}archive/[clock format [clock scan $next_month] -format %Y/%m]/" - -} else { - - set prev_month_url "${package_url}user/$screen_name/archive/[clock format [clock scan $prev_month] -format %Y/%m]/" - set next_month_url "${package_url}user/$screen_name/archive/[clock format [clock scan $next_month] -format %Y/%m]/" - -} -# Add year to the link -append next_month_name " [string range $next_month 0 3]" -append prev_month_name " [string range $prev_month 0 3]" Index: openacs-4/packages/lars-blogger/www/category-delete.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/category-delete.tcl,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/www/category-delete.tcl 29 Sep 2003 08:05:42 -0000 1.1 @@ -0,0 +1,12 @@ +ad_page_contract {} { + category_id:integer + {return_url ""} +} + +permission::require_permission -object_id [ad_conn package_id] -privilege write + +db_exec_plsql delete { *SQL* } + + +ad_returnredirect $return_url + Index: openacs-4/packages/lars-blogger/www/category-delete.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/category-delete.xql,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/www/category-delete.xql 29 Sep 2003 08:05:42 -0000 1.1 @@ -0,0 +1,12 @@ + + + + + + + select pinds_blog_category__delete (:category_id) + + + + + Index: openacs-4/packages/lars-blogger/www/category-edit.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/category-edit.adp,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/www/category-edit.adp 29 Sep 2003 08:05:42 -0000 1.1 @@ -0,0 +1,23 @@ + +@page_title@ +entry.title +@context@ + + + + + +

+ +Add new category + + 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 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/www/category-edit.tcl 29 Sep 2003 08:05:42 -0000 1.1 @@ -0,0 +1,129 @@ +ad_page_contract {} { + {category_id:integer ""} + {return_url ""} + {name:allhtml ""} + {short_name:allhtml ""} +} + +# Must be logged in +ad_maybe_redirect_for_registration + +# Must have write privilege +permission::require_permission -object_id [ad_conn package_id] -privilege write + +set package_id [ad_conn package_id] + +if { [lars_blog_categories_p -package_id $package_id] != 1} { + ad_return_error "No category support" "Categories are not supported. Modify the package parameters to add support." + return +} + +db_multirow categories categories { *SQL* } + +if { [string length $return_url]==0 } { + set return_url category-edit +} + +form create category -cancel_url [ad_decode $return_url "" "." $return_url] + +element create category name -label "Category" -datatype text -html { size 50 } +element create category short_name -label "Category Short Name" -datatype text -html { size 20 } -optional + +element create category category_id -widget hidden -datatype text +element create category return_url -widget hidden -datatype text -value $return_url + +if { [form is_request category] } { + + if { [empty_string_p $category_id] } { + set insert_or_update insert + set category_id [db_nextval "acs_object_id_seq"] + + # Prefill title and content with supplied values + foreach element { name short_name } { + if { [exists_and_not_null $element] } { + element set_value entry $element [set $element] + } + } + } else { + set insert_or_update update + db_1row category { *SQL* } + + element set_value category name $name + element set_value category short_name $short_name + } + + element set_properties category category_id -value $category_id +} + + +if { [form is_valid category] } { + set category_id [element get_value category category_id] + set name [element get_value category name] + set short_name [element get_value category short_name] + + set return_url [element get_value category return_url] + + if { [string length $short_name]==0 } { + set existing_short_names [db_list short_names {}] + set short_name [util_text_to_url -existing_urls $existing_short_names -text $name] + } else { + db_1row short_name_exists { *SQL* } + if { $short_name_exists > 0 } { + ad_return_error "Category short name exists" "The specified Category Short Name is already being used − please select another one." + return + } + } + + + db_1row category_exists { *SQL* } + if { $category_exists == 0 } { + set insert_or_update insert + set creation_user [ad_conn user_id] + set creation_ip [ns_conn peeraddr] + db_exec_plsql insert_category { *SQL* } + } else { + set insert_or_update update + db_dml update_category { *SQL* } + } + + if { [empty_string_p $return_url] } { + set return_url "[ad_conn package_url]admin" + } + + ad_returnredirect $return_url + ad_script_abort +} + +if { ![form is_request category] && ![form is_valid category] } { + set insert_or_update [element get_value category insert_or_update] +} + +switch -- $insert_or_update { + insert { + set page_title "Add Blog Category" + } + update { + set page_title "Edit Blog Category" + } +} + +set context [list $page_title] + + + + + + + + + + + + + + + + + + + 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 --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/www/category-edit.xql 29 Sep 2003 08:05:42 -0000 1.1 @@ -0,0 +1,67 @@ + + + + + + + select * + from pinds_blog_categories + where package_id = :package_id + + + + + + select short_name + from pinds_blog_categories + where package_id = :package_id + + + + + + select count(*) as category_exists + from pinds_blog_categories + where category_id = :category_id + + + + + + select count(*) as short_name_exists + from pinds_blog_categories + where short_name = :short_name and category_id <> :category_id and package_id = :package_id + + + + + + select name, short_name + from pinds_blog_categories + where category_id = :category_id + + + + + + select pinds_blog_category__new ( + :category_id, + :package_id, + :name, + :short_name, + :creation_user, + :creation_ip + ) + + + + + + update pinds_blog_categories + set name=:name, short_name=:short_name + where category_id = :category_id + + + + + Index: openacs-4/packages/lars-blogger/www/entry-chunk.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/entry-chunk.adp,v diff -u -r1.9 -r1.10 --- openacs-4/packages/lars-blogger/www/entry-chunk.adp 21 Sep 2003 22:17:23 -0000 1.9 +++ openacs-4/packages/lars-blogger/www/entry-chunk.adp 29 Sep 2003 08:05:42 -0000 1.10 @@ -50,6 +50,11 @@ - Add comment + + + - + @blog.category_name@ +

Index: openacs-4/packages/lars-blogger/www/entry-chunk.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/entry-chunk.tcl,v diff -u -r1.7 -r1.8 --- openacs-4/packages/lars-blogger/www/entry-chunk.tcl 21 Sep 2003 22:17:23 -0000 1.7 +++ openacs-4/packages/lars-blogger/www/entry-chunk.tcl 29 Sep 2003 08:05:42 -0000 1.8 @@ -3,6 +3,7 @@ # show_comments_p:onevalue,optional # retrun_url:onevalue,optional # package_id:optional +# screen_name:onevalue,optional if { ![exists_and_not_null show_comments_p] } { set show_comments_p "f" @@ -16,6 +17,9 @@ if { ![exists_and_not_null return_url] } { set return_url "[ad_conn url]?[ad_conn query]" } +if { ![exists_and_not_null screen_name] } { + set screen_name "" +} set package_url [lars_blog_public_package_url -package_id $package_id] @@ -52,6 +56,8 @@ set blog(comments_view_url) "${package_url}one-entry?[export_vars { entry_id }]" +set display_categories [lars_blog_categories_p -package_id [ad_conn package_id]] + if { [string equal $show_comments_p "t"] } { set comments_html [general_comments_get_comments -print_content_p 1 $entry_id] } 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 -r1.3 -r1.4 --- openacs-4/packages/lars-blogger/www/entry-edit.tcl 21 Sep 2003 22:17:23 -0000 1.3 +++ openacs-4/packages/lars-blogger/www/entry-edit.tcl 29 Sep 2003 08:05:42 -0000 1.4 @@ -34,6 +34,20 @@ element create entry title -label "Title" -datatype text -html { size 50 } element create entry title_url -label "Title URL (optional)" -datatype text -html { size 50 } -optional + +# If categories are enabled, set up a select-box with option. +# Otherwise just set the category_id to 0 to support category support in the future. +if { [string equal [lars_blog_categories_p] "1"] } { + # It's probably possible to set up the widget directly from the datasource -- I just don't know how :-( + set option_list [list [list None 0]] + db_foreach categories { *SQL* } { + lappend option_list [list $name $tmp_category_id] + } + element create entry category_id -label "Category" -datatype integer -widget select -options $option_list +} else { + element create entry category_id -widget hidden -datatype text -value 0 +} + 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." \ @@ -72,6 +86,7 @@ set content_data [template::util::richtext::acquire contents $content] set content_data [template::util::richtext::set_property format $content_data $content_format] + element set_value entry category_id $category_id element set_value entry content $content_data element set_value entry entry_date $entry_date @@ -87,6 +102,7 @@ set entry_id [element get_value entry entry_id] set title [element get_value entry title] set title_url [element get_value entry title_url] + set category_id [element get_value entry category_id] 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] @@ -102,6 +118,7 @@ -package_id $package_id \ -title $title \ -title_url $title_url \ + -category_id $category_id \ -content $content \ -content_format $content_format \ -entry_date $entry_date \ @@ -112,6 +129,7 @@ set set_clauses { "title = :title" "title_url = :title_url" + "category_id = :category_id" "content = :content" "content_format = :content_format" "entry_date = to_date(:entry_date, 'YYYY-MM-DD')" Index: openacs-4/packages/lars-blogger/www/entry-edit.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/entry-edit.xql,v diff -u -r1.2 -r1.3 --- openacs-4/packages/lars-blogger/www/entry-edit.xql 28 Aug 2003 09:41:55 -0000 1.2 +++ openacs-4/packages/lars-blogger/www/entry-edit.xql 29 Sep 2003 08:05:42 -0000 1.3 @@ -2,6 +2,14 @@ + + + select category_id as tmp_category_id, name + from pinds_blog_categories + where package_id = :package_id + + + select count(*) @@ -20,7 +28,7 @@ - select title, title_url, content, content_format, draft_p, to_char(entry_date, 'YYYY-MM-DD') as entry_date + select title, title_url, category_id, content, content_format, draft_p, to_char(entry_date, 'YYYY-MM-DD') as entry_date from pinds_blog_entries where entry_id = :entry_id Index: openacs-4/packages/lars-blogger/www/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/index.adp,v diff -u -r1.15 -r1.16 --- openacs-4/packages/lars-blogger/www/index.adp 28 Sep 2003 21:13:29 -0000 1.15 +++ openacs-4/packages/lars-blogger/www/index.adp 29 Sep 2003 08:05:42 -0000 1.16 @@ -45,14 +45,14 @@
- + @@ -66,6 +66,40 @@ + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - -
- Calendar + Archive
+ +
+
+
+ Categories +
+ + @categories.category_name@
+
+
+
+
@@ -104,24 +138,6 @@
- Archive -
- -
-
-
Index: openacs-4/packages/lars-blogger/www/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/index.tcl,v diff -u -r1.9 -r1.10 --- openacs-4/packages/lars-blogger/www/index.tcl 18 Sep 2003 20:07:17 -0000 1.9 +++ openacs-4/packages/lars-blogger/www/index.tcl 29 Sep 2003 08:05:42 -0000 1.10 @@ -4,19 +4,41 @@ @author Lars Pind (lars@pinds.com) @creation-date February 2002 } { - screen_name:optional + {screen_name:optional {}} + {category_short_name:optional {}} year:optional,string_length_range(4|4) month:optional,string_length_range(2|2) day:optional,string_length_range(2|2) } set page_title [lars_blog_name] -if {![exists_and_not_null screen_name]} { - set screen_name "" - set context_bar [ad_context_bar] +set package_id [ad_conn package_id] + +set package_url [ad_conn package_url] +set package_url_with_extras $package_url + +set l_context_bar [list] +set context_base_url [ad_conn package_url] + +if { ![empty_string_p $screen_name] } { + # Show Screen Name in context bar + append context_base_url /user/$screen_name + lappend l_context_bar [list $context_base_url $screen_name] + + append package_url_with_extras user/$screen_name/ +} + +if { ![empty_string_p $category_short_name] } { + if { ![db_0or1row get_category_from_short_name { *SQL* }] } { + ad_return_error "Category doesn't exist" "The specified category wasn't valid." + return + } + # Show Category in context bar + append context_base_url /category/$category_short_name + lappend l_context_bar [list $context_base_url $category_name] } else { - set context_bar [ad_context_bar $screen_name] + set category_id "" } if { ![empty_string_p [parameter::get -parameter "rss_file_name"]] } { @@ -29,14 +51,12 @@ } -set package_id [ad_conn package_id] -set package_url [ad_conn package_url] - set write_p [permission::permission_p -object_id $package_id -privilege write] set admin_p [permission::permission_p -object_id $package_id -privilege admin] set display_users_p [parameter::get -parameter "DisplayUsersP" -default 0] +set display_categories [lars_blog_categories_p -package_id $package_id] if {$display_users_p && ![exists_and_not_null screen_name]} { @@ -75,22 +95,25 @@ ad_script_abort } + # Show Archive, Year and Month i context + append context_base_url /archive + lappend l_context_bar [list $context_base_url Archive] + append context_base_url /$year + lappend l_context_bar [list $context_base_url $year] + append context_base_url /$month + lappend l_context_bar [list $context_base_url $month] + + if { [exists_and_not_null day] } { set interval "day" db_1row archive_date_month_day { *SQL* } - if {[empty_string_p $screen_name]} { - set context_bar [ad_context_bar [list "$package_url/archive/" "Archive"] [list "$package_url/archive/$year/$month/" $archive_month_pretty] $archive_date_pretty] - } else { - set context_bar [ad_context_bar [list "$package_url/user/$screen_name/" "$screen_name"] [list "$package_url/user/$screen_name/archive/" "Archive"] [list "$package_url/user/$screen_name/archive/$year/$month/" $archive_month_pretty] $archive_date_pretty] - } + + # Day in context + append context_base_url /$day + lappend l_context_bar [list $context_base_url $day] } else { set interval "month" db_1row archive_date_month { *SQL* } - if {[empty_string_p $screen_name]} { - set context_bar [ad_context_bar [list "$package_url/archive/" "Archive"] $archive_date_pretty] - } else { - set context_bar [ad_context_bar [list "$package_url/user/$screen_name/" "$screen_name"] [list "$package_url/user/$screen_name/archive/" "Archive"] $archive_date_pretty] - } } append page_title " Archive" @@ -104,4 +127,10 @@ set archive_date "" } +db_multirow categories categories { *SQL* } + +# Cut the URL off the last item in the context bar +set l_context_bar [lreplace $l_context_bar end end [lindex [lindex $l_context_bar end] end]] +eval "set context_bar \[ad_context_bar $l_context_bar\]" + ad_return_template Index: openacs-4/packages/lars-blogger/www/index.vuh =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/index.vuh,v diff -u --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ openacs-4/packages/lars-blogger/www/index.vuh 29 Sep 2003 08:05:42 -0000 1.1 @@ -0,0 +1,52 @@ +set url /[ad_conn extra_url] + +if { [regexp {^/(u|user)/([^/]+)/rss} $url ignore ignore2 screen_name] } { + #Support old model user//rss/rss.xml + + set package_id [ad_conn package_id] + + set screen_name [lindex $extra_url_list 1] + + set sql "select channel_id as summary_context_id + from weblogger_channels w, users u + where w.user_id = u.user_id + and u.screen_name = :screen_name + and w.package_id = :package_id" + + set summary_context_id [db_string select_user_id $sql] + + ns_log "Notice" "SUM: $summary_context_id" + + ns_returnfile 200 text/xml [rss_gen_report_file -summary_context_id $summary_context_id -impl_name pinds_blog_entries] + +} else { + + if { [regexp {/(u|user)/([^/]+)/?} $url ignore ignore2 screen_name] } { + rp_form_put screen_name $screen_name + } + + if { [regexp {/(c|cat|category)/([^/]+)/?} $url ignore ignore2 category_short_name] } { + rp_form_put category_short_name $category_short_name + } + + if { [regexp {/(a|archive)/?([0-9]*)/?([0-9]*)/?([0-9]*)/?} $url ignore ignore2 year month day] } { + if { [empty_string_p $year] && [empty_string_p $month] && [empty_string_p $day] } { + # get year, month, day + set date_list [dt_ansi_to_list [dt_sysdate]] + set year [lindex $date_list 0] + set month [format "%02d" [lindex $date_list 1]] + } + + rp_form_put year $year + rp_form_put month $month + rp_form_put day $day + } + + if { [regexp {one-entry$} $url] } { + # Backwards compatibility with user//one-entry?entry_id= + rp_internal_redirect "/packages/lars-blogger/www/one-entry" + } else { + rp_internal_redirect "/packages/lars-blogger/www/index" + } +} + Index: openacs-4/packages/lars-blogger/www/index.xql =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/index.xql,v diff -u -r1.3 -r1.4 --- openacs-4/packages/lars-blogger/www/index.xql 16 Sep 2002 09:25:51 -0000 1.3 +++ openacs-4/packages/lars-blogger/www/index.xql 29 Sep 2003 08:05:42 -0000 1.4 @@ -24,4 +24,20 @@ + + + select category_id, name as category_name + from pinds_blog_categories + where short_name = :category_short_name and package_id = :package_id + + + + + + select short_name as category_short_name, name as category_name + from pinds_blog_categories + where package_id = :package_id + + + Index: openacs-4/packages/lars-blogger/www/admin/index.adp =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/index.adp,v diff -u -r1.9 -r1.10 --- openacs-4/packages/lars-blogger/www/admin/index.adp 28 Sep 2003 16:24:52 -0000 1.9 +++ openacs-4/packages/lars-blogger/www/admin/index.adp 29 Sep 2003 08:05:42 -0000 1.10 @@ -12,8 +12,15 @@ Add new blog entry

+

» + Categories +

+
+ +

+ » View draft entries

Index: openacs-4/packages/lars-blogger/www/admin/index.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/lars-blogger/www/admin/index.tcl,v diff -u -r1.6 -r1.7 --- openacs-4/packages/lars-blogger/www/admin/index.tcl 28 Sep 2003 16:24:52 -0000 1.6 +++ openacs-4/packages/lars-blogger/www/admin/index.tcl 29 Sep 2003 08:05:42 -0000 1.7 @@ -15,6 +15,8 @@ set arrow_url "[lars_blog_public_package_url -package_id $package_id]graphics/arrow-box.gif" +set categories [lars_blog_categories_p -package_id $package_id] + set instance_feed_p [db_string rss_feed_p {}] set rss_setup_url "rss-setup"