LSaccessRightsMatrixView: handle LSform layout to ordering attributes

This commit is contained in:
Benjamin Renard 2021-03-16 17:48:49 +01:00
parent 3d9b3c2947
commit 3703d0330e
6 changed files with 171 additions and 109 deletions

View file

@ -19,6 +19,10 @@
text-align: left; text-align: left;
} }
#LSaccessRightsMatrixView table tbody th.LSaccessRightsMatrixView_layout_label {
text-align: center;
}
/* /*
* Table rotated header * Table rotated header
*/ */

View file

@ -166,12 +166,34 @@ function LSaccessRightsMatrixView() {
); );
} }
// Handle LSform layout
$layout = false;
if (LSconfig :: get("LSobjects.$LSobject.LSform.layout")) {
$layout = array();
$displayed_attrs = array();
foreach(LSconfig :: get("LSobjects.$LSobject.LSform.layout") as $tab => $tab_config) {
$layout[$tab] = array(
'label' => __(LSconfig :: get('label', $tab, 'string', $tab_config)),
'attrs' => LSconfig :: get('args', $tab, 'array', $tab_config),
);
$displayed_attrs = array_merge($displayed_attrs, $layout[$tab]['attrs']);
}
$masked_attrs = array_diff(array_keys(LSconfig :: get("LSobjects.$LSobject.attrs", array(), 'array')), $displayed_attrs);
if ($masked_attrs) {
$layout['masked_attrs'] = array(
'label' => _('Masked attributes'),
'attrs' => $masked_attrs,
);
}
}
$LSobjects[$LSobject] = array ( $LSobjects[$LSobject] = array (
'label' => __(LSconfig :: get("LSobjects.$LSobject.label", $LSobject, 'string')), 'label' => __(LSconfig :: get("LSobjects.$LSobject.label", $LSobject, 'string')),
'attrs' => $attrs, 'attrs' => $attrs,
'relations' => $relations, 'relations' => $relations,
'customActions' => $customActions, 'customActions' => $customActions,
'customSearchActions' => $customSearchActions, 'customSearchActions' => $customSearchActions,
'layout' => $layout,
); );
} }

View file

@ -8,7 +8,7 @@ msgstr ""
"Project-Id-Version: LdapSaisie\n" "Project-Id-Version: LdapSaisie\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n" "POT-Creation-Date: \n"
"PO-Revision-Date: 2021-03-03 14:25+0100\n" "PO-Revision-Date: 2021-03-16 17:23+0100\n"
"Last-Translator: Benjamin Renard <brenard@zionetrix.net>\n" "Last-Translator: Benjamin Renard <brenard@zionetrix.net>\n"
"Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise." "Language-Team: LdapSaisie <ldapsaisie-users@lists.labs.libre-entreprise."
"org>\n" "org>\n"
@ -229,7 +229,7 @@ msgstr ""
"défini." "défini."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:52 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:52
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:187 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:209
msgid "Access rights matrix" msgid "Access rights matrix"
msgstr "Matrice des droits d'accès" msgstr "Matrice des droits d'accès"
@ -237,7 +237,11 @@ msgstr "Matrice des droits d'accès"
msgid "All connected users" msgid "All connected users"
msgstr "Tous les utilisateurs connectés" msgstr "Tous les utilisateurs connectés"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:183 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:184
msgid "Masked attributes"
msgstr "Attributs masqués"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:205
msgid "The user him-self" msgid "The user him-self"
msgstr "L'utilisateur lui-même" msgstr "L'utilisateur lui-même"
@ -1020,17 +1024,17 @@ msgstr "Votre nouveau mot de passe vous a été envoyé à l'adresse %{mail}."
msgid "Refresh" msgid "Refresh"
msgstr "Rafraîchir" msgstr "Rafraîchir"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2726 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2730
#: templates/default/select.tpl:20 templates/default/recoverpassword.tpl:17 #: templates/default/select.tpl:20 templates/default/recoverpassword.tpl:17
#: templates/default/login.tpl:16 #: templates/default/login.tpl:16
msgid "Level" msgid "Level"
msgstr "Niveau" msgstr "Niveau"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2884 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2888
msgid "LSsession : The constant '%{const}' is not defined." msgid "LSsession : The constant '%{const}' is not defined."
msgstr "LSsession : La constante '%{const}' n'est pas définie." msgstr "LSsession : La constante '%{const}' n'est pas définie."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2887 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2891
msgid "" msgid ""
"LSsession : The addon '%{addon}' support is uncertain. Verify system " "LSsession : The addon '%{addon}' support is uncertain. Verify system "
"compatibility and the add-on configuration." "compatibility and the add-on configuration."
@ -1038,53 +1042,53 @@ msgstr ""
"LSsession : Le support de l'addon '%{addon}' est incertain. Vérifiez la " "LSsession : Le support de l'addon '%{addon}' est incertain. Vérifiez la "
"compatibilité du système et la configuration de l'add-on." "compatibilité du système et la configuration de l'add-on."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2890 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2894
msgid "" msgid ""
"LSsession : LDAP server's configuration data are invalid. Can't connect." "LSsession : LDAP server's configuration data are invalid. Can't connect."
msgstr "" msgstr ""
"LSsession : Les données de configuration du serveur LDAP sont invalide. " "LSsession : Les données de configuration du serveur LDAP sont invalide. "
"Impossible de s'y connecter." "Impossible de s'y connecter."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2893 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2897
msgid "LSsession : Failed to load LSobject type '%{type}' : unknon type." msgid "LSsession : Failed to load LSobject type '%{type}' : unknon type."
msgstr "" msgstr ""
"LSsession : Impossible de charger le type d'LSobject '%{type}' : type " "LSsession : Impossible de charger le type d'LSobject '%{type}' : type "
"inconnu." "inconnu."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2896 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2900
msgid "LSsession : Failed to load LSclass '%{class}'." msgid "LSsession : Failed to load LSclass '%{class}'."
msgstr "LSsession : Impossible de charger la LSclass '%{class}'." msgstr "LSsession : Impossible de charger la LSclass '%{class}'."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2899 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2903
msgid "LSsession : Login or password incorrect." msgid "LSsession : Login or password incorrect."
msgstr "LSsession : Identifiant ou mot de passe incorrects." msgstr "LSsession : Identifiant ou mot de passe incorrects."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2902 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2906
msgid "LSsession : Impossible to identify you : Duplication of identities." msgid "LSsession : Impossible to identify you : Duplication of identities."
msgstr "LSsession : Impossible de vous identifier : Duplication d'identité." msgstr "LSsession : Impossible de vous identifier : Duplication d'identité."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2905 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2909
msgid "LSsession : Can't load class of authentification (%{class})." msgid "LSsession : Can't load class of authentification (%{class})."
msgstr "" msgstr ""
"LSsession : Impossible de charger la classe d'authentification (%{class})." "LSsession : Impossible de charger la classe d'authentification (%{class})."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2908 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2912
msgid "LSsession : Can't connect to LDAP server." msgid "LSsession : Can't connect to LDAP server."
msgstr "LSsession : Impossible de se connecter au serveur LDAP." msgstr "LSsession : Impossible de se connecter au serveur LDAP."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2911 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2915
msgid "LSsession : Impossible to authenticate you." msgid "LSsession : Impossible to authenticate you."
msgstr "LSsession : Impossible de vous identifier." msgstr "LSsession : Impossible de vous identifier."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2914 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2918
msgid "LSsession : Your are not authorized to do this action." msgid "LSsession : Your are not authorized to do this action."
msgstr "LSsession : Vous n'êtes pas autorisé à faire cette action." msgstr "LSsession : Vous n'êtes pas autorisé à faire cette action."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2917 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2921
msgid "LSsession : Some informations are missing to display this page." msgid "LSsession : Some informations are missing to display this page."
msgstr "LSsession : Des informations sont manquant pour afficher cette page." msgstr "LSsession : Des informations sont manquant pour afficher cette page."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2920 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2924
msgid "" msgid ""
"LSsession : The function '%{function}' of the custom action " "LSsession : The function '%{function}' of the custom action "
"'%{customAction}' does not exists or is not configured." "'%{customAction}' does not exists or is not configured."
@ -1092,24 +1096,24 @@ msgstr ""
"LSsession : La fonction '%{function}' de l'action personnalisée " "LSsession : La fonction '%{function}' de l'action personnalisée "
"'%{customAction}' n'existe pas ou n'est pas configurée." "'%{customAction}' n'existe pas ou n'est pas configurée."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2923 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2927
msgid "LSsession : Fail to retreive user's LDAP credentials from LSauth." msgid "LSsession : Fail to retreive user's LDAP credentials from LSauth."
msgstr "" msgstr ""
"LSsession : Erreur en récupérant les identifiants LDAP de l'utilisateur " "LSsession : Erreur en récupérant les identifiants LDAP de l'utilisateur "
"depuis LSauth." "depuis LSauth."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2926 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2930
msgid "" msgid ""
"LSsession : Fail to reconnect to LDAP server with user's LDAP credentials." "LSsession : Fail to reconnect to LDAP server with user's LDAP credentials."
msgstr "" msgstr ""
"LSsession : Impossible de se reconnecter au serveur LDAP avec les " "LSsession : Impossible de se reconnecter au serveur LDAP avec les "
"identifiants de l'utilisateur." "identifiants de l'utilisateur."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2929 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2933
msgid "LSsession : No import/export format define for this object type." msgid "LSsession : No import/export format define for this object type."
msgstr "LSsession : Aucun format d'entrée/sortie définie pour ce type d'objet." msgstr "LSsession : Aucun format d'entrée/sortie définie pour ce type d'objet."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2932 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2936
msgid "" msgid ""
"LSsession : Error during creation of list of levels. Contact administrators. " "LSsession : Error during creation of list of levels. Contact administrators. "
"(Code : %{code})" "(Code : %{code})"
@ -1117,13 +1121,13 @@ msgstr ""
"LSsession : Erreur durant la création de la liste des niveaux. Contacter les " "LSsession : Erreur durant la création de la liste des niveaux. Contacter les "
"administrateurs. (Code : %{type})" "administrateurs. (Code : %{type})"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2935 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2939
msgid "LSsession : The password recovery is disabled for this LDAP server." msgid "LSsession : The password recovery is disabled for this LDAP server."
msgstr "" msgstr ""
"LSsession : La récupération de mot de passe est désactivée pour ce serveur " "LSsession : La récupération de mot de passe est désactivée pour ce serveur "
"LDAP." "LDAP."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2938 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2942
msgid "" msgid ""
"LSsession : Some informations are missing to recover your password. Contact " "LSsession : Some informations are missing to recover your password. Contact "
"administrators." "administrators."
@ -1131,7 +1135,7 @@ msgstr ""
"LSsession : Des informations sont manques pour pouvoir récupérer votre mot " "LSsession : Des informations sont manques pour pouvoir récupérer votre mot "
"de passe. Contacter les administrateurs." "de passe. Contacter les administrateurs."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2941 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2945
msgid "" msgid ""
"LSsession : Error during password recovery. Contact administrators.(Step : " "LSsession : Error during password recovery. Contact administrators.(Step : "
"%{step})" "%{step})"
@ -1139,7 +1143,7 @@ msgstr ""
"LSsession : Erreur durant la récupération de votre mot de passe. Contacter " "LSsession : Erreur durant la récupération de votre mot de passe. Contacter "
"les administrateurs. (Etape : %{step})" "les administrateurs. (Etape : %{step})"
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2944 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2948
msgid "" msgid ""
"LSsession : The function '%{func}' configured for the view '%{view}' of the " "LSsession : The function '%{func}' configured for the view '%{view}' of the "
"LSaddon '%{addon}' is not declared in the LSaddon file." "LSaddon '%{addon}' is not declared in the LSaddon file."
@ -1147,7 +1151,7 @@ msgstr ""
"LSsession : la fonction '%{func}' configurée pour la vue '%{view}' du " "LSsession : la fonction '%{func}' configurée pour la vue '%{view}' du "
"LSaddon '%{addon}' n'est pas déclaré dans le fichier du LSaddon." "LSaddon '%{addon}' n'est pas déclaré dans le fichier du LSaddon."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2948 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2952
msgid "" msgid ""
"LSsession : The function '%{func}' configured for the view '%{view}' of the " "LSsession : The function '%{func}' configured for the view '%{view}' of the "
"LSaddon '%{addon}' doesn't exist." "LSaddon '%{addon}' doesn't exist."
@ -1155,11 +1159,11 @@ msgstr ""
"LSsession : la fonction '%{func}' configurée pour la vue '%{view}' du " "LSsession : la fonction '%{func}' configurée pour la vue '%{view}' du "
"LSaddon '%{addon}' n'existe pas." "LSaddon '%{addon}' n'existe pas."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2951 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2955
msgid "LSsession : invalid related object's DN pass in parameter." msgid "LSsession : invalid related object's DN pass in parameter."
msgstr "LSsession : DN d'objet en relation incorrect dans les paramètres." msgstr "LSsession : DN d'objet en relation incorrect dans les paramètres."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2954 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2958
msgid "" msgid ""
"LSsession : the LSaddon %{addon} keep using old-style addon view URL. Please " "LSsession : the LSaddon %{addon} keep using old-style addon view URL. Please "
"upgrade it." "upgrade it."
@ -1167,7 +1171,7 @@ msgstr ""
"LSsession : le LSaddon %{addon} utilise toujours l'ancien type d'URL de " "LSsession : le LSaddon %{addon} utilise toujours l'ancien type d'URL de "
"vues. Merci de le mettre à jour." "vues. Merci de le mettre à jour."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2957 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2961
msgid "" msgid ""
"LSsession : You have been redirect from an old-style URL %{url}. Please " "LSsession : You have been redirect from an old-style URL %{url}. Please "
"upgrade this link." "upgrade this link."
@ -1175,7 +1179,7 @@ msgstr ""
"LSsession : Vous avez été redirigé depuis une ancienne URL %{url}. Merci de " "LSsession : Vous avez été redirigé depuis une ancienne URL %{url}. Merci de "
"le mettre à jour ce lien." "le mettre à jour ce lien."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2960 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2964
msgid "" msgid ""
"LSsession : You always seem to use %{old} in your custom code: Please " "LSsession : You always seem to use %{old} in your custom code: Please "
"upgrade it and use %{new}.<pre>\n" "upgrade it and use %{new}.<pre>\n"
@ -1872,11 +1876,11 @@ msgstr "LdapSaisie - Authentification requise"
msgid "LSauthMethod_HTTP : the %{var} environnement variable is missing." msgid "LSauthMethod_HTTP : the %{var} environnement variable is missing."
msgstr "LSauthMethod_HTTP : la variable d'environnement %{var} est manquante." msgstr "LSauthMethod_HTTP : la variable d'environnement %{var} est manquante."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_mail.php:88 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_mail.php:87
msgid "Send a mail from here." msgid "Send a mail from here."
msgstr "Envoyer un mail depuis l'interface." msgstr "Envoyer un mail depuis l'interface."
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_mail.php:120 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_mail.php:119
msgid "" msgid ""
"LSformElement_mail: the autocomplete feature was moved to parent " "LSformElement_mail: the autocomplete feature was moved to parent "
"LSformElement_text class and you still use old configuration style with " "LSformElement_text class and you still use old configuration style with "
@ -2488,8 +2492,8 @@ msgstr "Mme."
msgid "Mr." msgid "Mr."
msgstr "M." msgstr "M."
#: templates/default/LSaccessRightsMatrixView.tpl:95 #: templates/default/LSaccessRightsMatrixView.tpl:119
#: templates/default/LSaccessRightsMatrixView.tpl:129 #: templates/default/LSaccessRightsMatrixView.tpl:153
msgid "Allowed" msgid "Allowed"
msgstr "Autorisé" msgstr "Autorisé"
@ -2509,16 +2513,16 @@ msgstr "Se connecter"
msgid "Connected as" msgid "Connected as"
msgstr "Connecté en tant que" msgstr "Connecté en tant que"
#: templates/default/LSaccessRightsMatrixView.tpl:87 #: templates/default/LSaccessRightsMatrixView.tpl:111
msgid "Custom actions" msgid "Custom actions"
msgstr "Actions personnalisées" msgstr "Actions personnalisées"
#: templates/default/LSaccessRightsMatrixView.tpl:92 #: templates/default/LSaccessRightsMatrixView.tpl:116
#: templates/default/LSaccessRightsMatrixView.tpl:126 #: templates/default/LSaccessRightsMatrixView.tpl:150
msgid "Custom actions / Profiles" msgid "Custom actions / Profiles"
msgstr "Actions personnalisées / Profils" msgstr "Actions personnalisées / Profils"
#: templates/default/LSaccessRightsMatrixView.tpl:121 #: templates/default/LSaccessRightsMatrixView.tpl:145
msgid "Custom search actions" msgid "Custom search actions"
msgstr "Actions personnalisées sur les recherches" msgstr "Actions personnalisées sur les recherches"
@ -2566,9 +2570,9 @@ msgid "Language"
msgstr "Langue" msgstr "Langue"
#: templates/default/LSaccessRightsMatrixView.tpl:20 #: templates/default/LSaccessRightsMatrixView.tpl:20
#: templates/default/LSaccessRightsMatrixView.tpl:56 #: templates/default/LSaccessRightsMatrixView.tpl:80
#: templates/default/LSaccessRightsMatrixView.tpl:94 #: templates/default/LSaccessRightsMatrixView.tpl:118
#: templates/default/LSaccessRightsMatrixView.tpl:128 #: templates/default/LSaccessRightsMatrixView.tpl:152
msgid "Legend:" msgid "Legend:"
msgstr "Légende :" msgstr "Légende :"
@ -2617,26 +2621,28 @@ msgid "Please confirm new password:"
msgstr "Merci de confirmer le nouveau mot de passe :" msgstr "Merci de confirmer le nouveau mot de passe :"
#: templates/default/LSaccessRightsMatrixView.tpl:21 #: templates/default/LSaccessRightsMatrixView.tpl:21
#: templates/default/LSaccessRightsMatrixView.tpl:38 #: templates/default/LSaccessRightsMatrixView.tpl:45
#: templates/default/LSaccessRightsMatrixView.tpl:57 #: templates/default/LSaccessRightsMatrixView.tpl:61
#: templates/default/LSaccessRightsMatrixView.tpl:73 #: templates/default/LSaccessRightsMatrixView.tpl:81
#: templates/default/LSaccessRightsMatrixView.tpl:97
msgid "R" msgid "R"
msgstr "L" msgstr "L"
#: templates/default/LSaccessRightsMatrixView.tpl:23 #: templates/default/LSaccessRightsMatrixView.tpl:23
#: templates/default/LSaccessRightsMatrixView.tpl:40 #: templates/default/LSaccessRightsMatrixView.tpl:47
#: templates/default/LSaccessRightsMatrixView.tpl:59 #: templates/default/LSaccessRightsMatrixView.tpl:63
#: templates/default/LSaccessRightsMatrixView.tpl:75 #: templates/default/LSaccessRightsMatrixView.tpl:83
#: templates/default/LSaccessRightsMatrixView.tpl:99
msgid "R/W" msgid "R/W"
msgstr "L/É" msgstr "L/É"
#: templates/default/LSaccessRightsMatrixView.tpl:21 #: templates/default/LSaccessRightsMatrixView.tpl:21
#: templates/default/LSaccessRightsMatrixView.tpl:57 #: templates/default/LSaccessRightsMatrixView.tpl:81
msgid "Readable" msgid "Readable"
msgstr "Lecture" msgstr "Lecture"
#: templates/default/LSaccessRightsMatrixView.tpl:23 #: templates/default/LSaccessRightsMatrixView.tpl:23
#: templates/default/LSaccessRightsMatrixView.tpl:59 #: templates/default/LSaccessRightsMatrixView.tpl:83
msgid "Readable / Writable" msgid "Readable / Writable"
msgstr "Lecture / Écriture" msgstr "Lecture / Écriture"
@ -2644,7 +2650,7 @@ msgstr "Lecture / Écriture"
msgid "Refresh my access rights" msgid "Refresh my access rights"
msgstr "Rafraîchir mes droits d'accès" msgstr "Rafraîchir mes droits d'accès"
#: templates/default/LSaccessRightsMatrixView.tpl:54 #: templates/default/LSaccessRightsMatrixView.tpl:78
msgid "Relations / Profiles" msgid "Relations / Profiles"
msgstr "Relations / Profils" msgstr "Relations / Profils"
@ -2660,21 +2666,21 @@ msgstr "Afficher/cacher le menu"
msgid "Subject" msgid "Subject"
msgstr "Sujet" msgstr "Sujet"
#: templates/default/LSaccessRightsMatrixView.tpl:49 #: templates/default/LSaccessRightsMatrixView.tpl:73
msgid "Their relations with other objects" msgid "Their relations with other objects"
msgstr "Leurs relations avec les autres objets" msgstr "Leurs relations avec les autres objets"
#: templates/default/LSaccessRightsMatrixView.tpl:118 #: templates/default/LSaccessRightsMatrixView.tpl:142
msgid "This object type has no configured custom action." msgid "This object type has no configured custom action."
msgstr "Ce type d'objet n'a aucune action personnalisée de configurée." msgstr "Ce type d'objet n'a aucune action personnalisée de configurée."
#: templates/default/LSaccessRightsMatrixView.tpl:152 #: templates/default/LSaccessRightsMatrixView.tpl:176
msgid "This object type has no configured custom search action." msgid "This object type has no configured custom search action."
msgstr "" msgstr ""
"Ce type d'objet n'a aucune action personnalisée sur les recherches de " "Ce type d'objet n'a aucune action personnalisée sur les recherches de "
"configurée." "configurée."
#: templates/default/LSaccessRightsMatrixView.tpl:84 #: templates/default/LSaccessRightsMatrixView.tpl:108
msgid "This object type has no configured relation." msgid "This object type has no configured relation."
msgstr "Ce type d'objet n'a aucune relation de configurée." msgstr "Ce type d'objet n'a aucune relation de configurée."

