View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0008780 | mantisbt | javascript | public | 2008-01-20 18:15 | 2008-01-20 19:41 |
Reporter | Boobaa | Assigned To | |||
Priority | normal | Severity | tweak | Reproducibility | always |
Status | new | Resolution | open | ||
Product Version | 1.1.1 | ||||
Summary | 0008780: Save bandwidth with JS check when uploading files | ||||
Description | When hitting "Upload File" button on an issue's page, a JavaScript routine could check if a file already exists with that name without wasting the bandwidth with the upload itself. | ||||
Additional Information | Please find the attached patch (against 1.1.1) which implements this. | ||||
Tags | No tags attached. | ||||
Attached Files | check_filename_before_upload.diff (3,390 bytes)
diff -Naur mantis-1.1.1/bug_file_upload_inc.php mantis/bug_file_upload_inc.php --- mantis-1.1.1/bug_file_upload_inc.php 2007-10-14 00:36:41.000000000 +0200 +++ mantis/bug_file_upload_inc.php 2008-01-20 23:46:25.000000000 +0100 @@ -57,8 +57,37 @@ <td width="85%"> <input type="hidden" name="bug_id" value="<?php echo $f_bug_id ?>" /> <input type="hidden" name="max_file_size" value="<?php echo $t_max_file_size ?>" /> - <input name="file" type="file" size="40" /> - <input type="submit" class="button" value="<?php echo lang_get( 'upload_file_button' ) ?>" /> + <input name="file" type="file" size="40" id="file" /> + <script type="text/javascript"> + function check_filename() { + filename = document.getElementById('file'); + filename = filename.value; + if(filename == '') { + return false; + } + lastslash = filename.lastIndexOf('/'); + if(lastslash == -1) { + lastslash = filename.lastIndexOf('\\'); + } + if(lastslash == -1) { + lastslash = 0; + } + else { + filename = filename.substring(lastslash + 1); + } + upload_allowed = true; + for(i in fileArray) { + if(fileArray[i] == filename) { + upload_allowed = false; + } + } + if(upload_allowed == false) { + alert(filename + ' already attached'); + return false; + } + } + </script> + <input type="submit" class="button" onclick="return check_filename();" value="<?php echo lang_get( 'upload_file_button' ) ?>" /> </td> </tr> </table> diff -Naur mantis-1.1.1/bug_view_page.php mantis/bug_view_page.php --- mantis-1.1.1/bug_view_page.php 2007-10-14 00:36:41.000000000 +0200 +++ mantis/bug_view_page.php 2008-01-20 23:43:02.000000000 +0100 @@ -427,7 +427,7 @@ <?php echo lang_get( 'attached_files' ) ?> </td> <td colspan="5"> - <?php file_list_attachments ( $f_bug_id ); ?> + <?php file_list_attachments ( $f_bug_id, true ); ?> </td> </tr> <?php diff -Naur mantis-1.1.1/core/file_api.php mantis/core/file_api.php --- mantis-1.1.1/core/file_api.php 2007-12-20 06:46:29.000000000 +0100 +++ mantis/core/file_api.php 2008-01-20 23:43:58.000000000 +0100 @@ -145,7 +145,7 @@ # -------------------- # List the attachments belonging to the specified bug. This is used from within # bug_view_page.php and bug_view_advanced_page.php - function file_list_attachments( $p_bug_id ) { + function file_list_attachments( $p_bug_id, $p_with_js = false ) { $t_attachment_rows = bug_get_attachments( $p_bug_id ); $num_files = sizeof( $t_attachment_rows ); @@ -159,11 +159,15 @@ $t_preview_image_ext = config_get( 'preview_image_extensions' ); $image_previewed = false; + $js = 'var fileArray = new Array();'; for ( $i = 0 ; $i < $num_files ; $i++ ) { $row = $t_attachment_rows[$i]; extract( $row, EXTR_PREFIX_ALL, 'v' ); $t_file_display_name = string_display_line( file_get_display_name( $v_filename ) ); + if ( $p_with_js ) { + $js .= 'fileArray[' . $i . '] = \'' . $t_file_display_name . '\';'; + } $t_filesize = number_format( $v_filesize ); $t_date_added = date( config_get( 'normal_date_format' ), db_unixtimestamp( $v_date_added ) ); @@ -281,6 +285,9 @@ PRINT "<br />\n"; } } + if ( $p_with_js ) { + PRINT '<script type="text/javascript">' . $js . '</script>'; + } } # -------------------- # delete all files that are associated with the given bug | ||||