@@ -2,19 +2,19 | |||||
2 | Copyright (C) 2006-2008 Jean-Philippe Lang */ |
|
2 | Copyright (C) 2006-2008 Jean-Philippe Lang */ | |
3 |
|
3 | |||
4 | function checkAll (id, checked) { |
|
4 | function checkAll (id, checked) { | |
5 |
|
|
5 | var els = Element.descendants(id); | |
6 |
|
|
6 | for (var i = 0; i < els.length; i++) { | |
7 | if (els[i].disabled==false) { |
|
7 | if (els[i].disabled==false) { | |
8 | els[i].checked = checked; |
|
8 | els[i].checked = checked; | |
9 | } |
|
9 | } | |
10 | } |
|
10 | } | |
11 | } |
|
11 | } | |
12 |
|
12 | |||
13 | function toggleCheckboxesBySelector(selector) { |
|
13 | function toggleCheckboxesBySelector(selector) { | |
14 |
|
|
14 | boxes = $$(selector); | |
15 |
|
|
15 | var all_checked = true; | |
16 |
|
|
16 | for (i = 0; i < boxes.length; i++) { if (boxes[i].checked == false) { all_checked = false; } } | |
17 |
|
|
17 | for (i = 0; i < boxes.length; i++) { boxes[i].checked = !all_checked; } | |
18 | } |
|
18 | } | |
19 |
|
19 | |||
20 | function setCheckboxesBySelector(checked, selector) { |
|
20 | function setCheckboxesBySelector(checked, selector) { | |
@@ -25,19 +25,19 function setCheckboxesBySelector(checked, selector) { | |||||
25 | } |
|
25 | } | |
26 |
|
26 | |||
27 | function showAndScrollTo(id, focus) { |
|
27 | function showAndScrollTo(id, focus) { | |
28 |
|
|
28 | Element.show(id); | |
29 |
|
|
29 | if (focus!=null) { Form.Element.focus(focus); } | |
30 |
|
|
30 | Element.scrollTo(id); | |
31 | } |
|
31 | } | |
32 |
|
32 | |||
33 | function toggleRowGroup(el) { |
|
33 | function toggleRowGroup(el) { | |
34 |
|
|
34 | var tr = Element.up(el, 'tr'); | |
35 |
|
|
35 | var n = Element.next(tr); | |
36 |
|
|
36 | tr.toggleClassName('open'); | |
37 |
|
|
37 | while (n != undefined && !n.hasClassName('group')) { | |
38 |
|
|
38 | Element.toggle(n); | |
39 |
|
|
39 | n = Element.next(n); | |
40 | } |
|
40 | } | |
41 | } |
|
41 | } | |
42 |
|
42 | |||
43 | function collapseAllRowGroups(el) { |
|
43 | function collapseAllRowGroups(el) { | |
@@ -63,7 +63,7 function expandAllRowGroups(el) { | |||||
63 | } |
|
63 | } | |
64 |
|
64 | |||
65 | function toggleAllRowGroups(el) { |
|
65 | function toggleAllRowGroups(el) { | |
66 |
|
|
66 | var tr = Element.up(el, 'tr'); | |
67 | if (tr.hasClassName('open')) { |
|
67 | if (tr.hasClassName('open')) { | |
68 | collapseAllRowGroups(el); |
|
68 | collapseAllRowGroups(el); | |
69 | } else { |
|
69 | } else { | |
@@ -72,15 +72,15 function toggleAllRowGroups(el) { | |||||
72 | } |
|
72 | } | |
73 |
|
73 | |||
74 | function toggleFieldset(el) { |
|
74 | function toggleFieldset(el) { | |
75 |
|
|
75 | var fieldset = Element.up(el, 'fieldset'); | |
76 |
|
|
76 | fieldset.toggleClassName('collapsed'); | |
77 |
|
|
77 | Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2}); | |
78 | } |
|
78 | } | |
79 |
|
79 | |||
80 | function hideFieldset(el) { |
|
80 | function hideFieldset(el) { | |
81 |
|
|
81 | var fieldset = Element.up(el, 'fieldset'); | |
82 |
|
|
82 | fieldset.toggleClassName('collapsed'); | |
83 |
|
|
83 | fieldset.down('div').hide(); | |
84 | } |
|
84 | } | |
85 |
|
85 | |||
86 | function add_filter() { |
|
86 | function add_filter() { | |
@@ -196,12 +196,12 function addFileField() { | |||||
196 |
|
196 | |||
197 | function removeFileField(el) { |
|
197 | function removeFileField(el) { | |
198 | var fields = $('attachments_fields'); |
|
198 | var fields = $('attachments_fields'); | |
199 |
|
|
199 | var s = Element.up(el, 'span'); | |
200 |
|
|
200 | if (fields.childElements().length > 1) { | |
201 |
|
|
201 | s.remove(); | |
202 |
|
|
202 | } else { | |
203 |
|
|
203 | s.update(s.innerHTML); | |
204 | } |
|
204 | } | |
205 | } |
|
205 | } | |
206 |
|
206 | |||
207 | function checkFileSize(el, maxSize, message) { |
|
207 | function checkFileSize(el, maxSize, message) { | |
@@ -217,66 +217,66 function checkFileSize(el, maxSize, message) { | |||||
217 | } |
|
217 | } | |
218 |
|
218 | |||
219 | function showTab(name) { |
|
219 | function showTab(name) { | |
220 |
|
|
220 | var f = $$('div#content .tab-content'); | |
221 |
|
|
221 | for(var i=0; i<f.length; i++){ | |
222 |
|
|
222 | Element.hide(f[i]); | |
223 | } |
|
223 | } | |
224 |
|
|
224 | var f = $$('div.tabs a'); | |
225 |
|
|
225 | for(var i=0; i<f.length; i++){ | |
226 |
|
|
226 | Element.removeClassName(f[i], "selected"); | |
227 | } |
|
227 | } | |
228 |
|
|
228 | Element.show('tab-content-' + name); | |
229 |
|
|
229 | Element.addClassName('tab-' + name, "selected"); | |
230 |
|
|
230 | return false; | |
231 | } |
|
231 | } | |
232 |
|
232 | |||
233 | function moveTabRight(el) { |
|
233 | function moveTabRight(el) { | |
234 |
|
|
234 | var lis = Element.up(el, 'div.tabs').down('ul').childElements(); | |
235 |
|
|
235 | var tabsWidth = 0; | |
236 |
|
|
236 | var i; | |
237 |
|
|
237 | for (i=0; i<lis.length; i++) { | |
238 |
|
|
238 | if (lis[i].visible()) { | |
239 |
|
|
239 | tabsWidth += lis[i].getWidth() + 6; | |
240 | } |
|
240 | } | |
241 | } |
|
241 | } | |
242 |
|
|
242 | if (tabsWidth < Element.up(el, 'div.tabs').getWidth() - 60) { | |
243 |
|
|
243 | return; | |
244 | } |
|
244 | } | |
245 |
|
|
245 | i=0; | |
246 |
|
|
246 | while (i<lis.length && !lis[i].visible()) { | |
247 | i++; |
|
247 | i++; | |
248 | } |
|
248 | } | |
249 |
|
|
249 | lis[i].hide(); | |
250 | } |
|
250 | } | |
251 |
|
251 | |||
252 | function moveTabLeft(el) { |
|
252 | function moveTabLeft(el) { | |
253 |
|
|
253 | var lis = Element.up(el, 'div.tabs').down('ul').childElements(); | |
254 |
|
|
254 | var i = 0; | |
255 |
|
|
255 | while (i<lis.length && !lis[i].visible()) { | |
256 | i++; |
|
256 | i++; | |
257 | } |
|
257 | } | |
258 |
|
|
258 | if (i>0) { | |
259 |
|
|
259 | lis[i-1].show(); | |
260 | } |
|
260 | } | |
261 | } |
|
261 | } | |
262 |
|
262 | |||
263 | function displayTabsButtons() { |
|
263 | function displayTabsButtons() { | |
264 |
|
|
264 | var lis; | |
265 |
|
|
265 | var tabsWidth = 0; | |
266 |
|
|
266 | var i; | |
267 |
|
|
267 | $$('div.tabs').each(function(el) { | |
268 |
|
|
268 | lis = el.down('ul').childElements(); | |
269 |
|
|
269 | for (i=0; i<lis.length; i++) { | |
270 |
|
|
270 | if (lis[i].visible()) { | |
271 |
|
|
271 | tabsWidth += lis[i].getWidth() + 6; | |
272 | } |
|
272 | } | |
273 | } |
|
273 | } | |
274 |
|
|
274 | if ((tabsWidth < el.getWidth() - 60) && (lis[0].visible())) { | |
275 |
|
|
275 | el.down('div.tabs-buttons').hide(); | |
276 |
|
|
276 | } else { | |
277 |
|
|
277 | el.down('div.tabs-buttons').show(); | |
278 | } |
|
278 | } | |
279 |
|
|
279 | }); | |
280 | } |
|
280 | } | |
281 |
|
281 | |||
282 | function setPredecessorFieldsVisibility() { |
|
282 | function setPredecessorFieldsVisibility() { | |
@@ -298,7 +298,7 function promptToRemote(text, param, url) { | |||||
298 |
|
298 | |||
299 | function showModal(id, width) { |
|
299 | function showModal(id, width) { | |
300 | el = $(id); |
|
300 | el = $(id); | |
301 |
|
|
301 | if (el == undefined || el.visible()) {return;} | |
302 | var h = $$('body')[0].getHeight(); |
|
302 | var h = $$('body')[0].getHeight(); | |
303 | var d = document.createElement("div"); |
|
303 | var d = document.createElement("div"); | |
304 | d.id = 'modalbg'; |
|
304 | d.id = 'modalbg'; | |
@@ -307,44 +307,44 function showModal(id, width) { | |||||
307 | $('modalbg').show(); |
|
307 | $('modalbg').show(); | |
308 |
|
308 | |||
309 | var pageWidth = document.viewport.getWidth(); |
|
309 | var pageWidth = document.viewport.getWidth(); | |
310 |
|
|
310 | if (width) { | |
311 |
|
|
311 | el.setStyle({'width': width}); | |
312 | } |
|
312 | } | |
313 |
|
|
313 | el.setStyle({'left': (((pageWidth - el.getWidth())/2 *100) / pageWidth) + '%'}); | |
314 | el.addClassName('modal'); |
|
314 | el.addClassName('modal'); | |
315 |
|
|
315 | el.show(); | |
316 |
|
316 | |||
317 | var submit = el.down("input[type=submit]"); |
|
317 | var submit = el.down("input[type=submit]"); | |
318 |
|
|
318 | if (submit) { | |
319 |
|
|
319 | submit.focus(); | |
320 | } |
|
320 | } | |
321 | } |
|
321 | } | |
322 |
|
322 | |||
323 | function hideModal(el) { |
|
323 | function hideModal(el) { | |
324 | var modal = Element.up(el, 'div.modal'); |
|
324 | var modal = Element.up(el, 'div.modal'); | |
325 |
|
|
325 | if (modal) { | |
326 |
|
|
326 | modal.hide(); | |
327 | } |
|
327 | } | |
328 |
|
|
328 | var bg = $('modalbg'); | |
329 |
|
|
329 | if (bg) { | |
330 |
|
|
330 | bg.remove(); | |
331 | } |
|
331 | } | |
332 | } |
|
332 | } | |
333 |
|
333 | |||
334 | function collapseScmEntry(id) { |
|
334 | function collapseScmEntry(id) { | |
335 |
|
|
335 | var els = document.getElementsByClassName(id, 'browser'); | |
336 |
|
|
336 | for (var i = 0; i < els.length; i++) { | |
337 |
|
|
337 | if (els[i].hasClassName('open')) { | |
338 |
|
|
338 | collapseScmEntry(els[i].id); | |
339 |
|
|
339 | } | |
340 |
|
|
340 | Element.hide(els[i]); | |
341 |
|
|
341 | } | |
342 |
|
|
342 | $(id).removeClassName('open'); | |
343 | } |
|
343 | } | |
344 |
|
344 | |||
345 | function expandScmEntry(id) { |
|
345 | function expandScmEntry(id) { | |
346 | var els = document.getElementsByClassName(id, 'browser'); |
|
346 | var els = document.getElementsByClassName(id, 'browser'); | |
347 |
|
|
347 | for (var i = 0; i < els.length; i++) { | |
348 | Element.show(els[i]); |
|
348 | Element.show(els[i]); | |
349 | if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) { |
|
349 | if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) { | |
350 | expandScmEntry(els[i].id); |
|
350 | expandScmEntry(els[i].id); | |
@@ -378,12 +378,12 function scmEntryLoaded(id) { | |||||
378 | } |
|
378 | } | |
379 |
|
379 | |||
380 | function randomKey(size) { |
|
380 | function randomKey(size) { | |
381 |
|
|
381 | var chars = new Array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'); | |
382 |
|
|
382 | var key = ''; | |
383 |
|
|
383 | for (i = 0; i < size; i++) { | |
384 |
|
|
384 | key += chars[Math.floor(Math.random() * chars.length)]; | |
385 | } |
|
385 | } | |
386 |
|
|
386 | return key; | |
387 | } |
|
387 | } | |
388 |
|
388 | |||
389 | function observeParentIssueField(url) { |
|
389 | function observeParentIssueField(url) { | |
@@ -437,43 +437,43 function observeProjectModules() { | |||||
437 | */ |
|
437 | */ | |
438 |
|
438 | |||
439 | var WarnLeavingUnsaved = Class.create({ |
|
439 | var WarnLeavingUnsaved = Class.create({ | |
440 |
|
|
440 | observedForms: false, | |
441 |
|
|
441 | observedElements: false, | |
442 |
|
|
442 | changedForms: false, | |
443 |
|
|
443 | message: null, | |
444 |
|
444 | |||
445 |
|
|
445 | initialize: function(message){ | |
446 |
|
|
446 | this.observedForms = $$('form'); | |
447 |
|
|
447 | this.observedElements = $$('textarea'); | |
448 |
|
|
448 | this.message = message; | |
449 |
|
449 | |||
450 |
|
|
450 | this.observedElements.each(this.observeChange.bind(this)); | |
451 |
|
|
451 | this.observedForms.each(this.submitAction.bind(this)); | |
452 |
|
452 | |||
453 |
|
|
453 | window.onbeforeunload = this.unload.bind(this); | |
454 | }, |
|
454 | }, | |
455 |
|
455 | |||
456 |
|
|
456 | unload: function(){ | |
457 |
|
|
457 | this.observedElements.each(function(el) {el.blur();}) | |
458 |
|
|
458 | if(this.changedForms) | |
459 | return this.message; |
|
459 | return this.message; | |
460 | }, |
|
460 | }, | |
461 |
|
461 | |||
462 |
|
|
462 | setChanged: function(){ | |
463 | this.changedForms = true; |
|
463 | this.changedForms = true; | |
464 | }, |
|
464 | }, | |
465 |
|
465 | |||
466 |
|
|
466 | setUnchanged: function(){ | |
467 | this.changedForms = false; |
|
467 | this.changedForms = false; | |
468 | }, |
|
468 | }, | |
469 |
|
469 | |||
470 |
|
|
470 | observeChange: function(element){ | |
471 | element.observe('change',this.setChanged.bindAsEventListener(this)); |
|
471 | element.observe('change',this.setChanged.bindAsEventListener(this)); | |
472 | }, |
|
472 | }, | |
473 |
|
473 | |||
474 |
|
|
474 | submitAction: function(element){ | |
475 | element.observe('submit',this.setUnchanged.bindAsEventListener(this)); |
|
475 | element.observe('submit',this.setUnchanged.bindAsEventListener(this)); | |
476 | } |
|
476 | } | |
477 | }); |
|
477 | }); | |
478 |
|
478 | |||
479 | /* |
|
479 | /* | |
@@ -510,8 +510,8 Ajax.Responders.register({ | |||||
510 |
|
510 | |||
511 | function hideOnLoad() { |
|
511 | function hideOnLoad() { | |
512 | $$('.hol').each(function(el) { |
|
512 | $$('.hol').each(function(el) { | |
513 |
|
|
513 | el.hide(); | |
514 |
|
|
514 | }); | |
515 | } |
|
515 | } | |
516 |
|
516 | |||
517 | Event.observe(window, 'load', hideOnLoad); |
|
517 | Event.observe(window, 'load', hideOnLoad); |
General Comments 0
You need to be logged in to leave comments.
Login now