From aeb215a5c269ba7b6be540d06730b0ffce265c14 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Sun, 10 Nov 2013 15:47:44 -0800 Subject: [ticket/11915] Move some of the #cp-main table rules to separate class. PHPBB3-11915 --- phpBB/styles/prosilver/template/mcp_header.html | 2 +- phpBB/styles/prosilver/template/ucp_header.html | 2 +- phpBB/styles/prosilver/theme/colours.css | 12 ++++++------ phpBB/styles/prosilver/theme/cp.css | 14 +++++++------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/phpBB/styles/prosilver/template/mcp_header.html b/phpBB/styles/prosilver/template/mcp_header.html index e3efe49943..51f496605e 100644 --- a/phpBB/styles/prosilver/template/mcp_header.html +++ b/phpBB/styles/prosilver/template/mcp_header.html @@ -39,7 +39,7 @@ -
+

{L_MESSAGE}

diff --git a/phpBB/styles/prosilver/template/ucp_header.html b/phpBB/styles/prosilver/template/ucp_header.html index c5d58b8eaa..8ce2c54294 100644 --- a/phpBB/styles/prosilver/template/ucp_header.html +++ b/phpBB/styles/prosilver/template/ucp_header.html @@ -98,4 +98,4 @@
-
+
diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index cad740200d..eee503516b 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -803,11 +803,11 @@ Colours and backgrounds for cp.css /* Main CP box ----------------------------------------*/ -#cp-main h3, #cp-main hr, #cp-menu hr { +.panel-container h3, .panel-container hr, #cp-menu hr { border-color: #A4B3BF; } -#cp-main .panel li.row { +.panel-container .panel li.row { border-bottom-color: #B5C1CB; border-top-color: #F9F9F9; } @@ -816,11 +816,11 @@ ul.cplist { border-top-color: #B5C1CB; } -#cp-main .panel li.header dd, #cp-main .panel li.header dt { +.panel-container .panel li.header dd, .panel-container .panel li.header dt { color: #000000; } -#cp-main table.table1 thead th { +.panel-container table.table1 thead th { color: #333333; border-bottom-color: #333333; } @@ -921,11 +921,11 @@ ul.cplist { /* Preferences pane layout ----------------------------------------*/ -#cp-main h2 { +.panel-container h2 { color: #333333; } -#cp-main .panel { +.panel-container .panel { background-color: #F9F9F9; } diff --git a/phpBB/styles/prosilver/theme/cp.css b/phpBB/styles/prosilver/theme/cp.css index 2003fef954..8f31eeb5cc 100644 --- a/phpBB/styles/prosilver/theme/cp.css +++ b/phpBB/styles/prosilver/theme/cp.css @@ -20,16 +20,16 @@ padding: 0; } -#cp-main .panel p { +.panel-container .panel p { font-size: 1.1em; } -#cp-main .panel ol { +.panel-container .panel ol { margin-left: 2em; font-size: 1.1em; } -#cp-main .panel li.row { +.panel-container .panel li.row { border-bottom: 1px solid transparent; border-top: 1px solid transparent; } @@ -39,21 +39,21 @@ ul.cplist { border-top: 1px solid transparent; } -#cp-main .panel li.header dd, #cp-main .panel li.header dt { +.panel-container .panel li.header dd, .panel-container .panel li.header dt { margin-bottom: 2px; } -#cp-main table.table1 { +.panel-container table.table1 { margin-bottom: 1em; } -#cp-main table.table1 thead th { +.panel-container table.table1 thead th { font-weight: bold; border-bottom: 1px solid transparent; padding: 5px; } -#cp-main table.table1 tbody th { +.panel-container table.table1 tbody th { font-style: italic; background-color: transparent !important; border-bottom: none; -- cgit v1.2.1 From 4361c1c9ac783a0004edebab83ca26a8899361df Mon Sep 17 00:00:00 2001 From: Cesar G Date: Sun, 10 Nov 2013 16:38:22 -0800 Subject: [ticket/11915] Move the uploaded attachment list under the attachments tab. PHPBB3-11915 --- .../prosilver/template/posting_attach_body.html | 43 ++++++++++++- .../styles/prosilver/template/posting_editor.html | 30 +-------- phpBB/styles/prosilver/theme/colours.css | 10 ++- phpBB/styles/prosilver/theme/plupload.css | 75 ++++++++++++++++++++-- 4 files changed, 120 insertions(+), 38 deletions(-) diff --git a/phpBB/styles/prosilver/template/posting_attach_body.html b/phpBB/styles/prosilver/template/posting_attach_body.html index fa9dd19c09..8262645a09 100644 --- a/phpBB/styles/prosilver/template/posting_attach_body.html +++ b/phpBB/styles/prosilver/template/posting_attach_body.html @@ -1,9 +1,9 @@ -
+

{L_ADD_ATTACHMENT_EXPLAIN}

-
+
@@ -17,5 +17,44 @@
+
+ +
+ +
+
+ + + + + + + + + + + + + + + + + + + +
{LA_PLUPLOAD_FILENAME}{L_FILE_COMMENT}{L_PLUPLOAD_SIZE}{L_PLUPLOAD_STATUS}
+ {attach_row.FILENAME} + +   + + + + + {attach_row.S_HIDDEN} + {attach_row.FILESIZE} + +
+
+
diff --git a/phpBB/styles/prosilver/template/posting_editor.html b/phpBB/styles/prosilver/template/posting_editor.html index 5677b92fc3..cac82baf91 100644 --- a/phpBB/styles/prosilver/template/posting_editor.html +++ b/phpBB/styles/prosilver/template/posting_editor.html @@ -149,34 +149,6 @@
- -
-
-

{L_POSTED_ATTACHMENTS}

