From ce435e74dc15d9c40dec93223629a774e9b723e8 Mon Sep 17 00:00:00 2001 From: "pherum83@gmail.com" Date: Sat, 21 Jun 2014 18:30:06 +0000 Subject: [PATCH] r590 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ALTER TABLE `bb_posts` CHANGE `post_mod_comment` `mc_comment` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL DEFAULT ''; ALTER TABLE `bb_posts` CHANGE `post_mod_comment_type` `mc_type` TINYINT(1) NOT NULL DEFAULT '0'; ALTER TABLE `bb_posts` CHANGE `post_mc_mod_id` `mc_user_id` MEDIUMINT(8) NOT NULL DEFAULT '0'; ALTER TABLE `bb_posts` DROP `post_mc_mod_name`; Исправлено: Автоцентор заменял не везде темы и посты Некорректная работа замены поля твиттера (ajax) Будующие закачки и т.д переставали подсвечиваться при переходе в тему Модераторские комментарии могли привести к отказу всех скриптов на странице Добавлено: Alert nаблицы для уведомлений Модераторские комментарии теперь имеют новый внешний вид Новые типы выдачи уведомлений для модераторских комментариев: Комментарий, Информация, Предупреждение, Нарушение При выдаче модераторского комментария, пользователь получает уведомление в ЛС в топиках и форумах добавлен полный путь перехода в меню навигации: Главная » Категория » Форум Исправлены различные мелкие недочеты git-svn-id: https://torrentpier2.googlecode.com/svn/trunk@590 a8ac35ab-4ca4-ca47-4c2d-a49a94f06293 --- install/sql/mysql.sql | 9 +- upload/admin/admin_words.php | 3 + upload/ajax/avatar.php | 6 +- upload/ajax/change_user_rank.php | 5 +- upload/ajax/post_mod_comment.php | 71 ++-- upload/config.php | 6 +- upload/includes/cron/jobs/cache_gc.php | 2 +- upload/includes/functions_post.php | 3 +- upload/includes/page_header.php | 1 - upload/includes/ucp/usercp_attachcp.php | 310 ------------------ upload/includes/ucp/usercp_viewprofile.php | 1 - upload/language/en/main.php | 30 +- upload/language/ru/main.php | 34 +- upload/language/ua/main.php | 34 +- upload/misc/js/bbcode.js | 10 - upload/search.php | 23 +- upload/templates/default/css/main.css | 184 ++++++++--- .../templates/default/images/en/icon_mc.gif | Bin 1533 -> 1315 bytes .../templates/default/images/en/icon_poll.gif | Bin 0 -> 2113 bytes .../templates/default/images/ru/icon_mc.gif | Bin 1481 -> 1355 bytes .../templates/default/images/ru/icon_poll.gif | Bin 0 -> 2229 bytes .../templates/default/images/ua/icon_mc.gif | Bin 1481 -> 1355 bytes .../templates/default/images/ua/icon_poll.gif | Bin 0 -> 2229 bytes upload/templates/default/page_header.tpl | 30 +- upload/templates/default/tpl_config.php | 2 + upload/templates/default/usercp_register.tpl | 18 +- .../templates/default/usercp_viewprofile.tpl | 27 +- upload/templates/default/viewforum.tpl | 10 +- upload/templates/default/viewtopic.tpl | 99 +++--- upload/viewforum.php | 16 +- upload/viewtopic.php | 140 ++++---- 31 files changed, 521 insertions(+), 553 deletions(-) delete mode 100644 upload/includes/ucp/usercp_attachcp.php create mode 100644 upload/templates/default/images/en/icon_poll.gif create mode 100644 upload/templates/default/images/ru/icon_poll.gif create mode 100644 upload/templates/default/images/ua/icon_poll.gif diff --git a/install/sql/mysql.sql b/install/sql/mysql.sql index 2f1976222..e8c21e81a 100644 --- a/install/sql/mysql.sql +++ b/install/sql/mysql.sql @@ -879,10 +879,9 @@ CREATE TABLE IF NOT EXISTS `bb_posts` ( `post_attachment` tinyint(1) NOT NULL DEFAULT '0', `post_reported` tinyint(1) NOT NULL DEFAULT '0', `user_post` tinyint(1) NOT NULL DEFAULT '1', - `post_mod_comment` TEXT NOT NULL DEFAULT '', - `post_mod_comment_type` TINYINT( 1 ) NOT NULL DEFAULT '0', - `post_mc_mod_id` mediumint(8) NOT NULL, - `post_mc_mod_name` varchar(25) NOT NULL DEFAULT '', + `mc_comment` TEXT NOT NULL DEFAULT '', + `mc_type` TINYINT( 1 ) NOT NULL DEFAULT '0', + `mc_user_id` mediumint(8) NOT NULL, PRIMARY KEY (`post_id`), KEY `topic_id` (`topic_id`), KEY `poster_id` (`poster_id`), @@ -894,7 +893,7 @@ CREATE TABLE IF NOT EXISTS `bb_posts` ( -- Дамп данных таблицы `bb_posts` -- -INSERT INTO `bb_posts` VALUES (1, 1, 1, 2, UNIX_TIMESTAMP(), '', '', 0, 0, 0, 0, 1, '', 0, 0, ''); +INSERT INTO `bb_posts` VALUES (1, 1, 1, 2, UNIX_TIMESTAMP(), '', '', 0, 0, 0, 0, 1, '', 0, 0); -- -------------------------------------------------------- diff --git a/upload/admin/admin_words.php b/upload/admin/admin_words.php index 6d573b43c..391a20823 100644 --- a/upload/admin/admin_words.php +++ b/upload/admin/admin_words.php @@ -99,6 +99,7 @@ if( $mode != '' ) message_die(GENERAL_ERROR, "Could not insert data into words table", $lang['ERROR'], __LINE__, __FILE__, $sql); } + CACHE('bb_cache')->rm('censored'); $message .= '

' . sprintf($lang['CLICK_RETURN_WORDADMIN'], '', '') . '

' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '', ''); message_die(GENERAL_MESSAGE, $message); @@ -117,6 +118,8 @@ if( $mode != '' ) message_die(GENERAL_ERROR, "Could not remove data from words table", $lang['ERROR'], __LINE__, __FILE__, $sql); } + CACHE('bb_cache')->rm('censored'); + $message = $lang['WORD_REMOVED'] . '

' . sprintf($lang['CLICK_RETURN_WORDADMIN'], '', '') . '

