Compare commits

...

27 Commits

Author SHA1 Message Date
spip.franck@lien-d-amis.net 17b11c9085 code.spip est maintenant en https, donc j'ajoute le "s" à http 5 years ago
pierrekuhn82@gmail.com d7f28cf699 Le liens vers la doc en https 5 years ago
denisb@a-working-class-hero-is-something-to.be 970c14b7d6 bonne année. 6 years ago
spip.franck@lien-d-amis.net 30be19fdec Evitons une redirection, ce n'est plus http://doc.spip.org mais http://code.spip.net 7 years ago
spip.franck@lien-d-amis.net 38cb34bba3 Ce n'est plus spip-contrib, mais contrib.spip 8 years ago
taffit@debian.org f464145824 Suppression de profils ICC inutiles 8 years ago
denisb@a-working-class-hero-is-something-to.be 8676addf4a feliĉan novan jaron 2014 ! 8 years ago
jack@lmpe.fr 4e90987dc0 9 years ago
real3t@gmail.com a2dfd318c6 Report de [63015] : 10 years ago
brunobergot@gmail.com e464cadf36 ne plus perdre la position du scroll dans les textarea des crayons :) 11 years ago
yffic@lefourneau.com 10eebeb431 Slogan, entités numériques, borne sup spip 2.1.99 11 years ago
kent1@arscenic.info 2f004f832d if (!defined("_ECRIRE_INC_VERSION")) return; sur tout fichier PHP pour sécurité future principalement 11 years ago
renato@rezo.net 2c638f3982 traduction italienne 11 years ago
real3t@gmail.com ec4f8e5347 Suite à remarques sur l'accessibilité du PortePlume qui bloque la navigation au clavier en changeant le comportement par défaut de la touche Tab, empêchant de ressortir du champ. 11 years ago
prigent.yohann@gmail.com ddd4e77c96 Revert de [44849]. Tant pis pour les puristes... 11 years ago
prigent.yohann@gmail.com 917d418d4e coquille (enfin, je pense...) 11 years ago
real3t@gmail.com 4cacd917e7 Ordre plus logique pour les boutons désindenter/indenter (comme dans les traitements de texte disponible dans toutes les bonnes crémeries) 11 years ago
cedric@yterium.com 9eb0260307 declarer les pipelines dans plugin.xml plutot que dans un fichier options charge a chaque hit 12 years ago
brunobergot@gmail.com e988c311d6 report de r40963 12 years ago
cedric@yterium.com 70e653f8a9 spritons ces 29 icones pour eviter de multiples hit. C'est surtout genant sur les pages publiques qui contiennent un forum (meme si cela ne concerne alors que 6 icones) (avec le sprite, donc) 12 years ago
cedric@yterium.com b4f6753be9 spritons ces 29 icones pour eviter de multiples hit. C'est surtout genant sur les pages publiques qui contiennent un forum (meme si cela ne concerne alors que 6 icones) 12 years ago
kent1@arscenic.info 6c1e5d7c0d Des broutilles 12 years ago
marcimat@rezo.net 71f2689e0c Commentaires en moins. 12 years ago
marcimat@rezo.net a9a8d73686 Mise à jour de Markitup en version 1.1.8 12 years ago
real3t@gmail.com fba3f6585a 2 bugs : 12 years ago
kent1@arscenic.info 4e7395f284 Une categorie 12 years ago
cedric@yterium.com 6177945f9a des branches pour les plugins du core, comme pour le core 12 years ago
  1. 3
      .gitattributes
  2. 22
      action/porte_plume_previsu.php
  3. 92
      barre_outils/edition.php
  4. 2
      configuration/porte_plume.php
  5. 11
      css/barre_outils.css
  6. 2
      formulaires/configurer_porte_plume.php
  7. BIN
      icones_barre/spt-v1.png
  8. BIN
      images/porte-plume-128.png
  9. BIN
      images/porte-plume-16.png
  10. BIN
      images/porte-plume-24.png
  11. BIN
      images/porte-plume-48.png
  12. 8
      inc/barre.php
  13. 10
      inc/barre_outils.php
  14. 40
      javascript/jquery.markitup.js
  15. 50
      javascript/jquery.markitup_pour_spip.js
  16. 4
      javascript/jquery.previsu_spip.js
  17. 2
      lang/barre_outils_ar.php
  18. 4
      lang/barre_outils_de.php
  19. 2
      lang/barre_outils_en.php
  20. 2
      lang/barre_outils_es.php
  21. 2
      lang/barre_outils_fr.php
  22. 120
      lang/barre_outils_it.php
  23. 154
      plugin.xml
  24. 20
      porte_plume_options.php
  25. 8
      porte_plume_pipelines.php
  26. 2
      porte_plume_start.js_fonctions.php
  27. 4
      prive/porte_plume_preview_fonctions.php

3
.gitattributes

@ -31,6 +31,7 @@ icones_barre/notes.png -text
icones_barre/oelig-maj.png -text
icones_barre/oelig.png -text
icones_barre/quote.png -text
icones_barre/spt-v1.png -text
icones_barre/text_bold.png -text
icones_barre/text_indent.png -text
icones_barre/text_indent_remove.png -text
@ -57,11 +58,11 @@ lang/barre_outils_de.php -text
lang/barre_outils_en.php -text
lang/barre_outils_es.php -text
lang/barre_outils_fr.php -text
lang/barre_outils_it.php -text
markitup/readme.txt -text
markitup/templates/preview.css -text
markitup/templates/preview.html -text
/plugin.xml -text
/porte_plume_options.php -text
/porte_plume_pipelines.php -text
/porte_plume_start.js.html -text
/porte_plume_start.js_fonctions.php -text

22
action/porte_plume_previsu.php

