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 -r1.224 -r1.225
--- openacs-4/packages/xowiki/tcl/form-field-procs.tcl 30 Dec 2012 13:49:44 -0000 1.224
+++ openacs-4/packages/xowiki/tcl/form-field-procs.tcl 28 Feb 2013 17:13:38 -0000 1.225
@@ -764,21 +764,19 @@
return [list name file:[my name] parent_id [[my object] item_id]]
}
- file instproc get_value_from_form {} {
- set old_value [[my object] form_parameter __old_value_[my name] ""]
+ file instproc no_value_provided {} {
set v [my set value]
- #my msg "value '$v' // old_value '$old_value'"
- #
- # Figure out, if we got a different file-name (value). If the
- # file-name is the same as in the last revision, we return a
- # "-". This has the effect, that file file is not uploaded again.
- #
- #if {$old_value ne "" && $old_value eq [my set value]} {}
-
- if {$old_value ne "" && $v eq ""} {
- return "-"
+ expr {$v eq "" || $v eq "-"}
+ }
+ file instproc get_old_value {} {
+ return [[my object] form_parameter __old_value_[my name] ""]
+ }
+
+ file instproc get_value {} {
+ if {[my no_value_provided]} {
+ return [my get_old_value]
}
- return $v
+ return [my set value]
}
file instproc get_from_value {value attribute {raw ""}} {
@@ -801,21 +799,28 @@
return [lindex $raw 0]
}
+ file instproc value {args} {
+ if {[llength $args] == 0} {
+ set r [my get_value]
+ } else {
+ set r [next]
+ }
+ #my msg "[my name]: value -> '$r' [my exists value] '[my set value]'"
+ return $r
+ }
+
file instproc convert_to_internal {} {
- my msg "convert_to_internal"
+ #my msg "convert_to_internal"
my instvar value
- set v [my get_value_from_form]
- if {$v eq "-" || $v eq ""} {
- # nothing to do, keep the old value
- #my msg "nothing to do with '$v'"
- set value [[my object] form_parameter __old_value_[my name] ""]
- [my object] set_property [my name] $value
+ if {[my no_value_provided]} {
+ [my object] set_property -new 1 [my name] [my get_old_value]
return
}
+ #my msg "[my name]: got value '$value'"
regsub -all {\\+} $value {/} value ;# fix IE upload path
set value [::file tail $value]
- [my object] set_property [my name] $value
+ [my object] set_property -new 1 [my name] $value
set package_id [[my object] package_id]
array set entry_info [my entry_info $value]
@@ -839,6 +844,7 @@
# Update the value with the attribute value pair list containing
# the revision_id. TODO: clear revision_id on export.
#
+ #my msg "[my name]: set_property [my name] [list name $value revision_id [$file_object revision_id]]"
[my object] set_property -new 1 [my name] [list name $value revision_id [$file_object revision_id]]
} else {
# create a new file
@@ -879,19 +885,72 @@
}
}
+ # file instproc render_input {} {
+ # util_createDom [list [my get_spec]]
+ # }
+
+ # file instproc get_spec {} {
+ # my instvar value
+ # set package_id [[my object] package_id]
+ # array set entry_info [my entry_info $value]
+ # set fn [my get_from_value $value name $value]
+ # set href [$package_id pretty_link -download 1 -parent_id $entry_info(parent_id) $entry_info(name)]
+ # if {![my istype image]} {
+ # append href ?filename=[ns_urlencode $fn]
+ # }
+ # #
+ # # The HTML5 handling of "required" would force us to upload in
+ # # every form the file again. To implement the sticky option, we
+ # # set temporarily the "required" attribute to false
+ # #
+ # if {[my exists required]} {
+ # set reset_required 1
+ # my set required false
+ # }
+ #
+ # lassign [next] tag atts children
+ #
+ # if {[info exists reset_required]} {
+ # my set required true
+ # }
+ #
+ # set additional_spec [util_tdom2list {
+ # # FOLLOWING GIVES TROUBLE, SEE util_spec2json FOR DETAILS
+ # ::html::t " "
+ # set id __old_value_[my name]
+ # ::html::input -type hidden -name $id -id $id -value $value
+ # #my msg "old_value '$value'"
+ # ::html::span -class file-control -id __a$id {
+ # ::html::a -href $href {::html::t [my label_or_value $fn] }
+ # # Show the clear button just when
+ # # - there is something to clear, and
+ # # - the formfield is not disabled, and
+ # # - the form-field is not sticky (default)
+ # set disabled [expr {[my exists disabled] && [my disabled] ne "false"}]
+ # if {$value ne "" && !$disabled && ![my sticky] } {
+ # ::html::input -type button -value clear \
+ # -onClick "document.getElementById('$id').value = ''; document.getElementById('__a$id').style.display = 'none';"
+ # }
+ # }
+ # }]
+ #
+ # lappend children $additional_spec
+ # return [list $tag $atts $children]
+ # }
+
file instproc render_input {} {
- util_createDom [list [my get_spec]]
- }
- file instproc get_spec {} {
my instvar value
set package_id [[my object] package_id]
+
array set entry_info [my entry_info $value]
set fn [my get_from_value $value name $value]
+ #my msg "[my name]: [list my get_from_value $value name $value] => '$fn'"
set href [$package_id pretty_link -download 1 -parent_id $entry_info(parent_id) $entry_info(name)]
if {![my istype image]} {
append href ?filename=[ns_urlencode $fn]
}
+
#
# The HTML5 handling of "required" would force us to upload in
# every form the file again. To implement the sticky option, we
@@ -901,35 +960,29 @@
set reset_required 1
my set required false
}
-
- lassign [next] tag atts children
+ next
if {[info exists reset_required]} {
my set required true
}
- set additional_spec [util_tdom2list {
- # FOLLOWING GIVES TROUBLE, SEE util_spec2json FOR DETAILS
- ::html::t " "
- set id __old_value_[my name]
- ::html::input -type hidden -name $id -id $id -value $value
- #my msg "old_value '$value'"
- ::html::span -class file-control -id __a$id {
- ::html::a -href $href {::html::t [my label_or_value $fn] }
- # Show the clear button just when
- # - there is something to clear, and
- # - the formfield is not disabled, and
- # - the form-field is not sticky (default)
- set disabled [expr {[my exists disabled] && [my disabled] ne "false"}]
- if {$value ne "" && !$disabled && ![my sticky] } {
- ::html::input -type button -value clear \
- -onClick "document.getElementById('$id').value = ''; document.getElementById('__a$id').style.display = 'none';"
- }
+ ::html::t " "
+ set id __old_value_[my name]
+ ::html::input -type hidden -name $id -id $id -value $value
+ ::html::span -class file-control -id __a$id {
+ ::html::a -href $href {::html::t [my label_or_value $fn] }
+
+ # Show the clear button just when
+ # - there is something to clear, and
+ # - the formfield is not disabled, and
+ # - the form-field is not sticky (default)
+
+ set disabled [expr {[my exists disabled] && [my disabled] ne "false"}]
+ if {$value ne "" && !$disabled && ![my sticky] } {
+ ::html::input -type button -value clear \
+ -onClick "document.getElementById('$id').value = ''; document.getElementById('__a$id').style.display = 'none';"
}
- }]
-
- lappend children $additional_spec
- return [list $tag $atts $children]
+ }
}
###########################################################
@@ -1619,11 +1672,9 @@
function calc_wiki_image_links_to_image_tags (data) {
var pathname = window.location.pathname;
pathname = pathname.substr(pathname.lastIndexOf("/")+1,pathname.length)
- console.log('pathname' + pathname);
pathname = pathname.replace(/:/ig,"%3a");
- var regex_wikilink = new RegExp('(\\[\\[./image:)(.*?)(\\]\\])', 'g');
- data = data.replace(regex_wikilink,'');
- console.log('data' + data);
+ var regex_wikilink = new RegExp('(\\[\\[.SELF./image:)(.*?)(\\]\\])', 'g');
+ data = data.replace(regex_wikilink,'');
return data
}
}
@@ -2754,7 +2805,7 @@
# Set the internal representation based on the components values.
set value [list]
foreach c [my components] {
- #my msg "lappending [$c name] [$c value] "
+ #my msg "$c [$c info class] lappending [list [$c name] [$c value]]"
lappend value [$c name] [$c value]
}
#my msg "[my name]: get_compound_value returns value=$value"