About Features Downloads Getting Started Documentation Events Support GitHub

Love VuFind®? Consider becoming a financial supporter. Your support helps build a better VuFind®!

Site Tools


Warning: This page has not been updated in over over a year and may be outdated or deprecated.
expanded_driver_func

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
expanded_driver_func [2010/02/11 11:58] l.osullivanexpanded_driver_func [2010/02/11 12:24] l.osullivan
Line 1: Line 1:
-**Bold Text**====== Expanded Driver Functionality ======+====== Expanded Driver Functionality ======
  
  
Line 5: Line 5:
  
 **%%https://vufind.svn.sourceforge.net/svnroot/vufind/branches/luke%%** **%%https://vufind.svn.sourceforge.net/svnroot/vufind/branches/luke%%**
 +
 +
 +
  
 ===== Purpose ===== ===== Purpose =====
-To create a flexible and gracefully degrading solution for the Item Loan Renewals, Placing Hold and cancelling Holds.+To create a flexible and gracefully degrading solution for Item Loan Renewals, Placing Hold and cancelling Holds.
  
-//**NB:** +//**NB:**// 
  
-driver.ini refers to the ILS-specific configuration file found in the config directory. E.g. voyager.ini+//driver.ini refers to the ILS-specific configuration file found in the config directory. E.g. voyager.ini//
  
-driver.php refers to the ILS-specific driver e.g. Voyager.php//+//driver.php refers to the ILS-specific driver e.g. Voyager.php//
  
 ===== New Functions ===== ===== New Functions =====
Line 33: Line 36:
  
 Accepts a string argument which must correspond with an array key in $this->config which is loaded from driver.ini. If he array key ‘enabled’ is true, it returns the corresponding driver.ini settings as an array. If the array key ‘enabled’ is false, it returns false. Accepts a string argument which must correspond with an array key in $this->config which is loaded from driver.ini. If he array key ‘enabled’ is true, it returns the corresponding driver.ini settings as an array. If the array key ‘enabled’ is false, it returns false.
 +
  
  
Line 43: Line 47:
 Sample: Holds Sample: Holds
  
 +<code>
 function checkFunction($function) function checkFunction($function)
     {     {
Line 87: Line 92:
  
     }     }
 +</code>
  
 Accepts a string argument which must correspond with options in its switch statement. When a match is made, it looks to see if the getConfig function is available in the driver. If it is not, it returns false.  If getConfig exists, the function parameters set in driver.ini are loaded into $functionConfig . It also checks for the correct method to use with the function. If the function is not enabled, it returns false. Accepts a string argument which must correspond with options in its switch statement. When a match is made, it looks to see if the getConfig function is available in the driver. If it is not, it returns false.  If getConfig exists, the function parameters set in driver.ini are loaded into $functionConfig . It also checks for the correct method to use with the function. If the function is not enabled, it returns false.
Line 204: Line 210:
  
 NB: Hypertext link could be converted to form element in order to provide a POST option for continuity between methods. NB: Hypertext link could be converted to form element in order to provide a POST option for continuity between methods.
 +
 +
 +
 +
  
  
Line 272: Line 282:
 Holdings.php then performs another loop through each item and creates links for place a hold based on the hold behaviour set in the driver.ini file.  This link is attached to the holdings array with the key “link”. Holdings.php then performs another loop through each item and creates links for place a hold based on the hold behaviour set in the driver.ini file.  This link is attached to the holdings array with the key “link”.
  
 +<code>
 // Generate Links // Generate Links
             // Loop through each holding             // Loop through each holding
Line 325: Line 335:
                         }                         }
                     }                     }
 +</code>
  
 Finally, the template is set and the holdings array is assigned to Smarty. Finally, the template is set and the holdings array is assigned to Smarty.
Line 335: Line 346:
         $interface->display('layout.tpl');         $interface->display('layout.tpl');
  
-Interface/MyResearch/ view-holdings.tpl+ 
 +=== Interface/MyResearch/view-holdings.tpl ===
  
 View-holdings.tpl is responsible for displaying the holdings for each item. Smarty checks if the item is available and outputs an appropriate link if it has been set in holdings.php.  View-holdings.tpl is responsible for displaying the holdings for each item. Smarty checks if the item is available and outputs an appropriate link if it has been set in holdings.php. 
  
 +<code>
 {* Begin Available Items (Holds) *} {* Begin Available Items (Holds) *}
           {if $row.availability}            {if $row.availability} 
Line 363: Line 376:
  
               {/if}     {/if}                {/if}     {/if} 
- +</code> 
-== Hold.php == +=== Hold.php ===
  
 Hold.php first checks if Holds are enabled. If they are, it registers the function to be used . If they are not, the user is directed back to the holdings page. Hold.php first checks if Holds are enabled. If they are, it registers the function to be used . If they are not, the user is directed back to the holdings page.
  
 +<code>
 // Are Holds Allowed? // Are Holds Allowed?
  
Line 384: Line 397:
         exit();         exit();
         }          } 
 +</code>
  
 Next, it checks to see if it has been sent any information from holdings.php or login.php using the link values set in config.ini. If it has, it assigns them to a gatheredDetails array and builds a logon url which will be used to redirected users to a logon screen as required. Hold.php also assigns the required and optional values to PHP variables and also send them to the Smarty template so that the correct form elements can be displayed. Next, it checks to see if it has been sent any information from holdings.php or login.php using the link values set in config.ini. If it has, it assigns them to a gatheredDetails array and builds a logon url which will be used to redirected users to a logon screen as required. Hold.php also assigns the required and optional values to PHP variables and also send them to the Smarty template so that the correct form elements can be displayed.
  
 +<code>
 // Get Values Passed to Page from holdings.php // Get Values Passed to Page from holdings.php
             // Could be removed and rely on response from driver to produce error messages             // Could be removed and rely on response from driver to produce error messages
Line 416: Line 431:
      if ($user && $user->cat_username) {          ….      if ($user && $user->cat_username) {          ….
        }         }
-       +</code>       
  
 If the user is logged in and has a catalog username, Holds.php continues by assigning the catalog, registering user details and retrieving a list of pickup libraries based on the patron’s information. This list is assigned to the template. Hold.php also adds a defaultdue date variable using the ISO 8601 format of YYYY-MM-DD. If the user is logged in and has a catalog username, Holds.php continues by assigning the catalog, registering user details and retrieving a list of pickup libraries based on the patron’s information. This list is assigned to the template. Hold.php also adds a defaultdue date variable using the ISO 8601 format of YYYY-MM-DD.
  
 +<code>
 // Connect to Database  // Connect to Database 
                 $this->catalog = new CatalogConnection($configArray['Catalog']['driver']);                 $this->catalog = new CatalogConnection($configArray['Catalog']['driver']);
Line 437: Line 453:
                 $defaultduedate = date("Y-m-d", $nextmonth);                 $defaultduedate = date("Y-m-d", $nextmonth);
                 $interface->assign('defaultduedate', $defaultduedate);                 $interface->assign('defaultduedate', $defaultduedate);
 +</code>
  
 If the Hold.tpl form has been submitted, the data is added to the $gatherdDetails array and also re-assigned to the template in case there is insufficient data to place the hold. The patron data is then added to the $gatheredDetails array and assigned to $this->holdDetails. The array keys of $this->holdDetails are then checked against the required config values. If any of the keys are missing or if the date does not match the ISO format, the $proceed variable is set to false.  If the form has not been submitted, the hold-submit.tpl template is displayed. If the Hold.tpl form has been submitted, the data is added to the $gatherdDetails array and also re-assigned to the template in case there is insufficient data to place the hold. The patron data is then added to the $gatheredDetails array and assigned to $this->holdDetails. The array keys of $this->holdDetails are then checked against the required config values. If any of the keys are missing or if the date does not match the ISO format, the $proceed variable is set to false.  If the form has not been submitted, the hold-submit.tpl template is displayed.
  
 +<code>
                 // Form Has Been Submitted                 // Form Has Been Submitted
                 if(isset($_POST['placeHold'])) {                 if(isset($_POST['placeHold'])) {
Line 483: Line 501:
  
                 }                 }
 +</code>
  
 If $proceed is true, then the hold attempt is made using defined function.  The function returns an array with a mandatory success key which must be a Boolean true or false. In this instance, it also returns a status message which gives more information on the result. If result is true, then the user is redirected to MyResearch/Holds to list all their holds. If it is false, the results array is assigned to the template and the template is displayed. If $proceed is true, then the hold attempt is made using defined function.  The function returns an array with a mandatory success key which must be a Boolean true or false. In this instance, it also returns a status message which gives more information on the result. If result is true, then the user is redirected to MyResearch/Holds to list all their holds. If it is false, the results array is assigned to the template and the template is displayed.
 +<code>
                        if($proceed == true) {                        if($proceed == true) {
  
Line 504: Line 523:
  
                     }                      } 
 +</code>
  
 If the user is logged in but does not have a user name, Hold.php displays a form for entering their catalog username and password and assigns the data necessary for a follow up. If the user is logged in but does not have a user name, Hold.php displays a form for entering their catalog username and password and assigns the data necessary for a follow up.
  
 +<code>
 // Require User Log On // Require User Log On
      else if ($user && empty($user->cat_username)) {      else if ($user && empty($user->cat_username)) {
Line 520: Line 541:
                                          
      }      }
 +</code>
  
 If the user is not logged in, logged Hold.php redirects users to the login page with the details necessary for a follow up. If the user is not logged in, logged Hold.php redirects users to the login page with the details necessary for a follow up.
 +<code>
             else{             else{
  
Line 529: Line 551:
                                          
      }      }
 +</code>
  
-== hold.tpl ==+=== hold.tpl ===
  
  
 This has been modified to remove the toolbar and the tabnav bar. Either option could be put back in but either a new Holds Tab would need to be created or Holds would have to become part of the Holdings Tab. This has been modified to remove the toolbar and the tabnav bar. Either option could be put back in but either a new Holds Tab would need to be created or Holds would have to become part of the Holdings Tab.
  
-== hold-submit.tpl ==+=== hold-submit.tpl ===
  
  
 This sub template contains the form required for POSTing data back to Hold.php. It first displays any status messages which can only have been assigned if an error has occurred. This sub template contains the form required for POSTing data back to Hold.php. It first displays any status messages which can only have been assigned if an error has occurred.
  
 +<code>
 {if $results.sysmessage} {if $results.sysmessage}
 <p class="error">{translate text=$results.sysmessage|escape}</p> <p class="error">{translate text=$results.sysmessage|escape}</p>
 {/if} {/if}
 +</code>
  
 The form action is generated using the variables passed from Holdings.php and view-holdings-holds.tpl.  Each form element is displayed only if its key exists in the $form_fields array. If the array received from the getPickUpLocations  function has only one entry, a hidden input is generated with the library id as the value. If the array has multiple entries, a select box is generated. At present, the entire form is hardcoded but it could be dynamically created using the link and required config  values. The form action is generated using the variables passed from Holdings.php and view-holdings-holds.tpl.  Each form element is displayed only if its key exists in the $form_fields array. If the array received from the getPickUpLocations  function has only one entry, a hidden input is generated with the library id as the value. If the array has multiple entries, a select box is generated. At present, the entire form is hardcoded but it could be dynamically created using the link and required config  values.
  
 +<code>
   <div class="hold-form">   <div class="hold-form">
  
Line 595: Line 621:
      
   </div>   </div>
 +</code>
  
 === New Smarty Variables / Text === === New Smarty Variables / Text ===
Line 608: Line 635:
 Place a Hold Place a Hold
  
-== hold-submit.tpl =+== hold-submit.tpl ==
  
 Comments Comments
Line 628: Line 655:
  
 If enabled, the Cancel Holds method allows vufind users to cancel their holds. If it is not enabled, then none of the functionality is displayed.  The method either takes information supplied via a POST form, passes it to the driver and returns the response or generates a url link to the native OPAC. If enabled, the Cancel Holds method allows vufind users to cancel their holds. If it is not enabled, then none of the functionality is displayed.  The method either takes information supplied via a POST form, passes it to the driver and returns the response or generates a url link to the native OPAC.
 +
 +
  
 ==== Process ==== ==== Process ====
Line 634: Line 663:
  
 [cancelHolds] [cancelHolds]
 +
 enabled = true enabled = true
 +
 link = item_id:recall_id link = item_id:recall_id
-opacurl = http://opac.swan.ac.uk/holdingsInfo/cancelHold+ 
 +opacurl = %%http://opac.swan.ac.uk/holdingsInfo/cancelHold%% 
  
 The enabled field determines whether or not Cancel Holds is in use.  The enabled field determines whether or not Cancel Holds is in use. 
Line 647: Line 680:
  
 A call is made to checkFunction and the response is assigned to $cancelHolds.  A call is made to checkFunction and the response is assigned to $cancelHolds. 
 +<code>
         // Is Cancelling Holds allowed?         // Is Cancelling Holds allowed?
         $this->cancelHolds = $this->catalog->checkFunction("CancelHolds");         $this->cancelHolds = $this->catalog->checkFunction("CancelHolds");
 +</code>
  
 === Holds.php === === Holds.php ===
  
 Holds.php begins as usual by confirming that the user is signed in: Holds.php begins as usual by confirming that the user is signed in:
 +<code>
  
 // Get My Holds // Get My Holds