@ -23,7 +23,27 @@ function action_porte_plume_previsu_dist(){
// (par defaut le droit d'aller dans ecrire/)
if (!autoriser('previsualiser','porte_plume'))
$contexte = array();
header('Content-type: text/html; charset='.pp_charset());
echo recuperer_fond('prive/porte_plume_preview',$contexte);
}
// retourner le charset SQL si on le connait, en priorite
// sinon, on utilise le charset de l'affichage HTML.
// Cependant, on peut forcer un charset donne avec une constante :
// define('PORTE_PLUME_PREVIEW_CHARSET','utf-8');
function pp_charset() {
if (defined('PORTE_PLUME_PREVIEW_CHARSET')) {
return PORTE_PLUME_PREVIEW_CHARSET;
}
$charset = $GLOBALS['meta']['charset'];
$charset_sql = isset($GLOBALS['charset_sql_base']) ? $GLOBALS['charset_sql_base'] : '';
if ($charset_sql == 'utf8') {
$charset_sql = 'utf-8';
}
return $charset_sql ? $charset_sql : $charset;
}
?>

92
barre_outils/edition.php

@ -19,7 +19,8 @@ function barre_outils_edition(){
'onCtrlEnter' => array('keepDefault'=>false, 'replaceWith'=>"\n\n"),
// garder les listes si on appuie sur entree
'onEnter' => array('keepDefault'=>false, 'selectionType'=>'return', 'replaceWith'=>"\n"),
'onTab' => array('keepDefault'=>false, 'replaceWith'=>"\t"),
// Utile quand on saisi du code, mais pas accessible !
#'onTab' => array('keepDefault'=>false, 'replaceWith'=>"\t"),
'markupSet' => array(
// H1 - {{{
array(
@ -88,16 +89,6 @@ function barre_outils_edition(){
"selectionType" => "line",
"forceMultiline" => true,
),
// indenter
array(
"id" => 'indenter',
"name" => _T('barre_outils:barre_indenter'),
"className" => "outil_indenter",
"replaceWith" => "function(h){return outil_indenter(h);}",
"display" => true,
"selectionType" => "line",
"forceMultiline" => true,
),
// desindenter
array(
"id" => 'desindenter',
@ -108,6 +99,16 @@ function barre_outils_edition(){
"selectionType" => "line",
"forceMultiline" => true,
),
// indenter
array(
"id" => 'indenter',
"name" => _T('barre_outils:barre_indenter'),
"className" => "outil_indenter",
"replaceWith" => "function(h){return outil_indenter(h);}",
"display" => true,
"selectionType" => "line",
"forceMultiline" => true,
),
),
),
@ -440,44 +441,45 @@ function barre_outils_edition(){
function barre_outils_edition_icones(){
return array(
//'outil_header1' => 'text_heading_1.png',
'outil_header1' => 'intertitre.png',
'outil_bold' => 'text_bold.png',
'outil_italic' => 'text_italic.png',
'outil_stroke_through' => 'text_strikethrough.png',
'outil_liste_ul' => 'text_list_bullets.png',
'outil_liste_ol' => 'text_list_numbers.png',
'outil_indenter' => 'text_indent.png',
'outil_desindenter' => 'text_indent_remove.png',
'outil_header1' => array('spt-v1.png','-10px -226px'), //'intertitre.png'
'outil_bold' => array('spt-v1.png','-10px -478px'), //'text_bold.png'
'outil_italic' => array('spt-v1.png','-10px -586px'), //'text_italic.png'
'outil_stroke_through' => array('spt-v1.png','-10px -946px'), //'text_strikethrough.png'
'outil_liste_ul' => array('spt-v1.png','-10px -622px'), //'text_list_bullets.png'
'outil_liste_ol' => array('spt-v1.png','-10px -658px'), //'text_list_numbers.png'
'outil_indenter' => array('spt-v1.png','-10px -514px'), //'text_indent.png'
'outil_desindenter' => array('spt-v1.png','-10px -550px'), //'text_indent_remove.png'
//'outil_quote' => 'text_indent.png',
'outil_quote' => 'quote.png',
'outil_quote' => array('spt-v1.png','-10px -442px'), //'quote.png'
//'outil_link' => 'world_link.png',
'outil_link' => 'lien.png',
'outil_notes' => 'notes.png',
'outil_guillemets' => 'guillemets.png',
'outil_guillemets_simples' => 'guillemets-simples.png',
'outil_guillemets_de' => 'guillemets-de.png',
'outil_guillemets_de_simples' => 'guillemets-uniques-de.png',
'outil_guillemets_uniques' => 'guillemets-uniques.png',
'outil_caracteres' => 'keyboard.png',
'outil_a_maj_grave' => 'agrave-maj.png',
'outil_e_maj_aigu' => 'eacute-maj.png',
'outil_e_maj_grave' => 'eagrave-maj.png',
'outil_aelig' => 'aelig.png',
'outil_aelig_maj' => 'aelig-maj.png',
'outil_oe' => 'oelig.png',
'outil_oe_maj' => 'oelig-maj.png',
'outil_ccedil_maj' => 'ccedil-maj.png',
'outil_uppercase' => 'text_uppercase.png',
'outil_lowercase' => 'text_lowercase.png',
'outil_link' => array('spt-v1.png','-10px -298px'), //'lien.png'
'outil_notes' => array('spt-v1.png','-10px -334px'), //'notes.png'
'outil_guillemets' => array('spt-v1.png','-10px -910px'), //'guillemets.png'
'outil_guillemets_simples' => array('spt-v1.png','-10px -802px'), //'guillemets-simples.png'
'outil_guillemets_de' => array('spt-v1.png','-10px -766px'), //'guillemets-de.png'
'outil_guillemets_de_simples' => array('spt-v1.png','-10px -838px'), //'guillemets-uniques-de.png'
'outil_guillemets_uniques' => array('spt-v1.png','-10px -874px'), //'guillemets-uniques.png'
'outil_clean' => 'clean.png',
'outil_preview' => 'eye.png',
'outil_caracteres' => array('spt-v1.png','-10px -262px'), //'keyboard.png'
'outil_a_maj_grave' => array('spt-v1.png','-10px -82px'), //'agrave-maj.png'
'outil_e_maj_aigu' => array('spt-v1.png','-10px -154px'), //'eacute-maj.png'
'outil_e_maj_grave' => array('spt-v1.png','-10px -190px'), //'eagrave-maj.png'
'outil_aelig' => array('spt-v1.png','-10px -46px'), //'aelig.png'
'outil_aelig_maj' => array('spt-v1.png','-10px -10px'), //'aelig-maj.png'
'outil_oe' => array('spt-v1.png','-10px -406px'), //'oelig.png'
'outil_oe_maj' => array('spt-v1.png','-10px -370px'), //'oelig-maj.png'
'outil_ccedil_maj' => array('spt-v1.png','-10px -118px'), //'ccedil-maj.png'
'outil_uppercase' => array('spt-v1.png','-10px -730px'), //'text_uppercase.png'
'outil_lowercase' => array('spt-v1.png','-10px -694px'), //'text_lowercase.png'
'outil_clean' => array('spt-v1.png','-10px -982px'), //'clean.png'
'outil_preview' => array('spt-v1.png','-10px -1018px'), //'eye.png'
);
}
?>

2
configuration/porte_plume.php

@ -3,7 +3,7 @@
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2010 *
* Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *

11
css/barre_outils.css

@ -145,15 +145,18 @@
.markItUp .markItUpHeader ul a {
display:block;
width:16px; height:16px;
text-indent:-10000px;
background-repeat:no-repeat;
background-position:50% 50%;
background-color:#f5f5f5;
border:1px solid #ccc;
padding:3px;
margin-right:1px;
}
.markItUp .markItUpHeader ul a b{
display:block;
background-repeat:no-repeat;
width:16px; height:16px;
text-indent:-10000px;
}
.markItUp .markItUpHeader ul a:hover{border:1px solid #888; background-color:#fff;}

2
formulaires/configurer_porte_plume.php

@ -3,7 +3,7 @@
/***************************************************************************\
* SPIP, Systeme de publication pour l'internet *
* *
* Copyright (c) 2001-2009 *
* Copyright (c) 2001-2016 *
* Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James *
* *
* Ce programme est un logiciel libre distribue sous licence GNU/GPL. *

BIN
icones_barre/spt-v1.png

After

Width: 36  |  Height: 1044  |  Size: 9.2 KiB

BIN
images/porte-plume-128.png

After

Width: 128  |  Height: 128  |  Size: 8.4 KiB

BIN
images/porte-plume-16.png

After

Width: 16  |  Height: 16  |  Size: 636 B

BIN
images/porte-plume-24.png

After

Width: 24  |  Height: 24  |  Size: 793 B

BIN
images/porte-plume-48.png

After

Width: 48  |  Height: 48  |  Size: 1.6 KiB

8
inc/barre.php

@ -11,21 +11,23 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
// construit un bouton (ancre) de raccourci avec icone et aide
// http://doc.spip.org/@bouton_barre_racc
// https://code.spip.net/@bouton_barre_racc
function bouton_barre_racc($action, $img, $help, $champhelp) {
return;
}
// construit un tableau de raccourcis pour un noeud de DOM
// http://doc.spip.org/@afficher_barre
// https://code.spip.net/@afficher_barre
if (!function_exists('afficher_barre')) {
function afficher_barre($champ, $forum=false, $lang='') {
return;
}
}
// expliciter les 3 arguments pour avoir xhtml strict
// http://doc.spip.org/@afficher_textarea_barre
// https://code.spip.net/@afficher_textarea_barre
function afficher_textarea_barre($texte, $forum=false, $form='')
{
global $spip_display, $spip_ecran;

10
inc/barre_outils.php

@ -4,6 +4,9 @@
* Licence GPL
* Auteur Matthieu Marcillaud
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
include_spip('public/admin'); // pour stripos()
/* pour compat 2.0 (inutile a partir de 2.1) */
@ -497,7 +500,12 @@ function barre_outils_css_icones(){
// passage en css
foreach ($classe2icone as $n=>$i) {
$css .= "\n.markItUp .$n a {\n\tbackground-image:url(".url_absolue(find_in_path("icones_barre/$i")).");\n}";
$pos="";
if (is_array($i)){
$pos = "background-position:".end($i);
$i = reset($i);
}
$css .= "\n.markItUp .$n a b {background-image:url(".url_absolue(find_in_path("icones_barre/$i")).");$pos}";
}
return $css;

40
javascript/jquery.markitup.js

@ -1,6 +1,6 @@
// ----------------------------------------------------------------------------
// markItUp! Universal MarkUp Engine, JQuery plugin
// v 1.1.6.1
// v 1.1.8
// Dual licensed under the MIT and GPL licenses.
// ----------------------------------------------------------------------------
// Copyright (C) 2007-2010 Jay Salvat
@ -28,7 +28,7 @@
$.fn.markItUp = function(settings, extraSettings) {
var options, ctrlKey, shiftKey, altKey;
ctrlKey = shiftKey = altKey = false;
options = { id: '',
nameSpace: '',
root: '',
@ -162,11 +162,13 @@
return false;
}).click(function() {
return false;
}).mouseup(function() {
}).focusin(function(){
$$.focus();
}).mousedown(function() {
if (button.call) {
eval(button.call)();
}
markup(button);
setTimeout(function() { markup(button) },1);
return false;
}).hover(function() {
$('> ul', this).show();
@ -286,7 +288,7 @@
}
string = { block:lines.join('\n')};
start = caretPosition;
len = string.block.length + (($.browser.opera) ? n : 0);
len = string.block.length + (($.browser.opera) ? n-1 : 0);
} else if (ctrlKey === true) {
string = build(selection);
start = caretPosition + string.openWith.length;
@ -361,7 +363,7 @@
var newSelection = document.selection.createRange();
newSelection.text = block;
} else {
$$.val($$.val().substring(0, caretPosition) + block + $$.val().substring(caretPosition + selection.length, $$.val().length));
textarea.value = textarea.value.substring(0, caretPosition) + block + textarea.value.substring(caretPosition + selection.length, textarea.value.length);
}
}
@ -395,16 +397,16 @@
var range = document.selection.createRange(), rangeCopy = range.duplicate();
rangeCopy.moveToElementText(textarea);
caretPosition = -1;
while(rangeCopy.inRange(range)) { // fix most of the ie bugs with linefeeds...
while(rangeCopy.inRange(range)) {
rangeCopy.moveStart('character');
caretPosition ++;
}
} else { // opera
caretPosition = textarea.selectionStart;
}
} else { // gecko
} else { // gecko & webkit
caretPosition = textarea.selectionStart;
selection = $$.val().substring(caretPosition, textarea.selectionEnd);
selection = textarea.value.substring(caretPosition, textarea.selectionEnd);
}
return selection;
}
@ -414,6 +416,9 @@
if (!previewWindow || previewWindow.closed) {
if (options.previewInWindow) {
previewWindow = window.open('', 'preview', options.previewInWindow);
$(window).unload(function() {
previewWindow.close();
});
} else {
iFrame = $('<iframe class="markItUpPreviewFrame"></iframe>');
if (options.previewPosition == 'after') {
@ -424,7 +429,6 @@
previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1];
}
} else if (altKey === true) {
// Thx Stephen M. Redd for the IE8 fix
if (iFrame) {
iFrame.remove();
} else {
@ -435,6 +439,9 @@
if (!options.previewAutoRefresh) {
refreshPreview();
}
if (options.previewInWindow) {
previewWindow.focus();
}
}
// refresh Preview window
@ -473,15 +480,11 @@
} catch(e) {
sp = 0;
}
var h = "test";
previewWindow.document.open();
previewWindow.document.write(data);
previewWindow.document.close();
previewWindow.document.documentElement.scrollTop = sp;
}
if (options.previewInWindow) {
previewWindow.focus();
}
}
// set keys pressed
@ -495,7 +498,9 @@
li = $("a[accesskey="+String.fromCharCode(e.keyCode)+"]", header).parent('li');
if (li.length !== 0) {
ctrlKey = false;
li.triggerHandler('mouseup');
setTimeout(function() {
li.triggerHandler('mousedown');
},1);
return false;
}
}
@ -514,7 +519,7 @@
}
}
if (e.keyCode === 9) { // Tab key
if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob.
if (shiftKey == true || ctrlKey == true || altKey == true) {
return false;
}
if (caretOffset !== -1) {
@ -537,7 +542,7 @@
$.fn.markItUpRemove = function() {
return this.each(function() {
$$ = $(this).unbind().removeClass('markItUpEditor');
var $$ = $(this).unbind().removeClass('markItUpEditor');
$$.parent('div').parent('div.markItUp').parent('div').replaceWith($$);
}
);
@ -556,4 +561,3 @@
}
};
})(jQuery);

