Index: openacs-4/packages/xowiki/tcl/form-field-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/form-field-procs.tcl,v diff -u -N -r1.251 -r1.252 --- openacs-4/packages/xowiki/tcl/form-field-procs.tcl 31 Aug 2017 17:29:34 -0000 1.251 +++ openacs-4/packages/xowiki/tcl/form-field-procs.tcl 21 Oct 2017 16:41:35 -0000 1.252 @@ -128,15 +128,12 @@ } FormField instproc validate {obj} { - :instvar name required - # use the 'value' method to deal e.g. with compound fields set value [:value] - #my msg "[:info class] value=$value req=$required // ${:value} //" + #my msg "[:info class] value=$value req=${:required} // ${:value} //" - if {$required && $value eq "" && ![:istype ::xowiki::formfield::hidden]} { - :instvar label - return [_ acs-templating.Element_is_required] + if {${:required} && $value eq "" && ![:istype ::xowiki::formfield::hidden]} { + return [_ acs-templating.Element_is_required [list label ${:label}]] } # #my msg "++ ${:name} [:info class] validator=[:validator] ([llength [:validator]]) value=$value" @@ -387,39 +384,38 @@ } FormField instproc asWidgetSpec {} { - :instvar widget_type options label help_text format html display_html - set spec $widget_type + set spec ${:widget_type} if {[info exists :spell]} {append spec ",[expr {[:spell] ? {} : {no}}]spell"} if {![:required]} {append spec ",optional"} if {[info exists :editor]} {append spec " {options {editor ${:editor}}} "} - append spec " {label " [list $label] "} " + append spec " {label " [list ${:label}] "} " if {[string match *bootstrap* [subsite::get_theme]]} { - :array set html {class "form-control"} + array set :html {class "form-control"} } if {[info exists :html]} { append spec " {html {" - foreach {key value} [array get html] { + foreach {key value} [array get :html] { append spec $key " " [list $value] " " } append spec "}} " } if {[info exists :options]} { - append spec " {options " [list $options] "} " + append spec " {options " [list ${:options}] "} " } if {[info exists :format]} { - append spec " {format " [list $format] "} " + append spec " {format " [list ${:format}] "} " } - if {$help_text ne ""} { - if {[string match "#*#" $help_text]} { - set internationalized [:localize $help_text] + if {${:help_text} ne ""} { + if {[string match "#*#" ${:help_text}]} { + set internationalized [:localize ${:help_text}] append spec " {help_text {$internationalized}}" } else { - append spec " {help_text {$help_text}}" + append spec " {help_text {${:help_text}}}" } } return $spec @@ -554,7 +550,7 @@ FormField instproc render_error_msg {} { if {[:error_msg] ne "" && ![info exists :error_reported]} { ::html::div -class form-error { - :instvar label + set label ${:label} ;# needed for error_msg; TODO: we should provide a substitution_list similar to "_" ::html::t [::xo::localize [:error_msg]] :render_localizer set :error_reported 1 @@ -1004,18 +1000,17 @@ file instproc pretty_value {v} { if {$v ne ""} { - :instvar object array set "" [:entry_info] set result "" foreach object_name $(name) fn [:get_from_value $v name] { - array set "" [$object item_ref -default_lang [${:object} lang] -parent_id $(parent_id) $object_name] + array set "" [${:object} item_ref -default_lang [${:object} lang] -parent_id $(parent_id) $object_name] #my log "name <$object_name> pretty value name '$(stripped_name)'" set l [::xowiki::Link new -destroy_on_cleanup \ - -page $object -type "file" -lang $(prefix) \ + -page ${:object} -type "file" -lang $(prefix) \ [list -stripped_name $(stripped_name)] [list -label $fn] \ [list -extra_query_parameter [list [list filename $fn]]] \ -parent_id $(parent_id) -item_id $(item_id)] @@ -1027,11 +1022,9 @@ file instproc render_input {} { - :instvar value set package_id [${:object} package_id] - array set entry_info [:entry_info] - set fns [:get_from_value $value name $value] + set fns [:get_from_value ${:value} name ${:value}] # # The HTML5 handling of "required" would force us to upload in @@ -1047,14 +1040,14 @@ ::html::t " " set id __old_value_${:name} ::html::div { - ::html::input -type hidden -name $id -id $id -value $value + ::html::input -type hidden -name $id -id $id -value ${:value} } ::html::div -class file-control -id __a$id { foreach \ object_name $entry_info(name) \ - revision_id [:get_from_value $value revision_id ""] \ + revision_id [:get_from_value ${:value} revision_id ""] \ fn $fns { - #my msg "${:name}: [list :get_from_value <$value> name] => '$fn'" + #my msg "${:name}: [list :get_from_value <${:value}> name] => '$fn'" set href [$package_id pretty_link -download 1 -parent_id $entry_info(parent_id) $object_name] if {![:istype image]} { @@ -1078,7 +1071,7 @@ # - the form-field is not sticky (default) # set disabled [expr {[info exists :disabled] && [:disabled] != "false"}] - if {$value ne "" && !$disabled && ![:sticky] } { + if {${:value} ne "" && !$disabled && ![:sticky] } { ::html::input -type button -value [_ xowiki.clear] -id $id-control template::add_event_listener \ -id $id-control \ @@ -1103,16 +1096,15 @@ if {[:help_text] eq ""} {my help_text "#xowiki.formfield-import_archive-help_text#"} } import_archive instproc pretty_value {v} { - :instvar object - set package_id [$object package_id] - set parent_id [$object parent_id] + set package_id [${:object} package_id] + set parent_id [${:object} parent_id] if {$v eq ""} {return ""} array set "" [:entry_info] set fn [:get_from_value $v name $v] # # Get the file object of the imported file to obtain is full name and path # - set file_id [$package_id lookup -parent_id [$object item_id] -name $(name)] + set file_id [$package_id lookup -parent_id [${:object} item_id] -name $(name)] ::xo::db::CrClass get_instance_from_db -item_id $file_id set full_file_name [$file_id full_file_name] # @@ -1128,7 +1120,7 @@ # if {[:cleanup]} { set return_url [$package_id query_parameter "return_url" [$parent_id pretty_link]] - $package_id returnredirect [$object pretty_link -query [export_vars {m delete} return_url]] + $package_id returnredirect [${:object} pretty_link -query [export_vars {m delete} return_url]] } } } @@ -1508,7 +1500,6 @@ } author instproc pretty_value {v} { if {$v ne ""} { - :instvar object acs_user::get -user_id $v -array user if {[:with_photo]} { set portrait_id [acs_user::get_portrait_id -user_id $v] @@ -1525,10 +1516,10 @@ set photo_class "" } set date_field [::xowiki::FormPage get_table_form_fields \ - -base_item $object \ + -base_item ${:object} \ -field_names _last_modified \ -form_constraints ""] - set date [$date_field pretty_value [$object property _last_modified]] + set date [$date_field pretty_value [${:object} property _last_modified]] if {[:with_user_link]} { set user_link_begin "" @@ -2648,18 +2639,17 @@ select instproc initialize {} { set :widget_type text(select) next - if {![info exists :options]} {my options [list]} + if {![info exists :options]} {set :options [list]} } select instproc render_input {} { set atts [:get_attributes id name disabled {CSSclass class}] if {[:multiple]} {lappend atts multiple [:multiple]} - set options [:options] if {![:required]} { - set options [linsert $options 0 [list "--" ""]] + set :options [linsert ${:options} 0 [list "--" ""]] } ::html::select $atts { - foreach o $options { + foreach o ${:options} { lassign $o label rep set atts [:get_attributes disabled] lappend atts value $rep @@ -2699,7 +2689,7 @@ ::xo::Page requireJS "/resources/xowiki/yui-selection-area.js" set js "" - foreach o [:options] { + foreach o ${:options} { lassign $o label rep set js_label [::xowiki::Includelet js_encode $label] set js_rep [::xowiki::Includelet js_encode $rep] @@ -2726,8 +2716,8 @@ ::html::div -class workarea { ::html::h3 { ::html::t "#xowiki.Candidates#"} ::html::ul -id [:id]_candidates -class region { - #my msg [:options] - foreach o [:options] { + #my msg ${:options} + foreach o ${:options} { lassign $o label rep # Don't show current values under candidates if {[info exists __values($rep)]} continue @@ -2782,14 +2772,13 @@ } abstract_page instproc pretty_value {v} { - :instvar package_id set object ${:object} set parent_id [$object parent_id] set :options [:get_labels $v] if {[:multiple]} { foreach o ${:options} { lassign $o label value - set href [$package_id pretty_link -parent_id $parent_id $value] + set href [${:package_id} pretty_link -parent_id $parent_id $value] set labels($value) "$label" } set hrefs [list] @@ -2798,7 +2787,7 @@ #my msg "can't determine label for value '$i' (values=$v, l=[array names labels])" set labels($i) $i } - set href [$package_id pretty_link -parent_id $parent_id $i] + set href [${:package_id} pretty_link -parent_id $parent_id $i] lappend hrefs "$labels($i)" } if {[:multiple_style] eq "list"} { @@ -2814,7 +2803,7 @@ if {[:as_box]} { return [$object include [list $value -decoration rightbox]] } - set href [$package_id pretty_link -parent_id $parent_id $value] + set href [${:package_id} pretty_link -parent_id $parent_id $value] return "$label" } } @@ -2838,72 +2827,69 @@ } form_page instproc initialize {} { - :instvar form_object_item_ids package_id object if {![info exists :form]} { return } next set form_name [:form] - set package_id [$object package_id] + set :package_id [${:object} package_id] set form_objs [::xowiki::Weblog instantiate_forms \ - -parent_id [$object parent_id] \ - -default_lang [$object lang] \ - -forms $form_name -package_id $package_id] + -parent_id [${:object} parent_id] \ + -default_lang [${:object} lang] \ + -forms $form_name -package_id ${:package_id}] #set form_obj [${:object} resolve_included_page_name $form_name] if {$form_objs eq ""} {error "Cannot lookup Form '$form_name'"} - set form_object_item_ids [list] - foreach form_obj $form_objs {lappend form_object_item_ids [$form_obj item_id]} + set :form_object_item_ids [list] + foreach form_obj $form_objs {lappend :form_object_item_ids [$form_obj item_id]} } form_page instproc compute_options {} { - :instvar form_object_item_ids where package_id entry_label #my msg "${:name} compute_options [info exists :form]" if {![info exists :form]} { return } array set wc {tcl true h "" vars "" sql ""} - if {[info exists where]} { - array set wc [::xowiki::FormPage filter_expression $where &&] - #my msg "where '$where' => wc=[array get wc]" + if {[info exists :where]} { + array set wc [::xowiki::FormPage filter_expression ${:where} &&] + #my msg "where '${:where}' => wc=[array get wc]" } set from_package_ids {} - set package_path [::$package_id package_path] + set package_path [::${:package_id} package_path] if {[llength $package_path] > 0} { foreach p $package_path { lappend from_package_ids [$p id] } } - lappend from_package_ids $package_id + lappend from_package_ids ${:package_id} set items [::xowiki::FormPage get_form_entries \ - -base_item_ids $form_object_item_ids \ + -base_item_ids ${:form_object_item_ids} \ -form_fields [list] \ -publish_status ready \ -h_where [array get wc] \ - -package_id $package_id \ + -package_id ${:package_id} \ -from_package_ids $from_package_ids] - set options [list] + set :options [list] foreach i [$items children] { # # If the form_page has a different package_id, prepend the # package_url to the name. TODO: We assume here, that the form_pages # have no special parent_id. # set object_package_id [$i package_id] - if {$package_id != $object_package_id} { + if {${:package_id} != $object_package_id} { set package_prefix /[$object_package_id package_url] } else { set package_prefix "" } - lappend options [list [$i property $entry_label] $package_prefix[$i name]] + lappend :options [list [$i property ${:entry_label}] $package_prefix[$i name]] } - :options $options } form_page instproc pretty_value {v} { - :options [:get_labels $v] + set :options [:get_labels $v] if {![info exists :form_object_item_ids]} { error "No forms specified for form_field '${:name}'" } @@ -2931,7 +2917,7 @@ } set package_id [${:object} package_id] - set options [list] + set :options [list] ::xo::dc foreach instance_select \ [${:type} instance_select_query \ -folder_id [$package_id folder_id] \ @@ -2941,9 +2927,8 @@ -where_clause "p.page_id = bt.revision_id $extra_where_clause" \ -orderby ci.name \ ] { - lappend options [list [set [:entry_label]] $name] + lappend :options [list [set [:entry_label]] $name] } - :options $options } page instproc pretty_value {v} { @@ -2960,10 +2945,10 @@ Class create security_policy -superclass select security_policy instproc initialize {} { + set :options {} foreach p [lsort [::xowiki::Policy info instances]] { - lappend options [list $p $p] + lappend :options [list $p $p] } - :options $options next } @@ -2975,7 +2960,7 @@ Class create DD -superclass select DD instproc initialize {} { - :options { + set :options { {01 1} {02 2} {03 3} {04 4} {05 5} {06 6} {07 7} {08 8} {09 9} {10 10} {11 11} {12 12} {13 13} {14 14} {15 15} {16 16} {17 17} {18 18} {19 19} {20 20} {21 21} {22 22} {23 23} {24 24} {25 25} {26 26} {27 27} {28 28} {29 29} {30 30} @@ -2992,7 +2977,7 @@ Class create HH24 -superclass select HH24 instproc initialize {} { - :options { + set :options { {00 0} {01 1} {02 2} {03 3} {04 4} {05 5} {06 6} {07 7} {08 8} {09 9} {10 10} {11 11} {12 12} {13 13} {14 14} {15 15} {16 16} {17 17} {18 18} {19 19} {20 20} {21 21} {22 22} {23 23} @@ -3012,12 +2997,12 @@ set v [lindex $args 0] if {$v eq ""} {return [:set value ""]} else { # round to 5 minutes - set :value [lindex [:options] [expr {($v + 2) / 5}] 1] + set :value [lindex ${:options} [expr {($v + 2) / 5}] 1] } } } MI instproc initialize {} { - :options { + set :options { {00 0} {05 5} {10 10} {15 15} {20 20} {25 25} {30 30} {35 35} {40 40} {45 45} {50 50} {55 55} } @@ -3032,7 +3017,7 @@ Class create MM -superclass select MM instproc initialize {} { - :options { + set :options { {01 1} {02 2} {03 3} {04 4} {05 5} {06 6} {07 7} {08 8} {09 9} {10 10} {11 11} {12 12} } @@ -3049,11 +3034,11 @@ set values [lang::message::lookup [:locale] acs-lang.localization-abmon] if {[lang::util::translator_mode_p]} {set values [::xo::localize $values]} set last 0 + set :options {} foreach m {1 2 3 4 5 6 7 8 9 10 11 12} { - lappend options [list [lindex $values $last] $m] + lappend :options [list [lindex $values $last] $m] set last $m } - :options $options next } ########################################################### @@ -3067,11 +3052,11 @@ set values [lang::message::lookup [:locale] acs-lang.localization-mon] if {[lang::util::translator_mode_p]} {set values [::xo::localize $values]} set last 0 + set :options {} foreach m {1 2 3 4 5 6 7 8 9 10 11 12} { - lappend options [list [lindex $values $last] $m] + lappend :options [list [lindex $values $last] $m] set last $m } - :options $options next } @@ -3208,17 +3193,16 @@ include instproc pretty_value {v} { if {$v eq ""} { return $v } - :instvar object - set item_id [$object get_property_from_link_page item_id] + set item_id [${:object} get_property_from_link_page item_id] if {$item_id == 0} { # Here, we could call "::xowiki::Link render" to offer the user means # to create the entry like with [[..]], if he has sufficient permissions...; # when $(package_id) is 0, the referenced package could not be # resolved return "Cannot resolve symbolic link '$v'" } - set link_type [$object get_property_from_link_page link_type] - $object references resolved [list $item_id $link_type] + set link_type [${:object} get_property_from_link_page link_type] + ${:object} references resolved [list $item_id $link_type] set resolve_local [:resolve_local] if {$resolve_local} { @@ -3229,8 +3213,8 @@ #my log "set __RESOLVE_LOCAL" $item_id set __RESOLVE_LOCAL 1 $item_id set_resolve_context \ - -package_id [$object package_id] -parent_id [$object parent_id] \ - -item_id [$object item_id] + -package_id [${:object} package_id] -parent_id [${:object} parent_id] \ + -item_id [${:object} item_id] set html [$item_id render] @@ -3561,21 +3545,19 @@ # for now, we allow just FormPages as child_pages # if {![info exists :form]} { return } - :instvar object set :form_objs [::xowiki::Weblog instantiate_forms \ - -parent_id [$object parent_id] \ - -default_lang [$object lang] \ - -forms [:form] \ - -package_id [$object package_id]] + -parent_id [${:object} parent_id] \ + -default_lang [${:object} lang] \ + -forms [:form] \ + -package_id [${:object} package_id]] } child_pages instproc pretty_value {v} { if {[info exists :form_objs]} { - :instvar object set count 0 foreach form ${:form_objs} { incr count [$form count_usages \ - -package_id [$object package_id] \ - -parent_id [$object item_id] \ + -package_id [${:object} package_id] \ + -parent_id [${:object} item_id] \ -publish_status [:publish_status]] } return $count @@ -3602,8 +3584,8 @@ #my msg "DATE has value [:value]//d=[:default] format=[:format] disabled?[info exists :disabled]" set :widget_type date set :format [string map [list _ " "] [:format]] - :array set defaults {year 2000 month 01 day 01 hour 00 min 00 sec 00} - :array set format_map { + array set :defaults {year 2000 month 01 day 01 hour 00 min 00 sec 00} + array set :format_map { SS {SS %S 1} MI {MI %M 1} HH24 {HH24 %H 1} @@ -3728,18 +3710,17 @@ } date instproc pretty_value {v} { - :instvar display_format # # Internally, we use the ansi date format. For displaying the date, # use the specified display format and present the time localized. # # Drop of the value after the "." we assume to have a date in the local zone regexp {^([^.]+)[.]} $v _ v - #return [clock format [clock scan $v] -format [string map [list _ " "] [:display_format]]] - if {$display_format eq "pretty-age"} { + #return [clock format [clock scan $v] -format [string map [list _ " "] ${:display_format}]] + if {${:display_format} eq "pretty-age"} { return [::xowiki::utility pretty_age -timestamp [clock scan $v] -locale [:locale]] } else { - return [lc_time_fmt $v [string map [list _ " "] [:display_format]] [:locale]] + return [lc_time_fmt $v [string map [list _ " "] ${:display_format}] [:locale]] } } @@ -3768,7 +3749,7 @@ } boolean instproc initialize {} { # should be with cvs head message catalogs: - :options "{#acs-kernel.common_Yes# t} {#acs-kernel.common_No# f}" + set :options "{#acs-kernel.common_Yes# t} {#acs-kernel.common_No# f}" next } @@ -3789,17 +3770,15 @@ set :widget_type boolean(hidden) } boolean_image instproc render_input {} { - :instvar t_img_url f_img_url CSSclass set title [expr {[info exists :__render_help_text_as_title_attr] ? ${:help_text} : ""}] - set id [:id] ::html::img \ -title $title \ - -class $CSSclass \ - -src [expr {[:value] ? $t_img_url : $f_img_url}] \ - -id $id-image + -class ${:CSSclass} \ + -src [expr {[:value] ? ${:t_img_url} : ${:f_img_url}}] \ + -id ${:id}-image template::add_event_listener \ - -id $id-image \ - -script [subst {toggle_img_boolean(this,'$t_img_url','$f_img_url');}] + -id ${:id}-image \ + -script [subst {toggle_img_boolean(this,'${:t_img_url}','${:f_img_url}');}] ::html::input -type hidden -name ${:name} -value [:value] @@ -3826,12 +3805,10 @@ Class create scale -superclass radio -parameter {{n 5} {horizontal true}} scale instproc initialize {} { - :instvar n - set options [list] - for {set i 1} {$i <= $n} {incr i} { - lappend options [list $i $i] + set :options [list] + for {set i 1} {$i <= ${:n}} {incr i} { + lappend :options [list $i $i] } - :options $options next }