Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
en:user:berry_baskets [2018/07/30 14:31]
kjdon [Setting up the Email Results Functionality]
en:user:berry_baskets [2019/10/02 15:18] (current)
kjdon [Using dc.Title instead of Title in Berry Basket display]
Line 1: Line 1:
-====== Berry Baskets (Greenstone 3) ======+====== ​Favourites/Berry Baskets (Greenstone 3) ======
  
-A berry basket functionality has been implemented in Greenstone 3. This allows the user to collect up a set of interesting ​of useful documents as she is browsing through ​library. Once they are finished, they can view the basket of links, and email it to themselves.+favourites/berry basket functionality has been implemented in Greenstone 3. This allows the user to collect up a set of interesting ​or useful documents as she is browsing through ​the library. Once they are finished, they can view the basket of links, and email it to themselves.
  
-===== Activating Berry Baskets =====+Favourites - a star is displayed for each document in browsing and searching lists. Clicking the star will add/remove that document from the favourites list.
  
-The library administrator can enable the Berry Basket functionality ​by including ​the BerryBasket serviceRack in the siteConfig.xml file. This is present by default: commenting it out will remove ​that functionality from the library.+Berry Baskets - little berries are displayed ​by each document. Drag a berry on to the basket to add that document.
  
-The user can turn on this feature in the Preferences ​page. Once it is activatedlittle berries will appear in browsing lists and search resultsThese berries ​can be dragged into the basket that appears on the right hand side of the page.+The basket itself is displayed ​on the side of the page. Clicking the link in the basket will take you to a full view of the contents of the basket. 
 + 
 +===== Activating Favourites/​Berry Baskets ===== 
 + 
 +By default, Favourites ​is activenot Berry Baskets. 
 + 
 +The library administrator ​can change to use Berry Baskets, or disable ​the functionality altogether by editing options in the web/​interfaces/​default/​interfaceConfig.xml file. 
 +<​code>​ 
 +<​optionList>​ 
 +  <option name="​favouriteBasket"​ value="​true"/>​ 
 +  <option name="​berryBasket"​ value="​false"/>​ 
 +</​optionList>​ 
 +</​code>​ 
 +Set both to false to disable this completely. 
 + 
 +While the functionality is active, it is not turned on for the user by default(It will be for 3.10 and later). The user can go to Preferences,​ and turn it on/off.  
 + 
 +To make it turned on by default, set a paramDefault in web/​sites/​localsite/​siteConfig.xml. 
 +<​code>​ 
 +<​format>​ 
 +  <​paramDefault name="​favouritebasket"​ value="​on"/> ​ (or '​berrybasket'​) 
 +</​format>​ 
 +</​code>​
  
 ===== Customizing Berry Baskets ===== ===== Customizing Berry Baskets =====
Line 24: Line 46:
 </​code>​ </​code>​
  
-By default, these will just get added to the item's display. If you want to customise the display, take a look at the javascript code. web/​interfaces/​default/​js/​berrybasket/​berrybasket.js,​ function showBasket() displays the small version on other pages, while web/​interfaces/​default/​js/​berrybasket/​berrycheckout.js functions showFullView(),​ showTextView() and showEmail() display the different basket views. In particular, populateUrlsAndMetadata() displays the links plus metadata entries for Text and Email views.+Then restart Tomcat. 
 + 
 +By default, these specified metadata elements ​will just get added to the item's display, e.g. at the bottom of the metadata lists in the '​text'​ and '​email'​ views. Or after the title in the '​full'​ view 
 + 
 +If you want to customise the display, take a look at the javascript code. web/​interfaces/​default/​js/​berrybasket/​berrybasket.js,​ function showBasket() displays the small version on other pages, while web/​interfaces/​default/​js/​berrybasket/​berrycheckout.js functions showFullView(),​ showTextView() and showEmail() display the different basket views. In particular, populateUrlsAndMetadata() displays the links plus metadata entries for Text and Email views, and generateDocDisplay() displays the entries for the text view. 
 + 
 +=== Example: Using dc.Title instead of Title in Berry Basket display === 
 + 
 +By default, the berry basket entries display Title metadata. If the linked item is a section, it will also display the book Title (root_Title).  
 + 
 +If we have a collection that doesn'​t have Title metadata (eg from a CSV spreadsheet),​ we can modify the code to display dc.Title instead. 
 + 
 +1. Edit web/​sites/​localsite/​siteConfig.xml and add dc.Title into the BerryBasket service metadataList:​ 
 +<​code>​ 
 +<​serviceRack name="​BerryBaskets">​ 
 +  <​metadataList>​ 
 +    <​metadata name="​dc.Title"/>​ 
 +  </​metadataList>​ 
 +</​serviceRack>​ 
 +</​code>​ 
 + 
 +2. Edit web/​interfaces/​default/​js/​berrybasket/​berrycheckout.js 
 + 
 +Look for generateDocDisplay and edit it: 
 +<​code>​ 
 +Replace: 
 +a.href=generateURL(doc);​ 
 +a.appendChild(document.createTextNode(doc['​Title'​]));​ 
 +with either: 
 +1. Use this if all documents have dc.Title instead of Title 
 + 
 +a.href=generateURL(doc);​ 
 +a.appendChild(document.createTextNode(doc['​dc.Title'​]));​ 
 + 
 +or: 
 +2. use this if some documents have Title and some have dc.Title 
 + 
 +a.href=generateURL(doc);​ 
 +if (doc['​Title'​]) { 
 +   ​a.appendChild(document.createTextNode(doc['​Title'​]));​  
 +} else if (doc['​dc.Title'​]) { 
 +   ​a.appendChild(document.createTextNode(doc['​dc.Title'​]));​ 
 +
 +</​code>​ 
 + 
 +This will now display dc.Title instead of Title for the title link to the document in the full view. 
 +However, as dc.Title is not defined as one of the standard metadatas, it also gets added to the end of the display. To prevent this, either add it to the default_metas list at the top of the file, or modify generateDocDisplay further. 
 +<​code>​ 
 +Replace: 
 +for (var metaItem in doc) { 
 +  if ( !default_metas.includes(metaItem)){ 
 +     ​metadata += " "​+metaItem+":​ "+ doc[metaItem]+"​ "; 
 +  } 
 +
 + 
 +with: 
 +for (var metaItem in doc) { 
 +  if ( !default_metas.includes(metaItem) && metaItem != '​dc.Title'​){ 
 +     ​metadata += " "​+metaItem+":​ "+ doc[metaItem]+"​ "; 
 +  } 
 +
 +</​code>​ 
 + 
 +In the text and email view, all metadata is displayed in a list: First the hard-wired ones, then any that are not in the default list. So the dc.Title metadata just gets added to the list. If you added dc.Title to default_metas list as mentioned above, then you need to manually add it to the display to get it to appear. 
 + 
 +For example, in populateUrlsAndMetadata(),​ add in the following:​ 
 +<​code>​ 
 +if (doc['​dc.Title'​]) { 
 +  metadata += "​dc.Title:​ "​+doc['​dc.Title'​]+"​\n";​ 
 +
 +</​code>​ 
 + 
 + 
 ==== Document Link ==== ==== Document Link ====