50
javascript/jquery.markitup_pour_spip.js

@ -1,6 +1,6 @@
// ----------------------------------------------------------------------------
// markItUp! Universal MarkUp Engine, JQuery plugin
// v 1.1.6.1
// v 1.1.8
// Dual licensed under the MIT and GPL licenses.
// ----------------------------------------------------------------------------
// Copyright (C) 2007-2010 Jay Salvat
@ -26,7 +26,7 @@
// ----------------------------------------------------------------------------
/*
* Le code original de markitup 1.1.6.1
* Le code original de markitup 1.1.8
* a ete modifie pour prendre en compte
*
* 1) la langue utilisee dans les textarea :
@ -122,10 +122,12 @@
if (options.nameSpace) {
nameSpace = 'class="'+options.nameSpace+'"';
}
currentScrollPosition = $$.scrollTop();
$$.wrap('<div '+nameSpace+'></div>');
$$.wrap('<div '+id+' class="markItUp"></div>');
$$.wrap('<div class="markItUpContainer"></div>');
$$.addClass("markItUpEditor");
$$.scrollTop(currentScrollPosition);
// add the header before the textarea
header = $('<div class="markItUpHeader"></div>').insertBefore($$);
@ -195,16 +197,18 @@
for (j = levels.length -1; j >= 0; j--) {
t += levels[j]+"-";
}
li = $('<li class="markItUpButton markItUpButton'+t+(i)+' '+(button.className||'')+'"><a href="" '+key+' title="'+title+'">'+(button.name||'')+'</a></li>')
li = $('<li class="markItUpButton markItUpButton'+t+(i)+' '+(button.className||'')+'"><a href="" '+key+' title="'+title+'"><b>'+(button.name||'')+'</b></a></li>')
.bind("contextmenu", function() { // prevent contextmenu on mac and allow ctrl+click
return false;
}).click(function() {
return false;
}).mouseup(function() {
}).focusin(function(){
$$.focus();
}).mousedown(function() {
if (button.call) {
eval(button.call)();
}
markup(button);
setTimeout(function() { markup(button) },1);
return false;
}).hover(function() {
$('> ul', this).show();
@ -312,8 +316,8 @@
function selectionBeforeAfter(pattern) {
if (!pattern) pattern = /\s/;
before = $$.val().substring(0, caretEffectivePosition);
after = $$.val().substring(caretEffectivePosition + selection.length - fixOperaBug(selection) - fixIeBug(selection));
before = textarea.value.substring(0, caretEffectivePosition);
after = textarea.value.substring(caretEffectivePosition + selection.length - fixIeBug(selection));
before = before.split(pattern);
after = after.split(pattern);
@ -322,7 +326,7 @@
function selectionSave(){
nb_before = before ? before[before.length-1].length : 0;
nb_after = after ? after[0].length : 0;
nb = nb_before + selection.length + nb_after - fixIeBug(selection);
caretPosition = caretPosition - nb_before;
@ -414,7 +418,7 @@
}
string = { block:lines.join('\n')};
start = caretPosition;
len = string.block.length + (($.browser.opera) ? n : 0);
len = string.block.length + (($.browser.opera) ? n-1 : 0);
} else if (ctrlKey === true) {
string = build(selection);
start = caretPosition + string.openWith.length;
@ -486,7 +490,7 @@
var newSelection = document.selection.createRange();
newSelection.text = block;
} else {
$$.val($$.val().substring(0, caretEffectivePosition) + block + $$.val().substring(caretEffectivePosition + selection.length));
textarea.value = textarea.value.substring(0, caretEffectivePosition) + block + textarea.value.substring(caretEffectivePosition + selection.length, textarea.value.length);
}
}
@ -516,7 +520,7 @@
var range = document.selection.createRange(), rangeCopy = range.duplicate();
rangeCopy.moveToElementText(textarea);
caretPosition = -1;
while(rangeCopy.inRange(range)) { // fix most of the ie bugs with linefeeds...
while(rangeCopy.inRange(range)) {
rangeCopy.moveStart('character');
caretPosition ++;
}
@ -531,10 +535,11 @@
set(caretPosition, lenSelection);
selection = document.selection.createRange().text;
}
} else { // gecko
} else { // gecko & webkit
caretPosition = textarea.selectionStart;
caretEffectivePosition = caretPosition;
selection = $$.val().substring(caretPosition, textarea.selectionEnd);
selection = textarea.value.substring(caretPosition, textarea.selectionEnd);
}
return selection;
}
@ -544,6 +549,9 @@
if (!previewWindow || previewWindow.closed) {
if (options.previewInWindow) {
previewWindow = window.open('', 'preview', options.previewInWindow);
$(window).unload(function() {
previewWindow.close();
});
} else {
iFrame = $('<iframe class="markItUpPreviewFrame"></iframe>');
if (options.previewPosition == 'after') {
@ -554,7 +562,6 @@
previewWindow = iFrame[iFrame.length - 1].contentWindow || frame[iFrame.length - 1];
}
} else if (altKey === true) {
// Thx Stephen M. Redd for the IE8 fix
if (iFrame) {
iFrame.remove();
} else {
@ -565,6 +572,9 @@
if (!options.previewAutoRefresh) {
refreshPreview();
}
if (options.previewInWindow) {
previewWindow.focus();
}
}
// refresh Preview window
@ -603,15 +613,11 @@
} catch(e) {
sp = 0;
}
var h = "test";
previewWindow.document.open();
previewWindow.document.write(data);
previewWindow.document.close();
previewWindow.document.documentElement.scrollTop = sp;
}
if (options.previewInWindow) {
previewWindow.focus();
}
}
// set keys pressed
@ -631,7 +637,9 @@
li = $("a[accesskey="+String.fromCharCode(e.which)+"]", header).parent('li');
if (li.length !== 0) {
ctrlKey = false;
li.triggerHandler('mouseup');
setTimeout(function() {
li.triggerHandler('mousedown');
},1);
return false;
}
}
@ -654,7 +662,7 @@
}
if (e.which === 9) { // Tab key
if (shiftKey == true || ctrlKey == true || altKey == true) { // Thx Dr Floob.
if (shiftKey == true || ctrlKey == true || altKey == true) {
return false;
}
markup(options.onTab);
@ -670,7 +678,7 @@
$.fn.markItUpRemove = function() {
return this.each(function() {
$$ = $(this).unbind().removeClass('markItUpEditor');
var $$ = $(this).unbind().removeClass('markItUpEditor');
$$.parent('div').parent('div.markItUp').parent('div').replaceWith($$);
}
);

4
javascript/jquery.previsu_spip.js

@ -48,6 +48,10 @@
objet[1])
)
.removeClass('ajaxLoad');
//ouvre un nouvel onglet lorsqu'on clique sur un lien dans la prévisualisation
$(".markItUpPreview a").attr("target","blank");
return false;
});
$('.previsuEditer').click(function(){

2
lang/barre_outils_ar.php

@ -1,4 +1,6 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// B Nouveautes

4
lang/barre_outils_de.php

@ -1,4 +1,6 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// B Nouveautes
@ -36,7 +38,7 @@ $GLOBALS[$GLOBALS['idx_lang']] = array(
'barre_italic' => 'In {kursiv} umwandeln',
'barre_lien' => 'In [Hyperlink->http://...] umwandeln',
'barre_lien_input' => 'Bitte geben sie die Adresse ihrer Website an (Sie k&ouml;nnen eine Webadresse im Format http://www.meineseite.de, eine Mailadresse oder die Nummer eines Artikels dieser Website angeben.)',
'barre_note' => 'In [[Fußnote]] umwandeln',
'barre_note' => 'In [[Fu�note]] umwandeln',
'barre_paragraphe' => 'Absatz einf&uuml;gen',
'barre_quote' => '<quote>Nachricht zitieren</quote>',

2
lang/barre_outils_en.php

@ -1,4 +1,6 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// B Nouveautes

2
lang/barre_outils_es.php

@ -1,4 +1,6 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// B Nouveautes

2
lang/barre_outils_fr.php

@ -1,4 +1,6 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// B Nouveautes

120
lang/barre_outils_it.php

@ -0,0 +1,120 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
$GLOBALS[$GLOBALS['idx_lang']] = array(
// B Nouveautes
'barre_clean' => 'Elimina dal codice tutti i tag HTML',
'barre_lorem_ipsum' => 'Inserisci un paragrafo di prova (lorem ipsum)',
'barre_lorem_ipsum_3' => 'Inserisci 3 paragrafi di prova (lorem ipsum)',
'barre_liste_ul' => 'Converti in lista',
'barre_liste_ol' => 'Converti in lista numerata',
'barre_indenter' => 'Indenta la lista',
'barre_desindenter' => 'Elimina l\'indentazione dela lista',
'barre_inserer_caracteres' => 'Inserisci dei caratteri speciali',
'barre_barre' => 'Barra il testo',
'editer'=>'Modifica',
'voir'=>'Vedi',
// B (depuis SPIP)
'barre_a_accent_grave' => 'Inserisci una A con accento grave maiuscolo',
'barre_aide' => 'Utilizza le scorciatoie tipografiche per arricchire la tua impaginazione',
'barre_c_cedille_maj' => 'Inserisci una C con cediglia maiuscola: &Ccedil;',
'barre_e_accent_aigu' => 'Inserisci una E con accento acuto maiuscola',
'barre_e_accent_grave' => 'Inserisci una E con accento grave minuscola: &Egrave;',
'barre_ea' => 'Inserisci una E con legatura alla A: &aelig;',
'barre_ea_maj' => 'Inserisci una E con legatura alla A maiuscola: &AElig;',
'barre_eo' => 'Inserisci una E con legatura alla O minuscola',
'barre_eo_maj' => 'Inserisci una E con legatura alla O maiuscola',
'barre_euro' => 'Inserisci il simbolo &euro;',
'barre_gestion_cr_changercassemajuscules' => 'Converti la selezione in maiuscolo',
'barre_gestion_cr_changercasseminuscules' => 'Converti la selezione in minuscolo',
'barre_gras' => 'Converti in {{grassetto}}',
'barre_guillemets' => 'Racchiudi tra &laquo; virgolette &raquo;',
'barre_guillemets_simples' => 'Racchiudi tra &ldquo;virgolette di secondo livello&rdquo;',
'barre_intertitre' => 'Trasforma in {{{titolo}}}',
'barre_italic' => 'Converti in {corsivo}',
'barre_lien' => 'Trasforma in [link ipertestuale->http://...]',
'barre_lien_input' => 'Indica l\'indirizzo del tuo link (puoi indicare un indirizzo internet sotto forma di http://www.miosito.com, un indirizzo di posta elettronica, o semplicemente indicare il numero di un articolo di questo sito.',
'barre_note' => 'Trasforma in [[nota a pi&egrave; pagina]]',
'barre_paragraphe' => 'Crea un paragrafo',
'barre_quote' => '<quote>Cita un messaggio</quote>',
// B (depuis BTv2)
'barre_langue' => 'Acronimo lingua',
'barre_miseenevidence' => 'Metti il testo in [*evidenza*]',
'barre_exposant' => 'Metti il testo in &lt;sup&gt;esponente&lt;/sup&gt;',
'barre_petitescapitales' => 'metti il testo in &lt;sc&gt;maiuscoletto&lt;/sc&gt;',
'barre_centrer' => '[|Centra|] il paragrafo',
'barre_alignerdroite' => '[/Allinea a destra/] il paragrafo',
'barre_encadrer' => '[(Riquadra)] il paragrafo',
'barre_e_accent_grave' => 'Inserisci una E maiuscola con accento grave',
'barre_ea' => 'Inserisci una E nella A',
'barre_ea_maj' => 'Inserisci una E nella A maiuscola',
'barre_c_cedille_maj' => 'Inserisci una C con cediglia maiuscola',
'barre_chercher' => 'Cerca e sostituisci',
'barre_tableau' => 'Inserisci/modifica (selezionare prima) una tabella',
'barre_glossaire' => 'Voce di [?glossario] (Wikipedia)',
'barre_caracteres' => 'Caratteri speciali',
'barre_adresse' => 'Indirizzo',
'barre_lien_externe' => 'Link esterno',
'barre_bulle' => 'Tooltip',
'barre_formatages_speciaux' => 'Formattazioni speciali',
'barre_galerie' => 'Apri la galleria',
'barre_gestion_caption' => 'Didascalia e riassunto',
'barre_gestion_colonne' => 'Num colonne',
'barre_gestion_ligne' => 'Num righe',
'barre_gestion_entete' => 'Intestazione',
'barre_gestion_taille' => 'Dimensione fissa',
'barre_gestion_cr_changercasse' => 'Cambia maiuscole/minuscole',
'barre_gestion_cr_changercassemajuscules' => 'Passa in maiuscole',
'barre_gestion_cr_changercasseminuscules' => 'Passa in minuscole',
'barre_gestion_cr_chercher' => 'Cerca',
'barre_gestion_cr_remplacer' => 'Sostituisci',
'barre_gestion_cr_casse' => 'Rispetta le maiuscole/minuscole',
'barre_gestion_cr_tout' => 'Sostituisci tutto',
'barre_gestion_cr_entier' => 'Parola intera',
'barre_preview' => 'Modalit� anteprima',
'barre_stats' => 'Mostra le statistiche del testo',
'barre_code' => 'Impagina un &lt;code&gt;codice informatico&lt;/code&gt;',
'barre_cadre' => 'Metti dentro una &lt;cadre&gt;zona di inserimento del testo&lt;/cadre&gt;',
'barre_poesie' => 'Impagina come una &lt;poesie&gt;poesia&lt;/poesie&gt;',
'barre_ancres' => 'Gestione delle ancore',
'barre_gestion_anc_caption' => 'Gestione delle ancore',
'barre_gestion_anc_inserer' => 'Trasforma in ancora',
'barre_gestion_anc_nom' => 'Nome dell\'ancora',
'barre_gestion_anc_pointer' => 'Punta verso un\'ancora',
'barre_gestion_anc_cible' => 'Destinazione ancora',
'barre_gestion_anc_bulle' => 'Tooltip ancora',
// C
'config_info_enregistree' => "Configurazione salvata",
// E
'explication_barre_outils_public' => "Gli script CSS e Javascript delle barre di testo
(estensione Porte Plume) vengono caricate nello spazio pubblico
e consentono di utilizzare queste barre sui moduli dei forum,
i pennarelli pubblici o per altri plugin, se le loro rispettive configurazioni
lo permettono.",
'explication_barre_outils_public_2' => "Puoi scegliere di non caricare
questi script al fine di allegerire il peso delle pagine pubbliche.
Qualunque sia la configurazione dei forum, pennarelli o plugin,
nessuna barra di testo di Porte Pplume potr&agrave; essere
inserita automaticamente nello spazio pubblico.",
// I
'info_porte_plume_titre' => "Configura le barre di testo",
'info_barre_outils_public' => "Barra di testo pubblica",
// L
'label_barre_outils_public_oui' => "Caricare gli script della barra di testo sullo spazio pubblico",
'label_barre_outils_public_non' => "Non caricare gli script della barra di testo sullo spazio pubblico",
);
?>

154
plugin.xml

@ -1,68 +1,86 @@
<plugin>
<nom><multi>[fr]Porte plume[en]Quill[ar]&#1575;&#1604;&#1585;&#1610;&#1588;&#1577;[de]Federhalter</multi></nom>
<auteur>Matthieu Marcillaud</auteur>
<licence>GNU/GPL</licence>
<version>1.7.2</version>
<description>
<multi>[fr]Une barre d'outil pour bien &eacute;crire
_ Porte plume est une barre d'outil extensible pour SPIP qui
utilise la librairie javascript [MarkItUp->http://markitup.jaysalvat.com/home/]
Les icones proviennent de la librairie [FamFamFam->http://www.famfamfam.com/]
[en]A toolbar to enhance your texts
_ The Quill is a SPIP extensible toolbar which uses the javascript library
[MarkItUp->http://markitup.jaysalvat.com/home/]
Icons are courtesy of the library [FamFamFam->http://www.famfamfam.com/]
[ar]&#1588;&#1585;&#1610;&#1591; &#1571;&#1583;&#1608;&#1575;&#1578; &#1604;&#1578;&#1581;&#1587;&#1610;&#1606; &#1575;&#1604;&#1603;&#1578;&#1575;&#1576;&#1577;
_ &#1575;&#1604;&#1585;&#1610;&#1588;&#1577; &#1607;&#1610; &#1588;&#1585;&#1610;&#1591; &#1571;&#1583;&#1608;&#1575;&#1578; &#1605;&#1608;&#1587;&#1593; &#1604;&#1606;&#1592;&#1575;&#1605; SPIP &#1610;&#1587;&#1578;&#1582;&#1583;&#1605; &#1605;&#1603;&#1578;&#1576;&#1577; &#1580;&#1575;&#1601;&#1575;&#1587;&#1603;&#1585;&#1610;&#1576;&#1578; [MarkItUp->http://markitup.jaysalvat.com/home/]
&#1575;&#1604;&#1571;&#1610;&#1602;&#1608;&#1606;&#1575;&#1578; &#1578;&#1571;&#1578;&#1610; &#1605;&#1606; &#1605;&#1603;&#1578;&#1576;&#1577; [FamFamFam->http://www.famfamfam.com/]
[de]Eine Me&uuml;leiste zum Versch&ouml;nern der Texte.
_ Der Federhalter ist eine erweiterbare Werkzeugleiste f&uuml;r SPIP auf Grundlage der Javascript-Bibiliothek [MarkItUp->http://markitup.jaysalvat.com/home/]
Die Icons stammen aus der Sammlung [FamFamFam->http://www.famfamfam.com/].</multi>
</description>
<lien>http://www.spip-contrib.net/Porte-plume,3117</lien> <!-- URI de documentation -->
<etat>stable</etat>
<prefix>porte_plume</prefix>
<!-- Icone de http://icons.mysitemyway.com/free-clipart-icons/1/traditional-ink-bottle-pen-icon-id/83350/style-id/614/high-resolution-dark-blue-denim-jeans-icons/business/ -->
<icon>images/porte-plume-128.png</icon>
<options>porte_plume_options.php</options>
<fonctions>inc/barre_outils.php</fonctions>
<pipeline>
<nom>autoriser</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>insert_head</nom>
<action>insert_head_public</action>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>insert_head_css</nom>
<action>insert_head_css</action>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>header_prive</nom>
<action>insert_head_prive</action>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<!-- Pour formulaire de configuration -->
<pipeline>
<nom>affiche_milieu</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>configurer_liste_metas</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<necessite id="SPIP" version="[2.0.2;]" />
</plugin>
<plugin>
<nom><multi>[fr]Porte plume[en]Quill[ar]&#1575;&#1604;&#1585;&#1610;&#1588;&#1577;[de]Federhalter</multi></nom>
<slogan>
<multi>
[fr]Une barre d'outil pour bien &eacute;crire
[en]A toolbar to enhance your texts
[ar]&#1588;&#1585;&#1610;&#1591; &#1571;&#1583;&#1608;&#1575;&#1578; &#1604;&#1578;&#1581;&#1587;&#1610;&#1606; &#1575;&#1604;&#1603;&#1578;&#1575;&#1576;&#1577;
[de]Eine Me&#252;leiste zum Versch&#246;nern der Texte
</multi>
</slogan>
<auteur>Matthieu Marcillaud</auteur>
<licence>GNU/GPL</licence>
<version>1.7.9</version>
<description>
<multi>
[fr]Porte plume est une barre d'outil extensible pour SPIP qui
utilise la librairie javascript [MarkItUp->http://markitup.jaysalvat.com/home/]
Les icones proviennent de la librairie [FamFamFam->http://www.famfamfam.com/]
[en]The Quill is a SPIP extensible toolbar which uses the javascript library
[MarkItUp->http://markitup.jaysalvat.com/home/]
Icons are courtesy of the library [FamFamFam->http://www.famfamfam.com/]
[ar]&#1575;&#1604;&#1585;&#1610;&#1588;&#1577; &#1607;&#1610; &#1588;&#1585;&#1610;&#1591; &#1571;&#1583;&#1608;&#1575;&#1578; &#1605;&#1608;&#1587;&#1593; &#1604;&#1606;&#1592;&#1575;&#1605; SPIP &#1610;&#1587;&#1578;&#1582;&#1583;&#1605; &#1605;&#1603;&#1578;&#1576;&#1577; &#1580;&#1575;&#1601;&#1575;&#1587;&#1603;&#1585;&#1610;&#1576;&#1578; [MarkItUp->http://markitup.jaysalvat.com/home/]
&#1575;&#1604;&#1571;&#1610;&#1602;&#1608;&#1606;&#1575;&#1578; &#1578;&#1571;&#1578;&#1610; &#1605;&#1606; &#1605;&#1603;&#1578;&#1576;&#1577; [FamFamFam->http://www.famfamfam.com/]
[de]Der Federhalter ist eine erweiterbare Werkzeugleiste f&#252;r SPIP auf Grundlage der Javascript-Bibiliothek [MarkItUp->http://markitup.jaysalvat.com/home/]
Die Icons stammen aus der Sammlung [FamFamFam->http://www.famfamfam.com/].
</multi>
</description>
<lien>https://contrib.spip.net/Porte-plume,3117</lien>
<etat>stable</etat>
<prefix>porte_plume</prefix>
<!-- Icone de http://icons.mysitemyway.com/free-clipart-icons/1/traditional-ink-bottle-pen-icon-id/83350/style-id/614/high-resolution-dark-blue-denim-jeans-icons/business/ -->
<icon>images/porte-plume-128.png</icon>
<fonctions>inc/barre_outils.php</fonctions>
<pipeline>
<nom>autoriser</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>insert_head</nom>
<action>insert_head_public</action>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>insert_head_css</nom>
<action>insert_head_css</action>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>header_prive</nom>
<action>insert_head_prive</action>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>porte_plume_barre_pre_charger</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>porte_plume_barre_charger</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>porte_plume_lien_classe_vers_icone</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<!-- Pour formulaire de configuration -->
<pipeline>
<nom>affiche_milieu</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<pipeline>
<nom>configurer_liste_metas</nom>
<inclure>porte_plume_pipelines.php</inclure>
</pipeline>
<necessite id="SPIP" version="[2.0.2;2.1.99]" />
<categorie>edition</categorie>
</plugin>

20
porte_plume_options.php

@ -1,20 +0,0 @@
<?php
/*
* Plugin Porte Plume pour SPIP 2
* Licence GPL
* Auteur Matthieu Marcillaud
*/
// si les pipelines ont deja ete declares dans les options d'un squelette,
// ne pas les ecraser ici... sinon, les declarer.
foreach (array(
'porte_plume_barre_pre_charger',
'porte_plume_barre_charger',
'porte_plume_lien_classe_vers_icone',
) as $p) {
if (!isset($GLOBALS['spip_pipeline'][$p]))
$GLOBALS['spip_pipeline'][$p] = "";
}
?>

