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 -r1.2 -r1.3 --- openacs-4/packages/lars-blogger/www/category-edit.tcl 29 Sep 2003 13:56:48 -0000 1.2 +++ openacs-4/packages/lars-blogger/www/category-edit.tcl 29 Sep 2003 19:41:23 -0000 1.3 @@ -1,12 +1,20 @@ -ad_page_contract {} { - {category_id:integer ""} +ad_page_contract { + View and edit blogger categories. + + @author Steffen Christensen (steffen@refresh.dk) + @cvs-id $Id$ +} { + category_id:integer,optional {return_url ""} {name:allhtml ""} {short_name:allhtml ""} } +set page_title "Manage Categories" +set context [list $page_title] + # Must be logged in -ad_maybe_redirect_for_registration +auth::require_login # Must have write privilege permission::require_permission -object_id [ad_conn package_id] -privilege write @@ -15,102 +23,108 @@ 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 + ad_script_abort } -db_multirow categories categories { *SQL* } - -if { [string length $return_url]==0 } { - set return_url category-edit +if { [empty_string_p $return_url] } { + set return_url [ad_conn url] } -form create category -cancel_url [ad_decode $return_url "" "." $return_url] +##### +# +# Add/edit form +# +##### -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 \ - -help_text "This is used to provide a pretty URL for viewing postings in this category" - -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 +ad_form -name category -cancel_url $return_url -form { + {category_id:key} + {name:text + {label "Category"} + {html { size 50 }} } + {short_name:text,optional + {label "Category Short Name"} + {html { size 20 }} + {help_text "This is used to provide a pretty URL for viewing postings in this category"} + } + {return_url:text(hidden),optional} +} -new_request { - element set_properties category category_id -value $category_id -} +} -edit_request { + db_1row category {} -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 } { +} -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] + 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 + form set_error category short_name "This short name is already used by another category" + break } } - - 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* } - } +} -new_data { + + set creation_user [ad_conn user_id] + set creation_ip [ns_conn peeraddr] + + db_exec_plsql insert_category {} - if { [empty_string_p $return_url] } { - set return_url "[ad_conn package_url]admin" - } +} -edit_data { + + db_dml update_category {} + 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" + +##### +# +# Category list +# +##### + +template::list::create \ + -name categories \ + -multirow categories \ + -actions { + "Add category" "category-edit" "Add new category" + } -elements { + edit { + label {} + display_template {Edit} + link_url_eval {[export_vars -base [ad_conn url] { category_id }]} + link_html { title "Edit category" } + sub_class narrow + } + name { + label {Name} + link_url_eval {[ad_conn package_url]cat/$short_name/} + } + short_name { + label {Short Name} + } + num_entries { + label {\# Entries} + html { align right } + display_col num_entries_pretty + } + delete { + label {} + display_template {Delete} + link_url_eval {[export_vars -base "category-delete" { category_id { return_url [ad_return_url] } }]} + link_html { title "Delete category" } + sub_class narrow + } } - update { - set page_title "Edit Blog Category" - } -} -set context [list $page_title] +db_multirow -extend { num_entries_pretty } categories categories {} { + set num_entries_pretty [lc_numeric $num_entries] +}