log(__METHOD__, "($position) BEGIN"); if($position == 'bottom') { return array($this->get_url_assets_path_base().'/tweakinstru.js'); } $ret = array(); $this->log(__METHOD__, 'return: '.var_export($ret, true)); $this->log(__METHOD__, 'END'); return $ret; } /** * Modifie le type du champ 'date_evenement' en 'text'. */ public function instruction_setType_post(array &$data) { $this->log(__METHOD__, 'BEGIN'); // force le type 'date' if (isset($data['maj']) && $data['maj'] == '0' && isset($data['form']) && is_object($data['form'])) { //$data['form']->setType('date_evenement', 'date'); $this->log(__METHOD__, "set type 'text' of field 'date_evenement'"); $data['form']->setType('date_evenement', 'text'); } $this->log(__METHOD__, 'END'); } /** * Ajoute l'exécution de code Javascript lorsque la valeur du champ 'date_evenement' change. */ public function instruction_setOnchange_post(array &$data) { $this->log(__METHOD__, 'BEGIN'); $this->log(__METHOD__, "maj ".var_export($data['maj'], true)); // ajoute un effet lors du changement du sélecteur d'évènement if (isset($data['maj']) && $data['maj'] == '0' && isset($data['form']) && is_object($data['form'])) { $instruction = $this->object; $instruction->addOnChangeBefore($data['form'], 'evenement', 'wf_module_tweakinstru_apply_evenement_selection_effects(this, '.$this->object_link_instance->getVal('object_id').')'); $this->log(__METHOD__, "form->onchange(evenement) = ".var_export($data['form']->onchange['evenement'], true)); } } /** * Vérifie la valeur "postée" du champ 'date_evenement' qui ne doit pas être dans le futur. */ public function instruction_verifier_post(array &$data) { $this->log(__METHOD__, 'BEGIN'); if (isset($data['val'])) { if (! isset($data['val']['date_evenement']) || empty($data['val']['date_evenement'])) { $this->log(__METHOD__, "'val.date_evenement' is not defined or empty"); } else { $this->log(__METHOD__, "'val.date_evenement': ".var_export($data['val']['date_evenement'], true)); // récupère la date du dernier depot du dossier // s'assure que la date d'évènement est après // et qu'elle n'est pas non plus dans le futur $tomorrow = new DateTime('tomorrow'); $input_date_fmt = 'd/m/Y'; if (preg_match('|\d{4}-\d{2}-\d{2}|', $data['val']['date_evenement'])) { $input_date_fmt = 'Y-m-d'; } $date_ev_dt = DateTime::createFromFormat('d/m/Y', $data['val']['date_evenement']); if ($date_ev_dt > $tomorrow) { $this->log(__METHOD__, "".$date_ev_dt->format('Y-m-d')." > ".$tomorrow->format('Y-m-d')); $instruction = $this->object; $instruction->correct = false; $instruction->addToMessage(__("La date d'évènement ne peut pas avoir une valeur dans le futur")); } } } else { $this->log(__METHOD__, "'val' is not defined"); } } /** * Ajoute un champ de fusion 'toto' avec la valeur 'tata'. */ public function instruction_modify_edition_merge_fields_values_post(array &$data) { $this->log(__METHOD__, 'BEGIN'); $this->log(__METHOD__, "add key 'toto' with value 'tata'"); $data['values']['toto'] = 'tata'; $this->log(__METHOD__, 'BEGIN'); } }