add-edit-slide.tcl

# This file presents the form for users to create a slide.

Location:
/packages/wp-slim/www/add-edit-slide.tcl
Author:
Paul Konigsberg <paul@arsdigita.com>
Created:
Mon Nov 20 12:07:24 2000
CVS ID:
$Id: add-edit-slide.tcl,v 1.6 2018/05/09 15:33:33 hectorr Exp $

Related Files

[ hide source ] | [ make this the default ]

File Contents

# /packages/wp/www/add-edit-slide.tcl
ad_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.6 2018/05/09 15:33:33 hectorr 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
}

####################
# 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 {$edit_slide ne ""} {
    db_1row get_bullets_stored { *SQL* }
    append bullet_num [llength $bullets_stored]
    db_1row get_slide_sort_key { *SQL* }
} else {
     if {$sort_key eq "" } {
         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 eq ""} {
   set edit_preamble 1
}

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}}
    }
    {preamble:richtext(richtext),nospell,optional
        {label "<b>Preamble Text:</b>"}
        {html {rows 10 cols 70}}
        {help_text "$optional_preamble" }
        {value $def}
        {section "#wp-slim.Preamble#"}
        {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}}
    }
    {preamble:richtext(richtext),nospell,optional
        {label "<b>Preamble Text:</b>"}
        {html {rows 10 cols 70}}
        {help_text "$optional_preamble" }
        {value $def}
        {section "#wp-slim.Preamble#"}
        {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 #
###################################################################################

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 section "#wp-slim.Bullet_Items#"]
    lappend element [list after_html "&nbsp;<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 "&nbsp;<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 "&nbsp;<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 0
foreach 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 {
    {postamble:richtext(richtext),nospell,optional
        {label "<b>Postamble Text:</b>"}  
        {html {rows 10 cols 70}}
        {help_text "$optional_postamble" }
        {value $def}
        {section "#wp-slim.Postamble#"}
        {htmlarea_p 0}
    }
    }
} else {
    ad_form -extend -name f -form {
    {postamble:richtext(richtext),nospell,optional
        {label "<b>Postamble Text:</b>"}  
        {html {rows 10 cols 70}}
        {help_text "$optional_postamble" }
        {value $def}
        {section "#wp-slim.Postamble#"}
        {htmlarea_p 1}
    }
    }
}

if { $edit_slide == 1} {
    set context [list [list [export_vars -base presentation-top {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 [export_vars -base presentation-top {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]
    for {set i 1} {$i <= $array_max} {incr i} {
    set bullet_value [set bullet.$i]
    if { $bullet_value ne "" } {
            lappend bullet_list [set bullet.$i]
       }
    }

    #insert the slide
    db_exec_plsql wp_slide_insert { *SQL* }
    if { $attach == "t"} {
    set context [list \
             [list [export_vars -base presentation-top {pres_item_id}] "$pres_title"] \
             [list [export_vars -base add-edit-slide {slide_item_id pres_item_id edit_slide}] "[_ wp-slim.Edit_Slide]"] \
             $slide_title]
        ad_returnredirect [export_vars -base attach-list {pres_item_id slide_item_id}]
    } else {
        ad_returnredirect [export_vars -base presentation-top {pres_item_id}]
    }
} -edit_data {
  
    # makes a bullet list to send to the procedure
    set bullet_items [list]
    for {set i 1} {$i <= $array_max} {incr i} {
    set bullet_value [set bullet.$i]
    if { $bullet_value ne "" } {
            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 [export_vars -base presentation-top {pres_item_id}] "$pres_title"] \
             [list [export_vars -base add-edit-slide {slide_item_id pres_item_id edit_slide}] "[_ wp-slim.Edit_Slide]"] \
             $slide_title]
        ad_returnredirect [export_vars -base attach-list {pres_item_id slide_item_id}]
    } else {
        ad_returnredirect [export_vars -base presentation-top {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   
}