Merge branch 'feature/atom' into develop

* feature/atom:
  Atom ajax post
  Atom updates
  Function update_atom
  Atom path
  Atom links
  Atom images + forum map fix
  Atom for users
  Atom picture
  Atom
This commit is contained in:
Exile 2014-08-14 22:51:15 +04:00
commit 892b601b64
23 changed files with 467 additions and 82 deletions

View file

@ -22,6 +22,7 @@ TorrentPier II - движок торрент-трекера, написанны
Исходя из настроек вашего сервера, устанавливаем рекомендуемые права доступа (chmod) на указанные папки **777**, а на файлы внутри этих папок (кроме файлов **.htaccess** и **.keep**) **666**: Исходя из настроек вашего сервера, устанавливаем рекомендуемые права доступа (chmod) на указанные папки **777**, а на файлы внутри этих папок (кроме файлов **.htaccess** и **.keep**) **666**:
- ajax/html - ajax/html
- atom
- cache - cache
- cache/filecache - cache/filecache
- images - images

View file

@ -645,6 +645,7 @@ INSERT INTO `bb_cron` VALUES (19, 1, 'Captcha', 'captcha_gen_gc.php', 'daily', N
INSERT INTO `bb_cron` VALUES (20, 1, 'Tracker dl-complete count', 'tr_complete_count.php', 'interval', NULL, NULL, 255, '', '', '06:00:00', 0, '', 0, 0, 0); INSERT INTO `bb_cron` VALUES (20, 1, 'Tracker dl-complete count', 'tr_complete_count.php', 'interval', NULL, NULL, 255, '', '', '06:00:00', 0, '', 0, 0, 0);
INSERT INTO `bb_cron` VALUES (21, 1, 'Cache garbage collector', 'cache_gc.php', 'interval', NULL, NULL, 255, '', '', '00:05:00', 0, '', 0, 0, 0); INSERT INTO `bb_cron` VALUES (21, 1, 'Cache garbage collector', 'cache_gc.php', 'interval', NULL, NULL, 255, '', '', '00:05:00', 0, '', 0, 0, 0);
INSERT INTO `bb_cron` VALUES (22, 1, 'Sitemap update', 'sitemap.php', 'daily', NULL, '06:00:00', 30, '', '', NULL, 0, '', 0, 0, 0); INSERT INTO `bb_cron` VALUES (22, 1, 'Sitemap update', 'sitemap.php', 'daily', NULL, '06:00:00', 30, '', '', NULL, 0, '', 0, 0, 0);
INSERT INTO `bb_cron` VALUES (23, 1, 'Update forums atom', 'update_forums_atom.php', 'interval', NULL, NULL, 255, '', '', '00:20:00', 0, '', 0, 0, 0);
-- -------------------------------------------------------- -- --------------------------------------------------------

View file

@ -57,6 +57,10 @@ switch($this->request['type'])
$this->prompt_for_confirm($lang['CONFIRM_DELETE']); $this->prompt_for_confirm($lang['CONFIRM_DELETE']);
} }
post_delete($post_id); post_delete($post_id);
// Update atom feed
update_atom('topic', (int) $this->request['topic_id']);
$this->response['hide'] = true; $this->response['hide'] = true;
$this->response['post_id'] = $post_id; $this->response['post_id'] = $post_id;
} }
@ -158,6 +162,9 @@ switch($this->request['type'])
} }
else $this->ajax_die($lang['EMPTY_MESSAGE']); else $this->ajax_die($lang['EMPTY_MESSAGE']);
// Update atom feed
update_atom('topic', (int) $this->request['topic_id']);
$this->response['html'] = bbcode2html($text); $this->response['html'] = bbcode2html($text);
} }
else else
@ -309,6 +316,9 @@ switch($this->request['type'])
user_notification('reply', $post, $post['topic_title'], $post['forum_id'], $topic_id, $notify); user_notification('reply', $post, $post['topic_title'], $post['forum_id'], $topic_id, $notify);
} }
// Update atom feed
update_atom('topic', (int) $this->request['topic_id']);
$this->response['redirect'] = make_url(POST_URL . "$post_id#$post_id"); $this->response['redirect'] = make_url(POST_URL . "$post_id#$post_id");
break; break;

0
upload/atom/.keep Normal file
View file

View file

@ -56,6 +56,7 @@
* Avatars * Avatars
* Misc * Misc
* Captcha * Captcha
* Atom feed
**/ **/
if (!defined('BB_ROOT')) die(basename(__FILE__)); if (!defined('BB_ROOT')) die(basename(__FILE__));
@ -68,8 +69,8 @@ $domain_name = (!empty($_SERVER['SERVER_NAME'])) ? $_SERVER['SERVER_NAME'] : $do
// Version info // Version info
$bb_cfg['tp_version'] = '2.0.9 (RC)'; $bb_cfg['tp_version'] = '2.0.9 (RC)';
$bb_cfg['tp_release_date'] = '07-08-2014'; $bb_cfg['tp_release_date'] = '14-08-2014';
$bb_cfg['tp_release_state'] = 'R594b'; $bb_cfg['tp_release_state'] = 'R595';
// Database // Database
$charset = 'utf8'; $charset = 'utf8';
@ -590,10 +591,16 @@ $bb_cfg['advert_url'] = 'misc.php?do=info&show=advert';
// Captcha // Captcha
$bb_cfg['captcha'] = array( $bb_cfg['captcha'] = array(
'disabled' => false, 'disabled' => false,
'secret_key' => 'secret_key', 'secret_key' => 'secret_key',
'img_url' => './images/captcha/', # without '/' 'img_url' => './images/captcha/',
'img_path' => BB_PATH .'/images/captcha/', # without '/' 'img_path' => BB_PATH .'/images/captcha/',
);
// Atom feed
$bb_cfg['atom'] = array(
'path' => BB_PATH .'/atom',
'url' => './atom',
); );
define('BB_CFG_LOADED', true); define('BB_CFG_LOADED', true);

68
upload/feed.php Normal file
View file

@ -0,0 +1,68 @@
<?php
define('IN_FORUM', true);
define('BB_SCRIPT', 'feed');
define('BB_ROOT', './');
require(BB_ROOT .'common.php');
$user->session_start(array('req_login' => true));
$mode = (string) @$_REQUEST['mode'];
$type = (string) @$_POST['type'];
$id = (int) @$_POST['id'];
$timecheck = TIMENOW - 600;
if (!$mode) bb_simple_die($lang['ATOM_NO_MODE']);
if ($mode == 'get_feed_url' && ($type == 'f' || $type == 'u') && $id >= 0)
{
if ($type == 'f')
{
// Check if the user has actually sent a forum ID
$sql = "SELECT allow_reg_tracker, forum_name FROM ". BB_FORUMS ." WHERE forum_id = $id LIMIT 1";
if (!$forum_data = DB()->fetch_row($sql))
{
if ($id == 0)
{
$forum_data = array();
}
else bb_simple_die($lang['ATOM_ERROR'].' #1');
}
if (file_exists($bb_cfg['atom']['path'] .'/f/'. $id .'.atom') && filemtime($bb_cfg['atom']['path'] .'/f/'. $id .'.atom') > $timecheck)
{
redirect($bb_cfg['atom']['url'] .'/f/'. $id .'.atom');
}
else
{
require_once(INC_DIR .'functions_atom.php');
if (update_forum_feed($id, $forum_data)) redirect($bb_cfg['atom']['url'] .'/f/'. $id .'.atom');
else bb_simple_die($lang['ATOM_NO_FORUM']);
}
}
if ($type == 'u')
{
// Check if the user has actually sent a user ID
if ($id < 1)
{
bb_simple_die($lang['ATOM_ERROR'].' #2');
}
if (!$username = get_username($id))
{
bb_simple_die($lang['ATOM_ERROR'].' #3');
}
if (file_exists($bb_cfg['atom']['path'] .'/u/'. floor($id/5000) .'/'. ($id % 100) .'/'. $id .'.atom') && filemtime($bb_cfg['atom']['path'] .'/u/'. floor($id/5000) .'/'. ($id % 100) .'/'. $id .'.atom') > $timecheck)
{
redirect($bb_cfg['atom']['url'] .'/u/'. floor($id/5000) .'/'. ($id % 100) .'/'. $id .'.atom');
}
else
{
require_once(INC_DIR .'functions_atom.php');
if (update_user_feed($id, $username)) redirect($bb_cfg['atom']['url'] .'/u/'. floor($id/5000) .'/'. ($id % 100) .'/'. $id .'.atom');
else bb_simple_die($lang['ATOM_NO_USER']);
}
}
}
else
{
bb_simple_die($lang['ATOM_ERROR'].' #4');
}