View file

@ -176,7 +176,7 @@ msgid "Access Right Matrix Support : The global array %{array} is not defined."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:52 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:52
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:187 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:209
msgid "Access rights matrix" msgid "Access rights matrix"
msgstr "" msgstr ""
@ -184,7 +184,11 @@ msgstr ""
msgid "All connected users" msgid "All connected users"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:183 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:184
msgid "Masked attributes"
msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/addons/LSaddons.LSaccessRightsMatrixView.php:205
msgid "The user him-self" msgid "The user him-self"
msgstr "" msgstr ""
@ -866,133 +870,133 @@ msgstr ""
msgid "Refresh" msgid "Refresh"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2726 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2730
#: templates/default/select.tpl:20 templates/default/recoverpassword.tpl:17 #: templates/default/select.tpl:20 templates/default/recoverpassword.tpl:17
#: templates/default/login.tpl:16 #: templates/default/login.tpl:16
msgid "Level" msgid "Level"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2884 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2888
msgid "LSsession : The constant '%{const}' is not defined." msgid "LSsession : The constant '%{const}' is not defined."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2887 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2891
msgid "" msgid ""
"LSsession : The addon '%{addon}' support is uncertain. Verify system " "LSsession : The addon '%{addon}' support is uncertain. Verify system "
"compatibility and the add-on configuration." "compatibility and the add-on configuration."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2890 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2894
msgid "" msgid ""
"LSsession : LDAP server's configuration data are invalid. Can't connect." "LSsession : LDAP server's configuration data are invalid. Can't connect."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2893 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2897
msgid "LSsession : Failed to load LSobject type '%{type}' : unknon type." msgid "LSsession : Failed to load LSobject type '%{type}' : unknon type."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2896 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2900
msgid "LSsession : Failed to load LSclass '%{class}'." msgid "LSsession : Failed to load LSclass '%{class}'."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2899 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2903
msgid "LSsession : Login or password incorrect." msgid "LSsession : Login or password incorrect."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2902 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2906
msgid "LSsession : Impossible to identify you : Duplication of identities." msgid "LSsession : Impossible to identify you : Duplication of identities."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2905 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2909
msgid "LSsession : Can't load class of authentification (%{class})." msgid "LSsession : Can't load class of authentification (%{class})."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2908 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2912
msgid "LSsession : Can't connect to LDAP server." msgid "LSsession : Can't connect to LDAP server."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2911 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2915
msgid "LSsession : Impossible to authenticate you." msgid "LSsession : Impossible to authenticate you."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2914 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2918
msgid "LSsession : Your are not authorized to do this action." msgid "LSsession : Your are not authorized to do this action."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2917 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2921
msgid "LSsession : Some informations are missing to display this page." msgid "LSsession : Some informations are missing to display this page."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2920 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2924
msgid "" msgid ""
"LSsession : The function '%{function}' of the custom action " "LSsession : The function '%{function}' of the custom action "
"'%{customAction}' does not exists or is not configured." "'%{customAction}' does not exists or is not configured."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2923 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2927
msgid "LSsession : Fail to retreive user's LDAP credentials from LSauth." msgid "LSsession : Fail to retreive user's LDAP credentials from LSauth."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2926 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2930
msgid "" msgid ""
"LSsession : Fail to reconnect to LDAP server with user's LDAP credentials." "LSsession : Fail to reconnect to LDAP server with user's LDAP credentials."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2929 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2933
msgid "LSsession : No import/export format define for this object type." msgid "LSsession : No import/export format define for this object type."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2932 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2936
msgid "" msgid ""
"LSsession : Error during creation of list of levels. Contact administrators. " "LSsession : Error during creation of list of levels. Contact administrators. "
"(Code : %{code})" "(Code : %{code})"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2935 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2939
msgid "LSsession : The password recovery is disabled for this LDAP server." msgid "LSsession : The password recovery is disabled for this LDAP server."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2938 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2942
msgid "" msgid ""
"LSsession : Some informations are missing to recover your password. Contact " "LSsession : Some informations are missing to recover your password. Contact "
"administrators." "administrators."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2941 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2945
msgid "" msgid ""
"LSsession : Error during password recovery. Contact administrators.(Step : " "LSsession : Error during password recovery. Contact administrators.(Step : "
"%{step})" "%{step})"
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2944 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2948
msgid "" msgid ""
"LSsession : The function '%{func}' configured for the view '%{view}' of the " "LSsession : The function '%{func}' configured for the view '%{view}' of the "
"LSaddon '%{addon}' is not declared in the LSaddon file." "LSaddon '%{addon}' is not declared in the LSaddon file."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2948 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2952
msgid "" msgid ""
"LSsession : The function '%{func}' configured for the view '%{view}' of the " "LSsession : The function '%{func}' configured for the view '%{view}' of the "
"LSaddon '%{addon}' doesn't exist." "LSaddon '%{addon}' doesn't exist."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2951 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2955
msgid "LSsession : invalid related object's DN pass in parameter." msgid "LSsession : invalid related object's DN pass in parameter."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2954 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2958
msgid "" msgid ""
"LSsession : the LSaddon %{addon} keep using old-style addon view URL. Please " "LSsession : the LSaddon %{addon} keep using old-style addon view URL. Please "
"upgrade it." "upgrade it."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2957 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2961
msgid "" msgid ""
"LSsession : You have been redirect from an old-style URL %{url}. Please " "LSsession : You have been redirect from an old-style URL %{url}. Please "
"upgrade this link." "upgrade this link."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2960 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSsession.php:2964
msgid "" msgid ""
"LSsession : You always seem to use %{old} in your custom code: Please " "LSsession : You always seem to use %{old} in your custom code: Please "
"upgrade it and use %{new}.<pre>\n" "upgrade it and use %{new}.<pre>\n"
@ -1574,11 +1578,11 @@ msgstr ""
msgid "LSauthMethod_HTTP : the %{var} environnement variable is missing." msgid "LSauthMethod_HTTP : the %{var} environnement variable is missing."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_mail.php:88 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_mail.php:87
msgid "Send a mail from here." msgid "Send a mail from here."
msgstr "" msgstr ""
#: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_mail.php:120 #: /home/brenard/dev/ldapsaisie_clean3/src/includes/class/class.LSformElement_mail.php:119
msgid "" msgid ""
"LSformElement_mail: the autocomplete feature was moved to parent " "LSformElement_mail: the autocomplete feature was moved to parent "
"LSformElement_text class and you still use old configuration style with " "LSformElement_text class and you still use old configuration style with "
@ -2130,8 +2134,8 @@ msgstr ""
msgid "Mr." msgid "Mr."
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:95 #: templates/default/LSaccessRightsMatrixView.tpl:119
#: templates/default/LSaccessRightsMatrixView.tpl:129 #: templates/default/LSaccessRightsMatrixView.tpl:153
msgid "Allowed" msgid "Allowed"
msgstr "" msgstr ""
@ -2151,16 +2155,16 @@ msgstr ""
msgid "Connected as" msgid "Connected as"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:87 #: templates/default/LSaccessRightsMatrixView.tpl:111
msgid "Custom actions" msgid "Custom actions"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:92 #: templates/default/LSaccessRightsMatrixView.tpl:116
#: templates/default/LSaccessRightsMatrixView.tpl:126 #: templates/default/LSaccessRightsMatrixView.tpl:150
msgid "Custom actions / Profiles" msgid "Custom actions / Profiles"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:121 #: templates/default/LSaccessRightsMatrixView.tpl:145
msgid "Custom search actions" msgid "Custom search actions"
msgstr "" msgstr ""
@ -2208,9 +2212,9 @@ msgid "Language"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:20 #: templates/default/LSaccessRightsMatrixView.tpl:20
#: templates/default/LSaccessRightsMatrixView.tpl:56 #: templates/default/LSaccessRightsMatrixView.tpl:80
#: templates/default/LSaccessRightsMatrixView.tpl:94 #: templates/default/LSaccessRightsMatrixView.tpl:118
#: templates/default/LSaccessRightsMatrixView.tpl:128 #: templates/default/LSaccessRightsMatrixView.tpl:152
msgid "Legend:" msgid "Legend:"
msgstr "" msgstr ""
@ -2259,26 +2263,28 @@ msgid "Please confirm new password:"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:21 #: templates/default/LSaccessRightsMatrixView.tpl:21
#: templates/default/LSaccessRightsMatrixView.tpl:38 #: templates/default/LSaccessRightsMatrixView.tpl:45
#: templates/default/LSaccessRightsMatrixView.tpl:57 #: templates/default/LSaccessRightsMatrixView.tpl:61
#: templates/default/LSaccessRightsMatrixView.tpl:73 #: templates/default/LSaccessRightsMatrixView.tpl:81
#: templates/default/LSaccessRightsMatrixView.tpl:97
msgid "R" msgid "R"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:23 #: templates/default/LSaccessRightsMatrixView.tpl:23
#: templates/default/LSaccessRightsMatrixView.tpl:40 #: templates/default/LSaccessRightsMatrixView.tpl:47
#: templates/default/LSaccessRightsMatrixView.tpl:59 #: templates/default/LSaccessRightsMatrixView.tpl:63
#: templates/default/LSaccessRightsMatrixView.tpl:75 #: templates/default/LSaccessRightsMatrixView.tpl:83
#: templates/default/LSaccessRightsMatrixView.tpl:99
msgid "R/W" msgid "R/W"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:21 #: templates/default/LSaccessRightsMatrixView.tpl:21
#: templates/default/LSaccessRightsMatrixView.tpl:57 #: templates/default/LSaccessRightsMatrixView.tpl:81
msgid "Readable" msgid "Readable"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:23 #: templates/default/LSaccessRightsMatrixView.tpl:23
#: templates/default/LSaccessRightsMatrixView.tpl:59 #: templates/default/LSaccessRightsMatrixView.tpl:83
msgid "Readable / Writable" msgid "Readable / Writable"
msgstr "" msgstr ""
@ -2286,7 +2292,7 @@ msgstr ""
msgid "Refresh my access rights" msgid "Refresh my access rights"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:54 #: templates/default/LSaccessRightsMatrixView.tpl:78
msgid "Relations / Profiles" msgid "Relations / Profiles"
msgstr "" msgstr ""
@ -2302,19 +2308,19 @@ msgstr ""
msgid "Subject" msgid "Subject"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:49 #: templates/default/LSaccessRightsMatrixView.tpl:73
msgid "Their relations with other objects" msgid "Their relations with other objects"
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:118 #: templates/default/LSaccessRightsMatrixView.tpl:142
msgid "This object type has no configured custom action." msgid "This object type has no configured custom action."
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:152 #: templates/default/LSaccessRightsMatrixView.tpl:176
msgid "This object type has no configured custom search action." msgid "This object type has no configured custom search action."
msgstr "" msgstr ""
#: templates/default/LSaccessRightsMatrixView.tpl:84 #: templates/default/LSaccessRightsMatrixView.tpl:108
msgid "This object type has no configured relation." msgid "This object type has no configured relation."
msgstr "" msgstr ""

