Author: ornicar2
Date: 2010-02-08 11:37:12 +0100 (Mon, 08 Feb 2010)
New Revision: 27716

Modified:
   
plugins/diemPlugin/trunk/dmFrontPlugin/modules/dmFront/lib/BasedmFrontActions.class.php
Log:
[Diem]
- refactored dmFront actions to support user integration and be more extensible

Modified: 
plugins/diemPlugin/trunk/dmFrontPlugin/modules/dmFront/lib/BasedmFrontActions.class.php
===================================================================
--- 
plugins/diemPlugin/trunk/dmFrontPlugin/modules/dmFront/lib/BasedmFrontActions.class.php
     2010-02-08 10:35:22 UTC (rev 27715)
+++ 
plugins/diemPlugin/trunk/dmFrontPlugin/modules/dmFront/lib/BasedmFrontActions.class.php
     2010-02-08 10:37:12 UTC (rev 27716)
@@ -5,15 +5,29 @@
   
   public function executePage(dmWebRequest $request)
   {
+    $this->page = $this->getPageFromRequest($request);
+
+    $this->secure();
+     
+    return $this->renderPage();
+  }
+
+  protected function getPageFromRequest(dmWebRequest $request)
+  {
+    if($request->hasParameter('dm_page'))
+    {
+      return $request->getParameter('dm_page');
+    }
+
     $slug = $request->getParameter('slug');
 
     // find matching page_route for this slug
     $pageRoute = $this->getService('page_routing')->find($slug);
-    
+
     if ($pageRoute)
     {
-      $this->page = $pageRoute->getPage();
-      
+      $page = $pageRoute->getPage();
+
       // found a page on another culture
       if($pageRoute->getCulture() !== $this->getUser()->getCulture())
       {
@@ -28,31 +42,33 @@
       {
         return $this->redirect($redirectionUrl, 301);
       }
-      
+
       // else use main.error404 page
-      $this->page = dmDb::table('DmPage')->fetchError404();
+      $page = dmDb::table('DmPage')->fetchError404();
     }
 
-    $this->secure();
-     
-    return $this->renderPage();
+    return $page;
   }
 
   protected function secure()
   {
+    $user = $this->getUser();
+    
     if (
-          // the site is not active and requires the view_site permission to 
be displayed
-          (!dmConfig::get('site_active') && 
!$this->getUser()->can('site_view'))
-          // the page is not active and requires the view_site permission to 
be displayed
-      ||  (!$this->page->get('is_active') && 
!$this->getUser()->can('site_view'))
+          // the site is not active and requires the site_view permission to 
be displayed
+          (!dmConfig::get('site_active') && !$user->can('site_view'))
+          // the page is not active and requires the site_view permission to 
be displayed
+      ||  (!$this->page->get('is_active') && !$user->can('site_view'))
           // the page is secured and requires authentication to be displayed
-      ||  ($this->page->get('is_secure') && 
!$this->getUser()->isAuthenticated())
+      ||  ($this->page->get('is_secure') && !$user->isAuthenticated())
           // the page is secured and the user has not required credentials
-      ||  ($this->page->get('is_secure') && $this->page->get('credentials') && 
!$this->getUser()->can($this->page->get('credentials')))
+      ||  ($this->page->get('is_secure') && $this->page->get('credentials') && 
!$user->can($this->page->get('credentials')))
     )
     {
-      // use main.login page
-      $this->page = dmDb::table('DmPage')->fetchLogin();
+      $this->getResponse()->setStatusCode($user->isAuthenticated() ? 403 : 
401);
+      
+      // use main.signin page
+      $this->page = dmDb::table('DmPage')->fetchSignin();
     }
   }
   
@@ -63,18 +79,6 @@
     return $this->renderPage();
   }
   
-  public function executeLogin(dmWebRequest $request)
-  {
-    $this->page = dmDb::table('DmPage')->fetchLogin();
-    
-    return $this->renderPage();
-  }
-  
-  public function executeSecure(dmWebRequest $request)
-  {
-    return $this->executeLogin($request);
-  }
-  
   protected function renderPage()
   {
     // share current page
@@ -84,13 +88,9 @@
     {
       $this->response->setStatusCode(404); 
     }
-    elseif($this->page->isModuleAction('main', 'login'))
-    {
-      $this->getResponse()->setStatusCode(401);
-    }
-
-    $template = $this->page->getPageView()->getLayout()->get('template');
     
+    $template = $this->page->getPageView()->getLayout()->get('template');
+
     if (empty($template))
     {
       $template = 'page';
@@ -98,14 +98,14 @@
     
     $this->setTemplate($template);
     
-    $userLayout = 
dmProject::rootify('apps/front/modules/dmFront/templates/layout');
+    $userLayout = 
sfConfig::get('sf_root_dir').'/apps/front/modules/dmFront/templates/layout';
     if (file_exists($userLayout.'.php'))
     {
       $this->setLayout($userLayout);
     }
     else
     {
-      $this->setLayout(dmOs::join(sfConfig::get('dm_front_dir'), 
'modules/dmFront/templates/layout'));
+      
$this->setLayout(sfConfig::get('dm_front_dir').'/modules/dmFront/templates/layout');
     }
     
     $this->helper = $this->getService('page_helper');
@@ -180,7 +180,6 @@
     }
   }
 
-
   public function executeEditToggle(sfWebRequest $request)
   {
     $this->getUser()->setIsEditMode($request->getParameter('active'));

-- 
You received this message because you are subscribed to the Google Groups 
"symfony SVN" 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/symfony-svn?hl=en.

Reply via email to