Author: Jonathan.Wage
Date: 2010-02-02 20:20:05 +0100 (Tue, 02 Feb 2010)
New Revision: 27440

Added:
   
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentEditGroup.class.php
   
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentEditGroupTable.class.php
Modified:
   plugins/sfSympalPlugin/trunk/config/doctrine/schema.yml
   
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContent.class.php
   
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentTable.class.php
   
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalAdminPlugin/modules/sympal_content/config/generator.yml
   
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalAdminPlugin/modules/sympal_content_menu_item/lib/Basesympal_content_menu_itemActions.class.php
   
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/config/doctrine/schema.yml
   
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/menu/sfSympalMenu.class.php
   
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/menu/sfSympalMenuSite.class.php
   
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/model/doctrine/PluginsfSympalMenuItem.class.php
   
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/modules/sympal_menu_items/config/generator.yml
   
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalPagesPlugin/data/fixtures/install.yml
   plugins/sfSympalPlugin/trunk/lib/user/sfSympalUser.class.php
   plugins/sfSympalPlugin/trunk/test/fixtures/project/data/fresh_test_db.sqlite
Log:
[1.4][sfSympalPlugin][1.0] Making content editing more configurable so you can 
make publicly editable content records and control who can edit some content 
with groups. BC BREAK


Modified: plugins/sfSympalPlugin/trunk/config/doctrine/schema.yml
===================================================================
--- plugins/sfSympalPlugin/trunk/config/doctrine/schema.yml     2010-02-02 
19:13:21 UTC (rev 27439)
+++ plugins/sfSympalPlugin/trunk/config/doctrine/schema.yml     2010-02-02 
19:20:05 UTC (rev 27440)
@@ -52,6 +52,9 @@
     template: string(255)
     module: string(255)
     action: string(255)
+    publicly_editable:
+      type: boolean
+      default: false
     page_title: string(255)
     meta_keywords: string(500)
     meta_description: string(500)
@@ -86,6 +89,12 @@
       foreign: group_id
       refClass: sfSympalContentGroup
       foreignAlias: Content
+    EditGroups:
+      class: <?php echo sfSympalConfig::get('group_model') ?> 
+      local: content_id
+      foreign: group_id
+      refClass: sfSympalContentEditGroup
+      foreignAlias: EditContent
     Slots:
       class: sfSympalContentSlot
       refClass: sfSympalContentSlotRef
@@ -216,4 +225,29 @@
       class: <?php echo sfSympalConfig::get('group_model') ?> 
       local: group_id
       foreignAlias: ContentGroups
+      onDelete: CASCADE
+
+sfSympalContentEditGroup:
+  actAs: [sfSympalRecordTemplate]
+  options:
+    symfony:
+      form: false
+      filter: false
+  columns:
+    content_id:
+      primary: true
+      type: integer
+    group_id:
+      primary: true
+      type: integer
+  relations:
+    Content:
+      local: content_id
+      class: sfSympalContent
+      foreignAlias: ContentEditGroups
+      onDelete: CASCADE
+    Group:
+      class: <?php echo sfSympalConfig::get('group_model') ?> 
+      local: group_id
+      foreignAlias: ContentEditGroups
       onDelete: CASCADE
\ No newline at end of file

Modified: 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContent.class.php
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContent.class.php 
    2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContent.class.php 
    2010-02-02 19:20:05 UTC (rev 27440)
@@ -6,7 +6,8 @@
 abstract class PluginsfSympalContent extends BasesfSympalContent
 {
   protected
-    $_allPermissions,
+    $_allGroupsPermissions,
+    $_allEditGroupsPermissions,
     $_route,
     $_routeObject,
     $_mainMenuItem,
@@ -220,20 +221,26 @@
     return $this->getType()->getName();
   }
 
-  public function getAllPermissions()
+  public function getAllEditPermissions()
   {
-    if (!$this->_allPermissions)
+    return $this->getAllPermissions('EditGroups');
+  }
+
+  public function getAllPermissions($key = 'Groups')
+  {
+    $cacheKey = sprintf('_all%sPermissions', $key);
+    if (!$this->$cacheKey)
     {
-      $this->_allPermissions = array();
-      foreach ($this->Groups as $group)
+      $this->$cacheKey = array();
+      foreach ($this->$key as $group)
       {
         foreach ($group->Permissions as $permission)
         {
-          $this->_allPermissions[] = $permission->name;
+          $this->{$cacheKey}[] = $permission->name;
         }
       }
     }
-    return $this->_allPermissions;
+    return $this->$cacheKey;
   }
 
   public function __toString()

Added: 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentEditGroup.class.php
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentEditGroup.class.php
                            (rev 0)
+++ 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentEditGroup.class.php
    2010-02-02 19:20:05 UTC (rev 27440)