View file

@ -131,7 +131,7 @@ class captcha_common
CACHE('bb_cap_sid')->set('c_sid_'. $this->new_cap_sid, $this->new_cap_code, $this->key_ttl*2); CACHE('bb_cap_sid')->set('c_sid_'. $this->new_cap_sid, $this->new_cap_code, $this->key_ttl*2);
} }
function get_img_url ($id) function get_img_url ($id)
{ {
return $this->get_path($id, $this->cfg['img_url']); return $this->get_path($id, $this->cfg['img_url']);
} }
@ -215,8 +215,6 @@ class captcha_kcaptcha extends captcha_common
$credits = $bb_cfg['server_name']; # if empty, HTTP_HOST will be shown $credits = $bb_cfg['server_name']; # if empty, HTTP_HOST will be shown
# CAPTCHA image colors (RGB, 0-255) # CAPTCHA image colors (RGB, 0-255)
//$foreground_color = array(0, 0, 0);
//$background_color = array(220, 230, 255);
$foreground_color = array(mt_rand(0,100), mt_rand(0,100), mt_rand(0,100)); $foreground_color = array(mt_rand(0,100), mt_rand(0,100), mt_rand(0,100));
$background_color = array(mt_rand(200,255), mt_rand(200,255), mt_rand(200,255)); $background_color = array(mt_rand(200,255), mt_rand(200,255), mt_rand(200,255));
@ -316,7 +314,7 @@ class captcha_kcaptcha extends captcha_common
$center=$x/2; $center=$x/2;
// credits. To remove, see configuration file // credits
$img2=imagecreatetruecolor($width, $height+($show_credits?12:0)); $img2=imagecreatetruecolor($width, $height+($show_credits?12:0));
$foreground=imagecolorallocate($img2, $foreground_color[0], $foreground_color[1], $foreground_color[2]); $foreground=imagecolorallocate($img2, $foreground_color[0], $foreground_color[1], $foreground_color[2]);
$background=imagecolorallocate($img2, $background_color[0], $background_color[1], $background_color[2]); $background=imagecolorallocate($img2, $background_color[0], $background_color[1], $background_color[2]);
@ -390,8 +388,6 @@ class captcha_kcaptcha extends captcha_common
file_write('', $img_path, null, true, true); file_write('', $img_path, null, true, true);
imagejpeg($img2, $img_path, $jpeg_quality); imagejpeg($img2, $img_path, $jpeg_quality);
# imagegif($img2, $img_path);
# imagepng($img2, $img_path);
imagedestroy($img2); imagedestroy($img2);

View file

@ -0,0 +1,23 @@
<?php
if (!defined('BB_ROOT')) die(basename(__FILE__));
global $bb_cfg;
require_once(INC_DIR .'functions_atom.php');
$timecheck = TIMENOW - 600;
$forums_data = DB()->fetch_rowset("SELECT forum_id, allow_reg_tracker, forum_name FROM ". BB_FORUMS);
if (!file_exists($bb_cfg['atom']['path'] .'/f/0.atom') && filemtime($bb_cfg['atom']['path'] .'/f/0.atom') <= $timecheck)
{
update_forum_feed(0, $forums_data);
}
foreach ($forums_data as $forum_data)
{
if (!file_exists($bb_cfg['atom']['path'] .'/f/'. $forum_data['forum_id'] .'.atom') && filemtime($bb_cfg['atom']['path'] .'/f/'. $forum_data['forum_id'] .'.atom') <= $timecheck)
{
update_forum_feed($forum_data['forum_id'], $forum_data);
}
}

View file

@ -11,7 +11,7 @@ function get_path_from_id ($id, $ext_id, $base_path, $first_div, $sec_div)
function get_avatar_path ($id, $ext_id, $base_path = '') function get_avatar_path ($id, $ext_id, $base_path = '')
{ {
return get_path_from_id($id, $ext_id, $base_path, 5000000, 100); return get_path_from_id($id, $ext_id, $base_path, 5000, 100);
} }
function delete_avatar ($user_id, $avatar_ext_id) function delete_avatar ($user_id, $avatar_ext_id)
@ -24,7 +24,7 @@ function delete_avatar ($user_id, $avatar_ext_id)
function get_attach_path ($id) function get_attach_path ($id)
{ {
global $bb_cfg; global $bb_cfg;
return get_path_from_id($id, '', $bb_cfg['attach']['upload_path'], 1000000, 100); return get_path_from_id($id, '', $bb_cfg['attach']['upload_path'], 1000, 100);
} }
function get_tracks ($type) function get_tracks ($type)
@ -2837,3 +2837,20 @@ function is_gold ($type)
return $is_gold; return $is_gold;
} }
function update_atom ($type, $id)
{
require_once(INC_DIR .'functions_atom.php');
switch ($type)
{
case 'user':
update_user_feed($id, get_username($id));
break;
case 'topic':
$topic_poster = (int) DB()->fetch_row("SELECT topic_poster FROM ". BB_TOPICS ." WHERE topic_id = $id LIMIT 1", 'topic_poster');
update_user_feed($topic_poster, get_username($topic_poster));
break;
}
}

View file

