Compare commits
No commits in common. "master" and "ini" have entirely different histories.
27 changed files with 662 additions and 825 deletions
28
README.md
28
README.md
|
@ -1,28 +0,0 @@
|
||||||
# Gamuform
|
|
||||||
Plugin pour générer des formulaires via saisies et des vues via gamutable semi automatiquement.
|
|
||||||
|
|
||||||
## Configuration de l'interface pour chaque objet
|
|
||||||
### Chaines de langues de l'interface (2 possibilités)
|
|
||||||
* On déclare la `$GLOBALS['gamuform_i18n']['nom_objet']`
|
|
||||||
```php
|
|
||||||
$GLOBALS['gamuform_i18n'] = array_merge(
|
|
||||||
$GLOBALS['gamuform_i18n'] ?? [],
|
|
||||||
[
|
|
||||||
'app_competition' => [
|
|
||||||
'singulier' => 'competition',
|
|
||||||
'pluriel' => 'compétitions',
|
|
||||||
'creer' => 'Créer une nouvelle compétition'
|
|
||||||
]
|
|
||||||
]
|
|
||||||
);
|
|
||||||
```
|
|
||||||
* On cree un fichier de lang mon_objet_fr.php, avec les 3 cles (singulier, pluriel, creer)
|
|
||||||
|
|
||||||
|
|
||||||
## Configuration des objets pour les saisies et pour l'affichage avec gamutable
|
|
||||||
Il faut creer une fonction gamuform/mon_objet.php avec une fonction qui renvoie l'array des saisies, qui peut etre enrichi par des entrées gamutables
|
|
||||||
> il y a un exemple commenté dans gamuform/exemple.php avec toutes les possibilités offertes
|
|
||||||
|
|
||||||
## Page
|
|
||||||
Il suffit d'appeler cette page `spip.php?page=voir_gamuform`, en paramettre le nom de l'objet voulu `&objet=auteur` :
|
|
||||||
`spip.php?page=voir_gamuform&objet=auteur`
|
|
|
@ -1,32 +1,41 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* Utilisation de l'action supprimer pour l'objet gamuform
|
||||||
|
*
|
||||||
|
* @plugin GamuForm
|
||||||
|
* @copyright 2020
|
||||||
|
* @author tofulm
|
||||||
|
* @licence GNU/GPL
|
||||||
|
* @package SPIP\Gamuform\Action
|
||||||
|
*/
|
||||||
|
|
||||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
function action_supprimer_gamuform_dist() {
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Action pour supprimer un·e gamuform
|
||||||
|
*
|
||||||
|
* Vérifier l'autorisation avant d'appeler l'action.
|
||||||
|
*
|
||||||
|
* @param null|int $arg
|
||||||
|
* Identifiant à supprimer.
|
||||||
|
* En absence de id utilise l'argument de l'action sécurisée.
|
||||||
|
**/
|
||||||
|
function action_supprimer_gamuform_dist($arg=null) {
|
||||||
|
if (is_null($arg)){
|
||||||
$securiser_action = charger_fonction('securiser_action', 'inc');
|
$securiser_action = charger_fonction('securiser_action', 'inc');
|
||||||
$arg = $securiser_action();
|
$arg = $securiser_action();
|
||||||
list($id_objet,$objet) = explode('/', $arg);
|
|
||||||
include_spip('gamuform_fonctions');
|
|
||||||
|
|
||||||
if (
|
|
||||||
intval($id_objet)
|
|
||||||
and gamuform_objet_autoriser($objet)
|
|
||||||
) {
|
|
||||||
$id_objet = (int) $id_objet;
|
|
||||||
include_spip('inc/autoriser');
|
|
||||||
if (! autoriser('supprimer', 'gamuform', $id_objet, '', ['objet' => $objet])) {
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
$arg = intval($arg);
|
||||||
|
|
||||||
$table = table_objet_sql($objet);
|
// cas suppression
|
||||||
$id = id_table_objet($objet);
|
if ($arg) {
|
||||||
|
sql_delete('spip_gamuforms', 'id_gamuform=' . sql_quote($arg));
|
||||||
sql_delete($table, "$id=" . $id_objet);
|
}
|
||||||
|
else {
|
||||||
include_spip('inc/invalideur');
|
spip_log("action_supprimer_gamuform_dist $arg pas compris");
|
||||||
suivre_invalideur("id='"."$id_objet"."/1");
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,7 +25,7 @@ if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
*/
|
*/
|
||||||
function gamuform_declarer_tables_interfaces($interfaces) {
|
function gamuform_declarer_tables_interfaces($interfaces) {
|
||||||
|
|
||||||
// $interfaces['table_des_tables']['gamuforms'] = 'gamuforms';
|
$interfaces['table_des_tables']['gamuforms'] = 'gamuforms';
|
||||||
|
|
||||||
return $interfaces;
|
return $interfaces;
|
||||||
}
|
}
|
||||||
|
@ -42,6 +42,52 @@ function gamuform_declarer_tables_interfaces($interfaces) {
|
||||||
*/
|
*/
|
||||||
function gamuform_declarer_tables_objets_sql($tables) {
|
function gamuform_declarer_tables_objets_sql($tables) {
|
||||||
|
|
||||||
|
$tables['spip_gamuforms'] = array(
|
||||||
|
'type' => 'gamuform',
|
||||||
|
'principale' => 'oui',
|
||||||
|
'field'=> array(
|
||||||
|
'id_gamuform' => 'bigint(21) NOT NULL',
|
||||||
|
'objet' => 'VARCHAR(25) DEFAULT "" NOT NULL',
|
||||||
|
'titre' => 'varchar(255) NOT NULL DEFAULT ""',
|
||||||
|
'label' => 'varchar(255) NOT NULL DEFAULT ""',
|
||||||
|
'type' => 'varchar(255) NOT NULL DEFAULT ""',
|
||||||
|
'class_container' => 'varchar(255) NOT NULL DEFAULT ""',
|
||||||
|
'class' => 'varchar(255) NOT NULL DEFAULT ""',
|
||||||
|
'choix' => "text NOT NULL",
|
||||||
|
'defaut' => 'varchar(255) NOT NULL DEFAULT ""',
|
||||||
|
'statut' => 'varchar(20) DEFAULT "0" NOT NULL',
|
||||||
|
'date' => 'datetime NOT NULL DEFAULT "0000-00-00 00:00:00"',
|
||||||
|
'rang' => 'tinyint(4) NOT NULL',
|
||||||
|
'maj' => 'TIMESTAMP'
|
||||||
|
),
|
||||||
|
'key' => array(
|
||||||
|
'PRIMARY KEY' => 'id_gamuform',
|
||||||
|
'KEY objet' => 'objet',
|
||||||
|
'KEY statut' => 'statut',
|
||||||
|
),
|
||||||
|
'titre' => 'titre AS titre, "" AS lang',
|
||||||
|
'date' => 'date',
|
||||||
|
//'champs_editables' => array('titre'),
|
||||||
|
//'champs_versionnes' => array('titre'),
|
||||||
|
//'rechercher_champs' => array(),
|
||||||
|
'tables_jointures' => array('spip_gamuforms_valeurs'),
|
||||||
|
'statut_textes_instituer' => array(
|
||||||
|
'prepa' => 'texte_statut_en_cours_redaction',
|
||||||
|
'publie' => 'texte_statut_publie',
|
||||||
|
'poubelle' => 'texte_statut_poubelle',
|
||||||
|
),
|
||||||
|
'statut'=> array(
|
||||||
|
array(
|
||||||
|
'champ' => 'statut',
|
||||||
|
'publie' => 'publie',
|
||||||
|
'exception' => array('statut','tout')
|
||||||
|
)
|
||||||
|
),
|
||||||
|
'texte_changer_statut' => 'gamuform:texte_changer_statut_gamuform',
|
||||||
|
|
||||||
|
|
||||||
|
);
|
||||||
|
|
||||||
return $tables;
|
return $tables;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,5 +103,18 @@ function gamuform_declarer_tables_objets_sql($tables) {
|
||||||
*/
|
*/
|
||||||
function gamuform_declarer_tables_auxiliaires($tables) {
|
function gamuform_declarer_tables_auxiliaires($tables) {
|
||||||
|
|
||||||
|
$tables['spip_gamuforms_valeurs'] = array(
|
||||||
|
'field' => array(
|
||||||
|
'id_gamuform' => 'bigint(21) DEFAULT "0" NOT NULL',
|
||||||
|
'id_objet' => 'bigint(21) DEFAULT "0" NOT NULL',
|
||||||
|
'objet' => 'VARCHAR(25) DEFAULT "" NOT NULL',
|
||||||
|
'valeur' => "text NOT NULL",
|
||||||
|
),
|
||||||
|
'key' => array(
|
||||||
|
'PRIMARY KEY' => 'id_gamuform,id_objet,objet',
|
||||||
|
'KEY id_gamuform' => 'id_gamuform',
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
return $tables;
|
return $tables;
|
||||||
}
|
}
|
||||||
|
|
6
content/creer_gamuform.html
Normal file
6
content/creer_gamuform.html
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
<div class="inner">
|
||||||
|
<h1>creer formulaire pour les clients</h1>
|
||||||
|
|
||||||
|
<INCLURE{fond=inclure/creer_gamuform,objet=app_client,env}>
|
||||||
|
|
||||||
|
</div>
|
|
@ -1 +0,0 @@
|
||||||
<INCLURE{fond=inclure/editer_gamuform,env}>
|
|
|
@ -1,4 +0,0 @@
|
||||||
#CACHE{0}
|
|
||||||
|
|
||||||
<INCLURE{fond=inclure/voir_gamuform,env}>
|
|
||||||
|
|
7
fabrique_diff.diff
Normal file
7
fabrique_diff.diff
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
diff -r -x . -x .. -x fabrique_diff.diff -x fabrique_gamuform.php ../tmp/cache/fabrique/.backup/gamuform/paquet.xml ../tmp/cache/fabrique/gamuform/paquet.xml
|
||||||
|
8a9
|
||||||
|
> schema="1.0.0"
|
||||||
|
11c12
|
||||||
|
< Paquet généré le 2020-03-30 14:52:00
|
||||||
|
---
|
||||||
|
> Paquet généré le 2020-03-30 14:54:11
|
198
fabrique_gamuform.php
Normal file
198
fabrique_gamuform.php
Normal file
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,20 @@
|
||||||
|
<div class='formulaire_spip formulaire_editer formulaire_#FORM formulaire_#FORM-#ENV{id_gamuform,nouveau}'>
|
||||||
|
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV**{message_ok})</p>]
|
||||||
|
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
|
||||||
|
|
||||||
|
[(#ENV{editable})
|
||||||
|
<form method="post" action="#ENV{action}"><div>
|
||||||
|
#ACTION_FORMULAIRE
|
||||||
|
<input type="hidden" name="id_gamuform" value="#ENV{id_gamuform}" />
|
||||||
|
<div class="editer-groupe">
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<INCLURE{fond=inclure/gamuform,env,ajax}>
|
||||||
|
|
||||||
|
[(#REM) ajouter les saisies supplementaires : extra et autre, a cet endroit ]
|
||||||
|
<!--extra-->
|
||||||
|
<p class="boutons"><input type="submit" class="submit" value="<:bouton_enregistrer:>" /></p>
|
||||||
|
</div></form>
|
||||||
|
]
|
||||||
|
</div>
|
|
@ -1,141 +1,124 @@
|
||||||
<?php
|
<?php
|
||||||
|
/**
|
||||||
|
* Gestion du formulaire de d'édition de gamuform
|
||||||
|
*
|
||||||
|
* @plugin GamuForm
|
||||||
|
* @copyright 2020
|
||||||
|
* @author tofulm
|
||||||
|
* @licence GNU/GPL
|
||||||
|
* @package SPIP\Gamuform\Formulaires
|
||||||
|
*/
|
||||||
|
|
||||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
include_spip('inc/actions');
|
||||||
|
include_spip('inc/editer');
|
||||||
|
|
||||||
function formulaires_editer_gamuform_saisies_dist($id_objet = 0, $objet = '', $options = [], $id_redirect = null, $redirect = '') {
|
|
||||||
$saisies = false;
|
/**
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
* Identifier le formulaire en faisant abstraction des paramètres qui ne représentent pas l'objet edité
|
||||||
$saisies = gamuform_recup_tableau_objet($objet, false);
|
*
|
||||||
}
|
* @param int|string $id_gamuform
|
||||||
return $saisies;
|
* Identifiant du gamuform. 'new' pour un nouveau gamuform.
|
||||||
|
* @param string $retour
|
||||||
|
* URL de redirection après le traitement
|
||||||
|
* @param int $lier_trad
|
||||||
|
* Identifiant éventuel d'un gamuform source d'une traduction
|
||||||
|
* @param string $config_fonc
|
||||||
|
* Nom de la fonction ajoutant des configurations particulières au formulaire
|
||||||
|
* @param array $row
|
||||||
|
* Valeurs de la ligne SQL du gamuform, si connu
|
||||||
|
* @param string $hidden
|
||||||
|
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
|
||||||
|
* @return string
|
||||||
|
* Hash du formulaire
|
||||||
|
*/
|
||||||
|
function formulaires_editer_gamuform_identifier_dist($id_gamuform = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
|
||||||
|
return serialize(array(intval($id_gamuform)));
|
||||||
}
|
}
|
||||||
|
|
||||||
function formulaires_editer_gamuform_charger_dist($id_objet = 0, $objet = '', $options = [], $id_redirect = null, $redirect = '') {
|
/**
|
||||||
|
* Chargement du formulaire d'édition de gamuform
|
||||||
$table = table_objet_sql($objet);
|
*
|
||||||
$id = id_table_objet($objet);
|
* Déclarer les champs postés et y intégrer les valeurs par défaut
|
||||||
$s = gamuform_recup_champs_saisies($objet);
|
*
|
||||||
|
* @uses formulaires_editer_objet_charger()
|
||||||
if (intval($id_objet)) {
|
*
|
||||||
$filtrer_champs_objet = charger_fonction('filtrer_champs_objet', 'inc');
|
* @param int|string $id_gamuform
|
||||||
$s = $filtrer_champs_objet($objet, $s);
|
* Identifiant du gamuform. 'new' pour un nouveau gamuform.
|
||||||
$valeurs = sql_fetsel($s, $table, "$id=".intval($id_objet));
|
* @param string $retour
|
||||||
} else {
|
* URL de redirection après le traitement
|
||||||
foreach ($s as $c) {
|
* @param int $lier_trad
|
||||||
$valeurs[$c] = null;
|
* Identifiant éventuel d'un gamuform source d'une traduction
|
||||||
}
|
* @param string $config_fonc
|
||||||
}
|
* Nom de la fonction ajoutant des configurations particulières au formulaire
|
||||||
|
* @param array $row
|
||||||
|
* Valeurs de la ligne SQL du gamuform, si connu
|
||||||
|
* @param string $hidden
|
||||||
|
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
|
||||||
|
* @return array
|
||||||
|
* Environnement du formulaire
|
||||||
|
*/
|
||||||
|
function formulaires_editer_gamuform_charger_dist($id_gamuform = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
|
||||||
|
$valeurs = formulaires_editer_objet_charger('gamuform', $id_gamuform, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
|
||||||
return $valeurs;
|
return $valeurs;
|
||||||
}
|
}
|
||||||
|
|
||||||
function formulaires_editer_gamuform_verifier_dist($id_objet = 0, $objet = '', $options = [], $id_redirect = null, $redirect = '') {
|
/**
|
||||||
|
* Vérifications du formulaire d'édition de gamuform
|
||||||
|
*
|
||||||
|
* Vérifier les champs postés et signaler d'éventuelles erreurs
|
||||||
|
*
|
||||||
|
* @uses formulaires_editer_objet_verifier()
|
||||||
|
*
|
||||||
|
* @param int|string $id_gamuform
|
||||||
|
* Identifiant du gamuform. 'new' pour un nouveau gamuform.
|
||||||
|
* @param string $retour
|
||||||
|
* URL de redirection après le traitement
|
||||||
|
* @param int $lier_trad
|
||||||
|
* Identifiant éventuel d'un gamuform source d'une traduction
|
||||||
|
* @param string $config_fonc
|
||||||
|
* Nom de la fonction ajoutant des configurations particulières au formulaire
|
||||||
|
* @param array $row
|
||||||
|
* Valeurs de la ligne SQL du gamuform, si connu
|
||||||
|
* @param string $hidden
|
||||||
|
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
|
||||||
|
* @return array
|
||||||
|
* Tableau des erreurs
|
||||||
|
*/
|
||||||
|
function formulaires_editer_gamuform_verifier_dist($id_gamuform = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
|
||||||
|
$erreurs = array();
|
||||||
|
|
||||||
|
$erreurs = formulaires_editer_objet_verifier('gamuform', $id_gamuform);
|
||||||
|
|
||||||
$erreurs = [];
|
|
||||||
if (!gamuform_objet_autoriser($objet)) {
|
|
||||||
$erreurs['message_erreur'] = "Pb d'objet";
|
|
||||||
}
|
|
||||||
return $erreurs;
|
return $erreurs;
|
||||||
}
|
}
|
||||||
|
|
||||||
function formulaires_editer_gamuform_traiter_dist($id_objet = 0, $objet = '', $options = [], $id_redirect = null, $redirect = '') {
|
/**
|
||||||
$id_objet = (int) $id_objet;
|
* Traitement du formulaire d'édition de gamuform
|
||||||
$id_redirect = (int) $id_redirect;
|
*
|
||||||
|
* Traiter les champs postés
|
||||||
$saisies = gamuform_recup_tableau_objet($objet, false);
|
*
|
||||||
if (array_key_exists('options', $saisies)) {
|
* @uses formulaires_editer_objet_traiter()
|
||||||
unset($saisies['options']);
|
*
|
||||||
}
|
* @param int|string $id_gamuform
|
||||||
|
* Identifiant du gamuform. 'new' pour un nouveau gamuform.
|
||||||
$table = table_objet_sql($objet);
|
* @param string $retour
|
||||||
$id = id_table_objet($objet);
|
* URL de redirection après le traitement
|
||||||
|
* @param int $lier_trad
|
||||||
$update = true;
|
* Identifiant éventuel d'un gamuform source d'une traduction
|
||||||
if (!intval($id_objet)) {
|
* @param string $config_fonc
|
||||||
$id_objet = sql_insertq($table, []);
|
* Nom de la fonction ajoutant des configurations particulières au formulaire
|
||||||
$update = false;
|
* @param array $row
|
||||||
}
|
* Valeurs de la ligne SQL du gamuform, si connu
|
||||||
|
* @param string $hidden
|
||||||
$set = [];
|
* Contenu HTML ajouté en même temps que les champs cachés du formulaire.
|
||||||
if (!empty($saisies)) {
|
* @return array
|
||||||
foreach ($saisies as $saisie) {
|
* Retours des traitements
|
||||||
if ($saisie['saisie'] === "explication") {
|
*/
|
||||||
continue;
|
function formulaires_editer_gamuform_traiter_dist($id_gamuform = 'new', $retour = '', $lier_trad = 0, $config_fonc = '', $row = array(), $hidden = '') {
|
||||||
}
|
$retours = formulaires_editer_objet_traiter('gamuform', $id_gamuform, '', $lier_trad, $retour, $config_fonc, $row, $hidden);
|
||||||
|
return $retours;
|
||||||
$champ = $saisie['options']['nom'];
|
|
||||||
if (
|
|
||||||
isset($saisie['options']['fonction'])
|
|
||||||
and $f = $saisie['options']['fonction']
|
|
||||||
) {
|
|
||||||
$f($id_objet, $objet, $champ, _request($champ));
|
|
||||||
} elseif (
|
|
||||||
isset($saisie['options']['modifier'])
|
|
||||||
and $m = $saisie['options']['modifier']
|
|
||||||
) {
|
|
||||||
$set[$champ] = $m($champ, _request($champ));
|
|
||||||
} else {
|
|
||||||
if ($saisie['saisie'] === 'date') {
|
|
||||||
$date = _request($champ);
|
|
||||||
$verifier = charger_fonction('verifier', 'inc/');
|
|
||||||
$verifier($date, 'date', ['normaliser' => 'datetime'], $date);
|
|
||||||
$set[$champ] = $date;
|
|
||||||
} else {
|
|
||||||
$set[$champ] = _requests($champ);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (count($set)) {
|
|
||||||
$set = pipeline(
|
|
||||||
'pre_edition',
|
|
||||||
[
|
|
||||||
'args' => [
|
|
||||||
'table' => $table,
|
|
||||||
'id_objet' => $id_objet,
|
|
||||||
'objet' => $objet,
|
|
||||||
'action' => 'gamuform',
|
|
||||||
'update' => $update,
|
|
||||||
'options' => $options
|
|
||||||
],
|
|
||||||
'data' => $set
|
|
||||||
]
|
|
||||||
);
|
|
||||||
$r = sql_updateq($table, $set, "$id=".intval($id_objet));
|
|
||||||
if ($r) {
|
|
||||||
pipeline(
|
|
||||||
'post_edition',
|
|
||||||
[
|
|
||||||
'args' => [
|
|
||||||
'table' => $table,
|
|
||||||
'id_objet' => $id_objet,
|
|
||||||
'objet' => $objet,
|
|
||||||
'action' => 'gamuform',
|
|
||||||
'update' => $update,
|
|
||||||
'options' => $options
|
|
||||||
],
|
|
||||||
'data' => $set
|
|
||||||
]
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
include_spip('inc/invalideur');
|
|
||||||
suivre_invalideur("id='"."$id_objet"."/1");
|
|
||||||
|
|
||||||
|
|
||||||
$retour = [];
|
|
||||||
if ($redirect === 'gamutable') {
|
|
||||||
$retour['redirect'] = '';
|
|
||||||
if ($update) {
|
|
||||||
$retour['message_ok'] = gamutable_fermer_modalbox($id_redirect ?: $id_objet);
|
|
||||||
} else {
|
|
||||||
$retour['message_ok'] = gamutable_fermer_modalbox($id_redirect ?: 0);
|
|
||||||
}
|
|
||||||
} else if ($redirect) {
|
|
||||||
$retour['redirect'] = $redirect;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $retour;
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,83 +0,0 @@
|
||||||
<?php
|
|
||||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
function gamuform_exemple_dist(){
|
|
||||||
|
|
||||||
$js = <<<EOF
|
|
||||||
<script>console.log('coucou');</script>
|
|
||||||
EOF;
|
|
||||||
|
|
||||||
return [
|
|
||||||
// API SAISIES
|
|
||||||
'options' => [
|
|
||||||
'texte_submit' => 'Valider c’est gagné',
|
|
||||||
'inserer_debut' => 'coucou le debut',
|
|
||||||
'inserer_fin' => $js,
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'saisie' => 'input',
|
|
||||||
'options' => [
|
|
||||||
'nom' => 'type_intervention',
|
|
||||||
'label' => "Type d'intervention",
|
|
||||||
'obligatoire' => 'oui',
|
|
||||||
//'fonction' => 'ma_super_fonction' // Nom de la fonction appelée pour enregistrer ce champ de facon autonome
|
|
||||||
//'modifier' => 'ma_super_fonction_pour_modifier' // Nom de la fonction appelée pour faire un traitement sur un champ avant l'insertion en bdd
|
|
||||||
],
|
|
||||||
// la cle gamutable n'est pas obligatoire, si absente, gamutable utilisera des valeurs par defaut et des infos de la clé options de saisie
|
|
||||||
'gamutable' => [ // pour le champ type_intervention, comme on définit la clé gamutable, c'est elle qui sera utilisé pour la vue, avec les memes clés que gamutable
|
|
||||||
'champ' => 'type_intervention',
|
|
||||||
'header' => 'Type',
|
|
||||||
'classes' => 'w200p',
|
|
||||||
'filtreCol' => 'select',
|
|
||||||
'ordreCol' => 'asc',
|
|
||||||
'crayons' => 'nom_objet_SPIP', // nom de l'objet du crayons
|
|
||||||
'fonction' => 'Majuscules', // fonction php pour filtre le contenu du champ, elle recoit en argument la valeur du champ
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'saisie' => 'input',
|
|
||||||
'options' => [
|
|
||||||
'nom' => 'desc_type_intervention',
|
|
||||||
'libelle' => 'Description',
|
|
||||||
'label' => 'Description',
|
|
||||||
'obligatoire' => 'oui',
|
|
||||||
'fonction' => '_array_maSuperFonction' // on peut prefixer le nom de la fonction par _array_ et dans ce cas, on cherche une fonction qui
|
|
||||||
// s'appelle _array_maSuperFonction ou simplement maSuperFonction, elle recoit en arg, l'array de la ligne (fetsel) et non simplement la valeur du champ
|
|
||||||
],
|
|
||||||
'gamutable' => [
|
|
||||||
'champ' => 'desc_type_intervention',
|
|
||||||
'header' => 'Compétition',
|
|
||||||
'ordreCol' => 'desc',
|
|
||||||
'classes' => 'w200p',
|
|
||||||
]
|
|
||||||
],
|
|
||||||
[
|
|
||||||
'saisie' => 'radio',
|
|
||||||
'options' => [
|
|
||||||
'nom' => 'controle_ok',
|
|
||||||
'libelle' => 'Contrôle OK',
|
|
||||||
'label' => 'Contrôle OK',
|
|
||||||
'data' => ['oui' => 'Oui', '' => 'Non']
|
|
||||||
//'fonction' => 'ma_super_fonction'
|
|
||||||
],
|
|
||||||
// la cle gamutable est "normalement" pas obligatoire
|
|
||||||
// 'gamutable' => [
|
|
||||||
// 'champ' => 'desc_type_intervention',
|
|
||||||
// 'header' => 'Compétition',
|
|
||||||
// 'classes' => 'w200p',
|
|
||||||
// ]
|
|
||||||
],
|
|
||||||
// possible un array avec simplement la cle gamutable, que pour l'affichage
|
|
||||||
// cela permet d'avoir une colonne qui s'intercale entre 2 colonnes de champs venant de SAISIES
|
|
||||||
[
|
|
||||||
'gamutable' => [
|
|
||||||
'champ' => 'maj',
|
|
||||||
'header' => '<:prefix:toto:>',
|
|
||||||
'classes' => 'w200p text-center',
|
|
||||||
'filtreCol' => 'input',
|
|
||||||
]
|
|
||||||
],
|
|
||||||
];
|
|
||||||
}
|
|
58
gamuform_administrations.php
Normal file
58
gamuform_administrations.php
Normal file
|
@ -0,0 +1,58 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Fichier gérant l'installation et désinstallation du plugin GamuForm
|
||||||
|
*
|
||||||
|
* @plugin GamuForm
|
||||||
|
* @copyright 2020
|
||||||
|
* @author tofulm
|
||||||
|
* @licence GNU/GPL
|
||||||
|
* @package SPIP\Gamuform\Installation
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction d'installation et de mise à jour du plugin GamuForm.
|
||||||
|
*
|
||||||
|
* @param string $nom_meta_base_version
|
||||||
|
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
|
||||||
|
* @param string $version_cible
|
||||||
|
* Version du schéma de données dans ce plugin (déclaré dans paquet.xml)
|
||||||
|
* @return void
|
||||||
|
**/
|
||||||
|
function gamuform_upgrade($nom_meta_base_version, $version_cible) {
|
||||||
|
$maj = array();
|
||||||
|
|
||||||
|
$maj['create'] = array(array('maj_tables', array('spip_gamuforms', 'spip_gamuforms_valeurs')));
|
||||||
|
|
||||||
|
include_spip('base/upgrade');
|
||||||
|
maj_plugin($nom_meta_base_version, $version_cible, $maj);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fonction de désinstallation du plugin GamuForm.
|
||||||
|
*
|
||||||
|
* @param string $nom_meta_base_version
|
||||||
|
* Nom de la meta informant de la version du schéma de données du plugin installé dans SPIP
|
||||||
|
* @return void
|
||||||
|
**/
|
||||||
|
function gamuform_vider_tables($nom_meta_base_version) {
|
||||||
|
|
||||||
|
sql_drop_table('spip_gamuforms');
|
||||||
|
sql_drop_table('spip_gamuforms_valeurs');
|
||||||
|
|
||||||
|
# Nettoyer les liens courants (le génie optimiser_base_disparus se chargera de nettoyer toutes les tables de liens)
|
||||||
|
sql_delete('spip_documents_liens', sql_in('objet', array('gamuform')));
|
||||||
|
sql_delete('spip_mots_liens', sql_in('objet', array('gamuform')));
|
||||||
|
sql_delete('spip_auteurs_liens', sql_in('objet', array('gamuform')));
|
||||||
|
# Nettoyer les versionnages et forums
|
||||||
|
sql_delete('spip_versions', sql_in('objet', array('gamuform')));
|
||||||
|
sql_delete('spip_versions_fragments', sql_in('objet', array('gamuform')));
|
||||||
|
sql_delete('spip_forum', sql_in('objet', array('gamuform')));
|
||||||
|
|
||||||
|
effacer_meta($nom_meta_base_version);
|
||||||
|
}
|
|
@ -20,43 +20,81 @@ if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
function gamuform_autoriser() {
|
function gamuform_autoriser() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function autoriser_gamuform_modifier_dist($faire, $type, $id, $qui, $opt) {
|
|
||||||
if (autoriser('webmestre')) {
|
// -----------------
|
||||||
return true;
|
// Objet gamuforms
|
||||||
}
|
|
||||||
if (!empty($opt['objet'])) {
|
|
||||||
return autoriser('modifier', $opt['objet'], $id, $qui, []);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function autoriser_gamuform_voir_dist($faire, $type, $id, $qui, $opt) {
|
|
||||||
if (autoriser('webmestre')) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!empty($opt['objet'])) {
|
|
||||||
return autoriser('voir', $opt['objet'], $id, $qui, []);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Autorisation de créer (gamuform)
|
||||||
|
*
|
||||||
|
* @param string $faire Action demandée
|
||||||
|
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||||
|
* @param int $id Identifiant de l'objet
|
||||||
|
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||||
|
* @param array $opt Options de cette autorisation
|
||||||
|
* @return bool true s'il a le droit, false sinon
|
||||||
|
**/
|
||||||
function autoriser_gamuform_creer_dist($faire, $type, $id, $qui, $opt) {
|
function autoriser_gamuform_creer_dist($faire, $type, $id, $qui, $opt) {
|
||||||
if (autoriser('webmestre')) {
|
return in_array($qui['statut'], array('0minirezo', '1comite'));
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (!empty($opt['objet'])) {
|
|
||||||
return autoriser('creer', $opt['objet'], $id, $qui, []);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function autoriser_gamuform_supprimer_dist($faire, $type, $id, $qui, $opt) {
|
/**
|
||||||
if (autoriser('webmestre')) {
|
* Autorisation de voir (gamuform)
|
||||||
|
*
|
||||||
|
* @param string $faire Action demandée
|
||||||
|
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||||
|
* @param int $id Identifiant de l'objet
|
||||||
|
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||||
|
* @param array $opt Options de cette autorisation
|
||||||
|
* @return bool true s'il a le droit, false sinon
|
||||||
|
**/
|
||||||
|
function autoriser_gamuform_voir_dist($faire, $type, $id, $qui, $opt) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if (!empty($opt['objet'])) {
|
|
||||||
return autoriser('supprimer', $opt['objet'], $id, $qui, []);
|
/**
|
||||||
}
|
* Autorisation de modifier (gamuform)
|
||||||
return false;
|
*
|
||||||
|
* @param string $faire Action demandée
|
||||||
|
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||||
|
* @param int $id Identifiant de l'objet
|
||||||
|
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||||
|
* @param array $opt Options de cette autorisation
|
||||||
|
* @return bool true s'il a le droit, false sinon
|
||||||
|
**/
|
||||||
|
function autoriser_gamuform_modifier_dist($faire, $type, $id, $qui, $opt) {
|
||||||
|
return in_array($qui['statut'], array('0minirezo', '1comite'));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Autorisation de supprimer (gamuform)
|
||||||
|
*
|
||||||
|
* @param string $faire Action demandée
|
||||||
|
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||||
|
* @param int $id Identifiant de l'objet
|
||||||
|
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||||
|
* @param array $opt Options de cette autorisation
|
||||||
|
* @return bool true s'il a le droit, false sinon
|
||||||
|
**/
|
||||||
|
function autoriser_gamuform_supprimer_dist($faire, $type, $id, $qui, $opt) {
|
||||||
|
return $qui['statut'] == '0minirezo' and !$qui['restreint'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Autorisation de lier/délier l'élément (gamuforms)
|
||||||
|
*
|
||||||
|
* @param string $faire Action demandée
|
||||||
|
* @param string $type Type d'objet sur lequel appliquer l'action
|
||||||
|
* @param int $id Identifiant de l'objet
|
||||||
|
* @param array $qui Description de l'auteur demandant l'autorisation
|
||||||
|
* @param array $opt Options de cette autorisation
|
||||||
|
* @return bool true s'il a le droit, false sinon
|
||||||
|
**/
|
||||||
|
function autoriser_associergamuforms_dist($faire, $type, $id, $qui, $opt) {
|
||||||
|
return $qui['statut'] == '0minirezo' and !$qui['restreint'];
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,331 +12,3 @@
|
||||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function gamuform_lang(?string $chaine):string {
|
|
||||||
if (strpos($chaine, ':>') !== false) {
|
|
||||||
$chaine = substr($chaine, 2, -2);
|
|
||||||
$chaine = _T($chaine);
|
|
||||||
}
|
|
||||||
return $chaine ?? '';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* filtre generale qui appelle un filtre spécifique, déclaré dans l'array saisies avec la cle : gamutable/filtre
|
|
||||||
* si cette fonction commence par _array_ ex: _array_maSuperFonction => elle aura en parametre l'array de la ligne
|
|
||||||
* sinon la valeur
|
|
||||||
* cf gamuform/exemple.php
|
|
||||||
*
|
|
||||||
* @param String $objet
|
|
||||||
* @param String $champ
|
|
||||||
* @param String $valeur
|
|
||||||
*
|
|
||||||
* @return String valeur modifiée ou pas par le filtre
|
|
||||||
*/
|
|
||||||
function gamufiltre($objet, $champ, $ligne, $integer = false) {
|
|
||||||
$valeur = $ligne[$champ] ?? '';
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
$T = gamuform_recup_tableau_objet($objet);
|
|
||||||
|
|
||||||
if (!empty($T)) {
|
|
||||||
foreach ($T as $s) {
|
|
||||||
if (
|
|
||||||
(!empty($s['gamutable']) or !empty($s['options']))
|
|
||||||
and $champ_tab = $s['gamutable']['champ'] ?? $s['options']['nom']
|
|
||||||
and $champ_tab === $champ
|
|
||||||
and !empty($s['gamutable']['fonction'])
|
|
||||||
) {
|
|
||||||
$filtre = $s['gamutable']['fonction'];
|
|
||||||
if (strpos($filtre, '_array_') !== false) {
|
|
||||||
$f = substr($filtre, 7);
|
|
||||||
if (function_exists($f)) {
|
|
||||||
return $f($ligne, $integer) ?? '';
|
|
||||||
} else if(function_exists($filtre)) {
|
|
||||||
return $filtre($ligne, $integer) ?? '';
|
|
||||||
} else {
|
|
||||||
return '';
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
return $filtre($valeur, $integer) ?? '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $valeur;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* recuperation du tableau des saisies d'un objet
|
|
||||||
* dans : gamuform/mon_objet.php
|
|
||||||
*
|
|
||||||
* @param string $objet
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
function gamuform_recup_tableau_objet(string $objet, bool $all = true):array {
|
|
||||||
$f = charger_fonction($objet, 'gamuform', true);
|
|
||||||
if (!$f) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
$T = $f();
|
|
||||||
if (empty($T)) {
|
|
||||||
$T = [];
|
|
||||||
}
|
|
||||||
// on filtre les entrées vides, qui peuvent arriver si on on des autorisations
|
|
||||||
$T = array_filter($T, function($d){
|
|
||||||
return !empty($d);
|
|
||||||
});
|
|
||||||
$options = [];
|
|
||||||
if (!empty($T['options'])) {
|
|
||||||
$options = $T['options'];
|
|
||||||
unset($T['options']);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!$all) {
|
|
||||||
$T = array_filter($T, function($d){
|
|
||||||
return !empty($d['saisie']);
|
|
||||||
});
|
|
||||||
$T = array_merge(['options' => $options], $T);
|
|
||||||
}
|
|
||||||
return $T;
|
|
||||||
}
|
|
||||||
|
|
||||||
function gamuform_objet_autoriser(string $objet):bool {
|
|
||||||
return true;
|
|
||||||
// if (
|
|
||||||
// !empty($GLOBALS['gamuform_objets'])
|
|
||||||
// and !empty($objet)
|
|
||||||
// and in_array($objet, array_keys($GLOBALS['gamuform_objets']))
|
|
||||||
// ) {
|
|
||||||
// return true;
|
|
||||||
// }
|
|
||||||
// return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
function gamuform_nom_objet($objet, $quoi = 'pluriel'):string {
|
|
||||||
$trad = '';
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
if (!empty($GLOBALS['gamuform_objets'][$objet][$quoi])) {
|
|
||||||
$trad = $GLOBALS['gamuform_objets'][$objet][$quoi];
|
|
||||||
} else if ( !empty($GLOBALS['gamuform_i18n'][$objet][$quoi])){
|
|
||||||
$trad = $GLOBALS['gamuform_i18n'][$objet][$quoi];
|
|
||||||
} else {
|
|
||||||
$trad = _T($objet . ':' . $quoi);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $trad;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* recuperation des champs de l'objet pour les saisies
|
|
||||||
*
|
|
||||||
* @param String $objet
|
|
||||||
*
|
|
||||||
* @return Array
|
|
||||||
*/
|
|
||||||
function gamuform_recup_champs_gamutable(string $objet):array {
|
|
||||||
$c = [];
|
|
||||||
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
$T = gamuform_recup_tableau_objet($objet);
|
|
||||||
if (!empty($T)) {
|
|
||||||
foreach ($T as $s) {
|
|
||||||
$c[] = $s['gamutable']['champ'] ?? $s['options']['nom'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* recuperation des champs de l'objet pour les saisies
|
|
||||||
*
|
|
||||||
* @param String $objet
|
|
||||||
*
|
|
||||||
* @return Array
|
|
||||||
*/
|
|
||||||
function gamuform_recup_champs_saisies(string $objet):array {
|
|
||||||
$c = [];
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
$T = gamuform_recup_tableau_objet($objet, false);
|
|
||||||
if (array_key_exists('options', $T)) {
|
|
||||||
unset($T['options']);
|
|
||||||
}
|
|
||||||
if (!empty($T)) {
|
|
||||||
foreach ($T as $s) {
|
|
||||||
$c[] = $s['options']['nom'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* recuperation du header de l'objet que l'on veut afficher dans gamutable
|
|
||||||
*
|
|
||||||
* @param String $objet
|
|
||||||
*
|
|
||||||
* @return Array
|
|
||||||
*/
|
|
||||||
function gamuform_recup_header(string $objet):array {
|
|
||||||
$c = [];
|
|
||||||
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
$T = gamuform_recup_tableau_objet($objet);
|
|
||||||
|
|
||||||
if (!empty($T)) {
|
|
||||||
foreach ($T as $s) {
|
|
||||||
$champ = $s['gamutable']['champ'] ?? $s['options']['nom'];
|
|
||||||
$c[$champ] = $s['gamutable']['header'] ?? $s['options']['nom'];
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $c;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* recuperation des filtreCol de l'objet que l'on veut afficher dans gamutable
|
|
||||||
*
|
|
||||||
* @param String $objet
|
|
||||||
*
|
|
||||||
* @return Array
|
|
||||||
*/
|
|
||||||
function gamuform_recup_crayons(string $objet):array {
|
|
||||||
$c = [];
|
|
||||||
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
$T = gamuform_recup_tableau_objet($objet);
|
|
||||||
|
|
||||||
if (!empty($T)) {
|
|
||||||
foreach ($T as $s) {
|
|
||||||
if (
|
|
||||||
!empty($s['gamutable']['crayons'])
|
|
||||||
and $champ = $s['gamutable']['champ'] ?? $s['options']['nom']
|
|
||||||
) {
|
|
||||||
$c[$champ] = $s['gamutable']['crayons'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $c;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* recuperation des ordreCol de l'objet que l'on veut afficher dans gamutable
|
|
||||||
*
|
|
||||||
* @param String $objet
|
|
||||||
*
|
|
||||||
* @return Array
|
|
||||||
*/
|
|
||||||
function gamuform_recup_ordreCol(string $objet):array {
|
|
||||||
$c = [];
|
|
||||||
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
$T = gamuform_recup_tableau_objet($objet);
|
|
||||||
|
|
||||||
if (!empty($T)) {
|
|
||||||
foreach ($T as $s) {
|
|
||||||
if (
|
|
||||||
!empty($s['gamutable']['ordreCol'])
|
|
||||||
and $champ = $s['gamutable']['champ'] ?? $s['options']['nom']
|
|
||||||
) {
|
|
||||||
$c[$champ] = $s['gamutable']['ordreCol'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $c;
|
|
||||||
}
|
|
||||||
/**
|
|
||||||
* recuperation des filtreCol de l'objet que l'on veut afficher dans gamutable
|
|
||||||
*
|
|
||||||
* @param String $objet
|
|
||||||
*
|
|
||||||
* @return Array
|
|
||||||
*/
|
|
||||||
function gamuform_recup_filtreCol(string $objet):array {
|
|
||||||
$c = [];
|
|
||||||
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
$T = gamuform_recup_tableau_objet($objet);
|
|
||||||
if (!empty($T)) {
|
|
||||||
foreach ($T as $s) {
|
|
||||||
if (
|
|
||||||
!empty($s['gamutable']['filtreCol'])
|
|
||||||
and in_array($s['gamutable']['filtreCol'], ['input', 'select'])
|
|
||||||
and $champ = $s['gamutable']['champ'] ?? $s['options']['nom']
|
|
||||||
) {
|
|
||||||
$c[$champ] = $s['gamutable']['filtreCol'];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* recuperation des classes de l'objet que l'on veut afficher dans gamutable
|
|
||||||
*
|
|
||||||
* @param String $objet
|
|
||||||
*
|
|
||||||
* @return Array
|
|
||||||
*/
|
|
||||||
function gamuform_recup_classes(string $objet):array {
|
|
||||||
$c = [];
|
|
||||||
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
$T = gamuform_recup_tableau_objet($objet);
|
|
||||||
|
|
||||||
if (!empty($T)) {
|
|
||||||
foreach ($T as $s) {
|
|
||||||
$champ = $s['gamutable']['champ'] ?? $s['options']['nom'];
|
|
||||||
$c[$champ] = $s['gamutable']['classes'] ?? '';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $c;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* recuperation de(s) ligne(s) de l'objet
|
|
||||||
*
|
|
||||||
* @param String $objet
|
|
||||||
* @param String $id_objet (optional)
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
function gamuform_recup_valeurs($objet, $id_objet = 0, $where = null):array {
|
|
||||||
$r = [];
|
|
||||||
if (gamuform_objet_autoriser($objet)) {
|
|
||||||
$table = table_objet_sql($objet);
|
|
||||||
$id = id_table_objet($objet);
|
|
||||||
// $s = gamuform_recup_champs_gamutable($objet);
|
|
||||||
|
|
||||||
// $s[] = $id;
|
|
||||||
if (intval($id_objet)) {
|
|
||||||
$valeurs = sql_fetsel('*', $table, "$id=".intval($id_objet));
|
|
||||||
$valeurs['id'] = $valeurs[$id];
|
|
||||||
if (!empty($valeurs)) {
|
|
||||||
$r[0] = $valeurs;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if ($where) {
|
|
||||||
$w[] = $where;
|
|
||||||
} else {
|
|
||||||
$w = 1;
|
|
||||||
}
|
|
||||||
$T = sql_allfetsel('*', $table, $w);
|
|
||||||
if (!empty($T)) {
|
|
||||||
foreach ($T as $t) {
|
|
||||||
$t['id'] = $t[$id];
|
|
||||||
$r[] = $t;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $r;
|
|
||||||
}
|
|
||||||
|
|
|
@ -12,4 +12,3 @@
|
||||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -13,3 +13,26 @@ if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Optimiser la base de données
|
||||||
|
*
|
||||||
|
* Supprime les liens orphelins de l'objet vers quelqu'un et de quelqu'un vers l'objet.
|
||||||
|
* Supprime les objets à la poubelle.
|
||||||
|
*
|
||||||
|
* @pipeline optimiser_base_disparus
|
||||||
|
* @param array $flux Données du pipeline
|
||||||
|
* @return array Données du pipeline
|
||||||
|
*/
|
||||||
|
function gamuform_optimiser_base_disparus($flux) {
|
||||||
|
|
||||||
|
include_spip('action/editer_liens');
|
||||||
|
$flux['data'] += objet_optimiser_liens(array('gamuform'=>'*'), '*');
|
||||||
|
|
||||||
|
sql_delete('spip_gamuforms', "statut='poubelle' AND maj < " . $flux['args']['date']);
|
||||||
|
|
||||||
|
return $flux;
|
||||||
|
}
|
||||||
|
|
36
inclure/creer_gamuform.html
Normal file
36
inclure/creer_gamuform.html
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
<style type="text/css" media="screen">
|
||||||
|
#INCLURE{css/icons.css}
|
||||||
|
.icone {
|
||||||
|
width: 30px;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
objet = #ENV{objet}
|
||||||
|
|
||||||
|
<div class="creer_gamuform[ (#ENV{objet})]">
|
||||||
|
<table>
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th class="icone">
|
||||||
|
<a class="ajax nohistory nocache" href="[(#URL_ACTION_AUTEUR{creer_gamuform,#ENV{objet},#SELF})]">
|
||||||
|
#ICON{plus,icon-lg}
|
||||||
|
</a>
|
||||||
|
</th>
|
||||||
|
<th></th>
|
||||||
|
<th class="icone">
|
||||||
|
#ICON{move,icon-lg,Rechercher}
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<BOUCLE_gamuform(GAMUFORMS){id_objet}{objet}{tout}>
|
||||||
|
|
||||||
|
</BOUCLE_gamuform>
|
||||||
|
</tbody>
|
||||||
|
<tr>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
|
</div>
|
|
@ -1,11 +0,0 @@
|
||||||
#CACHE{0}
|
|
||||||
[(#AUTORISER{modifier, gamuform, #ENV{id_objet}, '', #ARRAY{objet, #ENV{objet}}}|sinon_interdire_acces)]
|
|
||||||
|
|
||||||
#SET{options,#ARRAY}
|
|
||||||
[(#ENV{options}|oui) #SET{options,#ENV{options}} ]
|
|
||||||
|
|
||||||
<div class="inner">
|
|
||||||
<div class="ajax">
|
|
||||||
[(#FORMULAIRE_EDITER_GAMUFORM{#ENV{id_objet}, #ENV{objet}, #GET{options}, #ENV{id_redirect}, #ENV{redirect}})]
|
|
||||||
</div>
|
|
||||||
</div>
|
|
2
inclure/gamuform.html
Normal file
2
inclure/gamuform.html
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[<pre>(#ENV**|unserialize|print_r{1})</pre>]
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
[(#AUTORISER{voir, gamuform, #ENV{id_objet}, '', #ARRAY{objet, #ENV{objet}}}|sinon_interdire_acces)]
|
|
||||||
<div class="conf-inner">
|
|
||||||
<h2 class="text-center"><:gamuform:configuration_des|ucfirst:> [ (#ENV{objet}|gamuform_nom_objet)]</h2>
|
|
||||||
<div class="tableau">
|
|
||||||
[(#AUTORISER{creer, gamuform, 0, '', #ARRAY{objet, #ENV{objet}}}|oui)
|
|
||||||
[(#SET{lien,<a class="modalbox btn btn-gamuform"
|
|
||||||
href="[(#URL_PAGE{editer_gamuform}|parametre_url{objet,#ENV{objet}}|parametre_url{redirect,#SELF})]">
|
|
||||||
<i class="osdve-plus-circle"></i>
|
|
||||||
[(#ENV{objet}|gamuform_nom_objet{creer})]
|
|
||||||
</a>})]
|
|
||||||
]
|
|
||||||
#SET{url,spip.php?page=json_gamuform.json}
|
|
||||||
#SET{url,#GET{url}|parametre_url{lang,#ENV{lang}}}
|
|
||||||
#SET{url,#GET{url}|parametre_url{objet,#ENV{objet}}}
|
|
||||||
#SET{url,#GET{url}|parametre_url{w,#ENV{w}}}
|
|
||||||
#SET{namecsv,#ENV{objet}.csv}
|
|
||||||
#SET{tparpage,#ENV{tparpage, [15,25,50,'Tous']}}
|
|
||||||
<INCLURE{fond=inclure/gamutable,
|
|
||||||
apiuri=#GET{url},
|
|
||||||
tparpage=#GET{tparpage},
|
|
||||||
includespip=#GET{lien},
|
|
||||||
namecsv=#GET{namecsv},
|
|
||||||
champcsv=#ENV{champcsv,search},
|
|
||||||
env
|
|
||||||
}>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
|
@ -1,76 +0,0 @@
|
||||||
#HTTP_HEADER{Content-Type: application/json; charset=#CHARSET}
|
|
||||||
[(#AUTORISER{voir, gamuform, #ENV{id_objet}, '', #ARRAY{objet, #ENV{objet}}}|sinon_interdire_acces)]
|
|
||||||
|
|
||||||
#SET{header,#ENV{objet}|gamuform_recup_header}
|
|
||||||
#SET{champs,#ENV{objet}|gamuform_recup_champs_gamutable}
|
|
||||||
#SET{classes,#ENV{objet}|gamuform_recup_classes}
|
|
||||||
#SET{filtreCol,#ENV{objet}|gamuform_recup_filtreCol}
|
|
||||||
#SET{ordreCol,#ENV{objet}|gamuform_recup_ordreCol}
|
|
||||||
#SET{crayons,#ENV{objet}|gamuform_recup_crayons}
|
|
||||||
|
|
||||||
[{
|
|
||||||
"header":{
|
|
||||||
"id": "id",
|
|
||||||
[(#AUTORISER{modifier, gamuform, #ENV{id_objet}, '', #ARRAY{objet, #ENV{objet}}}|oui)
|
|
||||||
"edit": "",]
|
|
||||||
<BOUCLE_header(DATA){source table,#GET{header}}{','}>
|
|
||||||
[(#CLE|json_encode)] : [(#VALEUR*|gamuform_lang|mb_ucfirst|json_encode)]
|
|
||||||
</BOUCLE_header>
|
|
||||||
[(#AUTORISER{supprimer, gamuform, #ENV{id_objet}, '', #ARRAY{objet, #ENV{objet}}}|oui)
|
|
||||||
,"sup": ""
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"crayons":{
|
|
||||||
<BOUCLE_crayons(DATA){source table,#GET{crayons}}{','}>
|
|
||||||
[(#CLE|json_encode)] : [(#VALEUR|json_encode)]
|
|
||||||
</BOUCLE_crayons>
|
|
||||||
},
|
|
||||||
"ordreCol" : {
|
|
||||||
<BOUCLE_ordreCol(DATA){source table,#GET{ordreCol}}{','}>
|
|
||||||
[(#CLE|json_encode)] : [(#VALEUR|json_encode)]
|
|
||||||
</BOUCLE_ordreCol>
|
|
||||||
},
|
|
||||||
"filtreCol" : {
|
|
||||||
<BOUCLE_filtreCol(DATA){source table,#GET{filtreCol}}{','}>
|
|
||||||
[(#CLE|json_encode)] : [(#VALEUR|json_encode)]
|
|
||||||
</BOUCLE_filtreCol>
|
|
||||||
},
|
|
||||||
"classes" : {
|
|
||||||
<BOUCLE_classes(DATA){source table,#GET{classes}}>
|
|
||||||
[(#CLE|json_encode)] : [(#VALEUR|json_encode)],
|
|
||||||
</BOUCLE_classes>
|
|
||||||
"id": "w80p",
|
|
||||||
"edit": "w50p",
|
|
||||||
"sup": "w50p"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
<B_gamuform>
|
|
||||||
,
|
|
||||||
<BOUCLE_gamuform(DATA){source table, #ENV{objet}|gamuform_recup_valeurs{#ENV{id},#ENV{w}}}{','}>
|
|
||||||
#SET{ligne,#VALEUR}
|
|
||||||
[(#SET{edit, #MODELE{lien_editer_gamuform,ligne=#GET{ligne},env} })]
|
|
||||||
[(#SET{sup, #MODELE{lien_supprimer_gamuform,ligne=#GET{ligne},env} })]
|
|
||||||
{
|
|
||||||
"html": {
|
|
||||||
"id": #GET{ligne/id},
|
|
||||||
[(#AUTORISER{modifier, gamuform, #ENV{id_objet}, '', #ARRAY{objet, #ENV{objet}}}|oui)
|
|
||||||
"edit": [(#GET{edit}|json_encode)],
|
|
||||||
]
|
|
||||||
<BOUCLE_champsA(DATA){source table,#GET{champs}}{','}>
|
|
||||||
[(#VALEUR|json_encode)] : [(#ENV{objet}|gamufiltre{#VALEUR,#GET{ligne}}|json_encode)]
|
|
||||||
</BOUCLE_champsA>
|
|
||||||
[(#AUTORISER{supprimer, gamuform, #ENV{id_objet}, '', #ARRAY{objet, #ENV{objet}}}|oui)
|
|
||||||
,"sup": [(#GET{sup}|json_encode)]
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"search": {
|
|
||||||
"id": #GET{ligne/id},
|
|
||||||
"edit": "",
|
|
||||||
<BOUCLE_champsB(DATA){source table,#GET{champs}}>
|
|
||||||
[(#VALEUR|json_encode)] : [(#ENV{objet}|gamufiltre{#VALEUR,#GET{ligne},integer}|json_encode{32})],
|
|
||||||
</BOUCLE_champsB>
|
|
||||||
"sup":""
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</BOUCLE_gamuform>
|
|
||||||
]
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?php
|
|
||||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
|
|
||||||
|
|
||||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$GLOBALS[$GLOBALS['idx_lang']] = array(
|
|
||||||
|
|
||||||
// AA
|
|
||||||
|
|
||||||
// CC
|
|
||||||
"configuration_des" => "Konfiguration von",
|
|
||||||
|
|
||||||
// EE
|
|
||||||
"enregistrer" => "registrieren",
|
|
||||||
|
|
||||||
// II
|
|
||||||
|
|
||||||
// RR
|
|
||||||
|
|
||||||
// SS
|
|
||||||
|
|
||||||
// TT
|
|
||||||
);
|
|
|
@ -1,26 +0,0 @@
|
||||||
<?php
|
|
||||||
// This is a SPIP language file -- Ceci est un fichier langue de SPIP
|
|
||||||
|
|
||||||
if (!defined('_ECRIRE_INC_VERSION')) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$GLOBALS[$GLOBALS['idx_lang']] = array(
|
|
||||||
|
|
||||||
// AA
|
|
||||||
|
|
||||||
// CC
|
|
||||||
"configuration_des" => "configuración de",
|
|
||||||
|
|
||||||
// EE
|
|
||||||
"enregistrer" => "Regístrese en",
|
|
||||||
|
|
||||||
// II
|
|
||||||
|
|
||||||
// RR
|
|
||||||
|
|
||||||
// SS
|
|
||||||
|
|
||||||
// TT
|
|
||||||
);
|
|
|
@ -8,19 +8,37 @@ if (!defined('_ECRIRE_INC_VERSION')) {
|
||||||
|
|
||||||
$GLOBALS[$GLOBALS['idx_lang']] = array(
|
$GLOBALS[$GLOBALS['idx_lang']] = array(
|
||||||
|
|
||||||
// AA
|
// A
|
||||||
|
'ajouter_lien_gamuform' => 'Ajouter ce gamuform',
|
||||||
|
|
||||||
// CC
|
// C
|
||||||
"configuration_des" => "configuration des",
|
'champ_titre_label' => 'Titre',
|
||||||
|
'confirmer_supprimer_gamuform' => 'Confirmez-vous la suppression de cet gamuform ?',
|
||||||
|
|
||||||
// EE
|
// I
|
||||||
"enregistrer" => "Enregistrer",
|
'icone_creer_gamuform' => 'Créer un gamuform',
|
||||||
|
'icone_modifier_gamuform' => 'Modifier ce gamuform',
|
||||||
|
'info_1_gamuform' => 'Un gamuform',
|
||||||
|
'info_aucun_gamuform' => 'Aucun gamuform',
|
||||||
|
'info_gamuforms_auteur' => 'Les gamuforms de cet auteur',
|
||||||
|
'info_nb_gamuforms' => '@nb@ gamuforms',
|
||||||
|
|
||||||
// II
|
// R
|
||||||
|
'retirer_lien_gamuform' => 'Retirer ce gamuform',
|
||||||
|
'retirer_tous_liens_gamuforms' => 'Retirer tous les gamuforms',
|
||||||
|
|
||||||
// RR
|
// S
|
||||||
|
'supprimer_gamuform' => 'Supprimer cet gamuform',
|
||||||
|
|
||||||
// SS
|
// T
|
||||||
|
'texte_ajouter_gamuform' => 'Ajouter un gamuform',
|
||||||
// TT
|
'texte_changer_statut_gamuform' => 'Ce gamuform est :',
|
||||||
|
'texte_creer_associer_gamuform' => 'Créer et associer un gamuform',
|
||||||
|
'texte_definir_comme_traduction_gamuform' => 'Ce gamuform est une traduction du gamuform numéro :',
|
||||||
|
'titre_gamuform' => 'Gamuform',
|
||||||
|
'titre_gamuforms' => 'Gamuforms',
|
||||||
|
'titre_gamuforms_rubrique' => 'Gamuforms de la rubrique',
|
||||||
|
'titre_langue_gamuform' => 'Langue de ce gamuform',
|
||||||
|
'titre_logo_gamuform' => 'Logo de ce gamuform',
|
||||||
|
'titre_objets_lies_gamuform' => 'Liés à ce gamuform',
|
||||||
);
|
);
|
||||||
|
|
|
@ -1,8 +0,0 @@
|
||||||
#SET{ligne,#ENV{ligne}}
|
|
||||||
<a class="modalbox"
|
|
||||||
href="[(#URL_PAGE{editer_gamuform}
|
|
||||||
|parametre_url{id_objet,#GET{ligne/id}}
|
|
||||||
|parametre_url{objet,#ENV{objet}}
|
|
||||||
|parametre_url{redirect,gamutable})]">
|
|
||||||
<i class="fas fa-edit"></i>
|
|
||||||
</a>
|
|
|
@ -1,7 +0,0 @@
|
||||||
#SET{ligne,#ENV{ligne}}
|
|
||||||
<a class="url_action" href="[(#URL_ACTION_AUTEUR{supprimer_gamuform,#GET{ligne/id}/#ENV{objet},#SELF})]"
|
|
||||||
data-confirm="Confirmez vous la suppression de cette ligne ?"
|
|
||||||
>
|
|
||||||
<i class="fas fa-trash"></i>
|
|
||||||
</a>
|
|
||||||
|
|
16
paquet.xml
16
paquet.xml
|
@ -1,26 +1,32 @@
|
||||||
<paquet
|
<paquet
|
||||||
prefix="gamuform"
|
prefix="gamuform"
|
||||||
categorie="outil"
|
categorie="outil"
|
||||||
version="1.3.2"
|
version="1.0.0"
|
||||||
etat="dev"
|
etat="dev"
|
||||||
compatibilite="[4.0.0;4.*]"
|
compatibilite="[3.3.0-dev;3.3.*]"
|
||||||
logo="prive/themes/spip/images/gamuform-xx.svg"
|
logo="prive/themes/spip/images/gamuform-xx.svg"
|
||||||
documentation=""
|
documentation=""
|
||||||
|
schema="1.0.0"
|
||||||
>
|
>
|
||||||
|
<!--
|
||||||
|
Paquet généré le 2020-03-30 14:54:11
|
||||||
|
-->
|
||||||
|
|
||||||
<nom>GamuForm</nom>
|
<nom>GamuForm</nom>
|
||||||
|
|
||||||
|
|
||||||
<auteur lien='https://gamuza.fr'>tofulm</auteur>
|
<auteur lien='https://gamuza.fr'>tofulm</auteur>
|
||||||
<credit lien="https://gamuza.fr">Logo : tofulm</credit>
|
<credit lien="https://gamuza.fr">Logo : tofulm</credit>
|
||||||
|
|
||||||
<licence>GNU/GPL</licence>
|
<licence>GNU/GPL</licence>
|
||||||
<necessite nom="saisies" compatibilite="[3.23.2;]" />
|
<necessite nom="saisies" compatibilite="[3.23.2;]" />
|
||||||
<necessite nom="gamutable" compatibilite="[3.2.1;]" />
|
|
||||||
<necessite nom="verifier" compatibilite="[2.0.0;]" />
|
|
||||||
<necessite nom="gamufonctions" compatibilite="[1.0.0;]" />
|
|
||||||
|
|
||||||
|
|
||||||
<pipeline nom="autoriser" inclure="gamuform_autorisations.php" />
|
<pipeline nom="autoriser" inclure="gamuform_autorisations.php" />
|
||||||
|
|
||||||
|
<pipeline nom="declarer_tables_objets_sql" inclure="base/gamuform.php" />
|
||||||
|
<pipeline nom="declarer_tables_interfaces" inclure="base/gamuform.php" />
|
||||||
|
<pipeline nom="declarer_tables_auxiliaires" inclure="base/gamuform.php" />
|
||||||
|
<pipeline nom="optimiser_base_disparus" inclure="gamuform_pipelines.php" />
|
||||||
|
|
||||||
</paquet>
|
</paquet>
|
||||||
|
|
Loading…
Add table
Reference in a new issue