commit inutile, il faut tout refaire, en plus KISS

This commit is contained in:
Christophe 2020-02-10 23:43:21 +01:00
parent 75efda4b08
commit 0b0a97c9a5
13 changed files with 298 additions and 15 deletions

View file

@ -27,7 +27,7 @@ function auted_upgrade($nom_meta_base_version, $version_cible) {
$maj = array();
$maj['create'] = array(array('maj_tables', array('spip_aut_modeles','spip_auteurs')));
$maj['1.0.3'] = array(array('maj_tables', array('spip_aut_modeles','spip_auteurs')));
$maj['1.0.4'] = array(array('maj_tables', array('spip_aut_modeles','spip_auteurs')));
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);

View file

@ -51,6 +51,7 @@ function auted_declarer_tables_objets_sql($tables) {
'nom' => 'varchar(55) NOT NULL DEFAULT ""',
'modele' => 'text NOT NULL DEFAULT ""',
'statut' => 'varchar(20) DEFAULT "0" NOT NULL',
'modifie' => 'varchar(55) NOT NULL DEFAULT ""',
'maj' => 'TIMESTAMP'
),
'key' => array(
@ -58,11 +59,7 @@ function auted_declarer_tables_objets_sql($tables) {
'KEY statut' => 'statut',
),
'titre' => 'nom AS titre, "" AS lang',
#'date' => '',
'champs_editables' => array('nom', 'modele'),
'champs_versionnes' => array(),
'rechercher_champs' => array(),
'tables_jointures' => array(),
'champs_editables' => array('nom', 'modele', 'modifie'),
'statut_textes_instituer' => array(
'prepa' => 'texte_statut_en_cours_redaction',
'publie' => 'texte_statut_publie',

8
charger_aut_modele.html Normal file
View file

@ -0,0 +1,8 @@
<div id="charger_aut_modele">
<h1>Charger un modèle pour : [ (#ENV{nom})]</h1>
<div class="">
[(#FORMULAIRE_CHARGER_AUT_MODELE{#ENV{id_auteur},#ENV{redirect}})]
</div>
</div>

View file

@ -35,3 +35,10 @@ button[type='button'].toggle_save_modele {
.pas_modele.enregistrer_modele input {
display: none;
}
.modifie input {
color: red;
}
.modifie a {
color: red;
}

View file

@ -0,0 +1,30 @@
<div class="formulaire_spip formulaire_#FORM">
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
<form name="formulaire_#FORM" action="#ENV{action}" method="post"><div>
#ACTION_FORMULAIRE{#ENV{action}}
<div class="editer_groupe">
#SET{name,aut_modele}
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
#SET{obli,"obligatoire"}
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<BOUCLE_auteurs(AUTEURS){aut_modele != ''}{tout}>
[(#SET{nom_modele,#AUT_MODELE|json_decode{true}|table_valeur{name}})]
<div class="choix">
<input type="radio" class="radio" name="#GET{name}" value="#AUT_MODELE" id="#GET{name}_non" >
<label for="#GET{name}_non">#GET{nom_modele}</label>
</div>
</BOUCLE_auteurs>
</div>
</div>
<p class="boutons"><input type="submit" class="submit" value="Envoyer" ></p>
</div></form>
</div>

View file

@ -0,0 +1,37 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
function formulaires_charger_aut_modele_charger_dist($id_auteur, $redirect = ''){
$valeurs = array(
"id_auteur" => $id_auteur,
"aut_modele" => ""
);
return $valeurs;
}
function formulaires_charger_aut_modele_verifier_dist($id_auteur, $redirect = ''){
$erreurs = array();
return $erreurs;
}
function formulaires_charger_aut_modele_traiter_dist($id_auteur, $redirect = ''){
$retour = array();
$retour['message_ok'] = "bravo";
$retour['redirect'] = "spip.php?page=perdu";
$retour['editable'] = true;
$aut_modele = _request('aut_modele');
if ($aut_modele) {
$aut_modele = json_decode($aut_modele, true);
if (is_array($aut_modele)) {
}
$modele = sql_getfetsel('aut_modele', 'spip_auteurs', 'aut_modele');
}
return $retour;
}

View file

@ -1,3 +1,5 @@
#CACHE{0}
<div class="formulaire_spip formulaire_#FORM">
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
@ -23,6 +25,8 @@
{pgp ?!IN #ENV{pgp}}
{webmestre?}
{tout}>
#SET{modifie,''}
<BOUCLE_mod(AUT_MODELES){nom=#AUT_MODELE}> #SET{modifie,#MODIFIE} </BOUCLE_mod>
<tr id="auteur-#ID_AUTEUR" data-id_auteur="#ID_AUTEUR" data-new="[oui(#AUT_MODELE|!={''}|oui)]">
<td>
<div>
@ -46,14 +50,25 @@
data-id_auteur="#ID_AUTEUR"
>
<svg id="svg_save-#ID_AUTEUR" class="icone_svg [ (#AUT_MODELE|oui)checked]" alt="">
<title></title>
<use xlink:href="[(#CHEMIN{img/toggle.svg})]#toggle" />
</svg>
</button>
]
</div>
<div class="enregistrer_modele modele-#ID_AUTEUR[ (#AUT_MODELE|non)pas_modele]">
<input id="modele-#ID_AUTEUR" class="" type="text" value="[(#AUT_MODELE)]" name="modele-#ID_AUTEUR"/>
<div class="enregistrer_modele modele-#ID_AUTEUR[ (#GET{modifie}|oui)modifie]">
<input id="modele-#ID_AUTEUR" class="" type="text" value="[(#AUT_MODELE)]" name="modele-#ID_AUTEUR" placeholder="Nom du modèle"/>
<a class="mediabox save_modele"
href="[(#URL_PAGE{save_aut_modele}
|parametre_url{id_auteur,#ID_AUTEUR}
|parametre_url{redirect,#SELF}
)]"
title = "<:auted:sauvegarder_modele:>"
>
<svg id="svg_save-#ID_AUTEUR" class="icone_svg" alt="">
<use xlink:href="[(#CHEMIN{img/save.svg})]#save" />
</svg>
</a>
</div>
<input type="hidden" name="Tid_auteur[]" value="#ID_AUTEUR" placeholder="Nom modèle">
</td>
@ -98,6 +113,7 @@
var nouveau = $("#auteur-"+id_auteur).data('new');
console.log("new ", nouveau);
if (nouveau) {
//$('.save_modele').attr('disabled',true);
$('input#modele-' + id_auteur)
.css('border-color', 'red')
.css('color', 'red');

View file

@ -43,13 +43,17 @@ function formulaires_editer_autorisations_traiter_dist($id_auteur=0, $redirect='
'modele' => json_encode($Tautorisations),
'statut' => 'publie'
];
$id_aut_modele = sql_getfetsel('id_aut_modele', 'spip_aut_modeles', 'nom='.sql_quote($nom_modele));
if (intval($id_aut_modele)) {
$r = sql_fetsel('id_aut_modele, modele, nom', 'spip_aut_modeles', 'nom='.sql_quote($nom_modele));
$id_aut_modele = $r['id_aut_modele'];
if ($id_aut_modele) {
if ($r['modele'] !== $aut_modele['modele']) {
$aut_modele['modifie'] = 'oui';
}
sql_updateq('spip_aut_modeles', $aut_modele, 'id_aut_modele='.intval($id_aut_modele));
} else {
sql_insertq('spip_aut_modeles', $aut_modele);
}
$set['aut_modele'] = $nom_modele;
$set['aut_modele'] = $r['nom'];
}
sql_updateq('spip_auteurs', $set, 'id_auteur='.intval($id));

View file

@ -0,0 +1,96 @@
<div class="formulaire_spip formulaire_#FORM">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
<form name="formulaire_#FORM" action="#ENV{action}" method="post"><div>
#ACTION_FORMULAIRE{#ENV{action}}
<input type="hidden" value="#ENV{nom_modele}" name="nom_modele"/>
<div class="editer_groupe">
#SET{name,repercuter}
<div class="editer editer_[(#GET{name})]">
<p class="explication">
<:auted:repercuter_modele:>
rep #ENV{repercuter}
</p>
<div class="choix">
<input type="radio" class="radio" name="#GET{name}" value="oui" id="#GET{name}_oui" [(#ENV{repercuter}|=={oui}|oui) checked]>
<label for="#GET{name}_oui"><:oui:></label>
</div>
<div class="choix">
<input type="radio" class="radio" name="#GET{name}" value="non" id="#GET{name}_non" [(#ENV{repercuter}|=={non}|oui) checked] >
<label for="#GET{name}_non"><:non:></label>
</div>
</div>
<div class="editer_groupe">
#SET{name,new_modele}
#SET{erreurs,#ENV**{erreurs}|table_valeur{#GET{name}}}
#SET{obli,"obligatoire"}
<div class="editer editer_[(#GET{name})][ (#GET{obli})][ (#GET{erreurs}|oui)erreur]">
<label for="#GET{name}"><:auted:nom_du_modele:></label>
[<span class="erreur_message">(#GET{erreurs})</span>]
<input type="text" class="text modele" name="#GET{name}" id="#GET{name}" value="#ENV{nom_modele}"[(#ENV{repercuter}|=={oui}|oui) readonly] autocomplete="off">
<span class="erreur_message changer_new_modele"><:auted:forcer_changer_nom_du_modele:> : #ENV{nom_modele}</span>
</div>
</div>
</div>
<p class="boutons"><input type="submit" class="submit" value="Envoyer" ></p>
</div></form>
</div>
<script type="text/javascript">
jQuery(function() {
save_aut_modele();
//onAjaxLoad(save_aut_modele);
onAjaxLoad(repercuter);
function repercuter(){
if ("#ENV{repercuter}" === 'non'){
$('input.modele').attr('readonly',false);
}
}
function save_aut_modele(){
var nom_modele = "#ENV{nom_modele}";
$(".changer_new_modele").css('display', 'none');
$('.editer_repercuter').on('change','.radio', function(e){
e.stopPropagation();
var val = $(this).val();
if (val === 'non') {
$(".changer_new_modele").fadeIn();
$('input.modele').css('color','red').attr('readonly',false);
$('.submit').fadeOut()
}
if (val === 'oui') {
$(".changer_new_modele").css('display', 'none');
$('input.modele').css('color','#000').attr('readonly',true);
$('.submit').fadeIn()
}
});
$('#new_modele').on('keyup', function(){
var new_modele = $(this).val();
if (nom_modele !== new_modele) {
$(".changer_new_modele").css('display', 'none');
$(".erreur_message").css('display', 'none');
$(".editer_new_modele").removeClass('erreur');
$('input.modele').css('color','green');
$('.submit').fadeIn()
} else {
$(".changer_new_modele").fadeIn();
$('input.modele').css('color','red');
$(".editer_new_modele").addClass('erreur');
$('.submit').fadeOut()
}
})
}
});
</script>

View file

@ -0,0 +1,82 @@
<?php
if (!defined('_ECRIRE_INC_VERSION')) return;
function formulaires_save_aut_modele_charger_dist($id_auteur, $redirect = ''){
$valeurs = [];
if (intval($id_auteur)) {
$valeurs = array(
"id_auteur" => $id_auteur,
"nom_modele" => sql_getfetsel('aut_modele', 'spip_auteurs', 'id_auteur='.intval($id_auteur)),
"new_modele" => "",
"repercuter" => "oui",
);
}
return $valeurs;
}
function formulaires_save_aut_modele_verifier_dist($id_auteur, $redirect = ''){
$nom_modele = _request('nom_modele');
$new_modele = _request('new_modele');
$repercuter = _request('repercuter');
$erreurs = array();
if ($repercuter === 'nom') {
foreach (array ('new_modele ') as $obligatoire) {
if (empty($new_modele)){
$erreurs[$obligatoire] = 'Ce champs est obligatoire';
}
}
}
if ($repercuter === 'non' and $nom_modele === $new_modele) {
$erreurs['new_modele'] = _T('auted:forcer_changer_nom_du_modele');
}
return $erreurs;
}
function formulaires_save_aut_modele_traiter_dist($id_auteur, $redirect = ''){
$new_modele = _request('new_modele');
$repercuter = _request('repercuter');
$from = [
'spip_auteurs AS A',
'spip_aut_modeles AS M'
];
$where = [
'A.id_auteur='.intval($id_auteur),
'A.aut_modele=M.nom'
];
$r = sql_fetsel('M.id_aut_modele, M.modele, M.nom', $from, $where);
if (!empty($r)) {
if ($repercuter === 'oui') {
sql_updateq('spip_auteurs', ['autorisations' => $r['modele']], 'aut_modele='.sql_quote($r['nom']));
sql_updateq('spip_aut_modeles', ['modele' => $r['modele']], 'nom='.sql_quote($r['nom']));
}
if ($repercuter === 'non') {
sql_updateq('spip_auteurs', ['aut_modele' => $new_modele], 'id_auteur='.intval($id_auteur));
$set = [
'nom' => $new_modele,
'modele' => $r['autorisations'],
'statut' => 'publie'
];
sql_insertq('spip_aut_modeles', $set);
}
}
$retour = array();
$retour['message_ok'] = "bravo";
if ($redirect) {
$retour['redirect'] = $redirect;
}
return $retour;
}

View file

@ -9,7 +9,7 @@
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.1-dev (6c977cb37d, 2020-02-03)"
sodipodi:docname="save.svg"
id="save_modele"
id="save"
clip-rule="evenodd"
fill-rule="evenodd"
y="0px"

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View file

@ -1,12 +1,12 @@
<paquet
prefix="auted"
categorie="outil"
version="1.0.3"
version="1.0.4"
etat="dev"
compatibilite="[3.2.0-dev;3.3.*]"
logo="prive/themes/spip/images/auted-64.png"
documentation=""
schema="1.0.3"
schema="1.0.4"
>
<!--
Paquet généré le 2020-02-10 11:18:59

6
save_aut_modele.html Normal file
View file

@ -0,0 +1,6 @@
<div class="save_aut_modele">
<h1><:auted:sauvegarder_modele:></h1>
<div class="ajax">
[(#FORMULAIRE_SAVE_AUT_MODELE{#ENV{id_auteur}, #ENV{redirect}})]
</div>
</div>