Bookmarklets SPIP 1.8

Gérer plusieurs sites avec les mêmes signets

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

Ces signets utilisent Javascript pour donner accès à certaines pages administratives de votre site SPIP, peu importe sur quel site vous vous trouvez, peu importe où vous êtes sur ce site.

NOTE : Ces bookmarklets/favelets ont été adaptés pour Spip 1.9.x..

Installation expresse

Pour les pressés, vous pouvez installer en vrac tous les bookmarklets décrits ci-haut en suivant les instructions suivantes :

(Ces instructions fonctionnent sur Internet Explorer pour Windows, il est possible que vous ayez à les adapter pour votre propre navigateur.)

1) Sauvegardez le fichier « bookmarklets_spip.html » suivant sur votre disque.

bookmarklets_spip.html

2) Importez-le dans votre navigateur (Ex. Fichier > Importer et exporter sur Explorer. Voir dans l’aide de votre navigateur pour plus de détail.)

3) Les bookmarklets devraient maintenant être disponibles à partir de votre menu de signets ou de la barre de liens, selon où vous les avez importés.

Et voilà ! Allez sur un de vos sites Spip et cliquez sur les bookmarklets pour les essayer. :)

Note : il est possible qu’il y ait des problèmes de compatibilité avec certains navigateurs, notamment Opera. Plus d’information (en anglais) sur comment importer des bookmarklets sur cette page.

Principe de base

Lorsque vous utilisez un de ces bookmarklets (appelés aussi applisignets ou favelets), un script Javascript identifie le nom de domaine du site courrant et il y ajoute un lien vers la page désirée.

Par exemple, disons que vous gérez quatre sites différents et que vous devez souvent vider le cache de ces sites. Vous pourriez faire un favori différent vers la page "Videz le cache" pour chacun des sites. Mais en utilisant le bookmarklet Vider le cache, un seul favori suffit. :)

Ces « signets magiques » sont aussi pratiques si vous voulez modifier une page ou la rafraîchir mais que les boutons d’administrations ne sont pas affichés.

Pour plus d’informations sur les bookmarklets, je vous suggère de visiter les sites bookmarklets.com et Jesse’s Bookmarklet Site (en anglais).

Prenez note qu’il existe une limite au nombre de caractères qu’un bookmarklet peut contenir, notamment une limite de 508 caractères pour IE6. Voir : cette page pour plus de détail.

Compatibilité

En théorie, ces bookmarklets devraient fonctionner sur tous les navigateurs permettant l’usage du javascript.

J’ai personnellement testé avec succès sur Internet Explorer 6, Mozilla 1.5, Netscape 6.2 (PC).

Par contre, Netscape 4.7 semblait ignorer les appels javascript. :P

Si vous les testez sur un autre navigateur ou un autre système, n’hésitez pas à le mentionner dans le forum en bas de la page !

Installer un bookmarklet

La façon la plus directe est de faire un clic-droit (PC) ou pomme-clic (MAC) sur un hyperlien comportant un bookmarklet et de choisir « Ajouter aux favoris » (ou quelque chose du genre) à partir du menu contextuel qui vous sera offert.

Une autre façon pratique est de cliquer sur un lien contenant le script de le bookmarklet et de le déplacer sur la barre de liens de votre navigateur ou dans un menu (ou dossier) contenant vos signets.

Il existe une troisième façon plus compliquée mais qui a l’avantage de permettre de créer de nouveaux bookmarklets de toute pièce. Il faut créer un signet (n’importe quelle page web devrait suffire) puis remplacer l’adresse du signet par la ligne de javascript contenant le code du bookmarklet.

Par exemple, lorsque vous créez un signet dans Netscape, vous pouvez spécifier son nom et son adresse. Sur Internet Explorer, où seul le nom du signet peut être modifié à la création, un simple clique-droit par-dessus un signet dans le menu Favoris vous permet d’accéder aux propriétés de celui-ci et d’y changer son adresse.

Une fois le bookmarklet créé, vous pouvez y accéder par votre liste de signets (menu Signets ou Favoris.)

Pour un accès encore plus rapide aux bookmarklets, il est pratique de placer les plus utiles dans la barre de liens de votre navigateur.

Applisignets dans la barre de liens

Sur la plupart des navigateurs, il est même possible de créer un dossier à l’intérieur de la barre de liens et d’y placer des signets, groupant ainsi vos bookmarklets et libérant de l’espace pour d’autres boutons.

Dossier de signets dans la barre de liens

Si vous n’êtes pas certain de comment procéder sur votre propre navigateur, je vous invite à consulter l’aide de votre navigateur sur la création de signets (ou favoris).

Note : Il est normal que votre navigateur vous affiche des messages d’erreur ou d’avertissement lorsque vous créez un bookmarklet. Vous n’avez qu’à les ignorer.

Scripts pour bookmarklets

Voici donc les bookmarklets que j’ai créé pour gérer mes sites Spip. Si vous trouvez qu’il en manque, vous devriez pouvoir créer les vôtres assez facilement en modifiant un de ceux-ci.

Je vous rappelle que pour installer un bookmarklet, vous pouvez :

  • copier le code fourni dans les champs de texte et le coller dans l’adresse d’un signet
  • cliquer sur le nom du signet (qui s’avère être un lien contenant le script en question) et le déplacer dans un dossier de signets ou sur la barre de liens de votre navigateur.

Modification des éléments du site

Ce bookmarklet vous permet de modifier n’importe quel article, rubrique ou brève sur n’importe quel site, en autant que le site en question utilise des URLs du type « article.php3 ?id_article=22 » ou « article22.html ». (Merci à Ben pour l’astuce !)

Modifier cette page

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));fin=fin.replace(/\/ecrire/,'');var url=location.href;var re=/(article)(=*)(\d+)/;if (re.test(url)==true) { id=RegExp.$3;type='article';} else {re=/(breve)(=*)(\d+)/; if (re.test(url)==true) { id=RegExp.$3;type='breve';}else { re=/(rubrique|coll)(=*)(\d+)/; if (re.test(url)==true) { id=RegExp.$3;type='rubrique';}}} location=fin+'/ecrire/'+type+'s_edit.php3?id_'+type+'='+id;

Si certain de vos sites utilisent des mots différents dans les URLs mais qu’ils gardent le numéro de l’élément en question (ex. page22.html au lieu d’article22.html), il est possible de modifier le code de ce bookmarklet en conséquence. Il suffit d’ajouter les mots utilisés dans vos URLs dans les expression régulières du script. Par exemple, dans l’expression var expression=/(article)(=*)(\d+)/, on peut mettre (article|page) pour indiquer que le URL peut aussi ressembler à page33.html.

Gestion du site

Login

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));fin=fin.replace(/\/ecrire/,''); location=fin+'/ecrire/';

Vider le cache

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));fin=fin.replace(/\/ecrire/,''); location=fin+'/ecrire/admin_vider.php3';

[Spip 1.8] Recalculer cette page

javascript:url=location.href;var re=/var_mode=recalcul/;if (re.test(url)) { location.reload() } else { (url.indexOf('?') == -1) ? locationQuery = '?' : locationQuery = '&';  location = url + locationQuery + 'var_mode=recalcul' }

Recalculer cette page (pré-Spip 1.8)

javascript:url=location.href;var re=/recalcul=oui/;if (re.test(url)) { location.reload() } else { (url.indexOf('?') == -1) ? locationQuery = '?' : locationQuery = '&';  location = url + locationQuery + 'recalcul=oui&submit=Recalculer+cette+page'; }

Forum interne

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));fin=fin.replace(/\/ecrire/,''); location=fin+'/ecrire/forum.php3';

Statistiques du site

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));fin=fin.replace(/\/ecrire/,''); location=fin+'/ecrire/statistiques_visites.php3';

Suivi des forums

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));fin=fin.replace(/\/ecrire/,''); location=fin+'/ecrire/controle_forum.php3';

Création de nouveaux éléments

Les nouveaux éléments créés seront liés par défaut à la première rubrique à la racine du site. Prenez donc soin de toujours spécifier la rubrique dans laquelle l’élément doit être placé.

Créer un nouvel article

javascript:javascript:var url=location.href.substring(0, location.href.lastIndexOf('/'));var expression=/(ecrire)/;var ecrire=''; if (expression.test(url)==false) { ecrire='/ecrire';};location=url + ecrire + '/articles_edit.php3?new=oui';

Créer une nouvelle brève

javascript:var url=location.href.substring(0, location.href.lastIndexOf('/'));var expression=/(ecrire)/;var ecrire=''; if (expression.test(url)==false) { ecrire='/ecrire';};location=url + ecrire + '/breves_edit.php3?new=oui';

Créer une nouvelle rubrique

javascript:var url=location.href.substring(0, location.href.lastIndexOf('/'));var expression=/(ecrire)/;var ecrire=''; if (expression.test(url)==false) { ecrire='/ecrire';};location=url + ecrire + '/rubriques_edit.php3?new=oui';

Référencer un nouveau site

javascript:var url=location.href.substring(0, location.href.lastIndexOf('/'));var expression=/(ecrire)/;var ecrire=''; if (expression.test(url)==false) { ecrire='/ecrire';};location=url + ecrire + '/sites_edit.php3?new=oui';

Créer ses propres bookmarklets Spip

Pour créer ses propres bookmarklets, il est utile d’avoir une certaine maîtrise du Javascript. Malgré cela, il est possible pour un débutant de modifier ces scripts avec un peu d’aide.

Aller directement à une page précise.

Comme exemple de bookmarklet Spip qui mènerait à une page précise, je vais expliquer ici comment fonctionne le bookmarklet « Vider le cache » :

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));fin=fin.replace(/\/ecrire/,''); location=fin+'/ecrire/admin_vider.php3';

Son rôle est de nous diriger automatiquement vers la page « admin_vider.php3 » qui se trouve dans le dossier « /ecrire/ » du site spip courrant.

Ses composantes peuvent être décomposées ainsi :

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));

Ici, on cherche dans l’URL (l’adresse) de la page où se trouve la dernière instance du caractère « / ». On cherche donc à se placer à l’intérieur du dossier dans lequel la page se trouve. Typiquement, pour un site Spip, ce serait la racine du site (http://www.spip.net/) ou dans le dossier dans lequel le site a été placé. (ex. www.uzine.net/spip_contrib/). L’adresse du site et le(s) dossier(s) dans lequel se trouve la page est ensuite inséré dans la variable « fin ».

fin=fin.replace(/\/ecrire/,'')

Ici on retire de l’adresse de la page le dossier « /ecrire/ », si il s’y trouve. Cette étape est nécessaire car nous demandons d’aller dans ce dossier à l’étape suivante. Sans cette précaution, si nous étions déjà dans le dossier « /ecrire/ », nous aurions alors une adresse contenant « /ecrire/ecrire/ ».

location=fin+'/ecrire/admin_vider.php3';

Et pour finir, on indique que la nouvelle adresse de la page sur laquelle nous nous trouvons (« location ») devrait maintenant être le contenu de la variable « fin » suivie de « /ecrire/ » et de la page « admin_vider.php3 » où se trouve le formulaire « Vider le cache ».

Pour aller vers une autre page, donc, vous n’avez qu’à changer fin+'/ecrire/admin_vider.php3' et y mettre le nom de la page que vous désirez.

Aller à une page selon le contexte de la page courante.

Le bookmarklet « Modifier cette page » est beaucoup plus flexible - et complexe !

Le voici en entier :

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));fin=fin.replace(/\/ecrire/,'');var url=location.href;var re=/(article)(=*)(\d+)/;if (re.test(url)==true) { id=RegExp.$3;type='article';} else {re=/(breve)(=*)(\d+)/; if (re.test(url)==true) { id=RegExp.$3;type='breve';}else { re=/(rubrique|coll)(=*)(\d+)/; if (re.test(url)==true) { id=RegExp.$3;type='rubrique';}}} location=fin+'/ecrire/'+type+'s_edit.php3?id_'+type+'='+id;

Si on l’analyse ce script, on y retrouve une première partie similaire à celui de « Vider le cache » :

javascript:var fin=location.href.substring(0, location.href.lastIndexOf('/'));fin=fin.replace(/\/ecrire/,'');

On isole du URL le nom du site jusqu’au dernier dossier et on enlève le dossier « /ecrire/ » si il s’y trouve.

var url=location.href;

Cette ligne transfert le nom du site et les noms de dossiers (sans « /ecrire/ ») extraits du URL, dans variable appelée, curieusement, « url ».

var re=/(article)(=*)(\d+)/;if (re.test(url)==true) { id=RegExp.$3;type='article';}

Ici ça se corse. On définit une variable « re » dans laquelle on insert une expression régulière (regular expression) où l’on définit ce que l’on cherche dans le url. Dans ce cas, nous cherchons le mot « article » suivi d’un caractère « = » ou non et ensuite d’un ou plusieurs chiffres (indiqué par le code « d+ »). Si l’adresse de la page contient « id_article=23 » ou « article23.html », dans les deux cas, le mot « article » et le chiffre « 23 » seront correctement identifiés.

SI l’expression contenue dans la variable « re » se trouve dans « url » (if (re.test(url)==true)), nous attribuons les chiffres trouvés dans la variable « id » et nous attribuons le mot « article » à la variable « type ».

Si jamais vous utilisez dans vos adresses un autre mot que « article » pour identifier vos articles (par exemple, page23.html), vous pouvez ajouter ce mot de cette façon :

var re=/(article|page)

else {re=/(breve)(=*)(\d+)/; if (re.test(url)==true) { id=RegExp.$3;type='breve';}

... et ainsi de suite pour les brèves et les rubrique.

location=fin+'/ecrire/'+type+'s_edit.php3?id_'+type+'='+id;

Nous terminons en demandant de changer l’adresse (location) de la page en utilisant l’adresse du site tel que spécifiée dans la variable « fin ». Nous y ajoutons ensuite « /ecrire/ » puis le type de page défini dans la variable « type » à laquelle on ajoute « a_edit.php3 » suivi du caractère « = » et le numéro de la page en question qui se trouve dans « id ».

On passerait donc, par exemple, de "http://votresite.com/article.php3?id_article=23« à »http://votresite.com/ecrire/articles_edit.php3?id_article=23".

POur renvoyer à une autre page, vous n’avez donc qu’à modifier la ligne location=fin+'/ecrire/'+type+'s_edit.php3?id_'+type+'='+id; selon la page en question.

J’espère que ces scripts et ces instructions vous seront utiles. :)

Thierry Gagnon
Studios Eau Moirée

Discussion

5 discussions

  • 2

    Ça fait des mois et des mois que ce concept trottait dans ma tête et je suis bien heureux d’avoir pu enfin le mettre en oeuvre. Merci beaucoup à Ben pour m’avoir fourni la clef qui me manquait pour arriver au bout de mes idées !

    J’utilise ces signets depuis quelques semaines déjà et je ne peux déjà plus m’en passer. C’est incroyable de pouvoir faire toutes ces opérations sur tous mes sites Spip à partir des même signets.

    N’hésitez pas à me faire part ici de vos témoignages d’utilisateurs et de suggérer d’autres idées de bookmarklets Spip !

    • Tout grand merci à toi !!! Ca fait deux-trois semaines que j’utilse certains des « Favelets » se trouvant ici http://tantek.com/favelets/ pour redimensionner mon écran pour voire si mes sites sont bien compatibles en 800X600 et 1024X768 vu que je suis maintenant en 1280X1024.

      De plus j’avais dans ma barre des tâches un dossier par site, avec chaque fois un lien vers l’admin, la page d’accueil et vider le cache pour chaque site. J’ai maintenant tout viré pour mettre tes « Bookmarkelets » et c’est le bonheur total !!!

      Voilà, j’espère que tout le monde prendra un peu de temps pour piger le principe car c’est un gain de temps énorme !

      ++

    • Tout simplement parfait. Quel bonheur ! (Et pas de prob rencontré avec Safari). Merci Thierry.

    Répondre à ce message

  • 1

    J’ai adapté ces favelet à SPIP 1.9.3 et rajouté des favelet qui n’étaient pas disponibles avant (genre var_mode=profil pour tracer les requêtes mysql).

    Thierry, est-ce que tu veux que je t’envoie le fichier de favelet.html correspondant ou préfère-tu me passer co auteur de l’article et admin restreint de la rubrique pour que je joigne moi-même le fichier ?

    Répondre à ce message

  • il s’agit quasiment du meme que recalcul, la seule variation : var_mode=debug

    (e lien ci dessous peut ête collé dans une barre directement)

    debug

    le code du lien :

    javascript:url=location.href;var re=/var_mode=debug/;if (re.test(url)) { location.reload() } else { (url.indexOf('?') == -1) ? locationQuery = '?' : locationQuery = '&';  location = url + locationQuery + 'var_mode=debug' }

    Répondre à ce message

  • 1

    J’ai révisé les méthodes d’installation des bookmarklets et j’ai ajouté une variation du bookmarklet « Reclalculer cette page » compatible avec la version 1.8 de Spip.

    Répondre à ce message

  • 1

    je trouve pas trop d’infos sur les sites cités dans l’article pour créer mes miens, par exemple si j’utilise une contrib nommée portfolio.php3 situé dans ecrire/, je veux faire un favoris qui d’une page ecrire/articles.php3 ?id_article=127 m’amène sur ecrire/portfolio.php3 ?id_article=127.

    J’ai bidouillé ceux de l’article mais j’ai raté la compréhension du passage de variable :( est-ce que qqn peux m’aider ?

    • Je viens d’ajouter des instructions expliquant le fonctionnement des scripts fournis. J’espère que ça pourra vous aider. :)

    Répondre à ce message

Ajouter un commentaire

Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :

  • Désactiver tous les plugins que vous ne voulez pas tester afin de vous assurer que le bug vient bien du plugin X. Cela vous évitera d’écrire sur le forum d’une contribution qui n’est finalement pas en cause.
  • Cherchez et notez les numéros de version de tout ce qui est en place au moment du test :
    • version de SPIP, en bas de la partie privée
    • version du plugin testé et des éventuels plugins nécessités
    • version de PHP (exec=info en partie privée)
    • version de MySQL / SQLite
  • Si votre problème concerne la partie publique de votre site, donnez une URL où le bug est visible, pour que les gens puissent voir par eux-mêmes.
  • En cas de page blanche, merci d’activer l’affichage des erreurs, et d’indiquer ensuite l’erreur qui apparaît.

Merci d’avance pour les personnes qui vous aideront !

Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.

Qui êtes-vous ?
[Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Ajouter un document

Suivre les commentaires : RSS 2.0 | Atom