MyBB.support, le portail francophone de MyBB
Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - Printable Version

+- MyBB.support, le portail francophone de MyBB (http://mybb.fr)
+-- Forum: Plug-ins et modules pour MyBB (http://mybb.fr/forum-32.html)
+--- Forum: Support (http://mybb.fr/forum-15.html)
+--- Thread: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? (/thread-7608.html)



Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - Pichorka - 25-08-2016


VERSION_MyBB : 1.8.7
Bonjour,

Comment ajouter une alerte similaire aux alertes de membre(s) en attente d'activation, de message(s) privé(s) reçus, etc. comme c'est le cas avec le(s) bandeau(x) notice qui s'affiche sur la page d'index du forum quand c'est le cas.

Il y a juste un nombre entre parenthèses sur la page d'index à côté du nombre total de messages des forums.
Ce serait bien plus évident de voir immédiatement avec le(s) bandeau(x) notice qui s'affiche sur la page d'index du forum et ne pas oublier ou "zapper" un nouveau membre qui aurait poster.

Il y a bien sur le clic sur modération http://www.mobilsam.com/modcp.php qui permet de voir un résumé, puis les détails.
Le lien http://www.mobilsam.com/modcp.php?action=modqueue également.

Mais, ce n'est pas visuellement pratique comme une notice alerte avec le(s) bandeau(x) notice qui s'affiche sur la page d'index du forum.

Je ne sais pas comment faire, et j'ai chercher sans succès, pourtant :

LES TEMPLATE EXISTENT

modcp_awaitingmoderation
Code:
<table border="0" cellspacing="{$theme['borderwidth']}" cellpadding="{$theme['tablespace']}" class="tborder">
<tr>
<td class="thead" align="center" colspan="3"><strong>{$lang->awaiting_moderation}</strong></td>
</tr>
<tr>
<td class="tcat" width="23%"><span class="smalltext"><strong>{$lang->type}</strong></span></td>
<td class="tcat" align="center" width="33%"><span class="smalltext"><strong>{$lang->number_awaiting}</strong></span></td>
<td class="tcat" align="center" width="44%"><span class="smalltext"><strong>{$lang->latest}</strong></span></td>
</tr>
{$awaitingthreads}
{$awaitingposts}
{$awaitingattachments}
</table>
<br />

modcp_awaitingposts
Code:
<tr>
<td class="trow2"><span class="smalltext"><strong>{$lang->posts}</strong></span></td>
<td class="trow2" align="center"><span class="smalltext">{$unapproved_posts}</span></td>
<td class="trow2" align="center"><span class="smalltext">{$latest_post}</span></td>
</tr>

modcp_awaitingthreads
Code:
<tr>
<td class="trow1"><span class="smalltext"><strong>{$lang->threads}</strong></span></td>
<td class="trow1" align="center"><span class="smalltext">{$unapproved_threads}</span></td>
<td class="trow1" align="center"><span class="smalltext">{$latest_thread}</span></td>
</tr>

modcp_awaitingattachments
Code:
<tr>
<td class="{$bgcolor}"><span class="smalltext"><strong>{$lang->attachments}</strong></span></td>
<td class="{$bgcolor}" align="center"><span class="smalltext">{$unapproved_attachments}</span></td>
<td class="{$bgcolor}" align="center"><span class="smalltext">{$latest_attachment}</span></td>
</tr>

Comment faire pour intégrer dans le template "header" ceci, comme s'y trouve les autres ci-dessous :
Code:
                        {$quicksearch}
                        {$welcomeblock}
                    <!-- </div> in header_welcomeblock_member and header_welcomeblock_guest -->
                <!-- </div> in header_welcomeblock_member and header_welcomeblock_guest -->
            </div>
        </div>
        <div id="content">
            <div class="wrapper">
                {$pm_notice}
                {$bannedwarning}
                {$bbclosedwarning}
                {$unreadreports}
                {$pending_joinrequests}
                {$awaitingusers}
                <navigation>
                <br />


J'ai trouver un sujet en Anglais similaire sur MyBB.com, qui est resté sans aucunes réponses depuis des mois, il est la > https://community.mybb.com/thread-171422.html .
Comme mon anglais et plus que sommaire ... quand je post chez eux, c'est avec google translate et c'est plutôt incompréhensible pour eux, ce que je comprends.

Je vous remercie d'avoir pris le temps de lire (un peu long désolé), et, je vous demande de bien vouloir accepter de m'aider.
Toutes mes excuses par avance je n'ai pas ouvert ce sujet dans le bon forum ou section, ou que ce sujet n'ai rien à faire sur MyBB.fr.

Cordialement,


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - Pichorka - 26-08-2016

Re Bonsoir,

Alors, comme j'ai bien chercher et galérer je vous donne ma solution qui est opérationnelle sur mon forum MyBB Version 1.8.7 .

Je laisse le soins aux excellent codeurs de ce forum MyBB.fr exdiogene, saphir, julesn et d'autres, pour me corriger, me dire s'il ne faut pas le faire, supprimer ce sujet, ou faire un script ou plugin avec ce travail.

J'ai fait de mon mieux ! (si vous pensez plus sécurisé, aidez moi, par avance merci Smile

*************
*  SOLUTION  *
*************

Faire quelques changements dans les fichiers "global.php" et "global.lang.php".

global.lang.php (chemin root/inc/languages/english/) et (chemin root/inc/languages/french/) (pour le french faire la traduction ensuite directement dans le ACP administrations langues, éditer fichier et traduire)
chercher
PHP Code:
$l['pending_joinrequests'] = "Group Leader Notice: You have {1} pending group membership join requests."
remplacer
PHP Code:
$l['pending_joinrequests'] = "Group Leader Notice: You have {1} pending group membership join requests.";
$l['awaiting_moderation_post'] = "Moderator Notice: There is 1 awaiting moderation post.";
$l['awaiting_moderation_posts'] = "Moderator Notice: You have {1} awaiting moderation posts.";
$l['awaiting_moderation_thread'] = "Moderator Notice: There is 1 awaiting moderation thread.";
$l['awaiting_moderation_threads'] = "Moderator Notice: You have {1} awaiting moderation threads.";
$l['awaiting_moderation_attachment'] = "Moderator Notice: There is 1 awaiting moderation attachment.";
$l['awaiting_moderation_attachments'] = "Moderator Notice: You have {1} awaiting moderation attachments."

global.php (chemin root)
chercher
PHP Code:
eval('$unreadreports = "'.$templates->get('global_unreadreports').'";');
 
   }

remplacer
PHP Code:
eval('$unreadreports = "'.$templates->get('global_unreadreports').'";');
 
   }
}

