Merge pull request #10932 from owncloud/issue/10926

Add a method to get the absolute url for a route
This commit is contained in:
Morris Jobke 2014-09-17 13:05:26 +02:00
commit b644e8a5e7
3 changed files with 41 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -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'),