Commit b019de5e authored by Frank Bergmann's avatar Frank Bergmann

- Comitting OpenACS 5.9

parent 8114ea1b
......@@ -6,30 +6,37 @@
<pretty-plural>Tcl Libraries</pretty-plural>
<initial-install-p>t</initial-install-p>
<singleton-p>t</singleton-p>
<implements-subsite-p>f</implements-subsite-p>
<inherit-templates-p>t</inherit-templates-p>
<version name="5.7.0" url="http://openacs.org/repository/download/apm/acs-tcl-5.7.0.apm">
<version name="5.10.0d1" url="http://openacs.org/repository/download/apm/acs-tcl-5.10.0d1.apm">
<owner url="http://openacs.org">OpenACS</owner>
<summary>The Kernel Tcl API library.</summary>
<release-date>2009-11-26</release-date>
<maturity>3</maturity>
<license url="http://www.gnu.org/copyleft/gpl.html">GPL version 2</license>
<release-date>2013-09-08</release-date>
<vendor url="http://openacs.org">OpenACS</vendor>
<description format="text/html">Contains all the core Tcl API, including the request processor, security and session management, permissions, site-nodes, package management infrastructure, etc.</description>
<license>GPL version 2</license>
<maturity>3</maturity>
<provides url="acs-tcl" version="5.7.0"/>
<requires url="acs-bootstrap-installer" version="5.7.0"/>
<requires url="acs-kernel" version="5.7.0"/>
<provides url="acs-tcl" version="5.10.0d1"/>
<requires url="acs-bootstrap-installer" version="5.10.0d1"/>
<requires url="acs-kernel" version="5.10.0d1"/>
<callbacks>
</callbacks>
<parameters>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="HtmlDocBin" default="/usr/bin/htmldoc" description="path to the executable of htmldoc"/>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="ReturnComplaint" default="/packages/acs-tcl/lib/ad-return-complaint" description="Template to use for the complaint page."/>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="ReturnError" default="/packages/acs-tcl/lib/ad-return-error" description="Template to use for the complaint page."/>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="SuppressHttpPort" default="0" description="Set to 1 to suppress the server's configured port --useful for example, when server is behind a proxy and: connection is switching from https to http or kernel's parameter ForceHostP is set to 1."/>
<parameter datatype="string" min_n_values="1" max_n_values="1" name="UseHostnameDomainforReg" default="0" description="Set to 1 if website uses domains mapped in host_nodes for public users and the hostname's domain as defined in config.tcl for registering users and their sessions."/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="HtmlDocBin" default="/usr/bin/htmldoc" description="path to the executable of htmldoc"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="ReturnComplaint" default="/packages/acs-tcl/lib/ad-return-complaint" description="Template to use for the complaint page."/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="ReturnError" default="/packages/acs-tcl/lib/ad-return-error" description="Template to use for the complaint page."/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="SuppressHttpPort" default="0" description="Set to 1 to suppress the server's configured port --useful for example, when server is behind a proxy and: connection is switching from https to http or kernel's parameter ForceHostP is set to 1."/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="TclTraceLogServerities" description="If this parameter is set to a value different from empty then the value is expected to be a list of log severities (such as &quot;Notice Warning Error Bug Dev&quot;). If the command ns_log is issued with one of the configured severity the line is displayed via the developer support debug messsage (via ds_comment).
Activating this trace requires a new start of the server." section_name="tcltrace"/>
<parameter scope="instance" datatype="number" min_n_values="1" max_n_values="1" name="TclTraceSaveNsReturn" default="0" description="When this parameter is set to 1, the content pages returned by the server via ns_return with status code 200 and type text/html are saved in the configured tmp directory. The exact full path is logged in the error.log.
Activating this trace requires a new start of the server." section_name="tcltrace"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="UseHostnameDomainforReg" default="0" description="Set to 1 if website uses domains mapped in host_nodes for public users and the hostname's domain as defined in config.tcl for registering users and their sessions."/>
</parameters>
</version>
</package>
......@@ -43,11 +43,11 @@
<msg key="lt_name_is_not_a_natural">%name% ist keine natrliche Zahl, die eine ganzzahlige Zahl grer oder gleich 0 ist.</msg>
<msg key="lt_name_is_not_a_valid_S">%name% ist kein gltiger SQL Identifikator</msg>
<msg key="lt_name_is_not_an_intege">%name% ist keine ganzzahlige Zahl</msg>
<msg key="lt_name_is_not_in_the_ra">%name% ist nicht im Bereich von \[%min%, %max%\]</msg>
<msg key="lt_name_is_too_long__Ple">%name% ist zu lang. Bitte geben Sie einen Wert ein, der hchstens [lindex $range 1] Buchstaben hat. Der Wert, den Sie eingegeben haben war [string length $value] Buchstaben lang.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% ist zu lang. Bitte geben Sie einen Wert ein der mindestens [lindex $length 1] Zeichen lang ist. Der Wert den Sie eingeben haben war [string length $value] Zeichen lang.</msg>
<msg key="lt_name_is_too_short__Pl">%name% ist zu kurz. Bitte geben Sie einen Wert ein, der mindestens [lindex $range 0] Zeichen lang ist. Der Wert den Sie eingegeben haben war [string length $value] Zeichen lang.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% ist zu kurz. Bitte geben Sie einen Wert ein, der mindestens [lindex $length 1] Zeichen lang ist. Der Wert, den Sie eingegeben haben ist [string length $value] Zeichen lang.</msg>
<msg key="lt_name_is_not_in_the_ra">%name% ist nicht im Bereich von [%min%, %max%]</msg>
<msg key="lt_name_is_too_long__Ple">%name% ist zu lang. Bitte geben Sie einen Wert ein, der hchstens %max_length% Buchstaben hat. Der Wert, den Sie eingegeben haben, ist %actual_length% Buchstaben lang.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% ist zu lang. Bitte geben Sie einen Wert ein der mindestens %min_length% Zeichen lang ist. Der Wert den Sie eingeben haben, ist %actual_length% Zeichen lang.</msg>
<msg key="lt_name_is_too_short__Pl">%name% ist zu kurz. Bitte geben Sie einen Wert ein, der mindestens %min_length% Zeichen lang ist. Der Wert den Sie eingegeben haben, ist %actual_length% Zeichen lang.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% ist zu kurz. Bitte geben Sie einen Wert ein, der mindestens %min_length% Zeichen lang ist. Der Wert, den Sie eingegeben haben, ist %actual_length% Zeichen lang.</msg>
<msg key="lt_NB_This_error_was_sub">Der Fehler wurde bermittelt</msg>
<msg key="lt_Please_back_up_using_">Bitte gehen Sie mit Ihrem Browser zurck und korrigieren den oben stehenden</msg>
<msg key="lt_Problem_with_a_Page_o">Problem mit Ihrer Seite (oder vielleicht mit Ihrer Eingabe)</msg>
......
......@@ -44,11 +44,11 @@
<msg key="lt_name_is_not_a_natural">Ο %name% δεν είναι ένας φυσικός αριθμός, δηλαδή ένας ακέραιος ίσος ή μεγαλύτερος του 0. </msg>
<msg key="lt_name_is_not_a_valid_S">Ο %name% είναι ένα άκυρο SQL identifier</msg>
<msg key="lt_name_is_not_an_intege">Ο %name% δεν είναι ακέραιος</msg>
<msg key="lt_name_is_not_in_the_ra">Ο %name% δεν είναι εντός ορίων \[%min%, %max%\] </msg>
<msg key="lt_name_is_too_long__Ple">Ο %name% είναι πολύ μακρύς. Παρακαλούμε εισάγετε μια τιμή για το μέγιστο αριθμό χαρακτήρων [lindex $range 1]. Η τιμή που εισάγατε διαθέτει [string length $value] χαρακτήρες μήκος.</msg>
<msg key="lt_name_is_too_long__Ple_1">O %name% αποτελείται από πολλά ψηφία. Παρακαλούμε εισάγετε μια τιμή με το πολύ [lindex $length 1] ψηφία. Η τιμή που είχατε δώσει ήταν [string length $value] ψηφίων.</msg>
<msg key="lt_name_is_too_short__Pl">O %name% αποτελείται από πολύ λίγα ψηφία. Παρακαλούμε εισάγετε μια τιμή με το λιγότερο [lindex $range 0] ψηφία. Η τιμή που είχατε δώσει ήταν [string length $value] ψηφίων.</msg>
<msg key="lt_name_is_too_short__Pl_1">Ο %name% άποτελείται από πολύ λίγα ψηφία. Παρακαλούμε εισάγετε μια τιμή τουλάχιστον [lindex $length 1] ψηφίων. Η τιμλη που είχατε εισάγει ήταν [string length $value] ψηφίων. </msg>
<msg key="lt_name_is_not_in_the_ra">Ο %name% δεν είναι εντός ορίων [%min%, %max%] </msg>
<msg key="lt_name_is_too_long__Ple">Ο %name% είναι πολύ μακρύς. Παρακαλούμε εισάγετε μια τιμή για το μέγιστο αριθμό χαρακτήρων %max_length%. Η τιμή που εισάγατε διαθέτει %actual_length% χαρακτήρες μήκος.</msg>
<msg key="lt_name_is_too_long__Ple_1">O %name% αποτελείται από πολλά ψηφία. Παρακαλούμε εισάγετε μια τιμή με το πολύ %max_length% ψηφία. Η τιμή που είχατε δώσει ήταν %actual_length% ψηφίων.</msg>
<msg key="lt_name_is_too_short__Pl">O %name% αποτελείται από πολύ λίγα ψηφία. Παρακαλούμε εισάγετε μια τιμή με το λιγότερο %min_length% ψηφία. Η τιμή που είχατε δώσει ήταν %actual_length% ψηφίων.</msg>
<msg key="lt_name_is_too_short__Pl_1">Ο %name% άποτελείται από πολύ λίγα ψηφία. Παρακαλούμε εισάγετε μια τιμή τουλάχιστον %min_length% ψηφίων. Η τιμλη που είχατε εισάγει ήταν %actual_length% ψηφίων. </msg>
<msg key="lt_NB_This_error_was_sub">Το σφάλμα έχει αποσταλλεί</msg>
<msg key="lt_Please_back_up_using_">Παρακαλούμε επιστρέψετε πίσω με το λογισμικό πλοήγησης, διορθώστε τα παραπάνω</msg>
<msg key="lt_Problem_with_a_Page_o">Σφάλμα σε μια σελίδα (ή ίσως στις πληροφορίες που δώσατε)</msg>
......
......@@ -45,15 +45,17 @@
<msg key="lt_name_is_not_a_natural">%name% is not a natural number, that is an integer greater than or equal to 0.</msg>
<msg key="lt_name_is_not_a_valid_S">%name% is not a valid SQL identifier</msg>
<msg key="lt_name_is_not_an_intege">%name% is not an integer</msg>
<msg key="lt_name_is_not_in_the_ra">%name% is not in the range \[%min%, %max%\]</msg>
<msg key="lt_name_is_too_long__Ple">%name% is too long. Please enter a value of at most [lindex $range 1] characters long. The value you entered was [string length $value] characters long.</msg>
<msg key="lt_name_is_not_a_word">%name% contains non-word characters</msg>
<msg key="lt_name_contains_invalid">%name% contains invalid characters</msg>
<msg key="lt_name_is_not_in_the_ra">%name% is not in the range [%min%, %max%]</msg>
<msg key="lt_name_is_too_long__Ple">%name% is too long. Please enter a value of at most %max_length% characters long. The value you entered is %actual_length% characters long.</msg>
<description key="lt_name_is_too_long__Ple">This string looks broken!</description>
<msg key="lt_name_is_too_long__Ple_1">%name% is too long. Please enter a value of at most [lindex $length 1] characters long. The value you entered was [string length $value] characters long.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% is too long. Please enter a value of at most %max_length% characters long. The value you entered is %actual_length% characters long.</msg>
<description key="lt_name_is_too_long__Ple_1">This message text looks broken!</description>
<msg key="lt_name_is_too_short__Pl">%name% is too short. Please enter a value of at least [lindex $range 0] characters long. The value you entered was [string length $value] characters long.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% is too short. Please enter a value of at least [lindex $length 1] characters long. The value you entered was [string length $value] characters long.</msg>
<msg key="lt_name_is_too_short__Pl">%name% is too short. Please enter a value of at least %min_length% characters long. The value you entered is %actual_length% characters long.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% is too short. Please enter a value of at least %min_length% characters long. The value you entered is %actual_length% characters long.</msg>
<msg key="lt_NB_This_error_was_sub">This error was submitted</msg>
<msg key="lt_Please_back_up_using_">Please back up using your browser, correct the above</msg>
<msg key="lt_Problem_with_a_Page_o">Problem with a Page (or maybe Your Input)</msg>
......@@ -83,6 +85,7 @@
<msg key="lt_You_must_supply_a_val">You must supply a value for %formal_name%</msg>
<msg key="lt_You_specified_a_path_">You specified a path to a file that is not allowed on the system.</msg>
<msg key="lt_Youve_supplied_two_va">You've supplied two values for '%formal_name%'</msg>
<msg key="maturity_deprecated">Deprecated</msg>
<msg key="maturity_immature">Immature</msg>
<description key="maturity_immature">Maturity level is visible in the Installer and when browsing the repository
......
......@@ -45,10 +45,10 @@
<msg key="lt_name_is_not_a_valid_S">%name% no es un identificador SQL vlido</msg>
<msg key="lt_name_is_not_an_intege">%name% no es un entero</msg>
<msg key="lt_name_is_not_in_the_ra">%name% no est en el rango \[%min%, %max%\]</msg>
<msg key="lt_name_is_too_long__Ple">%name% es demasiado largo. Por favor, introduzca un valor no superior a [lindex $range 1] caracteres. El valor introducido contiene [string length $value] caracteres.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% es demasiado largo. Por favor, introduzca un valor no superior a [lindex $length 1] caracteres. El valor introducido contiene [string length $value] caracteres.</msg>
<msg key="lt_name_is_too_short__Pl">%name% es demasiado corto. Por favor, introduzca un valor de al menos [lindex $range 0] caracteres. El valor introducido contiene [string length $value] caracteres.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% es demasiado corto. Por favor, introduzca un valor de al menos [lindex $length 0] caracteres. El valor introducido contiene [string length $value] caracteres.</msg>
<msg key="lt_name_is_too_long__Ple">%name% es demasiado largo. Por favor, introduzca un valor no superior a %max_length% caracteres. El valor introducido contiene %actual_length% caracteres.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% es demasiado largo. Por favor, introduzca un valor no superior a %max_length% caracteres. El valor introducido contiene %actual_length% caracteres.</msg>
<msg key="lt_name_is_too_short__Pl">%name% es demasiado corto. Por favor, introduzca un valor de al menos %min_length% caracteres. El valor introducido contiene %actual_length% caracteres.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% es demasiado corto. Por favor, introduzca un valor de al menos %min_length% caracteres. El valor introducido contiene %actual_length% caracteres.</msg>
<msg key="lt_NB_This_error_was_sub">El error ha sido registrado</msg>
<msg key="lt_Please_back_up_using_">Por favor, vuelva atrs, corrija </msg>
<msg key="lt_Problem_with_a_Page_o">Hubo un problema con la pgina</msg>
......
......@@ -43,11 +43,11 @@
<msg key="lt_name_is_not_a_natural">%name% ziet er niet uit als een natuurlijk getal, dat is, een geheel getal groter dan 0.</msg>
<msg key="lt_name_is_not_a_valid_S">%name% is geen geldig SQL-symbool</msg>
<msg key="lt_name_is_not_an_intege">%naam% is geen geheel getal</msg>
<msg key="lt_name_is_not_in_the_ra">%name% zit niet in het bereik \[%min%..%max%\]</msg>
<msg key="lt_name_is_too_long__Ple">%name% is te lang. Geef alstublieft een waarde van minimaal [lindex $range 1] tekens lang in. De waarde die u ingaf was [string length $value] tekens lang.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% is te lang. Geef alstublieft een waarde in van maximaal [lindex $length 1] tekens lang. De waarde die u ingaf was [string length $value] tekens lang.</msg>
<msg key="lt_name_is_too_short__Pl">%name% is te kort. Geef alstublieft een waarde van minimaal [lindex $range 0] tekens lang in. De waarde die u ingaf was [string length $value] tekens lang.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% is te kort. Geef alstublieft een waarde van minimaal [lindex $length 1] tekens lang in. De waarde die u ingaf was [string length $value] tekens lang.</msg>
<msg key="lt_name_is_not_in_the_ra">%name% zit niet in het bereik [%min%..%max%]</msg>
<msg key="lt_name_is_too_long__Ple">%name% is te lang. Geef alstublieft een waarde van minimaal %max_length% tekens lang in. De waarde die u ingaf was %actual_length% tekens lang.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% is te lang. Geef alstublieft een waarde in van maximaal %max_length% tekens lang. De waarde die u ingaf was %actual_length% tekens lang.</msg>
<msg key="lt_name_is_too_short__Pl">%name% is te kort. Geef alstublieft een waarde van minimaal %min_length% tekens lang in. De waarde die u ingaf was %actual_length% tekens lang.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% is te kort. Geef alstublieft een waarde van minimaal %min_length% tekens lang in. De waarde die u ingaf was %actual_length% tekens lang.</msg>
<msg key="lt_NB_This_error_was_sub">Deze fout is ingestuurd</msg>
<msg key="lt_Please_back_up_using_">Ga met uw browser terug naar de vorige bladzijde en corrigeer het bovenstaande</msg>
<msg key="lt_Problem_with_a_Page_o">Probleem met pagina (kan door uw invoer veroorzaakt zijn)</msg>
......
......@@ -43,11 +43,11 @@
<msg key="lt_name_is_not_a_natural">%name% sien daar nie uit nie as 'n natuurlike getal, dat is, 'n geheel getal groter as 0. </msg>
<msg key="lt_name_is_not_a_valid_S">%name% is geen geldig SQL-simbool</msg>
<msg key="lt_name_is_not_an_intege">%naam% is geen geheel getal nie</msg>
<msg key="lt_name_is_not_in_the_ra">%name% sit nie in die bereik \[%min%..%max%\] nie</msg>
<msg key="lt_name_is_too_long__Ple">%name% is te lang. Geef assublief 'n waarde van maximaal [lindex $range 1] tekens lang in. De waarde die u ingegeef het was [string length $value] tekens lang.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% is te lang. Geef assublief 'n waarde in van maximaal [lindex $length 1] tekens lang. Die waarde wat u ingegeef het was [string length $value] tekens lang.</msg>
<msg key="lt_name_is_too_short__Pl">%name% is te kort. Geef assublief 'n waarde van minimaal [lindex $range 0] tekens lang in. Die waarde wat u ingegeef het was [string length $value] tekens lang.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% is te kort. Geef assublief 'n waarde van minimaal [lindex $length 1] tekens lang in. Die waarde wat u ingegeef het was [string length $value] tekens lang.</msg>
<msg key="lt_name_is_not_in_the_ra">%name% sit nie in die bereik [%min%..%max%] nie</msg>
<msg key="lt_name_is_too_long__Ple">%name% is te lang. Geef assublief 'n waarde van maximaal %max_length% tekens lang in. De waarde die u ingegeef het was %actual_length% tekens lang.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% is te lang. Geef assublief 'n waarde in van maximaal %max_length% tekens lang. Die waarde wat u ingegeef het was %actual_length% tekens lang.</msg>
<msg key="lt_name_is_too_short__Pl">%name% is te kort. Geef assublief 'n waarde van minimaal %min_length% tekens lang in. Die waarde wat u ingegeef het was %actual_length% tekens lang.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% is te kort. Geef assublief 'n waarde van minimaal %min_length% tekens lang in. Die waarde wat u ingegeef het was %actual_length% tekens lang.</msg>
<msg key="lt_NB_This_error_was_sub">Deze fout is ingestuur</msg>
<msg key="lt_Please_back_up_using_">Gaan met u blaaier terug na die vorige bladsy en korrigeer die bostaande</msg>
<msg key="lt_Problem_with_a_Page_o">Probleem met bladsy (kan door uw invoer veroorzaak wees)</msg>
......
......@@ -44,10 +44,10 @@
<msg key="lt_name_is_not_a_valid_S">%name% no um identificador SQL vlido</msg>
<msg key="lt_name_is_not_an_intege">%name% no um inteiro</msg>
<msg key="lt_name_is_not_in_the_ra">%name% no est na faixa \[%min%, %max%\] </msg>
<msg key="lt_name_is_too_long__Ple">%name% muito longo. Por favor digite um valor com no mximo [lindex $range 1] caracteres. O valor digitado por voc tem [string length $value] caracteres.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% muito longo. Por favor digite um valor com no mximo [lindex $range 1] caracteres. O valor digitado por voc tem [string length $value] caracteres.</msg>
<msg key="lt_name_is_too_short__Pl">%name% muito curto. Por favor digite um valor com no mnimo [lindex $range 0] caracteres. O valor digitado por voc tem [string length $value] caracteres.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% muito curto. Por favor digite um valor com no mnimo [lindex $length 1] caracteres. O valor digitado por voc tem [string length $value] caracteres.</msg>
<msg key="lt_name_is_too_long__Ple">%name% muito longo. Por favor digite um valor com no mximo %max_length% caracteres. O valor digitado por voc tem %actual_length% caracteres.</msg>
<msg key="lt_name_is_too_long__Ple_1">%name% muito longo. Por favor digite um valor com no mximo %max_length% caracteres. O valor digitado por voc tem %actual_length% caracteres.</msg>
<msg key="lt_name_is_too_short__Pl">%name% muito curto. Por favor digite um valor com no mnimo %min_length% caracteres. O valor digitado por voc tem %actual_length% caracteres.</msg>
<msg key="lt_name_is_too_short__Pl_1">%name% muito curto. Por favor digite um valor com no mnimo %min_length% caracteres. O valor digitado por voc tem %actual_length% caracteres.</msg>
<msg key="lt_NB_This_error_was_sub">O erro foi enviado</msg>
<msg key="lt_Please_back_up_using_">Por favor use o boto &quot;Retornar pgina anterior&quot; do seu navegador, e corrija os erros acima </msg>
<msg key="lt_Problem_with_a_Page_o">Problema com a pgina (ou com os dados digitados)</msg>
......
This diff is collapsed.
......@@ -16,11 +16,11 @@ if {![catch {
foreach action $action_list {
if {[lindex $action 0] eq "LINK"} {
foreach {type stub text title long} $action {break}
lassign $action type stub text title long
multirow append actions $type "$base_url$stub" $text $title $long
} elseif {[lindex $action 0] eq "SECTION"} {
foreach {type title long} $action {break}
lassign $action type title long
multirow append actions $type {} {} $title $long
} else {
......
<master>
<property name="title">#acs-tcl.lt_Problem_with_your_inp#</property>
<property name="doc(title)">#acs-tcl.lt_Problem_with_your_inp#</property>
<p>
#acs-tcl.We_had#
......
<master>
<property name="doc(title)">@title;noquote@</property>
<div id="user-message">
<p>@explanation;noquote@</p>
</div>
<master>
<property name="doc(title)">@title;literal@</property>
<div id="user-message">
<p>@explanation;noquote@</p>
</div>
<master>
<property name="title">#acs-tcl.lt_Problem_with_your_inp#</property>
<property name="doc(title)">#acs-tcl.lt_Problem_with_your_inp#</property>
<p>
#acs-tcl.We_had#
......
<!-- This page goes into /packages/apm-tcl/lib/page-error.adp -->
<master>
<property name="title">#acs-tcl.Server#</property>
<property name="doc(title)">#acs-tcl.Server#</property>
<p>
<if @top_message@ not nil>
@top_message;noquote@
</if>
<else>
#acs-tcl.There#
</else>
</p>
<% set error_url [im_url_with_query] %>
<% set error_location "[ns_info address] on [ns_info platform]" %>
<% set report_url [ad_parameter -package_id [im_package_core_id] "ErrorReportURL" "" ""] %>
<% set system_url [ad_parameter -package_id [ad_acs_kernel_id] SystemURL "" ""] %>
<% set first_names "undefined" %>
<% set last_name "undefined" %>
<% set email "undefined" %>
<% set username "undefined" %>
<% db_0or1row user_info "select * from cc_users where user_id=[ad_get_user_id]" %>
<% set publisher_name [ad_parameter -package_id [ad_acs_kernel_id] PublisherName "" ""] %>
<% set package_versions [db_list package_versions "select v.package_key||':'||v.version_name from (select max(version_id) as version_id, package_key from apm_package_versions group by package_key) m, apm_package_versions v where m.version_id = v.version_id"] %>
<% set system_id [im_system_id] %>
<% set hardware_id [im_hardware_id] %>
<% if {![info exists error_content]} { set error_content "" } %>
<% if {![info exists error_content_filename]} { set error_content_filename "" } %>
<% if {![info exists error_type]} { set error_type "default" } %>
<% if {![info exists top_message]} { set top_message "" } %>
<% if {![info exists bottom_message]} { set bottom_message "" } %>
<br>
<form action="@report_url;noquote@" method=POST>
<input type=submit name=submit value="Report this Error">
<br>
<input type=checkbox name=privacy_statement_p checked>
I agree with the <a href="http://www.project-open.com/en/company/project-open-privacy.html">privacy statement</a>.
<br>
<input type=hidden name=error_url value=@error_url@>
<input type=hidden name=error_location value=@error_location@>
<input type=hidden name=system_url value=@system_url@>
<input type=hidden name=error_first_names value=@first_names;noquote@>
<input type=hidden name=error_last_name value=@last_name;noquote@>
<input type=hidden name=error_user_email value=@email;noquote@>
<input type=hidden name=error_type value=@error_type;noquote@>
<input type=hidden name=package_versions value="@package_versions;noquote@">
<input type=hidden name=publisher_name value="@publisher_name;noquote@">
<input type=hidden name=system_id value=@system_id@>
<input type=hidden name=hardware_id value=@hardware_id@>
<input type=hidden name=platform value="<%=$::tcl_platform(platform)%>">
<input type=hidden name=os value="<%=$::tcl_platform(os)%>">
<input type=hidden name=os_version value="<%=$::tcl_platform(osVersion)%>">
<if @message@ not nil>
<input type=hidden name=error_message value="@message;noquote@">
</if>
<if @stacktrace@ not nil>
<input type=hidden name=error_info value="@stacktrace@">
</if>
<input type=hidden name=error_content value='@error_content@'>
<input type=hidden name=error_content_filename value='@error_content_filename@'>
</form>
<br>
<if @bottom_message@ not nil>
@bottom_message;noquote@
</if>
<if @message@ not nil>
<p>
@message;noquote@
</p>
</if>
<br>
<if @stacktrace@ not nil>
<p>
Here is a detailed dump of what took place at the time of the error, which may assist a programmer in tracking down the problem:
</p>
<blockquote><pre>@stacktrace@</pre></blockquote>
</if>
<else>
<p>
The error has been logged and will be investigated by our system programmers.
</p>
<a href="@prev_url@">#acs-tcl.Return_prev#</a>
<if @bt_instance@ ne "">
<if @auto_submit_p@ gt 0>
<if @user_id@ gt 0>
<br>
<formtemplate id="bug_edit"></formtemplate>
<br>
#acs-tcl.Bug_History#
<br><br>
<formtemplate id="bug_history"></formtemplate>
</if>
<else>
</else>
</if>
</if>
<else>
<pre>@stacktrace@</pre>
</else>
This diff is collapsed.
......@@ -7,5 +7,43 @@
<!-- @cvs-id $Id$ -->
<queryset>
<fullquery name="get_user_info">
<querytext>
select p.first_names||' '||p.last_name as user_name, pa.email as user_email
from persons p, parties pa
where pa.party_id = p.person_id
and p.person_id = :user_id
</querytext>
</fullquery>
<fullquery name = "search_bug">
<querytext>
select bug_id
from bt_auto_bugs
where error_file =:error_file
and package_id = :bug_package_id
</querytext>
</fullquery>
<fullquery name = "insert_auto_bug">
<querytext>
insert into bt_auto_bugs(bug_id, package_id, error_file)
values (:bug_id, :bug_package_id, :error_file)
</querytext>
</fullquery>
<fullquery name = "increase_reported_times">
<querytext>
update bt_auto_bugs
set times_reported = times_reported + 1
where bug_id = :bug_id
</querytext>
</fullquery>
<fullquery name = "select_times_reported">
<querytext>
select times_reported
from bt_auto_bugs
where bug_id = :bug_id
</querytext>
</fullquery>
</queryset>
</queryset>
\ No newline at end of file
This diff is collapsed.
......@@ -11,7 +11,7 @@ ad_library {
set compat_procs [list ns_startcontent ns_encodingfortype]
foreach one_proc $compat_procs {
if {[llength [info command $one_proc]] == 0} {
if {[llength [info commands $one_proc]] == 0} {
proc $one_proc {args} { }
}
}
......
......@@ -12,7 +12,7 @@ ns_cache create util_memoize -size \
# on whether clustering is enabled and what command is available for
# cluster-wide flushing.
if {[llength [info commands ncf.send]] > 0} {
if {[info commands ncf.send] ne ""} {
set flush_body {
ncf.send util_memoize $script
}
......
......@@ -39,7 +39,7 @@ ad_proc -public ad_verify_install {} {
# define util_memoize with proc here to avoid error messages about multiple
# defines.
if { ![db_table_exists apm_packages] || ![db_table_exists site_nodes] } {
proc util_memoize {script {max_age ""}} {eval $script}
proc util_memoize {script {max_age ""}} {{*}$script}
return 0
}
set kernel_install_p [apm_package_installed_p acs-kernel]
......@@ -51,7 +51,7 @@ ad_proc -public ad_verify_install {} {
if { $kernel_install_p && $admin_exists_p} {
return 1
} else {
proc util_memoize {script {max_age ""}} {eval $script}
proc util_memoize {script {max_age ""}} {{*}$script}
return 0
}
}
......@@ -47,4 +47,13 @@
</querytext>
</fullquery>
<fullquery name="permission::permission_p_not_cached.select_permission_p">
<querytext>
begin
:1 := acs_permission.permission_p(:object_id, :party_id, :privilege);
end;
</querytext>
</fullquery>
</queryset>
......@@ -37,4 +37,11 @@
</querytext>
</fullquery>
<fullquery name="permission::permission_p_not_cached.select_permission_p">
<querytext>
select acs_permission__permission_p(:object_id, :party_id, :privilege)
</querytext>
</fullquery>
</queryset>
......@@ -32,7 +32,7 @@ ad_proc -public permission::grant {
grant privilege Y to party X on object Z
} {
db_exec_plsql grant_permission {}
util_memoize_flush "permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege"
util_memoize_flush [list permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege]
permission::permission_thread_cache_flush
}
......@@ -56,23 +56,57 @@ ad_proc -public permission::permission_p {
{-object_id:required}
{-privilege:required}
} {
Does party X have privilege Y on object Z
does party X have privilege Y on object Z
@param no_cache force loading from db even if cached (flushes cache as well)
@param no_login Don't bump to registration to refresh authentication, if the user's authentication is expired.
This is specifically required in the case where you're calling this from the proc that gets
the login page.
@param party_id if null then it is the current user_id
@param object_id The object you want to check permissions on.
@param privilege The privilege you want to check for.
} {
if { $party_id eq "" } { set party_id [ad_conn user_id]}
if { $no_cache_p } { permission::permission_thread_cache_flush }
if { $no_cache_p || ![permission::cache_p] } {
util_memoize_flush [list permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege]
set permission_p [permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege]
if { $party_id eq "" } {
set party_id [ad_conn user_id]
}
set caching_activated [permission::cache_p]
if { $no_cache_p || !$caching_activated } {
if { $no_cache_p } {
permission::permission_thread_cache_flush
}
if {$caching_activated} {
# If there is no caching activated, there is no need to
# flush the memoize cache. Frequent momoize cache flushing
# causes a flood of intra-server talk in a cluster
# configuration (see bug #2398);
#
util_memoize_flush [list permission::permission_p_not_cached \
-party_id $party_id \
-object_id $object_id \
-privilege $privilege]
}
set permission_p [permission::permission_p_not_cached \
-party_id $party_id \
-object_id $object_id \
-privilege $privilege]
} else {
set timeout [parameter::get -package_id [ad_acs_kernel_id] -parameter PermissionCacheTimeout -default 300]
set permission_p [util_memoize [list permission::permission_p_not_cached -party_id $party_id -object_id $object_id -privilege $privilege] $timeout]
set permission_p [util_memoize \
[list permission::permission_p_not_cached \
-party_id $party_id \
-object_id $object_id \
-privilege $privilege] \
[parameter::get -package_id [ad_acs_kernel_id] \
-parameter PermissionCacheTimeout \
-default 300]]
}
if {
......@@ -119,7 +153,7 @@ ad_proc -private permission::permission_p_not_cached {
# We have a thread-local cache here
global permission__permission_p__cache
if { ![info exists permission__permission_p__cache($party_id,$object_id,$privilege)] } {
set permission__permission_p__cache($party_id,$object_id,$privilege) [db_0or1row select_permission_p {}]
set permission__permission_p__cache($party_id,$object_id,$privilege) [expr {[db_exec_plsql select_permission_p {}] ? 1 : 0 }]
}
return $permission__permission_p__cache($party_id,$object_id,$privilege)
}
......@@ -212,15 +246,15 @@ ad_proc -public permission::write_permission_p {
@see permission::require_write_permission
} {
if { [permission::permission_p -privilege write -object_id $object_id -party_id $party_id] } {
return 1
}
if { $creation_user eq "" } {
set creation_user [acs_object::get_element -object_id $object_id -element creation_user]
}
if { [ad_conn user_id] == $creation_user } {
return 1
}
if { [permission::permission_p -privilege write -object_id $object_id -party_id $party_id] } {
return 1
}
return 0
}
......@@ -294,12 +328,12 @@ ad_proc -deprecated ad_require_permission {
permission::require_permission -object_id $object_id -privilege $privilege
}
ad_proc -private ad_admin_filter {} {
ad_proc -private -deprecated ad_admin_filter {} {
permission::require_permission -object_id [ad_conn object_id] -privilege "admin"
return filter_ok
}
ad_proc -private ad_user_filter {} {
ad_proc -private -deprecated ad_user_filter {} {
permission::require_permission -object_id [ad_conn object_id] -privilege "read"
return filter_ok
}
......@@ -34,14 +34,4 @@
</querytext>
</fullquery>
<fullquery name="permission::permission_p_not_cached.select_permission_p">
<querytext>
select 1 from dual
where exists
( select 1
from acs_object_party_privilege_map ppm
where ppm.object_id = :object_id and ppm.party_id = :party_id and ppm.privilege = :privilege )
</querytext>
</fullquery>
</queryset>
......@@ -32,7 +32,7 @@ namespace eval acs_privacy {
check if a user can access an object's private data
} {
if {[privacy_control_enabled_p]} {
return [ad_permission_p -user_id $user_id $object_id read_private_data]
return [permission::permission_p -party_id $user_id -object_id $object_id -privilege read_private_data]
} else {
# backwards compatibility
return 1
......@@ -47,9 +47,9 @@ namespace eval acs_privacy {
grant permission to access private data
} {
if { [template::util::is_true $value] } {
ad_permission_grant $user_id $object_id read_private_data
permission::grant -party_id $user_id -object_id $object_id -privilege read_private_data
} else {
ad_permission_revoke $user_id $object_id read_private_data
permission::revoke -party_id $user_id -object_id $object_id -privilege read_private_data
}
}
}
......@@ -20,7 +20,6 @@ ad_library {
@author Mark Dettinger (mdettinger@arsdigita.com)
@creation-date March 29, 2000
@last-updated July 25, 2000
@cvs-id $Id$
This was part of ACS 3
......
......@@ -32,8 +32,6 @@ if { [parameter::get -package_id [ad_acs_kernel_id] -parameter RegisterRestrictE
ns_log Notice "admin-init.tcl: Registering ad_restrict_entire_server_to_registered_users for ${url}*"
ad_register_filter preauth GET "${url}*" ad_restrict_entire_server_to_registered_users
ad_register_filter preauth POST "${url}*" ad_restrict_entire_server_to_registered_users
ad_register_filter preauth PUT "${url}*" ad_restrict_entire_server_to_registered_users
ad_register_filter preauth DELETE "${url}*" ad_restrict_entire_server_to_registered_users
ad_register_filter preauth HEAD "${url}*" ad_restrict_entire_server_to_registered_users
}
}
This diff is collapsed.
......@@ -97,7 +97,7 @@ ad_proc -private doc_eval_in_separate_frame { __code } {
Evaluates <code>__code</code> in a separate stack frame.
} {
eval $__code
{*}$__code
}
ad_proc -public doc_adp_abort {} {
......@@ -140,9 +140,9 @@ ad_proc -public doc_adp_execute_file {
# We use procs so that the Tcl code can be byte-code-compiled for extra performance
# benefit.
if { [catch { set info [__doc_adp_cache_info,$file_name] }] || \
[lindex $info 0] != $mtime || \
[lindex $info 1] != $size } {
if { [catch { set info [__doc_adp_cache_info,$file_name] }]
|| [lindex $info 0] != $mtime
|| [lindex $info 1] != $size } {
set reparse_p 1
} else {
ns_log "Error" "CACHE HIT for $file_name"
......@@ -228,7 +228,7 @@ ad_proc -public doc_adp_compile { adp } {
}
# Append to the text buffer any text before the "<".
append text_buffer [string range $adp $index [expr { $lt_index - 1 }]]
append text_buffer [string range $adp $index $lt_index-1]
set index $lt_index
if { [info exists tag] } {
......@@ -244,11 +244,13 @@ ad_proc -public doc_adp_compile { adp } {
if { [string index $adp $index] eq "/" } {
set end_tag_p 1
incr index
} elseif { ![info exists literal_tag] && [string index $adp $index] == "%" } {
} elseif { ![info exists literal_tag]
&& [string index $adp $index] eq "%"
} {
doc_adp_flush_text_buffer
incr index
if { [string index $adp $index] == "=" } {
if { [string index $adp $index] eq "=" } {
incr index
set puts_p 1
} else {
......@@ -256,17 +258,18 @@ ad_proc -public doc_adp_compile { adp } {
}
set tcl_code_begin $index
while { $index < [string length $adp] && \
([string index $adp $index] != "%" || [string index $adp [expr { $index + 1 }]] != ">") } {
while { $index < [string length $adp]
&& ([string index $adp $index] ne "%" || [string index $adp $index+1] ne ">")
} {
incr index
}
if { $index >= [string length $adp] } {
return -code error "Unbalanced Tcl evaluation block"
}
set tcl_code [string range $adp $tcl_code_begin [expr { $index - 1 }]]
set tcl_code [string range $adp $tcl_code_begin $index-1]
if { $puts_p } {
doc_adp_append_code "doc_adp_puts \[subst [doc_adp_quote_tcl_string $tcl_code]]"
doc_adp_append_code "doc_adp_puts \[subst [doc_adp_quote_tcl_string $tcl_code]\]"
} else {
doc_adp_append_code $tcl_code
}
......@@ -275,7 +278,7 @@ ad_proc -public doc_adp_compile { adp } {
incr index 2
continue
} elseif { ![info exists literal_tag] && [string index $adp $index] == "$" } {
} elseif { ![info exists literal_tag] && [string index $adp $index] eq "$" } {
incr index
set tag "var"
set end_tag_p 0
......@@ -286,15 +289,17 @@ ad_proc -public doc_adp_compile { adp } {
if { ![info exists tag] } {
# Find the next non-word character.
set tag_begin $index
while { [string index $adp $index] eq "-" || \
[string is wordchar -strict [string index $adp $index]] } {
while { [string index $adp $index] eq "-"
|| [string is wordchar -strict [string index $adp $index]]
} {
incr index
}
set tag [string range $adp $tag_begin [expr { $index - 1 }]]
set tag [string range $adp $tag_begin $index-1]
}
if { (![info exists literal_tag] || ($end_tag_p && $tag eq $literal_tag)) && \
[nsv_exists doc_adptags $tag] } {
if { (![info exists literal_tag] || ($end_tag_p && $tag eq $literal_tag))
&& [nsv_exists doc_adptags $tag]
} {
doc_adp_flush_text_buffer
if { [info exists literal_tag] } {
......@@ -313,7 +318,7 @@ ad_proc -public doc_adp_compile { adp } {
}
# If it's a >, we're done.
if { [string index $adp $index] == ">" } {
if { [string index $adp $index] eq ">" } {
# Done with attribute list.
incr index
break
......@@ -321,19 +326,20 @@ ad_proc -public doc_adp_compile { adp } {
# Not a > - must be an attribute name.
set attr_name_begin $index
while { $index < $adp_length && \
[string index $adp $index] != ">" && \
[string index $adp $index] != "=" && \
![string is space -strict [string index $adp $index]] } {
while { $index < $adp_length
&& [string index $adp $index] ne ">"
&& [string index $adp $index] ne "="
&& ![string is space -strict [string index $adp $index]]
} {
incr index
}
if { $attr_name_begin == $index } {
if { $attr_name_begin eq $index } {
return -code error "Weird attribute format to tag \"$tag\""
}
set attr_name [string range $adp $attr_name_begin [expr { $index - 1 }]]
set attr_name [string range $adp $attr_name_begin $index-1]
if { [string index $adp $index] == "=" } {
if { [string index $adp $index] eq "=" } {
incr index
while { [string is space -strict [string index $adp $index]] } {
incr index
......@@ -348,15 +354,16 @@ ad_proc -public doc_adp_compile { adp } {
incr index
} else {
set value_begin $index
while { $index < $adp_length && \
[string index $adp $index] != ">" && \
[string index $adp $index] != "=" && \
![string is space -strict [string index $adp $index]] } {
while { $index < $adp_length
&& [string index $adp $index] ne ">"
&& [string index $adp $index] ne "="
&& ![string is space -strict [string index $adp $index]]
} {
incr index
}
set value_end $index
}
ns_set put $attributes $attr_name [string range $adp $value_begin [expr { $value_end - 1 }]]
ns_set put $attributes $attr_name [string range $adp $value_begin $value_end-1]
} else {
ns_set put $attributes $attr_name $attr_name
}
......@@ -369,7 +376,7 @@ ad_proc -public doc_adp_compile { adp } {
if { $tag ne [lindex $balanced_tag_stack end] } {
return -code error "Expected end tag to be </[lindex $balanced_tag_stack end]>, not </$tag>"
}
set balanced_tag_stack [lrange $balanced_tag_stack 0 [expr { [llength $balanced_tag_stack] - 2 }]]
set balanced_tag_stack [lrange $balanced_tag_stack 0 [llength $balanced_tag_stack]-2]
doc_adp_append_code "\}"
} else {
doc_adp_append_code "set __doc_attributes \[ns_set create\]"
......@@ -389,7 +396,7 @@ ad_proc -public doc_adp_compile { adp } {
}
}
} else {
append text_buffer [string range $adp $lt_index [expr { $index - 1 }]]
append text_buffer [string range $adp $lt_index $index-1]
}
}
......
......@@ -16,7 +16,7 @@ proc ns_dbformvalue {formdata column type valuebyref} {
upvar $valuebyref value
if {[ns_set get $formdata $column.NULL] eq "t"} {
if {[ns_set get $formdata $column.NULL] == "t"} {
set value ""
return 0
}
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -183,18 +183,18 @@ ad_proc -public apm_read_package_info_file { path } {
$type]</code> NOTE: Files are no longer stored in info files but are always retrieved
directly from the file system. This element in the array will always be the empty list.
<li><code>callbacks</code>: an array list of callbacks of the package
on the form <code>[list callback_type1 proc_name1 callback_type2 proc_name2 ...]
on the form <code>[list callback_type1 proc_name1 callback_type2 proc_name2 ...]</code>
<li>Element and attribute values directly from the XML specification:
<code>package.key</code>,
<code>package.url</code>,
<code>package.type</code>
<code>package-name</code>,
<code>pretty-plural</code>
<code>initial-install-p</code>
<code>singleton-p</code>
<code>auto-mount</code>
<code>name</code> (the version name, e.g., <code>3.3a1</code>,
<code>name</code> (the version name, e.g., <code>3.3a1</code>),
<code>url</code> (the version URL),
<code>package-name</code>,
<code>option</code>,
<code>summary</code>,
<code>description</code>,
......@@ -216,8 +216,6 @@ ad_proc -public apm_read_package_info_file { path } {
descriptive error.
} {
global ad_conn
# If the .info file hasn't changed since last read (i.e., has the same
# mtime), return the cached info list.
set mtime [file mtime $path]
......@@ -257,28 +255,25 @@ ad_proc -public apm_read_package_info_file { path } {
apm_log APMDebug "XML: the root name is $root_name"
error "Expected <package> as root node"
}
set properties(package.key) [apm_required_attribute_value $package key]
set properties(package.url) [apm_required_attribute_value $package url]
set properties(package.type) [apm_attribute_value -default "apm_application" $package type]
set properties(package-name) [apm_tag_value $package package-name]
set properties(initial-install-p) [apm_tag_value -default "f" $package initial-install-p]
set properties(auto-mount) [apm_tag_value -default "" $package auto-mount]
set properties(singleton-p) [apm_tag_value -default "f" $package singleton-p]
set properties(package.key) [apm_required_attribute_value $package key]
set properties(package.url) [apm_required_attribute_value $package url]
set properties(package.type) [apm_attribute_value -default "apm_application" $package type]
set properties(package-name) [apm_tag_value $package package-name]
set properties(initial-install-p) [apm_tag_value -default "f" $package initial-install-p]
set properties(auto-mount) [apm_tag_value -default "" $package auto-mount]
set properties(singleton-p) [apm_tag_value -default "f" $package singleton-p]
set properties(implements-subsite-p) [apm_tag_value -default "f" $package implements-subsite-p]
set properties(inherit-templates-p) [apm_tag_value -default "t" $package inherit-templates-p]
set properties(pretty-plural) [apm_tag_value -default "$properties(package-name)s" $package pretty-plural]
set properties(inherit-templates-p) [apm_tag_value -default "t" $package inherit-templates-p]
set properties(pretty-plural) [apm_tag_value -default "$properties(package-name)s" $package pretty-plural]
set versions [xml_node_get_children_by_name $package version]
if { [llength $versions] != 1 } {
error "Package must contain exactly one <version> node"
}
set version [lindex $versions 0]
set properties(name) [apm_required_attribute_value $version name]
set properties(url) [apm_required_attribute_value $version url]
set properties(name) [apm_required_attribute_value $version name]
set properties(url) [apm_required_attribute_value $version url]
# Set an entry in the properties array for each of these tags.
foreach property_name { summary description release-date vendor } {
......@@ -296,6 +291,7 @@ ad_proc -public apm_read_package_info_file { path } {
foreach { property_name attribute_name } {
vendor url
license url
description format
} {
set node [xml_node_get_first_child_by_name $version $property_name]
......@@ -306,6 +302,14 @@ ad_proc -public apm_read_package_info_file { path } {
}
}
# Build a list of packages to install additionally
set properties(install) [list]
foreach node [xml_node_get_children_by_name $version install] {
set install [apm_attribute_value $node package]
lappend properties(install) $install
}
# We're done constructing the properties array - save the properties into the
# moby array which we're going to return.
......@@ -325,7 +329,7 @@ ad_proc -public apm_read_package_info_file { path } {
set service_uri [apm_required_attribute_value $node url]
set service_version [apm_required_attribute_value $node version]
# Package always provides itself, we'll add that below, so don't add it here
if { $dependency_type ne "provides" || ![string equal $service_uri $properties(package.key)] } {
if { $dependency_type ne "provides" || $service_uri ne $properties(package.key) } {
lappend properties($dependency_type) [list $service_uri $service_version]
}
}
......@@ -339,7 +343,6 @@ ad_proc -public apm_read_package_info_file { path } {
array set callback_array {}
set callbacks_node_list [xml_node_get_children_by_name $version callbacks]
foreach callbacks_node $callbacks_node_list {
set callback_node_list [xml_node_get_children_by_name $callbacks_node callback]
......@@ -354,9 +357,11 @@ ad_proc -public apm_read_package_info_file { path } {
continue
}
if { [lsearch -exact [apm_supported_callback_types] $type] < 0 } {
if {$type ni [apm_supported_callback_types]} {
# The callback type is not supported
ns_log Error "package info file $path contains an unsupported callback type $type - ignoring. Valid values are [apm_supported_callback_types]"
ns_log Error "package info file $path contains an unsupported\
callback type $type - ignoring. Valid values are\
[apm_supported_callback_types]"
continue
}
......@@ -370,10 +375,7 @@ ad_proc -public apm_read_package_info_file { path } {
# Build a list of the package's owners (if any).
set properties(owners) [list]
set owners [xml_node_get_children_by_name $version owner]
foreach node $owners {
foreach node [xml_node_get_children_by_name $version owner] {
set url [apm_attribute_value $node url]
set name [xml_node_get_content $node]
lappend properties(owners) [list $name $url]
......@@ -384,9 +386,7 @@ ad_proc -public apm_read_package_info_file { path } {
set properties(parameters) [list]
apm_log APMDebug "APM: Reading Parameters"
set parameters [xml_node_get_children_by_name $version parameters]
foreach node $parameters {
foreach node [xml_node_get_children_by_name $version parameters] {
set parameter_nodes [xml_node_get_children_by_name $node parameter]
foreach parameter_node $parameter_nodes {
......@@ -404,7 +404,8 @@ ad_proc -public apm_read_package_info_file { path } {
}
apm_log APMDebug "APM: Reading parameter $name with default $default_value"
lappend properties(parameters) [list $name $description $section_name $scope $datatype $min_n_values $max_n_values $default_value]
lappend properties(parameters) [list $name $description $section_name $scope \
$datatype $min_n_values $max_n_values $default_value]
}
}
......
......@@ -103,7 +103,7 @@ ad_proc -public application_data_link::exist_link {
@param relation_tag Relationship identifier
} {
set linked_objects [ application_data_link::get -object_id $object_id -relation_tag $relation_tag]
if { [lsearch -exact $linked_objects "$target_object_id"] != -1 } {
if {$target_object_id in $linked_objects} {
# found link
return 1
} else {
......@@ -254,6 +254,32 @@ ad_proc -public application_data_link::get_links_from {
return [db_list links_from {}]
}
ad_proc -public application_data_link::get_links_to {
-object_id:required
{-from_type}
{-relation_tag ""}
} {
Get a list of objects that are linked to an object,
possible using the relation_tag.
If from_type is a subtype of content_revision, we lookup
content_items that have that content_type
@param object_id object_id two, get objects linked to this object
@param from_type object_type of the objects to get links from
} {
set from_type_where_clause ""
set content_type_from_clause ""
if {[info exists from_type] && $from_type ne ""} {
set from_type_clause [db_map from_type_where_clause]
if {[content::type::is_content_type -content_type $from_type]} {
set from_type_clause [db_map content_type_where_clause]
set content_type_from_clause [db_map content_type_from_clause]
}
}
return [db_list links_to {}]
}
ad_proc -public application_data_link::scan_for_links {
-text
} {
......@@ -301,23 +327,34 @@ ad_proc -public application_data_link::update_links_from {
@author Dave Bauer (dave@solutiongrove.com)
@creation-date 2006-08-31
} {
set old_links [application_data_link::get_links_from -object_id $object_id -relation_tag $relation_tag]
set old_links [application_data_link::get_links_from \
-object_id $object_id \
-relation_tag $relation_tag]
if {![llength $link_object_ids]} {
set link_object_ids [application_data_link::scan_for_links -text $text]
}
set delete_ids [list]
foreach old_link $old_links {
if {[lsearch $link_object_ids $old_link] < 0} {
if {$old_link ni $link_object_ids} {
lappend delete_ids $old_link
}
}
application_data_link::delete_from_list -object_id $object_id -link_object_id_list $delete_ids -relation_tag $relation_tag
application_data_link::delete_from_list \
-object_id $object_id \
-link_object_id_list $delete_ids \
-relation_tag $relation_tag
foreach new_link $link_object_ids {
if {![application_data_link::link_exists \
-from_object_id $object_id \
-to_object_id $new_link \
-relation_tag $relation_tag]} {
application_data_link::new_from -object_id $object_id -to_object_id $new_link -relation_tag $relation_tag
-relation_tag $relation_tag]
} {
application_data_link::new_from \
-object_id $object_id \
-to_object_id $new_link \
-relation_tag $relation_tag
}
}
}
......
......@@ -99,6 +99,37 @@
</querytext>
</partialquery>
<fullquery name="application_data_link::get_links_to.links_to">
<querytext>
select object_id_one
from acs_data_links,
acs_objects
$content_type_from_clause
where object_id_two = :object_id
and object_id = object_id_one
[application_data_link::relation_tag_where_clause -relation_tag $relation_tag]
$from_type_where_clause
</querytext>
</fullquery>
<partialquery name="application_data_link::get_links_to.from_type_clause">
<querytext>
and object_type = :from_type
</querytext>
</partialquery>
<partialquery name="application_data_link::get_links_to.content_type_from_clause">
<querytext>
, cr_items
</querytext>
</partialquery>
<partialquery name="application_data_link::get_links_to.content_type_where_clause">
<querytext>
and content_type = :object_type
</querytext>
</partialquery>
<fullquery name="application_data_link::delete_from_list.delete_links">
<querytext>
delete from acs_data_links where object_id_one=:object_id
......
......@@ -12,9 +12,7 @@ ad_proc -public callback::impl_exists {
} {
Returns whether the specified implementation exists.
} {
return [expr {![string equal \
[info commands ::callback::${callback}::impl::${impl}] \
""]}]
return [expr {[info commands ::callback::${callback}::impl::${impl}] ne ""}]
}
ad_proc -public callback::get_object_type_impl {
......
......@@ -12,11 +12,12 @@ ad_library {
# The User Namespace
namespace eval oacs::user {
ad_proc -public get {
ad_proc -deprecated -public get {
{-user_id:required}
{-array:required}
} {
Load up user information
@see acs_user::get
} {
# Upvar the Tcl Array
upvar $array row
......
......@@ -3,31 +3,6 @@
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="ad_user_new.user_insert">
<querytext>
begin
:1 := acs.add_user(
user_id => :user_id,
email => :email,
url => :url,
authority_id => :authority_id,
username => :username,
first_names => :first_names,
last_name => :last_name,
screen_name => :screen_name,
password => :hashed_password,
salt => :salt,
creation_user => :creation_user,
creation_ip => :peeraddr,
email_verified_p => :email_verified_p,
member_state => :member_state
);
end;
</querytext>
</fullquery>
<fullquery name="acs_user::delete.permanent_delete">
<querytext>
begin
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -10,6 +10,4 @@ ad_library {
#DRB: the default value is needed during the initial install of OpenACS
ns_cache create db_cache_pool -size \
[parameter::get_from_package_key \
-package_key acs-kernel \
-parameter DBCacheSize -default 50000]
[parameter::get -package_id [ad_acs_kernel_id] -parameter DBCacheSize -default 50000]
This diff is collapsed.
This diff is collapsed.
......@@ -8,5 +8,5 @@ ad_library {
}
ns_register_adptag ad-document "/ad-document" doc_tag_ad_document
ns_register_adptag ad-property "/ad-property" doc_tag_ad_property
ns_adp_registerscript ad-document "/ad-document" doc_tag_ad_document
ns_adp_registerscript ad-property "/ad-property" doc_tag_ad_property
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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