Author: david
Date: Fri Aug 14 11:10:54 2009
New Revision: 3034

Log:
Add (use: <preferred term>) helper text to auto-complete results with 
javascript instead of building string in list action.  Dynamically swap-in 
preferred term in subject & place access point auto-completes. Fixes issue #871.

Modified:
   
trunk/apps/qubit/modules/informationobject/templates/_termNameAutoComplete.php
   trunk/apps/qubit/modules/term/actions/listAction.class.php

Modified: 
trunk/apps/qubit/modules/informationobject/templates/_termNameAutoComplete.php
==============================================================================
--- 
trunk/apps/qubit/modules/informationobject/templates/_termNameAutoComplete.php  
    Fri Aug 14 10:09:29 2009        (r3033)
+++ 
trunk/apps/qubit/modules/informationobject/templates/_termNameAutoComplete.php  
    Fri Aug 14 11:10:54 2009        (r3034)
@@ -17,6 +17,22 @@
 
 <script language="javascript">
 //<!CDATA[
+  var preferredTermFormat = ' (<?php echo __('use') ?>: %s)';
+
+  function formatTermResults(oResultData, sQuery, sResultMatch) { 
+    var sMarkup = "";
+    if (sResultMatch)
+    {
+      sMarkup = sResultMatch;
+      if (undefined != (preferredName = oResultData.preferredName))
+      {
+        sMarkup += preferredTermFormat.replace('%s', preferredName);
+      }
+    } 
+
+    return sMarkup; 
+  };
+
   Drupal.behaviors.subjectAutoComplete = {
     attach: function(context)
     {
@@ -25,7 +41,7 @@
       myDataSource.responseType = YAHOO.util.XHRDataSource.TYPE_JSON;
       myDataSource.responseSchema = {
         resultsList : "Results",
-        fields : ["name", "id", "preferredId"]
+        fields : ["name", "id", "preferredName", "preferredId"]
       }
 
       // Build subject auto-complete widget
@@ -36,15 +52,21 @@
       subjectAutoComp.animVert = true;
       subjectAutoComp.maxResultsDisplayed = 10;
       subjectAutoComp.useIFrame = true;
-      
+      subjectAutoComp.resultTypeList = false;
+
+      // Format results
+      subjectAutoComp.formatResult = formatTermResults; 
+
       // Define an event handler to populate a hidden form field
       // when an item gets selected
       var subjectIdField = YAHOO.util.Dom.get("subjectId");
+      var subjectInput = YAHOO.util.Dom.get("subjectAcInput");
       var myHandler = function(sType, aArgs) {
         var oData = aArgs[2]; // object literal of selected item's result data
         
         // update hidden form field with the selected item's ID
-        subjectIdField.value = oData[2];
+        subjectIdField.value = oData.preferredId;
+        subjectInput.value = oData.preferredName;
       };
       subjectAutoComp.itemSelectEvent.subscribe(myHandler);
 
@@ -56,15 +78,21 @@
       placeAutoComp.animVert = true;
       placeAutoComp.maxResultsDisplayed = 10;
       placeAutoComp.useIFrame = true;
+      placeAutoComp.resultTypeList = false;
+
+      // Format results
+      placeAutoComp.formatResult = formatTermResults; 
       
       // Define an event handler to populate a hidden form field
       // when an item gets selected
       var placeIdField = YAHOO.util.Dom.get("placeId");
+      var placeInput = YAHOO.util.Dom.get("placeAcInput");
       var myHandler = function(sType, aArgs) {
         var oData = aArgs[2]; // object literal of selected item's result data
         
         // update hidden form field with the selected item's ID
-        placeIdField.value = oData[2];
+        placeIdField.value = oData.preferredId;
+        placeInput.value = oData.preferredName;
       };
       placeAutoComp.itemSelectEvent.subscribe(myHandler);
       

Modified: trunk/apps/qubit/modules/term/actions/listAction.class.php
==============================================================================
--- trunk/apps/qubit/modules/term/actions/listAction.class.php  Fri Aug 14 
10:09:29 2009        (r3033)
+++ trunk/apps/qubit/modules/term/actions/listAction.class.php  Fri Aug 14 
11:10:54 2009        (r3034)
@@ -63,21 +63,23 @@
     {
       foreach ($results as $result)
       {
-        $termName = $result->name;
+        $termName = $result->getName(array('cultureFallback' => true));
 
         // Check for preferred term to the current term
         $criteria2 = new Criteria;
         $criteria2->add(QubitRelation::OBJECT_ID, $result->id, 
Criteria::EQUAL);
         $criteria2->add(QubitRelation::TYPE_ID, 
QubitTerm::TERM_RELATION_EQUIVALENCE_ID, Criteria::EQUAL);
+
+        // Set preferred name and id
+        $preferredName = null;
+        $preferredId = $term->id;
         if (null !== ($preferred = QubitRelation::getOne($criteria2)))
         {
-          $termName .= ' ('.$this->getContext()->getI18N()->__('use').': ';
-          $termName .= 
$preferred->getSubject()->getName(array('cultureFallback' => true));
-          $termName .= ')';
+          $preferredName = 
$preferred->getSubject()->getName(array('cultureFallback' => true));
+          $preferredId = (null === $preferred) ? $result->id : 
$preferred->getSubject()->id;
         }
 
-        $preferredId = (null === $preferred) ? $result->id : 
$preferred->getSubject()->id;
-        $hitlist[] = array('name' => $termName, 'id' => $result->id, 
'preferredId' => $preferredId);
+        $hitlist[] = array('name' => $termName, 'id' => $result->id, 
'preferredName' => $preferredName, 'preferredId' => $preferredId);
       }
     }
 

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