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 ""
+ if {$link ne ""} {
+ set html ""
}
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}]
}