[openmairie-framework-Commits] r4951 - in openmairie_exemple/branches/om5_rad: . app obj sql/pgsql

0 views
Skip to first unread message

fray...@users.adullact.net

unread,
May 1, 2024, 12:29:09 PMMay 1
to openmairie...@googlegroups.com
Author: fraynaud
Date: 2024-05-01 18:29:07 +0200 (Wed, 01 May 2024)
New Revision: 4951

Added:
openmairie_exemple/branches/om5_rad/obj/om_forms_liste.class.php
openmairie_exemple/branches/om5_rad/sql/pgsql/om_forms_liste.inc.php
Modified:
openmairie_exemple/branches/om5_rad/HISTORY.txt
openmairie_exemple/branches/om5_rad/app/framework_openmairie.class.php
openmairie_exemple/branches/om5_rad/obj/om_forms.class.php
Log:
menu affichage composition : creation om_forms_liste (class et inc) 01/05/2024




Modified: openmairie_exemple/branches/om5_rad/HISTORY.txt
===================================================================
--- openmairie_exemple/branches/om5_rad/HISTORY.txt 2024-05-01 15:37:27 UTC (rev 4950)
+++ openmairie_exemple/branches/om5_rad/HISTORY.txt 2024-05-01 16:29:07 UTC (rev 4951)
@@ -144,8 +144,8 @@
* Evolution : om_gen_plus : liste ordre affichage + entête colone avec libelle_court 01/05/2024
* Evolution : om_forms + om_gen_plus : changement du champs "double précision" en "numeric" 01/05/2024
* Evolution : om_tables : methode de remise en ordre par défaut liste et champs 01/05/2024
+* bug : menu affichage composition : creation om_forms_liste (class et inc) 01/05/2024


-
4.10.0 (29/11/2022
-------------------

Modified: openmairie_exemple/branches/om5_rad/app/framework_openmairie.class.php
===================================================================
--- openmairie_exemple/branches/om5_rad/app/framework_openmairie.class.php 2024-05-01 15:37:27 UTC (rev 4950)
+++ openmairie_exemple/branches/om5_rad/app/framework_openmairie.class.php 2024-05-01 16:29:07 UTC (rev 4951)
@@ -272,16 +272,16 @@
);

$links[] = array(
- "href" => OM_ROUTE_FORM."&obj=om_forms&idx=0&action=6",
+ "href" => OM_ROUTE_FORM."&obj=om_forms_liste&idx=0&action=6",
"class" => "om_forms",
"title" => __("composition des listes"),
"description" => __("Composition listes."),
"right" => array("om_forms", ),
"open" => array(
- "tab.php|om_forms",
- "index.php|om_forms[module=tab]",
- "form.php|om_forms",
- "index.php|om_forms[module=form]",
+ "tab.php|om_forms_liste",
+ "index.php|om_forms_liste[module=tab]",
+ "form.php|om_forms_liste",
+ "index.php|om_forms_liste[module=form]",
),
);


Modified: openmairie_exemple/branches/om5_rad/obj/om_forms.class.php
===================================================================
--- openmairie_exemple/branches/om5_rad/obj/om_forms.class.php 2024-05-01 15:37:27 UTC (rev 4950)
+++ openmairie_exemple/branches/om5_rad/obj/om_forms.class.php 2024-05-01 16:29:07 UTC (rev 4951)
@@ -31,7 +31,7 @@
"view" => "view_composer_widget_ctl",
"permission_suffix" => "ajouter",
);
-
+ /*
// ACTION - 006 - composer liste
//
$this->class_actions[6] = array(
@@ -47,9 +47,9 @@
"view" => "view_composer_widget_ctl_liste",
"permission_suffix" => "ajouter",
);
+ */


-
}

// =======================
@@ -1182,7 +1182,7 @@
return;
}
}
-
+/*
// =======================================
// action 5 et 6 pour présenter les listes
// =======================================
@@ -1417,7 +1417,7 @@
return;
}
}
+*/


-
}