- -
- - -
- -
-
-
{attach_row.FILENAME}
-
-   - -
-
- {attach_row.S_HIDDEN} -
- - -
- -
-
- -
@@ -198,7 +170,7 @@ diff --git a/phpBB/styles/prosilver/theme/colours.css b/phpBB/styles/prosilver/theme/colours.css index eee503516b..8c411a9f4d 100644 --- a/phpBB/styles/prosilver/theme/colours.css +++ b/phpBB/styles/prosilver/theme/colours.css @@ -76,8 +76,14 @@ hr { color: #000000; } -.bg1 { background-color: #ECF3F7; } -.bg2 { background-color: #e1ebf2; } +table.zebra-list tr:nth-child(odd) td, ul.zebra-list li:nth-child(odd), .bg1 { + background-color: #ECF3F7; +} + +table.zebra-list tr:nth-child(even) td, ul.zebra-list li:nth-child(even), .bg2 { + background-color: #e1ebf2; +} + .bg3 { background-color: #cadceb; } .ucprowbg { diff --git a/phpBB/styles/prosilver/theme/plupload.css b/phpBB/styles/prosilver/theme/plupload.css index 16c26822b5..b296e61e74 100644 --- a/phpBB/styles/prosilver/theme/plupload.css +++ b/phpBB/styles/prosilver/theme/plupload.css @@ -1,11 +1,76 @@ -.plupload_filelist li.can_delete:hover { - cursor: pointer; +#attach-panel-multi { + display: none; + margin-bottom: 1em; } -.plupload_filelist li.can_delete:hover a { - background: url('../../../assets/plupload/jquery.plupload.queue/img/delete.gif'); +#file-list td { + vertical-align: middle; } -.plupload_filelist li a.working { +.attach-name { + width: 50%; +} + +.attach-comment { + width: 30%; +} + +.attach-filesize { + width: 15%; +} + +.attach-status { + width: 5%; +} + +.attach-filesize, .attach-status { + text-align: center; +} + +.attach-controls { + display: inline-block; + float: right; +} + +#attach-row-tpl { + display: none; +} + +#file-total-progress { + height: 2px; + display: block; + position: relative; + margin: 4px -10px -6px -10px; +} + +.file-progress { + background-color: #CCCCCC; + display:inline-block; + height: 8px; + width: 50px; +} + +.file-progress-bar, #file-total-progress-bar { + background-color: green; + display: block; + height: 100%; + width: 0; +} + +.file-status.file-working { background: url('../../../assets/plupload/jquery.plupload.queue/img/throbber.gif'); } + +.file-status.file-uploaded { + background: url('../../../assets/plupload/jquery.plupload.queue/img/done.gif'); +} + +.file-status.file-error { + background: url('../../../assets/plupload/jquery.plupload.queue/img/error.gif'); +} + +.file-status { + display: inline-block; + height: 16px; + width: 16px; +} -- cgit v1.2.1 From 691dfd845372034e7b6d691433ca05720e12e267 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Sun, 10 Nov 2013 16:42:20 -0800 Subject: [ticket/11915] Add row template for new attachments. PHPBB3-11915 --- .../prosilver/template/posting_attach_body.html | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/phpBB/styles/prosilver/template/posting_attach_body.html b/phpBB/styles/prosilver/template/posting_attach_body.html index 8262645a09..af215bb710 100644 --- a/phpBB/styles/prosilver/template/posting_attach_body.html +++ b/phpBB/styles/prosilver/template/posting_attach_body.html @@ -33,6 +33,25 @@ + + + + +   + + + + + + + + + + + + + + -- cgit v1.2.1 From be52a823f871682a7740ca3c8207ac7f88f181f5 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Sun, 10 Nov 2013 18:27:13 -0800 Subject: [ticket/11915] Provide the attachment file size to the template. PHPBB3-11915 --- phpBB/includes/functions_posting.php | 1 + phpBB/includes/message_parser.php | 6 ++++-- phpBB/posting.php | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 172f4403ac..e14e9e27be 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -862,6 +862,7 @@ function posting_gen_attachment_entry($attachment_data, &$filename_data, $show_a 'ATTACH_ID' => $attach_row['attach_id'], 'S_IS_ORPHAN' => $attach_row['is_orphan'], 'ASSOC_INDEX' => $count, + 'FILESIZE' => get_formatted_filesize($attach_row['filesize']), 'U_VIEW_ATTACHMENT' => $download_link, 'S_HIDDEN' => $hidden) diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index b29f587385..c964e1a5e2 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1461,6 +1461,7 @@ class parse_message extends bbcode_firstpass 'is_orphan' => 1, 'real_filename' => $filedata['real_filename'], 'attach_comment'=> $this->filename_data['filecomment'], + 'filesize' => $filedata['filesize'], ); $this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data); @@ -1572,6 +1573,7 @@ class parse_message extends bbcode_firstpass 'is_orphan' => 1, 'real_filename' => $filedata['real_filename'], 'attach_comment'=> $this->filename_data['filecomment'], + 'filesize' => $filedata['filesize'], ); $this->attachment_data = array_merge(array(0 => $new_entry), $this->attachment_data); @@ -1649,7 +1651,7 @@ class parse_message extends bbcode_firstpass if (sizeof($not_orphan)) { // Get the attachment data, based on the poster id... - $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment + $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment, filesize FROM ' . ATTACHMENTS_TABLE . ' WHERE ' . $db->sql_in_set('attach_id', array_keys($not_orphan)) . ' AND poster_id = ' . $check_user_id; @@ -1674,7 +1676,7 @@ class parse_message extends bbcode_firstpass // Regenerate newly uploaded attachments if (sizeof($orphan)) { - $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment + $sql = 'SELECT attach_id, is_orphan, real_filename, attach_comment, filesize FROM ' . ATTACHMENTS_TABLE . ' WHERE ' . $db->sql_in_set('attach_id', array_keys($orphan)) . ' AND poster_id = ' . $user->data['user_id'] . ' diff --git a/phpBB/posting.php b/phpBB/posting.php index 0d2cff40bc..192fc69f47 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -484,7 +484,7 @@ $message_parser->get_submitted_attachment_data($post_data['poster_id']); if ($post_data['post_attachment'] && !$submit && !$refresh && !$preview && $mode == 'edit') { // Do not change to SELECT * - $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename + $sql = 'SELECT attach_id, is_orphan, attach_comment, real_filename, filesize FROM ' . ATTACHMENTS_TABLE . " WHERE post_msg_id = $post_id AND in_message = 0 -- cgit v1.2.1 From 0ea110292b31bff28cced69dc066cc62ed09d208 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Sun, 10 Nov 2013 18:29:49 -0800 Subject: [ticket/11915] Provide some additional info about limits to the uploader. PHPBB3-11915 --- phpBB/posting.php | 3 +++ phpBB/styles/prosilver/template/plupload.html | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/phpBB/posting.php b/phpBB/posting.php index 192fc69f47..1711b91093 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -1464,6 +1464,7 @@ $template->assign_vars(array( 'L_POST_A' => $page_title, 'L_ICON' => ($mode == 'reply' || $mode == 'quote' || ($mode == 'edit' && $post_id != $post_data['topic_first_post_id'])) ? $user->lang['POST_ICON'] : $user->lang['TOPIC_ICON'], 'L_MESSAGE_BODY_EXPLAIN' => $user->lang('MESSAGE_BODY_EXPLAIN', (int) $config['max_post_chars']), + 'L_TOO_MANY_ATTACHMENTS' => $user->lang('TOO_MANY_ATTACHMENTS', (int) $config['max_attachments']), 'FORUM_NAME' => $post_data['forum_name'], 'FORUM_DESC' => ($post_data['forum_desc']) ? generate_text_for_display($post_data['forum_desc'], $post_data['forum_desc_uid'], $post_data['forum_desc_bitfield'], $post_data['forum_desc_options']) : '', @@ -1487,6 +1488,8 @@ $template->assign_vars(array( 'U_VIEW_TOPIC' => ($mode != 'post') ? append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id") : '', 'U_PROGRESS_BAR' => append_sid("{$phpbb_root_path}posting.$phpEx", "f=$forum_id&mode=popup"), 'UA_PROGRESS_BAR' => addslashes(append_sid("{$phpbb_root_path}posting.$phpEx", "f=$forum_id&mode=popup")), + 'ATTACH_ORDER' => ($config['display_order']) ? 'asc' : 'desc', + 'MAX_ATTACHMENTS' => ($auth->acl_get('a_') || $auth->acl_get('m_', $forum_id)) ? 0 : (int) $config['max_attachments'], 'S_PRIVMSGS' => false, 'S_CLOSE_PROGRESS_WINDOW' => (isset($_POST['add_file'])) ? true : false, diff --git a/phpBB/styles/prosilver/template/plupload.html b/phpBB/styles/prosilver/template/plupload.html index 290992ddd6..2f68fe3efe 100644 --- a/phpBB/styles/prosilver/template/plupload.html +++ b/phpBB/styles/prosilver/template/plupload.html @@ -59,6 +59,14 @@ phpbb.plupload = { form_hook: '#postform' } }; + }, + lang: { + ERROR: '{LA_ERROR}', + TOO_MANY_ATTACHMENTS: '{LA_TOO_MANY_ATTACHMENTS}', + }, + order: '{ATTACH_ORDER}', + max_files: {MAX_ATTACHMENTS}, +} //]]> -- cgit v1.2.1 From 2719a18f7fc6ee3112c3ebc73d50e7c4d2f9d57f Mon Sep 17 00:00:00 2001 From: Cesar G Date: Sun, 10 Nov 2013 18:31:58 -0800 Subject: [ticket/11915] Make it possible to display trigger_error() messages to user. PHPBB3-11915 --- phpBB/posting.php | 24 ++++++++++++++++++++++-- phpBB/styles/prosilver/template/plupload.html | 2 +- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/phpBB/posting.php b/phpBB/posting.php index 1711b91093..6066511d1c 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -255,8 +255,18 @@ if (!$auth->acl_get('f_read', $forum_id)) { trigger_error('USER_CANNOT_READ'); } + $message = $user->lang['LOGIN_EXPLAIN_POST']; - login_box('', $user->lang['LOGIN_EXPLAIN_POST']); + if ($request->is_ajax()) + { + $json = new phpbb\json_response(); + $json->send(array( + 'title' => $user->lang['INFORMATION'], + 'message' => $message, + )); + } + + login_box('', $message); } // Permission to do the action asked? @@ -326,8 +336,18 @@ if (!$is_authed) { trigger_error('USER_CANNOT_' . strtoupper($check_auth)); } + $message = $user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)]; + + if ($request->is_ajax()) + { + $json = new phpbb\json_response(); + $json->send(array( + 'title' => $user->lang['INFORMATION'], + 'message' => $message, + )); + } - login_box('', $user->lang['LOGIN_EXPLAIN_' . strtoupper($mode)]); + login_box('', $message); } // Is the user able to post within this forum? diff --git a/phpBB/styles/prosilver/template/plupload.html b/phpBB/styles/prosilver/template/plupload.html index 2f68fe3efe..dbcea32455 100644 --- a/phpBB/styles/prosilver/template/plupload.html +++ b/phpBB/styles/prosilver/template/plupload.html @@ -51,7 +51,7 @@ phpbb.plupload = { unique_names: true, filters: [{FILTERS}], {S_RESIZE} - headers: {'X-PHPBB-USING-PLUPLOAD': '1'}, + headers: {'X-PHPBB-USING-PLUPLOAD': '1', 'X-Requested-With': 'XMLHttpRequest'}, file_data_name: 'fileupload', multipart_params: {'add_file': '{LA_ADD_FILE}'}, img_path: '{T_ASSETS_PATH}/plupload/jquery.plupload.queue/img', -- cgit v1.2.1 From 688ca7fadef6c8890a10b709b8f4c7615d33fff0 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Sun, 10 Nov 2013 18:54:07 -0800 Subject: [ticket/11915] Add the new uploader. PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 779 ++++++++++++++------- phpBB/styles/prosilver/template/plupload.html | 8 +- .../styles/prosilver/template/posting_editor.html | 10 +- 3 files changed, 555 insertions(+), 242 deletions(-) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index 1befb88eb6..1479b64f47 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -1,38 +1,73 @@ plupload.addI18n(phpbb.plupload.i18n); -plupload.attachment_data = []; +phpbb.plupload.data = phpbb.plupload.ids = []; + +(function($) { // Avoid conflicts with other libraries + +"use strict"; /** - * Returns the index of the plupload.attachment_data array where the given - * attach id appears + * Set up the uploader. * - * @param int id The attachment id of the file + * @return undefined + */ +phpbb.plupload.initialize = function () { + phpbb.plupload.form = $(phpbb.plupload.config.form_hook)[0], + phpbb.plupload.rowTpl = $('#attach-row-tpl')[0].outerHTML; + + // Hide the basic upload panel and remove the attach row template. + $('#attach-row-tpl, #attach-panel-basic').remove(); + // Show multi-file upload options. + $('#attach-panel-multi').show(); + + // Gather existing attachment data from HTML. + var data = phpbb.plupload.getDataFromHtml(); + phpbb.plupload.setData(data); + phpbb.plupload.updateMultipartParams(phpbb.plupload.getSerializedData()); + + // Initialize the Plupload uploader. + uploader.init(); +}; + +/** + * Unsets all elements in the object uploader.settings.multipart_params whose keys + * begin with 'attachment_data[' * - * @return bool Returns false if the id cannot be found - * @return int Returns the index in the main array where the attachment id - * was found + * @return undefined */ -function phpbb_plupload_find_attachment_idx(id) { - var data = plupload.attachment_data; - for (var i = 0; i < data.length; i++) { - if (data[i].attach_id == id) { - return i; +phpbb.plupload.clearParams = function() { + var obj = uploader.settings.multipart_params; + for (var key in obj) { + if (!obj.hasOwnProperty(key) || key.indexOf('attachment_data[') !== 0) { + continue; } + + delete uploader.settings.multipart_params[key]; } +}; - return false; -} +/** + * Update uploader.settings.multipart_params object with new data. + * + * @param object obj + * @return undefined + */ +phpbb.plupload.updateMultipartParams = function (obj) { + uploader.settings.multipart_params = $.extend( + uploader.settings.multipart_params, + obj + ); +}; /** - * Converts an array of objects into an object that PHP would expect as POST - * data + * Convert the array of attachment objects into an object that PHP would expect as POST data. * * @return object An object in the form 'attachment_data[i][key]': value as * expected by the server */ -function phpbb_plupload_attachment_data_serialize() { +phpbb.plupload.getSerializedData = function () { var obj = {}; - for (var i = 0; i < plupload.attachment_data.length; i++) { - var datum = plupload.attachment_data[i]; + for (var i = 0; i < phpbb.plupload.data.length; i++) { + var datum = phpbb.plupload.data[i]; for (var key in datum) { if (!datum.hasOwnProperty(key)) { continue; @@ -41,264 +76,534 @@ function phpbb_plupload_attachment_data_serialize() { obj['attachment_data[' + i + '][' + key + ']'] = datum[key]; } } - return obj; -} +}; /** - * Unsets all elements in an object whose keys begin with 'attachment_data[' - * - * @param object The object to be cleared + * Grab all attachment data present in the HTML. This assumes + * that all revelant data is present in form elements that have a name that follows + * the naming convention of attachment_data[index][property] * - * @return undefined + * @return array An array containing all gathered data in the form of + * array(index => object(property: value)) */ -function phpbb_plupload_clear_params(obj) { - for (var key in obj) { - if (!obj.hasOwnProperty(key) || key.indexOf('attachment_data[') !== 0) { +phpbb.plupload.getDataFromHtml = function () { + var data = [], + form = phpbb.plupload.form; + + for (var i = 0; i < form.length; i++) { + if (form[i].name.indexOf('attachment_data[') !== 0) { continue; } - delete obj[key]; + var matches = form[i].name.match(/attachment_data\[(\d+)\]\[([^\]]+)\]/); + var index = matches[1]; + var property = matches[2]; + + if (typeof data[index] === 'undefined') { + data[index] = {}; + } + data[index][property] = form[i].value; } -} + return data; +}; /** - * Update hidden attachment inputs in posting form - * Pre-existing hidden inputs will be removed by comparing the old attachment - * data (old_data) to the new attachment data (data) that has been sent back - * by plupload. + * Get the index from the phpbb.plupload.data array where the given + * attachment id appears. * - * @param object form Posting form - * @param object data Current attachment_data - * @param object old_date Previous attachment_data (before submission) + * @param int attach_id The attachment id of the file. + * @return bool Returns false if the id cannot be found. + * @return int Returns the index of the file if it exists. + */ +phpbb.plupload.getIndex = function(attach_id) { + var index = phpbb.plupload.ids.indexOf(Number(attach_id)); + return (index !== -1) ? index : false; +}; + +/** + * Set the data in phpbb.plupload.data and phpbb.plupload.ids arrays. + * + * @param array data Array containing the new data to use. In the form of + * array(index => object(property: value). Requires attach_id to be one of the object properties. * - * @return void + * @return undefined */ -phpbb.update_hidden_attachment_inputs = function(form, data, old_data) { - // Update already existing hidden inputs - for (var i = 0; i < form.length; i++) { - if (data.hasOwnProperty(form[i].name)) { - form[i].value = data[form[i].name]; - delete data[form[i].name]; - } else if (typeof old_data !== 'undefined' && old_data.hasOwnProperty(form[i].name)) { - var inputRegex = /\b^[a-z_]+[+[0-9]+]/; - var inputName = inputRegex.exec(form[i].name); - if (typeof inputName !== 'undefined' && inputName[0] !== '') { - $("input[type='hidden'][name^='" + inputName[0] + "']").remove(); - } - } +phpbb.plupload.setData = function(data) { + // Make sure that the array keys are reset. + phpbb.plupload.ids = phpbb.plupload.data = []; + phpbb.plupload.data = data; + + for (var i = 0; i < data.length; i++) { + phpbb.plupload.ids.push(Number(data[i].attach_id)); } +}; - // Append new inputs - for (var key in data) { - if (!data.hasOwnProperty(key)) { - continue; - } +/** + * Update the attachment data in the HTML and the phpbb & phpbb.plupload objects. + * + * @param array data Array containing the new data to use. + * @param string action The action that required the update. Used to update the inline attachment bbcodes. + * @param int index The index from phpbb.plupload_ids that was affected by the action. + * @return undefined + */ +phpbb.plupload.update = function (data, action, index) { + phpbb.plupload.setData(data); + phpbb.plupload.updateRows(); + phpbb.plupload.clearParams(); + phpbb.plupload.updateMultipartParams(phpbb.plupload.getSerializedData()); +}; + +/** + * Update the relevant elements and hidden data for all attachments. + * + * @return undefined + */ +phpbb.plupload.updateRows = function () { + for (var i = 0; i < phpbb.plupload.ids.length; i++) { + phpbb.plupload.updateRow(i); + } +}; + +/** + * Insert a row for a new attachment. This expects an HTML snippet in the HTML + * using the id "attach-row-tpl" to be present. This snippet is cloned and the + * data for the file inserted into it. The row is then appended or prepended to + * #file-list based on the attach_order setting. + * + * @param object file Plupload file object for the new attachment. + * @return undefined + */ +phpbb.plupload.insertRow = function(file) { + var row = $(phpbb.plupload.rowTpl); + row.attr('id', file.id); + row.find('.file-name').html(file.name); + row.find('.file-size').html(plupload.formatSize(file.size)); + + if (phpbb.plupload.order == 'desc') { + $('#file-list').prepend(row); + } else { + $('#file-list').append(row); + } +}; + +/** + * Update the relevant elements and hidden data for an attachment. + * + * @param int index The index from phpbb.plupload.ids of the attachment to edit. + * @return undefined + */ +phpbb.plupload.updateRow = function (index) { + var attach = phpbb.plupload.data[index]; + var row = $('[data-attach-id="' + attach.attach_id + '"]'); + + row.find('textarea').attr('name', 'comment_list[' + index + ']'); + row.find('.file-inline-bbcode').attr('onclick', 'attach_inline(' + index + ',\'' + attach.real_filename + '\');'); + phpbb.plupload.updateHiddenData(row, attach, index); +}; + +/** + * Update hidden input data for an attachment. + * + * @param object row jQuery object for the attachment row. + * @param object attach Attachment data object from phpbb.plupload.data + * @param int index Attachment index from phpbb.plupload.ids + * @return undefined + */ +phpbb.plupload.updateHiddenData = function (row, attach, index) { + row.find('input[type="hidden"]').remove(); + + for (var key in attach) { var input = $('') .attr('type', 'hidden') - .attr('name', key) - .attr('value', data[key]); - $(form).append(input); + .attr('name', 'attachment_data[' + index + '][' + key +']') + .attr('value', attach[key]); + $('textarea', row).after(input); } -} - -jQuery(function($) { - $(phpbb.plupload.config.element_hook).pluploadQueue(phpbb.plupload.config); - var uploader = $(phpbb.plupload.config.element_hook).pluploadQueue(); +}; - // Check the page for already-existing attachment data and add it to the - // array - var form = $(phpbb.plupload.config.form_hook)[0]; - for (var i = 0; i < form.length; i++) { - if (form[i].name.indexOf('attachment_data[') !== 0) { - continue; - } - - var matches = form[i].name.match(/\[(\d+)\]\[([^\]]+)\]/); - var index = matches[1]; - var property = matches[2]; - - if (!plupload.attachment_data[index]) { - plupload.attachment_data[index] = {}; - } - - plupload.attachment_data[index][property] = form[i].value; - uploader.settings.multipart_params[form[i].name] = form[i].value; +/** + * Deleting a file removes it from the queue and fires an AJAX event to the + * server to tell it to remove the temporary attachment. The server + * responds with the updated attachment data list so that any future + * uploads can maintain state with the server + * + * @param object row jQuery object for the attachment row. + * @param int attachId Attachment id of the file to be removed. + * + * @return undefined + */ +phpbb.plupload.deleteFile = function (row, attachId) { + // If there's no attach id, then the file hasn't been uploaded. Simply delete the row. + if (typeof attachId === 'undefined') { + phpbb.plupload.hideEmptyList(); + row.slideUp(100).delay(100).remove(); } - /** - * Fires before a given file is about to be uploaded. This allows us to - * send the real filename along with the chunk. This is necessary because - * for some reason the filename is set to 'blob' whenever a file is chunked - * - * @param object up The plupload.Uploader object - * @param object file The plupload.File object that is about to be - * uploaded - * - * @return undefined - */ - uploader.bind('BeforeUpload', function(up, file) { - up.settings.multipart_params = $.extend( - up.settings.multipart_params, - {'real_filename': file.name} - ); - }); + var index = phpbb.plupload.getIndex(attachId); + row.find('.file-status').toggleClass('file-uploaded file-working'); - /** - * Fired when a single chunk of any given file is uploaded. This parses the - * response from the server and checks for an error. If an error occurs it - * is reported to the user and the upload of this particular file is halted - * - * @param object up The plupload.Uploader object - * @param object file The plupload.File object whose chunk has just - * been uploaded - * @param object response The response object from the server - * - * @return undefined - */ - uploader.bind('ChunkUploaded', function(up, file, response) { - if (response.chunk >= response.chunks - 1) { - return; - } + if (index === false) { + return; + } + var fields = {}; + fields['delete_file[' + index + ']'] = 1; + var always = function() { + row.find('.file-status').removeClass('file-working'); + }; + + var done = function(response) { var json = {}; try { - json = $.parseJSON(response.response); + json = $.parseJSON(response); } catch (e) { - file.status = plupload.FAILED; - up.trigger('FileUploaded', file, { - response: JSON.stringify({ - error: { - message: 'Error parsing server response.' - } - }) - }); + return; } - if (json.error) { - file.status = plupload.FAILED; - up.trigger('FileUploaded', file, { - response: JSON.stringify({ - error: { - message: json.error.message - } - }) - }); + // trigger_error() was called which likely means a permission error was encountered. + if (typeof response.title !== 'undefined') { + uploader.trigger('Error', {message: response.message}); + // We will have to assume that the deletion failed. So leave the file status as uploaded. + row.find('.file-status').toggleClass('file-uploaded'); + + return; } - }); + phpbb.plupload.update(response, 'removal', index); + // Check if the user can upload files now if he had reached the max files limit. + phpbb.plupload.handleMaxFilesReached(); - /** - * Fires when an entire file has been uploaded. It checks for errors - * returned by the server otherwise parses the list of attachment data and - * appends it to the next file upload so that the server can maintain state - * with regards to the attachments in a given post - * - * @param object up The plupload.Uploader object - * @param object file The plupload.File object that has just been - * uploaded - * @param string response The response string from the server - * - * @return undefined - */ - uploader.bind('FileUploaded', function(up, file, response) { - var json = {}; - try { - json = $.parseJSON(response.response); - } catch (e) { - file.status = plupload.FAILED; - file.error = 'Error parsing server response.' + if (row.attr('id')) { + var file = uploader.getFile(row.attr('id')); + uploader.removeFile(file); } + row.slideUp(100, function() { + row.remove(); + // Hide the file list if it's empty now. + phpbb.plupload.hideEmptyList(); + }); + uploader.trigger('FilesRemoved'); + }; + + $.ajax(phpbb.plupload.config.url, { + type: 'POST', + data: $.extend(fields, phpbb.plupload.getSerializedData()), + headers: {'X-PHPBB-USING-PLUPLOAD': '1', 'X-Requested-With': 'XMLHttpRequest'} + }) + .always(always) + .done(done); +}; - if (json.error) { - file.status = plupload.FAILED; - file.error = json.error.message; - } else if (file.status === plupload.DONE) { - plupload.attachment_data = json; - file.attachment_data = json[0]; - up.settings.multipart_params = $.extend( - up.settings.multipart_params, - phpbb_plupload_attachment_data_serialize() - ); +/** + * Check the attachment list and hide its container if it's empty. + * + * @return undefined + */ +phpbb.plupload.hideEmptyList = function() { + if (!$('#file-list').children().length) { + $('#file-list-container').slideUp(100); + } +} + +/** + * Get Plupload file objects based on their upload status. + * + * @param int status Plupload status - plupload.DONE, plupload.FAILED, plupload.QUEUED, + * plupload.STARTED, plupload.STOPPED + * + * @return Returns an array of the Plupload file objects matching the status. + */ +phpbb.plupload.getFilesByStatus = function (status) { + var files = []; + + $.each(uploader.files, function(i, file) { + if (file.status === status) { + files.push(file); } }); + return files; +} - /** - * Fires when the entire queue of files have been uploaded. It resets the - * 'add files' button to allow more files to be uploaded and also attaches - * several events to each row of the currently-uploaded files to facilitate - * deleting any one of the files. - * - * Deleting a file removes it from the queue and fires an ajax event to the - * server to tell it to remove the temporary attachment. The server - * responds with the updated attachment data list so that any future - * uploads can maintain state with the server - * - * @param object up The plupload.Uploader object - * @param array files An array of plupload.File objects that have just - * been uploaded as part of a queue - * - * @return undefined - */ - uploader.bind('UploadComplete', function(up, files) { - $('.plupload_upload_status').css('display', 'none'); - $('.plupload_buttons').css('display', 'block'); - - // Insert a bunch of hidden input elements containing the attachment - // data so that the save/preview/submit buttons work as expected. - var form = $(phpbb.plupload.config.form_hook)[0]; - var data = phpbb_plupload_attachment_data_serialize(); - - phpbb.update_hidden_attachment_inputs(form, data); - - files.forEach(function(file) { - if (file.status !== plupload.DONE) { - var click = function(evt) { - alert(file.error); - } +/** + * Check whether the user has reached the maximun number of files that he's allowed + * to upload. If so, disables the uploader and marks the queued files as failed. Otherwise + * makes sure that the uploader is enabled. + * + * @return bool Returns true if the limit has been reached. False if otherwise. + */ +phpbb.plupload.handleMaxFilesReached = function () { + // If there is no limit, the user is an admin or moderator. + if (!phpbb.plupload.maxFiles) { + return false; + } - $('#' + file.id).attr('title', file.error); - $('#' + file.id).click(click); + if (phpbb.plupload.maxFiles <= phpbb.plupload.ids.length) { + // Fail the rest of the queue. + phpbb.plupload.markQueuedFailed(phpbb.plupload.lang.TOO_MANY_ATTACHMENTS); + // Disable the uploader. + phpbb.plupload.disableUploader(); + uploader.trigger('Error', {message: phpbb.plupload.lang.TOO_MANY_ATTACHMENTS}); - return; - } + return true; + } else if(phpbb.plupload.maxFiles > phpbb.plupload.ids.length) { + // Enable the uploader if the user is under the limit + phpbb.plupload.enableUploader(); + } + return false; +} + +/** + * Disable the uploader + * + * @return undefined + */ +phpbb.plupload.disableUploader = function () { + $('#add_files').addClass('disabled'); + uploader.disableBrowse(); +} + +/** + * Enable the uploader + * + * @return undefined + */ +phpbb.plupload.enableUploader = function () { + $('#add_files').removeClass('disabled'); + uploader.disableBrowse(false); +} + +/** + * Mark all queued files as failed. + * + * @param string error Error message to present to the user. + * @return undefined + */ +phpbb.plupload.markQueuedFailed = function (error) { + var files = phpbb.plupload.getFilesByStatus(plupload.QUEUED); + + $.each(files, function(i, file) { + $('#' + file.id).find('.file-progress').hide(); + phpbb.plupload.fileError(file, error); + }); +} + +/** + * Marks a file as failed and sets the error message for it. + * + * @param object file Plupload file object that failed. + * @param string error Error message to present to the user. + * @return undefined + */ +phpbb.plupload.fileError = function (file, error) { + file.status = plupload.FAILED; + file.error = error; + $('#' + file.id).find('.file-status').addClass('file-error').attr({'data-error-title': phpbb.plupload.lang.ERROR, 'data-error-message': error}); +} + + + + +/** + * Set up the Plupload object and get some basic data. + */ +var uploader = new plupload.Uploader(phpbb.plupload.config); +phpbb.plupload.initialize(); - var click = function(evt) { - $(evt.target).find('a').addClass('working'); - - // The index is always found because file.attachment_data is - // just an element of plupload.attachment_data - var idx = phpbb_plupload_find_attachment_idx(file.attachment_data.attach_id); - var fields = {}; - fields['delete_file[' + idx + ']'] = 1; - - var always = function() { - $(evt.target).find('a').removeClass('working'); - }; - - var done = function(response) { - up.removeFile(file); - plupload.attachment_data = response; - phpbb.update_hidden_attachment_inputs(form, phpbb_plupload_attachment_data_serialize(), data); - phpbb_plupload_clear_params(up.settings.multipart_params); - up.settings.multipart_params = $.extend( - up.settings.multipart_params, - phpbb_plupload_attachment_data_serialize() - ); - }; - - $.ajax(phpbb.plupload.config.url, { - type: 'POST', - data: $.extend(fields, phpbb_plupload_attachment_data_serialize()), - headers: {'X-PHPBB-USING-PLUPLOAD': '1'} - }) - .always(always) - .done(done); - }; - - $('#' + file.id) - .addClass('can_delete') - .click(click); + + + +/** + * Delete a file. + */ +$('#file-list').on('click', '.file-delete', function(e) { + var row = $(this).parents('.attach-row'), + attachId = row.attr('data-attach-id'); + + phpbb.plupload.deleteFile(row, attachId); + e.preventDefault(); +}); + +/** + * Display the error message for a particular file when the error icon is clicked. + */ +$('#file-list').on('click', '.file-error', function(e) { + phpbb.alert($(this).attr('data-error-title'), $(this).attr('data-error-message')); + e.preventDefault(); +}); + +/** + * Fires when an error occurs. + */ +uploader.bind('Error', function(up, error) { + // The error message that Plupload provides for these is vague, so we'll be more specific. + if (error.code === plupload.FILE_EXTENSION_ERROR) { + error.message = plupload.translate('Invalid file extension: ') + error.file.name; + } else if (error.code === plupload.FILE_SIZE_ERROR) { + error.message = plupload.translate('File too large: ') + error.file.name; + } + phpbb.alert(phpbb.plupload.lang.ERROR, error.message); +}); + +/** + * Fires before a given file is about to be uploaded. This allows us to + * send the real filename along with the chunk. This is necessary because + * for some reason the filename is set to 'blob' whenever a file is chunked + * + * @param object up The plupload.Uploader object + * @param object file The plupload.File object that is about to be + * uploaded + * + * @return undefined + */ +uploader.bind('BeforeUpload', function(up, file) { + if (phpbb.plupload.handleMaxFilesReached()) { + return; + } + + phpbb.plupload.updateMultipartParams({'real_filename': file.name}); +}); + +/** + * Fired when a single chunk of any given file is uploaded. This parses the + * response from the server and checks for an error. If an error occurs it + * is reported to the user and the upload of this particular file is halted + * + * @param object up The plupload.Uploader object + * @param object file The plupload.File object whose chunk has just + * been uploaded + * @param object response The response object from the server + * + * @return undefined + */ +uploader.bind('ChunkUploaded', function(up, file, response) { + if (response.chunk >= response.chunks - 1) { + return; + } + + var json = {}; + try { + json = $.parseJSON(response.response); + } catch (e) { + file.status = plupload.FAILED; + up.trigger('FileUploaded', file, { + response: JSON.stringify({ + error: { + message: 'Error parsing server response.' + } + }) }); + } + + if (json.error) { + file.status = plupload.FAILED; + up.trigger('FileUploaded', file, { + response: JSON.stringify({ + error: { + message: json.error.message + } + }) + }); + } +}); + +/** + * Fires when files are added to the queue. + * + * @return undefined + */ +uploader.bind('FilesAdded', function(up, files) { + // Prevent unnecessary requests to the server if the user already uploaded + // the maximum number of files allowed. + if (phpbb.plupload.handleMaxFilesReached()) { + return; + } + + // Show the file list if there aren't any files currently. + if (!$('#file-list-container').is(':visible')) { + $('#file-list-container').show(100); + } + + $.each(files, function(i, file) { + phpbb.plupload.insertRow(file); }); + + up.bind('UploadProgress', function(up, file) { + $('#' + file.id + " .file-progress-bar").css('width', file.percent + '%'); + $('#file-total-progress-bar').css('width', up.total.percent + '%'); + }); + + // Start uploading the files once the user has selected them. + up.start(); +}); + + +/** + * Fires when an entire file has been uploaded. It checks for errors + * returned by the server otherwise parses the list of attachment data and + * appends it to the next file upload so that the server can maintain state + * with regards to the attachments in a given post + * + * @param object up The plupload.Uploader object + * @param object file The plupload.File object that has just been + * uploaded + * @param string response The response string from the server + * + * @return undefined + */ +uploader.bind('FileUploaded', function(up, file, response) { + var json = {}, + row = $('#' + file.id), + error; + + // Hide the progress indicator. + row.find('.file-progress').hide(); + + try { + json = $.parseJSON(response.response); + } catch (e) { + error = 'Error parsing server response.'; + } + + // If trigger_error() was called, then a permission error likely occurred. + if (typeof json.title !== 'undefined') { + error = json.message; + up.trigger('Error', {message: error}); + + // The rest of the queue will fail. + phpbb.plupload.markQueuedFailed(error); + } else if (json.error) { + error = json.error.message; + } + + if (typeof error !== 'undefined') { + phpbb.plupload.fileError(file, error); + } else if (file.status === plupload.DONE) { + file.attachment_data = json[0]; + + row.attr('data-attach-id', file.attachment_data.attach_id); + row.find('.file-inline-bbcode').show(); + row.find('.file-status').addClass('file-uploaded'); + phpbb.plupload.update(json, 'addition', 0); + } +}); + +/** + * Fires when the entire queue of files have been uploaded. + * + * @param object up The plupload.Uploader object + * @param array files An array of plupload.File objects that have just + * been uploaded as part of a queue + * + * @return undefined + */ +uploader.bind('UploadComplete', function(up, files) { + // Hide the progress bar + setTimeout(function() { + $('#file-total-progress-bar').fadeOut(500, function() { + $(this).css('width', 0).show(); + }); + }, 2000); }); + +})(jQuery); // Avoid conflicts with other libraries diff --git a/phpBB/styles/prosilver/template/plupload.html b/phpBB/styles/prosilver/template/plupload.html index dbcea32455..c689ef8427 100644 --- a/phpBB/styles/prosilver/template/plupload.html +++ b/phpBB/styles/prosilver/template/plupload.html @@ -56,16 +56,16 @@ phpbb.plupload = { multipart_params: {'add_file': '{LA_ADD_FILE}'}, img_path: '{T_ASSETS_PATH}/plupload/jquery.plupload.queue/img', element_hook: '#attach-panel .inner', - form_hook: '#postform' - } -}; + form_hook: '#postform', + browse_button: 'add_files', + drop_element : 'message', }, lang: { ERROR: '{LA_ERROR}', TOO_MANY_ATTACHMENTS: '{LA_TOO_MANY_ATTACHMENTS}', }, order: '{ATTACH_ORDER}', - max_files: {MAX_ATTACHMENTS}, + maxFiles: {MAX_ATTACHMENTS}, } //]]> diff --git a/phpBB/styles/prosilver/template/posting_editor.html b/phpBB/styles/prosilver/template/posting_editor.html index cac82baf91..2ae224bc3a 100644 --- a/phpBB/styles/prosilver/template/posting_editor.html +++ b/phpBB/styles/prosilver/template/posting_editor.html @@ -170,7 +170,15 @@ -- cgit v1.2.1 From 508b43c19733d15fcacc2226e91b1ec26a20a562 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Sun, 10 Nov 2013 18:56:07 -0800 Subject: [ticket/11915] Update the inline attachment bbcode indices on every upload. PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 55 +++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index 1479b64f47..9c0526eb9f 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -148,6 +148,7 @@ phpbb.plupload.setData = function(data) { * @return undefined */ phpbb.plupload.update = function (data, action, index) { + phpbb.plupload.updateBbcode(action, index); phpbb.plupload.setData(data); phpbb.plupload.updateRows(); phpbb.plupload.clearParams(); @@ -306,6 +307,60 @@ phpbb.plupload.hideEmptyList = function() { } } +/** + * Update the indices used in inline attachment bbcodes. This ensures that the bbcodes + * correspond to the correct file after a file is added or removed. This should be called + * before the phpbb.plupload,data and phpbb.plupload.ids arrays are updated, otherwise it will + * not work correctly. + * + * @param string action The action that occurred -- either "addition" or "removal" + * @param int index The index of the attachment from phpbb.plupload.ids that was affected. + * + * @return undefined + */ +phpbb.plupload.updateBbcode = function (action, index) { + var textarea = $(phpbb.plupload.form).find('textarea[name="message"]'), + text = textarea.val(), + removal = (action === 'removal'); + + // Return if the bbcode isn't used at all. + if (text.indexOf('[attachment=') === -1) { + return; + } + + // Private function used to replace the bbcode. + var updateBbcode = function(match, fileName) { + // Remove the bbcode if the file was removed. + if (removal && index === i) { + return ''; + } + var newIndex = i + ((removal) ? -1 : 1); + return '[attachment=' + newIndex +']' + fileName + '[/attachment]'; + }; + + // Private function used to generate search regexp + var searchRegexp = function (index) { + return new RegExp('\\[attachment=' + index + '\\](.*?)\\[\\/attachment\\]', 'g'); + } + // The update order of the indices is based on the action taken to ensure that we don't corrupt + // the bbcode index by updating it several times as we move through the loop. + // Removal loop starts at the removed index and moves to the end of the array. + // Addition loop starts at the end of the array and moves to the added index at 0. + var searchLoop = function () { + if (typeof i === 'undefined') { + i = (removal) ? index : phpbb.plupload.ids.length - 1; + } + return (removal) ? (i < phpbb.plupload.ids.length): (i >= index); + } + var i; + + while (searchLoop()) { + text = text.replace(searchRegexp(i), updateBbcode); + (removal) ? i++ : i--; + } + textarea.val(text); +}; + /** * Get Plupload file objects based on their upload status. * -- cgit v1.2.1 From 1272c9272e37c3418e2e70a3eb3fdfc6462eb353 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 27 Nov 2013 12:49:50 -0800 Subject: [ticket/11915] Remove unnecessary JS file and include others using INCLUDEJS. PHPBB3-11915 --- phpBB/styles/prosilver/template/overall_footer.html | 2 +- phpBB/styles/prosilver/template/plupload.html | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/phpBB/styles/prosilver/template/overall_footer.html b/phpBB/styles/prosilver/template/overall_footer.html index f7d0269edb..662008b7fa 100644 --- a/phpBB/styles/prosilver/template/overall_footer.html +++ b/phpBB/styles/prosilver/template/overall_footer.html @@ -60,8 +60,8 @@ -{$SCRIPTS} +{$SCRIPTS} diff --git a/phpBB/styles/prosilver/template/plupload.html b/phpBB/styles/prosilver/template/plupload.html index c689ef8427..ab788fb596 100644 --- a/phpBB/styles/prosilver/template/plupload.html +++ b/phpBB/styles/prosilver/template/plupload.html @@ -1,5 +1,3 @@ - - - + + -- cgit v1.2.1 From 6837b724a39492154b05dfa993a9eac35d7879e7 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 27 Nov 2013 13:35:12 -0800 Subject: [ticket/11915] Do not allow more files to be added if queue is already running PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index 9c0526eb9f..594b88bae5 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -588,6 +588,9 @@ uploader.bind('FilesAdded', function(up, files) { $('#file-total-progress-bar').css('width', up.total.percent + '%'); }); + // Do not allow more files to be added to the running queue. + phpbb.plupload.disableUploader(); + // Start uploading the files once the user has selected them. up.start(); }); @@ -659,6 +662,9 @@ uploader.bind('UploadComplete', function(up, files) { $(this).css('width', 0).show(); }); }, 2000); + + // Re-enable the uploader + phpbb.plupload.enableUploader(); }); })(jQuery); // Avoid conflicts with other libraries -- cgit v1.2.1 From 708622a0bba1656f8538767ab8d0e0260075dddc Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 27 Nov 2013 13:50:52 -0800 Subject: [ticket/11915] Do not display the "Place inline" button when JS is disabled. PHPBB3-11915 --- phpBB/styles/prosilver/theme/plupload.css | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/theme/plupload.css b/phpBB/styles/prosilver/theme/plupload.css index b296e61e74..b5edea5f15 100644 --- a/phpBB/styles/prosilver/theme/plupload.css +++ b/phpBB/styles/prosilver/theme/plupload.css @@ -32,7 +32,7 @@ float: right; } -#attach-row-tpl { +#attach-row-tpl, .nojs .file-inline-bbcode { display: none; } -- cgit v1.2.1 From 9c1cacae42d5d993a004a311089d7ac943002dc5 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 27 Nov 2013 14:48:38 -0800 Subject: [ticket/11915] Provide the URL to the attachment when it's uploaded. PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 37 +++++++++++++++------- phpBB/includes/message_parser.php | 4 ++- .../prosilver/template/posting_attach_body.html | 2 +- 3 files changed, 29 insertions(+), 14 deletions(-) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index 594b88bae5..d0bf545dbc 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -142,15 +142,17 @@ phpbb.plupload.setData = function(data) { /** * Update the attachment data in the HTML and the phpbb & phpbb.plupload objects. * - * @param array data Array containing the new data to use. - * @param string action The action that required the update. Used to update the inline attachment bbcodes. - * @param int index The index from phpbb.plupload_ids that was affected by the action. + * @param array data Array containing the new data to use. + * @param string action The action that required the update. Used to update the inline attachment bbcodes. + * @param int index The index from phpbb.plupload_ids that was affected by the action. + * @param array downloadUrl Optional array of download urls to update. * @return undefined */ -phpbb.plupload.update = function (data, action, index) { +phpbb.plupload.update = function (data, action, index, downloadUrl) { + phpbb.plupload.updateBbcode(action, index); phpbb.plupload.setData(data); - phpbb.plupload.updateRows(); + phpbb.plupload.updateRows(downloadUrl); phpbb.plupload.clearParams(); phpbb.plupload.updateMultipartParams(phpbb.plupload.getSerializedData()); }; @@ -158,11 +160,12 @@ phpbb.plupload.update = function (data, action, index) { /** * Update the relevant elements and hidden data for all attachments. * + * @param array downloadUrl Optional array of download urls to update. * @return undefined */ -phpbb.plupload.updateRows = function () { +phpbb.plupload.updateRows = function (downloadUrl) { for (var i = 0; i < phpbb.plupload.ids.length; i++) { - phpbb.plupload.updateRow(i); + phpbb.plupload.updateRow(i, downloadUrl); } }; @@ -193,11 +196,21 @@ phpbb.plupload.insertRow = function(file) { * Update the relevant elements and hidden data for an attachment. * * @param int index The index from phpbb.plupload.ids of the attachment to edit. + * @param array downloadUrl Optional array of download urls to update. * @return undefined */ -phpbb.plupload.updateRow = function (index) { - var attach = phpbb.plupload.data[index]; - var row = $('[data-attach-id="' + attach.attach_id + '"]'); +phpbb.plupload.updateRow = function (index, downloadUrl) { + var attach = phpbb.plupload.data[index], + row = $('[data-attach-id="' + attach.attach_id + '"]'); + + // Add the link to the file + if (typeof downloadUrl !== 'undefined' && typeof downloadUrl[index] !== 'undefined') { + var url = downloadUrl[index].replace('&', '&'), + link = $(''); + + link.attr('href', url).html(attach.real_filename); + row.find('.file-name').html(link) + } row.find('textarea').attr('name', 'comment_list[' + index + ']'); row.find('.file-inline-bbcode').attr('onclick', 'attach_inline(' + index + ',\'' + attach.real_filename + '\');'); @@ -637,12 +650,12 @@ uploader.bind('FileUploaded', function(up, file, response) { if (typeof error !== 'undefined') { phpbb.plupload.fileError(file, error); } else if (file.status === plupload.DONE) { - file.attachment_data = json[0]; + file.attachment_data = json['data'][0]; row.attr('data-attach-id', file.attachment_data.attach_id); row.find('.file-inline-bbcode').show(); row.find('.file-status').addClass('file-uploaded'); - phpbb.plupload.update(json, 'addition', 0); + phpbb.plupload.update(json['data'], 'addition', 0, [json['download_url']]); } }); diff --git a/phpBB/includes/message_parser.php b/phpBB/includes/message_parser.php index c964e1a5e2..ad6743b3a3 100644 --- a/phpBB/includes/message_parser.php +++ b/phpBB/includes/message_parser.php @@ -1582,8 +1582,10 @@ class parse_message extends bbcode_firstpass if (isset($this->plupload) && $this->plupload->is_active()) { + $download_url = append_sid("{$phpbb_root_path}download/file.{$phpEx}", 'mode=view&id=' . $new_entry['attach_id']); + // Send the client the attachment data to maintain state - $json_response->send($this->attachment_data); + $json_response->send(array('data' => $this->attachment_data, 'download_url' => $download_url)); } } } diff --git a/phpBB/styles/prosilver/template/posting_attach_body.html b/phpBB/styles/prosilver/template/posting_attach_body.html index af215bb710..2af0686ac8 100644 --- a/phpBB/styles/prosilver/template/posting_attach_body.html +++ b/phpBB/styles/prosilver/template/posting_attach_body.html @@ -55,7 +55,7 @@ - {attach_row.FILENAME} + {attach_row.FILENAME}   -- cgit v1.2.1 From f858ec1f56431bd1001eb686ccf972ae3577d16c Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 27 Nov 2013 15:34:23 -0800 Subject: [ticket/11915] Fix various problems with responsive design. PHPBB3-11915 --- phpBB/styles/prosilver/template/forum_fn.js | 2 +- .../styles/prosilver/template/posting_attach_body.html | 18 ++++++++++++++---- phpBB/styles/prosilver/theme/responsive.css | 9 +++++++++ 3 files changed, 24 insertions(+), 5 deletions(-) diff --git a/phpBB/styles/prosilver/template/forum_fn.js b/phpBB/styles/prosilver/template/forum_fn.js index a45f750a63..495df2871d 100644 --- a/phpBB/styles/prosilver/template/forum_fn.js +++ b/phpBB/styles/prosilver/template/forum_fn.js @@ -747,7 +747,7 @@ function parse_document(container) /** * Hide empty responsive tables */ - container.find('table.responsive > tbody').each(function() { + container.find('table.responsive > tbody').not('.responsive-skip-empty').each(function() { var items = $(this).children('tr'); if (items.length == 0) { diff --git a/phpBB/styles/prosilver/template/posting_attach_body.html b/phpBB/styles/prosilver/template/posting_attach_body.html index 2af0686ac8..711a26e25c 100644 --- a/phpBB/styles/prosilver/template/posting_attach_body.html +++ b/phpBB/styles/prosilver/template/posting_attach_body.html @@ -26,26 +26,33 @@ - + - + - + - + diff --git a/phpBB/styles/prosilver/theme/responsive.css b/phpBB/styles/prosilver/theme/responsive.css index 397ff12942..bfa2448296 100644 --- a/phpBB/styles/prosilver/theme/responsive.css +++ b/phpBB/styles/prosilver/theme/responsive.css @@ -499,6 +499,10 @@ fieldset.display-actions { margin: 0 25px; } +.attach-comment dfn { + width: 100%; +} + @media only screen and (max-width: 500px), only screen and (max-device-width: 500px) { p.responsive-center { @@ -526,4 +530,9 @@ fieldset.display-actions { display: block; margin-bottom: 5px; } + + .attach-controls { + margin-top: 5px; + width: 100%; + } } -- cgit v1.2.1 From a70f08513d588b4a2966f140769cb71ef228b480 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 27 Nov 2013 15:41:13 -0800 Subject: [ticket/11915] Fix spacing and ensure that strings are translated. PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index d0bf545dbc..f30ba9b33e 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -10,7 +10,7 @@ phpbb.plupload.data = phpbb.plupload.ids = []; * * @return undefined */ -phpbb.plupload.initialize = function () { +phpbb.plupload.initialize = function() { phpbb.plupload.form = $(phpbb.plupload.config.form_hook)[0], phpbb.plupload.rowTpl = $('#attach-row-tpl')[0].outerHTML; @@ -51,7 +51,7 @@ phpbb.plupload.clearParams = function() { * @param object obj * @return undefined */ -phpbb.plupload.updateMultipartParams = function (obj) { +phpbb.plupload.updateMultipartParams = function(obj) { uploader.settings.multipart_params = $.extend( uploader.settings.multipart_params, obj @@ -64,7 +64,7 @@ phpbb.plupload.updateMultipartParams = function (obj) { * @return object An object in the form 'attachment_data[i][key]': value as * expected by the server */ -phpbb.plupload.getSerializedData = function () { +phpbb.plupload.getSerializedData = function() { var obj = {}; for (var i = 0; i < phpbb.plupload.data.length; i++) { var datum = phpbb.plupload.data[i]; @@ -87,7 +87,7 @@ phpbb.plupload.getSerializedData = function () { * @return array An array containing all gathered data in the form of * array(index => object(property: value)) */ -phpbb.plupload.getDataFromHtml = function () { +phpbb.plupload.getDataFromHtml = function() { var data = [], form = phpbb.plupload.form; @@ -148,7 +148,7 @@ phpbb.plupload.setData = function(data) { * @param array downloadUrl Optional array of download urls to update. * @return undefined */ -phpbb.plupload.update = function (data, action, index, downloadUrl) { +phpbb.plupload.update = function(data, action, index, downloadUrl) { phpbb.plupload.updateBbcode(action, index); phpbb.plupload.setData(data); @@ -163,7 +163,7 @@ phpbb.plupload.update = function (data, action, index, downloadUrl) { * @param array downloadUrl Optional array of download urls to update. * @return undefined */ -phpbb.plupload.updateRows = function (downloadUrl) { +phpbb.plupload.updateRows = function(downloadUrl) { for (var i = 0; i < phpbb.plupload.ids.length; i++) { phpbb.plupload.updateRow(i, downloadUrl); } @@ -199,7 +199,7 @@ phpbb.plupload.insertRow = function(file) { * @param array downloadUrl Optional array of download urls to update. * @return undefined */ -phpbb.plupload.updateRow = function (index, downloadUrl) { +phpbb.plupload.updateRow = function(index, downloadUrl) { var attach = phpbb.plupload.data[index], row = $('[data-attach-id="' + attach.attach_id + '"]'); @@ -225,7 +225,7 @@ phpbb.plupload.updateRow = function (index, downloadUrl) { * @param int index Attachment index from phpbb.plupload.ids * @return undefined */ -phpbb.plupload.updateHiddenData = function (row, attach, index) { +phpbb.plupload.updateHiddenData = function(row, attach, index) { row.find('input[type="hidden"]').remove(); for (var key in attach) { @@ -248,7 +248,7 @@ phpbb.plupload.updateHiddenData = function (row, attach, index) { * * @return undefined */ -phpbb.plupload.deleteFile = function (row, attachId) { +phpbb.plupload.deleteFile = function(row, attachId) { // If there's no attach id, then the file hasn't been uploaded. Simply delete the row. if (typeof attachId === 'undefined') { phpbb.plupload.hideEmptyList(); @@ -331,7 +331,7 @@ phpbb.plupload.hideEmptyList = function() { * * @return undefined */ -phpbb.plupload.updateBbcode = function (action, index) { +phpbb.plupload.updateBbcode = function(action, index) { var textarea = $(phpbb.plupload.form).find('textarea[name="message"]'), text = textarea.val(), removal = (action === 'removal'); @@ -352,14 +352,14 @@ phpbb.plupload.updateBbcode = function (action, index) { }; // Private function used to generate search regexp - var searchRegexp = function (index) { + var searchRegexp = function(index) { return new RegExp('\\[attachment=' + index + '\\](.*?)\\[\\/attachment\\]', 'g'); } // The update order of the indices is based on the action taken to ensure that we don't corrupt // the bbcode index by updating it several times as we move through the loop. // Removal loop starts at the removed index and moves to the end of the array. // Addition loop starts at the end of the array and moves to the added index at 0. - var searchLoop = function () { + var searchLoop = function() { if (typeof i === 'undefined') { i = (removal) ? index : phpbb.plupload.ids.length - 1; } @@ -382,7 +382,7 @@ phpbb.plupload.updateBbcode = function (action, index) { * * @return Returns an array of the Plupload file objects matching the status. */ -phpbb.plupload.getFilesByStatus = function (status) { +phpbb.plupload.getFilesByStatus = function(status) { var files = []; $.each(uploader.files, function(i, file) { @@ -400,7 +400,7 @@ phpbb.plupload.getFilesByStatus = function (status) { * * @return bool Returns true if the limit has been reached. False if otherwise. */ -phpbb.plupload.handleMaxFilesReached = function () { +phpbb.plupload.handleMaxFilesReached = function() { // If there is no limit, the user is an admin or moderator. if (!phpbb.plupload.maxFiles) { return false; @@ -426,7 +426,7 @@ phpbb.plupload.handleMaxFilesReached = function () { * * @return undefined */ -phpbb.plupload.disableUploader = function () { +phpbb.plupload.disableUploader = function() { $('#add_files').addClass('disabled'); uploader.disableBrowse(); } @@ -436,7 +436,7 @@ phpbb.plupload.disableUploader = function () { * * @return undefined */ -phpbb.plupload.enableUploader = function () { +phpbb.plupload.enableUploader = function() { $('#add_files').removeClass('disabled'); uploader.disableBrowse(false); } @@ -447,7 +447,7 @@ phpbb.plupload.enableUploader = function () { * @param string error Error message to present to the user. * @return undefined */ -phpbb.plupload.markQueuedFailed = function (error) { +phpbb.plupload.markQueuedFailed = function(error) { var files = phpbb.plupload.getFilesByStatus(plupload.QUEUED); $.each(files, function(i, file) { @@ -463,7 +463,7 @@ phpbb.plupload.markQueuedFailed = function (error) { * @param string error Error message to present to the user. * @return undefined */ -phpbb.plupload.fileError = function (file, error) { +phpbb.plupload.fileError = function(file, error) { file.status = plupload.FAILED; file.error = error; $('#' + file.id).find('.file-status').addClass('file-error').attr({'data-error-title': phpbb.plupload.lang.ERROR, 'data-error-message': error}); @@ -506,9 +506,9 @@ $('#file-list').on('click', '.file-error', function(e) { uploader.bind('Error', function(up, error) { // The error message that Plupload provides for these is vague, so we'll be more specific. if (error.code === plupload.FILE_EXTENSION_ERROR) { - error.message = plupload.translate('Invalid file extension: ') + error.file.name; + error.message = plupload.translate('Invalid file extension:') + ' ' + error.file.name; } else if (error.code === plupload.FILE_SIZE_ERROR) { - error.message = plupload.translate('File too large: ') + error.file.name; + error.message = plupload.translate('File too large:') + ' ' + error.file.name; } phpbb.alert(phpbb.plupload.lang.ERROR, error.message); }); -- cgit v1.2.1 From 8b351104edf7dbe974de6d52851ca402769bf101 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 27 Nov 2013 15:49:16 -0800 Subject: [ticket/11915] Check if trigger_error() was called after sending chunk. PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index f30ba9b33e..44e385f9d5 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -563,6 +563,11 @@ uploader.bind('ChunkUploaded', function(up, file, response) { }); } + // If trigger_error() was called, then a permission error likely occurred. + if (typeof json.title !== 'undefined') { + json.error = {message: json.message}; + } + if (json.error) { file.status = plupload.FAILED; up.trigger('FileUploaded', file, { -- cgit v1.2.1 From 1fedad5e078d6c47913c881bc30704941e3a21d1 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 27 Nov 2013 16:30:16 -0800 Subject: [ticket/11915] Fix the Plupload test. PHPBB3-11915 --- tests/functional/plupload_test.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/functional/plupload_test.php b/tests/functional/plupload_test.php index 6dd9224839..a91e70c7bb 100644 --- a/tests/functional/plupload_test.php +++ b/tests/functional/plupload_test.php @@ -107,7 +107,7 @@ class phpbb_functional_plupload_test extends phpbb_functional_test_case else { $response = json_decode(self::$client->getResponse()->getContent(), true); - $this->assertEquals('valid.jpg', $response[0]['real_filename']); + $this->assertEquals('valid.jpg', $response['data'][0]['real_filename']); } unlink($this->path . 'chunk'); @@ -144,6 +144,6 @@ class phpbb_functional_plupload_test extends phpbb_functional_test_case ); $response = json_decode(self::$client->getResponse()->getContent(), true); - $this->assertEquals('valid.jpg', $response[0]['real_filename']); + $this->assertEquals('valid.jpg', $response['data'][0]['real_filename']); } } -- cgit v1.2.1 From 020b7a31bf2c92af274d701e7dbbc875ff88c7c4 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 27 Nov 2013 18:01:18 -0800 Subject: [ticket/11915] Make the user aware of the drag-and-drop zone. PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 5 +++++ phpBB/language/en/plupload.php | 1 + phpBB/styles/prosilver/template/posting_attach_body.html | 2 +- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index 44e385f9d5..47c17b4dfa 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -26,6 +26,11 @@ phpbb.plupload.initialize = function() { // Initialize the Plupload uploader. uploader.init(); + + // Point out the drag-and-drop zone if it's supported. + if (!uploader.features.dragdrop) { + $('#drag-n-drop-message').show(); + } }; /** diff --git a/phpBB/language/en/plupload.php b/phpBB/language/en/plupload.php index 74ae8b7c78..0615a673d1 100644 --- a/phpBB/language/en/plupload.php +++ b/phpBB/language/en/plupload.php @@ -42,6 +42,7 @@ $lang = array_merge($lang, array( 'PLUPLOAD_CLOSE' => 'Close', 'PLUPLOAD_DRAG' => 'Drag files here.', 'PLUPLOAD_DUPLICATE_ERROR' => 'Duplicate file error.', + 'PLUPLOAD_DRAG_TEXTAREA' => 'You may also attach files by dragging and dropping them in the message box.', 'PLUPLOAD_ERR_INPUT' => 'Failed to open input stream.', 'PLUPLOAD_ERR_MOVE_UPLOADED' => 'Failed to move uploaded file.', 'PLUPLOAD_ERR_OUTPUT' => 'Failed to open output stream.', diff --git a/phpBB/styles/prosilver/template/posting_attach_body.html b/phpBB/styles/prosilver/template/posting_attach_body.html index 711a26e25c..348aded5c1 100644 --- a/phpBB/styles/prosilver/template/posting_attach_body.html +++ b/phpBB/styles/prosilver/template/posting_attach_body.html @@ -1,7 +1,7 @@
-

{L_ADD_ATTACHMENT_EXPLAIN}

+

{L_ADD_ATTACHMENT_EXPLAIN}

-- cgit v1.2.1 From 628323a80af58642565ff55f381e7b289f45b8da Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 11 Dec 2013 19:15:39 -0800 Subject: [ticket/11915] Remove unused language string. PHPBB3-11915 --- phpBB/language/en/plupload.php | 1 - phpBB/styles/prosilver/template/plupload.html | 1 - 2 files changed, 2 deletions(-) diff --git a/phpBB/language/en/plupload.php b/phpBB/language/en/plupload.php index 0615a673d1..6039de7dbf 100644 --- a/phpBB/language/en/plupload.php +++ b/phpBB/language/en/plupload.php @@ -50,7 +50,6 @@ $lang = array_merge($lang, array( 'PLUPLOAD_ERR_FILE_COUNT' => 'File count error.', 'PLUPLOAD_ERR_FILE_INVALID_EXT' => 'Error: Invalid file extension:', 'PLUPLOAD_ERR_RUNTIME_MEMORY' => 'Runtime ran out of available memory.', - 'PLUPLOAD_ERR_UPLOAD_LIMIT' => 'Upload element accepts only %d file(s) at a time. Extra files were stripped.', 'PLUPLOAD_ERR_UPLOAD_URL' => 'Upload URL might be wrong or does not exist.', 'PLUPLOAD_EXTENSION_ERROR' => 'File extension error.', 'PLUPLOAD_FILE' => 'File: %s', diff --git a/phpBB/styles/prosilver/template/plupload.html b/phpBB/styles/prosilver/template/plupload.html index ab788fb596..33520aab14 100644 --- a/phpBB/styles/prosilver/template/plupload.html +++ b/phpBB/styles/prosilver/template/plupload.html @@ -35,7 +35,6 @@ phpbb.plupload = { 'Status': '{LA_PLUPLOAD_STATUS}', 'Stop Upload': '{LA_PLUPLOAD_STOP_UPLOAD}', 'Stop current upload': '{LA_PLUPLOAD_STOP_CURRENT_UPLOAD}', - 'Upload element accepts only %d file(s) at a time. Extra files were stripped.': '{LA_PLUPLOAD_ERR_UPLOAD_LIMIT}', "Upload URL might be wrong or doesn't exist.": '{LA_PLUPLOAD_ERR_UPLOAD_URL}', 'Uploaded %d/%d files': '{LA_PLUPLOAD_UPLOADED}', '%d files queued': '{LA_PLUPLOAD_FILES_QUEUED}', -- cgit v1.2.1 From c1cca8aff4570421df934c2ac3121d50e2f4eb7b Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 18 Dec 2013 11:53:37 -0800 Subject: [ticket/11915] Hide attachments table when removing last failed file. PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index 47c17b4dfa..3e450e9bab 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -256,8 +256,10 @@ phpbb.plupload.updateHiddenData = function(row, attach, index) { phpbb.plupload.deleteFile = function(row, attachId) { // If there's no attach id, then the file hasn't been uploaded. Simply delete the row. if (typeof attachId === 'undefined') { - phpbb.plupload.hideEmptyList(); - row.slideUp(100).delay(100).remove(); + row.slideUp(100, function() { + row.remove(); + phpbb.plupload.hideEmptyList(); + }); } var index = phpbb.plupload.getIndex(attachId); -- cgit v1.2.1 From 702efc849694f6acc15f60e0398b938b4021d7af Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 18 Dec 2013 17:56:46 -0800 Subject: [ticket/11915] Remove files that are no longer used. PHPBB3-11915 --- phpBB/assets/plupload/img/done.gif | Bin 0 -> 1024 bytes phpBB/assets/plupload/img/error.gif | Bin 0 -> 994 bytes phpBB/assets/plupload/img/throbber.gif | Bin 0 -> 1922 bytes .../css/jquery.plupload.queue.css | 181 --------------------- .../jquery.plupload.queue/img/backgrounds.gif | Bin 2977 -> 0 bytes .../jquery.plupload.queue/img/buttons-disabled.png | Bin 1292 -> 0 bytes .../plupload/jquery.plupload.queue/img/buttons.png | Bin 1439 -> 0 bytes .../plupload/jquery.plupload.queue/img/delete.gif | Bin 180 -> 0 bytes .../plupload/jquery.plupload.queue/img/done.gif | Bin 1024 -> 0 bytes .../plupload/jquery.plupload.queue/img/error.gif | Bin 994 -> 0 bytes .../jquery.plupload.queue/img/throbber.gif | Bin 1922 -> 0 bytes .../jquery.plupload.queue/img/transp50.png | Bin 399 -> 0 bytes .../jquery.plupload.queue.min.js | 1 - .../styles/prosilver/template/overall_header.html | 1 - phpBB/styles/prosilver/template/plupload.html | 2 - phpBB/styles/prosilver/theme/plupload.css | 6 +- 16 files changed, 3 insertions(+), 188 deletions(-) create mode 100644 phpBB/assets/plupload/img/done.gif create mode 100644 phpBB/assets/plupload/img/error.gif create mode 100644 phpBB/assets/plupload/img/throbber.gif delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/css/jquery.plupload.queue.css delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/img/backgrounds.gif delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/img/buttons-disabled.png delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/img/buttons.png delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/img/delete.gif delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/img/done.gif delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/img/error.gif delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/img/throbber.gif delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/img/transp50.png delete mode 100644 phpBB/assets/plupload/jquery.plupload.queue/jquery.plupload.queue.min.js diff --git a/phpBB/assets/plupload/img/done.gif b/phpBB/assets/plupload/img/done.gif new file mode 100644 index 0000000000..29f3ed7c97 Binary files /dev/null and b/phpBB/assets/plupload/img/done.gif differ diff --git a/phpBB/assets/plupload/img/error.gif b/phpBB/assets/plupload/img/error.gif new file mode 100644 index 0000000000..4682b63007 Binary files /dev/null and b/phpBB/assets/plupload/img/error.gif differ diff --git a/phpBB/assets/plupload/img/throbber.gif b/phpBB/assets/plupload/img/throbber.gif new file mode 100644 index 0000000000..4ae8b16a5a Binary files /dev/null and b/phpBB/assets/plupload/img/throbber.gif differ diff --git a/phpBB/assets/plupload/jquery.plupload.queue/css/jquery.plupload.queue.css b/phpBB/assets/plupload/jquery.plupload.queue/css/jquery.plupload.queue.css deleted file mode 100644 index 1a23a3d8a2..0000000000 --- a/phpBB/assets/plupload/jquery.plupload.queue/css/jquery.plupload.queue.css +++ /dev/null @@ -1,181 +0,0 @@ -/* - Plupload -------------------------------------------------------------------- */ - -.plupload_button { - display: -moz-inline-box; /* FF < 3*/ - display: inline-block; - font: normal 12px sans-serif; - text-decoration: none; - color: #42454a; - border: 1px solid #bababa; - padding: 2px 8px 3px 20px; - margin-right: 4px; - background: #f3f3f3 url('../img/buttons.png') no-repeat 0 center; - outline: 0; - - /* Optional rounded corners for browsers that support it */ - -moz-border-radius: 3px; - -khtml-border-radius: 3px; - -webkit-border-radius: 3px; - border-radius: 3px; -} - -.plupload_button:hover { - color: #000; - text-decoration: none; -} - -.plupload_disabled, a.plupload_disabled:hover { - color: #737373; - border-color: #c5c5c5; - background: #ededed url('../img/buttons-disabled.png') no-repeat 0 center; - cursor: default; -} - -.plupload_add { - background-position: -181px center; -} - -.plupload_wrapper { - font: normal 11px Verdana,sans-serif; - width: 100%; -} - -.plupload_container { - padding: 8px; - background: url('../img/transp50.png'); - /*-moz-border-radius: 5px;*/ -} - -.plupload_container input { - border: 1px solid #DDD; - font: normal 11px Verdana,sans-serif; - width: 98%; -} - -.plupload_header {background: #2A2C2E url('../img/backgrounds.gif') repeat-x;} -.plupload_header_content { - background: url('../img/backgrounds.gif') no-repeat 0 -317px; - min-height: 56px; - padding-left: 60px; - color: #FFF; -} -.plupload_header_title { - font: normal 18px sans-serif; - padding: 6px 0 3px; -} -.plupload_header_text { - font: normal 12px sans-serif; -} - -.plupload_filelist { - margin: 0; - padding: 0; - list-style: none; -} - -.plupload_scroll .plupload_filelist { - height: 185px; - background: #F5F5F5; - overflow-y: scroll; -} - -.plupload_filelist li { - padding: 10px 8px; - background: #F5F5F5 url('../img/backgrounds.gif') repeat-x 0 -156px; - border-bottom: 1px solid #DDD; -} - -.plupload_filelist_header, .plupload_filelist_footer { - background: #DFDFDF; - padding: 8px 8px; - color: #42454A; -} -.plupload_filelist_header { - border-top: 1px solid #EEE; - border-bottom: 1px solid #CDCDCD; -} - -.plupload_filelist_footer {border-top: 1px solid #FFF; height: 22px; line-height: 20px; vertical-align: middle;} -.plupload_file_name {float: left; overflow: hidden} -.plupload_file_status {color: #777;} -.plupload_file_status span {color: #42454A;} -.plupload_file_size, .plupload_file_status, .plupload_progress { - float: right; - width: 80px; -} -.plupload_file_size, .plupload_file_status, .plupload_file_action {text-align: right;} - -.plupload_filelist .plupload_file_name { - width: 205px; - white-space: nowrap; - text-overflow: ellipsis; -} - -.plupload_file_action { - float: right; - width: 16px; - height: 16px; - margin-left: 15px; -} - -.plupload_file_action * { - display: none; - width: 16px; - height: 16px; -} - -li.plupload_uploading {background: #ECF3DC url('../img/backgrounds.gif') repeat-x 0 -238px;} -li.plupload_done {color:#AAA} - -li.plupload_delete a { - background: url('../img/delete.gif'); -} - -li.plupload_failed a { - background: url('../img/error.gif'); - cursor: default; -} - -li.plupload_done a { - background: url('../img/done.gif'); - cursor: default; -} - -.plupload_progress, .plupload_upload_status { - display: none; -} - -.plupload_progress_container { - margin-top: 3px; - border: 1px solid #CCC; - background: #FFF; - padding: 1px; -} -.plupload_progress_bar { - width: 0px; - height: 7px; - background: #CDEB8B; -} - -.plupload_scroll .plupload_filelist_header .plupload_file_action, .plupload_scroll .plupload_filelist_footer .plupload_file_action { - margin-right: 17px; -} - -/* Floats */ - -.plupload_clear,.plupload_clearer {clear: both;} -.plupload_clearer, .plupload_progress_bar { - display: block; - font-size: 0; - line-height: 0; -} - -li.plupload_droptext { - background: transparent; - text-align: center; - vertical-align: middle; - border: 0; - line-height: 165px; -} diff --git a/phpBB/assets/plupload/jquery.plupload.queue/img/backgrounds.gif b/phpBB/assets/plupload/jquery.plupload.queue/img/backgrounds.gif deleted file mode 100644 index 39e33ebc02..0000000000 Binary files a/phpBB/assets/plupload/jquery.plupload.queue/img/backgrounds.gif and /dev/null differ diff --git a/phpBB/assets/plupload/jquery.plupload.queue/img/buttons-disabled.png b/phpBB/assets/plupload/jquery.plupload.queue/img/buttons-disabled.png deleted file mode 100644 index afa11af9b9..0000000000 Binary files a/phpBB/assets/plupload/jquery.plupload.queue/img/buttons-disabled.png and /dev/null differ diff --git a/phpBB/assets/plupload/jquery.plupload.queue/img/buttons.png b/phpBB/assets/plupload/jquery.plupload.queue/img/buttons.png deleted file mode 100644 index 153e73885a..0000000000 Binary files a/phpBB/assets/plupload/jquery.plupload.queue/img/buttons.png and /dev/null differ diff --git a/phpBB/assets/plupload/jquery.plupload.queue/img/delete.gif b/phpBB/assets/plupload/jquery.plupload.queue/img/delete.gif deleted file mode 100644 index 78ca8b3b49..0000000000 Binary files a/phpBB/assets/plupload/jquery.plupload.queue/img/delete.gif and /dev/null differ diff --git a/phpBB/assets/plupload/jquery.plupload.queue/img/done.gif b/phpBB/assets/plupload/jquery.plupload.queue/img/done.gif deleted file mode 100644 index 29f3ed7c97..0000000000 Binary files a/phpBB/assets/plupload/jquery.plupload.queue/img/done.gif and /dev/null differ diff --git a/phpBB/assets/plupload/jquery.plupload.queue/img/error.gif b/phpBB/assets/plupload/jquery.plupload.queue/img/error.gif deleted file mode 100644 index 4682b63007..0000000000 Binary files a/phpBB/assets/plupload/jquery.plupload.queue/img/error.gif and /dev/null differ diff --git a/phpBB/assets/plupload/jquery.plupload.queue/img/throbber.gif b/phpBB/assets/plupload/jquery.plupload.queue/img/throbber.gif deleted file mode 100644 index 4ae8b16a5a..0000000000 Binary files a/phpBB/assets/plupload/jquery.plupload.queue/img/throbber.gif and /dev/null differ diff --git a/phpBB/assets/plupload/jquery.plupload.queue/img/transp50.png b/phpBB/assets/plupload/jquery.plupload.queue/img/transp50.png deleted file mode 100644 index eb0efe104b..0000000000 Binary files a/phpBB/assets/plupload/jquery.plupload.queue/img/transp50.png and /dev/null differ diff --git a/phpBB/assets/plupload/jquery.plupload.queue/jquery.plupload.queue.min.js b/phpBB/assets/plupload/jquery.plupload.queue/jquery.plupload.queue.min.js deleted file mode 100644 index a38f914ad7..0000000000 --- a/phpBB/assets/plupload/jquery.plupload.queue/jquery.plupload.queue.min.js +++ /dev/null @@ -1 +0,0 @@ -;(function(e,t){function r(e){return plupload.translate(e)||e}function i(t,n){n.contents().each(function(t,n){n=e(n),n.is(".plupload")||n.remove()}),n.prepend('
'+'
'+'
'+'
'+'
'+r("Select files")+"
"+'
'+r("Add files to the upload queue and click the start button.")+"
"+"
"+"
"+'
'+'
'+'
'+r("Filename")+"
"+'
 
'+'
'+r("Status")+"
"+'
'+r("Size")+"
"+'
 
'+"
"+'
    '+'"+"
    "+"
    "+"
    "+''+"
    ")}var n={};e.fn.pluploadQueue=function(s){return s?(this.each(function(){function c(t){var n;t.status==plupload.DONE&&(n="plupload_done"),t.status==plupload.FAILED&&(n="plupload_failed"),t.status==plupload.QUEUED&&(n="plupload_delete"),t.status==plupload.UPLOADING&&(n="plupload_uploading");var r=e("#"+t.id).attr("class",n).find("a").css("display","block");t.hint&&r.attr("title",t.hint)}function h(){e("span.plupload_total_status",a).html(u.total.percent+"%"),e("div.plupload_progress_bar",a).css("width",u.total.percent+"%"),e("span.plupload_upload_status",a).html(t.sprintf(r("Uploaded %d/%d files"),u.total.uploaded,u.files.length))}function p(){var n=e("ul.plupload_filelist",a).html(""),i=0,s;e.each(u.files,function(t,r){s="",r.status==plupload.DONE&&(r.target_name&&(s+=''),s+='',s+='',i++,e("#"+f+"_count").val(i)),n.append('
  • '+'
    '+r.name+"
    "+'
    '+'
    '+r.percent+"%
    "+'
    '+plupload.formatSize(r.size)+"
    "+'
     
    '+s+"
  • "),c(r),e("#"+r.id+".plupload_delete a").click(function(t){e("#"+r.id).remove(),u.removeFile(r),t.preventDefault()})}),e("span.plupload_total_file_size",a).html(plupload.formatSize(u.total.size)),u.total.queued===0?e("span.plupload_add_text",a).html(r("Add Files")):e("span.plupload_add_text",a).html(t.sprintf(r("%d files queued"),u.total.queued)),e("a.plupload_start",a).toggleClass("plupload_disabled",u.files.length==u.total.uploaded+u.total.failed),n[0].scrollTop=n[0].scrollHeight,h(),!u.files.length&&u.features.dragdrop&&u.settings.dragdrop&&e("#"+f+"_filelist").append('
  • '+r("Drag files here.")+"
  • ")}function d(){delete n[f],u.destroy(),a.html(l),u=a=l=null}var u,a,f,l;a=e(this),f=a.attr("id"),f||(f=plupload.guid(),a.attr("id",f)),l=a.html(),i(f,a),s=e.extend({dragdrop:!0,browse_button:f+"_browse",container:f},s),s.dragdrop&&(s.drop_element=f+"_filelist"),u=new plupload.Uploader(s),n[f]=u,u.bind("UploadFile",function(t,n){e("#"+n.id).addClass("plupload_current_file")}),u.bind("Init",function(t,n){!s.unique_names&&s.rename&&a.on("click","#"+f+"_filelist div.plupload_file_name span",function(n){var r=e(n.target),i,s,o,u="";i=t.getFile(r.parents("li")[0].id),o=i.name,s=/^(.+)(\.[^.]+)$/.exec(o),s&&(o=s[1],u=s[2]),r.hide().after(''),r.next().val(o).focus().blur(function(){r.show().next().remove()}).keydown(function(t){var n=e(this);t.keyCode==13&&(t.preventDefault(),i.name=n.val()+u,r.html(i.name),n.blur())})}),e("#"+f+"_container").attr("title","Using runtime: "+n.runtime),e("a.plupload_start",a).click(function(t){e(this).hasClass("plupload_disabled")||u.start(),t.preventDefault()}),e("a.plupload_stop",a).click(function(e){e.preventDefault(),u.stop()}),e("a.plupload_start",a).addClass("plupload_disabled")}),u.bind("Error",function(t,n){var i=n.file,s;i&&(s=n.message,n.details&&(s+=" ("+n.details+")"),n.code==plupload.FILE_SIZE_ERROR&&alert(r("Error: File too large:")+" "+i.name),n.code==plupload.FILE_EXTENSION_ERROR&&alert(r("Error: Invalid file extension:")+" "+i.name),i.hint=s,e("#"+i.id).attr("class","plupload_failed").find("a").css("display","block").attr("title",s)),n.code===plupload.INIT_ERROR&&setTimeout(function(){d()},1)}),u.bind("PostInit",function(t){t.settings.dragdrop&&t.features.dragdrop&&e("#"+f+"_filelist").append('
  • '+r("Drag files here.")+"
  • ")}),u.init(),u.bind("StateChanged",function(){u.state===plupload.STARTED?(e("li.plupload_delete a,div.plupload_buttons",a).hide(),e("span.plupload_upload_status,div.plupload_progress,a.plupload_stop",a).css("display","block"),e("span.plupload_upload_status",a).html("Uploaded "+u.total.uploaded+"/"+u.files.length+" files"),s.multiple_queues&&e("span.plupload_total_status,span.plupload_total_file_size",a).show()):(p(),e("a.plupload_stop,div.plupload_progress",a).hide(),e("a.plupload_delete",a).css("display","block"),s.multiple_queues&&u.total.uploaded+u.total.failed==u.files.length&&(e(".plupload_buttons,.plupload_upload_status",a).css("display","inline"),e(".plupload_start",a).addClass("plupload_disabled"),e("span.plupload_total_status,span.plupload_total_file_size",a).hide()))}),u.bind("FilesAdded",p),u.bind("FilesRemoved",function(){var t=e("#"+f+"_filelist").scrollTop();p(),e("#"+f+"_filelist").scrollTop(t)}),u.bind("FileUploaded",function(e,t){c(t)}),u.bind("UploadProgress",function(t,n){e("#"+n.id+" div.plupload_file_status",a).html(n.percent+"%"),c(n),h()}),s.setup&&s.setup(u)}),this):n[e(this[0]).attr("id")]}})(jQuery,mOxie); \ No newline at end of file diff --git a/phpBB/styles/prosilver/template/overall_header.html b/phpBB/styles/prosilver/template/overall_header.html index 529e6625fe..a89585d899 100644 --- a/phpBB/styles/prosilver/template/overall_header.html +++ b/phpBB/styles/prosilver/template/overall_header.html @@ -36,7 +36,6 @@ - diff --git a/phpBB/styles/prosilver/template/plupload.html b/phpBB/styles/prosilver/template/plupload.html index 33520aab14..b7c6e42ab9 100644 --- a/phpBB/styles/prosilver/template/plupload.html +++ b/phpBB/styles/prosilver/template/plupload.html @@ -51,8 +51,6 @@ phpbb.plupload = { headers: {'X-PHPBB-USING-PLUPLOAD': '1', 'X-Requested-With': 'XMLHttpRequest'}, file_data_name: 'fileupload', multipart_params: {'add_file': '{LA_ADD_FILE}'}, - img_path: '{T_ASSETS_PATH}/plupload/jquery.plupload.queue/img', - element_hook: '#attach-panel .inner', form_hook: '#postform', browse_button: 'add_files', drop_element : 'message', diff --git a/phpBB/styles/prosilver/theme/plupload.css b/phpBB/styles/prosilver/theme/plupload.css index b5edea5f15..8569eca662 100644 --- a/phpBB/styles/prosilver/theme/plupload.css +++ b/phpBB/styles/prosilver/theme/plupload.css @@ -58,15 +58,15 @@ } .file-status.file-working { - background: url('../../../assets/plupload/jquery.plupload.queue/img/throbber.gif'); + background: url('../../../assets/plupload/img/throbber.gif'); } .file-status.file-uploaded { - background: url('../../../assets/plupload/jquery.plupload.queue/img/done.gif'); + background: url('../../../assets/plupload/img/done.gif'); } .file-status.file-error { - background: url('../../../assets/plupload/jquery.plupload.queue/img/error.gif'); + background: url('../../../assets/plupload/img/error.gif'); } .file-status { -- cgit v1.2.1 From 9a21dec1b609db71bd9ed6b3b74c16d2d8418029 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 18 Dec 2013 19:00:41 -0800 Subject: [ticket/11915] Replace inline onclick event for inserting attachment bbcodes. PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 12 +++++++++++- phpBB/styles/prosilver/template/posting_attach_body.html | 2 +- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index 3e450e9bab..f84a8b0a56 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -218,7 +218,6 @@ phpbb.plupload.updateRow = function(index, downloadUrl) { } row.find('textarea').attr('name', 'comment_list[' + index + ']'); - row.find('.file-inline-bbcode').attr('onclick', 'attach_inline(' + index + ',\'' + attach.real_filename + '\');'); phpbb.plupload.updateHiddenData(row, attach, index); }; @@ -488,6 +487,17 @@ phpbb.plupload.initialize(); +/** + * Insert inline attachment bbcode. + */ + $('#file-list').on('click', '.file-inline-bbcode', function(e) { + var attachId = $(this).parents('.attach-row').attr('data-attach-id'), + index = phpbb.plupload.getIndex(attachId); + + attach_inline(index, phpbb.plupload.data[index].real_filename); + e.preventDefault(); +}); + /** * Delete a file. */ diff --git a/phpBB/styles/prosilver/template/posting_attach_body.html b/phpBB/styles/prosilver/template/posting_attach_body.html index 348aded5c1..8a2004c29b 100644 --- a/phpBB/styles/prosilver/template/posting_attach_body.html +++ b/phpBB/styles/prosilver/template/posting_attach_body.html @@ -64,7 +64,7 @@
    {LA_PLUPLOAD_FILENAME}{L_PLUPLOAD_FILENAME} {L_FILE_COMMENT} {L_PLUPLOAD_SIZE} {L_PLUPLOAD_STATUS}
    + {L_PLUPLOAD_FILENAME}   + + {L_FILE_COMMENT} + {L_PLUPLOAD_SIZE} + + + {L_PLUPLOAD_STATUS} @@ -60,12 +67,15 @@   + {attach_row.S_HIDDEN} {attach_row.FILESIZE} + {attach_row.FILESIZE} + {attach_row.FILENAME} -   +   -- cgit v1.2.1 From ebc2d1dd1bd2a102ee8c8f1b134068e7a1f75c00 Mon Sep 17 00:00:00 2001 From: Cesar G Date: Wed, 18 Dec 2013 19:23:14 -0800 Subject: [ticket/11915] Pass the data to the template instead of scraping HTML for it. PHPBB3-11915 --- phpBB/assets/javascript/plupload.js | 36 +++------------------------ phpBB/posting.php | 5 ++-- phpBB/styles/prosilver/template/plupload.html | 1 + 3 files changed, 7 insertions(+), 35 deletions(-) diff --git a/phpBB/assets/javascript/plupload.js b/phpBB/assets/javascript/plupload.js index f84a8b0a56..6b37b009a4 100644 --- a/phpBB/assets/javascript/plupload.js +++ b/phpBB/assets/javascript/plupload.js @@ -1,5 +1,5 @@ plupload.addI18n(phpbb.plupload.i18n); -phpbb.plupload.data = phpbb.plupload.ids = []; +phpbb.plupload.ids = []; (function($) { // Avoid conflicts with other libraries @@ -19,9 +19,8 @@ phpbb.plupload.initialize = function() { // Show multi-file upload options. $('#attach-panel-multi').show(); - // Gather existing attachment data from HTML. - var data = phpbb.plupload.getDataFromHtml(); - phpbb.plupload.setData(data); + // Set attachment data. + phpbb.plupload.setData(phpbb.plupload.data); phpbb.plupload.updateMultipartParams(phpbb.plupload.getSerializedData()); // Initialize the Plupload uploader. @@ -84,35 +83,6 @@ phpbb.plupload.getSerializedData = function() { return obj; }; -/** - * Grab all attachment data present in the HTML. This assumes - * that all revelant data is present in form elements that have a name that follows - * the naming convention of attachment_data[index][property] - * - * @return array An array containing all gathered data in the form of - * array(index => object(property: value)) - */ -phpbb.plupload.getDataFromHtml = function() { - var data = [], - form = phpbb.plupload.form; - - for (var i = 0; i < form.length; i++) { - if (form[i].name.indexOf('attachment_data[') !== 0) { - continue; - } - - var matches = form[i].name.match(/attachment_data\[(\d+)\]\[([^\]]+)\]/); - var index = matches[1]; - var property = matches[2]; - - if (typeof data[index] === 'undefined') { - data[index] = {}; - } - data[index][property] = form[i].value; - } - return data; -}; - /** * Get the index from the phpbb.plupload.data array where the given * attachment id appears. diff --git a/phpBB/posting.php b/phpBB/posting.php index 6066511d1c..902f1b2175 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -1548,8 +1548,9 @@ $template->assign_vars(array( 'S_BBCODE_QUOTE' => $quote_status, 'S_POST_ACTION' => $s_action, - 'S_HIDDEN_FIELDS' => $s_hidden_fields) -); + 'S_HIDDEN_FIELDS' => $s_hidden_fields, + 'S_ATTACH_DATA' => json_encode($message_parser->attachment_data), +)); /** * This event allows you to modify template variables for the posting screen diff --git a/phpBB/styles/prosilver/template/plupload.html b/phpBB/styles/prosilver/template/plupload.html index b7c6e42ab9..21acae1c44 100644 --- a/phpBB/styles/prosilver/template/plupload.html +++ b/phpBB/styles/prosilver/template/plupload.html @@ -61,6 +61,7 @@ phpbb.plupload = { }, order: '{ATTACH_ORDER}', maxFiles: {MAX_ATTACHMENTS}, + data: {S_ATTACH_DATA}, } //]]> -- cgit v1.2.1