Author: peter
Date: Tue Sep 15 22:21:06 2009
New Revision: 3333
Log:
add ability to set publicationStatus on information object templates. Defaults
to 'draft'. Is accompanied by a div style in form.css but pre-commit hook has
an invalid 'additional whitespace found at end of file' error, so need to
commit css later
Modified:
trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
trunk/apps/qubit/modules/informationobject/actions/editDcAction.class.php
trunk/apps/qubit/modules/informationobject/actions/editIsadAction.class.php
trunk/apps/qubit/modules/informationobject/actions/editModsAction.class.php
trunk/apps/qubit/modules/informationobject/actions/editRadAction.class.php
trunk/apps/qubit/modules/informationobject/templates/editDcSuccess.php
trunk/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
trunk/apps/qubit/modules/informationobject/templates/editModsSuccess.php
trunk/apps/qubit/modules/informationobject/templates/editRadSuccess.php
trunk/lib/model/QubitObject.php
trunk/lib/model/QubitStatus.php
Modified:
trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/apps/qubit/modules/informationobject/actions/editAction.class.php
Tue Sep 15 22:21:06 2009 (r3333)
@@ -62,6 +62,29 @@
break;
+ case 'publicationStatus':
+
+ 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)));
+ }
+ $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;
+ }
+
+ $this->form->setWidget('publicationStatus', new
sfWidgetFormSelect(array('choices' => $choices)));
+
+ break;
+
case 'language':
case 'languageOfDescription':
$this->form->setDefault($name, $this->informationObject[$name]);
@@ -233,6 +256,7 @@
$this->updateObjectTermRelations();
$this->updateNotes();
$this->updateEvents();
+ $this->updateStatus();
// save informationObject after setting all of its attributes...
$this->informationObject->save();
@@ -493,4 +517,12 @@
}
}
}
+
+ 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']));
+ }
+
}
Modified:
trunk/apps/qubit/modules/informationobject/actions/editDcAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/editDcAction.class.php
Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/apps/qubit/modules/informationobject/actions/editDcAction.class.php
Tue Sep 15 22:21:06 2009 (r3333)
@@ -39,7 +39,8 @@
'relation',
'scopeAndContent',
'title',
- 'types');
+ 'types',
+ 'publicationStatus');
protected function addField($name)
{
Modified:
trunk/apps/qubit/modules/informationobject/actions/editIsadAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/editIsadAction.class.php
Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/apps/qubit/modules/informationobject/actions/editIsadAction.class.php
Tue Sep 15 22:21:06 2009 (r3333)
@@ -59,6 +59,7 @@
'script',
'sources',
'descriptionStatus',
+ 'publicationStatus',
'title');
protected function addField($name)
Modified:
trunk/apps/qubit/modules/informationobject/actions/editModsAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/editModsAction.class.php
Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/apps/qubit/modules/informationobject/actions/editModsAction.class.php
Tue Sep 15 22:21:06 2009 (r3333)
@@ -35,7 +35,8 @@
'identifier',
'language',
'title',
- 'types');
+ 'types',
+ 'publicationStatus');
protected function addField($name)
{
Modified:
trunk/apps/qubit/modules/informationobject/actions/editRadAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/actions/editRadAction.class.php
Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/apps/qubit/modules/informationobject/actions/editRadAction.class.php
Tue Sep 15 22:21:06 2009 (r3333)
@@ -75,7 +75,8 @@
'title',
'titleStatementOfResponsibility',
'titleProperOfPublishersSeries',
- 'types');
+ 'types',
+ 'publicationStatus');
protected function addField($name)
{
Modified: trunk/apps/qubit/modules/informationobject/templates/editDcSuccess.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/templates/editDcSuccess.php
Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/apps/qubit/modules/informationobject/templates/editDcSuccess.php
Tue Sep 15 22:21:06 2009 (r3333)
@@ -134,6 +134,10 @@
<?php echo render_field($form->accessConditions->label(__('Rights')),
$informationObject, array('class' => 'resizable')) ?>
+ <div class="admin-info">
+ <?php echo $form->publicationStatus->label(__('Publication
Status'))->renderRow() ?>
+ </div>
+
<?php if ($sf_context->getActionName() == 'create'): ?>
<!--set initial form focus -->
<?php echo javascript_tag(<<<EOF
Modified:
trunk/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/apps/qubit/modules/informationobject/templates/editIsadSuccess.php
Tue Sep 15 22:21:06 2009 (r3333)
@@ -360,6 +360,10 @@
</fieldset>
+ <div class="admin-info">
+ <?php echo $form->publicationStatus->label(__('Publication
Status'))->renderRow() ?>
+ </div>
+
<?php if ($sf_context->getActionName() == 'create'): ?>
<!--set initial form focus -->
<?php echo javascript_tag(<<<EOF
Modified:
trunk/apps/qubit/modules/informationobject/templates/editModsSuccess.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/templates/editModsSuccess.php
Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/apps/qubit/modules/informationobject/templates/editModsSuccess.php
Tue Sep 15 22:21:06 2009 (r3333)
@@ -100,6 +100,10 @@
<?php echo render_field($form->accessConditions, $informationObject,
array('class' => 'resizable')) ?>
+ <div class="admin-info">
+ <?php echo $form->publicationStatus->label(__('Publication
Status'))->renderRow() ?>
+ </div>
+
<?php if ($sf_context->getActionName() == 'create'): ?>
<!--set initial form focus -->
<?php echo javascript_tag(<<<EOF
Modified:
trunk/apps/qubit/modules/informationobject/templates/editRadSuccess.php
==============================================================================
--- trunk/apps/qubit/modules/informationobject/templates/editRadSuccess.php
Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/apps/qubit/modules/informationobject/templates/editRadSuccess.php
Tue Sep 15 22:21:06 2009 (r3333)
@@ -358,6 +358,10 @@
</fieldset>
<!-- End Control Area -->
+ <div class="admin-info">
+ <?php echo $form->publicationStatus->label(__('Publication
Status'))->renderRow() ?>
+ </div>
+
<?php if ($sf_context->getActionName() == 'create'): ?>
<!--set initial form focus -->
<?php echo javascript_tag(<<<EOF
Modified: trunk/lib/model/QubitObject.php
==============================================================================
--- trunk/lib/model/QubitObject.php Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/lib/model/QubitObject.php Tue Sep 15 22:21:06 2009 (r3333)
@@ -66,5 +66,40 @@
$relation->save();
}
}
+
+ // Save updated Status
+ if (0 < count($this->statuss->transient))
+ {
+ foreach ($this->statuss->transient as $status)
+ {
+ $status->setIndexOnSave(false);
+ $status->setObject($this);
+ $status->save();
+ }
+ }
+ }
+
+ public function setStatus($options = array())
+ {
+ $status = $this->getStatus(array('typeId' => $options['typeId']));
+ // only create a new status object if type is not already set
+ if ($status === null)
+ {
+ $status = new QubitStatus;
+ $status->setTypeId($options['typeId']);
+ }
+ $status->setStatusId($options['statusId']);
+ $this->statuss[] = $status;
+
+ return $this;
+ }
+
+ public function getStatus($options = array())
+ {
+ $criteria = new Criteria;
+ $criteria->add(QubitStatus::OBJECT_ID, $this->getId());
+ $criteria->add(QubitStatus::TYPE_ID, $options['typeId']);
+
+ return QubitStatus::getOne($criteria);
}
}
Modified: trunk/lib/model/QubitStatus.php
==============================================================================
--- trunk/lib/model/QubitStatus.php Tue Sep 15 18:45:09 2009 (r3332)
+++ trunk/lib/model/QubitStatus.php Tue Sep 15 22:21:06 2009 (r3333)
@@ -19,4 +19,69 @@
class QubitStatus extends BaseStatus
{
+ // Flag for updating search index on save of Status
+ protected $indexOnSave = true;
+
+ public function save($connection = null)
+ {
+ // TODO: $cleanObject = $this->object->clean;
+ $cleanObjectId = $this->__get('objectId', array('clean' => true));
+
+ parent::save($connection);
+
+ if ($this->indexOnSave())
+ {
+ if ($this->objectId != $cleanObjectId && null !==
QubitInformationObject::getById($cleanObjectId))
+ {
+
SearchIndex::updateTranslatedLanguages(QubitInformationObject::getById($cleanObjectId));
+ }
+
+ if ($this->object instanceof QubitInformationObject)
+ {
+ SearchIndex::updateTranslatedLanguages($this->object);
+ }
+ }
+
+ return $this;
+ }
+
+ /**
+ * Flag whether to update the search index when saving this object
+ *
+ * @param boolean $bool flag value
+ * @return QubitInformationObject self-reference
+ */
+ public function setIndexOnSave($bool)
+ {
+ if ($bool)
+ {
+ $this->indexOnSave = true;
+ }
+ else
+ {
+ $this->indexOnSave = false;
+ }
+
+ return $this;
+ }
+
+ /**
+ * Update search index on save?
+ *
+ * @return boolean current flag
+ */
+ public function indexOnSave()
+ {
+ return $this->indexOnSave;
+ }
+
+ public function delete($connection = null)
+ {
+ parent::delete($connection);
+
+ if ($this->getObject() instanceof QubitInformationObject)
+ {
+ SearchIndex::updateTranslatedLanguages($this->getObject());
+ }
+ }
}
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---