Author: peter
Date: Fri Sep 18 22:47:10 2009
New Revision: 3424
Log:
inherit publicationStatus from ancestors. todo: if publicationStatus changes,
iterate over descendants, set their publicationStatus to null and re-index each
descendant to inherit the changed publicationStatus (needs to be reflected in
each descendant's search index document as this is used to filter searches and
browse list according to publicationStatus
Modified:
trunk/apps/qubit/lib/SearchIndex.class.php
trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
trunk/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
trunk/data/fixtures/taxonomyTerms.yml
trunk/lib/QubitDc.class.php
trunk/lib/QubitIsad.class.php
trunk/lib/QubitMods.class.php
trunk/lib/QubitRad.class.php
trunk/lib/model/QubitInformationObject.php
Modified: trunk/apps/qubit/lib/SearchIndex.class.php
==============================================================================
--- trunk/apps/qubit/lib/SearchIndex.class.php Fri Sep 18 18:40:13 2009
(r3423)
+++ trunk/apps/qubit/lib/SearchIndex.class.php Fri Sep 18 22:47:10 2009
(r3424)
@@ -221,7 +221,7 @@
$doc->addField(Zend_Search_Lucene_Field::Keyword('culture', $language));
- $doc->addField(Zend_Search_Lucene_Field::Unstored('publicationStatusId',
$informationObject->getStatus(array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID))->statusId));
+ $doc->addField(Zend_Search_Lucene_Field::Unstored('publicationStatusId',
$informationObject->getPublicationStatus()->statusId));
// Note: text fields have to be converted to lower-case for use with utf-8
analyzer
Modified:
trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
Fri Sep 18 18:40:13 2009 (r3423)
+++ trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
Fri Sep 18 22:47:10 2009 (r3424)
@@ -63,38 +63,23 @@
break;
case 'publicationStatus':
-
+ $this->form->setDefault('publicationStatus',
$this->context->routing->generate(null, array('module' => 'term', 'action' =>
'show', 'id' => $this->informationObject->getStatus($options = array('typeId'
=> QubitTerm::STATUS_TYPE_PUBLICATION_ID))->statusId)));
+ $this->form->setValidator('publicationStatus', new sfValidatorString);
+ $choices = array();
+ $choices[null] = null;
+ foreach
(QubitTaxonomy::getTermsById(QubitTaxonomy::PUBLICATION_STATUS_ID) as $term)
+ {
+ $choices[$this->context->routing->generate(null, array('module' =>
'term', 'action' => 'show', 'id' => $term->id))] = $term;
+ }
if (QubitAcl::check($this->informationObject,
QubitAclAction::PUBLISH_ID))
{
- 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;
- }
+ $this->form->setWidget('publicationStatus', new
sfWidgetFormSelect(array('choices' => $choices)));
}
else
{
- // 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)));
-
- $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;
- }
+ // disable widget if user does not have 'publish' permission
+ $this->form->setWidget('publicationStatus', new
sfWidgetFormSelect($options = array('choices' => $choices), $attributes =
array('disabled' => true)));
}
- $this->form->setValidator('publicationStatus', new sfValidatorString);
- $this->form->setWidget('publicationStatus', new
sfWidgetFormSelect(array('choices' => $choices)));
-
break;
case 'language':
@@ -537,9 +522,15 @@
public function updateStatus()
{
- $params =
$this->context->routing->parse(preg_replace('/.*'.preg_quote($this->request->getPathInfoPrefix(),
'/').'/', null, $this->getRequestParameter('publicationStatus')));
-
- $this->informationObject->setStatus($options = array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID, 'statusId' => $params['id']));
+ if (!QubitAcl::check(QubitInformationObject::getRoot(),
QubitAclAction::PUBLISH_ID))
+ {
+ // if the user does not have 'publish' permission, automatically set
publication status to 'draft'
+ $this->informationObject->setStatus($options = array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID, 'statusId' =>
QubitTerm::PUBLICATION_STATUS_DRAFT_ID));
+ }
+ else
+ {
+ $params =
$this->context->routing->parse(preg_replace('/.*'.preg_quote($this->request->getPathInfoPrefix(),
'/').'/', null, $this->getRequestParameter('publicationStatus')));
+ $this->informationObject->setStatus($options = array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID, 'statusId' => $params['id']));
+ }
}
-
}
Modified:
trunk/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
Fri Sep 18 18:40:13 2009 (r3423)
+++ trunk/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
Fri Sep 18 22:47:10 2009 (r3424)
@@ -364,7 +364,20 @@
</fieldset>
<div class="admin-info">
- <?php echo $form->publicationStatus->label(__('Publication
Status'))->renderRow() ?>
+ <table><tr><td><?php echo $form->publicationStatus->label(__('Publication
Status'))->renderRow() ?></td>
+ <td><div class="form-item"><label for="source language"><?php echo
__('source language') ?></label>
+ <?php if ($sourceLanguage = $informationObject->getSourceCulture()): ?>
+ <?php if ($sourceLanguage == $sf_user->getCulture()): ?>
+ <?php echo format_language($sourceLanguage) ?>
+ <?php else: ?>
+ <div class="default-translation">
+ <?php echo link_to(format_language($sourceLanguage),
$sf_data->getRaw('sf_context')->getRouting()->getCurrentInternalUri(),
array('query_string' => 'sf_culture='.$sourceLanguage)) ?>
+ </div>
+ <?php endif; ?>
+ <?php else: ?>
+ <?php echo format_language($sf_user->getCulture()) ?>
+ <?php endif;?>
+ </div></td></tr></table>
</div>
<?php if ($sf_context->getActionName() == 'create'): ?>
Modified: trunk/data/fixtures/taxonomyTerms.yml
==============================================================================
--- trunk/data/fixtures/taxonomyTerms.yml Fri Sep 18 18:40:13 2009
(r3423)
+++ trunk/data/fixtures/taxonomyTerms.yml Fri Sep 18 22:47:10 2009
(r3424)
@@ -2176,3 +2176,8 @@
source_culture: en
content:
en: 'Rules for Archival Description 1.4G'
+QubitStatus:
+ QubitStatus_information_object_root:
+ object_id: <?php echo QubitInformationObject::ROOT_ID."\n" ?>
+ type_id: <?php echo QubitTerm::STATUS_TYPE_PUBLICATION_ID."\n" ?>
+ status_id: <?php echo QubitTerm::PUBLICATION_STATUS_DRAFT_ID."\n" ?>
Modified: trunk/lib/QubitDc.class.php
==============================================================================
--- trunk/lib/QubitDc.class.php Fri Sep 18 18:40:13 2009 (r3423)
+++ trunk/lib/QubitDc.class.php Fri Sep 18 22:47:10 2009 (r3424)
@@ -58,7 +58,7 @@
$label = truncate_text($label, $options['truncate']);
}
- $publicationStatus = $informationObject->getStatus(array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID));
+ $publicationStatus = $informationObject->getPublicationStatus();
if ($publicationStatus->statusId == QubitTerm::PUBLICATION_STATUS_DRAFT_ID)
{
$label .= ' ('.$publicationStatus->status.')';
Modified: trunk/lib/QubitIsad.class.php
==============================================================================
--- trunk/lib/QubitIsad.class.php Fri Sep 18 18:40:13 2009 (r3423)
+++ trunk/lib/QubitIsad.class.php Fri Sep 18 22:47:10 2009 (r3424)
@@ -57,7 +57,7 @@
$label = truncate_text($label, $options['truncate']);
}
- $publicationStatus = $informationObject->getStatus(array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID));
+ $publicationStatus = $informationObject->getPublicationStatus();
if ($publicationStatus->statusId == QubitTerm::PUBLICATION_STATUS_DRAFT_ID)
{
$label .= ' ('.$publicationStatus->status.')';
Modified: trunk/lib/QubitMods.class.php
==============================================================================
--- trunk/lib/QubitMods.class.php Fri Sep 18 18:40:13 2009 (r3423)
+++ trunk/lib/QubitMods.class.php Fri Sep 18 22:47:10 2009 (r3424)
@@ -56,7 +56,7 @@
$label = truncate_text($label, $options['truncate']);
}
- $publicationStatus = $informationObject->getStatus(array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID));
+ $publicationStatus = $informationObject->getPublicationStatus();
if ($publicationStatus->statusId == QubitTerm::PUBLICATION_STATUS_DRAFT_ID)
{
$label .= ' ('.$publicationStatus->status.')';
Modified: trunk/lib/QubitRad.class.php
==============================================================================
--- trunk/lib/QubitRad.class.php Fri Sep 18 18:40:13 2009 (r3423)
+++ trunk/lib/QubitRad.class.php Fri Sep 18 22:47:10 2009 (r3424)
@@ -57,7 +57,7 @@
$label = truncate_text($label, $options['truncate']);
}
- $publicationStatus = $informationObject->getStatus(array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID));
+ $publicationStatus = $informationObject->getPublicationStatus();
if ($publicationStatus->statusId == QubitTerm::PUBLICATION_STATUS_DRAFT_ID)
{
$label .= ' ('.$publicationStatus->status.')';
Modified: trunk/lib/model/QubitInformationObject.php
==============================================================================
--- trunk/lib/model/QubitInformationObject.php Fri Sep 18 18:40:13 2009
(r3423)
+++ trunk/lib/model/QubitInformationObject.php Fri Sep 18 22:47:10 2009
(r3424)
@@ -223,7 +223,7 @@
$label = truncate_text($label, $options['truncate']);
}
- $publicationStatus = $this->getStatus(array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID));
+ $publicationStatus = $this->getPublicationStatus();
if ($publicationStatus->statusId == QubitTerm::PUBLICATION_STATUS_DRAFT_ID)
{
$label .= ' ('.$publicationStatus->status.')';
@@ -1691,4 +1691,21 @@
return QubitInformationObject::get($criteria, $options);
}
+
+ /*****************************************************
+ Publication Status
+ *****************************************************/
+ public function getPublicationStatus()
+ {
+ // Ascend up object hierarchy until a publication status is found
+ // right up to the root object if necessary (which is set to 'draft' by
default)
+ foreach ($this->ancestors->andSelf()->orderBy('rgt') as $ancestor)
+ {
+ $status = $ancestor->getStatus($options = array('typeId' =>
QubitTerm::STATUS_TYPE_PUBLICATION_ID));
+ if (null !== $status->statusId)
+ {
+ return $status;
+ }
+ }
+ }
}
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---