[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