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

Last change on this file since 36071 was 36071, checked in by kjdon, 2 years ago

deleted all the old berry basket stuff that we don't need any more

File size: 5.7 KB
Line 
1//used to stored the current items in basket, including collection name, document id and dodument title
2//in the format of collection:id:[title], it is updated when the page is loaded (reloaded) or the user adds
3// new items in the basket (see ygDDplayer.js). It is used to show the contents of 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 countFavourites = function(callback) {
12 var request_type = "GET";
13 var url = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=ItemNum&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('item');
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=ItemNum&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('item');
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('name');
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] = items[i];
56 }
57
58 // set favourite images visible
59 // they are set to be invisible to prevent flickering when first loaded (see berry.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 // new ygDDPlayer(berry.id,'basket',berryList); // **** can go
81 }
82 }
83 updateFavouritesCount();
84 }
85
86 var responseFailure = function(o){
87 console.error("Berry Basket GetItems AJAX call failed:" + url);
88 }
89
90 var callback = {
91 success: responseSuccess,
92 failure: responseFailure
93 }
94
95 //var date = new Date();
96 //url += "&rand=" + date.getTime();
97 YAHOO.util.Connect.asyncRequest(request_type , url , callback);
98}
99
100
101
102function updateFavouritesCount() {
103 var favouritesCountElement = YAHOO.util.Dom.get('favouritesCountDisplay');
104 if ( favouritesCountElement == null ) return;
105 if ( berryList.length == 0 ) {
106 favouritesCountElement.innerHTML = "(0)";
107 } else {
108 favouritesCountElement.innerHTML = "(" + berryList.length + ")";
109 }
110}
111
112
113
114function addFavourite(el){
115 var addurl = gs.xsltParams.library_name + "?a=pr&rt=r&ro=1&s=AddItem&c=&s1.id=2&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&s1.item=" + el.id;
116
117 var request_type = "GET";
118 var addSuccess = function(o){
119 var result = o.responseXML;
120 var items = result.getElementsByTagName('item');
121
122 if (items.length > 0){
123 // assumes that there is only 1 item to add
124 var item = items[0];
125 berryList[berryList.length]= item;
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=DeleteItems&c=&o=XML&hhf="+makeURLComponentSafe("[{\"name\":\"Cache-Control\", \"value\":\"no-cache\"}]")+"&s1.items=" + el.id;
146
147 var delSuccess = function(o){
148
149 for (var i in berryList) {
150 var berry = berryList[i];
151 console.log(berry);
152 var id = berry.getAttribute('collection')+":"+berry.getAttribute('name');
153
154 if (id == el.id){
155 berryList.splice(i,1);
156
157 break;
158 }
159
160 }
161 updateFavouritesCount();
162
163 }
164
165 var delFailure = function(o){
166 }
167
168 var delcallback = {
169 success:delSuccess,
170 failure:delFailure
171 }
172
173 YAHOO.util.Connect.asyncRequest(request_type , delurl , delcallback);
174}
175
176
177
178function toggleFavourite(el)
179{
180 var is_favourite = el.getAttribute("data-is-favourite");
181 if (is_favourite == "true") {
182 deleteFavourite(el);
183 el.src = gs.variables.unselected_favourite_icon_url;
184 el.setAttribute("data-is-favourite","false")
185 }
186 else {
187 addFavourite(el);
188 el.src = gs.variables.selected_favourite_icon_url;
189 el.setAttribute("data-is-favourite","true")
190 }
191}
192
193if(gs.cgiParams.berrybasket == "on")
194{
195 YAHOO.util.Event.addListener(window, 'load', berryCheckout);
196}
197else {
198 // assumption is that favouritebasket is on
199 YAHOO.util.Event.addListener(window, 'load', favouritesCheckout);
200}
201
202//YAHOO.util.Event.addListener(window, 'click', basketUpdate);
203
204
205
Note: See TracBrowser for help on using the repository browser.