Activer un script uniquement dans la page d'édition "Nouveau sujet"

3 participants

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

Résolu Activer un script uniquement dans la page d'édition "Nouveau sujet"

Message par Mat Dim 7 Avr 2019 - 17:50

Bonjour,

J'ai un script (fourni par Milouze il y a quelques mois) qui ajoute des préfixes aux sujets.

J'aimerais savoir comme je pourrais faire pour qu'un script, celui-ci dans ce cas, ne soit actif que sur les pages des nouveaux post et non les pages d'éditions des messages.

J'aimerais savoir comment je pourrais faire pour ajouter une condition grâce au lien :
/post?f=1&mode=newtopic

Merci d'avance Visage souriant
Mat

Mat
Membre habitué

Masculin
Messages : 1562
Inscrit(e) le : 05/09/2015

http://www.dixily.fr
Mat a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Activer un script uniquement dans la page d'édition "Nouveau sujet"

Message par Mat Mar 9 Avr 2019 - 11:07

Et un up Visage souriant
Mat

Mat
Membre habitué

Masculin
Messages : 1562
Inscrit(e) le : 05/09/2015

http://www.dixily.fr
Mat a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Activer un script uniquement dans la page d'édition "Nouveau sujet"

Message par 'Christa Mer 10 Avr 2019 - 14:27

Bonjour !

Urrrgh j'avais écrit tout un message et il s'est volatilisé par la magie de la technologie @_@ Bon, on va faire plus simple, du moins je vais essayer XD

Je n'ai pas encore pris le temps d'apprendre le javascript de façon saine et normale (plutôt que sur le tas XD) donc j'ai fait quelques recherches à propos de la récupération de paramètres en javascript. On a d'une part la documentation MDN sur window.location qui t'explique comment manipuler l'url d'une page, et d'autre part j'ai trouvé la page d'un certain Kevin Leary en anglais, qui donne quelques pistes sur la récupération de paramètres d'une URL en javascript, aussi proprement que possible.

