Bug #9358: Add Horde_Themes::addStylesheetFile()
authorMichael M Slusarz <slusarz@curecanti.org>
Tue, 9 Nov 2010 08:11:29 +0000 (01:11 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Tue, 9 Nov 2010 08:11:29 +0000 (01:11 -0700)
ansel/lib/Ansel.php
framework/Core/lib/Horde/Core/Mime/Viewer/Syntaxhighlighter.php
framework/Core/lib/Horde/Themes.php
horde/services/portal/index.php
horde/templates/common-header.inc
imp/templates/common-header.inc
jonah/lib/View/StoryView.php
mnemo/templates/common-header.inc
nag/templates/common-header.inc
trean/templates/common-header.inc

index 1f1c2a4..e3a3894 100644 (file)
@@ -760,22 +760,22 @@ class Ansel
         $themesuri = $GLOBALS['registry']->get('themesuri', 'ansel');
         $themesfs = $GLOBALS['registry']->get('themesfs', 'ansel');
         $css = array();
+
         if (!empty($GLOBALS['ansel_stylesheets'])) {
             foreach ($GLOBALS['ansel_stylesheets'] as $css_file) {
-                $css[] = array('u' => Horde::url($themesuri . '/' . $css_file, true),
-                               'f' => $themesfs . '/' . $css_file);
+                $css[$themesfs . '/' . $css_file] = Horde::url($themesuri . '/' . $css_file, true);
             }
         }
 
         /* Use Horde's stylesheet code if we aren't ouputting css directly */
         if (!$custom_only) {
-            Horde_Themes::includeStylesheetFiles(array('additional' => $css));
+            foreach ($css as $f => $u) {
+                Horde_Themes::addStylesheetFile($f, $u);
+            }
+            Horde_Themes::includeStylesheetFiles();
         } else {
-            foreach ($css as $file) {
-                echo '<link href="' . $file['u']
-                     . '" rel="stylesheet" type="text/css"'
-                     . (isset($file['m']) ? ' media="' . $file['m'] . '"' : '')
-                     . ' />' . "\n";
+            foreach ($css as $u) {
+                echo '<link href="' . $u . '" rel="stylesheet" type="text/css" />' . "\n";
             }
         }
     }
index e290899..20a9225 100644 (file)
@@ -40,11 +40,11 @@ class Horde_Core_Mime_Viewer_Syntaxhighlighter extends Horde_Mime_Viewer_Syntaxh
 
             $sh_js_fs = $this->getConfigParam('registry')->get('jsfs', 'horde') . '/syntaxhighlighter/styles/';
             $sh_js_uri = Horde::url($this->getConfigParam('registry')->get('jsuri', 'horde'), false, -1) . '/syntaxhighlighter/styles/';
-            Horde_Themes::includeStylesheetFiles(array('additional' => array(
-                array('f' => $sh_js_fs . 'shCoreEclipse.css', 'u' => $sh_js_uri . 'shCoreEclipse.css'),
-                array('f' => $sh_js_fs . 'shThemeEclipse.css', 'u' => $sh_js_uri . 'shThemeEclipse.css'),
-            )));
+
+            Horde_Themes::addStylesheetFile($sh_js_fs . 'shCoreEclipse.css', $sh_js_uri . 'shCoreEclipse.css');
+            Horde_Themes::addStylesheetFile($sh_js_fs . 'shThemeEclipse.css', $sh_js_uri . 'shThemeEclipse.css');
         }
