Permalink
Browse files

Moving default routes into a separate file.

Removing Router::defaults() as its not needed anymore.
Removing default routes from inside router.
Removing properties related to default routes.
Removing dead tests and updating tests.
  • Loading branch information...
markstory committed Jul 17, 2011
1 parent 358d591 commit cfb3e8a15be8fee61b7424ff8399295d0c423702
Showing with 113 additions and 206 deletions.
  1. +5 −0 app/Config/routes.php
  2. +83 −0 lib/Cake/Config/routes.php
  3. +1 −104 lib/Cake/Routing/Router.php
  4. +24 −102 lib/Cake/Test/Case/Routing/RouterTest.php
View
@@ -30,3 +30,8 @@
* ...and connect the rest of 'Pages' controller's urls.
*/
Router::connect('/pages/*', array('controller' => 'pages', 'action' => 'display'));
+
+/**
+ * Load the CakePHP default routes.
+ */
+ require CAKE . 'Config' . DS . 'routes.php';
View
@@ -0,0 +1,83 @@
+<?php
+/**
+ * Default routes that CakePHP provides as catch all routes.
+ *
+ * PHP 5
+ *
+ * CakePHP(tm) : Rapid Development Framework (http://cakephp.org)
+ * Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ *
+ * Licensed under The MIT License
+ * Redistributions of files must retain the above copyright notice.
+ *
+ * @copyright Copyright 2005-2011, Cake Software Foundation, Inc. (http://cakefoundation.org)
+ * @link http://cakephp.org CakePHP(tm) Project
+ * @package cake.config
+ * @since CakePHP(tm) v 2.0
+ * @license MIT License (http://www.opensource.org/licenses/mit-license.php)
+ */
+
+/**
+ * Connects the default, built-in routes, including prefix and plugin routes. The following routes are created
+ * in the order below:
+ *
+ * For each of the Routing.prefixes the following routes are created. Routes containing `:plugin` are only
+ * created when your application has one or more plugins.
+ *
+ * - `/:prefix/:plugin` a plugin shortcut route.
+ * - `/:prefix/:plugin/:action/*` a plugin shortcut route.
+ * - `/:prefix/:plugin/:controller`
+ * - `/:prefix/:plugin/:controller/:action/*`
+ * - `/:prefix/:controller`
+ * - `/:prefix/:controller/:action/*`
+ *
+ * If plugins are found in your application the following routes are created:
+ *
+ * - `/:plugin` a plugin shortcut route.
+ * - `/:plugin/:action/*` a plugin shortcut route.
+ * - `/:plugin/:controller`
+ * - `/:plugin/:controller/:action/*`
+ *
+ * And lastly the following catch-all routes are connected.
+ *
+ * - `/:controller'
+ * - `/:controller/:action/*'
+ *
+ * You can disable the connection of default routes by deleting the require inside APP/Config/routes.php.
+ */
+ $prefixes = Router::prefixes();
+
+ if ($plugins = CakePlugin::loaded()) {
+ App::uses('PluginShortRoute', 'Routing/Route');
+ foreach ($plugins as $key => $value) {
+ $plugins[$key] = Inflector::underscore($value);
+ }
+ $pluginPattern = implode('|', $plugins);
+ $match = array('plugin' => $pluginPattern);
+ $shortParams = array('routeClass' => 'PluginShortRoute', 'plugin' => $pluginPattern);
+
+ foreach ($prefixes as $prefix) {
+ $params = array('prefix' => $prefix, $prefix => true);
+ $indexParams = $params + array('action' => 'index');
+ Router::connect("/{$prefix}/:plugin", $indexParams, $shortParams);
+ Router::connect("/{$prefix}/:plugin/:controller", $indexParams, $match);
+ Router::connect("/{$prefix}/:plugin/:controller/:action/*", $params, $match);
+ }
+ Router::connect('/:plugin', array('action' => 'index'), $shortParams);
+ Router::connect('/:plugin/:controller', array('action' => 'index'), $match);
+ Router::connect('/:plugin/:controller/:action/*', array(), $match);
+ }
+
+ foreach ($prefixes as $prefix) {
+ $params = array('prefix' => $prefix, $prefix => true);
+ $indexParams = $params + array('action' => 'index');
+ Router::connect("/{$prefix}/:controller", $indexParams);
+ Router::connect("/{$prefix}/:controller/:action/*", $params);
+ }
+ Router::connect('/:controller', array('action' => 'index'));
+ Router::connect('/:controller/:action/*');
+
+ $namedConfig = Router::namedConfig();
+ if ($namedConfig['rules'] === false) {
+ Router::connectNamed(true);
+ }
View
@@ -145,21 +145,6 @@ class Router {
*/
protected static $_requests = array();
-/**
- * Keeps Router state to determine if default routes have already been connected
- *
- * @var boolean
- * @access private
- */
- protected static $_defaultsMapped = false;
-
-/**
- * Keeps track of whether the connection of default routes is enabled or disabled.
- *
- * @var boolean
- */
- protected static $_connectDefaults = true;
-
/**
* Initial state is popualated the first time reload() is called which is at the bottom
* of this file. This is a cheat as get_class_vars() returns the value of static vars even if they
@@ -413,19 +398,6 @@ public static function namedConfig() {
return self::$_namedConfig;
}
-/**
- * Tell router to connect or not connect the default routes.
- *
- * If default routes are disabled all automatic route generation will be disabled
- * and you will need to manually configure all the routes you want.
- *
- * @param boolean $connect Set to true or false depending on whether you want or don't want default routes.
- * @return void
- */
- public static function defaults($connect = true) {
- self::$_connectDefaults = $connect;
- }
-
/**
* Creates REST resource routes for the given controller(s)
*
@@ -479,15 +451,8 @@ public static function prefixes() {
* @return array Parsed elements from URL
*/
public static function parse($url) {
- if (!self::$_defaultsMapped && self::$_connectDefaults) {
- self::__connectDefaultRoutes();
- }
- $out = array(
- 'pass' => array(),
- 'named' => array()
- );
-
$ext = null;
+ $out = array();
if ($url && strpos($url, '/') !== 0) {
$url = '/' . $url;
@@ -547,74 +512,6 @@ private static function __parseExtension($url) {
return compact('ext', 'url');
}
-/**
- * Connects the default, built-in routes, including prefix and plugin routes. The following routes are created
- * in the order below:
- *
- * For each of the Routing.prefixes the following routes are created. Routes containing `:plugin` are only
- * created when your application has one or more plugins.
- *
- * - `/:prefix/:plugin` a plugin shortcut route.
- * - `/:prefix/:plugin/:action/*` a plugin shortcut route.
- * - `/:prefix/:plugin/:controller`
- * - `/:prefix/:plugin/:controller/:action/*`
- * - `/:prefix/:controller`
- * - `/:prefix/:controller/:action/*`
- *
- * If plugins are found in your application the following routes are created:
- *
- * - `/:plugin` a plugin shortcut route.
- * - `/:plugin/:action/*` a plugin shortcut route.
- * - `/:plugin/:controller`
- * - `/:plugin/:controller/:action/*`
- *
- * And lastly the following catch-all routes are connected.
- *
- * - `/:controller'
- * - `/:controller/:action/*'
- *
- * You can disable the connection of default routes with Router::defaults().
- *
- * @return void
- * @access private
- */
- private static function __connectDefaultRoutes() {
- if ($plugins = CakePlugin::loaded()) {
- App::uses('PluginShortRoute', 'Routing/Route');
- foreach ($plugins as $key => $value) {
- $plugins[$key] = Inflector::underscore($value);
- }
- $pluginPattern = implode('|', $plugins);
- $match = array('plugin' => $pluginPattern);
- $shortParams = array('routeClass' => 'PluginShortRoute', 'plugin' => $pluginPattern);
-
- foreach (self::$_prefixes as $prefix) {
- $params = array('prefix' => $prefix, $prefix => true);
- $indexParams = $params + array('action' => 'index');
- self::connect("/{$prefix}/:plugin", $indexParams, $shortParams);
- self::connect("/{$prefix}/:plugin/:controller", $indexParams, $match);
- self::connect("/{$prefix}/:plugin/:controller/:action/*", $params, $match);
- }
- self::connect('/:plugin', array('action' => 'index'), $shortParams);
- self::connect('/:plugin/:controller', array('action' => 'index'), $match);
- self::connect('/:plugin/:controller/:action/*', array(), $match);
- }
-
- foreach (self::$_prefixes as $prefix) {
- $params = array('prefix' => $prefix, $prefix => true);
- $indexParams = $params + array('action' => 'index');
- self::connect("/{$prefix}/:controller", $indexParams);
- self::connect("/{$prefix}/:controller/:action/*", $params);
- }
- self::connect('/:controller', array('action' => 'index'));
- self::connect('/:controller/:action/*');
-
- if (self::$_namedConfig['rules'] === false) {
- self::connectNamed(true);
- }
- self::$_defaultsMapped = true;
- }
-
/**
* Takes parameter and path information back from the Dispatcher, sets these
* parameters as the current request parameters that are merged with url arrays
Oops, something went wrong.

0 comments on commit cfb3e8a

Please sign in to comment.