diff --git a/public_html/create.php b/public_html/create.php index 88b9a2de..046520aa 100644 --- a/public_html/create.php +++ b/public_html/create.php @@ -41,6 +41,28 @@ if(LSsession :: startLSsession()) { $form = $object -> getForm('create',urldecode($_GET['load'])); } else { + if (isset($_GET['LSrelation']) && isset($_GET['relatedLSobject']) && isset($_GET['relatedLSobjectDN'])) { + if (LSsession :: loadLSobject($_GET['relatedLSobject']) && LSsession :: loadLSclass('LSrelation')) { + $obj = new $_GET['relatedLSobject'](); + if ($obj -> loadData(urldecode($_GET['relatedLSobjectDN']))) { + $relation = new LSrelation($obj, $_GET['LSrelation']); + if ($relation -> exists()) { + $attr = $relation -> getRelatedEditableAttribute(); + if (isset($object -> attrs[$attr])) { + $value = $relation -> getRelatedKeyValue(); + if (is_array($value)) $value=$value[0]; + $object -> attrs[$attr] -> data = array($value); + } + else { + LSerror :: addErrorCode('LSrelations_06',array('relation' => $relation -> getName(),'LSobject' => $obj -> getType())); + } + } + } + else { + LSerror :: addErrorCode('LSsession_24'); + } + } + } $form = $object -> getForm('create'); } @@ -116,5 +138,3 @@ else { LSsession :: setTemplate('login.tpl'); } LSsession :: displayTemplate(); - -?> diff --git a/public_html/includes/class/class.LSrelation.php b/public_html/includes/class/class.LSrelation.php index 8eb23736..69303501 100644 --- a/public_html/includes/class/class.LSrelation.php +++ b/public_html/includes/class/class.LSrelation.php @@ -37,10 +37,28 @@ class LSrelation { } } + public function exists(&$obj=null,$relationName=null) { + if ($obj && $relationName) { + return (isset($obj->config['LSrelation'][$relationName]) && is_array($obj->config['LSrelation'][$relationName])); + } + else { + return is_array($this -> config); + } + } + + public function getName() { + return $this -> relationName; + } + public function canEdit() { return LSsession :: relationCanEdit($this -> obj -> getValue('dn'),$this -> obj -> getType(),$this -> relationName); } + public function canCreate() { + return LSsession :: canCreate($this -> config['LSobject']); + } + + public function listRelatedObjects() { if (LSsession :: loadLSobject($this -> config['LSobject'])) { $objRel = new $this -> config['LSobject'](); @@ -242,6 +260,13 @@ class LSrelation { 'url' => 'select.php?LSobject='.$relationConf['LSobject'].'&multiple=1'.($relation -> getRelatedEditableAttribute()?'&editableAttr='.$relation -> getRelatedEditableAttribute():''), 'action' => 'modify' ); + if ($relation -> canCreate()) { + $return['actions'][] = array( + 'label' => _('New'), + 'url' => 'create.php?LSobject='.$relationConf['LSobject'].'&LSrelation='.$relationName.'&relatedLSobject='.$object->getType().'&relatedLSobjectDN='.urlencode($object -> getValue('dn')), + 'action' => 'create' + ); + } } $list = $relation -> listRelatedObjects(); @@ -424,17 +449,20 @@ class LSrelation { * Error Codes **/ LSerror :: defineError('LSrelations_01', -_("LSrelation : The function %{function} for action '%{action}' on the relation %{relation} is unknow.") +_("LSrelation : The function %{function} for action '%{action}' on the relation %{relation} is unknown.") ); LSerror :: defineError('LSrelations_02', -_("LSrelation : Relation %{relation} of object type %{LSobject} unknow.") +_("LSrelation : Relation %{relation} of object type %{LSobject} unknown.") ); LSerror :: defineError('LSrelations_03', _("LSrelation : Error during relation update of the relation %{relation}.") ); LSerror :: defineError('LSrelations_04', -_("LSrelation : Object type %{LSobject} unknow (Relation : %{relation}).") +_("LSrelation : Object type %{LSobject} unknown (Relation : %{relation}).") ); LSerror :: defineError('LSrelations_05', _("LSrelation : Incomplete configuration for LSrelation %{relation} of object type %{LSobject} for action : %{action}.") ); +LSerror :: defineError('LSrelations_06', +_("LSrelation : Invalid editable attribute for LSrelation %{relation} with LSobject %{LSobject}.") +); diff --git a/public_html/includes/class/class.LSsession.php b/public_html/includes/class/class.LSsession.php index 817b0581..d09641db 100644 --- a/public_html/includes/class/class.LSsession.php +++ b/public_html/includes/class/class.LSsession.php @@ -2454,6 +2454,9 @@ class LSsession { LSerror :: defineError('LSsession_23', _("LSsession : view function %{func} for LSaddon %{addon} doet not exist.") ); + LSerror :: defineError('LSsession_24', + _("LSsession : invalid related object's DN pass in parameter.") + ); } /** diff --git a/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo b/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo index 46ee6774..dfd3f21d 100644 Binary files a/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo and b/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.mo differ diff --git a/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po b/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po index 8632f39b..5db59d04 100644 --- a/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po +++ b/public_html/lang/fr_FR.UTF8/LC_MESSAGES/ldapsaisie.po @@ -7,8 +7,8 @@ msgid "" msgstr "" "Project-Id-Version: LdapSaisie\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-06-15 18:19+0200\n" -"PO-Revision-Date: 2017-06-15 18:21+0100\n" +"POT-Creation-Date: 2017-08-02 11:53+0200\n" +"PO-Revision-Date: 2017-08-02 11:56+0100\n" "Last-Translator: Benjamin Renard \n" "Language-Team: LdapSaisie \n" @@ -22,7 +22,7 @@ msgstr "" #: view.php:44 modify.php:54 #: includes/class/class.LSformElement_supannCompositeAttribute.php:106 -#: includes/class/class.LSrelation.php:241 +#: includes/class/class.LSrelation.php:259 #: includes/class/class.LSformElement_select_object.php:68 #: includes/class/class.LSformElement_supannLabeledValue.php:62 #: includes/class/class.LSsearchEntry.php:163 @@ -33,7 +33,7 @@ msgstr "Modifier" msgid "Copy" msgstr "Copier" -#: view.php:60 modify.php:111 includes/class/class.LSrelation.php:198 +#: view.php:60 modify.php:111 includes/class/class.LSrelation.php:216 #: includes/class/class.LSform.php:218 #: includes/class/class.LSformElement_select_object.php:69 #: includes/class/class.LSformElement_select_object.php:85 @@ -78,15 +78,15 @@ msgstr "Voir" msgid "Import" msgstr "Importer" -#: create.php:53 +#: create.php:75 msgid "Data entry form" msgstr "Masque de saisie" -#: create.php:59 +#: create.php:81 msgid "Object has been added." msgstr "L'objet a été ajouté." -#: create.php:98 +#: create.php:120 includes/class/class.LSrelation.php:265 msgid "New" msgstr "Nouveau" @@ -813,6 +813,10 @@ msgid "LSsession : view function %{func} for LSaddon %{addon} doet not exist." msgstr "" "LSsession : la fonction de vue %{func} du LSaddon %{addon} n'existe pas." +#: includes/class/class.LSsession.php:2458 +msgid "LSsession : invalid related object's DN pass in parameter." +msgstr "LSsession : DN d'objet en relation incorrect dans les paramètres." + #: includes/class/class.LSldapObject.php:470 msgid "The attribute %{attr} is not valid." msgstr "L'attribut %{attr} n'est pas valide." @@ -1084,81 +1088,81 @@ msgstr "LSldap : Erreur durant la suppression des attributs vides." msgid "LSldap : Error while changing the DN of the object." msgstr "LSldap : Erreur pendant la modification du DN de l'objet." -#: includes/class/class.LSrelation.php:51 -#: includes/class/class.LSrelation.php:58 +#: includes/class/class.LSrelation.php:69 +#: includes/class/class.LSrelation.php:76 msgid "listing related objects" msgstr "énumaration des objets liés" -#: includes/class/class.LSrelation.php:85 -#: includes/class/class.LSrelation.php:91 +#: includes/class/class.LSrelation.php:103 +#: includes/class/class.LSrelation.php:109 msgid "getting key value" msgstr "récupération de la valeur clé" -#: includes/class/class.LSrelation.php:116 -#: includes/class/class.LSrelation.php:123 -#: includes/class/class.LSrelation.php:156 +#: includes/class/class.LSrelation.php:134 +#: includes/class/class.LSrelation.php:141 +#: includes/class/class.LSrelation.php:174 msgid "checking right on relation with specific object" msgstr "vérification des droits sur la relation avec un objet en particulier" -#: includes/class/class.LSrelation.php:132 +#: includes/class/class.LSrelation.php:150 msgid "deleting" msgstr "suppression" -#: includes/class/class.LSrelation.php:139 +#: includes/class/class.LSrelation.php:157 msgid "removing relation with specific object" msgstr "suppression de la relation avec un object en particulier" -#: includes/class/class.LSrelation.php:149 +#: includes/class/class.LSrelation.php:167 msgid "renaming" msgstr "renommage" -#: includes/class/class.LSrelation.php:168 +#: includes/class/class.LSrelation.php:186 msgid "updating" msgstr "mise à jour" -#: includes/class/class.LSrelation.php:174 +#: includes/class/class.LSrelation.php:192 msgid "updating relations" msgstr "mise à jour des relations" -#: includes/class/class.LSrelation.php:196 includes/class/class.LSform.php:216 +#: includes/class/class.LSrelation.php:214 includes/class/class.LSform.php:216 #: remove.php:49 msgid "Do you really want to delete" msgstr "Voulez-vous vraiment supprimer" -#: includes/class/class.LSrelation.php:197 +#: includes/class/class.LSrelation.php:215 msgid "Warning" msgstr "Attention" -#: includes/class/class.LSrelation.php:225 -#: includes/class/class.LSrelation.php:339 +#: includes/class/class.LSrelation.php:243 +#: includes/class/class.LSrelation.php:364 msgid "No object." msgstr "Aucun objet." -#: includes/class/class.LSrelation.php:427 +#: includes/class/class.LSrelation.php:452 msgid "" "LSrelation : The function %{function} for action '%{action}' on the relation " -"%{relation} is unknow." +"%{relation} is unknown." msgstr "" "LSrelation : La fonction %{function} pour l'action '%{action}' sur la " "relation %{relation} est inconnue." -#: includes/class/class.LSrelation.php:430 -msgid "LSrelation : Relation %{relation} of object type %{LSobject} unknow." +#: includes/class/class.LSrelation.php:455 +msgid "LSrelation : Relation %{relation} of object type %{LSobject} unknown." msgstr "" "LSrelation : La relation %{relation} du type d'objet %{LSobject} est " "inconnue." -#: includes/class/class.LSrelation.php:433 +#: includes/class/class.LSrelation.php:458 msgid "LSrelation : Error during relation update of the relation %{relation}." msgstr "LSsession : Erreur durant la mise à jour de la relation %{relation}" -#: includes/class/class.LSrelation.php:436 -msgid "LSrelation : Object type %{LSobject} unknow (Relation : %{relation})." +#: includes/class/class.LSrelation.php:461 +msgid "LSrelation : Object type %{LSobject} unknown (Relation : %{relation})." msgstr "" "LSsession : La fonction de mise à jour de la relation %{relation} est " "inconnue." -#: includes/class/class.LSrelation.php:439 +#: includes/class/class.LSrelation.php:464 msgid "" "LSrelation : Incomplete configuration for LSrelation %{relation} of object " "type %{LSobject} for action : %{action}." @@ -1166,6 +1170,14 @@ msgstr "" "LSrelation : Configuration incomplète de la LSrelation %{relation} du type " "d'objet %{LSobject} pour l'action : %{action}." +#: includes/class/class.LSrelation.php:467 +msgid "" +"LSrelation : Invalid editable attribute for LSrelation %{relation} with " +"LSobject %{LSobject}." +msgstr "" +"LSrelation : Attribut éditable invalide pour la LSrelation %{relation} du " +"type d'objet %{LSobject}." + #: includes/class/class.LSformElement_password.php:134 msgid "Generate a password." msgstr "Générer un mot de passe." diff --git a/public_html/lang/ldapsaisie.pot b/public_html/lang/ldapsaisie.pot index a1df99ee..5a91ac2b 100644 --- a/public_html/lang/ldapsaisie.pot +++ b/public_html/lang/ldapsaisie.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-06-15 18:19+0200\n" +"POT-Creation-Date: 2017-08-02 11:53+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -19,7 +19,7 @@ msgstr "" #: view.php:44 modify.php:54 #: includes/class/class.LSformElement_supannCompositeAttribute.php:106 -#: includes/class/class.LSrelation.php:241 +#: includes/class/class.LSrelation.php:259 #: includes/class/class.LSformElement_select_object.php:68 #: includes/class/class.LSformElement_supannLabeledValue.php:62 #: includes/class/class.LSsearchEntry.php:163 @@ -30,7 +30,7 @@ msgstr "" msgid "Copy" msgstr "" -#: view.php:60 modify.php:111 includes/class/class.LSrelation.php:198 +#: view.php:60 modify.php:111 includes/class/class.LSrelation.php:216 #: includes/class/class.LSform.php:218 #: includes/class/class.LSformElement_select_object.php:69 #: includes/class/class.LSformElement_select_object.php:85 @@ -75,15 +75,15 @@ msgstr "" msgid "Import" msgstr "" -#: create.php:53 +#: create.php:75 msgid "Data entry form" msgstr "" -#: create.php:59 +#: create.php:81 msgid "Object has been added." msgstr "" -#: create.php:98 +#: create.php:120 includes/class/class.LSrelation.php:265 msgid "New" msgstr "" @@ -707,6 +707,10 @@ msgstr "" msgid "LSsession : view function %{func} for LSaddon %{addon} doet not exist." msgstr "" +#: includes/class/class.LSsession.php:2458 +msgid "LSsession : invalid related object's DN pass in parameter." +msgstr "" + #: includes/class/class.LSldapObject.php:470 msgid "The attribute %{attr} is not valid." msgstr "" @@ -920,80 +924,86 @@ msgstr "" msgid "LSldap : Error while changing the DN of the object." msgstr "" -#: includes/class/class.LSrelation.php:51 -#: includes/class/class.LSrelation.php:58 +#: includes/class/class.LSrelation.php:69 +#: includes/class/class.LSrelation.php:76 msgid "listing related objects" msgstr "" -#: includes/class/class.LSrelation.php:85 -#: includes/class/class.LSrelation.php:91 +#: includes/class/class.LSrelation.php:103 +#: includes/class/class.LSrelation.php:109 msgid "getting key value" msgstr "" -#: includes/class/class.LSrelation.php:116 -#: includes/class/class.LSrelation.php:123 -#: includes/class/class.LSrelation.php:156 +#: includes/class/class.LSrelation.php:134 +#: includes/class/class.LSrelation.php:141 +#: includes/class/class.LSrelation.php:174 msgid "checking right on relation with specific object" msgstr "" -#: includes/class/class.LSrelation.php:132 +#: includes/class/class.LSrelation.php:150 msgid "deleting" msgstr "" -#: includes/class/class.LSrelation.php:139 +#: includes/class/class.LSrelation.php:157 msgid "removing relation with specific object" msgstr "" -#: includes/class/class.LSrelation.php:149 +#: includes/class/class.LSrelation.php:167 msgid "renaming" msgstr "" -#: includes/class/class.LSrelation.php:168 +#: includes/class/class.LSrelation.php:186 msgid "updating" msgstr "" -#: includes/class/class.LSrelation.php:174 +#: includes/class/class.LSrelation.php:192 msgid "updating relations" msgstr "" -#: includes/class/class.LSrelation.php:196 includes/class/class.LSform.php:216 +#: includes/class/class.LSrelation.php:214 includes/class/class.LSform.php:216 #: remove.php:49 msgid "Do you really want to delete" msgstr "" -#: includes/class/class.LSrelation.php:197 +#: includes/class/class.LSrelation.php:215 msgid "Warning" msgstr "" -#: includes/class/class.LSrelation.php:225 -#: includes/class/class.LSrelation.php:339 +#: includes/class/class.LSrelation.php:243 +#: includes/class/class.LSrelation.php:364 msgid "No object." msgstr "" -#: includes/class/class.LSrelation.php:427 +#: includes/class/class.LSrelation.php:452 msgid "" "LSrelation : The function %{function} for action '%{action}' on the relation " -"%{relation} is unknow." +"%{relation} is unknown." msgstr "" -#: includes/class/class.LSrelation.php:430 -msgid "LSrelation : Relation %{relation} of object type %{LSobject} unknow." +#: includes/class/class.LSrelation.php:455 +msgid "LSrelation : Relation %{relation} of object type %{LSobject} unknown." msgstr "" -#: includes/class/class.LSrelation.php:433 +#: includes/class/class.LSrelation.php:458 msgid "LSrelation : Error during relation update of the relation %{relation}." msgstr "" -#: includes/class/class.LSrelation.php:436 -msgid "LSrelation : Object type %{LSobject} unknow (Relation : %{relation})." +#: includes/class/class.LSrelation.php:461 +msgid "LSrelation : Object type %{LSobject} unknown (Relation : %{relation})." msgstr "" -#: includes/class/class.LSrelation.php:439 +#: includes/class/class.LSrelation.php:464 msgid "" "LSrelation : Incomplete configuration for LSrelation %{relation} of object " "type %{LSobject} for action : %{action}." msgstr "" +#: includes/class/class.LSrelation.php:467 +msgid "" +"LSrelation : Invalid editable attribute for LSrelation %{relation} with " +"LSobject %{LSobject}." +msgstr "" + #: includes/class/class.LSformElement_password.php:134 msgid "Generate a password." msgstr ""