diff options
Diffstat (limited to 'vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php')
-rw-r--r-- | vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php b/vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php new file mode 100644 index 000000000..249d54047 --- /dev/null +++ b/vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php @@ -0,0 +1,117 @@ +<?php + +namespace Sabre\DAV\Browser; + +use Sabre\Uri; +use Sabre\Xml\Service as XmlService; + +/** + * This class provides a few utility functions for easily generating HTML for + * the browser plugin. + * + * @copyright Copyright (C) fruux GmbH (https://fruux.com/) + * @author Evert Pot (http://evertpot.com/) + * @license http://sabre.io/license/ Modified BSD License + */ +class HtmlOutputHelper { + + /** + * Link to the root of the application. + * + * @var string + */ + protected $baseUri; + + /** + * List of xml namespaces. + * + * @var array + */ + protected $namespaceMap; + + /** + * Creates the object. + * + * baseUri must point to the root of the application. This will be used to + * easily generate links. + * + * The namespaceMap contains an array with the list of xml namespaces and + * their prefixes. WebDAV uses a lot of XML with complex namespaces, so + * that can be used to make output a lot shorter. + * + * @param string $baseUri + * @param array $namespaceMap + */ + function __construct($baseUri, array $namespaceMap) { + + $this->baseUri = $baseUri; + $this->namespaceMap = $namespaceMap; + + } + + /** + * Generates a 'full' url based on a relative one. + * + * For relative urls, the base of the application is taken as the reference + * url, not the 'current url of the current request'. + * + * Absolute urls are left alone. + * + * @param string $path + * @return string + */ + function fullUrl($path) { + + return Uri\resolve($this->baseUri, $path); + + } + + /** + * Escape string for HTML output. + * + * @param string $input + * @return string + */ + function h($input) { + + return htmlspecialchars($input, ENT_COMPAT, 'UTF-8'); + + } + + /** + * Generates a full <a>-tag. + * + * Url is automatically expanded. If label is not specified, we re-use the + * url. + * + * @param string $url + * @param string $label + * @return string + */ + function link($url, $label = null) { + + $url = $this->h($this->fullUrl($url)); + return '<a href="' . $url . '">' . ($label ? $this->h($label) : $url) . '</a>'; + + } + + /** + * This method takes an xml element in clark-notation, and turns it into a + * shortened version with a prefix, if it was a known namespace. + * + * @param string $element + * @return string + */ + function xmlName($element) { + + list($ns, $localName) = XmlService::parseClarkNotation($element); + if (isset($this->namespaceMap[$ns])) { + $propName = $this->namespaceMap[$ns] . ':' . $localName; + } else { + $propName = $element; + } + return "<span title=\"" . $this->h($element) . "\">" . $this->h($propName) . "</span>"; + + } + +} |