À la vue de plusieurs autres shaarlis, j'ai eu envie de tester le plugin Mardown pour Shaarli. Ça fonctionne, ça peut être utile, j'apprécie, je garde.
En revanche, ce plugin s'applique de base à tous les anciens shaarlis. Forcément, ça casse des choses : des blockquote qui n'en sont pas, l'espacement entre les items d'une liste,...
J'ai la flemme de passer en revue 1960 shaarlis. Dans le README du plugin on apprend que l'on peut désactiver le plugin au cas par cas, shaarli par shaarli en ajoutant le tag privé « .nomarkdown ». Ça ne peut pas fonctionner : le tag ne sera jamais transmis au plugin lorsqu'un visiteur consulte un shaarli puisque c'est un tag privé. Donc le plugin ne pourra JAMAIS voir le tag. Seul l'administrateur pourra voir le markdown désactivé… Pour changer cela, il suffit de changer de tag à utiliser pour en prendre un public et de changer plugins/markdown/markdown.php en remplaçant define('NO_MD_TAG', '.nomarkdown');
par define('NO_MD_TAG', 'nomarkdown');
.
Fort bien, mais comment l'appliquer sur tous les anciens shaarlis ?
J'ai codé ça vite fait comme un malpropre :
if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=addtagggs'))
{
$LINKSDB = new LinkDB(
$GLOBALS['config']['DATASTORE'],
isLoggedIn(),
$GLOBALS['config']['HIDE_PUBLIC_LINKS'],
$GLOBALS['redirector']
);
$linksToAlter = $LINKSDB;
foreach($linksToAlter as $key=>$value)
{
$value['tags'] = (empty($value['tags'])) ? 'nomarkdown' : $value['tags'].' nomarkdown';
$value['tags'] = trim(preg_replace('/\s\s+/', ' ', $value['tags']));
// Remove first '-' char in tags.
$value['tags'] = preg_replace('/(^| )\-/', '$1', $value['tags']);
// Remove duplicates.
$value['tags'] = implode(' ', array_unique(explode(' ', $value['tags'])));
$LINKSDB[$key]=$value;
}
$LINKSDB->savedb($GLOBALS['config']['PAGECACHE']); // Save to disk.
exit;
}
À ajouter temporairement en bas du fichier index.php de Shaarli, juste avant :
if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=genthumbnail')) { genThumbnail(); exit; } // Thumbnail generation/cache does not need the link database.
if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=rss')) { showRSS(); exit; }
if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=atom')) { showATOM(); exit; }
if (isset($_SERVER["QUERY_STRING"]) && startswith($_SERVER["QUERY_STRING"],'do=dailyrss')) { showDailyRSS(); exit; }
if (!isset($_SESSION['LINKS_PER_PAGE'])) $_SESSION['LINKS_PER_PAGE']=$GLOBALS['config']['LINKS_PER_PAGE'];
renderPage();
Ensuite, pour que le tag soit ajouté, il suffit de se rendre sur http://monshaarli.example/?do=addtagggs
Une fois le tag ajouté, vous pouvez virer le bout de code du fichier index.php :-
Évidemment, faites une copie de sauvegarde de votre Shaarli (ou au moins du dossier data) AVANT !
ÉDIT DU 05/07/2016 À 16H : Ça a été corrigé dans shaarli, cf https://github.com/shaarli/Shaarli/pull/582 . Ce sera inclus dans la prochaine release (celle qui suivra la 0.7.0). Le nouveau tag pour faire ignorer un shaarli au plugin Markdown est « nomarkdown », sans le point et ce tag n'est pas affiché car considéré comme étant un tag technique. FIN DE L'ÉDIT.