8
porte_plume_pipelines.php

@ -4,6 +4,9 @@
* Licence GPL
* Auteur Matthieu Marcillaud
*/
if (!defined("_ECRIRE_INC_VERSION")) return;
#define('PORTE_PLUME_PUBLIC', true);
function porte_plume_autoriser($flux){return $flux;}
@ -114,4 +117,9 @@ function porte_plume_affiche_milieu($flux){
return $flux;
}
function porte_plume_porte_plume_barre_pre_charger($flux){return $flux;}
function porte_plume_porte_plume_barre_charger($flux){return $flux;}
function porte_plume_porte_plume_lien_classe_vers_icone($flux){return $flux;}
?>

2
porte_plume_start.js_fonctions.php

@ -1,5 +1,7 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
/**
* Retourne la definition de la barre markitup designee.
* (cette declaration est au format json)

4
prive/porte_plume_preview_fonctions.php

@ -1,5 +1,7 @@
<?php
if (!defined("_ECRIRE_INC_VERSION")) return;
// retourner le charset SQL si on le connait, en priorite
// sinon, on utilise le charset de l'affichage HTML.
// Cependant, on peut forcer un charset donne avec une constante :
@ -9,7 +11,7 @@ function filtre_pp_charset() {
return PORTE_PLUME_PREVIEW_CHARSET;
}
$charset = $GLOBALS['charset'];
$charset = $GLOBALS['meta']['charset'];
$charset_sql = isset($GLOBALS['charset_sql_base']) ? $GLOBALS['charset_sql_base'] : '';
if ($charset_sql == 'utf8') {
$charset_sql = 'utf-8';

Loading…
Cancel
Save