Browse Source

Pouvoir ajouter / retirer des mots par les admins, en ajax.

Obligé d’utiliser l’invalideur sinon l’ajax se recharge sans modifier nos ajouts/suppression.
Un peu de décoration de l’ensemble.
Toujours en évitant un cache sessionné.
svn/root
marcimat@rezo.net 4 years ago
parent
commit
97c8dab0e3
  1. 4
      .gitattributes
  2. 4
      Todo.md
  3. 52
      action/supprimer_lien_et_cache.php
  4. 10
      content/ajouter_mots.html
  5. 2
      content/thread.html
  6. 19
      formulaires/ajouter_mots_forum.html
  7. 39
      formulaires/ajouter_mots_forum.php
  8. 21
      inclure/tags.html
  9. 11
      scss/galactic_theme.scss
  10. 1
      scss/theme/badges_labels.scss
  11. 26
      scss/theme/formulaires.scss

4
.gitattributes

@ -1,5 +1,6 @@
* text=auto !eol
/Todo.md -text
action/supprimer_lien_et_cache.php -text
aside/article.html -text
aside/mot.html -text
aside/rubrique.html -text
@ -12,6 +13,7 @@ breadcrumb/auteur.html -text
breadcrumb/rubrique.html -text
breadcrumb/thread.html -text
content/activite.html -text
content/ajouter_mots.html -text
content/article.html -text
content/auteur.html -text
content/login.html -text
@ -33,6 +35,8 @@ fonts/fontawesome-webfont.svg -text
fonts/fontawesome-webfont.ttf -text
fonts/fontawesome-webfont.woff -text
fonts/fontawesome-webfont.woff2 -text
formulaires/ajouter_mots_forum.html -text
formulaires/ajouter_mots_forum.php -text
formulaires/forum.html -text
formulaires/inc-choix_mots.html -text
formulaires/inc-forum_bloc_choix_mots.html -text

4
Todo.md

@ -16,10 +16,6 @@ notamment en permettant de voter les réponses. En gros s’approcher un peu d
- Meilleur affichage en mobile
### Administration
- Pouvoir ajouter / supprimer des mots clés
### Formulaire de forum
- Adapter les différents libéllés (poser une question, formuler une réponse...)

52
action/supprimer_lien_et_cache.php

@ -0,0 +1,52 @@
<?php
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2017 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *
* Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne. *
\***************************************************************************/
/**
* Action pour dissocier un lien entre 2 objets
*
* @package SPIP\Core\Liens\API
*/
if (!defined('_ECRIRE_INC_VERSION')) {
return;
}
/**
* Action pour dissocier 2 objets entre eux
*
* L'argument attendu est `objet1-id1-objet2-id2` (type d'objet, identifiant)
* tel que `mot-7-rubrique-3`.
*
* @uses action_supprimer_lien_dist()
*
* @param null|string $arg
* Clé des arguments. En absence utilise l'argument
* de l'action sécurisée.
* @return void
*/
function action_supprimer_lien_et_cache_dist($arg = null) {
if (is_null($arg)) {
$securiser_action = charger_fonction('securiser_action', 'inc');
$arg = $securiser_action();
}
$supprimer_lien = charger_fonction('supprimer_lien', 'action');
$supprimer_lien($arg);
$arg = explode("-", $arg);
list($objet_source, $ids, $objet_lie, $idl) = $arg;
include_spip('inc/invalideur');
suivre_invalideur("id='" . $objet_source . '/' . $ids . "'");
suivre_invalideur("id='" . $objet_lie . '/' . $idl . "'");
}

10
content/ajouter_mots.html

@ -0,0 +1,10 @@
<BOUCLE_forum(FORUMS){id_forum}>
[(#AUTORISER{modererforum,#OBJET,#ID_OBJET}|oui)
<div class="cartouche">
<h1>Ajouter des mots</h1>
<div class="ajax">
#FORMULAIRE_AJOUTER_MOTS_FORUM{#ID_FORUM}
</div>
</div>
]
</BOUCLE_forum>

2
content/thread.html

@ -38,6 +38,6 @@
</div>
[(#REM) ajax pour les boutons d’admins... hum. ]
<INCLURE{fond=inclure/tags, id_forum, id_thread, objet, id_objet, ajax, env} />
<INCLURE{fond=inclure/tags, id_forum, id_thread, objet, id_objet, ajax=tags, env} />
</BOUCLE_sujet_forum>

19
formulaires/ajouter_mots_forum.html

@ -0,0 +1,19 @@
<div class="formulaire_spip formulaire_#FORM">
[<p class="reponse_formulaire reponse_formulaire_ok">(#ENV*{message_ok})</p>]
[<p class="reponse_formulaire reponse_formulaire_erreur">(#ENV*{message_erreur})</p>]
<BOUCLE_editable(CONDITION){si #ENV{editable}}>
<form action="[(#ENV{action})]" method="post"><div>
#ACTION_FORMULAIRE
<div class="editer-groupe">
<BOUCLE_groupes(GROUPES_MOTS){id_groupe IN 3,4,5,6,7}>
[(#SAISIE{mot, mots, label=#TITRE,
multiple=oui,
id_groupe=#ID_GROUPE})]
</BOUCLE_groupes>
</div>
<p class="boutons">
<input type="submit" class="submit" value="<:bouton_enregistrer:>" />
</p>
</div></form>
</BOUCLE_editable>
</div>

39
formulaires/ajouter_mots_forum.php

@ -0,0 +1,39 @@
<?php
function formulaires_ajouter_mots_forum_charger_dist($id_forum) {
if (!$id_forum) {
return false;
}
$valeurs = array(
'id_forum' => $id_forum,
'editable' => true,
);
return $valeurs;
}
function formulaires_ajouter_mots_forum_verifier_dist($id_forum) {
$erreurs = array();
return $erreurs;
}
function formulaires_ajouter_mots_forum_traiter_dist($id_forum) {
$res = array(
'editable' => false,
'message_ok' => _T('info_modification_enregistree'),
);
include_spip('action/editer_liens');
$mots = _request('mots');
$mots = array_filter($mots);
$mots = array_map('intval', $mots);
objet_associer(
array('mot' => $mots),
array('forum' => $id_forum)
);
include_spip('inc/invalideur');
suivre_invalideur("id='forum/" . $id_forum . "'");
if ($res['message_ok']) {
// autoclose + reload liste des tags
$res['message_ok'] .= '<script type="text/javascript">if (window.jQuery) { jQuery.modalboxclose(); ajaxReload("tags"); }</script>';
}
return $res;
}

21
inclure/tags.html

@ -28,7 +28,7 @@ if (
<BOUCLE_mots2(MOTS){id_mot IN #GET{mots}|array_column{id_mot}}{par id_groupe, num titre, titre}{si #GET{mots}}>
<a href="#URL_MOT" class="label mot[ (#ID_GROUPE|forum_css_couleur_groupe)]">#TITRE</a>
<?php if ($moderation) {
$action_off = generer_action_auteur('supprimer_lien','mot-#ID_MOT-forum-#GET{mots_forums/#ID_MOT}',self());
$action_off = generer_action_auteur('supprimer_lien_et_cache','mot-#ID_MOT-forum-#GET{mots_forums/#ID_MOT}',self());
echo bouton_action(
'<i class="fa fa-trash-o" aria-hidden="true"></i> <span class="sr-only">' . _T('mots:info_retirer_mot') . '</span>',
$action_off,
@ -39,6 +39,23 @@ if (
}
?>
</BOUCLE_mots2>
<?php if ($moderation) { ?>
<a href="[(#URL_PAGE{ajouter_mots}|parametre_url{var_zajax,content}|parametre_url{id_forum,#ID_FORUM})]" class="label mot mediabox">
<i class="fa fa-plus" aria-hidden="true"></i>
Ajouter des mots
</a>
<?php } ?>
</div>
</div>
</B_mots2>
</B_mots2>
<?php if ($moderation) { ?>
<div class="article__statut">
<div class="tags">
<a href="[(#URL_PAGE{ajouter_mots}|parametre_url{var_zajax,content}|parametre_url{id_forum,#ID_FORUM})]" class="label mot mediabox">
<i class="fa fa-plus" aria-hidden="true"></i>
Ajouter des mots
</a>
</div>
</div>
<?php } ?>
<//B_mots2>

11
scss/galactic_theme.scss

@ -25,7 +25,6 @@
.article__statut {
.tags {
text-align:center;
.bouton_action_post {
display:inline-block;
border:none;
@ -38,23 +37,13 @@
color:$couleur-gris5;
transition:color 0.3s;
}
&:not(:last-child) {
margin-bottom:.2em;
}
&.moderation-off button {
&:hover, &:focus {
color:$couleur-moderation-off !important;
background-color:transparent !important;
}
}
&.moderation-spam button {
&:hover, &:focus {
color:$couleur-moderation-spam !important;
background-color:transparent !important;
}
}
}
}
}

1
scss/theme/badges_labels.scss

@ -24,6 +24,7 @@
}
}
a.badge, a.label {
color: #fff;
&:hover, &:focus {
background-color: $couleur-lien;
color:white;

26
scss/theme/formulaires.scss

@ -132,3 +132,29 @@
}
}
}
.formulaire_ajouter_mots_forum {
max-width:600px;
.editer_mots {
.choix {
display:inline-flex;
border:1px solid transparentize(#fff, 50%);
background-color:transparentize(#fff, 90%);
border-radius:3px;
padding:0 .3em;
margin-right:.3em;
margin-bottom:0;
& > * {
margin-bottom:0;
}
&:hover {
background-color:transparentize(#fff, 30%);
border-color:#fff;
}
}
& > label {
font-weight: bold;
display:block;
}
}
}
Loading…
Cancel
Save