Пример #1
0
	function testAjouterFonctions(){
		$b = new Barre_outils($this->baseParamsBarre);
		$b->Ajouterfonction("function dido(){}");
		$this->assertPattern('/function dido\(/', $b->fonctions);		
	}
Пример #2
0
	/**
	 * Transform a variable into its javascript equivalent (recursive)
	 * (depuis ecrire/inc/json, mais modifie pour que les fonctions
	 * js ne soient pas mises dans un string
	 * 
	 * @access private
	 * @param mixed the variable
	 * @return string js script | boolean false if error
	 */
	function json_export($var) {
		$asso = false;
		switch (true) {
			case is_null($var) :
				return 'null';
			case is_string($var) :
				if (strtolower(substr(ltrim($var),0,8))=='function')
					return $var;
				return '"' . addcslashes($var, "\"\\\n\r") . '"';
			case is_bool($var) :
				return $var ? 'true' : 'false';
			case is_scalar($var) :
				return $var;
			case is_object( $var) :
				$var = get_object_vars($var);
				$asso = true;
			case is_array($var) :
				$keys = array_keys($var);
				$ikey = count($keys);
				while (!$asso && $ikey--) {
					$asso = $ikey !== $keys[$ikey];
				}
				$sep = '';
				if ($asso) {
					$ret = '{';
					foreach ($var as $key => $elt) {
						$ret .= $sep . '"' . $key . '":' . Barre_outils::json_export($elt);
						$sep = ',';
					}
					return $ret ."}\n";
				} else {
					$ret = '[';
					foreach ($var as $elt) {
						$ret .= $sep . Barre_outils::json_export($elt);
						$sep = ',';
					}
					return $ret ."]\n";
				}
		}
		return false;
	}
Пример #3
0
/**
 * Definition de la barre 'edition' pour markitup
 */
