Author: jablko
Date: Tue Oct 26 09:15:03 2010
New Revision: 8503

Log:
Generate and parse URLs with slugs vs. ids, fixes issue 1114

Modified:
   trunk/apps/qubit/config/routing.yml
   trunk/lib/QubitResourceRoute.class.php
   trunk/lib/model/QubitStaticPage.php

Modified: trunk/apps/qubit/config/routing.yml
==============================================================================
--- trunk/apps/qubit/config/routing.yml Tue Oct 26 08:56:28 2010        (r8502)
+++ trunk/apps/qubit/config/routing.yml Tue Oct 26 09:15:03 2010        (r8503)
@@ -3,14 +3,14 @@
 
 homepage:
   url:   /
-  class: QubitRoute
+  class: QubitResourceRoute
   param:
     module: staticpage
-    action: static
-    permalink: homepage
+    action: index
+    slug: home
 
 indexDc:
-  url: /:id;dc
+  url: /:slug;dc
   class: QubitResourceRoute
   param:
     module: sfDcPlugin
@@ -32,7 +32,7 @@
     informationobject_template: dc
 
 editDc:
-  url: /:id;edit/dc
+  url: /:slug;edit/dc
   class: QubitResourceRoute
   param:
     module: sfDcPlugin
@@ -40,7 +40,7 @@
     informationobject_template: dc
 
 indexEac:
-  url: /:id;eac
+  url: /:slug;eac
   class: QubitResourceRoute
   param:
     module: sfEacPlugin
@@ -48,7 +48,7 @@
     actor_template: eac
 
 indexEad:
-  url: /:id;ead
+  url: /:slug;ead
   class: QubitResourceRoute
   param:
     module: sfEadPlugin
@@ -56,7 +56,7 @@
     informationobject_template: ead
 
 indexIsaar:
-  url: /:id;isaar
+  url: /:slug;isaar
   class: QubitResourceRoute
   param:
     module: sfIsaarPlugin
@@ -71,7 +71,7 @@
     actor_template: isaar
 
 editIsaar:
-  url: /:id;edit/isaar
+  url: /:slug;edit/isaar
   class: QubitResourceRoute
   param:
     module: sfIsaarPlugin
@@ -79,7 +79,7 @@
     actor_template: isaar
 
 indexIsad:
-  url: /:id;isad
+  url: /:slug;isad
   class: QubitResourceRoute
   param:
     module: sfIsadPlugin
@@ -101,7 +101,7 @@
     informationobject_template: isad
 
 editIsad:
-  url: /:id;edit/isad
+  url: /:slug;edit/isad
   class: QubitResourceRoute
   param:
     module: sfIsadPlugin
@@ -109,7 +109,7 @@
     informationobject_template: isad
 
 indexIsdf:
-  url: /:id;isdf
+  url: /:slug;isdf
   class: QubitResourceRoute
   param:
     module: sfIsdfPlugin
@@ -121,15 +121,15 @@
     module: sfIsdfPlugin
     action: edit
 
-edtIsdf:
-  url: /:id;edit/isdf
+editIsdf:
+  url: /:slug;edit/isdf
   class: QubitResourceRoute
   param:
     module: sfIsdfPlugin
     action: edit
 
 indexIsdiah:
-  url: /:id;isdiah
+  url: /:slug;isdiah
   class: QubitResourceRoute
   param:
     module: sfIsdiahPlugin
@@ -144,7 +144,7 @@
     repository_template: isdiah
 
 editIsdiah:
-  url: /:id;edit/isdiah
+  url: /:slug;edit/isdiah
   class: QubitResourceRoute
   param:
     module: sfIsdiahPlugin
@@ -152,7 +152,7 @@
     repository_template: isdiah
 
 indexMods:
-  url: /:id;mods
+  url: /:slug;mods
   class: QubitResourceRoute
   param:
     module: sfModsPlugin
@@ -174,7 +174,7 @@
     informationobject_template: mods
 
 editMods:
-  url: /:id;edit/mods
+  url: /:slug;edit/mods
   class: QubitResourceRoute
   param:
     module: sfModsPlugin
@@ -182,7 +182,7 @@
     informationobject_template: mods
 
 indexRad:
-  url: /:id;rad
+  url: /:slug;rad
   class: QubitResourceRoute
   param:
     module: sfRadPlugin
@@ -204,7 +204,7 @@
     informationobject_template: rad
 
 editRad:
-  url: /:id;edit/rad
+  url: /:slug;edit/rad
   class: QubitResourceRoute
   param:
     module: sfRadPlugin
@@ -253,7 +253,7 @@
 
 # These routes used only to *generate* not *parse* URLs
 actorIndex:
-  url: /:id;:actor_template
+  url: /:slug;:actor_template
   class: QubitResourceRoute
   param:
     module: actor
@@ -267,14 +267,14 @@
     action: create
 
 actorEdit:
-  url: /:id;edit/:actor_template
+  url: /:slug;edit/:actor_template
   class: QubitResourceRoute
   param:
     module: actor
     action: edit
 
 functionIndex:
-  url: /:id;isdf
+  url: /:slug;isdf
   class: QubitResourceRoute
   param:
     module: function
@@ -287,14 +287,14 @@
     action: create
 
 functionEdit:
-  url: /:id;edit/isdf
+  url: /:slug;edit/isdf
   class: QubitResourceRoute
   param:
     module: function
     action: edit
 
 repositoryIndex:
-  url: /:id;:repository_template
+  url: /:slug;:repository_template
   class: QubitResourceRoute
   param:
     module: repository
@@ -308,7 +308,7 @@
     action: create
 
 repositoryEdit:
-  url: /:id;edit/:repository_template
+  url: /:slug;edit/:repository_template
   class: QubitResourceRoute
   param:
     module: repository
@@ -335,7 +335,7 @@
     action: oai
 
 informationObjectIndex:
-  url: /:id;:informationobject_template
+  url: /:slug;:informationobject_template
   class: QubitResourceRoute
   param:
     module: informationobject
@@ -355,7 +355,7 @@
     action: duplicate
 
 informationObjectEdit:
-  url: /:id;edit/:informationobject_template
+  url: /:slug;edit/:informationobject_template
   class: QubitResourceRoute
   param:
     module: informationobject
@@ -369,8 +369,8 @@
     action: list
     id: <?php echo QubitInformationObject::ROOT_ID."\n" ?>
 
-id;default_index:
-  url:   /:id;:module
+slug;default_index:
+  url:   /:slug;:module
   class: QubitResourceRoute
   param:
     action: index
@@ -381,24 +381,24 @@
     action: index
 
 # After default_index to avoid matching /;foo
-permalink:
-  url: /:permalink
+slug:
+  url: /:slug
+  class: QubitResourceRoute
   param:
     module: staticpage
-    action: static
+    action: index
 
-id;default:
-  url: /:id;:module/:action
+slug;default:
+  url: /:slug;:module/:action
   class: QubitResourceRoute
-  param:
-    id: { pattern: '[^;]+' }
 
-# After id;default to avoid matching array($object, 'module' => 'foo', 
'action', => 'edit')
+# After slug;default to avoid matching array($object, 'module' => 'foo', 
'action', => 'edit')
 edit:
   url: /;:module/create
   param:
     action: edit
 
+# After edit to avoid matching /;foo/create
 create:
   url: /;:module/create
   param:

Modified: trunk/lib/QubitResourceRoute.class.php
==============================================================================
--- trunk/lib/QubitResourceRoute.class.php      Tue Oct 26 08:56:28 2010        
(r8502)
+++ trunk/lib/QubitResourceRoute.class.php      Tue Oct 26 09:15:03 2010        
(r8503)
@@ -21,7 +21,11 @@
 {
   public function bind($context, $params)
   {
-    $this->resource = QubitObject::getById($params['id']);
+    $criteria = new Criteria;
+    $criteria->add(QubitSlug::SLUG, $params['slug']);
+    $criteria->addJoin(QubitSlug::OBJECT_ID, QubitObject::ID);
+
+    $this->resource = QubitObject::get($criteria)->__get(0);
     if (!isset($this->resource))
     {
       throw new sfError404Exception;

Modified: trunk/lib/model/QubitStaticPage.php
==============================================================================
--- trunk/lib/model/QubitStaticPage.php Tue Oct 26 08:56:28 2010        (r8502)
+++ trunk/lib/model/QubitStaticPage.php Tue Oct 26 09:15:03 2010        (r8503)
@@ -26,6 +26,6 @@
 
   public function isProtected()
   {
-    return $this->permalink == 'homepage' || $this->permalink == 'about';
+    return $this->slug == 'about' || $this->slug == 'home';
   }
 }

-- 
You received this message because you are subscribed to the Google Groups 
"Qubit Toolkit Commits" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/qubit-commits?hl=en.

Reply via email to