Fork me on GitHub




(1) 2 3 »


#24 Re: News 1.4 et vrais modérateurs
Posté le : 04/12/2006 12:09
Citation :

Pourrais-tu proposer ce hack sur le forum avec un zip des fichiers modifés en y incluant la structure des dossiers ?


Et hop:
http://imputrescibles.googlepages.com/Hack_news1.50.zip
#23 Re: News 1.4 et vrais modérateurs
alain01 Posté le : 04/12/2006 10:44
Merci Bob.

Pourrais-tu proposer ce hack sur le forum avec un zip des fichiers modifés en y incluant la structure des dossiers ?

Merci à toi en tout cas pour ces précisions.
#22 Re: News 1.4 et vrais modérateurs
Posté le : 04/12/2006 10:34
OK, en fait, le problème vient juste du fait que certaines fonctions ont changé de nom.
Je met en gras les modifs à effectuer pour que tout cela marche avec la version 1.50.
(Tant qu'à faire, je reprend toutes les modifs ici pour ceux qui ne les avaient pas appliquées et qui voudraient le faire directement pour la 1.50.)
Citation :


/modules/news/blocks/news_moderate.php

Ligne 38: Modification pour que le bloc des articles en attente de modération n'affiche que ceux que l'utilisateur
connecté peut approuvé
Remplacement de la igne
$storyarray 
NewsStory :: getAllSubmitted(0truegetmoduleoption('restrictindex'));
Par la ligne
$storyarray 
NewsStory :: getAllSubmitted(0truetrue);


Ligne 59 et 61: Modification des liens pour ne plus les faire ouvrir dans une nouvelle fenêtre (suppression du target=_blank)

Ligne 67: Modification du lien permettant d'effacer un article, afin que seul les groupes ayant les droits d'approbation sur un sujet puisse faire cette opération sans pour autant qu'ils aient les droits d'administration
Remplacement de la ligne 
$story
['action'] = "<a href='" XOOPS_URL "/modules/news/admin/index.php?op=delete&storyid=" $newstory->storyid() . "'>" _MB_DELETE "</a>";
Par la ligne
$story
['action'] = "<a href='" XOOPS_URL "/modules/news/submit.php?op=delete&storyid=" $newstory->storyid() . "'>" _MB_DELETE "</a>";



Fichier /modules/news/submit.php

Ligne 85 à 88 Mise en commentaire, du test d'admin dans le cas où les utilisateurs ne peuvent pas éditer leurs articles

Ligne 149 : Modification, pour autoriser la modification d'un post qu'au groupe d'utilisateur ayant les droits
d'approbation sur le sujet de l'article
Remplacement de la igne
if (!$gperm_handler->checkRight("news_view"$story->topicid(), $groups$module_id)) {
Par la ligne
if (!$gperm_handler->checkRight("news_approve"$story->topicid(), $groups$module_id)) {


Dans le swith ($op) (fin du script) ajout d'une réponse à l'opération delete qui demande la confirmation puis effectue l'effacement.
case 'delete':
        if (!
$approveprivilege) {
            
redirect_header(XOOPS_URL.'/modules/news/index.php'3_NOPERM);
            exit();
            break;
        }
        
$story = new NewsStory($storyid);
        if (!
$gperm_handler->checkRight("news_approve"$story->topicid(), $groups$module_id)) {
            
redirect_header(XOOPS_URL.'/modules/news/index.php'3_NOPERM);
            exit();
            break;
        }
        if (!empty(
$_POST['ok'])) {
            if (empty(
$storyid)) {
                
redirect_header(XOOPS_URL.'/modules/news/index.php',3_AM_EMPTYNODELETE );
                exit();
            }
            
$story->delete();
            
$sfiles = new sFiles();
            
$filesarr=Array();
            
$filesarr=$sfiles->getAllbyStory($storyid);
            if(
count($filesarr)>0) {
               foreach (
$filesarr as $onefile) {
                  
$onefile->delete();
               }
            }
            
xoops_comment_delete($xoopsModule->getVar('mid'),$storyid);
            
xoops_notification_deletebyitem($xoopsModule->getVar('mid'), 'story'$storyid);
            [
b]news_[/b]updateCache();
            
redirect_header(XOOPS_URL.'/modules/news/index.php'1_AM_DBUPDATED );
            exit();
        } else {
            
//xoops_cp_header();
            
echo "<h4>" _AM_CONFIG "</h4>";
            
xoops_confirm(array('op' => 'delete''storyid' => $storyid'ok' => 1), XOOPS_URL.'/modules/news/submit.php'_AM_RUSUREDEL .'<br />' $story->title());
        }
        break;


Le code de confirmation, envoyant des POST et non des GET, on ajoute juste avant le switch($op) le elseif suivant (le précedent ne faisait
que des test sur le $_GET (Uniquement pour répondre à la confirmation de suppression)
elseif ( isset($_POST['op']) && isset($_POST['storyid'])) {
   if (
$approveprivilege && $_POST['op'] == 'delete') {
      
$op 'delete';
      
$storyid intval($_POST['storyid']);
   }
}



Fichier \modules\news\class\class.newsstory.php

Modification de la méthode AdminLink pour adapter le lien delete dans le cas où l'on n'est pas admin
Dans ce cas pour faire un delete on utilise le script submit.php modifié précédement
function adminlink()
   {
      if([
b]news_[/b]is_admin_group())
         
$ret "&nbsp;[ <a href='".XOOPS_URL."/modules/news/submit.php?op=edit&storyid=".$this->storyid()."'>"._EDIT."</a> | <a href='".XOOPS_URL."/modules/news/admin/index.php?op=delete&storyid=".$this->storyid()."'>"._DELETE."</a> ]&nbsp;";
      else
         
$ret "&nbsp;[ <a href='".XOOPS_URL."/modules/news/submit.php?op=edit&storyid=".$this->storyid()."'>"._EDIT."</a> | <a href='".XOOPS_URL."/modules/news/submit.php?op=delete&storyid=".$this->storyid()."'>"._DELETE."</a> ]&nbsp;";
      return 
$ret;
   }


Pour afficher les lien editer/effacer sur la page d'index listant les articles pour lequel l'utilisateur à le droit d'approbation
Localiser les lignes
       
if ($approveprivilege) {
           
$story['adminlink'] = $this->adminlink();
       }

Et y Insérer
      
if ($approveprivilege==0) {
          global 
$xoopsModule,$xoopsConfig;
          
$gperm_handler =& xoops_gethandler('groupperm');
          if (
is_object($xoopsUser)) {
             
$groups $xoopsUser->getGroups();
          } else {
             
$groups XOOPS_GROUP_ANONYMOUS;
          }
          if (
$gperm_handler->checkRight("news_approve"$this->topicid(), $groups$xoopsModule->getVar('mid'))) {
                
$approveprivilege=1;
          }
       }



Fichier /modules/news/article.php

Pour afficher les liens éditer/effacer sur la page de consultation d'un article
Remplacer les lignes (a partir de la 243)
if(
is_object($xoopsUser)) {
   if( 
$xoopsUser->isAdmin($xoopsModule->getVar('mid')) || ([b]news_[/b]getmoduleoption('authoredit') && $article->uid() == $xoopsUser->getVar('uid')) ) {
       
$isadmin true;
       
$story['adminlink'] = $article->adminlink();
    }
}
Par les lignes
if(is_object($xoopsUser)) {
   if( 
$xoopsUser->isAdmin($xoopsModule->getVar('mid')) || (getmoduleoption('authoredit') && $article->uid() == $xoopsUser->getVar('uid')) ) {
       
$isadmin true;
       
$story['adminlink'] = $article->adminlink();
    }
    else {
       if (
$gperm_handler->checkRight("news_approve"$article->topicid(), $groups$xoopsModule->getVar('mid'))) {
           
$story['adminlink'] = $article->adminlink();
       }
    }
}



Voilà, normalement, maintenant ça remarche.
#21 Re: News 1.4 et vrais modérateurs
Posté le : 04/12/2006 10:14
Il semblerait que ce Hack, qui marchait très bien avec la version précédente ne fonctionne plus avec la 1.50.
En effet, j'obtiens ça:
Fatal error: Call to undefined function: getmoduleoption() in /home/www/region/midi-pyrenees/portail/modules/news/article.php on line 287

#20 Re: News 1.4 et vrais modérateurs
Nono Posté le : 24/10/2005 00:59
Pour moi également c'est un véritable probleme.
Le soucis c'est que dans le module droits d'approbation $ droit d'administration.
Je suis alors parti sur la regle :
droit d'approbation = droit d'édition ou d'effacement.
Aprés plusieurs modifs, je suis arrivé à mes fin, chaque groupe peut approuver, editer,effacer les articles des catégories dont ils ont les droits d'approbation sans passer par l'administrtion.
Dans mon cas j'utilise le groupe des articles en attentes en haute de toutes les pages pour informer chaque groupe d'utilisateurs sur les articles qu'il doit approuver.

Voici la liste des modifications effectuées (attention c'est parti)

/modules/news/blocks/news_moderate.php

Ligne 38: Modification pour que le bloc des articles en attente de modération n'affiche que ceux que l'utilisateur
connecté peut approuvé
Remplacement de la igne
$storyarray 
NewsStory :: getAllSubmitted(0truegetmoduleoption('restrictindex'));
Par la ligne
$storyarray 
NewsStory :: getAllSubmitted(0truetrue);


Ligne 59 et 61: Modification des liens pour ne plus les faire ouvrir dans une nouvelle fenêtre (suppression du target=_blank)

Ligne 67: Modification du lien permettant d'effacer un article, afin que seul les groupes ayant les droits d'approbation sur un sujet puisse faire cette opération sans pour autant qu'ils aient les droits d'administration
Remplacement de la ligne 
$story
['action'] = "<a href='" XOOPS_URL "/modules/news/admin/index.php?op=delete&storyid=" $newstory->storyid() . "'>" _MB_DELETE "</a>";
Par la ligne
$story
['action'] = "<a href='" XOOPS_URL "/modules/news/submit.php?op=delete&storyid=" $newstory->storyid() . "'>" _MB_DELETE "</a>";



Fichier /modules/news/submit.php

Ligne 85 à 88 Mise en commentaire, du test d'admin dans le cas où les utilisateurs ne peuvent pas éditer leurs articles

Ligne 149 : Modification, pour autoriser la modification d'un post qu'au groupe d'utilisateur ayant les droits
d'approbation sur le sujet de l'article
Remplacement de la igne
if (!$gperm_handler->checkRight("news_view"$story->topicid(), $groups$module_id)) {
Par la ligne
if (!$gperm_handler->checkRight("news_approve"$story->topicid(), $groups$module_id)) {


Dans le swith ($op) (fin du script) ajout d'une réponse à l'opération delete qui demande la confirmation puis effectue l'effacement.
case 'delete':
        if (!
$approveprivilege) {
            
redirect_header(XOOPS_URL.'/modules/news/index.php'3_NOPERM);
            exit();
            break;
        }
        
$story = new NewsStory($storyid);
        if (!
$gperm_handler->checkRight("news_approve"$story->topicid(), $groups$module_id)) {
            
redirect_header(XOOPS_URL.'/modules/news/index.php'3_NOPERM);
            exit();
            break;
        }
        if (!empty(
$_POST['ok'])) {
            if (empty(
$storyid)) {
                
redirect_header(XOOPS_URL.'/modules/news/index.php',3_AM_EMPTYNODELETE );
                exit();
            }
            
$story->delete();
            
$sfiles = new sFiles();
            
$filesarr=Array();
            
$filesarr=$sfiles->getAllbyStory($storyid);
            if(
count($filesarr)>0) {
               foreach (
$filesarr as $onefile) {
                  
$onefile->delete();
               }
            }
            
xoops_comment_delete($xoopsModule->getVar('mid'),$storyid);
            
xoops_notification_deletebyitem($xoopsModule->getVar('mid'), 'story'$storyid);
            
updateCache();
            
redirect_header(XOOPS_URL.'/modules/news/index.php'1_AM_DBUPDATED );
            exit();
        } else {
            
//xoops_cp_header();
            
echo "<h4>" _AM_CONFIG "</h4>";
            
xoops_confirm(array('op' => 'delete''storyid' => $storyid'ok' => 1), XOOPS_URL.'/modules/news/submit.php'_AM_RUSUREDEL .'<br />' $story->title());
        }
        break;


Le code de confirmation, envoyant des POST et non des GET, on ajoute juste avant le switch($op) le elseif suivant (le précedent ne faisait
que des test sur le $_GET (Uniquement pour répondre à la confirmation de suppression)
elseif ( isset($_POST['op']) && isset($_POST['storyid'])) {
   if (
$approveprivilege && $_POST['op'] == 'delete') {
      
$op 'delete';
      
$storyid intval($_POST['storyid']);
   }
}



Fichier \modules\news\class\class.newsstory.php

Modification de la méthode AdminLink pour adapter le lien delete dans le cas où l'on n'est pas admin
Dans ce cas pour faire un delete on utilise le script submit.php modifié précédement
function adminlink()
   {
      if(
is_admin_group())
         
$ret "&nbsp;[ <a href='".XOOPS_URL."/modules/news/submit.php?op=edit&storyid=".$this->storyid()."'>"._EDIT."</a> | <a href='".XOOPS_URL."/modules/news/admin/index.php?op=delete&storyid=".$this->storyid()."'>"._DELETE."</a> ]&nbsp;";
      else
         
$ret "&nbsp;[ <a href='".XOOPS_URL."/modules/news/submit.php?op=edit&storyid=".$this->storyid()."'>"._EDIT."</a> | <a href='".XOOPS_URL."/modules/news/submit.php?op=delete&storyid=".$this->storyid()."'>"._DELETE."</a> ]&nbsp;";
      return 
$ret;
   }


Pour afficher les lien editer/effacer sur la page d'index listant les articles pour lequel l'utilisateur à le droit d'approbation
Localiser les lignes
       
if ($approveprivilege) {
           
$story['adminlink'] = $this->adminlink();
       }

Et y Insérer
      
if ($approveprivilege==0) {
          global 
$xoopsModule,$xoopsConfig;
          
$gperm_handler =& xoops_gethandler('groupperm');
          if (
is_object($xoopsUser)) {
             
$groups $xoopsUser->getGroups();
          } else {
             
$groups XOOPS_GROUP_ANONYMOUS;
          }
          if (
$gperm_handler->checkRight("news_approve"$this->topicid(), $groups$xoopsModule->getVar('mid'))) {
                
$approveprivilege=1;
          }
       }



Fichier /modules/news/article.php

Pour afficher les liens éditer/effacer sur la page de consultation d'un article
Remplacer les lignes (a partir de la 243)
if(
is_object($xoopsUser)) {
   if( 
$xoopsUser->isAdmin($xoopsModule->getVar('mid')) || (getmoduleoption('authoredit') && $article->uid() == $xoopsUser->getVar('uid')) ) {
       
$isadmin true;
       
$story['adminlink'] = $article->adminlink();
    }
}
Par les lignes
if(is_object($xoopsUser)) {
   if( 
$xoopsUser->isAdmin($xoopsModule->getVar('mid')) || (getmoduleoption('authoredit') && $article->uid() == $xoopsUser->getVar('uid')) ) {
       
$isadmin true;
       
$story['adminlink'] = $article->adminlink();
    }
    else {
       if (
$gperm_handler->checkRight("news_approve"$article->topicid(), $groups$xoopsModule->getVar('mid'))) {
           
$story['adminlink'] = $article->adminlink();
       }
    }
}


Voilà, ouf, c'est tout...
J'espère que cela vous conviendra autant qu'a moi
#19 Re: News 1.4 et vrais modérateurs
baronxoops Posté le : 22/10/2005 21:00
Salut,

en ce qui me concerne hervé, je trouve cette fonctionnalité essentielle. Surtout dans le domaine associatif ...
Allez laisse toi aller
#18 Re: News 1.4 et vrais modérateurs
Christian Posté le : 30/09/2005 21:35
Citation :
ca mérite réflexion.
Pour ceux qui auraient pas compris, Alain si j'ai pas ma dose je ne sais pas si je pourrai réfléchir assez longtemps pour aboutir à la solution que tu souhaites :

Open in new window
#17 Re: News 1.4 et vrais modérateurs
Posté le : 30/09/2005 19:45
ca mérite réflexion.
#16 Re: News 1.4 et vrais modérateurs
alain01 Posté le : 30/09/2005 19:34
Sur un aspect pratique oui, par contre les modérateurs ne sont pas tous mordus d'informatique et ne sont pas à l'abri de fausses manips...

Je souhaite juste qu'ils valident / modifient / suppriment les articles en attente.
#15 Re: News 1.4 et vrais modérateurs
Posté le : 30/09/2005 19:29
Rien ne me le confirme effectivement.
Par contre être modérateur est avant tout une question de confiance

 Haut   Précédent   Suivant
(1) 2 3 »



Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

Propulsé avec XOOPS | Graphisme adapté par Tatane, Grosdunord, Montuy337513

38 Personne(s) en ligne (31 Personne(s) connectée(s) sur Forum) | Utilisateur(s): 0 | Invité(s): 38 | Plus ...