[limb-svn] r6530 - in 3.x/trunk/limb/web_app: src/template/tags/request tests/cases/plain/template/tags/request

svn at limb-project.com svn at limb-project.com
Tue Nov 20 10:28:07 MSK 2007


Author: serega
Date: 2007-11-20 10:28:07 +0300 (Tue, 20 Nov 2007)
New Revision: 6530
URL: http://fisheye.limb-project.com/changelog/limb/?cs=6530

Modified:
   3.x/trunk/limb/web_app/src/template/tags/request/route_url.tag.php
   3.x/trunk/limb/web_app/src/template/tags/request/route_url_set.tag.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/template/tags/request/lmbRouteUrlTagTest.class.php
Log:
-- added possibility to use spaces inside route_url, route_url_set tags in 'params' attribute, e.g. <route_url params="controller: some_controller, action: some_action">

Modified: 3.x/trunk/limb/web_app/src/template/tags/request/route_url.tag.php
===================================================================
--- 3.x/trunk/limb/web_app/src/template/tags/request/route_url.tag.php	2007-11-19 19:31:46 UTC (rev 6529)
+++ 3.x/trunk/limb/web_app/src/template/tags/request/route_url.tag.php	2007-11-20 07:28:07 UTC (rev 6530)
@@ -28,14 +28,17 @@
     if(isset($this->attributeNodes['route']))
       $code->writePhp($route. ' = "'. $this->attributeNodes['route']->getValue() . '";');
 
+    $fake_params = '$' . $code->getTempVariable();
     $params = '$' . $code->getTempVariable();
+    $code->writePhp($fake_params . ' = array();');
     $code->writePhp($params . ' = array();');
 
     if(isset($this->attributeNodes['params']))
     {
-      $code->writePhp($params . ' = lmbArrayHelper :: explode(",", ":",');
+      $code->writePhp($fake_params . ' = lmbArrayHelper :: explode(",", ":",');
       $this->attributeNodes['params']->generateExpression($code);
       $code->writePhp(');');
+      $code->writePhp('foreach(' . $fake_params . ' as $key => $value) ' . $params . '[trim($key)] = trim($value);');
     }
 
     if($this->getBoolAttribute('skip_controller')) $skip_controller = 'true';

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-11-19 19:31:46 UTC (rev 6529)
+++ 3.x/trunk/limb/web_app/src/template/tags/request/route_url_set.tag.php	2007-11-20 07:28:07 UTC (rev 6530)
@@ -22,14 +22,17 @@
     if(isset($this->attributeNodes['route']))
       $code->writePhp($route. ' = "'. $this->attributeNodes['route']->getValue() . '";');
 
+    $fake_params = '$' . $code->getTempVariable();
     $params = '$' . $code->getTempVariable();
+    $code->writePhp($fake_params . ' = array();');
     $code->writePhp($params . ' = array();');
 
     if(isset($this->attributeNodes['params']))
     {
-      $code->writePhp($params . ' = lmbArrayHelper :: explode(",",":",');
+      $code->writePhp($fake_params . ' = lmbArrayHelper :: explode(",",":",');
       $this->attributeNodes['params']->generateExpression($code);
       $code->writePhp(');');
+      $code->writePhp('foreach(' . $fake_params . ' as $key => $value) ' . $params . '[trim($key)] = trim($value);');
     }
 
     $skip_controller = '$' . $code->getTempVariable();

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-11-19 19:31:46 UTC (rev 6529)
+++ 3.x/trunk/limb/web_app/tests/cases/plain/template/tags/request/lmbRouteUrlSetTagTest.class.php	2007-11-20 07:28:07 UTC (rev 6530)
@@ -28,7 +28,25 @@
     $expected = lmbToolkit :: instance()->getRoutesUrl(array('controller' => 'news', 'action' => 'archive'), 'news');
     $this->assertEqual($page->capture(), $expected);
   }
+  
+  function testPutUrlwithSpaces()
+  {
+    $config = array('blog' => array('path' => '/blog/:controller/:action'),
+                    'news' => array('path' => '/:controller/:action'));
 
+    $routes = $this->_createRoutes($config);
+
+    $template = '<route_url_set field="url" route="news" params="controller: news, action: archive"/>' .
+                '{$url}';
+
+    $this->registerTestingTemplate('/limb/routes_tag_static_spaces.html', $template);
+
+    $page = $this->initTemplate('/limb/routes_tag_static_spaces.html');
+
+    $expected = lmbToolkit :: instance()->getRoutesUrl(array('controller' => 'news', 'action' => 'archive'), 'news');
+    $this->assertEqual($page->capture(), $expected);
+  }
+  
   function testWithDynamicParams()
   {
     $config = array('blog' => array('path' => '/blog/:controller/:action'),

Modified: 3.x/trunk/limb/web_app/tests/cases/plain/template/tags/request/lmbRouteUrlTagTest.class.php
===================================================================
--- 3.x/trunk/limb/web_app/tests/cases/plain/template/tags/request/lmbRouteUrlTagTest.class.php	2007-11-19 19:31:46 UTC (rev 6529)
+++ 3.x/trunk/limb/web_app/tests/cases/plain/template/tags/request/lmbRouteUrlTagTest.class.php	2007-11-20 07:28:07 UTC (rev 6530)
@@ -29,6 +29,24 @@
     $this->assertEqual($page->capture(), $expected);
   }
 
+  function testAllParamsWithSpaces()
+  {
+    $config = array('blog' => array('path' => '/blog/:controller/:action'),
+                    'news' => array('path' => '/:controller/:action'));
+
+    $routes = $this->_createRoutes($config);
+
+    $template = '<route_url route="news" params="controller:news, action: archive" onclick="something"></route_url>';
+
+    $this->registerTestingTemplate('/limb/route_url_tag_static_attributes_spaces.html', $template);
+
+    $page = $this->initTemplate('/limb/route_url_tag_static_attributes_spaces.html');
+
+    $url  = lmbToolkit :: instance()->getRoutesUrl(array('controller' => 'news', 'action' => 'archive'), 'news');
+    $expected = '<a onclick="something" href="'. $url . '"></a>';
+    $this->assertEqual($page->capture(), $expected);
+  }
+  
   function testWithDynamicParams()
   {
     $config = array('blog' => array('path' => '/blog/:controller/:action'),



More information about the limb-svn mailing list