Use Horde_Themes_Css to output stylesheets
authorMichael M Slusarz <slusarz@curecanti.org>
Mon, 22 Nov 2010 09:03:02 +0000 (02:03 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Mon, 22 Nov 2010 18:33:23 +0000 (11:33 -0700)
18 files changed:
ansel/faces/custom.php
ansel/image.php
ansel/lib/Ansel.php
ansel/lib/View/EmbeddedRenderer/GalleryLink.php
ansel/lib/View/EmbeddedRenderer/Mini.php
ansel/lib/View/GalleryRenderer/GalleryLightbox.php
ansel/templates/common-header.inc
ansel/templates/faces/custom.inc
horde/lib/Block/fb_stream.php
horde/lib/Prefs/Ui.php
horde/templates/prefs/facebook.html
horde/themes/default/embed.css
kronolith/lib/Ajax/Imple/Embed.php
mnemo/lib/Block/summary.php
mnemo/templates/common-header.inc
nag/lib/Block/summary.php
nag/templates/common-header.inc
trean/templates/common-header.inc

index 5252a81..95ac574 100644 (file)
@@ -73,6 +73,8 @@ Horde::addScriptFile('dragdrop.js', 'horde');
 Horde::addScriptFile('cropper.js');
 Horde::addScriptFile('stripe.js', 'horde');
 
+$injector->getInstance('Horde_Themes_Css')->addThemeStylesheet('cropper.css');
+
 require ANSEL_TEMPLATES . '/common-header.inc';
 echo Horde::menu();
 $notification->notify(array('listeners' => 'status'));
index 8896961..56701a7 100644 (file)
@@ -324,7 +324,8 @@ case 'resizeedit':
         Horde::addScriptFile('controls.js', 'horde');
         Horde::addScriptFile('dragdrop.js', 'horde');
         Horde::addScriptFile('cropper.js');
-        Ansel::attachStylesheet('cropper.css');
+
+        $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('cropper.css');
     } elseif ($actionID == 'resizeedit') {
         /* js and css files */
         // TODO: Combine these cases
index 68ac646..d0b6db8 100644 (file)
@@ -733,55 +733,6 @@ class Ansel
     }
 
     /**
-     * Add a custom stylesheet to the current page. Need our own implementation
-     * since we want to be able to ouput specific CSS files at specific times
-     * (like when rendering embedded content, or calling via the api etc...).
-     *
-     * @param string $stylesheet  The stylesheet to add. A path relative
-     *                            to $themesfs
-     * @param boolean $link       Immediately output the CSS link
-     */
-    static public function attachStylesheet($stylesheet, $link = false)
-    {
-       $GLOBALS['ansel_stylesheets'][] = $stylesheet;
-       if ($link) {
-           Ansel::stylesheetLinks(true);
-       }
-    }
-
-    /**
-     * Output the stylesheet links
-     *
-     * @param boolean $custom_only  Don't include ansel's base CSS file
-     */
-    static public function stylesheetLinks($custom_only = false)
-    {
-        /* Custom CSS */
-        $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[$themesfs . '/' . $css_file] = Horde::url($themesuri . '/' . $css_file, true);
-            }
-        }
-
-        /* Use Horde's stylesheet code if we aren't ouputting css directly */
-        if (!$custom_only) {
-            foreach ($css as $f => $u) {
-                $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addStylesheet($f, $u);
-            }
-
-            Horde::includeStylesheetFiles();
-        } else {
-            foreach ($css as $u) {
-                echo '<link href="' . $u . '" rel="stylesheet" type="text/css" />' . "\n";
-            }
-        }
-    }
-
-    /**
      * Get a date parts array containing only enough date parts for the depth
      * we are at. If an empty array is passed, attempt to get the parts from
      * url parametrs. Any missing date parts must be set to 0.
index c0640a9..4694b32 100644 (file)
@@ -83,8 +83,15 @@ class Ansel_View_EmbeddedRenderer_GalleryLink extends Ansel_View_Gallery
         }
         $json = $GLOBALS['injector']->getInstance('Ansel_Injector_Factory_Storage')->create()->getImageJson($images, null, true, $thumbsize, true);
 
+        $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('jsembed.css');
+        Horde::startBuffer();
+        Horde::includeStylesheetFiles(array(
+            'nobase' => true,
+            'nohorde' => true
+        ));
+        $css = Horde::endBuffer();
+
         /* Some paths */
