Skip to content
Extraits de code Groupes Projets
Valider a895338b rédigé par Maïeul's avatar Maïeul
Parcourir les fichiers

Merge pull request 'dev/issue_42' (#43) from dev/issue_42 into master

parents fe4daf48 fb1e86ab
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -30,7 +30,9 @@ function formidable_declarer_tables_interfaces($interfaces) {
$interfaces['tables_jointures']['spip_formulaires'][] = 'formulaires_liens';
$interfaces['tables_jointures']['spip_articles'][] = 'formulaires_liens';
$interfaces['tables_jointures']['spip_rubriques'][] = 'formulaires_liens';
$interfaces['exceptions_des_jointures']['spip_formulaires']['vu'] = array('spip_formulaires_liens', 'vu');
$interfaces['table_des_traitements']['MESSAGE_RETOUR']['formulaires']= _TRAITEMENT_RACCOURCIS;
$interfaces['table_des_traitements']['URL_REDIRECT']['formulaires']= 'vider_url(%s)';
......@@ -176,6 +178,10 @@ function formidable_declarer_tables_objets_sql($tables) {
'poubelle' => 'formidable:texte_statut_poubelle'
),
);
// Jointures sur les formulaires pour tous les objets
$tables[]['tables_jointures'][] = 'formulaires_liens';
return $tables;
}
......@@ -225,7 +231,8 @@ function formidable_declarer_tables_auxiliaires($tables_auxiliaires) {
$formulaires_liens = array(
'id_formulaire' => "bigint(21) DEFAULT '0' NOT NULL",
'id_objet' => "bigint(21) DEFAULT '0' NOT NULL",
'objet' => "VARCHAR (25) DEFAULT '' NOT NULL"
'objet' => "VARCHAR (25) DEFAULT '' NOT NULL",
'vu' => "ENUM('non', 'oui') DEFAULT 'non' NOT NULL",
);
$formulaires_liens_cles = array(
......
......@@ -111,6 +111,13 @@ function formidable_upgrade($nom_meta_base_version, $version_cible) {
$maj['0.23.0'] = array(
array('formidable_saisies_identifier')
);
// Ajouter un champ "vu" pour les liaisons
$maj['1.0.0'] = array(
array('maj_tables', array('spip_formulaires_liens')),
array('formidable_verifier_liens_vu'),
);
include_spip('base/upgrade');
maj_plugin($nom_meta_base_version, $version_cible, $maj);
}
......@@ -365,6 +372,34 @@ function formidable_migrer_config() {
effacer_config("formidable/analyse");
ecrire_config("formidable", $config);
}
/**
* Tester les liens existants et pour chacun voir si on doit mettre vu=oui
*/
function formidable_verifier_liens_vu() {
include_spip('action/editer_liens');
include_spip('formidable_pipelines');
// Chercher tous les liens de form pas marqué comme vu
if ($liens = objet_trouver_liens(array('formulaire' => '*'), array('*' => '*'), array('vu="non"'))) {
foreach ($liens as $lien) {
$table = table_objet_sql($lien['objet']);
$cle = id_table_objet($lien['objet']);
$contenu = sql_fetsel('*', $table, "$cle=".intval($lien['id_objet']));
$contenu = implode(' ', $contenu);
// On cherche les modèles insérés dans les textes du contenu
$formulaires = formidable_trouve_liens($contenu);
// Est-ce qu'on trouve le form de ce lien dans les modèles trouvés
if (isset($formulaires[$lien['id_formulaire']])) {
// On lui ajoute vu=oui
objet_qualifier_liens(array('formulaire' => $lien['id_formulaire']), array($lien['objet'] => $lien['id_objet']), array('vu' => 'oui'));
}
}
}
}
/**
* Désinstallation/suppression des tables de formidable
*
......
......@@ -91,26 +91,37 @@ function formidable_post_edition($flux) {
) {
$objet = objet_type($table);
$contenu = implode(' ', $row);
// On cherche les modèles insérés dans les textes du contenu
$formulaires = formidable_trouve_liens($contenu);
// On cherche les liaisons "vu dans le texte" qui étaient là avant
include_spip('action/editer_liens');
$deja = objet_trouver_liens(array('formulaire' => '*'), array($objet => $id_objet));
$deja = objet_trouver_liens(array('formulaire' => '*'), array($objet => $id_objet), array('vu="oui"'));
// On compare pour savoir quelles liaisons "dans le texte" n'est plus là désormais
$del = array();
if (count($deja)) {
foreach ($deja as $l) {
if (isset($formulaires[$l['id_formulaire']])) {
unset($formulaires[$l['id_formulaire']]);
} else {
if (!isset($formulaires[$l['id_formulaire']])) {
$del[] = $l['id_formulaire'];
}
}
}
// Pour les liens trouvés dans la dernière version des textes
if (count($formulaires)) {
objet_associer(array('formulaire' => $formulaires), array($objet => $id_objet));
objet_associer(array('formulaire' => $formulaires), array($objet => $id_objet), array('vu' => 'oui'));
objet_qualifier_liens(array('formulaire' => $formulaires), array($objet => $id_objet), array('vu' => 'oui'));
}
// Pour les liens qui étaient avant dans le texte mais qui n'y sont plus
// => on garde toujours la liaison mais avec vu=non, à chacun de retirer la liaison si on ne veut plus du tout, comme pour les docs
if (count($del)) {
objet_dissocier(array('formulaire' => $del), array($objet=>$id_objet));
objet_qualifier_liens(array('formulaire' => $del), array($objet => $id_objet), array('vu' => 'non'));
}
}
return $flux;
}
......
......@@ -6,7 +6,6 @@ if (!defined('_ECRIRE_INC_VERSION')) {
}
$GLOBALS[$GLOBALS['idx_lang']] = array(
// I
'icone_creer_formulaire' => 'Créer un nouveau formulaire',
......@@ -16,5 +15,9 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
// T
'titre_formulaire' => 'Formulaire',
'titre_formulaires' => 'Formulaires',
'titre_logo_formulaire' => 'Logo de ce formulaire'
'titre_logo_formulaire' => 'Logo de ce formulaire',
// V
'vu' => 'Inséré dans le texte',
'vu_oui' => 'Inséré',
);
......@@ -5,7 +5,7 @@
etat="stable"
compatibilite="[3.1.0;3.2.*]"
logo="images/formidable-64.png"
schema="0.23.0"
schema="1.0.0"
documentation="https://contrib.spip.net/Formidable-le-generateur-de-formulaires"
>
<nom>Formidable</nom>
......
......@@ -33,16 +33,18 @@ a mis a jour la valeur avec la page reelle]
<tr class="first_row">
<th class="statut" scope="col">[(#TRI{statut,<span title="<:lien_trier_statut|attribut_html:>">#</span>,ajax})]</th>
<th class="titre" scope="col">[(#TRI{multi titre,<:formidable:editer_titre:>,ajax})]</th>
<th class="vu" scope="col"><:formulaire:vu:></th>
<th class="action" scope="col"></th>
</tr>
</thead>
<tbody>
<BOUCLE_liste_formulaires(FORMULAIRES){id_formulaire IN #GET{selection}}{statut?}
<BOUCLE_liste_formulaires(FORMULAIRES){objet=#ENV{objet}}{id_objet=#ENV{id_objet}}{id_formulaire IN #GET{selection}}{statut?}
{tri #ENV{par,multi titre},#GET{defaut_tri}}{pagination #ENV{nb,10} forml}>
<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#TITRE**|extraire_multi|initiale|=={#ENV{i}}|?{on}|unique)][(#ID_FORMULAIRE|=={#ENV{id_lien_ajoute}}|oui)append]">
<td class="statut">[(#STATUT|puce_statut{formulaire})]</td>
<td class="titre">[(#LOGO_FORMULAIRE|image_reduire{20,20})]<a href="[(#ID_FORMULAIRE|generer_url_entite{formulaire})]">#TITRE</a></td>
<td class="vu">[(#VU|=={oui}|?{<:formulaire:vu_oui:>})]</td>
<td class="action">
[(#ENV{editable}|oui)
<button type="submit" class="button link delete" name="supprimer_lien\[formulaire-#ID_FORMULAIRE-#OBJET-#ID_OBJET\]" value="X"><:formidable:liens_retirer_lien_formulaire:> [(#CHEMIN_IMAGE{supprimer-12.png}|balise_img{'X'})]</button>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter