From: <gi...@ma...> - 2010-06-28 07:16:47
|
The branch, master has been updated via 0551d94bc409ba2245938ceaf32265616d9768f5 (commit) from b77ea9cd2333f1549eea03f020da574747a2a855 (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit 0551d94bc409ba2245938ceaf32265616d9768f5 Author: David Hicks <hic...@op...> Date: Mon Jun 28 16:57:21 2010 +1000 Issue #11826: jQuery-ise stopwatch and add JavaScript translation framework This commit furthers the goal of removing inline JavaScript from within the MantisBT codebase. The time tracking stopwatch has been converted to use jQuery removing the need to insert <script> tags outside the <head> element. A new JavaScript translations framework (javascript_translations.php) has been implemented that allows translation of strings for use in scripts. Scripts can now just use the new translations[] array where the keys match those used in the lang_get() function. For now it's necessary to define which strings need to be translated in javascript_translations.php. This is currently a very simple system as we don't have many strings that need translating. ----------------------------------------------------------------------- Summary of changes: bug_change_status_page.php | 4 +- bugnote_add_inc.php | 17 ++------ core/html_api.php | 2 +- javascript/dev/common.js | 59 +++++++++++++++++++++++++++++ javascript/dev/time_tracking_stopwatch.js | 43 --------------------- javascript/min/time_tracking_stopwatch.js | 1 - index.php => javascript_translations.php | 20 ++++----- 7 files changed, 76 insertions(+), 70 deletions(-) delete mode 100644 javascript/dev/time_tracking_stopwatch.js delete mode 100644 javascript/min/time_tracking_stopwatch.js copy index.php => javascript_translations.php (71%) ----------------------------------------------------------------------- commit 0551d94bc409ba2245938ceaf32265616d9768f5 Author: David Hicks <hic...@op...> Date: Mon Jun 28 16:57:21 2010 +1000 Issue #11826: jQuery-ise stopwatch and add JavaScript translation framework This commit furthers the goal of removing inline JavaScript from within the MantisBT codebase. The time tracking stopwatch has been converted to use jQuery removing the need to insert <script> tags outside the <head> element. A new JavaScript translations framework (javascript_translations.php) has been implemented that allows translation of strings for use in scripts. Scripts can now just use the new translations[] array where the keys match those used in the lang_get() function. For now it's necessary to define which strings need to be translated in javascript_translations.php. This is currently a very simple system as we don't have many strings that need translating. diff --git a/bug_change_status_page.php b/bug_change_status_page.php index d3c85e5..e28fbdf 100644 --- a/bug_change_status_page.php +++ b/bug_change_status_page.php @@ -349,10 +349,10 @@ if ( ( $t_resolved <= $f_new_status ) ) { <?php if ( access_has_bug_level( config_get( 'time_tracking_edit_threshold' ), $f_bug_id ) ) { ?> <tr <?php echo helper_alternate_class() ?>> <th class="category"> - <?php echo lang_get( 'time_tracking' ) ?> (HH:MM) + <?php echo lang_get( 'time_tracking' ) ?> </th> <td> - <input type="text" name="time_tracking" size="5" value="0:00" /> + <input type="text" name="time_tracking" size="5" value="hh:mm" /> </td> </tr> <?php } ?> diff --git a/bugnote_add_inc.php b/bugnote_add_inc.php index c33c862..3763a2a 100644 --- a/bugnote_add_inc.php +++ b/bugnote_add_inc.php @@ -100,22 +100,15 @@ require_api( 'lang_api.php' ); <?php if ( access_has_bug_level( config_get( 'time_tracking_edit_threshold' ), $f_bug_id ) ) { ?> <tr <?php echo helper_alternate_class() ?>> <th class="category"> - <?php echo lang_get( 'time_tracking' ) ?> (HH:MM) + <?php echo lang_get( 'time_tracking' ) ?> </th> <td> <?php if ( config_get( 'time_tracking_stopwatch' ) && config_get( 'use_javascript' ) ) { ?> - <script type="text/javascript"> - var time_tracking_stopwatch_lang_start = "<?php echo lang_get( 'time_tracking_stopwatch_start' ) ?>"; - var time_tracking_stopwatch_lang_stop = "<?php echo lang_get( 'time_tracking_stopwatch_stop' ) ?>"; - </script> - <?php - html_javascript_link( 'time_tracking_stopwatch.js' ); - ?> - <input type="text" name="time_tracking" size="5" value="00:00" /> - <input type="button" name="time_tracking_ssbutton" value="<?php echo lang_get( 'time_tracking_stopwatch_start' ) ?>" onclick="time_tracking_swstartstop()" /> - <input type="button" name="time_tracking_reset" value="<?php echo lang_get( 'time_tracking_stopwatch_reset' ) ?>" onclick="time_tracking_swreset()" /> + <input type="text" name="time_tracking" class="stopwatch_time" size="8" value="hh:mm:ss" /> + <input type="button" name="time_tracking_toggle" class="stopwatch_toggle" value="<?php echo lang_get( 'time_tracking_stopwatch_start' ) ?>" /> + <input type="button" name="time_tracking_reset" class="stopwatch_reset" value="<?php echo lang_get( 'time_tracking_stopwatch_reset' ) ?>" /> <?php } else { ?> - <input type="text" name="time_tracking" size="5" value="00:00" /> + <input type="text" name="time_tracking" size="5" value="hh:mm" /> <?php } ?> </td> </tr> diff --git a/core/html_api.php b/core/html_api.php index e2812dd..de03765 100644 --- a/core/html_api.php +++ b/core/html_api.php @@ -407,7 +407,7 @@ function html_meta_redirect( $p_url, $p_time = null, $p_sanitize = true ) { */ function html_head_javascript() { if( ON == config_get( 'use_javascript' ) ) { - echo '<script type="text/javascript">var loading_lang = "' . lang_get( 'loading' ) . '";</script>'; + echo '<script type="text/javascript" src="' . helper_mantis_url( 'javascript_translations.php' ) . '"></script>' . "\n"; html_javascript_link( 'ajax.js' ); html_javascript_link( 'jquery.js' ); html_javascript_link( 'jquery-ui.js' ); diff --git a/javascript/dev/common.js b/javascript/dev/common.js index c311b2e..4cf2906 100644 --- a/javascript/dev/common.js +++ b/javascript/dev/common.js @@ -76,6 +76,65 @@ $(document).ready( function() { }); } }); + + $('input.autofocus:first').focus(); + + var stopwatch = { + timerID: null, + elapsedTime: 0, + tick: function() { + this.elapsedTime += 1000; + var seconds = Math.floor(this.elapsedTime / 1000) % 60; + var minutes = Math.floor(this.elapsedTime / 60000) % 60; + var hours = Math.floor(this.elapsedTime / 3600000) % 60; + if (seconds < 10) { + seconds = '0' + seconds; + } + if (minutes < 10) { + minutes = '0' + minutes; + } + if (hours < 10) { + hours = '0' + hours; + } + $('input[type=text].stopwatch_time').attr('value', hours + ':' + minutes + ':' + seconds); + this.start(); + }, + reset: function() { + this.stop(); + this.elapsedTime = 0; + $('input[type=text].stopwatch_time').attr('value', '00:00:00'); + }, + start: function() { + this.stop(); + var self = this; + this.timerID = window.setTimeout(function() { + self.tick(); + }, 1000); + }, + stop: function() { + if (typeof this.timerID == 'number') { + window.clearTimeout(this.timerID); + delete this.timerID; + } + } + } + $('input[type=button].stopwatch_toggle').click(function() { + if (stopwatch.elapsedTime == 0) { + stopwatch.stop(); + stopwatch.start(); + $('input[type=button].stopwatch_toggle').attr('value', translations['time_tracking_stopwatch_stop']); + } else if (typeof stopwatch.timerID == 'number') { + stopwatch.stop(); + $('input[type=button].stopwatch_toggle').attr('value', translations['time_tracking_stopwatch_start']); + } else { + stopwatch.start(); + $('input[type=button].stopwatch_toggle').attr('value', translations['time_tracking_stopwatch_stop']); + } + }); + $('input[type=button].stopwatch_reset').click(function() { + stopwatch.reset(); + $('input[type=button].stopwatch_toggle').attr('value', translations['time_tracking_stopwatch_start']); + }); }); /* diff --git a/javascript/dev/time_tracking_stopwatch.js b/javascript/dev/time_tracking_stopwatch.js deleted file mode 100644 index 0a2a8e1..0000000 --- a/javascript/dev/time_tracking_stopwatch.js +++ /dev/null @@ -1,43 +0,0 @@ -var time_tracking_ms = 0; -var time_tracking_running = 0; - -function time_tracking_swstartstop() { - if (time_tracking_running == 0) { - time_tracking_running = 1; - time_tracking_then = new Date(); - time_tracking_then.setTime(time_tracking_then.getTime() - time_tracking_ms); - document.bugnoteadd.time_tracking_ssbutton.value = time_tracking_stopwatch_lang_stop; - } else { - time_tracking_running = 0; - time_tracking_now = new Date(); - time_tracking_ms = time_tracking_now.getTime() - time_tracking_then.getTime(); - document.bugnoteadd.time_tracking_ssbutton.value = time_tracking_stopwatch_lang_start; - } -} -function time_tracking_swreset() { - time_tracking_running = 0; - time_tracking_ms = 0; - document.bugnoteadd.time_tracking.value = "0:00:00"; - document.bugnoteadd.time_tracking_ssbutton.value = time_tracking_stopwatch_lang_start; -} - -function time_tracking_display() { - setTimeout("time_tracking_display();", 1000); - if (time_tracking_running == 1) { - time_tracking_now = new Date(); - time_tracking_ms = time_tracking_now.getTime() - time_tracking_then.getTime(); - time_tracking_seconds = Math.round(time_tracking_ms / 1000) ; - time_tracking_hours = Math.floor(time_tracking_seconds / 3600); - time_tracking_left = time_tracking_seconds - (time_tracking_hours * 3600); - time_tracking_mins = Math.floor(time_tracking_left / 60); - time_tracking_secs = time_tracking_left - (time_tracking_mins * 60); - if (time_tracking_secs < 10) - time_tracking_secs = "0" + time_tracking_secs; - if (time_tracking_mins < 10) - time_tracking_mins = "0" + time_tracking_mins; - - document.bugnoteadd.time_tracking.value = time_tracking_hours + ":" + time_tracking_mins + ":" + time_tracking_secs; - } -} - -setTimeout("time_tracking_display();", 1000); diff --git a/javascript/min/time_tracking_stopwatch.js b/javascript/min/time_tracking_stopwatch.js deleted file mode 100644 index 4c2bea2..0000000 --- a/javascript/min/time_tracking_stopwatch.js +++ /dev/null @@ -1 +0,0 @@ -var time_tracking_ms=0;var time_tracking_running=0;function time_tracking_swstartstop(){if(time_tracking_running==0){time_tracking_running=1;time_tracking_then=new Date();time_tracking_then.setTime(time_tracking_then.getTime()-time_tracking_ms);document.bugnoteadd.time_tracking_ssbutton.value=time_tracking_stopwatch_lang_stop}else{time_tracking_running=0;time_tracking_now=new Date();time_tracking_ms=time_tracking_now.getTime()-time_tracking_then.getTime();document.bugnoteadd.time_tracking_ssbutton.value=time_tracking_stopwatch_lang_start}}function time_tracking_swreset(){time_tracking_running=0;time_tracking_ms=0;document.bugnoteadd.time_tracking.value="0:00:00";document.bugnoteadd.time_tracking_ssbutton.value=time_tracking_stopwatch_lang_start}function time_tracking_display(){setTimeout("time_tracking_display();",1000);if(time_tracking_running==1){time_tracking_now=new Date();time_tracking_ms=time_tracking_now.getTime()-time_tracking_then.getTime();time_tracking_seconds=Mat h.round(time_tracking_ms/1000);time_tracking_hours=Math.floor(time_tracking_seconds/3600);time_tracking_left=time_tracking_seconds-(time_tracking_hours*3600);time_tracking_mins=Math.floor(time_tracking_left/60);time_tracking_secs=time_tracking_left-(time_tracking_mins*60);if(time_tracking_secs<10){time_tracking_secs="0"+time_tracking_secs}if(time_tracking_mins<10){time_tracking_mins="0"+time_tracking_mins}document.bugnoteadd.time_tracking.value=time_tracking_hours+":"+time_tracking_mins+":"+time_tracking_secs}}setTimeout("time_tracking_display();",1000); diff --git a/javascript_translations.php b/javascript_translations.php new file mode 100644 index 0000000..f4fb6fa --- /dev/null +++ b/javascript_translations.php @@ -0,0 +1,36 @@ +<?php +# MantisBT - A PHP based bugtracking system + +# MantisBT is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# MantisBT is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with MantisBT. If not, see <http://www.gnu.org/licenses/>. + +/** + * @package MantisBT + * @copyright Copyright (C) 2000 - 2002 Kenzaburo Ito - ke...@30... + * @copyright Copyright (C) 2002 - 2010 MantisBT Team - man...@li... + * @link http://www.mantisbt.org + * + * @uses lang_api.php + */ + +require_once( 'core.php' ); +require_api( 'lang_api.php' ); + +function print_translation( $p_lang_key ) { + echo "translations['" . $p_lang_key . "'] = '" . addslashes( lang_get( $p_lang_key ) ) . "';\n"; +} + +echo "var translations = new Array();\n"; +print_translation( 'time_tracking_stopwatch_start' ); +print_translation( 'time_tracking_stopwatch_stop' ); +print_translation( 'loading' ); ----------------------------------------------------------------------- -- Mantis Bug Tracker |