-        $cssurl = Horde::url($GLOBALS['registry']->get('themesuri', 'ansel') . '/jsembed.css', true);
         $js_path = $GLOBALS['registry']->get('jsuri', 'horde');
         $pturl = Horde::url($js_path . '/prototype.js', true);
         $ansel_js_path = $GLOBALS['registry']->get('jsuri', 'ansel');
@@ -106,7 +113,7 @@ class Ansel_View_EmbeddedRenderer_GalleryLink extends Ansel_View_Gallery
                 }
                 anselnodes = new Array();
                 anseljson = new Object();
-                document.write('<link type="text/css" rel="stylesheet" href="$cssurl" />');
+                document.write('$css');
                 document.write('<script type="text/javascript" src="$jsurl"></script>');
             }
             anselnodes[anselnodes.length] = '$node';
index ec07669..402a40e 100644 (file)
@@ -80,9 +80,10 @@ class Ansel_View_EmbeddedRenderer_Mini extends Ansel_View_Gallery
             $json_full = $GLOBALS['injector']->getInstance('Ansel_Injector_Factory_Storage')->create()->getImageJson($images, null, true, 'screen', true);
         }
 
+        $horde_css = $GLOBALS['injector']->getInstance('Horde_Themes_Css');
+        $horde_css->addThemeStylesheet('embed.css');
+
         /* Some paths */
-        $cssurl = Horde::url($GLOBALS['registry']->get('themesuri', 'ansel') . '/embed.css', true);
-        $hcssurl = Horde::url($GLOBALS['registry']->get('themesuri', 'horde') . '/embed.css', true);
         $js_path = $GLOBALS['registry']->get('jsuri', 'horde');
         $pturl = Horde::url($js_path . '/prototype.js', true);
         $hjsurl = Horde::url($js_path . '/tooltips.js', true);
@@ -94,9 +95,15 @@ class Ansel_View_EmbeddedRenderer_Mini extends Ansel_View_Gallery
         if (!empty($this->_params['lightbox'])) {
             $effectsurl = Horde::url($js_path . '/effects.js', true);
             $lbjsurl = Horde::url($ansel_js_path . '/lightbox.js', true);
-            $lbcssurl = Horde::url($GLOBALS['registry']->get('themesuri', 'ansel') . '/lightbox.css', true);
+            $horde_css->addThemeStylesheet('lightbox.css');
         }
 
+        Horde::startBuffer();
+        Horde::includeStylesheetFiles(array(
+            'nobase' => true
+        ));
+        $css = Horde::endBuffer();
+
         /* Start building the javascript */
         $html = <<<EOT
             //<![CDATA[
@@ -111,12 +118,11 @@ class Ansel_View_EmbeddedRenderer_Mini extends Ansel_View_Gallery
                 }
                 if (typeof Horde_ToolTips == 'undefined') {
                     document.write('<script type="text/javascript" src="$hjsurl"></script>');
-                    document.write('<link type="text/css" rel="stylesheet" href="$hcssurl" />');
                 }
 
                 anselnodes = new Array();
                 anseljson = new Object();
-                document.write('<link type="text/css" rel="stylesheet" href="$cssurl" />');
+                document.write('$cssurl');
                 document.write('<script type="text/javascript" src="$jsurl"></script>');
             }
             anselnodes[anselnodes.length] = '$node';
