/** * * Inserer des styles * * @param string $flux * @return string */ function comments_insert_head_css($flux) { if ($f = find_in_path("css/comments.css")) { $flux .= '<link rel="stylesheet" href="' . direction_css($f) . '" type="text/css" media="all" />'; } return $flux; }
function install_debut_html($titre = 'AUTO', $onLoad = '') { global $spip_lang_right,$spip_lang_left; utiliser_langue_visiteur(); http_no_cache(); if ($titre=='AUTO') $titre=_T('info_installation_systeme_publication'); # le charset est en utf-8, pour recuperer le nom comme il faut # lors de l'installation if (!headers_sent()) header('Content-Type: text/html; charset=utf-8'); // au cas ou minipres() est appele avant spip_initialisation_suite() if (!defined('_DOCTYPE_ECRIRE')) define('_DOCTYPE_ECRIRE', ''); return _DOCTYPE_ECRIRE. html_lang_attributes(). "<head>\n". "<title>". textebrut($titre). "</title> <link rel='stylesheet' href='".direction_css(find_in_path('minipres.css')). "' type='text/css' media='all' />\n" . // cet appel permet d'assurer un copier-coller du nom du repertoire a creer dans tmp (esj) http_script('', "spip_barre.js") . "</head> <body".$onLoad." class='minipres'> <div id='minipres'> <h1>". $titre . "</h1> <div>\n"; }
/** * Ajoute Chosen aux css chargées dans le public * * @param string $texte Contenu du head HTML concernant les CSS * @return string Contenu du head HTML concernant les CSS **/ function chosen_insert_head_css($flux) { include_spip('inc/config'); $config = lire_config('chosen',array()); if (isset($config['active']) and $config['active']=='oui'){ $css = find_in_path('lib/chosen/chosen.css'); $flux .= '<link rel="stylesheet" href="'.direction_css($css).'" type="text/css" media="all" />'; $css = find_in_path('css/spip.chosen.css'); $flux .= '<link rel="stylesheet" href="'.direction_css($css).'" type="text/css" media="all" />'; } return $flux; }
function mediabox_insert_head_css($flux) { $config = mediabox_config(); if ($config['active'] == 'oui' and $f = find_in_path((test_espace_prive() ? "prive/" : "") . "colorbox/" . $config['skin'] . '/colorbox.css')) { $flux .= '<link rel="stylesheet" href="' . direction_css($f) . '" type="text/css" media="all" />'; /** * Initialiser la config de la mediabox */ $flux = '<script type="text/javascript">/* <![CDATA[ */ var box_settings = {tt_img:' . ($config['traiter_toutes_images'] == 'oui' ? 'true' : 'false') . ',sel_g:"' . $config['selecteur_galerie'] . '",sel_c:"' . $config['selecteur_commun'] . '",trans:"' . $config['transition'] . '",speed:"' . $config['speed'] . '",ssSpeed:"' . $config['slideshow_speed'] . '",maxW:"' . $config['maxWidth'] . '",maxH:"' . $config['maxHeight'] . '",minW:"' . $config['minWidth'] . '",minH:"' . $config['minHeight'] . '",opa:"' . $config['opacite'] . '",str_ssStart:"' . unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStart'))) . '",str_ssStop:"' . unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStop'))) . '",str_cur:"' . _T('mediabox:boxstr_current', array('current' => '{current}', 'total' => '{total}')) . '",str_prev:"' . _T('mediabox:boxstr_previous') . '",str_next:"' . _T('mediabox:boxstr_next') . '",str_close:"' . _T('mediabox:boxstr_close') . '",splash_url:"' . $config['splash_url'] . '"}; /* ]]> */</script>' . "\n" . $flux; } return $flux; }
/** * Ajoute les boutons d'administration de la page s'ils n'y sont pas déjà * * Insère la feuille de style selon les normes, dans le `<head>` * puis les boutons. * * Feuilles de style admin : d'abord la CSS officielle, puis la perso * * @param string $contenu * Contenu HTML de la page qui va être envoyée au navigateur * @return string * Contenu HTML, avec boutons d'administrations et sa CSS **/ function affiche_boutons_admin($contenu) { include_spip('inc/filtres'); // Inserer le css d'admin $css = "<link rel='stylesheet' href='" . protocole_implicite(url_absolue(direction_css(find_in_path('spip_admin.css')))) . "' type='text/css' />\n"; if ($f = find_in_path('spip_admin_perso.css')) { $css .= "<link rel='stylesheet' href='" . protocole_implicite(url_absolue(direction_css($f))) . "' type='text/css' />\n"; } ($pos = stripos($contenu, '</head>')) || ($pos = stripos($contenu, '<body>')) || ($pos = 0); $contenu = substr_replace($contenu, $css, $pos, 0); // Inserer la balise #FORMULAIRE_ADMIN, en float $boutons_admin = inclure_balise_dynamique(balise_FORMULAIRE_ADMIN_dyn('spip-admin-float'), false); ($pos = strripos($contenu, '</body>')) || ($pos = strripos($contenu, '</html>')) || ($pos = strlen($contenu)); $contenu = substr_replace($contenu, $boutons_admin, $pos, 0); return $contenu; }
function html_6df0ecfade86092ec8be1bb468d967e1($Cache, $Pile, $doublons = array(), $Numrows = array(), $SP = 0) { if (isset($Pile[0]["doublons"]) and is_array($Pile[0]["doublons"])) { $doublons = nettoyer_env_doublons($Pile[0]["doublons"]); } $connect = ''; $page = ' ' . (($t1 = strval(direction_css(find_in_path('spip_style.css')))) !== '' ? '<link rel="stylesheet" href="' . $t1 . '" type="text/css" media="all" />' : '') . ' ' . (($t1 = strval(direction_css(find_in_path('spip_formulaires.css')))) !== '' ? '<link rel="stylesheet" href="' . $t1 . '" type="text/css" media="projection, screen, tv" />' : '') . ' ' . (($t1 = strval(direction_css(find_in_path('styles/base.css')))) !== '' ? '<link rel="stylesheet" href="' . $t1 . '" type="text/css" media="projection, screen, tv" />' : '') . ' ' . (($t1 = strval(find_in_path('styles/alter.css'))) !== '' ? '<link rel="stylesheet" href="' . $t1 . '" type="text/css" media="projection, screen, tv" />' : '') . ' ' . (($t1 = strval(find_in_path('styles/habillages.css'))) !== '' ? '<link rel="stylesheet" href="' . $t1 . '" type="text/css" media="projection, screen, tv" />' : '') . ' ' . (($t1 = strval(find_in_path('styles/perso.css'))) !== '' ? '<link rel="stylesheet" href="' . $t1 . '" type="text/css" media="projection, screen, tv" />' : '') . ' ' . (($t1 = strval(find_in_path('styles/color.css'))) !== '' ? '<link rel="stylesheet" href="' . $t1 . '" type="text/css" media="projection, screen, tv" />' : '') . ' ' . (($t1 = strval(direction_css(find_in_path('styles/print.css')))) !== '' ? '<link rel="stylesheet" href="' . spip_htmlspecialchars(sinon($GLOBALS['meta']['adresse_site'], '.')) . '/' . $t1 . '" type="text/css" media="print" />' : '') . ' ' . '<' . '?php header("X-Spip-Filtre: insert_head_css_conditionnel"); ?' . '>' . pipeline('insert_head', '<!-- insert_head -->') . ' ' . (($t1 = strval(find_in_path('js/base.js'))) !== '' ? '<script src="' . spip_htmlspecialchars(sinon($GLOBALS['meta']['adresse_site'], '.')) . '/' . $t1 . '" type="text/javascript"></script>' : '') . ' ' . (($t1 = strval(find_in_path('js/perso.js'))) !== '' ? '<script src="' . spip_htmlspecialchars(sinon($GLOBALS['meta']['adresse_site'], '.')) . '/' . $t1 . '" type="text/javascript"></script>' : '') . ' <!--[if lte IE 6]> <style> #menu-rubriques a, #extra a { height: 1em; } #menu-rubriques li, #extra li { height: 1em; float: left; clear: both;width: 100%; } </style> <![endif]--> <!--[if IE]> <style> body * {zoom:1} #menu-principal *, #bloc-contenu * {zoom: 0} #menu-rubriques li { clear: none;} </style> <![endif]--> ' . BOUCLE_polices_webfontshtml_6df0ecfade86092ec8be1bb468d967e1($Cache, $Pile, $doublons, $Numrows, $SP); return analyse_resultat_skel('html_6df0ecfade86092ec8be1bb468d967e1', $Cache, $page, 'squelettes/styles.html'); }
function mediabox_insert_head_css($flux) { $config = mediabox_config(); if ($config['active'] == 'oui' and $f = find_in_path((test_espace_prive() ? "prive/" : "") . "colorbox/" . $config['skin'] . '/colorbox.css')) { $flux .= '<link rel="stylesheet" href="' . direction_css($f) . '" type="text/css" media="all" />'; /** * Initialiser la config de la mediabox */ $configmediabox = '<script type="text/javascript">/* <![CDATA[ */ var box_settings = {tt_img:' . ($config['traiter_toutes_images'] == 'oui' ? 'true' : 'false') . ',sel_g:"' . $config['selecteur_galerie'] . '",sel_c:"' . $config['selecteur_commun'] . '",trans:"' . $config['transition'] . '",speed:"' . $config['speed'] . '",ssSpeed:"' . $config['slideshow_speed'] . '",maxW:"' . $config['maxWidth'] . '",maxH:"' . $config['maxHeight'] . '",minW:"' . $config['minWidth'] . '",minH:"' . $config['minHeight'] . '",opa:"' . $config['opacite'] . '",str_ssStart:"' . unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStart'))) . '",str_ssStop:"' . unicode2charset(html2unicode(_T('mediabox:boxstr_slideshowStop'))) . '",str_cur:"' . _T('mediabox:boxstr_current', array('current' => '{current}', 'total' => '{total}')) . '",str_prev:"' . _T('mediabox:boxstr_previous') . '",str_next:"' . _T('mediabox:boxstr_next') . '",str_close:"' . _T('mediabox:boxstr_close') . '",splash_url:"' . $config['splash_url'] . '"};' . "\n"; // Si c'est une image, on la chargera avec une redimentionnement automatique // Sinon, chargement dans une iframe $extension = pathinfo($config['splash_url'], PATHINFO_EXTENSION); if (match($extension, 'gif|png|jpg|jpeg')) { $configmediabox .= 'var box_settings_iframe = false;' . "\n"; } else { $configmediabox .= 'var box_settings_splash_width = "' . $config['splash_width'] . '"; var box_settings_splash_height = "' . $config['splash_height'] . '";' . "\n"; $configmediabox .= 'var box_settings_iframe = true;' . "\n"; } $flux = $configmediabox . '/* ]]> */</script>' . "\n" . $flux; } return $flux; }
/** * http://doc.spip.org/@install_debut_html * * @param string $titre * @param string $onLoad * @param bool $all_inline * inliner les css et js dans la page (limiter le nombre de hits) * @return string */ function install_debut_html($titre = 'AUTO', $onLoad = '', $all_inline = false) { global $spip_lang_right, $spip_lang_left; utiliser_langue_visiteur(); http_no_cache(); if ($titre == 'AUTO') { $titre = _T('info_installation_systeme_publication'); } # le charset est en utf-8, pour recuperer le nom comme il faut # lors de l'installation if (!headers_sent()) { header('Content-Type: text/html; charset=utf-8'); } $css = ""; $files = array('reset.css', 'clear.css', 'minipres.css'); if ($all_inline) { // inliner les CSS (optimisation de la page minipres qui passe en un seul hit a la demande) foreach ($files as $name) { $file = direction_css(find_in_theme($name)); if (function_exists("compacte")) { $file = compacte($file); } else { $file = url_absolue_css($file); } // precaution lire_fichier($file, $c); $css .= $c; } $css = "<style type='text/css'>" . $css . "</style>"; } else { foreach ($files as $name) { $file = direction_css(find_in_theme($name)); $css .= "<link rel='stylesheet' href='{$file}' type='text/css' />\n"; } } // au cas ou minipres() est appele avant spip_initialisation_suite() if (!defined('_DOCTYPE_ECRIRE')) { define('_DOCTYPE_ECRIRE', ''); } return _DOCTYPE_ECRIRE . html_lang_attributes() . "<head>\n" . "<title>" . textebrut($titre) . "</title>\n" . "<meta name='viewport' content='width=device-width' />\n" . $css . "</head>\n<body" . $onLoad . " class='minipres'>\n\t<div id='minipres'>\n\t<h1>" . $titre . "</h1>\n\t<div>\n"; }
function direction_css($css, $voulue = '') { if (!preg_match(',(_rtl)?\\.css$,i', $css, $r)) { return $css; } // si on a precise le sens voulu en argument, le prendre en compte if ($voulue = strtolower($voulue)) { if ($voulue != 'rtl' and $voulue != 'ltr') { $voulue = lang_dir($voulue); } } else { $voulue = lang_dir(); } $r = count($r) > 1; $right = $r ? 'left' : 'right'; // 'right' de la css lue en entree $dir = $r ? 'rtl' : 'ltr'; $ndir = $r ? 'ltr' : 'rtl'; if ($voulue == $dir) { return $css; } if (preg_match(",^http:,i", $css) or ($p = strpos($css, '?')) !== FALSE) { $distant = true; $cssf = parse_url($css); $cssf = $cssf['path'] . ($cssf['query'] ? "?" . $cssf['query'] : ""); $cssf = preg_replace(',[?:&=],', "_", $cssf); } else { $distant = false; $cssf = $css; // 1. regarder d'abord si un fichier avec la bonne direction n'est pas aussi //propose (rien a faire dans ce cas) $f = preg_replace(',(_rtl)?\\.css$,i', '_' . $ndir . '.css', $css); if (@file_exists($f)) { return $f; } } // 2. $dir_var = sous_repertoire(_DIR_VAR, 'cache-css'); $f = $dir_var . preg_replace(',.*/(.*?)(_rtl)?\\.css,', '\\1', $cssf) . '.' . substr(md5($cssf), 0, 4) . '_' . $ndir . '.css'; // la css peut etre distante (url absolue !) if ($distant) { include_spip('inc/distant'); $contenu = recuperer_page($css); if (!$contenu) { return $css; } } else { if (@filemtime($f) > @filemtime($css) and _VAR_MODE != 'recalcul') { return $f; } if (!lire_fichier($css, $contenu)) { return $css; } } $contenu = str_replace(array('right', 'left', '@@@@L E F T@@@@'), array('@@@@L E F T@@@@', 'right', 'left'), $contenu); // reperer les @import auxquels il faut propager le direction_css preg_match_all(",\\@import\\s*url\\s*\\(\\s*['\"]?([^'\"/][^:]*)['\"]?\\s*\\),Uims", $contenu, $regs); $src = array(); $src_direction_css = array(); $src_faux_abs = array(); $d = dirname($css); foreach ($regs[1] as $k => $import_css) { $css_direction = direction_css("{$d}/{$import_css}", $voulue); // si la css_direction est dans le meme path que la css d'origine, on tronque le path, elle sera passee en absolue if (substr($css_direction, 0, strlen($d) + 1) == "{$d}/") { $css_direction = substr($css_direction, strlen($d) + 1); } elseif (substr($css_direction, 0, strlen($dir_var)) == $dir_var) { $css_direction = substr($css_direction, strlen($dir_var)); $src_faux_abs["/@@@@@@/" . $css_direction] = $css_direction; $css_direction = "/@@@@@@/" . $css_direction; } $src[] = $regs[0][$k]; $src_direction_css[] = str_replace($import_css, $css_direction, $regs[0][$k]); } $contenu = str_replace($src, $src_direction_css, $contenu); $contenu = urls_absolues_css($contenu, $css); // virer les fausses url absolues que l'on a mis dans les import if (count($src_faux_abs)) { $contenu = str_replace(array_keys($src_faux_abs), $src_faux_abs, $contenu); } if (!ecrire_fichier($f, $contenu)) { return $css; } return $f; }
/** * Ajoute les scripts css et js nécessaires aux crayons dans le code HTML * * @uses crayons_var2js() * * @param string $page * Code HTML de la page complète ou du header seulement * @param string $droits * - Liste de css définissant les champs crayonnables * (séparés par virgule) dont l'édition est autorisée * - "*" si tous sont autorisés * @param array $wdgcfg * Description de la configuration des crayons (attribut => valeur) * @param string $mode * - page : toute la page est présente dans `$page` * - head : seul le header est présent dans `$page` * @return **/ function &Crayons_preparer_page(&$page, $droits, $wdgcfg = array(), $mode = 'page') { /** * Si pas forcer_lang, on charge le contrôleur dans la langue que l'utilisateur a dans le privé */ if (!isset($GLOBALS['forcer_lang']) or !$GLOBALS['forcer_lang'] or $GLOBALS['forcer_lang'] === 'non') { lang_select($GLOBALS['auteur_session']['lang']); } $jsFile = generer_url_public('crayons.js'); if (_DEBUG_CRAYONS) { $jsFile = parametre_url($jsFile, 'debug_crayons', 1, '&'); } include_spip('inc/filtres'); // rien que pour direction_css() :( $cssFile = direction_css(find_in_path('crayons.css')); $config = crayons_var2js(array('imgPath' => dirname(find_in_path('images/crayon.png')), 'droits' => $droits, 'dir_racine' => _DIR_RACINE, 'self' => self('&'), 'txt' => array('error' => _U('crayons:svp_copier_coller'), 'sauvegarder' => $wdgcfg['msgAbandon'] ? _U('crayons:sauvegarder') : ''), 'img' => array('searching' => array('txt' => _U('crayons:veuillez_patienter')), 'crayon' => array('txt' => _U('crayons:editer')), 'edit' => array('txt' => _U('crayons:editer_tout')), 'img-changed' => array('txt' => _U('crayons:deja_modifie'))), 'cfg' => $wdgcfg)); // Est-ce que PortePlume est la ? $meta_crayon = isset($GLOBALS['meta']['crayons']) ? unserialize($GLOBALS['meta']['crayons']) : array(); $pp = ''; if (isset($meta_crayon['barretypo']) && $meta_crayon['barretypo']) { if (function_exists('chercher_filtre') and $f = chercher_filtre('info_plugin') and $f('PORTE_PLUME', 'est_actif')) { $pp = <<<EOF cQuery(function() { \tif (typeof onAjaxLoad == 'function') { \t\tfunction barrebouilles_crayons() { \t\t\t\$('.formulaire_crayon textarea.crayon-active') \t\t\t.barre_outils('edition'); \t\t} \t\tonAjaxLoad(barrebouilles_crayons); \t} }); EOF; } } $incCSS = "<link rel=\"stylesheet\" href=\"{$cssFile}\" type=\"text/css\" media=\"all\" />"; $incJS = <<<EOH <script type="text/javascript">/* <![CDATA[ */ var configCrayons; function startCrayons() { \tconfigCrayons = new cQuery.prototype.cfgCrayons({$config}); \tcQuery.fn.crayonsstart(); {$pp} } var cr = document.createElement('script'); cr.type = 'text/javascript'; cr.async = true; cr.src = '{$jsFile}&callback=startCrayons'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(cr, s); /* ]]> */</script> EOH; if ($mode == 'head') { //js inline avant les css, sinon ca bloque le chargement $page = $page . $incJS . $incCSS; return $page; } $pos_head = strpos($page, '</head>'); if ($pos_head === false) { return $page; } // js inline avant la premiere css, ou sinon avant la fin du head $pos_link = strpos($page, '<link '); if (!$pos_link) { $pos_link = $pos_head; } $page = substr_replace($page, $incJS, $pos_link, 0); // css avant la fin du head $pos_head = strpos($page, '</head>'); $page = substr_replace($page, $incCSS, $pos_head, 0); return $page; }
/** * Ajoute les css pour d3js chargées dans le public * * @param string $flux Contenu du head HTML concernant les CSS * @return string Contenu du head HTML concernant les CSS **/ function d3js_insert_head_css($flux) { $css = find_in_path('css/d3js.css'); $flux .= '<link rel="stylesheet" href="' . direction_css($css) . '" type="text/css" media="all" />'; return $flux; }
/** * Ajout des CSS du porte-plume au head public * * Appelé aussi depuis le privé avec $prive à true. * * @pipeline insert_head_css * @param string $flux Contenu du head * @param bool $prive Est-ce pour l'espace privé ? * @return string Contenu du head complété */ function porte_plume_insert_head_css($flux = '', $prive = false) { include_spip('inc/autoriser'); // toujours autoriser pour le prive. if ($prive or autoriser('afficher_public', 'porteplume')) { if ($prive) { $cssprive = find_in_path('css/barre_outils_prive.css'); $flux .= "<link rel='stylesheet' type='text/css' media='all' href='{$cssprive}' />\n"; } $css = direction_css(find_in_path('css/barre_outils.css'), lang_dir()); $css_icones = generer_url_public('barre_outils_icones.css'); if (defined('_VAR_MODE') and _VAR_MODE == "recalcul") { $css_icones = parametre_url($css_icones, 'var_mode', 'recalcul'); } $flux .= "<link rel='stylesheet' type='text/css' media='all' href='{$css}' />\n" . "<link rel='stylesheet' type='text/css' media='all' href='{$css_icones}' />\n"; } return $flux; }
function nuage_insert_head($flux) { $css = "\n<link rel=\"stylesheet\" href=\"" . direction_css(find_in_path('nuage.css')) . "\" type=\"text/css\" media=\"all\" />\n"; return $css.$flux; }
function cs_header_hit(&$flux, $type, $suffixe='') { $f = "header$suffixe.$type"; $nom = sous_repertoire(_DIR_VAR,'couteau-suisse') . $f; $tmp = _DIR_CS_TMP . $f; if(!file_exists($tmp) || !file_exists($nom) || $GLOBALS['var_mode']=='recalcul') { if (lire_fichier(_DIR_CS_TMP."header.$type.html", $t) && strlen($t)) { if(strpos($t, '<cs_html>')!==false) $t = preg_replace_callback(',<cs_html>(.*)</cs_html>,Ums', 'cs_compile_header_callback', $t); ecrire_fichier($nom, $t, true); ecrire_fichier($tmp, $t, true); } else { if(defined('_LOG_CS')) cs_log(" -- fichier $fo illisible. hit non construit"); return; } } switch($type) { case 'js': $flux .= '<script src="'.$nom.'" type="text/javascript"></script>'; break; case 'css': include_spip('inc/filtres'); $flux .= '<link rel="stylesheet" href="'.direction_css($nom).'" type="text/css" media="all" />'; break; } }