source: main/trunk/greenstone3/web/interfaces/default/js/favouritebasket/favouritebasket.js

Last change on this file was 37826, checked in by kjdon, 9 months ago

updated a comment

File size: 5.6 KB
Line 
1//used to stored the current items in basket, including collection name and document id
2//in the format of collection:id. it is updated when the page is loaded (reloaded) or the user adds
3// new items in the basket.
4
5// note we only support favourites now, not the old drag and drop berry baskets
6// berry is still used here for legacy reasons
7var berryList = new Array();
8var show = false;
9
10
11var countFavouritesUNUSED = function(callback) {
12 var request_type = "GET";
13 var url = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=GetNumFavourites&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&c=";
14
15 var responseSuccess = function(o) {
16
17 var response = o.responseXML;
18 var size = response.getElementsByTagName('size').item(0).getAttribute('value');
19
20 var items = response.getElementsByTagName('documentNode');
21
22 callback(items.length);
23 }
24
25 YAHOO.util.Connect.asyncRequest(request_type , url , {success: responseSuccess });
26
27}
28
29
30// display selected favourites (filled-in star icon) on page
31var favouritesCheckout = function(){
32
33 if ( document.getElementById('berrybasket') == null ) return;
34
35 var request_type = "GET";
36 var url = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=GetNumFavourites&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&c=";
37
38 var responseSuccess = function(o){
39
40 var response = o.responseXML;
41 var size = response.getElementsByTagName('size').item(0).getAttribute('value');
42
43 var items = response.getElementsByTagName('documentNode');
44
45 berryList = new Array();
46 for (var i=0;i < items.length ; i++ ){
47
48 var itemID = items[i].getAttribute('collection')+":"+items[i].getAttribute('nodeID');
49 var item = YAHOO.util.Dom.get(itemID);
50
51 if (item != null){
52 item.src = gs.variables.selected_favourite_icon_url;
53 item.setAttribute("data-is-favourite","true");
54 }
55 berryList[berryList.length] = itemID;//items[i];
56 }
57
58 // set favourite images visible
59 // they are set to be invisible to prevent flickering when first loaded (see favourites.css)
60
61 var berries = document.getElementsByTagName('img');
62
63 for (var j=0; j < berries.length; j++){
64 var berry = berries[j];
65 var parent = berry.parentNode;
66 if (parent !=null && parent.id == "documentberries"){
67 var root = YAHOO.util.Dom.get(berry.id+":root");
68 var section = YAHOO.util.Dom.get(berry.id+":section");
69 if(root!=null && root.id.indexOf(berry.id) !=-1){
70 root.style.visibility ="visible" ;
71 }
72
73 if(section!=null && section.id.indexOf(berry.id) !=-1){
74 section.style.visibility ="visible" ;
75 }
76 }
77
78 if (berry.className && berry.className == 'pick'){
79 berry.style.visibility = "visible";
80 }
81 }
82 updateFavouritesCount();
83 }
84
85 var responseFailure = function(o){
86 console.error("GetNumFavourites AJAX call failed:" + url);
87 }
88
89 var callback = {
90 success: responseSuccess,
91 failure: responseFailure
92 }
93
94 //var date = new Date();
95 //url += "&rand=" + date.getTime();
96 YAHOO.util.Connect.asyncRequest(request_type , url , callback);
97}
98
99
100
101function updateFavouritesCount() {
102 var favouritesCountElement = YAHOO.util.Dom.get('favouritesCountDisplay');
103 if ( favouritesCountElement == null ) return;
104 if ( berryList.length == 0 ) {
105 favouritesCountElement.innerHTML = "(0)";
106 } else {
107 favouritesCountElement.innerHTML = "(" + berryList.length + ")";
108 }
109}
110
111
112
113function addFavourite(el){
114 var addurl = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=AddFavourite&c=&s1.id=2&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&s1.item=" + el.id;
115
116 var request_type = "GET";
117 var addSuccess = function(o){
118 var result = o.responseXML;
119 var items = result.getElementsByTagName('documentNode');
120
121 if (items.length > 0){
122 // assumes that there is only 1 item to add
123 var item = items[0];
124 var itemID = item.getAttribute('collection')+":"+item.getAttribute('nodeID');
125 berryList[berryList.length]= itemID;
126
127 updateFavouritesCount();
128 }
129
130 }
131
132 var addFailure = function(o){
133 }
134
135 var addcallback = {
136 success:addSuccess,
137 failure:addFailure
138 }
139
140 YAHOO.util.Connect.asyncRequest(request_type , addurl , addcallback);
141}
142
143
144function deleteFavourite(el){
145 var delurl = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=DeleteFavourites&c=&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&s1.items=" + el.id;
146
147 var request_type = "GET";
148 var delSuccess = function(o){
149
150 for (var i in berryList) {
151 var berry = berryList[i];
152 console.log(berry);
153 //var id = berry.getAttribute('collection')+":"+berry.getAttribute('nodeID');
154
155 if (berry == el.id){
156 berryList.splice(i,1);
157
158 break;
159 }
160
161 }
162 updateFavouritesCount();
163
164 }
165
166 var delFailure = function(o){
167 }
168
169 var delcallback = {
170 success:delSuccess,
171 failure:delFailure
172 }
173
174 YAHOO.util.Connect.asyncRequest(request_type , delurl , delcallback);
175}
176
177
178
179function toggleFavourite(el)
180{
181 var is_favourite = el.getAttribute("data-is-favourite");
182 if (is_favourite == "true") {
183 deleteFavourite(el);
184 el.src = gs.variables.unselected_favourite_icon_url;
185 el.setAttribute("data-is-favourite","false")
186 }
187 else {
188 addFavourite(el);
189 el.src = gs.variables.selected_favourite_icon_url;
190 el.setAttribute("data-is-favourite","true")
191 }
192}
193
194YAHOO.util.Event.addListener(window, 'load', favouritesCheckout);
195//YAHOO.util.Event.addListener(window, 'click', basketUpdate);
196
197
198
Note: See TracBrowser for help on using the repository browser.