From c5b53785583eb215eb1ec889333ecf25ecb97e66 Mon Sep 17 00:00:00 2001 From: Joas Schilling Date: Mon, 8 Sep 2014 14:43:14 +0200 Subject: Add a method to get the absolute url for a route Fix #10926 --- lib/private/urlgenerator.php | 15 ++++++++++++++- lib/public/iurlgenerator.php | 8 ++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/lib/private/urlgenerator.php b/lib/private/urlgenerator.php index af5d977eeab..f5ec9803edb 100644 --- a/lib/private/urlgenerator.php +++ b/lib/private/urlgenerator.php @@ -35,13 +35,26 @@ class URLGenerator implements IURLGenerator { * @internal param array $args with param=>value, will be appended to the returned url * @return string the url * - * Returns a url to the given app and file. + * Returns a url to the given route. */ public function linkToRoute($route, $parameters = array()) { $urlLinkTo = \OC::$server->getRouter()->generate($route, $parameters); return $urlLinkTo; } + /** + * Creates an absolute url using a defined route + * @param string $route + * @param array $parameters + * @internal param array $args with param=>value, will be appended to the returned url + * @return string the url + * + * Returns an absolute url to the given route. + */ + public function linkToRouteAbsolute($routeName, $arguments = array()) { + return $this->getAbsoluteURL($this->linkToRoute($routeName, $arguments)); + } + /** * Creates an url * @param string $app app diff --git a/lib/public/iurlgenerator.php b/lib/public/iurlgenerator.php index afdf1b6f299..dbbd8a3bb63 100644 --- a/lib/public/iurlgenerator.php +++ b/lib/public/iurlgenerator.php @@ -42,6 +42,14 @@ interface IURLGenerator { */ public function linkToRoute($routeName, $arguments = array()); + /** + * Returns the absolute URL for a route + * @param string $routeName the name of the route + * @param array $arguments an array with arguments which will be filled into the url + * @return string the absolute url + */ + public function linkToRouteAbsolute($routeName, $arguments = array()); + /** * Returns an URL for an image or file * @param string $appName the name of the app -- cgit v1.2.3 From 3ad9489634186a13f43d40998af7b5dee1ef6c44 Mon Sep 17 00:00:00 2001 From: Lukas Reschke Date: Mon, 8 Sep 2014 17:12:44 +0200 Subject: Add unit test This unit test is shitty but at least it works... --- tests/lib/urlgenerator.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/lib/urlgenerator.php b/tests/lib/urlgenerator.php index 888512ee426..066272731ee 100644 --- a/tests/lib/urlgenerator.php +++ b/tests/lib/urlgenerator.php @@ -36,6 +36,25 @@ class Test_Urlgenerator extends PHPUnit_Framework_TestCase { $this->assertEquals($expectedResult, $result); } + /** + * @dataProvider provideRoutes + */ + public function testLinkToRouteAbsolute($route, $expected) { + \OC::$WEBROOT = '/owncloud'; + $config = $this->getMock('\OCP\IConfig'); + $urlGenerator = new \OC\URLGenerator($config); + $result = $urlGenerator->linkToRouteAbsolute($route); + $this->assertEquals($expected, $result); + + } + + public function provideRoutes() { + return array( + array('files_index', 'http://localhost/owncloud/index.php/apps/files/'), + array('core_ajax_preview', 'http://localhost/owncloud/index.php/core/preview.png'), + ); + } + public function provideDocRootAppUrlParts() { return array( array('files', 'index.php', array(), '/index.php/apps/files'), -- cgit v1.2.3