fray...@users.adullact.net
unread,May 1, 2024, 12:29:09 PMMay 1Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
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" > </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";