annotate public/javascripts/application.js @ 160:7eb2194ee428 feature_55

. institution field correctly handled in the user edit and show forms, and in the register view;
author luisf
date Fri, 28 Jan 2011 18:44:56 +0000
parents 94944d00e43c
children bad82329a115
rev   line source
Chris@0 1 /* redMine - project management software
Chris@0 2 Copyright (C) 2006-2008 Jean-Philippe Lang */
Chris@0 3
Chris@0 4 function checkAll (id, checked) {
Chris@0 5 var els = Element.descendants(id);
Chris@0 6 for (var i = 0; i < els.length; i++) {
Chris@0 7 if (els[i].disabled==false) {
Chris@0 8 els[i].checked = checked;
Chris@0 9 }
Chris@0 10 }
Chris@0 11 }
Chris@0 12
Chris@0 13 function toggleCheckboxesBySelector(selector) {
Chris@0 14 boxes = $$(selector);
Chris@0 15 var all_checked = true;
Chris@0 16 for (i = 0; i < boxes.length; i++) { if (boxes[i].checked == false) { all_checked = false; } }
Chris@0 17 for (i = 0; i < boxes.length; i++) { boxes[i].checked = !all_checked; }
Chris@0 18 }
Chris@0 19
chris@37 20 function setCheckboxesBySelector(checked, selector) {
chris@37 21 var boxes = $$(selector);
chris@37 22 boxes.each(function(ele) {
chris@37 23 ele.checked = checked;
chris@37 24 });
chris@37 25 }
chris@37 26
Chris@0 27 function showAndScrollTo(id, focus) {
Chris@0 28 Element.show(id);
Chris@0 29 if (focus!=null) { Form.Element.focus(focus); }
Chris@0 30 Element.scrollTo(id);
Chris@0 31 }
Chris@0 32
Chris@0 33 function toggleRowGroup(el) {
Chris@0 34 var tr = Element.up(el, 'tr');
Chris@0 35 var n = Element.next(tr);
Chris@0 36 tr.toggleClassName('open');
Chris@0 37 while (n != undefined && !n.hasClassName('group')) {
Chris@0 38 Element.toggle(n);
Chris@0 39 n = Element.next(n);
Chris@0 40 }
Chris@0 41 }
Chris@0 42
Chris@0 43 function toggleFieldset(el) {
Chris@0 44 var fieldset = Element.up(el, 'fieldset');
Chris@0 45 fieldset.toggleClassName('collapsed');
Chris@0 46 Effect.toggle(fieldset.down('div'), 'slide', {duration:0.2});
Chris@0 47 }
Chris@0 48
Chris@0 49 var fileFieldCount = 1;
Chris@0 50
Chris@0 51 function addFileField() {
Chris@0 52 if (fileFieldCount >= 10) return false
Chris@0 53 fileFieldCount++;
Chris@0 54 var f = document.createElement("input");
Chris@0 55 f.type = "file";
Chris@0 56 f.name = "attachments[" + fileFieldCount + "][file]";
Chris@0 57 f.size = 30;
Chris@0 58 var d = document.createElement("input");
Chris@0 59 d.type = "text";
Chris@0 60 d.name = "attachments[" + fileFieldCount + "][description]";
Chris@0 61 d.size = 60;
Chris@1 62 var dLabel = new Element('label');
Chris@0 63 dLabel.addClassName('inline');
Chris@0 64 // Pulls the languge value used for Optional Description
Chris@0 65 dLabel.update($('attachment_description_label_content').innerHTML)
Chris@0 66 p = document.getElementById("attachments_fields");
Chris@0 67 p.appendChild(document.createElement("br"));
Chris@0 68 p.appendChild(f);
Chris@0 69 p.appendChild(dLabel);
Chris@0 70 dLabel.appendChild(d);
Chris@0 71
Chris@0 72 }
Chris@0 73
Chris@0 74 function showTab(name) {
Chris@0 75 var f = $$('div#content .tab-content');
Chris@0 76 for(var i=0; i<f.length; i++){
Chris@0 77 Element.hide(f[i]);
Chris@0 78 }
Chris@0 79 var f = $$('div.tabs a');
Chris@0 80 for(var i=0; i<f.length; i++){
Chris@0 81 Element.removeClassName(f[i], "selected");
Chris@0 82 }
Chris@0 83 Element.show('tab-content-' + name);
Chris@0 84 Element.addClassName('tab-' + name, "selected");
Chris@0 85 return false;
Chris@0 86 }
Chris@0 87
Chris@0 88 function moveTabRight(el) {
Chris@0 89 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
Chris@0 90 var tabsWidth = 0;
Chris@0 91 var i;
Chris@0 92 for (i=0; i<lis.length; i++) {
Chris@0 93 if (lis[i].visible()) {
Chris@0 94 tabsWidth += lis[i].getWidth() + 6;
Chris@0 95 }
Chris@0 96 }
Chris@0 97 if (tabsWidth < Element.up(el, 'div.tabs').getWidth() - 60) {
Chris@0 98 return;
Chris@0 99 }
Chris@0 100 i=0;
Chris@0 101 while (i<lis.length && !lis[i].visible()) {
Chris@0 102 i++;
Chris@0 103 }
Chris@0 104 lis[i].hide();
Chris@0 105 }
Chris@0 106
Chris@0 107 function moveTabLeft(el) {
Chris@0 108 var lis = Element.up(el, 'div.tabs').down('ul').childElements();
Chris@0 109 var i = 0;
Chris@0 110 while (i<lis.length && !lis[i].visible()) {
Chris@0 111 i++;
Chris@0 112 }
Chris@0 113 if (i>0) {
Chris@0 114 lis[i-1].show();
Chris@0 115 }
Chris@0 116 }
Chris@0 117
Chris@0 118 function displayTabsButtons() {
Chris@0 119 var lis;
Chris@0 120 var tabsWidth = 0;
Chris@0 121 var i;
Chris@0 122 $$('div.tabs').each(function(el) {
Chris@0 123 lis = el.down('ul').childElements();
Chris@0 124 for (i=0; i<lis.length; i++) {
Chris@0 125 if (lis[i].visible()) {
Chris@0 126 tabsWidth += lis[i].getWidth() + 6;
Chris@0 127 }
Chris@0 128 }
Chris@0 129 if ((tabsWidth < el.getWidth() - 60) && (lis[0].visible())) {
Chris@0 130 el.down('div.tabs-buttons').hide();
Chris@0 131 } else {
Chris@0 132 el.down('div.tabs-buttons').show();
Chris@0 133 }
Chris@0 134 });
Chris@0 135 }
Chris@0 136
Chris@0 137 function setPredecessorFieldsVisibility() {
Chris@0 138 relationType = $('relation_relation_type');
Chris@0 139 if (relationType && (relationType.value == "precedes" || relationType.value == "follows")) {
Chris@0 140 Element.show('predecessor_fields');
Chris@0 141 } else {
Chris@0 142 Element.hide('predecessor_fields');
Chris@0 143 }
Chris@0 144 }
Chris@0 145
Chris@0 146 function promptToRemote(text, param, url) {
Chris@0 147 value = prompt(text + ':');
Chris@0 148 if (value) {
Chris@0 149 new Ajax.Request(url + '?' + param + '=' + encodeURIComponent(value), {asynchronous:true, evalScripts:true});
Chris@0 150 return false;
Chris@0 151 }
Chris@0 152 }
Chris@0 153
Chris@0 154 function collapseScmEntry(id) {
Chris@0 155 var els = document.getElementsByClassName(id, 'browser');
Chris@0 156 for (var i = 0; i < els.length; i++) {
Chris@0 157 if (els[i].hasClassName('open')) {
Chris@0 158 collapseScmEntry(els[i].id);
Chris@0 159 }
Chris@0 160 Element.hide(els[i]);
Chris@0 161 }
Chris@0 162 $(id).removeClassName('open');
Chris@0 163 }
Chris@0 164
Chris@0 165 function expandScmEntry(id) {
Chris@0 166 var els = document.getElementsByClassName(id, 'browser');
Chris@0 167 for (var i = 0; i < els.length; i++) {
Chris@0 168 Element.show(els[i]);
Chris@0 169 if (els[i].hasClassName('loaded') && !els[i].hasClassName('collapsed')) {
Chris@0 170 expandScmEntry(els[i].id);
Chris@0 171 }
Chris@0 172 }
Chris@0 173 $(id).addClassName('open');
Chris@0 174 }
Chris@0 175
Chris@0 176 function scmEntryClick(id) {
Chris@0 177 el = $(id);
Chris@0 178 if (el.hasClassName('open')) {
Chris@0 179 collapseScmEntry(id);
Chris@0 180 el.addClassName('collapsed');
Chris@0 181 return false;
Chris@0 182 } else if (el.hasClassName('loaded')) {
Chris@0 183 expandScmEntry(id);
Chris@0 184 el.removeClassName('collapsed');
Chris@0 185 return false;
Chris@0 186 }
Chris@0 187 if (el.hasClassName('loading')) {
Chris@0 188 return false;
Chris@0 189 }
Chris@0 190 el.addClassName('loading');
Chris@0 191 return true;
Chris@0 192 }
Chris@0 193
Chris@0 194 function scmEntryLoaded(id) {
Chris@0 195 Element.addClassName(id, 'open');
Chris@0 196 Element.addClassName(id, 'loaded');
Chris@0 197 Element.removeClassName(id, 'loading');
Chris@0 198 }
Chris@0 199
Chris@0 200 function randomKey(size) {
Chris@0 201 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');
Chris@0 202 var key = '';
Chris@0 203 for (i = 0; i < size; i++) {
Chris@0 204 key += chars[Math.floor(Math.random() * chars.length)];
Chris@0 205 }
Chris@0 206 return key;
Chris@0 207 }
Chris@0 208
Chris@0 209 function observeParentIssueField(url) {
Chris@0 210 new Ajax.Autocompleter('issue_parent_issue_id',
Chris@0 211 'parent_issue_candidates',
Chris@0 212 url,
Chris@0 213 { minChars: 3,
Chris@0 214 frequency: 0.5,
Chris@0 215 paramName: 'q',
Chris@0 216 updateElement: function(value) {
Chris@0 217 document.getElementById('issue_parent_issue_id').value = value.id;
Chris@0 218 }});
Chris@0 219 }
Chris@0 220
Chris@0 221 /* shows and hides ajax indicator */
Chris@0 222 Ajax.Responders.register({
Chris@0 223 onCreate: function(){
Chris@0 224 if ($('ajax-indicator') && Ajax.activeRequestCount > 0) {
Chris@0 225 Element.show('ajax-indicator');
Chris@0 226 }
Chris@0 227 },
Chris@0 228 onComplete: function(){
Chris@0 229 if ($('ajax-indicator') && Ajax.activeRequestCount == 0) {
Chris@0 230 Element.hide('ajax-indicator');
Chris@0 231 }
Chris@0 232 }
Chris@0 233 });
Chris@0 234
Chris@0 235 function hideOnLoad() {
Chris@0 236 $$('.hol').each(function(el) {
Chris@0 237 el.hide();
Chris@0 238 });
Chris@0 239 }
Chris@0 240
Chris@0 241 Event.observe(window, 'load', hideOnLoad);
luisf@160 242
luisf@160 243
luisf@160 244 /* SSAMR specific functions */
luisf@160 245
luisf@160 246 /* institution related functions */
luisf@160 247 Event.observe(window, 'load',
luisf@160 248 function() {
luisf@160 249 if($('ssamr_user_details_institution_type_true').checked)
luisf@160 250 $('ssamr_user_details_other_institution').disable();
luisf@160 251 else if($('ssamr_user_details_institution_type_false').checked)
luisf@160 252 $('ssamr_user_details_institution_id').disable();
luisf@160 253 }
luisf@160 254 );
luisf@160 255
luisf@160 256
luisf@160 257 function enable_disable_institution_field(field){
luisf@160 258
luisf@160 259 // if($(field).enabled)
luisf@160 260 // field.disable();
luisf@160 261 // else
luisf@160 262 field.enable();
luisf@160 263
luisf@160 264 }
luisf@160 265
luisf@160 266
luisf@160 267
luisf@160 268