@ -277,6 +277,13 @@ function topic_delete ($mode_or_topic_id, $forum_id = null, $prune_time = 0, $pr
GROUP BY p.poster_id GROUP BY p.poster_id
"); ");
// Get array for atom update
$atom_csv = array();
foreach (DB()->fetch_rowset('SELECT user_id FROM '.$tmp_user_posts) as $at)
{
$atom_csv[] = $at['user_id'];
}
DB()->query(" DB()->query("
UPDATE UPDATE
$tmp_user_posts tmp, ". BB_USERS ." u $tmp_user_posts tmp, ". BB_USERS ." u
@ -384,6 +391,12 @@ function topic_delete ($mode_or_topic_id, $forum_id = null, $prune_time = 0, $pr
// Sync // Sync
sync('forum', array_keys($sync_forums)); sync('forum', array_keys($sync_forums));
// Update atom feed
foreach ($atom_csv as $atom)
{
update_atom('user', $atom);
}
DB()->query("DROP TEMPORARY TABLE $tmp_delete_topics"); DB()->query("DROP TEMPORARY TABLE $tmp_delete_topics");
return $deleted_topics_count; return $deleted_topics_count;
@ -663,6 +676,16 @@ function post_delete ($mode_or_post_id, $user_id = null, $exclude_first = true)
sync('forum', array_keys($sync_forums)); sync('forum', array_keys($sync_forums));
sync('user_posts', $sync_users); sync('user_posts', $sync_users);
// Update atom feed
foreach ($sync_topics as $atom_topic)
{
update_atom('topic', $atom_topic);
}
foreach ($sync_users as $atom_user)
{
update_atom('user', $atom_user);
}
DB()->query("DROP TEMPORARY TABLE $tmp_delete_posts"); DB()->query("DROP TEMPORARY TABLE $tmp_delete_posts");
return $deleted_posts_count; return $deleted_posts_count;
@ -670,7 +693,7 @@ function post_delete ($mode_or_post_id, $user_id = null, $exclude_first = true)
function user_delete ($user_id, $delete_posts = false) function user_delete ($user_id, $delete_posts = false)
{ {
global $log_action; global $bb_cfg, $log_action;
if (!$user_csv = get_id_csv($user_id)) if (!$user_csv = get_id_csv($user_id))
{ {
@ -755,6 +778,13 @@ function user_delete ($user_id, $delete_posts = false)
DB()->query("UPDATE ". BB_PRIVMSGS ." SET privmsgs_from_userid = ". DELETED ." WHERE privmsgs_from_userid IN($user_csv)"); DB()->query("UPDATE ". BB_PRIVMSGS ." SET privmsgs_from_userid = ". DELETED ." WHERE privmsgs_from_userid IN($user_csv)");
DB()->query("UPDATE ". BB_PRIVMSGS ." SET privmsgs_to_userid = ". DELETED ." WHERE privmsgs_to_userid IN($user_csv)"); DB()->query("UPDATE ". BB_PRIVMSGS ." SET privmsgs_to_userid = ". DELETED ." WHERE privmsgs_to_userid IN($user_csv)");
// Delete user feed
foreach (explode(',', $user_csv) as $user_id)
{
$file_path = $bb_cfg['atom']['path'] .'/u/'. floor($user_id/5000) .'/'. ($user_id % 100) .'/'. $user_id .'.atom';
@unlink($file_path);
}
} }
function get_usernames_for_log ($user_id) function get_usernames_for_log ($user_id)

View file

@ -0,0 +1,186 @@
<?php
if (!defined('BB_ROOT')) die(basename(__FILE__));
// Максимум записей = 50
// [Обновлено] - если дата изменения первого поста топика не старее недели (?) или в топике новые сообщения не старее недели (?)
function update_forum_feed ($forum_id, $forum_data)
{
global $bb_cfg;
$file_path = $bb_cfg['atom']['path'] .'/f/'. $forum_id .'.atom';
$select_tor_sql = $join_tor_sql = '';
if ($forum_id == 0) $forum_data['forum_name'] = 'Общая по всем разделам';
if ($forum_id > 0 && $forum_data['allow_reg_tracker'])
{
$select_tor_sql = ', tor.size AS tor_size, tor.tor_status';
$join_tor_sql = "LEFT JOIN ". BB_BT_TORRENTS ." tor ON(t.topic_id = tor.topic_id)";
}
if ($forum_id == 0)
{
$sql = "
SELECT
t.topic_id, t.topic_title, t.topic_status,
u1.username AS first_username,
p1.post_time AS topic_first_post_time, p1.post_edit_time AS topic_first_post_edit_time,
p2.post_time AS topic_last_post_time, p2.post_edit_time AS topic_last_post_edit_time,
tor.size AS tor_size, tor.tor_status
FROM ". BB_BT_TORRENTS ." tor
LEFT JOIN ". BB_TOPICS ." t ON(tor.topic_id = t.topic_id)
LEFT JOIN ". BB_USERS ." u1 ON(t.topic_poster = u1.user_id)
LEFT JOIN ". BB_POSTS ." p1 ON(t.topic_first_post_id = p1.post_id)
LEFT JOIN ". BB_POSTS ." p2 ON(t.topic_last_post_id = p2.post_id)
ORDER BY t.topic_last_post_time DESC
LIMIT 100
";
}
else if ($forum_id > 0)
{
$sql = "
SELECT
t.topic_id, t.topic_title, t.topic_status,
u1.username AS first_username,
p1.post_time AS topic_first_post_time, p1.post_edit_time AS topic_first_post_edit_time,
p2.post_time AS topic_last_post_time, p2.post_edit_time AS topic_last_post_edit_time
$select_tor_sql
FROM ". BB_TOPICS ." t
LEFT JOIN ". BB_USERS ." u1 ON(t.topic_poster = u1.user_id)
LEFT JOIN ". BB_POSTS ." p1 ON(t.topic_first_post_id = p1.post_id)
LEFT JOIN ". BB_POSTS ." p2 ON(t.topic_last_post_id = p2.post_id)
$join_tor_sql
WHERE t.forum_id = $forum_id
ORDER BY t.topic_last_post_time DESC
LIMIT 50
";
}
$topics_tmp = DB()->fetch_rowset($sql);
$topics = array();
foreach ($topics_tmp as $topic)
{
if (isset($topic['topic_status']))
{
if ($topic['topic_status'] == TOPIC_MOVED) continue;
}
if (isset($topic['tor_status']))
{
if (isset($bb_cfg['tor_frozen'][$topic['tor_status']])) continue;
}
$topics[] = $topic;
}
if (!count($topics))
{
@unlink($file_path);
return false;
}
if (create_atom($file_path, 'f', $forum_id, htmlCHR($forum_data['forum_name']), $topics)) return true;
else return false;
}
function update_user_feed ($user_id, $username)
{
global $bb_cfg;
$file_path = $bb_cfg['atom']['path'] .'/u/'. floor($user_id/5000) .'/'. ($user_id % 100) .'/'. $user_id .'.atom';
$sql = "
SELECT
t.topic_id, t.topic_title, t.topic_status,
u1.username AS first_username,
p1.post_time AS topic_first_post_time, p1.post_edit_time AS topic_first_post_edit_time,
p2.post_time AS topic_last_post_time, p2.post_edit_time AS topic_last_post_edit_time,
tor.size AS tor_size, tor.tor_status
FROM ". BB_TOPICS ." t
LEFT JOIN ". BB_USERS ." u1 ON(t.topic_poster = u1.user_id)
LEFT JOIN ". BB_POSTS ." p1 ON(t.topic_first_post_id = p1.post_id)
LEFT JOIN ". BB_POSTS ." p2 ON(t.topic_last_post_id = p2.post_id)
LEFT JOIN ". BB_BT_TORRENTS ." tor ON(t.topic_id = tor.topic_id)
WHERE t.topic_poster = $user_id
ORDER BY t.topic_last_post_time DESC
LIMIT 50
";
$topics_tmp = DB()->fetch_rowset($sql);
$topics = array();
foreach ($topics_tmp as $topic)
{
if (isset($topic['topic_status']))
{
if ($topic['topic_status'] == TOPIC_MOVED) continue;
}
if (isset($topic['tor_status']))
{
if (isset($bb_cfg['tor_frozen'][$topic['tor_status']])) continue;
}
$topics[] = $topic;
}
if (!count($topics))
{
@unlink($file_path);
return false;
}
if (create_atom($file_path, 'u', $user_id, wbr($username), $topics)) return true;
else return false;
}
function create_atom ($file_path, $mode, $id, $title, $topics)
{
global $bb_cfg;
$dir = dirname($file_path);
if (!file_exists($dir))
{
if (!bb_mkdir($dir)) return false;
}
foreach ($topics as $topic)
{
$last_time = $topic['topic_last_post_time'];
if ($topic['topic_last_post_edit_time']) $last_time = $topic['topic_last_post_edit_time'];
$date = bb_date($last_time, 'Y-m-d', 0);
$time = bb_date($last_time, 'H:i:s', 0);
break;
}
$atom = "";
$atom .= "<?xml version=\"1.0\" encoding=\"utf-8\" ?>\n";
$atom .= "<feed xmlns=\"http://www.w3.org/2005/Atom\" xml:base=\"http://". $bb_cfg['server_name'] . $bb_cfg['script_path'] ."\">\n";
$atom .= "<title>$title</title>\n";
$atom .= "<updated>". $date ."T$time+00:00</updated>\n";
$atom .= "<id>tag:rto.feed,2000:/$mode/$id</id>\n";
$atom .= "<link href=\"http://". $bb_cfg['server_name'] . $bb_cfg['script_path'] ."\" />\n";
foreach ($topics as $topic)
{
$topic_id = $topic['topic_id'];
$tor_size = '';
if (isset($topic['tor_size']))
{
$tor_size = str_replace('&nbsp;', ' ', ' ['. humn_size($topic['tor_size']) .']');
}
$topic_title = $topic['topic_title'];
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);
if (count($orig_word))
{
$topic_title = preg_replace($orig_word, $replacement_word, $topic_title);
}
$topic_title = wbr($topic_title);
$author_name = ($topic['first_username']) ? wbr($topic['first_username']) : 'Гость';
$last_time = $topic['topic_last_post_time'];
if ($topic['topic_last_post_edit_time']) $last_time = $topic['topic_last_post_edit_time'];
$date = bb_date($last_time, 'Y-m-d', 0);
$time = bb_date($last_time, 'H:i:s', 0);
$updated = '';
$checktime = TIMENOW - 604800; // неделя (week)
if ($topic['topic_first_post_edit_time'] && $topic['topic_first_post_edit_time'] > $checktime) $updated = '[Обновлено] ';
$atom .= "<entry>\n";
$atom .= " <title type=\"html\"><![CDATA[$updated$topic_title$tor_size]]></title>\n";
$atom .= " <author>\n";
$atom .= " <name>$author_name</name>\n";
$atom .= " </author>\n";
$atom .= " <updated>". $date ."T$time+00:00</updated>\n";
$atom .= " <id>tag:rto.feed,". $date .":/t/$topic_id</id>\n";
$atom .= " <link href=\"viewtopic.php?t=$topic_id\" />\n";
$atom .= "</entry>\n";
}
$atom .= "</feed>";
@unlink($file_path);
$fp = fopen($file_path, "w");
fwrite($fp, $atom);
fclose ($fp);
return true;
}

View file

@ -135,7 +135,8 @@ $lang['SEARCH_SELF_BY_LAST'] = 'last post time';
$lang['SEARCH_SELF_BY_MY'] = 'my post time'; $lang['SEARCH_SELF_BY_MY'] = 'my post time';
$lang['SEARCH_UNANSWERED'] = 'View unanswered posts'; $lang['SEARCH_UNANSWERED'] = 'View unanswered posts';
$lang['SEARCH_UNANSWERED_SHORT'] = 'unanswered'; $lang['SEARCH_UNANSWERED_SHORT'] = 'unanswered';
$lang['SEARCH_LATEST'] = 'latest'; $lang['SEARCH_LATEST'] = 'Latest topics';
$lang['LATEST_RELEASES'] = 'Latest releases';
$lang['REGISTER'] = 'Register'; $lang['REGISTER'] = 'Register';
$lang['PROFILE'] = 'Profile'; $lang['PROFILE'] = 'Profile';
@ -1194,7 +1195,7 @@ $lang['SEL_CHAPTERS'] = 'Link to the selected partitions';
$lang['NOT_SEL_CHAPTERS'] = 'You have not selected topics'; $lang['NOT_SEL_CHAPTERS'] = 'You have not selected topics';
$lang['SEL_CHAPTERS_HELP'] = 'You can select a maximum %s partition'; $lang['SEL_CHAPTERS_HELP'] = 'You can select a maximum %s partition';
$lang['HIDE_CONTENTS'] = 'Hide the contents of {...}'; $lang['HIDE_CONTENTS'] = 'Hide the contents of {...}';
$lang['FILTER_BY_NAME'] = '<i>filter by name </i>'; $lang['FILTER_BY_NAME'] = '<i>Filter by name </i>';
$lang['BT_ONLY_ACTIVE'] = 'Active'; $lang['BT_ONLY_ACTIVE'] = 'Active';
$lang['BT_ONLY_MY'] = 'My releases'; $lang['BT_ONLY_MY'] = 'My releases';
@ -1248,7 +1249,7 @@ $lang['SEARCH_DL_COMPLETE_DOWNLOADS'] = 'Completed Downloads';
$lang['SEARCH_DL_CANCEL'] = 'Canceled'; $lang['SEARCH_DL_CANCEL'] = 'Canceled';
$lang['CUR_DOWNLOADS'] = 'Current Downloads'; $lang['CUR_DOWNLOADS'] = 'Current Downloads';
$lang['CUR_UPLOADS'] = 'Current Uploads'; $lang['CUR_UPLOADS'] = 'Current Uploads';
$lang['SEARCH_RELEASES'] = 'Find releases'; $lang['SEARCH_RELEASES'] = 'Releases';
$lang['TOR_SEARCH_TITLE'] = 'Torrent search options'; $lang['TOR_SEARCH_TITLE'] = 'Torrent search options';
$lang['OPEN_TOPIC'] = 'Open topic'; $lang['OPEN_TOPIC'] = 'Open topic';
@ -2965,3 +2966,9 @@ $lang['SITEMAP_ADD_EXP_1'] = 'You can specify additional pages on your site (for
$lang['SITEMAP_ADD_EXP_2'] = 'Each reference must begin with http(s):// and a new line!'; $lang['SITEMAP_ADD_EXP_2'] = 'Each reference must begin with http(s):// and a new line!';
$lang['FORUM_MAP'] = 'Forums\' map'; $lang['FORUM_MAP'] = 'Forums\' map';
$lang['ATOM_FEED'] = 'Feed';
$lang['ATOM_ERROR'] = 'Error generating feed';
$lang['ATOM_SUBSCRIBE'] = 'Subscribe to the feed';
$lang['ATOM_NO_MODE'] = 'Do not specify a mode for the feed';
$lang['ATOM_NO_FORUM'] = 'This forum does not have a feed (no ongoing topics)';
$lang['ATOM_NO_USER'] = 'This user does not have a feed (no ongoing topics)';

View file

@ -135,7 +135,8 @@ $lang['SEARCH_SELF_BY_LAST'] = 'времени последнего сообще
$lang['SEARCH_SELF_BY_MY'] = 'времени моего сообщения'; $lang['SEARCH_SELF_BY_MY'] = 'времени моего сообщения';
$lang['SEARCH_UNANSWERED'] = 'Сообщения без ответов'; $lang['SEARCH_UNANSWERED'] = 'Сообщения без ответов';
$lang['SEARCH_UNANSWERED_SHORT'] = 'без ответов'; $lang['SEARCH_UNANSWERED_SHORT'] = 'без ответов';
$lang['SEARCH_LATEST'] = 'Последние'; $lang['SEARCH_LATEST'] = 'Последние темы';
$lang['LATEST_RELEASES'] = 'Последние раздачи';
$lang['REGISTER'] = 'Регистрация'; $lang['REGISTER'] = 'Регистрация';
$lang['PROFILE'] = 'Профиль'; $lang['PROFILE'] = 'Профиль';
@ -1194,7 +1195,7 @@ $lang['SEL_CHAPTERS'] = 'Ссылка на выбранные разделы';
$lang['NOT_SEL_CHAPTERS'] = 'Вы не выбрали разделы'; $lang['NOT_SEL_CHAPTERS'] = 'Вы не выбрали разделы';
$lang['SEL_CHAPTERS_HELP'] = 'Вы можете выбрать максимум %s разделов'; $lang['SEL_CHAPTERS_HELP'] = 'Вы можете выбрать максимум %s разделов';
$lang['HIDE_CONTENTS'] = 'Скрыть содержимое {...}'; $lang['HIDE_CONTENTS'] = 'Скрыть содержимое {...}';
$lang['FILTER_BY_NAME'] = '<i>фильтр по названию</i>'; $lang['FILTER_BY_NAME'] = '<i>Фильтр по названию</i>';
$lang['BT_ONLY_ACTIVE'] = 'Активные (есть сидер или личер)'; $lang['BT_ONLY_ACTIVE'] = 'Активные (есть сидер или личер)';
$lang['BT_ONLY_MY'] = 'Мои раздачи'; $lang['BT_ONLY_MY'] = 'Мои раздачи';
@ -1248,7 +1249,7 @@ $lang['SEARCH_DL_COMPLETE_DOWNLOADS'] = 'Прошлые закачки';
$lang['SEARCH_DL_CANCEL'] = 'Отмененные'; $lang['SEARCH_DL_CANCEL'] = 'Отмененные';
$lang['CUR_DOWNLOADS'] = 'Текущие закачки'; $lang['CUR_DOWNLOADS'] = 'Текущие закачки';
$lang['CUR_UPLOADS'] = 'Текущие раздачи'; $lang['CUR_UPLOADS'] = 'Текущие раздачи';
$lang['SEARCH_RELEASES'] = 'Найти раздачи'; $lang['SEARCH_RELEASES'] = 'Раздачи';
$lang['TOR_SEARCH_TITLE'] = 'Опции показа торрентов'; $lang['TOR_SEARCH_TITLE'] = 'Опции показа торрентов';
$lang['OPEN_TOPIC'] = 'Открыть топик'; $lang['OPEN_TOPIC'] = 'Открыть топик';
@ -2965,3 +2966,9 @@ $lang['SITEMAP_ADD_EXP_1'] = 'Здесь вы можете указать доп
$lang['SITEMAP_ADD_EXP_2'] = 'Каждая ссылка должна начинаться с http(s):// и новой строки!'; $lang['SITEMAP_ADD_EXP_2'] = 'Каждая ссылка должна начинаться с http(s):// и новой строки!';
$lang['FORUM_MAP'] = 'Карта форумов'; $lang['FORUM_MAP'] = 'Карта форумов';
$lang['ATOM_FEED'] = 'Лента';
$lang['ATOM_ERROR'] = 'Ошибка генерации ленты';
$lang['ATOM_SUBSCRIBE'] = 'Подписка на ленту';
$lang['ATOM_NO_MODE'] = 'Не указан режим для ленты';
$lang['ATOM_NO_FORUM'] = 'Для этого форума нет ленты (нет начатых тем)';
$lang['ATOM_NO_USER'] = 'Для этого пользователя нет ленты (нет начатых тем)';

View file

@ -135,7 +135,8 @@ $lang['SEARCH_SELF_BY_LAST'] = 'з часу останнього повідом
$lang['SEARCH_SELF_BY_MY'] = 'з часу мого повідомлення'; $lang['SEARCH_SELF_BY_MY'] = 'з часу мого повідомлення';
$lang['SEARCH_UNANSWERED'] = 'Повідомлення без відповідей'; $lang['SEARCH_UNANSWERED'] = 'Повідомлення без відповідей';
$lang['SEARCH_UNANSWERED_SHORT'] = 'без відповідей'; $lang['SEARCH_UNANSWERED_SHORT'] = 'без відповідей';
$lang['SEARCH_LATEST'] = 'Останні'; $lang['SEARCH_LATEST'] = 'Останні теми';
$lang['LATEST_RELEASES'] = 'Останні роздачі';
$lang['REGISTER'] = 'Реєстрація'; $lang['REGISTER'] = 'Реєстрація';
$lang['PROFILE'] = 'Профіль'; $lang['PROFILE'] = 'Профіль';
@ -1194,7 +1195,7 @@ $lang['SEL_CHAPTERS'] = 'Посилання на вибрані розділи';
$lang['NOT_SEL_CHAPTERS'] = 'Ви не вибрали розділи'; $lang['NOT_SEL_CHAPTERS'] = 'Ви не вибрали розділи';
$lang['SEL_CHAPTERS_HELP'] = 'Ви можете вибрати максимум %s розділів'; $lang['SEL_CHAPTERS_HELP'] = 'Ви можете вибрати максимум %s розділів';
$lang['HIDE_CONTENTS'] = 'Приховати вміст {...}'; $lang['HIDE_CONTENTS'] = 'Приховати вміст {...}';
$lang['FILTER_BY_NAME'] = '<i>фільтрувати за назвою</i>'; $lang['FILTER_BY_NAME'] = '<i>Фільтрувати за назвою</i>';
$lang['BT_ONLY_ACTIVE'] = 'Активні (є сидер або лічер)'; $lang['BT_ONLY_ACTIVE'] = 'Активні (є сидер або лічер)';
$lang['BT_ONLY_MY'] = 'Мої роздачі'; $lang['BT_ONLY_MY'] = 'Мої роздачі';
@ -1248,7 +1249,7 @@ $lang['SEARCH_DL_COMPLETE_DOWNLOADS'] = 'Минулі закачування';
$lang['SEARCH_DL_CANCEL'] = 'Скасовані'; $lang['SEARCH_DL_CANCEL'] = 'Скасовані';
$lang['CUR_DOWNLOADS'] = 'Поточні закачування'; $lang['CUR_DOWNLOADS'] = 'Поточні закачування';
$lang['CUR_UPLOADS'] = 'Поточні роздачі'; $lang['CUR_UPLOADS'] = 'Поточні роздачі';
$lang['SEARCH_RELEASES'] = 'Знайти роздачі'; $lang['SEARCH_RELEASES'] = 'Роздачі';
$lang['TOR_SEARCH_TITLE'] = 'Опції показу торрентів'; $lang['TOR_SEARCH_TITLE'] = 'Опції показу торрентів';
$lang['OPEN_TOPIC'] = 'Відкрити топік'; $lang['OPEN_TOPIC'] = 'Відкрити топік';
@ -2965,3 +2966,9 @@ $lang['SITEMAP_ADD_EXP_1'] = 'Тут ви можете вказати додат
$lang['SITEMAP_ADD_EXP_2'] = 'Кожне посилання має починатись з http(s):// і нової рядки!'; $lang['SITEMAP_ADD_EXP_2'] = 'Кожне посилання має починатись з http(s):// і нової рядки!';
$lang['FORUM_MAP'] = 'Карта форумів'; $lang['FORUM_MAP'] = 'Карта форумів';
$lang['ATOM_FEED'] = 'Стрічка';
$lang['ATOM_ERROR'] = 'Помилка створення стрічки';
$lang['ATOM_SUBSCRIBE'] = 'Підписка на стрічку';
$lang['ATOM_NO_MODE'] = 'Не вказано режим для стрічки';
$lang['ATOM_NO_FORUM'] = 'Для цього форуму немає стрічки (немає початих тем)';
$lang['ATOM_NO_USER'] = 'Для цього користувача немає стрічки (немає початих тем)';

View file

@ -353,7 +353,7 @@ elseif ( ($submit || $confirm) && !$topic_has_new_posts )
$return_message = ''; $return_message = '';
$return_meta = ''; $return_meta = '';
switch ( $mode ) switch ($mode)
{ {
case 'editpost': case 'editpost':
case 'newtopic': case 'newtopic':
@ -444,6 +444,9 @@ elseif ( ($submit || $confirm) && !$topic_has_new_posts )
} }
} }
// Update atom feed
update_atom('topic', $topic_id);
if ($mode == 'reply' && $post_info['topic_status'] == TOPIC_LOCKED) if ($mode == 'reply' && $post_info['topic_status'] == TOPIC_LOCKED)
{ {
$locked_warn = ' $locked_warn = '

View file

@ -732,6 +732,8 @@ td.last_td { border-right-width: 0 !important; }
#online_explain { float: right; } #online_explain { float: right; }
#online_userlist a { white-space: nowrap; } #online_userlist a { white-space: nowrap; }
#forums_top_nav { display: none; } #forums_top_nav { display: none; }
.f-map-wrap { margin-top: -1px; border: 1px solid #DEDEDE; }
/* ---------------------------------- * /* ---------------------------------- *
Forums on viewforum page Forums on viewforum page
* ---------------------------------- */ * ---------------------------------- */

Binary file not shown.

After

Width:  |  Height:  |  Size: 520 B

View file

@ -12,10 +12,10 @@
<!-- IF LOGGED_IN --> <!-- IF LOGGED_IN -->
<div id="forums_top_links"> <div id="forums_top_links">
<div class="floatL"> <div class="floatL">
<a href="{U_SEARCH_NEW}" class="med">{L_SEARCH_NEW}</a> &#0183;
<a href="{U_SEARCH_SELF_BY_LAST}" class="med">{L_SEARCH_SELF}</a> <a href="#search-my-posts" class="menu-root menu-alt1">{OPEN_MENU_IMG_ALT1}</a> &#0183;
<a href="{U_SEARCH_LATEST}" class="med">{L_SEARCH_LATEST}</a> &#0183; <a href="{U_SEARCH_LATEST}" class="med">{L_SEARCH_LATEST}</a> &#0183;
<a href="{U_INDEX}?map=1" class="med bold">{L_FORUM_MAP}</a> <a href="{U_SEARCH_SELF_BY_LAST}" class="med">{L_SEARCH_SELF}</a> <a href="#search-my-posts" class="menu-root menu-alt1">{OPEN_MENU_IMG_ALT}</a> &#0183;
<a href="{SITE_URL}atom/f/0.atom" class="med">{FEED_IMG} {L_LATEST_RELEASES}</a> &#0183;
<a href="{U_INDEX}?map=1" class="med bold">{FEED_IMG} {L_FORUM_MAP}</a>
</div> </div>
<div class="floatR med bold"> <div class="floatR med bold">
<a class="menu-root" href="#only-new-options">{L_DISPLAYING_OPTIONS}</a> <a class="menu-root" href="#only-new-options">{L_DISPLAYING_OPTIONS}</a>
@ -154,6 +154,7 @@
<!-- IF LOGGED_IN and SHOW_FORUMS --> <!-- IF LOGGED_IN and SHOW_FORUMS -->
<div id="mark_all_forums_read"> <div id="mark_all_forums_read">
<a href="{U_SEARCH_NEW}" class="med">{L_SEARCH_NEW}</a> &#0183;
<a href="{U_INDEX}" class="med" onclick="setCookie('{COOKIE_MARK}', 'all_forums');">{L_MARK_ALL_FORUMS_READ}</a> <a href="{U_INDEX}" class="med" onclick="setCookie('{COOKIE_MARK}', 'all_forums');">{L_MARK_ALL_FORUMS_READ}</a>
</div> </div>
<!-- ENDIF --> <!-- ENDIF -->

View file

@ -1,15 +1,16 @@
<style type="text/css"> <style type="text/css">
#f-map a { font-size: 12px; text-decoration: none; } #f-map a { font-size: 12px; text-decoration: none; padding-left: 8px; }
#f-map li { margin: 4px 0 0 6px; } #f-map li { margin: 4px 0 0 6px; }
#f-map .b { font-weight: bold; } #f-map .b { font-weight: bold; }
ul.tree-root { margin-left: 0; } ul.tree-root { margin-left: 0; }
ul.tree-root ul > li { list-style: disc; } ul.tree-root > li > ul { margin-left: 0; }
ul.tree-root ul ul > li { list-style: circle; } ul.tree-root li { list-style: none; }
ul.tree-root > li { list-style: none !important; padding: 0; margin-left: 0 !important; } ul.tree-root > li { padding: 0; margin-left: 0 !important; }
.c_title { .c_title {
display: block; margin: 9px 0; padding: 0 0 5px 3px; border-bottom: 1px solid #B7C0C5; display: block; margin: 9px 0; padding: 0 0 5px 5px; border-bottom: 1px solid #B7C0C5;
color: #800000; font-size: 13px; font-weight: bold; letter-spacing: 1px; color: #800000; font-size: 13px; font-weight: bold; letter-spacing: 1px;
} }
ul.tree-root img { cursor: pointer; }
a.hl, a.hl:visited { color: #1515FF; } a.hl, a.hl:visited { color: #1515FF; }
</style> </style>
@ -26,6 +27,11 @@ function qs_highlight_found ()
a.className = ''; a.className = '';
} }
} }
function open_feed (f_id)
{
$('#feed-id').val(f_id);
$('#feed-form').submit();
}
$(function(){ $(function(){
$('#q-search').focus().quicksearch('#f-map li', { $('#q-search').focus().quicksearch('#f-map li', {
delay : 300, delay : 300,
@ -33,17 +39,27 @@ $(function(){
show : qs_highlight_found, show : qs_highlight_found,
onAfter : function(){ $('#f-load').hide(); $('#f-map').show(); } onAfter : function(){ $('#f-load').hide(); $('#f-map').show(); }
}); });
$.each($('#f-map a'), function(i,a){ $.each($('#f-map a'), function(i,a) {
$(a).attr('href', 'viewforum.php?f='+ $(a).attr('href')); var f_id = $(a).attr('href');
$(a)
.attr('href', 'viewforum.php?f='+ f_id)
.before('<img class="feed-small" src="{IMG}feed.png" alt="feed" onclick="open_feed('+ f_id +')">')
;
}); });
$.each($('span.c_title'), function(i,el){ $.each($('span.c_title'), function(i,el) {
$(el).text( this.title ); $(el).text( this.title );
this.title = ''; this.title = '';
}); });
}); });
</script> </script>
<div class="row1 pad_8 border bw_TRBL" style="margin-top: 4px;"> <form id="feed-form" method="post" action="feed.php" target="_blank" style="display: none;">
<input type="hidden" name="mode" value="get_feed_url">
<input type="hidden" name="type" value="f">
<input id="feed-id" type="hidden" name="id" value="">
</form>
<div class="f-map-wrap row1 pad_8">
<div style="margin: 20px 56px;"> <div style="margin: 20px 56px;">
<div style="padding: 0 0 12px 3px;"> <div style="padding: 0 0 12px 3px;">
<form autocomplete="off"> <form autocomplete="off">
@ -55,20 +71,29 @@ $(function(){
<div id="f-map" style="display: none;"> <div id="f-map" style="display: none;">
<!-- BEGIN c --> <!-- BEGIN c -->
<ul class="tree-root"> <ul class="tree-root">
<li><span class="b"><span class="c_title" title="{c.CAT_TITLE}" name="{c.CAT_TITLE}"></span></span> <li>
<!-- BEGIN f --> <span class="b">
<ul> <span class="c_title" title="{c.CAT_TITLE}"></span>
<li><span class="b"><a href="{c.f.FORUM_ID}">{c.f.FORUM_NAME}</a></span> </span>
<!-- IF c.f.LAST_SF_ID --> <!-- BEGIN f -->
<ul> <ul>
<!-- BEGIN sf --> <li>
<li><span><a href="{c.f.sf.SF_ID}">{c.f.sf.SF_NAME}</a></span></li> <span class="b">
<!-- END sf --> <a href="{c.f.FORUM_ID}">{c.f.FORUM_NAME}</a>
</ul> </span>
<!-- ENDIF --> <!-- IF c.f.LAST_SF_ID -->
</li> <ul>
</ul> <!-- BEGIN sf -->
<!-- END f --> <li>
<span><a href="{c.f.sf.SF_ID}">{c.f.sf.SF_NAME}</a></span>
</li>
<!-- END sf -->
</ul>
<!-- ENDIF -->
</li>
</ul>
<!-- END f -->
</li>
</ul> </ul>
<!-- END c --> <!-- END c -->
</div> </div>

View file

@ -61,7 +61,7 @@ $images['folder_dl_hot_new'] = $_main .'folder_dl_hot_new.gif';
// attach_icons // attach_icons
$images['icon_clip'] = $_img .'icon_clip.gif'; $images['icon_clip'] = $_img .'icon_clip.gif';
$images['icon_dn'] = $_img .'icon_dn.gif'; $images['icon_dn'] = $_img .'icon_dn.gif';
$images['icon_magnet'] = $_img .'magnet.png'; $images['icon_magnet'] = $_img .'magnet.png';
// posting_icons // posting_icons
$images['post_new'] = $_lang .'post.gif'; $images['post_new'] = $_lang .'post.gif';
@ -100,7 +100,7 @@ $images['voting_graphic'][1] = $_main .'voting_bar.gif';
$images['voting_graphic'][2] = $_main .'voting_bar.gif'; $images['voting_graphic'][2] = $_main .'voting_bar.gif';
$images['voting_graphic'][3] = $_main .'voting_bar.gif'; $images['voting_graphic'][3] = $_main .'voting_bar.gif';
$images['voting_graphic'][4] = $_main .'voting_bar.gif'; $images['voting_graphic'][4] = $_main .'voting_bar.gif';
$images['progress_bar'] = $_main .'progress_bar.gif'; $images['progress_bar'] = $_main .'progress_bar.gif';
$images['progress_bar_full'] = $_main .'progress_bar_full.gif'; $images['progress_bar_full'] = $_main .'progress_bar_full.gif';
// Report // Report
@ -120,20 +120,16 @@ $bb_cfg['post_img_width_decr'] = 52; // decrement for posted images width
$bb_cfg['attach_img_width_decr'] = 130; // decrement for attach images width (px) $bb_cfg['attach_img_width_decr'] = 130; // decrement for attach images width (px)
$template->assign_vars(array( $template->assign_vars(array(
'IMG' => $_main, 'IMG' => $_main,
'TEXT_BUTTONS' => $bb_cfg['text_buttons'],
'TEXT_BUTTONS' => $bb_cfg['text_buttons'], 'POST_BTN_SPACER' => ($bb_cfg['text_buttons']) ? '&nbsp;' : '',
'POST_BTN_SPACER' => ($bb_cfg['text_buttons']) ? '&nbsp;' : '', 'TOPIC_ATTACH_ICON' => '<img src="images/icon_clip.gif" alt="" />',
'TOPIC_ATTACH_ICON' => '<img src="images/icon_clip.gif" alt="" />', 'OPEN_MENU_IMG_ALT' => '<img src="'. $_main .'menu_open_1.gif" class="menu-alt1" alt="" />',
'ATTACHMENT_ICON' => '<img src="images/icon_clip.gif" alt="" />', 'TOPIC_LEFT_COL_SPACER_WITDH' => $bb_cfg['topic_left_column_witdh'] - 8, // 8px padding
'OPEN_MENU_IMG_ALT1' => '<img src="'. $_main .'menu_open_1.gif" class="menu-alt1" alt="" />',
'TOPIC_LEFT_COL_SPACER_WITDH' => $bb_cfg['topic_left_column_witdh'] - 8, // 8px padding
// Images auto-resize
'POST_IMG_WIDTH_DECR_JS' => $bb_cfg['topic_left_column_witdh'] + $bb_cfg['post_img_width_decr'], 'POST_IMG_WIDTH_DECR_JS' => $bb_cfg['topic_left_column_witdh'] + $bb_cfg['post_img_width_decr'],
'ATTACH_IMG_WIDTH_DECR_JS' => $bb_cfg['topic_left_column_witdh'] + $bb_cfg['attach_img_width_decr'], 'ATTACH_IMG_WIDTH_DECR_JS' => $bb_cfg['topic_left_column_witdh'] + $bb_cfg['attach_img_width_decr'],
'MAGNET_LINKS' => $bb_cfg['magnet_links_enabled'],
'MAGNET_LINKS' => $bb_cfg['magnet_links_enabled'], 'FEED_IMG' => '<img src="'. $_main .'feed.png" class="feed-small" alt="'. $lang['ATOM_FEED'] .'" />',
)); ));
// post_buttons // post_buttons

View file

@ -365,8 +365,9 @@ ajax.callback.gen_passkey = function(data){
<b>{POSTS}</b> <b>{POSTS}</b>
[ <a href="{U_SEARCH_USER}" class="med">{L_SEARCH_USER_POSTS}</a> ] [ <a href="{U_SEARCH_USER}" class="med">{L_SEARCH_USER_POSTS}</a> ]
[ <a href="{U_SEARCH_TOPICS}" class="med">{L_SEARCH_USER_TOPICS}</a> ] [ <a href="{U_SEARCH_TOPICS}" class="med">{L_SEARCH_USER_TOPICS}</a> ]
[ <a class="med" href="{U_SEARCH_RELEASES}">{L_SEARCH_RELEASES}</a> ] [ <a href="{U_SEARCH_RELEASES}" class="med">{L_SEARCH_RELEASES}</a> ]
<!-- IF PROFILE_USER -->[ <a class="med" href="{U_WATCHED_TOPICS}">{L_WATCHED_TOPICS}</a> ]<!-- ENDIF --> <!-- IF PROFILE_USER -->[ <a href="{U_WATCHED_TOPICS}" class="med">{L_WATCHED_TOPICS}</a> ]<!-- ENDIF -->
[ <a title="{L_ATOM_SUBSCRIBE}" href="#" onclick="return post2url('feed.php', {mode: 'get_feed_url', type: 'u', id: {PROFILE_USER_ID}})">{FEED_IMG}</a> ]
</p> </p>
</td> </td>
</tr> </tr>

View file

@ -5,7 +5,6 @@
<!-- IF HIDE_POST_IMG -->img.postImg, div.postImg-wrap { display: none; }<!-- ENDIF --> <!-- IF HIDE_POST_IMG -->img.postImg, div.postImg-wrap { display: none; }<!-- ENDIF -->
<!-- IF HIDE_SMILE -->.smile { display: none; }<!-- ENDIF --> <!-- IF HIDE_SMILE -->.smile { display: none; }<!-- ENDIF -->
<!-- IF HIDE_SIGNATURE -->.signature { display: none; }<!-- ENDIF --> <!-- IF HIDE_SIGNATURE -->.signature { display: none; }<!-- ENDIF -->
</style> </style>
<!-- IF SPOILER_OPENED --> <!-- IF SPOILER_OPENED -->
<script type="text/javascript"> <script type="text/javascript">
@ -19,7 +18,7 @@
ajax.open_edit = false; ajax.open_edit = false;
function edit_post(post_id, type, text) { function edit_post(post_id, type, text) {
if(ajax.open_edit && ajax.open_edit != post_id) { if(ajax.open_edit && ajax.open_edit != post_id) {
alert('{L_AJAX_EDIT_OPEN}'); alert('{L_AJAX_EDIT_OPEN}');
} else{ } else{
if(ajax.open_edit && !text){ if(ajax.open_edit && !text){
$('#pp_'+ post_id).show(); $('#pp_'+ post_id).show();
@ -27,12 +26,12 @@ function edit_post(post_id, type, text) {
} else{ } else{
$('#pp_'+ post_id).hide(); $('#pp_'+ post_id).hide();
$('#pe_'+ post_id).show(); $('#pe_'+ post_id).show();
ajax.exec({ ajax.exec({
action : 'posts', action : 'posts',
post_id : post_id, post_id : post_id,
text : text, topic_id : {TOPIC_ID},
type : type text : text,
type : type
}); });
} }
ajax.open_edit = false; ajax.open_edit = false;
@ -199,7 +198,6 @@ function poll_manage (mode, confirm_msg)
$('#poll-submit-btn').click(); $('#poll-submit-btn').click();
return false; return false;
} }
function build_poll_add_form (src_el) function build_poll_add_form (src_el)
{ {
$('#poll').empty().append( $('#poll-edit-tpl').contents() ).show(); $('#poll').empty().append( $('#poll-edit-tpl').contents() ).show();
@ -237,7 +235,6 @@ function build_poll_add_form (src_el)
<table cellspacing="0" cellpadding="0" class="borderless w100"> <table cellspacing="0" cellpadding="0" class="borderless w100">
<tr> <tr>
<!-- IF AUTH_MOD --> <!-- IF AUTH_MOD -->
<td class="small bold nowrap" style="padding: 0 0 0 4px;"> <td class="small bold nowrap" style="padding: 0 0 0 4px;">
<!-- IF IN_MODERATION -->{L_MODERATE_TOPIC}<!-- ELSE --><a href="{PAGE_URL}&amp;mod=1&amp;start={PAGE_START}" class="small bold">{L_MODERATE_TOPIC}</a><!-- ENDIF --> <!-- IF IN_MODERATION -->{L_MODERATE_TOPIC}<!-- ELSE --><a href="{PAGE_URL}&amp;mod=1&amp;start={PAGE_START}" class="small bold">{L_MODERATE_TOPIC}</a><!-- ENDIF -->
@ -393,7 +390,7 @@ function build_poll_add_form (src_el)
<!-- IF postrow.IS_FIRST_POST and CAN_ADD_POLL --><a href="#" onclick="return build_poll_add_form(this);" class="txtb">{POLL_IMG}</a><!-- ENDIF --> <!-- IF postrow.IS_FIRST_POST and CAN_ADD_POLL --><a href="#" onclick="return build_poll_add_form(this);" class="txtb">{POLL_IMG}</a><!-- ENDIF -->
<!-- IF postrow.QUOTE --><a class="txtb" href="<!-- IF $bb_cfg['use_ajax_posts'] -->" onclick="ajax.exec({ action: 'posts', post_id: {postrow.POST_ID}, type: 'reply'}); return false;<!-- ELSE -->{QUOTE_URL}{postrow.POST_ID}<!-- ENDIF -->">{QUOTE_IMG}</a>{POST_BTN_SPACER}<!-- ENDIF --> <!-- IF postrow.QUOTE --><a class="txtb" href="<!-- IF $bb_cfg['use_ajax_posts'] -->" onclick="ajax.exec({ action: 'posts', post_id: {postrow.POST_ID}, type: 'reply'}); return false;<!-- ELSE -->{QUOTE_URL}{postrow.POST_ID}<!-- ENDIF -->">{QUOTE_IMG}</a>{POST_BTN_SPACER}<!-- ENDIF -->
<!-- IF postrow.EDIT --><a class="txtb" href="<!-- IF $bb_cfg['use_ajax_posts'] -->" onclick="edit_post({postrow.POST_ID}, 'edit'); return false;<!-- ELSE -->{EDIT_POST_URL}{postrow.POST_ID}<!-- ENDIF -->">{EDIT_POST_IMG}</a>{POST_BTN_SPACER}<!-- ENDIF --> <!-- IF postrow.EDIT --><a class="txtb" href="<!-- IF $bb_cfg['use_ajax_posts'] -->" onclick="edit_post({postrow.POST_ID}, 'edit'); return false;<!-- ELSE -->{EDIT_POST_URL}{postrow.POST_ID}<!-- ENDIF -->">{EDIT_POST_IMG}</a>{POST_BTN_SPACER}<!-- ENDIF -->
<!-- IF postrow.DELETE --><a class="txtb" href="<!-- IF $bb_cfg['use_ajax_posts'] -->" onclick="ajax.exec({ action: 'posts', post_id: {postrow.POST_ID}, type: 'delete'}); return false;<!-- ELSE -->{DELETE_POST_URL}{postrow.POST_ID}<!-- ENDIF -->">{DELETE_POST_IMG}</a>{POST_BTN_SPACER}<!-- ENDIF --> <!-- IF postrow.DELETE --><a class="txtb" href="<!-- IF $bb_cfg['use_ajax_posts'] -->" onclick="ajax.exec({ action: 'posts', post_id: {postrow.POST_ID}, topic_id : {TOPIC_ID}, type: 'delete'}); return false;<!-- ELSE -->{DELETE_POST_URL}{postrow.POST_ID}<!-- ENDIF -->">{DELETE_POST_IMG}</a>{POST_BTN_SPACER}<!-- ENDIF -->
<!-- IF postrow.IP --><a class="txtb" href="{IP_POST_URL}{postrow.POST_ID}&amp;t={TOPIC_ID}">{IP_POST_IMG}</a>{POST_BTN_SPACER}<!-- ENDIF --> <!-- IF postrow.IP --><a class="txtb" href="{IP_POST_URL}{postrow.POST_ID}&amp;t={TOPIC_ID}">{IP_POST_IMG}</a>{POST_BTN_SPACER}<!-- ENDIF -->
<!-- IF postrow.REPORT -->{postrow.REPORT}{POST_BTN_SPACER}<!-- ENDIF --> <!-- IF postrow.REPORT -->{postrow.REPORT}{POST_BTN_SPACER}<!-- ENDIF -->
<!-- IF AUTH_MOD --> <!-- IF AUTH_MOD -->

View file

@ -4,7 +4,7 @@
<!-- BEGIN denyrow --> <!-- BEGIN denyrow -->
<fieldset class="attach"> <fieldset class="attach">
<legend>{ATTACHMENT_ICON} {L_ATTACHMENT}</legend> <legend>{TOPIC_ATTACH_ICON} {L_ATTACHMENT}</legend>
<p class="attach_link denied">{postrow.attach.denyrow.L_DENIED}</p> <p class="attach_link denied">{postrow.attach.denyrow.L_DENIED}</p>
</fieldset> </fieldset>
@ -13,7 +13,7 @@
<!-- BEGIN cat_images --> <!-- BEGIN cat_images -->
<fieldset class="attach"> <fieldset class="attach">
<legend>{ATTACHMENT_ICON} {L_ATTACHMENT} ({postrow.attach.cat_images.FILESIZE})</legend> <legend>{TOPIC_ATTACH_ICON} {L_ATTACHMENT} ({postrow.attach.cat_images.FILESIZE})</legend>
<p class="tCenter pad_6"> <p class="tCenter pad_6">
<img src="{postrow.attach.cat_images.IMG_SRC}" id="attachImg" class="postImg" alt="img" border="0" /> <img src="{postrow.attach.cat_images.IMG_SRC}" id="attachImg" class="postImg" alt="img" border="0" />
</p> </p>
@ -29,7 +29,7 @@
<!-- BEGIN cat_thumb_images --> <!-- BEGIN cat_thumb_images -->
<fieldset class="attach"> <fieldset class="attach">
<legend>{ATTACHMENT_ICON} {L_ATTACHMENT_THUMBNAIL}</legend> <legend>{TOPIC_ATTACH_ICON} {L_ATTACHMENT_THUMBNAIL}</legend>
<p class="attach_link"> <p class="attach_link">
<a href="{postrow.attach.cat_thumb_images.IMG_SRC}" target="_blank"><img src="{postrow.attach.cat_thumb_images.IMG_THUMB_SRC}" alt="{postrow.attach.cat_thumb_images.DOWNLOAD_NAME}" border="0" /></a> <a href="{postrow.attach.cat_thumb_images.IMG_SRC}" target="_blank"><img src="{postrow.attach.cat_thumb_images.IMG_THUMB_SRC}" alt="{postrow.attach.cat_thumb_images.DOWNLOAD_NAME}" border="0" /></a>
</p> </p>