Author: sevein
Date: Thu Jul 5 13:47:41 2012
New Revision: 11858
Log:
Add accruals support and linking existing information objects from the
accession edit form, issue 2178
Modified:
trunk/data/fixtures/settings.yml
trunk/data/fixtures/taxonomyTerms.yml
trunk/lib/model/QubitTerm.php
trunk/lib/task/migrate/arUpgrader120.class.php
trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php
trunk/plugins/qtAccessionPlugin/modules/accession/actions/deleteAction.class.php
trunk/plugins/qtAccessionPlugin/modules/accession/actions/editAction.class.php
trunk/plugins/qtAccessionPlugin/modules/accession/templates/deleteSuccess.php
trunk/plugins/qtAccessionPlugin/modules/accession/templates/editSuccess.php
trunk/plugins/qtAccessionPlugin/modules/accession/templates/indexSuccess.php
Modified: trunk/data/fixtures/settings.yml
==============================================================================
--- trunk/data/fixtures/settings.yml Thu Jul 5 13:45:58 2012 (r11857)
+++ trunk/data/fixtures/settings.yml Thu Jul 5 13:47:41 2012 (r11858)
@@ -3,7 +3,7 @@
name: version
editable: 0
deleteable: 0
- value: 84
+ value: 85
QubitSetting_2:
name: upload_dir
editable: 0
Modified: trunk/data/fixtures/taxonomyTerms.yml
==============================================================================
--- trunk/data/fixtures/taxonomyTerms.yml Thu Jul 5 13:45:58 2012
(r11857)
+++ trunk/data/fixtures/taxonomyTerms.yml Thu Jul 5 13:47:41 2012
(r11858)
@@ -985,6 +985,13 @@
nl: 'naam ontsluitingsterm'
pt: 'ponto de acesso - nome'
sl: 'ime vhodne točke'
+ QubitTerm_accrual:
+ taxonomy_id: 49
+ parent_id: 110
+ id: 175
+ source_culture: en
+ name:
+ en: Accrual
QubitTerm_accession:
taxonomy_id: 49
parent_id: 110
Modified: trunk/lib/model/QubitTerm.php
==============================================================================
--- trunk/lib/model/QubitTerm.php Thu Jul 5 13:45:58 2012 (r11857)
+++ trunk/lib/model/QubitTerm.php Thu Jul 5 13:47:41 2012 (r11858)
@@ -137,7 +137,10 @@
RIGHT_BASIS_POLICY_ID = 173,
// Language note
- LANGUAGE_NOTE_ID = 174;
+ LANGUAGE_NOTE_ID = 174,
+
+ // Accrual relation type
+ ACCRUAL_ID = 175;
public function isProtected()
@@ -145,6 +148,7 @@
// The following terms cannot be edited by users because their values are
used in application logic
return in_array($this->id, array(
QubitTerm::ACCESSION_ID,
+ QubitTerm::ACCRUAL_ID,
QubitTerm::ACCUMULATION_ID,
QubitTerm::ALTERNATIVE_LABEL_ID,
QubitTerm::ARCHIVAL_MATERIAL_ID,
Modified: trunk/lib/task/migrate/arUpgrader120.class.php
==============================================================================
--- trunk/lib/task/migrate/arUpgrader120.class.php Thu Jul 5 13:45:58
2012 (r11857)
+++ trunk/lib/task/migrate/arUpgrader120.class.php Thu Jul 5 13:47:41
2012 (r11858)
@@ -258,6 +258,10 @@
// $sql = sprintf('ALTER TABLE %s ADD COLUMN ref_id varchar(255);',
QubitTerm::TABLE_NAME);
return false;
+ // TODO Add accrual constant to term table
+ case 85:
+ return false;
+
// Return false if no upgrade available
default:
return false;
Modified: trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php
==============================================================================
--- trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php Thu Jul
5 13:45:58 2012 (r11857)
+++ trunk/plugins/qtAccessionPlugin/lib/model/QubitAccession.php Thu Jul
5 13:47:41 2012 (r11858)
@@ -55,6 +55,20 @@
return parent::delete($connection);
}
+ public function isAccrual()
+ {
+ if (!isset($this->id))
+ {
+ return false;
+ }
+
+ $criteria = new Criteria;
+ $criteria->add(QubitRelation::TYPE_ID, QubitTerm::ACCRUAL_ID);
+ $criteria->add(QubitRelation::OBJECT_ID, $this->id);
+
+ return 0 < count(QubitRelation::get($criteria));
+ }
+
public static function getAccessionNumber($incrementCounter)
{
$setting = QubitSetting::getSettingByName('accession_counter');
Modified:
trunk/plugins/qtAccessionPlugin/modules/accession/actions/deleteAction.class.php
==============================================================================
---
trunk/plugins/qtAccessionPlugin/modules/accession/actions/deleteAction.class.php
Thu Jul 5 13:45:58 2012 (r11857)
+++
trunk/plugins/qtAccessionPlugin/modules/accession/actions/deleteAction.class.php
Thu Jul 5 13:47:41 2012 (r11858)
@@ -31,6 +31,13 @@
QubitAcl::forwardUnauthorized();
}
+ // Accruals
+ $criteria = new Criteria;
+ $criteria->add(QubitRelation::TYPE_ID, QubitTerm::ACCRUAL_ID);
+ $criteria->add(QubitRelation::OBJECT_ID, $this->resource->id);
+ $criteria->addJoin(QubitRelation::SUBJECT_ID, QubitAccession::ID);
+ $this->accruals = QubitAccession::get($criteria);
+
if ($request->isMethod('delete'))
{
foreach ($this->resource->deaccessions as $item)
Modified:
trunk/plugins/qtAccessionPlugin/modules/accession/actions/editAction.class.php
==============================================================================
---
trunk/plugins/qtAccessionPlugin/modules/accession/actions/editAction.class.php
Thu Jul 5 13:45:58 2012 (r11857)
+++
trunk/plugins/qtAccessionPlugin/modules/accession/actions/editAction.class.php
Thu Jul 5 13:47:41 2012 (r11858)
@@ -28,6 +28,7 @@
'creators',
'date',
'identifier',
+ 'informationObjects',
'locationInformation',
'resourceType',
'physicalCharacteristics',
@@ -212,6 +213,25 @@
break;
+ case 'informationObjects':
+ $criteria = new Criteria;
+ $criteria->add(QubitRelation::OBJECT_ID, $this->resource->id);
+ $criteria->add(QubitRelation::TYPE_ID, QubitTerm::ACCESSION_ID);
+
+ ProjectConfiguration::getActive()->loadHelpers('Qubit');
+
+ $value = $choices = array();
+ foreach ($this->informationObjects = QubitRelation::get($criteria) as
$item)
+ {
+ $choices[$value[] = $this->context->routing->generate(null,
array($item->subject, 'module' => 'informationobject'))] =
render_title($item->subject, false);
+ }
+
+ $this->form->setDefault($name, $value);
+ $this->form->setValidator($name, new sfValidatorPass);
+ $this->form->setWidget($name, new sfWidgetFormSelect(array('choices'
=> $choices, 'multiple' => true)));
+
+ break;
+
default:
return parent::addField($name);
@@ -272,6 +292,38 @@
case 'identifier':
break;
+ case 'informationObjects':
+ $value = $filtered = array();
+ foreach ($this->form->getValue('informationObjects') as $item)
+ {
+ $params = $this->context->routing->parse(Qubit::pathInfo($item));
+ $resource = $params['_sf_route']->resource;
+ $value[$resource->id] = $filtered[$resource->id] = $resource;
+ }
+
+ foreach ($this->informationObjects as $item)
+ {
+ if (isset($value[$item->objectId]))
+ {
+ unset($filtered[$item->objectId]);
+ }
+ else
+ {
+ $item->delete();
+ }
+ }
+
+ foreach ($filtered as $item)
+ {
+ $relation = new QubitRelation;
+ $relation->subject = $item;
+ $relation->typeId = QubitTerm::ACCESSION_ID;
+
+ $this->resource->relationsRelatedByobjectId[] = $relation;
+ }
+
+ break;
+
default:
return parent::processField($field);
}
@@ -281,6 +333,27 @@
{
parent::execute($request);
+ // Parameter "accession" is sent when creating an accrual
+ if (isset($request->accession))
+ {
+ $params =
$this->context->routing->parse(Qubit::pathInfo($request->accession));
+
+ if (isset($params['_sf_route']))
+ {
+ $this->accession = $params['_sf_route']->resource;
+
+ if ($this->accession->isAccrual())
+ {
+ throw new sfException('This accession can\'t be created.');
+ }
+
+ // Add id of the information object source
+ $this->form->setDefault('accession', $request->accession);
+ $this->form->setValidator('accession', new sfValidatorString);
+ $this->form->setWidget('accession', new sfWidgetFormInputHidden);
+ }
+ }
+
if ($request->isMethod('post'))
{
$this->form->bind($request->getPostParameters());
@@ -299,6 +372,16 @@
}
}
+ // Relation between accesion will only be accepted if the object is new
+ if (!isset($this->resource->id) && isset($this->accession))
+ {
+ $relation = new QubitRelation;
+ $relation->object = $this->accession;
+ $relation->typeId = QubitTerm::ACCRUAL_ID;
+
+ $this->resource->relationsRelatedBysubjectId[] = $relation;
+ }
+
$this->processForm();
$this->resource->save();
Modified:
trunk/plugins/qtAccessionPlugin/modules/accession/templates/deleteSuccess.php
==============================================================================
---
trunk/plugins/qtAccessionPlugin/modules/accession/templates/deleteSuccess.php
Thu Jul 5 13:45:58 2012 (r11857)
+++
trunk/plugins/qtAccessionPlugin/modules/accession/templates/deleteSuccess.php
Thu Jul 5 13:47:41 2012 (r11858)
@@ -9,6 +9,15 @@
</ul>
<?php endif; ?>
+<?php if (0 < count($accruals)): ?>
+ <h2><?php echo __('It has %1% accruals. They will not be deleted.',
array('%1%' => count($accruals))) ?></h2>
+ <ul>
+ <?php foreach ($accruals as $item): ?>
+ <li><?php echo link_to(render_title($item), array($item, 'module' =>
'accession')) ?></li>
+ <?php endforeach; ?>
+ </ul>
+<?php endif; ?>
+
<?php echo $form->renderFormTag(url_for(array($resource, 'module' =>
'accession', 'action' => 'delete')), array('method' => 'delete')) ?>
<div class="actions section">
Modified:
trunk/plugins/qtAccessionPlugin/modules/accession/templates/editSuccess.php
==============================================================================
--- trunk/plugins/qtAccessionPlugin/modules/accession/templates/editSuccess.php
Thu Jul 5 13:45:58 2012 (r11857)
+++ trunk/plugins/qtAccessionPlugin/modules/accession/templates/editSuccess.php
Thu Jul 5 13:47:41 2012 (r11858)
@@ -2,6 +2,12 @@
<h1 class="label"><?php echo render_title($resource) ?></h1>
+<?php if (isset($accession)): ?>
+ <div class="messages status">
+ <?php echo __('You are creating an accrual of the accession %1%',
array('%1%' => $accession)) ?>
+ </div>
+<?php endif; ?>
+
<?php echo $form->renderGlobalErrors() ?>
<?php if (isset($sf_request->getAttribute('sf_route')->resource)): ?>
@@ -106,6 +112,23 @@
</fieldset>
+ <fieldset class="collapsible collapsed" id="informationObjectArea">
+
+ <legend><?php echo __('Information object area') ?></legend>
+
+ <div class="form-item">
+ <?php echo $form->informationObjects
+ ->label(__('Information objects'))
+ ->renderLabel() ?>
+ <?php echo $form->informationObjects->render(array('class' =>
'form-autocomplete')) ?>
+ <?php if (QubitAcl::check(QubitActor::getRoot(), 'create')): ?>
+ <input class="add" type="hidden" value="<?php echo
url_for(array('module' => 'informationobject', 'action' => 'add')) ?> #title"/>
+ <?php endif; ?>
+ <input class="list" type="hidden" value="<?php echo
url_for(array('module' => 'informationobject', 'action' => 'autocomplete'))
?>"/>
+ </div>
+
+ </fieldset>
+
<div class="actions section">
<h2 class="element-invisible"><?php echo __('Actions') ?></h2>
Modified:
trunk/plugins/qtAccessionPlugin/modules/accession/templates/indexSuccess.php
==============================================================================
---
trunk/plugins/qtAccessionPlugin/modules/accession/templates/indexSuccess.php
Thu Jul 5 13:45:58 2012 (r11857)
+++
trunk/plugins/qtAccessionPlugin/modules/accession/templates/indexSuccess.php
Thu Jul 5 13:47:41 2012 (r11858)
@@ -73,6 +73,29 @@
<?php echo render_show(__('Processing notes'),
render_value($resource->getProcessingNotes(array('cultureFallback' => true))))
?>
+ <div class="field">
+ <h3><?php echo __('Accruals') ?></h3>
+ <div>
+ <ul>
+ <?php foreach (QubitRelation::getRelationsByObjectId($resource->id,
array('typeId' => QubitTerm::ACCRUAL_ID)) as $item): ?>
+ <li><?php echo link_to(render_title($item->subject),
array($item->subject, 'module' => 'accession')) ?></li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ </div>
+
+ <div class="field">
+ <h3><?php echo __('Accrued to') ?></h3>
+ <div>
+ <ul>
+ <?php foreach (QubitRelation::getRelationsBySubjectId($resource->id,
array('typeId' => QubitTerm::ACCRUAL_ID)) as $item): ?>
+ <li><?php echo link_to(render_title($item->object),
array($item->object, 'module' => 'accession')) ?></li>
+ <?php $accrued = true ?>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ </div>
+
</div> <!-- /.section#administrativeArea -->
<div class="section" id="rightsArea">
@@ -90,7 +113,7 @@
<?php foreach (QubitRelation::getRelationsByObjectId($resource->id,
array('typeId' => QubitTerm::ACCESSION_ID)) as $item): ?>
<div class="field">
- <h3>Information object</h3>
+ <h3><?php echo __('Information object') ?></h3>
<div>
<?php echo link_to(render_title($item->subject), array($item->subject,
'module' => 'informationobject')) ?>
</div>
@@ -107,7 +130,7 @@
<?php foreach ($resource->deaccessions as $item): ?>
<div class="field">
- <h3>Deaccession</h3>
+ <h3><?php echo __('Deaccession') ?></h3>
<div>
<?php echo link_to(render_title($item), array($item, 'module' =>
'deaccession')) ?>
</div>
@@ -134,6 +157,10 @@
<li><?php echo link_to(__('Deaccession'), array('module' =>
'deaccession', 'action' => 'add', 'accession' => $resource->id)) ?></li>
+ <?php if (!isset($accrued)): ?>
+ <li><?php echo link_to(__('Accrual'), array('module' => 'accession',
'action' => 'add', 'accession' => url_for(array($resource, 'module' =>
'accession')))) ?></li>
+ <?php endif; ?>
+
<li><?php echo link_to(__('Create %1%', array('%1%' =>
sfConfig::get('app_ui_label_informationobject'))), array($resource, 'module' =>
'accession', 'action' => 'addInformationObject')) ?></li>
</ul>
--
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.com/group/qubit-commits?hl=en.