@@ -0,0 +1,16 @@
+<?php
+
+/**
+ * PluginsfSympalContentEditGroup
+ * 
+ * This class has been auto-generated by the Doctrine ORM Framework
+ * 
+ * @package    ##PACKAGE##
+ * @subpackage ##SUBPACKAGE##
+ * @author     ##NAME## <##EMAIL##>
+ * @version    SVN: $Id: Builder.php 7021 2010-01-12 20:39:49Z lsmith $
+ */
+abstract class PluginsfSympalContentEditGroup extends 
BasesfSympalContentEditGroup
+{
+
+}
\ No newline at end of file

Added: 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentEditGroupTable.class.php
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentEditGroupTable.class.php
                               (rev 0)
+++ 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentEditGroupTable.class.php
       2010-02-02 19:20:05 UTC (rev 27440)
@@ -0,0 +1,7 @@
+<?php
+/**
+ */
+class PluginsfSympalContentEditGroupTable extends sfSympalDoctrineTable
+{
+
+}
\ No newline at end of file

Modified: 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentTable.class.php
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentTable.class.php
        2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/model/doctrine/PluginsfSympalContentTable.class.php
        2010-02-02 19:20:05 UTC (rev 27440)
@@ -150,6 +150,9 @@
     $q = Doctrine_Query::create()
       ->from('sfSympalContent '.$alias)
       ->leftJoin($alias.'.Groups g')
+      ->leftJoin('g.Permissions gp')
+      ->leftJoin($alias.'.EditGroups eg')
+      ->leftJoin('eg.Permissions egp')
       ->leftJoin($alias.'.Slots s')
       ->leftJoin($alias.'.MenuItem m')
       ->leftJoin($alias.'.Links l')

Modified: 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalAdminPlugin/modules/sympal_content/config/generator.yml
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalAdminPlugin/modules/sympal_content/config/generator.yml
    2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalAdminPlugin/modules/sympal_content/config/generator.yml
    2010-02-02 19:20:05 UTC (rev 27440)
@@ -17,7 +17,7 @@
       form:
         display:
           "Content": [TypeForm, custom_path, date_published, slug]
-          "Settings": [content_type_id, created_by_id, groups_list]
+          "Settings": [content_type_id, created_by_id, groups_list, 
edit_groups_list, publicly_editable]
           "Rendering Options": [template, theme, module, action]
           "Search Engine Optimization": [page_title, meta_keywords, 
meta_description]
         fields:

Modified: 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalAdminPlugin/modules/sympal_content_menu_item/lib/Basesympal_content_menu_itemActions.class.php
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalAdminPlugin/modules/sympal_content_menu_item/lib/Basesympal_content_menu_itemActions.class.php
     2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalAdminPlugin/modules/sympal_content_menu_item/lib/Basesympal_content_menu_itemActions.class.php
     2010-02-02 19:20:05 UTC (rev 27440)
