rendered paste body# /packages/wp/www/add-edit-slide.tclad_page_contract { # This file presents the form for users to create a slide. @author Paul Konigsberg (paul@arsdigita.com) @creation-date Mon Nov 20 12:07:24 2000 @cvs-id $Id: add-edit-slide.tcl,v 1.2 2005/03/01 00:01:46 jeffd Exp $} { pres_item_id:naturalnum,notnull {sort_key:naturalnum,optional ""} slide_item_id:naturalnum,optional {edit_slide:naturalnum,optional ""} {edit_preamble:naturalnum,optional ""}} -properties { context pres_item_id sort_key pres_title}# move the title setting to hereset doc(title) [_ wp-slim.Create_A_Slide]##################### Global variables #####################set osi ""set def ""set bullet_num ""set user_id [ad_conn user_id]set creation_ip [ad_conn peeraddr]set package_id [ad_conn package_id]permission::require_permission -party_id $user_id -object_id $pres_item_id -privilege wp_edit_presentation############################### Get the presentation title ###############################db_1row get_presentation { *SQL* }if {![empty_string_p $edit_slide]} { db_1row get_bullets_stored { *SQL* } append bullet_num [llength $bullets_stored] db_1row get_slide_sort_key { *SQL* }} else { if {[empty_string_p $sort_key] } { set sort_key [db_string get_sort_key { *SQL* }] }}################################ Messages shown in help text ################################set optional_preamble [_ wp-slim.lt_optional_random_text_]set you_can [_ wp-slim.lt_You_can_add_additiona]set optional_postamble [_ wp-slim.lt_optional_random_text__1]################################################################################# Since 2 htmlarea can't interact in the same page or at least I can't make it ## there are two edits one for the preamble text and the other one fot the ## postamble #################################################################################if { $edit_preamble == ""} { set edit_preamble 1}# NOTE new ad_form sectioning api. each section is declared in the -form but as its own element.if { $edit_preamble == 1 } { ad_form -name f -export {pres_item_id sort_key} -form { slide_item_id:key {slide_title:text(text) {label "<b>#wp-slim.Slide_Titlenbsp#</b>"} {html { size 50}} } {-section "preamble" {legendtext "#wp-slim.Preamble#"}} {preamble:richtext(richtext),nospell,optional {label "<b>Preamble Text:</b>"} {html {rows 10 cols 70}} {help_text "$optional_preamble" } {value $def} {htmlarea_p 1} } }} else { ad_form -name f -export {pres_item_id sort_key} -form { slide_item_id:key {slide_title:text(text) {label "<b>#wp-slim.Slide_Titlenbsp#</b>"} {html { size 50}} } {-section "preamble" {legendtext "#wp-slim.Preamble#"}} {preamble:richtext(richtext),nospell,optional {label "<b>Preamble Text:</b>"} {html {rows 10 cols 70}} {help_text "$optional_preamble" } {value $def} {htmlarea_p 0} } }}################################################################################################ Generates the number of bullets, first there are 5 free bullets, then always 3 free bullets ################################################################################################if { $bullet_num <= 2} { set array_max 5} else { set array_max [expr $bullet_num + 3] }#################################################################################### Creates the bullets list dynamically. The list of list elements has the bullets ##################################################################################### new ad_form sectioning apiad_form -extend -name f -form { {-section "bullets" {legendtext "#wp-slim.Bullet_Items#"}}}set elements [list]for {set j 1} {$j <= $array_max} {incr j} { set element [list bullet.$j:text(text),optional \ {html { size 60 }} \ {value $def}] if { $j == 1 } { lappend element [list after_html " <img src=\"pics/1white.gif\" width=18 height=15\"><a href=\"javascript:swapWithNext(1)\"\><img src=\"pics/down.gif\" width=18 height=15 border=0></a>"] } if { $j == $array_max } { set swap_num [expr $array_max - 1] lappend element [list help_text "$you_can"] lappend element [list after_html " <a href=\"javascript:swapWithNext($swap_num)\"><img src=\"pics/up.gif\" width=18 height=15 bord\er=0></a><img src=\"pics/1white.gif\" width=18 height=15>"] } if { $j > 1 && $j < $array_max } { set swap_num [expr $j - 1 ] lappend element [list after_html " <a href=\"javascript:swapWithNext($swap_num)\"><img src=\"pics/up.gif\" width=18 height=15 bord\er=0></a><a href=\"javascript:swapWithNext($j)\"><img src=\"pics/down.gif\" width=18 height=15 border=0></a>"] } lappend element [list label "<b>Bullet $j:</b>" ] lappend elements [list $element]} ################################ Add the bullets to the form ################################set i 0foreach item $elements { ad_form -extend -name f -form [lindex $elements $i] incr i}############################# Add the end of the form #############################if { $edit_preamble == 1} { ad_form -extend -name f -form { {-section "postamble" {legendtext "#wp-slim.Postamble#"}} {postamble:richtext(richtext),nospell,optional {label "<b>Postamble Text:</b>"} {html {rows 10 cols 70}} {help_text "$optional_postamble" } {value $def} {htmlarea_p 0} } }} else { ad_form -extend -name f -form { {-section "postamble" {legendtext "#wp-slim.Postamble#"}} {postamble:richtext(richtext),nospell,optional {label "<b>Postamble Text:</b>"} {html {rows 10 cols 70}} {help_text "$optional_postamble" } {value $def} {htmlarea_p 1} } }}if { $edit_slide == 1} { set context [list [list "presentation-top?[export_url_vars pres_item_id]" "$pres_title"] "[_ wp-slim.Edit_Slide]"] ad_form -extend -name f -form { {attach:text(radio) {label "<b>#wp-slim.Upload_Attachments#</b>"} {options {{#wp-slim.No# f} {#wp-slim.Yes# t}}} {value f} } }} else { set context [list [list "presentation-top?[export_url_vars pres_item_id]" "$pres_title"] "[_ wp-slim.New_Slide]"] ad_form -extend -name f -form { {attach:text(hidden) {value "f"} } }}##################### FORM PROCESSING ##################### ad_form -extend -name f -new_data { # makes a bullet list to send to the procedure set bullet_list [list] # make a list of bullet.X names set bullet_names [lsort -dictionary [info vars "bullet.*"]] ns_log NOTICE "bullet names $bullet_names" for {set i 1} {$i <= $array_max} {incr i} { set bullet_value [set bullet.$i] if { ![empty_string_p $bullet_value ] } { lappend bullet_list [set bullet.$i] } } #insert the slide db_exec_plsql wp_slide_insert { *SQL* } if { $attach == "t"} { set context [list [list "presentation-top?[export_url_vars pres_item_id]" "$pres_title"] [list "add-edit-slide?[export_url_vars slide_item_id pres_item_id edit_slide]" "[_ wp-slim.Edit_Slide]"] "$slide_title"] ad_returnredirect attach-list?[export_url_vars pres_item_id slide_item_id] } else { ad_returnredirect presentation-top?[export_url_vars pres_item_id] }} -edit_data { # makes a bullet list to send to the procedure set bullet_items [list] # make a list of bullet.X names set bullet_names [lsort -dictionary [info vars "bullet.*"]] ns_log NOTICE "bullet names $bullet_names" for {set i 1} {$i <= $array_max} {incr i} { set bullet_value [set bullet.$i] if { ![empty_string_p $bullet_value ] } { lappend bullet_items [set bullet.$i] } } # update the slide in the db db_exec_plsql update_slide { *SQL* } if { $attach == "t"} { set context [list [list "presentation-top?[export_url_vars pres_item_id]" "$pres_title"] [list "add-edit-slide?[export_url_vars slide_item_id pres_item_id edit_slide]" "[_ wp-slim.Edit_Slide]"] "$slide_title"] ad_returnredirect attach-list?[export_url_vars pres_item_id slide_item_id] } else { ad_returnredirect presentation-top?[export_url_vars pres_item_id] }} -edit_request { db_1row get_slide_info { *SQL* } set index 1 foreach item $bullet_items { set bullet.$index $item incr index } append osi $original_slide_id }