$awaiting_moderation '';
// This user is a moderator, super moderator or administrator
if($mybb->usergroup['cancp'] == || $mybb->user['ismoderator'] && $mybb->usergroup['canmodcp'])
{
 
   // Unapproved threads
 
   $query $db->simple_select("threads""COUNT(tid) AS unapprovedthreads""visible=0 {$flist}");
 
   $unapproved_threads $db->fetch_field($query"unapprovedthreads");

 
   // 0 or more unapproved threads currently exist
 
   if($unapproved_threads 0)
 
   {
 
       if($unapproved_threads == 1)
 
       {
 
           $lang->awaiting_moderation $lang->awaiting_moderation_thread;
 
       }
 
       else
        
{
 
           $lang->awaiting_moderation $lang->sprintf($lang->awaiting_moderation_threads$unapproved_threads);
 
       }
 
       
        eval
('$awaiting_moderation = "'.$templates->get('global_awaiting_moderation_threads').'";');
 
   }
 
   $unreadreports $unreadreports $awaiting_moderation;
 
   $awaiting_moderation '';
 
   
    
// Unapproved posts
 
   $query $db->query("
        SELECT COUNT(pid) AS unapprovedposts
        FROM  "
.TABLE_PREFIX."posts p
        LEFT JOIN "
.TABLE_PREFIX."threads t ON (t.tid=p.tid)
        WHERE p.visible='0' 
{$tflist} AND t.firstpost != p.pid
    "
);
 
   $unapproved_posts $db->fetch_field($query"unapprovedposts");

 
   // 0 or more unapproved posts currently exist
 
   if($unapproved_posts 0)
 
   {
 
       if($unapproved_posts == 1)
 
       {
 
           $lang->awaiting_moderation $lang->awaiting_moderation_post;
 
       }
 
       else
        
{
 
           $lang->awaiting_moderation $lang->sprintf($lang->awaiting_moderation_posts$unapproved_posts);
 
       }
 
       
        eval
('$awaiting_moderation = "'.$templates->get('global_awaiting_moderation_posts').'";');
 
   }
 
   $unreadreports $unreadreports $awaiting_moderation;
 
   $awaiting_moderation '';
 
   
    
    
// Unapproved attachments
 
   $query $db->query("
        SELECT COUNT(aid) AS unapprovedattachments
        FROM  "
.TABLE_PREFIX."attachments a
        LEFT JOIN "
.TABLE_PREFIX."posts p ON (p.pid=a.pid)
        LEFT JOIN "
.TABLE_PREFIX."threads t ON (t.tid=p.tid)
        WHERE a.visible='0' 
{$tflist}
    "
);
 
   $unapproved_attachments $db->fetch_field($query"unapprovedattachments");

 
   // 0 or more unapproved attachments currently exist
 
   if($unapproved_attachments 0)
 
   {
 
       if($unapproved_attachments == 1)
 
       {
 
           $lang->awaiting_moderation $lang->awaiting_moderation_attachment;
 
       }
 
       else
        
{
 
           $lang->awaiting_moderation $lang->sprintf($lang->awaiting_moderation_attachments$unapproved_attachments);
 
       }
 
       
        eval
('$awaiting_moderation = "'.$templates->get('global_awaiting_moderation_attachments').'";');
 
   }
 
   $unreadreports $unreadreports $awaiting_moderation;


Dans le ACP administrations créer de nouveaux templates avec les noms indiqués. (dans  les "Templates globaux" !)

global_awaiting_moderation_attachments
Code:
<div class="red_alert"><a href="modcp.php?action=modqueue&type=attachments">{$lang->awaiting_moderation}</a></div>
<br />

global_awaiting_moderation_posts
Code:
<div class="red_alert"><a href="modcp.php?action=modqueue&type=posts">{$lang->awaiting_moderation}</a></div>
<br />

global_awaiting_moderation_threads
Code:
<div class="red_alert"><a href="modcp.php?action=modqueue&type=threads">{$lang->awaiting_moderation}</a></div>
<br />

EN IMAGE FRANCAIS ET ANGLAIS

[Image: 236271moderateurnoticeattentevalidationfrenchmybb.jpg]

[Image: 630278moderateurnoticeattentevalidationenglishmybb.jpg]

TESTER APPLIQUE ET FONCTIONNEL DANS MyBB 1.8.7


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération - exdiogene - 26-08-2016

Je n'ai pas vérifié le code, mais il est certain que j'aurais utilisé un plugin avec le hook 'global_intermediate' afin d'insérer les nouveaux templates à la suite de $unreadreports dans le template 'header'.

Par exemple il y aurait ceci dans 'header' :
Code:
<div id="content">
  {$pm_notice}
  {$bannedwarning}
  {$bbclosedwarning}
  {$unreadreports}
  {$awaiting_moderation}
  {$pending_joinrequests}
  <navigation>


Même si cela demande une duplication des conditionnels pour vérifier si le code doit être affiché.

Ceci afin d'éviter que le code soit écrasé par une future mise-à-jour... Wink


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération - Pichorka - 26-08-2016

Oui tout à fait d'accord avec toi, ça serai écrasé par une future mise-à-jour sans aucuns doutes ...
Il est meilleur de créer un plugin, ou, que les devs de MyBB.com l'intègrent dans la version MyBB 2.0 ou une mise-à-jour MyBB 1.8.8 ?

Il est vrai qu'il faudrait vérifier le code, mais comme je ne suis qualifié ... je ne sais pas le faire.

J'ai regardé la doc pour tenter de créer ce plugin, je n'en ai jamais fait, juste corrigé certains bugs, quand c'est permis par le créateur du plugins !

J'ai trouver ce dont tu me parle, mais je ne sais pas quoi en faire vraiment ... Wink

Doc > https://docs.mybb.com/1.8/development/plugins/hooks/

Quote:File: global.php
Hook Params Line
global_start 99
global_intermediate 474
global_end 1082

Je sais que ce n'est pas un forum d'apprentissage, mais si toutefois vous pourriez m'aider un peu a comprendre a quoi sert ce hook et comment faire le plugin, je souhaiterai le faire Smile


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération - exdiogene - 26-08-2016

Je suggère d'utiliser le plugin exemple "/inc/plugins/hello.php" pour avoir une vue d'ensemble.

Normalement il faudrait renommer le plugin et toutes les fonctions internes, mais je vais donner la façon la plus simple... Wink

Pour commencer il faudra remplacer :
PHP Code:
$plugins->add_hook("pre_output_page""hello_world");
$plugins->add_hook("postbit""hello_world_postbit"); 

par :
PHP Code:
$plugins->add_hook("global_intermediate""hello_world"); 

supprimer :
PHP Code:
function hello_world_postbit(&$post)
{
$post['message'] = "<strong>Hello world!</strong><br /><br />{$post['message']}";


Remplacer :
PHP Code:
function hello_world($page)
{
$page str_replace("<div id=\"content\">""<div id=\"content\"><p>Hello World!<br />This is a sample MyBB Plugin (which can be disabled!) that displays this message on all pages.</p>"$page);
return 
$page;


par :

PHP Code:
function hello_world(){
 global 
$mybb$db$lang$awaiting_moderation;

$awaiting_moderation '';
// This user is a moderator, super moderator or administrator
if($mybb->usergroup['cancp'] == || $mybb->user['ismoderator'] && $mybb->usergroup['canmodcp']){

 
   // Unapproved threads
 
   $query $db->simple_select("threads""COUNT(tid) AS unapprovedthreads""visible=0 {$flist}");
 
   $unapproved_threads $db->fetch_field($query"unapprovedthreads");

 
   // 0 or more unapproved threads currently exist
 
   if($unapproved_threads 0)
 
   {
 
       if($unapproved_threads == 1)
 
       {
 
           $lang->awaiting_moderation $lang->awaiting_moderation_thread;
 
       }
 
       else
        
{
 
           $lang->awaiting_moderation $lang->sprintf($lang->awaiting_moderation_threads$unapproved_threads);
 
       }
 
       
        eval
('$awaiting_moderation_1 = "'.$templates->get('global_awaiting_moderation_threads').'";');
 
   }
 
   $awaiting_moderation .= $awaiting_moderation_1;
 
   
    
// Unapproved posts
 
   $query $db->query("
        SELECT COUNT(pid) AS unapprovedposts
        FROM  "
.TABLE_PREFIX."posts p
        LEFT JOIN "
.TABLE_PREFIX."threads t ON (t.tid=p.tid)
        WHERE p.visible='0' 
{$tflist} AND t.firstpost != p.pid
    "
);
 
   $unapproved_posts $db->fetch_field($query"unapprovedposts");

 
   // 0 or more unapproved posts currently exist
 
   if($unapproved_posts 0)
 
   {
 
       if($unapproved_posts == 1)
 
       {
 
           $lang->awaiting_moderation $lang->awaiting_moderation_post;
 
       }
 
       else
        
{
 
           $lang->awaiting_moderation $lang->sprintf($lang->awaiting_moderation_posts$unapproved_posts);
 
       }
 
       
        eval
('$awaiting_moderation_2 = "'.$templates->get('global_awaiting_moderation_posts').'";');
 
   }
 
   $awaiting_moderation .= $awaiting_moderation_2;
   
    
    
// Unapproved attachments
 
   $query $db->query("
        SELECT COUNT(aid) AS unapprovedattachments
        FROM  "
.TABLE_PREFIX."attachments a
        LEFT JOIN "
.TABLE_PREFIX."posts p ON (p.pid=a.pid)
        LEFT JOIN "
.TABLE_PREFIX."threads t ON (t.tid=p.tid)
        WHERE a.visible='0' 
{$tflist}
    "
);
 
   $unapproved_attachments $db->fetch_field($query"unapprovedattachments");

 
   // 0 or more unapproved attachments currently exist
 
   if($unapproved_attachments 0)
 
   {
 
       if($unapproved_attachments == 1)
 
       {
 
           $lang->awaiting_moderation $lang->awaiting_moderation_attachment;
 
       }
 
       else
        
{
 
           $lang->awaiting_moderation $lang->sprintf($lang->awaiting_moderation_attachments$unapproved_attachments);
 
       }
 
       
        eval
('$awaiting_moderation_3 = "'.$templates->get('global_awaiting_moderation_attachments').'";');
    
$awaiting_moderation .= $awaiting_moderation_3;
 
   }


Il ne reste qu'à installer le plugin... Smile

P.S. Je n'ai rien vérifier, mais cela devrait bien fonctionner...


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - Pichorka - 26-08-2016

J'ai fait ce que tu m'a suggéré.

Je n'ai pas renommé le hello.php , juste appliqué ce que tu m'a écris.

Une fois je hello.php upload sur le ftp (j'ai pris soins de sauvegarder le hello.php original)

ERREUR

Fatal error: Call to a member function get() on a non-object in /home/mobilsa1/domains/mobilsam.com/public_html/inc/plugins/hello.php on line 123

Ligne 123
PHP Code:
       eval('$awaiting_moderation_1 = "'.$templates->get('global_awaiting_moderation_threads').'";'); 

Je n'ai pas renomé les "function" du hello.php et bien sur j'ai remis le global.php original non modifié, vu que tout est dans le plugin crée sur la base du hello.php

PHP Code:
function hello_world(){
 global 
$mybb$db$lang$awaiting_moderation

Dans l'attente, je remet le global.php modifié et le hello.php original


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - exdiogene - 26-08-2016

La raison est l'oubli d'avoir inséré $templates dans les variables globales :

global $mybb, $db, $lang, $templates, $awaiting_moderation;

Désolé!


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - Pichorka - 26-08-2016

C'est moi qui suis désolé, avec la fatigue je viens juste de m'en apercevoir ...

J'ai activé sans soucis le plugin modifié hello.php plus d'erreurs.

Mais la notice ne s'affiche pas :-/ ne ne comprend pas pourquoi ...


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - exdiogene - 26-08-2016

Est-ce que la variable $awaiting_moderation est installée sous $unreadreports dans le template "header"?

{$unreadreports}
{$awaiting_moderation}


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - Pichorka - 26-08-2016

Non et c'était bien ça ... Merci donc ce morceaux de plugin rempli la fonction Smile

Le plugin devrait pouvoir ajouter les lignes de langues dans le global.lang.php , le {$awaiting_moderation} dans le template du header et les templates mises manuellement dans les global templates, plutôt créer ces trois templates dans les template des themes Wink c'est vrai que c'est un plugin qui marche super permet les mise-à-jour sans touchder le global.php, mais tout le reste est à faire à la main, alors que le plugin pourrait le faire à l'activation et installation.

c'est vrai que c'est long à faire un plugin complet, les function sont également à changer, le nom du plugin.

Veut tu que je mette ici le code complet actuel modifié qui fonctionne de la modif avec le hello.php ?


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - exdiogene - 26-08-2016

Pour charger le fichier de langue il suffit d'ajouter au plugin :

$lang->load("awaiting_moderation", false, true);

Et avoir les textes dans awaiting_moderation.lang.php

Bien sur l'ajout de la variable dans le template 'header' peut être fait dans la phase d'installation du plugin, ainsi que la création des templates. Mais cela dépasse largement le support que nous donnons ici.

Idéalement il faudrait faire un tutoriel pour la création de ce plugin avec toutes les étapes et le nom correct pour le plugin et ses fonctions, dans la section des tutoriels. Wink


RE: Alerte notice pour les sujets, messages, piéces jointes, en attente de modération ? - Pichorka - 26-08-2016

Merci beaucoup exdiogene, il est vrai que j'ai largement abusé du support de MyBB.fr qui soit dit en passant il ne faut pas oublier de l'écrire, est excellent, sympathique, dévoué, généreux et présent pour tous.

Bravo et respect !

PS : Je progresse encore un peu avant de me lancer dans le "codage" plugin, parce que mon niveau est encore très très faible par rapport à vos connaissances en devs et code de tous languages ou presque, c'est certain ! ^^


 Translation utility provided by Regentronique