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.80 -r1.81 --- openacs-4/packages/xowiki/tcl/package-procs.tcl 9 Aug 2007 21:33:56 -0000 1.80 +++ openacs-4/packages/xowiki/tcl/package-procs.tcl 10 Aug 2007 18:39:22 -0000 1.81 @@ -844,7 +844,19 @@ set object_type [my query_parameter object_type "::xowiki::Page"] set autoname [my get_parameter autoname 0] set page [$object_type new -volatile -parent_id $folder_id -package_id $id] - $page set name "" + + set source_item_id [$id query_parameter source_item_id ""] + if {$source_item_id ne ""} { + set source [$object_type instantiate -item_id $source_item_id] + $source destroy_on_cleanup + $page copy_content_vars -from_object $source + set name "" + regexp {^.*:(.*)$} [$source set name] _ name + $page set name $name + } else { + $page set name "" + } + return [$page edit -new true -autoname $autoname] } Index: openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl =================================================================== RCS file: /usr/local/cvsroot/openacs-4/packages/xowiki/tcl/Attic/xowiki-portlet-procs.tcl,v diff -u -r1.85 -r1.86 --- openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 10 Aug 2007 10:55:01 -0000 1.85 +++ openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 10 Aug 2007 18:39:22 -0000 1.86 @@ -1636,6 +1636,9 @@ } set menu [list] foreach b $menu_buttons { + if {[info command ::xowiki::portlet::$b] eq ""} { + set b $b-item-button + } set html [$p include_portlet [list $b -book_mode true]] if {$html ne ""} {lappend menu $html} } @@ -1665,20 +1668,23 @@ -return_url -page_order -object_type + -source_item_id } { set html "" if {![info exists return_url]} {set return_url $p_link} if {![info exists alt]} {set alt $method} + if {![info exists src]} {set src [my set src]} if {[$page istype ::xowiki::Package]} { - set edit_link [$package_id make_link $package_id \ - edit-new page_order object_type return_url autoname] + set link [$package_id make_link $package_id edit-new object_type \ + return_url page_order source_item_id] } else { set p_link [$package_id pretty_link [$page name]] - set edit_link [$package_id make_link -link $p_link $page $method return_url page_order] + set link [$package_id make_link -link $p_link $page $method \ + return_url page_order source_item_id] } - if {$edit_link ne ""} { - set html "\"$alt\"" + if {$link ne ""} { + set html "\"$alt\"" } return $html } @@ -1714,6 +1720,7 @@ Class create delete-item-button -superclass ::xowiki::portlet::item-button \ -parameter { {__decoration none} + {src /resources/acs-subsite/Delete16.gif} {parameter_declaration { {-page_id} {-title "#xowiki.delete#"} @@ -1729,13 +1736,13 @@ return [my render_button \ -page $page -method delete -package_id $package_id \ -title $title -alt $alt \ - -return_url [::xo::cc url] \ - -src /resources/acs-subsite/Delete16.gif] + -return_url [::xo::cc url]] } Class create create-item-button -superclass ::xowiki::portlet::item-button \ -parameter { {__decoration none} + {src /resources/acs-subsite/Add16.gif} {parameter_declaration { {-page_id} {-alt "new"} @@ -1754,20 +1761,53 @@ -page $template -method create-new -package_id $package_id \ -title [_ xowiki.create_new_entry_of_type [list type [$template title]]] \ -alt $alt -page_order $page_order \ - -return_url [::xo::cc url] \ - -src /resources/acs-subsite/Add16.gif] + -return_url [::xo::cc url]] } else { set object_type [$__including_page info class] return [my render_button \ -page $package_id -method edit_new -package_id $package_id \ -title [_ xowiki.create_new_entry_of_type [list type $object_type]] \ -alt $alt -page_order $page_order \ -return_url [::xo::cc url] \ - -object_type $object_type \ - -src /resources/acs-subsite/Add16.gif] + -object_type $object_type] } } + Class create copy-item-button -superclass ::xowiki::portlet::item-button \ + -parameter { + {__decoration none} + {src /resources/acs-subsite/Copy16.gif} + {parameter_declaration { + {-page_id} + {-alt "copy"} + {-book_mode false} + }} + } + + copy-item-button instproc render {} { + my get_parameters + my instvar __including_page + set page [expr {[info exists page_id] ? $page_id : $__including_page}] + + if {[$page istype ::xowiki::FormPage]} { + set template [$page page_template] + return [my render_button \ + -page $template -method create-new -package_id $package_id \ + -title [_ xowiki.copy_entry [list type [$template title]]] \ + -alt $alt -source_item_id [$page item_id] \ + -return_url [::xo::cc url]] + } else { + set object_type [$__including_page info class] + return [my render_button \ + -page $package_id -method edit_new -package_id $package_id \ + -title [_ xowiki.copy_entry [list type $object_type]] \ + -alt $alt -source_item_id [$page item_id] \ + -return_url [::xo::cc url] \ + -object_type $object_type] + } + } + + } 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.95 -r1.96 --- openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 30 Jul 2007 10:58:06 -0000 1.95 +++ openacs-4/packages/xowiki/tcl/xowiki-www-procs.tcl 10 Aug 2007 18:39:22 -0000 1.96 @@ -697,6 +697,7 @@ if {[my is_new_entry [my name]]} { my set creator [::xo::get_user_name [::xo::cc user_id]] my set nls_language [ad_conn locale] + my set name [$package_id query_parameter name ""] } array set __ia [my set instance_attributes] @@ -1046,20 +1047,32 @@ -parent_id [my parent_id] \ -publish_status "production" \ -page_template [my item_id]] - - # set some default values if they are provided - foreach key {name title page_order last_page_id} { - if {[$package_id exists_query_parameter $key]} { - $f set $key [$package_id query_parameter $key] + + set source_item_id [$package_id query_parameter source_item_id ""] + if {$source_item_id ne ""} { + set source [FormPage instantiate -item_id $source_item_id] + $source destroy_on_cleanup + $f copy_content_vars -from_object $source + #$f set __autoname_prefix "[my name] - " + $f set name "" + regexp {^.*:(.*)$} [$source set name] _ name + } else { + # set some default values if they are provided + foreach key {name title page_order last_page_id} { + if {[$package_id exists_query_parameter $key]} { + $f set $key [$package_id query_parameter $key] + } } } $f set __title_prefix [my title] + $f save_new if {[my exists_query_parameter "return_url"]} { set return_url [my query_parameter "return_url"] } $package_id returnredirect \ - [export_vars -base [$package_id pretty_link [$f name]] {{m edit} return_url}] + [export_vars -base [$package_id pretty_link [$f name]] \ + {{m edit} return_url name}] }