[limb-svn] r5787 - in 3.x/trunk/limb/web_app: src/template/tags/request src/toolkit tests/cases/plain/template/tags/request tests/cases/plain/toolkit
svn at limb-project.com
svn at limb-project.com
Wed May 2 17:46:30 MSD 2007
Author: tony
Date: 2007-05-02 17:46:30 +0400 (Wed, 02 May 2007)
New Revision: 5787
URL: http://fisheye.limb-project.com/changelog/limb/?cs=5787
Modified:
3.x/trunk/limb/web_app/src/template/tags/request/route_url_set.tag.php
3.x/trunk/limb/web_app/src/toolkit/lmbWebAppTools.class.php
3.x/trunk/limb/web_app/tests/cases/plain/template/tags/request/lmbRouteUrlSetTagTest.class.php
3.x/trunk/limb/web_app/tests/cases/plain/toolkit/lmbWebAppToolsTest.class.php
Log:
-- added skip_controller argument flag to getRoutesUrl() method which prevent trowing exception when controller name not specified
-- added skip_controller attribute to tag <route_url_set>
Modified: 3.x/trunk/limb/web_app/src/template/tags/request/route_url_set.tag.php
===================================================================
--- 3.x/trunk/limb/web_app/src/template/tags/request/route_url_set.tag.php 2007-05-02 07:57:06 UTC (rev 5786)
+++ 3.x/trunk/limb/web_app/src/template/tags/request/route_url_set.tag.php 2007-05-02 13:46:30 UTC (rev 5787)
@@ -35,9 +35,17 @@
$this->attributeNodes['params']->generatePostStatement($code);
}
+ $skip_controller = '$' . $code->getTempVariable();
+
+ if($this->getBoolAttribute('skip_controller'))
+ $code->writePhp($skip_controller . ' = true;');
+ else
+ $code->writePhp($skip_controller . ' = false;');
+
+
$code->writePhp($this->parent->getDatasource()->getComponentRefCode() .
'->set("' . $this->getAttribute('field') . '",
- lmbToolkit :: instance()->getRoutesUrl(' . $params . ', ' . $route .'));');
+ lmbToolkit :: instance()->getRoutesUrl(' . $params . ', ' . $route . ', ' . $skip_controller .'));');
}
}
Modified: 3.x/trunk/limb/web_app/src/toolkit/lmbWebAppTools.class.php
===================================================================
--- 3.x/trunk/limb/web_app/src/toolkit/lmbWebAppTools.class.php 2007-05-02 07:57:06 UTC (rev 5786)
+++ 3.x/trunk/limb/web_app/src/toolkit/lmbWebAppTools.class.php 2007-05-02 13:46:30 UTC (rev 5787)
@@ -71,10 +71,10 @@
return $this->dispatched_controller;
}
- function getRoutesUrl($params = array(), $route_name = '')
+ function getRoutesUrl($params = array(), $route_name = '', $skip_controller = false)
{
$routes = $this->toolkit->getRoutes();
- if(!isset($params['controller']))
+ if(!isset($params['controller']) && !$skip_controller)
$params['controller'] = $this->toolkit->getDispatchedController()->getName();
return LIMB_HTTP_GATEWAY_PATH . ltrim($routes->toUrl($params, $route_name), '/');
Modified: 3.x/trunk/limb/web_app/tests/cases/plain/template/tags/request/lmbRouteUrlSetTagTest.class.php
===================================================================
--- 3.x/trunk/limb/web_app/tests/cases/plain/template/tags/request/lmbRouteUrlSetTagTest.class.php 2007-05-02 07:57:06 UTC (rev 5786)
+++ 3.x/trunk/limb/web_app/tests/cases/plain/template/tags/request/lmbRouteUrlSetTagTest.class.php 2007-05-02 13:46:30 UTC (rev 5787)
@@ -10,6 +10,7 @@
* @package web_app
*/
lmb_require('limb/web_app/src/request/lmbRoutes.class.php');
+lmb_require('limb/web_app/src/controller/lmbController.class.php');
class lmbRouteUrlSetTagTest extends lmbWactTestCase
{
@@ -92,6 +93,26 @@
$this->assertEqual($page->capture(), $expected);
}
+ function testRouteWithSkipController()
+ {
+ $toolkit = lmbToolkit :: instance();
+ $toolkit->setDispatchedController(new lmbController());
+
+ $config = array('blog' => array('path' => '/blog/:action'));
+
+ $routes = $this->_createRoutes($config);
+
+ $template = '<route_url_set field="url" params="action:archive" skip_controller="true"/>' .
+ '{$url}';
+
+ $this->registerTestingTemplate('/limb/routes_tag_route_with_skip_controller.html', $template);
+
+ $page = $this->initTemplate('/limb/routes_tag_route_with_skip_controller.html');
+
+ $expected = $toolkit->getRoutesUrl(array('action' => 'archive'), null, $skip_controller = true);
+ $this->assertEqual($page->capture(), $expected);
+ }
+
function _createRoutes($config)
{
$routes = new lmbRoutes($config);
Modified: 3.x/trunk/limb/web_app/tests/cases/plain/toolkit/lmbWebAppToolsTest.class.php
===================================================================
--- 3.x/trunk/limb/web_app/tests/cases/plain/toolkit/lmbWebAppToolsTest.class.php 2007-05-02 07:57:06 UTC (rev 5786)
+++ 3.x/trunk/limb/web_app/tests/cases/plain/toolkit/lmbWebAppToolsTest.class.php 2007-05-02 13:46:30 UTC (rev 5787)
@@ -11,6 +11,7 @@
*/
lmb_require('limb/web_app/src/request/lmbRoutes.class.php');
lmb_require('limb/toolkit/src/lmbMockToolsWrapper.class.php');
+lmb_require('limb/web_app/src/controller/lmbController.class.php');
lmb_require('limb/core/src/lmbSet.class.php');
class lmbWebAppToolsTest extends UnitTestCase
@@ -38,6 +39,22 @@
$to_url_params = array('controller' => 'news', 'action' => 'archive');
$this->assertEqual($toolkit->getRoutesUrl($to_url_params), LIMB_HTTP_GATEWAY_PATH . ltrim($routes->toUrl($to_url_params), '/'));
}
+
+ function testToRouteUrlSkipController()
+ {
+ $routes_dataspace = new lmbSet();
+ $config_array = array(array('path' => '/news/:action',
+ 'defaults' => array('action' => 'display')));
+ $routes = new lmbRoutes($config_array);
+
+ $toolkit = lmbToolkit :: merge(new lmbWebAppTools());
+ $toolkit->setRoutes($routes);
+ $toolkit->setDispatchedController(new lmbController());
+
+ $to_url_params = array('action' => 'archive');
+ $this->assertEqual($toolkit->getRoutesUrl($to_url_params, null, $skip_controller = true),
+ LIMB_HTTP_GATEWAY_PATH . 'news/archive');
+ }
}
?>
More information about the limb-svn
mailing list