Je ne sais pas à quoi ressemble le script que tu utilises, du coup ça serait utile de le partager (en hide si nécessaire) pour savoir comment il est personnalisable, mais grosso modo de ce que je comprends :


  • Soit tu n'as besoin que d'avoir des pages avec l'url EXACTE que tu as indiquée, auquel cas la solution est plutôt simple :
    Code:
      var url = window.location.pathname + window.location.search;
      if(url === "/post?f=1&mode=newtopic") {
        // Faire des trucs
      };

  • Soit tu as besoin d'utiliser ce script à d'autres endroits et là par contre tu as l'option de faire des millions de if (ou des switch) pour chaque zone de ton forum concernée, ou bien de faire des conditions plus souples, et là par contre il va falloir détecter deux choses :

    • D'une part que tu es bien dans une page pour poster (aka /post et pas /privmsg) et ça peut se vérifier avec le window.location.pathname que j'ai déjà mentionné.
    • D'autre part que le paramètre mode est bien présent et vaut "newtopic" et là tu as besoin de la page en anglais que je t'ai mise en lien. Celle ci te donne plusieurs solutions au problème, personnellement j'ai testé celle dans la partie Regex Approach mais apparemment le premier est le plus "propre", il faut juste savoir quoi en faire XD En tout cas avec l'approche que j'ai utilisée (qui a le défaut d'être en jquery, donc plus lourd) tu as juste à copier sa fonction et pour ton script proprement dit utiliser un code de ce genre :
      Code:
      var getMode = $.getQuery('mode');
        if(getMode && getMode=="newtopic") { // Faire des trucs ;}




Voilà voilà =D
'Christa

'Christa
***

Féminin
Messages : 134
Inscrit(e) le : 04/06/2009

https://lostmindy-test.forumactif.com/
'Christa a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Activer un script uniquement dans la page d'édition "Nouveau sujet"

Message par Mat Mer 10 Avr 2019 - 16:26

Ah un grand merci Visage souriant

Voici mon code, pourriez-vous m'indiquer où dois-je le placer :
Code:
/*globals jQuery*/
        /**
        * @name Sistema de Prefixos.
        * @version 1.0
        * @author Luiz
        * @see {@link http://ajuda.forumeiros.com/}
        * @licence MIT
        */
$(function ($) {
          'use strict';
          
          var config = {
            prefixes: [
            'Prologue','Partie 1','Partie 2','Partie 3','Partie 4','Partie 5','Partie 6','Partie 7','Partie 8','Partie 9','Partie 10','Fin'
            ],
        
            lang: {
              all: 'Faites votre choix'
            },
        
            engine: {
              /**
              * @name Inicializador.
              * @desc Usado para iniciar o script.
              * @param {object} input - Corresponde ao seletor do input-alvo do script.
              */
              init: function (input) {
                var self = this;
              
                var $input = $(input);
                var $dummy = $('<option>', { 'class': 'fa-prefix-item' });
              
                if (!/^\/post$/g.test(location.pathname) && $input) {
                  return false;
                }
          
                var $select = $('<select>', {
                  'class': 'fa-prefix-select',
                  'title':'PHPBB2 - PHPBB3 - PUNBB - INVISION - MODERNBB - AWESOMEBB - EDGE - TOUTES VERSIONS '
                });
        
                $dummy
                  .clone()
                    .text(config.lang.all)
                    .attr('value', '')
                    .attr('selected', true)
                    .appendTo($select)
                ;
          
                $.each(config.prefixes, function (index, prefix) {
                  $dummy
                    .clone()
                      .text('[' + prefix + ']')
                      .attr('value', '[' + prefix + ']')
                      .attr('id', 'fa-prefix-item-' + index)
                      .appendTo($select)
                  ;
                });
          
                $select
                  .insertBefore($input)
                  .on('change', function () {
                    var $this = $(this);
                    var value = $this.val();
          
                    self.prefix(value, $this.next());
                  })
                ;
              },
            
              /**
              * @name Prefixador.
              * @desc Usada para colocar o prefixo no input.
              * @param {string} value - Corresponde ao prefixo que será colocado.
              * @param {object} input - Corresponde ao seletor do input que será prefixado.
              */
              prefix: function (value, input) {
                var $input = $(input);
        
                if (/^\[.*\]/g.test($input.val())) {
                  $input.val($.trim($input.val().replace(/^\[.*\]/, '')));
                }
        
                $input.val($.trim(value + ' ' + $input.val()));
              
              }
            }
          };
        
          $(function () {
            var $input = $('input[name="subject"]');
            config.engine.init($input);
          });
        }(jQuery));
Mat

Mat
Membre habitué

Masculin
Messages : 1562
Inscrit(e) le : 05/09/2015

http://www.dixily.fr
Mat a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Activer un script uniquement dans la page d'édition "Nouveau sujet"

Message par 'Christa Mer 10 Avr 2019 - 18:50

Hello

Déjà, inutile de me vouvoyer :p

Ensuite pour ce qui concerne l'endroit à éditer, c'est sans doute autour de la ligne 92, à la fin, le config.engine.init($input);. Grosso modo, c'est cette ligne qui lance le script écrit dans les lignes précédentes. Donc si tu peux rajouter des conditions avant, ça ne s'exécutera que sur la ou les pages que tu souhaites.

Par contre, j'ai pour principe de ne pas donner de codes tout faits, je préfère donner des pistes Wink Donc à moins que quelqu'un ne te vienne en aide sur ce plan, je t'encourage à faire tes propres tests, c'est une bonne occasion d'apprentissage.
'Christa

'Christa
***

Féminin
Messages : 134
Inscrit(e) le : 04/06/2009

https://lostmindy-test.forumactif.com/
'Christa a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Activer un script uniquement dans la page d'édition "Nouveau sujet"

Message par Mat Mer 10 Avr 2019 - 19:45

D'accord merci Visage souriant
Je vais chercher de mon coté Clin d'oeil
Merci a toi ^^
Mat

Mat
Membre habitué

Masculin
Messages : 1562
Inscrit(e) le : 05/09/2015

http://www.dixily.fr
Mat a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Activer un script uniquement dans la page d'édition "Nouveau sujet"

Message par Adam_sfp Mer 10 Avr 2019 - 20:49

Bonsoir

Pour compléter la réponse de Christa et alimenter la piste en utilisant ce tutoriel de @ea
https://forum.forumactif.com/t310825-executer-un-code-javascript-sous-certaines-conditions

Regardez du coté des expressions régulières (c'est pas vraiment ma tasse de thé ;-)  

En modifiant ce code cela devrait être faisable..
Code:
if(document.location.pathname=="/post" && /^\?f=[789]&mode=newtopic$/.test(document.location.search))
{
  ICI IL FAUDRA METTRE VOTRE CODE DONNE PLUS HAUT

}

Cdt.
Adam_sfp

Adam_sfp
Membre actif

Masculin
Messages : 4465
Inscrit(e) le : 18/04/2008

http://antonyadam.kanak.fr
Adam_sfp a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Activer un script uniquement dans la page d'édition "Nouveau sujet"

Message par Mat Ven 12 Avr 2019 - 9:01

Merci, je vais regarder à tout ça ^^
Mat

Mat
Membre habitué

Masculin
Messages : 1562
Inscrit(e) le : 05/09/2015

http://www.dixily.fr
Mat a été remercié(e) par l'auteur de ce sujet.

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

- Sujets similaires

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