@@ -143,7 +149,6 @@ EOT;
                 if (typeof lbOptions == 'undefined') {
 
                     document.write('<script type="text/javascript" src="$lbjsurl"></script>');
-                    document.write('<link type="text/css" rel="stylesheet" href="$lbcssurl" />');
 
                     lbOptions = {
                         fileLoadingImage: '$loading_img',
index b9820f7..5e91c9d 100644 (file)
@@ -32,7 +32,7 @@ class Ansel_View_GalleryRenderer_GalleryLightbox extends Ansel_View_GalleryRende
 
         // Attach the script and CSS files here if we aren't being called via the api
         if (empty($this->view->api)) {
-            Ansel::attachStylesheet('lightbox.css');
+            $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('lightbox.css');
             Horde::addScriptFile('effects.js', 'horde');
             Horde::addScriptFile('lightbox.js', 'ansel');
             Horde::addScriptFile('popup.js', 'horde');
@@ -135,7 +135,8 @@ class Ansel_View_GalleryRenderer_GalleryLightbox extends Ansel_View_GalleryRende
         }
         /* Output js/css here if we are calling via the api */
         if ($this->view->api) {
-            Ansel::attachStylesheet('lightbox.css', true);
+            $injector->getInstance('Horde_Themes_Css')->addThemeStylesheet('lightbox.css');
+            Horde::includeStylesheetFiles(array('nobase' => true));
             $includes = $GLOBALS['injector']->createInstance('Horde_Script_Files');
             $includes->add('accesskeys.js', 'horde', true, true);
             $includes->add('effects.js', 'horde', true, true);
index a607aee..5b1ea0b 100644 (file)
@@ -20,7 +20,7 @@ if (!empty($title)) {
 Horde::outputMetaTags();
 Horde::includeScriptFiles();
 Horde::includeFavicon();
-echo Ansel::stylesheetLinks();
+Horde::includeStylesheetFiles();
 echo Horde::wrapInlineScript(Ansel::initJSVars());
 Horde::outputInlineScript();
 
index c0d8696..00908c1 100755 (executable)
@@ -1,5 +1,4 @@
 <h1 class="header"><?php echo $title ?></h1>
-<?php Ansel::attachStylesheet('cropper.css', true);?>
 
 <script type="text/javascript">
 
index 63f96b0..be873d1 100644 (file)
@@ -113,10 +113,11 @@ class Horde_Block_Horde_fb_stream extends Horde_Block
     protected function _content()
     {
         $instance = md5(mt_rand());
-        $csslink = $GLOBALS['registry']->get('themesuri', 'horde') . '/facebook.css';
         $endpoint = Horde::url('services/facebook.php', true);
         $html = '';
 
+        $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('facebook.css');
+
         /* Init facebook driver, exit early if no prefs exist */
         $facebook = $this->_facebook;
         $fbp = $this->_fbp;
@@ -141,8 +142,8 @@ class Horde_Block_Horde_fb_stream extends Horde_Block
             });
 EOT;
         Horde::addInlineScript($script, 'dom');
+
         /* Build the UI */
-        $html .= '<link href="' . $csslink . '" rel="stylesheet" type="text/css" />';
         $html .= '<div style="padding-left: 8px;padding-right:8px;">';
 
         /* Build the Notification Section */
index 950f2f3..ecd2792 100644 (file)
@@ -444,10 +444,11 @@ class Horde_Prefs_Ui
             return _($e->getMessage());
         }
 
+        $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('facebook.css');
+
         /* Horde_Template */
         $t = $GLOBALS['injector']->createInstance('Horde_Template');
         $t->setOption('gettext', true);
-        $t->set('css_link', $GLOBALS['registry']->get('themesuri', 'horde') . '/facebook.css');
         $t->set('app_name', $GLOBALS['registry']->get('name', 'horde'));
 
         /* Check for facebook session */
@@ -554,7 +555,6 @@ class Horde_Prefs_Ui
 
         $t = $GLOBALS['injector']->createInstance('Horde_Template');
         $t->setOption('gettext', true);
-        $t->set('css_link', $GLOBALS['registry']->get('themesuri', 'horde') . '/facebook.css');
 
         /* Could not find a valid auth token, and we are not in the process of getting one */
         if (empty($profile)) {
index 0261933..a7ab791 100644 (file)
@@ -1,4 +1,3 @@
-<link href="<tag:css_link />" rel="stylesheet" type="text/css" />
 <input type="hidden" name="fbactionID" id="fbactionID" />
 <if:have_session>
     <div class="fbbluebox" style="float:left">
index 2b465a4..e55bc82 100644 (file)
@@ -10,6 +10,7 @@ div.horde_nicetitle {
     -moz-border-radius: 3px;
     -webkit-border-radius: 3px;
 }
+
 div.horde_nicetitle pre {
     text-align: left;
     font-size: 75%;
index d515843..ba07cd1 100644 (file)
@@ -87,10 +87,16 @@ class Kronolith_Ajax_Imple_Embed extends Horde_Core_Ajax_Imple
 
         /* CSS */
         if (empty($nocss)) {
-            $cssurl = Horde::url($GLOBALS['registry']->get('themesuri', 'kronolith') . '/embed.css', true);
-            $hcssurl = Horde::url($GLOBALS['registry']->get('themesuri', 'horde') . '/embed.css', true);
+            $horde_css = $GLOBALS['injector']->getInstance('Horde_Themes_Css');
+            $horde_css->addThemeStylesheet('embed.css');
+
+            Horde::startBuffer();
+            Horde::includeStylesheetFiles(array(
+                'nobase' => true
+            ));
+            $css = Horde::endBuffer();
         } else {
-            $cssurl= '';
+            $css = '';
         }
 
         /* Escape the text and put together the javascript to send back */
@@ -104,12 +110,11 @@ class Kronolith_Ajax_Imple_Embed extends Horde_Core_Ajax_Imple
             if (typeof Horde_ToolTips == 'undefined') {
                 Horde_ToolTips_Autoload = false;
                 document.write('<script type="text/javascript" src="$hjsurl"></script>');
-                document.write('<link type="text/css" rel="stylesheet" href="$hcssurl" />');
             }
             kronolith = new Object();
             kronolithNodes = new Array();
             document.write('<script type="text/javascript" src="$jsurl"></script>');
-            document.write('<link type="text/css" rel="stylesheet" href="$cssurl" />');
+            document.write('$css');
         }
         kronolithNodes[kronolithNodes.length] = '$container';
         kronolith['$container'] = "$results";
index f64a597..c380653 100644 (file)
@@ -110,11 +110,9 @@ class Horde_Block_Mnemo_summary extends Horde_Block
             return '<p><em>' . _("No notes to display") . '</em></p>';
         }
 
-        return '<link href="'
-            . htmlspecialchars(Horde::url('themes/categoryCSS.php',
-                                                     true))
-            . '" rel="stylesheet" type="text/css" />'
-            . '<table cellspacing="0" width="100%" class="linedRow">' . $html
+        $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('categoryCSS.php');
+
+        return '<table cellspacing="0" width="100%" class="linedRow">' . $html
             . '</table>';
     }
 
index 38a167b..9d604b5 100644 (file)
@@ -21,7 +21,7 @@ Horde::outputMetaTags();
 Horde::includeScriptFiles();
 Horde::includeFavicon();
 
-$injector->getInstance('Horde_Themes_Css')->addStylesheet($registry->get('themesfs') . '/categoryCSS.php', $registry->get('themesuri') . '/categoryCSS.php');
+$injector->getInstance('Horde_Themes_Css')->addThemeStylesheet('categoryCSS.php');
 Horde::includeStylesheetFiles();
 
 $bc = $prefs->getValue('show_panel')
index b0ad2ad..8b667b6 100644 (file)
@@ -247,11 +247,9 @@ class Horde_Block_nag_summary extends Horde_Block
             return '<em>' . _("No tasks to display") . '</em>';
         }
 
