Author: david
Date: 2008-09-17 11:06:46 -0700 (Wed, 17 Sep 2008)
New Revision: 1387
Modified:
trunk/apps/qubit/modules/digitalobject/actions/listAction.class.php
trunk/apps/qubit/modules/digitalobject/templates/listSuccess.php
trunk/lib/model/QubitDigitalObject.php
Log:
Implement cultural fallback and sorting for digitalobject/list.
Modified: trunk/apps/qubit/modules/digitalobject/actions/listAction.class.php
===================================================================
--- trunk/apps/qubit/modules/digitalobject/actions/listAction.class.php
2008-09-17 16:28:25 UTC (rev 1386)
+++ trunk/apps/qubit/modules/digitalobject/actions/listAction.class.php
2008-09-17 18:06:46 UTC (rev 1387)
@@ -34,6 +34,8 @@
*/
public function execute($request)
{
+ $this->culture = $this->getUser()->getCulture();
+
if ($this->getRequestParameter('sort'))
{
$this->sort = $this->getRequestParameter('sort');
@@ -48,28 +50,40 @@
// Build funky join query to get a count of top level digital objects
// for each media type (term)
$criteria = new Criteria;
+ $criteria->add(QubitTerm::TAXONOMY_ID, QubitTaxonomy::MEDIA_TYPE_ID);
+ $criteria->addJoin(QubitTerm::ID, QubitDigitalObject::MEDIA_TYPE_ID,
Criteria::LEFT_JOIN);
+ $criteria->addAsColumn('hits', 'COUNT('.QubitDigitalObject::ID.')');
+ $criteria->addGroupByColumn(QubitTerm::ID);
+
+ /*
+ $criteria = new Criteria;
$criteria->addSelectColumn(QubitTerm::ID);
$criteria->addSelectColumn('COUNT('.QubitDigitalObject::ID.')');
$criteria->addJoin(QubitTerm::ID, QubitDigitalObject::MEDIA_TYPE_ID,
Criteria::LEFT_JOIN);
$criteria->addJoin(QubitTerm::ID, QubitTermI18n::ID);
$criteria->add(QubitDigitalObject::PARENT_ID, null, Criteria::ISNULL);
$criteria->add(QubitTerm::TAXONOMY_ID, QubitTaxonomy::MEDIA_TYPE_ID);
- $criteria->add(QubitTermI18n::CULTURE, $this->getUser()->getCulture());
$criteria->addGroupByColumn(QubitTerm::ID);
+ */
// Sort the list
switch ($this->sort)
{
case 'nameUp':
- $criteria->addAscendingOrderByColumn(QubitTermI18n::NAME); break;
+ $criteria->addAscendingOrderByColumn('name'); break;
case 'nameDown':
- $criteria->addDescendingOrderByColumn(QubitTermI18n::NAME); break;
+ $criteria->addDescendingOrderByColumn('name'); break;
case 'hitsUp':
-
$criteria->addAscendingOrderByColumn('COUNT('.QubitDigitalObject::ID.')');
break;
+ $criteria->addAscendingOrderByColumn('hits'); break;
case 'hitsDown':
-
$criteria->addDescendingOrderByColumn('COUNT('.QubitDigitalObject::ID.')');
break;
+ $criteria->addDescendingOrderByColumn('hits'); break;
}
- $this->resultSet = BasePeer::doSelect($criteria);
+
+ // Add I18n fallback
+ $options = array();
+ $criteria = QubitCultureFallback::addFallbackCriteria($criteria,
'QubitTerm', $this->culture, $options);
+
+ $this->terms = QubitTerm::get($criteria);
//determine if user has edit priviliges
$this->editCredentials = false;
Modified: trunk/apps/qubit/modules/digitalobject/templates/listSuccess.php
===================================================================
--- trunk/apps/qubit/modules/digitalobject/templates/listSuccess.php
2008-09-17 16:28:25 UTC (rev 1386)
+++ trunk/apps/qubit/modules/digitalobject/templates/listSuccess.php
2008-09-17 18:06:46 UTC (rev 1387)
@@ -1,24 +1,42 @@
<div class="pageTitle"><?php echo __('list %1%', array('%1%' =>
sfConfig::get('app_ui_label_mediatype'))) ?></div>
<table class="list"><thead><tr>
- <th><?php echo __('name') ?></th>
- <th><?php echo __('results') ?></th>
+ <th>
+ <?php if ($sort == 'nameUp'): ?>
+ <?php echo link_to(__('name'), 'digitalobject/list?sort=nameDown') ?>
+ <?php echo image_tag('up.gif', 'style="padding-bottom: 3px;"', 'sort up')
?>
+ <?php else: ?>
+ <?php echo link_to(__('name'), 'digitalobject/list?sort=nameUp') ?>
+ <?php endif; ?>
+ <?php if ($sort == 'nameDown'): ?>
+ <?php echo image_tag('down.gif', 'style="padding-bottom: 3px;"', 'sort
down') ?>
+ <?php endif; ?>
+ </th>
+ <th>
+ <?php if ($sort == 'hitsUp'): ?>
+ <?php echo link_to(__('results'), 'digitalobject/list?sort=hitsDown') ?>
+ <?php echo image_tag('up.gif', 'style="padding-bottom: 3px;"', 'sort up')
?>
+ <?php else: ?>
+ <?php echo link_to(__('results'), 'digitalobject/list?sort=hitsUp') ?>
+ <?php endif; ?>
+ <?php if ($sort == 'hitsDown'): ?>
+ <?php echo image_tag('down.gif', 'style="padding-bottom: 3px;"', 'sort
down') ?>
+ <?php endif; ?>
+ </th>
</tr>
</thead>
<tbody>
-<?php foreach ($resultSet as $row): ?>
-<?php $mediaType = QubitTerm::getbyId($row[0]); ?>
+<?php foreach ($terms as $term): ?>
<tr>
<td>
- <?php if (is_null($mediaTypeName = $mediaType->getName())) $mediaTypeName
= $mediaType->getName(array('sourceCulture' => true)); ?>
- <?php $linkAction = ($editCredentials) ? 'brow' : 'show'; ?>
+ <?php $linkAction = ($editCredentials) ? 'browse' : 'show'; ?>
<div style="padding-left: 17px;">
- <?php echo link_to($mediaTypeName,
'digitalobject/browse?mediatype='.$row[0]); ?>
+ <?php echo link_to($term->getName(array('cultureFallback'=>true)),
'digitalobject/browse?mediatype='.$term->getId()); ?>
</div>
</td>
<td>
- <?php echo $row[1]; ?>
+ <?php echo QubitDigitalObject::getCount($term->getId()); ?>
</td>
</tr>
<?php endforeach; ?>
Modified: trunk/lib/model/QubitDigitalObject.php
===================================================================
--- trunk/lib/model/QubitDigitalObject.php 2008-09-17 16:28:25 UTC (rev
1386)
+++ trunk/lib/model/QubitDigitalObject.php 2008-09-17 18:06:46 UTC (rev
1387)
@@ -271,8 +271,60 @@
SearchIndex::updateTranslatedLanguages($this->getInformationObject());
}
}
-
+
+
/**
+ * Get a list of digital objects for an icon table
+ *
+ * @param integer $mediaTypeId Media-type foreign key
+ * @param integer $page current Pager page
+ * @return QubitPager paginated list of digital objects
+ */
+ public static function getIconList($mediaTypeId=null, $page=1)
+ {
+ $criteria = new Criteria;
+
+ if (isset($mediaTypeId))
+ {
+ $criteria->add(QubitDigitalObject::MEDIA_TYPE_ID, $mediaTypeId);
+ }
+
+ // Don't show derivative Digital Objects
+ $criteria->add(QubitDigitalObject::INFORMATION_OBJECT_ID, null,
Criteria::ISNOTNULL);
+
+ // Sort by name ascending
+ $criteria->addAscendingOrderByColumn(QubitDigitalObject::NAME);
+
+ $pager = new QubitPager('QubitDigitalObject', '8'); // 8 thumbs per page
+ $pager->setCriteria($criteria);
+ $pager->setPage($page);
+ $pager->init();
+
+ return $pager;
+ }
+
+ /**
+ * Get count of digital objects by media-type
+ */
+ public static function getCount($mediaTypeId=null)
+ {
+ $sql = 'SELECT COUNT(*) as hits FROM '.QubitDigitalObject::TABLE_NAME.'
+ WHERE '.QubitDigitalObject::PARENT_ID.' IS NULL';
+
+ if (isset($mediaTypeId))
+ {
+ $sql .= ' AND '.QubitDigitalObject::MEDIA_TYPE_ID.'='.$mediaTypeId;
+ }
+
+ $conn = Propel::getConnection();
+ $stmt = $conn->prepareStatement($sql);
+ $rs = $stmt->executeQuery(ResultSet::FETCHMODE_NUM);
+ $rs->next();
+
+ return $rs->getInt(1);
+ }
+
+ /**
* Get full path to asset, relative to the web directory
*
* @return string path to asset
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---