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.