Added: openmairie_exemple/branches/om5_rad/obj/om_forms_liste.class.php
===================================================================
--- openmairie_exemple/branches/om5_rad/obj/om_forms_liste.class.php (rev 0)
+++ openmairie_exemple/branches/om5_rad/obj/om_forms_liste.class.php 2024-05-01 16:29:07 UTC (rev 4951)
@@ -0,0 +1,270 @@
+<?php
+//$Id$
+//gen openMairie le 29/12/2023 18:02
+
+require_once "om_forms.class.php";
+
+class om_forms_liste extends om_forms {
+
+ protected $_absolute_class_name = "om_forms_liste";
+
+ function init_class_actions() {
+ // parent::init_class_actions();
+
+ // ACTION - 006 - composer liste
+ //
+ $this->class_actions[6] = array(
+ "identifier" => "composer_liste",
+ "view" => "view_composer_liste",
+ "permission_suffix" => "ajouter",
+ );
+
+ // ACTION - 007 - composer liste
+ //
+ $this->class_actions[7] = array(
+ "identifier" => "composer-widget-ctl_liste",
+ "view" => "view_composer_widget_ctl_liste",
+ "permission_suffix" => "ajouter",
+ );
+ }
+
+// =======================================
+// action 6 et 7 pour présenter les listes
+// =======================================
+
+ // affichage en select des om_tables
+ // recherche des champs dans les colonnes
+ function view_composer_liste() {
+ // Verification de l'accessibilité sur l'élément
+ $this->checkAccessibility();
+
+ // Affichage du formulaire de sélection de tables
+
+ // Ouverture du formulaire
+ $this->f->layout->display__form_container__begin(array(
+ "action" => $this->getDataSubmit(),
+ "id" => "dashboard_composer_form",
+ ));
+ // ===============================================
+ // Paramétrage des champs du formulaire table_name
+ // ===============================================
+ $champs = array("table_name");
+ // Création d'un nouvel objet de type formulaire
+ $form = $this->f->get_inst__om_formulaire(array(
+ "validation" => 0,
+ "maj" => 0,
+ "champs" => $champs,
+ ));
+ // Paramétrage du champs table_name
+ $form->setLib("table_name", __("Formulaire pour la liste"));
+ $form->setType("table_name", "select");
+ $form->setTaille("table_name", 25);
+ $form->setOnChange("table_name", "submit()");
+ $form->setMax("table_name", 25);
+ $form->setVal("table_name", (isset($_POST["table_name"]) ? $_POST["table_name"] : ""));
+ $sql = " SELECT om_tables.table_name, om_tables.table_name as lib ";
+ $sql .= " FROM ".DB_PREFIXE."om_tables ";
+ $sql .= " where substring(table_name,1,3) not like 'om_' ORDER BY om_tables.table_name ";
+ $res = $this->f->db->query($sql);
+ $this->addToLog(__METHOD__."(): db->query(\"".$sql."\");", VERBOSE_MODE);
+ $this->f->isDatabaseError($res);
+ //
+ $contenu = array(array(""), array(__("choisir une table")));
+ while ($row =& $res->fetchrow()) {
+ $contenu[0][] = $row[0];
+ $contenu[1][] = $row[1];
+ }
+ $form->setSelect("table_name", $contenu);
+ // Affichage du formulaire
+ $form->entete();
+ $form->afficher($champs, 0, false, false);
+ $form->enpied();
+ // Fermeture du fomulaire
+ $this->f->layout->display__form_container__end();
+ // *** fin formulaire table
+
+ // retour du nom de table choisi
+ if (!isset($_POST["table_name"]) || $_POST["table_name"] == "") {
+ return;
+ }
+ // Initialisation des paramètres
+ $params = array(
+ "edition" => array(
+ "default_value" => 1,
+ ),
+ );
+ foreach ($this->f->get_initialized_parameters($params) as $key => $value) {
+ ${$key} = $value;
+ }
+ // affichage des widgets-champs
+ echo "<div id=\"dashboard-composer\">\n";
+ // Ouverture du conteneur #dashboard
+ echo "<div id=\"dashboard\">\n";
+ // Conteneur permettant de recevoir d'eventuels messages d'erreur des requetes
+ // Ajax
+ echo "<div id=\"info\">";
+ echo "</div>\n";
+ // Si le mode edition est active alors on affiche l'action pour ajouter un
+ // nouveau widget
+ // pas d affichage des champs
+ // Si le mode edition est activé alors on affiche un lien contenant
+ // le lien vers les actions de contrôle des widgets
+ // le mode edition est toujours actif
+ if ($edition == 1) {
+ // creer un lien -> *** enleve display:none sinon pas d'affichage
+ // lancement action 5 : view_composer_widget_ctl qui met à jour bloc et position en modification
+ // et type=hidden en suppression
+
+ printf(
+ '<a id="widgetctl-href-base" href="%s" >&nbsp;</a>',
+ OM_ROUTE_FORM."&obj=om_forms_liste&idx=0&action=7"
+ );
+
+ }
+ // Ouverture du conteneur de colonnes
+ // 1 colonne à afficher pour ordre de liste
+ echo "<div class=\"col1\">\n";
+ // ajout des champs par colonne
+ // requête globale
+ $sql = " SELECT om_forms.column_name, SPLIT_PART(om_forms.column_name, '.', 1) as table_name,";
+ $sql .= " data_type, parametres->>'type' as type, parametres->>'bloc' as bloc, parametres->>'position_liste' as position ";
+ $sql .= " FROM ".DB_PREFIXE."om_forms ";
+ $sql .= " left join ".DB_PREFIXE."om_champs on om_forms.column_name=om_champs.column_name";
+ $sql .= " where SPLIT_PART(om_forms.column_name, '.', 1) = '".$_POST["table_name"]."'";
+ $sql .= " and parametres->>'liste' = '1' ";
+ $sql .= " order by parametres->>'position_liste' ";
+ //echo $sql;
+ $res = $this->f->db->query($sql);
+ $this->f->addToLog("app/om_champs_class.php: db->query(\"".$sql."\");", VERBOSE_MODE);
+ $this->f->isDatabaseError($res);
+ while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
+ //$temp=json_decode($row["comment"]);
+ $c[$row["column_name"]]["position"]=$row['position_liste'];
+ $c[$row["column_name"]]["bloc"]=$row['bloc'];
+ $c[$row["column_name"]]["type"]=$row['type'];
+ $c[$row["column_name"]]["table_name"]=$row["table_name"];
+ $c[$row["column_name"]]["column_name"]=$row["column_name"];
+ $c[$row["column_name"]]["data_type"]=$row["data_type"];
+ }
+ // On boucle sur une colonnes
+ // Ouverture du conteneur .column
+ echo "<div class=\"column\" id=\"column_1\">\n";
+ foreach($c as $key => $elem){
+ $this->display_dashboard_widget(
+ $elem['column_name'], // pour update et delete
+ $elem['column_name'], // titre fenetre champ
+ $elem['data_type']." - ". $elem['type'], // contenu
+ $elem['data_type'],
+ $elem['position'],
+ $edition
+ );
+ }
+ // Fermeture du conteneur .column
+ echo "</div>\n";
+ // On affiche un conteneur vide pour avec la propriete clear a both pour
+ // reinitialiser le positionnement des blocs
+ echo "<div class=\"both\"><!-- --></div>\n";
+ // Fermeture du conteneur de colonnes
+ echo "</div>\n";
+ // Fermeture du conteneur #dashboard
+ echo "</div>\n";
+ // Fermeture du conteneur #dashboard-composer
+ echo "</div>\n";
+
+ }
+
+ // mise à jour de comment de om_champs: bloc, position, type
+ function view_composer_widget_ctl_liste() {
+ // Initialisation des paramètres
+ $params = array(
+ "mode" => array(
+ "default_value" => null,
+ ),
+ "widget" => array(
+ "default_value" => null,
+ ),
+ "profil" => array(
+ "default_value" => 0,
+ ),
+ );
+ foreach ($this->f->get_initialized_parameters($params) as $key => $value) {
+ ${$key} = $value;
+ }
+ //UPDATE
+ //index.php?module=form&obj=om_champs&idx=0&action=5
+ //&mode=update
+ //&column_1=widget_livre.auteurxwidget_livre.titre
+ //&column_2=widget_livre.fichier
+ //&column_3=widget_livre.resume&
+ if ($mode == "update") {
+ $c=array();
+ $nb=array();
+ foreach($this->f->get_submitted_get_value() as $key => $values) {
+ // On souhaite récupérer uniquement les paramètres column_*
+ if (!$this->f->starts_with($key, "column_")) {
+ continue;
+ }
+ //$this->f->addToLog(__METHOD__."(): mode update (".$key.");", DEBUG_MODE);
+ $bloc = "C".str_replace("column_", "", $key);
+ $widgets = explode("xwidget_", $this->f->get_submitted_get_value($key));
+ foreach($widgets as $i => $widget_id) {
+ $position = $i+1;
+ $widget_id = str_replace("widget_", "", $widget_id);
+ // Lorsqu'une colonne est vide, il y a une valeur vide dans le
+ // tableau widget, donc si c'est le cas on passe a l'iteration
+ // suivante
+ if ($widget_id == "") {
+ //$this->f->addToLog(__METHOD__."(): mode update vide(".$table.");", DEBUG_MODE);
+ continue;
+ }else{
+ // initialisation du nom de la table pour requête sql
+ $temp1=explode(".", $widget_id);
+ $table=$temp1[0];
+ //$this->f->addToLog(__METHOD__."(): mode update existant(".$table.");", DEBUG_MODE);
+ }
+ $c[$widget_id]["position"]=$position;
+ }
+ // max par colonne pour position des champs hidden
+ $nb[$bloc]=$position;
+ }
+ //$this->f->addToLog(__METHOD__."(): mode update(".print_r($c, true).");", DEBUG_MODE);
+ //$this->f->addToLog(__METHOD__."(): mode update(".$table.");", DEBUG_MODE);
+ $sql = " select om_forms.column_name, om_forms.table_name, data_type, ";
+ $sql .= " parametres->>'bloc' as bloc, parametres->>'position_liste' as position, ";
+ $sql .= " parametres->>'type' as type, parametres->>'liste' as liste ";
+ $sql .= " FROM ".DB_PREFIXE."om_forms left join ".DB_PREFIXE."om_champs ";
+ $sql .= " on om_champs.column_name=om_forms.column_name ";
+ $sql .= " where om_forms.table_name = '".$table."' ";
+ $res = $this->f->db->query($sql);
+ $this->f->addToLog("app/om_champs_class.php: db->query(\"".$sql." / ".$widget_id."\");", DEBUG_MODE);
+ $this->f->isDatabaseError($res);
+ while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $temp1=explode(".", $row['column_name']);
+ $position=$c[$row['column_name']]["position"];
+ $this->f->addToLog(__METHOD__."(): mode update -> (".$row['column_name']." | ".$row['type']." | ".$row['position']." [ ".$row['bloc']."*);", DEBUG_MODE);
+ // update position
+ $sql = " update ".DB_PREFIXE."om_forms set parametres = jsonb_set(parametres, '{position_liste}', '\"".$position."\"')";
+ $sql .= " WHERE column_name = '".$row['column_name']."'" ;
+ $res2 = $this->f->db->query($sql);
+ $this->f->addToLog(__METHOD__."(): mode update(\"".$sql."\", ".print_r($temp, true).");", DEBUG_MODE);
+ $this->f->isDatabaseError($res2);
+
+ }
+ return;
+ }
+ // DELETE
+ // module=form&obj=om_forms&idx=0&action=5&mode=delete&widget=widget_livre.auteur
+ if ($mode == "delete") {
+ // widget est le column_name concerné
+ $widget = str_replace("widget_", "", $widget);
+ // en mode delete le champs est mis en hidden
+ $sql = " update ".DB_PREFIXE."om_forms set parametres = jsonb_set(parametres, '{liste}', '\"0\"')";
+ $sql .= " WHERE column_name = '".$widget."'" ;
+ $res = $this->f->db->query($sql);
+ $this->f->addToLog(__METHOD__."(): mode delete ".$sql." ;", DEBUG_MODE);
+ $this->f->isDatabaseError($res);
+ return;
+ }
+ }
+
+}

Added: openmairie_exemple/branches/om5_rad/sql/pgsql/om_forms_liste.inc.php
===================================================================
--- openmairie_exemple/branches/om5_rad/sql/pgsql/om_forms_liste.inc.php (rev 0)
+++ openmairie_exemple/branches/om5_rad/sql/pgsql/om_forms_liste.inc.php 2024-05-01 16:29:07 UTC (rev 4951)
@@ -0,0 +1,4 @@
+<?php
+//$Id$
+//gen openMairie le 03/05/2018 08:49
+include "om_forms.inc.php";

Reply all
Reply to author
Forward
0 new messages