+
         if (empty(self::$_shBrushes[$brush])) {
             Horde::addScriptFile('syntaxhighlighter/scripts/shBrush' . $brush . '.js', 'horde', true);
             self::$_shBrushes[$brush] = true;
index ae3144f..c051a07 100644 (file)
 class Horde_Themes
 {
     /**
+     * A list of additional stylesheet files to add to the output.
+     *
+     * @var array
+     */
+    static protected $_cssFiles = array();
+
+    /**
+     * Adds an external stylesheet to the output.
+     *
+     * @param string $file
+     */
+    static public function addStylesheet($file, $url)
+    {
+        $this->_cssFiles[$file] = $url;
+    }
+
+    /**
      * Outputs the necessary style tags, honoring configuration choices as
      * to stylesheet caching.
      *
      * @param array $options  Additional options:
      * <pre>
-     * 'additional' - (array) TODO
      * 'nohorde' - (boolean) If true, don't load files from Horde.
      * 'sub' - (string) A subdirectory containing additional CSS files to
      *         load as an overlay to the base CSS files.
@@ -39,10 +55,6 @@ class Horde_Themes
         $css = self::getStylesheets(isset($options['theme']) ? $options['theme'] : $prefs->getValue('theme'), $options);
         $css_out = array();
 
-        if (!empty($options['additional'])) {
-            $css = array_merge($css, $options['additional']);
-        }
-
         $cache_type = empty($conf['cachecss'])
             ? 'none'
             : $conf['cachecssparams']['driver'];
@@ -123,8 +135,6 @@ class Horde_Themes
 
     /**
      * Return the list of base stylesheets to display.
-     * Callback for includeStylesheetFiles() to convert images to base64
-     * data strings.
      *
      * @param mixed $theme    The theme to use; specify an empty value to
      *                        retrieve the theme from user preferences, and
@@ -216,6 +226,9 @@ class Horde_Themes
             }
         }
 
+        /* Add additional stylesheets added by code. */
+        $css = array_merge($css, $this->_cssFiles);
+
         /* Add user-defined additional stylesheets. */
         try {
             $css = array_merge($css, Horde::callHook('cssfiles', array($theme), 'horde'));
index b63dd00..170c8ee 100644 (file)
@@ -51,9 +51,10 @@ $view = new Horde_Block_Layout_View(
     Horde::url('services/portal/index.php', true));
 $layout_html = $view->toHtml();
 
-$horde_css_stylesheets = array();
 foreach ($view->getApplications() as $app) {
-    $horde_css_stylesheets = array_merge($horde_css_stylesheets, Horde_Themes::getStylesheets('', array('app' => $app)));
+    foreach (Horde_Themes::getStylesheets('', array('app' => $app)) as $f => $u) {
+        Horde_Themes::addStylesheetFile($f, $u);
+    }
 }
 
 $linkTags = $view->getLinkTags();
index d222811..7aa0330 100644 (file)
@@ -25,7 +25,7 @@ Horde::outputMetaTags();
 <?php if (!$GLOBALS['browser']->isMobile()): ?>
 <link href="<?php echo Horde_Themes::img('favicon.ico', array('nohorde' => true)) ?>" rel="SHORTCUT ICON" />
 <?php
-echo Horde_Themes::includeStylesheetFiles(array('additional' => Horde_Util::nonInputVar('horde_css_stylesheets', array())));
+echo Horde_Themes::includeStylesheetFiles();
 echo Horde::includeScriptFiles();
 echo implode("\n", Horde_Util::nonInputVar('linkTags', array()));
 Horde::outputInlineScript();
index e823448..d4e4cca 100644 (file)
@@ -36,7 +36,9 @@ Horde::outputMetaTags();
 
 switch ($imp_view) {
 case 'dimp':
-    Horde_Themes::includeStylesheetFiles(array('sub' => 'dimp'));
+    Horde_Themes::includeStylesheetFiles(array(
+        'sub' => 'dimp'
+    ));
     if (!in_array(basename($_SERVER['PHP_SELF']), array('compose-dimp.php', 'index-dimp.php', 'message-dimp.php'))) {
         Horde::includeScriptFiles();
         Horde::outputInlineScript();
index c2b6f49..dc774e8 100644 (file)
@@ -65,10 +65,9 @@ EOT;
 
         $sh_js_fs = $GLOBALS['registry']->get('jsfs', 'horde') . '/syntaxhighlighter/styles/';
         $sh_js_uri = Horde::url($GLOBALS['registry']->get('jsuri', 'horde'), false, -1) . '/syntaxhighlighter/styles/';
-        Horde_Themes::includeStylesheetFiles(array('additional' => array(
-            array('f' => $sh_js_fs . 'shCoreEclipse.css', 'u' => $sh_js_uri . 'shCoreEclipse.css'),
-            array('f' => $sh_js_fs . 'shThemeEclipse.css', 'u' => $sh_js_uri . 'shThemeEclipse.css'),
-        )));
+
+        Horde_Themes::addStylesheetFile($sh_js_fs . 'shCoreEclipse.css', $sh_js_uri . 'shCoreEclipse.css');
+        Horde_Themes::addStylesheetFile($sh_js_fs . 'shThemeEclipse.css', $sh_js_uri . 'shThemeEclipse.css');
 
         $driver = $GLOBALS['injector']->getInstance('Jonah_Driver');
         try {
index 80159ce..163c4b0 100644 (file)
@@ -20,6 +20,8 @@ if (!empty($title)) {
 Horde::outputMetaTags();
 Horde::includeScriptFiles();
 
+Horde::addStylesheetFile($registry->get('themesfs') . '/categoryCSS.php', $registry->get('themesuri') . '/categoryCSS.php');
+
 $bc = $prefs->getValue('show_panel')
     ? 'rightPanel'
     : '';
@@ -28,7 +30,6 @@ $bc = $prefs->getValue('show_panel')
 <title><?php echo htmlspecialchars($page_title) ?></title>
 <link href="<?php echo Horde_Themes::img('favicon.ico', array('nohorde' => true)) ?>" rel="SHORTCUT ICON" />
 <?php Horde_Themes::includeStylesheetFiles() ?>
-<link href="<?php echo Horde::url('themes/categoryCSS.php') ?>" rel="stylesheet" type="text/css" />
 </head>
 
 <body<?php if ($bc) echo ' class="' . $bc . '"' ?><?php if ($bi = Horde_Util::nonInputVar('bodyId')) echo ' id="' . $bi . '"'; ?>>
index 7726b20..7c8c692 100644 (file)
@@ -17,6 +17,8 @@ if (!empty($title)) {
 Horde::outputMetaTags();
 Horde::includeScriptFiles();
 
+Horde::addStylesheetFile($registry->get('themesfs') . '/categoryCSS.php', $registry->get('themesuri') . '/categoryCSS.php');
+
 $bc = $prefs->getValue('show_panel')
     ? 'rightPanel'
     : '';
@@ -25,7 +27,6 @@ $bc = $prefs->getValue('show_panel')
 <title><?php echo htmlspecialchars($page_title) ?></title>
 <link href="<?php echo Horde_Themes::img('favicon.ico', array('nohorde' => true)) ?>" rel="SHORTCUT ICON" />
 <?php Horde_Themes::includeStylesheetFiles() ?>
-<link href="<?php echo Horde::url('themes/categoryCSS.php') ?>" rel="stylesheet" type="text/css" />
 <script type="text/javascript">
 var Nag = {};
 </script>
index 27e515a..c62cef6 100644 (file)
@@ -20,6 +20,8 @@ if (!empty($title)) {
 Horde::outputMetaTags();
 Horde::includeScriptFiles();
 
+Horde_Themes::addStylesheetFile($registry->get('themesfs') . '/grids-min.css', $registry->get('themesuri')  . '/grids-min.css');
+
 $rss = Horde::url('rss.php', true, -1);
 if (Horde_Util::getFormData('f')) {
     $rss = Horde_Util::addParameter($rss, 'f', Horde_Util::getFormData('f'), false);
@@ -38,7 +40,6 @@ if ($prefs->getValue('show_folder_actions')) {
 <title><?php echo htmlspecialchars($page_title) ?></title>
 <link href="<?php echo Horde_Themes::img('favicon.ico', array('nohorde' => true)) ?>" rel="SHORTCUT ICON" />
 <?php Horde_Themes::includeStylesheetFiles() ?>
-<link rel="stylesheet" href="<?php echo $registry->get('themesuri') ?>/grids-min.css" type="text/css" />
 </head>
 
 <body<?php if ($bc) echo ' class="' . $bc . '"' ?><?php if ($bi = Horde_Util::nonInputVar('bodyId')) echo ' id="' . $bi . '"'; ?>>