Line 661: Line 696:
                 if (PEAR::isError($patron))                 if (PEAR::isError($patron))
                     PEAR::raiseError($patron);                     PEAR::raiseError($patron);
 +</code>
  
 It then proceeds to determine if cancelling holds is enabled and retrieves any messages received from services/Record/Hold.php. It then proceeds to determine if cancelling holds is enabled and retrieves any messages received from services/Record/Hold.php.
  
 +<code>
 // Is cancelling Holds Available // Is cancelling Holds Available
          if($this->cancelHolds != false) {          if($this->cancelHolds != false) {
Line 673: Line 710:
                         $cancelResults['success'] = $_GET['success'];                         $cancelResults['success'] = $_GET['success'];
                     }                     }
 +</code>
  
 Holds.php then checks if  any data has been submitted. If it has, it assigns it to the cancelDetails variable, adds the patron array, calls the required function and assigns the results to the cancelResults array. The cancelResults variable is then assigned to hold.tpl.  Holds.php then checks if  any data has been submitted. If it has, it assigns it to the cancelDetails variable, adds the patron array, calls the required function and assigns the results to the cancelResults array. The cancelResults variable is then assigned to hold.tpl. 
  
 +<code>
     // Process Submitted Form     // Process Submitted Form
  
Line 690: Line 729:
                 $interface->assign('cancelResults', $cancelResults);                 $interface->assign('cancelResults', $cancelResults);
                 }                 }
 +</code>
  
 A call is then made to the getMyHolds function: A call is then made to the getMyHolds function:
  
 +<code>
 $result = $this->catalog->getMyHolds($patron); $result = $this->catalog->getMyHolds($patron);
  
Line 703: Line 744:
                             $db->debug = true;                             $db->debug = true;
                         }                         }
 +</code>
  
 Holds.php then loops through each result item  and assigns the details to the recordList array, If cancel holds is enabled and the function is set as “getcancelHoldLink” , an OPAC url will be added to the cancel_link key in the ils_details array. If no opacurl key is present, the link field in the driver.ini is used to assign an associate array of values to the cancel_details key of the ils_details array. Holds.php then loops through each result item  and assigns the details to the recordList array, If cancel holds is enabled and the function is set as “getcancelHoldLink” , an OPAC url will be added to the cancel_link key in the ils_details array. If no opacurl key is present, the link field in the driver.ini is used to assign an associate array of values to the cancel_details key of the ils_details array.
  
 +<code>
                         // Get BIB Details and add "ils_details" details to result                         // Get BIB Details and add "ils_details" details to result
                         // Addition of values like "date created" etc moved to "ils_details" array key in Driver to negate need to edit Holds.php                          // Addition of values like "date created" etc moved to "ils_details" array key in Driver to negate need to edit Holds.php 
Line 748: Line 791:
                             $recordList[] = $record;                             $recordList[] = $record;
                         }                         }
 +</code>
  
 Finally, the recordList array is assigned to holds.tpl and the page is displayed. Finally, the recordList array is assigned to holds.tpl and the page is displayed.
  
 +<code>
   $interface->assign('recordList', $recordList);   $interface->assign('recordList', $recordList);
                                          
Line 764: Line 809:
         $interface->display('layout.tpl');         $interface->display('layout.tpl');
     }     }
 +</code>
  
 === Holds.tpl === === Holds.tpl ===
Line 775: Line 821:
 Next, if recordList is an array, holds.tpl first determines if vufind is being used to cancel holds. If it is, it will create two forms which POST data back to holds.php. The first cancels all items and uses information in the ils_details array assigned by the driver:  Next, if recordList is an array, holds.tpl first determines if vufind is being used to cancel holds. If it is, it will create two forms which POST data back to holds.php. The first cancels all items and uses information in the ils_details array assigned by the driver: 
  
 +<code>
 {if is_array($recordList)} {if is_array($recordList)}
  
