Beispiel #1
0
/**
 * Ajoute les scripts JS et CSS de saisies dans l'espace public
 *
 * Ajoute également de quoi gérer le datepicker de la saisie date si
 * celle-ci est utilisée dans la page.
 * 
 * @param string $flux 
 * @return string
**/
function saisies_affichage_final($flux)
{
    if (($p = strpos($flux, "<!--!inserer_saisie_editer-->")) !== false) {
        // On insère la CSS devant le premier <link> trouvé
        if (!($pi = strpos($flux, "<link")) and !($pi = strpos($flux, '</head'))) {
            $pi = $p;
        }
        // si pas de <link inserer comme un goret entre 2 <li> de saisies
        $css = generer_url_public('saisies.css');
        $ins_css = "\n<link rel='stylesheet' href='{$css}' type='text/css' media='all' />\n";
        if (strpos($flux, "saisie_date") !== false) {
            //si on a une saisie de type date, on va charger les css de jquery_ui
            include_spip("jqueryui_pipelines");
            if (function_exists("jqueryui_dependances")) {
                $ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker"));
                array_push($ui_plugins, "jquery.ui.theme");
                foreach ($ui_plugins as $ui_plug) {
                    $ui_plug_css = find_in_path("css/{$ui_plug}.css");
                    if (strpos($flux, "css/{$ui_plug}.css") === false) {
                        // si pas déjà chargé
                        $ins_css .= "\n<link rel='stylesheet' href='{$ui_plug_css}' type='text/css' media='all' />\n";
                    }
                }
            }
        }
        $flux = substr_replace($flux, $ins_css, $pi, 0);
        // On insère le JS à la fin du <head>
        $pos_head = strpos($flux, '</head');
        $js = find_in_path('javascript/saisies.js');
        $ins_js = "\n<script type='text/javascript' src='{$js}'></script>\n";
        $flux = substr_replace($flux, $ins_js, $pos_head, 0);
    }
    return $flux;
}
/**
 * Ajout des css de jQuery UI pour les pages publiques
 *
 * @param: $flux
 * @return: $flux
 */
