- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables
Class ::xowiki::formfield::candidate_box_select
::xowiki::formfield::candidate_box_selectXOTcl class for selecting a subset from a list of candidates.create ... \
[ -as_box:boolean (default "false") ] \
[ -bulk_operation:boolean (default "false") ] \
[ -dnd:boolean (default "true") ] \
[ -keep_order:boolean (default "false") ]
Defined in /var/www/openacs.org/packages/xowiki/tcl/form-field-procs.tcl
- Documented Parameters:
- as_box
- makes something like in info box in wikipedia (right floated)
- keep_order
- when set, the user provided order is preserved, otherwise the order from the candidates is used.
- dnd
- allow drag and drop
Class Relations
- class: ::xotcl::Class
- superclass: ::xowiki::formfield::select
- subclass: ::xowiki::formfield::role_member
, ::xowiki::formfield::abstract_page
::xotcl::Class create ::xowiki::formfield::candidate_box_select \ -superclass ::xowiki::formfield::selectMethods (to be applied on instances)
add_bulk_handler (scripted)
template::add_event_listener -id $id -event $event -preventdefault=false -script "selection_area_bulk_operation_handler(event,'$operation');"add_drag_handler (scripted)
template::add_event_listener -id $id -event $event -preventdefault=false -script "selection_area_${event}_handler(event);"as_box (setter)
bulk_operation (setter)
dnd (setter)
keep_order (setter)
render_input (scripted)
#:msg "mul ${:multiple} dnd ${:dnd}" # makes only sense currently for multiple selects if {${:multiple} && ${:dnd}} { if {[:is_disabled]} { html::t -disableOutputEscaping [:pretty_value [:value]] } else { ::xo::Page requireJS "/resources/xowiki/selection-area.js" set count 0 set selected {} set candidates {} foreach o ${:options} { lassign $o label rep if {$rep in ${:value}} { lappend selected $rep } else { lappend candidates $rep } dict set labels $rep label $label #dict set labels $rep label $rep dict set labels $rep serial [incr count] } if {${:keep_order}} { set selected [lmap v ${:value} { if {$v ni $selected} { continue } set _ $v }] } html::div -class candidate-selection -id ${:id} { # # Internal representation # ::html::textarea -id ${:id}.text -name ${:name} { ::html::t [join ${:value} \n] } # # Selections # ::html::div -class "workarea selected" { ::html::h3 { ::html::t "#xowiki.Selection# ([llength $selected])"} # TODO what todo with DISABLED? if {${:bulk_operation}} { ::html::div -id ${:id}.bulk_remove -role "button" -class "text-center bulk-remove" { ::html::t ">>" :add_bulk_handler -id ${:id}.bulk_remove -event click -operation bulk_remove } } ::html::ul -class "region selected" -id ${:id}.selected { foreach v $selected { set id ${:id}.selected.[dict get $labels $v serial] ::html::li -class "selection list-group-item" -draggable true -id $id -data-value $v { ::html::t [dict get $labels $v label] } :add_drag_handler -id $id -event dragstart } } :add_drag_handler -id ${:id}.selected -event drop :add_drag_handler -id ${:id}.selected -event dragover } # # Candidates # ::html::div -class "workarea candidates" { ::html::h3 { ::html::t "#xowiki.Candidates# ([llength $candidates])"} if {${:bulk_operation}} { ::html::div -id ${:id}.bulk_add -role "button" -class "text-center bulk-add" { ::html::t "<<" :add_bulk_handler -id ${:id}.bulk_add -event click -operation bulk_add } } ::html::ul -id ${:id}.candidates -class region { foreach v $candidates { set id ${:id}.[dict get $labels $v serial] ::html::li -class "candidates list-group-item" -draggable true -id $id -data-value $v { ::html::t [dict get $labels $v label] } :add_drag_handler -id $id -event dragstart } } :add_drag_handler -id ${:id}.candidates -event drop :add_drag_handler -id ${:id}.candidates -event dragover } } ::html::div -class visual-clear { ;# this space is left intentionally blank } } } else { next }
- Methods: All Methods Documented Methods Hide Methods
- Source: Display Source Hide Source
- Variables: Show Variables Hide Variables