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 -N -r1.71 -r1.72 --- openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 19 Jul 2007 09:36:15 -0000 1.71 +++ openacs-4/packages/xowiki/tcl/xowiki-portlet-procs.tcl 19 Jul 2007 21:20:12 -0000 1.72 @@ -74,6 +74,31 @@ return [expr {$user(screen_name) ne "" ? $user(screen_name) : $user(name)}] } + + ::xowiki::Portlet proc incr_page_order {p} { + regexp {^(.*[.]?)([^.])$} $p _ prefix suffix + if {[string is integer -strict $suffix]} { + incr suffix + } elseif {[string is lower -strict $suffix]} { + regexp {^(.*)(.)$} $suffix _ before last + if {$last eq "z"} { + set last "aa" + } else { + set last [format %c [expr {[scan $last %c] + 1}]] + } + set suffix $before$last + } elseif {[string is upper -strict $suffix]} { + regexp {^(.*)(.)$} $suffix _ before last + if {$last eq "Z"} { + set last "AA" + } else { + set last [format %c [expr {[scan $last %c] + 1}]] + } + set suffix $before$last + } + return $prefix$suffix + } + ::xowiki::Portlet instproc locale_clause {package_id locale} { set default_locale [$package_id default_locale] set system_locale "" @@ -1525,6 +1550,7 @@ {__decoration plain} {parameter_declaration { {-category_id} + {-menu_buttons edit-item-button} }} } @@ -1573,9 +1599,13 @@ set content [string map [list "\{\{" "\\\{\{"] $content] } } - set menu [$p include_portlet "edit-item-button"] + set menu [list] + foreach b $menu_buttons { + set html [$p include_portlet $b] + if {$html ne ""} {lappend menu $html} + } append output "" \ - "
$menu
" \ + "
" [join $menu " "] "
" \ "$page_order $title
" \ $content } @@ -1590,14 +1620,21 @@ {__decoration none} } - item-button instproc render_button {-method -src -return_url} { - my get_parameters - my instvar __including_page + item-button instproc render_button { + -page + -method + -src + -alt + -title + -return_url + -page_order + } { set html "" - set page [expr {[info exists page_id] ? $page_id : $__including_page}] - + set package_id [$page package_id] set p_link [$package_id pretty_link [$page name]] - set edit_link [$package_id make_link -link $p_link $page $method return_url] + if {![info exists return_url]} {set return_url $p_link} + if {![info exists alt]} {set alt $method} + set edit_link [$package_id make_link -link $p_link $page $method return_url page_order] if {$edit_link ne ""} { set html "\"$alt\"" } @@ -1608,50 +1645,71 @@ -parameter { {parameter_declaration { {-page_id} - {-title "edit item"} + {-title "#xowiki.edit#"} {-alt "edit"} }} } edit-item-button instproc render {} { - return [my render_button -method edit -src /resources/acs-subsite/Edit16.gif] + 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] + set title "$title [$template title] [$page name]" + } + return [my render_button \ + -page $page -method edit \ + -title $title -alt $alt \ + -return_url [::xo::cc url] \ + -src /resources/acs-subsite/Edit16.gif] } -# { -# my get_parameters -# my instvar __including_page -# set html "" -# set page [expr {$page_id ? $page_id : $__including_page}] -# set p_link [$package_id pretty_link [$page name]] -# set edit_link [$package_id make_link -link $p_link $page edit return_url] -# if {$edit_link ne ""} { -# set html "\"$alt\"" -# } -# return $html -# } + Class create delete-item-button -superclass ::xowiki::portlet::item-button \ + -parameter { + {__decoration none} + {parameter_declaration { + {-page_id} + {-title "#xowiki.delete#"} + {-alt "delete"} + }} + } - Class create new-item-button -superclass ::xowiki::portlet::item-button \ + delete-item-button instproc render {} { + my get_parameters + my instvar __including_page + set page [expr {[info exists page_id] ? $page_id : $__including_page}] + return [my render_button \ + -page $page -method delete \ + -title $title -alt $alt \ + -return_url [::xo::cc url] \ + -src /resources/acs-subsite/Delete16.gif] + } + + Class create create-item-button -superclass ::xowiki::portlet::item-button \ -parameter { {__decoration none} {parameter_declaration { {-page_id} - {-title "new item"} {-alt "new"} }} } - - new-item-button instproc render {} { + + create-item-button instproc render {} { my get_parameters my instvar __including_page - set html "" - set page [expr {$page_id ? $page_id : $__including_page}] - - set p_link [$package_id pretty_link [$page name]] - set edit_link [$package_id make_link -link $p_link $page edit return_url] - if {$edit_link ne ""} { - set html "\"$alt\"" + set page [expr {[info exists page_id] ? $page_id : $__including_page}] + if {[$page istype ::xowiki::FormPage]} { + set template [$page page_template] + set page_order [::xowiki::Portlet incr_page_order [$page page_order]] + return [my render_button \ + -page $template -method create-new \ + -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 $html + return "" } }