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

Last change on this file since 37523 was 37523, checked in by kjdon, 14 months ago

changes reflecting changes to favourites service names, and the xml that gets returned. also started work on mailing which is not finished.

File size: 5.6 KB
RevLine 
[36071]1//used to stored the current items in basket, including collection name, document id and dodument title
[36069]2//in the format of collection:id:[title], it is updated when the page is loaded (reloaded) or the user adds
[36071]3// new items in the basket (see ygDDplayer.js). It is used to show the contents of the basket.
[36069]4
[36071]5// note we only support favourites now, not the old drag and drop berry baskets
6// berry is still used here for legacy reasons
[36069]7var berryList = new Array();
8var show = false;
9
10
[36071]11var countFavourites = function(callback) {
12 var request_type = "GET";
[37523]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=";
[36069]14
15 var responseSuccess = function(o) {
16
17 var response = o.responseXML;
18 var size = response.getElementsByTagName('size').item(0).getAttribute('value');
19
[37523]20 var items = response.getElementsByTagName('documentNode');
[36069]21
22 callback(items.length);
23 }
24
25 YAHOO.util.Connect.asyncRequest(request_type , url , {success: responseSuccess });
[36071]26
[36069]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";
[37523]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=";
[36069]37
38 var responseSuccess = function(o){
39
40 var response = o.responseXML;
41 var size = response.getElementsByTagName('size').item(0).getAttribute('value');
42
[37523]43 var items = response.getElementsByTagName('documentNode');
[36069]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){
[37523]115 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;
[36069]116
[36071]117 var request_type = "GET";
[36069]118 var addSuccess = function(o){
119 var result = o.responseXML;
[37523]120 var items = result.getElementsByTagName('documentNode');
[36069]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){
[37523]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;
[36069]146
[36882]147 var request_type = "GET";
[36069]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('name');
154
155 if (id == 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
[36882]194YAHOO.util.Event.addListener(window, 'load', favouritesCheckout);
[36069]195//YAHOO.util.Event.addListener(window, 'click', basketUpdate);
196
197
198
Note: See TracBrowser for help on using the repository browser.