| [ Index ] |
PHP Cross Reference of MantisBT |
[Summary view] [Print] [Text view]
1 /* 2 # Mantis - a php based bugtracking system 3 4 # Copyright (C) 2000 - 2002 Kenzaburo Ito - kenito@300baud.org 5 # Copyright (C) 2002 - 2011 MantisBT Team - mantisbt-dev@lists.sourceforge.net 6 7 # Mantis is free software: you can redistribute it and/or modify 8 # it under the terms of the GNU General Public License as published by 9 # the Free Software Foundation, either version 2 of the License, or 10 # (at your option) any later version. 11 # 12 # Mantis is distributed in the hope that it will be useful, 13 # but WITHOUT ANY WARRANTY; without even the implied warranty of 14 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 # GNU General Public License for more details. 16 # 17 # You should have received a copy of the GNU General Public License 18 # along with Mantis. If not, see <http://www.gnu.org/licenses/>. 19 */ 20 21 /* 22 * Collapsible element functions 23 */ 24 var g_collapse_clear = 1; 25 26 // global code to determine how to set visibility 27 var a = navigator.userAgent.indexOf("MSIE"); 28 var style_display; 29 30 if (a!= -1) { 31 style_display = 'block'; 32 } else { 33 style_display = 'table-row'; 34 } 35 style_display = 'block'; 36 37 $(document).ready( function() { 38 $('.collapse-open').show(); 39 $('.collapse-closed').hide(); 40 $('.collapse-link').click( function(event) { 41 event.preventDefault(); 42 var id = $(this).attr('id'); 43 var t_pos = id.indexOf('_closed_link' ); 44 if( t_pos == -1 ) { 45 t_pos = id.indexOf('_open_link' ); 46 } 47 var t_div = id.substring(0, t_pos ); 48 ToggleDiv( t_div ); 49 }); 50 51 $('input[type=text].autocomplete').autocomplete({ 52 source: function(request, callback) { 53 var fieldName = $(this).attr('element').attr('id'); 54 var postData = {}; 55 postData['entrypoint']= fieldName + '_get_with_prefix'; 56 postData[fieldName] = request.term; 57 $.getJSON('xmlhttprequest.php', postData, function(data) { 58 var results = []; 59 $.each(data, function(i, value) { 60 var item = {}; 61 item.label = $('<div/>').text(value).html(); 62 item.value = value; 63 results.push(item); 64 }); 65 callback(results); 66 }); 67 } 68 }); 69 70 $('a.dynamic-filter-expander').click(function(event) { 71 event.preventDefault(); 72 var fieldID = $(this).attr('id'); 73 var targetID = fieldID + '_target'; 74 var viewType = $('#filters_form_open input[name=view_type]').val(); 75 $('#' + targetID).html('<span class="dynamic-filter-loading">' + translations['loading'] + "</span>"); 76 $.ajax({ 77 url: 'return_dynamic_filters.php', 78 data: 'view_type=' + viewType + '&filter_target=' + fieldID, 79 cache: false, 80 context: $('#' + targetID), 81 success: function(html) { 82 $(this).html(html); 83 } 84 }); 85 }); 86 87 $('input.autofocus:first, select.autofocus:first, textarea.autofocus:first').focus(); 88 89 /* 90 * jQuery bug http://bugs.jquery.com/ticket/4283 prevents the check_all 91 * functionality from working when the Content-Type is set to 92 * application/xhtml+xml. 93 */ 94 var checkAllSelectors = ''; 95 $(':checkbox.check_all').each(function() { 96 var baseFieldName = $(this).attr('name').replace(/_all$/, ''); 97 if (checkAllSelectors.length > 0) { 98 checkAllSelectors += ', '; 99 } 100 checkAllSelectors += ':checkbox[name="' + baseFieldName + '[]"]'; 101 }); 102 if (checkAllSelectors.length > 0) { 103 $(checkAllSelectors).click(function() { 104 var fieldName = $(this).attr('name').replace(/\[\]/g, ''); 105 var checkedCount = $(this).closest('form').find(':checkbox[name="' + fieldName + '[]"]:checked').length; 106 var totalCount = $(this).closest('form').find(':checkbox[name="' + fieldName + '[]"]').length; 107 var allSelected = checkedCount == totalCount; 108 $(this).closest('form').find(':checkbox[name=' + fieldName + '_all]').attr('checked', allSelected); 109 }); 110 $(':checkbox.check_all').click(function() { 111 var baseFieldName = $(this).attr('name').replace(/_all$/, ''); 112 $(this).closest('form').find(':checkbox[name="' + baseFieldName + '[]"]').attr('checked', $(this).is(':checked')); 113 }); 114 } 115 116 var stopwatch = { 117 timerID: null, 118 elapsedTime: 0, 119 tick: function() { 120 this.elapsedTime += 1000; 121 var seconds = Math.floor(this.elapsedTime / 1000) % 60; 122 var minutes = Math.floor(this.elapsedTime / 60000) % 60; 123 var hours = Math.floor(this.elapsedTime / 3600000) % 60; 124 if (seconds < 10) { 125 seconds = '0' + seconds; 126 } 127 if (minutes < 10) { 128 minutes = '0' + minutes; 129 } 130 if (hours < 10) { 131 hours = '0' + hours; 132 } 133 $('input[type=text].stopwatch_time').attr('value', hours + ':' + minutes + ':' + seconds); 134 this.start(); 135 }, 136 reset: function() { 137 this.stop(); 138 this.elapsedTime = 0; 139 $('input[type=text].stopwatch_time').attr('value', '00:00:00'); 140 }, 141 start: function() { 142 this.stop(); 143 var self = this; 144 this.timerID = window.setTimeout(function() { 145 self.tick(); 146 }, 1000); 147 }, 148 stop: function() { 149 if (typeof this.timerID == 'number') { 150 window.clearTimeout(this.timerID); 151 delete this.timerID; 152 } 153 } 154 } 155 $('input[type=button].stopwatch_toggle').click(function() { 156 if (stopwatch.elapsedTime == 0) { 157 stopwatch.stop(); 158 stopwatch.start(); 159 $('input[type=button].stopwatch_toggle').attr('value', translations['time_tracking_stopwatch_stop']); 160 } else if (typeof stopwatch.timerID == 'number') { 161 stopwatch.stop(); 162 $('input[type=button].stopwatch_toggle').attr('value', translations['time_tracking_stopwatch_start']); 163 } else { 164 stopwatch.start(); 165 $('input[type=button].stopwatch_toggle').attr('value', translations['time_tracking_stopwatch_stop']); 166 } 167 }); 168 $('input[type=button].stopwatch_reset').click(function() { 169 stopwatch.reset(); 170 $('input[type=button].stopwatch_toggle').attr('value', translations['time_tracking_stopwatch_start']); 171 }); 172 173 $('input[type=text].datetime').each(function(index, element) { 174 $(this).after('<input type="image" class="button datetime" id="' + element.id + '_datetime_button' + '" src="' + config['icon_path'] + 'calendar-img.gif" />'); 175 Calendar.setup({ 176 inputField: element.id, 177 timeFormat: 24, 178 showsTime: true, 179 ifFormat: config['calendar_js_date_format'], 180 button: element.id + '_datetime_button' 181 }); 182 }); 183 184 185 $('.bug-jump').find('[name=bug_id]').focus( function() { 186 var bug_label = $('.bug-jump-form').find('[name=bug_label]').val(); 187 if( $(this).val() == bug_label ) { 188 $(this).val(''); 189 $(this).removeClass('field-default'); 190 } 191 }); 192 $('.bug-jump').find('[name=bug_id]').blur( function() { 193 var bug_label = $('.bug-jump-form').find('[name=bug_label]').val(); 194 if( $(this).val() == '' ) { 195 $(this).val(bug_label); 196 $(this).addClass('field-default'); 197 } 198 }); 199 $('[name=source_query_id]').change( function() { 200 $(this).parent().submit(); 201 }); 202 $('#project-selector').children('[name=project_id]').change( function() { 203 $('#form-set-project').submit(); 204 }); 205 $('#project-selector').children('.button').hide(); 206 setBugLabel(); 207 208 $('input[type=checkbox]#use_date_filters').live('click', function() { 209 if (!$(this).is(':checked')) { 210 $('div.filter-box select[name=start_year]').attr('disabled', 'disabled'); 211 $('div.filter-box select[name=start_month]').attr('disabled', 'disabled'); 212 $('div.filter-box select[name=start_day]').attr('disabled', 'disabled'); 213 $('div.filter-box select[name=end_year]').attr('disabled', 'disabled'); 214 $('div.filter-box select[name=end_month]').attr('disabled', 'disabled'); 215 $('div.filter-box select[name=end_day]').attr('disabled', 'disabled'); 216 } else { 217 $('div.filter-box select[name=start_year]').removeAttr('disabled'); 218 $('div.filter-box select[name=start_month]').removeAttr('disabled'); 219 $('div.filter-box select[name=start_day]').removeAttr('disabled'); 220 $('div.filter-box select[name=end_year]').removeAttr('disabled'); 221 $('div.filter-box select[name=end_month]').removeAttr('disabled'); 222 $('div.filter-box select[name=end_day]').removeAttr('disabled'); 223 } 224 }); 225 226 /* For Period.php bundled with the core MantisGraph plugin */ 227 $('#dates > input[type=image].datetime').hide(); 228 $('#period_menu > select#interval').change(function() { 229 if ($(this).val() == 10) { 230 $('#dates > input[type=text].datetime').removeAttr('disabled'); 231 $('#dates > input[type=image].datetime').show(); 232 } else { 233 $('#dates > input[type=text].datetime').attr('disabled', 'disabled'); 234 $('#dates > input[type=image].datetime').hide(); 235 } 236 }); 237 238 $('#tag_select').live('change', function() { 239 var tagSeparator = $('#tag_separator').val(); 240 var currentTagString = $('#tag_string').val(); 241 var newTagOptionID = $(this).val(); 242 var newTag = $('#tag_select option[value=' + newTagOptionID + ']').text(); 243 if (currentTagString.indexOf(newTag) == -1) { 244 if (currentTagString.length > 0) { 245 $('#tag_string').val(currentTagString + tagSeparator + newTag); 246 } else { 247 $('#tag_string').val(newTag); 248 } 249 } 250 $(this).val(0); 251 }); 252 }); 253 254 function setBugLabel() { 255 var bug_label = $('.bug-jump-form').find('[name=bug_label]').val(); 256 var field = $('.bug-jump').find('[name=bug_id]'); 257 if( field.val() == '' ) { 258 field.val(bug_label); 259 field.addClass('field-default'); 260 } 261 } 262 263 /* 264 * String manipulation 265 */ 266 function Trim( p_string ) { 267 if (typeof p_string != "string") { 268 return p_string; 269 } 270 271 var t_string = p_string; 272 var t_ch = ''; 273 274 // Trim beginning spaces 275 276 t_ch = t_string.substring( 0, 1 ); 277 while ( t_ch == " " ) { 278 t_string = t_string.substring( 1, t_string.length ); 279 t_ch = t_string.substring( 0, 1 ); 280 } 281 282 // Trim trailing spaces 283 284 t_ch = t_string.substring( t_string.length-1, t_string.length ); 285 while ( t_ch == " " ) { 286 t_string = t_string.substring( 0, t_string.length-1 ); 287 t_ch = t_string.substring( t_string.length-1, t_string.length ); 288 } 289 290 return t_string; 291 } 292 293 /* 294 * Cookie functions 295 */ 296 function GetCookie( p_cookie ) { 297 var t_cookie_name = "MANTIS_" + p_cookie; 298 var t_cookies = document.cookie; 299 300 t_cookies = t_cookies.split( ";" ); 301 302 var i = 0; 303 while( i < t_cookies.length ) { 304 var t_cookie = t_cookies[ i ]; 305 306 t_cookie = t_cookie.split( "=" ); 307 308 if ( Trim( t_cookie[ 0 ] ) == t_cookie_name ) { 309 return( t_cookie[ 1 ] ); 310 } 311 i++; 312 } 313 314 return -1; 315 } 316 317 function SetCookie( p_cookie, p_value ) { 318 var t_cookie_name = "MANTIS_" + p_cookie; 319 var t_expires = new Date(); 320 321 t_expires.setTime( t_expires.getTime() + (365 * 24 * 60 * 60 * 1000)); 322 323 document.cookie = t_cookie_name + "=" + p_value + "; expires=" + t_expires.toUTCString() + ";"; 324 } 325 326 function ToggleDiv( p_div ) { 327 t_open_div = '#' + p_div + "_open"; 328 t_closed_div = '#' + p_div + "_closed"; 329 330 t_cookie = GetCookie( "collapse_settings" ); 331 if ( 1 == g_collapse_clear ) { 332 t_cookie = ""; 333 g_collapse_clear = 0; 334 } 335 var t_open_display = $(t_open_div).css('display'); 336 $(t_open_div).toggle(); 337 338 if( $(t_closed_div).length ) { 339 $(t_closed_div).toggle(); 340 } 341 342 if ( t_open_display == "none" ) { 343 t_cookie = t_cookie + "|" + p_div + ",1"; 344 } else { 345 t_cookie = t_cookie + "|" + p_div + ",0"; 346 } 347 348 SetCookie( "collapse_settings", t_cookie ); 349 } 350 351 function setDisplay(idTag, state) 352 { 353 if(!document.getElementById(idTag)) alert('SetDisplay(): id '+idTag+' is empty'); 354 // change display visibility 355 if ( state != 0 ) { 356 document.getElementById(idTag).style.display = style_display; 357 } else { 358 document.getElementById(idTag).style.display = 'none'; 359 } 360 } 361 362 function toggleDisplay(idTag) 363 { 364 setDisplay( idTag, (document.getElementById(idTag).style.display == 'none')?1:0 ); 365 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated: Thu Jul 28 15:48:31 2011 | Cross-referenced by PHPXref 0.7 |