function jqueryui_insert_head_css($flux)
{
    /**
     * Doit on ne pas insérer les css (défini depuis un autre plugin) ?
     */
    if (defined('_JQUERYUI_CSS_NON')) {
        return $flux;
    }
    // Modules demandés par le pipeline jqueryui_plugins
    is_array($jqueryui_plugins = pipeline('jqueryui_plugins', array())) || ($jqueryui_plugins = array());
    // gestion des dépendances des modules demandés
    is_array($jqueryui_plugins = jqueryui_dependances($jqueryui_plugins)) || ($jqueryui_plugins = array());
    // ajouter le thème si nécessaire
    if ($jqueryui_plugins and !in_array('jquery.ui.theme', $jqueryui_plugins)) {
        $jqueryui_plugins[] = 'theme';
    }
    // les css correspondantes aux plugins
    $styles = array('accordion', 'autocomplete', 'button', 'core', 'datepicker', 'dialog', 'draggable', 'menus', 'progressbar', 'resizable', 'selectable', 'selectmenu', 'slider', 'sortable', 'spinner', 'tabs', 'tooltip', 'theme');
    // insérer les css nécessaires
    foreach ($jqueryui_plugins as $plugin) {
        if (in_array($plugin, $styles)) {
            $flux .= "<link rel='stylesheet' type='text/css' media='all' href='" . find_in_path('css/ui/' . $plugin . '.css') . "' />\n";
        }
    }
    return $flux;
}
/**
 * Ajoute les scripts JS et CSS de saisies dans l'espace public
 *
 * Ajoute également de quoi gérer le datepicker de la saisie date si
 * celle-ci est utilisée dans la page.
 * 
 * @param string $flux 
 * @return string
**/
function saisies_affichage_final($flux){
	if (
		$GLOBALS['html'] // si c'est bien du HTML
		and ($p = strpos($flux,"<!--!inserer_saisie_editer-->")) !== false // et qu'on a au moins une saisie
		and strpos($flux,'<head') !== false // et qu'on a la balise <head> quelque part
	){
		// On insère la CSS devant le premier <link> trouvé
		if (!$pi = strpos($flux, "<link") AND !$pi=strpos($flux, '</head')) {
			$pi = $p; // si pas de <link inserer comme un goret entre 2 <li> de saisies
		}
		$css = generer_url_public('saisies.css');
		$ins_css = "\n<link rel='stylesheet' href='$css' type='text/css' media='all' />\n";

		if (strpos($flux,"saisie_date")!==false){//si on a une saisie de type date, on va charger les css de jquery_ui
		    include_spip("jqueryui_pipelines");
			if (function_exists("jqueryui_dependances")){
				$ui_plugins = jqueryui_dependances(array("jquery.ui.datepicker"));
				$theme_css = "jquery.ui.theme";
				$ui_css_dir = "css";
				// compatibilité SPIP 3.1 et jQuery UI 1.11
				$version = explode(".",$GLOBALS['spip_version_branche']);
				if ($version[0]>3 OR ($version[0]==3 AND $version[1]>0)) {
					$theme_css = "theme";
					$ui_css_dir = "css/ui";
				}
				array_push($ui_plugins,$theme_css);
				foreach ($ui_plugins as $ui_plug){
					$ui_plug_css = find_in_path("$ui_css_dir/$ui_plug.css");
					if (strpos($flux,"$ui_css_dir/$ui_plug.css")===false){// si pas déjà chargé
						$ins_css .= "\n<link rel='stylesheet' href='$ui_plug_css' type='text/css' media='all' />\n";
					}
				}
			}
		}

		$flux = substr_replace($flux, $ins_css, $pi, 0);
		// On insère le JS à la fin du <head>
		$pos_head = strpos($flux, '</head');
		$js = find_in_path('javascript/saisies.js');
		$ins_js = "\n<script type='text/javascript' src='$js'></script>\n";
		$flux = substr_replace($flux, $ins_js, $pos_head, 0);
	}
	return $flux;
}
/**
 * Ajoute les scripts JS et CSS de saisies dans l'espace public
 *
 * Ajoute également de quoi gérer le datepicker de la saisie date si
 * celle-ci est utilisée dans la page.
 *
 * @param string $flux
 * @return string
**/
function saisies_affichage_final($flux)
{
    if ($GLOBALS['html'] and ($p = strpos($flux, '<!--!inserer_saisie_editer-->')) !== false and strpos($flux, '<head') !== false) {
        // On insère la CSS devant le premier <link> trouvé
        if (!($pi = strpos($flux, '<link')) and !($pi = strpos($flux, '</head'))) {
            $pi = $p;
            // si pas de <link inserer comme un goret entre 2 <li> de saisies
        }
        $css = generer_url_public('saisies.css');
        $ins_css = "\n<link rel='stylesheet' href='{$css}' type='text/css' media='all' />\n";
        if (strpos($flux, 'saisie_date') !== false) {
            //si on a une saisie de type date, on va charger les css de jquery_ui
            include_spip('jqueryui_pipelines');
            if (function_exists('jqueryui_dependances')) {
                $ui_plugins = jqueryui_dependances(array('jquery.ui.datepicker'));
                $theme_css = 'jquery.ui.theme';
                $ui_css_dir = 'css';
                // compatibilité SPIP 3.1 et jQuery UI 1.11
                $version = explode('.', $GLOBALS['spip_version_branche']);
                if ($version[0] > 3 or $version[0] == 3 and $version[1] > 0) {
                    $theme_css = 'theme';
                    $ui_css_dir = 'css/ui';
                }
                array_push($ui_plugins, $theme_css);
                foreach ($ui_plugins as $ui_plug) {
                    $ui_plug_css = find_in_path("{$ui_css_dir}/{$ui_plug}.css");
                    if (strpos($flux, "{$ui_css_dir}/{$ui_plug}.css") === false) {
                        // si pas déjà chargé
                        $ins_css .= "\n<link rel='stylesheet' href='{$ui_plug_css}' type='text/css' media='all' />\n";
                    }
                }
            }
        }
        $flux = substr_replace($flux, $ins_css, $pi, 0);
        // On insère le JS à la fin du <head>
        $pos_head = strpos($flux, '</head');
        $js = find_in_path('javascript/saisies.js');
        $ins_js = "\n<script type='text/javascript' src='{$js}'></script>\n";
        $flux = substr_replace($flux, $ins_js, $pos_head, 0);
    }
    return $flux;
}