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.97 -r1.98 --- openacs-4/packages/xowiki/tcl/form-field-procs.tcl 25 Sep 2008 13:38:42 -0000 1.97 +++ openacs-4/packages/xowiki/tcl/form-field-procs.tcl 25 Sep 2008 20:36:55 -0000 1.98 @@ -517,7 +517,10 @@ next } file instproc entry_name {value} { - set entry_name file:[[my object] name]-[my name] + set obj [my object] + set name [$obj build_name -nls_language [$obj form_parameter nls_language {}]] + regsub -all : $name _ object_name + return file:$object_name-[my name] } file instproc process_user_input {} { my instvar value @@ -526,15 +529,24 @@ # nothing to do return } + regsub -all {\\+} $value {/} value ;# fix IE upload values + set value [::file tail $value] + [my object] set_property -new 1 [my name] $value + set folder_id [[my object] set parent_id] set entry_name [my entry_name $value] - #my msg "guess mime_type of $entry_name = [::xowiki::guesstype $value] // [my set content-type]" + set content_type [my set content-type] + if {$content_type eq "application/octetstream"} { + set content_type [::xowiki::guesstype $value] + } + #my msg "mime_type of $entry_name = [::xowiki::guesstype $value] // [my set content-type] ==> $content_type" + if {[set id [::xo::db::CrClass lookup -name $entry_name -parent_id $folder_id]]} { # file entry exists already, create a new revision set file_object [::xo::db::CrClass get_instance_from_db -item_id $id] $file_object set import_file [my set tmpfile] - $file_object set mime_type [::xowiki::guesstype $entry_name] + $file_object set mime_type $content_type $file_object set title $value $file_object save } else { @@ -543,7 +555,7 @@ -title $value \ -name $entry_name \ -parent_id $folder_id \ - -mime_type [::xowiki::guesstype $entry_name] \ + -mime_type $content_type \ -package_id [[my object] package_id] \ -creation_user [::xo::cc user_id] ] $file_object set import_file [my set tmpfile] Index: openacs-4/packages/xowiki/tcl/package-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/package-procs.tcl,v diff -u -r1.131 -r1.132 --- openacs-4/packages/xowiki/tcl/package-procs.tcl 25 Sep 2008 07:19:53 -0000 1.131 +++ openacs-4/packages/xowiki/tcl/package-procs.tcl 25 Sep 2008 20:36:55 -0000 1.132 @@ -919,7 +919,7 @@ # # If we create a PageInstance via the ad_form based # PageInstanceForm, we have to provide the page_template here to - # be able to validate the name, where "complete_name" needs + # be able to validate the name, where "build_name" needs # access to the ::xowiki::PageTemplate of the # ::xowiki::PageInstance. # Index: openacs-4/packages/xowiki/tcl/xowiki-form-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-form-procs.tcl,v diff -u -r1.102 -r1.103 --- openacs-4/packages/xowiki/tcl/xowiki-form-procs.tcl 25 Sep 2008 13:38:43 -0000 1.102 +++ openacs-4/packages/xowiki/tcl/xowiki-form-procs.tcl 25 Sep 2008 20:36:55 -0000 1.103 @@ -206,7 +206,7 @@ $data instvar package_id if {[$data istype ::xowiki::File] && [$data exists mime_type]} { #my log "--mime validate_name data=[my exists data] MIME [$data set mime_type]" - set name [$data complete_name $name [$data set upload_file]] + set name [$data build_name $name [$data set upload_file]] # # Check, if the user is allowed to create a file with the specified # name. Files ending in .css or .js might require special permissions. @@ -222,10 +222,7 @@ return 0 } } else { - set stripped_name $name - regexp {^..:(.*)$} $name _ stripped_name - set new_nls_language [$data form_parameter nls_language {}] - set name [$data complete_name $stripped_name $new_nls_language] + set name [$data build_name -nls_language [$data form_parameter nls_language {}]] } set name [::$package_id normalize_name $name] Index: openacs-4/packages/xowiki/tcl/xowiki-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-procs.tcl,v diff -u -r1.282 -r1.283 --- openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 17 Sep 2008 14:51:22 -0000 1.282 +++ openacs-4/packages/xowiki/tcl/xowiki-procs.tcl 25 Sep 2008 20:36:55 -0000 1.283 @@ -676,21 +676,29 @@ Page instforward form_parameter {%my set package_id} %proc Page instforward exists_form_parameter {%my set package_id} %proc - Page instproc complete_name {name {nls_language ""}} { - if {![regexp {^..:} $name]} { - # prepend the language prefix only, if the entry is not empty - if {$name ne ""} { - if {[my istype ::xowiki::PageInstance]} { - # - # Do not add a language prefix to anonymous pages - # - set anon_instances [my get_from_template anon_instances f] - if {$anon_instances} { - return $name - } + Page instproc build_name {{-nls_language ""}} { + # + # Build the name of the page, based on the provided nls_language + # This method strips existing language-prefixes and uses the + # provided nls_language or the instance variable for the new name. + # It handles as well anonymous pages, which are never equipped + # with language prefixes. ::xowiki::File has its own method. + # + set name [my name] + set stripped_name $name + regexp {^..:(.*)$} $name _ stripped_name + # prepend the language prefix only, if the entry is not empty + if {$stripped_name ne ""} { + if {[my istype ::xowiki::PageInstance]} { + # + # Do not add a language prefix to anonymous pages + # + set anon_instances [my get_from_template anon_instances f] + if {$anon_instances} { + return $stripped_name } - if {$nls_language eq ""} {set nls_language [my set nls_language]} - set name [string range $nls_language 0 1]:$name + if {$nls_language eq ""} {set nls_language [my nls_language]} + set name [string range $nls_language 0 1]:$stripped_name } } return $name @@ -1366,7 +1374,7 @@ File parameter { {render_adp 0} } - File instproc complete_name {name {fn ""}} { + File instproc build_name {name {fn ""}} { my instvar mime_type package_id set type file if {$name ne ""} { Index: openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl,v diff -u -r1.176 -r1.177 --- openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 25 Sep 2008 13:38:43 -0000 1.176 +++ openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 25 Sep 2008 20:36:55 -0000 1.177 @@ -1125,7 +1125,7 @@ } #my show_fields $form_fields - #my log "__form_action [my form_parameter __form_action {}]" + #my msg "__form_action [my form_parameter __form_action {}]" if {[my form_parameter __form_action ""] eq "save-form-data"} { #my msg "we have to validate"