source: main/trunk/greenstone3/web/interfaces/default/js/berrybasket/ygDDPlayer.js@ 33071

Last change on this file since 33071 was 33071, checked in by kjdon, 5 years ago

DeleteItem had never been implemented for berry baskets, only DeleteItems. So changed service name and param name to match that service

  • Property svn:executable set to *
File size: 9.0 KB
Line 
1/* Copyright (c) 2006 Yahoo! Inc. All rights reserved. */
2
3function ygDDStack(id, sGroup) {
4 if (id) {
5 this.init(id, sGroup);
6 this.initFrame();
7 }
8}
9
10ygDDStack.prototype = new YAHOO.util.DDTarget();
11
12ygDDPlayer.TYPE = "ygDDPlayer";
13
14/**
15* @class a YAHOO.util.DDFramed implementation. During the drag over event, the
16* dragged element is inserted before the dragged-over element.
17*
18* @extends YAHOO.util.DDProxy
19* @constructor
20* @param {String} id the id of the linked element
21* @param {String} sGroup the group of related DragDrop objects
22*/
23function ygDDPlayer(id, sGroup, bl) {
24 this.initPlayer(id, sGroup);
25 this.berryList = bl;
26
27}
28
29ygDDPlayer.prototype = new YAHOO.util.DDProxy();
30
31ygDDPlayer.prototype.berryList = new Array();
32
33ygDDPlayer.prototype.initPlayer = function(id, sGroup) {
34 if (!id) { return; }
35
36 this.init(id, sGroup);
37 this.initFrame();
38 var s = this.getDragEl().style;
39 s.borderColor = "transparent";
40 // s.backgroundColor = "#cccccc";
41 s.opacity = 0.76;
42 s.filter = "alpha(opacity=76)";
43
44 // specify that this is not currently a drop target
45 this.isTarget = false;
46
47 this.originalStyles = [];
48
49 this.type = ygDDPlayer.TYPE;
50 this.slot = null;
51 this.startPos = YAHOO.util.Dom.getXY( this.getEl() );
52
53}
54
55ygDDPlayer.prototype.startDrag = function(x, y) {
56
57 var dragEl = this.getDragEl();
58 var clickEl = this.getEl();
59
60 dragEl.innerHTML = clickEl.innerHTML;
61 //dragEl.className = clickEl.className;
62 //dragEl.style.color = clickEl.style.color;
63 //dragEl.style.backgroundColor = clickEl.style.backgroundColor;
64 //dragEl.style.visibility = clickEl.style.visibility;
65
66 while (dragEl.hasChildNodes()) {
67 dragEl.removeChild(dragEl.firstChild);
68 }
69
70 var img = document.createElement('img');
71 img.src = 'interfaces/default/images/berry.png';
72 dragEl.appendChild(img);
73
74 var added = true;
75
76 var s = clickEl.style;
77 s.opacity = .1;
78 s.filter = "alpha(opacity=10)";
79
80 var targets = YAHOO.util.DDM.getRelated(this, true);
81
82 for (var i=0; i<targets.length; i++) {
83
84 var targetEl = this.getTargetDomRef(targets[i]);
85
86 if (!this.originalStyles[targetEl.id]) {
87 this.originalStyles[targetEl.id] = targetEl.className;
88 }
89
90 targetEl.className = "target";
91 }
92 correctBerryExpandCollapseButtons();
93};
94
95ygDDPlayer.prototype.getTargetDomRef = function(oDD) {
96 if (oDD.player) {
97 return oDD.player.getEl();
98 } else {
99 return oDD.getEl();
100 }
101};
102
103ygDDPlayer.prototype.endDrag = function(e) {
104 // reset the linked element styles
105 var s = this.getEl().style;
106 s.opacity = 1;
107 s.filter = "alpha(opacity=100)";
108
109 this.resetTargets();
110};
111
112ygDDPlayer.prototype.resetTargets = function() {
113
114 // reset the target styles
115 var targets = YAHOO.util.DDM.getRelated(this, true);
116 for (var i=0; i<targets.length; i++) {
117 var targetEl = this.getTargetDomRef(targets[i]);
118 var oldStyle = this.originalStyles[targetEl.id];
119 if (oldStyle) {
120 targetEl.className = oldStyle;
121 }
122 }
123};
124
125var request_type = "GET";
126var addurlPath = 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=";
127var delurlPath = 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=";
128var postdata = null;
129
130ygDDPlayer.prototype.onDragDrop = function(e, id) {
131 // get the drag and drop object that was targeted
132 var oDD;
133 var player = this;
134
135 if ("string" == typeof id) {
136 oDD = YAHOO.util.DDM.getDDById(id);
137 } else {
138 oDD = YAHOO.util.DDM.getBestMatch(id);
139 }
140
141
142 var el = this.getEl();
143
144 // check if the slot has a player in it already
145 if (oDD.player) {
146 // check if the dragged player was already in a slot
147 if (this.slot) {
148 // check to see if the player that is already in the
149 // slot can go to the slot the dragged player is in
150 // YAHOO.util.DDM.isLegalTarget is a new method
151 if ( YAHOO.util.DDM.isLegalTarget(oDD.player, this.slot) ) {
152 YAHOO.util.DDM.moveToEl(oDD.player.getEl(), el);
153 this.slot.player = oDD.player;
154 oDD.player.slot = this.slot;
155 } else {
156 YAHOO.util.Dom.setXY(oDD.player.getEl(), oDD.player.startPos);
157 this.slot.player = null;
158 oDD.player.slot = null
159 }
160 } else {
161 // the player in the slot will be moved to the dragged
162 // players start position
163 //oDD.player.slot = null;
164 //YAHOO.util.DDM.moveToEl(oDD.player.getEl(), el);
165 }
166 }else {
167 // Move the player into the emply slot
168 // I may be moving off a slot so I need to clear the player ref
169 if (this.slot) {
170 this.slot.player = null;
171 }
172 }
173
174 var addurl = addurlPath + el.id;
175 var addSuccess = function(o){
176 var text = o.responseText;
177 var result = o.responseXML;
178 var items = result.getElementsByTagName('item');
179 if (items.length > 0){
180 var item = items[0];
181 var berrybasket = YAHOO.util.Dom.get('berrybasket');
182 var berries = YAHOO.util.Dom.get('berries');
183 player.berryList[player.berryList.length]= item;
184
185 var itemID = item.getAttribute('collection')+":"+item.getAttribute('name');
186 var parent =el.parentNode;
187 parent.removeChild(el);
188
189 if (parent !=null && parent.id == "documentberries"){
190 var root = YAHOO.util.Dom.get(itemID+":root");
191 var section = YAHOO.util.Dom.get(itemID+":section");
192 if(root!=null && root.id.indexOf(itemID) !=-1){
193 parent.removeChild(root);
194 }
195
196 if(section!=null && section.id.indexOf(itemID) !=-1){
197 parent.removeChild(section);
198 }
199 }
200
201
202 if (!YAHOO.util.Dom.get('hideview') && player.berryList.length <13){
203
204 while (berries.hasChildNodes()) {
205 berries.removeChild(berries.firstChild);
206 }
207
208 for (var i =0; i < player.berryList.length; i++ ){
209 var img = document.createElement('img');
210 img.src = 'interfaces/default/images/berry.png';
211 berries.appendChild(img);
212 }
213
214 correctBerryExpandCollapseButtons();
215
216 }
217 else{
218
219
220 if (YAHOO.util.Dom.get('hideview')){
221
222 var berryBasket = YAHOO.util.Dom.get('berrybasket');
223 var berries = YAHOO.util.Dom.get('berries');
224 var doclist = YAHOO.util.Dom.get('doclist');
225 var tid = el.id;
226 var berryItem;
227 var berryElement = document.createElement('li');
228 for (var i in player.berryList){
229 berryItem = player.berryList[i];
230 var id = berryItem.getAttribute('collection')+":"+berryItem.getAttribute('name');
231 if (id == tid){
232 var title = berryItem.getAttribute('title');
233 var root_title = berryItem.getAttribute('root_title');
234 if (root_title != ""){
235 root_title +=":";
236 }
237
238 title = root_title+title;
239 if (title.length > 50){
240 title = title.substring(0,20)+" ... "+title.substr(title.length-35,35);
241 }
242
243 berryElement.appendChild(document.createTextNode(title));
244 berryElement.setAttribute("class","berryitem");
245 doclist.appendChild(berryElement);
246 var heightStr = berryBasket.style.height+"";
247 var height =parseInt(heightStr.substring(0,heightStr.length-2)) +18;
248 berryBasket.style.height = height;
249 berries.style.height = height;
250 break;
251 }
252 }
253 }
254
255 }
256 }
257
258 //Makes sure all the berries on the page are up to date
259 checkout();
260 }
261
262 var addFailure = function(o){ alert("Adding berry failed" + o); }
263
264
265 var addcallback = {
266 success:addSuccess,
267 failure:addFailure,
268 argument:player
269 }
270
271
272 var delurl = delurlPath + el.id;
273 var delSuccess = function(o){
274 var result = o.responseXML;
275 var parent =el.parentNode;
276 var ancestor = parent.parentNode;
277 if (parent == null) return;
278
279 ancestor.removeChild(parent);
280
281 for (var i in player.berryList){
282 var berry = player.berryList[i];
283
284 var id = berry['collection']+":"+berry['name'];
285
286 if (id == el.id){
287 player.berryList.splice(i,1);
288
289 break;
290 }
291
292 }
293
294 if (!parent.hasChildNodes()){
295 var content = YAHOO.util.Dom.get('content');
296 while (content.hasChildNodes()) {
297 content.removeChild(content.firstChild);
298 }
299 content.appendChild(document.createTextNode('Your berry basket is empty.'));
300 }
301 var trashbin = YAHOO.util.Dom.get('trashbin');
302 if ( trashbin !=null){
303 trashbin.style.background = 'url("interfaces/default/images/trash-full.png") 0 0 no-repeat';
304 }
305 }
306
307
308 var delFailure = function(o){ alert("Deletion failed" + o);}
309
310
311 var delcallback = {
312 success:delSuccess,
313 failure:delFailure,
314 argument:player
315 }
316
317 if (id == 'berrybasket'){
318 YAHOO.util.Connect.asyncRequest(request_type , addurl , addcallback);
319 } else {
320 if (id == 'trashbin'){
321 YAHOO.util.Connect.asyncRequest(request_type , delurl , delcallback);
322 }
323 }
324
325 this.resetTargets();
326 this.slot = oDD;
327 this.slot.player = this;
328
329};
330
331ygDDPlayer.prototype.swap = function(el1, el2) {
332 var dom = YAHOO.util.Dom;
333 var pos1 = dom.getXY(el1);
334 var pos2 = dom.getXY(el2);
335 dom.setXY(el1, pos2);
336 dom.setXY(el2, pos1);
337};
338
339ygDDPlayer.prototype.onDragOver = function(e, id) {};
340
341ygDDPlayer.prototype.onDrag = function(e, id) {};
342
343
344
345
346
Note: See TracBrowser for help on using the repository browser.