Membres connectés récemment
[PhpBB2] Problème encodage avec un script
2 participants
Page 1 sur 1 • Partagez
Bonjour à tous,
Depuis quelques années, notre forum utile l'astuce des outils de modération dynamique (c'est-à-dire des outils que les modérateurs peuvent utiliser directement via la liste des sujets). Le script est le suivant :
Le template Topics_list_body :
Et le template Topics_list_box :
L'outil fonctionne sauf la fonction d'édition du titre d'un sujet. En effet, lorsqu'un modérateur souhaite éditer un titre, le script ne fonctionne pas si :
1) Le script comporte un caractère spécial ;
2) Si le titre ne comporte pas de caractères spéciaux, le titre s'édite mais le premier message comporte des erreurs :
Quelqu'un aurait une idée ? :/
En vous remerciant par avance.
Bipo.
Depuis quelques années, notre forum utile l'astuce des outils de modération dynamique (c'est-à-dire des outils que les modérateurs peuvent utiliser directement via la liste des sujets). Le script est le suivant :
- Code:
/* adresse img modération deplacer */
var move_img= "https://i.servimg.com/u/f78/11/01/36/00/downlo10.png";
/* adresse img modération edit */
var edit_img= "https://i.servimg.com/u/f10/11/01/36/00/trash_10.png";
/* adresse img modération lock */
var lock_img = "https://i.servimg.com/u/f10/11/01/36/00/lock10.png";
/* adresse img modération unlock + inversion image lock et unlock */
var unlock_img = "https://i.servimg.com/u/f10/11/01/36/00/unlock11.png";
/* adresse img modération corbeille */
var trash_img = "https://i.servimg.com/u/f10/11/01/36/00/trash_10.png";
/* adresse img modération supprimer */
var delete_img = "https://2img.net/i/fa/empty.gif";
/* adresse cookie contenant le sid (ne pas éditer) */
var cookie = my_getcookie('fa_'+location.hostname.replace(/\./g,'_')+'_sid');
$(function() {
/* Si l'utilisateur a les droits de modération, on affiche les outils de modération */
if ($('#is_allowed:contains("modérer")').length > 0) {
var tid = $('#is_allowed a').attr('href').match(/[a-z0-9]*$/);
$('.mod_tools').each(function() {
/* Si le topic est verrouillé on affiche le bouton déverrouiller */
if($(this).children('img').attr('alt').slice(13,19) == "verrou") {
$(this).append('<img src="'+edit_img+'" class="mod_edit"><img src="'+move_img+'" class="mod_move"><img src="'+unlock_img+'" class="mod_unlock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
}
/* Sinon on affiche le bouton verrouiller */ else {
$(this).append('<img src="'+edit_img+'" class="mod_edit"><img src="'+move_img+'" class="mod_move"><img src="'+lock_img+'" class="mod_lock"/><img src="'+trash_img+'" class="mod_trash"/><img src="'+delete_img+'" class="mod_delete"/>');
}
}
);
}
/* Clic sur le bouton déverrouiller */
$('.mod_unlock').click(function() {
if (confirm("Êtes-vous sûr ?")) {
$.get('/modcp.forum?t=' + $(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/, '$1') + '&mode=unlock&tid=' + tid);
$(this).addClass('mod_lock').removeClass('mod_unlock');
$(this).attr('src',lock_img);
}
}
);
/* Clic sur le bouton verrouiller */
$('.mod_lock').click(function() {
if (confirm("Êtes-vous sûr ?")) {
$.get('/modcp.forum?t=' + $(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/, '$1') + '&mode=lock&tid=' + tid);
$(this).addClass('mod_unlock').removeClass('mod_lock');
$(this).attr('src',unlock_img);
}
}
);
/* Clic sur le bouton deplacer */
$('.mod_move').click(function() {
$(this).closest('tr').find('a.topictitle').after('<input type="submit" class="move_topic"/>');
$(this).closest('tr').find('a.topictitle').after($('select[name="selected_id"]').clone().removeAttr("onchange"));
}
);
$('.move_topic').live('click', function() {
var tempData = $(this);
$.post("/modcp?tid="+$("input[name=tid]:first").val(), {
tid:$("input[name=tid]:first").val(),new_forum:tempData.closest('tr').find('select[name="selected_id"] option:selected').val(),mode:"move",t:tempData.closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1'),confirm:"Oui"
}
,function(data) {
if(data.indexOf('Le(s) sujet(s) sélectionné(s) a/ont été déplacé(s).')!=-1) {
tempData.closest('tr').remove()
} else if(data.indexOf('Votre session a expiré.')!=-1) {
alert("Votre session a expiré.")
} else if(data.indexOf('Aucun sujet n\'a été déplacé.')!=-1) {
alert("Aucun sujet n'a été déplacé.")
} else if(data.indexOf('Le forum que vous avez sélectionné n\'existe pas.')!=-1) {
alert("Le forum que vous avez sélectionné n'existe pas.")
} else {
alert("erreur inconnue")
}
}
);
}
);
/* Clic sur le bouton corbeille */
$('.mod_trash').click(function(){if(confirm("Êtes-vous sûr ?")){$.get('/modcp.forum?t='+$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1')+'&mode=trash&tid='+tid);$(this).closest('tr').remove()}});$('.mod_delete').click(function(){if(confirm("Êtes-vous sûr ?")){var fid=location.href.replace(/^.*\/f([0-9]+)[p-].*$/,'$1');var topic_id=$(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1');$.post("/modcp?&mode=delete&t="+topic_id+"tid="+tid,{f:fid,confirm:"1"});$(this).closest('tr').remove()}});
/* Clic sur le bouton supprimer */
$('.mod_delete').click(function() {
if (confirm("Êtes-vous sûr ?")) {
// prendre le tid
var tid= $("input[name=tid]:first").val() || ($("a[href*='&tid=']:first").attr("href")||"").replace(/^.*&tid=([a-f0-9]*)?.*$/,"$1");
// prendre le fid
var fid= location.href.replace(/^.*\/f([0-9]+)[p-].*$/,'$1');
// prendre le topic_id
var topic_id= $(this).closest('tr').find('a.topictitle').attr('href').replace(/^\/t([1-9][0-9]*)[p-].*$/,'$1');
$.post("/modcp?tid="+tid, {
f:fid, t:topic_id, tid: tid, mode:"delete",confirm:"1"
}
);
$(this).closest('tr').remove();
}
}
);
/* Clic sur le bouton edit */
$('.mod_edit').click(function() {
$(this).closest('tr').find('a.topictitle').hide().after('<input type="text" id="new_title" value="'+$(this).closest('tr').find('a.topictitle').text()+'"/><input type="submit" class="edit_title"/>');
}
);
$('.edit_title').live('click', function() {
var temp = $(this);
/* saisie d'une page du sujet */
$.get($(this).closest('tr').find('a.topictitle').attr('href'), function(c) {
/* prendre identifiant du premier message */
var first_post_id = $(".post a[name]", c).first().attr("name");
/* si pas on fait rien */
if(!first_post_id) {
return
}
/* saisie du formulaire d'édition du message */
$.get("/post?p=" + first_post_id + "&mode=editpost", function(c) {
/* envoi de ce formulaire en ayant changé le titre */
/* récupération du formulaire */
var fields= $('form[name="post"]', c).serializeArray();
for(i=0;i<fields.length;i++)
{
/* changement du titre */
if(fields[i].name=="subject") fields[i].value= temp.parent().find('#new_title').val();
fields[i]=escape(fields[i].name)+'='+escape(fields[i].value)
}
/* envoi formulaire d'édition */
$.post("/post", fields.join('&')+"&post=1",function(c){
/* test pour voir si ça s'est bien passé */
if(c.indexOf('Message enregistré avec succès')!=-1) {
temp.closest('tr').find('a.topictitle').show().text($('#new_title').val());
temp.parent().find('#new_title').hide();
temp.parent().find('.edit_title').hide();
}
}
)
}
)
}
);
}
);
}
);
Le template Topics_list_body :
- Code:
<!-- BEGIN topics_list_box --><!-- BEGIN row --><!-- BEGIN header_table --><!-- BEGIN multi_selection -->
<script type="text/javascript">
function check_uncheck_main_{topics_list_box.row.header_table.BOX_ID}() {
var all_checked = true;
for (i = 0; (i < document.{topics_list_box.FORMNAME}.elements.length) && all_checked; i++) {
if (document.{topics_list_box.FORMNAME}.elements[i].name == '{topics_list_box.FIELDNAME}[]{topics_list_box.row.header_table.BOX_ID}') {
all_checked = document.{topics_list_box.FORMNAME}.elements[i].checked;
}
}
document.{topics_list_box.FORMNAME}.all_mark_{topics_list_box.row.header_table.BOX_ID}.checked = all_checked;
}
function check_uncheck_all_{topics_list_box.row.header_table.BOX_ID}() {
for (i = 0; i < document.{topics_list_box.FORMNAME}.length; i++) {
if (document.{topics_list_box.FORMNAME}.elements[i].name == '{topics_list_box.FIELDNAME}[]{topics_list_box.row.header_table.BOX_ID}') {
document.{topics_list_box.FORMNAME}.elements[i].checked = document.{topics_list_box.FORMNAME}.all_mark_{topics_list_box.row.header_table.BOX_ID}.checked;
}
}
}
</script>
<!-- END multi_selection -->
<table class="forumline" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="{topics_list_box.row.header_table.COLSPAN}" align="center" nowrap="nowrap"> {topics_list_box.row.L_TITLE} </th>
<th align="center" nowrap="nowrap" width="80"> {topics_list_box.row.L_REPLIES} </th>
<th align="center" nowrap="nowrap" width="50"> {topics_list_box.row.L_VIEWS} </th>
<th align="center" nowrap="nowrap" width="150"> {topics_list_box.row.L_LASTPOST} </th>
<!-- BEGIN multi_selection -->
<th align="center" nowrap="nowrap" width="20"><input onclick="check_uncheck_all_{topics_list_box.row.header_table.BOX_ID}();" type="checkbox" name="all_mark_{topics_list_box.row.header_table.BOX_ID}" value="0" /></th>
<!-- END multi_selection -->
</tr>
<!-- BEGIN pagination -->
<tr>
<td class="row1" colspan="7" align="right"><span class="gensmall">{PAGINATION}</span></td>
</tr>
<!-- END pagination -->
<!-- END header_table --><!-- BEGIN header_row -->
<tr>
<td class="row3" colspan="{topics_list_box.row.COLSPAN}"><span class="gensmall"> <b>{topics_list_box.row.L_TITLE}</b></span></td>
</tr>
<!-- END header_row -->
<!-- BEGIN topic -->
{topics_list_box.row.END_TABLE_STICKY}
<tr>
<!-- BEGIN single_selection -->
<td class="{topics_list_box.row.ROW_CLASS} f_icon" align="center" valign="middle" width="20"><input type="radio" name="{topics_list_box.FIELDNAME}" value="{topics_list_box.row.FID}" {topics_list_box.row.L_SELECT} /></td>
<!-- END single_selection -->
<td class="{topics_list_box.row.ROW_FOLDER_CLASS}" align="center" valign="middle" width="20"><img title="{topics_list_box.row.L_TOPIC_FOLDER_ALT}" src="{topics_list_box.row.TOPIC_FOLDER_IMG}" alt="{topics_list_box.row.L_TOPIC_FOLDER_ALT}" /></td>
<!-- BEGIN icon -->
<td class="{topics_list_box.row.ROW_CLASS}" align="center" valign="middle" width="20">{topics_list_box.row.ICON}</td>
<!-- END icon -->
<td class="{topics_list_box.row.ROW_CLASS}" onmouseover='this.className="row2"' onmouseout='this.className="{topics_list_box.row.ROW_CLASS}"' width="100%">
<div class="topictitle">
{topics_list_box.row.NEWEST_POST_IMG}{topics_list_box.row.PARTICIPATE_POST_IMG}{topics_list_box.row.TOPIC_TYPE}
<h2 class="topic-title">
<a class="topictitle" href="{topics_list_box.row.U_VIEW_TOPIC}">{topics_list_box.row.TOPIC_TITLE}</a>
</h2>
</div>
<div class="mod_tools">
<img src="{topics_list_box.row.TOPIC_FOLDER_IMG}" alt="{topics_list_box.row.L_TOPIC_FOLDER_ALT}" style="display:none;" />
</div>
<!-- BEGIN switch_description -->
<span class="topicdescr">
<br />
{topics_list_box.row.topic.switch_description.TOPIC_DESCRIPTION}
</span>
<!-- END switch_description -->
<span class="genmed">
<br />
par : <span class="name"><strong>{topics_list_box.row.TOPIC_AUTHOR}</strong></span>, {topics_list_box.row.FIRST_POST_TIME}
</span>
<span class="gensmall">{topics_list_box.row.TOPIC_ANNOUNCES_DATES}{topics_list_box.row.TOPIC_CALENDAR_DATES}</span>
<span class="gensmall">{topics_list_box.row.GOTO_PAGE}<!-- BEGIN nav_tree -->{topics_list_box.row.TOPIC_NAV_TREE} <!-- END nav_tree --></span>
</td>
<td class="row2" align="center" valign="middle"><span class="postdetails">{topics_list_box.row.REPLIES}</span></td>
<td class="row2" align="center" valign="middle"><span class="postdetails">{topics_list_box.row.VIEWS}</span></td>
<td class="row3Right" onmouseover='this.className="row1"' onmouseout='this.className="row3Right"' align="center" valign="middle" nowrap="nowrap"><span class="postdetails">{topics_list_box.row.LAST_POST_TIME}<br />{topics_list_box.row.LAST_POST_AUTHOR} {topics_list_box.row.LAST_POST_IMG}</span></td>
<!-- BEGIN multi_selection -->
<td class="row2" align="center" valign="middle"><span class="postdetails"><input onclick="javascript:check_uncheck_main_{topics_list_box.row.BOX_ID}();" type="checkbox" name="{topics_list_box.FIELDNAME}[]{topics_list_box.row.BOX_ID}" value="{topics_list_box.row.FID}" {topics_list_box.row.L_SELECT} /></span></td>
<!-- END multi_selection -->
</tr>
<!-- END topic --><!-- BEGIN no_topics -->
<tr>
<td class="row1" colspan="{topics_list_box.row.COLSPAN}" align="center" valign="middle" height="30"><span class="gen">{topics_list_box.row.L_NO_TOPICS}</span></td>
</tr>
<!-- END no_topics --><!-- BEGIN bottom -->
<tr>
<td class="catBottom" colspan="{topics_list_box.row.COLSPAN}" valign="middle">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> <span class="gensmall">{PAGINATION}</span></td>
<td align="right"><a href="#top">{L_BACK_TO_TOP}</a> </td>
</tr>
</table>
</td>
</tr>
<!-- END bottom --><!-- BEGIN footer_table -->
</table><!-- END footer_table --><!-- BEGIN spacer --><br class="gensmall" /><!-- END spacer --><!-- END row --><!-- END topics_list_box -->
Et le template Topics_list_box :
- Code:
<!-- BEGIN topics_list_box --><!-- BEGIN row --><!-- BEGIN header_table --><!-- BEGIN multi_selection -->
<script type="text/javascript">
function check_uncheck_main_{topics_list_box.row.header_table.BOX_ID}() {
var all_checked = true;
for (i = 0; (i < document.{topics_list_box.FORMNAME}.elements.length) && all_checked; i++) {
if (document.{topics_list_box.FORMNAME}.elements[i].name == '{topics_list_box.FIELDNAME}[]{topics_list_box.row.header_table.BOX_ID}') {
all_checked = document.{topics_list_box.FORMNAME}.elements[i].checked;
}
}
document.{topics_list_box.FORMNAME}.all_mark_{topics_list_box.row.header_table.BOX_ID}.checked = all_checked;
}
function check_uncheck_all_{topics_list_box.row.header_table.BOX_ID}() {
for (i = 0; i < document.{topics_list_box.FORMNAME}.length; i++) {
if (document.{topics_list_box.FORMNAME}.elements[i].name == '{topics_list_box.FIELDNAME}[]{topics_list_box.row.header_table.BOX_ID}') {
document.{topics_list_box.FORMNAME}.elements[i].checked = document.{topics_list_box.FORMNAME}.all_mark_{topics_list_box.row.header_table.BOX_ID}.checked;
}
}
}
</script>
<!-- END multi_selection -->
<table class="forumline" width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<th colspan="{topics_list_box.row.header_table.COLSPAN}" align="center" nowrap="nowrap"> {topics_list_box.row.L_TITLE} </th>
<th align="center" nowrap="nowrap" width="80"> {topics_list_box.row.L_REPLIES} </th>
<th align="center" nowrap="nowrap" width="50"> {topics_list_box.row.L_VIEWS} </th>
<th align="center" nowrap="nowrap" width="150"> {topics_list_box.row.L_LASTPOST} </th>
<!-- BEGIN multi_selection -->
<th align="center" nowrap="nowrap" width="20"><input onclick="check_uncheck_all_{topics_list_box.row.header_table.BOX_ID}();" type="checkbox" name="all_mark_{topics_list_box.row.header_table.BOX_ID}" value="0" /></th>
<!-- END multi_selection -->
</tr>
<!-- BEGIN pagination -->
<tr>
<td class="row1" colspan="7" align="right"><span class="gensmall">{PAGINATION}</span></td>
</tr>
<!-- END pagination -->
<!-- END header_table --><!-- BEGIN header_row -->
<tr>
<td class="row3" colspan="{topics_list_box.row.COLSPAN}"><span class="gensmall"> <b>{topics_list_box.row.L_TITLE}</b></span></td>
</tr>
<!-- END header_row -->
<!-- BEGIN topic -->
{topics_list_box.row.END_TABLE_STICKY}
<tr>
<!-- BEGIN single_selection -->
<td class="{topics_list_box.row.ROW_CLASS} f_icon" align="center" valign="middle" width="20"><input type="radio" name="{topics_list_box.FIELDNAME}" value="{topics_list_box.row.FID}" {topics_list_box.row.L_SELECT} /></td>
<!-- END single_selection -->
<td class="{topics_list_box.row.ROW_FOLDER_CLASS}" align="center" valign="middle" width="20"><img title="{topics_list_box.row.L_TOPIC_FOLDER_ALT}" src="{topics_list_box.row.TOPIC_FOLDER_IMG}" alt="{topics_list_box.row.L_TOPIC_FOLDER_ALT}" /></td>
<!-- BEGIN icon -->
<td class="{topics_list_box.row.ROW_CLASS}" align="center" valign="middle" width="20">{topics_list_box.row.ICON}</td>
<!-- END icon -->
<td class="{topics_list_box.row.ROW_CLASS}" onmouseover='this.className="row2"' onmouseout='this.className="{topics_list_box.row.ROW_CLASS}"' width="100%">
<div class="topictitle">
{topics_list_box.row.NEWEST_POST_IMG}{topics_list_box.row.PARTICIPATE_POST_IMG}{topics_list_box.row.TOPIC_TYPE}
<h2 class="topic-title">
<a class="topictitle" href="{topics_list_box.row.U_VIEW_TOPIC}">{topics_list_box.row.TOPIC_TITLE}</a>
</h2>
</div>
<div class="mod_tools">
<img src="{topics_list_box.row.TOPIC_FOLDER_IMG}" alt="{topics_list_box.row.L_TOPIC_FOLDER_ALT}" style="display:none;" />
</div>
<!-- BEGIN switch_description -->
<span class="topicdescr">
<br />
{topics_list_box.row.topic.switch_description.TOPIC_DESCRIPTION}
</span>
<!-- END switch_description -->
<span class="genmed">
<br />
par : <span class="name"><strong>{topics_list_box.row.TOPIC_AUTHOR}</strong></span>, {topics_list_box.row.FIRST_POST_TIME}
</span>
<span class="gensmall">{topics_list_box.row.TOPIC_ANNOUNCES_DATES}{topics_list_box.row.TOPIC_CALENDAR_DATES}</span>
<span class="gensmall">{topics_list_box.row.GOTO_PAGE}<!-- BEGIN nav_tree -->{topics_list_box.row.TOPIC_NAV_TREE} <!-- END nav_tree --></span>
</td>
<td class="row2" align="center" valign="middle"><span class="postdetails">{topics_list_box.row.REPLIES}</span></td>
<td class="row2" align="center" valign="middle"><span class="postdetails">{topics_list_box.row.VIEWS}</span></td>
<td class="row3Right" onmouseover='this.className="row1"' onmouseout='this.className="row3Right"' align="center" valign="middle" nowrap="nowrap"><span class="postdetails">{topics_list_box.row.LAST_POST_TIME}<br />{topics_list_box.row.LAST_POST_AUTHOR} {topics_list_box.row.LAST_POST_IMG}</span></td>
<!-- BEGIN multi_selection -->
<td class="row2" align="center" valign="middle"><span class="postdetails"><input onclick="javascript:check_uncheck_main_{topics_list_box.row.BOX_ID}();" type="checkbox" name="{topics_list_box.FIELDNAME}[]{topics_list_box.row.BOX_ID}" value="{topics_list_box.row.FID}" {topics_list_box.row.L_SELECT} /></span></td>
<!-- END multi_selection -->
</tr>
<!-- END topic --><!-- BEGIN no_topics -->
<tr>
<td class="row1" colspan="{topics_list_box.row.COLSPAN}" align="center" valign="middle" height="30"><span class="gen">{topics_list_box.row.L_NO_TOPICS}</span></td>
</tr>
<!-- END no_topics --><!-- BEGIN bottom -->
<tr>
<td class="catBottom" colspan="{topics_list_box.row.COLSPAN}" valign="middle">
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td> <span class="gensmall">{PAGINATION}</span></td>
<td align="right"><a href="#top">{L_BACK_TO_TOP}</a> </td>
</tr>
</table>
</td>
</tr>
<!-- END bottom --><!-- BEGIN footer_table -->
</table><!-- END footer_table --><!-- BEGIN spacer --><br class="gensmall" /><!-- END spacer --><!-- END row --><!-- END topics_list_box -->
L'outil fonctionne sauf la fonction d'édition du titre d'un sujet. En effet, lorsqu'un modérateur souhaite éditer un titre, le script ne fonctionne pas si :
1) Le script comporte un caractère spécial ;
2) Si le titre ne comporte pas de caractères spéciaux, le titre s'édite mais le premier message comporte des erreurs :
Quelqu'un aurait une idée ? :/
En vous remerciant par avance.
Bipo.
Hello Bipo,
je n'arrive à rien avec ce script, par contre celui-ci est stable à priori sur l'édition quelque soit les caractères du sujet( testé sur mon fofo Phpbb2) :
https://www.milouze14.com/t28460-toutes-versions-afficher-les-outils-de-moderation-via-la-liste-des-sujets#547099
L'avantage de ce script Anglais et traduit pas mes soins et qu'il n'y a aucune intervention dans le template.
je n'arrive à rien avec ce script, par contre celui-ci est stable à priori sur l'édition quelque soit les caractères du sujet( testé sur mon fofo Phpbb2) :
https://www.milouze14.com/t28460-toutes-versions-afficher-les-outils-de-moderation-via-la-liste-des-sujets#547099
L'avantage de ce script Anglais et traduit pas mes soins et qu'il n'y a aucune intervention dans le template.
Sujets similaires
Créer un compte ou se connecter pour répondre
Vous devez être membre pour répondre.
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum