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 {}
+ 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 {}
+ 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]
+}