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
-~----------~----~----~----~------~----~------~--~---

Reply via email to