' . sprintf($lang['CLICK_RETURN_ADMIN_INDEX'], '', ''); message_die(GENERAL_MESSAGE, $message); diff --git a/upload/ajax/avatar.php b/upload/ajax/avatar.php index cbd0e053a..d4ee11933 100644 --- a/upload/ajax/avatar.php +++ b/upload/ajax/avatar.php @@ -1,6 +1,8 @@ request['mode']; $user_id = (int) $this->request['user_id']; @@ -20,7 +22,7 @@ switch ($mode) case 'delete': delete_avatar($user_id, $u_data['avatar_ext_id']); $new_ext_id = 0; - $response = 'Аватар: удален'; + $response = ''. $user_id .''; break; default: $this->ajax_die('invalid mode'); diff --git a/upload/ajax/change_user_rank.php b/upload/ajax/change_user_rank.php index d084f15b6..98554480e 100644 --- a/upload/ajax/change_user_rank.php +++ b/upload/ajax/change_user_rank.php @@ -21,4 +21,7 @@ DB()->query("UPDATE ". BB_USERS ." SET user_rank = $rank_id WHERE user_id = $use cache_rm_user_sessions($user_id); -$this->response['html'] = ($rank_id != 0) ? $lang['AWARDED_RANK'] . ' '. $ranks[$rank_id]['rank_title'] .'' : $lang['SHOT_RANK']; \ No newline at end of file +$user_rank = ($rank_id) ? ''. $ranks[$rank_id]['rank_title'] .'' : ''; + +$this->response['html'] = ($rank_id) ? $lang['AWARDED_RANK'] . " $user_rank " : $lang['SHOT_RANK']; +$this->response['rank_name'] = ($rank_id) ? $user_rank : $lang['USER']; diff --git a/upload/ajax/post_mod_comment.php b/upload/ajax/post_mod_comment.php index 5a050e2ba..cf37e4bfd 100644 --- a/upload/ajax/post_mod_comment.php +++ b/upload/ajax/post_mod_comment.php @@ -4,26 +4,59 @@ if (!defined('IN_AJAX')) die(basename(__FILE__)); global $lang, $userdata; -$post_id = (int) $this->request['post_id']; -$post = DB()->fetch_row("SELECT t.*, f.*, p.*, pt.post_text - FROM ". BB_TOPICS ." t, ". BB_FORUMS ." f, ". BB_POSTS ." p, ". BB_POSTS_TEXT ." pt - WHERE p.post_id = $post_id - AND t.topic_id = p.topic_id - AND f.forum_id = t.forum_id - AND p.post_id = pt.post_id - LIMIT 1"); -if (!$post) $this->ajax_die('not post'); +$post_id = (int) $this->request['post_id']; +$mc_type = (int) $this->request['mc_type']; +$mc_text = (string) $this->request['mc_text']; +if (!$mc_text = prepare_message($mc_text)) $this->ajax_die($lang['EMPTY_MESSAGE']); -$type = (int) $this->request['mc_type']; -$text = (string) $this->request['mc_text']; -$text = prepare_message($text); -if (!$text) $this->ajax_die('no text'); +$post = DB()->fetch_row(" + SELECT + p.post_id, p.poster_id, + u.username, u.user_id, u.user_rank + FROM ". BB_POSTS ." p + LEFT JOIN ". BB_USERS ." u ON(u.user_id = p.mc_user_id) + WHERE p.post_id = $post_id +"); +if(!$post) $this->ajax_die('not post'); -DB()->query("UPDATE ". BB_POSTS ." SET post_mod_comment = '". DB()->escape($text) ."', post_mod_comment_type = $type, post_mc_mod_id = ". $userdata['user_id'] .", post_mc_mod_name = '". $userdata['username'] ."' WHERE post_id = $post_id LIMIT 1"); +$data = array( + 'mc_comment' => ($mc_type) ? $mc_text : '', + 'mc_type' => $mc_type, + 'mc_user_id' => ($mc_type) ? $userdata['user_id'] : 0, +); +$sql_args = DB()->build_array('UPDATE', $data); +DB()->query("UPDATE ". BB_POSTS ." SET $sql_args WHERE post_id = $post_id"); -$this->response['type'] = $type; -$this->response['post_id'] = $post_id; +if ($mc_type && $post['poster_id'] != $userdata['user_id']) +{ + $subject = sprintf($lang['MC_COMMENT_PM_SUBJECT'], $lang['MC_COMMENT'][$mc_type]['type']); + $message = sprintf($lang['MC_COMMENT_PM_MSG'], get_username($post['poster_id']), make_url(POST_URL ."$post_id#$post_id"), $lang['MC_COMMENT'][$mc_type]['type'], $mc_text); + + send_pm($post['poster_id'], $subject, $message); + cache_rm_user_sessions($post['poster_id']); +} -if ($type == 0) $this->response['html'] = ''; -elseif ($type == 1) $this->response['html'] = '
K'. profile_url($userdata) .' '. $lang['WROTE'] .':

'. bbcode2html($text) .'
'; -elseif ($type == 2) $this->response['html'] = '
!'. profile_url($userdata) .' '. $lang['WROTE'] .':