Line 790: Line 836:
             <form name="cancelForm" action="{$url|escape}/MyResearch/Holds" method="POST" id="cancelHold">             <form name="cancelForm" action="{$url|escape}/MyResearch/Holds" method="POST" id="cancelHold">
             {/if}             {/if}
 +</code>
  
 The second uses checkboxes to give users the option of selecting individual holds to cancel. It is generated as part of the recordList  list operation. The second uses checkboxes to give users the option of selecting individual holds to cancel. It is generated as part of the recordList  list operation.
  
 +<code>
 <ul class="filters"> <ul class="filters">
         {foreach from=$recordList item=resource name="recordLoop"}         {foreach from=$recordList item=resource name="recordLoop"}
Line 847: Line 895:
         {/foreach}         {/foreach}
         </ul>         </ul>
 +</code>
  
 holds.tpl finally determines if vufind is being used to cancel holds, supplies a submit button and finishes the form. holds.tpl finally determines if vufind is being used to cancel holds, supplies a submit button and finishes the form.
  
 +<code>
 {if $cancelOption} {if $cancelOption}
    <br />      <br /> 
Line 855: Line 905:
    </form>    </form>
           {/if}           {/if}
 +</code>
 +
  
 ==== New Smarty Variables / Text ==== ==== New Smarty Variables / Text ====
  
 Cancel All Holds Cancel All Holds
 +
 Cancel Selected Holds Cancel Selected Holds
 +
 Cancel Hold Cancel Hold
  
Line 876: Line 930:
  
 If enabled, the Renew Items method allows vufind users to renew their transactions. If it is not enabled, then none of the functionality is displayed.  The method either takes information supplied via a POST form, passes it to the driver and returns the response or generates a url link to the native OPAC. If enabled, the Renew Items method allows vufind users to renew their transactions. If it is not enabled, then none of the functionality is displayed.  The method either takes information supplied via a POST form, passes it to the driver and returns the response or generates a url link to the native OPAC.
 +
  
 ==== Process ==== ==== Process ====
Line 881: Line 936:
 conf/driver.ini conf/driver.ini
  
-Renewals]+[Renewals] 
 enabled = true enabled = true
 +
 link = item_id link = item_id
-opacurl = http://opac.swan.ac.uk/renewItems+ 
 +opacurl = %%http://opac.swan.ac.uk/renewItems%%
  
 The enabled field determines whether or not Renewals is in use.  The enabled field determines whether or not Renewals is in use. 
Line 898: Line 956:
         // Is Renewing Items allowed?         // Is Renewing Items allowed?
         $this->checkRenew = $this->catalog->checkFunction("Renewals");         $this->checkRenew = $this->catalog->checkFunction("Renewals");
 +
  
 ==== CheckedOut.php ==== ==== CheckedOut.php ====
Line 903: Line 962:
 CheckedOut.php begins as usual by confirming that the driver is available and that the user is logged  in: CheckedOut.php begins as usual by confirming that the driver is available and that the user is logged  in:
  
 +<code
        // Get My Transactions        // Get My Transactions
         if ($this->catalog->status) {         if ($this->catalog->status) {
Line 909: Line 969:
                 if (PEAR::isError($patron))                 if (PEAR::isError($patron))
                     PEAR::raiseError($patron);                     PEAR::raiseError($patron);
 +</code>
  
 It then proceeds to get a list of user transactions. All the data assigned by the driver (duedate and item_id in this instance) is stored in an array with a key of “ils_details” so that system specific values will not have to be added to CheckedOut.php: It then proceeds to get a list of user transactions. All the data assigned by the driver (duedate and item_id in this instance) is stored in an array with a key of “ils_details” so that system specific values will not have to be added to CheckedOut.php:
- + 
 +<code>
  $result = $this->catalog->getMyTransactions($patron);  $result = $this->catalog->getMyTransactions($patron);
                 if (!PEAR::isError($result)) {                 if (!PEAR::isError($result)) {
Line 926: Line 988:
                                                  
                     }                     }
 +</code>
  
 Once the transaction list has been established, CheckedOut.php checks to see if the renewal function is enabled. If it is, it sets the name of the function and assigns the information required to renew each item to the ils_details array. If function is set to “renewMyItemsLink”, it passes the array key values set in the “link field” of driver.ini to renewMyItemsLink and receives a ur which is assigned to the “ils_details” array with the “renew_link” key. If the function is not “renewMyItemsLink”, it assigns the array keys set in the “link” field of  driver.ini file to the “ils_details” array with the “renew_details” key. A renewOption variable of OPAC or vufind is assigned to CheckedOut.tpl for form display options. Once the transaction list has been established, CheckedOut.php checks to see if the renewal function is enabled. If it is, it sets the name of the function and assigns the information required to renew each item to the ils_details array. If function is set to “renewMyItemsLink”, it passes the array key values set in the “link field” of driver.ini to renewMyItemsLink and receives a ur which is assigned to the “ils_details” array with the “renew_link” key. If the function is not “renewMyItemsLink”, it assigns the array keys set in the “link” field of  driver.ini file to the “ils_details” array with the “renew_details” key. A renewOption variable of OPAC or vufind is assigned to CheckedOut.tpl for form display options.
  
 +<code>
 if($this->checkRenew) { if($this->checkRenew) {
                                          
Line 967: Line 1031:
                         }                         }
                     }                     }
 +</code>
  
 If renewals are enabled, it then checks to see if it has received any POST data. If it has, it adds it to the $gatheredDetails['details'] array together with the patron information. CheckedOut.php then calls the driver renewal function and assigns the results to the template. It also extracts the array keys and assigns them to the renewArray variable so that smarty can determine which items have returned a renew response. If renewals are enabled, it then checks to see if it has received any POST data. If it has, it adds it to the $gatheredDetails['details'] array together with the patron information. CheckedOut.php then calls the driver renewal function and assigns the results to the template. It also extracts the array keys and assigns them to the renewArray variable so that smarty can determine which items have returned a renew response.
  
 +<code>
                              // Rewew Items                              // Rewew Items
                                  
