From 1f00f48e717d1a9e82ef627c16353595ddb8ae61 Mon Sep 17 00:00:00 2001 From: Zoddo Date: Mon, 23 Apr 2018 10:49:53 +0200 Subject: [PATCH 01/61] [ticket/13128] Remove deprecated Sphinx options These configuration options are deprecated: * sql_query_info (since sphinx 2.2.2; used only by the "search" command which was removed; wiki need to be updated accordingly) * max_matches (since sphinx 2.2.3; should be set in the sphinx query) * charset_type (since sphinx 2.2.2; sphinx now supports only utf-8) * compat_sphinxql_magics (since sphinx 2.2.1) PHPBB3-13128 --- phpBB/docs/sphinx.sample.conf | 4 ---- phpBB/phpbb/search/fulltext_sphinx.php | 4 ---- 2 files changed, 8 deletions(-) diff --git a/phpBB/docs/sphinx.sample.conf b/phpBB/docs/sphinx.sample.conf index 0a210ecd1a..85cba190d7 100644 --- a/phpBB/docs/sphinx.sample.conf +++ b/phpBB/docs/sphinx.sample.conf @@ -29,7 +29,6 @@ source source_phpbb_{SPHINX_ID}_main AND p.post_id >= $start AND p.post_id <= $end sql_query_post = sql_query_post_index = UPDATE phpbb_sphinx SET max_doc_id = $maxid WHERE counter_id = 1 - sql_query_info = SELECT * FROM phpbb_posts WHERE post_id = $id sql_attr_uint = forum_id sql_attr_uint = topic_id sql_attr_uint = poster_id @@ -72,7 +71,6 @@ index index_phpbb_{SPHINX_ID}_main morphology = none stopwords = min_word_len = 2 - charset_type = utf-8 charset_table = U+FF10..U+FF19->0..9, 0..9, U+FF41..U+FF5A->a..z, U+FF21..U+FF3A->a..z, A..Z->a..z, a..z, U+0149, U+017F, U+0138, U+00DF, U+00FF, U+00C0..U+00D6->U+00E0..U+00F6, U+00E0..U+00F6, U+00D8..U+00DE->U+00F8..U+00FE, U+00F8..U+00FE, U+0100->U+0101, U+0101, U+0102->U+0103, U+0103, U+0104->U+0105, U+0105, U+0106->U+0107, U+0107, U+0108->U+0109, U+0109, U+010A->U+010B, U+010B, U+010C->U+010D, U+010D, U+010E->U+010F, U+010F, U+0110->U+0111, U+0111, U+0112->U+0113, U+0113, U+0114->U+0115, U+0115, U+0116->U+0117, U+0117, U+0118->U+0119, U+0119, U+011A->U+011B, U+011B, U+011C->U+011D, U+011D, U+011E->U+011F, U+011F, U+0130->U+0131, U+0131, U+0132->U+0133, U+0133, U+0134->U+0135, U+0135, U+0136->U+0137, U+0137, U+0139->U+013A, U+013A, U+013B->U+013C, U+013C, U+013D->U+013E, U+013E, U+013F->U+0140, U+0140, U+0141->U+0142, U+0142, U+0143->U+0144, U+0144, U+0145->U+0146, U+0146, U+0147->U+0148, U+0148, U+014A->U+014B, U+014B, U+014C->U+014D, U+014D, U+014E->U+014F, U+014F, U+0150->U+0151, U+0151, U+0152->U+0153, U+0153, U+0154->U+0155, U+0155, U+0156->U+0157, U+0157, U+0158->U+0159, U+0159, U+015A->U+015B, U+015B, U+015C->U+015D, U+015D, U+015E->U+015F, U+015F, U+0160->U+0161, U+0161, U+0162->U+0163, U+0163, U+0164->U+0165, U+0165, U+0166->U+0167, U+0167, U+0168->U+0169, U+0169, U+016A->U+016B, U+016B, U+016C->U+016D, U+016D, U+016E->U+016F, U+016F, U+0170->U+0171, U+0171, U+0172->U+0173, U+0173, U+0174->U+0175, U+0175, U+0176->U+0177, U+0177, U+0178->U+00FF, U+00FF, U+0179->U+017A, U+017A, U+017B->U+017C, U+017C, U+017D->U+017E, U+017E, U+0410..U+042F->U+0430..U+044F, U+0430..U+044F, U+4E00..U+9FFF min_prefix_len = 0 min_infix_len = 0 @@ -88,13 +86,11 @@ indexer } searchd { - compat_sphinxql_magics = 0 listen = localhost:9312 log = {DATA_PATH}/log/searchd.log query_log = {DATA_PATH}/log/sphinx-query.log read_timeout = 5 max_children = 30 pid_file = {DATA_PATH}/searchd.pid - max_matches = 20000 binlog_path = {DATA_PATH} } diff --git a/phpBB/phpbb/search/fulltext_sphinx.php b/phpBB/phpbb/search/fulltext_sphinx.php index e2eeb5f7f3..d780442f89 100644 --- a/phpBB/phpbb/search/fulltext_sphinx.php +++ b/phpBB/phpbb/search/fulltext_sphinx.php @@ -292,7 +292,6 @@ class fulltext_sphinx AND p.post_id >= $start AND p.post_id <= $end'), array('sql_query_post', ''), array('sql_query_post_index', 'UPDATE ' . SPHINX_TABLE . ' SET max_doc_id = $maxid WHERE counter_id = 1'), - array('sql_query_info', 'SELECT * FROM ' . POSTS_TABLE . ' WHERE post_id = $id'), array('sql_attr_uint', 'forum_id'), array('sql_attr_uint', 'topic_id'), array('sql_attr_uint', 'poster_id'), @@ -333,7 +332,6 @@ class fulltext_sphinx array('morphology', 'none'), array('stopwords', ''), array('min_word_len', '2'), - array('charset_type', 'utf-8'), array('charset_table', 'U+FF10..U+FF19->0..9, 0..9, U+FF41..U+FF5A->a..z, U+FF21..U+FF3A->a..z, A..Z->a..z, a..z, U+0149, U+017F, U+0138, U+00DF, U+00FF, U+00C0..U+00D6->U+00E0..U+00F6, U+00E0..U+00F6, U+00D8..U+00DE->U+00F8..U+00FE, U+00F8..U+00FE, U+0100->U+0101, U+0101, U+0102->U+0103, U+0103, U+0104->U+0105, U+0105, U+0106->U+0107, U+0107, U+0108->U+0109, U+0109, U+010A->U+010B, U+010B, U+010C->U+010D, U+010D, U+010E->U+010F, U+010F, U+0110->U+0111, U+0111, U+0112->U+0113, U+0113, U+0114->U+0115, U+0115, U+0116->U+0117, U+0117, U+0118->U+0119, U+0119, U+011A->U+011B, U+011B, U+011C->U+011D, U+011D, U+011E->U+011F, U+011F, U+0130->U+0131, U+0131, U+0132->U+0133, U+0133, U+0134->U+0135, U+0135, U+0136->U+0137, U+0137, U+0139->U+013A, U+013A, U+013B->U+013C, U+013C, U+013D->U+013E, U+013E, U+013F->U+0140, U+0140, U+0141->U+0142, U+0142, U+0143->U+0144, U+0144, U+0145->U+0146, U+0146, U+0147->U+0148, U+0148, U+014A->U+014B, U+014B, U+014C->U+014D, U+014D, U+014E->U+014F, U+014F, U+0150->U+0151, U+0151, U+0152->U+0153, U+0153, U+0154->U+0155, U+0155, U+0156->U+0157, U+0157, U+0158->U+0159, U+0159, U+015A->U+015B, U+015B, U+015C->U+015D, U+015D, U+015E->U+015F, U+015F, U+0160->U+0161, U+0161, U+0162->U+0163, U+0163, U+0164->U+0165, U+0165, U+0166->U+0167, U+0167, U+0168->U+0169, U+0169, U+016A->U+016B, U+016B, U+016C->U+016D, U+016D, U+016E->U+016F, U+016F, U+0170->U+0171, U+0171, U+0172->U+0173, U+0173, U+0174->U+0175, U+0175, U+0176->U+0177, U+0177, U+0178->U+00FF, U+00FF, U+0179->U+017A, U+017A, U+017B->U+017C, U+017C, U+017D->U+017E, U+017E, U+0410..U+042F->U+0430..U+044F, U+0430..U+044F, U+4E00..U+9FFF'), array('min_prefix_len', '0'), array('min_infix_len', '0'), @@ -346,14 +344,12 @@ class fulltext_sphinx array('mem_limit', $this->config['fulltext_sphinx_indexer_mem_limit'] . 'M'), ), 'searchd' => array( - array('compat_sphinxql_magics' , '0'), array('listen' , ($this->config['fulltext_sphinx_host'] ? $this->config['fulltext_sphinx_host'] : 'localhost') . ':' . ($this->config['fulltext_sphinx_port'] ? $this->config['fulltext_sphinx_port'] : '9312')), array('log', $this->config['fulltext_sphinx_data_path'] . 'log/searchd.log'), array('query_log', $this->config['fulltext_sphinx_data_path'] . 'log/sphinx-query.log'), array('read_timeout', '5'), array('max_children', '30'), array('pid_file', $this->config['fulltext_sphinx_data_path'] . 'searchd.pid'), - array('max_matches', (string) SPHINX_MAX_MATCHES), array('binlog_path', $this->config['fulltext_sphinx_data_path']), ), ); From 5e70c9b831d7f316132b98ee90b301a8b358b32e Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 18 Jun 2018 11:58:20 +0200 Subject: [PATCH 02/61] [ticket/15668] Replace .load() with .on('load') PHPBB3-15668 --- phpBB/assets/javascript/core.js | 2 +- phpBB/styles/prosilver/template/forum_fn.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/assets/javascript/core.js b/phpBB/assets/javascript/core.js index bd1925baf6..60021f1ecf 100644 --- a/phpBB/assets/javascript/core.js +++ b/phpBB/assets/javascript/core.js @@ -1644,7 +1644,7 @@ phpbb.lazyLoadAvatars = function loadAvatars() { }); }; -$(window).load(phpbb.lazyLoadAvatars); +$(window).on('load', phpbb.lazyLoadAvatars); /** * Apply code editor to all textarea elements with data-bbcode attribute diff --git a/phpBB/styles/prosilver/template/forum_fn.js b/phpBB/styles/prosilver/template/forum_fn.js index 3f59709ac6..474570e84e 100644 --- a/phpBB/styles/prosilver/template/forum_fn.js +++ b/phpBB/styles/prosilver/template/forum_fn.js @@ -612,7 +612,7 @@ function parseDocument($container) { // If there are any images in the links list, run the check again after they have loaded $linksAll.find('img').each(function() { - $(this).load(function() { + $(this).on('load', function() { check(); }); }); From 5fbd4584be49e416642ca1593084bca15fc60d30 Mon Sep 17 00:00:00 2001 From: Toxyy Date: Mon, 9 Jul 2018 16:54:11 -0400 Subject: [PATCH 03/61] [ticket/15719] Add core events to viewtopic to edit the post_list sql query Event added in viewtopic.php so you can modify post_list sql The query, sql limit, sql start, sort keys and days are editable PHPBB3-15719 --- phpBB/viewtopic.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 3c25c3b037..20316afb32 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -1148,6 +1148,29 @@ $sql = 'SELECT p.post_id " . (($join_user_sql[$sort_key]) ? 'AND u.user_id = p.poster_id': '') . " $limit_posts_time ORDER BY $sql_sort_order"; + +/** +* Event to modify the SQL query that gets post_list +* +* @event core.viewtopic_modify_post_list_sql +* @var string sql The SQL query to generate the post_list +* @var int sql_limit The number of posts the query fetches +* @var int sql_start The index the query starts to fetch from +* @var string sort_key Key the posts are sorted by +* @var string sort_days Display posts of previous x days +* @var int forum_id Forum ID +* @since 3.2.4-RC1 +*/ +$vars = array( + 'sql', + 'sql_limit', + 'sql_start', + 'sort_key', + 'sort_days', + 'forum_id', +); +extract($phpbb_dispatcher->trigger_event('core.viewtopic_modify_post_list_sql', compact($vars))); + $result = $db->sql_query_limit($sql, $sql_limit, $sql_start); $i = ($store_reverse) ? $sql_limit - 1 : 0; From 12fdfe145af65b26b42a6a9a18134f748264e04d Mon Sep 17 00:00:00 2001 From: MikelAlejoBR Date: Sun, 22 Jul 2018 17:08:35 +0200 Subject: [PATCH 04/61] [ticket/15622] Fix quoting in PMs when BBCodes are disabled Before parsing the private message to be loaded a simple BBCode status check is done to verify that BBCodes are enabled. Depending on that option the quote will be formated as BBCode or as plain text, similarly to what is done in posting.php. PHPBB3-15622 --- phpBB/includes/ucp/ucp_pm_compose.php | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index bf18e76568..e108356584 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -978,7 +978,26 @@ function compose_pm($id, $mode, $action, $user_folders = array()) censor_text($message_parser->message), $quote_attributes ); - $message_parser->message = $message_link . $quote_text . "\n\n"; + if ($bbcode_status) + { + $message_parser->message = $message_link . $quote_text . "\n\n"; + } + else + { + $offset = 0; + $quote_string = "> "; + $message = censor_text(trim($message_parser->message)); + // see if we are nesting. It's easily tricked but should work for one level of nesting + if (strpos($message, ">") !== false) + { + $offset = 10; + } + $message = utf8_wordwrap($message, 75 + $offset, "\n"); + + $message = $quote_string . $message; + $message = str_replace("\n", "\n" . $quote_string, $message); + $message_parser->message = $quote_username . " " . $user->lang['WROTE'] . ":\n" . $message . "\n"; + } } if (($action == 'reply' || $action == 'quote' || $action == 'quotepost') && !$preview && !$refresh) From 4ebd582947d44b4fa34e0fd81602a171b744b677 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Thu, 26 Jul 2018 15:54:35 +0200 Subject: [PATCH 05/61] [ticket/11500] Remove unnamed input PHPBB3-11500 --- phpBB/adm/style/acp_profile.html | 2 +- tests/functional/acp_profile_field_test.php | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/phpBB/adm/style/acp_profile.html b/phpBB/adm/style/acp_profile.html index bd3935b464..25bf97efd5 100644 --- a/phpBB/adm/style/acp_profile.html +++ b/phpBB/adm/style/acp_profile.html @@ -238,7 +238,7 @@
- + {S_FORM_TOKEN} diff --git a/tests/functional/acp_profile_field_test.php b/tests/functional/acp_profile_field_test.php index 88df782faa..7a0a6ca941 100644 --- a/tests/functional/acp_profile_field_test.php +++ b/tests/functional/acp_profile_field_test.php @@ -28,18 +28,20 @@ class phpbb_functional_acp_profile_field_test extends phpbb_functional_test_case public function data_add_profile_field() { return array( - array('bool', 'profilefields.type.bool', + array('profilefields.type.bool', array( + 'field_ident' => 'bool', + 'lang_name' => 'bool', 'lang_options[0]' => 'foo', 'lang_options[1]' => 'bar', ), - array(), ), - array('dropdown', 'profilefields.type.dropdown', + array('profilefields.type.dropdown', array( + 'field_ident' => 'dropdown', + 'lang_name' => 'dropdown', 'lang_options' => "foo\nbar\nbar\nfoo", ), - array(), ), ); } @@ -47,13 +49,12 @@ class phpbb_functional_acp_profile_field_test extends phpbb_functional_test_case /** * @dataProvider data_add_profile_field */ - public function test_add_profile_field($name, $type, $page1_settings, $page2_settings) + public function test_add_profile_field($type, $page1_settings) { // Custom profile fields page $crawler = self::request('GET', 'adm/index.php?i=acp_profile&mode=profile&sid=' . $this->sid); // these language strings are html $form = $crawler->selectButton('Create new field')->form(array( - 'field_ident' => $name, 'field_type' => $type, )); $crawler = self::submit($form); @@ -63,7 +64,7 @@ class phpbb_functional_acp_profile_field_test extends phpbb_functional_test_case $crawler = self::submit($form); // Fill form for profile field specific options - $form = $crawler->selectButton('Save')->form($page2_settings); + $form = $crawler->selectButton('Save')->form(); $crawler= self::submit($form); $this->assertContainsLang('ADDED_PROFILE_FIELD', $crawler->text()); From 184d24bb166b754b571bd7ef49b7cfacf1c8381d Mon Sep 17 00:00:00 2001 From: MikelAlejoBR Date: Tue, 31 Jul 2018 16:06:49 +0200 Subject: [PATCH 06/61] [ticket/15622] Extract duplicated code PHPBB3-15622 --- phpBB/includes/functions_content.php | 52 +++++++++++++++++++++++++++ phpBB/includes/ucp/ucp_pm_compose.php | 24 +------------ phpBB/posting.php | 35 ++++-------------- 3 files changed, 60 insertions(+), 51 deletions(-) diff --git a/phpBB/includes/functions_content.php b/phpBB/includes/functions_content.php index 40d44cfe7b..aee90aab99 100644 --- a/phpBB/includes/functions_content.php +++ b/phpBB/includes/functions_content.php @@ -1758,3 +1758,55 @@ class bitfield $this->data = $this->data | $bitfield->get_blob(); } } + +/** + * Formats the quote according to the given BBCode status setting + * + * @param bool $bbcode_status The status of the BBCode setting + * @param array $quote_attributes The attributes of the quoted post + * @param phpbb\textformatter\utils $text_formatter_utils Text formatter utilities + * @param parse_message $message_parser Message parser class + * @param string $message_link Link of the original quoted post + * @since 3.2.4-RC1 + */ +function format_quote($bbcode_status, $quote_attributes, $text_formatter_utils, $message_parser, $message_link = '') +{ + if ($bbcode_status) + { + $quote_text = $text_formatter_utils->generate_quote( + censor_text($message_parser->message), + $quote_attributes + ); + + if($message_link) + { + $message_parser->message = $message_link . $quote_text . "\n\n"; + } + else + { + $message_parser->message = $quote_text . "\n\n"; + } + } + else + { + $offset = 0; + $quote_string = "> "; + $message = censor_text(trim($message_parser->message)); + // see if we are nesting. It's easily tricked but should work for one level of nesting + if (strpos($message, ">") !== false) + { + $offset = 10; + } + $message = utf8_wordwrap($message, 75 + $offset, "\n"); + + $message = $quote_string . $message; + $message = str_replace("\n", "\n" . $quote_string, $message); + + $message_parser->message = $quote_attributes['author'] . " " . $user->lang['WROTE'] . ":\n" . $message . "\n"; + + if($message_link) + { + $message_parser->message = $message_link . $message_parser->message; + } + } +} diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index e108356584..48bb9bf21f 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -974,30 +974,8 @@ function compose_pm($id, $mode, $action, $user_folders = array()) { $quote_attributes['post_id'] = $post['msg_id']; } - $quote_text = $phpbb_container->get('text_formatter.utils')->generate_quote( - censor_text($message_parser->message), - $quote_attributes - ); - if ($bbcode_status) - { - $message_parser->message = $message_link . $quote_text . "\n\n"; - } - else - { - $offset = 0; - $quote_string = "> "; - $message = censor_text(trim($message_parser->message)); - // see if we are nesting. It's easily tricked but should work for one level of nesting - if (strpos($message, ">") !== false) - { - $offset = 10; - } - $message = utf8_wordwrap($message, 75 + $offset, "\n"); - $message = $quote_string . $message; - $message = str_replace("\n", "\n" . $quote_string, $message); - $message_parser->message = $quote_username . " " . $user->lang['WROTE'] . ":\n" . $message . "\n"; - } + format_quote($bbcode_status, $quote_attributes, $phpbb_container->get('text_formatter.utils'), $message_parser, $message_link); } if (($action == 'reply' || $action == 'quote' || $action == 'quotepost') && !$preview && !$refresh) diff --git a/phpBB/posting.php b/phpBB/posting.php index 3530bb5048..de399068bc 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -1630,35 +1630,14 @@ if ($generate_quote) // Remove attachment bbcode tags from the quoted message to avoid mixing with the new post attachments if any $message_parser->message = preg_replace('#\[attachment=([0-9]+)\](.*?)\[\/attachment\]#uis', '\\2', $message_parser->message); - if ($config['allow_bbcode']) - { - $message_parser->message = $bbcode_utils->generate_quote( - censor_text($message_parser->message), - array( - 'author' => $post_data['quote_username'], - 'post_id' => $post_data['post_id'], - 'time' => $post_data['post_time'], - 'user_id' => $post_data['poster_id'], - ) - ); - $message_parser->message .= "\n\n"; - } - else - { - $offset = 0; - $quote_string = "> "; - $message = censor_text(trim($message_parser->message)); - // see if we are nesting. It's easily tricked but should work for one level of nesting - if (strpos($message, ">") !== false) - { - $offset = 10; - } - $message = utf8_wordwrap($message, 75 + $offset, "\n"); + $quote_attributes = array( + 'author' => $post_data['quote_username'], + 'post_id' => $post_data['post_id'], + 'time' => $post_data['post_time'], + 'user_id' => $post_data['poster_id'], + ); - $message = $quote_string . $message; - $message = str_replace("\n", "\n" . $quote_string, $message); - $message_parser->message = $post_data['quote_username'] . " " . $user->lang['WROTE'] . ":\n" . $message . "\n"; - } + format_quote($config['allow_bbcode'], $quote_attributes, $bbcode_utils, $message_parser); } if (($mode == 'reply' || $mode == 'quote') && !$submit && !$preview && !$refresh) From ce2196517bec7dd05f85e7253cb124c0f6d92581 Mon Sep 17 00:00:00 2001 From: MikelAlejoBR Date: Wed, 1 Aug 2018 15:26:14 +0200 Subject: [PATCH 07/61] [ticket/15622] Fix message link generation Now the message link is generated in different formats depending on whether BBCodes are allowed or not in the site. PHPBB3-15622 --- phpBB/includes/ucp/ucp_pm_compose.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index 48bb9bf21f..d201c5fe73 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -954,7 +954,16 @@ function compose_pm($id, $mode, $action, $user_folders = array()) $post_id = $request->variable('p', 0); if ($config['allow_post_links']) { - $message_link = "[url=" . generate_board_url() . "/viewtopic.$phpEx?p={$post_id}#p{$post_id}]{$user->lang['SUBJECT']}{$user->lang['COLON']} {$message_subject}[/url]\n\n"; + $message_link = generate_board_url() . "/viewtopic.$phpEx?p={$post_id}#p{$post_id}"; + $message_link_subject = "{$user->lang['SUBJECT']}{$user->lang['COLON']} {$message_subject}"; + if ($bbcode_status) + { + $message_link = "[url=" . $message_link . "]" . $message_link_subject . "[/url]\n\n"; + } + else + { + $message_link = $message_link . " - " . $message_link_subject . "\n\n"; + } } else { From 521aec5923874f8757592a07e09357b323460b00 Mon Sep 17 00:00:00 2001 From: MikelAlejoBR Date: Wed, 1 Aug 2018 17:37:21 +0200 Subject: [PATCH 08/61] [ticket/15622] Correct code style PHPBB3-15622 --- phpBB/includes/functions_content.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/includes/functions_content.php b/phpBB/includes/functions_content.php index aee90aab99..1bc217b694 100644 --- a/phpBB/includes/functions_content.php +++ b/phpBB/includes/functions_content.php @@ -1778,7 +1778,7 @@ function format_quote($bbcode_status, $quote_attributes, $text_formatter_utils, $quote_attributes ); - if($message_link) + if ($message_link) { $message_parser->message = $message_link . $quote_text . "\n\n"; } @@ -1804,7 +1804,7 @@ function format_quote($bbcode_status, $quote_attributes, $text_formatter_utils, $message_parser->message = $quote_attributes['author'] . " " . $user->lang['WROTE'] . ":\n" . $message . "\n"; - if($message_link) + if ($message_link) { $message_parser->message = $message_link . $message_parser->message; } From ada8bc9da2790eeb600d61222b23ffdb5f025bf6 Mon Sep 17 00:00:00 2001 From: MikelAlejoBR Date: Wed, 1 Aug 2018 18:01:37 +0200 Subject: [PATCH 09/61] [ticket/15622] Refactor message link concatenation PHPBB3-15622 --- phpBB/includes/functions_content.php | 17 +++++------------ 1 file changed, 5 insertions(+), 12 deletions(-) diff --git a/phpBB/includes/functions_content.php b/phpBB/includes/functions_content.php index 1bc217b694..1e80da98d3 100644 --- a/phpBB/includes/functions_content.php +++ b/phpBB/includes/functions_content.php @@ -1778,14 +1778,7 @@ function format_quote($bbcode_status, $quote_attributes, $text_formatter_utils, $quote_attributes ); - if ($message_link) - { - $message_parser->message = $message_link . $quote_text . "\n\n"; - } - else - { - $message_parser->message = $quote_text . "\n\n"; - } + $message_parser->message = $quote_text . "\n\n"; } else { @@ -1803,10 +1796,10 @@ function format_quote($bbcode_status, $quote_attributes, $text_formatter_utils, $message = str_replace("\n", "\n" . $quote_string, $message); $message_parser->message = $quote_attributes['author'] . " " . $user->lang['WROTE'] . ":\n" . $message . "\n"; + } - if ($message_link) - { - $message_parser->message = $message_link . $message_parser->message; - } + if ($message_link) + { + $message_parser->message = $message_link . $message_parser->message; } } From fc674873c7ad0acaf7773003534fd2279a4dd1bf Mon Sep 17 00:00:00 2001 From: rxu Date: Sun, 12 Aug 2018 21:54:13 +0700 Subject: [PATCH 10/61] [ticket/15755] Fix event vars in /phpbb/attachment/delete.php PHPBB3-15755 --- phpBB/phpbb/attachment/delete.php | 56 ++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/phpBB/phpbb/attachment/delete.php b/phpBB/phpbb/attachment/delete.php index 922f24b5dc..3c98e21587 100644 --- a/phpBB/phpbb/attachment/delete.php +++ b/phpBB/phpbb/attachment/delete.php @@ -104,6 +104,8 @@ class delete $this->set_sql_constraints($mode); + $sql_id = $this->sql_id; + /** * Perform additional actions before collecting data for attachment(s) deletion * @@ -122,11 +124,21 @@ class delete ); extract($this->dispatcher->trigger_event('core.delete_attachments_collect_data_before', compact($vars))); + $this->sql_id = $sql_id; + unset($sql_id); + // Collect post and topic ids for later use if we need to touch remaining entries (if resync is enabled) $this->collect_attachment_info($resync); // Delete attachments from database - $this->delete_attachments_from_db(); + $this->delete_attachments_from_db($mode, $ids, $resync); + + $sql_id = $this->sql_id; + $post_ids = $this->post_ids; + $topic_ids = $this->topic_ids; + $message_ids = $this->message_ids; + $physical = $this->physical; + $num_deleted = $this->num_deleted; /** * Perform additional actions after attachment(s) deletion from the database @@ -156,13 +168,21 @@ class delete ); extract($this->dispatcher->trigger_event('core.delete_attachments_from_database_after', compact($vars))); + $this->sql_id = $sql_id; + $this->post_ids = $post_ids; + $this->topic_ids = $topic_ids; + $this->message_ids = $message_ids; + $this->physical = $physical; + $this->num_deleted = $num_deleted; + unset($sql_id, $post_ids, $topic_ids, $message_ids, $physical, $num_deleted); + if (!$this->num_deleted) { return 0; } // Delete attachments from filesystem - $this->remove_from_filesystem(); + $this->remove_from_filesystem($mode, $ids, $resync); // If we do not resync, we do not need to adjust any message, post, topic or user entries if (!$resync) @@ -288,8 +308,14 @@ class delete /** * Delete attachments from database table */ - protected function delete_attachments_from_db() + protected function delete_attachments_from_db($mode, $ids, $resync) { + $sql_id = $this->sql_id; + $post_ids = $this->post_ids; + $topic_ids = $this->topic_ids; + $message_ids = $this->message_ids; + $physical = $this->physical; + /** * Perform additional actions before attachment(s) deletion * @@ -316,6 +342,13 @@ class delete ); extract($this->dispatcher->trigger_event('core.delete_attachments_before', compact($vars))); + $this->sql_id = $sql_id; + $this->post_ids = $post_ids; + $this->topic_ids = $topic_ids; + $this->message_ids = $message_ids; + $this->physical = $physical; + unset($sql_id, $post_ids, $topic_ids, $message_ids, $physical); + // Delete attachments $sql = 'DELETE FROM ' . ATTACHMENTS_TABLE . ' WHERE ' . $this->db->sql_in_set($this->sql_id, $this->ids); @@ -329,7 +362,7 @@ class delete /** * Delete attachments from filesystem */ - protected function remove_from_filesystem() + protected function remove_from_filesystem($mode, $ids, $resync) { $space_removed = $files_removed = 0; @@ -348,6 +381,13 @@ class delete } } + $sql_id = $this->sql_id; + $post_ids = $this->post_ids; + $topic_ids = $this->topic_ids; + $message_ids = $this->message_ids; + $physical = $this->physical; + $num_deleted = $this->num_deleted; + /** * Perform additional actions after attachment(s) deletion from the filesystem * @@ -380,6 +420,14 @@ class delete ); extract($this->dispatcher->trigger_event('core.delete_attachments_from_filesystem_after', compact($vars))); + $this->sql_id = $sql_id; + $this->post_ids = $post_ids; + $this->topic_ids = $topic_ids; + $this->message_ids = $message_ids; + $this->physical = $physical; + $this->num_deleted = $num_deleted; + unset($sql_id, $post_ids, $topic_ids, $message_ids, $physical, $num_deleted); + if ($space_removed || $files_removed) { $this->config->increment('upload_dir_size', $space_removed * (-1), false); From b79aa3e147506f6e861bc777d40d758ee83d33c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Calvo?= Date: Thu, 30 Aug 2018 07:06:18 +0200 Subject: [PATCH 11/61] [ticket/15762] Update type for forum_topics_per_page PHPBB3-15762 --- .../data/v32x/forum_topics_per_page_type.php | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 phpBB/phpbb/db/migration/data/v32x/forum_topics_per_page_type.php diff --git a/phpBB/phpbb/db/migration/data/v32x/forum_topics_per_page_type.php b/phpBB/phpbb/db/migration/data/v32x/forum_topics_per_page_type.php new file mode 100644 index 0000000000..b9b88bac29 --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v32x/forum_topics_per_page_type.php @@ -0,0 +1,37 @@ + +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\db\migration\data\v32x; + +class forum_topics_per_page_type extends \phpbb\db\migration\migration +{ + + static public function depends_on() + { + return array( + '\phpbb\db\migration\data\v32x\v323rc2', + ); + } + + public function update_schema() + { + return array( + 'change_columns' => array( + $this->table_prefix . 'forums' => array( + 'forum_topics_per_page' => array('USINT', 0), + ), + ), + ); + } + +} From 9719d5a3d523723b2d471f5b2160171cd7291a43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rub=C3=A9n=20Calvo?= Date: Thu, 30 Aug 2018 19:05:12 +0200 Subject: [PATCH 12/61] [ticket/15762] Update type for forum_topics_per_page in acp_forums PHPBB3-15762 --- phpBB/includes/acp/acp_forums.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/acp/acp_forums.php b/phpBB/includes/acp/acp_forums.php index 6b841560c9..13d74f0811 100644 --- a/phpBB/includes/acp/acp_forums.php +++ b/phpBB/includes/acp/acp_forums.php @@ -1012,7 +1012,7 @@ class acp_forums } $range_test_ary = array( - array('lang' => 'FORUM_TOPICS_PAGE', 'value' => $forum_data_ary['forum_topics_per_page'], 'column_type' => 'TINT:0'), + array('lang' => 'FORUM_TOPICS_PAGE', 'value' => $forum_data_ary['forum_topics_per_page'], 'column_type' => 'USINT:0'), ); if (!empty($forum_data_ary['forum_image']) && !file_exists($phpbb_root_path . $forum_data_ary['forum_image'])) From 4a30818e1240d2389bc924045769bb5dab30fe34 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 4 Sep 2018 14:30:19 +0200 Subject: [PATCH 13/61] [ticket/15420] Only update quote notification with original author PHPBB3-15420 --- phpBB/includes/functions_posting.php | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 78c66ac6b8..73a2e0be0c 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -2309,8 +2309,14 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll_ary, &$data case 'edit_first_post': case 'edit': case 'edit_last_post': + if ($user->data['user_id'] == $poster_id) + { + $phpbb_notifications->update_notifications(array( + 'notification.type.quote', + ), $notification_data); + } + $phpbb_notifications->update_notifications(array( - 'notification.type.quote', 'notification.type.bookmark', 'notification.type.topic', 'notification.type.post', From 8eb48e281287646bb186f831e4f076f4557a14a9 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Thu, 6 Sep 2018 14:15:08 +0200 Subject: [PATCH 14/61] [ticket/15742] Remove get_magic_quotes_gpc() call PHPBB3-15742 --- phpBB/phpbb/request/request.php | 2 - phpBB/phpbb/request/type_cast_helper.php | 37 ------------------- .../request/type_cast_helper_interface.php | 7 ---- 3 files changed, 46 deletions(-) diff --git a/phpBB/phpbb/request/request.php b/phpBB/phpbb/request/request.php index 00be8fd381..a0267d1370 100644 --- a/phpBB/phpbb/request/request.php +++ b/phpBB/phpbb/request/request.php @@ -150,8 +150,6 @@ class request implements \phpbb\request\request_interface return; } - $this->type_cast_helper->add_magic_quotes($value); - // setting to null means unsetting if ($value === null) { diff --git a/phpBB/phpbb/request/type_cast_helper.php b/phpBB/phpbb/request/type_cast_helper.php index 96e66950ca..1a53206c74 100644 --- a/phpBB/phpbb/request/type_cast_helper.php +++ b/phpBB/phpbb/request/type_cast_helper.php @@ -18,28 +18,6 @@ namespace phpbb\request; */ class type_cast_helper implements \phpbb\request\type_cast_helper_interface { - - /** - * @var string Whether slashes need to be stripped from input - */ - protected $strip; - - /** - * Initialises the type cast helper class. - * All it does is find out whether magic quotes are turned on. - */ - public function __construct() - { - if (version_compare(PHP_VERSION, '5.4.0-dev', '>=')) - { - $this->strip = false; - } - else - { - $this->strip = (@get_magic_quotes_gpc()) ? true : false; - } - } - /** * Recursively applies addslashes to a variable. * @@ -68,19 +46,6 @@ class type_cast_helper implements \phpbb\request\type_cast_helper_interface } } - /** - * Recursively applies addslashes to a variable if magic quotes are turned on. - * - * @param mixed &$var Variable passed by reference to which slashes will be added. - */ - public function add_magic_quotes(&$var) - { - if ($this->strip) - { - $this->addslashes_recursively($var); - } - } - /** * Set variable $result to a particular type. * @@ -129,8 +94,6 @@ class type_cast_helper implements \phpbb\request\type_cast_helper_interface $result = preg_replace('/[\x80-\xFF]/', '?', $result); } } - - $result = ($this->strip) ? stripslashes($result) : $result; } } diff --git a/phpBB/phpbb/request/type_cast_helper_interface.php b/phpBB/phpbb/request/type_cast_helper_interface.php index 2cb28d021f..e22712dc0c 100644 --- a/phpBB/phpbb/request/type_cast_helper_interface.php +++ b/phpBB/phpbb/request/type_cast_helper_interface.php @@ -25,13 +25,6 @@ interface type_cast_helper_interface */ public function addslashes_recursively(&$var); - /** - * Recursively applies addslashes to a variable if magic quotes are turned on. - * - * @param mixed &$var Variable passed by reference to which slashes will be added. - */ - public function add_magic_quotes(&$var); - /** * Set variable $result to a particular type. * From 0f10c6ff6f0537c9cb00f6007b6bee9944e6587a Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Thu, 6 Sep 2018 14:31:57 +0200 Subject: [PATCH 15/61] [ticket/15716] Remove OAuth data upon user deletion PHPBB3-15716 --- phpBB/includes/functions_user.php | 2 +- tests/console/user/base.php | 3 +++ tests/functions/user_delete_test.php | 4 ++++ tests/functions_user/delete_user_test.php | 3 +++ 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 245d263720..0e57795eea 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -664,7 +664,7 @@ function user_delete($mode, $user_ids, $retain_username = true) delete_posts('poster_id', $user_ids); } - $table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE, TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, FORUMS_TRACK_TABLE, PROFILE_FIELDS_DATA_TABLE, MODERATOR_CACHE_TABLE, DRAFTS_TABLE, BOOKMARKS_TABLE, SESSIONS_KEYS_TABLE, PRIVMSGS_FOLDER_TABLE, PRIVMSGS_RULES_TABLE); + $table_ary = array(USERS_TABLE, USER_GROUP_TABLE, TOPICS_WATCH_TABLE, FORUMS_WATCH_TABLE, ACL_USERS_TABLE, TOPICS_TRACK_TABLE, TOPICS_POSTED_TABLE, FORUMS_TRACK_TABLE, PROFILE_FIELDS_DATA_TABLE, MODERATOR_CACHE_TABLE, DRAFTS_TABLE, BOOKMARKS_TABLE, SESSIONS_KEYS_TABLE, PRIVMSGS_FOLDER_TABLE, PRIVMSGS_RULES_TABLE, $phpbb_container->getParameter('tables.auth_provider_oauth_token_storage'), $phpbb_container->getParameter('tables.auth_provider_oauth_states'), $phpbb_container->getParameter('tables.auth_provider_oauth_account_assoc')); // Delete the miscellaneous (non-post) data for the user foreach ($table_ary as $table) diff --git a/tests/console/user/base.php b/tests/console/user/base.php index b84c0bb267..2fb7ee0394 100644 --- a/tests/console/user/base.php +++ b/tests/console/user/base.php @@ -94,6 +94,9 @@ abstract class phpbb_console_user_base extends phpbb_database_test_case 'auth.provider_collection', $provider_collection ); + $phpbb_container->setParameter('tables.auth_provider_oauth_token_storage', 'phpbb_oauth_tokens'); + $phpbb_container->setParameter('tables.auth_provider_oauth_states', 'phpbb_oauth_states'); + $phpbb_container->setParameter('tables.auth_provider_oauth_account_assoc', 'phpbb_oauth_accounts'); parent::setUp(); } diff --git a/tests/functions/user_delete_test.php b/tests/functions/user_delete_test.php index db9b6e0c90..88680d5719 100644 --- a/tests/functions/user_delete_test.php +++ b/tests/functions/user_delete_test.php @@ -82,6 +82,10 @@ class phpbb_functions_user_delete_test extends phpbb_database_test_case $phpbb_container->set('auth.provider.oauth.service.google', $oauth_provider_google); $phpbb_container->set('auth.provider_collection', $provider_collection); $phpbb_container->set('notification_manager', $notification_manager); + + $phpbb_container->setParameter('tables.auth_provider_oauth_token_storage', 'phpbb_oauth_tokens'); + $phpbb_container->setParameter('tables.auth_provider_oauth_states', 'phpbb_oauth_states'); + $phpbb_container->setParameter('tables.auth_provider_oauth_account_assoc', 'phpbb_oauth_accounts'); } public function test_user_delete() diff --git a/tests/functions_user/delete_user_test.php b/tests/functions_user/delete_user_test.php index 25042d9f1b..30253ccc2f 100644 --- a/tests/functions_user/delete_user_test.php +++ b/tests/functions_user/delete_user_test.php @@ -46,6 +46,9 @@ class phpbb_functions_user_delete_user_test extends phpbb_database_test_case 'auth.provider_collection', $provider_collection ); + $phpbb_container->setParameter('tables.auth_provider_oauth_token_storage', 'phpbb_oauth_tokens'); + $phpbb_container->setParameter('tables.auth_provider_oauth_states', 'phpbb_oauth_states'); + $phpbb_container->setParameter('tables.auth_provider_oauth_account_assoc', 'phpbb_oauth_accounts'); } public function first_last_post_data() From 89d1401a77f7a2f9ee067b90efa975e21363e914 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Thu, 13 Sep 2018 18:47:14 +0200 Subject: [PATCH 16/61] [ticket/15742] Remove addslashes_recursively() PHPBB3-15742 --- phpBB/phpbb/request/type_cast_helper.php | 28 ------------------- .../request/type_cast_helper_interface.php | 7 ----- tests/request/type_cast_helper_test.php | 10 ------- 3 files changed, 45 deletions(-) diff --git a/phpBB/phpbb/request/type_cast_helper.php b/phpBB/phpbb/request/type_cast_helper.php index 1a53206c74..912494998d 100644 --- a/phpBB/phpbb/request/type_cast_helper.php +++ b/phpBB/phpbb/request/type_cast_helper.php @@ -18,34 +18,6 @@ namespace phpbb\request; */ class type_cast_helper implements \phpbb\request\type_cast_helper_interface { - /** - * Recursively applies addslashes to a variable. - * - * @param mixed &$var Variable passed by reference to which slashes will be added. - */ - public function addslashes_recursively(&$var) - { - if (is_string($var)) - { - $var = addslashes($var); - } - else if (is_array($var)) - { - $var_copy = $var; - $var = array(); - foreach ($var_copy as $key => $value) - { - if (is_string($key)) - { - $key = addslashes($key); - } - $var[$key] = $value; - - $this->addslashes_recursively($var[$key]); - } - } - } - /** * Set variable $result to a particular type. * diff --git a/phpBB/phpbb/request/type_cast_helper_interface.php b/phpBB/phpbb/request/type_cast_helper_interface.php index e22712dc0c..9671573bf1 100644 --- a/phpBB/phpbb/request/type_cast_helper_interface.php +++ b/phpBB/phpbb/request/type_cast_helper_interface.php @@ -18,13 +18,6 @@ namespace phpbb\request; */ interface type_cast_helper_interface { - /** - * Recursively applies addslashes to a variable. - * - * @param mixed &$var Variable passed by reference to which slashes will be added. - */ - public function addslashes_recursively(&$var); - /** * Set variable $result to a particular type. * diff --git a/tests/request/type_cast_helper_test.php b/tests/request/type_cast_helper_test.php index 143c05aa9c..6407dca894 100644 --- a/tests/request/type_cast_helper_test.php +++ b/tests/request/type_cast_helper_test.php @@ -20,16 +20,6 @@ class phpbb_type_cast_helper_test extends phpbb_test_case $this->type_cast_helper = new \phpbb\request\type_cast_helper(); } - public function test_addslashes_recursively() - { - $data = array('some"string' => array('that"' => 'really"', 'needs"' => '"escaping')); - $expected = array('some\\"string' => array('that\\"' => 'really\\"', 'needs\\"' => '\\"escaping')); - - $this->type_cast_helper->addslashes_recursively($data); - - $this->assertEquals($expected, $data); - } - public function test_simple_recursive_set_var() { $data = 'eviL<3'; From 204b18dd593a85374927e313e1af19c86f78055b Mon Sep 17 00:00:00 2001 From: Oliver Schramm Date: Fri, 14 Sep 2018 11:21:55 +0200 Subject: [PATCH 17/61] [ticket/15607] Skip ban and disabled checks when deleting cookies PHPBB3-15607 --- phpBB/ucp.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/phpBB/ucp.php b/phpBB/ucp.php index 7eca5ede62..b72006b37f 100644 --- a/phpBB/ucp.php +++ b/phpBB/ucp.php @@ -30,6 +30,12 @@ if (in_array($mode, array('login', 'login_link', 'logout', 'confirm', 'sendpassw define('IN_LOGIN', true); } +if ($mode === 'delete_cookies') +{ + define('SKIP_CHECK_BAN', true); + define('SKIP_CHECK_DISABLED', true); +} + // Start session management $user->session_begin(); $auth->acl($user->data); From 0d7c33c1afd2595ca4f5569af69d1514bec29b35 Mon Sep 17 00:00:00 2001 From: Oliver Schramm Date: Fri, 14 Sep 2018 14:54:20 +0200 Subject: [PATCH 18/61] [ticket/15329] Parse drafts before saving them (and decode) PHPBB3-15329 --- phpBB/includes/ucp/ucp_main.php | 24 ++++++++++++++++++++++-- phpBB/includes/ucp/ucp_pm_compose.php | 5 ++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/ucp/ucp_main.php b/phpBB/includes/ucp/ucp_main.php index 71a615e75c..cd75eead1e 100644 --- a/phpBB/includes/ucp/ucp_main.php +++ b/phpBB/includes/ucp/ucp_main.php @@ -502,6 +502,9 @@ class ucp_main $draft_subject = $draft_message = ''; add_form_key('ucp_draft'); + include_once($phpbb_root_path . 'includes/message_parser.' . $phpEx); + $message_parser = new parse_message(); + if ($delete) { if (check_form_key('ucp_draft')) @@ -535,9 +538,19 @@ class ucp_main { if ($draft_message && $draft_subject) { + // $auth->acl_gets can't be used here because it will check for global forum permissions in this case + // In general we don't need too harsh checking here for permissions, as this will be handled later when submitting + $bbcode_status = $auth->acl_get('u_pm_bbcode') || $auth->acl_getf_global('f_bbcode'); + $smilies_status = $auth->acl_get('u_pm_smilies') || $auth->acl_getf_global('f_smilies'); + $img_status = $auth->acl_get('u_pm_img') || $auth->acl_getf_global('f_img'); + $flash_status = $auth->acl_get('u_pm_flash') || $auth->acl_getf_global('f_flash'); + + $message_parser->message = $draft_message; + $message_parser->parse($bbcode_status, $config['allow_post_links'], $smilies_status, $img_status, $flash_status, true, $config['allow_post_links']); + $draft_row = array( 'draft_subject' => $draft_subject, - 'draft_message' => $draft_message + 'draft_message' => $message_parser->message, ); $sql = 'UPDATE ' . DRAFTS_TABLE . ' @@ -639,9 +652,16 @@ class ucp_main $insert_url = append_sid("{$phpbb_root_path}ucp.$phpEx", "i=$id&mode=compose&d=" . $draft['draft_id']); } + if (!$submit) + { + $message_parser->message = $draft['draft_message']; + $message_parser->decode_message(); + $draft_message = $message_parser->message; + } + $template_row = array( 'DATE' => $user->format_date($draft['save_time']), - 'DRAFT_MESSAGE' => ($submit) ? $draft_message : $draft['draft_message'], + 'DRAFT_MESSAGE' => $draft_message, 'DRAFT_SUBJECT' => ($submit) ? $draft_subject : $draft['draft_subject'], 'TITLE' => $title, diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index bf18e76568..bc43b5d1fe 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -659,13 +659,16 @@ function compose_pm($id, $mode, $action, $user_folders = array()) { if (confirm_box(true)) { + $message_parser->message = $message; + $message_parser->parse($bbcode_status, $url_status, $smilies_status, $img_status, $flash_status, true, $url_status); + $sql = 'INSERT INTO ' . DRAFTS_TABLE . ' ' . $db->sql_build_array('INSERT', array( 'user_id' => $user->data['user_id'], 'topic_id' => 0, 'forum_id' => 0, 'save_time' => $current_time, 'draft_subject' => $subject, - 'draft_message' => $message + 'draft_message' => $message_parser->message, ) ); $db->sql_query($sql); From 4ac3c545e1b95fb2abfdd6f4343865e7646c978e Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 14 Sep 2018 15:02:07 +0200 Subject: [PATCH 19/61] [ticket/15770] Make sure sphinx limits are cast to int PHPBB3-15770 --- phpBB/phpbb/search/fulltext_sphinx.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/search/fulltext_sphinx.php b/phpBB/phpbb/search/fulltext_sphinx.php index e2eeb5f7f3..878c98bf72 100644 --- a/phpBB/phpbb/search/fulltext_sphinx.php +++ b/phpBB/phpbb/search/fulltext_sphinx.php @@ -648,7 +648,7 @@ class fulltext_sphinx $this->sphinx->SetFilter('deleted', array(0)); - $this->sphinx->SetLimits($start, (int) $per_page, SPHINX_MAX_MATCHES); + $this->sphinx->SetLimits((int) $start, (int) $per_page, SPHINX_MAX_MATCHES); $result = $this->sphinx->Query($search_query_prefix . $this->sphinx->EscapeString(str_replace('"', '"', $this->search_query)), $this->indexes); // Could be connection to localhost:9312 failed (errno=111, From c38075d2c27d5a727ad9bf31e2a2443563bf3eec Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 10 Sep 2018 20:14:36 +0200 Subject: [PATCH 20/61] [ticket/15768] Add a license to a repository PHPBB3-15768 --- LICENSE | 281 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 281 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000000..ce992b2ce7 --- /dev/null +++ b/LICENSE @@ -0,0 +1,281 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + From 072572381353b4c4a25acae306122ef43914fd72 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 7 May 2018 22:01:23 +0200 Subject: [PATCH 21/61] [ticket/15662] Add template PHPBB3-15662 --- phpBB/includes/functions_messenger.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index a85a3b67c5..fdd1dc6e32 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -327,6 +327,7 @@ class messenger $subject = $this->subject; $message = $this->msg; + $template = $this->template; /** * Event to modify notification message text before parsing * @@ -336,13 +337,16 @@ class messenger * and the message without sending it * @var string subject The message subject * @var string message The message text + * @var \phpbb\template\template template Template object * @since 3.1.11-RC1 + * @changed 3.2.4-RC1 Added template */ $vars = array( 'method', 'break', 'subject', 'message', + 'template', ); extract($phpbb_dispatcher->trigger_event('core.modify_notification_message', compact($vars))); $this->subject = $subject; From fbd1741107c2eda9d009efcc794b53d3b703bd92 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 7 May 2018 18:36:51 +0200 Subject: [PATCH 22/61] [ticket/15661] Add core.viewtopic_modify_poll_ajax_data PHPBB3-15661 --- phpBB/viewtopic.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 3c25c3b037..a9f419b9aa 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -998,6 +998,29 @@ if (!empty($topic_data['poll_start'])) 'total_votes' => array_sum($vote_counts), 'can_vote' => !count($valid_user_votes) || ($auth->acl_get('f_votechg', $forum_id) && $topic_data['poll_vote_change']), ); + + /** + * Event to manipulate the poll data sent by AJAX response + * + * @event core.viewtopic_modify_poll_ajax_data + * @var array data JSON response data + * @var array valid_user_votes Valid user votes + * @var array vote_counts Vote counts + * @var int forum_id Forum ID + * @var array topic_data Topic data + * @var array poll_info Array with the poll information + * @since 3.2.4-RC1 + */ + $vars = array( + 'data', + 'valid_user_votes', + 'vote_counts', + 'forum_id', + 'topic_data', + 'poll_info', + ); + extract($phpbb_dispatcher->trigger_event('core.viewtopic_modify_poll_ajax_data', compact($vars))); + $json_response = new \phpbb\json_response(); $json_response->send($data); } From 1a284ebe8dc3cb7559cb374e17bec5a99168ed49 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 6 Mar 2018 18:28:14 +0100 Subject: [PATCH 23/61] [ticket/15579] Add ucp_front events PHPBB3-15579 --- phpBB/includes/ucp/ucp_main.php | 42 +++++++++++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 2 deletions(-) diff --git a/phpBB/includes/ucp/ucp_main.php b/phpBB/includes/ucp/ucp_main.php index 8584a9a0fd..4fe0c38afb 100644 --- a/phpBB/includes/ucp/ucp_main.php +++ b/phpBB/includes/ucp/ucp_main.php @@ -77,6 +77,22 @@ class ucp_main // If the user can't see any forums, he can't read any posts because fid of 0 is invalid if (!empty($forum_ary)) { + /** + * Modify sql variables before query is processed + * + * @event core.ucp_main_front_modify_sql + * @var string sql_select SQL select + * @var string sql_from SQL from + * @var array forum_ary Forum array + * @since 3.2.4-RC1 + */ + $vars = array( + 'sql_select', + 'sql_from', + 'forum_ary', + ); + extract($phpbb_dispatcher->trigger_event('core.ucp_main_front_modify_sql', compact($vars))); + $sql = "SELECT t.* $sql_select FROM $sql_from WHERE t.topic_type = " . POST_GLOBAL . ' @@ -144,7 +160,7 @@ class ucp_main $folder_img .= '_mine'; } - $template->assign_block_vars('topicrow', array( + $topicrow = array( 'FORUM_ID' => $forum_id, 'TOPIC_ID' => $topic_id, 'TOPIC_AUTHOR' => get_username_string('username', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']), @@ -171,8 +187,30 @@ class ucp_main 'U_LAST_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&p=" . $row['topic_last_post_id']) . '#p' . $row['topic_last_post_id'], 'U_LAST_POST_AUTHOR' => get_username_string('profile', $row['topic_last_poster_id'], $row['topic_last_poster_name'], $row['topic_last_poster_colour']), 'U_NEWEST_POST' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&view=unread") . '#unread', - 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id")) + 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id"), ); + + /** + * Add template variables to a front topics row. + * + * @event core.ucp_main_front_modify_template_vars + * @var array topicrow Array containing the template variables for the row + * @var array row Array containing the subscribed forum row data + * @var int forum_id Forum ID + * @var string folder_img Folder image + * @var string folder_alt Alt text for the folder image + * @since 3.2.4-RC1 + */ + $vars = array( + 'topicrow', + 'row', + 'forum_id', + 'folder_img', + 'folder_alt', + ); + extract($phpbb_dispatcher->trigger_event('core.ucp_main_front_modify_template_vars', compact($vars))); + + $template->assign_block_vars('topicrow', $topicrow); } if ($config['load_user_activity']) From e17f00fb6b482c71f3ed42786b6f413373a61b9b Mon Sep 17 00:00:00 2001 From: MikelAlejoBR Date: Sun, 16 Sep 2018 18:59:35 +0200 Subject: [PATCH 24/61] [ticket/15622] Remove "since" tag as it belongs to events PHPBB3-15622 --- phpBB/includes/functions_content.php | 1 - 1 file changed, 1 deletion(-) diff --git a/phpBB/includes/functions_content.php b/phpBB/includes/functions_content.php index 1e80da98d3..ed35f5213f 100644 --- a/phpBB/includes/functions_content.php +++ b/phpBB/includes/functions_content.php @@ -1767,7 +1767,6 @@ class bitfield * @param phpbb\textformatter\utils $text_formatter_utils Text formatter utilities * @param parse_message $message_parser Message parser class * @param string $message_link Link of the original quoted post - * @since 3.2.4-RC1 */ function format_quote($bbcode_status, $quote_attributes, $text_formatter_utils, $message_parser, $message_link = '') { From 4396bfba65b0c69023b47b564f789700f892e05a Mon Sep 17 00:00:00 2001 From: MikelAlejoBR Date: Sun, 16 Sep 2018 19:00:51 +0200 Subject: [PATCH 25/61] [ticket/15622] Rename function to avoid potential future conflicts PHPBB3-15622 --- phpBB/includes/functions_content.php | 2 +- phpBB/includes/ucp/ucp_pm_compose.php | 2 +- phpBB/posting.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/phpBB/includes/functions_content.php b/phpBB/includes/functions_content.php index ed35f5213f..e124bd46e6 100644 --- a/phpBB/includes/functions_content.php +++ b/phpBB/includes/functions_content.php @@ -1768,7 +1768,7 @@ class bitfield * @param parse_message $message_parser Message parser class * @param string $message_link Link of the original quoted post */ -function format_quote($bbcode_status, $quote_attributes, $text_formatter_utils, $message_parser, $message_link = '') +function phpbb_format_quote($bbcode_status, $quote_attributes, $text_formatter_utils, $message_parser, $message_link = '') { if ($bbcode_status) { diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index d201c5fe73..ca2d3257e6 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -984,7 +984,7 @@ function compose_pm($id, $mode, $action, $user_folders = array()) $quote_attributes['post_id'] = $post['msg_id']; } - format_quote($bbcode_status, $quote_attributes, $phpbb_container->get('text_formatter.utils'), $message_parser, $message_link); + phpbb_format_quote($bbcode_status, $quote_attributes, $phpbb_container->get('text_formatter.utils'), $message_parser, $message_link); } if (($action == 'reply' || $action == 'quote' || $action == 'quotepost') && !$preview && !$refresh) diff --git a/phpBB/posting.php b/phpBB/posting.php index de399068bc..1fd1444eab 100644 --- a/phpBB/posting.php +++ b/phpBB/posting.php @@ -1637,7 +1637,7 @@ if ($generate_quote) 'user_id' => $post_data['poster_id'], ); - format_quote($config['allow_bbcode'], $quote_attributes, $bbcode_utils, $message_parser); + phpbb_format_quote($config['allow_bbcode'], $quote_attributes, $bbcode_utils, $message_parser); } if (($mode == 'reply' || $mode == 'quote') && !$submit && !$preview && !$refresh) From 71ae82fbef90cfa009fa5f2835dbf0f19f8aa33e Mon Sep 17 00:00:00 2001 From: kasimi Date: Fri, 21 Sep 2018 17:50:55 +0200 Subject: [PATCH 26/61] [ticket/15799] Find correct poll for voting animation PHPBB3-15799 --- phpBB/styles/prosilver/template/ajax.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/styles/prosilver/template/ajax.js b/phpBB/styles/prosilver/template/ajax.js index 6903ad2261..5e66e5cda1 100644 --- a/phpBB/styles/prosilver/template/ajax.js +++ b/phpBB/styles/prosilver/template/ajax.js @@ -199,7 +199,7 @@ phpbb.addAjaxCallback('zebra', function(res) { */ phpbb.addAjaxCallback('vote_poll', function(res) { if (typeof res.success !== 'undefined') { - var poll = $('.topic_poll'); + var poll = $(this).closest('.topic_poll'); var panel = poll.find('.panel'); var resultsVisible = poll.find('dl:first-child .resultbar').is(':visible'); var mostVotes = 0; From 78732fd7c25513a30d460710a3a5919aef75bfdf Mon Sep 17 00:00:00 2001 From: kinerity Date: Sat, 22 Sep 2018 21:16:53 -0400 Subject: [PATCH 27/61] [ticket/15803] Add events on ucp_pm_compose for additional message list actions Event added for the handle_message_list_actions() function in ucp_pm_compose so that extensions can perform additional actions. PHPBB3-15803 --- phpBB/includes/ucp/ucp_pm_compose.php | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index f35812b90a..bb3eed5596 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -1437,6 +1437,21 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove $error[] = $user->lang['PM_USERS_REMOVED_NO_PERMISSION']; } } + + /** + * Event for additional message list actions + * + * @event core.message_list_actions + * @var array address_list The assoc array with the recipient user/group ids + * @var array error The array containing error data + * @var object remove_u The variable for removing a user + * @var object remove_g The variable for removing a group + * @var object add_to The variable for adding a user to the [TO] field + * @var object add_bcc The variable for adding a user to the [BCC] field + * @since 3.1.7-RC1 + */ + $vars = array('address_list', 'error', 'remove_u', 'remove_g', 'add_to', 'add_bcc'); + extract($phpbb_dispatcher->trigger_event('core.message_list_actions', compact($vars))); } /** From 8ed759545e6f272ce7236b25e7cd34301455fdeb Mon Sep 17 00:00:00 2001 From: kinerity Date: Sat, 22 Sep 2018 21:30:55 -0400 Subject: [PATCH 28/61] [ticket/15803] Fix since version PHPBB3-15803 --- phpBB/includes/ucp/ucp_pm_compose.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index bb3eed5596..0dfe6e813c 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -1448,7 +1448,7 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove * @var object remove_g The variable for removing a group * @var object add_to The variable for adding a user to the [TO] field * @var object add_bcc The variable for adding a user to the [BCC] field - * @since 3.1.7-RC1 + * @since 3.2.4-RC1 */ $vars = array('address_list', 'error', 'remove_u', 'remove_g', 'add_to', 'add_bcc'); extract($phpbb_dispatcher->trigger_event('core.message_list_actions', compact($vars))); From eb867fc62311970118d9c340c16073dbc01805b0 Mon Sep 17 00:00:00 2001 From: kinerity Date: Sat, 22 Sep 2018 23:04:18 -0400 Subject: [PATCH 29/61] [ticket/15803] Global $phpbb_dispatcher PHPBB3-15803 --- phpBB/includes/ucp/ucp_pm_compose.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index 0dfe6e813c..eeb77c3973 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -1260,7 +1260,7 @@ function compose_pm($id, $mode, $action, $user_folders = array()) function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove_g, $add_to, $add_bcc) { global $auth, $db, $user; - global $request; + global $request, $phpbb_dispatcher; // Delete User [TO/BCC] if ($remove_u && $request->variable('remove_u', array(0 => ''))) From 1d0fdc446f4642584a58eb23d8510ec73caa475a Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 24 Sep 2018 16:09:28 +0200 Subject: [PATCH 30/61] [ticket/15805] Add result to core.login_box_redirect PHPBB3-15805 --- phpBB/includes/functions.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index cbea7afe6e..5caa144801 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2350,10 +2350,12 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa * @event core.login_box_redirect * @var string redirect Redirect string * @var bool admin Is admin? + * @var array result Result from auth provider * @since 3.1.0-RC5 * @changed 3.1.9-RC1 Removed undefined return variable + * @changed 3.2.4-RC1 Added result */ - $vars = array('redirect', 'admin'); + $vars = array('redirect', 'admin', 'result'); extract($phpbb_dispatcher->trigger_event('core.login_box_redirect', compact($vars))); // append/replace SID (may change during the session for AOL users) From 62c9996b2f5848ba9cc7b3211e62d6001e13d061 Mon Sep 17 00:00:00 2001 From: Kailey Truscott Date: Tue, 25 Sep 2018 07:42:55 -0400 Subject: [PATCH 31/61] [ticket/15803] Change 'object' to 'bool' PHPBB3-15803 --- phpBB/includes/ucp/ucp_pm_compose.php | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index eeb77c3973..e168b643ef 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -1444,10 +1444,10 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove * @event core.message_list_actions * @var array address_list The assoc array with the recipient user/group ids * @var array error The array containing error data - * @var object remove_u The variable for removing a user - * @var object remove_g The variable for removing a group - * @var object add_to The variable for adding a user to the [TO] field - * @var object add_bcc The variable for adding a user to the [BCC] field + * @var bool remove_u The variable for removing a user + * @var bool remove_g The variable for removing a group + * @var bool add_to The variable for adding a user to the [TO] field + * @var bool add_bcc The variable for adding a user to the [BCC] field * @since 3.2.4-RC1 */ $vars = array('address_list', 'error', 'remove_u', 'remove_g', 'add_to', 'add_bcc'); From d8ecb00f3dd5f771e01546faa7b62259cca33570 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 14:25:51 +0200 Subject: [PATCH 32/61] [ticket/15771] Improve Q&A instructions PHPBB3-15771 --- phpBB/language/en/captcha_qa.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/language/en/captcha_qa.php b/phpBB/language/en/captcha_qa.php index 28011eb636..637c4e035e 100644 --- a/phpBB/language/en/captcha_qa.php +++ b/phpBB/language/en/captcha_qa.php @@ -49,7 +49,7 @@ $lang = array_merge($lang, array( 'ANSWER' => 'Answer', 'EDIT_QUESTION' => 'Edit Question', 'QUESTIONS' => 'Questions', - 'QUESTIONS_EXPLAIN' => 'For every form submission where you have enabled the Q&A plugin, users will be asked one of the questions specified here. To use this plugin at least one question must be set in the default language. These questions should be easy for your target audience to answer but beyond the ability of a bot capable of running a Googleâ„¢ search. Using a large and regularly changed set of questions will yield the best results. Enable the strict setting if your question relies on mixed case, punctuation or whitespace.', + 'QUESTIONS_EXPLAIN' => 'For every form submission where you have enabled the Q&A plugin, users will be asked one of the questions specified here. To use this plugin at least one question must be set in the default language. These questions should be easy for your target audience to answer but beyond the ability of a bot capable of running a Googleâ„¢ search. Only a single proper question is necessary. If you start receiving spam registrations, the question should be changed. Enable the strict setting if your question relies on mixed case, punctuation or whitespace.', 'QUESTION_DELETED' => 'Question deleted', 'QUESTION_LANG' => 'Language', 'QUESTION_LANG_EXPLAIN' => 'The language this question and its answers are written in.', From f251c26fe639a15f729e54c7c15cc5daff29b732 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 15:22:14 +0200 Subject: [PATCH 33/61] [ticket/15701] Display signature in MCP PHPBB3-15701 --- phpBB/includes/mcp/mcp_post.php | 5 +++++ phpBB/includes/mcp/mcp_reports.php | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/phpBB/includes/mcp/mcp_post.php b/phpBB/includes/mcp/mcp_post.php index d6d0369e48..8d278079fb 100644 --- a/phpBB/includes/mcp/mcp_post.php +++ b/phpBB/includes/mcp/mcp_post.php @@ -213,6 +213,10 @@ function mcp_post_details($id, $mode, $action) $l_deleted_by = ''; } + // parse signature + $parse_flags = ($post_info['user_sig_bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES; + $post_info['user_sig'] = generate_text_for_display($post_info['user_sig'], $post_info['user_sig_bbcode_uid'], $post_info['user_sig_bbcode_bitfield'], $parse_flags, true); + $mcp_post_template_data = array( 'U_MCP_ACTION' => "$url&i=main&quickmod=1&mode=post_details", // Use this for mode paramaters 'U_POST_ACTION' => "$url&i=$id&mode=post_details", // Use this for action parameters @@ -262,6 +266,7 @@ function mcp_post_details($id, $mode, $action) 'POST_IP' => $post_info['poster_ip'], 'POST_IPADDR' => ($auth->acl_get('m_info', $post_info['forum_id']) && $request->variable('lookup', '')) ? @gethostbyaddr($post_info['poster_ip']) : '', 'POST_ID' => $post_info['post_id'], + 'SIGNATURE' => $post_info['user_sig'], 'U_LOOKUP_IP' => ($auth->acl_get('m_info', $post_info['forum_id'])) ? "$url&i=$id&mode=$mode&lookup={$post_info['poster_ip']}#ip" : '', 'U_WHOIS' => ($auth->acl_get('m_info', $post_info['forum_id'])) ? append_sid("{$phpbb_root_path}mcp.$phpEx", "i=$id&mode=$mode&action=whois&p=$post_id&ip={$post_info['poster_ip']}") : '', diff --git a/phpBB/includes/mcp/mcp_reports.php b/phpBB/includes/mcp/mcp_reports.php index f5147deb49..78f497c275 100644 --- a/phpBB/includes/mcp/mcp_reports.php +++ b/phpBB/includes/mcp/mcp_reports.php @@ -242,6 +242,10 @@ class mcp_reports } } + // parse signature + $parse_flags = ($post_info['user_sig_bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES; + $post_info['user_sig'] = generate_text_for_display($post_info['user_sig'], $post_info['user_sig_bbcode_uid'], $post_info['user_sig_bbcode_bitfield'], $parse_flags, true); + $template->assign_vars(array( 'S_MCP_REPORT' => true, 'S_CLOSE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=reports&mode=report_details&f=' . $post_info['forum_id'] . '&p=' . $post_id), @@ -291,6 +295,7 @@ class mcp_reports 'POST_IP' => $post_info['poster_ip'], 'POST_IPADDR' => ($auth->acl_get('m_info', $post_info['forum_id']) && $request->variable('lookup', '')) ? @gethostbyaddr($post_info['poster_ip']) : '', 'POST_ID' => $post_info['post_id'], + 'SIGNATURE' => $post_info['user_sig'], 'U_LOOKUP_IP' => ($auth->acl_get('m_info', $post_info['forum_id'])) ? $this->u_action . '&r=' . $report_id . '&p=' . $post_id . '&f=' . $forum_id . '&lookup=' . $post_info['poster_ip'] . '#ip' : '', )); From dab4c10c2fe0a2e283ecf5227ef9a253127a1381 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 15:24:34 +0200 Subject: [PATCH 34/61] [ticket/15700] Use correct T_THEME_LANG_NAME PHPBB3-15700 --- phpBB/includes/functions.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 1457888c9f..3b0ac17806 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -4506,7 +4506,7 @@ function page_header($page_title = '', $display_online_list = false, $item_id = 'S_COOKIE_NOTICE' => !empty($config['cookie_notice']), 'T_THEME_NAME' => rawurlencode($user->style['style_path']), - 'T_THEME_LANG_NAME' => $user->data['user_lang'], + 'T_THEME_LANG_NAME' => $user->lang_name, 'T_TEMPLATE_NAME' => $user->style['style_path'], 'T_SUPER_TEMPLATE_NAME' => rawurlencode((isset($user->style['style_parent_tree']) && $user->style['style_parent_tree']) ? $user->style['style_parent_tree'] : $user->style['style_path']), 'T_IMAGES' => 'images', From b9a5810716e966b79b653e09e0e2afeaf2bf33e0 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 15:39:50 +0200 Subject: [PATCH 35/61] [ticket/15642] Replace > with > PHPBB3-15642 --- phpBB/language/en/acp/board.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/language/en/acp/board.php b/phpBB/language/en/acp/board.php index 76982be098..eb53ac0370 100644 --- a/phpBB/language/en/acp/board.php +++ b/phpBB/language/en/acp/board.php @@ -371,7 +371,7 @@ $lang = array_merge($lang, array( 'ACP_CONTACT_SETTINGS_EXPLAIN' => 'Here you can enable and disable the contact page and also add a text that is displayed on the page.', 'CONTACT_US_ENABLE' => 'Enable contact page', - 'CONTACT_US_ENABLE_EXPLAIN' => 'This page allows users to send emails to board administrators. Please note that board-wide emails option must be enabled as well. You can find this option in General > Client Communication > Email settings.', + 'CONTACT_US_ENABLE_EXPLAIN' => 'This page allows users to send emails to board administrators. Please note that board-wide emails option must be enabled as well. You can find this option in General > Client Communication > Email settings.', 'CONTACT_US_INFO' => 'Contact information', 'CONTACT_US_INFO_EXPLAIN' => 'The message is displayed on the contact page', From 31d101e68cd7e9c52bb628594035f5dd13eea430 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 16:34:17 +0200 Subject: [PATCH 36/61] [ticket/15596] Migrate from data-vocabulary.org to schema.org PHPBB3-15596 --- phpBB/styles/prosilver/template/navbar_header.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/styles/prosilver/template/navbar_header.html b/phpBB/styles/prosilver/template/navbar_header.html index 2d33849cf0..2da14304c7 100644 --- a/phpBB/styles/prosilver/template/navbar_header.html +++ b/phpBB/styles/prosilver/template/navbar_header.html @@ -178,9 +178,9 @@ @@ -49,7 +49,7 @@
  • - {bcc_recipient.NAME}{bcc_recipient.NAME_FULL} + {bcc_recipient.NAME}{bcc_recipient.NAME_FULL}
  • diff --git a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html index 2ed0189c21..7cb44a0189 100644 --- a/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html +++ b/phpBB/styles/prosilver/template/ucp_pm_viewmessage.html @@ -124,8 +124,8 @@

    {L_SENT_AT}{L_COLON} {SENT_DATE}
    {L_PM_FROM}{L_COLON} {MESSAGE_AUTHOR_FULL} -
    {L_TO}{L_COLON} {to_recipient.NAME_FULL}{to_recipient.NAME}  -
    {L_BCC}{L_COLON} {bcc_recipient.NAME_FULL}{bcc_recipient.NAME}  +
    {L_TO}{L_COLON} {to_recipient.NAME_FULL} style="color:{to_recipient.COLOUR};">{to_recipient.NAME}  +
    {L_BCC}{L_COLON} {bcc_recipient.NAME_FULL} style="color:{bcc_recipient.COLOUR};">{bcc_recipient.NAME} 

    From f82e0a83d1c6ec488f47013d583912f7082406d4 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 16:18:58 +0200 Subject: [PATCH 39/61] [ticket/15616] Add jumpbox to login_forum.html PHPBB3-15616 --- phpBB/includes/functions.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 1457888c9f..20d24819ec 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -2539,7 +2539,7 @@ function login_box($redirect = '', $l_explain = '', $l_success = '', $admin = fa */ function login_forum_box($forum_data) { - global $db, $phpbb_container, $request, $template, $user, $phpbb_dispatcher; + global $db, $phpbb_container, $request, $template, $user, $phpbb_dispatcher, $phpbb_root_path, $phpEx; $password = $request->variable('password', '', true); @@ -2624,6 +2624,8 @@ function login_forum_box($forum_data) 'body' => 'login_forum.html') ); + make_jumpbox(append_sid("{$phpbb_root_path}viewforum.$phpEx"), $forum_data['forum_id']); + page_footer(); } From d29d4389f9efdec4986c62052df7cd8a87135645 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 14:42:03 +0200 Subject: [PATCH 40/61] [ticket/15758] Show translated msg for INSECURE_REDIRECT PHPBB3-15758 --- phpBB/includes/functions.php | 10 +++++----- tests/security/redirect_test.php | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/phpBB/includes/functions.php b/phpBB/includes/functions.php index 1457888c9f..5351db31f6 100644 --- a/phpBB/includes/functions.php +++ b/phpBB/includes/functions.php @@ -1744,14 +1744,14 @@ function redirect($url, $return = false, $disable_cd_check = false) if ($url_parts === false) { // Malformed url - trigger_error('INSECURE_REDIRECT', E_USER_ERROR); + trigger_error('INSECURE_REDIRECT', E_USER_WARNING); } else if (!empty($url_parts['scheme']) && !empty($url_parts['host'])) { // Attention: only able to redirect within the same domain if $disable_cd_check is false (yourdomain.com -> www.yourdomain.com will not work) if (!$disable_cd_check && $url_parts['host'] !== $user->host) { - trigger_error('INSECURE_REDIRECT', E_USER_ERROR); + trigger_error('INSECURE_REDIRECT', E_USER_WARNING); } } else if ($url[0] == '/') @@ -1791,13 +1791,13 @@ function redirect($url, $return = false, $disable_cd_check = false) if (!$disable_cd_check && strpos($url, generate_board_url(true) . '/') !== 0) { - trigger_error('INSECURE_REDIRECT', E_USER_ERROR); + trigger_error('INSECURE_REDIRECT', E_USER_WARNING); } // Make sure no linebreaks are there... to prevent http response splitting for PHP < 4.4.2 if (strpos(urldecode($url), "\n") !== false || strpos(urldecode($url), "\r") !== false || strpos($url, ';') !== false) { - trigger_error('INSECURE_REDIRECT', E_USER_ERROR); + trigger_error('INSECURE_REDIRECT', E_USER_WARNING); } // Now, also check the protocol and for a valid url the last time... @@ -1806,7 +1806,7 @@ function redirect($url, $return = false, $disable_cd_check = false) if ($url_parts === false || empty($url_parts['scheme']) || !in_array($url_parts['scheme'], $allowed_protocols)) { - trigger_error('INSECURE_REDIRECT', E_USER_ERROR); + trigger_error('INSECURE_REDIRECT', E_USER_WARNING); } /** diff --git a/tests/security/redirect_test.php b/tests/security/redirect_test.php index 40cb7d2f04..0177eb4259 100644 --- a/tests/security/redirect_test.php +++ b/tests/security/redirect_test.php @@ -109,7 +109,7 @@ class phpbb_security_redirect_test extends phpbb_security_test_base if ($expected_error !== false) { - $this->setExpectedTriggerError(E_USER_ERROR, $user->lang[$expected_error]); + $this->setExpectedTriggerError(E_USER_WARNING, $user->lang[$expected_error]); } $result = redirect($test, true, $disable_cd_check); From f3f1bfcbe8853093c4b557dae25b4a8fad12b97d Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Fri, 28 Sep 2018 12:23:59 +0200 Subject: [PATCH 41/61] [ticket/15809] Allow twig syntax for template events PHPBB3-15809 --- phpBB/phpbb/event/md_exporter.php | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/phpBB/phpbb/event/md_exporter.php b/phpBB/phpbb/event/md_exporter.php index bec91d04f4..085b20c234 100644 --- a/phpBB/phpbb/event/md_exporter.php +++ b/phpBB/phpbb/event/md_exporter.php @@ -439,16 +439,9 @@ class md_exporter $event_list = array(); $file_content = file_get_contents($this->path . $file); - $events = explode('', $event, 2); - $event_list[] = array_shift($event); - } + preg_match_all('/(?:{%|)/U', $file_content, $event_list); - return $event_list; + return $event_list[1]; } /** From eb4a95f659cdb2dfa5ae00643688d46c6fc30b89 Mon Sep 17 00:00:00 2001 From: Alec Date: Mon, 1 Oct 2018 00:42:55 -0400 Subject: [PATCH 42/61] [ticket/15819] Add core event to functions_posting to modify notifications Events added to allow modifying notification data before in the database. Useful to change variables in the notification message, such as usernames. Includes some other residual data to allow this event to be versatile. PHPBB3-15819 --- phpBB/includes/functions_posting.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 78c66ac6b8..e28a637286 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -2282,6 +2282,19 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll_ary, &$data 'post_subject' => $subject, )); + /** + * This event allows you to modify the notification data upon submission + * + * @event core.modify_submit_notification_data + * @var array notification_data The notification data to be inserted in to the database + * @var array data_ary The data array with a lot of the post submission data + * @var string mode The posting mode + * @var int poster_id The poster id + * @since 3.2.4-RC1 + */ + $vars = array('notification_data', 'data_ary', 'mode', 'poster_id'); + extract($phpbb_dispatcher->trigger_event('core.modify_submit_notification_data', compact($vars))); + /* @var $phpbb_notifications \phpbb\notification\manager */ $phpbb_notifications = $phpbb_container->get('notification_manager'); From 0bb87b2de1ce127e5766f8c5a34ae9135ac58913 Mon Sep 17 00:00:00 2001 From: Oliver Schramm Date: Mon, 1 Oct 2018 17:07:28 +0200 Subject: [PATCH 43/61] [ticket/12430] Remove hilit param from topic title link PHPBB3-12430 --- phpBB/viewtopic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 79852330d9..dfec925a67 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -780,7 +780,7 @@ $template->assign_vars(array( 'U_TOPIC' => "{$server_path}viewtopic.$phpEx?f=$forum_id&t=$topic_id", 'U_FORUM' => $server_path, - 'U_VIEW_TOPIC' => $viewtopic_url, + 'U_VIEW_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id" . (($start == 0) ? '' : "&start=$start") . (strlen($u_sort_param) ? "&$u_sort_param" : '')), 'U_CANONICAL' => generate_board_url() . '/' . append_sid("viewtopic.$phpEx", "t=$topic_id" . (($start) ? "&start=$start" : ''), true, ''), 'U_VIEW_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $forum_id), 'U_VIEW_OLDER_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&t=$topic_id&view=previous"), From 4a2b12a0c8d7fc3761dde815ca3cfd5685c6a8c6 Mon Sep 17 00:00:00 2001 From: Matt Friedman Date: Mon, 1 Oct 2018 13:56:37 -0700 Subject: [PATCH 44/61] [ticket/15824] Fix cache initialization in UI framework PHPBB3-15824 --- tests/test_framework/phpbb_ui_test_case.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/test_framework/phpbb_ui_test_case.php b/tests/test_framework/phpbb_ui_test_case.php index d38d14f45c..72d15ae0b0 100644 --- a/tests/test_framework/phpbb_ui_test_case.php +++ b/tests/test_framework/phpbb_ui_test_case.php @@ -338,6 +338,12 @@ class phpbb_ui_test_case extends phpbb_test_case { if (!$this->cache) { + global $phpbb_container, $phpbb_root_path; + + $phpbb_container = new phpbb_mock_container_builder(); + $phpbb_container->setParameter('core.environment', PHPBB_ENVIRONMENT); + $phpbb_container->setParameter('core.cache_dir', $phpbb_root_path . 'cache/' . PHPBB_ENVIRONMENT . '/'); + $this->cache = new \phpbb\cache\driver\file; } From b487a3d9efbefc97aa7562ffbd4fa23577d7a8e8 Mon Sep 17 00:00:00 2001 From: Matt Friedman Date: Mon, 1 Oct 2018 17:29:13 -0700 Subject: [PATCH 45/61] [ticket/15824] Make UI test framework correctly install exts PHPBB3-15824 --- tests/test_framework/phpbb_ui_test_case.php | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tests/test_framework/phpbb_ui_test_case.php b/tests/test_framework/phpbb_ui_test_case.php index 72d15ae0b0..d16ac78c4b 100644 --- a/tests/test_framework/phpbb_ui_test_case.php +++ b/tests/test_framework/phpbb_ui_test_case.php @@ -192,6 +192,13 @@ class phpbb_ui_test_case extends phpbb_test_case } } + $install_config_file = $phpbb_root_path . 'store/install_config.php'; + + if (file_exists($install_config_file)) + { + unlink($install_config_file); + } + $container_builder = new \phpbb\di\container_builder($phpbb_root_path, $phpEx); $container = $container_builder ->with_environment('installer') @@ -205,11 +212,14 @@ class phpbb_ui_test_case extends phpbb_test_case ], 'cache.driver.class' => 'phpbb\cache\driver\file' ]) + ->with_config(new \phpbb\config_php_file($phpbb_root_path, $phpEx)) ->without_compiled_container() ->get_container(); $container->register('installer.install_finish.notify_user')->setSynthetic(true); $container->set('installer.install_finish.notify_user', new phpbb_mock_null_installer_task()); + $container->register('installer.install_finish.install_extensions')->setSynthetic(true); + $container->set('installer.install_finish.install_extensions', new phpbb_mock_null_installer_task()); $container->compile(); $language = $container->get('language'); From 842e40dab91302772e0e2916043429de884bc226 Mon Sep 17 00:00:00 2001 From: Oliver Schramm Date: Thu, 4 Oct 2018 01:56:52 +0200 Subject: [PATCH 46/61] [ticket/14812] Prune shadow topics during system cron too PHPBB3-14812 --- .../phpbb/cron/task/core/prune_all_forums.php | 23 +++++++++++-------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/phpBB/phpbb/cron/task/core/prune_all_forums.php b/phpBB/phpbb/cron/task/core/prune_all_forums.php index b47939ccbe..5005f5b894 100644 --- a/phpBB/phpbb/cron/task/core/prune_all_forums.php +++ b/phpBB/phpbb/cron/task/core/prune_all_forums.php @@ -55,21 +55,26 @@ class prune_all_forums extends \phpbb\cron\task\base include($this->phpbb_root_path . 'includes/functions_admin.' . $this->php_ext); } - $sql = 'SELECT forum_id, prune_next, enable_prune, prune_days, prune_viewed, forum_flags, prune_freq - FROM ' . FORUMS_TABLE . " - WHERE enable_prune = 1 - AND prune_next < " . time(); + $sql = 'SELECT forum_id, prune_next, enable_prune, prune_days, prune_viewed, enable_shadow_prune, prune_shadow_days, prune_shadow_freq, prune_shadow_next, forum_flags, prune_freq + FROM ' . FORUMS_TABLE; $result = $this->db->sql_query($sql); while ($row = $this->db->sql_fetchrow($result)) { - if ($row['prune_days']) + if ($row['enable_prune'] && $row['prune_next'] < time()) { - auto_prune($row['forum_id'], 'posted', $row['forum_flags'], $row['prune_days'], $row['prune_freq']); - } + if ($row['prune_days']) + { + auto_prune($row['forum_id'], 'posted', $row['forum_flags'], $row['prune_days'], $row['prune_freq']); + } - if ($row['prune_viewed']) + if ($row['prune_viewed']) + { + auto_prune($row['forum_id'], 'viewed', $row['forum_flags'], $row['prune_viewed'], $row['prune_freq']); + } + } + if ($row['enable_shadow_prune'] && $row['prune_shadow_next'] < time() && $row['prune_shadow_days']) { - auto_prune($row['forum_id'], 'viewed', $row['forum_flags'], $row['prune_viewed'], $row['prune_freq']); + auto_prune($row['forum_id'], 'shadow', $row['forum_flags'], $row['prune_shadow_days'], $row['prune_shadow_freq']); } } $this->db->sql_freeresult($result); From 253b42372f05f38c57da95fa174eed92d7ff863a Mon Sep 17 00:00:00 2001 From: Matt Friedman Date: Wed, 3 Oct 2018 18:50:30 -0700 Subject: [PATCH 47/61] [ticket/15824] Add UI test method to wait for AJAX requests PHPBB3-15824 --- tests/test_framework/phpbb_ui_test_case.php | 33 +++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests/test_framework/phpbb_ui_test_case.php b/tests/test_framework/phpbb_ui_test_case.php index d16ac78c4b..15a1cd375e 100644 --- a/tests/test_framework/phpbb_ui_test_case.php +++ b/tests/test_framework/phpbb_ui_test_case.php @@ -606,4 +606,37 @@ class phpbb_ui_test_case extends phpbb_test_case $this->getDriver()->takeScreenshot($screenshot); } + + /** + * Wait for AJAX. Should be called after an AJAX action is made. + * + * @param string $framework javascript frameworks jquery|prototype|dojo + * @throws \Facebook\WebDriver\Exception\NoSuchElementException + * @throws \Facebook\WebDriver\Exception\TimeOutException + */ + public function waitForAjax($framework = 'jquery') + { + switch ($framework) + { + case 'jquery': + $code = 'return jQuery.active;'; + break; + case 'prototype': + $code = 'return Ajax.activeRequestCount;'; + break; + case 'dojo': + $code = 'return dojo.io.XMLHTTPTransport.inFlight.length;'; + break; + default: + throw new \RuntimeException('Unsupported framework'); + break; + } + // wait for at most 30s, retry every 2000ms (2s) + $driver = $this->getDriver(); + $driver->wait(30, 2000)->until( + function () use ($driver, $code) { + return !$driver->executeScript($code); + } + ); + } } From c9df803d3c99ddc513cff85ac7083d25b86e890f Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Mon, 8 Oct 2018 16:00:06 +0200 Subject: [PATCH 48/61] [ticket/15494] Allow user to be removed from NEWLY_REGISTERED multiple times PHPBB3-15494 --- phpBB/includes/functions_user.php | 5 ----- 1 file changed, 5 deletions(-) diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index f7be2d2760..50cb140d9b 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -3604,11 +3604,6 @@ function remove_newly_registered($user_id, $user_data = false) } } - if (empty($user_data['user_new'])) - { - return false; - } - $sql = 'SELECT group_id FROM ' . GROUPS_TABLE . " WHERE group_name = 'NEWLY_REGISTERED' From 582c1f35626383592aef9aef413c911d4803475d Mon Sep 17 00:00:00 2001 From: rubencm Date: Mon, 8 Oct 2018 21:44:27 +0000 Subject: [PATCH 49/61] [ticket/15762] Update migration dependency PHPBB3-15762 --- .../phpbb/db/migration/data/v32x/forum_topics_per_page_type.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/phpbb/db/migration/data/v32x/forum_topics_per_page_type.php b/phpBB/phpbb/db/migration/data/v32x/forum_topics_per_page_type.php index b9b88bac29..afcecf2ef0 100644 --- a/phpBB/phpbb/db/migration/data/v32x/forum_topics_per_page_type.php +++ b/phpBB/phpbb/db/migration/data/v32x/forum_topics_per_page_type.php @@ -19,7 +19,7 @@ class forum_topics_per_page_type extends \phpbb\db\migration\migration static public function depends_on() { return array( - '\phpbb\db\migration\data\v32x\v323rc2', + '\phpbb\db\migration\data\v32x\v323', ); } From 4a3c00d1c84284c030e7a7a37efc3ada57228726 Mon Sep 17 00:00:00 2001 From: Serge Skripchuk Date: Fri, 23 Mar 2018 19:20:54 +0200 Subject: [PATCH 50/61] [ticket/15600] Escaped ban reasons in JavaScript code of mcp_warn.html PHPBB3-15600 --- phpBB/styles/prosilver/template/mcp_ban.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/styles/prosilver/template/mcp_ban.html b/phpBB/styles/prosilver/template/mcp_ban.html index 5b798d9b6c..9475b6aa49 100644 --- a/phpBB/styles/prosilver/template/mcp_ban.html +++ b/phpBB/styles/prosilver/template/mcp_ban.html @@ -13,10 +13,10 @@ ban_length['{bans.BAN_ID}'] = '{bans.A_LENGTH}'; - ban_reason['{bans.BAN_ID}'] = '{bans.A_REASON}'; + ban_reason['{bans.BAN_ID}'] = '{{ bans.A_REASON | e('js') }}'; - ban_give_reason['{bans.BAN_ID}'] = '{bans.A_GIVE_REASON}'; + ban_give_reason['{bans.BAN_ID}'] = '{{ bans.A_GIVE_REASON | e('js') }}'; From f4b2849aa27fcf5dbd3b22b1daea69d04e28b23d Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Wed, 10 Oct 2018 21:28:10 +0200 Subject: [PATCH 51/61] [ticket/15557] Update composer.phar to 1.7.2 PHPBB3-15557 --- composer.phar | Bin 1585196 -> 1875611 bytes phpBB/composer.lock | 135 ++++++++++++++++++++++---------------------- 2 files changed, 67 insertions(+), 68 deletions(-) diff --git a/composer.phar b/composer.phar index fca2a8d72dd02c9e5025a760b940b5fd46e06d93..96fa2df7bdbe24e62d2435a043fd8d5e6228d4a4 100755 GIT binary patch delta 349335 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 z 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 diff --git a/phpBB/composer.lock b/phpBB/composer.lock index c83ff7aa51..786f2610b2 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -1,10 +1,9 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "hash": "620519ab8cf439078c08f8a4fb49efb8", "content-hash": "c843abc1344cd9df37f63c08a125cad0", "packages": [ { @@ -35,7 +34,7 @@ "MIT" ], "description": "Convenience wrapper around ini_get()", - "time": "2014-09-15 13:12:35" + "time": "2014-09-15T13:12:35+00:00" }, { "name": "google/recaptcha", @@ -80,7 +79,7 @@ "recaptcha", "spam" ], - "time": "2015-09-02 17:23:59" + "time": "2015-09-02T17:23:59+00:00" }, { "name": "guzzlehttp/guzzle", @@ -133,7 +132,7 @@ "rest", "web service" ], - "time": "2018-07-31 13:33:10" + "time": "2018-07-31T13:33:10+00:00" }, { "name": "guzzlehttp/ringphp", @@ -184,7 +183,7 @@ } ], "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", - "time": "2018-07-31 13:22:33" + "time": "2018-07-31T13:22:33+00:00" }, { "name": "guzzlehttp/streams", @@ -234,7 +233,7 @@ "Guzzle", "stream" ], - "time": "2014-10-12 19:18:40" + "time": "2014-10-12T19:18:40+00:00" }, { "name": "ircmaxell/password-compat", @@ -276,7 +275,7 @@ "hashing", "password" ], - "time": "2014-11-20 16:49:30" + "time": "2014-11-20T16:49:30+00:00" }, { "name": "lusitanian/oauth", @@ -343,7 +342,7 @@ "oauth", "security" ], - "time": "2016-07-12 22:15:00" + "time": "2016-07-12T22:15:00+00:00" }, { "name": "marc1706/fast-image-size", @@ -395,7 +394,7 @@ "php", "size" ], - "time": "2017-10-23 18:52:01" + "time": "2017-10-23T18:52:01+00:00" }, { "name": "ocramius/proxy-manager", @@ -458,7 +457,7 @@ "proxy pattern", "service proxies" ], - "time": "2015-08-09 04:28:19" + "time": "2015-08-09T04:28:19+00:00" }, { "name": "paragonie/random_compat", @@ -506,7 +505,7 @@ "pseudorandom", "random" ], - "time": "2017-03-13 16:22:52" + "time": "2017-03-13T16:22:52+00:00" }, { "name": "patchwork/utf8", @@ -565,7 +564,7 @@ "utf-8", "utf8" ], - "time": "2016-05-18 13:57:10" + "time": "2016-05-18T13:57:10+00:00" }, { "name": "psr/log", @@ -612,7 +611,7 @@ "psr", "psr-3" ], - "time": "2016-10-10 12:19:37" + "time": "2016-10-10T12:19:37+00:00" }, { "name": "react/promise", @@ -658,7 +657,7 @@ "promise", "promises" ], - "time": "2018-06-13 15:59:06" + "time": "2018-06-13T15:59:06+00:00" }, { "name": "s9e/text-formatter", @@ -723,7 +722,7 @@ "parser", "shortcodes" ], - "time": "2017-12-10 00:55:53" + "time": "2017-12-10T00:55:53+00:00" }, { "name": "symfony/config", @@ -780,7 +779,7 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2018-07-26 11:13:39" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/console", @@ -841,7 +840,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-07-26 11:13:39" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/debug", @@ -898,7 +897,7 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-08-03 09:45:57" + "time": "2018-08-03T09:45:57+00:00" }, { "name": "symfony/dependency-injection", @@ -961,7 +960,7 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2018-07-26 11:13:39" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/event-dispatcher", @@ -1021,7 +1020,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-07-26 09:03:18" + "time": "2018-07-26T09:03:18+00:00" }, { "name": "symfony/filesystem", @@ -1071,7 +1070,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-08-07 09:12:42" + "time": "2018-08-07T09:12:42+00:00" }, { "name": "symfony/finder", @@ -1120,7 +1119,7 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-07-26 11:13:39" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/http-foundation", @@ -1175,7 +1174,7 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-08-27 15:52:41" + "time": "2018-08-27T15:52:41+00:00" }, { "name": "symfony/http-kernel", @@ -1259,7 +1258,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-08-27 17:33:38" + "time": "2018-08-27T17:33:38+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1317,7 +1316,7 @@ "polyfill", "portable" ], - "time": "2018-08-06 14:22:27" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -1376,7 +1375,7 @@ "portable", "shim" ], - "time": "2018-08-06 14:22:27" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-php54", @@ -1434,7 +1433,7 @@ "portable", "shim" ], - "time": "2018-08-06 14:22:27" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-php55", @@ -1490,7 +1489,7 @@ "portable", "shim" ], - "time": "2018-08-06 14:22:27" + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/proxy-manager-bridge", @@ -1544,7 +1543,7 @@ ], "description": "Symfony ProxyManager Bridge", "homepage": "https://symfony.com", - "time": "2018-07-26 09:03:18" + "time": "2018-07-26T09:03:18+00:00" }, { "name": "symfony/routing", @@ -1618,7 +1617,7 @@ "uri", "url" ], - "time": "2018-07-26 11:13:39" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/twig-bridge", @@ -1703,7 +1702,7 @@ ], "description": "Symfony Twig Bridge", "homepage": "https://symfony.com", - "time": "2018-07-26 11:13:39" + "time": "2018-07-26T11:13:39+00:00" }, { "name": "symfony/yaml", @@ -1753,7 +1752,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-07-26 09:03:18" + "time": "2018-07-26T09:03:18+00:00" }, { "name": "twig/twig", @@ -1819,7 +1818,7 @@ "keywords": [ "templating" ], - "time": "2018-07-13 07:12:17" + "time": "2018-07-13T07:12:17+00:00" }, { "name": "zendframework/zend-code", @@ -1872,7 +1871,7 @@ "code", "zf2" ], - "time": "2015-06-03 15:31:59" + "time": "2015-06-03T15:31:59+00:00" }, { "name": "zendframework/zend-eventmanager", @@ -1917,7 +1916,7 @@ "eventmanager", "zf2" ], - "time": "2015-06-03 15:32:01" + "time": "2015-06-03T15:32:01+00:00" }, { "name": "zendframework/zend-stdlib", @@ -1973,7 +1972,7 @@ "stdlib", "zf2" ], - "time": "2015-06-03 15:32:03" + "time": "2015-06-03T15:32:03+00:00" } ], "packages-dev": [ @@ -2029,7 +2028,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "fabpot/goutte", @@ -2078,7 +2077,7 @@ "keywords": [ "scraper" ], - "time": "2015-05-05 21:14:57" + "time": "2015-05-05T21:14:57+00:00" }, { "name": "facebook/webdriver", @@ -2124,7 +2123,7 @@ "selenium", "webdriver" ], - "time": "2016-08-10 00:44:08" + "time": "2016-08-10T00:44:08+00:00" }, { "name": "laravel/homestead", @@ -2165,7 +2164,7 @@ } ], "description": "A virtual machine for web artisans.", - "time": "2016-09-17 04:42:33" + "time": "2016-09-17T04:42:33+00:00" }, { "name": "michelf/php-markdown", @@ -2211,7 +2210,7 @@ "keywords": [ "markdown" ], - "time": "2018-01-15 00:49:33" + "time": "2018-01-15T00:49:33+00:00" }, { "name": "nikic/php-parser", @@ -2256,7 +2255,7 @@ "parser", "php" ], - "time": "2014-07-23 18:24:17" + "time": "2014-07-23T18:24:17+00:00" }, { "name": "phing/phing", @@ -2308,7 +2307,7 @@ "task", "tool" ], - "time": "2012-11-29 21:23:47" + "time": "2012-11-29T21:23:47+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -2357,7 +2356,7 @@ "email": "mike.vanriel@naenius.com" } ], - "time": "2016-01-25 08:17:30" + "time": "2016-01-25T08:17:30+00:00" }, { "name": "phpspec/prophecy", @@ -2420,7 +2419,7 @@ "spy", "stub" ], - "time": "2018-08-05 17:53:17" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/dbunit", @@ -2479,7 +2478,7 @@ "testing", "xunit" ], - "time": "2015-03-29 14:23:04" + "time": "2015-03-29T14:23:04+00:00" }, { "name": "phpunit/php-code-coverage", @@ -2541,7 +2540,7 @@ "testing", "xunit" ], - "time": "2015-10-06 15:47:00" + "time": "2015-10-06T15:47:00+00:00" }, { "name": "phpunit/php-file-iterator", @@ -2588,7 +2587,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27 13:52:08" + "time": "2017-11-27T13:52:08+00:00" }, { "name": "phpunit/php-text-template", @@ -2629,7 +2628,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -2678,7 +2677,7 @@ "keywords": [ "timer" ], - "time": "2017-02-26 11:10:40" + "time": "2017-02-26T11:10:40+00:00" }, { "name": "phpunit/php-token-stream", @@ -2727,7 +2726,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-12-04 08:55:13" + "time": "2017-12-04T08:55:13+00:00" }, { "name": "phpunit/phpunit", @@ -2799,7 +2798,7 @@ "testing", "xunit" ], - "time": "2017-06-21 08:07:12" + "time": "2017-06-21T08:07:12+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -2855,7 +2854,7 @@ "mock", "xunit" ], - "time": "2015-10-02 06:51:40" + "time": "2015-10-02T06:51:40+00:00" }, { "name": "pimple/pimple", @@ -2903,7 +2902,7 @@ "container", "dependency injection" ], - "time": "2013-03-08 08:21:40" + "time": "2013-03-08T08:21:40+00:00" }, { "name": "sami/sami", @@ -2960,7 +2959,7 @@ "keywords": [ "phpdoc" ], - "time": "2015-06-05 03:36:34" + "time": "2015-06-05T03:36:34+00:00" }, { "name": "sebastian/comparator", @@ -3024,7 +3023,7 @@ "compare", "equality" ], - "time": "2017-01-29 09:50:25" + "time": "2017-01-29T09:50:25+00:00" }, { "name": "sebastian/diff", @@ -3076,7 +3075,7 @@ "keywords": [ "diff" ], - "time": "2017-05-22 07:24:03" + "time": "2017-05-22T07:24:03+00:00" }, { "name": "sebastian/environment", @@ -3126,7 +3125,7 @@ "environment", "hhvm" ], - "time": "2016-08-18 05:49:44" + "time": "2016-08-18T05:49:44+00:00" }, { "name": "sebastian/exporter", @@ -3193,7 +3192,7 @@ "export", "exporter" ], - "time": "2016-06-17 09:04:28" + "time": "2016-06-17T09:04:28+00:00" }, { "name": "sebastian/global-state", @@ -3244,7 +3243,7 @@ "keywords": [ "global state" ], - "time": "2015-10-12 03:26:01" + "time": "2015-10-12T03:26:01+00:00" }, { "name": "sebastian/recursion-context", @@ -3297,7 +3296,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-10-03 07:41:43" + "time": "2016-10-03T07:41:43+00:00" }, { "name": "sebastian/version", @@ -3332,7 +3331,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21 13:59:46" + "time": "2015-06-21T13:59:46+00:00" }, { "name": "squizlabs/php_codesniffer", @@ -3410,7 +3409,7 @@ "phpcs", "standards" ], - "time": "2017-05-22 02:43:20" + "time": "2017-05-22T02:43:20+00:00" }, { "name": "symfony/browser-kit", @@ -3467,7 +3466,7 @@ ], "description": "Symfony BrowserKit Component", "homepage": "https://symfony.com", - "time": "2018-07-26 09:03:18" + "time": "2018-07-26T09:03:18+00:00" }, { "name": "symfony/css-selector", @@ -3520,7 +3519,7 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-07-26 09:03:18" + "time": "2018-07-26T09:03:18+00:00" }, { "name": "symfony/dom-crawler", @@ -3577,7 +3576,7 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2018-07-24 10:05:38" + "time": "2018-07-24T10:05:38+00:00" }, { "name": "symfony/process", @@ -3626,7 +3625,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-08-03 09:45:57" + "time": "2018-08-03T09:45:57+00:00" } ], "aliases": [], From 97a24948e0b167b081c4a21c709c339891de4a41 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Wed, 10 Oct 2018 21:42:15 +0200 Subject: [PATCH 52/61] [ticket/15557] Update symfony to 2.8.46 PHPBB3-15557 --- phpBB/composer.lock | 147 ++++++++++++++++++++++---------------------- 1 file changed, 74 insertions(+), 73 deletions(-) diff --git a/phpBB/composer.lock b/phpBB/composer.lock index 786f2610b2..d235568697 100644 --- a/phpBB/composer.lock +++ b/phpBB/composer.lock @@ -726,16 +726,16 @@ }, { "name": "symfony/config", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af" + "reference": "fb3469266daaa67a1e6d42fc78fa6cdc254689f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/06c0be4cdd8363f3ec8d592c9a4d1b981d5052af", - "reference": "06c0be4cdd8363f3ec8d592c9a4d1b981d5052af", + "url": "https://api.github.com/repos/symfony/config/zipball/fb3469266daaa67a1e6d42fc78fa6cdc254689f6", + "reference": "fb3469266daaa67a1e6d42fc78fa6cdc254689f6", "shasum": "" }, "require": { @@ -779,20 +779,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2018-07-26T11:13:39+00:00" + "time": "2018-09-08T12:44:02+00:00" }, { "name": "symfony/console", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc" + "reference": "aca0dcc0c75496e17e2aa0303bb9c8e6d79ed789" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/0c1fcbb9afb5cff992c982ff99c0434f0146dcfc", - "reference": "0c1fcbb9afb5cff992c982ff99c0434f0146dcfc", + "url": "https://api.github.com/repos/symfony/console/zipball/aca0dcc0c75496e17e2aa0303bb9c8e6d79ed789", + "reference": "aca0dcc0c75496e17e2aa0303bb9c8e6d79ed789", "shasum": "" }, "require": { @@ -840,20 +840,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-07-26T11:13:39+00:00" + "time": "2018-09-30T03:33:07+00:00" }, { "name": "symfony/debug", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "cbb8a5f212148964efbc414838c527229f9951b7" + "reference": "4fd77efcd4a499bf76d4ff46d092c67f3fe9e347" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/cbb8a5f212148964efbc414838c527229f9951b7", - "reference": "cbb8a5f212148964efbc414838c527229f9951b7", + "url": "https://api.github.com/repos/symfony/debug/zipball/4fd77efcd4a499bf76d4ff46d092c67f3fe9e347", + "reference": "4fd77efcd4a499bf76d4ff46d092c67f3fe9e347", "shasum": "" }, "require": { @@ -897,20 +897,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-08-03T09:45:57+00:00" + "time": "2018-09-21T12:46:38+00:00" }, { "name": "symfony/dependency-injection", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "ad2446d39d11c3daaa7f147d957941a187e47357" + "reference": "84219396d1a79d149a5a9d5f71afaf48dcfde7d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/ad2446d39d11c3daaa7f147d957941a187e47357", - "reference": "ad2446d39d11c3daaa7f147d957941a187e47357", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/84219396d1a79d149a5a9d5f71afaf48dcfde7d0", + "reference": "84219396d1a79d149a5a9d5f71afaf48dcfde7d0", "shasum": "" }, "require": { @@ -960,11 +960,11 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2018-07-26T11:13:39+00:00" + "time": "2018-09-08T12:44:02+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", @@ -1024,16 +1024,16 @@ }, { "name": "symfony/filesystem", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "0b252f4e25b7da17abb5a98eb60755b71d082c9c" + "reference": "91f194c5ec8d2ad5ce417a218ce3c46909e92f4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/0b252f4e25b7da17abb5a98eb60755b71d082c9c", - "reference": "0b252f4e25b7da17abb5a98eb60755b71d082c9c", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/91f194c5ec8d2ad5ce417a218ce3c46909e92f4d", + "reference": "91f194c5ec8d2ad5ce417a218ce3c46909e92f4d", "shasum": "" }, "require": { @@ -1070,20 +1070,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-08-07T09:12:42+00:00" + "time": "2018-09-24T08:04:37+00:00" }, { "name": "symfony/finder", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e" + "reference": "5ebb438d1aabe9dba93099dd06e0500f97817a6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/f0de0b51913eb2caab7dfed6413b87e14fca780e", - "reference": "f0de0b51913eb2caab7dfed6413b87e14fca780e", + "url": "https://api.github.com/repos/symfony/finder/zipball/5ebb438d1aabe9dba93099dd06e0500f97817a6e", + "reference": "5ebb438d1aabe9dba93099dd06e0500f97817a6e", "shasum": "" }, "require": { @@ -1119,20 +1119,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-07-26T11:13:39+00:00" + "time": "2018-09-21T12:46:38+00:00" }, { "name": "symfony/http-foundation", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "dc02e684171d0696edb6d4266e9d93af5e3f44d3" + "reference": "9fcce5f0b6896a135d192cc9fd5394fd46f74eff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/dc02e684171d0696edb6d4266e9d93af5e3f44d3", - "reference": "dc02e684171d0696edb6d4266e9d93af5e3f44d3", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/9fcce5f0b6896a135d192cc9fd5394fd46f74eff", + "reference": "9fcce5f0b6896a135d192cc9fd5394fd46f74eff", "shasum": "" }, "require": { @@ -1174,20 +1174,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-08-27T15:52:41+00:00" + "time": "2018-09-23T15:27:53+00:00" }, { "name": "symfony/http-kernel", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "5424d38f10dc62752e655740224681a478d9f5bb" + "reference": "90411d2ad577b883f2fc9de06c86dd564d9ac676" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/5424d38f10dc62752e655740224681a478d9f5bb", - "reference": "5424d38f10dc62752e655740224681a478d9f5bb", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/90411d2ad577b883f2fc9de06c86dd564d9ac676", + "reference": "90411d2ad577b883f2fc9de06c86dd564d9ac676", "shasum": "" }, "require": { @@ -1258,7 +1258,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-08-27T17:33:38+00:00" + "time": "2018-09-30T03:51:44+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1493,7 +1493,7 @@ }, { "name": "symfony/proxy-manager-bridge", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/proxy-manager-bridge.git", @@ -1547,16 +1547,16 @@ }, { "name": "symfony/routing", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "e26f791e8669603e9dc0a601e75a50f914eaa144" + "reference": "fed18962c40095adc36c2ad05bf0d957cc346f61" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/e26f791e8669603e9dc0a601e75a50f914eaa144", - "reference": "e26f791e8669603e9dc0a601e75a50f914eaa144", + "url": "https://api.github.com/repos/symfony/routing/zipball/fed18962c40095adc36c2ad05bf0d957cc346f61", + "reference": "fed18962c40095adc36c2ad05bf0d957cc346f61", "shasum": "" }, "require": { @@ -1617,20 +1617,20 @@ "uri", "url" ], - "time": "2018-07-26T11:13:39+00:00" + "time": "2018-09-08T12:44:02+00:00" }, { "name": "symfony/twig-bridge", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/twig-bridge.git", - "reference": "2bb814a4554a7188275be36503dc27c0dd12cd2f" + "reference": "69d2a5542ea37309292d10029ce52b32656523a0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/2bb814a4554a7188275be36503dc27c0dd12cd2f", - "reference": "2bb814a4554a7188275be36503dc27c0dd12cd2f", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/69d2a5542ea37309292d10029ce52b32656523a0", + "reference": "69d2a5542ea37309292d10029ce52b32656523a0", "shasum": "" }, "require": { @@ -1702,20 +1702,20 @@ ], "description": "Symfony Twig Bridge", "homepage": "https://symfony.com", - "time": "2018-07-26T11:13:39+00:00" + "time": "2018-08-29T13:11:53+00:00" }, { "name": "symfony/yaml", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "fbf876678e29dc634430dcf0096e216eb0004467" + "reference": "5baf0f821b14eee8ca415e6a0361a9fa140c002c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/fbf876678e29dc634430dcf0096e216eb0004467", - "reference": "fbf876678e29dc634430dcf0096e216eb0004467", + "url": "https://api.github.com/repos/symfony/yaml/zipball/5baf0f821b14eee8ca415e6a0361a9fa140c002c", + "reference": "5baf0f821b14eee8ca415e6a0361a9fa140c002c", "shasum": "" }, "require": { @@ -1752,7 +1752,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-07-26T09:03:18+00:00" + "time": "2018-08-29T13:11:53+00:00" }, { "name": "twig/twig", @@ -2959,6 +2959,7 @@ "keywords": [ "phpdoc" ], + "abandoned": true, "time": "2015-06-05T03:36:34+00:00" }, { @@ -3413,7 +3414,7 @@ }, { "name": "symfony/browser-kit", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", @@ -3470,16 +3471,16 @@ }, { "name": "symfony/css-selector", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "294611f3a0d265bcf049e2da62cb4f712e3ed927" + "reference": "4cca41ebe83cd5b4bd0c1a9f6bdfaec7103f97fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/294611f3a0d265bcf049e2da62cb4f712e3ed927", - "reference": "294611f3a0d265bcf049e2da62cb4f712e3ed927", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/4cca41ebe83cd5b4bd0c1a9f6bdfaec7103f97fb", + "reference": "4cca41ebe83cd5b4bd0c1a9f6bdfaec7103f97fb", "shasum": "" }, "require": { @@ -3519,20 +3520,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-07-26T09:03:18+00:00" + "time": "2018-09-08T12:44:02+00:00" }, { "name": "symfony/dom-crawler", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "2fd6513f2dd3b08446da420070084db376c0134c" + "reference": "ba0b706b5ac1c1afcf7d34507a5a272f51cc7721" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/2fd6513f2dd3b08446da420070084db376c0134c", - "reference": "2fd6513f2dd3b08446da420070084db376c0134c", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/ba0b706b5ac1c1afcf7d34507a5a272f51cc7721", + "reference": "ba0b706b5ac1c1afcf7d34507a5a272f51cc7721", "shasum": "" }, "require": { @@ -3576,20 +3577,20 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2018-07-24T10:05:38+00:00" + "time": "2018-09-21T12:46:38+00:00" }, { "name": "symfony/process", - "version": "v2.8.45", + "version": "v2.8.46", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "4be278e19064c3492095de50c9e375caae569ae1" + "reference": "f09e21b7c5aba06c47bbfad9cbcf13ac7f0db0a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/4be278e19064c3492095de50c9e375caae569ae1", - "reference": "4be278e19064c3492095de50c9e375caae569ae1", + "url": "https://api.github.com/repos/symfony/process/zipball/f09e21b7c5aba06c47bbfad9cbcf13ac7f0db0a6", + "reference": "f09e21b7c5aba06c47bbfad9cbcf13ac7f0db0a6", "shasum": "" }, "require": { @@ -3625,7 +3626,7 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-08-03T09:45:57+00:00" + "time": "2018-09-06T17:11:15+00:00" } ], "aliases": [], From 35d49f515092253c12ee49adf8aabdf4ce8e56a1 Mon Sep 17 00:00:00 2001 From: Jim Mossing Holsteyn Date: Sun, 23 Sep 2018 03:01:09 +0200 Subject: [PATCH 53/61] [ticket/15788] Fix return button for Privacy Policy Change the text from "Return to Login Page" to "Return to Previous page" as the privacy policy can now be accessed through the footer so we could return to any random previous page instead of just the login page. PHPBB3-15788 --- phpBB/ucp.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/ucp.php b/phpBB/ucp.php index 7eca5ede62..8cc46153b5 100644 --- a/phpBB/ucp.php +++ b/phpBB/ucp.php @@ -138,7 +138,7 @@ switch ($mode) 'AGREEMENT_TITLE' => $user->lang[$title], 'AGREEMENT_TEXT' => sprintf($user->lang[$message], $config['sitename'], generate_board_url()), 'U_BACK' => append_sid("{$phpbb_root_path}ucp.$phpEx", 'mode=login'), - 'L_BACK' => $user->lang['BACK_TO_LOGIN'], + 'L_BACK' => $user->lang['BACK_TO_PREV'], )); page_footer(); From 52ffe758887d2321ba84c2f26adfa85e0bfa5624 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 16:52:58 +0200 Subject: [PATCH 54/61] [ticket/15554] Add simple_footer_body_after PHPBB3-15554 --- phpBB/docs/events.md | 7 +++++++ phpBB/styles/prosilver/template/simple_footer.html | 2 ++ 2 files changed, 9 insertions(+) diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 6672353296..e833a3b6d3 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -1971,6 +1971,13 @@ simple_footer_after * Locations: + styles/prosilver/template/simple_footer.html * Since: 3.1.0-a1 +* Purpose: Add content prior to the scripts of the simple footer + +simple_footer_body_after +=== +* Locations: + + styles/prosilver/template/simple_footer.html +* Since: 3.2.4-RC1 * Purpose: Add content directly prior to the `` tag of the simple footer simple_header_body_before diff --git a/phpBB/styles/prosilver/template/simple_footer.html b/phpBB/styles/prosilver/template/simple_footer.html index 907ddd97ba..1ef44d1688 100644 --- a/phpBB/styles/prosilver/template/simple_footer.html +++ b/phpBB/styles/prosilver/template/simple_footer.html @@ -34,5 +34,7 @@ {$SCRIPTS} +{% EVENT simple_footer_body_after %} + From f9b1f9ced566a504bf5ba147eac9740d5abdce3c Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 15:11:12 +0200 Subject: [PATCH 55/61] [ticket/15706] Add mcp_post_report_buttons_top_* events PHPBB3-15706 --- phpBB/docs/events.md | 14 ++++++++++++++ phpBB/styles/prosilver/template/mcp_post.html | 2 ++ 2 files changed, 16 insertions(+) diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 6672353296..4cad3563c3 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -974,6 +974,20 @@ mcp_post_additional_options * Since: 3.1.5-RC1 * Purpose: Add content within the list of post moderation actions +mcp_post_report_buttons_top_after +=== +* Locations: + + styles/prosilver/template/mcp_post.html +* Since: 3.2.4-RC1 +* Purpose: Add content after report buttons + +mcp_post_report_buttons_top_before +=== +* Locations: + + styles/prosilver/template/mcp_post.html +* Since: 3.2.4-RC1 +* Purpose: Add content before report buttons + mcp_topic_options_after === * Locations: diff --git a/phpBB/styles/prosilver/template/mcp_post.html b/phpBB/styles/prosilver/template/mcp_post.html index af16c8ab84..f066919529 100644 --- a/phpBB/styles/prosilver/template/mcp_post.html +++ b/phpBB/styles/prosilver/template/mcp_post.html @@ -31,10 +31,12 @@
    + {% EVENT mcp_post_report_buttons_top_before %}   + {% EVENT mcp_post_report_buttons_top_after %} {S_FORM_TOKEN}
    From d48ffde25d66c47186d89e9556a3b29e2c2390d0 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Tue, 25 Sep 2018 14:16:23 +0200 Subject: [PATCH 56/61] [ticket/15792] Add confirm_delete_body_delete_reason_before PHPBB3-15792 --- phpBB/docs/events.md | 7 +++++++ phpBB/styles/prosilver/template/confirm_delete_body.html | 2 ++ 2 files changed, 9 insertions(+) diff --git a/phpBB/docs/events.md b/phpBB/docs/events.md index 6672353296..28f9e82a69 100644 --- a/phpBB/docs/events.md +++ b/phpBB/docs/events.md @@ -652,6 +652,13 @@ attachment_file_prepend * Since: 3.1.6-RC1 * Purpose: Add custom attachment types displaying to the top of attachment block. +confirm_delete_body_delete_reason_before +=== +* Locations: + + styles/prosilver/template/confirm_delete_body.html +* Since: 3.2.4-RC1 +* Purpose: Add custom text to the confirmation of a post that is deleted. + forumlist_body_category_header_after === * Locations: diff --git a/phpBB/styles/prosilver/template/confirm_delete_body.html b/phpBB/styles/prosilver/template/confirm_delete_body.html index 98974963c0..637830a5bc 100644 --- a/phpBB/styles/prosilver/template/confirm_delete_body.html +++ b/phpBB/styles/prosilver/template/confirm_delete_body.html @@ -49,6 +49,8 @@ + {% EVENT confirm_delete_body_delete_reason_before %} +

    {L_DELETE_REASON_EXPLAIN}
    From c67dd0c5912844a50323b97e8fecb30d21bb361c Mon Sep 17 00:00:00 2001 From: DSR! Date: Sat, 3 Mar 2018 12:12:38 -0300 Subject: [PATCH 57/61] [ticket/15836] Event to send message via external transport PHPBB3-15836 --- phpBB/includes/functions_messenger.php | 81 +++++++++++++++++++++----- 1 file changed, 65 insertions(+), 16 deletions(-) diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index fdd1dc6e32..7b530d7119 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -521,7 +521,7 @@ class messenger */ function msg_email() { - global $config; + global $config, $phpbb_dispatcher; if (empty($config['email_enable'])) { @@ -549,6 +549,33 @@ class messenger $contact_name = htmlspecialchars_decode($config['board_contact_name']); $board_contact = (($contact_name !== '') ? '"' . mail_encode($contact_name) . '" ' : '') . '<' . $config['board_contact'] . '>'; + $break = false; + $addresses = $this->addresses; + $subject = $this->subject; + $msg = $this->msg; + /** + * Event to send message via external transport + * + * @event core.notification_message_email + * @var bool break Flag indicating if the function return after hook + * @var array addresses The message recipients + * @var string subject The message subject + * @var string msg The message text + * @since 3.2.4-RC1 + */ + $vars = array( + 'break', + 'addresses', + 'subject', + 'msg', + ); + extract($phpbb_dispatcher->trigger_event('core.notification_message_email', compact($vars))); + + if ($break) + { + return true; + } + if (empty($this->replyto)) { $this->replyto = $board_contact; @@ -787,7 +814,7 @@ class queue */ function process() { - global $config, $phpEx, $phpbb_root_path, $user; + global $config, $phpEx, $phpbb_root_path, $user, $phpbb_dispatcher; $lock = new \phpbb\lock\flock($this->cache_file); $lock->acquire(); @@ -884,23 +911,45 @@ class queue switch ($object) { case 'email': - $err_msg = ''; - $to = (!$to) ? 'undisclosed-recipients:;' : $to; + $break = false; + /** + * Event to send message via external transport + * + * @event core.notification_message_email + * @var bool break Flag indicating if the function return after hook + * @var array addresses The message recipients + * @var string subject The message subject + * @var string msg The message text + * @since 3.2.4-RC1 + */ + $vars = array( + 'break', + 'addresses', + 'subject', + 'msg', + ); + extract($phpbb_dispatcher->trigger_event('core.notification_message_email', compact($vars))); - if ($config['smtp_delivery']) + if (!$break) { - $result = smtpmail($addresses, mail_encode($subject), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $err_msg, $headers); - } - else - { - $result = phpbb_mail($to, $subject, $msg, $headers, PHP_EOL, $err_msg); - } + $err_msg = ''; + $to = (!$to) ? 'undisclosed-recipients:;' : $to; - if (!$result) - { - $messenger = new messenger(); - $messenger->error('EMAIL', $err_msg); - continue 2; + if ($config['smtp_delivery']) + { + $result = smtpmail($addresses, mail_encode($subject), wordwrap(utf8_wordwrap($msg), 997, "\n", true), $err_msg, $headers); + } + else + { + $result = phpbb_mail($to, $subject, $msg, $headers, PHP_EOL, $err_msg); + } + + if (!$result) + { + $messenger = new messenger(); + $messenger->error('EMAIL', $err_msg); + continue 2; + } } break; From a62141ea68e904927032276cb73ad483cbb93a1d Mon Sep 17 00:00:00 2001 From: Alec Date: Mon, 15 Oct 2018 21:57:23 -0400 Subject: [PATCH 58/61] [ticket/15841] Allow postrow pm link to be modified by event Allow postrow.contact pm link to be modified by event above All other variables in postrow.contact can be modified by the event already This lets you hide all contact info on a per user basis PHPBB3-15841 --- phpBB/viewtopic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 28e00dc6fa..55b41aa7fa 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -2115,7 +2115,7 @@ for ($i = 0, $end = count($post_list); $i < $end; ++$i) array( 'ID' => 'pm', 'NAME' => $user->lang['SEND_PRIVATE_MESSAGE'], - 'U_CONTACT' => $u_pm, + 'U_CONTACT' => $post_row['U_PM'], ), array( 'ID' => 'email', From e046bd749821ed199a1054c4312555a3e83c6687 Mon Sep 17 00:00:00 2001 From: Jakub Senko Date: Thu, 18 Oct 2018 13:09:14 +0200 Subject: [PATCH 59/61] [ticket/15848] Update plupload to 2.3.6 PHPBB3-15848 --- phpBB/assets/plupload/plupload.full.min.js | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/phpBB/assets/plupload/plupload.full.min.js b/phpBB/assets/plupload/plupload.full.min.js index 3d01e66083..a58489dc64 100644 --- a/phpBB/assets/plupload/plupload.full.min.js +++ b/phpBB/assets/plupload/plupload.full.min.js @@ -1,6 +1,6 @@ /** * mOxie - multi-runtime File API & XMLHttpRequest L2 Polyfill - * v1.5.5 + * v1.5.7 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -8,15 +8,15 @@ * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * - * Date: 2017-08-26 + * Date: 2017-11-03 */ -!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r0&&c(n,function(n,u){var c=-1!==h(e(n),["array","object"]);return n===r||t&&o[u]===r?!0:(c&&i&&(n=a(n)),e(o[u])===e(n)&&c?s(t,i,[o[u],n]):o[u]=n,void 0)})}),o}function u(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.super=t.prototype,e}function c(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function l(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function d(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++ri;i++)if(t[i]===e)return i}return-1}function f(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===h(t[r],i)&&n.push(t[r]);return n.length?n:!1}function p(e,t){var i=[];return c(e,function(e){-1!==h(e,t)&&i.push(e)}),i.length?i:null}function g(e){var t,i=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:E,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,clone:o,inherit:u,each:c,isEmptyObj:l,inSeries:d,inParallel:m,inArray:h,arrayDiff:f,arrayIntersect:p,toArray:g,trim:x,sprintf:w,parseSizeStr:v,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(mn;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var n=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a=9)},use_data_uri_of:function(e){return i.use_data_uri&&33e3>e||i.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),i.use_fileinput=!e.disabled},use_webgl:function(){var e,n=document.createElement("canvas"),r=null;try{r=n.getContext("webgl")||n.getContext("experimental-webgl")}catch(o){}return r||(r=null),e=!!r,i.use_webgl=e,n=t,e}};return function(t){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(i[t])?i[t].apply(this,n):!!i[t]}}(),o=(new n).getResult(),a={can:r,uaParser:n,browser:o.browser.name,version:o.browser.version,os:o.os.name,osVersion:o.os.version,verComp:i,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return a.OS=a.os,a}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.getGlobalEventTarget=function(){if(/^moxie\./.test(e.global_event_dispatcher)&&!e.can("access_global_ns")){var i=t.guid("moxie_event_target_");window[i]=function(e,t){n.instance.dispatchEvent(e,t)},e.global_event_dispatcher=i}return e.global_event_dispatcher},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb xlt xla,application/vnd.ms-powerpoint,ppt pps pot ppa,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={mimes:{},extensions:{},addMimeType:function(e){var t,i,n,r=e.split(/,/);for(t=0;ta;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){R&&(R.destroy(),R=null),s.dispatchEvent("loadend"),s=null}function r(r){R.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),R.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),R.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),R.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(R,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(R,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(R,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),R.bind("Abort",function(e){s.dispatchEvent(e),n()}),R.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(R,"XMLHttpRequest","send",{url:x,method:v,async:T,user:w,password:y,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),R=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(R.connectRuntime(k)):(R.bind("RuntimeInit",function(e,t){r(t)}),R.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),R.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,w,y,E,b,R,_,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(w=u||l.user,y=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(_||(_={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),_[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),_.hasOwnProperty(t))?_[t].header+": "+_[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!R)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);R.getRuntime().exec.call(R,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){R&&("function"===e.typeOf(R.destroy)&&R.destroy(),R=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height),r>1&&!s.fit&&(r=1);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,fit:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return this.exec("Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,fit:!0,resample:"nearest"},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){this.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.meta&&this.meta.thumb&&this.meta.thumb.data.destroy(),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&!("Firefox"===n.browser&&n.verComp(n.version,4,"<")||"Opera"===n.browser&&n.verComp(n.version,12,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<"))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))},this.destroy=function(){this.getRuntime().getShim().removeInstance(this.uid)}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),(g.can("summon_file_dialog")?c:m).setAttribute("tabindex",-1),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){};try{if(m.status>=200&&m.status<400){s.trigger("load");break}}catch(r){}s.trigger("error")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},w={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=w[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;ii.height?"width":"height",a=Math.round(i[o]*n),s=!1;"nearest"!==r&&(.5>n||n>2)&&(n=.5>n?.5:2,s=!0);var u=t(i,n);return s?e(u,a/u[o],r):u}function t(e,t){var i=e.width,n=e.height,r=Math.round(i*t),o=Math.round(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u,c){function l(){function e(){if(!w&&!x)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return w||x}function l(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(w=document.createElement("canvas"),w.width=t.width,w.height=t.height,w.getContext("2d").drawImage(t,0,0),w)}function d(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function m(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function h(e){var t=this,n=e.substr(0,5);x=new Image,x.onerror=function(){g.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},x.onload=function(){t.trigger("load")},x.src="data:"===n||"blob:"===n?e:m(e,E.type)}function f(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t.call(r,this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t.call(this,e.getAsDataURL())}function p(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function g(){v&&(v.purge(),v=null),x&&c.can("use_blob_uri")&&URL.revokeObjectURL(x.src),y=x=w=E=null,R=!1}var x,v,w,y,E,b=this,R=!1,_=!0;t.extend(this,{loadFromBlob:function(e){var t=this.getRuntime(),n=arguments.length>1?arguments[1]:!0;if(!t.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);E=e,e.isDetached()?(y=e.getSource(),h.call(this,y)):c.can("use_blob_uri")?h.call(this,URL.createObjectURL(e.getSource())):f.call(this,e.getSource(),function(e){n&&(y=d(e)),h.call(this,e)})},loadFromImage:function(e,t){var i=this;i.meta=e.meta,E=new o(null,{name:e.name,size:e.size,type:e.type}),c.can("create_canvas")&&!t?(w=e.getAsCanvas(),setTimeout(function(){i.trigger("load")})):h.call(this,t?y=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!v&&y&&i.can("access_image_binary")&&(v=new a(y)),t={width:e().width||0,height:e().height||0,type:E.type||u.getFileMime(E.name),size:y&&y.length||E.size||0,name:E.name||"",meta:null},_&&(t.meta=v&&v.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),w=s.scale(r,i),_=n.preserveHeaders,!_){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;w=p(w,o)}this.width=w.width,this.height=w.height,R=!0,this.trigger("Resize")},getAsCanvas:function(){return w||(w=l()),w.id=this.uid+"_canvas",w},getAsBlob:function(e,t){return e!==this.type?(R=!0,new o(null,{name:E.name||"",type:e,data:b.getAsDataURL(e,t)})):new o(null,{name:E.name||"",type:e,data:b.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!R&&"data:"===x.src.substr(0,5))return x.src;if(l(),"image/jpeg"!==e)return w.toDataURL("image/png");try{return w.toDataURL("image/jpeg",t/100)}catch(i){return w.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!R)return y||(y=d(b.getAsDataURL(e,t))),y;if("image/jpeg"!==e)y=d(b.getAsDataURL(e,t));else{var i;t||(t=90),l();try{i=w.toDataURL("image/jpeg",t/100)}catch(n){i=w.toDataURL("image/jpeg")}y=d(i),v&&(y=v.stripHeaders(y),_&&(v.meta&&v.meta.exif&&v.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),y=v.writeHeaders(y)),v.purge(),v=null)}return R=!1,y},destroy:function(){b=null,g.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=l}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,a;a=this.getShimContainer(),e.extend(a.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i=''+''+''+''+"","IE"===t.browser?(r=document.createElement("div"),a.appendChild(r),r.outerHTML=i,r=a=null):a.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Dom","moxie/core/utils/Basic"],function(e,t,i,n){var r={init:function(e){var r=this,o=this.getRuntime(),a=i.get(e.browse_button);a&&(a.setAttribute("tabindex",-1),a=null),this.bind("Change",function(){var e=o.shimExec.call(r,"FileInput","getFiles");r.files=[],n.each(e,function(e){r.files.push(new t(o.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=r}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return t.meta&&t.meta.thumb&&t.meta.thumb.data&&!(e.meta.thumb.data instanceof n)&&(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML=''+''+''+''+''+''+"",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Dom","moxie/core/utils/Basic"],function(e,t,i,n){function r(e){for(var t="",i=0;ii;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),r.meta&&r.meta.thumb&&r.meta.thumb.data&&!(e.meta.thumb.data instanceof i)&&(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&!("Firefox"===n.browser&&n.verComp(n.version,4,"<")||"Opera"===n.browser&&n.verComp(n.version,12,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<"))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&(i.extend(d.style,{top:"100%"}),d.firstChild.setAttribute("tabindex",-1))),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),g.can("summon_file_dialog")&&h.setAttribute("tabindex",-1),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;this.value&&(i=this.files?this.files[0]:{name:this.value},i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null)},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")?("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})):e.setAttribute("tabindex",-1),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=w.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,w=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),w.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})},destroy:function(){this.getRuntime().getShim().removeInstance(this.uid)}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)}); +!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.moxie};"function"==typeof define&&define.amd?define("moxie",[],i):"object"==typeof module&&module.exports?module.exports=i():e.moxie=i()}(this||window,function(){!function(e,t){"use strict";function i(e,t){for(var i,n=[],r=0;r0&&c(n,function(n,u){var c=-1!==h(e(n),["array","object"]);return n===r||t&&o[u]===r?!0:(c&&i&&(n=a(n)),e(o[u])===e(n)&&c?s(t,i,[o[u],n]):o[u]=n,void 0)})}),o}function u(e,t){function i(){this.constructor=e}for(var n in t)({}).hasOwnProperty.call(t,n)&&(e[n]=t[n]);return i.prototype=t.prototype,e.prototype=new i,e.parent=t.prototype,e}function c(e,t){var i,n,r,o;if(e){try{i=e.length}catch(a){i=o}if(i===o||"number"!=typeof i){for(n in e)if(e.hasOwnProperty(n)&&t(e[n],n)===!1)return}else for(r=0;i>r;r++)if(t(e[r],r)===!1)return}}function l(t){var i;if(!t||"object"!==e(t))return!0;for(i in t)return!1;return!0}function d(t,i){function n(r){"function"===e(t[r])&&t[r](function(e){++ri;i++)if(t[i]===e)return i}return-1}function f(t,i){var n=[];"array"!==e(t)&&(t=[t]),"array"!==e(i)&&(i=[i]);for(var r in t)-1===h(t[r],i)&&n.push(t[r]);return n.length?n:!1}function p(e,t){var i=[];return c(e,function(e){-1!==h(e,t)&&i.push(e)}),i.length?i:null}function g(e){var t,i=[];for(t=0;ti;i++)n+=Math.floor(65535*Math.random()).toString(32);return(t||"o_")+n+(e++).toString(32)}}();return{guid:E,typeOf:e,extend:t,extendIf:i,extendImmutable:n,extendImmutableIf:r,clone:o,inherit:u,each:c,isEmptyObj:l,inSeries:d,inParallel:m,inArray:h,arrayDiff:f,arrayIntersect:p,toArray:g,trim:x,sprintf:w,parseSizeStr:v,delay:y}}),n("moxie/core/utils/Encode",[],function(){var e=function(e){return unescape(encodeURIComponent(e))},t=function(e){return decodeURIComponent(escape(e))},i=function(e,i){if("function"==typeof window.atob)return i?t(window.atob(e)):window.atob(e);var n,r,o,a,s,u,c,l,d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",m=0,h=0,f="",p=[];if(!e)return e;e+="";do a=d.indexOf(e.charAt(m++)),s=d.indexOf(e.charAt(m++)),u=d.indexOf(e.charAt(m++)),c=d.indexOf(e.charAt(m++)),l=a<<18|s<<12|u<<6|c,n=255&l>>16,r=255&l>>8,o=255&l,p[h++]=64==u?String.fromCharCode(n):64==c?String.fromCharCode(n,r):String.fromCharCode(n,r,o);while(m>18,s=63&l>>12,u=63&l>>6,c=63&l,p[h++]=d.charAt(a)+d.charAt(s)+d.charAt(u)+d.charAt(c);while(mn;n++)if(e[n]!=t[n]){if(e[n]=u(e[n]),t[n]=u(t[n]),e[n]t[n]){o=1;break}}if(!i)return o;switch(i){case">":case"gt":return o>0;case">=":case"ge":return o>=0;case"<=":case"le":return 0>=o;case"==":case"=":case"eq":return 0===o;case"<>":case"!=":case"ne":return 0!==o;case"":case"<":case"lt":return 0>o;default:return null}}var n=function(e){var t="",i="?",n="function",r="undefined",o="object",a="name",s="version",u={has:function(e,t){return-1!==t.toLowerCase().indexOf(e.toLowerCase())},lowerize:function(e){return e.toLowerCase()}},c={rgx:function(){for(var t,i,a,s,u,c,l,d=0,m=arguments;d0?2==u.length?t[u[0]]=typeof u[1]==n?u[1].call(this,l):u[1]:3==u.length?t[u[0]]=typeof u[1]!==n||u[1].exec&&u[1].test?l?l.replace(u[1],u[2]):e:l?u[1].call(this,l,u[2]):e:4==u.length&&(t[u[0]]=l?u[3].call(this,l.replace(u[1],u[2])):e):t[u]=l?l:e;break}if(c)break}return t},str:function(t,n){for(var r in n)if(typeof n[r]===o&&n[r].length>0){for(var a=0;a=")),i.use_blob_uri},use_data_uri:function(){var e=new Image;return e.onload=function(){i.use_data_uri=1===e.width&&1===e.height},setTimeout(function(){e.src="data:image/gif;base64,R0lGODlhAQABAIAAAP8AAAAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw=="},1),!1}(),use_data_uri_over32kb:function(){return i.use_data_uri&&("IE"!==a.browser||a.version>=9)},use_data_uri_of:function(e){return i.use_data_uri&&33e3>e||i.use_data_uri_over32kb()},use_fileinput:function(){if(navigator.userAgent.match(/(Android (1.0|1.1|1.5|1.6|2.0|2.1))|(Windows Phone (OS 7|8.0))|(XBLWP)|(ZuneWP)|(w(eb)?OSBrowser)|(webOS)|(Kindle\/(1.0|2.0|2.5|3.0))/))return!1;var e=document.createElement("input");return e.setAttribute("type","file"),i.use_fileinput=!e.disabled},use_webgl:function(){var e,n=document.createElement("canvas"),r=null;try{r=n.getContext("webgl")||n.getContext("experimental-webgl")}catch(o){}return r||(r=null),e=!!r,i.use_webgl=e,n=t,e}};return function(t){var n=[].slice.call(arguments);return n.shift(),"function"===e.typeOf(i[t])?i[t].apply(this,n):!!i[t]}}(),o=(new n).getResult(),a={can:r,uaParser:n,browser:o.browser.name,version:o.browser.version,os:o.os.name,osVersion:o.os.version,verComp:i,swf_url:"../flash/Moxie.swf",xap_url:"../silverlight/Moxie.xap",global_event_dispatcher:"moxie.core.EventTarget.instance.dispatchEvent"};return a.OS=a.os,a}),n("moxie/core/Exceptions",["moxie/core/utils/Basic"],function(e){function t(e,t){var i;for(i in e)if(e[i]===t)return i;return null}return{RuntimeError:function(){function i(e,i){this.code=e,this.name=t(n,e),this.message=this.name+(i||": RuntimeError "+this.code)}var n={NOT_INIT_ERR:1,EXCEPTION_ERR:3,NOT_SUPPORTED_ERR:9,JS_ERR:4};return e.extend(i,n),i.prototype=Error.prototype,i}(),OperationNotAllowedException:function(){function t(e){this.code=e,this.name="OperationNotAllowedException"}return e.extend(t,{NOT_ALLOWED_ERR:1}),t.prototype=Error.prototype,t}(),ImageError:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": ImageError "+this.code}var n={WRONG_FORMAT:1,MAX_RESOLUTION_ERR:2,INVALID_META_ERR:3};return e.extend(i,n),i.prototype=Error.prototype,i}(),FileException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": FileException "+this.code}var n={NOT_FOUND_ERR:1,SECURITY_ERR:2,ABORT_ERR:3,NOT_READABLE_ERR:4,ENCODING_ERR:5,NO_MODIFICATION_ALLOWED_ERR:6,INVALID_STATE_ERR:7,SYNTAX_ERR:8};return e.extend(i,n),i.prototype=Error.prototype,i}(),DOMException:function(){function i(e){this.code=e,this.name=t(n,e),this.message=this.name+": DOMException "+this.code}var n={INDEX_SIZE_ERR:1,DOMSTRING_SIZE_ERR:2,HIERARCHY_REQUEST_ERR:3,WRONG_DOCUMENT_ERR:4,INVALID_CHARACTER_ERR:5,NO_DATA_ALLOWED_ERR:6,NO_MODIFICATION_ALLOWED_ERR:7,NOT_FOUND_ERR:8,NOT_SUPPORTED_ERR:9,INUSE_ATTRIBUTE_ERR:10,INVALID_STATE_ERR:11,SYNTAX_ERR:12,INVALID_MODIFICATION_ERR:13,NAMESPACE_ERR:14,INVALID_ACCESS_ERR:15,VALIDATION_ERR:16,TYPE_MISMATCH_ERR:17,SECURITY_ERR:18,NETWORK_ERR:19,ABORT_ERR:20,URL_MISMATCH_ERR:21,QUOTA_EXCEEDED_ERR:22,TIMEOUT_ERR:23,INVALID_NODE_TYPE_ERR:24,DATA_CLONE_ERR:25};return e.extend(i,n),i.prototype=Error.prototype,i}(),EventException:function(){function t(e){this.code=e,this.name="EventException"}return e.extend(t,{UNSPECIFIED_EVENT_TYPE_ERR:0}),t.prototype=Error.prototype,t}()}}),n("moxie/core/utils/Dom",["moxie/core/utils/Env"],function(e){var t=function(e){return"string"!=typeof e?e:document.getElementById(e)},i=function(e,t){if(!e.className)return!1;var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");return i.test(e.className)},n=function(e,t){i(e,t)||(e.className=e.className?e.className.replace(/\s+$/,"")+" "+t:t)},r=function(e,t){if(e.className){var i=new RegExp("(^|\\s+)"+t+"(\\s+|$)");e.className=e.className.replace(i,function(e,t,i){return" "===t&&" "===i?" ":""})}},o=function(e,t){return e.currentStyle?e.currentStyle[t]:window.getComputedStyle?window.getComputedStyle(e,null)[t]:void 0},a=function(t,i){function n(e){var t,i,n=0,r=0;return e&&(i=e.getBoundingClientRect(),t="CSS1Compat"===c.compatMode?c.documentElement:c.body,n=i.left+t.scrollLeft,r=i.top+t.scrollTop),{x:n,y:r}}var r,o,a,s=0,u=0,c=document;if(t=t,i=i||c.body,t&&t.getBoundingClientRect&&"IE"===e.browser&&(!c.documentMode||c.documentMode<8))return o=n(t),a=n(i),{x:o.x-a.x,y:o.y-a.y};for(r=t;r&&r!=i&&r.nodeType;)s+=r.offsetLeft||0,u+=r.offsetTop||0,r=r.offsetParent;for(r=t.parentNode;r&&r!=i&&r.nodeType;)s-=r.scrollLeft||0,u-=r.scrollTop||0,r=r.parentNode;return{x:s,y:u}},s=function(e){return{w:e.offsetWidth||e.clientWidth,h:e.offsetHeight||e.clientHeight}};return{get:t,hasClass:i,addClass:n,removeClass:r,getStyle:o,getPos:a,getSize:s}}),n("moxie/core/EventTarget",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic"],function(e,t,i){function n(){this.uid=i.guid()}var r={};return i.extend(n.prototype,{init:function(){this.uid||(this.uid=i.guid("uid_"))},addEventListener:function(e,t,n,o){var a,s=this;return this.hasOwnProperty("uid")||(this.uid=i.guid("uid_")),e=i.trim(e),/\s/.test(e)?(i.each(e.split(/\s+/),function(e){s.addEventListener(e,t,n,o)}),void 0):(e=e.toLowerCase(),n=parseInt(n,10)||0,a=r[this.uid]&&r[this.uid][e]||[],a.push({fn:t,priority:n,scope:o||this}),r[this.uid]||(r[this.uid]={}),r[this.uid][e]=a,void 0)},hasEventListener:function(e){var t;return e?(e=e.toLowerCase(),t=r[this.uid]&&r[this.uid][e]):t=r[this.uid],t?t:!1},removeEventListener:function(e,t){var n,o,a=this;if(e=e.toLowerCase(),/\s/.test(e))return i.each(e.split(/\s+/),function(e){a.removeEventListener(e,t)}),void 0;if(n=r[this.uid]&&r[this.uid][e]){if(t){for(o=n.length-1;o>=0;o--)if(n[o].fn===t){n.splice(o,1);break}}else n=[];n.length||(delete r[this.uid][e],i.isEmptyObj(r[this.uid])&&delete r[this.uid])}},removeAllEventListeners:function(){r[this.uid]&&delete r[this.uid]},dispatchEvent:function(e){var n,o,a,s,u,c={},l=!0;if("string"!==i.typeOf(e)){if(s=e,"string"!==i.typeOf(s.type))throw new t.EventException(t.EventException.UNSPECIFIED_EVENT_TYPE_ERR);e=s.type,s.total!==u&&s.loaded!==u&&(c.total=s.total,c.loaded=s.loaded),c.async=s.async||!1}if(-1!==e.indexOf("::")?function(t){n=t[0],e=t[1]}(e.split("::")):n=this.uid,e=e.toLowerCase(),o=r[n]&&r[n][e]){o.sort(function(e,t){return t.priority-e.priority}),a=[].slice.call(arguments),a.shift(),c.type=e,a.unshift(c);var d=[];i.each(o,function(e){a[0].target=e.scope,c.async?d.push(function(t){setTimeout(function(){t(e.fn.apply(e.scope,a)===!1)},1)}):d.push(function(t){t(e.fn.apply(e.scope,a)===!1)})}),d.length&&i.inSeries(d,function(e){l=!e})}return l},bindOnce:function(e,t,i,n){var r=this;r.bind.call(this,e,function o(){return r.unbind(e,o),t.apply(this,arguments)},i,n)},bind:function(){this.addEventListener.apply(this,arguments)},unbind:function(){this.removeEventListener.apply(this,arguments)},unbindAll:function(){this.removeAllEventListeners.apply(this,arguments)},trigger:function(){return this.dispatchEvent.apply(this,arguments)},handleEventProps:function(e){var t=this;this.bind(e.join(" "),function(e){var t="on"+e.type.toLowerCase();"function"===i.typeOf(this[t])&&this[t].apply(this,arguments)}),i.each(e,function(e){e="on"+e.toLowerCase(e),"undefined"===i.typeOf(t[e])&&(t[e]=null)})}}),n.instance=new n,n}),n("moxie/runtime/Runtime",["moxie/core/utils/Env","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/EventTarget"],function(e,t,i,n){function r(e,n,o,s,u){var c,l=this,d=t.guid(n+"_"),m=u||"browser";e=e||{},a[d]=this,o=t.extend({access_binary:!1,access_image_binary:!1,display_media:!1,do_cors:!1,drag_and_drop:!1,filter_by_extension:!0,resize_image:!1,report_upload_progress:!1,return_response_headers:!1,return_response_type:!1,return_status_code:!0,send_custom_headers:!1,select_file:!1,select_folder:!1,select_multiple:!0,send_binary_string:!1,send_browser_cookies:!0,send_multipart:!0,slice_blob:!1,stream_upload:!1,summon_file_dialog:!1,upload_filesize:!0,use_http_method:!0},o),e.preferred_caps&&(m=r.getMode(s,e.preferred_caps,m)),c=function(){var e={};return{exec:function(t,i,n,r){return c[i]&&(e[t]||(e[t]={context:this,instance:new c[i]}),e[t].instance[n])?e[t].instance[n].apply(this,r):void 0},removeInstance:function(t){delete e[t]},removeAllInstances:function(){var i=this;t.each(e,function(e,n){"function"===t.typeOf(e.instance.destroy)&&e.instance.destroy.call(e.context),i.removeInstance(n)})}}}(),t.extend(this,{initialized:!1,uid:d,type:n,mode:r.getMode(s,e.required_caps,m),shimid:d+"_container",clients:0,options:e,can:function(e,i){var n=arguments[2]||o;if("string"===t.typeOf(e)&&"undefined"===t.typeOf(i)&&(e=r.parseCaps(e)),"object"===t.typeOf(e)){for(var a in e)if(!this.can(a,e[a],n))return!1;return!0}return"function"===t.typeOf(n[e])?n[e].call(this,i):i===n[e]},getShimContainer:function(){var e,n=i.get(this.shimid);return n||(e=i.get(this.options.container)||document.body,n=document.createElement("div"),n.id=this.shimid,n.className="moxie-shim moxie-shim-"+this.type,t.extend(n.style,{position:"absolute",top:"0px",left:"0px",width:"1px",height:"1px",overflow:"hidden"}),e.appendChild(n),e=null),n},getShim:function(){return c},shimExec:function(e,t){var i=[].slice.call(arguments,2);return l.getShim().exec.call(this,this.uid,e,t,i)},exec:function(e,t){var i=[].slice.call(arguments,2);return l[e]&&l[e][t]?l[e][t].apply(this,i):l.shimExec.apply(this,arguments)},destroy:function(){if(l){var e=i.get(this.shimid);e&&e.parentNode.removeChild(e),c&&c.removeAllInstances(),this.unbindAll(),delete a[this.uid],this.uid=null,d=l=c=e=null}}}),this.mode&&e.required_caps&&!this.can(e.required_caps)&&(this.mode=!1)}var o={},a={};return r.order="html5,flash,silverlight,html4",r.getRuntime=function(e){return a[e]?a[e]:!1},r.addConstructor=function(e,t){t.prototype=n.instance,o[e]=t},r.getConstructor=function(e){return o[e]||null},r.getInfo=function(e){var t=r.getRuntime(e);return t?{uid:t.uid,type:t.type,mode:t.mode,can:function(){return t.can.apply(t,arguments)}}:null},r.parseCaps=function(e){var i={};return"string"!==t.typeOf(e)?e||{}:(t.each(e.split(","),function(e){i[e]=!0}),i)},r.can=function(e,t){var i,n,o=r.getConstructor(e);return o?(i=new o({required_caps:t}),n=i.mode,i.destroy(),!!n):!1},r.thatCan=function(e,t){var i=(t||r.order).split(/\s*,\s*/);for(var n in i)if(r.can(i[n],e))return i[n];return null},r.getMode=function(e,i,n){var r=null;if("undefined"===t.typeOf(n)&&(n="browser"),i&&!t.isEmptyObj(e)){if(t.each(i,function(i,n){if(e.hasOwnProperty(n)){var o=e[n](i);if("string"==typeof o&&(o=[o]),r){if(!(r=t.arrayIntersect(r,o)))return r=!1}else r=o}}),r)return-1!==t.inArray(n,r)?n:r[0];if(r===!1)return!1}return n},r.getGlobalEventTarget=function(){if(/^moxie\./.test(e.global_event_dispatcher)&&!e.can("access_global_ns")){var i=t.guid("moxie_event_target_");window[i]=function(e,t){n.instance.dispatchEvent(e,t)},e.global_event_dispatcher=i}return e.global_event_dispatcher},r.capTrue=function(){return!0},r.capFalse=function(){return!1},r.capTest=function(e){return function(){return!!e}},r}),n("moxie/runtime/RuntimeClient",["moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/Runtime"],function(e,t,i,n){return function(){var e;i.extend(this,{connectRuntime:function(r){function o(i){var a,u;return i.length?(a=i.shift().toLowerCase(),(u=n.getConstructor(a))?(e=new u(r),e.bind("Init",function(){e.initialized=!0,setTimeout(function(){e.clients++,s.ruid=e.uid,s.trigger("RuntimeInit",e)},1)}),e.bind("Error",function(){e.destroy(),o(i)}),e.bind("Exception",function(e,i){var n=i.name+"(#"+i.code+")"+(i.message?", from: "+i.message:"");s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.EXCEPTION_ERR,n))}),e.mode?(e.init(),void 0):(e.trigger("Error"),void 0)):(o(i),void 0)):(s.trigger("RuntimeError",new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)),e=null,void 0)}var a,s=this;if("string"===i.typeOf(r)?a=r:"string"===i.typeOf(r.ruid)&&(a=r.ruid),a){if(e=n.getRuntime(a))return s.ruid=a,e.clients++,e;throw new t.RuntimeError(t.RuntimeError.NOT_INIT_ERR)}o((r.runtime_order||n.order).split(/\s*,\s*/))},disconnectRuntime:function(){e&&--e.clients<=0&&e.destroy(),e=null},getRuntime:function(){return e&&e.uid?e:e=null},exec:function(){return e?e.exec.apply(this,arguments):null},can:function(t){return e?e.can(t):!1}})}}),n("moxie/file/Blob",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient"],function(e,t,i){function n(o,a){function s(t,i,o){var a,s=r[this.uid];return"string"===e.typeOf(s)&&s.length?(a=new n(null,{type:o,size:i-t}),a.detach(s.substr(t,a.size)),a):null}i.call(this),o&&this.connectRuntime(o),a?"string"===e.typeOf(a)&&(a={data:a}):a={},e.extend(this,{uid:a.uid||e.guid("uid_"),ruid:o,size:a.size||0,type:a.type||"",slice:function(e,t,i){return this.isDetached()?s.apply(this,arguments):this.getRuntime().exec.call(this,"Blob","slice",this.getSource(),e,t,i)},getSource:function(){return r[this.uid]?r[this.uid]:null},detach:function(e){if(this.ruid&&(this.getRuntime().exec.call(this,"Blob","destroy"),this.disconnectRuntime(),this.ruid=null),e=e||"","data:"==e.substr(0,5)){var i=e.indexOf(";base64,");this.type=e.substring(5,i),e=t.atob(e.substring(i+8))}this.size=e.length,r[this.uid]=e},isDetached:function(){return!this.ruid&&"string"===e.typeOf(r[this.uid])},destroy:function(){this.detach(),delete r[this.uid]}}),a.data?this.detach(a.data):r[this.uid]=a}var r={};return n}),n("moxie/core/I18n",["moxie/core/utils/Basic"],function(e){var t={};return{addI18n:function(i){return e.extend(t,i)},translate:function(e){return t[e]||e},_:function(e){return this.translate(e)},sprintf:function(t){var i=[].slice.call(arguments,1);return t.replace(/%[a-z]/g,function(){var t=i.shift();return"undefined"!==e.typeOf(t)?t:""})}}}),n("moxie/core/utils/Mime",["moxie/core/utils/Basic","moxie/core/I18n"],function(e,t){var i="application/msword,doc dot,application/pdf,pdf,application/pgp-signature,pgp,application/postscript,ps ai eps,application/rtf,rtf,application/vnd.ms-excel,xls xlb xlt xla,application/vnd.ms-powerpoint,ppt pps pot ppa,application/zip,zip,application/x-shockwave-flash,swf swfl,application/vnd.openxmlformats-officedocument.wordprocessingml.document,docx,application/vnd.openxmlformats-officedocument.wordprocessingml.template,dotx,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,xlsx,application/vnd.openxmlformats-officedocument.presentationml.presentation,pptx,application/vnd.openxmlformats-officedocument.presentationml.template,potx,application/vnd.openxmlformats-officedocument.presentationml.slideshow,ppsx,application/x-javascript,js,application/json,json,audio/mpeg,mp3 mpga mpega mp2,audio/x-wav,wav,audio/x-m4a,m4a,audio/ogg,oga ogg,audio/aiff,aiff aif,audio/flac,flac,audio/aac,aac,audio/ac3,ac3,audio/x-ms-wma,wma,image/bmp,bmp,image/gif,gif,image/jpeg,jpg jpeg jpe,image/photoshop,psd,image/png,png,image/svg+xml,svg svgz,image/tiff,tiff tif,text/plain,asc txt text diff log,text/html,htm html xhtml,text/css,css,text/csv,csv,text/rtf,rtf,video/mpeg,mpeg mpg mpe m2v,video/quicktime,qt mov,video/mp4,mp4,video/x-m4v,m4v,video/x-flv,flv,video/x-ms-wmv,wmv,video/avi,avi,video/webm,webm,video/3gpp,3gpp 3gp,video/3gpp2,3g2,video/vnd.rn-realvideo,rv,video/ogg,ogv,video/x-matroska,mkv,application/vnd.oasis.opendocument.formula-template,otf,application/octet-stream,exe",n={},r={},o=function(e){var t,i,o,a=e.split(/,/);for(t=0;ta;a++)o+=String.fromCharCode(r[a]);return o}}t.call(this),e.extend(this,{uid:e.guid("uid_"),readAsBinaryString:function(e){return n.call(this,"readAsBinaryString",e)},readAsDataURL:function(e){return n.call(this,"readAsDataURL",e)},readAsText:function(e){return n.call(this,"readAsText",e)}})}}),n("moxie/xhr/FormData",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/file/Blob"],function(e,t,i){function n(){var e,n=[];t.extend(this,{append:function(r,o){var a=this,s=t.typeOf(o);o instanceof i?e={name:r,value:o}:"array"===s?(r+="[]",t.each(o,function(e){a.append(r,e)})):"object"===s?t.each(o,function(e,t){a.append(r+"["+t+"]",e)}):"null"===s||"undefined"===s||"number"===s&&isNaN(o)?a.append(r,"false"):n.push({name:r,value:o.toString()})},hasBlob:function(){return!!this.getBlob()},getBlob:function(){return e&&e.value||null},getBlobName:function(){return e&&e.name||null},each:function(i){t.each(n,function(e){i(e.value,e.name)}),e&&i(e.value,e.name)},destroy:function(){e=null,n=[]}})}return n}),n("moxie/xhr/XMLHttpRequest",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/EventTarget","moxie/core/utils/Encode","moxie/core/utils/Url","moxie/runtime/Runtime","moxie/runtime/RuntimeTarget","moxie/file/Blob","moxie/file/FileReaderSync","moxie/xhr/FormData","moxie/core/utils/Env","moxie/core/utils/Mime"],function(e,t,i,n,r,o,a,s,u,c,l,d){function m(){this.uid=e.guid("uid_")}function h(){function i(e,t){return I.hasOwnProperty(e)?1===arguments.length?l.can("define_property")?I[e]:A[e]:(l.can("define_property")?I[e]=t:A[e]=t,void 0):void 0}function u(t){function n(){_&&(_.destroy(),_=null),s.dispatchEvent("loadend"),s=null}function r(r){_.bind("LoadStart",function(e){i("readyState",h.LOADING),s.dispatchEvent("readystatechange"),s.dispatchEvent(e),L&&s.upload.dispatchEvent(e)}),_.bind("Progress",function(e){i("readyState")!==h.LOADING&&(i("readyState",h.LOADING),s.dispatchEvent("readystatechange")),s.dispatchEvent(e)}),_.bind("UploadProgress",function(e){L&&s.upload.dispatchEvent({type:"progress",lengthComputable:!1,total:e.total,loaded:e.loaded})}),_.bind("Load",function(t){i("readyState",h.DONE),i("status",Number(r.exec.call(_,"XMLHttpRequest","getStatus")||0)),i("statusText",f[i("status")]||""),i("response",r.exec.call(_,"XMLHttpRequest","getResponse",i("responseType"))),~e.inArray(i("responseType"),["text",""])?i("responseText",i("response")):"document"===i("responseType")&&i("responseXML",i("response")),U=r.exec.call(_,"XMLHttpRequest","getAllResponseHeaders"),s.dispatchEvent("readystatechange"),i("status")>0?(L&&s.upload.dispatchEvent(t),s.dispatchEvent(t)):(F=!0,s.dispatchEvent("error")),n()}),_.bind("Abort",function(e){s.dispatchEvent(e),n()}),_.bind("Error",function(e){F=!0,i("readyState",h.DONE),s.dispatchEvent("readystatechange"),M=!0,s.dispatchEvent(e),n()}),r.exec.call(_,"XMLHttpRequest","send",{url:x,method:v,async:T,user:w,password:y,headers:S,mimeType:D,encoding:O,responseType:s.responseType,withCredentials:s.withCredentials,options:k},t)}var s=this;E=(new Date).getTime(),_=new a,"string"==typeof k.required_caps&&(k.required_caps=o.parseCaps(k.required_caps)),k.required_caps=e.extend({},k.required_caps,{return_response_type:s.responseType}),t instanceof c&&(k.required_caps.send_multipart=!0),e.isEmptyObj(S)||(k.required_caps.send_custom_headers=!0),B||(k.required_caps.do_cors=!0),k.ruid?r(_.connectRuntime(k)):(_.bind("RuntimeInit",function(e,t){r(t)}),_.bind("RuntimeError",function(e,t){s.dispatchEvent("RuntimeError",t)}),_.connectRuntime(k))}function g(){i("responseText",""),i("responseXML",null),i("response",null),i("status",0),i("statusText",""),E=b=null}var x,v,w,y,E,b,_,R,A=this,I={timeout:0,readyState:h.UNSENT,withCredentials:!1,status:0,statusText:"",responseType:"",responseXML:null,responseText:null,response:null},T=!0,S={},O=null,D=null,N=!1,C=!1,L=!1,M=!1,F=!1,B=!1,P=null,H=null,k={},U="";e.extend(this,I,{uid:e.guid("uid_"),upload:new m,open:function(o,a,s,u,c){var l;if(!o||!a)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(/[\u0100-\uffff]/.test(o)||n.utf8_encode(o)!==o)throw new t.DOMException(t.DOMException.SYNTAX_ERR);if(~e.inArray(o.toUpperCase(),["CONNECT","DELETE","GET","HEAD","OPTIONS","POST","PUT","TRACE","TRACK"])&&(v=o.toUpperCase()),~e.inArray(v,["CONNECT","TRACE","TRACK"]))throw new t.DOMException(t.DOMException.SECURITY_ERR);if(a=n.utf8_encode(a),l=r.parseUrl(a),B=r.hasSameOrigin(l),x=r.resolveUrl(a),(u||c)&&!B)throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);if(w=u||l.user,y=c||l.pass,T=s||!0,T===!1&&(i("timeout")||i("withCredentials")||""!==i("responseType")))throw new t.DOMException(t.DOMException.INVALID_ACCESS_ERR);N=!T,C=!1,S={},g.call(this),i("readyState",h.OPENED),this.dispatchEvent("readystatechange")},setRequestHeader:function(r,o){var a=["accept-charset","accept-encoding","access-control-request-headers","access-control-request-method","connection","content-length","cookie","cookie2","content-transfer-encoding","date","expect","host","keep-alive","origin","referer","te","trailer","transfer-encoding","upgrade","user-agent","via"];if(i("readyState")!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(/[\u0100-\uffff]/.test(r)||n.utf8_encode(r)!==r)throw new t.DOMException(t.DOMException.SYNTAX_ERR);return r=e.trim(r).toLowerCase(),~e.inArray(r,a)||/^(proxy\-|sec\-)/.test(r)?!1:(S[r]?S[r]+=", "+o:S[r]=o,!0)},hasRequestHeader:function(e){return e&&S[e.toLowerCase()]||!1},getAllResponseHeaders:function(){return U||""},getResponseHeader:function(t){return t=t.toLowerCase(),F||~e.inArray(t,["set-cookie","set-cookie2"])?null:U&&""!==U&&(R||(R={},e.each(U.split(/\r\n/),function(t){var i=t.split(/:\s+/);2===i.length&&(i[0]=e.trim(i[0]),R[i[0].toLowerCase()]={header:i[0],value:e.trim(i[1])})})),R.hasOwnProperty(t))?R[t].header+": "+R[t].value:null},overrideMimeType:function(n){var r,o;if(~e.inArray(i("readyState"),[h.LOADING,h.DONE]))throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(n=e.trim(n.toLowerCase()),/;/.test(n)&&(r=n.match(/^([^;]+)(?:;\scharset\=)?(.*)$/))&&(n=r[1],r[2]&&(o=r[2])),!d.mimes[n])throw new t.DOMException(t.DOMException.SYNTAX_ERR);P=n,H=o},send:function(i,r){if(k="string"===e.typeOf(r)?{ruid:r}:r?r:{},this.readyState!==h.OPENED||C)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);if(i instanceof s)k.ruid=i.ruid,D=i.type||"application/octet-stream";else if(i instanceof c){if(i.hasBlob()){var o=i.getBlob();k.ruid=o.ruid,D=o.type||"application/octet-stream"}}else"string"==typeof i&&(O="UTF-8",D="text/plain;charset=UTF-8",i=n.utf8_encode(i));this.withCredentials||(this.withCredentials=k.required_caps&&k.required_caps.send_browser_cookies&&!B),L=!N&&this.upload.hasEventListener(),F=!1,M=!i,N||(C=!0),u.call(this,i)},abort:function(){if(F=!0,N=!1,~e.inArray(i("readyState"),[h.UNSENT,h.OPENED,h.DONE]))i("readyState",h.UNSENT);else{if(i("readyState",h.DONE),C=!1,!_)throw new t.DOMException(t.DOMException.INVALID_STATE_ERR);_.getRuntime().exec.call(_,"XMLHttpRequest","abort",M),M=!0}},destroy:function(){_&&("function"===e.typeOf(_.destroy)&&_.destroy(),_=null),this.unbindAll(),this.upload&&(this.upload.unbindAll(),this.upload=null)}}),this.handleEventProps(p.concat(["readystatechange"])),this.upload.handleEventProps(p)}var f={100:"Continue",101:"Switching Protocols",102:"Processing",200:"OK",201:"Created",202:"Accepted",203:"Non-Authoritative Information",204:"No Content",205:"Reset Content",206:"Partial Content",207:"Multi-Status",226:"IM Used",300:"Multiple Choices",301:"Moved Permanently",302:"Found",303:"See Other",304:"Not Modified",305:"Use Proxy",306:"Reserved",307:"Temporary Redirect",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",409:"Conflict",410:"Gone",411:"Length Required",412:"Precondition Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Requested Range Not Satisfiable",417:"Expectation Failed",422:"Unprocessable Entity",423:"Locked",424:"Failed Dependency",426:"Upgrade Required",500:"Internal Server Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Gateway Timeout",505:"HTTP Version Not Supported",506:"Variant Also Negotiates",507:"Insufficient Storage",510:"Not Extended"};m.prototype=i.instance;var p=["loadstart","progress","abort","error","load","timeout","loadend"];return h.UNSENT=0,h.OPENED=1,h.HEADERS_RECEIVED=2,h.LOADING=3,h.DONE=4,h.prototype=i.instance,h}),n("moxie/runtime/Transporter",["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/runtime/RuntimeClient","moxie/core/EventTarget"],function(e,t,i,n){function r(){function n(){l=d=0,c=this.result=null}function o(t,i){var n=this;u=i,n.bind("TransportingProgress",function(t){d=t.loaded,l>d&&-1===e.inArray(n.state,[r.IDLE,r.DONE])&&a.call(n)},999),n.bind("TransportingComplete",function(){d=l,n.state=r.DONE,c=null,n.result=u.exec.call(n,"Transporter","getAsBlob",t||"")},999),n.state=r.BUSY,n.trigger("TransportingStarted"),a.call(n)}function a(){var e,i=this,n=l-d;m>n&&(m=n),e=t.btoa(c.substr(d,m)),u.exec.call(i,"Transporter","receive",e,l)}var s,u,c,l,d,m;i.call(this),e.extend(this,{uid:e.guid("uid_"),state:r.IDLE,result:null,transport:function(t,i,r){var a=this;if(r=e.extend({chunk_size:204798},r),(s=r.chunk_size%3)&&(r.chunk_size+=3-s),m=r.chunk_size,n.call(this),c=t,l=t.length,"string"===e.typeOf(r)||r.ruid)o.call(a,i,this.connectRuntime(r));else{var u=function(e,t){a.unbind("RuntimeInit",u),o.call(a,i,t)};this.bind("RuntimeInit",u),this.connectRuntime(r)}},abort:function(){var e=this;e.state=r.IDLE,u&&(u.exec.call(e,"Transporter","clear"),e.trigger("TransportingAborted")),n.call(e)},destroy:function(){this.unbindAll(),u=null,this.disconnectRuntime(),n.call(this)}})}return r.IDLE=0,r.BUSY=1,r.DONE=2,r.prototype=n.instance,r}),n("moxie/image/Image",["moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/file/FileReaderSync","moxie/xhr/XMLHttpRequest","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/runtime/Transporter","moxie/core/utils/Env","moxie/core/EventTarget","moxie/file/Blob","moxie/file/File","moxie/core/utils/Encode"],function(e,t,i,n,r,o,a,s,u,c,l,d,m){function h(){function n(e){try{return e||(e=this.exec("Image","getInfo")),this.size=e.size,this.width=e.width,this.height=e.height,this.type=e.type,this.meta=e.meta,""===this.name&&(this.name=e.name),!0}catch(t){return this.trigger("error",t.code),!1}}function c(t){var n=e.typeOf(t);try{if(t instanceof h){if(!t.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);p.apply(this,arguments)}else if(t instanceof l){if(!~e.inArray(t.type,["image/jpeg","image/png"]))throw new i.ImageError(i.ImageError.WRONG_FORMAT);g.apply(this,arguments)}else if(-1!==e.inArray(n,["blob","file"]))c.call(this,new d(null,t),arguments[1]);else if("string"===n)"data:"===t.substr(0,5)?c.call(this,new l(null,{data:t}),arguments[1]):x.apply(this,arguments);else{if("node"!==n||"img"!==t.nodeName.toLowerCase())throw new i.DOMException(i.DOMException.TYPE_MISMATCH_ERR);c.call(this,t.src,arguments[1])}}catch(r){this.trigger("error",r.code)}}function p(t,i){var n=this.connectRuntime(t.ruid);this.ruid=n.uid,n.exec.call(this,"Image","loadFromImage",t,"undefined"===e.typeOf(i)?!0:i)}function g(t,i){function n(e){r.ruid=e.uid,e.exec.call(r,"Image","loadFromBlob",t)}var r=this;r.name=t.name||"",t.isDetached()?(this.bind("RuntimeInit",function(e,t){n(t)}),i&&"string"==typeof i.required_caps&&(i.required_caps=o.parseCaps(i.required_caps)),this.connectRuntime(e.extend({required_caps:{access_image_binary:!0,resize_image:!0}},i))):n(this.connectRuntime(t.ruid))}function x(e,t){var i,n=this;i=new r,i.open("get",e),i.responseType="blob",i.onprogress=function(e){n.trigger(e)},i.onload=function(){g.call(n,i.response,!0)},i.onerror=function(e){n.trigger(e)},i.onloadend=function(){i.destroy()},i.bind("RuntimeError",function(e,t){n.trigger("RuntimeError",t)}),i.send(null,t)}a.call(this),e.extend(this,{uid:e.guid("uid_"),ruid:null,name:"",size:0,width:0,height:0,type:"",meta:{},clone:function(){this.load.apply(this,arguments)},load:function(){c.apply(this,arguments)},resize:function(t){var n,r,o=this,a={x:0,y:0,width:o.width,height:o.height},s=e.extendIf({width:o.width,height:o.height,type:o.type||"image/jpeg",quality:90,crop:!1,fit:!0,preserveHeaders:!0,resample:"default",multipass:!0},t);try{if(!o.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);if(o.width>h.MAX_RESIZE_WIDTH||o.height>h.MAX_RESIZE_HEIGHT)throw new i.ImageError(i.ImageError.MAX_RESOLUTION_ERR);if(n=o.meta&&o.meta.tiff&&o.meta.tiff.Orientation||1,-1!==e.inArray(n,[5,6,7,8])){var u=s.width;s.width=s.height,s.height=u}if(s.crop){switch(r=Math.max(s.width/o.width,s.height/o.height),t.fit?(a.width=Math.min(Math.ceil(s.width/r),o.width),a.height=Math.min(Math.ceil(s.height/r),o.height),r=s.width/a.width):(a.width=Math.min(s.width,o.width),a.height=Math.min(s.height,o.height),r=1),"boolean"==typeof s.crop&&(s.crop="cc"),s.crop.toLowerCase().replace(/_/,"-")){case"rb":case"right-bottom":a.x=o.width-a.width,a.y=o.height-a.height;break;case"cb":case"center-bottom":a.x=Math.floor((o.width-a.width)/2),a.y=o.height-a.height;break;case"lb":case"left-bottom":a.x=0,a.y=o.height-a.height;break;case"lt":case"left-top":a.x=0,a.y=0;break;case"ct":case"center-top":a.x=Math.floor((o.width-a.width)/2),a.y=0;break;case"rt":case"right-top":a.x=o.width-a.width,a.y=0;break;case"rc":case"right-center":case"right-middle":a.x=o.width-a.width,a.y=Math.floor((o.height-a.height)/2);break;case"lc":case"left-center":case"left-middle":a.x=0,a.y=Math.floor((o.height-a.height)/2);break;case"cc":case"center-center":case"center-middle":default:a.x=Math.floor((o.width-a.width)/2),a.y=Math.floor((o.height-a.height)/2)}a.x=Math.max(a.x,0),a.y=Math.max(a.y,0)}else r=Math.min(s.width/o.width,s.height/o.height),r>1&&!s.fit&&(r=1);this.exec("Image","resize",a,r,s)}catch(c){o.trigger("error",c.code)}},downsize:function(t){var i,n={width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,crop:!1,fit:!1,preserveHeaders:!0,resample:"default"};i="object"==typeof t?e.extend(n,t):e.extend(n,{width:arguments[0],height:arguments[1],crop:arguments[2],preserveHeaders:arguments[3]}),this.resize(i)},crop:function(e,t,i){this.downsize(e,t,!0,i)},getAsCanvas:function(){if(!u.can("create_canvas"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return this.exec("Image","getAsCanvas")},getAsBlob:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsBlob",e||"image/jpeg",t||90)},getAsDataURL:function(e,t){if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);return this.exec("Image","getAsDataURL",e||"image/jpeg",t||90)},getAsBinaryString:function(e,t){var i=this.getAsDataURL(e,t);return m.atob(i.substring(i.indexOf("base64,")+7))},embed:function(n,r){function o(t,r){var o=this;if(u.can("create_canvas")){var l=o.getAsCanvas();if(l)return n.appendChild(l),l=null,o.destroy(),c.trigger("embedded"),void 0}var d=o.getAsDataURL(t,r);if(!d)throw new i.ImageError(i.ImageError.WRONG_FORMAT);if(u.can("use_data_uri_of",d.length))n.innerHTML='',o.destroy(),c.trigger("embedded");else{var h=new s;h.bind("TransportingComplete",function(){a=c.connectRuntime(this.result.ruid),c.bind("Embedded",function(){e.extend(a.getShimContainer().style,{top:"0px",left:"0px",width:o.width+"px",height:o.height+"px"}),a=null},999),a.exec.call(c,"ImageView","display",this.result.uid,width,height),o.destroy()}),h.transport(m.atob(d.substring(d.indexOf("base64,")+7)),t,{required_caps:{display_media:!0},runtime_order:"flash,silverlight",container:n})}}var a,c=this,l=e.extend({width:this.width,height:this.height,type:this.type||"image/jpeg",quality:90,fit:!0,resample:"nearest"},r);try{if(!(n=t.get(n)))throw new i.DOMException(i.DOMException.INVALID_NODE_TYPE_ERR);if(!this.size)throw new i.DOMException(i.DOMException.INVALID_STATE_ERR);this.width>h.MAX_RESIZE_WIDTH||this.height>h.MAX_RESIZE_HEIGHT;var d=new h;return d.bind("Resize",function(){o.call(this,l.type,l.quality)}),d.bind("Load",function(){this.downsize(l)}),this.meta.thumb&&this.meta.thumb.width>=l.width&&this.meta.thumb.height>=l.height?d.load(this.meta.thumb.data):d.clone(this,!1),d}catch(f){this.trigger("error",f.code)}},destroy:function(){this.ruid&&(this.getRuntime().exec.call(this,"Image","destroy"),this.disconnectRuntime()),this.meta&&this.meta.thumb&&this.meta.thumb.data.destroy(),this.unbindAll()}}),this.handleEventProps(f),this.bind("Load Resize",function(){return n.call(this)},999)}var f=["progress","load","error","resize","embedded"];return h.MAX_RESIZE_WIDTH=8192,h.MAX_RESIZE_HEIGHT=8192,h.prototype=c.instance,h}),n("moxie/runtime/html5/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue,l=e.extend({access_binary:u(window.FileReader||window.File&&window.File.getAsDataURL),access_image_binary:function(){return o.can("access_binary")&&!!s.Image},display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:u(window.XMLHttpRequest&&"withCredentials"in new XMLHttpRequest),drag_and_drop:u(function(){var e=document.createElement("div");return("draggable"in e||"ondragstart"in e&&"ondrop"in e)&&("IE"!==n.browser||n.verComp(n.version,9,">"))}()),filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),return_response_headers:c,return_response_type:function(e){return"json"===e&&window.JSON?!0:n.can("return_response_type",e)},return_status_code:c,report_upload_progress:u(window.XMLHttpRequest&&(new XMLHttpRequest).upload),resize_image:function(){return o.can("access_binary")&&n.can("create_canvas")},select_file:function(){return n.can("use_fileinput")&&window.File},select_folder:function(){return o.can("select_file")&&("Chrome"===n.browser&&n.verComp(n.version,21,">=")||"Firefox"===n.browser&&n.verComp(n.version,42,">="))},select_multiple:function(){return!(!o.can("select_file")||"Safari"===n.browser&&"Windows"===n.os||"iOS"===n.os&&n.verComp(n.osVersion,"7.0.0",">")&&n.verComp(n.osVersion,"8.0.0","<"))},send_binary_string:u(window.XMLHttpRequest&&((new XMLHttpRequest).sendAsBinary||window.Uint8Array&&window.ArrayBuffer)),send_custom_headers:u(window.XMLHttpRequest),send_multipart:function(){return!!(window.XMLHttpRequest&&(new XMLHttpRequest).upload&&window.FormData)||o.can("send_binary_string")},slice_blob:u(window.File&&(File.prototype.mozSlice||File.prototype.webkitSlice||File.prototype.slice)),stream_upload:function(){return o.can("slice_blob")&&o.can("send_multipart")},summon_file_dialog:function(){return o.can("select_file")&&!("Firefox"===n.browser&&n.verComp(n.version,4,"<")||"Opera"===n.browser&&n.verComp(n.version,12,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<"))},upload_filesize:c,use_http_method:c},arguments[2]);i.call(this,t,arguments[1]||a,l),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html5",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html5/file/Blob",["moxie/runtime/html5/Runtime","moxie/file/Blob"],function(e,t){function i(){function e(e,t,i){var n;if(!window.File.prototype.slice)return(n=window.File.prototype.webkitSlice||window.File.prototype.mozSlice)?n.call(e,t,i):null;try{return e.slice(),e.slice(t,i)}catch(r){return e.slice(t,i-t)}}this.slice=function(){return new t(this.getRuntime().uid,e.apply(this,arguments))},this.destroy=function(){this.getRuntime().getShim().removeInstance(this.uid)}}return e.Blob=i}),n("moxie/core/utils/Events",["moxie/core/utils/Basic"],function(e){function t(){this.returnValue=!1}function i(){this.cancelBubble=!0}var n={},r="moxie_"+e.guid(),o=function(o,a,s,u){var c,l;a=a.toLowerCase(),o.addEventListener?(c=s,o.addEventListener(a,c,!1)):o.attachEvent&&(c=function(){var e=window.event;e.target||(e.target=e.srcElement),e.preventDefault=t,e.stopPropagation=i,s(e)},o.attachEvent("on"+a,c)),o[r]||(o[r]=e.guid()),n.hasOwnProperty(o[r])||(n[o[r]]={}),l=n[o[r]],l.hasOwnProperty(a)||(l[a]=[]),l[a].push({func:c,orig:s,key:u})},a=function(t,i,o){var a,s;if(i=i.toLowerCase(),t[r]&&n[t[r]]&&n[t[r]][i]){a=n[t[r]][i];for(var u=a.length-1;u>=0&&(a[u].orig!==o&&a[u].key!==o||(t.removeEventListener?t.removeEventListener(i,a[u].func,!1):t.detachEvent&&t.detachEvent("on"+i,a[u].func),a[u].orig=null,a[u].func=null,a.splice(u,1),o===s));u--);if(a.length||delete n[t[r]][i],e.isEmptyObj(n[t[r]])){delete n[t[r]];try{delete t[r]}catch(c){t[r]=s}}}},s=function(t,i){t&&t[r]&&e.each(n[t[r]],function(e,n){a(t,n,i)})};return{addEvent:o,removeEvent:a,removeAllEvents:s}}),n("moxie/runtime/html5/file/FileInput",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){var e,s;i.extend(this,{init:function(u){var c,l,d,m,h,f,p=this,g=p.getRuntime();e=u,d=o.extList2mimes(e.accept,g.can("filter_by_extension")),l=g.getShimContainer(),l.innerHTML='",c=n.get(g.uid),i.extend(c.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),m=n.get(e.browse_button),s=n.getStyle(m,"z-index")||"auto",g.can("summon_file_dialog")&&("static"===n.getStyle(m,"position")&&(m.style.position="relative"),r.addEvent(m,"click",function(e){var t=n.get(g.uid);t&&!t.disabled&&t.click(),e.preventDefault()},p.uid),p.bind("Refresh",function(){h=parseInt(s,10)||1,n.get(e.browse_button).style.zIndex=h,this.getRuntime().getShimContainer().style.zIndex=h-1})),f=g.can("summon_file_dialog")?m:l,r.addEvent(f,"mouseover",function(){p.trigger("mouseenter")},p.uid),r.addEvent(f,"mouseout",function(){p.trigger("mouseleave")},p.uid),r.addEvent(f,"mousedown",function(){p.trigger("mousedown")},p.uid),r.addEvent(n.get(e.container),"mouseup",function(){p.trigger("mouseup")},p.uid),(g.can("summon_file_dialog")?c:m).setAttribute("tabindex",-1),c.onchange=function x(){if(p.files=[],i.each(this.files,function(i){var n="";return e.directory&&"."==i.name?!0:(i.webkitRelativePath&&(n="/"+i.webkitRelativePath.replace(/^\//,"")),i=new t(g.uid,i),i.relativePath=n,p.files.push(i),void 0)}),"IE"!==a.browser&&"IEMobile"!==a.browser)this.value="";else{var n=this.cloneNode(!0);this.parentNode.replaceChild(n,this),n.onchange=x}p.files.length&&p.trigger("change")},p.trigger({type:"ready",async:!0}),l=null},setOption:function(e,t){var i=this.getRuntime(),r=n.get(i.uid);switch(e){case"accept":if(t){var a=t.mimes||o.extList2mimes(t,i.can("filter_by_extension"));r.setAttribute("accept",a.join(","))}else r.removeAttribute("accept");break;case"directory":t&&i.can("select_folder")?(r.setAttribute("directory",""),r.setAttribute("webkitdirectory","")):(r.removeAttribute("directory"),r.removeAttribute("webkitdirectory"));break;case"multiple":t&&i.can("select_multiple")?r.setAttribute("multiple",""):r.removeAttribute("multiple")}},disable:function(e){var t,i=this.getRuntime();(t=n.get(i.uid))&&(t.disabled=!!e)},destroy:function(){var t=this.getRuntime(),i=t.getShim(),o=t.getShimContainer(),a=e&&n.get(e.container),u=e&&n.get(e.browse_button);a&&r.removeAllEvents(a,this.uid),u&&(r.removeAllEvents(u,this.uid),u.style.zIndex=s),o&&(r.removeAllEvents(o,this.uid),o.innerHTML=""),i.removeInstance(this.uid),e=o=a=u=i=null}})}return e.FileInput=s}),n("moxie/runtime/html5/file/FileDrop",["moxie/runtime/html5/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime"],function(e,t,i,n,r,o){function a(){function e(e){if(!e.dataTransfer||!e.dataTransfer.types)return!1;var t=i.toArray(e.dataTransfer.types||[]);return-1!==i.inArray("Files",t)||-1!==i.inArray("public.file-url",t)||-1!==i.inArray("application/x-moz-file",t)}function a(e,i){if(u(e)){var n=new t(f,e);n.relativePath=i||"",p.push(n)}}function s(e){for(var t=[],n=0;n=")&&u.verComp(u.version,7,"<"),f="Android Browser"===u.browser,p=!1;if(h=i.url.replace(/^.+?\/([\w\-\.]+)$/,"$1").toLowerCase(),m=c(),m.open(i.method,i.url,i.async,i.user,i.password),r instanceof o)r.isDetached()&&(p=!0),r=r.getSource();else if(r instanceof a){if(r.hasBlob())if(r.getBlob().isDetached())r=d.call(s,r),p=!0;else if((l||f)&&"blob"===t.typeOf(r.getBlob().getSource())&&window.FileReader)return e.call(s,i,r),void 0;if(r instanceof a){var g=new window.FormData;r.each(function(e,t){e instanceof o?g.append(t,e.getSource()):g.append(t,e)}),r=g}}m.upload?(i.withCredentials&&(m.withCredentials=!0),m.addEventListener("load",function(e){s.trigger(e)}),m.addEventListener("error",function(e){s.trigger(e)}),m.addEventListener("progress",function(e){s.trigger(e)}),m.upload.addEventListener("progress",function(e){s.trigger({type:"UploadProgress",loaded:e.loaded,total:e.total})})):m.onreadystatechange=function(){switch(m.readyState){case 1:break;case 2:break;case 3:var e,t;try{n.hasSameOrigin(i.url)&&(e=m.getResponseHeader("Content-Length")||0),m.responseText&&(t=m.responseText.length)}catch(r){e=t=0}s.trigger({type:"progress",lengthComputable:!!e,total:parseInt(e,10),loaded:t});break;case 4:m.onreadystatechange=function(){};try{if(m.status>=200&&m.status<400){s.trigger("load");break}}catch(r){}s.trigger("error")}},t.isEmptyObj(i.headers)||t.each(i.headers,function(e,t){m.setRequestHeader(t,e)}),""!==i.responseType&&"responseType"in m&&(m.responseType="json"!==i.responseType||u.can("return_response_type","json")?i.responseType:"text"),p?m.sendAsBinary?m.sendAsBinary(r):function(){for(var e=new Uint8Array(r.length),t=0;t0&&o.set(new Uint8Array(t.slice(0,e)),0),o.set(new Uint8Array(r),e),o.set(new Uint8Array(t.slice(e+n)),e+r.byteLength),this.clear(),t=o.buffer,i=new DataView(t);break}default:return t}},length:function(){return t?t.byteLength:0},clear:function(){i=t=null}})}function n(t){function i(e,i,n){n=3===arguments.length?n:t.length-i-1,t=t.substr(0,i)+e+t.substr(n+i)}e.extend(this,{readByteAt:function(e){return t.charCodeAt(e)},writeByteAt:function(e,t){i(String.fromCharCode(t),e,1)},SEGMENT:function(e,n,r){switch(arguments.length){case 1:return t.substr(e);case 2:return t.substr(e,n);case 3:i(null!==r?r:"",e,n);break;default:return t}},length:function(){return t?t.length:0},clear:function(){t=null}})}return e.extend(t.prototype,{littleEndian:!1,read:function(e,t){var i,n,r;if(e+t>this.length())throw new Error("You are trying to read outside the source boundaries.");for(n=this.littleEndian?0:-8*(t-1),r=0,i=0;t>r;r++)i|=this.readByteAt(e+r)<this.length())throw new Error("You are trying to write outside the source boundaries.");for(n=this.littleEndian?0:-8*(i-1),r=0;i>r;r++)this.writeByteAt(e+r,255&t>>Math.abs(n+8*r))},BYTE:function(e){return this.read(e,1)},SHORT:function(e){return this.read(e,2)},LONG:function(e){return this.read(e,4)},SLONG:function(e){var t=this.read(e,4);return t>2147483647?t-4294967296:t},CHAR:function(e){return String.fromCharCode(this.read(e,1))},STRING:function(e,t){return this.asArray("CHAR",e,t).join("")},asArray:function(e,t,i){for(var n=[],r=0;i>r;r++)n[r]=this[e](t+r);return n}}),t}),n("moxie/runtime/html5/image/JPEGHeaders",["moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,t){return function i(n){var r,o,a,s=[],u=0;if(r=new e(n),65496!==r.SHORT(0))throw r.clear(),new t.ImageError(t.ImageError.WRONG_FORMAT);for(o=2;o<=r.length();)if(a=r.SHORT(o),a>=65488&&65495>=a)o+=2;else{if(65498===a||65497===a)break;u=r.SHORT(o+2)+2,a>=65505&&65519>=a&&s.push({hex:a,name:"APP"+(15&a),start:o,length:u,segment:r.SEGMENT(o,u)}),o+=u}return r.clear(),{headers:s,restore:function(t){var i,n,r;for(r=new e(t),o=65504==r.SHORT(2)?4+r.SHORT(4):2,n=0,i=s.length;i>n;n++)r.SEGMENT(o,0,s[n].segment),o+=s[n].length;return t=r.SEGMENT(),r.clear(),t},strip:function(t){var n,r,o,a;for(o=new i(t),r=o.headers,o.purge(),n=new e(t),a=r.length;a--;)n.SEGMENT(r[a].start,r[a].length,"");return t=n.SEGMENT(),n.clear(),t},get:function(e){for(var t=[],i=0,n=s.length;n>i;i++)s[i].name===e.toUpperCase()&&t.push(s[i].segment);return t},set:function(e,t){var i,n,r,o=[];for("string"==typeof t?o.push(t):o=t,i=n=0,r=s.length;r>i&&(s[i].name===e.toUpperCase()&&(s[i].segment=o[n],s[i].length=o[n].length,n++),!(n>=o.length));i++);},purge:function(){this.headers=s=[]}}}}),n("moxie/runtime/html5/image/ExifParser",["moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader","moxie/core/Exceptions"],function(e,i,n){function r(o){function a(i,r){var o,a,s,u,c,m,h,f,p=this,g=[],x={},v={1:"BYTE",7:"UNDEFINED",2:"ASCII",3:"SHORT",4:"LONG",5:"RATIONAL",9:"SLONG",10:"SRATIONAL"},w={BYTE:1,UNDEFINED:1,ASCII:1,SHORT:2,LONG:4,RATIONAL:8,SLONG:4,SRATIONAL:8};for(o=p.SHORT(i),a=0;o>a;a++)if(g=[],h=i+2+12*a,s=r[p.SHORT(h)],s!==t){if(u=v[p.SHORT(h+=2)],c=p.LONG(h+=2),m=w[u],!m)throw new n.ImageError(n.ImageError.INVALID_META_ERR);if(h+=4,m*c>4&&(h=p.LONG(h)+d.tiffHeader),h+m*c>=this.length())throw new n.ImageError(n.ImageError.INVALID_META_ERR);"ASCII"!==u?(g=p.asArray(u,h,c),f=1==c?g[0]:g,x[s]=l.hasOwnProperty(s)&&"object"!=typeof f?l[s][f]:f):x[s]=e.trim(p.STRING(h,c).replace(/\0$/,""))}return x}function s(e,t,i){var n,r,o,a=0;if("string"==typeof t){var s=c[e.toLowerCase()];for(var u in s)if(s[u]===t){t=u;break}}n=d[e.toLowerCase()+"IFD"],r=this.SHORT(n);for(var l=0;r>l;l++)if(o=n+12*l+2,this.SHORT(o)==t){a=o+8;break}if(!a)return!1;try{this.write(a,i,4)}catch(m){return!1}return!0}var u,c,l,d,m,h;if(i.call(this,o),c={tiff:{274:"Orientation",270:"ImageDescription",271:"Make",272:"Model",305:"Software",34665:"ExifIFDPointer",34853:"GPSInfoIFDPointer"},exif:{36864:"ExifVersion",40961:"ColorSpace",40962:"PixelXDimension",40963:"PixelYDimension",36867:"DateTimeOriginal",33434:"ExposureTime",33437:"FNumber",34855:"ISOSpeedRatings",37377:"ShutterSpeedValue",37378:"ApertureValue",37383:"MeteringMode",37384:"LightSource",37385:"Flash",37386:"FocalLength",41986:"ExposureMode",41987:"WhiteBalance",41990:"SceneCaptureType",41988:"DigitalZoomRatio",41992:"Contrast",41993:"Saturation",41994:"Sharpness"},gps:{0:"GPSVersionID",1:"GPSLatitudeRef",2:"GPSLatitude",3:"GPSLongitudeRef",4:"GPSLongitude"},thumb:{513:"JPEGInterchangeFormat",514:"JPEGInterchangeFormatLength"}},l={ColorSpace:{1:"sRGB",0:"Uncalibrated"},MeteringMode:{0:"Unknown",1:"Average",2:"CenterWeightedAverage",3:"Spot",4:"MultiSpot",5:"Pattern",6:"Partial",255:"Other"},LightSource:{1:"Daylight",2:"Fliorescent",3:"Tungsten",4:"Flash",9:"Fine weather",10:"Cloudy weather",11:"Shade",12:"Daylight fluorescent (D 5700 - 7100K)",13:"Day white fluorescent (N 4600 -5400K)",14:"Cool white fluorescent (W 3900 - 4500K)",15:"White fluorescent (WW 3200 - 3700K)",17:"Standard light A",18:"Standard light B",19:"Standard light C",20:"D55",21:"D65",22:"D75",23:"D50",24:"ISO studio tungsten",255:"Other"},Flash:{0:"Flash did not fire",1:"Flash fired",5:"Strobe return light not detected",7:"Strobe return light detected",9:"Flash fired, compulsory flash mode",13:"Flash fired, compulsory flash mode, return light not detected",15:"Flash fired, compulsory flash mode, return light detected",16:"Flash did not fire, compulsory flash mode",24:"Flash did not fire, auto mode",25:"Flash fired, auto mode",29:"Flash fired, auto mode, return light not detected",31:"Flash fired, auto mode, return light detected",32:"No flash function",65:"Flash fired, red-eye reduction mode",69:"Flash fired, red-eye reduction mode, return light not detected",71:"Flash fired, red-eye reduction mode, return light detected",73:"Flash fired, compulsory flash mode, red-eye reduction mode",77:"Flash fired, compulsory flash mode, red-eye reduction mode, return light not detected",79:"Flash fired, compulsory flash mode, red-eye reduction mode, return light detected",89:"Flash fired, auto mode, red-eye reduction mode",93:"Flash fired, auto mode, return light not detected, red-eye reduction mode",95:"Flash fired, auto mode, return light detected, red-eye reduction mode"},ExposureMode:{0:"Auto exposure",1:"Manual exposure",2:"Auto bracket"},WhiteBalance:{0:"Auto white balance",1:"Manual white balance"},SceneCaptureType:{0:"Standard",1:"Landscape",2:"Portrait",3:"Night scene"},Contrast:{0:"Normal",1:"Soft",2:"Hard"},Saturation:{0:"Normal",1:"Low saturation",2:"High saturation"},Sharpness:{0:"Normal",1:"Soft",2:"Hard"},GPSLatitudeRef:{N:"North latitude",S:"South latitude"},GPSLongitudeRef:{E:"East longitude",W:"West longitude"}},d={tiffHeader:10},m=d.tiffHeader,u={clear:this.clear},e.extend(this,{read:function(){try{return r.prototype.read.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},write:function(){try{return r.prototype.write.apply(this,arguments)}catch(e){throw new n.ImageError(n.ImageError.INVALID_META_ERR)}},UNDEFINED:function(){return this.BYTE.apply(this,arguments)},RATIONAL:function(e){return this.LONG(e)/this.LONG(e+4)},SRATIONAL:function(e){return this.SLONG(e)/this.SLONG(e+4)},ASCII:function(e){return this.CHAR(e)},TIFF:function(){return h||null},EXIF:function(){var t=null;if(d.exifIFD){try{t=a.call(this,d.exifIFD,c.exif)}catch(i){return null}if(t.ExifVersion&&"array"===e.typeOf(t.ExifVersion)){for(var n=0,r="";n=65472&&65475>=t)return n+=5,{height:e.SHORT(n),width:e.SHORT(n+=2)};i=e.SHORT(n+=2),n+=i-2}return null}function s(){var e,t,i=d.thumb();return i&&(e=new n(i),t=a(e),e.clear(),t)?(t.data=i,t):null}function u(){d&&l&&c&&(d.clear(),l.purge(),c.clear(),m=l=d=c=null)}var c,l,d,m;if(c=new n(o),65496!==c.SHORT(0))throw new t.ImageError(t.ImageError.WRONG_FORMAT);l=new i(o);try{d=new r(l.get("app1")[0])}catch(h){}m=a.call(this),e.extend(this,{type:"image/jpeg",size:c.length(),width:m&&m.width||0,height:m&&m.height||0,setExif:function(t,i){return d?("object"===e.typeOf(t)?e.each(t,function(e,t){d.setExif(t,e)}):d.setExif(t,i),l.set("app1",d.SEGMENT()),void 0):!1},writeHeaders:function(){return arguments.length?l.restore(arguments[0]):l.restore(o)},stripHeaders:function(e){return l.strip(e)},purge:function(){u.call(this)}}),d&&(this.meta={tiff:d.TIFF(),exif:d.EXIF(),gps:d.GPS(),thumb:s()})}return o}),n("moxie/runtime/html5/image/PNG",["moxie/core/Exceptions","moxie/core/utils/Basic","moxie/runtime/html5/utils/BinaryReader"],function(e,t,i){function n(n){function r(){var e,t;return e=a.call(this,8),"IHDR"==e.type?(t=e.start,{width:s.LONG(t),height:s.LONG(t+=4)}):null}function o(){s&&(s.clear(),n=l=u=c=s=null)}function a(e){var t,i,n,r;return t=s.LONG(e),i=s.STRING(e+=4,4),n=e+=4,r=s.LONG(e+t),{length:t,type:i,start:n,CRC:r}}var s,u,c,l;s=new i(n),function(){var t=0,i=0,n=[35152,20039,3338,6666];for(i=0;ii.height?"width":"height",a=Math.round(i[o]*n),s=!1;"nearest"!==r&&(.5>n||n>2)&&(n=.5>n?.5:2,s=!0);var u=t(i,n);return s?e(u,a/u[o],r):u}function t(e,t){var i=e.width,n=e.height,r=Math.round(i*t),o=Math.round(n*t),a=document.createElement("canvas");return a.width=r,a.height=o,a.getContext("2d").drawImage(e,0,0,i,n,0,0,r,o),e=null,a}return{scale:e}}),n("moxie/runtime/html5/image/Image",["moxie/runtime/html5/Runtime","moxie/core/utils/Basic","moxie/core/Exceptions","moxie/core/utils/Encode","moxie/file/Blob","moxie/file/File","moxie/runtime/html5/image/ImageInfo","moxie/runtime/html5/image/ResizerCanvas","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a,s,u){function c(){function e(){if(!v&&!g)throw new i.ImageError(i.DOMException.INVALID_STATE_ERR);return v||g}function c(){var t=e();return"canvas"==t.nodeName.toLowerCase()?t:(v=document.createElement("canvas"),v.width=t.width,v.height=t.height,v.getContext("2d").drawImage(t,0,0),v)}function l(e){return n.atob(e.substring(e.indexOf("base64,")+7))}function d(e,t){return"data:"+(t||"")+";base64,"+n.btoa(e)}function m(e){var t=this;g=new Image,g.onerror=function(){p.call(this),t.trigger("error",i.ImageError.WRONG_FORMAT)},g.onload=function(){t.trigger("load")},g.src="data:"==e.substr(0,5)?e:d(e,y.type)}function h(e,t){var n,r=this;return window.FileReader?(n=new FileReader,n.onload=function(){t.call(r,this.result)},n.onerror=function(){r.trigger("error",i.ImageError.WRONG_FORMAT)},n.readAsDataURL(e),void 0):t.call(this,e.getAsDataURL())}function f(e,i){var n=Math.PI/180,r=document.createElement("canvas"),o=r.getContext("2d"),a=e.width,s=e.height;switch(t.inArray(i,[5,6,7,8])>-1?(r.width=s,r.height=a):(r.width=a,r.height=s),i){case 2:o.translate(a,0),o.scale(-1,1);break;case 3:o.translate(a,s),o.rotate(180*n);break;case 4:o.translate(0,s),o.scale(1,-1);break;case 5:o.rotate(90*n),o.scale(1,-1);break;case 6:o.rotate(90*n),o.translate(0,-s);break;case 7:o.rotate(90*n),o.translate(a,-s),o.scale(-1,1);break;case 8:o.rotate(-90*n),o.translate(-a,0)}return o.drawImage(e,0,0,a,s),r}function p(){x&&(x.purge(),x=null),w=g=v=y=null,b=!1}var g,x,v,w,y,E=this,b=!1,_=!0;t.extend(this,{loadFromBlob:function(e){var t=this.getRuntime(),n=arguments.length>1?arguments[1]:!0;if(!t.can("access_binary"))throw new i.RuntimeError(i.RuntimeError.NOT_SUPPORTED_ERR);return y=e,e.isDetached()?(w=e.getSource(),m.call(this,w),void 0):(h.call(this,e.getSource(),function(e){n&&(w=l(e)),m.call(this,e)}),void 0)},loadFromImage:function(e,t){this.meta=e.meta,y=new o(null,{name:e.name,size:e.size,type:e.type}),m.call(this,t?w=e.getAsBinaryString():e.getAsDataURL())},getInfo:function(){var t,i=this.getRuntime();return!x&&w&&i.can("access_image_binary")&&(x=new a(w)),t={width:e().width||0,height:e().height||0,type:y.type||u.getFileMime(y.name),size:w&&w.length||y.size||0,name:y.name||"",meta:null},_&&(t.meta=x&&x.meta||this.meta||{},!t.meta||!t.meta.thumb||t.meta.thumb.data instanceof r||(t.meta.thumb.data=new r(null,{type:"image/jpeg",data:t.meta.thumb.data}))),t},resize:function(t,i,n){var r=document.createElement("canvas");if(r.width=t.width,r.height=t.height,r.getContext("2d").drawImage(e(),t.x,t.y,t.width,t.height,0,0,r.width,r.height),v=s.scale(r,i),_=n.preserveHeaders,!_){var o=this.meta&&this.meta.tiff&&this.meta.tiff.Orientation||1;v=f(v,o)}this.width=v.width,this.height=v.height,b=!0,this.trigger("Resize")},getAsCanvas:function(){return v||(v=c()),v.id=this.uid+"_canvas",v},getAsBlob:function(e,t){return e!==this.type?(b=!0,new o(null,{name:y.name||"",type:e,data:E.getAsDataURL(e,t)})):new o(null,{name:y.name||"",type:e,data:E.getAsBinaryString(e,t)})},getAsDataURL:function(e){var t=arguments[1]||90;if(!b)return g.src;if(c(),"image/jpeg"!==e)return v.toDataURL("image/png");try{return v.toDataURL("image/jpeg",t/100)}catch(i){return v.toDataURL("image/jpeg")}},getAsBinaryString:function(e,t){if(!b)return w||(w=l(E.getAsDataURL(e,t))),w;if("image/jpeg"!==e)w=l(E.getAsDataURL(e,t));else{var i;t||(t=90),c();try{i=v.toDataURL("image/jpeg",t/100)}catch(n){i=v.toDataURL("image/jpeg")}w=l(i),x&&(w=x.stripHeaders(w),_&&(x.meta&&x.meta.exif&&x.setExif({PixelXDimension:this.width,PixelYDimension:this.height}),w=x.writeHeaders(w)),x.purge(),x=null)}return b=!1,w},destroy:function(){E=null,p.call(this),this.getRuntime().getShim().removeInstance(this.uid)}})}return e.Image=c}),n("moxie/runtime/flash/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(){var e;try{e=navigator.plugins["Shockwave Flash"],e=e.description}catch(t){try{e=new ActiveXObject("ShockwaveFlash.ShockwaveFlash").GetVariable("$version")}catch(i){e="0.0"}}return e=e.match(/\d+/g),parseFloat(e[0]+"."+e[1])}function s(e){var n=i.get(e);n&&"OBJECT"==n.nodeName&&("IE"===t.browser?(n.style.display="none",function r(){4==n.readyState?u(e):setTimeout(r,10)}()):n.parentNode.removeChild(n))}function u(e){var t=i.get(e);if(t){for(var n in t)"function"==typeof t[n]&&(t[n]=null);t.parentNode.removeChild(t)}}function c(u){var c,m=this;u=e.extend({swf_url:t.swf_url},u),o.call(this,u,l,{access_binary:function(e){return e&&"browser"===m.mode},access_image_binary:function(e){return e&&"browser"===m.mode},display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:function(){return"client"===m.mode},resize_image:o.capTrue,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!e.arrayDiff(t,["","text","document"])||"browser"===m.mode},return_status_code:function(t){return"browser"===m.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:function(e){return e&&"browser"===m.mode},send_browser_cookies:function(e){return e&&"browser"===m.mode},send_custom_headers:function(e){return e&&"browser"===m.mode},send_multipart:o.capTrue,slice_blob:function(e){return e&&"browser"===m.mode},stream_upload:function(e){return e&&"browser"===m.mode},summon_file_dialog:!1,upload_filesize:function(t){return e.parseSizeStr(t)<=2097152||"client"===m.mode},use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}},{access_binary:function(e){return e?"browser":"client"},access_image_binary:function(e){return e?"browser":"client"},report_upload_progress:function(e){return e?"browser":"client"},return_response_type:function(t){return e.arrayDiff(t,["","text","json","document"])?"browser":["client","browser"]},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"browser":["client","browser"]},send_binary_string:function(e){return e?"browser":"client"},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"browser":"client"},slice_blob:function(e){return e?"browser":"client"},stream_upload:function(e){return e?"client":"browser"},upload_filesize:function(t){return e.parseSizeStr(t)>=2097152?"client":"browser"}},"client"),a()<11.3&&(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid)},shimExec:function(e,t){var i=[].slice.call(arguments,2);return m.getShim().exec(this.uid,e,t,i)},init:function(){var i,r,a;a=this.getShimContainer(),e.extend(a.style,{position:"absolute",top:"-8px",left:"-8px",width:"9px",height:"9px",overflow:"hidden"}),i=''+''+''+''+"","IE"===t.browser?(r=document.createElement("div"),a.appendChild(r),r.outerHTML=i,r=a=null):a.innerHTML=i,c=setTimeout(function(){m&&!m.initialized&&m.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},5e3)},destroy:function(e){return function(){s(m.uid),e.call(m),clearTimeout(c),u=c=e=m=null}}(this.destroy)},d)}var l="flash",d={};return o.addConstructor(l,c),d}),n("moxie/runtime/flash/file/Blob",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={slice:function(e,i,n,r){var o=this.getRuntime();return 0>i?i=Math.max(e.size+i,0):i>0&&(i=Math.min(i,e.size)),0>n?n=Math.max(e.size+n,0):n>0&&(n=Math.min(n,e.size)),e=o.shimExec.call(this,"Blob","slice",i,n,r||""),e&&(e=new t(o.uid,e)),e}};return e.Blob=i}),n("moxie/runtime/flash/file/FileInput",["moxie/runtime/flash/Runtime","moxie/file/File","moxie/core/utils/Dom","moxie/core/utils/Basic"],function(e,t,i,n){var r={init:function(e){var r=this,o=this.getRuntime(),a=i.get(e.browse_button);a&&(a.setAttribute("tabindex",-1),a=null),this.bind("Change",function(){var e=o.shimExec.call(r,"FileInput","getFiles");r.files=[],n.each(e,function(e){r.files.push(new t(o.uid,e))})},999),this.getRuntime().shimExec.call(this,"FileInput","init",{accept:e.accept,multiple:e.multiple}),this.trigger("ready")}};return e.FileInput=r}),n("moxie/runtime/flash/file/FileReader",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n=this;return n.result="","readAsDataURL"===e&&(n.result="data:"+(t.type||"")+";base64,"),n.bind("Progress",function(t,r){r&&(n.result+=i(r,e))},999),n.getRuntime().shimExec.call(this,"FileReader","readAsBase64",t.uid)}};return e.FileReader=n}),n("moxie/runtime/flash/file/FileReaderSync",["moxie/runtime/flash/Runtime","moxie/core/utils/Encode"],function(e,t){function i(e,i){switch(i){case"readAsText":return t.atob(e,"utf8");case"readAsBinaryString":return t.atob(e);case"readAsDataURL":return e}return null}var n={read:function(e,t){var n,r=this.getRuntime();return(n=r.shimExec.call(this,"FileReaderSync","readAsBase64",t.uid))?("readAsDataURL"===e&&(n="data:"+(t.type||"")+";base64,"+n),i(n,e,t.type)):null}};return e.FileReaderSync=n}),n("moxie/runtime/flash/runtime/Transporter",["moxie/runtime/flash/Runtime","moxie/file/Blob"],function(e,t){var i={getAsBlob:function(e){var i=this.getRuntime(),n=i.shimExec.call(this,"Transporter","getAsBlob",e);return n?new t(i.uid,n):null}};return e.Transporter=i}),n("moxie/runtime/flash/xhr/XMLHttpRequest",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/file/Blob","moxie/file/File","moxie/file/FileReaderSync","moxie/runtime/flash/file/FileReaderSync","moxie/xhr/FormData","moxie/runtime/Transporter","moxie/runtime/flash/runtime/Transporter"],function(e,t,i,n,r,o,a,s){var u={send:function(e,n){function r(){e.transport=l.mode,l.shimExec.call(c,"XMLHttpRequest","send",e,n)}function o(e,t){l.shimExec.call(c,"XMLHttpRequest","appendBlob",e,t.uid),n=null,r()}function u(e,t){var i=new s;i.bind("TransportingComplete",function(){t(this.result)}),i.transport(e.getSource(),e.type,{ruid:l.uid})}var c=this,l=c.getRuntime();if(t.isEmptyObj(e.headers)||t.each(e.headers,function(e,t){l.shimExec.call(c,"XMLHttpRequest","setRequestHeader",t,e.toString())}),n instanceof a){var d;if(n.each(function(e,t){e instanceof i?d=t:l.shimExec.call(c,"XMLHttpRequest","append",t,e)}),n.hasBlob()){var m=n.getBlob();m.isDetached()?u(m,function(e){m.destroy(),o(d,e)}):o(d,m)}else n=null,r()}else n instanceof i?n.isDetached()?u(n,function(e){n.destroy(),n=e.uid,r()}):(n=n.uid,r()):r()},getResponse:function(e){var i,o,a=this.getRuntime();if(o=a.shimExec.call(this,"XMLHttpRequest","getResponseAsBlob")){if(o=new n(a.uid,o),"blob"===e)return o;try{if(i=new r,~t.inArray(e,["","text"]))return i.readAsText(o);if("json"===e&&window.JSON)return JSON.parse(i.readAsText(o))}finally{o.destroy()}}return null},abort:function(){var e=this.getRuntime();e.shimExec.call(this,"XMLHttpRequest","abort"),this.dispatchEvent("readystatechange"),this.dispatchEvent("abort")}};return e.XMLHttpRequest=u}),n("moxie/runtime/flash/image/Image",["moxie/runtime/flash/Runtime","moxie/core/utils/Basic","moxie/runtime/Transporter","moxie/file/Blob","moxie/file/FileReaderSync"],function(e,t,i,n,r){var o={loadFromBlob:function(e){function t(e){r.shimExec.call(n,"Image","loadFromBlob",e.uid),n=r=null}var n=this,r=n.getRuntime();if(e.isDetached()){var o=new i;o.bind("TransportingComplete",function(){t(o.result.getSource())}),o.transport(e.getSource(),e.type,{ruid:r.uid})}else t(e.getSource())},loadFromImage:function(e){var t=this.getRuntime();return t.shimExec.call(this,"Image","loadFromImage",e.uid)},getInfo:function(){var e=this.getRuntime(),t=e.shimExec.call(this,"Image","getInfo");return t.meta&&t.meta.thumb&&t.meta.thumb.data&&!(e.meta.thumb.data instanceof n)&&(t.meta.thumb.data=new n(e.uid,t.meta.thumb.data)),t},getAsBlob:function(e,t){var i=this.getRuntime(),r=i.shimExec.call(this,"Image","getAsBlob",e,t);return r?new n(i.uid,r):null},getAsDataURL:function(){var e,t=this.getRuntime(),i=t.Image.getAsBlob.apply(this,arguments);return i?(e=new r,e.readAsDataURL(i)):null}};return e.Image=o}),n("moxie/runtime/silverlight/Runtime",["moxie/core/utils/Basic","moxie/core/utils/Env","moxie/core/utils/Dom","moxie/core/Exceptions","moxie/runtime/Runtime"],function(e,t,i,n,o){function a(e){var t,i,n,r,o,a=!1,s=null,u=0;try{try{s=new ActiveXObject("AgControl.AgControl"),s.IsVersionSupported(e)&&(a=!0),s=null}catch(c){var l=navigator.plugins["Silverlight Plug-In"];if(l){for(t=l.description,"1.0.30226.2"===t&&(t="2.0.30226.2"),i=t.split(".");i.length>3;)i.pop();for(;i.length<4;)i.push(0);for(n=e.split(".");n.length>4;)n.pop();do r=parseInt(n[u],10),o=parseInt(i[u],10),u++;while(u=r&&!isNaN(r)&&(a=!0)}}}catch(d){a=!1}return a}function s(s){var l,d=this;s=e.extend({xap_url:t.xap_url},s),o.call(this,s,u,{access_binary:o.capTrue,access_image_binary:o.capTrue,display_media:o.capTest(r("moxie/image/Image")),do_cors:o.capTrue,drag_and_drop:!1,report_upload_progress:o.capTrue,resize_image:o.capTrue,return_response_headers:function(e){return e&&"client"===d.mode},return_response_type:function(e){return"json"!==e?!0:!!window.JSON},return_status_code:function(t){return"client"===d.mode||!e.arrayDiff(t,[200,404])},select_file:o.capTrue,select_multiple:o.capTrue,send_binary_string:o.capTrue,send_browser_cookies:function(e){return e&&"browser"===d.mode},send_custom_headers:function(e){return e&&"client"===d.mode},send_multipart:o.capTrue,slice_blob:o.capTrue,stream_upload:!0,summon_file_dialog:!1,upload_filesize:o.capTrue,use_http_method:function(t){return"client"===d.mode||!e.arrayDiff(t,["GET","POST"])}},{return_response_headers:function(e){return e?"client":"browser"},return_status_code:function(t){return e.arrayDiff(t,[200,404])?"client":["client","browser"]},send_browser_cookies:function(e){return e?"browser":"client"},send_custom_headers:function(e){return e?"client":"browser"},use_http_method:function(t){return e.arrayDiff(t,["GET","POST"])?"client":["client","browser"]}}),a("2.0.31005.0")&&"Opera"!==t.browser||(this.mode=!1),e.extend(this,{getShim:function(){return i.get(this.uid).content.Moxie},shimExec:function(e,t){var i=[].slice.call(arguments,2);return d.getShim().exec(this.uid,e,t,i)},init:function(){var e;e=this.getShimContainer(),e.innerHTML=''+''+''+''+''+''+"",l=setTimeout(function(){d&&!d.initialized&&d.trigger("Error",new n.RuntimeError(n.RuntimeError.NOT_INIT_ERR))},"Windows"!==t.OS?1e4:5e3)},destroy:function(e){return function(){e.call(d),clearTimeout(l),s=l=e=d=null}}(this.destroy)},c)}var u="silverlight",c={};return o.addConstructor(u,s),c}),n("moxie/runtime/silverlight/file/Blob",["moxie/runtime/silverlight/Runtime","moxie/core/utils/Basic","moxie/runtime/flash/file/Blob"],function(e,t,i){return e.Blob=t.extend({},i)}),n("moxie/runtime/silverlight/file/FileInput",["moxie/runtime/silverlight/Runtime","moxie/file/File","moxie/core/utils/Dom","moxie/core/utils/Basic"],function(e,t,i,n){function r(e){for(var t="",i=0;ii;i++)t=s.keys[i],a=s[t],a&&(/^(\d|[1-9]\d+)$/.test(a)?a=parseInt(a,10):/^\d*\.\d+$/.test(a)&&(a=parseFloat(a)),r.meta[e][t]=a)}),r.meta&&r.meta.thumb&&r.meta.thumb.data&&!(e.meta.thumb.data instanceof i)&&(r.meta.thumb.data=new i(e.uid,r.meta.thumb.data))),r.width=parseInt(o.width,10),r.height=parseInt(o.height,10),r.size=parseInt(o.size,10),r.type=o.type,r.name=o.name,r},resize:function(e,t,i){this.getRuntime().shimExec.call(this,"Image","resize",e.x,e.y,e.width,e.height,t,i.preserveHeaders,i.resample)}})}),n("moxie/runtime/html4/Runtime",["moxie/core/utils/Basic","moxie/core/Exceptions","moxie/runtime/Runtime","moxie/core/utils/Env"],function(e,t,i,n){function o(t){var o=this,u=i.capTest,c=i.capTrue;i.call(this,t,a,{access_binary:u(window.FileReader||window.File&&File.getAsDataURL),access_image_binary:!1,display_media:u((n.can("create_canvas")||n.can("use_data_uri_over32kb"))&&r("moxie/image/Image")),do_cors:!1,drag_and_drop:!1,filter_by_extension:u(function(){return!("Chrome"===n.browser&&n.verComp(n.version,28,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<")||"Safari"===n.browser&&n.verComp(n.version,7,"<")||"Firefox"===n.browser&&n.verComp(n.version,37,"<"))}()),resize_image:function(){return s.Image&&o.can("access_binary")&&n.can("create_canvas")},report_upload_progress:!1,return_response_headers:!1,return_response_type:function(t){return"json"===t&&window.JSON?!0:!!~e.inArray(t,["text","document",""])},return_status_code:function(t){return!e.arrayDiff(t,[200,404])},select_file:function(){return n.can("use_fileinput")},select_multiple:!1,send_binary_string:!1,send_custom_headers:!1,send_multipart:!0,slice_blob:!1,stream_upload:function(){return o.can("select_file")},summon_file_dialog:function(){return o.can("select_file")&&!("Firefox"===n.browser&&n.verComp(n.version,4,"<")||"Opera"===n.browser&&n.verComp(n.version,12,"<")||"IE"===n.browser&&n.verComp(n.version,10,"<"))},upload_filesize:c,use_http_method:function(t){return!e.arrayDiff(t,["GET","POST"])}}),e.extend(this,{init:function(){this.trigger("Init")},destroy:function(e){return function(){e.call(o),e=o=null}}(this.destroy)}),e.extend(this.getShim(),s)}var a="html4",s={};return i.addConstructor(a,o),s}),n("moxie/runtime/html4/file/FileInput",["moxie/runtime/html4/Runtime","moxie/file/File","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Events","moxie/core/utils/Mime","moxie/core/utils/Env"],function(e,t,i,n,r,o,a){function s(){function e(){var o,c,d,m,h,f,p=this,g=p.getRuntime();f=i.guid("uid_"),o=g.getShimContainer(),s&&(d=n.get(s+"_form"),d&&(i.extend(d.style,{top:"100%"}),d.firstChild.setAttribute("tabindex",-1))),m=document.createElement("form"),m.setAttribute("id",f+"_form"),m.setAttribute("method","post"),m.setAttribute("enctype","multipart/form-data"),m.setAttribute("encoding","multipart/form-data"),i.extend(m.style,{overflow:"hidden",position:"absolute",top:0,left:0,width:"100%",height:"100%"}),h=document.createElement("input"),h.setAttribute("id",f),h.setAttribute("type","file"),h.setAttribute("accept",l.join(",")),g.can("summon_file_dialog")&&h.setAttribute("tabindex",-1),i.extend(h.style,{fontSize:"999px",opacity:0}),m.appendChild(h),o.appendChild(m),i.extend(h.style,{position:"absolute",top:0,left:0,width:"100%",height:"100%"}),"IE"===a.browser&&a.verComp(a.version,10,"<")&&i.extend(h.style,{filter:"progid:DXImageTransform.Microsoft.Alpha(opacity=0)"}),h.onchange=function(){var i;this.value&&(i=this.files?this.files[0]:{name:this.value},i=new t(g.uid,i),this.onchange=function(){},e.call(p),p.files=[i],h.setAttribute("id",i.uid),m.setAttribute("id",i.uid+"_form"),p.trigger("change"),h=m=null)},g.can("summon_file_dialog")&&(c=n.get(u.browse_button),r.removeEvent(c,"click",p.uid),r.addEvent(c,"click",function(e){h&&!h.disabled&&h.click(),e.preventDefault()},p.uid)),s=f,o=d=c=null}var s,u,c,l=[];i.extend(this,{init:function(t){var i,a=this,s=a.getRuntime();u=t,l=o.extList2mimes(t.accept,s.can("filter_by_extension")),i=s.getShimContainer(),function(){var e,o,l;e=n.get(t.browse_button),c=n.getStyle(e,"z-index")||"auto",s.can("summon_file_dialog")?("static"===n.getStyle(e,"position")&&(e.style.position="relative"),a.bind("Refresh",function(){o=parseInt(c,10)||1,n.get(u.browse_button).style.zIndex=o,this.getRuntime().getShimContainer().style.zIndex=o-1})):e.setAttribute("tabindex",-1),l=s.can("summon_file_dialog")?e:i,r.addEvent(l,"mouseover",function(){a.trigger("mouseenter")},a.uid),r.addEvent(l,"mouseout",function(){a.trigger("mouseleave")},a.uid),r.addEvent(l,"mousedown",function(){a.trigger("mousedown")},a.uid),r.addEvent(n.get(t.container),"mouseup",function(){a.trigger("mouseup")},a.uid),e=null}(),e.call(this),i=null,a.trigger({type:"ready",async:!0})},setOption:function(e,t){var i,r=this.getRuntime();"accept"==e&&(l=t.mimes||o.extList2mimes(t,r.can("filter_by_extension"))),i=n.get(s),i&&i.setAttribute("accept",l.join(","))},disable:function(e){var t;(t=n.get(s))&&(t.disabled=!!e)},destroy:function(){var e=this.getRuntime(),t=e.getShim(),i=e.getShimContainer(),o=u&&n.get(u.container),a=u&&n.get(u.browse_button);o&&r.removeAllEvents(o,this.uid),a&&(r.removeAllEvents(a,this.uid),a.style.zIndex=c),i&&(r.removeAllEvents(i,this.uid),i.innerHTML=""),t.removeInstance(this.uid),s=l=u=i=o=a=t=null}})}return e.FileInput=s}),n("moxie/runtime/html4/file/FileReader",["moxie/runtime/html4/Runtime","moxie/runtime/html5/file/FileReader"],function(e,t){return e.FileReader=t}),n("moxie/runtime/html4/xhr/XMLHttpRequest",["moxie/runtime/html4/Runtime","moxie/core/utils/Basic","moxie/core/utils/Dom","moxie/core/utils/Url","moxie/core/Exceptions","moxie/core/utils/Events","moxie/file/Blob","moxie/xhr/FormData"],function(e,t,i,n,r,o,a,s){function u(){function e(e){var t,n,r,a,s=this,u=!1;if(l){if(t=l.id.replace(/_iframe$/,""),n=i.get(t+"_form")){for(r=n.getElementsByTagName("input"),a=r.length;a--;)switch(r[a].getAttribute("type")){case"hidden":r[a].parentNode.removeChild(r[a]);break;case"file":u=!0}r=[],u||n.parentNode.removeChild(n),n=null}setTimeout(function(){o.removeEvent(l,"load",s.uid),l.parentNode&&l.parentNode.removeChild(l);var t=s.getRuntime().getShimContainer();t.children.length||t.parentNode.removeChild(t),t=l=null,e()},1)}}var u,c,l;t.extend(this,{send:function(d,m){function h(){var i=w.getShimContainer()||document.body,r=document.createElement("div");r.innerHTML='',l=r.firstChild,i.appendChild(l),o.addEvent(l,"load",function(){var i;try{i=l.contentWindow.document||l.contentDocument||window.frames[l.id].document,/^4(0[0-9]|1[0-7]|2[2346])\s/.test(i.title)?u=i.title.replace(/^(\d+).*$/,"$1"):(u=200,c=t.trim(i.body.innerHTML),v.trigger({type:"progress",loaded:c.length,total:c.length}),x&&v.trigger({type:"uploadprogress",loaded:x.size||1025,total:x.size||1025}))}catch(r){if(!n.hasSameOrigin(d.url))return e.call(v,function(){v.trigger("error")}),void 0;u=404}e.call(v,function(){v.trigger("load")})},v.uid)}var f,p,g,x,v=this,w=v.getRuntime();if(u=c=null,m instanceof s&&m.hasBlob()){if(x=m.getBlob(),f=x.uid,g=i.get(f),p=i.get(f+"_form"),!p)throw new r.DOMException(r.DOMException.NOT_FOUND_ERR)}else f=t.guid("uid_"),p=document.createElement("form"),p.setAttribute("id",f+"_form"),p.setAttribute("method",d.method),p.setAttribute("enctype","multipart/form-data"),p.setAttribute("encoding","multipart/form-data"),w.getShimContainer().appendChild(p);p.setAttribute("target",f+"_iframe"),m instanceof s&&m.each(function(e,i){if(e instanceof a)g&&g.setAttribute("name",i);else{var n=document.createElement("input");t.extend(n,{type:"hidden",name:i,value:e}),g?p.insertBefore(n,g):p.appendChild(n)}}),p.setAttribute("action",d.url),h(),p.submit(),v.trigger("loadstart")},getStatus:function(){return u},getResponse:function(e){if("json"===e&&"string"===t.typeOf(c)&&window.JSON)try{return JSON.parse(c.replace(/^\s*]*>/,"").replace(/<\/pre>\s*$/,""))}catch(i){return null}return c},abort:function(){var t=this;l&&l.contentWindow&&(l.contentWindow.stop?l.contentWindow.stop():l.contentWindow.document.execCommand?l.contentWindow.document.execCommand("Stop"):l.src="about:blank"),e.call(this,function(){t.dispatchEvent("abort")})},destroy:function(){this.getRuntime().getShim().removeInstance(this.uid)}})}return e.XMLHttpRequest=u}),n("moxie/runtime/html4/image/Image",["moxie/runtime/html4/Runtime","moxie/runtime/html5/image/Image"],function(e,t){return e.Image=t}),a(["moxie/core/utils/Basic","moxie/core/utils/Encode","moxie/core/utils/Env","moxie/core/Exceptions","moxie/core/utils/Dom","moxie/core/EventTarget","moxie/runtime/Runtime","moxie/runtime/RuntimeClient","moxie/file/Blob","moxie/core/I18n","moxie/core/utils/Mime","moxie/file/FileInput","moxie/file/File","moxie/file/FileDrop","moxie/file/FileReader","moxie/core/utils/Url","moxie/runtime/RuntimeTarget","moxie/xhr/FormData","moxie/xhr/XMLHttpRequest","moxie/image/Image","moxie/core/utils/Events","moxie/runtime/html5/image/ResizerCanvas"])}(this)}); /** * Plupload - multi-runtime File Uploader - * v2.3.3 + * v2.3.6 * * Copyright 2013, Moxiecode Systems AB * Released under GPL License. @@ -24,6 +24,6 @@ return t}var o={init:function(e){var o=this,a=this.getRuntime(),s=i.get(e.browse * License: http://www.plupload.com/license * Contributing: http://www.plupload.com/contributing * - * Date: 2017-08-28 + * Date: 2017-11-03 */ -!function(e,t){var i=function(){var e={};return t.apply(e,arguments),e.plupload};"function"==typeof define&&define.amd?define("plupload",["./moxie"],i):"object"==typeof module&&module.exports?module.exports=i(require("./moxie")):e.plupload=i(e.moxie)}(this||window,function(e){!function(e,t,i){function n(e){function t(e,t,i){var r={chunks:"slice_blob",jpgresize:"send_binary_string",pngresize:"send_binary_string",progress:"report_upload_progress",multi_selection:"select_multiple",dragdrop:"drag_and_drop",drop_element:"drag_and_drop",headers:"send_custom_headers",urlstream_upload:"send_binary_string",canSendBinary:"send_binary",triggerDialog:"summon_file_dialog"};r[e]?n[r[e]]=t:i||(n[e]=t)}var i=e.required_features,n={};return"string"==typeof i?l.each(i.split(/\s*,\s*/),function(e){t(e,!0)}):"object"==typeof i?l.each(i,function(e,i){t(i,e)}):i===!0&&(e.chunk_size&&e.chunk_size>0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart!==!1||(n.send_binary_string=!0),e.http_method&&(n.use_http_method=e.http_method),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.3.3",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,moxie:t,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.addFileFilter("prevent_empty",function(e,t,n){e&&!t.size&&t.size!==i?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),n(!1)):n(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t,n,r=0;for(I.reset(),e=0;eS)&&(r+=n),I.loaded+=n):I.size=i,t.status==l.DONE?I.uploaded++:t.status==l.FAILED?I.failed++:I.queued++;I.size===i?I.percent=D.length>0?Math.ceil(100*(I.uploaded/D.length)):0:(I.bytesPerSec=Math.ceil(r/((+new Date-S||1)/1e3)),I.percent=I.size>0?Math.ceil(100*(I.loaded/I.size)):0)}function c(){var e=F[0]||P[0];return e?e.getRuntime().uid:!1}function f(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",b),this.bind("BeforeUpload",m),this.bind("UploadFile",_),this.bind("UploadProgress",E),this.bind("StateChanged",v),this.bind("QueueChanged",d),this.bind("Error",R),this.bind("FileUploaded",y),this.bind("Destroy",z)}function p(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:x,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,F.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){U||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,P.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function g(e,n,r,s){var a=new t.image.Image;try{a.onload=function(){n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),s(e)):a.downsize(n.width,n.height,n.crop,n.preserve_headers)},a.onresize=function(){var t=this.getAsBlob(e.type,n.quality);this.destroy(),s(t)},a.bind("error runtimeerror",function(){this.destroy(),s(e)}),a.load(e,r)}catch(o){s(e)}}function h(e,i,r){function s(e,i,n){var r=O[e];switch(e){case"max_file_size":"max_file_size"===e&&(O.max_file_size=O.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(O[e]=i,O.send_file_name=!0);break;case"multipart":O[e]=i,i||(O.send_file_name=!0);break;case"http_method":O[e]="PUT"===i.toUpperCase()?"PUT":"POST";break;case"unique_names":O[e]=i,i&&(O.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(O.filters,i):O.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),O.filters.mime_types=i.mime_types);break;case"resize":O.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":O.prevent_duplicates=O.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":O[e]=i,n||(u=!0);break;default:O[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(O.required_features=n(l.extend({},O)),x=n(l.extend({},O,{required_features:!0}))):u&&(a.trigger("Destroy"),p.call(a,O,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function m(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function _(e,i){function n(){c-->0?r(s,1e3):(i.loaded=p,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:T.responseText,status:T.status,responseHeaders:T.getAllResponseHeaders()}))}function s(){var t,n,r={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(r.name=i.target_name||i.name),d&&f.chunks&&o.size>d?(n=Math.min(d,o.size-p),t=o.slice(p,p+n)):(n=o.size,t=o),d&&f.chunks&&(e.settings.send_chunk_number?(r.chunk=Math.ceil(p/d),r.chunks=Math.ceil(o.size/d)):(r.offset=p,r.total=o.size)),e.trigger("BeforeChunkUpload",i,r,t,p)&&a(r,t,n))}function a(a,d,g){var m;T=new t.xhr.XMLHttpRequest,T.upload&&(T.upload.onprogress=function(t){i.loaded=Math.min(i.size,p+t.loaded),e.trigger("UploadProgress",i)}),T.onload=function(){return T.status<200&&T.status>=400?(n(),void 0):(c=e.settings.max_retries,g=o.size?(i.size!=i.origSize&&(o.destroy(),o=null),e.trigger("UploadProgress",i),i.status=l.DONE,i.completeTimestamp=+new Date,e.trigger("FileUploaded",i,{response:T.responseText,status:T.status,responseHeaders:T.getAllResponseHeaders()})):r(s,1),void 0)},T.onerror=function(){n()},T.onloadend=function(){this.destroy()},e.settings.multipart&&f.multipart?(T.open(e.settings.http_method,u,!0),l.each(e.settings.headers,function(e,t){T.setRequestHeader(t,e)}),m=new t.xhr.FormData,l.each(l.extend(a,e.settings.multipart_params),function(e,t){m.append(t,e)}),m.append(e.settings.file_data_name,d),T.send(m,h)):(u=l.buildUrl(e.settings.url,l.extend(a,e.settings.multipart_params)),T.open(e.settings.http_method,u,!0),l.each(e.settings.headers,function(e,t){T.setRequestHeader(t,e)}),T.hasRequestHeader("Content-Type")||T.setRequestHeader("Content-Type","application/octet-stream"),T.send(d,h))}var o,u=e.settings.url,d=e.settings.chunk_size,c=e.settings.max_retries,f=e.features,p=0,h={runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:x,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url};i.loaded&&(p=i.loaded=d?d*Math.floor(i.loaded/d):0),o=i.getSource(),l.isEmptyObj(e.settings.resize)||-1===l.inArray(o.type,["image/jpeg","image/png"])?s():g(o,e.settings.resize,h,function(e){o=e,i.size=e.size,s()})}function E(e,t){u(t)}function v(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function b(){T&&T.abort()}function y(e){d(),r(function(){a.call(e)},1)}function R(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,t.file.completeTimestamp=+new Date,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function z(e){e.stop(),l.each(D,function(e){e.destroy()}),D=[],F.length&&(l.each(F,function(e){e.destroy()}),F=[]),P.length&&(l.each(P,function(e){e.destroy()}),P=[]),x={},U=!1,S=T=null,I.reset()}var O,S,I,T,w=l.guid(),D=[],x={},F=[],P=[],U=!1;O={chunk_size:0,file_data_name:"file",filters:{mime_types:[],max_file_size:0,prevent_duplicates:!1,prevent_empty:!0},flash_swf_url:"js/Moxie.swf",http_method:"POST",max_retries:0,multipart:!0,multi_selection:!0,resize:!1,runtimes:o.order,send_file_name:!0,send_chunk_number:!0,silverlight_xap_url:"js/Moxie.xap"},h.call(this,e,null,!0),I=new l.QueueProgress,l.extend(this,{id:w,uid:w,state:l.STOPPED,features:{},runtime:null,files:D,settings:O,total:I,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),f.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):O.browse_button||O.drop_element?(p.call(i,O,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){h.call(this,e,t,!this.runtime)},getOption:function(e){return e?O[e]:O},refresh:function(){F.length&&l.each(F,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){U=arguments[0]!==i?arguments[0]:!0,F.length&&l.each(F,function(e){e.disable(U)}),this.trigger("DisableBrowse",U)},getFile:function(e){var t;for(t=D.length-1;t>=0;t--)if(D[t].id===e)return D[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(D.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=D.length-1;i>=0;i--)if(D[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=D.splice(e===i?0:e,t===i?D.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n0&&(n.slice_blob=!0),l.isEmptyObj(e.resize)&&e.multipart!==!1||(n.send_binary_string=!0),e.http_method&&(n.use_http_method=e.http_method),l.each(e,function(e,i){t(i,!!e,!0)})),n}var r=window.setTimeout,s={},a=t.core.utils,o=t.runtime.Runtime,l={VERSION:"2.3.6",STOPPED:1,STARTED:2,QUEUED:1,UPLOADING:2,FAILED:4,DONE:5,GENERIC_ERROR:-100,HTTP_ERROR:-200,IO_ERROR:-300,SECURITY_ERROR:-400,INIT_ERROR:-500,FILE_SIZE_ERROR:-600,FILE_EXTENSION_ERROR:-601,FILE_DUPLICATE_ERROR:-602,IMAGE_FORMAT_ERROR:-700,MEMORY_ERROR:-701,IMAGE_DIMENSIONS_ERROR:-702,moxie:t,mimeTypes:a.Mime.mimes,ua:a.Env,typeOf:a.Basic.typeOf,extend:a.Basic.extend,guid:a.Basic.guid,getAll:function(e){var t,i=[];"array"!==l.typeOf(e)&&(e=[e]);for(var n=e.length;n--;)t=l.get(e[n]),t&&i.push(t);return i.length?i:null},get:a.Dom.get,each:a.Basic.each,getPos:a.Dom.getPos,getSize:a.Dom.getSize,xmlEncode:function(e){var t={"<":"lt",">":"gt","&":"amp",'"':"quot","'":"#39"},i=/[<>&\"\']/g;return e?(""+e).replace(i,function(e){return t[e]?"&"+t[e]+";":e}):e},toArray:a.Basic.toArray,inArray:a.Basic.inArray,inSeries:a.Basic.inSeries,addI18n:t.core.I18n.addI18n,translate:t.core.I18n.translate,sprintf:a.Basic.sprintf,isEmptyObj:a.Basic.isEmptyObj,hasClass:a.Dom.hasClass,addClass:a.Dom.addClass,removeClass:a.Dom.removeClass,getStyle:a.Dom.getStyle,addEvent:a.Events.addEvent,removeEvent:a.Events.removeEvent,removeAllEvents:a.Events.removeAllEvents,cleanName:function(e){var t,i;for(i=[/[\300-\306]/g,"A",/[\340-\346]/g,"a",/\307/g,"C",/\347/g,"c",/[\310-\313]/g,"E",/[\350-\353]/g,"e",/[\314-\317]/g,"I",/[\354-\357]/g,"i",/\321/g,"N",/\361/g,"n",/[\322-\330]/g,"O",/[\362-\370]/g,"o",/[\331-\334]/g,"U",/[\371-\374]/g,"u"],t=0;t0?"&":"?")+i),e},formatSize:function(e){function t(e,t){return Math.round(e*Math.pow(10,t))/Math.pow(10,t)}if(e===i||/\D/.test(e))return l.translate("N/A");var n=Math.pow(1024,4);return e>n?t(e/n,1)+" "+l.translate("tb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("gb"):e>(n/=1024)?t(e/n,1)+" "+l.translate("mb"):e>1024?Math.round(e/1024)+" "+l.translate("kb"):e+" "+l.translate("b")},parseSize:a.Basic.parseSizeStr,predictRuntime:function(e,t){var i,n;return i=new l.Uploader(e),n=o.thatCan(i.getOption().required_features,t||e.runtimes),i.destroy(),n},addFileFilter:function(e,t){s[e]=t}};l.addFileFilter("mime_types",function(e,t,i){e.length&&!e.regexp.test(t.name)?(this.trigger("Error",{code:l.FILE_EXTENSION_ERROR,message:l.translate("File extension error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("max_file_size",function(e,t,i){var n;e=l.parseSize(e),t.size!==n&&e&&t.size>e?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),i(!1)):i(!0)}),l.addFileFilter("prevent_duplicates",function(e,t,i){if(e)for(var n=this.files.length;n--;)if(t.name===this.files[n].name&&t.size===this.files[n].size)return this.trigger("Error",{code:l.FILE_DUPLICATE_ERROR,message:l.translate("Duplicate file error."),file:t}),i(!1),void 0;i(!0)}),l.addFileFilter("prevent_empty",function(e,t,n){e&&!t.size&&t.size!==i?(this.trigger("Error",{code:l.FILE_SIZE_ERROR,message:l.translate("File size error."),file:t}),n(!1)):n(!0)}),l.Uploader=function(e){function a(){var e,t,i=0;if(this.state==l.STARTED){for(t=0;t0?Math.ceil(100*(e.loaded/e.size)):100,d()}function d(){var e,t,n,r=0;for(I.reset(),e=0;eS)&&(r+=n),I.loaded+=n):I.size=i,t.status==l.DONE?I.uploaded++:t.status==l.FAILED?I.failed++:I.queued++;I.size===i?I.percent=D.length>0?Math.ceil(100*(I.uploaded/D.length)):0:(I.bytesPerSec=Math.ceil(r/((+new Date-S||1)/1e3)),I.percent=I.size>0?Math.ceil(100*(I.loaded/I.size)):0)}function c(){var e=F[0]||P[0];return e?e.getRuntime().uid:!1}function f(){this.bind("FilesAdded FilesRemoved",function(e){e.trigger("QueueChanged"),e.refresh()}),this.bind("CancelUpload",b),this.bind("BeforeUpload",m),this.bind("UploadFile",_),this.bind("UploadProgress",E),this.bind("StateChanged",v),this.bind("QueueChanged",d),this.bind("Error",R),this.bind("FileUploaded",y),this.bind("Destroy",z)}function p(e,i){var n=this,r=0,s=[],a={runtime_order:e.runtimes,required_caps:e.required_features,preferred_caps:x,swf_url:e.flash_swf_url,xap_url:e.silverlight_xap_url};l.each(e.runtimes.split(/\s*,\s*/),function(t){e[t]&&(a[t]=e[t])}),e.browse_button&&l.each(e.browse_button,function(i){s.push(function(s){var u=new t.file.FileInput(l.extend({},a,{accept:e.filters.mime_types,name:e.file_data_name,multiple:e.multi_selection,container:e.container,browse_button:i}));u.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),multi_selection:e.can("select_multiple")}),r++,F.push(this),s()},u.onchange=function(){n.addFile(this.files)},u.bind("mouseenter mouseleave mousedown mouseup",function(t){U||(e.browse_button_hover&&("mouseenter"===t.type?l.addClass(i,e.browse_button_hover):"mouseleave"===t.type&&l.removeClass(i,e.browse_button_hover)),e.browse_button_active&&("mousedown"===t.type?l.addClass(i,e.browse_button_active):"mouseup"===t.type&&l.removeClass(i,e.browse_button_active)))}),u.bind("mousedown",function(){n.trigger("Browse")}),u.bind("error runtimeerror",function(){u=null,s()}),u.init()})}),e.drop_element&&l.each(e.drop_element,function(e){s.push(function(i){var s=new t.file.FileDrop(l.extend({},a,{drop_zone:e}));s.onready=function(){var e=o.getInfo(this.ruid);l.extend(n.features,{chunks:e.can("slice_blob"),multipart:e.can("send_multipart"),dragdrop:e.can("drag_and_drop")}),r++,P.push(this),i()},s.ondrop=function(){n.addFile(this.files)},s.bind("error runtimeerror",function(){s=null,i()}),s.init()})}),l.inSeries(s,function(){"function"==typeof i&&i(r)})}function g(e,n,r,s){var a=new t.image.Image;try{a.onload=function(){n.width>this.width&&n.height>this.height&&n.quality===i&&n.preserve_headers&&!n.crop?(this.destroy(),s(e)):a.downsize(n.width,n.height,n.crop,n.preserve_headers)},a.onresize=function(){var t=this.getAsBlob(e.type,n.quality);this.destroy(),s(t)},a.bind("error runtimeerror",function(){this.destroy(),s(e)}),a.load(e,r)}catch(o){s(e)}}function h(e,i,r){function s(e,i,n){var r=O[e];switch(e){case"max_file_size":"max_file_size"===e&&(O.max_file_size=O.filters.max_file_size=i);break;case"chunk_size":(i=l.parseSize(i))&&(O[e]=i,O.send_file_name=!0);break;case"multipart":O[e]=i,i||(O.send_file_name=!0);break;case"http_method":O[e]="PUT"===i.toUpperCase()?"PUT":"POST";break;case"unique_names":O[e]=i,i&&(O.send_file_name=!0);break;case"filters":"array"===l.typeOf(i)&&(i={mime_types:i}),n?l.extend(O.filters,i):O.filters=i,i.mime_types&&("string"===l.typeOf(i.mime_types)&&(i.mime_types=t.core.utils.Mime.mimes2extList(i.mime_types)),i.mime_types.regexp=function(e){var t=[];return l.each(e,function(e){l.each(e.extensions.split(/,/),function(e){/^\s*\*\s*$/.test(e)?t.push("\\.*"):t.push("\\."+e.replace(new RegExp("["+"/^$.*+?|()[]{}\\".replace(/./g,"\\$&")+"]","g"),"\\$&"))})}),new RegExp("("+t.join("|")+")$","i")}(i.mime_types),O.filters.mime_types=i.mime_types);break;case"resize":O.resize=i?l.extend({preserve_headers:!0,crop:!1},i):!1;break;case"prevent_duplicates":O.prevent_duplicates=O.filters.prevent_duplicates=!!i;break;case"container":case"browse_button":case"drop_element":i="container"===e?l.get(i):l.getAll(i);case"runtimes":case"multi_selection":case"flash_swf_url":case"silverlight_xap_url":O[e]=i,n||(u=!0);break;default:O[e]=i}n||a.trigger("OptionChanged",e,i,r)}var a=this,u=!1;"object"==typeof e?l.each(e,function(e,t){s(t,e,r)}):s(e,i,r),r?(O.required_features=n(l.extend({},O)),x=n(l.extend({},O,{required_features:!0}))):u&&(a.trigger("Destroy"),p.call(a,O,function(e){e?(a.runtime=o.getInfo(c()).type,a.trigger("Init",{runtime:a.runtime}),a.trigger("PostInit")):a.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}))}function m(e,t){if(e.settings.unique_names){var i=t.name.match(/\.([^.]+)$/),n="part";i&&(n=i[1]),t.target_name=t.id+"."+n}}function _(e,i){function n(){c-->0?r(s,1e3):(i.loaded=p,e.trigger("Error",{code:l.HTTP_ERROR,message:l.translate("HTTP Error."),file:i,response:T.responseText,status:T.status,responseHeaders:T.getAllResponseHeaders()}))}function s(){var t,n,r={};i.status===l.UPLOADING&&e.state!==l.STOPPED&&(e.settings.send_file_name&&(r.name=i.target_name||i.name),d&&f.chunks&&o.size>d?(n=Math.min(d,o.size-p),t=o.slice(p,p+n)):(n=o.size,t=o),d&&f.chunks&&(e.settings.send_chunk_number?(r.chunk=Math.ceil(p/d),r.chunks=Math.ceil(o.size/d)):(r.offset=p,r.total=o.size)),e.trigger("BeforeChunkUpload",i,r,t,p)&&a(r,t,n))}function a(a,d,g){var m;T=new t.xhr.XMLHttpRequest,T.upload&&(T.upload.onprogress=function(t){i.loaded=Math.min(i.size,p+t.loaded),e.trigger("UploadProgress",i)}),T.onload=function(){return T.status<200||T.status>=400?(n(),void 0):(c=e.settings.max_retries,g=o.size?(i.size!=i.origSize&&(o.destroy(),o=null),e.trigger("UploadProgress",i),i.status=l.DONE,i.completeTimestamp=+new Date,e.trigger("FileUploaded",i,{response:T.responseText,status:T.status,responseHeaders:T.getAllResponseHeaders()})):r(s,1),void 0)},T.onerror=function(){n()},T.onloadend=function(){this.destroy()},e.settings.multipart&&f.multipart?(T.open(e.settings.http_method,u,!0),l.each(e.settings.headers,function(e,t){T.setRequestHeader(t,e)}),m=new t.xhr.FormData,l.each(l.extend(a,e.settings.multipart_params),function(e,t){m.append(t,e)}),m.append(e.settings.file_data_name,d),T.send(m,h)):(u=l.buildUrl(e.settings.url,l.extend(a,e.settings.multipart_params)),T.open(e.settings.http_method,u,!0),l.each(e.settings.headers,function(e,t){T.setRequestHeader(t,e)}),T.hasRequestHeader("Content-Type")||T.setRequestHeader("Content-Type","application/octet-stream"),T.send(d,h))}var o,u=e.settings.url,d=e.settings.chunk_size,c=e.settings.max_retries,f=e.features,p=0,h={runtime_order:e.settings.runtimes,required_caps:e.settings.required_features,preferred_caps:x,swf_url:e.settings.flash_swf_url,xap_url:e.settings.silverlight_xap_url};i.loaded&&(p=i.loaded=d?d*Math.floor(i.loaded/d):0),o=i.getSource(),l.isEmptyObj(e.settings.resize)||-1===l.inArray(o.type,["image/jpeg","image/png"])?s():g(o,e.settings.resize,h,function(e){o=e,i.size=e.size,s()})}function E(e,t){u(t)}function v(e){if(e.state==l.STARTED)S=+new Date;else if(e.state==l.STOPPED)for(var t=e.files.length-1;t>=0;t--)e.files[t].status==l.UPLOADING&&(e.files[t].status=l.QUEUED,d())}function b(){T&&T.abort()}function y(e){d(),r(function(){a.call(e)},1)}function R(e,t){t.code===l.INIT_ERROR?e.destroy():t.code===l.HTTP_ERROR&&(t.file.status=l.FAILED,t.file.completeTimestamp=+new Date,u(t.file),e.state==l.STARTED&&(e.trigger("CancelUpload"),r(function(){a.call(e)},1)))}function z(e){e.stop(),l.each(D,function(e){e.destroy()}),D=[],F.length&&(l.each(F,function(e){e.destroy()}),F=[]),P.length&&(l.each(P,function(e){e.destroy()}),P=[]),x={},U=!1,S=T=null,I.reset()}var O,S,I,T,w=l.guid(),D=[],x={},F=[],P=[],U=!1;O={chunk_size:0,file_data_name:"file",filters:{mime_types:[],max_file_size:0,prevent_duplicates:!1,prevent_empty:!0},flash_swf_url:"js/Moxie.swf",http_method:"POST",max_retries:0,multipart:!0,multi_selection:!0,resize:!1,runtimes:o.order,send_file_name:!0,send_chunk_number:!0,silverlight_xap_url:"js/Moxie.xap"},h.call(this,e,null,!0),I=new l.QueueProgress,l.extend(this,{id:w,uid:w,state:l.STOPPED,features:{},runtime:null,files:D,settings:O,total:I,init:function(){var e,t,i=this;return e=i.getOption("preinit"),"function"==typeof e?e(i):l.each(e,function(e,t){i.bind(t,e)}),f.call(i),l.each(["container","browse_button","drop_element"],function(e){return null===i.getOption(e)?(t={code:l.INIT_ERROR,message:l.sprintf(l.translate("%s specified, but cannot be found."),e)},!1):void 0}),t?i.trigger("Error",t):O.browse_button||O.drop_element?(p.call(i,O,function(e){var t=i.getOption("init");"function"==typeof t?t(i):l.each(t,function(e,t){i.bind(t,e)}),e?(i.runtime=o.getInfo(c()).type,i.trigger("Init",{runtime:i.runtime}),i.trigger("PostInit")):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("Init error.")})}),void 0):i.trigger("Error",{code:l.INIT_ERROR,message:l.translate("You must specify either browse_button or drop_element.")})},setOption:function(e,t){h.call(this,e,t,!this.runtime)},getOption:function(e){return e?O[e]:O},refresh:function(){F.length&&l.each(F,function(e){e.trigger("Refresh")}),this.trigger("Refresh")},start:function(){this.state!=l.STARTED&&(this.state=l.STARTED,this.trigger("StateChanged"),a.call(this))},stop:function(){this.state!=l.STOPPED&&(this.state=l.STOPPED,this.trigger("StateChanged"),this.trigger("CancelUpload"))},disableBrowse:function(){U=arguments[0]!==i?arguments[0]:!0,F.length&&l.each(F,function(e){e.disable(U)}),this.trigger("DisableBrowse",U)},getFile:function(e){var t;for(t=D.length-1;t>=0;t--)if(D[t].id===e)return D[t]},addFile:function(e,i){function n(e,t){var i=[];l.each(u.settings.filters,function(t,n){s[n]&&i.push(function(i){s[n].call(u,t,e,function(e){i(!e)})})}),l.inSeries(i,t)}function a(e){var s=l.typeOf(e);if(e instanceof t.file.File){if(!e.ruid&&!e.isDetached()){if(!o)return!1;e.ruid=o,e.connectRuntime(o)}a(new l.File(e))}else e instanceof t.file.Blob?(a(e.getSource()),e.destroy()):e instanceof l.File?(i&&(e.name=i),d.push(function(t){n(e,function(i){i||(D.push(e),f.push(e),u.trigger("FileFiltered",e)),r(t,1)})})):-1!==l.inArray(s,["file","blob"])?a(new t.file.File(null,e)):"node"===s&&"filelist"===l.typeOf(e.files)?l.each(e.files,a):"array"===s&&(i=null,l.each(e,a))}var o,u=this,d=[],f=[];o=c(),a(e),d.length&&l.inSeries(d,function(){f.length&&u.trigger("FilesAdded",f)})},removeFile:function(e){for(var t="string"==typeof e?e:e.id,i=D.length-1;i>=0;i--)if(D[i].id===t)return this.splice(i,1)[0]},splice:function(e,t){var n=D.splice(e===i?0:e,t===i?D.length:t),r=!1;return this.state==l.STARTED&&(l.each(n,function(e){return e.status===l.UPLOADING?(r=!0,!1):void 0}),r&&this.stop()),this.trigger("FilesRemoved",n),l.each(n,function(e){e.destroy()}),r&&this.start(),n},dispatchEvent:function(e){var t,i;if(e=e.toLowerCase(),t=this.hasEventListener(e)){t.sort(function(e,t){return t.priority-e.priority}),i=[].slice.call(arguments),i.shift(),i.unshift(this);for(var n=0;n Date: Sat, 20 Oct 2018 11:05:04 +0200 Subject: [PATCH 60/61] [ticket/15852] Fix whois for IPv6 addresses PHPBB3-15852 --- phpBB/includes/functions_user.php | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/phpBB/includes/functions_user.php b/phpBB/includes/functions_user.php index 2677916a7d..d019b867fa 100644 --- a/phpBB/includes/functions_user.php +++ b/phpBB/includes/functions_user.php @@ -1429,21 +1429,14 @@ function user_ipwhois($ip) return ''; } - if (preg_match(get_preg_expression('ipv4'), $ip)) - { - // IPv4 address - $whois_host = 'whois.arin.net.'; - } - else if (preg_match(get_preg_expression('ipv6'), $ip)) - { - // IPv6 address - $whois_host = 'whois.sixxs.net.'; - } - else + if (!preg_match(get_preg_expression('ipv4'), $ip) && !preg_match(get_preg_expression('ipv6'), $ip)) { return ''; } + // IPv4 & IPv6 addresses + $whois_host = 'whois.arin.net.'; + $ipwhois = ''; if (($fsk = @fsockopen($whois_host, 43))) From dbd0304c1d659e938d4f311649631e7a6fdb32f6 Mon Sep 17 00:00:00 2001 From: Marc Alexander Date: Fri, 19 Oct 2018 12:26:37 -0400 Subject: [PATCH 61/61] [ticket/15836] Rename event to have unique name PHPBB3-15836 --- phpBB/includes/functions_messenger.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/phpBB/includes/functions_messenger.php b/phpBB/includes/functions_messenger.php index 7b530d7119..75c15657b0 100644 --- a/phpBB/includes/functions_messenger.php +++ b/phpBB/includes/functions_messenger.php @@ -915,7 +915,7 @@ class queue /** * Event to send message via external transport * - * @event core.notification_message_email + * @event core.notification_message_process * @var bool break Flag indicating if the function return after hook * @var array addresses The message recipients * @var string subject The message subject @@ -928,7 +928,7 @@ class queue 'subject', 'msg', ); - extract($phpbb_dispatcher->trigger_event('core.notification_message_email', compact($vars))); + extract($phpbb_dispatcher->trigger_event('core.notification_message_process', compact($vars))); if (!$break) {