Commit c7c02549 authored by cvs2svn's avatar cvs2svn

This commit was manufactured by cvs2svn to create tag 'v3-0-0-0-1'.

Sprout from master 2005-04-18 21:32:36 UTC Frank Bergmann  <frank.bergmann@project-open.com> 'Initial Import'
Delete:
    acs-templating.info
    catalog/acs-templating.ar_LB.utf-8.xml
    catalog/acs-templating.ca_ES.ISO-8859-1.xml
    catalog/acs-templating.ch_zh.utf-8.xml
    catalog/acs-templating.da_DK.ISO-8859-1.xml
    catalog/acs-templating.de_DE.ISO-8859-1.xml
    catalog/acs-templating.en_AU.ISO-8859-1.xml
    catalog/acs-templating.en_US.ISO-8859-1.xml
    catalog/acs-templating.es_CO.ISO-8859-1.xml
    catalog/acs-templating.es_ES.ISO-8859-1.xml
    catalog/acs-templating.es_GT.ISO-8859-1.xml
    catalog/acs-templating.eu_ES.ISO-8859-1.xml
    catalog/acs-templating.fi_FI.utf-8.xml
    catalog/acs-templating.fr_FR.ISO-8859-1.xml
    catalog/acs-templating.hu_HU.utf-8.xml
    catalog/acs-templating.it_IT.ISO-8859-1.xml
    catalog/acs-templating.ko_KR.utf-8.xml
    catalog/acs-templating.ms_MY.utf-8.xml
    catalog/acs-templating.nl_NL.ISO-8859-1.xml
    catalog/acs-templating.nn_NO.ISO-8859-1.xml
    catalog/acs-templating.no_NO.ISO-8859-1.xml
    catalog/acs-templating.pt_BR.ISO-8859-1.xml
    catalog/acs-templating.pt_PT.ISO-8859-1.xml
    catalog/acs-templating.ro_RO.utf-8.xml
    catalog/acs-templating.sv_SE.ISO-8859-1.xml
    catalog/acs-templating.zh_CN.utf-8.xml
    catalog/acs-templating.zh_TW.utf-8.xml
    java/src/com/arsdigita/acs/acsTemplating/test/TemplatingTest.java
    resources/assets/corners/lower-left.gif
    resources/assets/corners/lower-right.gif
    resources/assets/corners/upper-left.gif
    resources/assets/corners/upper-right.gif
    resources/forms/blue.adp
    resources/forms/coddo.adp
    resources/forms/configuration.adp
    resources/forms/confirm-button.adp
    resources/forms/confirm-button.tcl
    resources/forms/grid.adp
    resources/forms/inline.adp
    resources/forms/plain.adp
    resources/forms/plainest.adp
    resources/forms/standard.adp
    resources/forms/tabbed-dialog.adp
    resources/forms/tiny-plain.adp
    resources/forms/wizard.adp
    resources/lists/filters.adp
    resources/lists/inline-filters.adp
    resources/lists/list.adp
    resources/lists/table.adp
    resources/messages/datasources.adp
    resources/messages/datasources.tcl
    resources/messages/error.adp
    resources/messages/request-error.adp
    resources/messages/request-error.tcl
    sql/oracle/acs-templating-create.sql
    sql/oracle/acs-templating-drop.sql
    sql/oracle/demo-create.sql
    sql/oracle/demo-drop.sql
    sql/postgresql/acs-templating-create.sql
    sql/postgresql/acs-templating-drop.sql
    sql/postgresql/demo-create.sql
    sql/postgresql/demo-drop.sql
    tcl/0-acs-templating-procs.tcl
    tcl/acs-integration-init.tcl
    tcl/acs-integration-procs.tcl
    tcl/acs-templating-init.tcl
    tcl/apm-callback-procs.tcl
    tcl/currency-procs.tcl
    tcl/data-procs.tcl
    tcl/date-init.tcl
    tcl/date-procs.tcl
    tcl/debug-procs.tcl
    tcl/doc-procs.tcl
    tcl/doc-tcl-procs.tcl
    tcl/element-procs.tcl
    tcl/file-procs.tcl
    tcl/filter-procs.tcl
    tcl/form-procs.tcl
    tcl/list-procs-oracle.xql
    tcl/list-procs-postgresql.xql
    tcl/list-procs.tcl
    tcl/mime-procs.tcl
    tcl/paginator-procs.tcl
    tcl/parse-procs.tcl
    tcl/query-procs.tcl
    tcl/request-procs.tcl
    tcl/richtext-or-file-procs.tcl
    tcl/richtext-procs.tcl
    tcl/spellcheck-init.tcl
    tcl/spellcheck-procs.tcl
    tcl/tab-procs.tcl
    tcl/table-procs.tcl
    tcl/tag-init.tcl
    tcl/tag-procs.tcl
    tcl/template-init.tcl
    tcl/test/multirow-procs.tcl
    tcl/test/multirow-test.adp
    tcl/test/multirow-test.tcl
    tcl/test/parse-test-procs.tcl
    tcl/test/spell-checker-procs.tcl
    tcl/util-procs.tcl
    tcl/widget-procs-oracle.xql
    tcl/widget-procs-postgresql.xql
    tcl/widget-procs.tcl
    tcl/wizard-procs.tcl
    www/admin/index.html
    www/admin/test/chain-frac-0.tcl
    www/admin/test/chain-frac-1.adp
    www/admin/test/chain-frac-1.tcl
    www/admin/test/chain-frac-2.adp
    www/admin/test/if.adp
    www/admin/test/if.readme
    www/admin/test/if.tcl
    www/admin/test/include-0.adp
    www/admin/test/include-0.tcl
    www/admin/test/include.adp
    www/admin/test/include.tcl
    www/admin/test/index.html
    www/doc/TclDocs/cm_widget.html
    www/doc/TclDocs/cms_rel.html
    www/doc/TclDocs/content.html
    www/doc/TclDocs/content_add.html
    www/doc/TclDocs/content_method.html
    www/doc/TclDocs/doc.html
    www/doc/TclDocs/doc__util.html
    www/doc/TclDocs/form.html
    www/doc/TclDocs/item.html
    www/doc/TclDocs/namespace-list.html
    www/doc/TclDocs/namespaces.html
    www/doc/TclDocs/pagination.html
    www/doc/TclDocs/publish.html
    www/doc/TclDocs/request.html
    www/doc/TclDocs/stylesheet.css
    www/doc/TclDocs/tcl-procs.html
    www/doc/TclDocs/util.html
    www/doc/TclDocs/widget.html
    www/doc/api/database.html
    www/doc/api/element.html
    www/doc/api/form.html
    www/doc/api/index.html
    www/doc/api/multirow.html
    www/doc/api/request.html
    www/doc/api/stylesheet.css
    www/doc/appendices/memory.html
    www/doc/demo/bind.adp
    www/doc/demo/bind.tcl
    www/doc/demo/comment.adp
    www/doc/demo/compile.tcl
    www/doc/demo/contract-2.adp
    www/doc/demo/contract-2.tcl
    www/doc/demo/contract-err.adp
    www/doc/demo/contract-err.tcl
    www/doc/demo/contract.adp
    www/doc/demo/contract.tcl
    www/doc/demo/date-test.adp
    www/doc/demo/date-test.tcl
    www/doc/demo/display-edit.adp
    www/doc/demo/display-edit.tcl
    www/doc/demo/embed_escape.adp
    www/doc/demo/embed_escape.tcl
    www/doc/demo/error.adp
    www/doc/demo/error.tcl
    www/doc/demo/explicit_escape.adp
    www/doc/demo/fibo-master.adp
    www/doc/demo/fibo-master.tcl
    www/doc/demo/fibo-start.adp
    www/doc/demo/fibo-start.tcl
    www/doc/demo/fibo.adp
    www/doc/demo/fibo.tcl
    www/doc/demo/form.adp
    www/doc/demo/form.tcl
    www/doc/demo/form.xql
    www/doc/demo/grid.adp
    www/doc/demo/grid.tcl
    www/doc/demo/group.adp
    www/doc/demo/group.tcl
    www/doc/demo/hello.adp
    www/doc/demo/hello.tcl
    www/doc/demo/if.adp
    www/doc/demo/if.tcl
    www/doc/demo/implicit_escape.adp
    www/doc/demo/implicit_escape.tcl
    www/doc/demo/include.adp
    www/doc/demo/include.tcl
    www/doc/demo/included.adp
    www/doc/demo/index.html
    www/doc/demo/legacy.tcl
    www/doc/demo/list.adp
    www/doc/demo/list.tcl
    www/doc/demo/master.adp
    www/doc/demo/multiaccess.adp
    www/doc/demo/multiaccess.tcl
    www/doc/demo/multiple.adp
    www/doc/demo/multiple.tcl
    www/doc/demo/multirow.adp
    www/doc/demo/multirow.tcl
    www/doc/demo/pay-confirm.adp
    www/doc/demo/pay.adp
    www/doc/demo/pay.tcl
    www/doc/demo/puts.adp
    www/doc/demo/puts.tcl
    www/doc/demo/reference-inc.adp
    www/doc/demo/reference.adp
    www/doc/demo/reference.tcl
    www/doc/demo/request.adp
    www/doc/demo/request.tcl
    www/doc/demo/sandwich-grid.adp
    www/doc/demo/sandwich.adp
    www/doc/demo/sandwich.tcl
    www/doc/demo/select.adp
    www/doc/demo/select.tcl
    www/doc/demo/show.tcl
    www/doc/demo/skin-fancy.adp
    www/doc/demo/skin-plain.adp
    www/doc/demo/skin.tcl
    www/doc/demo/slave-default.adp
    www/doc/demo/slave.adp
    www/doc/demo/state.adp
    www/doc/demo/state.tcl
    www/doc/demo/string.adp
    www/doc/demo/string.tcl
    www/doc/demo/submit-test.adp
    www/doc/demo/submit-test.tcl
    www/doc/demo/user-edit.adp
    www/doc/demo/user-edit.tcl
    www/doc/demo/user-edit.xql
    www/doc/design.html
    www/doc/designer-guide.html
    www/doc/developer-guide.html
    www/doc/exercise/ats-for-designers.html
    www/doc/exercise/form-sample-revised.adp
    www/doc/exercise/form-sample-revised.tcl
    www/doc/exercise/form-sample.adp
    www/doc/exercise/form-sample.tcl
    www/doc/exercise/list-and-var-sample.adp
    www/doc/exercise/list-and-var-sample.tcl
    www/doc/exercise/list-and-var-sample.txt
    www/doc/exercise/master-sample.adp
    www/doc/exercise/slave-sample-2.adp
    www/doc/exercise/slave-sample-3.adp
    www/doc/exercise/slave-sample-4.adp
    www/doc/exercise/slave-sample.adp
    www/doc/exercise/slave-sample.tcl
    www/doc/exercise/templating-exercise.sql
    www/doc/gen/generate-docs.adp
    www/doc/gen/generate-docs.tcl
    www/doc/gen/namespace-list.adp
    www/doc/gen/namespace-template.adp
    www/doc/gen/namespace-template.tcl
    www/doc/gen/namespace_block.adp
    www/doc/gen/namespace_block.tcl
    www/doc/gen/package-template.adp
    www/doc/gen/proc-doc.html
    www/doc/gen/proc-template.adp
    www/doc/gen/proc-template.tcl
    www/doc/gen/stylesheet.css
    www/doc/guide/components.html
    www/doc/guide/composite.html
    www/doc/guide/data.html
    www/doc/guide/document.html
    www/doc/guide/down.gif
    www/doc/guide/form-datatypes.html
    www/doc/guide/form-process.html
    www/doc/guide/form-templates.html
    www/doc/guide/form-widgets.html
    www/doc/guide/forms.html
    www/doc/guide/index.html
    www/doc/guide/master.html
    www/doc/guide/search.html
    www/doc/guide/skins.html
    www/doc/guide/tcl.html
    www/doc/guide/templates.html
    www/doc/guide/templating.jpg
    www/doc/guide/wizard-procs-doc.html
    www/doc/guide/wizards.html
    www/doc/index.html
    www/doc/install.html
    www/doc/introduction.html
    www/doc/migration.html
    www/doc/no-quote-upgrade.html
    www/doc/noquote.html
    www/doc/requirements.html
    www/doc/tagref/formerror.html
    www/doc/tagref/formgroup.html
    www/doc/tagref/formtemplate.html
    www/doc/tagref/formwidget.html
    www/doc/tagref/grid.html
    www/doc/tagref/group.html
    www/doc/tagref/if.html
    www/doc/tagref/include-optional.html
    www/doc/tagref/include.html
    www/doc/tagref/index.html
    www/doc/tagref/list.html
    www/doc/tagref/master.html
    www/doc/tagref/multiple.html
    www/doc/tagref/noparse.html
    www/doc/tagref/property.html
    www/doc/tagref/slave.html
    www/doc/tagref/switch.html
    www/doc/tagref/variable.html
    www/doc/time1/stage00.gif
    www/doc/time1/stage01.gif
    www/doc/time1/stage02.gif
    www/doc/time1/stage03.gif
    www/doc/time1/stage04.gif
    www/doc/time1/stage05.gif
    www/doc/time1/stage06.gif
    www/doc/time1/stage07.gif
    www/doc/time1/stage08.gif
    www/doc/time1/stage09.gif
    www/doc/time1/stage10.gif
    www/doc/time1/stage11.gif
    www/doc/time1/stage12.gif
    www/doc/time1/stage13.gif
    www/doc/time1/stage14.gif
    www/doc/time2/stage00.gif
    www/doc/time2/stage01.gif
    www/doc/time2/stage02.gif
    www/doc/time2/stage03.gif
    www/doc/time2/stage04.gif
    www/doc/time2/stage05.gif
    www/doc/time2/stage06.gif
    www/doc/time2/stage07.gif
    www/doc/time2/stage08.gif
    www/doc/time2/stage09.gif
    www/doc/time2/stage10.gif
    www/doc/time2/stage11.gif
    www/doc/time2/stage12.gif
    www/doc/time2/stage13.gif
    www/doc/time2/stage14.gif
    www/doc/time2/stage15.gif
    www/doc/time3/stage00.gif
    www/doc/time3/stage01.gif
    www/doc/time3/stage02.gif
    www/doc/time3/stage03.gif
    www/doc/time3/stage04.gif
    www/doc/time3/stage05.gif
    www/doc/time3/stage06.gif
    www/doc/time3/stage07.gif
    www/doc/time3/stage08.gif
    www/doc/time3/stage09.gif
    www/doc/time3a/stage00.gif
    www/doc/time3a/stage01.gif
    www/doc/time3a/stage02.gif
    www/doc/time3a/stage03.gif
    www/doc/time3a/stage04.gif
    www/doc/time3a/stage05.gif
    www/doc/time3a/stage06.gif
    www/doc/time3a/stage07.gif
    www/doc/time3a/stage08.gif
    www/doc/time3a/stage09.gif
    www/doc/timing-1.html
    www/doc/timing-2.html
    www/doc/timing-3.html
    www/doc/timing.html
    www/doc/todo.html
    www/doc/widgets/date.html
    www/doc/widgets/index.html
    www/doc/widgets/input.html
    www/doc/widgets/select.html
    www/doc/widgets/table.html
    www/resources/forms.css
    www/resources/htmlarea/dialog.js
    www/resources/htmlarea/example-fully-loaded.html
    www/resources/htmlarea/example-spell-checker.html
    www/resources/htmlarea/example-table-operations.html
    www/resources/htmlarea/example.html
    www/resources/htmlarea/htmlarea.css
    www/resources/htmlarea/htmlarea.js
    www/resources/htmlarea/images/ed_about.gif
    www/resources/htmlarea/images/ed_align_center.gif
    www/resources/htmlarea/images/ed_align_justify.gif
    www/resources/htmlarea/images/ed_align_left.gif
    www/resources/htmlarea/images/ed_align_right.gif
    www/resources/htmlarea/images/ed_blank.gif
    www/resources/htmlarea/images/ed_charmap.gif
    www/resources/htmlarea/images/ed_color_bg.gif
    www/resources/htmlarea/images/ed_color_fg.gif
    www/resources/htmlarea/images/ed_copy.gif
    www/resources/htmlarea/images/ed_custom.gif
    www/resources/htmlarea/images/ed_cut.gif
    www/resources/htmlarea/images/ed_delete.gif
    www/resources/htmlarea/images/ed_format_bold.gif
    www/resources/htmlarea/images/ed_format_italic.gif
    www/resources/htmlarea/images/ed_format_strike.gif
    www/resources/htmlarea/images/ed_format_sub.gif
    www/resources/htmlarea/images/ed_format_sup.gif
    www/resources/htmlarea/images/ed_format_underline.gif
    www/resources/htmlarea/images/ed_help.gif
    www/resources/htmlarea/images/ed_hr.gif
    www/resources/htmlarea/images/ed_html.gif
    www/resources/htmlarea/images/ed_image.gif
    www/resources/htmlarea/images/ed_indent_less.gif
    www/resources/htmlarea/images/ed_indent_more.gif
    www/resources/htmlarea/images/ed_link.gif
    www/resources/htmlarea/images/ed_list_bullet.gif
    www/resources/htmlarea/images/ed_list_num.gif
    www/resources/htmlarea/images/ed_paste.gif
    www/resources/htmlarea/images/ed_redo.gif
    www/resources/htmlarea/images/ed_show_border.gif
    www/resources/htmlarea/images/ed_splitcel.gif
    www/resources/htmlarea/images/ed_undo.gif
    www/resources/htmlarea/images/fullscreen_maximize.gif
    www/resources/htmlarea/images/fullscreen_minimize.gif
    www/resources/htmlarea/images/insert_table.gif
    www/resources/htmlarea/index.html
    www/resources/htmlarea/lang/b5.js
    www/resources/htmlarea/lang/da.js
    www/resources/htmlarea/lang/de.js
    www/resources/htmlarea/lang/en.js
    www/resources/htmlarea/lang/es.js
    www/resources/htmlarea/lang/fi.js
    www/resources/htmlarea/lang/fr.js
    www/resources/htmlarea/lang/gb.js
    www/resources/htmlarea/lang/it.js
    www/resources/htmlarea/lang/ja-euc.js
    www/resources/htmlarea/lang/ja-jis.js
    www/resources/htmlarea/lang/ja-sjis.js
    www/resources/htmlarea/lang/ja-utf8.js
    www/resources/htmlarea/lang/nb.js
    www/resources/htmlarea/lang/nl.js
    www/resources/htmlarea/lang/pl.js
    www/resources/htmlarea/lang/pt_br.js
    www/resources/htmlarea/lang/ro.js
    www/resources/htmlarea/lang/ru.js
    www/resources/htmlarea/lang/se.js
    www/resources/htmlarea/lang/vn.js
    www/resources/htmlarea/license.txt
    www/resources/htmlarea/plugins/SpellChecker/img/spell-check.gif
    www/resources/htmlarea/plugins/SpellChecker/lang/en.js
    www/resources/htmlarea/plugins/SpellChecker/lang/ro.js
    www/resources/htmlarea/plugins/SpellChecker/readme-tech.html
    www/resources/htmlarea/plugins/SpellChecker/spell-check-logic.cgi
    www/resources/htmlarea/plugins/SpellChecker/spell-check-style.css
    www/resources/htmlarea/plugins/SpellChecker/spell-check-ui.html
    www/resources/htmlarea/plugins/SpellChecker/spell-check-ui.js
    www/resources/htmlarea/plugins/SpellChecker/spell-checker.js
    www/resources/htmlarea/plugins/TableOperations/img/cell-delete.gif
    www/resources/htmlarea/plugins/TableOperations/img/cell-insert-after.gif
    www/resources/htmlarea/plugins/TableOperations/img/cell-insert-before.gif
    www/resources/htmlarea/plugins/TableOperations/img/cell-merge.gif
    www/resources/htmlarea/plugins/TableOperations/img/cell-prop.gif
    www/resources/htmlarea/plugins/TableOperations/img/cell-split.gif
    www/resources/htmlarea/plugins/TableOperations/img/col-delete.gif
    www/resources/htmlarea/plugins/TableOperations/img/col-insert-after.gif
    www/resources/htmlarea/plugins/TableOperations/img/col-insert-before.gif
    www/resources/htmlarea/plugins/TableOperations/img/col-split.gif
    www/resources/htmlarea/plugins/TableOperations/img/row-delete.gif
    www/resources/htmlarea/plugins/TableOperations/img/row-insert-above.gif
    www/resources/htmlarea/plugins/TableOperations/img/row-insert-under.gif
    www/resources/htmlarea/plugins/TableOperations/img/row-prop.gif
    www/resources/htmlarea/plugins/TableOperations/img/row-split.gif
    www/resources/htmlarea/plugins/TableOperations/img/table-prop.gif
    www/resources/htmlarea/plugins/TableOperations/lang/en.js
    www/resources/htmlarea/plugins/TableOperations/lang/fi.js
    www/resources/htmlarea/plugins/TableOperations/lang/ro.js
    www/resources/htmlarea/plugins/TableOperations/table-operations.js
    www/resources/htmlarea/popupdiv.js
    www/resources/htmlarea/popups/about.html
    www/resources/htmlarea/popups/blank.html
    www/resources/htmlarea/popups/custom2.html
    www/resources/htmlarea/popups/editor_help.html
    www/resources/htmlarea/popups/fullscreen.html
    www/resources/htmlarea/popups/insert_image.html
    www/resources/htmlarea/popups/insert_table.html
    www/resources/htmlarea/popups/old-fullscreen.html
    www/resources/htmlarea/popups/old_insert_image.html
    www/resources/htmlarea/popups/popup.js
    www/resources/htmlarea/popups/select_color.html
    www/resources/htmlarea/popupwin.js
    www/resources/htmlarea/reference.html
    www/resources/htmlarea/release-notes.html
    www/resources/htmlarea/test.cgi
    www/resources/lists.css
    www/resources/sort-ascending.png
    www/resources/sort-descending.png