@@ -35,7 +35,6 @@
     $widgetSchema['parent_id']->setOption('add_empty', '');
     unset(
       $this->form['id'],
-      $this->form['is_primary'],
       $this->form['content_id'],
       $this->form['groups_list'],
       $this->form['permissions_list'],

Modified: 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/config/doctrine/schema.yml
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/config/doctrine/schema.yml
      2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/config/doctrine/schema.yml
      2010-02-02 19:20:05 UTC (rev 27440)
@@ -12,12 +12,12 @@
       type: string(255)
       notnull: true
     root_id: integer
-    is_primary: boolean
     date_published: timestamp
     label: string(255)
     custom_path: string(255)
     requires_auth: boolean
     requires_no_auth: boolean
+    html_attributes: string(255)
     site_id:
       type: integer
       notnull: true

Modified: 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/menu/sfSympalMenu.class.php
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/menu/sfSympalMenu.class.php
 2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/menu/sfSympalMenu.class.php
 2010-02-02 19:20:05 UTC (rev 27440)
@@ -438,9 +438,18 @@
   public function renderLink()
   {
     $options = $this->getOptions();
-    if  ($this->isCurrent() || $this->isCurrentAncestor())
+    $currentAncestor = $this->isCurrentAncestor();
+    if  ($this->isCurrent() || $currentAncestor)
     {
-      $options['class'] = 'current';
+      if (!isset($options['class']))
+      {
+        $options['class'] = '';
+      }
+      $options['class'] .= ' current';
+      if ($currentAncestor)
+      {
+        $options['class'] .= ' current_ancestor';
+      }
     }
 
     $html = link_to($this->renderLabel(), $this->getRoute(), $options);

Modified: 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/menu/sfSympalMenuSite.class.php
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/menu/sfSympalMenuSite.class.php
     2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/menu/sfSympalMenuSite.class.php
     2010-02-02 19:20:05 UTC (rev 27440)
@@ -91,6 +91,7 @@
       $array['all_permissions'] = $menuItem->getAllPermissions();
       $array['level'] = $menuItem->getLevel();
       $array['date_published'] = $menuItem->getDatePublished();
+      $array['html_attributes'] = 
_parse_attributes($menuItem->getHtmlAttributes());
       unset($array['__children']);
 
       if (sfSympalConfig::isI18nEnabled('sfSympalMenuItem'))
@@ -137,6 +138,7 @@
     $this->requiresAuth($this->_menuItem['requires_auth']);
     $this->requiresNoAuth($this->_menuItem['requires_no_auth']);
     $this->setCredentials($this->_menuItem['all_permissions']);
+    $this->setOptions($this->_menuItem['html_attributes']);
 
     // If not published yet then you must have certain credentials
     $datePublished = strtotime($this->_menuItem['date_published']);

Modified: 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/model/doctrine/PluginsfSympalMenuItem.class.php
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/model/doctrine/PluginsfSympalMenuItem.class.php
     2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/lib/model/doctrine/PluginsfSympalMenuItem.class.php
     2010-02-02 19:20:05 UTC (rev 27440)
@@ -162,11 +162,6 @@
     return $this->_get('name');
   }
 
-  public function getIsPrimary()
-  {
-    return $this->_get('is_primary');
-  }
-
   public function getIsPublished()
   {
     return ($this->getDatePublished() && strtotime($this->getDatePublished()) 
<= time()) ? true : false;

Modified: 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/modules/sympal_menu_items/config/generator.yml
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/modules/sympal_menu_items/config/generator.yml
  2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalMenuPlugin/modules/sympal_menu_items/config/generator.yml
  2010-02-02 19:20:05 UTC (rev 27440)
@@ -30,7 +30,7 @@
         class: sfSympalAdminGenSearchForm
       form:
         display:
-          "Menu Item": [name, label, content_id, custom_path, is_primary, 
date_published, slug]
+          "Menu Item": [name, label, html_attributes, content_id, custom_path, 
date_published, slug]
           "Position": [parent_id, move, where_to_move]
           "Security": [requires_auth, requires_no_auth, groups_list]
         fields:
@@ -44,8 +44,6 @@
           content_id:
             help: Choose the content record this menu item maps to.
             label: Content
-          is_primary:
-            help: Check if this menu item is the root of your primary menu. 
You must have at least one primary menu.
           date_published:
             help: Select the date this menu item is to be published. This can 
be a date in the future and the menu item will not be available until that date.
           label:

Modified: 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalPagesPlugin/data/fixtures/install.yml
===================================================================
--- 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalPagesPlugin/data/fixtures/install.yml
      2010-02-02 19:13:21 UTC (rev 27439)
+++ 
plugins/sfSympalPlugin/trunk/lib/plugins/sfSympalPagesPlugin/data/fixtures/install.yml
      2010-02-02 19:20:05 UTC (rev 27440)
@@ -3,7 +3,6 @@
 sfSympalMenuItem:
   MenuItem_primary:
     name: primary
-    is_primary: true
     date_published: '<?php echo date("Y-m-d H:i:s") ?>'
 <?php if (sfSympalConfig::isI18nEnabled('sfSympalContent')): ?> 
     Translation:

Modified: plugins/sfSympalPlugin/trunk/lib/user/sfSympalUser.class.php
===================================================================
--- plugins/sfSympalPlugin/trunk/lib/user/sfSympalUser.class.php        
2010-02-02 19:13:21 UTC (rev 27439)
+++ plugins/sfSympalPlugin/trunk/lib/user/sfSympalUser.class.php        
2010-02-02 19:20:05 UTC (rev 27440)
@@ -6,13 +6,27 @@
     $_forwarded  = false,
     $_isEditMode = null;
 
-  public function isEditMode()
+  public function doIsEditModeCheck()
   {
-    if (is_null($this->_isEditMode))
+    $content = sfSympalContext::getInstance()->getCurrentContent();
+    if (($content && $content->getPubliclyEditable())
+      || ($content && $content->getAllEditPermissions() && 
$this->hasCredential($content->getAllEditPermissions()))
+      || ($this->isAuthenticated() && $this->hasCredential('ManageContent'))
+    )
     {
-      $this->_isEditMode = $this->isAuthenticated() && 
$this->hasCredential('ManageContent');
-      $this->_isEditMode = 
sfApplicationConfiguration::getActive()->getEventDispatcher()->filter(new 
sfEvent($this, 'sympal.filter_is_edit_mode'), 
$this->_isEditMode)->getReturnValue();
+      $this->_isEditMode = true;
+    } else {
+      $this->_isEditMode = false;
     }
+    $this->_isEditMode = 
sfApplicationConfiguration::getActive()->getEventDispatcher()->filter(new 
sfEvent($this, 'sympal.filter_is_edit_mode'), 
$this->_isEditMode)->getReturnValue();
+  }
+
+  public function isEditMode($forceCheckAgain = false)
+  {
+    if (is_null($this->_isEditMode) || $forceCheckAgain === true)
+    {
+      $this->doIsEditModeCheck();
+    }
     return $this->_isEditMode;
   }
 

Modified: 
plugins/sfSympalPlugin/trunk/test/fixtures/project/data/fresh_test_db.sqlite
===================================================================
(Binary files differ)

-- 
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