aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php')
-rw-r--r--vendor/sabre/dav/lib/DAV/Browser/HtmlOutputHelper.php117
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>";
+
+ }
+
+}