Author: peter
Date: Thu Sep 17 15:24:58 2009
New Revision: 3382

Log:
restrict ability to change publicationStatus to 'published' according to ACL 
permission

Modified:
   trunk/apps/qubit/modules/informationobject/actions/editAction.class.php

Modified: 
trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/editAction.class.php     
Thu Sep 17 15:21:39 2009        (r3381)
+++ trunk/apps/qubit/modules/informationobject/actions/editAction.class.php     
Thu Sep 17 15:24:58 2009        (r3382)
@@ -64,23 +64,35 @@
 
       case 'publicationStatus':
 
-        if ($publicationStatusId = 
$this->informationObject->getStatus($options = array('typeId' => 
QubitTerm::STATUS_TYPE_PUBLICATION_ID))->statusId)
+        if (QubitAcl::check($this->informationObject, 
QubitAclAction::PUBLISH_ID))
         {
-          $this->form->setDefault('publicationStatus', 
$this->context->routing->generate(null, array('module' => 'term', 'action' => 
'show', 'id' => $publicationStatusId)));
+          if ($publicationStatusId = 
$this->informationObject->getStatus($options = array('typeId' => 
QubitTerm::STATUS_TYPE_PUBLICATION_ID))->statusId)
+          {
+            $this->form->setDefault('publicationStatus', 
$this->context->routing->generate(null, array('module' => 'term', 'action' => 
'show', 'id' => $publicationStatusId)));
+          }
+          else
+          {
+            // set default publication status to 'draft'
+            $this->form->setDefault('publicationStatus', 
$this->context->routing->generate(null, array('module' => 'term', 'action' => 
'show', 'id' => QubitTerm::PUBLICATION_STATUS_DRAFT_ID)));
+          }
+          $choices = array(); // no null option for publicationStatus
+          foreach 
(QubitTaxonomy::getTermsById(QubitTaxonomy::PUBLICATION_STATUS_ID) as $term)
+          {
+            $choices[$this->context->routing->generate(null, array('module' => 
'term', 'action' => 'show', 'id' => $term->id))] = $term;
+          }
         }
         else
         {
-          // set default publication status to 'draft'
+          // if user does not have publish permission always limit the widget 
values to 'draft'
           $this->form->setDefault('publicationStatus', 
$this->context->routing->generate(null, array('module' => 'term', 'action' => 
'show', 'id' => QubitTerm::PUBLICATION_STATUS_DRAFT_ID)));
-        }
-        $this->form->setValidator('publicationStatus', new sfValidatorString);
 
-        $choices = array(); // no null option for publicationStatus
-        foreach 
(QubitTaxonomy::getTermsById(QubitTaxonomy::PUBLICATION_STATUS_ID) as $term)
-        {
-          $choices[$this->context->routing->generate(null, array('module' => 
'term', 'action' => 'show', 'id' => $term->id))] = $term;
+          $choices = array(); // no null option for publicationStatus
+          $term = QubitTerm::getById(QubitTerm::PUBLICATION_STATUS_DRAFT_ID);
+            {
+              $choices[$this->context->routing->generate(null, array('module' 
=> 'term', 'action' => 'show', 'id' => $term->id))] = $term;
+            }
         }
-
+        $this->form->setValidator('publicationStatus', new sfValidatorString);
         $this->form->setWidget('publicationStatus', new 
sfWidgetFormSelect(array('choices' => $choices)));
 
         break;

--~--~---------~--~----~------------~-------~--~----~
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.ca/group/qubit-commits?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to