function barre_outils_edition(){
	$set = new Barre_outils(array(
		'nameSpace'         => 'edition',
		#'previewAutoRefresh'=> true,
		#'previewParserPath' => url_absolue(generer_url_public('preview')),
		'onShiftEnter'      => array('keepDefault'=>false, 'replaceWith'=>"\n_ "),
		'onCtrlEnter'       => array('keepDefault'=>false, 'replaceWith'=>"\n\n"),
		// garder les listes si on appuie sur entree
		'onEnter'           => array('keepDefault'=>false, 'selectionType'=>'return', 'replaceWith'=>"\n"),
		// Utile quand on saisi du code, mais pas accessible !
		#'onTab'             => array('keepDefault'=>false, 'replaceWith'=>"\t"),
		'markupSet'         => array(
			// H1 - {{{
			array(
				"id"        => 'header1', 
				"name"      => _T('barre_outils:barre_intertitre'), 
				"key"       => "H", 
				"className" => "outil_header1", 
				"openWith" => "\n{{{", 
				"closeWith" => "}}}\n",
				"display"   => true,
				"selectionType" => "line",
			),
			// Bold - {{
			array(
				"id"        => 'bold',
				"name"      => _T('barre_outils:barre_gras'), 
				"key"       => "B", 
				"className" => "outil_bold", 
				"replaceWith" => "function(h){ return espace_si_accolade(h, '{{', '}}');}",
				//"openWith" => "{{", 
				//"closeWith" => "}}",
				"display"   => true,
				"selectionType" => "word",
			),
			// Italic - {
			array(
				"id"        => 'italic',
				"name"      => _T('barre_outils:barre_italic'), 
				"key"       => "I", 
				"className" => "outil_italic", 
				"replaceWith" => "function(h){ return espace_si_accolade(h, '{', '}');}",
				//"openWith" => "{", 
				//"closeWith" => "}",
				"display"   => true,
				"selectionType" => "word",
			),
				
			// montrer une suppression
			array(
				"id"        => 'stroke_through',
				"name"      => _T('barre_outils:barre_barre'), // :-)
				"className" => "outil_stroke_through", 
				"openWith" => "<del>", 
				"closeWith" => "</del>",
				"display"   => true,
				"selectionType" => "word",
			),
			
			// listes -*
			array(
				"id"        => 'liste_ul',
				"name"      => _T('barre_outils:barre_liste_ul'), 
				"className" => "outil_liste_ul", 
				"replaceWith" => "function(h){ return outil_liste(h, '*');}", 
				"display"   => true,
				"selectionType" => "line",
				"forceMultiline" => true,
				"dropMenu"    => array(
					// liste -#		
					array(
						"id"        => 'liste_ol',
						"name"      => _T('barre_outils:barre_liste_ol'), 
						"className" => "outil_liste_ol", 
						"replaceWith" => "function(h){ return outil_liste(h, '#');}", 
						"display"   => true,
						"selectionType" => "line",
						"forceMultiline" => true,
					),
					// desindenter	
					array(
						"id"        => 'desindenter',
						"name"      => _T('barre_outils:barre_desindenter'), 
						"className" => "outil_desindenter", 
						"replaceWith" => "function(h){return outil_desindenter(h);}", 
						"display"   => true,
						"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,
					),
				),
			),	

						
			
			// separation
			array(
				"id" => "sepLink", // trouver un nom correct !
				"separator" => "---------------",
				"display"   => true,
			),
			// lien spip
			array(
				"id"          => 'link',
				"name"        => _T('barre_outils:barre_lien'),
				"key"         => "L", 
				"className"   => "outil_link", 
				"openWith"    => "[", 
				"closeWith"   => "->[!["._T('barre_outils:barre_lien_input')."]!]]",
				"display"     => true,
			),
			// note en bas de page spip
			array(
				"id"          => 'notes',
				"name"        => _T('barre_outils:barre_note'),
				"className"   => "outil_notes", 
				"openWith"    => "[[", 
				"closeWith"   => "]]",
				"display"     => true,
				"selectionType" => "word",
			),
					
			
			// separation
			array(
				"id" => "sepGuillemets",
				"separator" => "---------------",
				"display"   => true,
			),
			
			// quote spip
			// (affichee dans forum)
			array(
				"id"          => 'quote',
				"name"        => _T('barre_outils:barre_quote'),
				"key"         => "Q", 
				"className"   => "outil_quote", 
				"openWith"    => "\n<quote>", 
				"closeWith"   => "</quote>\n",
				"display"     => true,
				"selectionType" => "word",
			),
			// guillemets
			array(
				"id"          => 'guillemets',
				"name"        => _T('barre_outils:barre_guillemets'),
				"className"   => "outil_guillemets", 
				"openWith"    => "&laquo;", 
				"closeWith"   => "&raquo;",
				"display"     => true,
				"lang"        => array('fr','eo','cpf','ar','es'),
				"selectionType" => "word",
			),
			// guillemets internes
			array(
				"id"          => 'guillemets_simples',
				"name"        => _T('barre_outils:barre_guillemets_simples'),
				"className"   => "outil_guillemets_simples", 
				"openWith"    => "&ldquo;", 
				"closeWith"   => "&rdquo;",
				"display"     => true,
				"lang"        => array('fr','eo','cpf','ar','es'),
				"selectionType" => "word",
			),
			// guillemets de
			array(
				"id"          => 'guillemets_de',
				"name"        => _T('barre_outils:barre_guillemets'),
				"className"   => "outil_guillemets_de", 
				"openWith"    => "&bdquo;", 
				"closeWith"   => "&ldquo;",
				"display"     => true,
				"lang"        => array('bg','de','pl','hr','src'),
				"selectionType" => "word",
			),
			// guillemets de, simples
			array(
				"id"          => 'guillemets_de_simples',
				"name"        => _T('barre_outils:barre_guillemets_simples'),
				"className"   => "outil_guillemets_de_simples", 
				"openWith"    => "&sbquo;", 
				"closeWith"   => "&lsquo;",
				"display"     => true,
				"lang"        => array('bg','de','pl','hr','src'),
				"selectionType" => "word",
			),
			// guillemets autres langues
			array(
				"id"          => 'guillemets_autres',
				"name"        => _T('barre_outils:barre_guillemets'),
				"className"   => "outil_guillemets_simples", 
				"openWith"    => "&ldquo;", 
				"closeWith"   => "&rdquo;",
				"display"     => true,
				"lang_not"    => array('fr','eo','cpf','ar','es','bg','de','pl','hr','src'),
				"selectionType" => "word",
			),
			// guillemets simples, autres langues
			array(
				"id"          => 'guillemets_autres_simples',
				"name"        => _T('barre_outils:barre_guillemets_simples'),
				"className"   => "outil_guillemets_uniques", 
				"openWith"    => "&lsquo;", 
				"closeWith"   => "&rsquo;",
				"display"     => true,
				"lang_not"    => array('fr','eo','cpf','ar','es','bg','de','pl','hr','src'),
				"selectionType" => "word",
			),
			
			// separation
			array(
				"id" => "sepCaracteres",
				"separator" => "---------------",
				"display"   => true,
			),
			// icones clavier
			array(
				"id"          => 'grpCaracteres',
				"name"        => _T('barre_outils:barre_inserer_caracteres'),
				"className"   => 'outil_caracteres',
				"display"     => true,
				
				"dropMenu"    => array(
					// A majuscule accent grave
					array(
						"id"          => 'A_grave',
						"name"        => _T('barre_outils:barre_a_accent_grave'),
						"className"   => "outil_a_maj_grave", 
						"replaceWith"   => "&Agrave;",
						"display"     => true,
						"lang"    => array('fr','eo','cpf'),
					),
					// E majuscule accent aigu
					array(
						"id"          => 'E_aigu',
						"name"        => _T('barre_outils:barre_e_accent_aigu'),
						"className"   => "outil_e_maj_aigu", 
						"replaceWith"   => "&Eacute;",
						"display"     => true,
						"lang"    => array('fr','eo','cpf'),
					),
					// E majuscule accent grave
					array(
						"id"          => 'E_grave',
						"name"        => _T('barre_outils:barre_e_accent_grave'),
						"className"   => "outil_e_maj_grave",
						"replaceWith" => "&Egrave;",
						"display"     => true,
						"lang"        => array('fr','eo','cpf'),
					),
					// e dans le a
					array(
						"id"          => 'aelig',
						"name"        => _T('barre_outils:barre_ea'),
						"className"   => "outil_aelig",
						"replaceWith" => "&aelig;",
						"display"     => true,
						"lang"        => array('fr','eo','cpf'),
					),
					// e dans le a majuscule
					array(
						"id"          => 'AElig',
						"name"        => _T('barre_outils:barre_ea_maj'),
						"className"   => "outil_aelig_maj",
						"replaceWith" => "&AElig;",
						"display"     => true,
						"lang"        => array('fr','eo','cpf'),
					),
					// oe 
					array(
						"id"          => 'oe',
						"name"        => _T('barre_outils:barre_eo'),
						"className"   => "outil_oe", 
						"replaceWith"   => "&oelig;",
						"display"     => true,
						"lang"    => array('fr'),
					),
					// OE 
					array(
						"id"          => 'OE',
						"name"        => _T('barre_outils:barre_eo_maj'),
						"className"   => "outil_oe_maj", 
						"replaceWith"   => "&OElig;",
						"display"     => true,
						"lang"    => array('fr'),
					),
					// c cedille majuscule
					array(
						"id"          => 'Ccedil',
						"name"        => _T('barre_outils:barre_c_cedille_maj'),
						"className"   => "outil_ccedil_maj",
						"replaceWith" => "&Ccedil;",
						"display"     => true,
						"lang"        => array('fr','eo','cpf'),
					),
					// Transformation en majuscule
					array(
						"id"          => 'uppercase',
						"name"        => _T('barre_outils:barre_gestion_cr_changercassemajuscules'),
						"className"   => "outil_uppercase",
						"replaceWith" => 'function(markitup) { return markitup.selection.toUpperCase() }',
						"display"     => true,
						"lang"        => array('fr','en'),
					),
					// Transformation en minuscule
					array(
						"id"          => 'lowercase',
						"name"        => _T('barre_outils:barre_gestion_cr_changercasseminuscules'),
						"className"   => "outil_lowercase",
						"replaceWith" => 'function(markitup) { return markitup.selection.toLowerCase() }',
						"display"     => true,
						"lang"        => array('fr','en'),
					),
				),
			),

/*	inutile (origine de markitup et non de spip)
					
			// separation
			array(
				"id" => "sepPreview", // trouver un nom correct !
				"separator" => "---------------",
				"display"   => true,
			),
			// clean
			array(
				"id"          => 'clean',
				"name"        => _T('barre_outils:barre_clean'), 
				"className"   => "outil_clean",
				"replaceWith" => 'function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") }',
				"display"     => true,
			),
			// preview
			array(
				"id"        => 'preview',
				"name"      => _T('barre_outils:barre_preview'), 
				"className" => "outil_preview",
				"call"      => "preview",
				"display"   => true,
			),
*/
			
		),
		
	'functions'         => "
				// remplace ou cree -* ou -** ou -# ou -##
				function outil_liste(h, c) {
					if ((s = h.selection) && (r = s.match(/^-([*#]+) (.*)\$/)))	 {
						r[1] = r[1].replace(/[#*]/g, c);
						s = '-'+r[1]+' '+r[2];
					} else {
						s = '-' + c + ' '+s;
					}
					return s;
				}

				// indente des -* ou -#
				function outil_indenter(h) {
					if (s = h.selection) {
						if (s.substr(0,2)=='-*') {
							s = '-**' + s.substr(2);
						} else if (s.substr(0,2)=='-#') {
							s = '-##' + s.substr(2);
						} else {
							s = '-* ' + s;
						}
					}
					return s;
				}
						
				// desindente des -* ou -** ou -# ou -##
				function outil_desindenter(h){
					if (s = h.selection) {
						if (s.substr(0,3)=='-**') {
							s = '-*' + s.substr(3);
						} else if (s.substr(0,3)=='-* ') {
							s = s.substr(3);
						} else if (s.substr(0,3)=='-##') {
							s = '-#' + s.substr(3);
						} else if (s.substr(0,3)=='-# ') {
							s = s.substr(3);
						}
					}
					return s;
				}
				
				// ajouter un espace avant, apres un {qqc} pour ne pas que
				// gras {{}} suivi de italique {} donnent {{{}}}, mais { {{}} }
				function espace_si_accolade(h, openWith, closeWith){
					if (s = h.selection) {
						// accolade dans la selection
						if (s.charAt(0)=='{') {
							return openWith + ' ' + s + ' ' + closeWith;
						}
						// accolade avant la selection
						else if (c = h.textarea.selectionStart) {
							if (h.textarea.value.charAt(c-1) == '{') {
								return ' ' + openWith + s + closeWith + ' ';
							}
						}
					}
					return openWith + s + closeWith;
				} 
				",
	));
	
	$set->cacher(array(
		'stroke_through',
		'clean', 'preview',
	));
	
	return $set;
}
Пример #4
0
/**
 * Définition de la barre 'edition' pour markitup
 *
 * @return Barre_outils La barre d'outil
 */
function barre_outils_edition()
{
    $set = new Barre_outils(array('nameSpace' => 'edition', 'onShiftEnter' => array('keepDefault' => false, 'replaceWith' => "\n_ "), 'onCtrlEnter' => array('keepDefault' => false, 'replaceWith' => "\n\n"), 'onEnter' => array('keepDefault' => false, 'selectionType' => 'return', 'replaceWith' => "\n"), 'markupSet' => array(array("id" => 'header1', "name" => _T('barreoutils:barre_intertitre'), "key" => "H", "className" => "outil_header1", "openWith" => "\n{{{", "closeWith" => "}}}\n", "display" => true, "selectionType" => "line"), array("id" => 'bold', "name" => _T('barreoutils:barre_gras'), "key" => "B", "className" => "outil_bold", "replaceWith" => "function(h){ return espace_si_accolade(h, '{{', '}}');}", "display" => true, "selectionType" => "word"), array("id" => 'italic', "name" => _T('barreoutils:barre_italic'), "key" => "I", "className" => "outil_italic", "replaceWith" => "function(h){ return espace_si_accolade(h, '{', '}');}", "display" => true, "selectionType" => "word"), array("id" => 'stroke_through', "name" => _T('barreoutils:barre_barre'), "className" => "outil_stroke_through", "openWith" => "<del>", "closeWith" => "</del>", "display" => true, "selectionType" => "word"), array("id" => 'liste_ul', "name" => _T('barreoutils:barre_liste_ul'), "className" => "outil_liste_ul", "replaceWith" => "function(h){ return outil_liste(h, '*');}", "display" => true, "selectionType" => "line", "forceMultiline" => true, "dropMenu" => array(array("id" => 'liste_ol', "name" => _T('barreoutils:barre_liste_ol'), "className" => "outil_liste_ol", "replaceWith" => "function(h){ return outil_liste(h, '#');}", "display" => true, "selectionType" => "line", "forceMultiline" => true), array("id" => 'desindenter', "name" => _T('barreoutils:barre_desindenter'), "className" => "outil_desindenter", "replaceWith" => "function(h){return outil_desindenter(h);}", "display" => true, "selectionType" => "line", "forceMultiline" => true), array("id" => 'indenter', "name" => _T('barreoutils:barre_indenter'), "className" => "outil_indenter", "replaceWith" => "function(h){return outil_indenter(h);}", "display" => true, "selectionType" => "line", "forceMultiline" => true))), array("id" => "sepLink", "separator" => "---------------", "display" => true), array("id" => 'link', "name" => _T('barreoutils:barre_lien'), "key" => "L", "className" => "outil_link", "openWith" => "[", "closeWith" => "->[![" . _T('barreoutils:barre_lien_input') . "]!]]", "display" => true), array("id" => 'notes', "name" => _T('barreoutils:barre_note'), "className" => "outil_notes", "openWith" => "[[", "closeWith" => "]]", "display" => true, "selectionType" => "word"), array("id" => "sepGuillemets", "separator" => "---------------", "display" => true), array("id" => 'quote', "name" => _T('barreoutils:barre_quote'), "key" => "Q", "className" => "outil_quote", "openWith" => "\n<quote>", "closeWith" => "</quote>\n", "display" => true, "selectionType" => "word", "dropMenu" => array(array("id" => 'barre_poesie', "name" => _T('barreoutils:barre_poesie'), "className" => "outil_poesie", "openWith" => "\n&lt;poesie&gt;", "closeWith" => "&lt;/poesie&gt;\n", "display" => true, "selectionType" => "line"))), array("id" => 'guillemets', "name" => _T('barreoutils:barre_guillemets'), "className" => "outil_guillemets", "openWith" => "&laquo;", "closeWith" => "&raquo;", "display" => true, "lang" => array('fr', 'eo', 'cpf', 'ar', 'es'), "selectionType" => "word", "dropMenu" => array(array("id" => 'guillemets_simples', "name" => _T('barreoutils:barre_guillemets_simples'), "className" => "outil_guillemets_simples", "openWith" => "&ldquo;", "closeWith" => "&rdquo;", "display" => true, "lang" => array('fr', 'eo', 'cpf', 'ar', 'es'), "selectionType" => "word"))), array("id" => 'guillemets_de', "name" => _T('barreoutils:barre_guillemets'), "className" => "outil_guillemets_de", "openWith" => "&bdquo;", "closeWith" => "&ldquo;", "display" => true, "lang" => array('bg', 'de', 'pl', 'hr', 'src'), "selectionType" => "word", "dropMenu" => array(array("id" => 'guillemets_de_simples', "name" => _T('barreoutils:barre_guillemets_simples'), "className" => "outil_guillemets_de_simples", "openWith" => "&sbquo;", "closeWith" => "&lsquo;", "display" => true, "lang" => array('bg', 'de', 'pl', 'hr', 'src'), "selectionType" => "word"))), array("id" => 'guillemets_autres', "name" => _T('barreoutils:barre_guillemets'), "className" => "outil_guillemets_simples", "openWith" => "&ldquo;", "closeWith" => "&rdquo;", "display" => true, "lang_not" => array('fr', 'eo', 'cpf', 'ar', 'es', 'bg', 'de', 'pl', 'hr', 'src'), "selectionType" => "word", "dropMenu" => array(array("id" => 'guillemets_autres_simples', "name" => _T('barreoutils:barre_guillemets_simples'), "className" => "outil_guillemets_uniques", "openWith" => "&lsquo;", "closeWith" => "&rsquo;", "display" => true, "lang_not" => array('fr', 'eo', 'cpf', 'ar', 'es', 'bg', 'de', 'pl', 'hr', 'src'), "selectionType" => "word"))), array("id" => "sepCaracteres", "separator" => "---------------", "display" => true), array("id" => 'grpCaracteres', "name" => _T('barreoutils:barre_inserer_caracteres'), "className" => 'outil_caracteres', "display" => true, "dropMenu" => array(array("id" => 'A_grave', "name" => _T('barreoutils:barre_a_accent_grave'), "className" => "outil_a_maj_grave", "replaceWith" => "&Agrave;", "display" => true, "lang" => array('fr', 'eo', 'cpf')), array("id" => 'E_aigu', "name" => _T('barreoutils:barre_e_accent_aigu'), "className" => "outil_e_maj_aigu", "replaceWith" => "&Eacute;", "display" => true, "lang" => array('fr', 'eo', 'cpf')), array("id" => 'E_grave', "name" => _T('barreoutils:barre_e_accent_grave'), "className" => "outil_e_maj_grave", "replaceWith" => "&Egrave;", "display" => true, "lang" => array('fr', 'eo', 'cpf')), array("id" => 'aelig', "name" => _T('barreoutils:barre_ea'), "className" => "outil_aelig", "replaceWith" => "&aelig;", "display" => true, "lang" => array('fr', 'eo', 'cpf')), array("id" => 'AElig', "name" => _T('barreoutils:barre_ea_maj'), "className" => "outil_aelig_maj", "replaceWith" => "&AElig;", "display" => true, "lang" => array('fr', 'eo', 'cpf')), array("id" => 'oe', "name" => _T('barreoutils:barre_eo'), "className" => "outil_oe", "replaceWith" => "&oelig;", "display" => true, "lang" => array('fr')), array("id" => 'OE', "name" => _T('barreoutils:barre_eo_maj'), "className" => "outil_oe_maj", "replaceWith" => "&OElig;", "display" => true, "lang" => array('fr')), array("id" => 'Ccedil', "name" => _T('barreoutils:barre_c_cedille_maj'), "className" => "outil_ccedil_maj", "replaceWith" => "&Ccedil;", "display" => true, "lang" => array('fr', 'eo', 'cpf')), array("id" => 'uppercase', "name" => _T('barreoutils:barre_gestion_cr_changercassemajuscules'), "className" => "outil_uppercase", "replaceWith" => 'function(markitup) { return markitup.selection.toUpperCase() }', "display" => true, "lang" => array('fr', 'en')), array("id" => 'lowercase', "name" => _T('barreoutils:barre_gestion_cr_changercasseminuscules'), "className" => "outil_lowercase", "replaceWith" => 'function(markitup) { return markitup.selection.toLowerCase() }', "display" => true, "lang" => array('fr', 'en')))), array("id" => "sepCode", "separator" => "---------------", "display" => true), array("id" => 'grpCode', "name" => _T('barreoutils:barre_inserer_code'), "className" => 'outil_code', "openWith" => "<code>", "closeWith" => "</code>", "display" => true, "dropMenu" => array(array("id" => 'cadre', "name" => _T('barreoutils:barre_inserer_cadre'), "className" => 'outil_cadre', "openWith" => "<cadre>\n", "closeWith" => "\n</cadre>", "display" => true)))), 'functions' => "\n\t\t\t\t// remplace ou cree -* ou -** ou -# ou -##\n\t\t\t\tfunction outil_liste(h, c) {\n\t\t\t\t\tif ((s = h.selection) && (r = s.match(/^-([*#]+) (.*)\$/)))\t {\n\t\t\t\t\t\tr[1] = r[1].replace(/[#*]/g, c);\n\t\t\t\t\t\ts = '-'+r[1]+' '+r[2];\n\t\t\t\t\t} else {\n\t\t\t\t\t\ts = '-' + c + ' '+s;\n\t\t\t\t\t}\n\t\t\t\t\treturn s;\n\t\t\t\t}\n\n\t\t\t\t// indente des -* ou -#\n\t\t\t\tfunction outil_indenter(h) {\n\t\t\t\t\tif (s = h.selection) {\n\t\t\t\t\t\tif (s.substr(0,2)=='-*') {\n\t\t\t\t\t\t\ts = '-**' + s.substr(2);\n\t\t\t\t\t\t} else if (s.substr(0,2)=='-#') {\n\t\t\t\t\t\t\ts = '-##' + s.substr(2);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ts = '-* ' + s;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn s;\n\t\t\t\t}\n\t\t\t\t\t\t\n\t\t\t\t// desindente des -* ou -** ou -# ou -##\n\t\t\t\tfunction outil_desindenter(h){\n\t\t\t\t\tif (s = h.selection) {\n\t\t\t\t\t\tif (s.substr(0,3)=='-**') {\n\t\t\t\t\t\t\ts = '-*' + s.substr(3);\n\t\t\t\t\t\t} else if (s.substr(0,3)=='-* ') {\n\t\t\t\t\t\t\ts = s.substr(3);\n\t\t\t\t\t\t} else if (s.substr(0,3)=='-##') {\n\t\t\t\t\t\t\ts = '-#' + s.substr(3);\n\t\t\t\t\t\t} else if (s.substr(0,3)=='-# ') {\n\t\t\t\t\t\t\ts = s.substr(3);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn s;\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\t// ajouter un espace avant, apres un {qqc} pour ne pas que\n\t\t\t\t// gras {{}} suivi de italique {} donnent {{{}}}, mais { {{}} }\n\t\t\t\tfunction espace_si_accolade(h, openWith, closeWith){\n\t\t\t\t\tif (s = h.selection) {\n\t\t\t\t\t\t// accolade dans la selection\n\t\t\t\t\t\tif (s.charAt(0)=='{') {\n\t\t\t\t\t\t\treturn openWith + ' ' + s + ' ' + closeWith;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// accolade avant la selection\n\t\t\t\t\t\telse if (c = h.textarea.selectionStart) {\n\t\t\t\t\t\t\tif (h.textarea.value.charAt(c-1) == '{') {\n\t\t\t\t\t\t\t\treturn ' ' + openWith + s + closeWith + ' ';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn openWith + s + closeWith;\n\t\t\t\t} \n\t\t\t\t"));
    $set->cacher(array('stroke_through', 'clean', 'preview'));
    return $set;
}
Пример #5
0
/**
 * Definition de la barre 'edition' pour markitup
 */
function barre_outils_edition(){
	$set = new Barre_outils(array(
		'nameSpace'         => 'edition',
		#'previewAutoRefresh'=> true,
		#'previewParserPath' => url_absolue(generer_url_public('preview')),
		'onShiftEnter'      => array('keepDefault'=>false, 'replaceWith'=>"\n_ "),
		'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"),
		'markupSet'         => array(
			// H1 - {{{
			array(
				"id"        => 'header1', 
				"name"      => _T('barre_outils:barre_intertitre'), 
				"key"       => "H", 
				"className" => "outil_header1", 
				"openWith" => "\n{{{", 
				"closeWith" => "}}}\n",
				"display"   => true,
				"selectionType" => "line",
			),
			// Bold - {{
			array(
				"id"        => 'bold',
				"name"      => _T('barre_outils:barre_gras'), 
				"key"       => "B", 
				"className" => "outil_bold", 
				"openWith" => "{{", 
				"closeWith" => "}}",
				"display"   => true,
				"selectionType" => "word",
			),
			// Italic - {
			array(
				"id"        => 'italic',
				"name"      => _T('barre_outils:barre_italic'), 
				"key"       => "I", 
				"className" => "outil_italic", 
				"openWith" => "{", 
				"closeWith" => "}",
				"display"   => true,
				"selectionType" => "word",
			),
				
			// montrer une suppression
			array(
				"id"        => 'stroke_through',
				"name"      => _T('barre_outils:barre_barre'), // :-)
				"className" => "outil_stroke_through", 
				"openWith" => "<del>", 
				"closeWith" => "</del>",
				"display"   => true,
				"selectionType" => "word",
			),
			
			// listes -*
			array(
				"id"        => 'liste_ul',
				"name"      => _T('barre_outils:barre_liste_ul'), 
				"className" => "outil_liste_ul", 
				"replaceWith" => "function(h){ return outil_liste(h, '*');}", 
				"display"   => true,
				"selectionType" => "line",
				"forceMultiline" => true,
				"dropMenu"    => array(
					// liste -#		
					array(
						"id"        => 'liste_ol',
						"name"      => _T('barre_outils:barre_liste_ol'), 
						"className" => "outil_liste_ol", 
						"replaceWith" => "function(h){ return outil_liste(h, '#');}", 
						"display"   => true,
						"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',
						"name"      => _T('barre_outils:barre_desindenter'), 
						"className" => "outil_desindenter", 
						"replaceWith" => "function(h){return outil_desindenter(h);}", 
						"display"   => true,
						"selectionType" => "line",
						"forceMultiline" => true,
					),
				),
			),	

						
			
			// separation
			array(
				"id" => "sepLink", // trouver un nom correct !
				"separator" => "---------------",
				"display"   => true,
			),
			// lien spip
			array(
				"id"          => 'link',
				"name"        => _T('barre_outils:barre_lien'),
				"key"         => "L", 
				"className"   => "outil_link", 
				"openWith"    => "[", 
				"closeWith"   => "->[!["._T('barre_outils:barre_lien_input')."]!]]",
				"display"     => true,
			),
			// note en bas de page spip
			array(
				"id"          => 'notes',
				"name"        => _T('barre_outils:barre_note'),
				"className"   => "outil_notes", 
				"openWith"    => "[[", 
				"closeWith"   => "]]",
				"display"     => true,
				"selectionType" => "word",
			),
					
			// separation
			// (affichee dans forum)
			array(
				"id" => "sepCitations", // trouver un nom correct !
				"separator" => "---------------",
				"display"   => false,
			),
			// quote spip
			// (affichee dans forum)
			array(
				"id"          => 'quote',
				"name"        => _T('barre_outils:barre_quote'),
				"key"         => "Q", 
				"className"   => "outil_quote", 
				"openWith"    => "\n<quote>", 
				"closeWith"   => "</quote>\n",
				"display"     => false,
				"selectionType" => "word",
			),
			
			// separation
			array(
				"id" => "sepGuillemets",
				"separator" => "---------------",
				"display"   => true,
			),
			// guillemets
			array(
				"id"          => 'guillemets',
				"name"        => _T('barre_outils:barre_guillemets'),
				"className"   => "outil_guillemets", 
				"openWith"    => "&laquo;", 
				"closeWith"   => "&raquo;",
				"display"     => true,
				"lang"        => array('fr','eo','cpf','ar','es'),
				"selectionType" => "word",
			),
			// guillemets internes
			array(
				"id"          => 'guillemets_simples',
				"name"        => _T('barre_outils:barre_guillemets_simples'),
				"className"   => "outil_guillemets_simples", 
				"openWith"    => "&ldquo;", 
				"closeWith"   => "&rdquo;",
				"display"     => true,
				"lang"        => array('fr','eo','cpf','ar','es'),
				"selectionType" => "word",
			),
			// guillemets de
			array(
				"id"          => 'guillemets_de',
				"name"        => _T('barre_outils:barre_guillemets'),
				"className"   => "outil_guillemets_de", 
				"openWith"    => "&bdquo;", 
				"closeWith"   => "&ldquo;",
				"display"     => true,
				"lang"        => array('bg','de','pl','hr','src'),
				"selectionType" => "word",
			),
			// guillemets de, simples
			array(
				"id"          => 'guillemets_de_simples',
				"name"        => _T('barre_outils:barre_guillemets_simples'),
				"className"   => "outil_guillemets_de_simples", 
				"openWith"    => "&sbquo;", 
				"closeWith"   => "&lsquo;",
				"display"     => true,
				"lang"        => array('bg','de','pl','hr','src'),
				"selectionType" => "word",
			),
			// guillemets autres langues
			array(
				"id"          => 'guillemets_autres',
				"name"        => _T('barre_outils:barre_guillemets'),
				"className"   => "outil_guillemets_simples", 
				"openWith"    => "&ldquo;", 
				"closeWith"   => "&rdquo;",
				"display"     => true,
				"lang_not"    => array('fr','eo','cpf','ar','es','bg','de','pl','hr','src'),
				"selectionType" => "word",
			),
			// guillemets simples, autres langues
			array(
				"id"          => 'guillemets_autres_simples',
				"name"        => _T('barre_outils:barre_guillemets_simples'),
				"className"   => "outil_guillemets_uniques", 
				"openWith"    => "&lsquo;", 
				"closeWith"   => "&rsquo;",
				"display"     => true,
				"lang_not"    => array('fr','eo','cpf','ar','es','bg','de','pl','hr','src'),
				"selectionType" => "word",
			),
			
			// separation
			array(
				"id" => "sepCaracteres",
				"separator" => "---------------",
				"display"   => true,
			),
			// icones clavier
			array(
				"id"          => 'grpCaracteres',
				"name"        => _T('barre_outils:barre_inserer_caracteres'),
				"className"   => 'outil_caracteres',
				"display"     => true,
				
				"dropMenu"    => array(
					// A majuscule accent grave
					array(
						"id"          => 'A_grave',
						"name"        => _T('barre_outils:barre_a_accent_grave'),
						"className"   => "outil_a_maj_grave", 
						"replaceWith"   => "&Agrave;",
						"display"     => true,
						"lang"    => array('fr','eo','cpf'),
					),
					// E majuscule accent aigu
					array(
						"id"          => 'E_aigu',
						"name"        => _T('barre_outils:barre_e_accent_aigu'),
						"className"   => "outil_e_maj_aigu", 
						"replaceWith"   => "&Eacute;",
						"display"     => true,
						"lang"    => array('fr','eo','cpf'),
					),
					// oe 
					array(
						"id"          => 'oe',
						"name"        => _T('barre_outils:barre_eo'),
						"className"   => "outil_oe", 
						"replaceWith"   => "&oelig;",
						"display"     => true,
						"lang"    => array('fr'),
					),
					// OE 
					array(
						"id"          => 'OE',
						"name"        => _T('barre_outils:barre_eo_maj'),
						"className"   => "outil_oe_maj", 
						"replaceWith"   => "&OElig;",
						"display"     => true,
						"lang"    => array('fr'),
					),
				),
			),

							
			// separation
			array(
				"id" => "sepPreview", // trouver un nom correct !
				"separator" => "---------------",
				"display"   => true,
			),
			// clean
			array(
				"id"          => 'clean',
				"name"        => _T('barre_outils:barre_clean'), 
				"className"   => "outil_clean",
				"replaceWith" => 'function(markitup) { return markitup.selection.replace(/<(.*?)>/g, "") }',
				"display"     => true,
			),
			// preview
			array(
				"id"        => 'preview',
				"name"      => _T('barre_outils:barre_preview'), 
				"className" => "outil_preview",
				"call"      => "preview",
				"display"   => true,
			),

			
		),
		
	'functions'         => "
				// remplace ou cree -* ou -** ou -# ou -##
				function outil_liste(h, c) {
					if ((s = h.selection) && (r = s.match(/^-([*#]+) (.*)\$/)))	 {
						r[1] = r[1].replace(/[#*]/g, c);
						s = '-'+r[1]+' '+r[2];
					} else {
						s = '-' + c + ' '+s;
					}
					return s;
				}

				// indente des -* ou -#
				function outil_indenter(h) {
					if (s = h.selection) {
						if (s.substr(0,2)=='-*') {
							s = '-**' + s.substr(2);
						} else if (s.substr(0,2)=='-#') {
							s = '-##' + s.substr(2);
						} else {
							s = '-* ' + s;
						}
					}
					return s;
				}
						
				// desindente des -* ou -** ou -# ou -##
				function outil_desindenter(h){
					if (s = h.selection) {
						if (s.substr(0,3)=='-**') {
							s = '-*' + s.substr(3);
						} else if (s.substr(0,3)=='-* ') {
							s = s.substr(3);
						} else if (s.substr(0,3)=='-##') {
							s = '-#' + s.substr(3);
						} else if (s.substr(0,3)=='-# ') {
							s = s.substr(3);
						}
					}
					return s;
				}
				",
	));
	
	$set->cacher(array(
		'stroke_through',
		'clean', 'preview',
	));
	
	return $set;
}