/**
 * Retourne la définition de la barre markitup désignée.
 * (cette déclaration est au format json)
 * 
 * Deux pipelines 'porte_plume_pre_charger' et 'porte_plume_charger' 
 * permettent de récuperer l'objet de classe Barre_outil
 * avant son export en json pour modifier des elements.
 *
 * @pipeline_appel porte_plume_barre_pre_charger
 *     Charge des nouveaux boutons au besoin
 * @pipeline_appel porte_plume_barre_charger
 *     Affiche ou cache certains boutons
 * 
 * @return string Déclaration json
 */
function porte_plume_creer_json_markitup()
{
    // on recupere l'ensemble des barres d'outils connues
    include_spip('porte_plume_fonctions');
    if (!($sets = barre_outils_liste())) {
        return null;
    }
    // 1) On initialise tous les jeux de barres
    $barres = array();
    foreach ($sets as $set) {
        if ($barre = barre_outils_initialiser($set) and is_object($barre)) {
            $barres[$set] = $barre;
        }
    }
    // 2) Préchargement
    /**
     * Charger des nouveaux boutons au besoin
     *
     * @example
     *     $barre = &$flux['spip'];
     *     $barre->ajouterApres('bold',array(params));
     *     $barre->ajouterAvant('bold',array(params));
     * 
     *     $bold = $barre->get('bold');
     *     $bold['id'] = 'bold2';
     *     $barre->ajouterApres('italic',$bold);
     * @pipeline_appel porte_plume_barre_pre_charger
     */
    $barres = pipeline('porte_plume_barre_pre_charger', $barres);
    // 3) Chargement
    /**
     * Cacher ou afficher certains boutons au besoin
     *
     * @example
     *     $barre = &$flux['spip'];
     *     $barre->afficher('bold');
     *     $barre->cacher('bold');
     * 
     *     $barre->cacherTout();
     *     $barre->afficher(array('bold','italic','header1'));
     * @pipeline_appel porte_plume_barre_charger
     */
    $barres = pipeline('porte_plume_barre_charger', $barres);
    // 4 On crée les jsons
    $json = "";
    foreach ($barres as $set => $barre) {
        $json .= $barre->creer_json();
    }
    return $json;
}
/**
 * Retourne la definition de la barre markitup designee.
 * (cette declaration est au format json)
 * 
 * Deux pipelines 'porte_plume_pre_charger' et 'porte_plume_charger' 
 * permettent de recuperer l'objet de classe Barre_outil
 * avant son export en json pour modifier des elements.
 * 
 * @return string : declaration json
 */
function porte_plume_creer_json_markitup(){
	// on recupere l'ensemble des barres d'outils connues
	include_spip('inc/barre_outils');
	if (!$sets = barre_outils_liste()) {
		return null;
	}

	// 1 on initialise tous les jeux de barres
	$barres = array();
	foreach($sets as $set) {
		if (($barre = barre_outils_initialiser($set)) AND is_object($barre))
			$barres[$set] = $barre;
	}
	
	// 2 prechargement
	// charge des nouveaux boutons au besoin
	// exemples : 
	//		$barre = &$flux['spip'];
	//  	$barre->ajouterApres('bold',array(params));
	//  	$barre->ajouterAvant('bold',array(params));		
	// 
	//  	$bold = $barre->get('bold');
	//  	$bold['id'] = 'bold2';
	//  	$barre->ajouterApres('italic',$bold);
	$barres = pipeline('porte_plume_barre_pre_charger', $barres);

		
	// 3 chargement
	// 		permet de cacher ou afficher certains boutons au besoin
	// 		exemples :
	//		$barre = &$flux['spip'];
	//  	$barre->afficher('bold');
	//  	$barre->cacher('bold');
	//
	//		$barre->cacherTout();
	//		$barre->afficher(array('bold','italic','header1'));
	$barres = pipeline('porte_plume_barre_charger', $barres);


	// 4 on cree les jsons
	$json = "";
	foreach($barres as $set=>$barre) {
		$json .= $barre->creer_json();
	}
	return $json;
}
Beispiel #3
0
/**
 * Cette fonction cree la css pour les images
 * des icones des barres d'outils
 * en s'appuyant sur la description des jeux de barres disponibles.
 * 
 * elle cherche une fonction barre_outils_($barre)_icones pour chaque
 * barre et l'appelle si existe.
 * 
 * @return string : declaration css des icones
 */
function barre_outils_css_icones(){
	// recuperer la liste, extraire les icones
	$css = "";
	
	// liste des barres
	if (!$barres = barre_outils_liste()) 
		return null;
		
	// liste des classes css et leur correspondance avec une icone
	$classe2icone = array();
	foreach ($barres as $barre) {
		include_spip('barre_outils/' . $barre);
		if ($f = charger_fonction($barre . '_icones', 'barre_outils', true)) {
			if (is_array($icones = $f())) {
				$classe2icone = array_merge($classe2icone, $icones);
			}
		}
	}
	
	// passer le tout dans un pipeline pour ceux qui ajoute de simples icones a des barres existantes
	$classe2icone = pipeline('porte_plume_lien_classe_vers_icone',$classe2icone);
	
	// passage en css
	foreach ($classe2icone as $n=>$i) {
		$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;
}
/**
 * Crée le code CSS pour les images des icones des barres d'outils
 *
 * S'appuie sur la description des jeux de barres disponibles et cherche
 * une fonction barre_outils_($barre)_icones pour chaque barre et
 * l'exécute si existe, attendant alors en retour un tableau de couples :
 * nom de l'outil => nom de l'image
 *
 * @pipeline_appel porte_plume_lien_classe_vers_icone
 *
 * @return string Déclaration CSS des icones
 */
function barre_outils_css_icones()
{
    // recuperer la liste, extraire les icones
    $css = "";
    // liste des barres
    if (!($barres = barre_outils_liste())) {
        return null;
    }
    // liste des classes css et leur correspondance avec une icone
    $classe2icone = array();
    foreach ($barres as $barre) {
        include_spip('barre_outils/' . $barre);
        if ($f = charger_fonction($barre . '_icones', 'barre_outils', true)) {
            if (is_array($icones = $f())) {
                $classe2icone = array_merge($classe2icone, $icones);
            }
        }
    }
    /**
     * Permettre aux plugins d'étendre les icones connues du porte plume
     *
     * On passe la liste des icones connues au pipeline pour ceux qui
     * ajoutent de simples icones à des barres existantes
     *
     * @pipeline_appel porte_plume_lien_classe_vers_icone
     * @var array $classe2icone
     *     Couples identifiant de bouton => nom de l'image (ou tableau)
     *     Dans le cas d'un tableau, cela indique une sprite : (nom de l'image , position haut, position bas)
     *     Exemple : 'outil_header1' => array('spt-v1.png','-10px -226px')
     */
    $classe2icone = pipeline('porte_plume_lien_classe_vers_icone', $classe2icone);
    // passage en css
    foreach ($classe2icone as $n => $i) {
        $pos = "";
        if (is_array($i)) {
            $pos = "background-position:" . end($i);
            $i = reset($i);
        }
        if (file_exists($i)) {
            $file = $i;
        } else {
            $file = find_in_path("icones_barre/{$i}");
        }
        if ($file) {
            $css .= "\n.markItUp .{$n}>a>em {background-image:url(" . protocole_implicite(url_absolue($file)) . ");{$pos}}";
        }
    }
    return $css;
}
Beispiel #5
0
function cs_pp_liste_barres($outil=false) {
	global $metas_vars;
	include_spip('inc/barre_outils');
	if (!$sets = barre_outils_liste()) return array();
	if($outil) foreach($sets as $f=>$b) {
		$v = 'pp_'.$b.'_'.$outil;
		// par defaut le bouton est present dans toutes les barres
		if(isset($metas_vars[$v]) && !$metas_vars[$v]) unset($sets[$f]);
	}
	return $sets;
}