View file

@ -29,7 +29,30 @@
</tr> </tr>
</thead> </thead>
<tbody> <tbody>
{foreach $LSobjects[$LSobject]['attrs'] as $name => $conf} {if $LSobjects[$LSobject]['layout']}
{foreach $LSobjects[$LSobject]['layout'] as $tab_name => $tab}
<tr>
<th colspan="{count($LSprofiles)+1}" class="LSaccessRightsMatrixView_layout_label">{$tab.label}</th>
</tr>
{foreach $tab.attrs as $name}
{if !isset($LSobjects[$LSobject]['attrs'][$name])}{continue}{/if}
{assign var=conf value=$LSobjects[$LSobject]['attrs'][$name]}
<tr>
<th class="row-header">{$conf.label} <img class='LStips' src="{img name='help'}" alt='?' title='{$name|escape:'htmlall'}'/></th>
{foreach $LSprofiles as $profil => $profil_label}
<td class='LStips' title="{if $profil != $profil_label}{$profil_label} ({$profil}){else}{$profil}{/if}">
{if $conf.rights[$profil] == 'r'}
<span class='LSaccessRightsMatrixView_readable'>{tr msg="R"}</span>
{elseif $conf.rights[$profil] == 'w'}
<span class='LSaccessRightsMatrixView_writable'>{tr msg="R/W"}</span>
{/if}
</td>
{/foreach}
</tr>
{/foreach}
{/foreach}
{else}
{foreach $LSobjects[$LSobject]['attrs'] as $name => $conf}
<tr> <tr>
<th class="row-header">{$conf.label} <img class='LStips' src="{img name='help'}" alt='?' title='{$name|escape:'htmlall'}'/></th> <th class="row-header">{$conf.label} <img class='LStips' src="{img name='help'}" alt='?' title='{$name|escape:'htmlall'}'/></th>
{foreach $LSprofiles as $profil => $profil_label} {foreach $LSprofiles as $profil => $profil_label}
@ -42,7 +65,8 @@
</td> </td>
{/foreach} {/foreach}
</tr> </tr>
{/foreach} {/foreach}
{/if}
</tbody> </tbody>
</table> </table>