Commit 4c53411b authored by Frank Bergmann's avatar Frank Bergmann

- Updated to OpenACS 5.9.1

parent 77c184e8
......@@ -9,22 +9,22 @@
<implements-subsite-p>t</implements-subsite-p>
<inherit-templates-p>t</inherit-templates-p>
<version name="5.9.0" url="http://openacs.org/repository/download/apm/acs-subsite-5.9.0.apm">
<version name="5.9.1" url="http://openacs.org/repository/download/apm/acs-subsite-5.9.1.apm">
<owner url="http://openacs.org">OpenACS</owner>
<summary>Subsite</summary>
<release-date>2015-10-04</release-date>
<release-date>2017-08-06</release-date>
<vendor url="http://openacs.org">OpenACS</vendor>
<description format="text/html">Provides for creating subsites within the OpenACS Community System. Aware of parties, groups, users, portraits. Can be themed via a per subsite master template.</description>
<license>GPL</license>
<maturity>3</maturity>
<provides url="acs-subsite" version="5.9.0"/>
<requires url="acs-authentication" version="5.9.0"/>
<requires url="acs-content-repository" version="5.9.0"/>
<requires url="acs-kernel" version="5.9.0"/>
<requires url="acs-tcl" version="5.9.0"/>
<requires url="acs-lang" version="5.9.0"/>
<requires url="acs-mail-lite" version="5.9.0"/>
<provides url="acs-subsite" version="5.9.1"/>
<requires url="acs-authentication" version="5.9.1"/>
<requires url="acs-content-repository" version="5.9.1"/>
<requires url="acs-kernel" version="5.9.1"/>
<requires url="acs-tcl" version="5.9.1"/>
<requires url="acs-lang" version="5.9.1"/>
<requires url="acs-mail-lite" version="5.9.1"/>
<callbacks>
<callback type="before-upgrade" proc="subsite::before_upgrade"/>
......@@ -124,7 +124,7 @@ admin {
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="ScreenNameP" default="0" description="Set this to 1 if you want to show screen names instead of real names." section_name="user-info"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="ShowApplications" default="1" description="Show individual tabs for mounted applications within this subsite" section_name="Navigation Tabs"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="ShowContextBarP" default="1" description="Should context bars appear on pages?"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="ShowMembersListTo" default="1" description="Who can see the subsite members list. 0 = Everyone; 1 = Members; 2 = Only administrators."/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="ShowMembersListTo" default="1" description="Who can see the subsite members list. 0 = Everyone; 1 = Members; 2 = Only administrators; 3 = members, unless subsite."/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="SolicitPortraitP" default="1" description="Set this to 1 if you want users to be asked to submit a portrait." section_name="user-info"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="SomeAmericanReadersP" default="1" description="is it even worth bothering asking for state and zip code?"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="StreamingHead" default="/packages/openacs-default-theme/lib/plain-streaming-head" description="Path to the head template (skin) for streaming HTML-output. Set by the admin theme-switching UI." section_name="theming"/>
......@@ -134,7 +134,7 @@ admin {
<parameter scope="instance" datatype="text" min_n_values="1" max_n_values="1" name="ThemeJS" default=""
description="A list of lists of JS specifications of the form '-attribute value' pairs to use with this theme. The allowed attributes are defined by the arguments of template::add_script. Set by the admin theme-switching UI." section_name="theming"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="ThemeKey" default="default_plain" description="Key of the acs-templating theme for this subsite. Set by the admin theme-switching UI." section_name="theming"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="TmpDir" default="/tmp /var/tmp" description="What tmp directories are used on this system? Note the leading / character."/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="TmpDir" default="" description="What tmp directories are used on this system? Could be something like '/tmp /var/tmp', note the leading / character. If this value is empty, 'ns_config ns/parameters tmpdir' is used"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="UserHomeTemplate" default="/packages/acs-subsite/lib/home" description="Name of the template used for the user home page" section_name="Templates"/>
<parameter scope="instance" datatype="string" min_n_values="1" max_n_values="1" name="UserInfoTemplate" default="/packages/acs-subsite/lib/user-info" description="Name of the template used for description of a user" section_name="Templates"/>
<parameter scope="instance" datatype="text" min_n_values="1" max_n_values="1" name="UserNavbarTabsList" default="home {label #acs-subsite.Subsite_Home#}" description="Navigation tabs to show to users" section_name="Navigation Tabs"/>
......
This diff is collapsed.
......@@ -2,6 +2,6 @@
<message_catalog package_key="acs-subsite" locale="en_GB" charset="ISO-8859-1">
<msg key="lt_Upload_your_favorite">Upload your favourite file, a scanned JPEG or GIF, from your desktop
computer system (note that you can&#39;t refer to an image elsewhere on
the Internet; this image must be on your computer&#39;s hard drive).</msg>
computer system (note that you can't refer to an image elsewhere on
the Internet; this image must be on your computer's hard drive).</msg>
</message_catalog>
......@@ -25,6 +25,7 @@
<msg key="Account_reopened_message">Your account at %system_name% has been reopened. Welcome back.</msg>
<msg key="Account_reopened_title">Account Reopened</msg>
<msg key="Action">Action</msg>
<msg key="Active_theme">Active</msg>
<msg key="Add">Add</msg>
<msg key="Add_a_group_of_this_type">Add a group of this type</msg>
<msg key="Add_a_permissible_relationship_type">Add a permissible relationship type</msg>
......@@ -144,8 +145,9 @@ logging in again. &lt;/p&gt;
<msg key="Delete_selected_app">Delete selected applications</msg>
<msg key="Delete_this_application">Delete this application</msg>
<msg key="Delete_this_group_type">Delete this group type</msg>
<msg key="Delete_this_theme">Delete this theme</msg>
<msg key="Description">Description</msg>
<msg key="Details_for__group_type_pretty_name">Details for %group_type_pretty_name%</msg>
<msg key="Details_for__group_type_pretty_name">Details for Group Type &#34;%group_type_pretty_name%&#34;</msg>
<msg key="DevAdmin">DevAdmin</msg>
<description key="DevAdmin">Can we please have a description about the purpose of this key?</description>
......@@ -162,6 +164,7 @@ logging in again. &lt;/p&gt;
<msg key="Edit_caption">Edit Caption</msg>
<msg key="edit_comment">edit comment</msg>
<msg key="Edit_Options">Edit Options</msg>
<msg key="Edit_this_theme">Edit this theme</msg>
<msg key="Elements_not_editable">Certain elements are not editable, because they are managed by %authority_name%.</msg>
<msg key="Email">Email</msg>
<msg key="Email_already_exists">#acs-subsite.Email# already exists</msg>
......@@ -225,6 +228,7 @@ Please visit the following link to change your password now:
<msg key="Grant">Grant</msg>
<msg key="Grant_Permission">Grant Permission</msg>
<msg key="Group_administration">Group administration</msg>
<msg key="Group_members">Members of Group: %group_name%</msg>
<msg key="Group_type">Group type</msg>
<msg key="Group_type_administration">Group type administration</msg>
<msg key="Group_Types">Group Types</msg>
......@@ -255,6 +259,7 @@ Please visit the following link to change your password now:
<msg key="Join_subsite">Join subsite</msg>
<msg key="Join_this_community">Join this community</msg>
<msg key="Join_this_subsite">Join this subsite</msg>
<msg key="Key">Key</msg>
<msg key="Keyword">Keyword</msg>
<msg key="Last_name">Last name</msg>
<msg key="Last_name_not_provided_by_authority">Last name was not provided by the login authority. Please enter your last name.</msg>
......@@ -391,6 +396,7 @@ account was deleted for some reason.</msg>
<msg key="Members">Members</msg>
<msg key="Members_only">Members only</msg>
<msg key="Missing_argument">Missing argument</msg>
<msg key="Modified_theme">Modified</msg>
<msg key="mount">mount</msg>
<msg key="My_Account">Your Account</msg>
<msg key="Name">Name</msg>
......@@ -495,6 +501,7 @@ You can always change your password by doing the following:
<msg key="Req_membership_comm">Request membership of this community</msg>
<msg key="Req_membership_subs">Request membership of this subsite</msg>
<msg key="Request_Change_Password_token_email">Request to Change Password: A token for changing your password has been emailed to you. Follow the instructions in that email to change your password</msg>
<msg key="Request_join_submitted">Your request to join group '%group_name%' has been submitted</msg>
<msg key="Request_membership">Request membership</msg>
<msg key="Reset_Password">Reset Password</msg>
<msg key="return_to_application">return to application</msg>
......@@ -513,6 +520,7 @@ You can always change your password by doing the following:
<msg key="Select_Applications">Select Applications</msg>
<msg key="Select_Applications__helptext">If the application is not in the list, you may need to &lt;a href=\&#34;/acs-admin/install/\&#34;&gt;install&lt;/a&gt; it on the server</msg>
<msg key="Select_relation_type">Select relation type</msg>
<msg key="Select_theme">Select Theme</msg>
<msg key="Send_email_to_this_user">Send email to this user</msg>
<msg key="Send_me_a_copy">Send me a copy:</msg>
<msg key="Services">Services</msg>
......@@ -546,6 +554,7 @@ You can always change your password by doing the following:
<msg key="The_name_of_the_new_subsite_you_re_setting_up">The name of the new subsite you&#39;re setting up</msg>
<msg key="Theme">Theme</msg>
<msg key="theme">theme</msg>
<msg key="Themes">Themes</msg>
<msg key="This_group_is_closed">This group is closed. New members can only get access by invitation.</msg>
<msg key="This_group_type_can_only_be_administered_by_programmers">This group type can only be administered by programmers</msg>
<msg key="This_should_be_a_short_string">This should be a short string, all lowercase, with hyphens instead of spaces, whicn will be used in the URL of the new application. If you leave this blank, we will generate one for you from name of the application.</msg>
......@@ -576,6 +585,7 @@ copy it as above to the new location, then select &lt;em&gt;unmount&lt;/em&gt; a
<msg key="Upload_Portrait">Upload Portrait</msg>
<msg key="URL">URL</msg>
<msg key="URL_folder_name">URL folder name</msg>
<msg key="Usage">Usage</msg>
<msg key="User_name">User name</msg>
<msg key="User_Portrait">User Portrait</msg>
<msg key="User_Portraits">User Portraits</msg>
......@@ -605,9 +615,14 @@ copy it as above to the new location, then select &lt;em&gt;unmount&lt;/em&gt; a
<msg key="You_dont_have_a_portrait">You don&#39;t have a portrait yet. You can</msg>
<msg key="You_have_admin_rights_on">You have admin rights on the following objects:</msg>
<msg key="You_have_no_email_alerts">You currently have no email alerts registered.</msg>
<msg key="You_joined_group">You have joined the group &#39;%group_name%&#39;</msg>
<msg key="Your_Account">Your Account</msg>
<msg key="Your_discussion_alerts">Your discussion forum alerts</msg>
<msg key="Your_Portrait">Your Portrait</msg>
<msg key="Your_system_alerts">Your %gc_system_name% alerts</msg>
<msg key="Youre_marked_as_back">You&#39;re marked as back from vacation at %site_link%.</msg>
<msg key="Request_group_submitted">Your request to join group '%group_name%' has been submitted.</msg>
<msg key="Joined_group">You have joined the group %group_name%.</msg>
<msg key="Error_joining">Error Joining</msg>
<msg key="Error_joining_details">We experienced an error adding you to the group.</msg>
</message_catalog>
......@@ -15,6 +15,7 @@
<msg key="Account_reopened_message">Su cuenta en %system_name% ha sido reactivada. Bienvenido de nuevo.</msg>
<msg key="Account_reopened_title">Cuenta reactivada</msg>
<msg key="Action">Accin</msg>
<msg key="Active_theme">Activo</msg>
<msg key="Add">Aadir</msg>
<msg key="Add_a_group_of_this_type">Aadir un grupo de este tipo</msg>
<msg key="Add_a_permissible_relationship_type">Aadir un tipo de relacin</msg>
......@@ -94,6 +95,8 @@
<msg key="Confirm">Confirmar:</msg>
<msg key="confirmation_password_changed">Usted ha seleccionado una nueva contrasea con xito</msg>
<msg key="Continue">Continuar</msg>
<msg key="Continue_to_your_account">Continuar a %pvt_home_name%</msg>
<msg key="Convert_to_descendent_subsite_type">Convertir al tipo del subsitio descendiente</msg>
<msg key="Core_Services">Servicios del Core</msg>
<msg key="Country_Name">Pas</msg>
<msg key="create">Crear</msg>
......@@ -123,6 +126,7 @@
<msg key="Delete_selected_app">Borrar aplicaciones seleccionadas</msg>
<msg key="Delete_this_application">Borrar esta aplicacin</msg>
<msg key="Delete_this_group_type">Borrar este tipo de grupo</msg>
<msg key="Delete_this_theme">Borrar ste Tema</msg>
<msg key="Description">Descripcin</msg>
<msg key="Details_for__group_type_pretty_name">Detalles de %group_type_pretty_name%</msg>
<msg key="DevAdmin">Administracin de desarrolladores</msg>
......@@ -139,6 +143,7 @@
<msg key="Edit_caption">Editar Leyenda</msg>
<msg key="edit_comment">editar comentario</msg>
<msg key="Edit_Options">Opciones</msg>
<msg key="Edit_this_theme">Editar este tema</msg>
<msg key="Elements_not_editable">Algunos elementos no pueden ser editados ya que estn siendo administrados por %authority_name%.</msg>
<msg key="Email">Correo electrnico</msg>
<msg key="Email_already_exists">Email ya existe</msg>
......@@ -171,6 +176,8 @@ Para cambiar su contrase
<msg key="Erase_Portrait">Borrar foto</msg>
<msg key="erase_portrait">borrar foto</msg>
<msg key="Error">Error</msg>
<msg key="Error_joining">Error al unirse</msg>
<msg key="Error_joining_details">Ha ocurrido un error al ser aadido al grupo.</msg>
<msg key="Error_sending_mail">Error al enviar el correo</msg>
<msg key="Error_sending_verification_mail">Ha habido un error al enviar el correo para la verificacin por correo</msg>
<msg key="Error_trying_to_register">Ha habido un error al intentar registrar una cuenta para usted.</msg>
......@@ -190,6 +197,7 @@ Para cambiar su contrase
<msg key="Grant">Otorgar</msg>
<msg key="Grant_Permission">Autorizar</msg>
<msg key="Group_administration">Administracin de grupos</msg>
<msg key="Group_members">Miembros del grupo: %group_name%</msg>
<msg key="Group_type">Tipo de grupo</msg>
<msg key="Group_type_administration">Administracin de tipos de grupos</msg>
<msg key="Group_Types">Tipos de Grupo</msg>
......@@ -220,6 +228,8 @@ Para cambiar su contrase
<msg key="Join_subsite">Unirse al subsitio</msg>
<msg key="Join_this_community">Unirse a esta comunidad</msg>
<msg key="Join_this_subsite">Unirse a este subsitio</msg>
<msg key="Joined_group">Se ha unido al grupo %group_name%.</msg>
<msg key="Key">Clave</msg>
<msg key="Keyword">Palabra clave</msg>
<msg key="Last_name">Apellidos</msg>
<msg key="Last_name_not_provided_by_authority">La entidad de autenticacin no nos ha proporcionado su apellido. Por favor, introduzca su apellido.</msg>
......@@ -335,6 +345,7 @@ El equipo de %system_name%</msg>
<msg key="Members">Miembros</msg>
<msg key="Members_only">Slo miembros</msg>
<msg key="Missing_argument">Faltan argumentos</msg>
<msg key="Modified_theme">Modificado</msg>
<msg key="mount">montar</msg>
<msg key="My_Account">Mi Cuenta</msg>
<msg key="Name">Nombre y apellidos:</msg>
......@@ -417,6 +428,8 @@ El equipo de %system_name%</msg>
<msg key="Req_membership_comm">Solicitar pertenecer a esta comunidad</msg>
<msg key="Req_membership_subs">Solicitar pertenecer a este subsitio</msg>
<msg key="Request_Change_Password_token_email">Solicitud de cambio de contrasea: se le ha enviado un correo para cambiar su contrasea. Siga las instrucciones de dicho correo.</msg>
<msg key="Request_group_submitted">La peticin para unirse al grupo &#39;%group_name%&#39; ha sido enviada.</msg>
<msg key="Request_join_submitted">La peticin para unirse al grupo &#39;%group_name%&#39; ha sido enviada.</msg>
<msg key="Request_membership">Solicitar la entrada</msg>
<msg key="Reset_Password">Reiniciar contrasea</msg>
<msg key="return_to_application">volver a la aplicacin</msg>
......@@ -435,6 +448,7 @@ El equipo de %system_name%</msg>
<msg key="Select_Applications">Selecciona las aplicaciones</msg>
<msg key="Select_Applications__helptext">Si una aplicacin no aparece en la lista, necesitar &lt;a href=\&#34;/acs-admin/install/\&#34;&gt;instalarla&lt;/a&gt; en el servidor</msg>
<msg key="Select_relation_type">Selecciona el tipo de relacin</msg>
<msg key="Select_theme">Seleccionar Tema</msg>
<msg key="Send_email_to_this_user">Enviar email a este usuario</msg>
<msg key="Send_me_a_copy">Envienme una copia:</msg>
<msg key="Services">Servicios</msg>
......@@ -456,7 +470,7 @@ El equipo de %system_name%</msg>
<msg key="subcommunity">subcomunidad</msg>
<msg key="subsite">subsitio</msg>
<msg key="Subsite_Configuration">Configuracin del Subsitio</msg>
<msg key="Subsite_Home">Inico %subsite_name%</msg>
<msg key="Subsite_Home">Inicio %subsite_name%</msg>
<msg key="Subsite_name">Nombre del subsitio</msg>
<msg key="Subsite_Package">Paquete del subsitio</msg>
<msg key="Subsites">Subsitios</msg>
......@@ -468,6 +482,7 @@ El equipo de %system_name%</msg>
<msg key="The_name_of_the_new_subsite_you_re_setting_up">El nombre del nuevo subsitio que est configurando</msg>
<msg key="Theme">Theme</msg>
<msg key="theme">theme</msg>
<msg key="Themes">Temas</msg>
<msg key="This_group_is_closed">Este grupo es cerrado. Solo puede ser miembro por invitacin.</msg>
<msg key="This_group_type_can_only_be_administered_by_programmers">Este tipo de grupo slo puede ser administrado por programadores</msg>
<msg key="This_should_be_a_short_string">Debe ser una cadena corta, todo en minsculas, con guiones en lugar de espacios, se utilizar en la direccin de la nueva aplicacin. Si deja en blanco, vamos a generar una en nombre de la aplicacin.</msg>
......@@ -494,6 +509,7 @@ El equipo de %system_name%</msg>
<msg key="Upload_Portrait">Subir una foto</msg>
<msg key="URL">URL</msg>
<msg key="URL_folder_name">Nombre de carpeta</msg>
<msg key="Usage">Uso</msg>
<msg key="User_name">Nombre de usuario</msg>
<msg key="User_Portrait">Fotografa del usuario</msg>
<msg key="User_Portraits">Fotografas de usuario</msg>
......@@ -523,6 +539,7 @@ El equipo de %system_name%</msg>
<msg key="You_dont_have_a_portrait">Usted no tiene una foto. Puede aadirla si lo desea.</msg>
<msg key="You_have_admin_rights_on">Tiene derechos de administracin en los siguientes objetos:</msg>
<msg key="You_have_no_email_alerts">No tiene avisos de correo activados.</msg>
<msg key="You_joined_group">Se ha unido al grupo %group_name%.</msg>
<msg key="Your_Account">Su Cuenta</msg>
<msg key="Your_discussion_alerts">Sus avisos en los foros</msg>
<msg key="Your_Portrait">Su foto</msg>
......
......@@ -27,14 +27,14 @@ uudelleen:</msg>
<msg key="lt_Inherited_Permissions">Perityt käyttöoikeudet</msg>
<msg key="lt_It_would_be_a_very_ba">On todella HUONO IDEA valita tämä vaihtoehto, mikäli käyttämäsi kone on yhteiskäytössä esim. kirjastossa tai koulussa. Seuraava käyttäjä pystyy tällöin kirjautumaan palveluumme sinun tunnuksellasi.</msg>
<msg key="lt_New_registration_at_s">Uusi rekisteröityminen %system_url% -järjestelmään</msg>
<msg key="lt_Note_that_you_can_era">Huomaa, että voit nollata tallentamasi sähköpostiosoitteen ja salasanan valitsemalla &#34;kirjaudu ulos&#34; järjestelmän omalta kotisivultasi. </msg>
<msg key="lt_Note_that_you_can_era">Huomaa, että voit nollata tallentamasi sähköpostiosoitteen ja salasanan valitsemalla &quot;kirjaudu ulos&quot; järjestelmän omalta kotisivultasi. </msg>
<msg key="lt_num_children_Children">%num_children% piilotettu(a) lapsi/lasta</msg>
<msg key="lt_On_portrait_publish_d">%portrait_publish_date% tallensit tänne kuvan nimeltä &lt;a href=&#34;%subsite_url%user/portrait/?return_url=%pvt_home_url%&#34;&gt;%portrait_title%&lt;/a&gt; </msg>
<msg key="lt_On_portrait_publish_d">%portrait_publish_date% tallensit tänne kuvan nimeltä &lt;a href=&quot;%subsite_url%user/portrait/?return_url=%pvt_home_url%&quot;&gt;%portrait_title%&lt;/a&gt; </msg>
<msg key="lt_Our_server_can_tell_y">Palvelimemme voi pyytää selaintasi muistamaan tiettyjä asioita, kuten sähköpostiosoitteesi ja salasanasi. Tämä on kätevää, koska jos olet koneesi ainoa käyttäjä, sinun ei tarvitse jatkuvasti syöttää näitä tietoja uudelleen.</msg>
<msg key="lt_Password_Confirmation">Salasnan varmistus:</msg>
<msg key="lt_Personal_Home_Page_UR">Oman kotisivun osoite:</msg>
<msg key="lt_Please_read_and_follo">Lue ja seuraa viestissä olevia ohjeita.</msg>
<msg key="lt_Please_try_to_a_hrefi">&lt;a href=&#34;index&#34;&gt;Kirjaudu&lt;/a&gt; ystävällisesti uudelleen</msg>
<msg key="lt_Please_try_to_a_hrefi">&lt;a href=&quot;index&quot;&gt;Kirjaudu&lt;/a&gt; ystävällisesti uudelleen</msg>
<msg key="lt_Problem_with_authenti">Ongelma käyttäjän autentikoinnissa</msg>
<msg key="lt_Registration_informat">Palvelun rekisteröitymisohjeet lähetettiin osoitteeseen %email%.</msg>
<msg key="lt_Registration_informat_1">Palvelun rekisteröitymisohjeet lähetettiin osoitteeseen %email%.</msg>
......@@ -51,7 +51,7 @@ uudelleen:</msg>
<msg key="lt_Your_email_has_been_c">Sähköpostisi on vahvistettu. Voit nyt kirjautua %system_name%-järjestelmään.</msg>
<msg key="lt_Your_email_has_been_c_1">Sähköpostisi on vahvistettu. Joudut vielä odottamaan järjestelmän %system_name% ylläpitäjän hyväksyntää.</msg>
<msg key="lt_Your_email_is_confirm">Sähköpostisi on vahvistettu</msg>
<msg key="lt_Your_URL_doesnt_have_">Antamasi osoitteen muoto ei kelpaa. Pätevä URL voisi olla jotain tämän kaltaista: \&#34;%valid_url_example%\&#34;.&#34;</msg>
<msg key="lt_Your_URL_doesnt_have_">Antamasi osoitteen muoto ei kelpaa. Pätevä URL voisi olla jotain tämän kaltaista: \&quot;%valid_url_example%\&quot;.&quot;</msg>
<msg key="Name">Nimi:</msg>
<msg key="New_Password">Uusi salasana:</msg>
<msg key="no_portrait_title_message">kuvasi</msg>
......
This diff is collapsed.
This diff is collapsed.
......@@ -26,5 +26,5 @@
<msg key="lt_Inherited_Permissions">権限の継承</msg>
<msg key="lt_It_would_be_a_very_ba">図書館や学校などで共有のコンピュータを使用している場合は、このオプションにはチェックしないことをお勧めします。このコンピュータのこれ以降のユーザは誰でも、このサイトであなたになりすますことができてしまいます。</msg>
<msg key="lt_New_registration_at_s">%system_url% への新規登録</msg>
<msg key="lt_Note_that_you_can_era">保存したメールアドレスとパスワードは、ワークスペースの&#34;ログアウト&#34;オプションを選択することで削除することができます。</msg>
<msg key="lt_Note_that_you_can_era">保存したメールアドレスとパスワードは、ワークスペースの&quot;ログアウト&quot;オプションを選択することで削除することができます。</msg>
</message_catalog>
This diff is collapsed.
......@@ -8,8 +8,8 @@
<msg key="Account_at_system_closed">Kontoen din ved %system_name% har blitt stengt. </msg>
<msg key="Account_close_confirm_no_label">Nei, ta meg tilbake til %pvt_home_name%</msg>
<msg key="Account_close_confirm_yes_label">Ja, avslutt min konto</msg>
<msg key="Account_closed">&lt;p&gt;Kontoen din er stengt.&lt;/p&gt; &lt;p&gt;Dersom du nsker det, kan vi &lt;a href=&#34;%restore_url%&#34;&gt;pne kontoen din igjen&lt;/a&gt;.&lt;/p&gt;</msg>
<msg key="Account_closed_workspace_msg">&lt;p&gt; &lt;font color=&#34;red&#34;&gt; &lt;b&gt; Kontoen din er stengt. &lt;/b&gt; &lt;/font&gt; &lt;a href=&#34;%login_url%&#34;&gt;Logg inn&lt;/a&gt; igjen for se hva du kan gjre med det. &lt;/p&amp;;gt; </msg>
<msg key="Account_closed">&lt;p&gt;Kontoen din er stengt.&lt;/p&gt; &lt;p&gt;Dersom du nsker det, kan vi &lt;a href=&quot;%restore_url%&quot;&gt;pne kontoen din igjen&lt;/a&gt;.&lt;/p&gt;</msg>
<msg key="Account_closed_workspace_msg">&lt;p&gt; &lt;font color=&quot;red&quot;&gt; &lt;b&gt; Kontoen din er stengt. &lt;/b&gt; &lt;/font&gt; &lt;a href=&quot;%login_url%&quot;&gt;Logg inn&lt;/a&gt; igjen for se hva du kan gjre med det. &lt;/p&amp;;gt; </msg>
<msg key="Account_reopened_message">Din konto ved %system_name% har blitt gjenpnet. Velkommen tilbake.</msg>
<msg key="Account_reopened_title">Konto gjenpnet</msg>
<msg key="Action">Oppgave</msg>
......@@ -46,6 +46,7 @@
<msg key="Confirm">Bekreft:</msg>
<msg key="confirmation_password_changed">Nytt passord er registrert</msg>
<msg key="Continue">Fortsett</msg>
<msg key="Continue_to_your_account">Fortsett til %pvt_home_name%</msg>
<msg key="Country_Name">Navn p land</msg>
<msg key="Create_new_community">Lag ny %pretty_name%</msg>
<msg key="Create_new_subsite">Lag nu undergruppe</msg>
......@@ -136,15 +137,15 @@
<msg key="lt_It_would_be_a_very_ba">Det ville vre svrt lite klokt velge dette dersom du bruker en felles datamaskin i et biblotek eller fellesareal. Alle brukere som kommer etter deg vil kunne opptre som deg p tjenesten vr.</msg>
<msg key="lt_New_registration_at_s">Ny registrering p %system_url%</msg>
<msg key="lt_Note_text_in_red_below">Legg merke til at tekst i rdt under feltet for innlegging av parameter betyr at verdien til denne parameteren er overstyrt av et innleg i Open ACS parameterfil. Bruk av parameterfilen er ikke anbefalt, men noen steder m man bruke dem for gi spesifkke verdier til parametre uavhengig av apm_parametertabeller.</msg>
<msg key="lt_Note_that_you_can_era">Legg merke til at du kan slette e-postadressen og passordet du har lagret ved velge &#34;logg ut&#34; fra arbeidsomrdet ditt.</msg>
<msg key="lt_Note_that_you_can_era">Legg merke til at du kan slette e-postadressen og passordet du har lagret ved velge &quot;logg ut&quot; fra arbeidsomrdet ditt.</msg>
<msg key="lt_num_children_Children">%num_children% Barn gjemt </msg>
<msg key="lt_On_portrait_publish_d">Den %portrait_publish_date%, lastet du opp &lt;a href=&#34;%subsite_url%user/portrait/?return_url=%pvt_home_url%&#34;&gt;%portrait_title%&lt;/a&gt; </msg>
<msg key="lt_On_portrait_publish_d">Den %portrait_publish_date%, lastet du opp &lt;a href=&quot;%subsite_url%user/portrait/?return_url=%pvt_home_url%&quot;&gt;%portrait_title%&lt;/a&gt; </msg>
<msg key="lt_Our_server_can_tell_y">Tjenesten vr kan be webleseren din huske visse ting, som bruker-id og passord. Dette er praktisk for deg fordi, dersom du er den eneste personen som bruker denne maskinen, s trenger du ikke fortelle dem til oss hele tiden.</msg>
<msg key="lt_Password_Confirmation">Bekreft passord:</msg>
<msg key="lt_Personal_Home_Page_UR">URL for personlig webside:</msg>
<msg key="lt_Please_locate_your_co">Du kan finne landkoden i listen under, s bruker du &#34;tilbake&#34;-knappen p nettleseren din for komme tilbake til det forrige skjemaet.</msg>
<msg key="lt_Please_locate_your_co">Du kan finne landkoden i listen under, s bruker du &quot;tilbake&quot;-knappen p nettleseren din for komme tilbake til det forrige skjemaet.</msg>
<msg key="lt_Please_read_and_follo">Vennligst les og flg instruksjonene i denne e-posten.</msg>
<msg key="lt_Please_try_to_a_hrefi">Vennligst prv &lt;a href=&#34;index&#34;&gt;logge inn&lt;/a&gt; igjen</msg>
<msg key="lt_Please_try_to_a_hrefi">Vennligst prv &lt;a href=&quot;index&quot;&gt;logge inn&lt;/a&gt; igjen</msg>
<msg key="lt_Portrait_of_first_last">Portrett av %first_names% %last_name%</msg>
<msg key="lt_Privileges_higher_implied">Rettigheter hyere i hierarkiet tar med seg rettighetene under - for eksempel dersom du gir noen rettighet som admin, vil lese- og skriverettigheter automatisk vre gitt ogs.</msg>
<msg key="lt_Problem_with_authenti">Problemer med autentisering</msg>
......@@ -165,7 +166,7 @@
<msg key="lt_Upload_your_favorite">Last opp din favorittfil, et innskannet JPEG eller GIF, fra din egen datamaskin (legg merke til at du ikke kan vise til et bilde et annet sted p internettet; dette bildet m ligge p harddisken p din egen maskin).</msg>
<msg key="lt_Uploaded_pretty_date">Lastet opp: %pretty_date%</msg>
<msg key="lt_Uploaded_publish_date">Lastet opp: %publish_date%</msg>
<msg key="lt_Use_the_Browse_button">Bruk &#34;Sk...&#34;-knappen til finne filen din, s klikker du &#34;pne&#34;.</msg>
<msg key="lt_Use_the_Browse_button">Bruk &quot;Sk...&quot;-knappen til finne filen din, s klikker du &quot;pne&quot;.</msg>
<msg key="lt_User_has_portrait_title">Denne brukerene har lagt inn en beskrivelse eller lastet opp et bilde</msg>
<msg key="lt_We_cant_find_you">Vi kan ikke finne deg (bruker %user_id%) i brukertabellen, Sannsynligvis har kontoen din blitt slettet av en eller annen grunn.</msg>
<msg key="lt_We_had_a_problem_proc">Vi fikk et problem da vi skulle prosessere ditt innlegg.</msg>
......@@ -179,7 +180,7 @@
<msg key="lt_Your_email_has_been_c_1">E-posten din har blitt mottatt. Du venter n p endelig godkjenning fra administrator for %system_name%.</msg>
<msg key="lt_Your_email_is_confirm">E-posten din er mottatt.</msg>
<msg key="lt_Your_login_has_expire">Innloggingen din har gtt ut p tid. Vennligst skriv passordet ditt p nytt for fortsette arbeidet.</msg>
<msg key="lt_Your_URL_doesnt_have_">Din URL har ikke korrekt form. En gyldig URL er noe som ligner p dette: &#34;%valid_url_example%&#34;. </msg>
<msg key="lt_Your_URL_doesnt_have_">Din URL har ikke korrekt form. En gyldig URL er noe som ligner p dette: &quot;%valid_url_example%&quot;. </msg>
<msg key="Make_administrator">Lag administrator</msg>
<msg key="Make_member">Lag medlem</msg>
<msg key="Make_yourself_invisible_label">Gjr deg selv usynlig</msg>
......@@ -206,7 +207,7 @@
<msg key="Or_add_a_new_user">Eller legg til en ny bruker</msg>
<msg key="or_the">eller</msg>
<msg key="Password">Passord:</msg>
<msg key="Password_changed_body">Innloggingen din ved %system_name%: %account_id_label%: %account_id% Passordet ditt for denne kontoen har nylig blitt endret. Du trenger ikke gjre noe, dette er bare en melding for beskytte sikkerheten av kontoen din. --------------- Du kan alltid endre passordet ditt ved gjre flgende: 1. Logg inn ved %system_name% 2. Klikk p &#34;%pvt_home_name%&#34; lenke 3. Velg &#34;%password_update_link_text%&#34; </msg>
<msg key="Password_changed_body">Innloggingen din ved %system_name%: %account_id_label%: %account_id% Passordet ditt for denne kontoen har nylig blitt endret. Du trenger ikke gjre noe, dette er bare en melding for beskytte sikkerheten av kontoen din. --------------- Du kan alltid endre passordet ditt ved gjre flgende: 1. Logg inn ved %system_name% 2. Klikk p &quot;%pvt_home_name%&quot; lenke 3. Velg &quot;%password_update_link_text%&quot; </msg>
<msg key="Password_changed_subject">Passord endret</msg>
<msg key="Permissions">Rettigheter</msg>
<msg key="permissions">rettigheter</msg>
......
......@@ -8,9 +8,9 @@
<msg key="Account_at_system_closed">Twoje konto w %system_name% zostało zamknięte.</msg>
<msg key="Account_close_confirm_no_label">Nie, wróć do %pvt_home_name%</msg>
<msg key="Account_close_confirm_yes_label">Tak, proszę zamknąć moje konto</msg>
<msg key="Account_closed">&lt;p&gt;Twoje konto jest aktualnie zamknięte.&lt;/p&gt; &lt;p&gt;Jeśli chcesz możemy &lt;a href=&#34;%restore_url%&#34;&gt; je otworzyć ponownie&lt;/a&gt;.&lt;/p&gt;</msg>
<msg key="Account_closed">&lt;p&gt;Twoje konto jest aktualnie zamknięte.&lt;/p&gt; &lt;p&gt;Jeśli chcesz możemy &lt;a href=&quot;%restore_url%&quot;&gt; je otworzyć ponownie&lt;/a&gt;.&lt;/p&gt;</msg>
<msg key="Account_closed_title">Konto Zamknięte</msg>
<msg key="Account_closed_workspace_msg">p&gt; &lt;font color=&#34;red&#34;&gt; &lt;b&gt; Twoje konto jest obecnie zamknięte. &lt;/b&gt; &lt;/font&gt; &lt;a href=&#34;%login_url%&#34;&gt;Zaloguj się&lt;/a&gt; ponownie i zobacz co w tej sprawie możesz zrobić. &lt;/p&amp;;gt; </msg>
<msg key="Account_closed_workspace_msg">p&gt; &lt;font color=&quot;red&quot;&gt; &lt;b&gt; Twoje konto jest obecnie zamknięte. &lt;/b&gt; &lt;/font&gt; &lt;a href=&quot;%login_url%&quot;&gt;Zaloguj się&lt;/a&gt; ponownie i zobacz co w tej sprawie możesz zrobić. &lt;/p&amp;;gt; </msg>
<msg key="Account_not_avail_now">To konto jest w tej chwili niedostępne.</msg>
<msg key="Account_reopened_message">Twoje konto w %system_name% zostało otwarte. Witamy ponownie.</msg>
<msg key="Account_reopened_title">Konto otwarte ponownie.</msg>
......@@ -24,9 +24,7 @@
<msg key="Admin">Admin</msg>
<msg key="admin">Admin</msg>
<msg key="Administer_subsite">Zarządzaj %subsite_name% </msg>
<msg key="Administration">Administracja</msg>
<msg key="Administrative_options">Opcje administracyjne dla tego użytkownika</msg>
<msg key="Advanced">Zaawansowane</msg>
<msg key="Alert_Type">Typ zawiadomienia</msg>
<msg key="another_picture">inna ilustracja</msg>
<msg key="Answer">Odpowiedź:</msg>
......@@ -56,7 +54,6 @@
<msg key="Communities">Wspólnoty</msg>
<msg key="communities">wspólnoty</msg>
<msg key="community">wspólnota</msg>
<msg key="Configuration">Konfiguracja</msg>
<msg key="Confirm">Potwierdź:</msg>
<msg key="confirmation_password_changed">Zmiana hasła przebiegła pomyślnie.</msg>
<msg key="Continue">Kontynuuj</msg>
......@@ -178,17 +175,17 @@
<msg key="lt_It_would_be_a_very_ba">Jest to zupełnie zły pomysł, jeśli używasz publicznego komputera - jak w bibliotece lub szkole. Ktokolwiek, kto użyje tej maszyny po Tobie, bedzie mógł się pod Ciebie podszyć w tym systemie.</msg>
<msg key="lt_New_registration_at_s">Nowa rejestracja w %system_url%</msg>
<msg key="lt_Note_text_in_red_below">Tekst czerwoną czcionką poniżej pola parametru wskazuje, że wartość tego parametru jest nadpisana przez wpis w pliku konfiguracyjnym OpenACS. Używanie pliku z parametrami jest nie jest zalecane, ale niektóre instalacje wymagają specyficznych wartości dla każdej instancji niezależnie od tabeli parametrów apm_parameter.</msg>
<msg key="lt_Note_that_you_can_era">Możesz wymazać swoje zapisane email i hasło wybierając &#34;wyloguj się&#34; na Twoim Pulpicie.</msg>
<msg key="lt_Note_that_you_can_era">Możesz wymazać swoje zapisane email i hasło wybierając &quot;wyloguj się&quot; na Twoim Pulpicie.</msg>
<msg key="lt_num_children_Children">%num_children% Ukrytych Dzieci</msg>
<msg key="lt_On_portrait_publish_d">%portrait_publish_date% wgrano &lt;a href=&#34;%subsite_url%user/portrait/?return_url=%pvt_home_url%&#34;&gt;%portrait_title%&lt;/a&gt;</msg>
<msg key="lt_On_portrait_publish_d">%portrait_publish_date% wgrano &lt;a href=&quot;%subsite_url%user/portrait/?return_url=%pvt_home_url%&quot;&gt;%portrait_title%&lt;/a&gt;</msg>
<msg key="lt_Our_server_can_tell_y">Twoja przeglądarka może zapamiętać Twój email i hasło. Jest to wygodne, bo nie musisz ciągle ich wpisywać - ale bezpieczne TYLKO wtedy gdy JEDYNIE TY używasz komputera z którego odwiedzasz nasz system.</msg>
<msg key="lt_Password_Confirmation">Potwierdzenie Hasła</msg>
<msg key="lt_Personal_Home_Page_UR">URL Strony Domowej</msg>
<msg key="lt_Please_locate_your_co">Wskaż kod swojego kraju na tej liście i kliknij przycisk &#34;powrót&#34; w swojej przeglądarce by przejść do poprzedniego formularza.</msg>
<msg key="lt_Please_locate_your_co">Wskaż kod swojego kraju na tej liście i kliknij przycisk &quot;powrót&quot; w swojej przeglądarce by przejść do poprzedniego formularza.</msg>
<msg key="lt_Please_read_and_follo">Proszę wypełnić instrukcje podane w niniejszym mailu.</msg>
<msg key="lt_Please_try_to_a_hrefi">Proszę &lt;a href=&#34;index&#34;&gt;zalogować się&lt;/a&gt; ponownie</msg>
<msg key="lt_Please_try_to_a_hrefi">Proszę &lt;a href=&quot;index&quot;&gt;zalogować się&lt;/a&gt; ponownie</msg>
<msg key="lt_Portrait_of_first_last">Portret użytkownika: %first_names% %last_name%</msg>
<msg key="lt_Privileges_higher_implied">Przywilej wyższy w hierarchii zakłada przywileje niższe. To znaczy jeśli przyznasz prawa &#34;admin&#34;, prawa &#34;czytaj&#34;, &#34;pisz&#34;, etc. są przyznawane automatycznie.</msg>
<msg key="lt_Privileges_higher_implied">Przywilej wyższy w hierarchii zakłada przywileje niższe. To znaczy jeśli przyznasz prawa &quot;admin&quot;, prawa &quot;czytaj&quot;, &quot;pisz&quot;, etc. są przyznawane automatycznie.</msg>
<msg key="lt_Problem_with_authenti">Problem potwierdzenia tożsamości</msg>
<msg key="lt_Registration_informat">Informacja o rejestracji w tym serwisie została wysłana do %email%.</msg>
<msg key="lt_Registration_informat_1">Informacja o rejestracji w tym serwisie została wysłana do %email%.</msg>
......@@ -209,7 +206,7 @@
<msg key="lt_Upload_your_favorite">Wgraj swój ulubiony plik, skan JPEG lub GIF, z Twojego kmputera ( plik musi być lokalnie na tym komputerze; nie możesz podać adresu pliku skądś w Internecie ).</msg>
<msg key="lt_Uploaded_pretty_date">Wgrano: %pretty_date%</msg>
<msg key="lt_Uploaded_publish_date">Wgrano: %publish_date%</msg>
<msg key="lt_Use_the_Browse_button">Użyj przycisku &#34;przeglądaj...&#34; by wskazać plik, następnie kliknij &#34;Otwórz&#34;. </msg>
<msg key="lt_Use_the_Browse_button">Użyj przycisku &quot;przeglądaj...&quot; by wskazać plik, następnie kliknij &quot;Otwórz&quot;. </msg>
<msg key="lt_User_has_portrait_title">Ten użytkownik wpisał biografię lub wgrał portret</msg>
<msg key="lt_We_cant_find_you">Nie można odnaleźć Cię (użytkownik %user_id%) w tabeli. Prawdopodobnie Twoje konto zostało z jakigoś powodu usunięte. </msg>
<msg key="lt_We_had_a_problem_proc">Mieliśmy problem z przetwarzaniem Twoich danych.</msg>
......@@ -224,7 +221,7 @@
<msg key="lt_Your_email_has_been_c_1">Twój email został potwierdzony. Oczekujesz teraz na zatwierdzenie administratora %system_name%.</msg>
<msg key="lt_Your_email_is_confirm">Twój email jest potwierdzony</msg>
<msg key="lt_Your_login_has_expire">Twój login jest nieaktualny. Proszę ponownie wpisać hasło.</msg>
<msg key="lt_Your_URL_doesnt_have_">Twój URL ma błędną formę. Przykład prawidłowego URL to \&#34;%valid_url_example%\&#34;.&#34;</msg>
<msg key="lt_Your_URL_doesnt_have_">Twój URL ma błędną formę. Przykład prawidłowego URL to \&quot;%valid_url_example%\&quot;.&quot;</msg>
<msg key="mail_a_message_to">Wyślij email do:</msg>
<msg key="Make_administrator">Utwórz administratora</msg>
<msg key="Make_member">Utwórz członka</msg>
......@@ -242,7 +239,6 @@
<msg key="Name">Nazwa</msg>
<msg key="new_application">nowa aplikacja</msg>
<msg key="New_Password">Nowe Hasło:</msg>
<msg key="New_Subsite">Nowa podwitryna</msg>
<msg key="No_applications">Brak aplikacji</msg>
<msg key="no_assessment">Brak sprawdzianów.</msg>
<msg key="No_ISO_Codes">Brak kodów ISO</msg>
......@@ -267,7 +263,7 @@
<msg key="Passwords_dont_match">Hasła nie pasują</msg>
<msg key="perm_cannot_be_removed">To prawo nie może być usunięte.</msg>
<msg key="Permissions">Prawa</msg>
<msg key="permissions">uprawnienia</msg>
<msg key="permissions">prawa</msg>
<msg key="Permissions_for_name">Prawa dla %name%</msg>
<msg key="Please_return_to_home">Proszę powrócić do %home_link%.</msg>
<msg key="Portrait">Portret</msg>
......@@ -298,12 +294,10 @@
<msg key="Send_email_to_this_user">Wyślij email do tego użytkownika</msg>
<msg key="Send_me_a_copy">Prześli mi kopię:</msg>
<msg key="Show">Pokaż</msg>
<msg key="Site_Map">Mapa Strony</msg>
<msg key="sorry_forgotten_pwd">Przepraszamy, nie możemy pomóc Ci w przypadku zapomnianego hasła.</msg>
<msg key="Status">Status</msg>
<msg key="Story_Behind_Photo">Historia o Fotografii</msg>
<msg key="Story_behind_photo">Historia o Fotografii</msg>
<msg key="Subsite_Home">Strona domowa %subsite_name%</msg>
<msg key="Thank_you">Dziękujemy.</msg>
<msg key="The_ISO_codes_were_not">Kody ISO jeszcze nie zostały załadowane do tego serwera.</msg>
<msg key="This_group_is_closed">Ta grua jest zamknięta. Nowi członkowie mogą się zapisać tylko przez zaproszenie.</msg>
......
This diff is collapsed.
This diff is collapsed.
......@@ -27,7 +27,7 @@
<msg key="Home_page">Ana sayfa</msg>
<msg key="Last_name">Soyadiniz</msg>
<msg key="Logout">Sistemden cik</msg>
<msg key="Logout_from_system">%system_name% &#39;den cik</msg>
<msg key="Logout_from_system">%system_name% 'den cik</msg>
<msg key="lt_Show_everyone_else_at">Sistemdeki %system_name% haric herkese nasil gorundugumu goster:</msg>
<msg key="lt_What_other_people_see">Diger kullanicilar isminize tiklayinca ne gorecekler</msg>
<msg key="Make_yourself_invisible_label">Kendizini gorunmez yapin</msg>
......
......@@ -8,8 +8,8 @@
<msg key="Account_at_system_closed">您在%system_name%的帐户已关闭。</msg>
<msg key="Account_close_confirm_no_label">返回%pvt_home_name%</msg>
<msg key="Account_close_confirm_yes_label">请关闭帐户。</msg>
<msg key="Account_closed">&lt;p&gt;您的帐户已关闭。&lt;/p&gt; &lt;p&gt;我们可以为您&lt;a href=&#34;%restore_url%&#34;&gt;重新打开&lt;/a&gt;&lt;/p&gt; </msg>
<msg key="Account_closed_workspace_msg">&lt;p&gt; &lt;font color=&#34;red&#34;&gt; &lt;b&gt; 您的帐户已关闭。可以重新&lt;/b&gt; &lt;/font&gt; &lt;a href=&#34;%=&#34;%login_url%%&#34;&gt;登录&lt;/a&gt; 查看有关情况。 &lt;/p&amp;;gt; </msg>
<msg key="Account_closed">&lt;p&gt;您的帐户已关闭。&lt;/p&gt; &lt;p&gt;我们可以为您&lt;a href=&quot;%restore_url%&quot;&gt;重新打开&lt;/a&gt;&lt;/p&gt; </msg>
<msg key="Account_closed_workspace_msg">&lt;p&gt; &lt;font color=&quot;red&quot;&gt; &lt;b&gt; 您的帐户已关闭。可以重新&lt;/b&gt; &lt;/font&gt; &lt;a href=&quot;%=&quot;%login_url%%&quot;&gt;登录&lt;/a&gt; 查看有关情况。 &lt;/p&amp;;gt; </msg>
<msg key="Account_reopened_message">您在%system_name%的帐户重新打开,欢迎回来。</msg>
<msg key="Account_reopened_title">帐户重新打开</msg>
<msg key="Action">操作</msg>
......@@ -46,6 +46,7 @@
<msg key="Confirm">确认</msg>
<msg key="confirmation_password_changed">已成功选择新密码</msg>
<msg key="Continue">继续</msg>
<msg key="Continue_to_your_account">到%pvt_home_name% </msg>
<msg key="Country_Name">国家名称</msg>
<msg key="Create_new_community">新建%pretty_name%</msg>
<msg key="Create_new_subsite">新建子网页</msg>
......@@ -136,15 +137,15 @@
<msg key="lt_It_would_be_a_very_ba">如果您使用的是公共计算机,建议不选用该项。否则,使用该计算机的其他人有可能会以您的名义使用系统。</msg>
<msg key="lt_New_registration_at_s">新注册到%system_url%</msg>
<msg key="lt_Note_text_in_red_below">注意:参数域下面文本为红色标记时表示此参数的值被OpenACS参数文件拒绝。一般不建议使用参数文件,但是某些网站需要它提供特定值。</msg>
<msg key="lt_Note_that_you_can_era">注意:在你的工作空间中选择&#34;退出&#34;,取消你存储的email地址和密码。</msg>
<msg key="lt_Note_that_you_can_era">注意:在你的工作空间中选择&quot;退出&quot;,取消你存储的email地址和密码。</msg>
<msg key="lt_num_children_Children">%num_children%子隐藏</msg>
<msg key="lt_On_portrait_publish_d">%portrait_publish_date%日,您上传了&lt;a href=&#34;%subsite_url%user/portrait/?return_url=%pvt_home_url%&#34;&gt;%portrait_title%&lt;/a&gt; </msg>
<msg key="lt_On_portrait_publish_d">%portrait_publish_date%日,您上传了&lt;a href=&quot;%subsite_url%user/portrait/?return_url=%pvt_home_url%&quot;&gt;%portrait_title%&lt;/a&gt; </msg>
<msg key="lt_Our_server_can_tell_y">服务器可以记忆email地址和密码。如果您是个人使用该计算机,就不用每次都输入email地址和密码。</msg>
<msg key="lt_Password_Confirmation">确认密码</msg>
<msg key="lt_Personal_Home_Page_UR">个人主页URL:</msg>
<msg key="lt_Please_locate_your_co">请在下面列表中找到您的国家代码,单击Back钮返回前一表格。</msg>
<msg key="lt_Please_read_and_follo">请阅读email中的说明。</msg>
<msg key="lt_Please_try_to_a_hrefi">请重新&lt;a href=&#34;index&#34;&gt;登录&lt;/a&gt;</msg>
<msg key="lt_Please_try_to_a_hrefi">请重新&lt;a href=&quot;index&quot;&gt;登录&lt;/a&gt;</msg>
<msg key="lt_Portrait_of_first_last">%first_names% %last_name%肖像</msg>
<msg key="lt_Privileges_higher_implied">高权限的用户能自动赋予下级它所具有的权利。如,当授予了管理权后,就能读、写等等。</msg>
<msg key="lt_Problem_with_authenti">帐户认定问题</msg>
......@@ -179,7 +180,7 @@
<msg key="lt_Your_email_has_been_c_1">您的email已确认。请等候%system_name%管理员的批准。</msg>
<msg key="lt_Your_email_is_confirm">您的email已确认</msg>
<msg key="lt_Your_login_has_expire">您的登录过期。请重新输入密码可继续工作。</msg>
<msg key="lt_Your_URL_doesnt_have_">URL格式错误。一个有效的URL样式如下:&#34;%valid_url_example%&#34;</msg>
<msg key="lt_Your_URL_doesnt_have_">URL格式错误。一个有效的URL样式如下:&quot;%valid_url_example%&quot;</msg>
<msg key="Make_administrator">成为管理员</msg>
<msg key="Make_member">成为会员</msg>
<msg key="Make_yourself_invisible_label">使自己不可见</msg>
......@@ -206,7 +207,7 @@
<msg key="Or_add_a_new_user">或增加新用户</msg>
<msg key="or_the">或这</msg>
<msg key="Password">密码</msg>
<msg key="Password_changed_body">您在的%system_name%登陆信息:%account_id_label%: %account_id%,您帐户的密码已更改。这仅仅是一个通知。您总可以通过以下步骤更改您的密码:1.登陆%system_name% 2.单击&#34;%pvt_home_name%&#34; 3.选择&#34;%password_update_link_text%&#34; </msg>
<msg key="Password_changed_body">您在的%system_name%登陆信息:%account_id_label%: %account_id%,您帐户的密码已更改。这仅仅是一个通知。您总可以通过以下步骤更改您的密码:1.登陆%system_name% 2.单击&quot;%pvt_home_name%&quot; 3.选择&quot;%password_update_link_text%&quot; </msg>
<msg key="Password_changed_subject">密码已更改</msg>
<msg key="Permissions">许可</msg>
<msg key="permissions">许可</msg>
......
......@@ -3,7 +3,7 @@
<msg key="About_You">關於你</msg>
<msg key="Account_at_system_closed">你在%system_name%的帳號已被關閉</msg>
<msg key="Account_closed">&lt;p&gt;你的帳號已被關閉.&lt;/p&gt; &lt;p&gt;我們可以為你&lt;a href=&#34;%restore_url%&#34;&gt;重新開啟.&lt;/p&gt;</msg>
<msg key="Account_closed">&lt;p&gt;你的帳號已被關閉.&lt;/p&gt; &lt;p&gt;我們可以為你&lt;a href=&quot;%restore_url%&quot;&gt;重新開啟.&lt;/p&gt;</msg>
<msg key="Answer">解答:</msg>
<msg key="at"></msg>
<msg key="Bad_Password">密碼錯誤</msg>
......@@ -19,7 +19,6 @@
<msg key="Email_Confirmation">電子郵件確認</msg>
<msg key="Email_not_Requested">未給予電子郵件</msg>
<msg key="Error_sending_mail">郵件傳送錯誤</msg>
<msg key="Forgot_your_password">忘記密碼?</msg>
<msg key="Grant">授與</msg>
<msg key="Grant_Permission">授與權限</msg>
<msg key="Join_group_name">加入 %group_name%</msg>
......@@ -30,7 +29,5 @@
<msg key="lt_first_names_last_name">%first_names% %last_name% (%email%) 註冊為 %system_url% 的使用者</msg>
<msg key="lt_Grant_Permission_on_n">授權給 %name%</msg>
<msg key="lt_Inherited_Permissions">繼承的權限</msg>
<msg key="Password">密碼</msg>
<msg key="Remember_my_login">在電腦上記錄我的登入資訊</msg>
<msg key="Welcome_user">歡迎光臨, %user_name%</msg>
</message_catalog>
......@@ -2,7 +2,11 @@ set admin_p [permission::permission_p -object_id [ad_conn subsite_id] -privilege
set actions [list]
if { $admin_p } {
lappend actions [_ acs-subsite.Add_new_app] [export_vars -base "[subsite::get_element -element url]admin/applications/application-add" { { return_url [ad_return_url] } }] {}
lappend actions \
[_ acs-subsite.Add_new_app] \
[export_vars -base "[subsite::get_element -element url]admin/applications/application-add" {
{ return_url [ad_return_url] }
}]
}
list::create \
......@@ -21,25 +25,7 @@ set subsite_node_id [subsite::get_element -element node_id]
set user_id [ad_conn user_id]
db_multirow applications select_applications {
select p.package_id,
p.instance_name,
n.node_id,
n.name
from site_nodes n,
apm_packages p,
apm_package_types t
where n.parent_id = :subsite_node_id
and p.package_id = n.object_id
and t.package_key = p.package_key
and t.package_type = 'apm_application'
and exists (select 1
from all_object_party_privilege_map perm
where perm.object_id = p.package_id
and perm.privilege = 'read'
and perm.party_id = :user_id)
order by upper(instance_name)
}
db_multirow applications select_applications {}
# Local variables:
......
<if @user_info.email_verified_p@ true>
<if @user_info.email_verified_p;literal@ true>
<property name="doc(title)">#acs-subsite.lt_Your_email_is_confirm#</property>
......
......@@ -35,7 +35,7 @@
<li><a href="../user/email-privacy-level">#acs-subsite.Change_my_email_P#</a></li>
</ul>
<if @invisible_p@ true>
<if @invisible_p;literal@ true>
#acs-subsite.Currently_invisible_msg#
<ul>
<li><a href="@make_visible_url@">#acs-subsite.Make_yourself_visible_label#</a></li>
......@@ -60,7 +60,7 @@
</div>
</div>
<div class="portlet">
<include src="@user_info_template;literal@" />
<include src="@user_info_template;literal@" >
<if @account_status@ eq "closed">
#acs-subsite.Account_closed_workspace_msg#
</if>
......
......@@ -6,17 +6,20 @@
<table cellspacing=0 cellpadding=0 border=0>
<tr valign=center>
<td>
<if @forgotten_pwd_url@ not nil>
<if @email_forgotten_password_p@ true>
<a href="@forgotten_pwd_url@">#acs-subsite.Forgot_your_password#</a>
<br>
</if>
<if @email_forgotten_password_p;literal@ true>
<a href="@forgotten_pwd_url;literal@" true>#acs-subsite.Forgot_your_password#</a>
<br>
</if>
</if>
<if @self_registration@ true>
<if @register_url@ not nil>
<a href="@register_url@">#acs-subsite.Register#</a>
</if>
<if @self_registration;literal@ true>
<if @register_url@ not nil>
<a href="@register_url@">#acs-subsite.Register#</a>
</if>
</if>
</td>
<td width=10>&nbsp;</td>
<td align=right>
......@@ -39,6 +42,7 @@
</tr>
</table>
</div>
# Present a login box
#
# Expects:
# subsite_id - optional, defaults to nearest subsite
# return_url - optional, defaults to Your Account
# Optional:
# authority_id
# username
# email
#
ad_include_contract {
ADP include for presentin a login box
@param subsite_id - optional, defaults to nearest subsite
@param return_url - optional, defaults to Your Account
@param authority_id
@param username
@param email
} {
{subsite_id:naturalnum ""}
{return_url:localurl,trim ""}
{authority_id:naturalnum ""}
{host_node_id:naturalnum ""}
{username ""}
{email ""}
}
# Redirect to HTTPS if so configured
if { [security::RestrictLoginToSSLP] } {
......@@ -19,7 +25,7 @@ set self_registration [parameter::get_from_package_key \
-parameter AllowSelfRegister \
-default 1]
if { ![info exists subsite_id] || $subsite_id eq "" } {
if { $subsite_id eq "" } {
set subsite_id [subsite::get_element -element object_id]
}
......@@ -28,14 +34,6 @@ set email_forgotten_password_p [parameter::get \
-package_id $subsite_id \
-default 1]
if { ![info exists username] } {
set username {}
}
if { ![info exists email] } {
set email {}
}
if { $email eq "" && $username eq "" && [ad_conn untrusted_user_id] != 0 } {
acs_user::get -user_id [ad_conn untrusted_user_id] -array untrusted_user
if { [auth::UseEmailForLoginP] } {
......@@ -54,12 +52,21 @@ if { $email eq "" && $username eq "" && [ad_conn untrusted_user_id] != 0 } {
# 1. Allowed if allowed both site-wide (on acs-kernel) and on the subsite
# 2. Default setting is in acs-kernel
set allow_persistent_login_p [parameter::get -parameter AllowPersistentLoginP -package_id [ad_acs_kernel_id] -default 1]
set allow_persistent_login_p [parameter::get \
-parameter AllowPersistentLoginP \
-package_id $::acs::kernel_id \
-default 1]
if { $allow_persistent_login_p } {
set allow_persistent_login_p [parameter::get -package_id $subsite_id -parameter AllowPersistentLoginP -default 1]
set allow_persistent_login_p [parameter::get \
-package_id $subsite_id \
-parameter AllowPersistentLoginP \
-default 1]
}
if { $allow_persistent_login_p } {
set default_persistent_login_p [parameter::get -parameter DefaultPersistentLoginP -package_id [ad_acs_kernel_id] -default 1]
set default_persistent_login_p [parameter::get \
-parameter DefaultPersistentLoginP \
-package_id $::acs::kernel_id \
-default 1]
} else {
set default_persistent_login_p 0
}
......@@ -68,26 +75,23 @@ if { $allow_persistent_login_p } {
set subsite_url [subsite::get_element -element url]
set system_name [ad_system_name]
if { [info exists return_url] && $return_url ne "" } {
if { [util::external_url_p $return_url] } {
ad_returnredirect -message "only urls without a host name are permitted" "."
ad_script_abort
}
} else {
if { $return_url eq "" } {
set return_url [ad_pvt_home]
}
set authority_options [auth::authority::get_authority_options]
if { ![info exists authority_id] || $authority_id eq "" } {
if { $authority_id eq "" } {
set authority_id [lindex $authority_options 0 1]
}
set forgotten_pwd_url [auth::password::get_forgotten_url -authority_id $authority_id -username $username -email $email]
set forgotten_pwd_url [auth::password::get_forgotten_url \
-authority_id $authority_id \
-username $username \
-email $email]
set register_url [export_vars -base "[subsite::get_url]register/user-new" { return_url }]
set register_url [export_vars -no_empty -base "[subsite::get_url]register/user-new" { return_url }]
if { $authority_id eq [auth::get_register_authority] || [auth::UseEmailForLoginP] } {
set register_url [export_vars -no_empty -base $register_url { username email }]
set register_url [export_vars -no_empty -base $register_url { username email}]
}
set login_button [list [list [_ acs-subsite.Log_In] ok]]
......@@ -99,12 +103,15 @@ ad_form \
-action "[subsite::get_url]register/" -form {
{return_url:text(hidden)}
{time:text(hidden)}
{host_node_id:text(hidden),optional}
{token_id:integer(hidden)}
{hash:text(hidden)}
} -validate {
{ token_id {$token_id < 2**31} "invalid token id"}
}
set username_widget text
if { [parameter::get -parameter UsePasswordWidgetForUsername -package_id [ad_acs_kernel_id]] } {
if { [parameter::get -parameter UsePasswordWidgetForUsername -package_id $::acs::kernel_id] } {
set username_widget password
}
......@@ -181,24 +188,23 @@ ad_form -extend -name login -on_request {
set token [sec_get_token $token_id]
set computed_hash [ns_sha1 "$time$token_id$token"]
set expiration_time [parameter::get -parameter LoginPageExpirationTime -package_id [ad_acs_kernel_id] -default 600]
set expiration_time [parameter::get \
-parameter LoginPageExpirationTime \
-package_id $::acs::kernel_id \
-default 600]
if { $expiration_time < 30 } {
# If expiration_time is less than 30 seconds, it's practically impossible to login
# and you will have completely hosed login on your entire site
set expiration_time 30
}
if { $hash ne $computed_hash ||
$time < [ns_time] - $expiration_time } {
if { $hash ne $computed_hash
|| $time < [ns_time] - $expiration_time
} {
ad_returnredirect -message [_ acs-subsite.Login_has_expired] -- [export_vars -base [ad_conn url] { return_url }]
ad_script_abort
}
if { ![info exists authority_id] || $authority_id eq "" } {
# Will be defaulted to local authority
set authority_id {}
}
if { ![info exists persistent_p] || $persistent_p eq "" } {
set persistent_p "f"
}
......@@ -216,6 +222,7 @@ ad_form -extend -name login -on_request {
-last_name $last_name \
-username [string trim $username] \
-password $password \
-host_node_id $host_node_id \
-persistent=[expr {$allow_persistent_login_p && [template::util::is_true $persistent_p]}]]
# Handle authentication problems
......@@ -258,17 +265,26 @@ ad_form -extend -name login -on_request {
} else {
set operation create
}
element $operation login email -widget $username_widget -datatype text -label [_ acs-subsite.Email]
element $operation login email \
-widget $username_widget \
-datatype text \
-label [_ acs-subsite.Email]
if {[element error_p login email]} {
template::form::set_error login email [_ acs-subsite.Email_not_provided_by_authority]
}
}
*first* {
element create login first_names -widget text -datatype text -label [_ acs-subsite.First_names]
element create login first_names \
-widget text \
-datatype text \
-label [_ acs-subsite.First_names]
template::form::set_error login email [_ acs-subsite.First_names_not_provided_by_authority]
}
*last* {
element create login last_name -widget text -datatype text -label [_ acs-subsite.Last_name]
element create login last_name \
-widget text \
-datatype text \
-label [_ acs-subsite.Last_name]
template::form::set_error login last_name [_ acs-subsite.Last_name_not_provided_by_authority]
}
}
......@@ -278,13 +294,13 @@ ad_form -extend -name login -on_request {
ad_return_template
} else {
set message [expr { [info exists auth_info(account_message)] ? $auth_info(account_message) : "" }]
# Display the message on a separate page
ad_returnredirect \
-message $auth_info(account_message) \
ad_returnredirect \
-message $message \
-html \
[export_vars \
-base "[subsite::get_element \
-element url]register/account-closed"]
-base "[subsite::get_element -element url]register/account-closed"]
ad_script_abort
}
}
......@@ -295,14 +311,14 @@ ad_form -extend -name login -on_request {
# Handle account_message
if { [info exists auth_info(account_message)] && $auth_info(account_message) ne "" } {
ad_returnredirect [export_vars -base "[subsite::get_element -element url]register/account-message" { { message $auth_info(account_message) } return_url }]
ad_returnredirect [export_vars -base "[subsite::get_element -element url]register/account-message" {
{ message $auth_info(account_message) } return_url
}]
ad_script_abort
} elseif {![info exists auth_info(element_messages)]} {
# No message
ad_returnredirect $return_url
ad_script_abort
} else {
if {![info exists auth_info(element_messages)]} {
# No message
ad_returnredirect $return_url
ad_script_abort
}
}
}
......
......@@ -3,7 +3,10 @@
set pretty_name [_ acs-subsite.subsite]
set pretty_plural [_ acs-subsite.subsites]
set admin_p [permission::permission_p -object_id [ad_conn subsite_id] -privilege admin -party_id [ad_conn untrusted_user_id]]
set admin_p [permission::permission_p \
-object_id [ad_conn subsite_id] \
-privilege admin \
-party_id [ad_conn untrusted_user_id]]
set actions {}
if {[info exists admin_p]
......
......@@ -218,13 +218,18 @@ ad_form -extend -name user_info -form $elms_list -on_request {
# LARS HACK: Make the URL and email elements real links
if { ![form is_valid user_info] } {
element set_properties user_info email -display_value "<a href=\"mailto:[element get_value user_info email]\">[element get_value user_info email]</a>"
if {![string match -nocase "http://*" [element get_value user_info url]]} {
element set_properties user_info url -display_value \
"<a href=\"http://[element get_value user_info url]\">[element get_value user_info url]</a>"
element set_properties user_info email \
-display_value "<a href=\"mailto:[element get_value user_info email]\">[element get_value user_info email]</a>"
set url [element get_value user_info url]
if { ![string match -nocase "http://*" $url]
&& ![string match -nocase "https://*" $url]
} {
element set_properties user_info url \
-display_value "<a href=\"http://$url\">$url</a>"
} else {
element set_properties user_info url -display_value \
"<a href=\"[element get_value user_info url]\">[element get_value user_info url]</a>"
"<a href=\"$url\">$url</a>"
}
}
......
# Expects parameters:
#
# self_register_p - Is the form for users who self register (1) or
# for administrators who create other users (0)?
# next_url - Any url to redirect to after the form has been submitted. The
# variables user_id, password, and account_messages will be added to the URL. Optional.
# email - Prepopulate the register form with given email. Optional.
# return_url - URL to redirect to after creation, will not get any query vars added
# rel_group_id - The name of a group which you want to relate this user to after creating the user.
# Will add an element to the form where the user can pick a relation among the permissible
# rel-types for the group.
ad_include_contract {
ADP include for adding new users
Expects parameters:
@param self_register_p Is the form for users who self register (1) or
for administrators who create oher users (0)?
@param next_url Any url to redirect to after the form has been
submitted. The variables user_id,
password, and account_messages will be
added to the URL. Optional.
@email Prepopulate the register form with given email.
Optional.
@return_url URL to redirect to after creation, will not get any
query vars added
@rel_group_id The name of a group which you want to relate this
user to after creating the user. Will add
an element to the form where the user can
pick a relation among the permissible
rel-types for the group. Can be empty.
} {
{self_register_p:boolean 1}
{next_url ""}
{email ""}
{return_url ""}
{rel_group_id:integer ""}
}
# Check if user can self register
auth::self_registration
# Set default parameter values
array set parameter_defaults {
self_register_p 1
next_url {}
return_url {}
}
foreach parameter [array names parameter_defaults] {
if { (![info exists $parameter] || $parameter eq "") } {
set $parameter $parameter_defaults($parameter)
}
}
# Redirect to HTTPS if so configured
if { [security::RestrictLoginToSSLP] } {
security::require_secure_conn
......@@ -53,14 +61,22 @@ if { $callback_url ne "" } {
# Pre-generate user_id for double-click protection
set user_id [db_nextval acs_object_id_seq]
ad_form -name register -export {next_url user_id return_url} -form [auth::get_registration_form_elements] -validate {
ad_form -name register -export {next_url user_id return_url} -form [auth::get_registration_form_elements]
#
# Standard validator
#
set validate {
{email
{[string equal "" [party::get_by_email -email $email]]}
"[_ acs-subsite.Email_already_exists]"
}
}
if { ([info exists rel_group_id] && $rel_group_id ne "") } {
#
# Handling of additional groups
#
if { $rel_group_id ne "" } {
ad_form -extend -name register -form {
{rel_group_id:integer(hidden),optional}
}
......@@ -81,6 +97,12 @@ if { ([info exists rel_group_id] && $rel_group_id ne "") } {
}
}
#
# Register the validators after all form-fields were added (in case
# conditional fields were added needing validators).
#
ad_form -extend -name register -validate $validate
ad_form -extend -name register -on_request {
# Populate elements from local variables
......@@ -101,7 +123,7 @@ ad_form -extend -name register -on_request {
-secret_question $secret_question \
-secret_answer $secret_answer]
if { $creation_info(creation_status) eq "ok" && ([info exists rel_group_id] && $rel_group_id ne "") } {
if { $creation_info(creation_status) eq "ok" && $rel_group_id ne "" } {
group::add_member \
-group_id $rel_group_id \
-user_id $user_id \
......@@ -168,7 +190,7 @@ ad_form -extend -name register -on_request {
# User is registered and logged in
if { (![info exists return_url] || $return_url eq "") } {
if { $return_url eq "" } {
# Redirect to subsite home page.
set return_url [subsite::get_element -element url]
}
......@@ -191,7 +213,9 @@ ad_form -extend -name register -on_request {
if { $creation_info(account_message) ne "" && $self_register_p } {
# Only do this if user is self-registering
# as opposed to creating an account for someone else
ad_returnredirect [export_vars -base "[subsite::get_element -element url]register/account-message" { { message $creation_info(account_message) } return_url }]
ad_returnredirect [export_vars -base "[subsite::get_element -element url]register/account-message" {
{ message $creation_info(account_message) } return_url
}]
ad_script_abort
} else {
# No messages
......
<if @groups:rowcount@ gt 0>
<if @groups:rowcount@ gt 0>
<h2>#acs-subsite.You_are_in_the_follow#</h2>
<ul>
<multiple name="groups">
<li> <a href="@groups.url@">@groups.group_name@</a><if @groups.admin_p@ true>&nbsp;[<a href="@groups.url@admin/">#acs-kernel.common_Administration#</a>]</if></li>
<li><if @groups.url@ not nil><a href="@groups.url@">@groups.group_name@</a></if><else>@groups.group_name@</else>
<if @groups.member_state;literal@ ne "approved">&nbsp;(@groups.member_state_pretty@)&nbsp;</if>
<if @groups.admin_p;literal@ true>&nbsp;[<a href="@groups.admin_url@">#acs-kernel.common_Administration#</a>]</if></li>
</multiple>
</ul>
</if>
\ No newline at end of file
db_multirow -extend {url admin_p} groups groups {
select distinct ap.package_id, groups.group_id, lower(groups.group_name), groups.group_name
from groups, group_member_map gm, application_groups ap
where groups.group_id = gm.group_id and gm.member_id=:user_id
and ap.group_id = groups.group_id
order by lower(groups.group_name)
db_multirow -extend {url admin_p admin_url member_state_pretty} groups groups {
select ap.package_id, r.object_id_one as group_id, g.group_name, mr.member_state
from acs_rels r,
membership_rels mr,
groups g,
application_groups ap
where r.rel_type = 'membership_rel'
and r.object_id_two = :user_id
and mr.rel_id = r.rel_id
and g.group_id = r.object_id_one
and ap.group_id = g.group_id
order by lower(g.group_name)
} {
set admin_p [permission::permission_p -party_id $user_id -object_id $group_id -privilege "admin"]
set url [apm_package_url_from_id $package_id]
set member_state_pretty [group::get_member_state_pretty -member_state $member_state]
if {$package_id ne "" && $group_id != [acs_magic_object registered_users]} {
set url [apm_package_url_from_id $package_id]
} else {
set url ""
}
set admin_url [export_vars -base /members/ {{group_id $group_id}}]
}
# Local variables:
......
......@@ -26,7 +26,8 @@ begin
max_n_rels_one => 1,
object_type_two => 'content_item',
min_n_rels_two => 0,
max_n_rels_two => 1
max_n_rels_two => 1,
composable_p => 'f'
);
commit;
......
......@@ -29,7 +29,8 @@ begin
max_n_rels_one => 1,
object_type_two => 'content_item',
min_n_rels_two => 0,
max_n_rels_two => 1
max_n_rels_two => 1,
composable_p => 'f'
);
commit;
......
......@@ -10,14 +10,11 @@
create table subsite_themes (
key varchar(100)
constraint subsite_themes_key_pk
primary key,
constraint subsite_themes_key_pk primary key,
name varchar(100)
constraint subsite_themes_name_nn
not null,
constraint subsite_themes_name_nn not null,
template varchar(200)
constraint subsite_themes_template_nn
not null,
constraint subsite_themes_template_nn not null,
css varchar(2000),
js varchar(2000),
form_template varchar(200),
......@@ -25,7 +22,9 @@ create table subsite_themes (
list_filter_template varchar(200),
dimensional_template varchar(200),
resource_dir varchar(200),
streaming_head varchar(200)
streaming_head varchar(200),
local_p char(1) default 'f'
constraint subsite_themes_local_p_ck check (local_p in ('t','f'))
);
-- Insert the old themes that were hard-wired into earlier versions of acs-subsite.
......
......@@ -35,7 +35,8 @@ begin
object_type_two => 'user',
role_two => 'user',
min_n_rels_two => 0,
max_n_rels_two => null
max_n_rels_two => null,
composable_p => 'f'
);
end;
......
......@@ -28,7 +28,8 @@ BEGIN
'content_item',
null,
0,
1
1,
'f'
);
return 0;
......
......@@ -57,7 +57,8 @@ BEGIN
'content_item',
null,
0,
1
1,
'f'
);
return 0;
......
......@@ -23,7 +23,7 @@ create table subsite_callbacks (
constraint sgc_callback_id_pk primary key,
event_type varchar(100) not null
constraint sgc_event_type_ck check(event_type in ('insert','update','delete')),
object_type varchar(100) not null
object_type varchar(1000) not null
constraint sgc_object_type_fk references acs_object_types
on delete cascade,
callback varchar(300) not null,
......
......@@ -25,7 +25,8 @@ create table subsite_themes (
list_filter_template text,
dimensional_template text,
resource_dir text,
streaming_head text
streaming_head text,
local_p boolean default false
);
-- Insert the old themes that were hard-wired into earlier versions of acs-subsite.
......
......@@ -7,7 +7,7 @@
-- Moving primary key constraint on host_node_map from node_id column
-- to host column. Fortunately, nothing references the table, so a
-- simple drop-rebuild is feasable
-- simple drop-rebuild is feasible
alter table host_node_map rename to host_node_map_old;
create table host_node_map (
......
alter table application_groups drop constraint if exists application_groups_group_id_fk;
alter table application_groups add constraint application_groups_group_id_fk
foreign key (group_id) references groups(group_id) on delete cascade;
alter table application_groups drop constraint application_groups_group_id_fk;
alter table application_groups add constraint application_groups_group_id_fk foreign key (group_id) references groups(group_id) on delete cascade;
......@@ -65,7 +65,8 @@ BEGIN
'user',
'user',
0,
null
null,
'f'
);
return 0;
......
......@@ -36,12 +36,7 @@
<fullquery name="application_group::group_id_from_package_id.application_group_from_package_id_query">
<querytext>
begin
:1 := application_group.group_id_from_package_id (
package_id => :package_id,
no_complain_p => :no_complain_p
);
end;
select application_group.group_id_from_package_id(:package_id, :no_complain_p) from dual;
</querytext>
</fullquery>
......
......@@ -134,23 +134,15 @@ ad_proc -public application_group::group_id_from_package_id {
empty string if the application group doesn't exist.
} {
if {$no_complain_p} {
set no_complain_p t
} else {
set no_complain_p f
}
if { [ad_conn isconnected] } {
if {$package_id eq ""} {
if { [ad_conn isconnected] && $package_id eq "" } {
set package_id [ad_conn package_id]
}
}
if {$package_id eq ""} {
error "application_group::group_id_from_package_id - no package_id specified."
}
set group_id [db_exec_plsql application_group_from_package_id_query {}]
set group_id [db_string application_group_from_package_id_query {}]
return $group_id
}
......
......@@ -97,6 +97,7 @@ ad_proc -public add {
attribute
} {
set default_value $default
# We always use type-specific storage. Grab the tablename from the
......@@ -130,7 +131,7 @@ ad_proc -public add {
# the queries are empty because they are pulled out later in db_exec_plsql
set plsql [list]
lappend plsql_drop [list db_exec_plsql "drop_attribute" "FOO"]
lappend plsql_drop [list db_exec_plsql "drop_attribute" "FOO"]
lappend plsql [list db_exec_plsql "create_attribute" "FOO"]
set sql_type [datatype_to_sql_type -default $default_value $table_name $attribute_name $datatype]
......@@ -140,16 +141,13 @@ ad_proc -public add {
for { set i 0 } { $i < [llength $plsql] } { incr i } {
set cmd [lindex $plsql $i]
ns_log Notice "xxx: $cmd"
if { [catch $cmd err_msg] } {
# Rollback what we've done so far. The loop contitionals are:
# start at the end of the plsql_drop list (Drop things in reverse order of creation)
# execute drop statements until we reach position $i+1
# This position represents the operation on which we failed, and thus
# is not executed
for { set inner [expr {[llength $plsql_drop] - 1}] } { $inner > $i + 1 } { set inner [expr {$inner - 1}] } {
for { set inner [expr {[llength $plsql_drop] - 1}] } { $inner > $i + 1 } { incr inner -1 } {
set drop_cmd [lindex $plsql_drop $inner]
if { [catch $drop_cmd err_msg_2] } {
append err_msg "\nAdditional error while trying to roll back: $err_msg_2"
......@@ -237,14 +235,7 @@ ad_proc -public delete { attribute_id } {
# 2. Drop the attribute
# 3. Return
if { ![db_0or1row select_attr_info {
select a.object_type, a.attribute_name,
decode(a.storage,'type_specific',t.table_name,a.table_name) as table_name,
nvl(a.column_name, a.attribute_name) as column_name
from acs_attributes a, acs_object_types t
where a.attribute_id = :attribute_id
and t.object_type = a.object_type
}] } {
if { ![db_0or1row select_attr_info {}] } {
# Attribute doesn't exist
return 0
}
......@@ -438,21 +429,7 @@ ad_proc -public array_for_type {
and a.storage in ('[join $include_storage_types "', '"]')"
}
db_foreach select_attributes "
select nvl(a.column_name, a.attribute_name) as name,
a.pretty_name, a.attribute_id, a.datatype,
v.enum_value, v.pretty_name as value_pretty_name
from acs_object_type_attributes a,
acs_enum_values v,
(select t.object_type, level as type_level
from acs_object_types t
start with t.object_type = :start_with
connect by prior t.object_type = t.supertype) t
where a.object_type = :object_type
and a.attribute_id = v.attribute_id(+)
and t.object_type = a.ancestor_type $storage_clause
order by type_level, a.sort_order
" {
db_foreach select_attributes {} {
# Enumeration values show up more than once...
if {$name ni $attr_list} {
lappend attr_list $name
......
......@@ -23,7 +23,8 @@ ad_proc -public -callback user::workspace -impl acs-subsite {
} {
Generate a table showing the application group membership
} {
return [template::adp_include /packages/acs-subsite/lib/user-subsites [list user_id $user_id]]
set themed_template [template::themed_template /packages/acs-subsite/lib/user-subsites]
return [template::adp_include $themed_template [list user_id $user_id]]
}
ad_proc -public -callback user::registration {
......
......@@ -2,14 +2,6 @@
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="email_image::new_item.new_lob_size">
<querytext>
update cr_revisions
set content_length = dbms_lob.getlength(content)
where revision_id = :revision_id
</querytext>
</fullquery>
<fullquery name="email_image::new_item.new_lob_content">
<querytext>
update cr_revisions
......
......@@ -2,23 +2,23 @@
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="email_image::new_item.new_lob_size">
<querytext>
update cr_revisions
set content_length = lob_length(lob)
where revision_id = :revision_id
</querytext>
</fullquery>
<fullquery name="email_image::new_item.new_lob_content">
<querytext>
update cr_revisions
set mime_type = :mime_type,
lob = [set __lob_id [db_string get_lob_id "select empty_lob()"]]
lob = [set __lob_id [db_string get_lob_id {select empty_lob()}]]
where revision_id = :revision_id
</querytext>
</fullquery>
<fullquery name="email_image::new_item.lob_size">
<querytext>
update cr_revisions
set content_length = lob_length(lob)
where revision_id = :revision_id
</querytext>
</fullquery>
<fullquery name="email_image::edit_email_image.lob_size">
<querytext>
......@@ -32,7 +32,7 @@
<querytext>
update cr_revisions
set mime_type = :mime_type,
lob = [set __lob_id [db_string get_lob_id "select empty_lob()"]]
lob = [set __lob_id [db_string get_lob_id {select empty_lob()}]]
where revision_id = :revision_id
</querytext>
</fullquery>
......
......@@ -40,7 +40,7 @@ ad_proc -public email_image::get_user_email {
{-bgcolor "" }
{-transparent "" }
} {
Returns the email in differnet diferent ways (text level 4, image or text and image level 3, link level 2, ...)
Returns the email in differnet different ways (text level 4, image or text and image level 3, link level 2, ...)
according to the priv_email field in the users table. To create an image the ImageMagick software is required,
if ImageMagick is not present then the @ symbol in the email will be shown as an image. When creating an image
you can choose the background color (In this format \#xxxxxx). Also you can make the background color transparent
......@@ -173,13 +173,13 @@ ad_proc -public email_image::new_item {
-description "User email image" -creation_ip $creation_ip ]
email_image::add_relation -user_id $user_id -item_id $item_id
db_dml update_cr_items_new {}
content::item::set_live_revision -revision_id $revision_id
db_dml new_lob_content {} -blob_files [list ${dest_path}]
db_dml lob_size {}
}
# Delete the temporary file created by ImageMagick
catch { file delete $dest_path } errMsg
catch { file delete -- $dest_path } errMsg
set img_src [ns_quotehtml "/shared/email-image-bits.tcl?user_id=$user_id&revision_id=$revision_id"]
set send_email_url [ns_quotehtml "/shared/send-email?sendto=$user_id&return_url=$return_url"]
......@@ -250,7 +250,7 @@ ad_proc -public email_image::edit_email_image {
set revision_id [content::revision::new -item_id $item_id -title $image_name \
-mime_type $mime_type \
-description "User email image" -creation_ip $creation_ip ]
db_dml update_cr_items {}
content::item::set_live_revision -revision_id $revision_id
db_dml lob_content {} -blob_files [list ${dest_path}]
db_dml lob_size {}
}
......@@ -271,7 +271,7 @@ ad_proc -public email_image::edit_email_image {
}
}
# Delete the temporary file created by ImageMagick
catch { file delete $dest_path } errMsg
catch { file delete -- $dest_path } errMsg
}
......
......@@ -39,28 +39,10 @@
<fullquery name="email_image::update_private_p.update_users">
<querytext>
update users
set priv_email = :level
set priv_email = :level
where user_id = :user_id
</querytext>
</fullquery>
<fullquery name="email_image::new_item.update_cr_items_new">
<querytext>
update cr_items
set live_revision = :revision_id
where item_id = :item_id
</querytext>
</fullquery>
<fullquery name="email_image::edit_email_image.update_cr_items">
<querytext>
update cr_items
set live_revision = :revision_id
where item_id = :item_id
</querytext>
</fullquery>
</queryset>
......@@ -101,8 +101,7 @@ ad_proc -public group::new {
error "Object type \"$group_type\" does not exist"
}
set var_list [list]
lappend var_list [list context_id $context_id]
set var_list [list context_id $context_id]
lappend var_list [list $id_column $group_id]
if { $group_name ne "" } {
lappend var_list [list group_name $group_name]
......@@ -122,18 +121,21 @@ ad_proc -public group::new {
$group_type]
# We can't change the group_name to an I18N version as this would
# break compatability with group::member_p -group_name and the
# break compatibility with group::member_p -group_name and the
# like. So instead we change the title of the object of the group
# (through the pretty name). We just have to change the display of
# groups to the title at the appropriate places.
#
# In case, a pretty_name was already provided in form of a message
# key, there is no need to convert this a second time.
if { [info commands "::lang::util::convert_to_i18n"] ne "" } {
if {![regexp [lang::util::message_key_regexp] $pretty_name]} {
set pretty_name [lang::util::convert_to_i18n -message_key "group_title_${group_id}" -text "$pretty_name"]
}
# Update the title to the pretty name
if {$pretty_name ne ""} {
db_dml title_update "update acs_objects set title=:pretty_name where object_id = :group_id"
db_dml title_update "update acs_objects set title = :pretty_name where object_id = :group_id"
}
return $group_id
}
......@@ -240,9 +242,11 @@ ad_proc -public group::get_id {
@return the first group_id of the groups found for that group_name.
@error
} {
return [util_memoize [list group::get_id_not_cached -group_name $group_name -subsite_id $subsite_id -application_group_id ""]]
return [util_memoize [list group::get_id_not_cached \
-group_name $group_name \
-subsite_id $subsite_id \
-application_group_id $application_group_id]]
}
ad_proc -private group::get_id_not_cached {
......@@ -262,15 +266,21 @@ ad_proc -private group::get_id_not_cached {
@error
} {
if {([info exists subsite_id] && $subsite_id ne "")} {
set application_group_id [application_group::group_id_from_package_id -package_id [ad_conn subsite_id]]
if {$subsite_id ne ""} {
if {$application_group_id ne ""} {
ad_log warning "group::get_id '$group_name': overwriting specified application_group_id by application group of subsite"
}
set application_group_id [application_group::group_id_from_package_id -package_id $subsite_id]
}
if {([info exists application_group_id] && $application_group_id ne "")} {
if {$application_group_id ne ""} {
set group_ids [db_list get_group_id_with_application {}]
} else {
set group_ids [db_list get_group_id {}]
}
if {[llength $group_ids] > 1} {
ad_log warning "group::get_id for '$group_name' returns more than one value; returning the first one"
}
return [lindex $group_ids 0]
}
......@@ -431,21 +441,58 @@ ad_proc -public group::possible_member_states {} {
ad_proc -public group::get_member_state_pretty {
{-member_state:required}
{-component pretty_name}
{-user_name ""}
{-community_name ""}
{-site_name ""}
{-url ""}
{-locale ""}
} {
Returns the pretty-name of a member state.
} {
array set message_key_array {
approved #acs-kernel.member_state_approved#
"needs approval" #acs-kernel.member_state_needs_approval#
banned #acs-kernel.member_state_banned#
rejected #acs-kernel.member_state_rejected#
deleted #acs-kernel.member_state_deleted#
merged #acs-kernel.member_state_merged#
if {$member_state ni {approved banned deleted merged "needs approval" rejected}} {
error "invalid member_state '$member_state'"
}
return [lang::util::localize $message_key_array($member_state)]
#
# We can't use spaces in message keys, so replace it with a "_".
#
regsub -all " " $member_state "_" member_state
switch $component {
pretty_name {
set message #acs-kernel.member_state_$member_state#
}
action {
if {$user_name eq ""} { error "user_name must be specified and must be non-empty" }
set message #acs-kernel.member_state_action_$member_state#
}
account_mail {
if {$site_name eq ""} { error "site_name must be specified and must be non-empty" }
if {[string match "#*#" $site_name]} {
# site names can be localized
set site_name [lang::util::localize $site_name $locale]
}
if {$url eq ""} { error "url must be specified and must be non-empty" }
set message #acs-kernel.member_state_account_mail_$member_state#
}
community_mail {
if {$community_name eq ""} { error "community_name must be specified and must be non-empty" }
if {[string match "#*#" $community_name]} {
# community_names can be localized
set community_name [lang::util::localize $community_name $locale]
}
if {$url eq ""} { error "url must be specified and must be non-empty" }
set message #acs-kernel.member_state_community_mail_$member_state#
}
default {
error "invalid component '$component'"
}
}
return [lang::util::localize $message $locale]
}
ad_proc -public group::get_join_policy_options {} {
Returns a list of valid join policies in a format suitable for a form builder drop-down.
} {
......@@ -457,7 +504,7 @@ ad_proc -public group::get_join_policy_options {} {
ad_proc -public group::default_member_state {
{ -join_policy "" }
{ -create_p "" }
{ -create_p false }
-no_complain:boolean
} {
If user has 'create' privilege on group_id OR
......@@ -539,7 +586,7 @@ ad_proc -public group::member_p {
return [util_memoize [list group::member_p_not_cached -group_id $group_id -user_id $user_id -cascade_p $cascade_p]]
}
ad_proc -public group::member_p_not_cached {
ad_proc -private group::member_p_not_cached {
{ -user_id "" }
{ -group_id "" }
{-cascade_p ""}
......@@ -569,38 +616,48 @@ ad_proc -public group::member_p_not_cached {
ad_proc -public group::party_member_p {
-party_id
{ -group_name "" }
{ -group_id "" }
{ -group_name "" }
{ -subsite_id "" }
} {
Return 1 if the party is an approved member of the group specified.
You can specify a group name or group id.
</p><p>
<strong>Note:</strong> The group name is <strong>not</strong> unique
by definition,
and if you call this function with a duplicate group name it
<strong>will</strong> bomb!!! Using the group name as a parameter is
thus strongly discouraged unless you are really, really sure the
name is unique.</p>
<p>The party must have specifically
been granted membership on the group in question.</p>
Return 1 if the party is an approved member of the group
specified.
One can specify a group_id (preferred) or a group name.
<strong>Note:</strong> The group name is <strong>not</strong>
unique by definition, and if you call this function with a
duplicate group name it <strong>will</strong> return the first one
(arbitrary)!!! Using the group name as a parameter is thus
strongly discouraged unless you are really, really sure the name
is unique.</p>
<p>The party must have specifically been granted
membership on the group in question.</p>
} {
if { $group_name eq "" && $group_id eq "" } {
return 0
}
if { $group_name ne "" } {
if {$group_id ne ""} {
ad_log warning "group::party_member_p: ignore specified group_id $group_id, usin name '$group_name' instead"
}
set group_id [group::get_id -group_name $group_name -subsite_id $subsite_id]
if { $group_id eq "" } {
return 0
}
}
set result [lindex [db_list party_is_member {}] 0]
return [template::util::is_true $result]
if { $group_id eq "" } {
set result 0
} else {
# Limiting to one row is required for those groups that define
# relational segments (e.g. subsites, as for admins two rows
# will be there for both their roles of member and
# administrator).
set result [db_0or1row party_is_member {
select 1 from group_approved_member_map
where member_id = :party_id
and group_id = :group_id
limit 1
}]
}
return $result
}
ad_proc -public group::get_rel_segment {
......@@ -638,7 +695,7 @@ ad_proc -public group::admin_p {
{-group_id:required}
{-user_id:required}
} {
@return 1 if user_id is in teh admin_rel for group_id
@return 1 if user_id is in the admin_rel for group_id
} {
set admin_rel_id [relation::get_id \
-object_id_one $group_id \
......@@ -773,7 +830,7 @@ ad_proc -private group::group_p_not_cached {
@param group_id The group_id of the group
} {
return [db_string group "select 1 from groups where group_id = :group_id" -default 0]
return [db_string group {select 1 from groups where group_id = :group_id} -default 0]
}
......
......@@ -65,14 +65,6 @@
</querytext>
</fullquery>
<fullquery name="group::member_p.group_id_from_name">
<querytext>
select group_id
from groups
where group_name = :group_name
</querytext>
</fullquery>
<fullquery name="group::get_rel_segment.select_segment_id">
<querytext>
......@@ -84,10 +76,4 @@
</querytext>
</fullquery>
<fullquery name="group::party_member_p.party_is_member">
<querytext>
select 1 from group_approved_member_map where member_id = :party_id and group_id = :group_id
</querytext>
</fullquery>
</queryset>
......@@ -136,7 +136,7 @@ namespace eval group_type {
}
# Now add the drop script
append text "-- Drop script\n";
for { set i [expr {[llength $plsql_drop] - 1}] } { $i >= 0 } { set i [expr {$i - 1}] } {
for { set i [expr {[llength $plsql_drop] - 1}] } { $i >= 0 } { incr i -1 } {
# Don't need the sql keys when we display debugging information
append text "-- [lindex $plsql_drop $i 1]\n\n"
}
......
......@@ -38,13 +38,13 @@
<fullquery name="package_create.package_valid_p">
<querytext>
select case when exists (select 1
from user_objects
where status = 'INVALID'
and object_name = upper(:package_name)
and object_type = upper(:type))
then 0 else 1 end
-- select case when exists (select 1
-- from user_objects
-- where status = 'INVALID'
-- and object_name = upper(:package_name)
-- and object_type = upper(:type))
-- then 0 else 1 end
select 1 from dual;
</querytext>
</fullquery>
......@@ -104,7 +104,7 @@
and t2.object_type = :start_with) t
where a.object_type = :object_type
and t.object_type = a.ancestor_type $storage_clause
order by type_level, attribute_id
order by type_level, sort_order, attribute_id
</querytext>
</fullquery>
......
......@@ -308,6 +308,14 @@ ad_proc -private package_create {
db_exec_plsql $stmt_name $code
# Let's check to make sure the package is valid
#
# This seems to be a speciality in Oracle: The status of a
# program unit (PL/SQL package, procedure, or function) is set
# to INVALID if a database object on which it depends is
# changed. That program unit must then be recompiled (which
# Oracle Database will often do automatically the next time
# you try to use that program unit).
#
if { ![db_string package_valid_p {}] } {
error "$object_type \"$package_name\" is not valid after compiling:\n\n$code\n\n"
}
......@@ -396,7 +404,7 @@ ad_proc -public package_object_view_reset {
object_type
} {
Resets the cached views for all chains (e.g. all variations of
start_with in package_object_view) for the specified object type.
start_with in package_object_view) for the specified object type.
@author Michael Bryzek (mbryzek@arsdigita.com)
@creation-date 12/2000
......@@ -565,24 +573,7 @@ ad_proc package_object_attribute_list {
and a.storage in ('[join $include_storage_types "', '"]')"
}
return [db_list_of_lists attributes_select "
select a.attribute_id,
nvl(a.table_name, t.table_name) as table_name,
nvl(a.column_name, a.attribute_name) as attribute_name,
a.pretty_name,
a.datatype,
decode(a.min_n_values,0,'f','t') as required_p,
a.default_value,
t.table_name as object_type_table_name,
t.id_column as object_type_id_column
from acs_object_type_attributes a,
(select t.object_type, t.table_name, t.id_column, level as type_level
from acs_object_types t
start with t.object_type=:start_with
connect by prior t.object_type = t.supertype) t
where a.object_type = :object_type
and t.object_type = a.object_type $storage_clause
order by type_level"]
return [db_list_of_lists attributes_select {}]
}
......
......@@ -174,36 +174,9 @@ namespace eval party {
set start_with_clause [db_map start_with_clause]
}
db_foreach select_sub_rel_types "
select
types.pretty_name,
types.object_type,
types.tree_level,
types.indent,
decode(valid_types.object_type, null, 0, 1) as valid_p
from
(select
t.pretty_name, t.object_type, level as tree_level,
replace(lpad(' ', (level - 1) * 4),
' ', '&nbsp;') as indent,
rownum as tree_rownum
from
acs_object_types t
connect by
prior t.object_type = t.supertype
start with
$start_with_clause ) types,
(select
object_type
from
rel_types_valid_obj_two_types
where
rel_type = :rel_type ) valid_types
where
types.object_type = valid_types.object_type(+)
order by tree_rownum
" {
template::multirow append $datasource_name $object_type [ad_urlencode $object_type] $indent $pretty_name $valid_p
db_foreach select_sub_rel_types {} {
template::multirow append $datasource_name $object_type \
[ad_urlencode $object_type] $indent $pretty_name $valid_p
}
}
......
......@@ -181,13 +181,13 @@ object_type => group,
<p>Example:
<pre>
set group_id -2
set sql "select acs_group.name(:group_id) from dual"
ns_write [plsql_utility::parse_sql $sql]
set group_id -2
set sql {select acs_group.name(:group_id) from dual}
ns_write [plsql_utility::parse_sql $sql]
</pre>
would write the following to the browser:
<pre>
select acs_group.name('-2') from dual
select acs_group.name('-2') from dual
</pre>
@author Michael Bryzek (mbryzek@arsdigita.com)
......
......@@ -48,8 +48,8 @@ ad_proc -public rel_segments_delete {
@creation-date 1/12/2001
} {
# First delete dependant constraints.
db_foreach select_dependant_constraints {
# First delete dependent constraints.
db_foreach select_dependent_constraints {
select c.constraint_id
from rel_constraints c
where c.required_rel_segment = :segment_id
......
<?xml version="1.0"?>
<queryset>
<fullquery name="rel_segments_delete.select_dependant_constraints">
<fullquery name="rel_segments_delete.select_dependent_constraints">
<querytext>
select c.constraint_id
......
......@@ -27,7 +27,8 @@ begin acs_rel_type.drop_type(:rel_type); end;
object_type_two => :object_type_two,
role_two => :role_two,
min_n_rels_two => :min_n_rels_two,
max_n_rels_two => :max_n_rels_two
max_n_rels_two => :max_n_rels_two,
composable_p => :composable_p
);
end;
</querytext>
......@@ -39,5 +40,34 @@ begin acs_rel_type.create_role(:role, :pretty_name, :pretty_plural);
end;
</querytext>
</fullquery>
<fullquery name="rel_types::additional_rel_types_group_p.group_rel_type_exists">
<querytext>
select case when exists (select 1
from acs_object_types t
where t.object_type not in (select g.rel_type
from group_rels g
where g.group_id = :group_id)
connect by prior t.object_type = t.supertype
start with t.object_type in ('membership_rel','composition_rel'))
then 1 else 0 end
from dual
</querytext>
</fullquery>
<fullquery name="rel_types::additional_rel_types_group_type_p.group_rel_type_exists">
<querytext>
select case when exists (select 1
from acs_object_types t
where t.object_type not in (select g.rel_type
from group_type_rels g
where g.group_type = :group_type)
connect by prior t.object_type = t.supertype
start with t.object_type in ('membership_rel','composition_rel'))
then 1 else 0 end
from dual
</querytext>
</fullquery>
</queryset>
......@@ -3,20 +3,33 @@
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<fullquery name="rel_types::additional_rel_types_group_type_p.group_rel_type_exists">
<querytext>
<fullquery name="rel_types::additional_rel_types_group_p.group_rel_type_exists">
<querytext>
select case when exists (select 1
from acs_object_types t1, acs_object_types t2, group_type_rels g
where g.group_id = :group_id
and t2.object_type <> g.rel_type
and t1.object_type in ('membership_rel','composition_rel')
and t2.tree_sortkey between t1.tree_sortkey and tree_right(t1.tree_sortkey)
)
then 1 else 0 end
</querytext>
</fullquery>
select case when exists (select 1
from acs_object_types t1, acs_object_types t2, group_type_rels g
where g.group_type = :group_type
and t2.object_type <> g.rel_type
and t1.object_type in ('membership_rel','composition_rel')
and t2.tree_sortkey between t1.tree_sortkey and tree_right(t1.tree_sortkey))
then 1 else 0 end
</querytext>
<fullquery name="rel_types::additional_rel_types_group_type_p.group_rel_type_exists">
<querytext>
select case when exists (select 1
from acs_object_types t1, acs_object_types t2, group_type_rels g
where g.group_type = :group_type
and t2.object_type <> g.rel_type
and t1.object_type in ('membership_rel','composition_rel')
and t2.tree_sortkey between t1.tree_sortkey and tree_right(t1.tree_sortkey)
)
then 1 else 0 end
</querytext>
</fullquery>
<fullquery name="rel_types::new.drop_type">
<querytext>
select acs_rel_type__drop_type(:rel_type, 'f')
......@@ -40,7 +53,8 @@ select acs_rel_type__create_type (
:object_type_two,
:role_two,
:min_n_rels_two,
:max_n_rels_two
:max_n_rels_two,
:composable_p
);
</querytext>
</fullquery>
......
......@@ -62,16 +62,7 @@ namespace eval rel_types {
@author Michael Bryzek (mbryzek@arsdigita.com)
@creation-date 12/30/2000
} {
return [db_string "group_rel_type_exists" "
select case when exists (select 1
from acs_object_types t
where t.object_type not in (select g.rel_type
from group_rels g
where g.group_id = :group_id)
connect by prior t.object_type = t.supertype
start with t.object_type in ('membership_rel','composition_rel'))
then 1 else 0 end
from dual"]
return [db_string group_rel_type_exists {}]
}
ad_proc -private additional_rel_types_group_type_p {
......@@ -83,16 +74,7 @@ namespace eval rel_types {
@author Michael Bryzek (mbryzek@arsdigita.com)
@creation-date 12/30/2000
} {
return [db_string "group_rel_type_exists" "
select case when exists (select 1
from acs_object_types t
where t.object_type not in (select g.rel_type
from group_type_rels g
where g.group_type = :group_type)
connect by prior t.object_type = t.supertype
start with t.object_type in ('membership_rel','composition_rel'))
then 1 else 0 end
from dual"]
return [db_string group_rel_type_exists {}]
}
ad_proc -public new {
......@@ -110,6 +92,7 @@ namespace eval rel_types {
object_type_two
min_n_rels_two
max_n_rels_two
{composable_p "t"}
} {
Creates a new relationship type named rel_type
......
......@@ -33,7 +33,7 @@
</fullquery>
<fullquery name="relation_segment_has_dependant.others_depend_p">
<fullquery name="relation_segment_has_dependent.others_depend_p">
<querytext>
select case when exists
......
......@@ -5,42 +5,34 @@
<fullquery name="relation_add.select_rel_violation">
<querytext>
select rel_constraint__violation(:rel_id)
select rel_constraint__violation(:rel_id)
</querytext>
</fullquery>
<fullquery name="relation_remove.relation_delete">
<querytext>
begin perform ${package_name}__delete(:rel_id); return null; end;
select ${package_name}__delete(:rel_id) from dual
</querytext>
</fullquery>
<fullquery name="relation_segment_has_dependant.others_depend_p">
<fullquery name="relation_segment_has_dependent.others_depend_p">
<querytext>
select case when exists
(select 1 from rc_violations_by_removing_rel r where r.rel_id = :rel_id)
then 1 else 0 end
</querytext>
</fullquery>
<fullquery name="relation_type_is_valid_to_group_p.rel_type_valid_p">
<querytext>
select case when exists
(select 1 from rc_valid_rel_types r
where r.group_id = :group_id
and r.rel_type = :rel_type)
then 1 else 0 end
</querytext>
</fullquery>
......
......@@ -157,25 +157,25 @@ ad_proc -public relation_remove {
# acs_rels to find the group and rel_type for this relation.
if { $segment_id ne "" } {
if { [relation_segment_has_dependant -segment_id $segment_id -party_id $party_id] } {
if { [relation_segment_has_dependent -segment_id $segment_id -party_id $party_id] } {
error "Relational constraints violated by removing this relation"
}
}
db_exec_plsql relation_delete "begin ${package_name}.del(:rel_id); end;"
db_exec_plsql relation_delete {}
return 1
}
ad_proc -public relation_segment_has_dependant {
ad_proc -public relation_segment_has_dependent {
{ -rel_id "" }
{ -segment_id "" }
{ -party_id "" }
} {
Returns 1 if the specified segment/party combination has a
dependant (meaning a constraint would be violated if we removed this
dependent (meaning a constraint would be violated if we removed this
relation). 0 otherwise. Either <code>rel_id</code> or
<code>segment_id</code> and <code>party_id</code> must be
specified. <code>rel_id</code> takes precedence.
......@@ -187,13 +187,13 @@ ad_proc -public relation_segment_has_dependant {
if { $rel_id ne "" } {
if { ![db_0or1row select_rel_info {}] } {
# There is either no relation or no segment... thus no dependants
# There is either no relation or no segment... thus no dependents
return 0
}
}
if { $segment_id eq "" || $party_id eq "" } {
error "Both of segment_id and party_id must be specified in call to relation_segment_has_dependant"
error "Both of segment_id and party_id must be specified in call to relation_segment_has_dependent"
}
return [db_string others_depend_p {}]
......
......@@ -15,7 +15,7 @@
</querytext>
</fullquery>
<fullquery name="relation_segment_has_dependant.select_rel_info">
<fullquery name="relation_segment_has_dependent.select_rel_info">
<querytext>
select s.segment_id, r.object_id_two as party_id
from rel_segments s, acs_rels r
......
......@@ -58,7 +58,7 @@ ad_proc -public subsite_callback {
switch -- $type {
tcl {
# Execute the tcl procedure
# Execute the Tcl procedure
$callback -object_id $object_id -node_id $node_id -package_id $package_id
}
default { error "Callbacks of type $type not supported" }
......
......@@ -175,8 +175,13 @@ ad_proc -private subsite_navigation::add_section_row {
set navigation_id ""
}
set joined_url [file join $base_url $info(url)]
if {[string index $info(url) end] eq "/"} {
append joined_url /
}
template::multirow append $multirow \
$group $info(label) [file join $base_url $info(url)] \
$group $info(label) $joined_url \
"" $info(title) "" $info(accesskey) "" $navigation_id [template::multirow size $multirow] \
$info(name) $parent $info(display_template)
......
This diff is collapsed.
<?xml version="1.0"?>
<queryset>
<fullquery name="subsite::default::create_app_group.group_exists">
<querytext>
select 1
from dual
where exists (select 1
from application_groups
where package_id = :package_id)
</querytext>
</fullquery>
<fullquery name="subsite::default::create_app_group.subsite_name_query">
<querytext>
......@@ -86,10 +74,12 @@
<querytext>
insert into subsite_themes
(key, name, template, css, js, form_template, list_template,
list_filter_template, dimensional_template, resource_dir, streaming_head)
list_filter_template, dimensional_template, resource_dir,
streaming_head, local_p)
values
(:key, :name, :template, :css, :js, :form_template, :list_template,
:list_filter_template, :dimensional_template, :resource_dir, :streaming_head)
:list_filter_template, :dimensional_template, :resource_dir,
:streaming_head, :local_p)
</querytext>
</fullquery>
......
......@@ -105,6 +105,105 @@ aa_register_case -cats smoke acs_subsite_unregistered_visitor {
and a.name = 'the_pubic'" -default 0] 0
}
aa_register_case -cats smoke acs_subsite_check_composite_group {
Build a 3-level hierarchy of composite groups and check memberships. This test case covers the membership and composition rel insertion triggers and composability of basic membership and admin rels.
@author Michael Steigman
} {
aa_run_with_teardown \
-rollback \
-test_code {
# create groups and relate them to one another
set level_1_group [group::new -group_name "Level 1 Group"]
set level_2_group [group::new -group_name "Level 2 Group"]
relation_add composition_rel $level_1_group $level_2_group
set authority_id [auth::authority::local]
# flush cache from previous call of this test
util_memoize_flush [list acs_user::get_by_username_not_cached \
-authority_id $authority_id \
-username "__test1"]
if {[set user_1_id [acs_user::get_by_username_not_cached \
-authority_id $authority_id \
-username "__test1"]] eq ""} {
array set user_1 [auth::create_user \
-username "__test1" \
-email "__user1@test.test" \
-first_names "__user1.Test first" \
-last_name "__user1.Test last" \
-password 1 \
-password_confirm 1]
set user_1_id $user_1(user_id)
}
# flush cache from previous call of this test
util_memoize_flush [list acs_user::get_by_username_not_cached \
-authority_id $authority_id \
-username "__test2"]
if {[set user_2_id [acs_user::get_by_username_not_cached \
-authority_id $authority_id \
-username "__test2"]] eq ""} {
array set user_2 [auth::create_user \
-username "__test2" \
-email "__user2@test.test" \
-first_names "__user2.Test first" \
-last_name "__user2.Test last" \
-password 1 \
-password_confirm 1]
set user_2_id $user_2(user_id)
}
group::add_member -group_id $level_2_group -user_id $user_1_id -rel_type membership_rel
group::add_member -group_id $level_2_group -user_id $user_1_id -rel_type admin_rel
# check that user_1 is a member of level_1_group but not admin
aa_true "User 1 is a member of Level 1 Group" [db_0or1row member_p {
SELECT 1
FROM group_member_map
WHERE group_id = :level_1_group
AND member_id = :user_1_id
AND rel_type = 'membership_rel'
}]
aa_false "User 1 is not an admin of Level 1 Group" [db_0or1row member_p {
SELECT 1
FROM group_member_map
WHERE group_id = :level_1_group
AND member_id = :user_1_id
AND rel_type = 'admin_rel'
}]
# create new group then relate it to level_2_group
set level_3_group [group::new -group_name "Level 3 Group"]
group::add_member -group_id $level_3_group -user_id $user_2_id -rel_type membership_rel
group::add_member -group_id $level_3_group -user_id $user_2_id -rel_type admin_rel
relation_add composition_rel $level_2_group $level_3_group
# check that user_2 is a member of level_1_group but not admin
aa_true "User 2 is a member of Level 1 Group" [db_0or1row member_p {
SELECT 1
FROM group_member_map
WHERE group_id = :level_1_group
AND member_id = :user_2_id
AND rel_type = 'membership_rel'
}]
aa_false "User 2 is not an admin of Level 1 Group" [db_0or1row member_p {
SELECT 1
FROM group_member_map
WHERE group_id = :level_1_group
AND member_id = :user_2_id
AND rel_type = 'admin_rel'
}]
}
}
# Local variables:
# mode: tcl
# tcl-indent-level: 4
......
......@@ -6,7 +6,7 @@ ad_page_contract {
@cvs-id $Id$
} {
node_id:naturalnum,optional
{return_url "."}
{return_url:localurl "."}
}
set page_title "[_ acs-subsite.New_Application]"
......
......@@ -6,7 +6,7 @@
@listing;noquote@
<p>
Are you sure you want to delete <if @num@ eq 1>this application</if><else>these @num@ applications</else>?
Are you sure you want to delete <if @num;literal@ true>this application</if><else>these @num@ applications</else>?
</p>
<p>
......
......@@ -9,7 +9,7 @@ ad_page_contract {
} {
{node_id:naturalnum,multiple ""}
{package_id:naturalnum,multiple ""}
{return_url .}
{return_url:localurl .}
{confirm_p:boolean 0}
}
......
......@@ -8,11 +8,18 @@
select n.node_id
from site_nodes n,
apm_packages p,
apm_packages p
left join lang_messages m
on m.locale = :locale and
'#' || m.package_key || '.' || m.message_key || '#' = p.instance_name
left join lang_messages md
on m.locale = 'en_US' and
'#' || md.package_key || '.' || md.message_key || '#' = p.instance_name,
apm_package_types pt
where n.parent_id = :subsite_node_id
and p.package_id = n.object_id
and pt.package_key = p.package_key
and [template::list::filter_where_clauses -and -name applications]
order by lower(p.instance_name)
</querytext>
......@@ -27,7 +34,7 @@
p.instance_name,
pt.pretty_name as package_pretty_name,
0 as treelevel,
(select count(*) from apm_parameters par where par.package_key = pt.package_key) as num_parameters
(select count(*) from apm_parameters par where par.package_key = pt.package_key) as parameters_p
from site_nodes n,
apm_packages p,
apm_package_types pt
......@@ -35,7 +42,6 @@
and p.package_id = n.object_id
and pt.package_key = p.package_key
and [template::list::page_where_clause -name applications -key n.node_id]
[template::list::filter_where_clauses -and -name applications]
order by lower(p.instance_name)
</querytext>
......
......@@ -10,9 +10,18 @@
from site_nodes n,
site_nodes np,
apm_packages p
left outer join lang_messages m
on m.locale = :locale and
'#' || m.package_key || '.' || m.message_key || '#' = p.instance_name
left outer join lang_messages md
on m.locale = 'en_US' and
'#' || md.package_key || '.' || md.message_key || '#' = p.instance_name,
apm_package_types pt
where np.node_id = :subsite_node_id
and n.tree_sortkey between np.tree_sortkey and tree_right(np.tree_sortkey)
and p.package_id = n.object_id
and pt.package_key = p.package_key
[template::list::filter_where_clauses -and -name applications]
order by n.tree_sortkey
</querytext>
......@@ -27,7 +36,8 @@
p.instance_name,
tree_level(n.tree_sortkey) - tree_level(np.tree_sortkey) as treelevel,
pt.pretty_name as package_pretty_name,
(select count(*) from apm_parameters par where par.package_key = pt.package_key) as num_parameters
exists (select 1 from apm_parameters
where package_key = pt.package_key) as parameters_p
from site_nodes n,
site_nodes np,
apm_packages p,
......@@ -37,7 +47,6 @@
and p.package_id = n.object_id
and pt.package_key = p.package_key
and [template::list::page_where_clause -name applications -key n.node_id]
[template::list::filter_where_clauses -and -name applications]
order by n.tree_sortkey
</querytext>
......
<master>
<property name="doc(title)">@page_title;literal@</property>
<property name="context">@context;literal@</property>
<property name="focus">filter.search</property>
<formtemplate id="filter" style="filter"></formtemplate>
<listtemplate name="applications"></listtemplate>
<listtemplate name="applications"></listtemplate>
......@@ -6,6 +6,7 @@ ad_page_contract {
@cvs-id $Id$
} {
page:naturalnum,optional
{search ""}
}
set page_title [_ acs-subsite.Applications]
......@@ -13,6 +14,21 @@ set context [list $page_title]
set subsite_node_id [ad_conn subsite_node_id]
set locale [ad_conn locale]
ad_form \
-name filter \
-edit_buttons [list [list "Go" go]] \
-has_submit 1 \
-html { style "float:right;" } \
-form {
{search:text,optional
{label ""}
{html {length 20 placeholder "[_ acs-kernel.common_Search]"} }
{value $search}
}
} -on_submit {}
list::create \
-name applications \
-multirow applications \
......@@ -65,13 +81,17 @@ list::create \
link_url_eval {[export_vars -base application-delete { node_id }]}
link_html { title "#acs-subsite.Delete_this_application#" }
}
} -filters {
search {
hide_p 1
where_clause {(:search is null or upper(coalesce(coalesce(m.message, md.message), p.instance_name) || n.name || pt.pretty_name) like '%' || upper(:search) || '%')}
}
}
db_multirow -extend { parameter_url } applications select_applications_page {} {
set instance_name [string repeat "- " $treelevel]$instance_name
if { $num_parameters > 0 } {
if { $parameters_p } {
set parameter_url [export_vars -base ../../shared/parameters { package_id { return_url [ad_return_url] } }]
}
}
......
......@@ -5,7 +5,7 @@ ad_page_contract {
@creation-date 2003-05-28
@cvs-id $Id$
} {
{return_url "."}
{return_url:localurl "."}
}
set doc(title) "[_ acs-subsite.Add_multiple_applications]"
......
......@@ -15,7 +15,7 @@ ad_page_contract {
default_value:trim
datatype:notnull,trim
required_p:boolean,notnull
{ return_url "" }
{ return_url:localurl "" }
} -properties {
context:onevalue
export_vars:onevalue
......
......@@ -10,7 +10,7 @@ ad_page_contract {
} {
object_type:notnull,trim
{ return_url "" }
{ return_url:localurl "" }
} -properties {
context:onevalue
export_vars:onevalue
......
......@@ -10,7 +10,7 @@ ad_page_contract {
} {
attribute_id:notnull,naturalnum,attribute_dynamic_p
{ return_url "" }
{ return_url:localurl "" }
{ operation "" }
}
......
......@@ -10,7 +10,7 @@ ad_page_contract {
} {
attribute_id:notnull,naturalnum,attribute_dynamic_p
{ return_url "" }
{ return_url:localurl "" }
} -properties {
context:onevalue
attribute_id:onevalue
......
......@@ -12,7 +12,7 @@ ad_page_contract {
attribute_id:naturalnum
id_column:trim,integer
{ attribute_value "" }
{ return_url "" }
{ return_url:localurl "" }
} -properties {
context:onevalue
focus:onevalue
......@@ -23,21 +23,8 @@ permission::require_permission -object_id $id_column -privilege "write"
set context [list "Edit attribute"]
db_1row attribute_properties {
select a.pretty_name as attribute_pretty_name, a.datatype, a.attribute_id,
nvl(a.column_name,a.attribute_name) as attribute_column,
t.id_column as type_column, t.table_name as type_table, t.object_type,
a.min_n_values
from acs_attributes a, acs_object_types t
where a.attribute_id = :attribute_id
and a.object_type = t.object_type
}
db_1row select_value "
select my_view.$attribute_column as current_value
from ([package_object_view $object_type]) my_view
where my_view.object_id = :id_column
"
db_1row attribute_properties {}
db_1row select_value {}
template::form create edit_attribute
......
......@@ -12,14 +12,10 @@ ad_page_contract {
attribute_id:naturalnum,notnull
attribute_enum_values:array,trim,optional
{ operation:trim "Finish adding values" }
{ return_url "" }
{ return_url:localurl "" }
}
set max_sort_order [db_string select_max_sort_order {
select nvl(max(v.sort_order),0)
from acs_enum_values v
where v.attribute_id = :attribute_id
}]
set max_sort_order [db_string select_max_sort_order {}]
db_transaction {
foreach ideal_sort_order [array names attribute_enum_values] {
......
......@@ -10,7 +10,7 @@ ad_page_contract {
} {
attribute_id:naturalnum,notnull
{ return_url "" }
{ return_url:localurl "" }
} -properties {
context:onevalue
export_vars:onevalue
......
......@@ -2,15 +2,15 @@
<property name="context">@context;literal@</property>
<property name="doc(title)">@attribute.pretty_name;literal@</property>
<b>Properties:</b>
<strong>Properties:</strong>
<ul>
<multiple name="attr_props">
<li> <b>@attr_props.key@:</b> @attr_props.value@
<li> <strong>@attr_props.key@:</strong> @attr_props.value@
</multiple>
</ul>
<if @attribute.datatype@ eq "enumeration">
<p><b>Possible values:</b>
<p><strong>Possible values:</strong>
<ul>
<if @enum_values:rowcount@ eq 0>
<li> <em>(none)</em>
......@@ -26,10 +26,10 @@
</if>
<p><b>Administration:</b>
<p><strong>Administration:</strong>
<ul>
<if @dynamic_p@ eq "t">
<if @dynamic_p;literal@ true>
<li><a href="delete?@url_vars@">Delete this attribute</a>
</if><else>
<li> This attribute can only be administered by programmers as it does not belong to a dynamically created object.
......
......@@ -10,7 +10,7 @@ ad_page_contract {
} {
attribute_id:naturalnum,notnull
{ return_url "" }
{ return_url:localurl "" }
} -properties {
context:onevalue
attribute:onerow
......
......@@ -12,7 +12,7 @@ ad_page_contract {
attribute_id:naturalnum,notnull
enum_value:trim,notnull
{ operation:trim "No, I want to cancel my request" }
{ return_url [export_vars -base one attribute_id] }
{ return_url:localurl "[export_vars -base one attribute_id]" }
}
if {$operation eq "Yes, I really want to delete this attribute value"} {
......
......@@ -11,7 +11,7 @@ ad_page_contract {
} {
attribute_id:naturalnum,notnull
enum_value:trim,notnull
{ return_url [export_vars -base one attribute_id] }
{ return_url:localurl "[export_vars -base one attribute_id]" }
} -properties {
context:onevalue
export_vars:onevalue
......
......@@ -10,7 +10,7 @@ ad_page_contract {
} {
group_type:notnull
default_join_policy:notnull
{return_url ""}
{return_url:localurl ""}
}
if { ![db_0or1row select_pretty_name {
......
......@@ -9,7 +9,7 @@ ad_page_contract {
@cvs-id $Id$
} {
group_type:notnull
{return_url ""}
{return_url:localurl ""}
} -properties {
context:onevalue
group_type:onevalue
......@@ -26,13 +26,7 @@ set context [list \
[list [export_vars -base one group_type] "One type"] \
"Edit default join policy"]
if { ![db_0or1row select_pretty_name {
select t.pretty_name as group_type_pretty_name, t.dynamic_p,
nvl(gt.default_join_policy, 'open') as default_join_policy
from acs_object_types t, group_types gt
where t.object_type = :group_type
and t.object_type = gt.group_type(+)
}] } {
if { ![db_0or1row select_pretty_name {}] } {
ad_return_error "Group type doesn't exist" "Group type \"$group_type\" doesn't exist"
return
}
......
<?xml version="1.0"?>
<queryset>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="package_exists">
<querytext>
......@@ -62,6 +61,19 @@ begin
delete from group_types where group_type=:group_type;
end;
</querytext>
</partialquery>
</partialquery>
<fullquery name="select_group_ids">
<querytext>
select distinct o.object_id
from acs_objects o, acs_object_party_privilege_map perm
where perm.object_id = o.object_id
and perm.party_id = :user_id
and perm.privilege = 'delete'
and o.object_type = :group_type
</querytext>
</fullquery>
</queryset>
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<rdbms><type>postgresql</type><version>9.0</version></rdbms>
<fullquery name="package_exists">
<querytext>
......@@ -70,6 +69,17 @@ delete from group_types where group_type=:group_type;
return 1;
end;
</querytext>
</partialquery>
</partialquery>
<fullquery name="select_group_ids">
<querytext>
select o.object_id
from acs_objects o
where o.object_type = :group_type
and acs_permission__permission_p(o.object_id, :user_id, 'delete')
</querytext>
</fullquery>
</queryset>
......@@ -10,7 +10,7 @@ ad_page_contract {
} {
group_type
{ return_url "" }
{ return_url:localurl "" }
{ operation "" }
} -properties {
context:onevalue
......@@ -78,14 +78,7 @@ db_transaction {
# First delete the groups
if { $package_name ne "" } {
foreach group_id [db_list select_group_ids {
select o.object_id
from acs_objects o, acs_object_party_privilege_map perm
where perm.object_id = o.object_id
and perm.party_id = :user_id
and perm.privilege = 'delete'
and o.object_type = :group_type
}] {
foreach group_id [db_list select_group_ids {}] {
group::delete $group_id
}
}
......
......@@ -11,18 +11,4 @@
</querytext>
</fullquery>
<fullquery name="select_group_ids">
<querytext>
select distinct o.object_id
from acs_objects o, all_object_party_privilege_map perm
where perm.object_id = o.object_id
and perm.party_id = :user_id
and perm.privilege = 'delete'
and o.object_type = :group_type
</querytext>
</fullquery>
</queryset>
......@@ -10,7 +10,7 @@ ad_page_contract {
} {
group_type:notnull
{ return_url "" }
{ return_url:localurl "" }
} -properties {
subtypes:multirow
context:onevalue
......
<?xml version="1.0"?>
<queryset>
<rdbms><type>postgresql</type><version>7.1</version></rdbms>
<rdbms><type>postgresql</type><version>9.0</version></rdbms>
<fullquery name="select_groups">
<querytext>
select g.group_id, g.group_name from (
select distinct g.group_id, g.group_name
from (select group_id, group_name
from groups g, acs_objects o
where g.group_id = o.object_id
and o.object_type = :group_type) g,
(select object_id
from all_object_party_privilege_map
where party_id = :user_id and privilege = 'read') perm,
<querytext>
select g.group_id, g.group_name from (
select DISTINCT g.group_id, g.group_name
from (select group_id, group_name
from groups g, acs_objects o
where g.group_id = o.object_id
and o.object_type = :group_type) g,
application_group_element_map m
where perm.object_id = g.group_id
and m.package_id = :package_id
and m.element_id = g.group_id
order by g.group_id, g.group_name) g
order by lower(g.group_name)
where m.package_id = :package_id
and m.element_id = g.group_id
and acs_permission.permission_p(g.group_id, :user_id, 'read')
) g
order by lower(g.group_name)
</querytext>
</fullquery>
......
......@@ -2,12 +2,11 @@
# sets up datasource for groups-list.adp
if { (![info exists group_type] || $group_type eq "") } {
if { ![info exists group_type] || $group_type eq "" } {
error "Group type must be specified"
}
set user_id [ad_conn user_id]
set user_id [ad_conn user_id]
set package_id [ad_conn package_id]
db_multirow groups select_groups {}
......
......@@ -16,14 +16,19 @@
where t1.object_type = 'group'
and t2.tree_sortkey between t1.tree_sortkey and tree_right(t1.tree_sortkey)) t
left outer join
(select o.object_type, count(*) as number_groups
from groups g, acs_objects o,
application_group_element_map app_group
where acs_permission__permission_p(g.group_id, :user_id, 'read')
and o.object_id = g.group_id
and app_group.package_id = :package_id
and app_group.element_id = g.group_id
group by o.object_type) num
(select object_type, count(group_id) as number_groups from
(select distinct o.object_type, g.group_id
from groups g, acs_objects o,
application_group_element_map app_group
where acs_permission__permission_p(g.group_id, :user_id, 'read')
and o.object_id = g.group_id
and ((app_group.package_id = :package_id and app_group.element_id = g.group_id)
-- the or-clause below is just needed for "Registered Users" (-2)
-- which is an application group for e.g. a subsite,
-- but not mapped to it via application_group_element_map
or (o.object_id = -2)
)) counts
group by object_type) num
using (object_type)
order by t.tree_sortkey
......
......@@ -4,12 +4,20 @@
<rdbms><type>oracle</type><version>8.1.6</version></rdbms>
<fullquery name="pretty_name_unique">
<querytext>
<querytext>
select case when exists (select 1 from acs_object_types t where t.pretty_name = :pretty_name)
then 1 else 0 end
from dual
</querytext>
</querytext>
</fullquery>
<fullquery name="select_group_supertypes">
<querytext>
select replace(lpad(' ', (level - 1) * 4), ' ', '&nbsp;') || t.pretty_name, t.object_type
from acs_object_types t
connect by prior t.object_type = t.supertype
start with t.object_type = 'group'
</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.
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