From 1c2d1019f48fa6b2dbc154f7534341ad0869a5d7 Mon Sep 17 00:00:00 2001 From: Andreas Gohr <andi@splitbrain.org> Date: Sun, 30 Oct 2005 16:28:28 +0100 Subject: [PATCH] Interwiki icons are set through CSS classes now darcs-hash:20051030152828-7ad00-58a99ca20a1d6ec62612a6281034c1dd669be44d.gz --- inc/parser/xhtml.php | 19 +++------- lib/exe/css.php | 41 ++++++++++++++++++++- lib/exe/js.php | 2 +- lib/{tpl/default => }/images/interwiki.png | Bin lib/tpl/default/design.css | 4 +- 5 files changed, 47 insertions(+), 19 deletions(-) rename lib/{tpl/default => }/images/interwiki.png (100%) diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php index d0f24d26f..d62fdfff6 100644 --- a/inc/parser/xhtml.php +++ b/inc/parser/xhtml.php @@ -568,12 +568,6 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $link['more'] = ''; $link['name'] = $this->_getLinkTitle($name, $wikiUri, $isImage); - if ( !$isImage ) { - $link['class'] = 'interwiki'; - } else { - $link['class'] = 'media'; - } - //get interwiki URL if ( isset($this->interwiki[$wikiName]) ) { $url = $this->interwiki[$wikiName]; @@ -582,14 +576,11 @@ class Doku_Renderer_xhtml extends Doku_Renderer { $url = 'http://www.google.com/search?q={URL}&btnI=lucky'; $wikiName = 'go'; } - - if(!$isImage){ - //if ico exists set additional style - if(@file_exists(DOKU_INC.'lib/images/interwiki/'.$wikiName.'.png')){ - $link['style']='background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$wikiName.'.png)'; - }elseif(@file_exists(DOKU_INC.'lib/images/interwiki/'.$wikiName.'.gif')){ - $link['style']='background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$wikiName.'.gif)'; - } + + if ( !$isImage ) { + $link['class'] = "interwiki iw_$wikiName"; + } else { + $link['class'] = 'media'; } //do we stay at the same server? Use local target diff --git a/lib/exe/css.php b/lib/exe/css.php index 7b6523b41..a9e0efab5 100644 --- a/lib/exe/css.php +++ b/lib/exe/css.php @@ -7,10 +7,11 @@ */ if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); -define('NOSESSION',true); // we do not use a session or authentication here (better caching) +if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching) require_once(DOKU_INC.'inc/init.php'); require_once(DOKU_INC.'inc/pageutils.php'); require_once(DOKU_INC.'inc/io.php'); +require_once(DOKU_INC.'inc/confutils.php'); // Main (don't run when UNIT test) if(!defined('SIMPLE_TEST')){ @@ -64,6 +65,9 @@ function css_out(){ // start output buffering and build the stylesheet ob_start(); + // print the default classes for Interwikilinks + css_interwiki(); + // load files foreach($files as $file => $location){ print css_loadfile($file, $location); @@ -108,6 +112,41 @@ function css_cacheok($cache,$files){ return true; } +/** + * Prints classes for interwikilinks + * + * Interwiki links have two classes: 'interwiki' and 'iw_$name>' where + * $name is the identifier given in the config. All Interwiki links get + * an default style with a default icon. If a special icon is available + * for an interwiki URL it is set in it's own class. Both classes can be + * overwritten in the template or userstyles. + * + * @author Andreas Gohr <andi@splitbrain.org> + */ +function css_interwiki(){ + + // default style + echo 'a.interwiki {'; + echo ' background: transparent url('.DOKU_BASE.'lib/images/interwiki.png) 0px 1px no-repeat;'; + echo ' padding-left: 16px;'; + echo '}'; + + // additional styles when icon available + $iwlinks = getInterwiki(); + foreach(array_keys($iwlinks) as $iw){ + if(@file_exists(DOKU_INC.'lib/images/interwiki/'.$iw.'.png')){ + echo "a.iw_$iw {"; + echo ' background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$iw.'.png)'; + echo '}'; + }elseif(@file_exists(DOKU_INC.'lib/images/interwiki/'.$iw.'.gif')){ + echo "a.iw_$iw {"; + echo ' background-image: url('.DOKU_BASE.'lib/images/interwiki/'.$iw.'.gif)'; + echo '}'; + } + } + +} + /** * Loads a given file and fixes relative URLs with the * given location prefix diff --git a/lib/exe/js.php b/lib/exe/js.php index 9708dbc0d..b8b8c6401 100644 --- a/lib/exe/js.php +++ b/lib/exe/js.php @@ -7,7 +7,7 @@ */ if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); -define('NOSESSION',true); // we do not use a session or authentication here (better caching) +if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching) require_once(DOKU_INC.'inc/init.php'); require_once(DOKU_INC.'inc/pageutils.php'); require_once(DOKU_INC.'inc/io.php'); diff --git a/lib/tpl/default/images/interwiki.png b/lib/images/interwiki.png similarity index 100% rename from lib/tpl/default/images/interwiki.png rename to lib/images/interwiki.png diff --git a/lib/tpl/default/design.css b/lib/tpl/default/design.css index 7b84ea614..f68043fa9 100644 --- a/lib/tpl/default/design.css +++ b/lib/tpl/default/design.css @@ -214,10 +214,8 @@ a.windows:hover { text-decoration:underline; } -/* interwiki link */ +/* interwiki link (icon are set by dokuwiki) */ a.interwiki{ - background: transparent url(images/interwiki.png) 0px 1px no-repeat; - padding-left: 16px; color:#436976; text-decoration:none; } -- GitLab