parent e0de49eb
<?xml version="1.0"?>
<!-- Generated by the OpenACS Package Manager -->
<package key="acs-templating" url="http://openacs.org/repository/apm/packages/acs-templating/" type="apm_service">
<package-name>Templating</package-name>
<pretty-plural>Templating Services</pretty-plural>
<initial-install-p>t</initial-install-p>
<singleton-p>t</singleton-p>
<version name="5.1.5" url="http://openacs.org/repository/download/apm/acs-templating-5.1.5.apm">
<owner url="http://openacs.org">OpenACS</owner>
<summary>Templating library.</summary>
<release-date>2004-02-28</release-date>
<maturity>3</maturity>
<vendor url="http://openacs.org">OpenACS</vendor>
<description format="text/html">
The templating system provides the tag library and support routines
that allow developers and graphic designers to work
independently. Templates specify the layout of the page seperately
from the contents of the page. Graphic designers work primarily on the
layout part of the template (the template), while programmers work
primarily a script that generates the the content part of the template
(the code). In addition, the template system provides a way to use a
single layout specification for many physical pages, so the overall
layout of a site can be more easily administered.
</description>
<provides url="acs-templating" version="5.1.4"/>
<requires url="acs-kernel" version="5.0.0"/>
<callbacks>
<callback type="before-upgrade" proc="template::apm::before_upgrade"/>
</callbacks>
<parameters>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="DefaultFormStyle" default="standard" description="The default form template to use if a particular form does not explicitly specify the form style to use."/>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="DefaultListFilterStyle" default="filters" description="The default list filter template to use if a particular listfilter tag does not explicitly specify the list filter style to use."/>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="DefaultListStyle" default="table" description="The default list template to use if a particular list does not explicitly specify the list style to use."/>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="RefreshCache" default="as needed" description="When to re-translate templates. Speical values: "/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="ShowCompiledTemplatesP" default="0" description="Show thecompiled template (for debugging) at .cmp URL"/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="ShowDataDictionariesP" default="0" description="Offer data dictionaries on .dat/.fmt URL."/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="SpellcheckDialectsP" default="0" description="Do you care about dialects or not? If this is set to '1' all available dictionary dialects for all available languages will appear as choices in the pull-down menu. If the param is set to '0', only the base-language(s) will be shown. However, it only works with aspell - on ispell you'll simply get a 'yes' and 'no' option, no matter how this param is set, where 'yes' will use ispell's default dictionary. NOTE! You'll need to restart the server for this param to take effect."/>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="SpellcheckFormWidgets" default="textarea 0 richtext 0" description="The widgets that you specify here will be spellcheck enabled in all forms (that use ad_form / form builder). Adding a 'nospell' flag to a form element overrides this parameter and disables spellchecking of that element. The format of this parameter is such: 'widget 1 widget 0 ...', where 'widget' stands for one of the form widgets that are possible to spellcheck enable: text, textarea, richtext. '1' after 'widget' indicates that the default should be to spellcheck; '0' means the user has to manually state that spellchecking should be performed on the form element. In order to enable spellchecking via this parameter either the aspell or ispell binary (or both, in which case aspell takes precedence) must be installed on the server. The path to the binary is auto-detected on server startup. If the parameter is left blank, spellchecking will be disabled altogether."/>
<parameter datatype="number" min_n_values="1" max_n_values="1" name="UseHtmlAreaForRichtextP" default="0" description="Should the richtext widget use the htmlArea widget for richtext editing. 1 = yes, 0 = no."/>
</parameters>
</version>
</package>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="ar_LB" charset="utf-8">
<msg key="12-Hour">12 ساعة</msg>
<msg key="24-Hour">24 ساعة</msg>
<msg key="Day">يوم</msg>
<msg key="Element_is_required">مطلوب %label% </msg>
<msg key="Element_is_too_long_Plural">%label% - %excess_no_bytes% عدد الاحرف كثيرة</msg>
<msg key="Element_is_too_long_Singular">%label% عدد الاحرف أكثر بواحد </msg>
<msg key="Formats"> تصاميم</msg>
<msg key="Invalid_choice">إختيار غير مقبول</msg>
<msg key="Invalid_currency">عملة غير مقبولة</msg>
<msg key="Invalid_decimal_number">الرقم العشري غير مقبول</msg>
<msg key="Invalid_email_format"> صيغة الرسالة الكترونية غير مقبولة</msg>
<msg key="Invalid_filename">اسم الملف غير مقبول</msg>
<msg key="Invalid_integer"> العدد الصحيح غير مقبول</msg>
<msg key="Invalid_keyword">الكلمة الرئيسية غير مقبولة</msg>
<msg key="Invalid_natural_number"> الرقم الطبيعي غير مقبول</msg>
<msg key="Invalid_url">موقع غير مقبول </msg>
<msg key="Meridian">ظهري</msg>
<msg key="Minutes">دقائق</msg>
<msg key="Month">شهر</msg>
<msg key="Next_with_arrow">التالي &gt;&gt;</msg>
<msg key="No_row_pretty_plural">لا</msg>
<msg key="Previous_with_arrow">&lt;&lt; السابق</msg>
<msg key="required">مطلوب</msg>
<msg key="Seconds">ثواني</msg>
<msg key="Sort_order">نظام الترتيب</msg>
<msg key="Spellcheck">تدقيق إملائي</msg>
<msg key="Tag_handler_invalid_number_of_args">عدد المدخلات غير مقبول للبطاقة</msg>
<msg key="Template_parser_error_in_parameter_list">خطأ في لائحة المتغيرات</msg>
<msg key="Year">سنة</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="ca_ES" charset="ISO-8859-1">
<msg key="12-Hour">12-Hores</msg>
<msg key="24-Hour">24-Hores</msg>
<msg key="Day">Dia</msg>
<msg key="Element_is_required">s obligatori %label% </msg>
<msg key="Element_is_too_long_Plural">%label% s %excess_no_bytes% carcters massa llarg. </msg>
<msg key="Element_is_too_long_Singular">%label% s un carcter massa llarg. </msg>
<msg key="Formats">Formats</msg>
<msg key="Invalid_choice">La tria no s vlida</msg>
<msg key="Invalid_currency">La moneda no s vlida</msg>
<msg key="Invalid_decimal_number">El nombre decimal no s vlid</msg>
<msg key="Invalid_email_format">El format del correu no s vlid</msg>
<msg key="Invalid_filename">El nom del fitxer no s vlid</msg>
<msg key="Invalid_integer">El nombre enter no s vlid</msg>
<msg key="Invalid_keyword">La paraula clau no s vlida</msg>
<msg key="Invalid_natural_number">El nombre natural no s vlid</msg>
<msg key="Invalid_url">La URL no s vlida</msg>
<msg key="Meridian">Meridi </msg>
<msg key="Minutes">Minuts</msg>
<msg key="Month">Mes</msg>
<msg key="Next_with_arrow">Segent &gt;&gt;</msg>
<msg key="No_row_pretty_plural">No %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Anterior</msg>
<msg key="required">obligatori</msg>
<msg key="Seconds">Segons</msg>
<msg key="Sort_order">Ordre de classificaci</msg>
<msg key="Spellcheck">Revisor ortogrfic</msg>
<msg key="Tag_handler_invalid_number_of_args">El nombre d'arguments per al gestor d'etiquetes no s vlid </msg>
<msg key="Template_parser_error_in_parameter_list">Errada en la llista de parmetres </msg>
<msg key="Year">Any</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.1.0" locale="ch_zh" charset="utf-8">
<msg key="Invalid_choice">无效选择</msg>
<msg key="Invalid_currency">无效货币</msg>
<msg key="Invalid_decimal_number">无效十进制数</msg>
<msg key="Invalid_email_format">无效email格式</msg>
<msg key="Invalid_filename">无效文件名</msg>
<msg key="Invalid_integer">无效整型</msg>
<msg key="Invalid_keyword">无效关键字</msg>
<msg key="Invalid_natural_number">无效自然数</msg>
<msg key="Invalid_url">无效URL</msg>
<msg key="Next_with_arrow">下一个</msg>
<msg key="No_row_pretty_plural">无%row_pretty_plural%</msg>
<msg key="Previous_with_arrow">前一个</msg>
<msg key="required">必填项</msg>
<msg key="Spellcheck">拼写检查</msg>
<msg key="Tag_handler_invalid_number_of_args">连接句柄的变量值无效。</msg>
<msg key="Template_parser_error_in_parameter_list">变量列表错误</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="da_DK" charset="ISO-8859-1">
<msg key="12-Hour">12 Timer</msg>
<msg key="24-Hour">24 Timer</msg>
<msg key="Day">Dag</msg>
<msg key="Element_is_required">%label% skal udfyldes</msg>
<msg key="Element_is_too_long_Plural">%label% er %excess_no_bytes% tegn for langt.</msg>
<msg key="Element_is_too_long_Singular">%label% er et tegn for langt.</msg>
<msg key="Formats">Formater</msg>
<msg key="Invalid_choice">Ugyldigt valg</msg>
<msg key="Invalid_currency">Ugyldig valuta</msg>
<msg key="Invalid_decimal_number">Ugyldigt decimaltal</msg>
<msg key="Invalid_email_format">Ugyldigt e-mail-format</msg>
<msg key="Invalid_filename">Ugyldigt filnavn</msg>
<msg key="Invalid_integer">Ugyldigt heltal</msg>
<msg key="Invalid_keyword">Ugyldigt ngleord</msg>
<msg key="Invalid_natural_number">Ugyldigt naturligt tal</msg>
<msg key="Invalid_url">Ugyldig url</msg>
<msg key="Meridian">Meridian</msg>
<msg key="Minutes">Minutter</msg>
<msg key="Month">Mned</msg>
<msg key="Next_with_arrow">Nste &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Ingen %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Forrige</msg>
<msg key="required">krvet</msg>
<msg key="Seconds">Sekunder</msg>
<msg key="Sort_order">Sortering</msg>
<msg key="Spellcheck">Stavekontrol</msg>
<msg key="Tag_handler_invalid_number_of_args">Ugyldigt antal argumenter til tag-handler.</msg>
<msg key="Template_parser_error_in_parameter_list">Fejl i parameterliste</msg>
<msg key="Year">r</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="de_DE" charset="ISO-8859-1">
<msg key="12-Hour">12-stndig</msg>
<msg key="24-Hour">24-stndig</msg>
<msg key="Day">Tag</msg>
<msg key="Element_is_required">%label% muss ausgefllt werden</msg>
<msg key="Element_is_too_long_Plural">%label% ist um %excess_no_bytes% Zeichen zu lang.</msg>
<msg key="Element_is_too_long_Singular">%label% ist um 1 Zeichen zu lang.</msg>
<msg key="Formats">Formate</msg>
<msg key="Invalid_choice">Ungltige Auswahl</msg>
<msg key="Invalid_currency">Ungltige Whrung</msg>
<msg key="Invalid_decimal_number">Ungltige Dezimalzahl</msg>
<msg key="Invalid_email_format">Ungltiges E-Mail-Format</msg>
<msg key="Invalid_filename">Ungltiger Dateiname</msg>
<msg key="Invalid_integer">Ungltiger ganzzahliger Wert</msg>
<msg key="Invalid_keyword">Ungltiges Schlsselwort</msg>
<msg key="Invalid_natural_number">Ungltiger natrlicher Zahlenwert</msg>
<msg key="Invalid_url">Ungltige URL</msg>
<msg key="Meridian">Lngengrad</msg>
<msg key="Minutes">Minuten</msg>
<msg key="Month">Monat</msg>
<msg key="Next_with_arrow">Weiter &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Keine %row_pretty_plural% vorhanden</msg>
<msg key="Previous_with_arrow">&lt;&lt; Zurck</msg>
<msg key="required">Angabe erforderlich</msg>
<msg key="Seconds">Sekunden</msg>
<msg key="Sort_order">Sortierreihenfolge</msg>
<msg key="Spellcheck">Rechtschreibprfung</msg>
<msg key="Tag_handler_invalid_number_of_args">Ungltige Anzahl von Argumenten fr das Tag-Steuerungsprogramm</msg>
<msg key="Template_parser_error_in_parameter_list">Fehler in der Liste der Parameter</msg>
<msg key="Year">Jahr</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="en_AU" charset="ISO-8859-1">
<msg key="12-Hour">12-Hour</msg>
<msg key="24-Hour">24-Hour</msg>
<msg key="Day">Day</msg>
<msg key="Element_is_required">%label% is required</msg>
<msg key="Element_is_too_long_Plural">%label% is %excess_no_bytes% characters too long.</msg>
<msg key="Element_is_too_long_Singular">%label% is one character too long.</msg>
<msg key="Formats">Formats</msg>
<msg key="Invalid_choice">Invalid choice</msg>
<msg key="Invalid_currency">Invalid currency</msg>
<msg key="Invalid_decimal_number">Invalid decimal number</msg>
<msg key="Invalid_email_format">Invalid email format</msg>
<msg key="Invalid_filename">Invalid filename</msg>
<msg key="Invalid_integer">Invalid integer</msg>
<msg key="Invalid_keyword">Invalid keyword</msg>
<msg key="Invalid_natural_number">Invalid natural number </msg>
<msg key="Invalid_url">Invalid url</msg>
<msg key="Meridian">Meridian</msg>
<msg key="Minutes">Minutes</msg>
<msg key="Month">Month</msg>
<msg key="Next_with_arrow">Next &gt;&gt;</msg>
<msg key="No_row_pretty_plural">No %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Previous</msg>
<msg key="required">required</msg>
<msg key="Seconds">Seconds</msg>
<msg key="Sort_order">Sort order</msg>
<msg key="Spellcheck">Spellcheck</msg>
<msg key="Tag_handler_invalid_number_of_args">Invalid number of arguments to tag handler.</msg>
<msg key="Template_parser_error_in_parameter_list">Error in parameter list</msg>
<msg key="Year">Year</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="en_US" charset="ISO-8859-1">
<msg key="12-Hour">12-Hour</msg>
<msg key="24-Hour">24-Hour</msg>
<msg key="Day">Day</msg>
<msg key="Element_is_required">%label% is required</msg>
<msg key="Element_is_too_long_Plural">%label% is %excess_no_bytes% characters too long.</msg>
<msg key="Element_is_too_long_Singular">%label% is one character too long.</msg>
<msg key="Formats">Formats</msg>
<msg key="Invalid_choice">Invalid choice</msg>
<msg key="Invalid_currency">Invalid currency</msg>
<msg key="Invalid_decimal_number">Invalid decimal number</msg>
<msg key="Invalid_email_format">Invalid email format</msg>
<msg key="Invalid_filename">Invalid filename</msg>
<msg key="Invalid_integer">Invalid integer</msg>
<msg key="Invalid_keyword">Invalid keyword</msg>
<msg key="Invalid_natural_number">Invalid natural number </msg>
<msg key="Invalid_url">Invalid url</msg>
<msg key="Meridian">Meridian</msg>
<msg key="Minutes">Minutes</msg>
<msg key="Month">Month</msg>
<msg key="Next_with_arrow">Next &gt;&gt;</msg>
<msg key="No_row_pretty_plural">No %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Previous</msg>
<msg key="required">required</msg>
<msg key="Seconds">Seconds</msg>
<msg key="Sort_order">Sort order</msg>
<msg key="Spellcheck">Spellcheck</msg>
<msg key="Tag_handler_invalid_number_of_args">Invalid number of arguments to tag handler.</msg>
<msg key="Template_parser_error_in_parameter_list">Error in parameter list</msg>
<msg key="Year">Year</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="es_CO" charset="ISO-8859-1">
<msg key="12-Hour">12-Horas</msg>
<msg key="24-Hour">24-Horas</msg>
<msg key="Day">Da </msg>
<msg key="Element_is_required">%label% es requerido</msg>
<msg key="Element_is_too_long_Plural">%label% es %excess_no_bytes% caracteres muy largo.</msg>
<msg key="Element_is_too_long_Singular">%label% es un caracater muy largo.</msg>
<msg key="Formats">Formatos</msg>
<msg key="Invalid_choice">Eleccin incorrecta</msg>
<msg key="Invalid_currency">Moneda incorrecta</msg>
<msg key="Invalid_decimal_number">Nmero decimal incorrecto</msg>
<msg key="Invalid_email_format">Formato de email incorrecto</msg>
<msg key="Invalid_filename">Nombre de archivo incorrecto</msg>
<msg key="Invalid_integer">Entero incorrecto</msg>
<msg key="Invalid_keyword">Palabra clave incorrecta</msg>
<msg key="Invalid_natural_number">Nmero natural incorrecto</msg>
<msg key="Invalid_url">URL incorrecto</msg>
<msg key="Meridian">Meridiano</msg>
<msg key="Minutes">Minutos</msg>
<msg key="Month">Mes</msg>
<msg key="Next_with_arrow">Siguiente &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Ningn %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Anterior</msg>
<msg key="required">obligatorio</msg>
<msg key="Seconds">Segundos</msg>
<msg key="Sort_order">Clasificar orden</msg>
<msg key="Spellcheck">Correccin ortogrfica</msg>
<msg key="Tag_handler_invalid_number_of_args">Nmero incorrecto de argumentos para el gestor de etiquetas</msg>
<msg key="Template_parser_error_in_parameter_list">Error en la lista de parmetros</msg>
<msg key="Year">Ao</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="es_ES" charset="ISO-8859-1">
<msg key="12-Hour">12-Horas</msg>
<msg key="24-Hour">24-Horas</msg>
<msg key="Day">Da </msg>
<msg key="Element_is_required">%label% es obligatorio</msg>
<msg key="Element_is_too_long_Plural">%label% es %excess_no_bytes% caracteres demasiado largo.</msg>
<msg key="Element_is_too_long_Singular">%label% es un caracater muy largo.</msg>
<msg key="Formats">Formatos</msg>
<msg key="Invalid_choice">Eleccin incorrecta</msg>
<msg key="Invalid_currency">Moneda incorrecta</msg>
<msg key="Invalid_decimal_number">Nmero decimal incorrecto</msg>
<msg key="Invalid_email_format">Formato de correo incorrecto</msg>
<msg key="Invalid_filename">Nombre de fichero incorrecto</msg>
<msg key="Invalid_integer">Entero incorrecto</msg>
<msg key="Invalid_keyword">Palabra clave incorrecta</msg>
<msg key="Invalid_natural_number">Nmero natural incorrecto</msg>
<msg key="Invalid_url">URL incorrecta</msg>
<msg key="Meridian">Meridiano</msg>
<msg key="Minutes">Minutos</msg>
<msg key="Month">Mes</msg>
<msg key="Next_with_arrow">Siguiente &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Ningn %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Anterior</msg>
<msg key="required">obligatorio</msg>
<msg key="Seconds">Segundos</msg>
<msg key="Sort_order">Orden de clasificacin</msg>
<msg key="Spellcheck">Correccin ortogrfica</msg>
<msg key="Tag_handler_invalid_number_of_args">Nmero incorrecto de argumentos para el gestor de etiquetas</msg>
<msg key="Template_parser_error_in_parameter_list">Error en la lista de parmetros</msg>
<msg key="Year">Ao</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="es_GT" charset="ISO-8859-1">
<msg key="12-Hour">12-Horas</msg>
<msg key="24-Hour">24-Horas</msg>
<msg key="Day">Da </msg>
<msg key="Element_is_required">%label% es requerido</msg>
<msg key="Element_is_too_long_Plural">%label% es %excess_no_bytes% caracteres muy largo.</msg>
<msg key="Element_is_too_long_Singular">%label% es un caracater muy largo.</msg>
<msg key="Formats">Formatos</msg>
<msg key="Invalid_choice">Eleccin incorrecta</msg>
<msg key="Invalid_currency">Moneda incorrecta</msg>
<msg key="Invalid_decimal_number">Nmero decimal incorrecto</msg>
<msg key="Invalid_email_format">Formato de email incorrecto</msg>
<msg key="Invalid_filename">Nombre de archivo incorrecto</msg>
<msg key="Invalid_integer">Entero incorrecto</msg>
<msg key="Invalid_keyword">Palabra clave incorrecta</msg>
<msg key="Invalid_natural_number">Nmero natural incorrecto</msg>
<msg key="Invalid_url">URL incorrecto</msg>
<msg key="Meridian">Meridiano</msg>
<msg key="Minutes">Minutos</msg>
<msg key="Month">Mes</msg>
<msg key="Next_with_arrow">Siguiente &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Ningn %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Anterior</msg>
<msg key="required">obligatorio</msg>
<msg key="Seconds">Segundos</msg>
<msg key="Sort_order">Clasificar orden</msg>
<msg key="Spellcheck">Correccin ortogrfica</msg>
<msg key="Tag_handler_invalid_number_of_args">Nmero incorrecto de argumentos para el gestor de etiquetas</msg>
<msg key="Template_parser_error_in_parameter_list">Error en la lista de parmetros</msg>
<msg key="Year">Ao</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="eu_ES" charset="ISO-8859-1">
<msg key="Day">Eguna</msg>
<msg key="Element_is_required">%label% beharrezkoa da</msg>
<msg key="Element_is_too_long_Plural">%label% gehiegizko %excess_no_bytes% karaktere ditu.</msg>
<msg key="Element_is_too_long_Singular">%label% gehiegizko karaktere bat du.</msg>
<msg key="Formats">Formatuak</msg>
<msg key="Invalid_choice">Aukera okerra</msg>
<msg key="Invalid_currency">Moneta okerra</msg>
<msg key="Invalid_decimal_number">Zenbaki dezimal okerra</msg>
<msg key="Invalid_email_format">e-posta formato okerra</msg>
<msg key="Invalid_filename">Fitxategi okerra</msg>
<msg key="Invalid_integer">Zenbaki oso okerra</msg>
<msg key="Invalid_keyword">Gako-hitz okerra</msg>
<msg key="Invalid_natural_number">Zenbaki natural okerra</msg>
<msg key="Invalid_url">URL okerra</msg>
<msg key="Meridian">Meridiano</msg>
<msg key="Minutes">Minutuak</msg>
<msg key="Month">Hilabetea</msg>
<msg key="Next_with_arrow">Hurrengoa &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Ez dago %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Aurrekoa</msg>
<msg key="required">beharrezkoa</msg>
<msg key="Seconds">Segunduak</msg>
<msg key="Sort_order">ordena</msg>
<msg key="Spellcheck">Ortografia zuzenketa</msg>
<msg key="Year">Urtea</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="fi_FI" charset="utf-8">
<msg key="required">pakollinen kenttä</msg>
<msg key="Spellcheck">Tarkista oikeinkirjoitus?</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="fr_FR" charset="ISO-8859-1">
<msg key="12-Hour">12 heures</msg>
<msg key="24-Hour">24 heures</msg>
<msg key="Day">Jour</msg>
<msg key="Element_is_required">%label% est ncessaire</msg>
<msg key="Element_is_too_long_Plural">%label% contient %excess_no_bytes% caractres de trop.</msg>
<msg key="Element_is_too_long_Singular">%label% contient un caractre de trop.</msg>
<msg key="Formats">Formats</msg>
<msg key="Invalid_choice">Choix incorrect</msg>
<msg key="Invalid_currency">Monnaie incorrecte</msg>
<msg key="Invalid_decimal_number">Nombre dcimal incorrect</msg>
<msg key="Invalid_email_format">Format email incorrect</msg>
<msg key="Invalid_filename">nom de fichier incorrect</msg>
<msg key="Invalid_integer">Entier non-valide</msg>
<msg key="Invalid_keyword">Mot-cl incorrect</msg>
<msg key="Invalid_natural_number">Nombre naturel incorrect</msg>
<msg key="Invalid_url">Url incorrecte</msg>
<msg key="Meridian">Mridien</msg>
<msg key="Minutes">Minutes</msg>
<msg key="Month">Mois</msg>
<msg key="Next_with_arrow">Suivant &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Pas de %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Prcdent</msg>
<msg key="required">champ obligatoire</msg>
<msg key="Seconds">Secondes</msg>
<msg key="Sort_order">Ordre de tri</msg>
<msg key="Spellcheck">Orthographe</msg>
<msg key="Template_parser_error_in_parameter_list">Erreur dans la liste de paramtres</msg>
<msg key="Year">Anne</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="hu_HU" charset="utf-8">
<msg key="No_row_pretty_plural">Nincsenek %row_pretty_plural%.</msg>
<msg key="required">kötelező megadni</msg>
<msg key="Spellcheck">Helyesírás-ellenőrzés</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="it_IT" charset="ISO-8859-1">
<msg key="Invalid_choice">Scelta non valida</msg>
<msg key="Invalid_currency">Valuta non valida</msg>
<msg key="Invalid_decimal_number">Errore nella parte decimale</msg>
<msg key="Invalid_email_format">Formato email non valido</msg>
<msg key="Invalid_filename">Nome del file non valido</msg>
<msg key="Invalid_integer">Intero non valido</msg>
<msg key="Invalid_keyword">Parola chiave non valida</msg>
<msg key="Invalid_natural_number">Numero naturale non valido</msg>
<msg key="Invalid_url">Url non valida</msg>
<msg key="Next_with_arrow">Successivo &gt;&gt;</msg>
<msg key="No_row_pretty_plural">righe</msg>
<msg key="Previous_with_arrow">&lt;&lt; Precedente</msg>
<msg key="required">obbligatorio</msg>
<msg key="Sort_order">Ordine</msg>
<msg key="Spellcheck">Controllo grammaticale</msg>
<msg key="Tag_handler_invalid_number_of_args">Numero di argomenti inviati al gestore di tag non valido</msg>
<msg key="Template_parser_error_in_parameter_list">Errore nella lista dei parametri</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="ko_KR" charset="utf-8">
<msg key="Invalid_choice">부적합한 선택</msg>
<msg key="Invalid_currency">부적합한 통화</msg>
<msg key="Invalid_decimal_number">부적합한 십진수</msg>
<msg key="Invalid_email_format">잘못된 전자우편형식</msg>
<msg key="Invalid_filename">부적합한 파일이름</msg>
<msg key="Invalid_integer">잘못된 정수</msg>
<msg key="Invalid_keyword">잘못된 키워드</msg>
<msg key="Invalid_natural_number">부적합한 자연수</msg>
<msg key="Invalid_url">잘못된 url</msg>
<msg key="Next_with_arrow">다음&gt;&gt;</msg>
<msg key="No_row_pretty_plural">%row_pretty_plural%이 없음</msg>
<msg key="Previous_with_arrow">&lt;&lt;이전</msg>
<msg key="required">요구</msg>
<msg key="Spellcheck">단어검사</msg>
<msg key="Tag_handler_invalid_number_of_args">태그핸들러에 대한 잘못된 인수</msg>
<msg key="Template_parser_error_in_parameter_list">매개변수 리스트내의 오류</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="ms_MY" charset="utf-8">
<msg key="12-Hour">Jam ke 12</msg>
<msg key="24-Hour">24-Jam</msg>
<msg key="Day">Hari</msg>
<msg key="Element_is_required">%label% diperlukan</msg>
<msg key="Element_is_too_long_Plural">%label% adalah %excess_no_bytes% aksara terlalu panjang. </msg>
<msg key="Element_is_too_long_Singular">%label% adalah satu aksara terlalu panjang.</msg>
<msg key="Formats">Format-format</msg>
<msg key="Invalid_choice">Pilihan tak sah</msg>
<msg key="Invalid_currency">Matawang tak sah</msg>
<msg key="Invalid_decimal_number">Nombor perpuluhan tak sah</msg>
<msg key="Invalid_email_format">Format e-mel tak sah</msg>
<msg key="Invalid_filename">Nama fail tak sah</msg>
<msg key="Invalid_integer">Integer tak sah</msg>
<msg key="Invalid_keyword">Kata kunci tak sah</msg>
<msg key="Invalid_natural_number">Nombor tabii tak sah</msg>
<msg key="Invalid_url">URL tak sah</msg>
<msg key="Meridian">Meridian</msg>
<msg key="Minutes">Minit</msg>
<msg key="Month">Bulan</msg>
<msg key="Next_with_arrow">Seterusnya &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Tiada %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Sebelumnya</msg>
<msg key="required">diperlukan</msg>
<msg key="Seconds">Saat</msg>
<msg key="Sort_order">Atur turutan</msg>
<msg key="Spellcheck">Semak Ejaan</msg>
<msg key="Tag_handler_invalid_number_of_args">Bilangan nombor tidak sah bagi hujah-hujah untuk pengendali tag</msg>
<msg key="Template_parser_error_in_parameter_list">Ralat dalam senarai parameter</msg>
<msg key="Year">Tahun</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="nl_NL" charset="ISO-8859-1">
<msg key="12-Hour">12-uur</msg>
<msg key="24-Hour">24-uur</msg>
<msg key="Day">Dag</msg>
<msg key="Element_is_required">%label% is verplicht</msg>
<msg key="Element_is_too_long_Plural">%label% is %excess_no_bytes% karakters te lang.</msg>
<msg key="Element_is_too_long_Singular">%label% is n karakter te lang.</msg>
<msg key="Formats">Indelingen</msg>
<msg key="Invalid_choice">Ongeldige keuze</msg>
<msg key="Invalid_currency">Ongeldige valuta</msg>
<msg key="Invalid_decimal_number">Ongeldig decimaal getal</msg>
<msg key="Invalid_email_format">Ongeldig e-mailformaat</msg>
<msg key="Invalid_filename">Ongeldige bestandsnaam</msg>
<msg key="Invalid_integer">Ongeldig geheel getal</msg>
<msg key="Invalid_keyword">Ongeldig sleutelwoord</msg>
<msg key="Invalid_natural_number">Ongeldig natuurlijk getal</msg>
<msg key="Invalid_url">Ongeldige url</msg>
<msg key="Meridian">Meridiaan</msg>
<msg key="Minutes">Minuten</msg>
<msg key="Month">Maand</msg>
<msg key="Next_with_arrow">Volgende &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Geen %row_pretty_plural% beschikbaar</msg>
<msg key="Previous_with_arrow">&lt;&lt; Vorige</msg>
<msg key="required">verplicht</msg>
<msg key="Seconds">Seconden</msg>
<msg key="Sort_order">Sortering</msg>
<msg key="Spellcheck">Spellingscontrole</msg>
<msg key="Tag_handler_invalid_number_of_args">Ongeldig aantal argumenten meegegeven aan de afhandelingsroutine voor deze tag.</msg>
<msg key="Template_parser_error_in_parameter_list">Fout in parameterlijst</msg>
<msg key="Year">Jaar</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="nn_NO" charset="ISO-8859-1">
<msg key="Invalid_choice">Ugyldig val</msg>
<msg key="Invalid_currency">Ugyldig mynteining</msg>
<msg key="Invalid_decimal_number">Ugyldig desimaltal</msg>
<msg key="Invalid_email_format">Ugyldig e-postformat</msg>
<msg key="Invalid_filename">Ugyldig filnavn</msg>
<msg key="Invalid_integer">Ugyldig heiltal</msg>
<msg key="Invalid_keyword">Ugyldig nkkel</msg>
<msg key="Invalid_natural_number">Ugyldig naturleg tal</msg>
<msg key="Invalid_url">Ugyldig url</msg>
<msg key="Next_with_arrow">Neste &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Ingen %row_pretty_plural%</msg>
<msg key="Previous_with_arrow">&lt;&lt; Frre</msg>
<msg key="required">m vere med</msg>
<msg key="Spellcheck">Stavesjekk</msg>
<msg key="Tag_handler_invalid_number_of_args">Ugyldig antal argument til tag handler.</msg>
<msg key="Template_parser_error_in_parameter_list">Feil i parameterlista</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="no_NO" charset="ISO-8859-1">
<msg key="Invalid_choice">ugyldig valg</msg>
<msg key="Invalid_currency">Ugyldig myntenhet</msg>
<msg key="Invalid_decimal_number">Ugyldig desimaltall</msg>
<msg key="Invalid_email_format">Ugyldig e-postformat</msg>
<msg key="Invalid_filename">Ugyldig filnavn</msg>
<msg key="Invalid_integer">Ugyldig heltall</msg>
<msg key="Invalid_keyword">Ugyldig nkkel</msg>
<msg key="Invalid_natural_number">Ugyldig naturlig tall</msg>
<msg key="Invalid_url">Ugyldig url</msg>
<msg key="Next_with_arrow">Neste &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Ingen %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Forrige</msg>
<msg key="required">m vre med</msg>
<msg key="Spellcheck">Stavesjekk</msg>
<msg key="Tag_handler_invalid_number_of_args">Ugyldig antall argumenter til tag handler.</msg>
<msg key="Template_parser_error_in_parameter_list">Feil i parameterlisten</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="pt_BR" charset="ISO-8859-1">
<msg key="12-Hour">12-Horas</msg>
<msg key="24-Hour">24-Horas</msg>
<msg key="Day">Dia</msg>
<msg key="Element_is_required">%label% requerido</msg>
<msg key="Element_is_too_long_Plural">%label% tem %excess_no_bytes% caracteres alm do permitido.</msg>
<msg key="Element_is_too_long_Singular">%label% tem um caracter alm do permitido.</msg>
<msg key="Formats">Formatos</msg>
<msg key="Invalid_choice">Escolha invlida</msg>
<msg key="Invalid_currency">Moeda corrente invlida</msg>
<msg key="Invalid_decimal_number">Nmero decimal invlido</msg>
<msg key="Invalid_email_format">Formato de endereo eletrnico invlido</msg>
<msg key="Invalid_filename">Nome de arquivo invlido</msg>
<msg key="Invalid_integer">Inteiro invlido</msg>
<msg key="Invalid_keyword">Palavra chave invlida</msg>
<msg key="Invalid_natural_number">Nmero natural invlido</msg>
<msg key="Invalid_url">URL invlida</msg>
<msg key="Meridian">Meridiano</msg>
<msg key="Minutes">Minutos</msg>
<msg key="Month">Ms</msg>
<msg key="Next_with_arrow">Prximo &gt;&gt;</msg>
<msg key="No_row_pretty_plural">No h %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Anterior</msg>
<msg key="required">Requerido</msg>
<msg key="Seconds">Segundos</msg>
<msg key="Sort_order">Organizar</msg>
<msg key="Spellcheck">Verificao ortogrfica</msg>
<msg key="Tag_handler_invalid_number_of_args">Nmero invlido de argumentos para o tag manipular</msg>
<msg key="Template_parser_error_in_parameter_list">Erro na lista de parmetros</msg>
<msg key="Year">Ano</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="pt_PT" charset="ISO-8859-1">
<msg key="No_row_pretty_plural">No %row_pretty_plural%.</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="ro_RO" charset="utf-8">
<msg key="Invalid_choice">alegere nevalabilă</msg>
<msg key="Invalid_currency">monedă nevalabilă</msg>
<msg key="Invalid_decimal_number">număr zecimal nevalabil</msg>
<msg key="Invalid_email_format">format de email nevalabil</msg>
<msg key="Invalid_filename">nume de fişier nevalabil</msg>
<msg key="Invalid_integer">număr întreg nevalabil</msg>
<msg key="Invalid_keyword">cuvânt cheie nevalabil</msg>
<msg key="Invalid_natural_number">număr natural nevalabil</msg>
<msg key="Invalid_url">url nevalabil</msg>
<msg key="Next_with_arrow">Înainte &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Nu sunt %row_pretty_plural%</msg>
<msg key="Previous_with_arrow">&lt;&lt; Înapoi</msg>
<msg key="required">necesar</msg>
<msg key="Spellcheck">Verifică Ortografia</msg>
<msg key="Tag_handler_invalid_number_of_args">Numar nevalabil de argumente pentru tag handler</msg>
<msg key="Template_parser_error_in_parameter_list">Eroare în lista de parametri</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="sv_SE" charset="ISO-8859-1">
<msg key="Invalid_choice">Ogiltigt val</msg>
<msg key="Invalid_currency">Ogiltig valuta</msg>
<msg key="Invalid_decimal_number">Ogiltigt decimaltal</msg>
<msg key="Invalid_email_format">Ogiltigt e-postformat</msg>
<msg key="Invalid_filename">Ogiltigt filnamn</msg>
<msg key="Invalid_integer">Ogiltigt heltal</msg>
<msg key="Invalid_keyword">Ogiltigt nyckelord</msg>
<msg key="Invalid_natural_number">Ogiltigt naturligt tal</msg>
<msg key="Invalid_url">Ogiltig URL</msg>
<msg key="Next_with_arrow">Nsta &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Inga %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Fregende</msg>
<msg key="required">obligatorisk</msg>
<msg key="Spellcheck">Rttstava</msg>
<msg key="Tag_handler_invalid_number_of_args">Ogiltigt antal argument till tag-hanteraren.</msg>
<msg key="Template_parser_error_in_parameter_list">Fel i parameterlistan</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="zh_CN" charset="utf-8">
<msg key="12-Hour">12-小时</msg>
<msg key="24-Hour">24-小时</msg>
<msg key="Day"></msg>
<msg key="Element_is_required">需要%label%</msg>
<msg key="Element_is_too_long_Plural">%label%超过%excess_no_bytes%字符。</msg>
<msg key="Element_is_too_long_Singular">%label%太长。</msg>
<msg key="Formats">格式</msg>
<msg key="Invalid_choice">无效选择</msg>
<msg key="Invalid_currency">无效货币</msg>
<msg key="Invalid_decimal_number">无效十进制数</msg>
<msg key="Invalid_email_format">无效email格式</msg>
<msg key="Invalid_filename">无效文件名</msg>
<msg key="Invalid_integer">无效整型</msg>
<msg key="Invalid_keyword">无效关键字</msg>
<msg key="Invalid_natural_number">无效自然数</msg>
<msg key="Invalid_url">无效URL</msg>
<msg key="Meridian">顶点</msg>
<msg key="Minutes"></msg>
<msg key="Month"></msg>
<msg key="Next_with_arrow">下一个</msg>
<msg key="No_row_pretty_plural">无%row_pretty_plural%</msg>
<msg key="Previous_with_arrow">前一个</msg>
<msg key="required">必填项</msg>
<msg key="Seconds"></msg>
<msg key="Sort_order">排列顺序</msg>
<msg key="Spellcheck">拼写检查</msg>
<msg key="Tag_handler_invalid_number_of_args">连接句柄的变量值无效。</msg>
<msg key="Template_parser_error_in_parameter_list">变量列表错误</msg>
<msg key="Year"></msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.1.2" locale="zh_TW" charset="utf-8">
<msg key="Invalid_choice">無效的選擇</msg>
<msg key="Invalid_currency">無效的貨幣</msg>
<msg key="Invalid_decimal_number">無效的十進位數</msg>
<msg key="Invalid_email_format">無效的email格式</msg>
<msg key="Invalid_filename">無效的檔名</msg>
<msg key="Invalid_integer">無效的整數</msg>
<msg key="Invalid_keyword">無效的關鍵字</msg>
<msg key="Invalid_natural_number">無效的自然數</msg>
<msg key="Invalid_url">無效的url</msg>
<msg key="Next_with_arrow">下一項 &gt;&gt;</msg>
<msg key="No_row_pretty_plural">無 %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; 前一項</msg>
<msg key="required">必填</msg>
<msg key="Spellcheck">拼字檢查</msg>
<msg key="Tag_handler_invalid_number_of_args">tag handler 的參數數目錯誤</msg>
<msg key="Template_parser_error_in_parameter_list">參數列表錯誤</msg>
</message_catalog>
<!-- Dark blue frame -->
<table bgcolor=#6699CC cellspacing=0 cellpadding=4 border=0>
<tr><td>
<!-- Light blue pad -->
<table bgcolor=#99CCFF cellspacing=0 cellpadding=6 border=0 width="100%">
<tr><td>
<!-- Form elements -->
<table bgcolor=#99CCFF cellspacing=0 cellpadding=2 border=0 width="100%">
<multiple name=elements>
<if @elements.section@ not nil>
<tr><td colspan=2 bgcolor=#eeeeee><b>@elements.section@</b></td></tr>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
<else>
<if @elements.widget@ eq "submit">
<tr>
<td align="left" colspan="2">
<group column="widget">
<noparse><formwidget id="@elements.id@"></noparse>
</group>
</td>
</tr>
</if>
<else>
<tr>
<if @elements.label@ not nil>
<td><b>@elements.label;noquote@</b>&nbsp;&nbsp;
<if @elements.help_text@ not nil>
<br>&nbsp;&nbsp;
<font size=-1><noparse><formhelp id=@elements.id@></noparse></font><br>
</if>
</td>
</if>
<if @elements.widget@ eq radio or @elements.widget@ eq checkbox>
<if @elements.label@ nil><td colspan=2>></if>
<else><td></else>
<noparse>
<table cellpadding="4" cellspacing="0" border="0">
<formgroup id=@elements.id@>
<tr>
<td>\@formgroup.widget;noquote@</td>
<td>
<label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">\@formgroup.label@</label>
</td>
</tr>
</formgroup>
</table>
<formerror id=@elements.id@><br>
<font color="red"><b>\@formerror.@elements.id@;noquote\@</b></font>
</formerror>
</noparse>
</td>
</if>
<else>
<if @elements.widget@ eq inform>
<td bgcolor=#EEEEEE>
<noparse><formwidget id=@elements.id@></noparse>
</td>
</if>
<else>
<if @elements.label@ nil><td nowrap colspan=2></if>
<else><td nowrap></else>
<noparse><formwidget id=@elements.id@>
<formerror id=@elements.id@><br><font
color="red"><b>\@formerror.@elements.id@;noquote\@<b></font>
</formerror></noparse>
</td>
</else>
</else>
</tr>
</else>
</else>
</group>
</multiple>
</table>
</td></tr>
<!-- End of light blue pad -->
</table>
<!-- Dark blue frame -->
</td></tr>
</table>
<table bgcolor="#CACACA" width="70%" border="0" cellspacing="0" cellpadding="0">
<tr width="100%">
<td width="100%">
<table width="100%" border="0" cellspacing="1" cellpadding="1" bgcolor="#000000">
<multiple name=elements>
<if @elements.section@ not nil>
<tr bgcolor="#5F6090">
<td colspan="3" align="center" class="textstyle1">
<font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFFFCC">
<b>@elements.section@</font></b>
</font>
</td>
</tr>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
<else>
<if @elements.widget@ eq "submit">
<tr bgcolor="#5F6090">
<td align="center" colspan="3">
<group column="widget">
<noparse><formwidget id=@elements.id@></noparse>
</group>
</td>
</tr>
</if>
<else>
<tr bgcolor="#5F6090">
<if @elements.label@ not nil>
<td width="40%" align="right" valign="middle" class="textstyle1">
@elements.label;noquote@
<if @elements.help_text@ not nil>
<br />&nbsp;&nbsp;
<span style="font-size: 90%"><noparse><formhelp id=@elements.id@></noparse></span><br />
</if>
</td>
</if>
<if @elements.widget@ eq radio or @elements.widget@ eq checkbox>
<if @elements.label@ nil><td colspan="3" align="center" class="textstyle1"></if>
<else>
<td width="2%" align="center" valign="middle" class="textstyle1">: </td>
<td width="40%" align="left" valign="middle" class="textstyle1">
</else>
<noparse>
<table cellpadding="4" cellspacing="0" border="0">
<formgroup id=@elements.id@>
<tr bgcolor="#5F6090">
<td>\@formgroup.widget@</td>
<td class="textstyls1"><label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">\@formgroup.label@</label></td>
</tr>
</formgroup>
</table>
<formerror id=@elements.id@><br>
<span style="color: Red; font-weight: bold">\@formerror.@elements.id@;noquote\@</span>
</formerror>
</noparse>
</td>
</if>
<else>
<if @elements.widget@ eq inform>
<if @elements.label@ nil>
<td colspan="3" align="center" class="textstyle1">
</if>
<else>
<td width="2%" align="center" valign="middle" class="textstyle1">: </td>
<td width="40%" class="textstyle1" align="center">
</else>
<font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#FFFFCC">
<b><noparse><formwidget id=@elements.id@></noparse><b>
</font>
</td>
</if>
<else>
<if @elements.label@ nil><td nowrap="nowrap" colspan="3" align="center" class="textstyle1"></if>
<else>
<td width="2%" align="center" valign="middle" class="textstyle1">: </td>
<td bgcolor="#5F6090" width="40%" class="textstyle1" nowrap="nowrap">
</else>
<noparse><formwidget id=@elements.id@>
<formerror id=@elements.id@><br />
<span style="font-weight: bold; color: red">\@formerror.@elements.id@;noquote\@</span>
</formerror>
</noparse>
</td>
</else>
</else>
</tr>
</else>
</else>
</group>
</multiple>
</table>
</td>
</tr>
</table>
<ul>
<multiple name="elements">
<if @elements.section@ not nil>
<li><a href="#@elements.section@">@elements.section@</a></li>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
</group>
</multiple>
</ul>
<table cellpacing="2" cellpadding="2" border="0">
<multiple name="elements">
<if @elements.section@ not nil>
<tr>
<td colspan="2">
<a name="@elements.section@"><b>@elements.section@</b></a>
<hr />
</td>
</tr>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
</if>
<else>
<if @elements.widget@ eq "submit">
<tr>
<td colspan="2">
<group column="widget">
<noparse><formwidget id=@elements.id@></noparse>
</group>
</td>
</tr>
</if>
<else>
<tr>
<td width="40%">
<if @elements.help_text@ not nil>
<span class="form-configuration-help-text">@elements.help_text@</span>
</if>
</td>
<td width="60%">
<if @elements.label@ not nil>
<span class="form-configuration-label">@elements.label;noquote@:</span>
<br />
</if>
<if @form_properties.show_required_p@ true>
<if @elements.optional@ nil and @elements.mode@ ne "display" and @elements.widget@ ne "inform" and @elements.widget@ ne "select"><font color="red">*</font></if>
</if>
<if @elements.widget@ eq radio or @elements.widget@ eq checkbox>
<noparse>
<table cellpadding="4" cellspacing="0" border="0">
<formgroup id="@elements.id@">
<tr>
<td>\@formgroup.widget@</td>
<td>
<font face="tahoma,verdana,arial,helvetica,sans-serif" size="-1">
<label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">
\@formgroup.label@
</label>
</font>
</td>
</tr>
</formgroup>
</table>
</noparse>
</if>
<else>
<noparse>
<formwidget id="@elements.id@">
</noparse>
</else>
<noparse>
<formerror id="@elements.id@">
<br>
\@formerror.@elements.id@\@
</formerror>
</noparse>
</td>
</tr>
</else>
<tr>
<td colspan="2">
<hr />
</td>
</tr>
</else>
</group>
</multiple>
</table>
<form action="@__return_url__@" method="post">
<multiple name="__form_contents__">
<input type="hidden" name="@__form_contents__.__key__@" value="@__form_contents__.__value__@">
</multiple>
<input type="submit" value="Confirm">
</form>
ad_page_contract {
} -properties {
__form_contents__:multirow
}
set __return_url__ [ad_conn url]
# The basic idea here is to build a multirow holding the form contents, which then get
# passed back to the form handler transparently as a submission, as though the confirm
# step never happened.
# There's one exception - we set the special form element "__confirmed_p" true. This
# informs ad_form that the user has indeed confirmed the submission.
multirow create __form_contents__ __key__ __value__
if { ![empty_string_p [set __form__ [ns_getform]]] } {
set __form_size__ [ns_set size $__form__]
set __form_counter__ 0
while { $__form_counter__ < $__form_size__ } {
if { [string equal [ns_set key $__form__ $__form_counter__] __confirmed_p] } {
multirow append __form_contents__ __confirmed_p 1
} else {
set __key__ [ns_set key $__form__ $__form_counter__]
set __values__ [ns_querygetall $__key__]
foreach __value__ $__values__ {
multirow append __form_contents__ $__key__ $__value__
}
}
incr __form_counter__
}
}
<table bgcolor=#6699CC cellspacing=0 cellpadding=4 border=0 width="95%">
<tr bgcolor="#FFFFFF">
<td align=left><b>@form_properties.title@</b></td>
<td align=right>&nbsp;</td>
</tr>
<if @elements:rowcount@ le 0>
<tr><td colspan=2><i>No items</i></td></tr>
</if>
<else>
<tr>
<td colspan=2>
<table bgcolor=#99CCFF cellspacing=0 cellpadding=2 border=0 width="100%">
<tr bgcolor="#99CCFF">
<% set list_tag $form_properties(headers) %>
<list name=list_tag>
<th align=left>@list_tag:item@</th>
</list>
</tr>
<grid name=elements cols="@form_properties.cols@" orientation=horizontal>
<if @elements.rownum@ le @elements:rowcount@>
<if @elements.col@ eq 1>
<if @elements.row@ odd><tr bgcolor=#ffffff></if>
<else><tr bgcolor=#dddddd></else>
</if>
<if @elements.widget@ not in "hidden" "submit">
<td nowrap>
<if @elements.widget@ eq radio or @elements.widget@ eq checkbox>
<table cellpadding=4 cellspacing=0 border=0>
<tr>
<noparse>
<formgroup id=@elements.id@>
<td>\@formgroup.widget\@</td><td><label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option\@">\@formgroup.label\@</label></td>
</formgroup>
</noparse>
</tr>
</table>
<noparse><formerror id=@elements.id@><br><font color="red"><b>\@formerror.@elements.id@\@<b></font></formerror></noparse>
</if>
<else>
<if @elements.widget@ eq inform>
<noparse><formwidget id=@elements.id@></noparse>
</if>
<else>
<noparse>
<formwidget id=@elements.id@>
<formerror id=@elements.id@><br><font color="red"><b>
\@formerror.@elements.id@\@<b></font></formerror>
</noparse>
</else>
</else>
</td>
</if>
</if>
<else>
</else>
<if @elements.col@ eq @form_properties.cols@>
</tr>
</if>
</grid>
</table>
<multiple name=elements>
<if @elements.widget@ eq "submit">
<tr bgcolor="#FFFFFF">
<td align=right colspan=2><input type=submit name=@elements.id@ value="@elements.label@"></td>
</tr>
</if>
</multiple>
</else>
</td></tr>
</table>
<multiple name=elements>
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
</multiple>
<!-- Form elements -->
<multiple name=elements>
<if @elements.section@ not nil>
<span class="form-section">@elements.section@</span>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
<else>
<if @elements.widget@ eq "submit">
<span class="form-element">
<group column="widget">
<noparse><formwidget id="@elements.id@"></noparse>
</group>
</span>
</if>
<else>
<if @elements.label@ not nil>
<noparse>
<if \@formerror.@elements.id@\@ not nil>
<span class="form-label-error">
</if>
<else>
<span class="form-label">
</else>
</noparse>
@elements.label;noquote@
<if @form_properties.show_required_p@ true>
<if @elements.optional@ nil and @elements.mode@ ne "display" and @elements.widget@ ne "inform" and @elements.widget@ ne "select"><span class="form-required-mark">*</span></if>
</if>
</span>
</if>
<else>
<span class="form-label">
&nbsp;
</span>
</else>
<noparse>
<if \@formerror.@elements.id@\@ not nil>
<span class="form-widget-error">
</if>
<else>
<span class="form-widget">
</else>
</noparse>
<if @elements.widget@ in radio checkbox>
<noparse>
<formgroup id="@elements.id@">
\@formgroup.widget;noquote@
<font face="tahoma,verdana,arial,helvetica,sans-serif">
<label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">
\@formgroup.label@
</label>
</font>
</tr>
</formgroup>
</table>
</noparse>
</if>
<else>
<font face="tahoma,verdana,arial,helvetica,sans-serif">
<noparse>
<formwidget id="@elements.id@">
</noparse>
</font>
</else>
<noparse>
<formerror id="@elements.id@">
<br>
<font face="tahoma,verdana,arial,helvetica,sans-serif" color="red">
<b>\@formerror.@elements.id@;noquote\@<b>
</font>
</formerror>
</noparse>
<if @elements.help_text@ not nil>
<p style="margin-top: 4px; margin-bottom: 2px;">
<font face="tahoma,verdana,arial,helvetica,sans-serif">
<noparse>
<i><formhelp id="@elements.id@"></i>
</noparse>
</font>
</p>
</if>
</else>
</else>
</group>
</multiple>
\ No newline at end of file
<table bgcolor="#FFFFFF" cellspacing="0" cellpadding="6" border="0">
<tr><td>
<!-- Form elements -->
<table bgcolor="#FFFFFF" cellspacing="0" cellpadding="2" border="0" width="100%">
<multiple name=elements>
<if @elements.section@ not nil>
<tr><td colspan="2"><span style="font-weight: bold">@elements.section@</span></td></tr>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
<else>
<if @elements.widget@ eq "submit">
<tr><td align="center" colspan="2">
<group column="widget">
<noparse><formwidget id=@elements.id@></noparse>
</group>
</td></tr>
</if>
<else>
<tr>
<if @elements.label@ not nil>
<td><span style="font-weight: bold">@elements.label;noquote@</span>&nbsp;&nbsp;
<if @elements.help_text@ not nil>
<br />&nbsp;&nbsp;
<span style="font-size: 90%"><noparse><formhelp id=@elements.id@></noparse></span><br />
</if>
</td>
</if>
<if @elements.widget@ eq radio or @elements.widget@ eq checkbox>
<if @elements.label@ nil><td colspan="2"></if>
<else><td></else>
<noparse>
<table cellpadding="4" cellspacing="0" border="0">
<formgroup id=@elements.id@>
<tr><td>\@formgroup.widget;noquote@</td>
<td><label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">\@formgroup.label;noquote@</label></td></tr>
</formgroup>
</table>
<formerror id=@elements.id@><br>
<span style="color: Red; font-weight: bold">\@formerror.@elements.id@;noquote\@</span>
</formerror>
</noparse>
</td>
</if>
<else>
<if @elements.widget@ eq inform>
<if @elements.label@ nil><td colspan="2"></if>
<else><td></else>
<noparse><formwidget id=@elements.id@></noparse>
</td>
</if>
<else>
<if @elements.label@ nil><td nowrap="nowrap" colspan="2"></if>
<else><td nowrap="nowrap"></else>
<noparse><formwidget id=@elements.id@>
<formerror id=@elements.id@><br />
<span style="font-weight: bold; color: red">\@formerror.@elements.id@;noquote\@</span>
</formerror></noparse>
</td>
</else>
</else>
</tr>
</else>
</else>
</group>
</multiple>
</table>
</td></tr>
</table>
<!-- Dark blue frame -->
<table bgcolor=#FFFFFF cellspacing=0 cellpadding=4 border=0>
<tr><td>
<!-- Light blue pad -->
<table bgcolor=#FFFFFF cellspacing=0 cellpadding=6 border=0 width="100%">
<tr><td>
<!-- Form elements -->
<table bgcolor=#FFFFFF cellspacing=0 cellpadding=2 border=0 width="100%">
<multiple name=elements>
<if @elements.section@ not nil>
<tr><td colspan=2 bgcolor=#FFFFFF><b>@elements.section@</b></td></tr>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
<else>
<if @elements.widget@ eq "submit">
<tr><td align=center colspan=2>
<group column="widget">
<noparse><formwidget id=@elements.id@></noparse>
</group>
</td></tr>
</if>
<else>
<tr>
<if @elements.label@ not nil>
<td><b>@elements.label;noquote@</b>&nbsp;&nbsp;
<if @elements.help_text@ not nil>
<br>&nbsp;&nbsp;
<font size=-1><noparse><formhelp id=@elements.id@></noparse></font><br>
</if>
</td>
</if>
<if @elements.widget@ eq radio or @elements.widget@ eq checkbox>
<if @elements.label@ nil><td colspan=2>></if>
<else><td></else>
<noparse>
<table cellpadding=4 cellspacing=0 border=0>
<formgroup id=@elements.id@>
<tr><td>\@formgroup.widget@</td>
<td><label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">\@formgroup.label@</label></td></tr>
</formgroup>
</table>
<formerror id=@elements.id@><br>
<font color="red"><b>\@formerror.@elements.id@;noquote\@</b></font>
</formerror>
</noparse>
</td>
</if>
<else>
<if @elements.widget@ eq inform>
<td bgcolor=#FFFFFF>
<noparse><formwidget id=@elements.id@></noparse>
</td>
</if>
<else>
<if @elements.label@ nil><td nowrap colspan=2></if>
<else><td nowrap></else>
<noparse><formwidget id=@elements.id@>
<formerror id=@elements.id@><br><font
color="red"><b>\@formerror.@elements.id@;noquote\@<b></font>
</formerror></noparse>
</td>
</else>
</else>
</tr>
</else>
</else>
</group>
</multiple>
</table>
</td></tr>
<!-- End of light blue pad -->
</table>
<!-- Dark blue frame -->
</td></tr>
</table>
<table cellspacing="2" cellpadding="2" border="0">
<multiple name=elements>
<if @elements.section@ not nil>
<tr class="form-section"><th colspan="2">@elements.section@</th></tr>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
<else>
<if @elements.widget@ eq "submit">
<tr class="form-element">
<td align="left" colspan="2">
<group column="widget">
<noparse><formwidget id="@elements.id@"></noparse>
</group>
</td>
</tr>
</if>
<else>
<tr class="form-element">
<if @elements.label@ not nil>
<noparse>
<if \@formerror.@elements.id@\@ not nil>
<td class="form-label-error">
</if>
<else>
<td class="form-label">
</else>
</noparse>
@elements.label;noquote@
<if @form_properties.show_required_p@ true>
<if @elements.optional@ nil and @elements.mode@ ne "display" and @elements.widget@ ne "inform" and @elements.widget@ ne "select"><span class="form-required-mark">*</span></if>
</if>
</td>
</if>
<else>
<td class="form-label">
&nbsp;
</td>
</else>
<noparse>
<if \@formerror.@elements.id@\@ not nil>
<td class="form-widget-error">
</if>
<else>
<td class="form-widget">
</else>
</noparse>
<if @elements.widget@ eq radio or @elements.widget@ eq checkbox>
<noparse>
<table class="formgroup">
<formgroup id="@elements.id@">
<tr>
<td>\@formgroup.widget;noquote@</td>
<td class="form-widget">
<label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">
\@formgroup.label;noquote@
</label>
</td>
</tr>
</formgroup>
</table>
</noparse>
</if>
<else>
<noparse>
<formwidget id="@elements.id@">
</noparse>
</else>
<noparse>
<formerror id="@elements.id@">
<div class="form-error">
\@formerror.@elements.id@;noquote\@
</div>
</formerror>
</noparse>
<if @elements.help_text@ not nil and @elements.mode@ ne "display">
<div class="form-help-text">
<img src="/shared/images/info.gif" width="12" height="9" alt="[i]" title="Help text" border="0">
<noparse><formhelp id="@elements.id@"></noparse>
</div>
</if>
</td>
</tr>
</else>
</else>
</group>
</multiple>
</table>
<multiple name="elements">
<if @form_properties.show_required_p@ true>
<if @elements.optional@ nil and @elements.mode@ ne "display" and @elements.widget@ ne "inform" and @elements.widget@ ne "select" and @elements.widget@ ne "hidden" and @elements.widget@ ne "submit">
<span class="form-required-mark">*</span> #acs-templating.required# <% break %>
</if>
</if>
</multiple>
<table cellpadding=0 cellspacing=0 border=0 bgcolor=#999999 width=100% height=0>
<tr bgcolor=#999999>
<td>
<table cellpadding=0 cellspacing=0 border=0 bgcolor=#DDDDDD width="100%">
<tr align=center>
<multiple name=elements>
<if @elements.current@ eq 1><td bgcolor=#FFFFFF></if>
<else>
<td bgcolor=#99CCFF>
<table border=0 cellpadding=2 cellspacing=1 width=100%
bgcolor=#6699cc>
<tr align=center bgcolor=#99ccff><td>
</else>
&nbsp;<font size=-1><noparse><formwidget id=@elements.id@></noparse></font>
&nbsp;
</td>
<if @elements.current@ ne 1></tr></table></td></if>
</multiple>
</tr>
</table>
</td>
</tr>
</table>
<!-- Form elements -->
<table cellspacing="2" cellpadding="2" border="0">
<multiple name=elements>
<if @elements.section@ not nil>
<tr bgcolor="#ccccff"><th colspan="2">@elements.section@</th></tr>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
<else>
<if @elements.widget@ eq "submit">
<tr>
<td align="center" colspan="2">
<group column="widget">
<noparse>
<formwidget id="@elements.id@">
</noparse>
</group>
</td>
</tr>
</if>
<else>
<tr>
<if @elements.label@ not nil>
<noparse>
<if \@formerror.@elements.id@\@ not nil>
<td bgcolor="#ffaaaa">
</if>
<else>
<td bgcolor="#ddddff">
</else>
</noparse>
<b>
<font face="tahoma,verdana,arial,helvetica,sans-serif">
@elements.label;noquote@
</font>
</b>
&nbsp;&nbsp;
</td>
</if>
<else>
<td bgcolor="#ddddff">
&nbsp;
</td>
</else>
<noparse>
<if \@formerror.@elements.id@\@ not nil>
<td style="border: 2px solid red;">
</if>
<else>
<td>
</else>
</noparse>
<if @elements.widget@ eq radio or @elements.widget@ eq checkbox>
<noparse>
<table cellpadding="4" cellspacing="0" border="0">
<formgroup id="@elements.id@">
<tr>
<td>\@formgroup.widget@</td>
<td>
<font face="tahoma,verdana,arial,helvetica,sans-serif">
<label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">
\@formgroup.label@
</label>
</font>
</td>
</tr>
</formgroup>
</table>
</noparse>
</if>
<else>
<font face="tahoma,verdana,arial,helvetica,sans-serif">
<noparse>
<formwidget id="@elements.id@">
</noparse>
</font>
</else>
<noparse>
<formerror id="@elements.id@">
<br>
<font face="tahoma,verdana,arial,helvetica,sans-serif" color="red">
<b>\@formerror.@elements.id@;noquote\@<b>
</font>
</formerror>
</noparse>
<if @elements.help_text@ not nil>
<p style="margin-top: 4px; margin-bottom: 2px;">
<font face="tahoma,verdana,arial,helvetica,sans-serif">
<noparse>
<i><formhelp id="@elements.id@"></i>
</noparse>
</font>
</p>
</if>
</td>
</tr>
</else>
</else>
</group>
</multiple>
</table>
<!-- Dark blue frame -->
<table bgcolor=#6699CC cellspacing=0 cellpadding=4 border=0>
<tr><td>
<!-- Light blue pad -->
<table bgcolor=#99CCFF cellspacing=0 cellpadding=6 border=0 width="100%">
<tr><td>
<table bgcolor=#99CCFF cellspacing=0 cellpadding=2 border=0 width="100%">
<multiple name=elements>
<if @elements.section@ not nil>
<tr><td colspan=2 bgcolor=#eeeeee><b>@elements.section@</b></td></tr>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id=@elements.id@></noparse>
</if>
<else>
<if @elements.widget@ in "submit" "button">
<!-- put it at the bottom -->
</if>
<else>
<!-- If the widget is wide, display it in its own section -->
<if @elements.wide@ not nil>
<tr><td colspan=2 bgcolor=#eeeeee><b>@elements.label@</b></td></tr>
<tr><td colspan=2>
</if>
<else>
<tr><td><b>@elements.label@</b>&nbsp;&nbsp;
<if @elements.help_text@ not nil>
<br>&nbsp;&nbsp;
<font size=-1><noparse><formhelp id=@elements.id@></noparse></font><br>
</if></td>
</else>
<if @elements.widget@ eq radio or @elements.widget@ eq checkbox>
<if @elements.wide@ not nil>
<if @elements.help_text@ not nil>
&nbsp;&nbsp;
<font size=-1><noparse><formhelp id=@elements.id@></noparse></font><br>
</if>
</if><else><td></else>
<noparse>
<table cellpadding=4 cellspacing=0 border=0>
<formgroup id=@elements.id@ cols=4>
<if \@formgroup.col@ eq 1><tr></if>
<if \@formgroup.rownum@ le \@formgroup:rowcount@>
<td align=right>&nbsp;\@formgroup.widget;noquote@</td>
<td align=left><label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">\@formgroup.label@</label></td>
</if><else><td>&nbsp;</td><td>&nbsp;</td></else>
<if \@formgroup.col@ eq 4></tr></if>
</formgroup>
</table>
<formerror id=@elements.id@><br>
<font color="red"><b>\@formerror.@elements.id@;noquote\@</b></font>
</formerror>
</noparse>
</td>
</if>
<else>
<if @elements.widget@ eq inform>
<if @elements.wide@ not nil>
<noparse>
<formerror id=@elements.id@><br>
<font color="red"><b>\@formerror.@elements.id@;noquote\@</b></font><br>
</formerror>
</noparse>
</if><else><td bgcolor=#EEEEEE></else>
<noparse><formwidget id=@elements.id@></noparse>
</td>
</if>
<else>
<if @elements.wide@ not nil></if><else><td nowrap></else>
<noparse><formwidget id=@elements.id@>
<formerror id=@elements.id@><br><font
color="red"><b>\@formerror.@elements.id@;noquote\@<b></font>
</formerror></noparse>
</td>
</else>
</else>
</tr>
</else>
</else>
</group>
</multiple>
</td></tr>
<tr>
<td align="right" colspan="2">
<multiple name="elements">
<if @elements.widget@ in "submit" "button">
<noparse><formwidget id=@elements.id@></noparse>
</if>
</multiple>
</td>
</tr>
</table>
<!-- Light blue pad -->
</td></tr>
</table>
<!-- Dark blue frame -->
</td></tr>
</table>
<multiple name="filters">
<p style="margin-top: 0px; margin-bottom: 12px;">
<table border="0" cellspacing="0" cellpadding="2" width="100%">
<tr>
<td colspan="3" class="list-filter-header">
@filters.filter_label@
<if @filters.filter_clear_url@ not nil>
(<a href="@filters.filter_clear_url@" title="Clear the currently selected @filters.filter_label@">clear</a>)
</if>
</td>
</tr>
<group column="filter_name">
<if @filters.selected_p@ true>
<tr class="list-filter-selected">
</if>
<else>
<tr>
</else>
<td class="list-filter">
<if @filters.selected_p@ true><span class="list-filter-selected">@filters.label@</span></if>
<else><a href="@filters.url@" title="@filters.url_html_title@">@filters.label@</a></else>
</td>
<td align="right" class="list-filter">
<if @filters.count@ ne "0">@filters.count@</if>
</td>
<td align="right" class="list-filter">
<if @filters.add_url@ not nil>
<a href="@filters.add_url@">+</a>
</if>
</td>
</tr>
</group>
</table>
</p>
</multiple>
<div class="list-inline-filters">
<multiple name="filters">
<p>
<span class="list-inline-filter-label">@filters.filter_label@</span>
<if @filters.filter_clear_url@ not nil>
(<a href="@filters.filter_clear_url@" title="Clear the currently selected @filters.filter_label@">clear</a>)
</if>
<span class="list-inline-filter">[</span>
<group column="filter_name">
<if @filters.selected_p@ true>
<span class="list-inline-filter-selected">@filters.label@</span>
</if>
<else>
<a href="@filters.url@" title="@filters.url_html_title@" class="list-inline-filter">@filters.label@</a>
</else>
<if @filters.count@ not nil and @filters.count@ ne "0">(@filters.count@)</if>
<if @filters.add_url@ not nil>
<a href="@filters.add_url@" class="list-inline-filter">+</a>
</if>
<if @filters.groupnum_last_p@ false> | </if>
</group>
<span class="list-inline-filter">]</span>
</p>
</multiple>
</div>
<noparse>
<if \@@list_properties.multirow@:rowcount@ eq 0>
</noparse>
@list_properties.no_data@
<noparse>
</if>
<else>
</noparse>
<script language="JavaScript" type="text/javascript">
function ListFindInput() {
if (document.getElementsByTagName) {
return document.getElementsByTagName('input');
} else if (document.all) {
return document.all.tags('input');
}
return false;
}
function ListCheckAll(listName, checkP) {
var Obj, Type, Name, Id;
var Controls = ListFindInput(); if (!Controls) { return; }
// Regexp to find name of controls
var re = new RegExp('^' + listName + ',.+');
checkP = checkP ? true : false;
for (var i = 0; i < Controls.length; i++) {
Obj = Controls[i];
Type = Obj.type ? Obj.type : false;
Name = Obj.name ? Obj.name : false;
Id = Obj.id ? Obj.id : false;
if (!Type || !Name || !Id) { continue; }
if (Type == "checkbox" && re.exec(Id)) {
Obj.checked = checkP;
}
}
}
function ListBulkActionClick(formName, url) {
if (document.forms == null) return;
if (document.forms[formName] == null) return;
var form = document.forms[formName];
form.action = url;
form.submit();
}
</script>
<if @actions:rowcount@ gt 0>
<div class="list-button-bar">
<multiple name="actions">
<span class="list-button-header"><a href="@actions.url@" class="list-button" title="@actions.title@">@actions.label@</a></span>
</multiple>
</div>
</if>
<table class="list-tiny" cellpadding="3" cellspacing="1">
<if @list_properties.bulk_action_method@ not nil>
<form name="@list_properties.name@" method="@list_properties.bulk_action_method@">
</if>
<else>
<form name="@list_properties.name@" method="GET">
</else>
<noparse>
<multiple name="@list_properties.multirow@">
</noparse>
<p class="list-row">
<listrow>
</p>
<noparse>
</multiple>
</noparse>
</table>
<if @bulk_actions:rowcount@ gt 0>
<div class="list-button-bar">
<multiple name="bulk_actions">
<span class="list-button-header"><a href="#" class="list-button" title="@bulk_actions.title@"
onclick="ListBulkActionClick('@list_properties.name@', '@bulk_actions.url@'); return false;">@bulk_actions.label@</a></span>
</multiple>
</div>
</if>
</form>
<noparse>
</else>
</noparse>
<table class="@list_properties.class@" cellpadding="3" cellspacing="1"@list_properties.table_attributes;noquote@>
<if @list_properties.bulk_actions@ not nil>
<if @list_properties.bulk_action_method@ not nil>
<form name="@list_properties.name@" method="@list_properties.bulk_action_method@">
</if>
<else>
<form name="@list_properties.name@" method="GET">
</else>
@list_properties.bulk_action_export_chunk;noquote@
</if>
<if @list_properties.page_size@ not nil>
<noparse>
<if \@paginator.page_count@ gt 1>
<tr width="100%" class="list-paginator">
<td colspan="@elements:rowcount@" align="center">
<if \@paginator.group_count@ gt 1 and \@paginator.groupsize@ gt 1>
<if \@paginator.previous_group_url@ not nil>
<a href="\@paginator.previous_group_url@" title="\@paginator.previous_group_context@">&lt;&lt;</a>
</if>
<else>
&lt;&lt;
</else>
</if>
<if \@paginator.previous_page_url@ not nil>
&nbsp;<a href="\@paginator.previous_page_url@" title="\@paginator.previous_page_context@">&lt;</a>&nbsp;
</if>
<else>
&nbsp;&lt;&nbsp;
</else>
<multiple name="paginator_pages">
<if \@paginator.current_page@ ne \@paginator_pages.page@>
<if \@paginator_pages.page@ lt 10>&nbsp;&nbsp;</if><a
href="\@paginator_pages.url@" title="\@paginator_pages.context@">\@paginator_pages.page@</a>
</if>
<else>
<if \@paginator_pages.page@ lt 10>&nbsp;&nbsp;</if><b>\@paginator_pages.page@</b>
</else>
</multiple>
<if \@paginator.next_page_url@ not nil>
&nbsp;<a href="\@paginator.next_page_url@" title="\@paginator.next_page_context@">&gt;</a>&nbsp;
</if>
<else>
&nbsp;&gt;&nbsp;
</else>
<if \@paginator.group_count@ gt 1 and \@paginator.groupsize@ gt 1>
<if \@paginator.next_group_url@ not nil>
<a href="\@paginator.next_group_url@" title="\@paginator.next_group_context@">&gt;&gt;</a>
</if>
<else>
&gt;&gt;
</else>
</if>
</td>
</tr>
</if>
</noparse>
</if>
<if @actions:rowcount@ gt 0>
<tr class="list-button-bar">
<td colspan="@elements:rowcount@" class="list-button-bar">
<multiple name="actions">
<a href="@actions.url@" title="@actions.title@" class="button">@actions.label@</a>
</multiple>
</td>
</tr>
</if>
<multiple name="elements">
<tr class="list-header">
<group column="subrownum">
<th class="@elements.class@"@elements.cell_attributes;noquote@>
<if @elements.orderby_url@ not nil>
<if @elements.ordering_p@ true>
<a href="@elements.orderby_url@">@elements.label;noquote@</a>
<a href="@elements.orderby_url@" title="@elements.orderby_html_title@"><if @elements.orderby_direction@ eq "desc"><img src="/resources/acs-templating/sort-descending.png" border="0"></if><else><img src="/resources/acs-templating/sort-ascending.png" border="0"></else></a>
</if>
<else>
<a href="@elements.orderby_url@" title="@elements.orderby_html_title@">@elements.label;noquote@</a>
</else>
</if>
<else>
@elements.label;noquote@
</else>
</th>
</group>
</tr>
</multiple>
<noparse>
<if \@@list_properties.multirow@:rowcount@ eq 0>
<tr class="list-odd last">
<td class="list" colspan="@elements:rowcount@">
@list_properties.no_data@
</td>
</tr>
</if>
<else>
<multiple name="@list_properties.multirow@">
</noparse>
<if @list_properties.groupby@ not nil>
<tr class="list-subheader">
<td colspan="@elements:rowcount@">
@list_properties.groupby_label@: <listelement name="@list_properties.groupby@">
</td>
</tr>
<noparse>
<group column="@list_properties.groupby@">
</noparse>
</if>
<multiple name="elements">
<noparse>
<if \@@list_properties.multirow@.rownum@ lt \@@list_properties.multirow@:rowcount@>
<if \@@list_properties.multirow@.rownum@ odd>
<tr class="list-odd">
</if>
<else>
<tr class="list-even">
</else>
</if>
<else>
<if \@@list_properties.multirow@.rownum@ odd>
<tr class="list-odd last">
</if>
<else>
<tr class="list-even last">
</else>
</else>
</noparse>
<group column="subrownum">
<td class="@elements.class@"@elements.cell_attributes;noquote@>
<listelement name="@elements.name@">
</td>
</group>
</tr>
</multiple>
<if @list_properties.groupby@ not nil>
<noparse><if \@@list_properties.multirow@.groupnum_last_p@ true></noparse>
<multiple name="elements">
<tr class="list-subheader">
<group column="subrownum">
<td class="@elements.class@"@elements.cell_attributes;noquote@>
<if @elements.aggregate_group_label@ not nil>
@elements.aggregate_group_label@
</if>
<if @elements.aggregate@ not nil>
\@@list_properties.multirow@.@elements.aggregate_group_col@@
</if>
</td>
</group>
</tr>
</multiple>
<noparse></if></noparse>
<noparse>
</group>
</noparse>
</if>
<if @list_properties.aggregates_p@ true>
<noparse><if \@@list_properties.multirow@.rownum@ eq \@@list_properties.multirow@:rowcount@></noparse>
<multiple name="elements">
<tr class="list-subheader last">
<group column="subrownum">
<td class="@elements.class@"@elements.cell_attributes;noquote@>
<if @elements.aggregate_label@ not nil>
@elements.aggregate_label@
</if>
<if @elements.aggregate@ not nil>
\@@list_properties.multirow@.@elements.aggregate_col@@
</if>
</td>
</group>
</tr>
</multiple>
<noparse></if></noparse>
</if>
<noparse>
</multiple>
</else>
</noparse>
<noparse><if \@@list_properties.multirow@:rowcount@ gt 0></noparse>
<if @bulk_actions:rowcount@ gt 0>
<tr class="list-button-bar">
<td colspan="@elements:rowcount@" class="list-button-bar">
<multiple name="bulk_actions">
<a href="#" title="@bulk_actions.title@" class="button"
onclick="acs_ListBulkActionClick('@list_properties.name@', '@bulk_actions.url@'); return false;">@bulk_actions.label@</a>
</multiple>
</td>
</tr>
</if>
<noparse></if></noparse>
<if @list_properties.bulk_actions@ not nil>
</form>
</if>
</table>
<html><head><title>Datasource for @code_stub@</title></head>
<body bgcolor=white>
<h3>Data sources for @code_stub@.acs</h3>
<multiple name="datasources">
<b>@datasources.name@</b>
<table>
<tr><td align=left>Type:</td><td>@datasources.structure@</td></tr>
<tr><td>Comments:</td><td>@datasources.comment@</td></tr>
<if @datasources.structure@ in multirow multilist>
<tr><th align=left>Columns:</th><tr>
<tr><td align=left colspan=2>
<blockquote>
<table border=0 cellpadding=0 cellspacing=1>
<group column="name">
<tr><th align=right valign=top>@datasources.column_name@</th><td>&nbsp;&nbsp;</td><td>@datasources.column_comment@</td><tr>
</group>
</table>
</blockquote>
</if>
<if @datasources.structure@ in form>
<tr><th align=left>Input options:</th><tr>
<tr><td align=left colspan=2>
<blockquote>
<table border=0 cellpadding=0 cellspacing=1>
<group column="name">
<tr><th align=right valign=top>@datasources.input_name@</th><td>&nbsp;&nbsp;</td><td><i>@datasources.input_type@</i>; @datasources.input_comment@</td><tr>
</group>
</table>
</blockquote>
</if>
</table>
<p>
</multiple>
</body>
</html>
# code_stub should be set
set code [template::util::read_file $code_stub.tcl]
template::get_datasources $code
Sorry, an unrecoverable error occurred while serving this page. The server
has notified the administrators of this site and they will attempt to correct
the problem promptly.
\ No newline at end of file
<html>
<head>
<title>Request Error</title>
</head>
<body>
<p>Your request was invalid for the following reasons:</p>
<ul>
<list name="requesterrors">
<li>@requesterrors:item@
</list>
</ul>
</body>
</html>
# Massage the requesterror array into a list data source
foreach key [array names requesterror] {
lappend requesterrors $requesterror($key)
}
-- Data model to support content ACS Templating System
-- Copyright (C) 1999-2000 ArsDigita Corporation
-- Author: Karl Goldstein (karlg@arsdigita.com)
-- $Id$
-- This is free software distributed under the terms of the GNU Public
-- License. Full text of the license is available from the GNU Project:
-- http://www.fsf.org/copyleft/gpl.html
@@ demo-create.sql
-- Uninstall file for the data model created by 'acs-templating-create.sql'
-- (This file created automatically by create-sql-uninst.pl.)
--
-- brech (Mon Aug 28 11:04:55 2000)
--
-- $Id$
--
@@ demo-drop
create sequence ad_template_sample_users_seq start with 5 increment by 1;
create table ad_template_sample_users (
user_id integer primary key,
first_name varchar2(20),
last_name varchar2(20),
address1 varchar2(40),
address2 varchar2(40),
city varchar2(40),
state varchar2(2)
);
insert into ad_template_sample_users values
(1, 'Fred', 'Jones', '101 Main St.', NULL, 'Orange', 'CA');
insert into ad_template_sample_users values
(2, 'Frieda', 'Mae', 'Lexington Hospital', '102 Central St.',
'Orange', 'CA');
insert into ad_template_sample_users values
(3, 'Sally', 'Saxberg', 'Board of Supervisors', '1933 Fruitvale St.',
'Woodstock', 'CA');
insert into ad_template_sample_users values
(4, 'Yoruba', 'Diaz', '12 Magic Ave.', NULL, 'Lariot', 'WY');
-- Uninstall file for the data model created by 'demo-create.sql'
-- (This file created automatically by create-sql-uninst.pl.)
--
-- brech (Mon Aug 28 11:06:33 2000)
--
-- $Id$
--
drop table ad_template_sample_users;
drop sequence ad_template_sample_users_seq;
-- Data model to support content ACS Templating System
-- Copyright (C) 1999-2000 ArsDigita Corporation
-- Author: Karl Goldstein (karlg@arsdigita.com)
-- $Id$
-- This is free software distributed under the terms of the GNU Public
-- License. Full text of the license is available from the GNU Project:
-- http://www.fsf.org/copyleft/gpl.html
\i demo-create.sql
-- Uninstall file for the data model created by 'acs-templating-create.sql'
-- (This file created automatically by create-sql-uninst.pl.)
--
-- brech (Mon Aug 28 11:04:55 2000)
--
-- $Id$
--
\i demo-drop.sql
create sequence ad_template_sample_users_seq start 5 increment 1;
create view ad_template_sample_users_sequence as select nextval('ad_template_sample_users_seq') as nextval;
create table ad_template_sample_users (
user_id integer primary key,
first_name varchar(20),
last_name varchar(20),
address1 varchar(40),
address2 varchar(40),
city varchar(40),
state varchar(2)
);
insert into ad_template_sample_users values
(1, 'Fred', 'Jones', '101 Main St.', NULL, 'Orange', 'CA');
insert into ad_template_sample_users values
(2, 'Frieda', 'Mae', 'Lexington Hospital', '102 Central St.',
'Orange', 'CA');
insert into ad_template_sample_users values
(3, 'Sally', 'Saxberg', 'Board of Supervisors', '1933 Fruitvale St.',
'Woodstock', 'CA');
insert into ad_template_sample_users values
(4, 'Yoruba', 'Diaz', '12 Magic Ave.', NULL, 'Lariot', 'WY');
-- Uninstall file for the data model created by 'demo-create.sql'
-- (This file created automatically by create-sql-uninst.pl.)
--
-- brech (Mon Aug 28 11:06:33 2000)
--
-- $Id$
--
drop table ad_template_sample_users;
drop sequence ad_template_sample_users_seq;
# Initialize namespaces, global macros and filters for ArsDigita Templating
# System
# Copyright (C) 1999-2000 ArsDigita Corporation
# Author: Karl Goldstein (karlg@arsdigita.com)
# $Id$
# This is free software distributed under the terms of the GNU Public
# License. Full text of the license is available from the GNU Project:
# http://www.fsf.org/copyleft/gpl.html
# Initialize namespaces used by template procs
ad_proc -public template_tag { name arglist body } {
Generic wrapper for registered tag handlers.
} {
# LARS:
# We only ns_register_adptag the tag if it hasn't already been registered
# (if the proc doesn't exist).
# This makes debugging templating tags so much easier, because you don't have
# to restart the server each time.
set exists_p [llength [info procs template_tag_$name]]
switch [llength $arglist] {
1 {
# empty tag
eval "proc template_tag_$name { params } {
template::adp_tag_init $name
$body
return \"\"
}"
if { !$exists_p } {
ns_register_adptag $name template_tag_$name
}
}
2 {
# balanced tag so push on/pop off tag name and parameters on a stack
eval "proc template_tag_$name { chunk params } {
template::adp_tag_init $name
variable template::tag_stack
lappend tag_stack \[list $name \$params\]
$body
template::util::lpop tag_stack
return \"\"
}"
if { !$exists_p } {
ns_register_adptag $name /$name template_tag_$name
}
}
default { error [_ acs-templating.Tag_handler_invalid_number_of_args] }
}
}
# this initialization must be in a package alphabetically after
# acs-kernel, so the following will overwrite that handler.
# we register SAME handler for adp and tcl pages
rp_register_extension_handler adp adp_parse_ad_conn_file
rp_register_extension_handler tcl adp_parse_ad_conn_file
# Interface to the ACS for the ArsDigita Templating System
# Procedures in this file only make sense if you use the template system
# together with the ArsDigita Community System
# Copyright (C) 1999-2000 ArsDigita Corporation
# Authors: Christian Brechbuehler <christian@arsdigita.com
# $Id$
# This is free software distributed under the terms of the GNU Public
# License. Full text of the license is available from the GNU Project:
# http://www.fsf.org/copyleft/gpl.html
ad_proc -public ad_return_template {
-string:boolean
{template ""}
} {
This function is a wrapper for sundry template:: procs. Will set the
template for the current page to the file named in 'template'.
@param template Name of template file
@param string If specified, will return the resulting page to the caller
string instead sending it to the connection.
} {
if {![empty_string_p $template]} {
template::set_file \
[template::util::url_to_file $template [ad_conn file]]
}
if { $string_p } {
return [template::adp_parse \
[template::util::url_to_file $template [ad_conn file]] {}]
}
}
ad_proc -public ad_parse_template {
{-params ""}
template
} {
Return a string containing the parsed and evaluated template to the caller.
@param params The parameters to pass to the template. Note that pass-by-reference params must be in the page namespace, they cannot be in a local procedure, or any other namespace.
@param template The template file name.
Example:
<code>set page [ad_parse_template -params {errmsg {custom_message "My Message"}} some-template]</code>
@param template Name of template file
} {
set template_params [list]
foreach param $params {
switch [llength $param] {
1 { lappend template_params "&"
lappend template_params [lindex $param 0]
}
2 { lappend template_params [lindex $param 0]
lappend template_params [lindex $param 1]
}
default { return -code error [_ acs-templating.Template_parser_error_in_parameter_list] }
}
}
return [uplevel [list template::adp_parse [template::util::url_to_file $template [ad_conn file]] $template_params]]
}
ad_proc -public ad_return_exception_template {
{-status 500}
{-params ""}
template
} {
Return an exception template and abort the current script.
@param status The HTTP status to return, by default HTTP 500 (Error)
@param params The parameters to pass to the template.
@param template The template file name.
Example:
<code>ad_return_exception_template -params {errmsg {custom_message "My Message"}} some-template</code>
} {
ns_return $status text/html [ad_parse_template -params $params $template]
ad_script_abort
}
ad_proc -public get_server_root {} {
Get the server root directory (supposing we run under ACS)
} {
file dir [ns_info tcllib]
}
ad_proc adp_parse_ad_conn_file {} {
handle a request for an adp and/or tcl file in the template system.
} {
namespace eval template variable parse_level ""
#ns_log debug "adp_parse_ad_conn_file => file '[file root [ad_conn file]]'"
set parsed_template [template::adp_parse [file root [ad_conn file]] {}]
if {![empty_string_p $parsed_template]} {
#
# acs-lang translator mode
#
if { [lang::util::translator_mode_p] } {
# Attempt to move all message keys outside of tags
while { [regsub -all {(<[^>]*)(\x002\(\x001[^\x001]*\x001\)\x002)([^>]*>)} $parsed_template {\2\1\3} parsed_template] } {}
# Attempt to move all message keys outside of <select>...</select> statements
regsub -all -nocase {(<option\s[^>]*>[^<]*)(\x002\(\x001[^\x001]*\x001\)\x002)([^<]*</option[^>]*>)} $parsed_template {\2\1\3} parsed_template
while { [regsub -all -nocase {(<select[^>]*>[^<]*)(\x002\(\x001[^\x001]*\x001\)\x002)} $parsed_template {\2\1} parsed_template] } {}
set start 0
while { [regexp -nocase -indices -start $start {(<select[^\x002]*)(\x002\(\x001[^\x001]*\x001\)\x002)} $parsed_template indices select_idx message_idx] } {
set select [string range $parsed_template [lindex $select_idx 0] [lindex $select_idx 1]]
if { [string first "</select" [string tolower $select]] != -1 } {
set start [lindex $indices 1]
} else {
set before [string range $parsed_template 0 [expr [lindex $indices 0]-1]]
set message [string range $parsed_template [lindex $message_idx 0] [lindex $message_idx 1]]
set after [string range $parsed_template [expr [lindex $indices 1] + 1] end]
set parsed_template "${before}${message}${select}${after}"
}
}
# TODO: We could also move message keys out of <head>...</head>
while { [regexp -indices {\x002\(\x001([^\x001]*)\x001\)\x002} $parsed_template indices key] } {
set before [string range $parsed_template 0 [expr [lindex $indices 0] - 1]]
set after [string range $parsed_template [expr [lindex $indices 1] + 1] end]
set key [string range $parsed_template [lindex $key 0] [lindex $key 1]]
set keyv [split $key "."]
set package_key [lindex $keyv 0]
set message_key [lindex $keyv 1]
set edit_url [export_vars -base "[apm_package_url_from_key "acs-lang"]admin/edit-localized-message" { { locale {[ad_conn locale]} } package_key message_key { return_url [ad_return_url] } }]
if { [lang::message::message_exists_p [ad_conn locale] $key] } {
set edit_link "<a href=\"$edit_url\" title=\"$key\" style=\"color: green;\"><b>o</b></a>"
} else {
if { [lang::message::message_exists_p "en_US" $key] } {
# Translation missing in this locale
set edit_link "<a href=\"$edit_url\" title=\"$key\" style=\"background-color: yellow; color: red;\"><b>*</b></a>"
} else {
# Message key missing entirely
set new_url [export_vars -base "[apm_package_url_from_key "acs-lang"]admin/localized-message-new" { { locale en_US } package_key message_key { return_url [ad_return_url] } }]
set edit_link "<a href=\"$new_url\" title=\"$key\" style=\"background-color: red; color: white;\"><b>@</b></a>"
}
}
set parsed_template "${before}${edit_link}${after}"
}
}
set mime_type [template::get_mime_type]
set header_preamble [template::get_mime_header_preamble $mime_type]
doc_return 200 $mime_type "$header_preamble$parsed_template"
} else {
db_release_unused_handles
}
}
ad_proc -public -deprecated -warn ad_template_return {{file_stub ""}} {
Alias proc (wrapper) for ad_return_template
} {
uplevel 1 "ad_return_template $file_stub"
}
# Initialize namespaces, global macros and filters for ArsDigita Templating
# System
# Copyright (C) 1999-2000 ArsDigita Corporation
# Author: Karl Goldstein (karlg@arsdigita.com)
# $Id$
# This is free software distributed under the terms of the GNU Public
# License. Full text of the license is available from the GNU Project:
# http://www.fsf.org/copyleft/gpl.html
# Initialize namespaces used by template procs
namespace eval template {}
namespace eval template::form {}
namespace eval template {
namespace export query request form element
# namespaces for cached datasource and template procedures
namespace eval code {
namespace eval tcl {}
namespace eval adp {}
}
# namespaces for mtime checking procedures on datasource and
# template files
namespace eval mtimes {
namespace eval tcl {}
namespace eval adp {}
}
namespace eval query {}
namespace eval util {
namespace eval date {}
namespace eval currency {}
namespace eval file {}
}
namespace eval element {
# default settings
variable defaults
set defaults [list widget text datatype integer values {} help_text {} before_html {} after_html {}]
}
namespace eval request {}
namespace eval widget {
namespace eval table {}
}
namespace eval form {
# default settings
variable defaults
set defaults \
[list \
method post \
section {} \
mode edit \
edit_buttons [list [list [_ acs-kernel.common_OK] ok ]] \
display_buttons [list [list [_ acs-kernel.common_Edit] edit]] \
show_required_p t]
}
namespace eval wizard {
# stack level at which wizard is created
variable parse_level
# An array of default buttons and their names
variable default_button_labels
array set default_button_labels \
[list back [_ acs-templating.Previous_with_arrow] \
repeat [_ acs-kernel.common_Repeat] \
next [_ acs-templating.Next_with_arrow] \
finish [_ acs-kernel.common_Finish]]
}
namespace eval paginator {
# stack level at which paginator is created
variable parse_level
# Default values for paginator properties
variable defaults
set defaults [list pagesize 20 timeout 600 groupsize 10 page_offset 0]
}
namespace eval data {
namespace eval validate {}
namespace eval transform {}
}
# keep track of the stack frame in which a template is rendered at run-time
variable parse_level
# used for compiling Tcl code from ADP template
variable parse_list
# used to keep track of nested tags
variable tag_stack
# used to keep a list of filter procedures to execute
variable filter_list
set filter_list [list]
# filters may set or modify the URL to replace ns_conn url
variable url
# specify what procs can be accessed directly
namespace export form element request
}
ad_library {
APM callback procedures for acs-templating.
@creation-date 2003-09-22
@author Lars Pind (lars@collaboraid.biz)
@cvs-id $Id$
}
namespace eval template {}
namespace eval template::apm {}
ad_proc -public template::apm::before_upgrade {
{-from_version_name:required}
{-to_version_name:required}
} {
apm_upgrade_logic \
-from_version_name $from_version_name \
-to_version_name $to_version_name \
-spec {
4.6.4 5.0d1 {
db_transaction {
# Change 'standard-lars' to 'standard'
set package_id [apm_package_id_from_key "acs-templating"]
set DefaultFormStyle [parameter::get \
-package_id $package_id \
-parameter DefaultFormStyle]
if { [string equal $DefaultFormStyle "standard-lars"] } {
parameter::set_value \
-package_id $package_id \
-parameter DefaultFormStyle \
-value "standard"
}
db_foreach subsite {
select package_id
from apm_packages
where package_key = 'acs-subsite'
} {
set DefaultFormStyle [parameter::get \
-package_id $package_id \
-parameter DefaultFormStyle]
if { [string equal $DefaultFormStyle "standard-lars"] } {
parameter::set_value \
-package_id $package_id \
-parameter DefaultFormStyle \
-value "standard"
}
}
}
}
}
}
# Currency widgets for the OpenACS Templating System
# This is free software distributed under the terms of the GNU Public
# License. Full text of the license is available from the GNU Project:
# http://www.fsf.org/copyleft/gpl.html
# @author Don Baccus (dhogaza@pacifier.com)
# These are modelled somewhat after the date procs.
# DRB: This was totally non-functional in ACS 4.2 Classic. It's now partly
# functional in that we accept and process currency values. We really need
# to tie this in with the acs-lang money database as this code's far too
# simplistic.
namespace eval template {}
namespace eval template::util {}
namespace eval template::util::currency {}
namespace eval template::data::validate::currency {}
namespace eval template::data::transform::currency {}
namespace eval template::util::currency::set_property {}
namespace eval template::widget::currency {}
ad_proc -public template::util::currency { command args } {
Dispatch procedure for the currency object
} {
eval template::util::currency::$command $args
}
ad_proc -public template::util::currency::create {
{leading_symbol {}} {whole_part {}} {separator {}}
{fractional_part {}} {trailing_money {}} {format "$ 5 . 2"}
} {
return [list $leading_symbol $whole_part $separator $fractional_part $trailing_money $format]
}
ad_proc -public template::util::currency::acquire { type { value "" } } {
Create a new currency value with some predefined value
Basically, create and set the currency value
} {
set currency_list [template::util::currency::create]
return [template::util::currency::set_property $type $currency_list $value]
}
ad_proc -public template::data::validate::currency { value_ref message_ref } {
upvar 2 $message_ref message $value_ref value
# a currency is a 6 element list supporting, for example, the following forms: "$2.03" "Rs 50.42" "12.52L" "Y5,13c"
# equivalent of date::unpack
set leading_symbol [lindex $value 0]
set whole_part [lindex $value 1]
set separator [lindex $value 2]
set fractional_part [lindex $value 3]
set trailing_money [lindex $value 4]
set format [lindex $value 5]
set format_whole_part [lindex $format 1]
set format_fractional_part [lindex $format 3]
set whole_part_valid_p [template::data::validate integer whole_part message]
if { ![empty_string_p $fractional_part] } {
set fractional_part_valid_p [template::data::validate integer fractional_part message]
} else {
set fractional_part_valid_p 1
}
if { ! $whole_part_valid_p || ! $fractional_part_valid_p } {
set message "[_ acs-templating.Invalid_currency] [join [lrange $value 0 4] ""]"
return 0
} else {
return 1
}
}
ad_proc -public template::data::transform::currency { element_ref } {
upvar $element_ref element
set element_id $element(id)
set format [ns_queryget $element_id.format]
for { set i [llength $format] } { $i < 5 } { incr i } {
lappend format ""
}
# a currency is a 6 element list supporting, for example, the following forms: "$2.03" "Rs 50.42" "12.52L" "Y5,13c"
set have_values 0
for { set i 0 } { $i <= 4 } { incr i } {
set key "$element_id.$i"
if { [ns_queryexists $key] } {
set value [ns_queryget $key]
# let's put a leading zero if the whole part is empty
if { $i == 1 } {
if { [string equal $value ""] } {
set value 0
} else {
set have_values 1
}
}
# and let's fill in the zeros at the end up to the precision
if { $i == 3 } {
if { ![string equal $value ""] } {
set have_values 1
}
set fractional_part_format [lindex $format 3]
for { set j [string length $value] } { $j < $fractional_part_format } { set j [expr $j + 1] } {
append $value 0
}
}
lappend the_amount $value
} else {
lappend the_amount ""
}
}
lappend the_amount [ns_queryget $element_id.format]
ns_log debug "template::data::transform::currency: the_amount: $the_amount length: [llength $the_amount]"
if { $have_values } {
return [list $the_amount]
} else {
return [list]
}
}
ad_proc -public template::util::currency::set_property { what currency_list value } {
# Erase leading zeroes from the value, but make sure that 00
# is not completely erased
set value [template::util::leadingTrim $value]
set format [lindex $currency_list 5]
switch $what {
sql_number {
if { [empty_string_p $value]} {
return ""
}
foreach {whole_part fractional_part} [split $value "."] {
# Make sure we have at least one leading digit, i.e. zero
set whole_part "[string range "0" [string length $whole_part] end]$whole_part"
# Chop off trailing digits beyond those called for by the given format
set fractional_part "[string range $fractional_part 0 [expr {[lindex $format 3] - 1}]]"
}
set new_value [lreplace $currency_list 1 1 $whole_part]
return [lreplace $new_value 3 3 $fractional_part]
}
default {
error "util::currency::property: unknown property: '$what'."
}
}
}
ad_proc -public template::util::currency::get_property { what currency_list } {
Return a property of a currency list which was created by a
currency widget.
@param what the name of the property (see code for allowed values)
@param currency_list a currency widget list, usually created with ad_form
} {
# There's no internal error checking, just like the date version ... and
# of course whole_part might be pounds and fractional_part pfennings ...
set leading_symbol [lindex $currency_list 0]
set whole_part [lindex $currency_list 1]
set separator [lindex $currency_list 2]
set fractional_part [lindex $currency_list 3]
set trailing_money [lindex $currency_list 4]
set format [lindex $currency_list 5]
switch $what {
leading_symbol {
return $leading_symbol
}
whole_part {
return $whole_part
}
separator {
return $separator
}
fractional_part {
return $fractional_part
}
trailing_money {
return $trailing_money
}
format {
return $format
}
sql_number {
if { [empty_string_p $whole_part] && [empty_string_p $fractional_part] } {
return ""
}
# Make sure we have at least one leading digit, i.e. zero
set whole_part "[string range "0" [string length $whole_part] end]$whole_part"
# Pad out the fractional part with enough leading zeros to satisfy the format
set fractional_part "[string range [string repeat "0" [lindex $format 3]] [string length $fractional_part] end]$fractional_part"
return ${whole_part}.${fractional_part}
}
display_currency {
if { [empty_string_p $whole_part] && [empty_string_p $fractional_part] } {
return ""
}
# Make sure we have at least one leading digit, i.e. zero
set whole_part "[string range "0" [string length $whole_part] end]$whole_part"
# Pad out the fractional part with enough leading zeros to satisfy the format
set fractional_part "[string range [string repeat "0" [lindex $format 3]] [string length $fractional_part] end]$fractional_part"
# Glom everything into one pretty picture
return "$leading_symbol$whole_part$separator$fractional_part$trailing_money"
}
default {
error "util::currency::property: unknown property: '$what'."
}
}
}
ad_proc -public template::widget::currency {
element_reference tag_attributes {mode edit}
} {
upvar $element_reference element
if { [info exists element(html)] } {
array set attributes $element(html)
}
if { ! [info exists element(format)] } {
set element(format) "$ 5 . 2"
}
set format [split $element(format) " "]
for { set i [llength $format] } { $i < 5 } { incr i } {
lappend format ""
}
if { [info exists element(value)] } {
set values $element(value)
} else {
set values [list "" "" "" "" "" $element(format)]
}
set i 0
foreach format_property $format {
set value [lindex $values 0]
set values [lrange $values 1 end]
set trailing_zero ""
if { $i == 3 } {
set trailing_zero [string range [string repeat "0" $format_property] [string length $value] end]
}
if { $i == 0 || $i == 2 || $i == 4 } {
append output "$format_property<input type=\"hidden\" name=\"$element(name).$i\" value=\"$format_property\" />"
} elseif { [string equal $element(mode) "edit"] && ($i == 1 || $i == 3) } {
append output "<input type=\"text\" name=\"$element(name).$i\" maxlength=\"$format_property\" size=\"$format_property\" value=\"$value$trailing_zero\" />\n"
} else {
append output "$value$trailing_zero<input type=\"hidden\" name=\"$element(name).$i\" maxlength=\"$format_property\" size=\"$format_property\" value=\"$value\" />"
}
incr i
}
append output "<input type=\"hidden\" name=\"$element(name).format\" value=\"$element(format)\" />\n"
return $output
}
# Datatype validation for the ArsDigita Templating System
# Copyright (C) 1999-2000 ArsDigita Corporation
# Authors: Karl Goldstein (karlg@arsdigita.com)
#
# $Id$
# This is free software distributed under the terms of the GNU Public
# License. Full text of the license is available from the GNU Project:
# http://www.fsf.org/copyleft/gpl.html
namespace eval template {}
namespace eval template::data {}
namespace eval template::data::validate {}
namespace eval template::data::transform {}
ad_proc -public template::data::validate { type value_ref message_ref } {
This proc invokes the validation code for a given type.
@see template::data::validate::boolean
@see template::data::validate::date
@see template::data::validate::email
@see template::data::validate::filename
@see template::data::validate::integer
@see template::data::validate::keyword
@see template::data::validate::search
@see template::data::validate::string
@see template::data::validate::text
@see template::data::validate::url
} {
return [validate::$type $value_ref $message_ref]
}
ad_proc -public template::data::validate::integer { value_ref message_ref } {
upvar 2 $message_ref message $value_ref value
set result [regexp {^[+-]?\d+$} $value]
if { ! $result } {
set message "Invalid integer \"$value\""
}
return $result
}
ad_proc -public template::data::validate::naturalnum { value_ref message_ref } {
Validates natural numbers data types
Will trim leading 0 in order to avoid TCL interpreting it as octal in the future
(code borrowed from ad_page_contract_filter_proc_naturalnum)
@author Rocael Hernandez <roc@viaro.net>
} {
upvar 2 $message_ref message $value_ref value
set result [regexp {^(0*)(([1-9][0-9]*|0))$} $value match zeros value]
if { ! $result } {
set message "Invalid natural number \"$value\""
}
return $result
}
ad_proc -public template::data::validate::float { value_ref message_ref } {
upvar 2 $message_ref message $value_ref value
# Not allowing for scientific notation. Would the databases swallow it?
set result [regexp {^([+-]?)(?=\d|\.\d)\d*(\.\d*)?$} $value]
if { ! $result } {
set message "Invalid decimal number \"$value\""
}
return $result
}
ad_proc -public template::data::validate::boolean { value_ref message_ref } {
Validates boolean data types
@author Roberto Mello <rmello at fslc.usu.edu>
} {
upvar 2 $message_ref message $value_ref value
set result ""
set value [string tolower $value]
switch $value {
0 -
1 -
f -
t -
n -
y -
no -
yes -
false -
true {
set result 1
}
default {
set result 0
set message "Invalid choice \"$value\""
}
}
return $result
}
ad_proc -public template::data::validate::text { value_ref message_ref } {
# anything is valid for text
return 1
}
ad_proc -public template::data::validate::string { value_ref message_ref } {
# anything is valid for string
return 1
}
ad_proc -public template::data::validate::keyword { value_ref message_ref } {
upvar 2 $message_ref message $value_ref value
set result [regexp {^[a-zA-Z0-9_]+$} $value]
if { ! $result } {
set message "Invalid keyword \"$value\""
}
return $result
}
ad_proc -public template::data::validate::filename { value_ref message_ref } {
upvar 2 $message_ref message $value_ref value
set result [regexp {^[a-zA-Z0-9_-]+$} $value]
if { ! $result } {
set message "Invalid filename \"$value\""
}
return $result
}
ad_proc -public template::data::validate::email { value_ref message_ref } {
upvar 2 $message_ref message $value_ref value
set result [util_email_valid_p $value]
if { ! $result } {
set message "Invalid email format \"$value\""
}
return $result
}
ad_proc -public template::data::validate::url { value_ref message_ref } {
upvar 2 $message_ref message $value_ref value
set expr {^(https?://)?([a-zA-Z0-9_\-\.]+(:[0-9]+)?)?[a-zA-Z0-9_.%/?=&-]+$}
set result [regexp $expr $value]
if { ! $result } {
set message "Invalid url \"$value\""
}
return $result
}
ad_proc -public template::data::validate::url_element { value_ref message_ref } {
Beautiful URL elements that may only contain lower case
characters, numbers and hyphens.
<p>
@see util_text_to_url if you want to offer auto-generation of URLs based on a pretty name
@author Tilmann Singer
} {
upvar 2 $message_ref message $value_ref value
set expr {^[a-z0-9-]+$}
set result [regexp $expr $value]
if { ! $result } {
set message "Invalid url \"$value\". Please use only lowercase characters, numbers and hyphens, e.g. \"foo-bar\"."
}
return $result
}
ad_proc -public template::data::validate::date { value_ref message_ref } {
upvar 2 $message_ref message $value_ref value
return [template::util::date::validate $value message]
}
# It was necessary to declare a datatype of "search" in order for the
# transformation to be applied correctly. In reality, the transformation
# should be on the element, not on the datatype.
ad_proc -public template::data::validate::search { value_ref message_ref } {
return 1
}
ad_proc -public template::data::transform { type value_ref } {
set proc_name [info procs ::template::data::transform::$type]
if { ! [string equal $proc_name {}] } {
transform::$type $value_ref
}
}
# branimir: (triggered while fixing bug# 1176) this used to be called at the
# end of date-procs.tcl It broke down when we started to internationalize it
# because messages hadn't been loaded at that point. Now we are loading
# messages right before executing *.-init.tcl files so things will work.
# Initialize the months array
template::util::date::init
This diff is collapsed.
ad_proc -public watch_files {} {
tracks each file by interpreter to ensure that it is up-to-date
} {
set files [list ats/paginator-procs.tcl ats/query-procs.tcl \
ats/debug-procs.tcl ats/filter-procs.tcl ats/util-procs.tcl]
foreach file $files {
set file [ns_info tcllib]/$file
set proc_name [info procs ::template::mtimes::tcl::$file]
set mtime [file mtime $file]
if { [string equal $proc_name {}] || $mtime != [$proc_name] } {
uplevel #0 "source $file"
proc ::template::mtimes::tcl::$file {} "return $mtime"
}
}
}
# Documentation procedures for the ArsDigita Templating System
# Copyright (C) 1999-2000 ArsDigita Corporation
# Authors: Karl Goldstein (karlg@arsdigita.com)
# $Id$
# This is free software distributed under the terms of the GNU Public
# License. Full text of the license is available from the GNU Project:
# http://www.fsf.org/copyleft/gpl.html
# Data source comments have the following form:
# @datasource foo multirow
# Output info about a foo.
# @column name The name of the foo.
# @column id The ID of the foo.
# @param id
# The ID of the foo passed with the request.
namespace eval template {}
ad_proc -public template::parse_directives { code } {
# remove carriage returns if present
regsub -all {\r|\r\n} $code {\n} code
# remove extra blank lines
regsub -all {(\n)\n} $code {\1} code
set lines [split $code "\n"]
# regular expression for match directive comments
set direxp {^\#[\s]*@([a-zA-Z0-9\-_]+)[\s]+(.*)$}
set directives [list]
foreach line $lines {
if { [regexp $direxp $line x next_directive next_comment] } {
# start a new directive
if { [info exists directive] } {
# finish last directive
lappend directives [list $directive $comment]
}
set directive $next_directive
set comment $next_comment
} elseif { [info exists directive] } {
if { [regexp {^\#\s*(.*)$} $line x add_comment] } {
# append this line to the current directive
append comment " $add_comment"
} else {
# finish directive
lappend directives [list $directive $comment]
unset directive
unset comment
}
}
}
if { [info exists directive] } {
lappend directives [list $directive $comment]
}
return $directives
}
ad_proc -public template::get_datasources { code } {
Assemble directives into data source(s) for presentation.
} {
upvar datasources:rowcount rowcount
set rowcount 0
#for debugging purposes
upvar output text
set text [parse_directives $code]
foreach directive [parse_directives $code] {
switch -exact [lindex $directive 0] {
datasource {
# directive is a new datasource
set info [lindex $directive 1]
set name [lindex $info 0]
set structure [lindex $info 1]
set comment [lrange $info 2 end]
if { [string match one* $structure] } {
# directive is a onevalue or onelist. add a row and move on
incr rowcount
upvar datasources:$rowcount datasource
set datasource(rownum) $rowcount
set datasource(name) $name
set datasource(structure) $structure
set datasource(comment) $comment
}
}
data_input {
# directive is a new form
set info [lindex $directive 1]
set name [lindex $info 0]
set structure [lindex $info 1]
set comment [lrange $info 2 end]
}
input {
set info [lindex $directive 1]
set input_name [lindex $info 0]
set input_type [lindex $info 1]
set input_comment [lrange $info 2 end]
incr rowcount
upvar datasources:$rowcount datasource
set datasource(rownum) $rowcount
set datasource(structure) $structure
set datasource(comment) $comment
set datasource(name) $name
set datasource(input_name) $input_name
set datasource(input_type) $input_type
set datasource(input_comment) $input_comment
}
column {
set info [lindex $directive 1]
set column_name [lindex $info 0]
set column_comment [lrange $info 1 end]
incr rowcount
upvar datasources:$rowcount datasource
set datasource(rownum) $rowcount
set datasource(name) $name
set datasource(structure) $structure
set datasource(comment) $comment
set datasource(column_name) $column_name
set datasource(column_comment) $column_comment
}
}
}
}
ad_proc -public template::verify_datasources {} {
return 1
}
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template::list::prepare.pagination_query">
<querytext>
select * from (
select paginate.*, rownum rowsub from
($list_properties(page_query_substed)) paginate
where rownum <= $last_row)
where rowsub >= $first_row
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template::list::prepare.pagination_query">
<querytext>
$list_properties(page_query_substed) offset [expr $first_row - 1]
limit [expr $last_row - $first_row + 1]
</querytext>
</fullquery>
</queryset>
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
ad_library {
procs for testing the multiple and group tags
}
# til: removed the following test case because the bug won't fix 'by
# design', so there seems to be no point in leaving the test case
# here. Use CVS to restore it.
#aa_register_case -cats { api } -bugs { 428 } group_tag
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment