fray...@users.adullact.net
unread,Apr 24, 2024, 1:42:26 PMApr 24Sign 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-04-24 19:42:23 +0200 (Wed, 24 Apr 2024)
New Revision: 4937
Modified:
openmairie_exemple/branches/om5_rad/app/js/script.js
openmairie_exemple/branches/om5_rad/obj/om_forms.class.php
openmairie_exemple/branches/om5_rad/sql/pgsql/om_forms.inc.php
Log:
ajout de js pour om_forms et ajout du type sql
Modified: openmairie_exemple/branches/om5_rad/app/js/script.js
===================================================================
--- openmairie_exemple/branches/om5_rad/app/js/script.js 2024-04-23 13:39:04 UTC (rev 4936)
+++ openmairie_exemple/branches/om5_rad/app/js/script.js 2024-04-24 17:42:23 UTC (rev 4937)
@@ -1,9 +1,6 @@
-
// Gestion de l'ergonomie du formulaire OM_TABLES
// ne fonctionne pas en sous formulaire
-
-
-//Au chargement de la page recupere valeur nombre colonne
+// Au chargement de la page recupere valeur nombre colonne
$(function() {
// Au chargement de la page donc du formulaire on appelle la fonction
change_form_om_tables_nombre_colonne($("select#nombre_colonne").val());
@@ -37,19 +34,19 @@
}
}
+
// Gestion de l'ergonomie du formulaire OM_FORMS
// F2 = sous formulaire
-
function change_form_om_forms(champ) {
//alert(champ);
if (champ == undefined) {
return;
}
-
+
// select type options
select = document.getElementById('type');
- var options = select.options;
+
if(champ == 'cle_secondaire'){
// nom de champ
document.f2.elements['tables'].hidden=false;
@@ -58,15 +55,6 @@
document.getElementById('lib-tables').innerHTML='Nom du champs';
// calcul
document.f2.elements['calcul'].hidden=true;
- // type om
- for (var i = 0; i < options.length; i++) {
- if (options[i].value == 'html') {
- options[i].disabled=true;
- }
- if (options[i].value == 'file') {
- options[i].disabled=true;
- }
- }
}else{
document.f2.elements['tables'].hidden=true;
document.f2.elements['column_name'].hidden=false;
@@ -73,22 +61,42 @@
document.getElementById('lib-column_name').innerHTML='Nom du champs';
document.getElementById('lib-tables').innerHTML='';
// calcul
- if(champ == 'integer' || champ == 'double precision' ){
+ if(champ == 'integer' || champ == 'double precision' || champ == 'sql' ){
document.f2.elements['calcul'].hidden=false;
}else{
document.f2.elements['calcul'].hidden=true;
- }
- for (var i = 0; i < options.length; i++) {
+ }
+ }
+ /*
+ // type om
+ var options = select.options;
+ for (var i = 0; i < options.length; i++) {
+ if(champ == 'text' || or champ =='character varying'){
+ if(champ == 'text'){
+ if (options[i].value == 'html') {
+ options[i].disabled=false;
+ }
+ if (options[i].value == 'file') {
+ options[i].disabled=true;
+ }
+ }else{
+ if (options[i].value == 'file') {
+ options[i].disabled=false;
+ }
+ if (options[i].value == 'html') {
+ options[i].disabled=true;
+ }
+ }
+ }else{
if (options[i].value == 'html') {
- options[i].disabled=false;
+ options[i].disabled=true;
}
if (options[i].value == 'file') {
- options[i].disabled=false;
+ options[i].disabled=true;
}
}
- //if(champ == 'text' || or champ =='character varying'){
-
- }
+ }
+ */
+
+}
-
-}
Modified: openmairie_exemple/branches/om5_rad/obj/om_forms.class.php
===================================================================
--- openmairie_exemple/branches/om5_rad/obj/om_forms.class.php 2024-04-23 13:39:04 UTC (rev 4936)
+++ openmairie_exemple/branches/om5_rad/obj/om_forms.class.php 2024-04-24 17:42:23 UTC (rev 4937)
@@ -9,8 +9,10 @@
var $tab; // tableau à insérer en json
var $cle_secondaire; // variable globale clé secondaire
+ var $type_sql; // variable globale type_sql
+
function init_class_actions() {
parent::init_class_actions();
@@ -101,7 +103,17 @@
$this->cle_secondaire='non';
$form->setType("type", "select");
}
- // echo $this->cle_secondaire;
+ // sql
+ $sql = "SELECT parametres->>'type' as type FROM ".DB_PREFIXE."om_forms ";
+ $sql .= " where column_name = '".$this->getParameter("idx")."'";
+ $res = $this->f->db->getOne($sql);
+ $this->f->addToLog("obj/om_champs_class.php: db->getOne(\"".$sql."\");", DEBUG_MODE);
+ $this->f->isDatabaseError($res);
+ if($res=='sql') {
+ $form->setVal('data_type', $res);
+ $this->type_sql='oui';
+ }else
+ $this->type_sql='non';
// initialisation des champs om_champs
$sql = "SELECT table_schema, data_type, character_maximum_length ,";
$sql .= " is_nullable, column_default, comment";
@@ -111,14 +123,13 @@
$res = $this->f->db->query($sql);
$this->f->isDatabaseError($res);
while ($row =& $res->fetchRow(DB_FETCHMODE_ASSOC)) {
- $form->setVal('ltable_schema', $row['table_schema']);
+ $form->setVal('table_schema', $row['table_schema']);
$form->setVal('data_type', $row['data_type']);
$form->setVal('character_maximum_length', $row['character_maximum_length']);
$form->setVal('is_nullable', $row['is_nullable']);
$form->setVal('column_default', $row['column_default']);
$form->setVal('comment', $row['comment']);
- }
-
+ }
}
}
@@ -143,9 +154,11 @@
$form->setType("liste", "select");
if ($this->cle_secondaire == 'oui'){
$form->setType("data_type", "hiddenstatic");
- }else{
- $form->setType("data_type", "select");
}
+ if($this->type_sql == 'oui'){
+ $form->setType("data_type", "hiddenstatic");
+ $form->setType("type", "hiddenstatic");
+ }
$form->setType("tables", "hidden");
//$form->setType("tables", "select"); // cle secondaire
}
@@ -198,8 +211,10 @@
$form->setSelect("is_nullable",$contenu);
// data type
$contenu=array();
- $contenu[0]=array('character varying','integer','double precision','boolean','cle_secondaire','text','date');
- $contenu[1]=array(_('character varying'),_('entier'),_('décimal'),_('booléen'),_('clé secondaire'),_('texte'),_('Date'));
+ $contenu[0]=array('character varying','integer','double precision','boolean',
+ 'cle_secondaire','text','date', 'sql');
+ $contenu[1]=array(_('character varying'),_('entier'),_('décimal'),
+ _('booléen'),_('clé secondaire'),_('texte'),_('Date'),_('virtuel sql'));
$form->setSelect("data_type",$contenu);
// bloc paramétré en om_tables_parametre -> ne fonctionne qu en sous form ...
@@ -222,7 +237,7 @@
// type
$contenu=array();
$contenu[0]=array('','hidden','file','html','sql');
- $contenu[1]=array('visible','non visible','fichier','editeur html','virtuel sql' );
+ $contenu[1]=array('visible','non visible','fichier','editeur html','virtuel sql');
$form->setSelect("type",$contenu);
// liste tables pour clé secondaire
@@ -540,54 +555,31 @@
$this->verifier($val, $this->f->db, null);
$val['calcul']=$this->verifier_calcul($val['calcul']);
$val['libelle']=$this->verifier_libelle($val['libelle']);
+ // data_type -> type sql
+ if($this->valF['data_type']=='sql')
+ $this->valF['type']= 'sql';
if ($this->correct) {
- // cas cle secondaire
- if($this->valF['data_type']== 'cle_secondaire')
- $data_type = 'integer';
- else
- $data_type=$this->valF['data_type'];
- // modifier
- $sql = "alter table ".DB_PREFIXE.$this->valF['table_name']." alter column ";
- $sql .= $temp[1]." type ".$data_type;
- $res = $this->f->db->query($sql);
- if ($this->f->isDatabaseError($res, true)) {
- // Appel de la methode de recuperation des erreurs
- $this->addToMessage($res->getDebugInfo());
- $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
- $this->correct = false;
- // Return
- return $this->end_treatment(__METHOD__, false);
- }else{
- $this->addToMessage("modification du champ ".$this->valF['column_name']);
- //*** modification comment
- $this->tab->libelle = $val['libelle'];
- $this->tab->type = $val['type'];
- $this->tab->bloc = $val['bloc'];
- $this->tab->position = $val['position'];
- $this->tab->calcul = $val['calcul'];
- $this->tab->liste = $val['liste']; //***
- $insert=json_encode($this->tab);
- //$sql = "comment on COLUMN ".DB_PREFIXE.$this->valF['table_name'].".".$temp[1]." IS ";
- $sql = "update ".DB_PREFIXE."om_forms set parametres = ";
- $sql .= "'".$insert."'";
- $sql .= " where column_name = '".$this->valF['column_name']."'";
+ // type : sql
+ if($this->valF['type']!= 'sql'){
+ // cas cle secondaire
+ if($this->valF['data_type']== 'cle_secondaire')
+ $data_type = 'integer';
+ else
+ $data_type=$this->valF['data_type'];
+ // modifier
+ $sql = "alter table ".DB_PREFIXE.$this->valF['table_name']." alter column ";
+ $sql .= $temp[1]." type ".$data_type;
$res = $this->f->db->query($sql);
if ($this->f->isDatabaseError($res, true)) {
- // Appel de la methode de recuperation des erreurs[1
+ // Appel de la methode de recuperation des erreurs
$this->addToMessage($res->getDebugInfo());
$this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
$this->correct = false;
// Return
return $this->end_treatment(__METHOD__, false);
- }else{
- $this->addToMessage("modification des paramètres en om_forms pour"." ".$this->valF['column_name']);
- if($this->triggermodifierapres($id, $this->f->db, $val, null) === false) {
- $this->correct = false;
- $this->addToLog(__METHOD__."(): ERROR", DEBUG_MODE);
- // Return
- return $this->end_treatment(__METHOD__, false);
- }
- }
+ }
+ $this->addToMessage("modification du champ ".$this->valF['column_name']);
+ // champs null
if($this->valF['is_nullable']== 'NO'){
$sql = "alter table ".DB_PREFIXE.$this->valF['table_name']." alter column ";
$sql .= $temp[1]." set not null ";
@@ -600,7 +592,7 @@
// Return
return $this->end_treatment(__METHOD__, false);
}else
- $this->addToMessage("modification du champ not null ".$this->valF['column_name']);
+ $this->addToMessage("modification du champ not null ".$this->valF['column_name']);
}else{
$sql = "alter table ".DB_PREFIXE.$this->valF['table_name']." alter column ";
$sql .= $temp[1]." drop not null ";
@@ -613,12 +605,10 @@
// Return
return $this->end_treatment(__METHOD__, false);
}else
- $this->addToMessage("modification du champ null ".$this->valF['column_name']);
- }
- // *** column default
- // a peu d'intérêt -> utiliser setval car la mise a jour
- // se fait sur les enregistrements existants
- // et n'est pas pris en compte même si champs hidden
+ $this->addToMessage("modification du champ null ".$this->valF['column_name']);
+ }
+ // column default a peu d'intérêt -> utiliser setval car la mise a jour
+ // se fait sur les enregistrements existants et n'est pas pris en compte même si champs hidden
if($this->valF['column_default'] == ''){
$sql = "alter table ".DB_PREFIXE.$this->valF['table_name']." alter column ";
$sql .= $temp[1]." drop DEFAULT ";
@@ -631,7 +621,7 @@
// Return
return $this->end_treatment(__METHOD__, false);
}else
- $this->addToMessage("suppression de la valeur par default ".$this->valF['column_name']);
+ $this->addToMessage("suppression de la valeur par default ".$this->valF['column_name']);
}else{
$sql = "alter table ".DB_PREFIXE.$this->valF['table_name']." alter column ";
$sql .= $temp[1]." set DEFAULT ".$this->valF['column_default'].""; // guillement à mettre ans le champs";
@@ -644,9 +634,52 @@
// Return
return $this->end_treatment(__METHOD__, false);
}else
- $this->addToMessage("ajout de la valeur par default ".$this->valF['column_name']);
- }
- }
+ $this->addToMessage("ajout de la valeur par default ".$this->valF['column_name']);
+ }
+ }else{
+ // sql => destruction de champs
+ // destruction de la table -> CASCADE ?
+ $sql = "alter table ".DB_PREFIXE.$temp[0]." drop IF EXISTS ";
+ $sql .= $temp[1];
+ $res = $this->f->db->query($sql);
+ if ($this->f->isDatabaseError($res, true)) {
+ $this->addToMessage($res->getDebugInfo());
+ // Appel de la methode de recuperation des erreurs
+ $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
+ $this->correct = false;
+ // Return
+ return $this->end_treatment(__METHOD__, false);
+ }
+ }
+ // om_forms
+ $this->tab->libelle = $val['libelle'];
+ $this->tab->type = $val['type'];
+ $this->tab->bloc = $val['bloc'];
+ $this->tab->position = $val['position'];
+ $this->tab->calcul = $val['calcul'];
+ $this->tab->liste = $val['liste'];
+ $insert=json_encode($this->tab);
+ //$sql = "comment on COLUMN ".DB_PREFIXE.$this->valF['table_name'].".".$temp[1]." IS ";
+ $sql = "update ".DB_PREFIXE."om_forms set parametres = ";
+ $sql .= "'".$insert."'";
+ $sql .= " where column_name = '".$this->valF['column_name']."'";
+ $res = $this->f->db->query($sql);
+ if ($this->f->isDatabaseError($res, true)) {
+ // Appel de la methode de recuperation des erreurs[1
+ $this->addToMessage($res->getDebugInfo());
+ $this->erreur_db($res->getDebugInfo(), $res->getMessage(), '');
+ $this->correct = false;
+ // Return
+ return $this->end_treatment(__METHOD__, false);
+ }else{
+ $this->addToMessage("modification des paramètres en om_forms pour"." ".$this->valF['column_name']);
+ if($this->triggermodifierapres($id, $this->f->db, $val, null) === false) {
+ $this->correct = false;
+ $this->addToLog(__METHOD__."(): ERROR", DEBUG_MODE);
+ // Return
+ return $this->end_treatment(__METHOD__, false);
+ }
+ }
}else {
// Message d'echec (saut d'une ligne supplementaire avant le
// message pour qu'il soit mis en evidence)
@@ -670,7 +703,7 @@
$this->verifier($val, $this->f->db, null);
if ($this->correct) {
// destruction de la table -> CASCADE ?
- $sql = "alter table ".DB_PREFIXE.$temp[0]." drop ";
+ $sql = "alter table ".DB_PREFIXE.$temp[0]." drop IF EXISTS "; // IF EXISTS = cas sql
$sql .= $temp[1];
$res = $this->f->db->query($sql);
if ($this->f->isDatabaseError($res, true)) {
Modified: openmairie_exemple/branches/om5_rad/sql/pgsql/om_forms.inc.php
===================================================================
--- openmairie_exemple/branches/om5_rad/sql/pgsql/om_forms.inc.php 2024-04-23 13:39:04 UTC (rev 4936)
+++ openmairie_exemple/branches/om5_rad/sql/pgsql/om_forms.inc.php 2024-04-24 17:42:23 UTC (rev 4937)
@@ -1,13 +1,11 @@
<?php
//$Id$
//gen openMairie le 03/05/2018 08:49
-
include "../gen/sql/pgsql/om_forms.inc.php";
-//$selection = " WHERE (om_champs.table_name = '".$f->db->escapeSimple($idxformulaire)."') ";
if($selection=="")
- $selection = " where concat(om_champs.table_name,'.',om_champs.table_name) not like om_champs.column_name ";
+ $selection = " where concat(om_forms.table_name,'.',om_forms.table_name) not like om_forms.column_name ";
else
- $selection .= " and concat(om_champs.table_name,'.',om_champs.table_name) not like om_champs.column_name ";
+ $selection .= " and concat(om_forms.table_name,'.',om_forms.table_name) not like om_forms.column_name ";
// SELECT