Line 990: Line 1056:
                             $interface->assign('renewArray', $ids);                             $interface->assign('renewArray', $ids);
                                     }                                     }
 +</code>
  
 In this instance, the $_POST data is an array of item ids. The driver returns an array with two main keys. The first, “details” contains an array of details for each renew attempt. In this instance, that includes a Boolean success key (true or false), the item_id and a sysmessage key which holds any message returned by the system (e.g. Items with hold requests may not be renewed.) The second main key is id_array which contains a list of all the item_ids for which a renewal has been attempted. It is included for convenient use in the checkedout template.   In this instance, the $_POST data is an array of item ids. The driver returns an array with two main keys. The first, “details” contains an array of details for each renew attempt. In this instance, that includes a Boolean success key (true or false), the item_id and a sysmessage key which holds any message returned by the system (e.g. Items with hold requests may not be renewed.) The second main key is id_array which contains a list of all the item_ids for which a renewal has been attempted. It is included for convenient use in the checkedout template.  
  
-checkedout.tpl+==== checkedout.tpl ====
  
 checkedout.tpl first determines if vufind is being used to renew items. If it is, it will create two forms which POST data back to checkedout.php. The first renews all items and uses information in the ils_details array assigned by the driver:  checkedout.tpl first determines if vufind is being used to renew items. If it is, it will create two forms which POST data back to checkedout.php. The first renews all items and uses information in the ils_details array assigned by the driver: 
  
 +<code>
 {if $renewOption == "vufind"} {if $renewOption == "vufind"}
                 <form name="renewall" action="{$url|escape}/MyResearch/CheckedOut" method="POST" id="renewall">                  <form name="renewall" action="{$url|escape}/MyResearch/CheckedOut" method="POST" id="renewall"> 
Line 1013: Line 1081:
                 <form name="renewals" action="{$url}/MyResearch/CheckedOut" method="POST" id="renewals">                 <form name="renewals" action="{$url}/MyResearch/CheckedOut" method="POST" id="renewals">
               {/if}               {/if}
 +</code>
  
 The second uses checkboxes to give users the option of selecting individual items to renew. It is generated as part of the transaction list operation. The second uses checkboxes to give users the option of selecting individual items to renew. It is generated as part of the transaction list operation.
  
 +<code>
 <ul class="filters"> <ul class="filters">
           {foreach from=$transList item=resource name="recordLoop"}           {foreach from=$transList item=resource name="recordLoop"}
Line 1095: Line 1165:
           {/foreach}           {/foreach}
           </ul>           </ul>
 +</code>
  
 checkedout.tpl finally determines if vufind is being to renew items, supplies a submit button and finishes the form. checkedout.tpl finally determines if vufind is being to renew items, supplies a submit button and finishes the form.
-   + 
 +<code>   
 {if $renewOption == "vufind"} {if $renewOption == "vufind"}
    <br />      <br /> 
Line 1103: Line 1175:
  </form>  </form>
    {/if}    {/if}
 +</code>
  
 ==== New Smarty Variables / Text ==== ==== New Smarty Variables / Text ====
expanded_driver_func.txt · Last modified: 2014/06/13 13:14 by 127.0.0.1