summaryrefslogtreecommitdiff
path: root/inc/parser/xhtml.php
diff options
context:
space:
mode:
Diffstat (limited to 'inc/parser/xhtml.php')
-rw-r--r--inc/parser/xhtml.php81
1 files changed, 37 insertions, 44 deletions
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index dc0759821..dee3c922d 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -17,9 +17,6 @@ if ( !defined('DOKU_TAB') ) {
define ('DOKU_TAB',"\t");
}
-require_once DOKU_INC . 'inc/parser/renderer.php';
-require_once DOKU_INC . 'inc/html.php';
-
/**
* The Renderer
*/
@@ -563,6 +560,12 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
* $search,$returnonly & $linktype are not for the renderer but are used
* elsewhere - no need to implement them in other renderers
*
+ * @param string $id pageid
+ * @param string|null $name link name
+ * @param string|null $search adds search url param
+ * @param bool $returnonly whether to return html or write to doc attribute
+ * @param string $linktype type to set use of headings
+ * @return void|string writes to doc attribute or returns html depends on $returnonly
* @author Andreas Gohr <andi@splitbrain.org>
*/
function internallink($id, $name = null, $search=null,$returnonly=false,$linktype='content') {
@@ -604,7 +607,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
//keep hash anchor
- list($id,$hash) = explode('#',$id,2);
+ @list($id,$hash) = explode('#',$id,2);
if(!empty($hash)) $hash = $this->_headerToLink($hash);
//prepare for formating
@@ -689,7 +692,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
}
/**
- */
+ */
function interwikilink($match, $name = null, $wikiName, $wikiUri) {
global $conf;
@@ -701,19 +704,28 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$link['name'] = $this->_getLinkTitle($name, $wikiUri, $isImage);
//get interwiki URL
- $url = $this->_resolveInterWiki($wikiName,$wikiUri);
+ $exists = null;
+ $url = $this->_resolveInterWiki($wikiName, $wikiUri, $exists);
- if ( !$isImage ) {
- $class = preg_replace('/[^_\-a-z0-9]+/i','_',$wikiName);
+ if(!$isImage) {
+ $class = preg_replace('/[^_\-a-z0-9]+/i', '_', $wikiName);
$link['class'] = "interwiki iw_$class";
} else {
$link['class'] = 'media';
}
//do we stay at the same server? Use local target
- if( strpos($url,DOKU_URL) === 0 ){
+ if(strpos($url, DOKU_URL) === 0 OR strpos($url, DOKU_BASE) === 0) {
$link['target'] = $conf['target']['wiki'];
}
+ if($exists !== null && !$isImage) {
+ if($exists) {
+ $link['class'] .= ' wikilink1';
+ } else {
+ $link['class'] .= ' wikilink2';
+ $link['rel'] = 'nofollow';
+ }
+ }
$link['url'] = $url;
$link['title'] = htmlspecialchars($link['url']);
@@ -1100,47 +1112,29 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
$ret .= ' />';
- }elseif(media_supportedav($mime, 'video')){
+ }elseif(media_supportedav($mime, 'video') || media_supportedav($mime, 'audio')){
// first get the $title
- if (!is_null($title)) {
- $title = $this->_xmlEntities($title);
- }
- if (!$title) {
- // just show the sourcename
- $title = $this->_xmlEntities(utf8_basename(noNS($src)));
- }
+ $title = !is_null($title) ? $this->_xmlEntities($title) : false;
if (!$render) {
- // if the video is not supposed to be rendered
- // return the title of the video
- return $title;
+ // if the file is not supposed to be rendered
+ // return the title of the file (just the sourcename if there is no title)
+ return $title ? $title : $this->_xmlEntities(utf8_basename(noNS($src)));
}
$att = array();
$att['class'] = "media$align";
+ if ($title) {
+ $att['title'] = $title;
+ }
- //add video(s)
- $ret .= $this->_video($src, $width, $height, $att);
-
- }elseif(media_supportedav($mime, 'audio')){
- // first get the $title
- if (!is_null($title)) {
- $title = $this->_xmlEntities($title);
+ if (media_supportedav($mime, 'video')) {
+ //add video
+ $ret .= $this->_video($src, $width, $height, $att);
}
- if (!$title) {
- // just show the sourcename
- $title = $this->_xmlEntities(utf8_basename(noNS($src)));
+ if (media_supportedav($mime, 'audio')) {
+ //add audio
+ $ret .= $this->_audio($src, $att);
}
- if (!$render) {
- // if the video is not supposed to be rendered
- // return the title of the video
- return $title;
- }
-
- $att = array();
- $att['class'] = "media$align";
-
- //add audio
- $ret .= $this->_audio($src, $att);
}elseif($mime == 'application/x-shockwave-flash'){
if (!$render) {
@@ -1286,7 +1280,6 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
* @return string
*/
function _video($src,$width,$height,$atts=null){
-
// prepare width and height
if(is_null($atts)) $atts = array();
$atts['width'] = (int) $width;
@@ -1313,7 +1306,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// output source for each alternative video format
foreach($alternatives as $mime => $file) {
$url = ml($file,array('cache'=>$cache),true,'&');
- $title = $this->_xmlEntities(utf8_basename(noNS($file)));
+ $title = $atts['title'] ? $atts['title'] : $this->_xmlEntities(utf8_basename(noNS($file)));
$out .= '<source src="'.hsc($url).'" type="'.$mime.'" />'.NL;
// alternative content (just a link to the file)
@@ -1349,7 +1342,7 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
// output source for each alternative audio format
foreach($alternatives as $mime => $file) {
$url = ml($file,array('cache'=>$cache),true,'&');
- $title = $this->_xmlEntities(utf8_basename(noNS($file)));
+ $title = $atts['title'] ? $atts['title'] : $this->_xmlEntities(utf8_basename(noNS($file)));
$out .= '<source src="'.hsc($url).'" type="'.$mime.'" />'.NL;
// alternative content (just a link to the file)