openMairie.org | Démonstration | Documentation | Forum

Classe_actions ... pas de traitement effectif


#1

Bonjour,
M’inspirant de la classe_action incluse dans openmarcheforain (merci groleau) de création du code d’accès dans le traitement de commercant_par_telephone,
pour une application de traitement des actes municipaux, je dois créer un code pour identifier ces actes.

J’ai donc ajouté une classe_action pour une table “actes” dans un objet actes_s0 consistant à simplement insérer une valeur quelconque dans un champ de ma base.

La fonction

function affecter_numero() {
// Begin
$this->begin_treatment(METHOD);
// mise à jour
$id = $this->getVal($this->clePrimaire);
// juste un test de changement

$valF = array(
        "act_order_regt" => '222',
);
$res = $this->f->db->autoExecute(DB_PREFIXE . $this->table, $valF,
        DB_AUTOQUERY_UPDATE, $this->getCle($id));

// Return
return $this->end_treatment(METHOD, true);
}

la definition de la classe

<?php
// $Id: acte_s0.class.php 857 2018-02-18 17:46:23Z mferrato $
// gen openMairie
require_once "../gen/obj/actes.class.php";
class actes_s0 extends actes_gen {

    function __construct($id, &$dnu1 = null, $dnu2 = null) {
        $this->constructeur($id);
    }
    
    function init_class_actions() {
        parent::init_class_actions();
                       
        // ----- Bouton affcter les numeros d'ordre -----
               
        $this->class_actions [5] = array (
            "identifier" => "affecter_numero",
            "portlet" => array (
                "type" => "action-direct",
                "libelle" => _("Générer numéro"),
                "class" => "code_generator-16"
            ),
            "methode" => "affecter_numero",
            "permission_suffix" => "affecter_numero",
            "view" => "formulaire",
            // condition" : Pour avoir accès aux valeurs de l'enreg.
            // Peut y avoir plusieurs conditions (elles sont alors combinées par des ET)
            "condition" => array (),
        );
    }

J’utilise le compte administrateur, et lorsque j’utilise le bouton
depuis la page de mon objet
http://monsite/opencpt/scr/tab.php?obj=actes_s0

la page d’un objet sélectionné
http://monsite/opencpt/scr/form.php?obj=actes_s0&action=3&idx=2433&advs_id=&premier=0&recherche=&selectioncol=&tricol=&valide=&retour=tab

le lien du bouton
http://monsite/opencpt/scr/form.php?obj=actes_s0&action=3&idx=2433&advs_id=&premier=0&recherche=&selectioncol=&tricol=&valide=&retour=tab#

j’obtiens en dessus de l’affichage de l’objet
[un icone d’attente] Le traitement est en cours. Merci de patienter. et plus rien ne se passe …

**le logger**
0.000 : class utils - application::__construct() VERBOSE
0.013 : class utils - application::retrieveUserProfile(): db->query(" SELECT * FROM opencpt.om_utilisateur left join opencpt.om_collectivite on om_collectivite.om_collectivite = om_utilisateur.om_collectivite left join opencpt.om_profil on om_utilisateur.om_profil = om_profil.om_profil WHERE om_utilisateur.login = 'admin';"); VERBOSE
0.014 : class utils - application::getAllRights(): db->query("select om_droit.om_droit as table_om_droit_field_id, om_profil.om_profil as table_om_profil_field_id, om_droit.libelle as table_om_droit_field_libelle, om_profil.libelle as table_om_profil_field_libelle, om_profil.hierarchie as table_om_profil_field_hierarchie from opencpt.om_droit left join opencpt.om_profil on om_droit.om_profil=om_profil.om_profil "); VERBOSE
0.015 : class utils - application::getCollectivite(): db->query("SELECT libelle, valeur FROM opencpt.om_parametre WHERE om_collectivite=1 UNION SELECT libelle, valeur FROM opencpt.om_parametre WHERE om_collectivite=( SELECT om_collectivite FROM opencpt.om_collectivite WHERE niveau='2' ) AND libelle NOT IN ( SELECT libelle FROM opencpt.om_parametre WHERE om_collectivite=1 ) "); VERBOSE
0.016 : class actes_s0 - dbForm::constructeur() VERBOSE
0.017 : class actes_s0 - dbForm::constructeur(): db->limitquery(" select act_id, act_ref_stat_id, act_date_status, act_ref_user_id, act_create, act_ref_regt_id, act_libelle, act_objet, act_valide, act_date, act_date_from, act_date_to, act_order_an, act_order_regt, act_order_rcui, act_public_file, act_nbfolio, maj_date, maj_util from opencpt.actes where actes.act_id = 2433 ", 0, 1); VERBOSE
0.019 : class actes_s0 - dbForm::init_select(): db->query(SELECT registre.regt_id, registre.regt_code FROM opencpt.registre WHERE regt_id = 10); VERBOSE
0.020 : class actes_s0 - dbForm::init_select(): db->query(SELECT status.stat_id, status.stat_code FROM opencpt.status WHERE stat_id = 1); VERBOSE
0.020 : class actes_s0 - dbForm::init_select(): db->query(SELECT om_utilisateur.om_utilisateur, om_utilisateur.nom FROM opencpt.om_utilisateur WHERE om_utilisateur = 1); VERBOSE
0.021 : class utils - application::__destruct() VERBOSE

Qu’ai-je oublié ???
Problème de droit ? (je les ai défini … mais peut être mal…)
Probleme de lien ? ( j’ai essayé en forçant le lien à la meme forme que dans le cas de openmarcheforain
http://monsite/opencpt/scr/form.php?obj=actes_s0&action=3&idx=2433# sans plus de résultat…

Merci de vos conseils…


#2

Bonjour,

Deux pistes :

1 - Est-ce que l’option est bien activée de manière globale :
http://openmairie.readthedocs.io/projects/omframework/fr/4.7/reference/formulaire.html#actions-du-menu-contextuel-de-la-consultation

2 - Dans la définition de l’action, il est inscrit “methode” au lieu de “method” :
http://openmairie.readthedocs.io/projects/omframework/fr/4.7/reference/formulaire.html#definition-des-actions-dans-les-attributs-de-la-classe-de-l-objet

Florent


#3

Bonjour,

Ce code a été largement inspiré par flohcim :slight_smile:

Deux autres pistes :

  • vérifier les logs d’erreur Apache
  • la valeur du paramètre “action” dans les hyper-liens cités est à 3 (= consultation) , hors le bouton d’action pour cette action ajoutée doit apparaitre avec l’icone par défaut et la valeur du champ action doit être 5. Ca indique peut-être un droit absent dans la table om_droit pour le profil : actes_s0_affecter_numero

PS: Merci aux admin du site pour le retour de la prévisualisation des contributions :slight_smile:


#4

Merci,
l’erreur est grossière, method au lieu de methode (malgré des copier/coller …), donc voilà ça fonctionne
par contre cette “bête” erreur n’entraine aucune erreur du serveur web… ni ailleurs…

par contre comme indiquer par igroleau, la valeur du champ action est bien 5, mais l’hyper-lien est bien indiqué action=3 et cela fonctionne (il y a dans mon cas que 3 boutons (modifier action=1, supprimer action=2, monbouton genere_code action=3 …) … qu’en penser ?

merci encore, je vais pouvoir avancer (et lire correctement la doc … /o\ )