2014-07-28 19:09:55 +02:00
|
|
|
<?php
|
2015-02-04 10:46:36 +01:00
|
|
|
/* Icinga Web 2 | (c) 2013-2015 Icinga Development Team | GPLv2+ */
|
2014-07-28 19:09:55 +02:00
|
|
|
|
2015-02-11 14:10:12 +01:00
|
|
|
namespace Icinga\Module\Doc\Renderer;
|
2014-07-28 19:09:55 +02:00
|
|
|
|
2015-02-10 17:05:24 +01:00
|
|
|
use Exception;
|
2014-07-28 19:09:55 +02:00
|
|
|
use RecursiveIteratorIterator;
|
2015-02-10 17:05:24 +01:00
|
|
|
use Icinga\Application\Icinga;
|
2014-07-28 19:09:55 +02:00
|
|
|
use Icinga\Web\View;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Base class for toc and section renderer
|
|
|
|
*/
|
2015-02-11 14:05:18 +01:00
|
|
|
abstract class DocRenderer extends RecursiveIteratorIterator
|
2014-07-28 19:09:55 +02:00
|
|
|
{
|
2015-02-10 17:05:24 +01:00
|
|
|
/**
|
|
|
|
* URL to replace links with
|
|
|
|
*
|
2015-03-12 13:39:17 +01:00
|
|
|
* @var string
|
2015-02-10 17:05:24 +01:00
|
|
|
*/
|
|
|
|
protected $url;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Additional URL parameters
|
|
|
|
*
|
2015-03-12 13:39:17 +01:00
|
|
|
* @var array
|
2015-02-10 17:05:24 +01:00
|
|
|
*/
|
|
|
|
protected $urlParams = array();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* View
|
|
|
|
*
|
2015-03-12 13:39:17 +01:00
|
|
|
* @var View|null
|
2015-02-10 17:05:24 +01:00
|
|
|
*/
|
|
|
|
protected $view;
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the URL to replace links with
|
|
|
|
*
|
|
|
|
* @param string $url
|
|
|
|
*
|
|
|
|
* @return $this
|
|
|
|
*/
|
|
|
|
public function setUrl($url)
|
|
|
|
{
|
|
|
|
$this->url = (string) $url;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the URL to replace links with
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public function getUrl()
|
|
|
|
{
|
|
|
|
return $this->url;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set additional URL parameters
|
|
|
|
*
|
|
|
|
* @param array $urlParams
|
|
|
|
*
|
|
|
|
* @return $this
|
|
|
|
*/
|
|
|
|
public function setUrlParams(array $urlParams)
|
|
|
|
{
|
|
|
|
$this->urlParams = array_map(array($this, 'encodeUrlParam'), $urlParams);
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get additional URL parameters
|
|
|
|
*
|
|
|
|
* @return array
|
|
|
|
*/
|
|
|
|
public function getUrlParams()
|
|
|
|
{
|
|
|
|
return $this->urlParams;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the view
|
|
|
|
*
|
|
|
|
* @param View $view
|
|
|
|
*
|
|
|
|
* @return $this
|
|
|
|
*/
|
|
|
|
public function setView(View $view)
|
|
|
|
{
|
|
|
|
$this->view = $view;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the view
|
|
|
|
*
|
|
|
|
* @return View
|
|
|
|
*/
|
|
|
|
public function getView()
|
|
|
|
{
|
|
|
|
if ($this->view === null) {
|
|
|
|
$this->view = Icinga::app()->getViewRenderer()->view;
|
|
|
|
}
|
|
|
|
return $this->view;
|
|
|
|
}
|
|
|
|
|
2014-07-28 19:09:55 +02:00
|
|
|
/**
|
|
|
|
* Encode an anchor identifier
|
|
|
|
*
|
|
|
|
* @param string $anchor
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public static function encodeAnchor($anchor)
|
|
|
|
{
|
|
|
|
return rawurlencode($anchor);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Decode an anchor identifier
|
|
|
|
*
|
|
|
|
* @param string $anchor
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public static function decodeAnchor($anchor)
|
|
|
|
{
|
|
|
|
return rawurldecode($anchor);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Encode a URL parameter
|
|
|
|
*
|
|
|
|
* @param string $param
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public static function encodeUrlParam($param)
|
|
|
|
{
|
|
|
|
return str_replace(array('%2F','%5C'), array('%252F','%255C'), rawurlencode($param));
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Decode a URL parameter
|
|
|
|
*
|
|
|
|
* @param string $param
|
|
|
|
*
|
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
public static function decodeUrlParam($param)
|
|
|
|
{
|
|
|
|
return str_replace(array('%2F', '%5C'), array('/', '\\'), $param);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Render to HTML
|
|
|
|
*
|
2015-02-10 17:05:24 +01:00
|
|
|
* @return string
|
|
|
|
*/
|
|
|
|
abstract public function render();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Render to HTML
|
2014-07-28 19:09:55 +02:00
|
|
|
*
|
|
|
|
* @return string
|
2015-02-10 17:05:24 +01:00
|
|
|
* @see \Icinga\Module\Doc\Renderer::render() For the render method.
|
2014-07-28 19:09:55 +02:00
|
|
|
*/
|
2015-02-10 17:05:24 +01:00
|
|
|
public function __toString()
|
|
|
|
{
|
|
|
|
try {
|
|
|
|
return $this->render();
|
|
|
|
} catch (Exception $e) {
|
2015-02-11 13:03:01 +01:00
|
|
|
return $e->getMessage() . ': ' . $e->getTraceAsString();
|
2015-02-10 17:05:24 +01:00
|
|
|
}
|
|
|
|
}
|
2014-07-28 19:09:55 +02:00
|
|
|
}
|