'. bbcode2html($text) .'
'; \ No newline at end of file +switch($mc_type) +{ + case 1: // Комментарий + $mc_class = 'success'; + break; + case 2: // Информация + $mc_class = 'info'; + break; + case 3: // Предупреждение + $mc_class = 'warning'; + break; + case 4: // Нарушение + $mc_class = 'danger'; + break; + default: + $mc_class = ''; + break; +} + +$this->response['mc_type'] = $mc_type; +$this->response['post_id'] = $post_id; +$this->response['mc_title'] = sprintf($lang['MC_COMMENT'][$mc_type]['title'], profile_url($userdata)); +$this->response['mc_text'] = bbcode2html($mc_text); +$this->response['mc_class'] = $mc_class; diff --git a/upload/config.php b/upload/config.php index 140a58a4c..a4b056031 100644 --- a/upload/config.php +++ b/upload/config.php @@ -55,8 +55,8 @@ $domain_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $do // Increase number of revision after update $bb_cfg['tp_version'] = '2.6 (RC)'; -$bb_cfg['tp_release_date'] = '19-06-2014'; -$bb_cfg['tp_release_state'] = 'R589'; +$bb_cfg['tp_release_date'] = '21-06-2014'; +$bb_cfg['tp_release_state'] = 'R590'; // Database $charset = 'utf8'; @@ -310,7 +310,7 @@ $bb_cfg['topic_tpl']['overall_header'] = TEMPLATES_DIR .'topic_tpl_overall_heade $bb_cfg['topic_tpl']['rules_video'] = TEMPLATES_DIR .'topic_tpl_rules_video.html'; // Cookie -$bb_cfg['cookie_domain'] = ($domain_name != $_SERVER['SERVER_ADDR']) ? ".$domain_name" : ''; # '.yourdomain.com' +$bb_cfg['cookie_domain'] = in_array($domain_name, array(getenv('SERVER_ADDR'), 'localhost')) ? '' : ".$domain_name"; $bb_cfg['cookie_secure'] = (!empty($_SERVER['HTTPS']) ? 1 : 0); # 0 $bb_cfg['cookie_prefix'] = 'bb_'; # 'bb_' diff --git a/upload/includes/cron/jobs/cache_gc.php b/upload/includes/cron/jobs/cache_gc.php index 3aee9a73b..0243b4396 100644 --- a/upload/includes/cron/jobs/cache_gc.php +++ b/upload/includes/cron/jobs/cache_gc.php @@ -2,7 +2,7 @@ if (!defined('BB_ROOT')) die(basename(__FILE__)); -global $cron_runtime_log +global $cron_runtime_log; foreach ($bb_cfg['cache']['engines'] as $cache_name => $cache_val) { diff --git a/upload/includes/functions_post.php b/upload/includes/functions_post.php index f90584d68..4260d11eb 100644 --- a/upload/includes/functions_post.php +++ b/upload/includes/functions_post.php @@ -355,13 +355,14 @@ function user_notification($mode, &$post_data, &$topic_title, &$forum_id, &$topi } $user_id_sql = join('', $user_id_sql); - $watch_list = DB()->fetch_rowset("SELECT u.username, u.user_id, u.user_active, u.user_email, u.user_lang + $watch_list = DB()->fetch_rowset("SELECT u.username, u.user_id, u.user_email, u.user_lang FROM " . BB_TOPICS_WATCH . " tw, " . BB_USERS . " u WHERE tw.topic_id = $topic_id AND tw.user_id NOT IN (". $userdata['user_id'] .", ". EXCLUDED_USERS_CSV . $user_id_sql .") AND tw.notify_status = ". TOPIC_WATCH_NOTIFIED ." AND u.user_id = tw.user_id AND u.user_active = 1 + ORDER BY u.user_id "); if ($watch_list) diff --git a/upload/includes/page_header.php b/upload/includes/page_header.php index 3cea8527e..c1801fabb 100644 --- a/upload/includes/page_header.php +++ b/upload/includes/page_header.php @@ -207,7 +207,6 @@ $template->assign_vars(array( 'POINTS' => $userdata['user_points'], 'THIS_USER' => profile_url($userdata), 'THIS_AVATAR' => get_avatar($userdata['user_id'], $userdata['avatar_ext_id'], !bf($userdata['user_opt'], 'user_opt', 'dis_avatar')), - 'AVATAR_DISALLOWED' => bf($userdata['user_opt'], 'user_opt', 'dis_avatar'), 'SHOW_LOGIN_LINK' => !defined('IN_LOGIN'), 'AUTOLOGIN_DISABLED' => !$bb_cfg['allow_autologin'], 'S_LOGIN_ACTION' => LOGIN_URL, diff --git a/upload/includes/ucp/usercp_attachcp.php b/upload/includes/ucp/usercp_attachcp.php deleted file mode 100644 index 4728d3656..000000000 --- a/upload/includes/ucp/usercp_attachcp.php +++ /dev/null @@ -1,310 +0,0 @@ - 0) -{ - $select_sort_mode = ''; -} - -$select_sort_order = ''; - -$delete = (isset($_POST['delete'])) ? true : false; -$delete_id_list = (isset($_POST['delete_id_list'])) ? array_map('intval', $_POST['delete_id_list']) : array(); - -$confirm = (isset($_POST['confirm']) && $_POST['confirm']) ? true : false; - -if ($confirm && sizeof($delete_id_list) > 0) -{ - $attachments = array(); - - for ($i = 0; $i < sizeof($delete_id_list); $i++) - { - $sql = 'SELECT post_id - FROM ' . BB_ATTACHMENTS . ' - WHERE attach_id = ' . intval($delete_id_list[$i]) . ' - AND user_id_1 = ' . intval($profiledata['user_id']); - $result = DB()->sql_query($sql); - - if ($result) - { - $row = DB()->sql_fetchrow($result); - DB()->sql_freeresult($result); - - delete_attachment(0, intval($delete_id_list[$i])); - } - } -} -else if ($delete && sizeof($delete_id_list) > 0) -{ - // Not confirmed, show confirmation message - $hidden_fields = ''; - $hidden_fields .= ''; - $hidden_fields .= ''; - $hidden_fields .= ''; - $hidden_fields .= ''; - $hidden_fields .= ''; - - for ($i = 0; $i < sizeof($delete_id_list); $i++) - { - $hidden_fields .= ''; - } - - print_confirmation(array( - 'QUESTION' => $lang['CONFIRM_DELETE_ATTACHMENTS'], - 'FORM_ACTION' => "profile.php?mode=attachcp", - 'HIDDEN_FIELDS' => $hidden_fields, - )); -} - -$hidden_fields = ''; - -$total_rows = 0; - -$username = $profiledata['username']; - -$s_hidden = ''; -$s_hidden .= ''; - -// Assign Template Vars -$template->assign_vars(array( - 'PAGE_TITLE' => $lang['USER_ACP_TITLE'], - 'USERNAME' => $profiledata['username'], - 'S_USER_HIDDEN' => $s_hidden, - 'S_MODE_ACTION' => BB_ROOT ."profile.php?mode=attachcp", - 'S_MODE_SELECT' => $select_sort_mode, - 'S_ORDER_SELECT' => $select_sort_order) -); - -$sql = "SELECT attach_id - FROM " . BB_ATTACHMENTS . " - WHERE user_id_1 = " . intval($profiledata['user_id']) . " - GROUP BY attach_id"; - -if ( !($result = DB()->sql_query($sql)) ) -{ - message_die(GENERAL_ERROR, 'Couldn\'t query attachments', '', __LINE__, __FILE__, $sql); -} - -$attach_ids = DB()->sql_fetchrowset($result); -$num_attach_ids = DB()->num_rows($result); -DB()->sql_freeresult($result); - -$total_rows = $num_attach_ids; - -$attachments = array(); - -if ($num_attach_ids > 0) -{ - $attach_id = array(); - - for ($j = 0; $j < $num_attach_ids; $j++) - { - $attach_id[] = (int) $attach_ids[$j]['attach_id']; - } - - $sql = "SELECT a.* - FROM " . BB_ATTACHMENTS_DESC . " a - WHERE a.attach_id IN (" . join(', ', $attach_id) . ") " . - $order_by; - - if ( !($result = DB()->sql_query($sql)) ) - { - message_die(GENERAL_ERROR, "Couldn't query attachments", '', __LINE__, __FILE__, $sql); - } - - $attachments = DB()->sql_fetchrowset($result); - $num_attach = DB()->num_rows($result); - DB()->sql_freeresult($result); -} - -if (sizeof($attachments) > 0) -{ - for ($i = 0; $i < sizeof($attachments); $i++) - { - // Is the Attachment assigned to more than one post? - // If it's not assigned to any post, it's an private message thingy. ;) - $post_titles = array(); - - $sql = 'SELECT * - FROM ' . BB_ATTACHMENTS . ' - WHERE attach_id = ' . (int) $attachments[$i]['attach_id']; - - if (!($result = DB()->sql_query($sql))) - { - message_die(GENERAL_ERROR, 'Couldn\'t query attachments', '', __LINE__, __FILE__, $sql); - } - - $ids = DB()->sql_fetchrowset($result); - $num_ids = DB()->num_rows($result); - DB()->sql_freeresult($result); - - for ($j = 0; $j < $num_ids; $j++) - { - if ($ids[$j]['post_id'] != 0) - { - $sql = "SELECT t.topic_title - FROM " . BB_TOPICS . " t, " . BB_POSTS . " p - WHERE p.post_id = " . (int) $ids[$j]['post_id'] . " AND p.topic_id = t.topic_id - GROUP BY t.topic_id, t.topic_title"; - - if ( !($result = DB()->sql_query($sql)) ) - { - message_die(GENERAL_ERROR, 'Couldn\'t query topic', '', __LINE__, __FILE__, $sql); - } - - $row = DB()->sql_fetchrow($result); - DB()->sql_freeresult($result); - - $post_title = $row['topic_title']; - - $post_title = str_short($post_title, 30); - - $view_topic = BB_ROOT .'viewtopic.php?' . POST_POST_URL . '=' . $ids[$j]['post_id'] . '#' . $ids[$j]['post_id']; - - $post_titles[] = '' . $post_title . ''; - } - } - - // Iron out those Attachments assigned to us, but not more controlled by us. ;) (PM's) - if (sizeof($post_titles) > 0) - { - $delete_box = ''; - - for ($j = 0; $j < sizeof($delete_id_list); $j++) - { - if ($delete_id_list[$j] == $attachments[$i]['attach_id']) - { - $delete_box = ''; - break; - } - } - - $post_titles = join('
', $post_titles); - - $hidden_field = ''; - $hidden_field .= ''; - - $comment = str_replace("\n", '
', $attachments[$i]['comment']); - - $template->assign_block_vars('attachrow', array( - 'ROW_NUMBER' => $i + ($start + 1 ), - - 'ATTACH_ID' => $attachments[$i]['attach_id'], - 'FILENAME' => htmlspecialchars($attachments[$i]['real_filename']), - 'COMMENT' => htmlspecialchars($comment), - 'EXTENSION' => $attachments[$i]['extension'], - 'SIZE_RAW' => $attachments[$i]['filesize'], - 'SIZE' => round(($attachments[$i]['filesize'] / MEGABYTE), 2), - 'DOWNLOAD_COUNT' => $attachments[$i]['download_count'], - 'POST_TIME_RAW' => $attachments[$i]['filetime'], - 'POST_TIME' => bb_date($attachments[$i]['filetime']), - 'POST_TITLE' => $post_titles, - - 'S_DELETE_BOX' => $delete_box, - 'S_HIDDEN' => $hidden_field, - 'U_VIEW_ATTACHMENT' => BB_ROOT .'download.php?id=' . $attachments[$i]['attach_id']) - // 'U_VIEW_POST' => ($attachments[$i]['post_id'] != 0) ? "../viewtopic.php?" . POST_POST_URL . "=" . $attachments[$i]['post_id'] . "#" . $attachments[$i]['post_id'] : '') - ); - } - } -} - -// Generate Pagination -if ($do_pagination && $total_rows > $bb_cfg['topics_per_page']) -{ - generate_pagination(BB_ROOT ."profile.php?mode=attachcp&mode_a=$mode&order=$sort_order&" . POST_USERS_URL . '=' . $profiledata['user_id'] . '&sid=' . $userdata['session_id'], $total_rows, $bb_cfg['topics_per_page'], $start).' '; -} - -print_page('usercp_attachcp.tpl'); \ No newline at end of file diff --git a/upload/includes/ucp/usercp_viewprofile.php b/upload/includes/ucp/usercp_viewprofile.php index 4cf53f4c0..2f73c447b 100644 --- a/upload/includes/ucp/usercp_viewprofile.php +++ b/upload/includes/ucp/usercp_viewprofile.php @@ -132,7 +132,6 @@ $template->assign_vars(array( 'U_SEARCH_RELEASES' => "tracker.php?rid={$profiledata['user_id']}#results", 'AVATAR_IMG' => get_avatar($profiledata['user_id'], $profiledata['avatar_ext_id'], !bf($profiledata['user_opt'], 'user_opt', 'dis_avatar')), - 'AVATAR_DISALLOWED' => bf($profiledata['user_opt'], 'user_opt', 'dis_avatar'), 'SIGNATURE' => $signature, 'SHOW_PASSKEY' => (IS_ADMIN || $profile_user_id), diff --git a/upload/language/en/main.php b/upload/language/en/main.php index a9101d7ab..54f98a00e 100644 --- a/upload/language/en/main.php +++ b/upload/language/en/main.php @@ -3009,4 +3009,32 @@ $lang['LAST_VISIT'] = 'Last Visit'; $lang['DAY'] = 'Day'; $lang['POST_EDIT_CANNOT'] = 'Sorry, but you cannot edit posts'; -$lang['FORUMS_IN_CAT'] = 'forums in that category'; \ No newline at end of file +$lang['FORUMS_IN_CAT'] = 'forums in that category'; + +$lang['MC_TITLE'] = 'Сomment Moderation'; +$lang['MC_LEGEND'] = 'Type a comment'; +$lang['MC_FAQ'] = 'Entered text will be displayed under this message'; +$lang['MC_COMMENT_PM_SUBJECT'] = "%s in your message"; +$lang['MC_COMMENT_PM_MSG'] = "Hello, [b]%s[/b]\nModerator left in your message [url=%s][b]%s[/b][/url][quote]\n%s\n[/quote]"; +$lang['MC_COMMENT'] = array( + 0 => array( + 'title' => '', + 'type' => 'Delete comment', + ), + 1 => array( + 'title' => 'Сomment from %s', + 'type' => 'Сomment', + ), + 2 => array( + 'title' => 'Information from %s', + 'type' => 'Information', + ), + 3 => array( + 'title' => 'Warning from %s', + 'type' => 'Warning', + ), + 4 => array( + 'title' => 'Violation from %s', + 'type' => 'Violation', + ), +); \ No newline at end of file diff --git a/upload/language/ru/main.php b/upload/language/ru/main.php index 206fddc29..bbd1faaeb 100644 --- a/upload/language/ru/main.php +++ b/upload/language/ru/main.php @@ -977,8 +977,8 @@ $lang['TZ']['11'] = 'GMT + 11'; $lang['TZ']['12'] = 'GMT + 12'; $lang['TZ']['13'] = 'GMT + 13'; -$lang['DATETIME']['TODAY'] = 'Сегодня'; -$lang['DATETIME']['YESTERDAY'] = 'Вчера'; +$lang['DATETIME']['TODAY'] = 'Сегодня, в'; +$lang['DATETIME']['YESTERDAY'] = 'Вчера, в'; $lang['DATETIME']['SUNDAY'] = 'Воскресенье'; $lang['DATETIME']['MONDAY'] = 'Понедельник'; @@ -3021,4 +3021,32 @@ $lang['LAST_VISIT'] = 'Последнее посещение'; $lang['DAY'] = 'День'; $lang['POST_EDIT_CANNOT'] = 'Извините, вы не можете редактировать сообщения'; -$lang['FORUMS_IN_CAT'] = 'форумов в этой категории'; \ No newline at end of file +$lang['FORUMS_IN_CAT'] = 'форумов в этой категории'; + +$lang['MC_TITLE'] = 'Модераторский комментарий'; +$lang['MC_LEGEND'] = 'Тип комментария'; +$lang['MC_FAQ'] = 'Введенный Вами текст будет отображаться под этим сообщением'; +$lang['MC_COMMENT_PM_SUBJECT'] = "%s в Вашем сообщении"; +$lang['MC_COMMENT_PM_MSG'] = "Здравствуйте, [b]%s[/b]\nМодератор оставил в Вашем сообщении [url=%s][b]%s[/b][/url][quote]\n%s\n[/quote]"; +$lang['MC_COMMENT'] = array( + 0 => array( + 'title' => '', + 'type' => 'Удалить комментарий', + ), + 1 => array( + 'title' => 'Комментарий от %s', + 'type' => 'Комментарий', + ), + 2 => array( + 'title' => 'Информация от %s', + 'type' => 'Информация', + ), + 3 => array( + 'title' => 'Предупреждение от %s', + 'type' => 'Предупреждение', + ), + 4 => array( + 'title' => 'Нарушение от %s', + 'type' => 'Нарушение', + ), +); \ No newline at end of file diff --git a/upload/language/ua/main.php b/upload/language/ua/main.php index ae5b24c46..d954340ed 100644 --- a/upload/language/ua/main.php +++ b/upload/language/ua/main.php @@ -974,8 +974,8 @@ $lang['TZ']['11'] = 'GMT + 11'; $lang['TZ']['12'] = 'GMT + 12'; $lang['TZ']['13'] = 'GMT + 13'; -$lang['DATETIME']['TODAY'] = 'Сьогодні'; -$lang['DATETIME']['YESTERDAY'] = 'Вчора'; +$lang['DATETIME']['TODAY'] = 'Сьогодні, в'; +$lang['DATETIME']['YESTERDAY'] = 'Вчора, в'; $lang['DATETIME']['SUNDAY'] = 'Неділя'; $lang['DATETIME']['MONDAY'] = 'Понеділок'; @@ -3018,4 +3018,32 @@ $lang['LAST_VISIT'] = 'Останнє відвідування'; $lang['DAY'] = 'День'; $lang['POST_EDIT_CANNOT'] = 'Вибачте, але ви не можете редагувати повідомлення'; -$lang['FORUMS_IN_CAT'] = 'форумів у цій категорії'; \ No newline at end of file +$lang['FORUMS_IN_CAT'] = 'форумів у цій категорії'; + +$lang['MC_TITLE'] = 'Модераторському коментар'; +$lang['MC_LEGEND'] = 'Тип коментаря'; +$lang['MC_FAQ'] = 'Введена Вами текст буде відображатися під цим повідомленням'; +$lang['MC_COMMENT_PM_SUBJECT'] = "%s у Вашому повідомленні"; +$lang['MC_COMMENT_PM_MSG'] = "Здрастуйте, [b]%s[/b]\nМодератор залишив у Вашому повідомленні [url=%s][b]%s[/b][/url][quote]\n%s\n[/quote] "; +$lang['MC_COMMENT'] = array( + 0 => array( + 'title' => '', + 'type' => 'Видалити коментар', + ), + 1 => array( + 'title' => 'Коментар від %s', + 'type' => 'Коментар', + ), + 2 => array( + 'title' => 'Информація від %s', + 'type' => 'Информація', + ), + 3 => array( + 'title' => 'Попередження від %s', + 'type' => 'Попередження', + ), + 4 => array( + 'title' => 'Порушення від %s', + 'type' => 'Порушення', + ), +); \ No newline at end of file diff --git a/upload/misc/js/bbcode.js b/upload/misc/js/bbcode.js index c6270e9de..3b8f07510 100644 --- a/upload/misc/js/bbcode.js +++ b/upload/misc/js/bbcode.js @@ -388,16 +388,6 @@ function initPostImages(context) } } }); - $('var.posterImg', context).each(function(){ - var $v = $(this); - var src = $v.attr('title'); - var $img = $(''+bbl['loading']+''); - $img = fixPostImage($img); - $v.empty().append($img); - if ($.browser.msie) { - $v.after(''); - } - }); } function initSpoilers(context) diff --git a/upload/search.php b/upload/search.php index 0cceb94b2..6b789e84e 100644 --- a/upload/search.php +++ b/upload/search.php @@ -62,6 +62,12 @@ else if(isset($_POST['add_my_post'])) redirect("search.php?u={$user->id}"); } +// +// Define censored word matches +// +$orig_word = $replacement_word = array(); +obtain_word_list($orig_word, $replacement_word); + $tracking_topics = get_tracks('topic'); $tracking_forums = get_tracks('forum'); @@ -581,12 +587,18 @@ if ($post_mode) $topic_id = (int) $topic_id; $forum_id = (int) $first_post['forum_id']; $is_unread_t = is_unread($first_post['topic_last_post_time'], $topic_id, $forum_id); + $topic_title = $first_post['topic_title']; + + if (count($orig_word)) + { + $topic_title = preg_replace($orig_word, $replacement_word, $topic_title); + } $template->assign_block_vars('t', array( 'FORUM_ID' => $forum_id, 'FORUM_NAME' => $forum_name_html[$forum_id], 'TOPIC_ID' => $topic_id, - 'TOPIC_TITLE' => $first_post['topic_title'], + 'TOPIC_TITLE' => $topic_title, 'TOPIC_ICON' => get_topic_icon($first_post, $is_unread_t), )); @@ -596,6 +608,13 @@ if ($post_mode) // Topic posts block foreach ($topic_posts as $row_num => $post) { + $message = get_parsed_post($post); + + if (count($orig_word)) + { + $message = preg_replace($orig_word, $replacement_word, $message); + } + $template->assign_block_vars('t.p', array( 'ROW_NUM' => $row_num, 'POSTER_ID' => $post['poster_id'], @@ -603,7 +622,7 @@ if ($post_mode) 'POST_ID' => $post['post_id'], 'POST_DATE' => bb_date($post['post_time'], $bb_cfg['post_date_format']), 'IS_UNREAD' => is_unread($post['post_time'], $topic_id, $forum_id), - 'MESSAGE' => ($chars_val == $show_all) ? get_parsed_post($post, 'full') : get_parsed_post($post, 'briefly'), + 'MESSAGE' => $message, 'POSTED_AFTER' => '', 'QUOTE' => $quote_btn, 'EDIT' => $edit_btn, diff --git a/upload/templates/default/css/main.css b/upload/templates/default/css/main.css index 48efe1052..6f2ade72a 100644 --- a/upload/templates/default/css/main.css +++ b/upload/templates/default/css/main.css @@ -116,9 +116,11 @@ wbr { display: inline-block; } :link:focus, :visited:focus { color: #DD6900; } :link { color: #006699; text-decoration: none !important; } :visited { color: #006699; text-decoration: none !important; } -:link:hover, :visited:hover { color: #DD6900; text-decoration: underline !important; } -:link:active, :visited:active { color: #DD6900; text-decoration: underline !important; } +:link:hover, :visited:hover { color: #DD6900; } +:link:active, :visited:active { color: #DD6900; } +.a-like { color: #006699 !important; cursor: pointer; } +.a-like:hover { color: #DD6900 !important; text-decoration: underline !important; } .colorAdmin, a.colorAdmin, a.colorAdmin:visited { color: #A00 !important; } .colorSuperMod, a.colorSuperMod, a.colorSuperMod:visited { color: #0080FF !important; } .colorMod, a.colorMod, a.colorMod:visited { color: #009900 !important; } @@ -128,16 +130,6 @@ wbr { display: inline-block; } .adm, a.adm, a.adm:visited { color: #800000; text-decoration: none; font-size: 11px; } -.dlWill { color: #0066CC; } -.dlDown, .leech, .leechmed, .leechsmall { color: #800000; } -.dlComplete, .seed, .seedmed, .seedsmall { color: #006600; } -.dlCancel { color: #666666; } - -a.dlWill, a.dlWill:visited { color: #0066CC; text-decoration: none; } -a.dlDown, a.dlDown:visited { color: #800000; text-decoration: none; } -a.dlComplete, a.dlComplete:visited { color: #006600; text-decoration: none; } -a.dlCancel, a.dlCancel:visited { color: #666666; text-decoration: none; } - a.leech, a.leechmed, a.leechsmall, a.leech:visited, a.leechmed:visited, a.leechsmall:visited { color: #800000; text-decoration: none; @@ -259,7 +251,7 @@ a.small, a.gensmall { color: #006699; text-decoration: none; } .q .q .q .q .q { background: #FAFAFA; } .q .q .q .q .q .q { background: #F5F5F5; } /* ---------------------------------- * - Spoiler + Spoiler * ---------------------------------- */ .sp-wrap { padding: 0; background: #E9E9E6; width:auto;} .sp-head { border-width: 0; font-size: 11px; padding: 1px 14px 3px; margin-left: 6px; line-height: 15px; font-weight: bold; color: #2A2A2A; cursor: pointer; width:auto;} @@ -477,11 +469,11 @@ table.translit_expl th { } table.translit_expl td { width: 14px; } -table.user_contacts th { text-align: right; width: 100%; } - .user_contacts td { padding: 2px 6px; } +table.user_contacts th { text-align: right; white-space: nowrap; } + .user_contacts td { text-align: left; padding: 2px 6px; white-space: nowrap; } table.user_details th { padding: 2px 6px; text-align: right; vertical-align: top; } - .user_details td { width: 70%; } + .user_details td { width: 70%; } table.usercp_register h6 { margin: 0.3em 0.4em; color: #444444; line-height: 100%; @@ -867,8 +859,10 @@ fieldset.attach { width: 95%; margin: 14px auto; padding: 2px; clear: both; } /* ---------------------------------- * Tracker * ---------------------------------- */ -a.tr-dl { font-weight: bold; } -a.tr-dl:visited { color: #5493B4; font-weight: normal; } +a.tr-dl, a.dl-link:link { font-weight: bold; } +a.dl-link { font-size: 13px; text-decoration: none; } +a.tr-dl:visited, a.f-dl:visited, a.dl-link:visited { color: #5493B4; font-weight: normal; } + .seed-leech { padding-left: 1px; padding-right: 0; } .tr_tm { margin-top: 2px; font-size: 10px; color: #676767; } .ch { font-style: italic; color: #0080FF; } @@ -880,6 +874,16 @@ tr.hl-tr:hover td { background-color: #F8F8F8 !important; } #fs-nav-list { border: 3px double #9AA7AD; background: #EFEFEF; padding: 8px; max-height: 500px; overflow: auto; } #fs-sel-cat { width: 260px; } #fs-sel-cat option.cat-title { font-weight: bold; color: #005A88; background: #F5F5F5; } + +.dlWill { color: #0066CC; } +.dlDown, .leech, .leechmed, .leechsmall { color: #800000 !important; } +.dlComplete, .seed, .seedmed, .seedsmall { color: #006600 !important; } +.dlCancel { color: #666666 !important; } + +a.dlWill, a.dlWill:visited { color: #0066CC !important; text-decoration: none; } +a.dlDown, a.dlDown:visited { color: #800000 !important; text-decoration: none; } +a.dlComplete, a.dlComplete:visited { color: #006600 !important; text-decoration: none; } +a.dlCancel, a.dlCancel:visited { color: #666666 !important; text-decoration: none; } /* ================================================================ * Images * ================================================================ */ @@ -895,7 +899,7 @@ img.spacer { display: block; height: 1px; } * ================================================================ */ .bottom_info { font-size: 11px; } .copyright { font-size: 10px; color: #444444; letter-spacing: -1px; } - .copyright a { text-decoration: none; } +.copyright a { text-decoration: none; } #timezone { float: right; text-align: right; white-space: nowrap; @@ -924,12 +928,6 @@ a.menu-root, a.menu-root:visited, a.menu-root:hover { .menu-a { background: #FFFFFF; border: 1px solid #92A3A4; } .menu-a a { color: #0000A0; background: #E7E7E7; padding: 4px 10px 5px; margin: 1px; display: block; text-decoration: none !important; } .menu-a a:hover { color: #0000FF; background: #D1D7DC; text-decoration: none !important; } - -.mc_b { background: none !important; padding: 0px !important; } -.mc{ background:#E7E7E7; padding:5px; font-size:11px;} -.mc-bord{ background:#fff; padding:1px; border:1px solid #92A3A4;} -.mc-th{ background:#71869F; color:#F0F8FF; padding:4px; border-bottom:1px solid #fff; font-weight:bold; font-size:11px; text-align:center;} -.mc-but{ background:#B5BEC3; padding:4px; border-top:1px solid #fff; text-align:center;} /* ================================================================ * Ajax * ================================================================ */ @@ -1345,25 +1343,6 @@ span.YTLink a.postLink{ float:left; } -/* Mod comment */ -.mcBlock{ - border:1px solid #92a3a4; width:90%; margin:30px 0 0 30px; padding:4px; - border-radius:4px; -moz-border-radius:4px; -webkit-border-radius:4px; - box-shadow:0px 0px 5px #999; -moz-box-shadow:0px 0px 5px #999; -webkit-box-shadow:0px 0px 5px #999; -} -.mcBlock table{ width:100%;} -.mcTd1C, .mcTd1W{ - width:50px; - font:45px Georgia, serif; color:#e7e7e7; font-weight:bold; - border:1px solid #eff0f3; - text-align:center; -} -.mcTd2C, .mcTd2W{ background:#e7e7e7 !important; border:1px solid #e1e1e1; padding:10px;} -.mcTd1C{ background:#71869f !important; border:1px solid #536479; text-shadow:0 0 10px #1d232c;} -.mcTd2C{ color:#262e37;} -.mcTd1W{ background:#751717 !important; border:1px solid #5e0000; text-shadow:0 0 10px #200000;} -.mcTd2W{ color:#3e0000;} - span#autocomplete { cursor: pointer; color: #006699; @@ -1420,4 +1399,119 @@ div#autocomplete_popup span.regenerate { background: url("../../../images/pic_loading.gif") transparent no-repeat; cursor: pointer; display: inline-block; -} \ No newline at end of file +} +/* ================================================================ * + Alert + * ================================================================ */ +.alert { + padding: 8px 15px; + margin: 20px auto; + border: 1px solid transparent; + border-radius: 4px; +} +.alert h4 { + margin-top: 0; + color: inherit; + font-size: 14px !important; +} +.alert .alert-link { + font-weight: bold; +} +.alert > p, +.alert > ul { + margin: 0px 0px 1px 15px; +} +.alert > p + p { + margin-top: 5px; +} +.alert-dismissable { + padding-right: 35px; +} +.alert-dismissable .close { + position: relative; + top: -2px; + right: -21px; + color: inherit; +} +.alert-success { + color: #3c763d; + background-color: #dff0d8; + border-color: #d6e9c6; +} +.alert-success hr { + border-top-color: #c9e2b3; +} +.alert-success .alert-link { + color: #2b542c; +} +.alert-info { + color: #31708f; + background-color: #d9edf7; + border-color: #bce8f1; +} +.alert-info hr { + border-top-color: #a6e1ec; +} +.alert-info .alert-link { + color: #245269; +} +.alert-warning { + color: #8a6d3b; + background-color: #fcf8e3; + border-color: #f0d575; +} +.alert-warning hr { + border-top-color: #f7e1b5; +} +.alert-warning .alert-link { + color: #66512c; +} +.alert-danger { + color: #a94442; + background-color: #f2dede; + border-color: #ebccd1; +} +.alert-danger hr { + border-top-color: #e4b9c0; +} +.alert-danger .alert-link { + color: #843534; +} + +/** + * Alert theme + **/ +.alert { + text-shadow: 0 1px 0 rgba(255, 255, 255, .2); + -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); + box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05); +} +.alert-success { + background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%); + background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0); + background-repeat: repeat-x; + border-color: #b2dba1; +} +.alert-info { + background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%); + background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0); + background-repeat: repeat-x; + border-color: #9acfea; +} +.alert-warning { + background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%); + background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0); + background-repeat: repeat-x; + border-color: #f0d575; +} +.alert-danger { + background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%); + background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%); + filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0); + background-repeat: repeat-x; + border-color: #dca7a7; +} + \ No newline at end of file diff --git a/upload/templates/default/images/en/icon_mc.gif b/upload/templates/default/images/en/icon_mc.gif index b5d9e791083006afee78905342ea3ed30a523df0..1db8e37f573c2d8e931cb5733af02f49e7d45344 100644 GIT binary patch literal 1315 zcmeAS@N?(olHy`uVBq!ia0vp^{2c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij{$pv5BFj zg^8Jgv9qh8p`nwrqotd$lsiT3Vi3!XMYa}t%N=+=uFAB-e&w-_YfQBj{OXcglv$RV;#QQOs{jsNt4u7m6ZSPkZwfgfrVn(CJ}7A* zB^8(uF#Um;@PrTKz_U(j9x%TY0W(JTNw2pI42+?kE{-7;x8?-z^7aN(G9yC!Zs`L)kD^|?(dd!uw}1Z zI*aLEfz#IQM(PJ%MDE{J-LU!J+ID-}JB?TKUKnd1%;~pyuU=63pGlql_J&O&VVtk~ zIz3K>tx7t_F3;0*D6>QC`H_PvR~Dv(H9RrfRCD6BQ#RL>OAQ)l7Ohr1dB)ZC?Dg;b z>T2r8<|>uUy30Fdk4EbCdDfqe_t@>_<36df>*4W;mp8qxr zH=TOpxb57v8@KFt=O)*eGf&Hxd-&qft=snZZnvy3zC9uLz*cSX=)I=%&R&?MrOoH_ z^sb=!lqYKq`nA<2KRK4fdu+SS|Ld!Ni6$^)xUVVv+IGqURBU;=`njxgN@xNA{o~N; literal 1533 zcmb``X;Tvi0LJl60vHf6cu+>sVo?M|z(Or)Z5xluQE?ow)lpi}>Qs(V1g*Ae3kag1 z5~N6!L*!5tK`|VO5ZFx!ImnWOO~`Hz5)wip7;@p+k?MEo?*sg2o)=GS{Eis%p&h^? z;FTFrsniaqbJjI$ov|7W2D{B>GMT2Pr*%5LX~JZ&Sdy}DYPDlpt=4R@7z{?8UQc_- zic2rM)zY6<(C}OS-SQ@8#l2@t&ahgoMln?vC{n3Z7>3bV0;kiNUf5Xkh*jI#pPWOx z(a1{6mQ?Y6C)U($J0+(W@ctS zY#k7Ys#?M4FJ_dOMlM&h_lX>?+196BLn4t>CYzmgSA~ z#kHLdhx3M%T}iuz0ZD>1yj_s??efMi7J#k4#(b5X6QN zw5_XGB9ROZD{OWFH68{%Tz}50)`{SOPI36f5*PT}QvL5MLxybVIy{bf&}MU=K;fVhMsEOpX8q!Rz&m zE*1wKhEWWqv-lj5tgj!`>2%t$F(rz|rk9NvpbV^qcDJXZ^x z!M94twDW<%YrP`kPe0wgUr`J%j~aK2t4ZigmuKyxr)z|r>wgOVr1a$NY;!eApB#64 zcQKe(1Y{Y6HS1py7(Hj5&ox7@jssgw-duBGmyI0J?0qaWm*`K%yA8-we=cOF0%&iSLoxS#1d6h1u zA~eSbfXT-Oxr{H`%D62RdN{_x-y~Ja4=$Zpq!8yv>L9!^&=*fI?o5d!tfn?Z5~`Y0 zeWDFVNZE^zHfMP)SOMtbJU%NWfJ2eIupE&A$#lXolaJ^yka{F>-m+5wVFA^QCrFkN jldgMAM89y2?2g?qi|mO_EG7pPHqI(iiVAj7fUo}p={Z%j diff --git a/upload/templates/default/images/en/icon_poll.gif b/upload/templates/default/images/en/icon_poll.gif new file mode 100644 index 0000000000000000000000000000000000000000..73a29852d50a8d59208f72e5dd5211f57f14dd40 GIT binary patch literal 2113 zcmbVNdsGu=77t1zg#*iKV@1@42wFsvOhQ5u5-@KNgAiUhLaQMeAVM;Ej3j{FT|fyB zL8%Bn0>3q~?OL3g09x7@QOkB1?*s(d9TFZ!FWmKnRo|EX5j>@hTm|z{0)eWgzP% zF#(5ttpdlfaBrNFhyt-(NDE>qc(S{U2mn|r6%Tk&s8nDlmP7-Bg&84qb=2mqZ8r)U7 ztt$*XP$$zW)UX0lVV4-CQP3fng+n}ja|NYZBzjA%(k%xH2^qm4RTBU_k)TvA-Rrfs z4il^oLRT$j@G=C(Xgt4ILl0xhJ(zK$0R{sCQjDR>pSSpVHDV7xxQh`g$x22D4-Zl@YLOMo^w8r2|hx;g$ zrN)oP4lxY&hxx}x@IPS5ymFu1t3FB1oON|A>lXSEN!a?M&ha~T1hRcA%qMWQ7EVqH z@%9-Q8_TG)T~QX+jz{bR_oW=M5?SI-d@0&-HtR?}?Mmis+(xgSHHp!un`VdWJ|PxqkkUuikV{RVov9;O|EaeWXztpYjN|QkF}kxE#_!NO-;>iO7mC03}IMhyB;O@ zhrasj`wR2)VlO81*!VbjvOp5y_7$<`3^%z1MlIy7@Fsv9K(;OR5|?bEZR^nJmDv&4YXjLy`M&L(20x?|{@4*%PN)f17A zG={5Nm`P8q(mP^`YP-#LJ-^X%)=Xzs05|XXyJ+l$0L-uKcwk+6$+)f;WiOWqs~%UQO^#>UyOPk9Q51epcV1-66RbtCskp-!)1ju+rwmV} z874=Q`y~5w7QA1k{0rTaGj?WsZr{SWkBYW8ZE;yJKiZOIUF5)J5~)_qnxkP%%QcDd$6_qTKA%lKjVsQ~$ZQd)vPo>+GP-#QrU$}jH1szH@^Vk2D7lS zOGs_5njy5Fy8(5&m>gP<6%5+jQSMfxK~z#(W4iD6M&D2uah!w4z!PplTp{W2qP?ny z_1p(9U%sqKzvJ$Dk$FC#Ja5mo%1QBLM6$QNRmru7nklQoY^Rf*V`FCP09J2SLHfbV z5tWyNB7!Nc4$WD&+FoI5)2)jC;+%5eJDc+js|w3LB+`K6#xY~>I;ef5G0z{G8u=|Z zxc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij{$pv5BFj zg^8Jgv9qh8p`nwrqotd$lsiT3Vi3!XMYQsQUuHx_7@zVGB7aKdb&7R?*7v@9uz`D#JcjfMM8 z_^dIE@Ors=PuVzaxFTP{@r1X4z*xG$Jf+nt>+qC$snp$n= rI<_pq(&dUVLFxgF zh?ppd3K0Yh1`-GXLUt1&2MIY?LT)x3DJe1JRBJm@{1W|rfp^S%DZ9Vjw*6=lunc%( z01O7B+vD+heU5pD%jul6+YyUpYHG@AwIYbcY@RTi%{H4&EQe2&HqP2?ux?^%YFe+? z8w`fWFF>h6W1X>P7E*P3L*^OUzSH-NM&t342KBhnWzP_DbSpJMF7-?h)@3-+G zi6XO*W|^E+zLN zOcUl4r45HJ*7Xg_BnntCthz(zD3wYW9&2IqWNM8gLumK)2g{wxUJ5Se6Naq+^p))4Tz`NF?g%+|<0PZl3Vxt50aHJdIWhK>`?tEi<;?Yue2d6E7vQ>$RN*WLh9m31#Z6 zGc>7G$^k_>y^b$Z>L;cL_~0{kzr|`(D3mI-y1k3r)x#Zy;r=0+$z*=_?jMm{ZFji3 z`7b?gk9Tow4#(@)uU#&e&*w83jXJ$P;pi<0f)*AQfd7}Ze`8SqU;v^&$bR?)fL{PO z{^6<2$507AbaS?t`9$~!VSQTNaboS@trc7IjN*>QluAQ%5sg%Fvu1hG$u;Om`YH*P zm?JGcz-W@!ZYwlr9qULXd{h~7bgk7M7L!%-;6QQ?{Q;#pqcN>!6{B^mZ9nU9@Uf0e zYV3FH8xd{4?)mJ?A8($=gWU`R=j2z3wR<@2roOY71nIe%veliGu4@;{z&%m(5mEZqqJ&U()0*T)e$;|H+Oc zmA*8=Az0F)YB1)zjhWeoodZyHiqEs z#lh%Z>%d*4hG}9_7+H48f9sX!NZ^**tOf~odnsivb`3c+6{{^JBw<6&>@LQHWFX1d zYcM)FpqIQpnTCTePy)lkiOqOi2BqR5F08r&>$g%|zHWHs#_XKoumtkX z*`Tr&AQa>Wl9dA-%T3bI=Vo1&Pn^Q=EZxLZ^ zs4+Huli)5BzrH%1AVCMh#lftd%;I6fhVW)FT6+n!<5opEr4a#9N`Mp`mk~qS5ce3u zP2On(aoW;0U~Ocs=T`h`WOd2sk!(~67KrOe8qfe_CxqWv&WsQG!tN9jz77Jvd6Y^i s#_j-br$_JDUk)uDCl|=Y8>sniNmTQ5cRW2eRGmT;MQ@cEuvlQnfAD1>-~a#s diff --git a/upload/templates/default/images/ru/icon_poll.gif b/upload/templates/default/images/ru/icon_poll.gif new file mode 100644 index 0000000000000000000000000000000000000000..30a6c5ed395e8fc87967cbcbb71761848eedb802 GIT binary patch literal 2229 zcmbVOc~ld39uHClf(n9)B4~_M1<5hFNFot)BA9SQFhDU9l0gC_6OxGumPJ9km8U?9 zN2-M)R1tCUK*S;-pf0T_a!asY2x_TfrAA#vpc55$|M2yXoj3D4zn{ENZALd8F>!1YKAk%^VUZ7%HBOlM?{|L!;pV3YA6!d@&>A~$%2Qo#g> zL=u_H;ZnF{1|I+bI)euAX>2lwFW~Y70{SG!r?3J)0fR`RPz7{47XbKV4#UrnL*-JC zWYEa~nL3FLQtM!uS`JR?RU&#nU@3o#WpcHk42HB35R@`m0bz*{4CxXf4TigphFLCA zsuhqy=WR{TdvAH5R=F8e2(*w2^De$jQ5PITD!A1h8o}9PP=`!isrcH*#6+tYfkNpuj#&s|81OnyvNC(=NjLSmFToPm z4t;6EMu*mG=_}ahSNQlW7kWQY9Nih&-qWMsu-JX&5~*&HWH8jVNm>5YbjsY}=qDTQ z#rQHPLD?LkNBkJB5 zmyCG$cLpZo+MfP%8TIwS!2H!FM%2c!NyCBLpoG`I`xcskJiYhYhV<06m7%NF05 zq6WL{Tx0&mZ_c>Cs<+^$G%Y%voIF*!^%1e8oT~q_TGIL4ZsV&%rRlgk|MA^PG1-RF zdJYl&Z2S8Ho(=U&(~Xwt{`h52?@BX&J-#-vt)_pidFws;^*kwC)z@k)ubCTk{j<-tXY2qHII^*&3q#Y>t(P@DhmsCgkG-g$)&HaJlDjFtn7BKP9Vt;$IGE1m1#!`xA zwuYP9HWt!%JzAKwZKb!($$I?`g@?bzlX*Vl;+??i`*)hPRT=3ng{OW6Xt}+dr{EI9W6J~!W&LIU$~zl%BAF= zFogc-^g4Qo5)#rTi%Xns_jc^3+5}dxj!vuojbfjD5Mq%RIS+_40Kl814P%+|MluGpyfw4t_PGnEC zWArSYdbiL^P=l{kQXKQxdkS}7o$jAx2_gOCQci5}{QN-?&|>H+tvs6;kTDad3QU!# z9Kc@*xrO|gO55*)b*(nEq|3$K_Dwi?gWFYshtD#Ks*l9HH~tkwMq!!7j(q~XryUr@!Gd6Lpn z=eaik>AhR|&vN|2OS&?vswi|<*9j?3T;o{%h>8Yez)(>dNbaf7Ef0P8ix?repX}Q<;x7F+Y(Iu5< zPeu6ZJ@c}}sK*k=ufyGwMc-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu`kBtHuNWFoz#!AFNG#Ad)HBe}%?0@jth%@)C>7xhtg4GcDhpEegHnt0 zON)|$@sXws(+mtd{1$-}0$pR}Uz7=ql*AmD{N&Qy)VvZ;7h5Huj9yA+ij{$pv5BFj zg^8Jgv9qh8p`nwrqotd$lsiT3Vi3!XMYQsQUuHx_7@zVGB7aKdb&7R?*7v@9uz`D#JcjfMM8 z_^dIE@Ors=PuVzaxFTP{@r1X4z*xG$Jf+nt>+qC$snp$n= rI<_pq(&dUVLFxgF zh?ppd3K0Yh1`-GXLUt1&2MIY?LT)x3DJe1JRBJm@{1W|rfp^S%DZ9Vjw*6=lunc%( z01O7B+vD+heU5pD%jul6+YyUpYHG@AwIYbcY@RTi%{H4&EQe2&HqP2?ux?^%YFe+? z8w`fWFF>h6W1X>P7E*P3L*^OUzSH-NM&t342KBhnWzP_DbSpJMF7-?h)@3-+G zi6XO*W|^E+zLN zOcUl4r45HJ*7Xg_BnntCthz(zD3wYW9&2IqWNM8gLumK)2g{wxUJ5Se6Naq+^p))4Tz`NF?g%+|<0PZl3Vxt50aHJdIWhK>`?tEi<;?Yue2d6E7vQ>$RN*WLh9m31#Z6 zGc>7G$^k_>y^b$Z>L;cL_~0{kzr|`(D3mI-y1k3r)x#Zy;r=0+$z*=_?jMm{ZFji3 z`7b?gk9Tow4#(@)uU#&e&*w83jXJ$P;pi<0f)*AQfd7}Ze`8SqU;v^&$bR?)fL{PO z{^6<2$507AbaS?t`9$~!VSQTNaboS@trc7IjN*>QluAQ%5sg%Fvu1hG$u;Om`YH*P zm?JGcz-W@!ZYwlr9qULXd{h~7bgk7M7L!%-;6QQ?{Q;#pqcN>!6{B^mZ9nU9@Uf0e zYV3FH8xd{4?)mJ?A8($=gWU`R=j2z3wR<@2roOY71nIe%veliGu4@;{z&%m(5mEZqqJ&U()0*T)e$;|H+Oc zmA*8=Az0F)YB1)zjhWeoodZyHiqEs z#lh%Z>%d*4hG}9_7+H48f9sX!NZ^**tOf~odnsivb`3c+6{{^JBw<6&>@LQHWFX1d zYcM)FpqIQpnTCTePy)lkiOqOi2BqR5F08r&>$g%|zHWHs#_XKoumtkX z*`Tr&AQa>Wl9dA-%T3bI=Vo1&Pn^Q=EZxLZ^ zs4+Huli)5BzrH%1AVCMh#lftd%;I6fhVW)FT6+n!<5opEr4a#9N`Mp`mk~qS5ce3u zP2On(aoW;0U~Ocs=T`h`WOd2sk!(~67KrOe8qfe_CxqWv&WsQG!tN9jz77Jvd6Y^i s#_j-br$_JDUk)uDCl|=Y8>sniNmTQ5cRW2eRGmT;MQ@cEuvlQnfAD1>-~a#s diff --git a/upload/templates/default/images/ua/icon_poll.gif b/upload/templates/default/images/ua/icon_poll.gif new file mode 100644 index 0000000000000000000000000000000000000000..30a6c5ed395e8fc87967cbcbb71761848eedb802 GIT binary patch literal 2229 zcmbVOc~ld39uHClf(n9)B4~_M1<5hFNFot)BA9SQFhDU9l0gC_6OxGumPJ9km8U?9 zN2-M)R1tCUK*S;-pf0T_a!asY2x_TfrAA#vpc55$|M2yXoj3D4zn{ENZALd8F>!1YKAk%^VUZ7%HBOlM?{|L!;pV3YA6!d@&>A~$%2Qo#g> zL=u_H;ZnF{1|I+bI)euAX>2lwFW~Y70{SG!r?3J)0fR`RPz7{47XbKV4#UrnL*-JC zWYEa~nL3FLQtM!uS`JR?RU&#nU@3o#WpcHk42HB35R@`m0bz*{4CxXf4TigphFLCA zsuhqy=WR{TdvAH5R=F8e2(*w2^De$jQ5PITD!A1h8o}9PP=`!isrcH*#6+tYfkNpuj#&s|81OnyvNC(=NjLSmFToPm z4t;6EMu*mG=_}ahSNQlW7kWQY9Nih&-qWMsu-JX&5~*&HWH8jVNm>5YbjsY}=qDTQ z#rQHPLD?LkNBkJB5 zmyCG$cLpZo+MfP%8TIwS!2H!FM%2c!NyCBLpoG`I`xcskJiYhYhV<06m7%NF05 zq6WL{Tx0&mZ_c>Cs<+^$G%Y%voIF*!^%1e8oT~q_TGIL4ZsV&%rRlgk|MA^PG1-RF zdJYl&Z2S8Ho(=U&(~Xwt{`h52?@BX&J-#-vt)_pidFws;^*kwC)z@k)ubCTk{j<-tXY2qHII^*&3q#Y>t(P@DhmsCgkG-g$)&HaJlDjFtn7BKP9Vt;$IGE1m1#!`xA zwuYP9HWt!%JzAKwZKb!($$I?`g@?bzlX*Vl;+??i`*)hPRT=3ng{OW6Xt}+dr{EI9W6J~!W&LIU$~zl%BAF= zFogc-^g4Qo5)#rTi%Xns_jc^3+5}dxj!vuojbfjD5Mq%RIS+_40Kl814P%+|MluGpyfw4t_PGnEC zWArSYdbiL^P=l{kQXKQxdkS}7o$jAx2_gOCQci5}{QN-?&|>H+tvs6;kTDad3QU!# z9Kc@*xrO|gO55*)b*(nEq|3$K_Dwi?gWFYshtD#Ks*l9HH~tkwMq!!7j(q~XryUr@!Gd6Lpn z=eaik>AhR|&vN|2OS&?vswi|<*9j?3T;o{%h>8Yez)(>dNbaf7Ef0P8ix?repX}Q<;x7F+Y(Iu5< zPeu6ZJ@c}}sK*k=ufyGwM + +