Astuces Forumactif
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Membres connectés récemment
Voir tous les membres

[PHPBB3] Script d'auto-suggestion pour le système de tags


2 participants

Voir le sujet précédent Voir le sujet suivant Aller en bas

heartless
heartless
https://shinetorust.forumactif.com/

Messageheartless Mar 1 Juin 2021 - 19:31

  • Version du forum :
    PHPBB3
  • Templates modifiés :
    oui
  • Navigateur :
    Chrome
Bonjour, j'ai bien copié à la lettre le script (pour lequel je vous remercie d'ailleurs, c'est particulièrement utile), cependant, ça ne fonctionne pas. J'ai aussi ajouté le z-index:9999; (mentionné ici) à la div "mention_suggestion", mais rien ne s'affiche. J'ai quelques scripts d'actifs sur le forum, peut-être est-ce lié. (Pour information, car il s'agit toujours des tags, j'ai aussi un script censé afficher un @ avant la citation multiple dans l'éditeur de message mais celle-ci n'apparaît pas non plus).

Merci et bonne soirée


Dernière édition par heartless le Mer 2 Juin 2021 - 16:28, édité 1 fois

Milouze14 aime ce message

Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mar 1 Juin 2021 - 19:46

Hello heartless,

merci de donner le template memberlist_body
Affichage/Templates/Général/memberlist_body

Edit, merci de fournir les scripts présents car je ne suis pas devin hinhin
heartless
heartless
https://shinetorust.forumactif.com/

Messageheartless Mer 2 Juin 2021 - 11:13

Bonjour @milouze14, merci de la réponse, j'étais pas certaine de quels codes fournir. Du coup, voici la template memberlist_body :

Code:
<!----------------------------------------------->
<!-- BARRE DE SELECTION -------------->

<div class="links_bar">
    <form action="{S_MODE_ACTION}" method="get">
        <span>
            {L_USER_SELECT} <input type="text" class="inputbox tiny" name="username" maxlength="25" size="20" value="{L_USER_SELECT_VALUE}" />    
            {L_SELECT_SORT_METHOD} {S_MODE_SELECT}    
            {L_ORDER} {S_ORDER_SELECT}    
            {S_HIDDEN_SID}
            <input class="button2" type="submit" name="submit" value="{L_SUBMIT}" />
        </span>

        <!-- Pagination -->
        <!-- BEGIN switch_pagination -->
        <span class="pagination right">
            {PAGINATION}
        </span>
        <!-- END switch_pagination -->
    </form>
</div>


<!----------------------------------------------->
<!-- LISTE DES MEMBRES -------------->

<div class="container">

    <!-- Titre de la liste des membres -->
    <h1 class="page-title">{PAGE_TITLE}</h1>

    <!-- Liste des membres -->
    <div class="userlist">

        <!-- Affichage d'un profil -->
        <!-- BEGIN memberrow -->
        <div class="userlist_profil">

            <!-- Avatar -->
            <div class="userlist_avatar">
                {memberrow.AVATAR_IMG}
            </div>

            <!-- Conteneurs des informations de membre -->
            <div class="userlist_details">

                <!-- Pseudo -->
                <span class="pseudo">
                    <a href="{memberrow.U_VIEWPROFILE}">{memberrow.USERNAME}</a>
                </span>

                <!-- Champs de profil -->
                <div class="userlist_infos">
                  {memberrow.LASTVISIT}<br />
                  {memberrow.POSTS}<br />
                  <hr></hr>
                </div>

                <!-- Lien de contact -->
                <div class="userlist_contact right">
                    {memberrow.PM_IMG}&nbsp;
                    {memberrow.WWW_IMG}
                </div>
            </div>

        </div>
        <!-- END memberrow -->
        <!-- Fin d'un profil -->

    </div>
    <!-- Fin liste des membres -->
</div>
           

Pour ce qui est des scripts j'ai ça, je ne sais pas trop lesquels pourraient affecter celui-ci ? :

[PHPBB3] Script d'auto-suggestion pour le système de tags Aa60

Merci encore  fr4

Milouze14 aime ce message

Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 2 Juin 2021 - 15:48

Hello heartless,

alors pour les scripts, les intitulés ne m’intéressent pas chère amie, c'est plus les contenus hinhin .
Bref, ton template étant modifié et pour le script fonctionne , j'ai modifié l'avatar afin qu'il est le pseudo du membre, mais un style viendra le cacher.

Remplace ton template par celui-ci (l'apparence ne changera pas) :

Code:
    <!----------------------------------------------->
    <!-- BARRE DE SELECTION -------------->

    <div class="links_bar">
        <form action="{S_MODE_ACTION}" method="get">
            <span>
                {L_USER_SELECT} <input type="text" class="inputbox tiny" name="username" maxlength="25" size="20" value="{L_USER_SELECT_VALUE}" />   
                {L_SELECT_SORT_METHOD} {S_MODE_SELECT}   
                {L_ORDER} {S_ORDER_SELECT}   
                {S_HIDDEN_SID}
                <input class="button2" type="submit" name="submit" value="{L_SUBMIT}" />
            </span>

            <!-- Pagination -->
            <!-- BEGIN switch_pagination -->
            <span class="pagination right">
                {PAGINATION}
            </span>
            <!-- END switch_pagination -->
        </form>
    </div>


    <!----------------------------------------------->
    <!-- LISTE DES MEMBRES -------------->
<style>
  .userlist_avatar a[href^="/u"] span{display:none;}
</style>
    <div class="container">

        <!-- Titre de la liste des membres -->
        <h1 class="page-title">{PAGE_TITLE}</h1>

        <!-- Liste des membres -->
        <div class="userlist">

            <!-- Affichage d'un profil -->
            <!-- BEGIN memberrow -->
            <div class="userlist_profil">

                <!-- Avatar -->
                <div class="userlist_avatar">
                   
                  <a href="{memberrow.U_VIEWPROFILE}">{memberrow.AVATAR_IMG} {memberrow.USERNAME}</a>
                </div>

                <!-- Conteneurs des informations de membre -->
                <div class="userlist_details">

                    <!-- Pseudo -->
                    <span class="pseudo">
                        <a href="{memberrow.U_VIEWPROFILE}">{memberrow.USERNAME}</a>
                    </span>

                    <!-- Champs de profil -->
                    <div class="userlist_infos">
                      {memberrow.LASTVISIT}<br />
                      {memberrow.POSTS}<br />
                      <hr></hr>
                    </div>

                    <!-- Lien de contact -->
                    <div class="userlist_contact right">
                        {memberrow.PM_IMG} 
                        {memberrow.WWW_IMG}
                    </div>
                </div>

            </div>
            <!-- END memberrow -->
            <!-- Fin d'un profil -->

        </div>
        <!-- Fin liste des membres -->
    </div>
               


Penses a enregistrer puis à valider en cliquant respectivement sur Enregistr puis Ajout

Les modifications effectuées:
Code:
  <a href="{memberrow.U_VIEWPROFILE}">{memberrow.AVATAR_IMG}&nbsp;{memberrow.USERNAME}</a>

Puis le style pour masquer le pseudo:
Code:
<style>
  .userlist_avatar a[href^="/u"] span{display:none;}
</style>

Puis le script dans sa totalité:

Code:

!window.fa_mentionner && !/\/privmsg|\/profile\?mode=editprofile&page_profil=signature/.test(window.location.href) && $(function(){$(function(){
              'SCEDITOR @HANDLE AUTO-SUGGEST';
              'DEVELOPED BY ANGE TUTEUR';
              'NO DISTRIBUTION WITHOUT CONSENT OF THE AUTHOR';
              'ORIGIN : http://fmdesign.forumotion.com/t943-auto-suggest-mentions-as-you-type#19157';
              var container = $('.sceditor-container')[0],
                  text_editor = document.getElementById('text_editor_textarea'),
                  frame,
                  instance;
              if (container && text_editor) {
                frame = $('iframe', container);
                instance = $(text_editor).sceditor('instance');
                window.fa_mentionner = {
                  suggest_delay : 100, // delay before suggestions show up (100ms)
                  // language presets
                  lang : {
                    placeholder : 'Recherche...',
                    not_found : 'Utilisateur non trouvé'
                  },
                  // colors of the suggestion popup
                  color : {
                          font : '#333',
                    hover_font : '#FFF',
                    error_font : '#F00',
                          background : '#FFF',
                    hover_background : '#69C',
                    border : '#CCC',
                    shadow : 'rgba(0, 0, 0, 0.176)'
                  },
                  // sceditor instance and rangeHelper
                  instance : instance,
                  rangeHelper : instance.getRangeHelper(),
                  //  nodes for listening and modifications
                  frame : frame[0],
                  body : frame.contents().find('body')[0],
                  textarea : $('textarea', container)[0],
                  // faux textarea and suggestion list
                  faux_textarea : $('<div id="faux_text_editor" />')[0], // helps us mirror the cursor position in source mode
                  list : $('<div id="fa_mention_suggestions" style="position:absolute;" />')[0],
                  // version specific selectors
                  selectors : $('.bodyline')[0] ? ['a.gen[href^="/u"]', ' .userlist_avatar a'] :
                              document.getElementById('ipbwrapper') ? ['.membername', '.mini-avatar'] :
                              null,
                  // adjusts the scroll position of the faux textarea so the caret stays in line
                  adjustScroll : function() {
                    fa_mentionner.faux_textarea.scrollTop = fa_mentionner.textarea.scrollTop;
                  },
                  // updates the content in the faux textarea
                  updateFauxTextarea : function(active, key) {
                    if (key == 16) { // 16 = SHIFT
                      return; // return when specific keys are pressed
                    }
                    // clear suggestion queue when suggestions aren't active
                    if (active != true) {
                      fa_mentionner.clearSuggestions();
                    } else {
                      return; // return when interactive keys are pressed while suggesting ; up, down, enter
                    }
                    // use another method if in WYSIWYG mode
                    if (!fa_mentionner.instance.inSourceMode()) {
                      key != 32 ? fa_mentionner.searchWYSIWYG() : fa_mentionner.clearSuggestions();
                      return;
                    }
                    var val = fa_mentionner.instance.val(),
                        range = 0,
                        selection,
                        faux_caret,
                        username;
                    // get the position of the caret
                    if (document.selection) {
                      selection = document.selection.createRange();
                      selection.moveStart('character', -fa_mentionner.textarea.length);
                      range = selection.text.length;
                    } else if (fa_mentionner.textarea.selectionStart || fa_mentionner.textarea.selectionStart == 0) {
                      range = fa_mentionner.textarea.selectionStart;
                    }
                    // set the position of the caret
                    val = val.slice(0, range) + '{FAUX_CARET}' + val.slice(range, val.length);
                    // parse and sanitize the faux textarea content
                    $(fa_mentionner.faux_textarea).html(
                      val.replace(/</g, '<')
                        .replace(/>/g, '>')
                        .replace(/@"(.*?)"|@(.*?)(?:\s|\r|\n|$)/g, function(M, $1, $2) {
                          var lastChar = M.substr(-1),
                              name = ($1 || $2 || '').replace(/\{FAUX_CARET\}|"/g, '');
                          return '<a href="#' + name + '">' + (/\s|\r|\n/.test(M) ? M.slice(0, M.length - 1) + '</a>' + lastChar : M + '</a>');
                        })
                        .replace(/\{FAUX_CARET\}/, '<span id="faux_caret" style="position:absolute;margin-left:-3px;">|</span>')
                    );
                    faux_caret = document.getElementById('faux_caret');
                    // mentions are parsed as <a>nchors, so when the faux caret is inside one we'll show some suggestions
                    if (faux_caret && faux_caret.parentNode.tagName == 'A') {
                      fa_mentionner.value = val;
                      fa_mentionner.delay = window.setTimeout(function() {
                        fa_mentionner.suggest(faux_caret.parentNode.href.replace(/.*?#(.*)/, '$1'), $(faux_caret).offset());
                      }, fa_mentionner.suggest_delay);
                    }
                    fa_mentionner.adjustScroll();
                  },
                  // search for active mentions in wysiwyg mode
                  searchWYSIWYG : function() {
                    var selected = fa_mentionner.rangeHelper.cloneSelected(),
                        mentions = selected.startContainer.data && selected.startContainer.data.match(/(@".*?")|(@.*?)(?:\s|\r|\n|$)/g),
                        offset,
                        offset_marker,
                        hit,
                        i;
                        console.log(mentions);
                    if (mentions && mentions[0]) {
                      // clean up whitespace
                      for (i in mentions) {
                        mentions[i] = mentions[i].replace(/\s$/g, '');
                      }
                      // search for the mention that's currently being modified
                      for (i in mentions) {
                        if (!fa_mentionner.wysiwyg_mentions || (mentions[i] != fa_mentionner.wysiwyg_mentions[i])) {
                          hit = true;
                          fa_mentionner.delay = window.setTimeout(function() {
                            fa_mentionner.rangeHelper.insertMarkers(); // insert markers to help get the caret offset
                            offset = $(fa_mentionner.frame).offset();
                            offset_marker = $('#sceditor-end-marker', fa_mentionner.body).show().offset();
                            // add the marker offsets to the iframe offsets
                            offset.left += offset_marker.left;
                            offset.top += offset_marker.top - fa_mentionner.body.scrollTop;
                            fa_mentionner.suggest(mentions[i].slice(1).replace(/^"|"$/g, ''), offset, true);
                            fa_mentionner.wysiwyg_active = mentions[i]; // save the active mention for later use in finish()
                          }, fa_mentionner.suggest_delay);
                          break;
                        }
                      }
                      // hide the suggestion list if there's no newly modified mentions
                      if (!hit) {
                        fa_mentionner.list.style.display = 'none';
                        fa_mentionner.focused = null;
                      }
                      fa_mentionner.wysiwyg_mentions = mentions; // update the list of mentions
                    }
                  },
                  // suggest a list of users based on the passed username
                  suggest : function(username, offset, wysiwyg) {
                    // insert the suggestion list to show that it's searching
                    fa_mentionner.list.innerHTML = '<span class="fam-info">' + fa_mentionner.lang.placeholder + '</span>';
                    $(fa_mentionner.list).css({
                      left : offset.left + 'px',
                      top : offset.top + 'px',
                      display : 'block',
                      overflowY : 'auto'
                    });
                    document.body.appendChild(fa_mentionner.list);
                    // send a query request to the memeberlist to find users who match the typed username
                    fa_mentionner.request = $.get('/memberlist?username=' + username, function(d) {
                      fa_mentionner.request = null;
                      var suggestion = $(fa_mentionner.selectors ? fa_mentionner.selectors[0] : '.userlist_avatar a', d),
                          ava = fa_mentionner.selectors ? $(fa_mentionner.selectors[1], d) : null,
                          i = 0,
                          j = suggestion.length,
                          name;
                      fa_mentionner.list.innerHTML = '';
                      if (j) {
                        for (; i < j; i++) {
                          name = $(suggestion[i]).text().replace(/^\s+|\s+$/g, '');
                          fa_mentionner.list.insertAdjacentHTML('beforeend',
                            '<a href="javascript:fa_mentionner.finish(\'' + name.replace(/'/g, '\\\'') + '\', ' + wysiwyg + ');" class="fa_mention_suggestion">'+
                              '<img class="fa_suggested_avatar" src="' + $(fa_mentionner.selectors ? ava[i] : suggestion[i]).find('img').attr('src') + '"/>'+
                              '<span class="fa_suggested_name">' + name + '</span>'+
                            '</a>'
                          );
                        }
                        // change overflowY property when it exceeds 7 suggestions -- prevents unsightly scroll bug
                        fa_mentionner.list.style.overflowY = j > 7 ? 'scroll' : 'auto';
                        // update the focused suggestion and scroll it into view
                        fa_mentionner.list.firstChild.className += ' fam-focus';
                        fa_mentionner.focused = fa_mentionner.list.firstChild;
                        fa_mentionner.scrollSuggestions();
                      } else {
                        fa_mentionner.list.innerHTML = '<span class="fam-info" style="color:' + fa_mentionner.color.error_font + ';">' + fa_mentionner.lang.not_found + '</span>';
                      }
                    });
                  },
                  // kill the suggestion timeout while typing persists
                  clearSuggestions : function() {
                    if (fa_mentionner.delay) {
                      window.clearTimeout(fa_mentionner.delay);
                      fa_mentionner.delay = null;
                      fa_mentionner.list.style.display = 'none';
                      fa_mentionner.focused = null;
                    }
                    if (fa_mentionner.request) {
                      fa_mentionner.request.abort();
                      fa_mentionner.request = null;
                    }
                  },
                  // finish the username
                  finish : function(username, wysiwyg) {
                    var mention, index, i;
                    // hide and clear suggestions
                    fa_mentionner.clearSuggestions();
                    fa_mentionner.focused = null;
                    fa_mentionner.list.style.display = 'none';
                    if (!wysiwyg) {
                      fa_mentionner.value = fa_mentionner.value.replace(/(?:@".[^"]*?\{FAUX_CARET\}.*?"|@\{FAUX_CARET\}.*?(\s|\n|\r|$)|@.[^"\s]*?\{FAUX_CARET\}.*?(\s|\n|\r|$))/, function(M, $1, $2) {
                        mention = '@"' + username + '"';
                        return '{MENTION_POSITION}' + ( $1 ? $1 : $2 ? $2 : '' );
                      });
                      // get the index where the mention should be
                      index = fa_mentionner.value.indexOf('{MENTION_POSITION}');
                      fa_mentionner.value = fa_mentionner.value.replace('{MENTION_POSITION}', '');
                      // save current scroll position for application after the value has been updated
                      fa_mentionner.scrollIndex = fa_mentionner.textarea.scrollTop;
                      // update the textarea with the completed mention
                      fa_mentionner.instance.val('');
                      fa_mentionner.instance.insert(fa_mentionner.value.slice(0, index) + mention, fa_mentionner.value.slice(index, fa_mentionner.value.length));
                      // restore the scroll position for the textareas
                      fa_mentionner.textarea.scrollTop = fa_mentionner.scrollIndex;
                      fa_mentionner.adjustScroll();
                      // update the fake textarea
                      fa_mentionner.updateFauxTextarea();
                    } else {
                      // save the caret range in WYSIWYG so we can restore it after replacing the HTML
                      fa_mentionner.rangeHelper.saveRange();
                      fa_mentionner.body.innerHTML = fa_mentionner.body.innerHTML.replace(new RegExp(fa_mentionner.wysiwyg_active.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") + '(<span.*?id="sceditor-end-marker".*?>)'), '@"' + username + '"$1');
                      fa_mentionner.body.focus();
                      fa_mentionner.rangeHelper.restoreRange();
                      // update the wysiwyg mention array so no new suggestions appear
                      for (i in fa_mentionner.wysiwyg_mentions) {
                        if (fa_mentionner.wysiwyg_mentions[i] == fa_mentionner.wysiwyg_active) {
                          fa_mentionner.wysiwyg_mentions[i] = '@"' + username + '"';
                          break;
                        }
                      }
                    }
                  },
                  // scroll the selected suggestion into view
                  scrollSuggestions : function() {
                    $(fa_mentionner.list).scrollTop(
                      (
                        $(fa_mentionner.focused).offset().top -
                        $(fa_mentionner.list).offset().top +
                        $(fa_mentionner.list).scrollTop()
                      ) -
                      (26 * 3) // 26 = the height of the suggestions, so display 3 suggestions above while scrolling
                    );
                  }
                };
                // get computed styles for the textarea and apply them to the faux textarea
                for (var css = window.getComputedStyle(fa_mentionner.textarea, null), i = 0, j = css.length, str = ''; i < j; i++) {
                  str += css[i] + ':'  + css.getPropertyValue(css[i]) + ';';
                }
                // add styles to the head
                $('head').append('<style type="text/css">'+
                  '#faux_text_editor {' + str + '}'+
                  '#faux_text_editor { position:absolute; left:0; bottom:0; z-index:-1; visibility:hidden; display:block; overflow-y:auto; }'+
                  '#fa_mention_suggestions { color:' + fa_mentionner.color.font + '; font-size:10px; font-family:arial, verdana, sans-serif; background:' + fa_mentionner.color.background + '; border:1px solid ' + fa_mentionner.color.border + '; margin-top:20px; z-index:999; max-height:182px; overflow-x:hidden; box-shadow:0 6px 12px ' + fa_mentionner.color.shadow + '; }'+
                  'a.fa_mention_suggestion, .fam-info { color:' + fa_mentionner.color.font + '; height:26px; line-height:26px; padding:0 3px; display:block; white-space:nowrap; cursor:pointer; }'+
                  'a.fa_mention_suggestion.fam-focus { color:' + fa_mentionner.color.hover_font + '; background:' + fa_mentionner.color.hover_background + '; }'+
                  '.fa_suggested_avatar { height:20px; width:20px; vertical-align:middle; margin-right:3px; }'+
                '</style>');
                // insert faux textarea into document
                fa_mentionner.textarea.parentNode.insertBefore(fa_mentionner.faux_textarea, fa_mentionner.textarea);
                // apply event handlers
                fa_mentionner.textarea.onclick = fa_mentionner.updateFauxTextarea;
                fa_mentionner.textarea.onscroll = fa_mentionner.adjustScroll;
                // update the faux textarea on keyup
                fa_mentionner.instance.keyUp(function(e) {
                  if (fa_mentionner.focused && e && (e.keyCode == 13 || e.keyCode == 38 || e.keyCode == 40)) {
                    fa_mentionner.updateFauxTextarea(true, e.keyCode);
                    return false;
                  } else {
                    fa_mentionner.updateFauxTextarea(false, e.keyCode);
                  }
                });
                // key events for the suggested mentions
                $([document, fa_mentionner.body]).on('keydown', function(e) {
                  var that = e.target;
                  if (fa_mentionner.focused && e && e.keyCode && (that.tagName == 'TEXTAREA' || that.tagName == 'BODY')) {
                    // move selection down
                    if (e.keyCode == 40) {
                      var next = fa_mentionner.focused.nextSibling;
                      if (next) {
                        $(fa_mentionner.focused).removeClass('fam-focus');
                        next.className += ' fam-focus';
                        fa_mentionner.focused = next;
                        fa_mentionner.scrollSuggestions();
                      }
                      return false;
                    }
                    // move selection up
                    if (e.keyCode == 38) {
                      var prev = fa_mentionner.focused.previousSibling;
                      if (prev) {
                        $(fa_mentionner.focused).removeClass('fam-focus');
                        prev.className += ' fam-focus';
                        fa_mentionner.focused = prev;
                        fa_mentionner.scrollSuggestions();
                      }
                      return false;
                    }
                    // apply selection
                    if (e.keyCode == 13) {
                      fa_mentionner.focused.click();
                      return false;
                    }
                  }
                });
                // update focused suggestion on hover
                $(document).on('mouseover', function(e) {
                  var that = e.target;
                  if (/fa_mention_suggestion/.test(that.className)) {
                    $(fa_mentionner.focused).removeClass('fam-focus');
                    that.className += ' fam-focus';
                    fa_mentionner.focused = that;
                  }
                });
              }
            })});



hinhin
heartless
heartless
https://shinetorust.forumactif.com/

Messageheartless Mer 2 Juin 2021 - 16:07

@Milouze14, merci pour la réponse clin oeil , malheureusement ça ne fonctionne pas, les suggestions n'apparaissent pas (le "pop-up" non plus d'ailleurs). Voici les scrips utilisés :

Remplacer image par texte :
Code:
$(function(){
 $('a[href*="mode=quote"] img').replaceWith('Citer');
   $('a[href*="mode=quote-multi"] img').replaceWith('Citer+');
 $('a[href*="mode=edit"] img').replaceWith('Editer');
 $('a[href*="&mode=delete"] img').replaceWith('Supprimer');
 $('a[href*="mode=ip"] img').replaceWith('IP');
 $('a[href*="mode=report"] img').replaceWith('Signaler ce sujet');
 $('a[href*="mode=lock&p"] img').replaceWith('Bloquer les alertes');
 $('a[href*="mode=unlock&p"] img').replaceWith('Débloquer les alertes');
 
 $('a[href*="mode=contact"] img').replaceWith('Débloquer les alertes');
});

Mentionner via option de messages :
Code:
/* FORUM VERSIONS
 * 0 = PHPBB2
 * 1 = PHPBB3
 * 2 = PUNBB
 * 3 = INVISION
 * 4 = MODERNBB
 */
$(function() {
  var version = 1,
      image = 'https://images2.imgbox.com/e0/17/BfbWWUsV_o.png';
 
  if (/mode=reply/.test(window.location.search) && my_getcookie('fa_mention')) {
    document.post.message.value += '@"' + my_getcookie('fa_mention') + '" ';
    my_setcookie('fa_mention','');
  } if (!/\/t\d+/.test(window.location.pathname)) return;
 
  for (var a = $(['.post-options', '.profile-icons', '.post-options', '.posting-icons', '.profile-icons'][version]), b, c, d = ['.name strong a', '.author a', '.username a', '.author a', '.postprofile-name a'][version], e, i = 0, j = a.length, t = document.getElementById('text_editor_textarea'), l = version == 1 || version == 3 || version == 4; i<j; i++) {
    b = document.createElement('IMG');
    b.src = image;
    b.alt = 'Mentionner';
    b.title = 'Mentionner ' + $(a[i]).closest('.post').find(d + ':not(.fa-mention)').text();
    b.className = 'i_icon_mention';
    b.onclick = function() {
      var n = this.title.replace(/^.*?\s/,'');
    
      if ($.sceditor) t.insertText('@"' + n + '" ');
      else {
        my_setcookie('fa_mention', n);
        window.location.href = '/post?t=' + window.location.pathname.replace(/\/t(\d+)-.*/,'$1') + '&mode=reply';
      }
    };
 
    if (l) {
      c = document.createElement('LI');
      c.appendChild(b);
    }
  
    a[i].insertBefore(l ? c : b, a[i].firstChild);
  }
 
  $(function(){
    if (!$.sceditor) return;
    t=$(t).sceditor('instance');
  });
});

Onglets page d'accueil :
Code:
function openCity(cityName) {
  var i;
  var x = document.getElementsByClassName("MPAS_pa_pseudostaff");
  for (i = 0; i < x.length; i++) {
    x[i].style.display = "none";
  }
  document.getElementById(cityName).style.display = "block";
}

Supprimer les champs FB etc sur les profils :
Code:
$(function(){
$('div[id="cp-main"]').find('dt:contains("Numéro ICQ : "),dt:contains("Adresse AIM : "),dt:contains("MSN Messenger : "),dt:contains("Yahoo Messenger :"),dt:contains("Skype : "),dt:contains("Facebook : "),dt:contains("Twitter : "),dt:contains("Pinterest :")').each(function(){
$('h1.page-title:contains("Champs de contact")').remove();
var M14contact=$(this).length;
if(M14contact){$(this).closest('.panel').remove();}
});});

Toolbar dans navigation :
Code:
$(function(){$(function(){
              
                $('#fa_search').after('<span class="fa_tbMainElement"><div id="menutest"><a href="/">accueil</a>
        <a href="/memberlist">membres</a>
        <a href="/privmsg?folder=inbox">messages</a>
        <a href="/profile?mode=editprofile">profil</a></div></span>');
              
              })});

Mention facile dans le profil :
Code:
// Par Shadow
// https://forum.forumactif.com/t378492-rendre-le-systeme-de-mentions-plus-facile-a-utiliser


$(function() {
   var version = 0;
 
   if (/mode=reply/.test(window.location.search) && my_getcookie('fa_mention')) {
      document.post.message.value += '@"' + my_getcookie('fa_mention') + '" ';
      my_setcookie('fa_mention','');
   } if (!/\/t\d+/.test(window.location.pathname)) return;
 
   for (var a = $(['.post_pseudo a'][version]), b, i = 0, j = a.length, t = document.getElementById('text_editor_textarea'); i<j; i++) {
      b = document.createElement('A');
      b.title = 'Mentionner ' + $(a[i]).text();
      b.style.marginRight = '3px';
      b.className = 'fa-mention';
      b.innerHTML = '@';
      b.href = '#';
      b.onclick = function() {
         var n = this.title.replace(/^.*?\s/,'');
    
         if ($.sceditor) t.insertText('@"' + n + '" ');
         else {
            my_setcookie('fa_mention', n);
            window.location.href = '/post?t=' + window.location.pathname.replace(/\/t(\d+)-.*/,'$1') + '&mode=reply';
         }
    
         return false;
      };
 
      a[i].parentNode.insertBefore(b, a[i]);
   }
 
   $(function(){
      if (!$.sceditor) return;
      t=$(t).sceditor('instance');
   });
});

Sélectionner le code :
Code:
// Par Ea
// https://forum.forumactif.com/t309759-bouton-selectionner-le-contenu-pour-les-balises-de-code

function selectCode(e) {
    var s = $(e).closest("dl").find(".cont_code,code").get(0), range, selection;
    var a = s, z = s;
    while(a.nodeType == 1 && a.childNodes.length) a=a.firstChild;
    while(z.nodeType == 1 && z.childNodes.length) z=z.lastChild;
    if (!$(a).is('.fixff')) {
        var fix = $('<span class="fixff"/>').insertBefore(a);
    } else {
      a = a.nextSibling;
    }
    if (document.body.createTextRange) {
        range = document.body.createTextRange();
        range.moveToElementText(s);
        range.select();
    } else if (window.getSelection) {
        selection = window.getSelection();
        range = document.createRange();
        range.setStart(a, 0);
        range.setEnd(z, z.nodeValue ? z.nodeValue.length : 0);
        selection.removeAllRanges();
        selection.addRange(range);
    }
};
$(function(){$("dl.codebox:not(.spoiler,.hidecode)  > dd.code, dl.codebox:not(.spoiler,.hidecode)  > dd > code").closest("dl").find('dt').append('<span onClick="selectCode(this)" class="selectCode">Sélectionner</span>')});

Icons derniers messages :
Code:
// Solution par Milouze14
// https://forum.forumactif.com/t400216-afficher-les-icones-de-sujets-dans-la-colonne-derniers-messages#3340636

$(function(){
$('.topicslist_row').find('.topicslist_infos[style*="background-image"]').each(function(){
var a= $(this).css('background-image');
a= a.replace('url(','').replace(')','').replace(/\"/gi, "");if(a){
$(this).css('background-image','url(https://2img.net/i/fa/empty.gif)');
$(this).find('.topic_msgicon').append('<img src="'+a+'"/>');
}});});

Simplification des balises :
Code:
//Script par Milouze14
//https://www.milouze14.com/t27816-phpbb3-personnaliser-les-balises-hide-code-quote-et-spoiler
    
$(function(){
$('cite').closest('blockquote').attr('id','blank_quote');
$('code').closest('.codebox').attr('id','blank_code');
$('.codebox.spoiler').attr('id','blank_spoiler');
$('.codebox.hidecode').attr('id','blank_hide');
});

Thème sombre :
Code:
<script>
  const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
const currentTheme = localStorage.getItem('theme');

if (currentTheme) {
    document.documentElement.setAttribute('data-theme', currentTheme);
  
    if (currentTheme === 'dark') {
        toggleSwitch.checked = true;
    }
}

function switchTheme(e) {
    if (e.target.checked) {
        document.documentElement.setAttribute('data-theme', 'dark');
        localStorage.setItem('theme', 'dark');
    }
    else {        document.documentElement.setAttribute('data-theme', 'light');
          localStorage.setItem('theme', 'light');
    }    
}

toggleSwitch.addEventListener('change', switchTheme, false);</script>
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 2 Juin 2021 - 16:11

Etonnant qu'il ne fonctionne pas sur l'éditeur!!
Tu tapes bien l'arobase dans l'éditeur et tu n'as rien du tout ?
Merci pour les scripts , je testerais plus tard en attendant ta réponse ok .
Aurais un compte test a me donner en hide s'il te plait.
heartless
heartless
https://shinetorust.forumactif.com/

Messageheartless Mer 2 Juin 2021 - 16:13

Oui, j'ai essayé avec l'arobase seul et en tapant la première lettre d'un pseudo existant juste après, aucun des deux n'affiche les suggestions :(



Dernière édition par heartless le Mer 2 Juin 2021 - 16:21, édité 1 fois
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 2 Juin 2021 - 16:20

Oups, je viens de voir une boulette dans tes scripts:

Code:

    <script>
      const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
    const currentTheme = localStorage.getItem('theme');

    if (currentTheme) {
        document.documentElement.setAttribute('data-theme', currentTheme);
     
        if (currentTheme === 'dark') {
            toggleSwitch.checked = true;
        }
    }

    function switchTheme(e) {
        if (e.target.checked) {
            document.documentElement.setAttribute('data-theme', 'dark');
            localStorage.setItem('theme', 'dark');
        }
        else {        document.documentElement.setAttribute('data-theme', 'light');
              localStorage.setItem('theme', 'light');
        }   
    }

    toggleSwitch.addEventListener('change', switchTheme, false);
</script>

Il faut supprimer les balises scripts chère amie.

et le laisser ainsi:
Code:
      const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
    const currentTheme = localStorage.getItem('theme');

    if (currentTheme) {
        document.documentElement.setAttribute('data-theme', currentTheme);
     
        if (currentTheme === 'dark') {
            toggleSwitch.checked = true;
        }
    }

    function switchTheme(e) {
        if (e.target.checked) {
            document.documentElement.setAttribute('data-theme', 'dark');
            localStorage.setItem('theme', 'dark');
        }
        else {        document.documentElement.setAttribute('data-theme', 'light');
              localStorage.setItem('theme', 'light');
        }   
    }

    toggleSwitch.addEventListener('change', switchTheme, false);
heartless
heartless
https://shinetorust.forumactif.com/

Messageheartless Mer 2 Juin 2021 - 16:22

Aïe... j'ai retiré la balise script et du coup le script en question ne fonctionne plus :(
Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 2 Juin 2021 - 16:27

Ah merdouille ,
remplaces par:
Code:
       
$(function(){


 const toggleSwitch = document.querySelector('.theme-switch input[type="checkbox"]');
        const currentTheme = localStorage.getItem('theme');

        if (currentTheme) {
            document.documentElement.setAttribute('data-theme', currentTheme);
       
            if (currentTheme === 'dark') {
                toggleSwitch.checked = true;
            }
        }

        function switchTheme(e) {
            if (e.target.checked) {
                document.documentElement.setAttribute('data-theme', 'dark');
                localStorage.setItem('theme', 'dark');
            }
            else {        document.documentElement.setAttribute('data-theme', 'light');
                  localStorage.setItem('theme', 'light');
            } 
        }

        toggleSwitch.addEventListener('change', switchTheme, false);

});

heartless aime ce message

heartless
heartless
https://shinetorust.forumactif.com/

Messageheartless Mer 2 Juin 2021 - 16:28

IMPECCABLE ! Et du coup ton script d'auto suggestion fonctionne bien maintenant :D

Merci milles fois pour ton aide !

Milouze14 aime ce message

Milouze14
Milouze14
Fondateur

https://www.milouze14.net/

MessageMilouze14 Mer 2 Juin 2021 - 16:30

Il suffit de pas grand chose parfois impeccable .
De rien chère amie,il serait sympa de mettre un prénom sur ton pseudo.
Pour ma pomme c'est Phil.


Hello


Sujet résolu et déplacé dans le forum adéquate

A bientôt pour une prochaine demande clin oeil

Voir le sujet précédent Voir le sujet suivant Revenir en haut

Créer un compte ou se connecter pour répondre

Vous devez être membre pour répondre.

S'enregistrer

Rejoignez notre communauté ! C'est facile !


S'enregistrer

Connexion

Vous êtes déjà membre ? Aucun soucis, cliquez ici pour vous connecter.


Connexion

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum