Commit 7158c7d1 authored by Malte Sussdorff's avatar Malte Sussdorff

- Malte

parent a47e9f41
Pipeline #107 failed with stages

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.2.3" locale="cs_CZ" charset="utf-8">
<msg key="12-Hour">12-hodinový</msg>
<msg key="24-Hour">24-hodinový</msg>
<msg key="Day">den</msg>
<msg key="Element_is_required">%label% je povinné</msg>
<msg key="Element_is_too_long_Plural">%label% je příliš dlouhé (%excess_no_bytes% znaků navíc).</msg>
<msg key="Element_is_too_long_Singular">%label% je příliš dlouhé (jeden znak navíc)</msg>
<msg key="Formats">Formáty</msg>
<msg key="Invalid_choice">Neplatná volba</msg>
<msg key="Invalid_currency">Neplatná měna</msg>
<msg key="Invalid_decimal_number">Neplatné desetinné číslo</msg>
<msg key="Invalid_email_format">Neplatný formát e-mailu</msg>
<msg key="Invalid_filename">Neplatné jméno souboru</msg>
<msg key="Invalid_integer">Neplatná celé číslo</msg>
<msg key="Invalid_keyword">Neplatné klíčové slovo</msg>
<msg key="Invalid_natural_number">Neplatné přirozené číslo</msg>
<msg key="Invalid_url">Neplatný odkaz URL</msg>
<msg key="Meridian">Poledník</msg>
<msg key="Minutes">minuty</msg>
<msg key="Month">měsíc</msg>
<msg key="Next_with_arrow">Další &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Žádné %row_pretty_plural%.</msg>
<msg key="Previous_with_arrow">&lt;&lt; Předchozí</msg>
<msg key="required">povinné</msg>
<msg key="Seconds">vteřiny</msg>
<msg key="Sort_order">Způsob řazení</msg>
<msg key="Spellcheck">Kontrola pravopisu</msg>
<msg key="Template_parser_error_in_parameter_list">Chyba v seznamu parametrů</msg>
<msg key="Year">rok</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.3.1a1" locale="el_GR" charset="utf-8">
<msg key="data">δεδομένα</msg>
<msg key="Formats">Μορφές</msg>
<msg key="No_row_pretty_plural">Όχι %row_pretty_plural%.</msg>
<msg key="required">απαιτείται</msg>
<msg key="Sort_order">Ταξινόμηση</msg>
<msg key="Spellcheck">Ορθογράφος</msg>
</message_catalog>
<?xml version="1.0" encoding="ISO-8859-1"?>
<message_catalog package_key="acs-templating" package_version="5.2.3" locale="gl_ES" charset="ISO-8859-1">
<msg key="12-Hour">12-Horas</msg>
<msg key="24-Hour">24-Horas</msg>
<msg key="CSV">CSV</msg>
<msg key="data">dato</msg>
<msg key="Day">Da</msg>
<msg key="day">day</msg>
<msg key="Element_is_required">%label% obligatorio</msg>
<msg key="Element_is_too_long_Plural">%label% %excess_no_bytes% caracteres demasiado longo.</msg>
<msg key="Element_is_too_long_Singular">%label% un caracter moi longo</msg>
<msg key="Formats">Formatos</msg>
<msg key="hours">horas</msg>
<msg key="Hours_must_be_between_0_and_23">A hora debe estar comprendida entre 0 e 23</msg>
<msg key="HTMLArea_action_cancel">Cancelar</msg>
<msg key="HTMLArea_ImageAlignment">Alineacin</msg>
<msg key="HTMLArea_ImageAlignmentBottom">Inferior</msg>
<msg key="HTMLArea_ImageAlignmentLeft">Alinear esquerda</msg>
<msg key="HTMLArea_ImageAlignmentMiddle">Centro</msg>
<msg key="HTMLArea_ImageAlignmentRight">Alinear dereita</msg>
<msg key="HTMLArea_ImageAlignmentTop">Superior</msg>
<msg key="HTMLArea_ImageAlternateText">Texto Alternativo para a imaxe</msg>
<msg key="HTMLArea_ImageAlternateTextToolTip">Especifique un texto alternativo para a imaxe</msg>
<msg key="HTMLArea_ImageBorderSize">Borde</msg>
<msg key="HTMLArea_ImageBorderSizeToolTip">Ancho do borde</msg>
<msg key="HTMLArea_ImageSpacing">Espaciado</msg>
<msg key="HTMLArea_ImageSpacingHorizontal">Horizontal</msg>
<msg key="HTMLArea_ImageSpacingHorizontalToolTip">Espaciado Horizontal</msg>
<msg key="HTMLArea_ImageSpacingVertical">Vertical</msg>
<msg key="HTMLArea_ImageSpacingVerticalToolTip">Espaciado Vertical</msg>
<msg key="HTMLArea_ImageURL">URL</msg>
<msg key="HTMLArea_ImageURLToolTip">URL da imaxe</msg>
<msg key="HTMLArea_InsertImageTitle">Insertar unha imaxe</msg>
<msg key="HTMLArea_InsertModifyLink">Insertar/Modificar un enlace</msg>
<msg key="HTMLArea_NoAltText">Non se especificou texto alternativo. Por favor, indique un para mellorar a accesibilidade</msg>
<msg key="HTMLArea_NoURL">Non se especificou a URL da imaxe</msg>
<msg key="HTMLArea_OpenFileStorage">Abrir carpeta</msg>
<msg key="HTMLArea_SelectFile">Seleccione un arquivo</msg>
<msg key="HTMLArea_SelectFileTitle">Seleccionar arquivo</msg>
<msg key="HTMLArea_SelectFileUploadTitle">Subir un arquivo</msg>
<msg key="HTMLArea_SelectImage">Seleccione unha imaxe</msg>
<msg key="HTMLArea_SelectImageNothingSelected">Ningunha seleccin</msg>
<msg key="HTMLArea_SelectImagePreview">Vista Previa</msg>
<msg key="HTMLArea_SelectImageTitle">Seleccionar Imaxe</msg>
<msg key="HTMLArea_SelectImageUploadNoImage">Seleccionar imaxe ou subir arquivo</msg>
<msg key="HTMLArea_SelectImageUploadTitle">Subir imaxe</msg>
<msg key="HTMLArea_SelectUploadBtn">Subir</msg>
<msg key="HTMLArea_SpecifyUploadFilename">Especifique un arquivo a subir</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">Nome de fichero incorrecto</msg>
<msg key="Invalid_integer">Enteiro incorrecto</msg>
<msg key="Invalid_keyword">Palabra crave incorrecta</msg>
<msg key="Invalid_natural_number">Nmero natural incorrecto</msg>
<msg key="Invalid_url">URL incorrecta</msg>
<msg key="lt_Checkuncheck_all_rows">Seleccionar/deseleccionar todas as filas</msg>
<msg key="lt_Checkuncheck_this_row">Seleccionar/deseleccionar esta fila, e elexir unha accin a realizar sobre ela</msg>
<msg key="lt_Dates_must_be_formatted_">As datas deben ter o seguinte formato: %format%</msg>
<msg key="lt_day_between_for_month_pretty">O da deber estar comprendido entre 1 e %maxdays% para o mes de %month_pretty% </msg>
<msg key="lt_No_value_supplied_for_-field_pretty-">Falta especifica-lo valor de %field_pretty%</msg>
<msg key="lt_The_-field_pretty-_must_be_non_negative">%field_pretty% deber ser un enteiro non negativo</msg>
<msg key="lt_When_specifying_a_non"> especificar un page_size distinto de 0, debe especificar tamn o page_query ou page_query_name </msg>
<msg key="Meridian">Meridiano</msg>
<msg key="Minutes">Minutos</msg>
<msg key="minutes">minutos</msg>
<msg key="Minutes_must_be_between_0_and_59">Os minutos deben estar comprendidos entre 0 e 59</msg>
<msg key="Month">Mes</msg>
<msg key="month">mes</msg>
<msg key="Month_must_be_between_1_and_12">O mes debe estar comprendido entre 1 e 12</msg>
<msg key="Next_with_arrow">Seguinte &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Ningn %row_pretty_plural%.</msg>
<msg key="Page">Pxina</msg>
<msg key="Page_Size">Tamao da Pxina</msg>
<msg key="Previous_with_arrow">&lt;&lt; Anterior</msg>
<msg key="required">obligatorio</msg>
<msg key="Seconds">Segundos</msg>
<msg key="seconds">segundos</msg>
<msg key="Seconds_must_be_between_0_and_59">Os segundos deben estar comprendidos entre 0 e 59</msg>
<msg key="Sort_order">Orde de clasificacin</msg>
<msg key="Spellcheck">Correcin ortogrfica</msg>
<msg key="Table">Tboa</msg>
<msg key="Tag_handler_invalid_number_of_args">Nmero incorrecto de argumentos para o xestor de etiquetas</msg>
<msg key="Template_parser_error_in_parameter_list">Erro na lista de parmetros</msg>
<msg key="Year">Ano</msg>
<msg key="year">ano</msg>
<msg key="Year_must_be_positive">O ano debe ser un nmero positivo</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.3.0d1" locale="hi_IN" charset="utf-8">
<msg key="12-Hour">१२-घन्टा </msg>
<msg key="24-Hour">२४-घन्टा </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">अमान्य 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">ना कोई %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.2.3" locale="nl_ZA" charset="ISO-8859-1">
<msg key="12-Hour">12-uur</msg>
<msg key="24-Hour">24-uur</msg>
<msg key="CSV">CSV</msg>
<msg key="data">gegewens</msg>
<msg key="Day">Dag</msg>
<msg key="day">dag</msg>
<msg key="Element_is_required">%label% is verplig</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 een karakter te lang.</msg>
<msg key="Formats">Indelinge</msg>
<msg key="hours">ure</msg>
<msg key="Hours_must_be_between_0_and_23">Uren moet tussen 0 en 23 l.</msg>
<msg key="HTMLArea_action_cancel">Kanseleer</msg>
<msg key="HTMLArea_ImageAlignment">Uitlyning</msg>
<msg key="HTMLArea_ImageAlignmentBottom">Bodem</msg>
<msg key="HTMLArea_ImageAlignmentLeft">Lyn links uit</msg>
<msg key="HTMLArea_ImageAlignmentMiddle">Midden</msg>
<msg key="HTMLArea_ImageAlignmentRight">Lijn regs uit</msg>
<msg key="HTMLArea_ImageAlignmentTop">Bokant</msg>
<msg key="HTMLArea_ImageAlternateText">Alternatiewe teks vir beeld</msg>
<msg key="HTMLArea_ImageAlternateTextToolTip">Geef alternatiewe teks voor beeld</msg>
<msg key="HTMLArea_ImageBorderSize">Rand</msg>
<msg key="HTMLArea_ImageBorderSizeToolTip">Randbreedte</msg>
<msg key="HTMLArea_ImageSpacing">Afbeeldingsmarges</msg>
<msg key="HTMLArea_ImageSpacingHorizontal">Horisontaal</msg>
<msg key="HTMLArea_ImageSpacingHorizontalToolTip">Horisontale marge</msg>
<msg key="HTMLArea_ImageSpacingVertical">Vertikaal</msg>
<msg key="HTMLArea_ImageSpacingVerticalToolTip">Vertikale marge</msg>
<msg key="HTMLArea_ImageURL">URL</msg>
<msg key="HTMLArea_ImageURLToolTip">Beeld-URL</msg>
<msg key="HTMLArea_InsertImageTitle">Voeg beeld in</msg>
<msg key="HTMLArea_InsertModifyLink">Voeg in of wysig skakel</msg>
<msg key="HTMLArea_NoAltText">Geen alternatiewe teks opgegeef nie. Voer daar asstublief een in om die toegangklikheid te vergroot.</msg>
<msg key="HTMLArea_NoURL">Geen URL vir beeld opgegeef nie.</msg>
<msg key="HTMLArea_OpenFileStorage">Open map</msg>
<msg key="HTMLArea_SelectFile">Selekteer assublief 'n ler</msg>
<msg key="HTMLArea_SelectFileTitle">Selekteer ler</msg>
<msg key="HTMLArea_SelectFileUploadTitle">Laai ler op</msg>
<msg key="HTMLArea_SelectImage">Selekteer assublief 'n beeld</msg>
<msg key="HTMLArea_SelectImageNothingSelected">Niets geselekteer</msg>
<msg key="HTMLArea_SelectImagePreview">Voorskou</msg>
<msg key="HTMLArea_SelectImageTitle">Selekteer beeld</msg>
<msg key="HTMLArea_SelectImageUploadNoImage">Selekteer beeld of ler om op te laai</msg>
<msg key="HTMLArea_SelectImageUploadTitle">Laai beeld op</msg>
<msg key="HTMLArea_SelectUploadBtn">Laai op</msg>
<msg key="HTMLArea_SpecifyUploadFilename">Geef 'n ler op om op te laai</msg>
<msg key="Invalid_choice">Ongeldige keus</msg>
<msg key="Invalid_currency">Ongeldige valuta</msg>
<msg key="Invalid_decimal_number">Ongeldig desimaal getal</msg>
<msg key="Invalid_email_format">Ongeldig e-posformaat</msg>
<msg key="Invalid_filename">Ongeldige lernaam</msg>
<msg key="Invalid_integer">Ongeldig geheel getal</msg>
<msg key="Invalid_keyword">Ongeldig sleutelwoord</msg>
<msg key="Invalid_natural_number">Ongeldig natuurlike getal</msg>
<msg key="Invalid_url">Ongeldige url</msg>
<msg key="lt_Checkuncheck_all_rows">Selekteer/deselekteer alle rye</msg>
<msg key="lt_Checkuncheck_this_row">Selekteer/deselekteer hierdie ry en kies hieronder 'n aksie om uit te voer</msg>
<msg key="lt_Dates_must_be_formatted_">Datum moet ingegeef word volgens: %format</msg>
<msg key="lt_day_between_for_month_pretty">Die dag moet tussen 1 en %maxdays% l vir die maand %month_pretty%. </msg>
<msg key="lt_No_value_supplied_for_-field_pretty-">Geen waarde opgegeef nie vir %field_pretty% </msg>
<msg key="lt_The_-field_pretty-_must_be_non_negative">Die %field_pretty% moet 'n nie-negatiewe integer wees.</msg>
<msg key="lt_When_specifying_a_non">Indien u 'n page_size ongelyk aan nul opgeef, dan moet u ook page_query of page_query_name opgeef</msg>
<msg key="Meridian">Meridiaan</msg>
<msg key="Minutes">Minute</msg>
<msg key="minutes">minute</msg>
<msg key="Minutes_must_be_between_0_and_59">Minuten moet l tussen 0 en 59.</msg>
<msg key="Month">Maand</msg>
<msg key="month">maand</msg>
<msg key="Month_must_be_between_1_and_12">Maand moet l tussen 1 en 12</msg>
<msg key="Next_with_arrow">Volgende &gt;&gt;</msg>
<msg key="No_row_pretty_plural">Geen %row_pretty_plural% beskikbaar nie</msg>
<msg key="Page">Bladsy</msg>
<msg key="Page_Size">Bladsygrootte</msg>
<msg key="Previous_with_arrow">&lt;&lt; Vorige</msg>
<msg key="required">verplig</msg>
<msg key="Seconds">Seconde</msg>
<msg key="seconds">sekondes</msg>
<msg key="Seconds_must_be_between_0_and_59">Secondes moet l tussen 0 en 59</msg>
<msg key="Sort_order">Sortering</msg>
<msg key="Spellcheck">Speltoetsing</msg>
<msg key="Table">Tabel</msg>
<msg key="Tag_handler_invalid_number_of_args">Ongeldige aantal argumente meegegeef aan die afhandelingsroetine vir hierdie tag.</msg>
<msg key="Template_parser_error_in_parameter_list">Fout in parameterlys</msg>
<msg key="Year">Jaar</msg>
<msg key="year">jaar</msg>
<msg key="Year_must_be_positive">Jaar moet positief wees</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.3.0d1" locale="pa_IN" charset="utf-8">
<msg key="No_row_pretty_plural">%row_pretty_plural% ਨਹੀਂ</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.3.0d1" locale="ru_RU" 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">След. &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="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.3.0d1" locale="sh_HR" charset="utf-8">
<msg key="required">obavezno polje</msg>
</message_catalog>
<?xml version="1.0" encoding="utf-8"?>
<message_catalog package_key="acs-templating" package_version="5.3.0d1" locale="tr_TR" charset="utf-8">
<msg key="12-Hour">12 Saat</msg>
<msg key="24-Hour">24 Saat</msg>
<msg key="Day">Gun</msg>
<msg key="Element_is_required">%label% gerekli</msg>
<msg key="Element_is_too_long_Plural">%label% etiketindeki %excess_no_bytes% karakteri cok uzun.</msg>
<msg key="Element_is_too_long_Singular">%label% etiketinde uzun bir karakter var.</msg>
<msg key="Formats">Bicimler</msg>
<msg key="Invalid_choice">Gecersiz secim</msg>
<msg key="Invalid_currency">Gecersiz para birimi</msg>
<msg key="Invalid_decimal_number">Gecersiz ondalik sayi</msg>
<msg key="Invalid_email_format">Gecersiz e-posta bicimi</msg>
<msg key="Invalid_filename">Gecersiz dosya adi.</msg>
<msg key="Invalid_integer">Gecersiz tam sayi</msg>
<msg key="Invalid_keyword">Gecersiz anahtar kelime</msg>
<msg key="Invalid_natural_number">Gecersiz dogal sayi</msg>
<msg key="Invalid_url">Gecersiz url</msg>
<msg key="Meridian">Meridyen</msg>
<msg key="Minutes">Dakikalar</msg>
<msg key="Month">Ay</msg>
<msg key="Next_with_arrow">Sonraki &gt;&gt;</msg>
<msg key="No_row_pretty_plural">%row_pretty_plural% yok</msg>
<msg key="Previous_with_arrow">&lt;&lt; Onceki</msg>
<msg key="required">Gerekli</msg>
<msg key="Seconds">Saniyeler</msg>
<msg key="Sort_order">Siraya koy</msg>
<msg key="Spellcheck">Yazim kontrolu</msg>
<msg key="Tag_handler_invalid_number_of_args">Konunun etiket isaretindeki sayi gecersiz</msg>
<msg key="Template_parser_error_in_parameter_list">Parametre listesinde hata</msg>
<msg key="Year">Yil</msg>
</message_catalog>
<!-- Form elements -->
<multiple name=elements>
<if @elements.section@ not nil>
<fieldset>
<legend>@elements.section@</legend>
</if>
<group column="section">
<if @elements.widget@ eq "hidden">
<noparse><formwidget id="@elements.id@"></noparse>
</if>
<else>
<br/>
<if @elements.widget@ eq "submit">
<span class="form-element">
<group column="widget">
<noparse><formwidget id="@elements.id@"></noparse>
</group>
<br/>
<br/>
</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>
<label for="@elements.id@">
@elements.label;noquote@
</label>
<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@
<label for="@elements.form_id@:elements:@elements.id@:\@formgroup.option@">
\@formgroup.label;noquote@
</label>
</formgroup>
</noparse>
</if>
<else>
<noparse>
<formwidget id="@elements.id@">
</noparse>
</else>
<noparse>
<formerror id="@elements.id@">
<br />
\@formerror.@elements.id@;noquote\@
</formerror>
</noparse>
<if @elements.help_text@ not nil>
<p class="form-help-text">
<noparse>
<formhelp id="@elements.id@">
</noparse>
</p>
</if>
</span>
</else>
</else>
</group>
<if @elements.section@ not nil>
</fieldset>
</if>
</multiple>
<multiple name="filters">
<if @filters.filter_name@ ne "groupby" and @filters.filter_name@ ne
"orderby">
<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>
</if>
</multiple>
This diff is collapsed.
<formtemplate id="list-filters-@name@"></formtemplate>
<formtemplate id="list-filter-add-@name@" style="inline"></formtemplate>
<%
set first_p 1
%>
<multiple name="filters">
<group column="filter_name">
<if @filters.selected_p@ and @filters.filter_name@ ne "groupby">
<if @filters.rownum@ eq 1>, </if><else><b>Filtered by:</b> <% set first_p 0 %></else>@filters.filter_label@: @filters.label@ <if @filters.filter_clear_url@ not nil>
<super>[<a href="@filters.filter_clear_url@" title="Clear the currently selected @filters.filter_label@">x</a>]</super>
</if>
</if>
</group>
</multiple>
\ No newline at end of file
<%
# @author Miguel Marin (miguelmarin@viaro.net)
# @author Viaro Networks www.viaro.net
# @creation-date 2005-08-16
#
# Displays all filters as a select box to save space, also
# has a javascript to manage filters that are of type multival
#
# USAGE:
# <listfilters name="list_name" style="select-menu"></listfilters>
# <listtemplate name="list_name"></listtemplate>
#
#
# NOTE: to use the multival filter you need to specify it in the
# template::list::create in the filters section like this:
#
# -filters {
# filter_name {
# label "Filter Label"
# type multival
# values { {first_value 1 } {second_value 2} }
# where_clause { filter_where_cluse }
# }
# }
# - The recieving page variable must be of the type :multiple
# since the filter sends the values in the following way:
# filter_name=filter_value&filter_name=filter_value&....&extra_variables=extra_values
%>
<SCRIPT>
function getSelectedValues (select_name, filter_url, filter_name) {
var r = new Array();
url = getPageURL(filter_url);
extra_vars = getExtraVars( filter_name, filter_url);
// We get all the values of the selected options for the filter
// using the filter name.
for (var i = 0; i < select_name.options.length; i++)
if (select_name.options[i].selected) {
// Since the filter values is the whole url then we need to split it
var value_array = (select_name.options[i].value).split(filter_name+'=');
if ( (value_array[1]).search('&') == -1 )
{
// The variables part has only the filter value
r[r.length] = value_array[1];
}
else
{
// The variables part has more variables so we
// split to get only the filter value
filter_array = (value_array[1]).split('&');
r[r.length] = filter_array[0];
}
}
if (extra_vars.length > 0 ) {
// There are extra variables, so we send then using along wiht the filter value
return (url+'?'+filter_name+'='+r.join('&'+filter_name+'=')+'&'+extra_vars);
}
else
{
// Just send the filter value
return (url+'?'+filter_name+'='+r.join('&'+filter_name+'='));
}
}
function getExtraVars (filter_name, filter_url) {
var r = new Array();
// Take the variables of the url only
url_array = filter_url.split("?");
variables = url_array[1];
// Split all variables by "&"
var_array = variables.split("&");
// We store only the varaibles that are not equal to
// the filter name
for ( var i = 0; i < var_array.length; i++)
if ( var_array[i].search(filter_name) == -1)
r[r.length] = var_array[i];
// We return the variables joined by "&"
return r.join("&");
}
function getPageURL (filter_url) {
// Get the part of the location of the url
var filter_array = filter_url.split("?");
var url = filter_array[0];
return url;
}
</SCRIPT>
<table border="0">
<tr>
<multiple name="filters">
<td valign="top">
<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>
<tr>
<td>
<if @filters.type@ eq "multival">
<select name="@filters.filter_label@" onchange="window.location = getSelectedValues(this,'@filters.url@','@filters.filter_name@')" multiple size="3">
</if>
<else>
<select name="@filters.filter_label@" onchange="window.location = this.options[this.selectedIndex].value">
</else>
<if @filters.filter_clear_url@ nil>
<option value="#">- - - - -</option>
</if>
<group column="filter_name">
<if @filters.selected_p@ true>
<option value="@filters.url@" selected>
@filters.label@
</option>
</if>
<else>
<option value="@filters.url@">
@filters.label@
</option>
</else>
</group>
</select>
</td>
</tr>
</table>
</td>
</multiple>
</tr>
</table>
--
-- packages/notes/sql/notes-create.sql
--
-- @author rhs@mit.edu
-- @creation-date 2000-10-22
-- @cvs-id $Id$
--
begin
acs_object_type.create_type (
supertype => 'acs_object',
object_type => 'template_demo_note',
pretty_name => 'Template Demo Note',
pretty_plural => 'Template Demo Notes',
table_name => 'template_demo_notes',
id_column => 'template_demo_note_id',
name_method => 'template_demo_note.name'
);
end;
/
show errors;
declare
attr_id acs_attributes.attribute_id%TYPE;
begin
attr_id := acs_attribute.create_attribute (
object_type => 'template_demo_note',
attribute_name => 'title',
pretty_name => 'Title',
pretty_plural => 'Titles',
datatype => 'string'
);
attr_id := acs_attribute.create_attribute (
object_type => 'template_demo_note',
attribute_name => 'body',
pretty_name => 'Body',
pretty_plural => 'Bodies',
datatype => 'string'
);
attr_id := acs_attribute.create_attribute (
object_type => 'template_demo_note',
attribute_name => 'color',
pretty_name => 'Color',
pretty_plural => 'Colors',
datatype => 'string'
);
end;
/
show errors;
create table template_demo_notes (
template_demo_note_id integer
references acs_objects(object_id)
primary key,
title varchar(255)
not null,
body varchar(4000),
color varchar(100)
);
create or replace package template_demo_note
as
function new (
template_demo_note_id in template_demo_notes.template_demo_note_id%TYPE default null,
title in template_demo_notes.title%TYPE,
body in template_demo_notes.body%TYPE,
color in template_demo_notes.color%TYPE,
object_type in acs_object_types.object_type%TYPE
default 'template_demo_note',
creation_date in acs_objects.creation_date%TYPE
default sysdate,
creation_user in acs_objects.creation_user%TYPE
default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
context_id in acs_objects.context_id%TYPE default null
) return template_demo_notes.template_demo_note_id%TYPE;
procedure del (
template_demo_note_id in template_demo_notes.template_demo_note_id%TYPE
);
function name (
template_demo_note_id in template_demo_notes.template_demo_note_id%TYPE
) return template_demo_notes.title%TYPE;
end template_demo_note;
/
show errors
create or replace package body template_demo_note
as
function new (
template_demo_note_id in template_demo_notes.template_demo_note_id%TYPE default null,
title in template_demo_notes.title%TYPE,
body in template_demo_notes.body%TYPE,
color in template_demo_notes.color%TYPE,
object_type in acs_object_types.object_type%TYPE
default 'template_demo_note',
creation_date in acs_objects.creation_date%TYPE
default sysdate,
creation_user in acs_objects.creation_user%TYPE
default null,
creation_ip in acs_objects.creation_ip%TYPE default null,
context_id in acs_objects.context_id%TYPE default null
) return template_demo_notes.template_demo_note_id%TYPE
is
v_template_demo_note_id integer;
begin
v_template_demo_note_id := acs_object.new (
object_id => template_demo_note_id,
object_type => object_type,
creation_date => creation_date,
creation_user => creation_user,
creation_ip => creation_ip,
context_id => context_id
);
insert into template_demo_notes
(template_demo_note_id, title, body, color)
values
(v_template_demo_note_id, title, body, color);
acs_permission.grant_permission(
object_id => v_template_demo_note_id,
grantee_id => creation_user,
privilege => 'admin'
);
return v_template_demo_note_id;
end new;
procedure del (
template_demo_note_id in template_demo_notes.template_demo_note_id%TYPE
)
is
begin
delete from acs_permissions
where object_id = template_demo_note.del.template_demo_note_id;
delete from template_demo_notes
where template_demo_note_id = template_demo_note.del.template_demo_note_id;
acs_object.del(template_demo_note_id);
end del;
function name (
template_demo_note_id in template_demo_notes.template_demo_note_id%TYPE
) return template_demo_notes.title%TYPE
is
v_template_demo_note_name template_demo_notes.title%TYPE;
begin
select title into v_template_demo_note_name
from template_demo_notes
where template_demo_note_id = name.template_demo_note_id;
return v_template_demo_note_name;
end name;
end template_demo_note;
/
show errors;
drop package template_demo_note;
drop table template_demo_notes;
execute acs_object_type.drop_type('template_demo_note');
show errors
declare
security_context_root acs_objects.object_id%TYPE;
default_context acs_objects.object_id%TYPE;
registered_users acs_objects.object_id%TYPE;
unregistered_visitor acs_objects.object_id%TYPE;
owning_party acs_objects.object_id%TYPE;
context acs_objects.object_id%TYPE;
dummy_var acs_objects.object_id%TYPE;
begin
security_context_root := acs.magic_object_id('security_context_root');
default_context := acs.magic_object_id('default_context');
registered_users := acs.magic_object_id('registered_users');
unregistered_visitor := acs.magic_object_id('unregistered_visitor');
context := default_context;
owning_party := unregistered_visitor;
dummy_var := template_demo_note.new
(
NULL,
'title01',
'body01',
'red',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title02',
'body02',
'blue',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title03',
'body03',
'green',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title04',
'body04',
'orange',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title05',
'body05',
'purple',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title06',
'body06',
'red',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title07',
'body07',
'blue',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title08',
'body08',
'green',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title09',
'body09',
'orange',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title10',
'body10',
'purple',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title11',
'body11',
'red',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title12',
'body12',
'blue',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title13',
'body13',
'green',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title14',
'body14',
'orange',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title15',
'body15',
'purple',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title16',
'body16',
'red',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title17',
'body17',
'blue',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title18',
'body18',
'green',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title19',
'body19',
'orange',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
dummy_var := template_demo_note.new
(
NULL,
'title20',
'body20',
'purple',
'template_demo_note',
sysdate,
owning_party,
NULL,
context
);
-- return context;
end;
/
show errors;
--
-- packages/notes/sql/notes-create.sql
--
-- @author rhs@mit.edu
-- @creation-date 2000-10-22
-- @cvs-id $Id$
--
-- openacs port: vinod kurup vkurup@massmed.org
--
create function inline_0 ()
returns integer as '
begin
PERFORM acs_object_type__create_type (
''template_demo_note'', -- object_type
''Template Demo Note'', -- pretty_name
''Template Demo Notes'', -- pretty_plural
''acs_object'', -- supertype
''template_demo_notes'', -- table_name
''template_demo_note_id'', -- id_column
null, -- package_name
''f'', -- abstract_p
null, -- type_extension_table
''template_demo_note.name'' -- name_method
);
return 0;
end;' language 'plpgsql';
select inline_0 ();
drop function inline_0 ();
create function inline_1 ()
returns integer as '
begin
PERFORM acs_attribute__create_attribute (
''template_demo_note'', -- object_type
''title'', -- attribute_name
''string'', -- datatype
''Title'', -- pretty_name
''Titles'', -- pretty_plural
null, -- table_name
null, -- column_name
null, -- default_value
1, -- min_n_values
1, -- max_n_values
null, -- sort_order
''type_specific'', -- storage
''f'' -- static_p
);
PERFORM acs_attribute__create_attribute (
''template_demo_note'', -- object_type
''body'', -- attribute_name
''string'', -- datatype
''Body'', -- pretty_name
''Bodies'', -- pretty_plural
null, -- table_name
null, -- column_name
null, -- default_value
1, -- min_n_values
1, -- max_n_values
null, -- sort_order
''type_specific'', -- storage
''f'' -- static_p
);
PERFORM acs_attribute__create_attribute (
''template_demo_note'', -- object_type
''color'', -- attribute_name
''string'', -- datatype
''Color'', -- pretty_name
''Colors'', -- pretty_plural
null, -- table_name
null, -- column_name
null, -- default_value
1, -- min_n_values
1, -- max_n_values
null, -- sort_order
''type_specific'', -- storage
''f'' -- static_p
);
return 0;
end;' language 'plpgsql';
select inline_1 ();
drop function inline_1 ();
create table template_demo_notes (
template_demo_note_id
integer
constraint template_demo_notes_note_id_fk
references acs_objects(object_id)
constraint template_demo_notes_note_id_pk
primary key,
title varchar(255)
constraint template_demo_notes_title_nn
not null,
body text,
color text
);
select define_function_args('template_demo_note__new','template_demo_note_id,title,body,color,object_type;template_demo_note,creation_date;now,creation_user,creation_ip,context_id');
create function template_demo_note__new (integer,varchar,varchar,varchar,varchar,timestamptz,integer,varchar,integer)
returns integer as '
declare
p_template_demo_note_id alias for $1; -- default null
p_title alias for $2;
p_body alias for $3;
p_color alias for $4;
p_object_type alias for $5; -- default ''template_demo_note''
p_creation_date alias for $6; -- default now()
p_creation_user alias for $7; -- default null
p_creation_ip alias for $8; -- default null
p_context_id alias for $9; -- default null
v_template_demo_note_id template_demo_notes.template_demo_note_id%TYPE;
begin
v_template_demo_note_id := acs_object__new (
p_template_demo_note_id,
p_object_type,
p_creation_date,
p_creation_user,
p_creation_ip,
p_context_id
);
insert into template_demo_notes
(template_demo_note_id, title, body, color)
values
(v_template_demo_note_id, p_title, p_body, p_color);
if p_creation_user is not null then
PERFORM acs_permission__grant_permission(
v_template_demo_note_id,
p_creation_user,
''admin''
);
end if;
return v_template_demo_note_id;
end;' language 'plpgsql';
select define_function_args('template_demo_note__del','template_demo_note_id');
create function template_demo_note__del (integer)
returns integer as '
declare
p_template_demo_note_id alias for $1;
begin
delete from acs_permissions
where object_id = p_template_demo_note_id;
delete from template_demo_notes
where template_demo_note_id = p_template_demo_note_id;
raise NOTICE ''Deleting note...'';
PERFORM acs_object__delete(p_template_demo_note_id);
return 0;
end;' language 'plpgsql';
create function template_demo_note__name (integer)
returns varchar as '
declare
p_template_demo_note_id alias for $1;
v_template_demo_note_name template_demo_notes.title%TYPE;
begin
select title into v_template_demo_note_name
from template_demo_notes
where template_demo_note_id = p_template_demo_note_id;
return v_template_demo_note_name;
end;
' language 'plpgsql';
-- neophytosd
-- template-demo-notes
-- drop script
-- Vinod Kurup, vkurup@massmed.org
--
-- neophytosd
--drop functions
drop function template_demo_note__new (integer,varchar,varchar,varchar,varchar,timestamptz,integer,varchar,integer);
drop function template_demo_note__del(integer);
drop function template_demo_note__name (integer);
--drop permissions
delete from acs_permissions where object_id in (select template_demo_note_id from template_demo_notes);
--drop objects
create function inline_0 ()
returns integer as '
declare
object_rec record;
begin
for object_rec in select object_id from acs_objects where object_type=''template_demo_note''
loop
perform acs_object__delete( object_rec.object_id );
end loop;
return 0;
end;' language 'plpgsql';
select inline_0();
drop function inline_0();
--drop table
drop table template_demo_notes;
--drop attributes
select acs_attribute__drop_attribute (
'template_demo_note',
'TITLE'
);
select acs_attribute__drop_attribute (
'template_demo_note',
'BODY'
);
--drop type
select acs_object_type__drop_type(
'template_demo_note',
't'
);
create function template__make_sample_data() returns integer
as
'
declare
security_context_root int4;
default_context int4;
registered_users int4;
unregistered_visitor int4;
owning_party int4;
context int4;
begin
security_context_root := acs__magic_object_id(''security_context_root'');
default_context := acs__magic_object_id(''default_context'');
registered_users := acs__magic_object_id(''registered_users'');
unregistered_visitor := acs__magic_object_id(''unregistered_visitor'');
context := default_context;
owning_party := unregistered_visitor;
perform template_demo_note__new
(
NULL,
''title01'',
''body01'',
''red'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title02'',
''body02'',
''blue'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title03'',
''body03'',
''green'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title04'',
''body04'',
''orange'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title05'',
''body05'',
''purple'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title06'',
''body06'',
''red'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title07'',
''body07'',
''blue'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title08'',
''body08'',
''green'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title09'',
''body09'',
''orange'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title10'',
''body10'',
''purple'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title11'',
''body11'',
''red'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title12'',
''body12'',
''blue'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title13'',
''body13'',
''green'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title14'',
''body14'',
''orange'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title15'',
''body15'',
''purple'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title16'',
''body16'',
''red'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title17'',
''body17'',
''blue'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title18'',
''body18'',
''green'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title19'',
''body19'',
''orange'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
perform template_demo_note__new
(
NULL,
''title20'',
''body20'',
''purple'',
''template_demo_note'',
now(),
owning_party,
NULL,
context
);
return context;
end;
'
language 'plpgsql';
select template__make_sample_data();
drop function template__make_sample_data();
#
ad_library {
Test date procs
@author Dave Bauer (dave@thedesignexperience.org)
@creation-date 2005-10-13
@arch-tag: b5d458b6-bd22-4b87-8c4e-6a8c23fcca9e
@cvs-id $Id$
}
aa_register_case sql_date {
test sql date transform
} {
aa_run_with_teardown \
-test_code {
set date [template::util::date::now]
set sql_date [template::util::date::get_property sql_date $date]
if {[string equal [db_type] "oracle"] && [string match "8.*" [db_version]]} {
aa_true "to_date for Oracle 8i" [string match "to_date*"]
} else {
aa_true "to_timestamp for Oracle 9i and PostgreSQL" [string match "to_timestamp*" $sql_date]
}
}
}
\ No newline at end of file
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select n.template_demo_note_id,
n.title,
n.body,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'write'),
't', 1,
'f', 0) as write_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'admin'),
't', 1,
'f', 0) as admin_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'delete'),
't', 1,
'f', 0) as delete_p
from template_demo_notes n, acs_objects o
where n.template_demo_note_id = o.object_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = n.template_demo_note_id
and party_id = :user_id
and privilege = 'read')
order by creation_date
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select
n.template_demo_note_id,
n.title
from template_demo_notes n, acs_objects o
where n.template_demo_note_id = o.object_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
</querytext>
</fullquery>
</queryset>
<master>
<listtemplate name="notes"></listtemplate>
# main index page for notes.
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} -properties {
notes:multirow
}
set package_id [ad_conn package_id]
set user_id [ad_conn user_id]
db_multirow template_demo_notes template_demo_notes {}
template::list::create -name notes \
-multirow template_demo_notes \
-elements {
title {
label "Title of Note"
}
}
ad_return_template
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select n.template_demo_note_id,
n.title,
n.body,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'write'),
't', 1,
'f', 0) as write_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'admin'),
't', 1,
'f', 0) as admin_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'delete'),
't', 1,
'f', 0) as delete_p
from template_demo_notes n, acs_objects o
where n.template_demo_note_id = o.object_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = n.template_demo_note_id
and party_id = :user_id
and privilege = 'read')
order by creation_date
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select
n.template_demo_note_id,
n.title
from template_demo_notes n, acs_objects o
where n.template_demo_note_id = o.object_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
</querytext>
</fullquery>
</queryset>
<listtemplate name="notes"></listtemplate>
# main index page for notes.
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} -properties {
notes:multirow
}
set package_id [ad_conn package_id]
set user_id [ad_conn user_id]
db_multirow template_demo_notes template_demo_notes {}
template::list::create -name notes \
-multirow template_demo_notes \
-elements {
title {
label "Title of Note"
}
}
ad_return_template
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select
n.template_demo_note_id,
n.title,
n.color,
to_char(o.creation_date, 'HH12:MI Month DD, YYYY') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name,
decode(acs_permission.permission_p(template_demo_note_id,
:user_id,
'write'),
't', 1,
'f', 0) as write_p,
decode(acs_permission.permission_p(template_demo_note_id,
:user_id,
'admin'),
't', 1,
'f', 0) as admin_p,
decode(acs_permission.permission_p(template_demo_note_id,
:user_id,
'delete'),
't', 1,
'f', 0) as delete_p
from
template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
order by creation_date
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select
n.template_demo_note_id,
n.title,
n.color,
to_char(o.creation_date, 'HH12:MI Month DD, YYYY') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name
from
template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
</querytext>
</fullquery>
</queryset>
<master>
<listtemplate name="notes"></listtemplate>
# main index page for notes.
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} -properties {
notes:multirow
}
set package_id [ad_conn package_id]
set user_id [ad_conn user_id]
db_multirow template_demo_notes template_demo_notes {}
# don't worry too much if you don't understand the query's details;
# the point here is several columns can be displayed.
#
# Look at the query; notice how you can have a complex expression
# come in as any name (like for creation_user_name and creation_date)
# using "<expression> as <name>"
template::list::create -name notes \
-multirow template_demo_notes \
-elements {
title {
label "Title of Note"
}
creation_user_name {
label "Owner of Note"
}
creation_date {
label "When Note Created"
}
color {
label "Color"
}
}
ad_return_template
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select n.template_demo_note_id,
n.title,
n.body,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'write'),
't', 1,
'f', 0) as write_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'admin'),
't', 1,
'f', 0) as admin_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'delete'),
't', 1,
'f', 0) as delete_p
from template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select
n.template_demo_note_id,
n.title,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name
from
template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<master>
<property name="title">Notes</property>
<property name="context">@context;noquote@</property>
<listtemplate name="notes"></listtemplate>
# main index page for notes.
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} -query {
orderby:optional
} -properties {
notes:multirow
context:onevalue
create_p:onevalue
}
set package_id [ad_conn package_id]
set user_id [ad_conn user_id]
set context [list]
set create_p [ad_permission_p $package_id create]
template::list::create -name notes \
-multirow template_demo_notes \
-elements {
title {
label "Title of Note"
}
creation_user_name {
label "Owner of Note"
}
creation_date {
label "When Note Created"
}
color {
label "Color"
}
} \
-orderby {
default_value title,asc
title {
label "Title of Note"
orderby n.title
}
creation_user_name {
label "Owner of Note"
orderby creation_user_name
}
creation_date {
label "When Note Created"
orderby o.creation_date
}
color {
label "Color"
orderby n.color
}
}
db_multirow template_demo_notes template_demo_notes {}
ad_return_template
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select n.template_demo_note_id,
n.title,
n.body,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'write'),
't', 1,
'f', 0) as write_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'admin'),
't', 1,
'f', 0) as admin_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'delete'),
't', 1,
'f', 0) as delete_p
from template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select
n.template_demo_note_id,
n.title,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name
from
template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<master>
<property name="title">Notes</property>
<property name="context">@context;noquote@</property>
<listtemplate name="notes"></listtemplate>
# main index page for notes.
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} -query {
orderby:optional
} -properties {
notes:multirow
context:onevalue
create_p:onevalue
}
set package_id [ad_conn package_id]
set user_id [ad_conn user_id]
set context [list]
set create_p [ad_permission_p $package_id create]
# Here, we are adding a link for every row. The title of the note
# will become a link to a page that will view the note in its entirety.
#
# Notice in the title element of this, where we add "link_url_col view_url"
template::list::create -name notes \
-multirow template_demo_notes \
-elements {
title {
label "Title of Note"
link_url_col view_url
}
creation_user_name {
label "Owner of Note"
}
creation_date {
label "When Note Created"
}
color {
label "Color"
}
} \
-orderby {
default_value title,asc
title {
label "Title of Note"
orderby n.title
}
creation_user_name {
label "User"
orderby creation_user_name
}
creation_date {
label "Date"
orderby o.creation_date
}
color {
label "Color"
orderby n.color
}
}
# how to get the variable per row, which will be the link target?
#
# first, we extend the multirow so that it contains an additional
# column (other than the columns in the select list from the query).
#
# The name of that column is view_url, and we're using export_vars
# to actually form the value. This invocation of db_multirow has an
# extra parameter at the end, which is a block of code to execute.
# In this block, we set the extra column variable we told it about
# with the -extend {} parameter.
#
# This variable will then be available to anything that reads the
# multirow, which for this case is the template::list::create call
# above.
db_multirow -extend { view_url } template_demo_notes template_demo_notes {} {
set view_url [export_vars -base view-one { template_demo_note_id }]
}
ad_return_template
<master>
<property name="title">@title;noquote@</property>
<property name="context">@context;noquote@</property>
@body;noquote@<br>
@color@
\ No newline at end of file
ad_page_contract {
@author Neophytos Demetriou <k2pts@yahoo.com>
@creation-date 2001-09-02
} {
template_demo_note_id:integer,notnull
} -properties {
context:onevalue
title:onevalue
body:onevalue
}
set context [list "One note"]
db_1row note_select {
select title, body, color
from template_demo_notes
where template_demo_note_id = :template_demo_note_id
}
set body [ad_text_to_html -- $body]
ad_return_template
<master>
<property name="title">@page_title@</property>
<property name="context">@context;noquote@</property>
<formtemplate id="add-edit"></formtemplate>
# packages/notes/www/add-edit.tcl
ad_page_contract {
@author Don Baccus (dhogaza@pacifier.com)
@creation-date 2000-10-23
@cvs-id $Id$
Example script that allows for the creation or editing of a simple note
object type, using ad_form and package Tcl API tools.
} -query {
note_id:integer,notnull,optional
} -properties {
context:onevalue
page_title:onevalue
}
# When using ad_form to generate or edit acs_objects, the object type's
# key column must be specified in ad_page_contract as is done above,
# and defined with the type "key" in ad_form. This enables the use of
# the various request and submission code blocks.
set package_id [ad_conn package_id]
ad_form -form {
# The "note" object type's key
note_id:key
# "title" is of type text and will use a "text" widget.
{title:text \
{label Title}
{html {size 20}}
}
# "body" is of type text and will use a "textarea" widget.
{body:text(textarea) \
{label Body}
{html {rows 10 cols 40 wrap soft}}
}
} -new_request {
# By convention packages only allow a user to create new objects if the user has
# the "create" privilege on the package instance itself.
permission::require_permission -object_id $package_id -privilege create
# Customize the page title to reflect the fact that this form is used to
# create a new note.
set page_title "New Note"
} -edit_request {
permission::require_permission -object_id $note_id -privilege write
# Customize the page title to reflect the fact that this form is used to
# edit an existing note.
set page_title "Edit Note"
# Fill the form with the values from the note we're editing.
db_1row note_select {}
} -on_validation_error {
# There was an error in the form, let the page title reflect this.
set page_title "Error in submission"
} -new_data {
# Create a new note.
# Generate the new object automatically from the data set in the form. Standard
# acs_object attributes like creation_user are set automatically.
package_instantiate_object -var_list [list [list context_id $package_id]] \
-form_id add-edit \
note
} -edit_data {
# Currently we need to update our object manually ...
set modifying_user [ad_conn user_id]
set modifying_ip [ad_conn peeraddr]
db_transaction {
db_dml object_update {}
db_dml note_update {}
}
} -after_submit {
# We've successfully processed the submission, send the user back to the index page.
ad_returnredirect "./"
# ad_returnredirect returns after redirecting the user, so abort the script rather
# than fall through to the display code. Failure to abort the script will burden
# your server with needless template processing, though the user won't notice due to
# having been redirected.
ad_script_abort
}
# The following is only executed if we did not process a valid submission, in other
# words on the initial "new" or "edit" form request or after a submission which
# contained errors. Add the page title to the breadcrumb context bar.
set context [list $page_title]
# Display the form, blank if we're processing a "new" request, filled with data if we're
# processing an "edit" request or a submitted form that contains errors.
ad_return_template
<?xml version="1.0"?>
<queryset>
<fullquery name="note_select">
<querytext>
select title, body
from notes
where note_id = :note_id
</querytext>
</fullquery>
<fullquery name="object_update">
<querytext>
update acs_objects
set modifying_user = :modifying_user,
modifying_ip = :modifying_ip
where object_id = :note_id
</querytext>
</fullquery>
<fullquery name="note_update">
<querytext>
update notes
set title = :title,
body = :body
where note_id = :note_id
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_note_delete">
<querytext>
begin
template_demo_note.del(:template_demo_note_id);
end;
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_note_delete">
<querytext>
select template_demo_note__delete( :template_demo_note_id );
</querytext>
</fullquery>
</queryset>
# packages/notes/www/delete.tcl
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} {
template_demo_note_id:integer,notnull,multiple
}
# Here, we delete all the notes being fed to us, which is all
# the notes that were checked on the index page. This page doesn't
# know/care about the fact they are the checked notes, all it knows
# is there are a bunch of template_demo_note_id values coming in
# through the url. So, this list is sorta becoming a form too :)
#
# so this loop runs thru all passed-in values of template_demo_note_id
# and for each, deletes that note.
foreach template_demo_note_id $template_demo_note_id {
ad_require_permission $template_demo_note_id delete
package_exec_plsql \
-var_list \
[list \
[list \
template_demo_note_id \
$template_demo_note_id \
] \
] \
template_demo_note \
del
}
ad_returnredirect "./"
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select n.template_demo_note_id,
n.title,
n.body,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'write'),
't', 1,
'f', 0) as write_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'admin'),
't', 1,
'f', 0) as admin_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'delete'),
't', 1,
'f', 0) as delete_p
from template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select
n.template_demo_note_id,
n.title,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name
from
template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<master>
<property name="title">Notes</property>
<property name="context">@context;noquote@</property>
<listtemplate name="notes"></listtemplate>
# main index page for notes.
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} -query {
orderby:optional
} -properties {
notes:multirow
context:onevalue
create_p:onevalue
}
set package_id [ad_conn package_id]
set user_id [ad_conn user_id]
set context [list]
set create_p [ad_permission_p $package_id create]
# New here, is the use of -key to signify which column is the key field,
# and the -bulk_actions to give us the ability to delete all the checked
# notes at once.
template::list::create -name notes \
-multirow template_demo_notes \
-key "template_demo_note_id" \
-bulk_actions {
"Delete Checked Notes" "delete" "Delete Checked Notes"
} \
-elements {
title {
label "Title of Note"
link_url_col view_url
}
creation_user_name {
label "Owner of Note"
}
creation_date {
label "When Note Created"
}
color {
label "Color"
}
} \
-orderby {
default_value title,asc
title {
label "Title of Note"
orderby n.title
}
creation_user_name {
label "Owner of Note"
orderby creation_user_name
}
creation_date {
label "When Note Created"
orderby o.creation_date
}
color {
label "Color"
orderby n.color
}
}
db_multirow -extend { view_url } template_demo_notes template_demo_notes {} {
set view_url [export_vars -base view-one { template_demo_note_id }]
}
ad_return_template
<master>
<property name="title">@title;noquote@</property>
<property name="context">@context;noquote@</property>
@body;noquote@<br>
@color@
\ No newline at end of file
ad_page_contract {
@author Neophytos Demetriou <k2pts@yahoo.com>
@creation-date 2001-09-02
} {
template_demo_note_id:integer,notnull
} -properties {
context:onevalue
title:onevalue
body:onevalue
}
set context [list "One note"]
db_1row note_select {
select title, body, color
from template_demo_notes
where template_demo_note_id = :template_demo_note_id
}
set body [ad_text_to_html -- $body]
ad_return_template
<master>
<property name="title">@page_title@</property>
<property name="context">@context;noquote@</property>
<formtemplate id="add-edit"></formtemplate>
# packages/notes/www/add-edit.tcl
ad_page_contract {
@author Don Baccus (dhogaza@pacifier.com)
@creation-date 2000-10-23
@cvs-id $Id$
Example script that allows for the creation or editing of a simple note
object type, using ad_form and package Tcl API tools.
} -query {
template_demo_note_id:integer,notnull,optional
} -properties {
context:onevalue
page_title:onevalue
}
# When using ad_form to generate or edit acs_objects, the object type's
# key column must be specified in ad_page_contract as is done above,
# and defined with the type "key" in ad_form. This enables the use of
# the various request and submission code blocks.
set package_id [ad_conn package_id]
ad_form -form {
# The "template_demo_note" object type's key
template_demo_note_id:key
# "title" is of type text and will use a "text" widget.
{title:text \
{label Title}
{html {size 20}}
}
# "body" is of type text and will use a "textarea" widget.
{body:text(textarea) \
{label Body}
{html {rows 10 cols 40 wrap soft}}
}
# "color" is of type text, using text widget
{color:text \
{label Color}
{html {size 20}}
}
} -new_request {
# By convention packages only allow a user to create new objects if the user has
# the "create" privilege on the package instance itself.
permission::require_permission -object_id $package_id -privilege create
# Customize the page title to reflect the fact that this form is used to
# create a new note.
set page_title "New Note"
} -edit_request {
permission::require_permission -object_id $template_demo_note_id -privilege write
# Customize the page title to reflect the fact that this form is used to
# edit an existing note.
set page_title "Edit Note"
# Fill the form with the values from the note we're editing.
db_1row template_demo_note_select {}
} -on_validation_error {
# There was an error in the form, let the page title reflect this.
set page_title "Error in submission"
} -new_data {
# Create a new note.
# Generate the new object automatically from the data set in the form. Standard
# acs_object attributes like creation_user are set automatically.
package_instantiate_object \
-var_list [list [list context_id $package_id]] \
-form_id add-edit \
template_demo_note
} -edit_data {
# Currently we need to update our object manually ...
set modifying_user [ad_conn user_id]
set modifying_ip [ad_conn peeraddr]
db_transaction {
db_dml object_update {}
db_dml template_demo_note_update {}
}
} -after_submit {
# We've successfully processed the submission, send the user back to the index page.
ad_returnredirect "./"
# ad_returnredirect returns after redirecting the user, so abort the script rather
# than fall through to the display code. Failure to abort the script will burden
# your server with needless template processing, though the user won't notice due to
# having been redirected.
ad_script_abort
}
# The following is only executed if we did not process a valid submission, in other
# words on the initial "new" or "edit" form request or after a submission which
# contained errors. Add the page title to the breadcrumb context bar.
set context [list $page_title]
# Display the form, blank if we're processing a "new" request, filled with data if we're
# processing an "edit" request or a submitted form that contains errors.
ad_return_template
<?xml version="1.0"?>
<queryset>
<fullquery name="template_demo_note_select">
<querytext>
select title, body, color
from template_demo_notes
where template_demo_note_id = :template_demo_note_id
</querytext>
</fullquery>
<fullquery name="object_update">
<querytext>
update acs_objects
set modifying_user = :modifying_user,
modifying_ip = :modifying_ip
where object_id = :template_demo_note_id
</querytext>
</fullquery>
<fullquery name="template_demo_note_update">
<querytext>
update template_demo_notes
set title = :title,
body = :body
color = :color
where template_demo_note_id = :template_demo_note_id
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_note_delete">
<querytext>
begin
template_demo_note.del(:template_demo_note_id);
end;
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_note_delete">
<querytext>
select template_demo_note__delete( :template_demo_note_id );
</querytext>
</fullquery>
</queryset>
# packages/notes/www/delete.tcl
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} {
template_demo_note_id:integer,notnull,multiple
}
foreach template_demo_note_id $template_demo_note_id {
ad_require_permission $template_demo_note_id delete
package_exec_plsql -var_list [list [list template_demo_note_id $template_demo_note_id]] template_demo_note del
}
ad_returnredirect "./"
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select n.template_demo_note_id,
n.title,
n.body,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'write'),
't', 1,
'f', 0) as write_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'admin'),
't', 1,
'f', 0) as admin_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'delete'),
't', 1,
'f', 0) as delete_p
from template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select
n.template_demo_note_id,
n.title,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name
from
template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<master>
<property name="title">Notes</property>
<property name="context">@context;noquote@</property>
<listtemplate name="notes"></listtemplate>
# main index page for notes.
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} -query {
orderby:optional
} -properties {
template_demo_notes:multirow
context:onevalue
create_p:onevalue
}
set package_id [ad_conn package_id]
set user_id [ad_conn user_id]
set context [list]
set create_p [ad_permission_p $package_id create]
set actions [list]
if { $create_p } {
lappend actions "Create Note" add-edit "Create Note"
}
# notice how -bulk_actions is different inside...
# -bulk_actions { "text for button" "name of page" "tooltip text" }
# weird, huh?
#
# anyway, here we are adding an action (not bulk, so doesn't respond
# to the checkboxes) for adding a note. see the if test above? if
# the user does not have permission to create, then the actions list
# will be empty and the create-a-note button will not appear.
template::list::create -name notes \
-multirow template_demo_notes \
-key "template_demo_note_id" \
-actions $actions \
-bulk_actions {
"Delete Checked Notes" "delete" "Delete Checked Notes"
} \
-elements {
title {
label "Title of Note"
link_url_col view_url
}
creation_user_name {
label "Owner of Note"
}
creation_date {
label "When Note Created"
}
color {
label "Color"
}
} \
-orderby {
default_value title,asc
title {
label "Title of Note"
orderby n.title
}
creation_user_name {
label "Owner of Note"
orderby creation_user_name
}
creation_date {
label "When Note Created"
orderby o.creation_date
}
color {
label "Color"
orderby n.color
}
}
db_multirow -extend { view_url } template_demo_notes template_demo_notes {} {
set view_url [export_vars -base view-one { template_demo_note_id }]
}
ad_return_template
<master>
<property name="title">@title;noquote@</property>
<property name="context">@context;noquote@</property>
@body;noquote@<br>
@color@
\ No newline at end of file
ad_page_contract {
@author Neophytos Demetriou <k2pts@yahoo.com>
@creation-date 2001-09-02
} {
template_demo_note_id:integer,notnull
} -properties {
context:onevalue
title:onevalue
body:onevalue
}
set context [list "One note"]
db_1row note_select {
select title, body, color
from template_demo_notes
where template_demo_note_id = :template_demo_note_id
}
set body [ad_text_to_html -- $body]
ad_return_template
<master>
<property name="title">@page_title@</property>
<property name="context">@context;noquote@</property>
<formtemplate id="add-edit"></formtemplate>
# packages/notes/www/add-edit.tcl
ad_page_contract {
@author Don Baccus (dhogaza@pacifier.com)
@creation-date 2000-10-23
@cvs-id $Id$
Example script that allows for the creation or editing of a simple note
object type, using ad_form and package Tcl API tools.
} -query {
note_id:integer,notnull,optional
} -properties {
context:onevalue
page_title:onevalue
}
# When using ad_form to generate or edit acs_objects, the object type's
# key column must be specified in ad_page_contract as is done above,
# and defined with the type "key" in ad_form. This enables the use of
# the various request and submission code blocks.
set package_id [ad_conn package_id]
ad_form -form {
# The "note" object type's key
note_id:key
# "title" is of type text and will use a "text" widget.
{title:text \
{label Title}
{html {size 20}}
}
# "body" is of type text and will use a "textarea" widget.
{body:text(textarea) \
{label Body}
{html {rows 10 cols 40 wrap soft}}
}
} -new_request {
# By convention packages only allow a user to create new objects if the user has
# the "create" privilege on the package instance itself.
permission::require_permission -object_id $package_id -privilege create
# Customize the page title to reflect the fact that this form is used to
# create a new note.
set page_title "New Note"
} -edit_request {
permission::require_permission -object_id $note_id -privilege write
# Customize the page title to reflect the fact that this form is used to
# edit an existing note.
set page_title "Edit Note"
# Fill the form with the values from the note we're editing.
db_1row note_select {}
} -on_validation_error {
# There was an error in the form, let the page title reflect this.
set page_title "Error in submission"
} -new_data {
# Create a new note.
# Generate the new object automatically from the data set in the form. Standard
# acs_object attributes like creation_user are set automatically.
package_instantiate_object -var_list [list [list context_id $package_id]] \
-form_id add-edit \
note
} -edit_data {
# Currently we need to update our object manually ...
set modifying_user [ad_conn user_id]
set modifying_ip [ad_conn peeraddr]
db_transaction {
db_dml object_update {}
db_dml note_update {}
}
} -after_submit {
# We've successfully processed the submission, send the user back to the index page.
ad_returnredirect "./"
# ad_returnredirect returns after redirecting the user, so abort the script rather
# than fall through to the display code. Failure to abort the script will burden
# your server with needless template processing, though the user won't notice due to
# having been redirected.
ad_script_abort
}
# The following is only executed if we did not process a valid submission, in other
# words on the initial "new" or "edit" form request or after a submission which
# contained errors. Add the page title to the breadcrumb context bar.
set context [list $page_title]
# Display the form, blank if we're processing a "new" request, filled with data if we're
# processing an "edit" request or a submitted form that contains errors.
ad_return_template
<?xml version="1.0"?>
<queryset>
<fullquery name="note_select">
<querytext>
select title, body
from notes
where note_id = :note_id
</querytext>
</fullquery>
<fullquery name="object_update">
<querytext>
update acs_objects
set modifying_user = :modifying_user,
modifying_ip = :modifying_ip
where object_id = :note_id
</querytext>
</fullquery>
<fullquery name="note_update">
<querytext>
update notes
set title = :title,
body = :body
where note_id = :note_id
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="note_delete">
<querytext>
begin
note.del(:note_id);
end;
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="note_delete">
<querytext>
select note__delete( :note_id );
</querytext>
</fullquery>
</queryset>
# packages/notes/www/delete.tcl
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} {
template_demo_note_id:integer,notnull,multiple
}
foreach template_demo_note_id $template_demo_note_id {
ad_require_permission $template_demo_note_id delete
package_exec_plsql \
-var_list [list [list template_demo_note_id $template_demo_note_id]] \
template_demo_note \
del
}
ad_returnredirect "./"
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select n.template_demo_note_id,
n.title,
n.body,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'write'),
't', 1,
'f', 0) as write_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'admin'),
't', 1,
'f', 0) as admin_p,
decode(acs_permission.permission_p(n.template_demo_note_id,
:user_id,
'delete'),
't', 1,
'f', 0) as delete_p
from template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::filter_where_clauses -and -name notes]
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="template_demo_notes">
<querytext>
select
n.template_demo_note_id,
n.title,
n.color,
to_char(o.creation_date, 'YYYY-MM-DD HH24:MI:SS') as creation_date,
p.first_names || ' ' || p.last_name as creation_user_name
from
template_demo_notes n,
acs_objects o,
persons p
where n.template_demo_note_id = o.object_id
and o.creation_user = p.person_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = template_demo_note_id
and party_id = :user_id
and privilege = 'read')
[template::list::filter_where_clauses -and -name notes]
[template::list::orderby_clause -orderby -name notes]
</querytext>
</fullquery>
</queryset>
<master>
<property name="title">Notes</property>
<property name="context">@context;noquote@</property>
<table cellpadding="3" cellspacing="3">
<tr>
<td class="list-filter-pane" valign="top" width="200">
<listfilters name="notes"></listfilters>
</td>
<td class="list-list-pane" valign="top">
<listtemplate name="notes"></listtemplate>
</td>
</tr>
</table>
# main index page for notes.
# Notice we have a new -query parameter, color_filter_value. If anything
# wants to activate the filter (whose name is color_filter_value) defined
# ahead in the template::list, then it can feed the page a parameter of
# color_filter_value="something". When this happens, the filter will add
# its where clause to template::list::filter_where_clause and therefore
# to the query which has a call to that proc. In this case, the where claue
# will be "n.color = 'something'". Look at the filter definition in the
# list definition to see this.
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} -query {
orderby:optional
color_filter_value:optional
} -properties {
notes:multirow
context:onevalue
create_p:onevalue
}
set package_id [ad_conn package_id]
set user_id [ad_conn user_id]
set context [list]
set create_p [ad_permission_p $package_id create]
set actions [list]
if { $create_p } {
lappend actions "Create Note" add-edit "Create Note"
}
# the following structure is a "list of lists". Each list describes a
# different choice value; the first item is the displayed name of the
# choice and the second is the value passed back as the value of the
# choice.
#
# Normally, you'd have a database query where the items in the select
# list of the query will appear in each inner list in order; again,
# the first would be a displayed name and the second would be the
# value that the form would send back as the choice. Note that this
# could be a primary key in a table, maybe an object ID.
#
# Since the colors column is a text column and not implemented as a
# separate table with a numeric key column, the value will be the
# name of the color.
#
# So, to activate the filter, say for Blue, this page is fed this:
# color_filter_value="blue"
# and notice, this is the lowercase version, the second item in each
# inner list. The first item is displayed to the user for choosing
# among possible filter values.
set color_choices {
{Blue blue}
{Green green}
{Purple purple}
{Red red}
{Orange orange}
{Yellow yellow}
}
# Here's the list; notice the new -filters section. If the user chooses
# to activate the filter (presumably by manipulating some user interface),
# the filter will add its where clause to output of the call
# template::list::filter_where_clause. Look at the query; you'll see the
# call to filter_where_clause there near the bottom, in brackets.
template::list::create -name notes \
-multirow template_demo_notes \
-key "template_demo_note_id" \
-actions $actions \
-bulk_actions {
"Delete Checked Notes" "delete" "Delete Checked Notes"
} \
-elements {
title {
label "Title of Note"
link_url_col view_url
}
creation_user_name {
label "Owner of Note"
}
creation_date {
label "When Note Created"
}
color {
label "Color"
}
} \
-filters {
color_filter_value {
label "Color"
where_clause {
n.color = :color_filter_value
}
values $color_choices
}
} \
-orderby {
default_value title,asc
title {
label "Title of Note"
orderby n.title
}
creation_user_name {
label "Owner of Note"
orderby creation_user_name
}
creation_date {
label "When Note Created"
orderby o.creation_date
}
color {
label "Color"
orderby n.color
}
}
db_multirow -extend { view_url } template_demo_notes template_demo_notes {} {
set view_url [export_vars -base view-one { template_demo_note_id }]
}
ad_return_template
<master>
<property name="title">@title;noquote@</property>
<property name="context">@context;noquote@</property>
@body;noquote@
\ No newline at end of file
ad_page_contract {
@author Neophytos Demetriou <k2pts@yahoo.com>
@creation-date 2001-09-02
} {
note_id:integer,notnull
} -properties {
context:onevalue
title:onevalue
body:onevalue
}
set context [list "One note"]
db_1row note_select {
select title, body
from notes
where note_id = :note_id
}
set body [ad_text_to_html -- $body]
ad_return_template
<master>
<property name="title">@page_title@</property>
<property name="context">@context;noquote@</property>
<formtemplate id="add-edit"></formtemplate>
# packages/acs-templating/www/doc/demo/list8/add-edit.tcl
ad_page_contract {
@author Don Baccus (dhogaza@pacifier.com)
@creation-date 2000-10-23
@cvs-id $Id$
Example script that allows for the creation or editing of a simple note
object type, using ad_form and package Tcl API tools.
} -query {
template_demo_note_id:integer,notnull,optional
} -properties {
context:onevalue
page_title:onevalue
}
# When using ad_form to generate or edit acs_objects, the object type's
# key column must be specified in ad_page_contract as is done above,
# and defined with the type "key" in ad_form. This enables the use of
# the various request and submission code blocks.
set package_id [ad_conn package_id]
ad_form -form {
# The "note" object type's key
template_demo_note_id:key
# "title" is of type text and will use a "text" widget.
{title:text \
{label Title}
{html {size 20}}
}
# "body" is of type text and will use a "textarea" widget.
{body:text(textarea) \
{label Body}
{html {rows 10 cols 40 wrap soft}}
}
# 'color' is a text using a text widget
{color:text \
{label "Color"}
{htmo {size 20}}
}
} -new_request {
# By convention packages only allow a user to create new objects if the user has
# the "create" privilege on the package instance itself.
permission::require_permission -object_id $package_id -privilege create
# Customize the page title to reflect the fact that this form is used to
# create a new note.
set page_title "New Note"
} -edit_request {
permission::require_permission -object_id $note_id -privilege write
# Customize the page title to reflect the fact that this form is used to
# edit an existing note.
set page_title "Edit Note"
# Fill the form with the values from the note we're editing.
db_1row note_select {}
} -on_validation_error {
# There was an error in the form, let the page title reflect this.
set page_title "Error in submission"
} -new_data {
# Create a new note.
# Generate the new object automatically from the data set in the form. Standard
# acs_object attributes like creation_user are set automatically.
package_instantiate_object \
-var_list [list [list context_id $package_id]] \
-form_id add-edit \
template_demo_note
} -edit_data {
# Currently we need to update our object manually ...
set modifying_user [ad_conn user_id]
set modifying_ip [ad_conn peeraddr]
db_transaction {
db_dml object_update {}
db_dml template_demo_note_update {}
}
} -after_submit {
# We've successfully processed the submission, send the user back to the index page.
ad_returnredirect "./"
# ad_returnredirect returns after redirecting the user, so abort the script rather
# than fall through to the display code. Failure to abort the script will burden
# your server with needless template processing, though the user won't notice due to
# having been redirected.
ad_script_abort
}
# The following is only executed if we did not process a valid submission, in other
# words on the initial "new" or "edit" form request or after a submission which
# contained errors. Add the page title to the breadcrumb context bar.
set context [list $page_title]
# Display the form, blank if we're processing a "new" request, filled with data if we're
# processing an "edit" request or a submitted form that contains errors.
ad_return_template
<?xml version="1.0"?>
<queryset>
<fullquery name="note_select">
<querytext>
select title, body
from notes
where note_id = :note_id
</querytext>
</fullquery>
<fullquery name="object_update">
<querytext>
update acs_objects
set modifying_user = :modifying_user,
modifying_ip = :modifying_ip
where object_id = :note_id
</querytext>
</fullquery>
<fullquery name="note_update">
<querytext>
update notes
set title = :title,
body = :body
where note_id = :note_id
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="note_delete">
<querytext>
begin
note.del(:note_id);
end;
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="note_delete">
<querytext>
select note__delete( :note_id );
</querytext>
</fullquery>
</queryset>
# packages/notes/www/delete.tcl
ad_page_contract {
@author rhs@mit.edu
@creation-date 2000-10-23
@cvs-id $Id$
} {
template_demo_note_id:integer,notnull,multiple
}
foreach template_demo_note_id $template_demo_note_id {
ad_require_permission $template_demo_note_id delete
package_exec_plsql \
-var_list [list [list template_demo_note_id $template_demo_note_id]] \
template_demo_note \
del
}
ad_returnredirect "./"
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="notes">
<querytext>
select note_id, title, body,
decode(acs_permission.permission_p(note_id,
:user_id,
'write'),
't', 1,
'f', 0) as write_p,
decode(acs_permission.permission_p(note_id,
:user_id,
'admin'),
't', 1,
'f', 0) as admin_p,
decode(acs_permission.permission_p(note_id,
:user_id,
'delete'),
't', 1,
'f', 0) as delete_p
from notes n, acs_objects o
where n.note_id = o.object_id
and o.context_id = :package_id
and exists (select 1
from acs_object_party_privilege_map
where object_id = note_id
and party_id = :user_id
and privilege = 'read')
order by creation_date
</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.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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