-        return '<link href="'
-            . htmlspecialchars(Horde::url('themes/categoryCSS.php',
-                                                     true))
-            . '" rel="stylesheet" type="text/css" />'
-            . '<table cellspacing="0" width="100%" class="linedRow">'
+        $GLOBALS['injector']->getInstance('Horde_Themes_Css')->addThemeStylesheet('categoryCSS.php');
+
+        return '<table cellspacing="0" width="100%" class="linedRow">'
             . $html . '</table>';
     }
 
index c839b9a..b4d2aa3 100644 (file)
@@ -23,7 +23,7 @@ Horde::includeScriptFiles();
 Horde::outputInlineScript();
 Horde::includeFavicon();
 
-$injector->getInstance('Horde_Themes_Css')->addStylesheet($registry->get('themesfs') . '/categoryCSS.php', $registry->get('themesuri') . '/categoryCSS.php');
+$injector->getInstance('Horde_Themes_Css')->addThemeStylesheet('categoryCSS.php');
 Horde::includeStylesheetFiles();
 
 $bc = $prefs->getValue('show_panel')
index af19b5f..8585ce4 100644 (file)
@@ -21,7 +21,7 @@ Horde::outputMetaTags();
 Horde::includeScriptFiles();
 Horde::includeFavicon();
 
-$injector->getInstance('Horde_Themes_Css')->addStylesheet($registry->get('themesfs') . '/grids-min.css', $registry->get('themesuri')  . '/grids-min.css');
+$injector->getInstance('Horde_Themes_Css')->addThemeStylesheet('grids-min.css');
 Horde::includeStylesheetFiles();
 
 $rss = Horde::url('rss.php', true, -1);