Browse Source

Grands changements dans porte plume (tester si tout continue de fonctionner !)

* 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();
}}}
2.1 v1.5
marcimat@free.fr 13 years ago
parent
commit
015733c118
  1. 1
      .gitattributes
  2. 1
      javascript/jquery.previsu_spip.js
  3. 6
      plugin.xml
  4. 1
      porte_plume.js.html
  5. 58
      porte_plume_pipelines.php
  6. 55
      porte_plume_start.js.html

1
.gitattributes vendored

@ -45,6 +45,7 @@ markitup/templates/preview.html -text
/porte_plume_options.php -text
/porte_plume_pipelines.php -text
/porte_plume_preview.html -text
/porte_plume_start.js.html -text
tests/all_tests.php -text
tests/barre_outil_markitup.php -text
tests/lanceur_spip.php -text

1
javascript/jquery.previsu_spip.js

@ -17,6 +17,7 @@
// init and build previsu buttons
function init() {
$$.addClass("pp_previsualisation");
tabs = $('<div class="markItUpTabs"></div>').prependTo($$.parent());
$(tabs).append(
'<a href="#previsuVoir" class="previsuVoir">' + options.textVoir + '</a>' +

6
plugin.xml

@ -2,7 +2,7 @@
<nom>Porte plume - Une barre d'outil pour bien &eacute;crire</nom>
<auteur>Matthieu Marcillaud</auteur>
<licence>GNU/GPL</licence>
<version>1.3.2</version>
<version>1.5</version>
<description>
"Porte plume" est une barre d'outil g&eacute;niale pour SPIP qui
utilise la librairie javascript [MarkItUp->http://markitup.jaysalvat.com/home/]
@ -20,12 +20,12 @@
<fonctions>inc/barre_outils.php</fonctions>
<pipeline>
<nom>insert_head</nom>
<nom>insert_head_public</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>header_prive</nom>
<action>insert_head</action>
<action>insert_head_prive</action>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<necessite id="SPIP" version="[2.0.2;]" />

1
porte_plume.js.html

@ -1,4 +1,3 @@
#CACHE{7*24*3600}
#HTTP_HEADER{Content-Type: text/javascript; charset=#CHARSET}
[(#VAL|porte_plume_creer_json_markitup)]

58
porte_plume_pipelines.php

@ -4,49 +4,35 @@
* Licence GPL
* Auteur Matthieu Marcillaud
*/
define('PORTE_PLUME_PUBLIC', true);
function porte_plume_insert_head($flux){
$lang = $GLOBALS['spip_lang'];
function porte_plume_insert_head_public($flux){
if (PORTE_PLUME_PUBLIC) {
$flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang']);
}
return $flux;
}
function porte_plume_insert_head_prive($flux){
$flux = porte_plume_inserer_head($flux, $GLOBALS['spip_lang']);
return $flux;
}
function porte_plume_inserer_head($flux, $lang){
$js = find_in_path('javascript/jquery.markitup_pour_spip.js');
$js_previsu = find_in_path('javascript/jquery.previsu_spip.js');
$js_settings = parametre_url(generer_url_public('porte_plume.js'), 'lang', $lang);
$js_start = parametre_url(generer_url_public('porte_plume_start.js'), 'lang', $lang);
$css = find_in_path('css/barre_outils.css');
$css_icones = generer_url_public('barre_outils_icones.css');
$flux .= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"
. "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n"
. "<script type='text/javascript' src='$js'></script>\n"
. "<script type='text/javascript' src='$js_previsu'></script>\n"
. "<script type='text/javascript' src='$js_settings'></script>\n";
$preview = url_absolue(generer_url_public('porte_plume_preview'));
$tEditer = _T('barre_outils:editer');
$tVoir = _T('barre_outils:voir');
$flux .= <<<EOF
<script type="text/javascript">
<!--
jQuery(document).ready(function() {
// ajoute les barres d'outils markitup
function barrebouilles(){
// si c'est un appel de previsu markitup, faut pas relancer
// on attrappe donc uniquement les textarea qui n'ont pas deja la classe markItUpEditor
jQuery('.formulaire_forum textarea[name=texte]:not(.markItUpEditor)').markItUp(barre_outils_forum,{lang:'$lang'});
jQuery('textarea.textarea_forum:not(.markItUpEditor)').markItUp(barre_outils_forum,{lang:'$lang'});
jQuery('.formulaire_spip textarea[name=texte]:not(.markItUpEditor)')
.markItUp(barre_outils_edition,{lang:'$lang'})
.previsu_spip({
previewParserPath:'$preview',
textEditer:'$tEditer',
textVoir:'$tVoir'});
}
barrebouilles();
onAjaxLoad(barrebouilles);
});
-->
</script>
EOF;
$flux
.= "<link rel='stylesheet' type='text/css' media='all' href='$css' />\n"
. "<link rel='stylesheet' type='text/css' media='all' href='$css_icones' />\n"
. "<script type='text/javascript' src='$js'></script>\n"
. "<script type='text/javascript' src='$js_previsu'></script>\n"
. "<script type='text/javascript' src='$js_settings'></script>\n"
. "<script type='text/javascript' src='$js_start'></script>\n";
return $flux;
}

55
porte_plume_start.js.html

@ -0,0 +1,55 @@
#CACHE{7*24*3600}
#HTTP_HEADER{Content-Type: text/javascript; charset=#CHARSET}
;(function($){
// 2 fonctions pour appeler le porte plume reutilisables pour d'autres plugins
// on envoie dedans la selection jquery qui doit etre effectuee
// ce qui evite des appels direct a markitup, aucazou on change de lib un jour
$.fn.barre_outils = function(nom, settings) {
options = {
lang:'[(#ENV{lang})]'
};
$.extend(options, settings);
lang='[(#ENV{lang})]'
return $(this)
.not('.markItUpEditor')
.markItUp(eval('barre_outils_' + nom), {lang:options.lang});
};
$.fn.barre_previsualisation = function(settings) {
options = {
previewParserPath:"[(#URL_PAGE{porte_plume_preview}|url_absolue)]",
textEditer:"<:barre_outils:editer:>",
textVoir:"<:barre_outils:voir:>"
};
$.extend(options, settings);
return $(this)
.not('.pp_previsualisation')
.previsu_spip(options);
};
$(document).ready(function(){
// ajoute les barres d'outils markitup
// fonction generique appliquee aux classes CSS :
// inserer_barre_forum, inserer_barre_edition, inserer_previsualisation
function barrebouilles(){
$('.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();
}
// fonction specifique aux formulaires de SPIP :
function barrebouilles_spip(){
// barre de forum
$('textarea.textarea_forum,.formulaire_forum textarea[name=texte]')
.barre_outils('forum');
// barre d'edition et onglets de previsualisation
$('.formulaire_spip textarea[name=texte]')
.barre_outils('edition')
.barre_previsualisation();
}
barrebouilles();
onAjaxLoad(barrebouilles);
barrebouilles_spip();
onAjaxLoad(barrebouilles_spip);
});
})(jQuery);
Loading…
Cancel
Save