Il faudrait synchroniser les scrolls entre les 2 vues, mais c'est non trivial, car à cause des notes de bas de page on peut être à 100% du scroll en édition et que le texte modifié corresponde à 50% du scroll en prévisu.
Sans doute faudrait-il repérer la portion de texte qui change entre 2 mises à jour de la prévisu et positionner le scroll dessus si besoin ?
A priori OK sur FF et Safari, a tester plus largement sur les autres navigateurs.
On renomme le dossier css/images en css/img par convention
- deplacer le squelette de preview dans prive/ pour ne pas permettre sa consultation directe
- ajouter un autoriser() dans l'action previsu pour fermer la porte lorsque le porte plume est desactive dans le public
- dans tous les cas faire passer le resultat par safehtml car le texte source peut venir de n'importe qui/n'importe ou et peut servir de support a une attaque type XSS ou vol de cookie (l'utilisation d'un $_POST explicite exclue toutefois le simple lien)
Pas besoin de sécuriser outre mesure ici, on ne réalise donc qu'un recuperer_fond sur les données postées
On passe par cette action pour éviter les redirection et la perte du $_POST de $forcer_lang=true;
cf : ecrire/public.php ligne 80
- Mise à jour des scripts d'expression régulière pour la fonction .split() que l'auteur à intégré dans une librairie plus générale, reprenant .replace(), .match() aussi notamment : http://xregexp.com/
- Charger la barre après le chargement de la page.
Exemple de déclaration dans mes_options.php si les accents ne s'affichent toujours pas correctement :
// forcer le charset du PP car le charset de la bdd n'est pas connu
define('PORTE_PLUME_PREVIEW_CHARSET', 'utf-8');
* mise en fichier externe de la fonction de chargement de porte plume ce
qui permet de la prendre en charge par le compacteur
* permettre des insertions de barrs d'outils avec des classes javascript posés sur
les textarea : inserer_barre_forum, inserer_barre_edition, inserer_previsualisation
* permettre de ne pas déposer la barre dans l'espace public avec la constante PORTE_PLUME_PUBLIC, définie à true par défaut (javascript et css présents dans le public)
* donner une API pour créer des barres d'outils sur des textarea sélectionnés en javascript :
.barre_outils($nom) et .barre_previsualisation().
Exemple issu du core de porte plume :
{{{
$('.formulaire_spip textarea.inserer_barre_forum').barre_outils('forum');
$('.formulaire_spip textarea.inserer_barre_edition').barre_outils('edition');
$('.formulaire_spip textarea.inserer_previsualisation').barre_previsualisation();
}}}