• Publicity: Public Only All

lang-widget-procs.tcl

Widgets for acs-lang. Currently just a special version of the select widget which adds a "lang" attribute to each option, as required by accessibility standards.

Location:
packages/acs-lang/tcl/lang-widget-procs.tcl
Created:
November 3, 2006
Author:
Don Baccus <dhogaza@pacifier.com>
CVS Identification:
$Id: lang-widget-procs.tcl,v 1.12 2024/09/11 06:15:48 gustafn Exp $

Procedures in this file

Detailed information

template::widget::select_locales (public)

 template::widget::select_locales element_reference tag_attributes

Generate a select widget for locales. We need a custom widget for this one case because accessibility standards require us to put out a "lang" attribute if the text is not in the same language as the rest of the page.

Parameters:
element_reference (required)
tag_attributes (required)

Partial Call Graph (max 5 caller/called nodes):
%3 test_locale_select_widget locale_select_widget (test acs-lang) template::widget::select_locales template::widget::select_locales test_locale_select_widget->template::widget::select_locales template::util::list_to_lookup template::util::list_to_lookup (public) template::widget::select_locales->template::util::list_to_lookup template::widget::merge_tag_attributes template::widget::merge_tag_attributes (public) template::widget::select_locales->template::widget::merge_tag_attributes

Testcases:
locale_select_widget
[ hide source ] | [ make this the default ]

Content File Source

ad_library {

    Widgets for acs-lang.

    Currently just a special version of the select widget which adds a "lang"
    attribute to each option, as required by accessibility standards.

    @author Don Baccus (dhogaza@pacifier.com)
    @creation-date November 3, 2006
    @cvs-id $Id: lang-widget-procs.tcl,v 1.12 2024/09/11 06:15:48 gustafn Exp $
}

namespace eval template {}
namespace eval template::widget {}

d_proc -public template::widget::select_locales {
    element_reference
    tag_attributes
} {
    Generate a select widget for locales.  We need a custom widget for this one
    case because accessibility standards require us to put out a "lang" attribute
    if the text is not in the same language as the rest of the page.
} {

    upvar $element_reference element

    array set attributes \
        [::template::widget::merge_tag_attributes element $tag_attributes]

    if { [info exists element(values)] } {
         template::util::list_to_lookup $element(values) values
    }

    if { $element(mode) ne "edit" } {
        set selected_list [list]

        foreach option $element(options) {

            lassign $option label value

            if { [info exists values($value)] } {
                lappend selected_list $label
                append output "<input type=\"hidden\" name=\"$element(name)\" value=\"[ns_quotehtml $value]\">"
            }
        }

        append output [join $selected_list ", "]

    } else {

        append output "<select name=\"$element(name)\" id=\"$element(name)\" "

        foreach name [array names attributes] {
            if {$attributes($name) eq {}} {
                append output $name=\"$name\""
            } else {
                append output $name=\"$attributes($name)\""
            }
        }
        append output ">\n"

        foreach option $element(options) {

            lassign $option label value

            set value [ns_quotehtml $value]
            append output " <option lang=\"[string range $value 0 1]\" value=\"$value\""
            if { [info exists values($value)] } {
                append output " selected=\"selected\""
            }

            append output ">$label</option>\n"
        }
        append output "</select>"
    }

    return $output

}

# Local variables:
#    mode: tcl
#    tcl-indent-level: 4
#    indent-tabs-mode: nil
# End: