Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[RC] Glance v.2

Здесь авторы постили бета-версии своих модификаций для phpBB 2.0.x. Внимание! Не устанавливайте бета-версии модов на работающие форумы!
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 19 лет 11 месяцев
Откуда: Estonia, Tallinn

Сообщение Vladson »

Т.е. стоит вообще отказаться от идеи отслеживания прочитанных-непрочитанных тем,
Я в этом не уверен, но многие жалуются на различные глюки связанные с этим

(отслеживание можно и оставить, для выделения цветом, а вот ссылки сделать только на последний, и на первый пост - ЭТО ИСКЛЮЧИТЕЛЬНО ИМХО)
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Алгоритм отслеживания по сравнению с первой версией я изменил... должно работать по-человечески... Хотя может и глючить :(
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
4upuk

Сообщение 4upuk »

Xpert
И ещё...

Заметил, что в этой версии нет ограничения длинны названия темы

Код: Выделить всё

$max_topic_length = 50; 

Она нужна и неплохо бы её тоже закинуть в админ панель :)
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

4upuk
Камень с души прямо...
Ссылку на последний пост сейчас добавлю.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 19 лет 11 месяцев
Откуда: Estonia, Tallinn

Сообщение Vladson »

Что касается темплейта, то 702 байта (в варианте 2.0.1 http://vladson.heatpc.com/glance_body.tpl.bz2 ) против ваших 948 причём с нерезанными кавычками
(если хоть в одном месте кавычки вырезать, то форум не проходит валидацию W3C HTML 4.01 Transitional)
Последний раз редактировалось Vladson 14.11.2004 21:57, всего редактировалось 1 раз.
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

Ясно, изучим и используем по прямому назначению.
Пока предлагаю всем желающим опробовать вот такой вариант: http://www.phpbbguru.net/beta/glance/glance_2.0.1.zip (просто замените соответствующие файлы).
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
4upuk

Сообщение 4upuk »

Vladson
а у меня 683 :)

Код: Выделить всё

<table width="100%" cellpadding="4" cellspacing="1" class="forumline">
<tr>
 <th height="25" class="thTop">{ANNO_TITLE}</th>
 <th width="47%" height="25" class="thTop">{RECENT_TITLE}</th>
</tr>
<tr>
 <td valign="top" class="row1"><span class="genmed">{ANNO_TEXT}</span></td>
 <td width="47%" valign="top" class="row1">
  <table width="100%" cellspacing="0" cellpadding="0">
    <!-- BEGIN recent -->
    <tr>
      <td align="center" class="genmed" valign="top">{recent.BULLET}&nbsp;</td>
      <td valign="top" width="100%"><a href="{recent.TOPIC_LINK}" class="genmed">{recent.TOPIC_TITLE}</a></td>
    </tr>
    <!-- END recent -->
  </table></td>
</tr>
</table>
Аватара пользователя
Vladson
Former team member
Сообщения: 816
Стаж: 19 лет 11 месяцев
Откуда: Estonia, Tallinn

Сообщение Vladson »

Не могу проверить, у меня это запланировано на потом, но судя по tpl файлу если всё работает так как должно то это очень даже близко к тому как мне кажется правильным

(далее мысли в слух)
А вот идею на счет раздувания в мега-пупер мод на сто мегабайт забрасывать думаю не стоит...
(это я про центр управления глансом в админке, с кучей настроек)

Добавлено спустя 16 минут 37 секунд:

4upuk
Я для одного форума напишу полностью видоизменённую, ожидаю менее 600, но под стандартный скин она не особо пойдёт, будут глюки
Вот если твоя под стандартным скином пашет нормально, а главное выглядит хорошо то тогда
Серый цвет - светлый (светлее чёрного), но он и тёмный (темнее белого), он же промежуточный (между чёрным и белым). Теорию относительности никто не отменял. Истина в целом - понятие виртуально-ситуативное.
4upuk

Сообщение 4upuk »

Vladson
Вот если твоя под стандартным скином пашет нормально, а главное выглядит хорошо
Даже не знаю.. под полноэкранку 1024 не оч выглядеть она будет, по-моему.
Хотя с версией 2.0.1 + если объявления достаточно объёмные, смотреться будет нормально, наверное. :)

Xpert
Пока предлагаю всем желающим опробовать вот такой вариант: http://www.phpbbguru.net/beta/glance/glance_2.0.1.zip
Вот это то что дктор прописал! :D
Классно! Только вот цифры в скобках в конце ссылок мне кажется не самым удачным решением. Потому как расположены в разнобой и панель смотриться как-то хаотично.
Я поставил номер постов перед ссылкой на последний пост, к тому же это его номер.
4upuk

Сообщение 4upuk »

Вобщем сделал как хотел, оптимизировал. В екслорере и в опере показывает как надо, одинаково, на других не смотрел.
Это темплейт моей шкуры под glance_2.0.1. Сделан под форум с шириной 800, но впринципе он универсальный.
Чтобы не мучиться с разницей высот я просто объединил "Объявления" и "Последние темы" в один тейбл. У меня смотриться нормально, но под полноэкранные 1024 форумы может смотреться похуже, хотя это на любителя.

Код: Выделить всё

<table width="100%" cellpadding="4" cellspacing="1" class="forumline">
<tr>
	<th height="25" class="thTop">{ANNO_TITLE}</th>
	<th width="57%" class="thTop">{RECENT_TITLE}</th>
</tr>
<tr>
	<td valign="top" class="row1"><span class="genmed">{ANNO_TEXT}</span></td>
	<td valign="top" class="row1">
	<table width="100%" cellspacing="0" valign="top"  class="genmed" cellpadding="0">
	<!-- BEGIN recent -->
	<tr>
		<td align="right">{recent.TOPIC_REPLIES}&nbsp;</td>
		<td>{recent.LAST_POST} <a href="{recent.TOPIC_LINK}">{recent.TOPIC_TITLE}</a></td>
	</tr>
	<!-- END recent -->
	</table></td>
</tr>
</table>
С моей таблицей css выглядит это так:

Изображение

Vladson 624 кб :wink:

Добавлено спустя 26 минут 38 секунд:

И ещё...
Заметил, что у иконки последнего сообщения всплывющая подсказка aka ALT "Посмотреть последнее сообщеие"
При простом просмотре её не видно, но она дублируется для каждоё темы. Имхо это расточительно.

В lang_main.php заменил

Код: Выделить всё

$lang['View_latest_post'] = 'Посмотреть последнее сообщение';
на

Код: Выделить всё

$lang['View_latest_post'] = 'Последнее сообщение';
Сэкономил 0.6кб :D Смылс, имхо, такой же.

В итоге, после всех оптимизаций, код главной страницы уменьшился с 26кб до 23кб. Без гланса 18кб.
Мне кажется это стоит того :)

Добавлено спустя 1 час 42 минуты 51 секунду:

Xpert
Так теперь назваине темы - всегда ссылка на её начало??? :?
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

4upuk
Это не теперь, это тестовая версия. Сам же недавно говорил, что глюки с этим бывают.
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
4upuk

Сообщение 4upuk »

не удобно это, привык уже :(

Добавлено спустя 1 минуту 4 секунды:

а можно, чтобы без глюков и как раньше? :D

Добавлено спустя 1 минуту 5 секунд:

Кстати, что там с контролем числа символов в названии темы? Будет?
А то мне всю "малину" портят длинные названия :(
4upuk

Сообщение 4upuk »

Xpert
Сделай, пожалуйста, чтобы опять название темы было ссылкой на последний пост.

народ жалуется. :(

Добавлено спустя 52 секунды:

а так ссылка - стрелка и номера прижились вроде :)

Добавлено спустя 1 час 29 минут 17 секунд:

хотя не надо... я уже сам переделал :)

Добавлено спустя 1 час 22 минуты 54 секунды:

Я тут уже, наверное, надоел всем своими постами :) но всё же расскажу. Закончил я с глансом2.

Как показала практика юзанья гланса1 (около месяца) у него бывают проблемы с отображением тем, на которые даны новые ответы. Порой, вместо последнего сообщения темы, выскакивала табличка "в теме нет новых сообщений" Что на самом деле не являлось правдой. Владельцев модемов, и меня в том числе, это очень бесило. Почему? Да потому, что в Нет выходишь на чуть-чуть, нажимаешь на кучу ссылок, ждёшь пока закачаются и быстро убегаешь в оффлайн. А потом, в оффлайне уже видишь, что оказывается "в теме нет новых сообщений" :evil: Какая разница! Нет? ... ну и ладно, покажи последнее, зачем смотреть на эту табличку???
Вобщем это до сих пор меня бесит на овере.

Версия 2.0.0 обладала тем же "глюком".
В 2.0.1, уважаемый Xpert, по просьбам трудящихся устранил эту неприятность. Но теперь название темы - ссылка на первый пост в теме. Рядом значок с ссылкой на последний пост, при этом он ещё является индикатором, отображающим появление новых постов в теме.
Вроде бы то что надо.. но...
Но практика показала (2 дней хватило :) ), что народ уже привык, что название темы - ссылка на новый пост, а не на начало темы. Поступили жалобы на этот счёт, что, дескать, не удобно. И правда.
Хочется спроисть, зачем перемещать пользователя на начало темы? Даже в гланесе 1 версии? Это же неудобно! В панели находяться последние обсуждаемые темы, логично, что народ следит именно за последними топиками, зачем им начало темы?

Я немного изменил мод версии 2.0.1, сделав так, чтобы название темы было ссылкой по принципу первого гланса. Т.е. если есть новые сообщения - название - ссылка на новое сообщение; если не новых сообщений, то названание - ссылка на начало темы. Вроде работает как старый, при этом есть новые функции (правда и старые проблемы есть :( )
Объяснение принципов работы мода для юзеров у меня получилось такое
Обновлённая панель "Последние обсуждаемые темы"
Число - кол-во сообщений в теме, номер последнего. Стрелочка с листочком - ссылка на последнее сообщение в теме. Если листочек оранжевый - есть непрочитанные сообщения в теме, название темы в таком случае - ссылка на последнее сообщение темы. Если листочек белый - в теме нет непрочитанных сообщений, а название темы - ссылка на начало темы.
Это тестовая версия.
Убедительная просьба сообщать любых глюках
Мне показалось слишком заутанным, просто жуть :D
Конечно, я коряво написал, но всё же.

Вобщем меня всё это достало основательно :)

И я сделал так:

За основу бала взята версия 2.0.0.
Название темы сделално ссылкой на последний пост в теме, независимо от того, есть ли там новые сообщения или нет. При этом используется конкретный номер поста, а не "приписка" к адресу темы - "&view=newest", именно такая запись адреса последнего поста в теме и приводила, иногда, к появлению "в теме нет новых сообщений". Тем самым избавились от этого редгого неприятного "глюка" +, как я уже говорил выше, при отсутствии новых сообщений, не кидает в ненужное начало темы. Код ссылки был взят из версии 2.0.1
Из версии 2.0.1 было взято, на мой взгляд нужное, отображение, напротив темы, кол-ва постов. Код этой фичи из версии 2.0.1.

Для этого пришлось немного переделать темплейт. Не буду конкретно указывать что именно сделал, но замечу, что код, как самоого темплейта, так и генерируемого HTML, уменьшился, по сравнению с версией 2.0.1 прилично.

В конце привожу код теплейта и самого гланса.

glance_body.tpl

Код: Выделить всё

<table width="100%" cellpadding="4" cellspacing="1" class="forumline">
<tr>
	<th height="25" class="thTop">{ANNO_TITLE}</th>
	<th width="47%" class="thTop">{RECENT_TITLE}</th>
</tr>
<tr>
	<td class="row1"><span class="genmed">{ANNO_TEXT}</span></td>
	<td class="row1">
	<table width="100%" cellspacing="0" valign="top"  class="genmed" cellpadding="0">
	<!-- BEGIN recent -->
	<tr>
		<td>{recent.BULLET} <a href="{recent.TOPIC_LINK}">{recent.TOPIC_TITLE}</a></td>
		<td align="right">{recent.TOPIC_REPLIES}</td>
	</tr>
	<!-- END recent -->
	</table></td>
</tr>
</table>
glance.php

Код: Выделить всё

<?php
/***************************************************************************
 *                              glance.php
 *                            -------------------
 *   begin                : Monday, Jun 14, 2004
 *   copyright            : Xpert
 *   contact              : www.phpbbguru.net, xpert@phpbbguru.net
 *   version              : 2.0.0
 *
 *   $Id: glance.php,v 1.0.0 2004/11/13 23:54 xpert Exp $
 *
 ***************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 ***************************************************************************/

/* Settings */

// Max number symbols in topic title
$max_topic_length = 45; 

// No new posts bullet; can also be an image
$recent_bullet_old = '<span style="font-weight: bold;">&#155;&#155;</span>';

// New posts bullet; can also be an image
$recent_bullet_new = '<span style="font-weight: bold; color:#FFA34F;">&#155;&#155;</span>';

/* End of settings section */

if ( !defined('IN_PHPBB') )
{
   die("Hacking attempt");
}

// Getting basic data
$recent_nm = intval($board_config['glance_recent']);
$user_lastvisit = $userdata['user_lastvisit'];

// Define censored word matches
$orig_word = array();
$replacement_word = array();
obtain_word_list($orig_word, $replacement_word);

// Auth check
$is_auth = array();
$is_auth = auth(AUTH_VIEW, AUTH_LIST_ALL, $userdata);

$unauthed = '0';

while ( list($forum_id, $auth_mode) = each($is_auth) )
{
	if ( !$auth_mode['auth_view'] )
	{
		$unauthed .= ',' . $forum_id;
	}
}

// Getting recent topics
$sql = "SELECT t.topic_id, t.topic_title, p.post_time, t.topic_last_post_id, t.topic_replies
	FROM " . TOPICS_TABLE . " AS t, " . POSTS_TABLE . " AS p
      WHERE t.forum_id NOT IN (" . $unauthed . ")
		AND p.topic_id = t.topic_id
		AND p.post_id = t.topic_last_post_id
		AND t.topic_moved_id = 0
	ORDER BY p.post_time DESC
	LIMIT " . $recent_nm;

$result = $db->sql_query($sql) or message_die(GENERAL_ERROR, "Could not query recent topics information", "", __LINE__, __FILE__, $sql);

$latest_topics = array();
while ( $topic_row = $db->sql_fetchrow($result) )
{
        $topic_row['topic_title'] = ( count($orig_word) ) ? preg_replace($orig_word, $replacement_word, $topic_row['topic_title']) : $topic_row['topic_title'];
        $latest_topics[] = $topic_row;
}

$db->sql_freeresult($result);

// Template routines
$template->set_filenames(array(
        'glance_output' => 'glance_body.tpl')
);

for ( $i = 0; $i < count($latest_topics); $i++ )
{
	$unread_topic = false;
	$topic_id = $latest_topics[$i]['topic_id'];
					
	if ( $userdata['session_logged_in'] )
	{
		if ( $latest_topics[$i]['post_time'] > $user_lastvisit)
		{
			if( empty($tracking_topics[$topic_id]) || ($tracking_topics[$topic_id] < $latest_topics[$i]['post_time']) )
			{
					$unread_topic = true;
			}
		}
	}
	
    $latest_topics[$i]['topic_title'] = (strlen($latest_topics[$i]['topic_title']) > $max_topic_length) ? substr($latest_topics[$i]['topic_title'], 0, $max_topic_length) . '&hellip;' : $latest_topics[$i]['topic_title'];  
	$bullet = ( $unread_topic ) ? $recent_bullet_new : $recent_bullet_old;
	$topic_link = append_sid("viewtopic.$phpEx?"  . POST_POST_URL . '=' . $latest_topics[$i]['topic_last_post_id']) . '#' . $latest_topics[$i]['topic_last_post_id'];
	$template->assign_block_vars('recent', array(
		'BULLET' => $bullet,
		'TOPIC_LINK' => $topic_link,
		'TOPIC_TITLE' => $latest_topics[$i]['topic_title'],
		'TOPIC_REPLIES' => $latest_topics[$i]['topic_replies'])
	);
}

$template->assign_vars(array(
	'ANNO_TITLE' => $lang['Glance_anno'],
	'ANNO_TEXT' => $board_config['glance_anno'],
	'RECENT_TITLE' => $lang['Glance_recent'])
);

$template->assign_var_from_handle('GLANCE_OUTPUT', 'glance_output');

?>
Уж извиняйте за такой громоздкий пост, но прикрепять zip файл, который потом станет битой ссылкой я не считаю разумным.

Как всё это работает вы можите посмотреть на
http://dhost.info/omskteam/forum/

На мой взгляд самая практичная, простая и лёгая версия.
Правда отсутствие ограничения кол-ва символов названия отображаемой темы немного расстаривает, но думаю Xpert скоро добавит эту фичу :)

За сим откланиваюсь, надеюсь это вам пригодиться. 4upuk.

Добавлено спустя 21 минуту 45 секунд:

Vladson Да, кстати.
Пемплейт весит АЖ 559 байт :lol:
Последний раз редактировалось 4upuk 19.11.2004 18:17, всего редактировалось 1 раз.
Xpert
phpBB Guru
phpBB Guru
Сообщения: 5484
Стаж: 20 лет 1 месяц
Поблагодарили: 2 раза

Сообщение Xpert »

4upuk
Прямо кандидатская диссертация... 8)
Твой темплайт содержит одну ошибку - надо давать пользователю возможность изменить стиль ссылок, не редактируя код, ты эту возможность убил на корню. И нет смысла использовать &nbsp;, достаточно обычного пробела.

all
В общем, скоро еще обновление. Что будет:
1) Максимальное количество символов в названии - настраиваемое через ACP.
2) Если тема прочитана/непрочитана наверное ссылка на последнюю страницу обсуждения. Вообще по поводу состояния темы, их есть 3: не читал вообще, но есть сообщения с последнего прочтения; читал, но есть новые сообщения; читал, нет новых сообщений. Куда желаете чтобы ссылалось в каждом случае?

Обсудим?
Эксперт - это человек, который избегает мелких ошибок на пути к грандиозному провалу.
Любая более-менее сложная задача имеет несколько простых, изящных, лёгких для понимания неправильных решений
4upuk

Сообщение 4upuk »

Xpert
Старамся :D
Твой темплайт содержит одну ошибку - надо давать пользователю возможность изменить стиль ссылок, не редактируя код, ты эту возможность убил на корню. И нет смысла использовать &nbsp;, достаточно обычного пробела.
"Пользователю" это ты про админов? :) Гм... навероне ты прав, но я переделывал под себя, поэтому особо об этом не задумывался. Да и знаний у меня ещё оч мало, я смотрел на результат на своей шкуре.

Насчёт пробела - спасибо :)


По новому предложению я считаю так:
не читал вообще, но есть сообщения с последнего прочтения;
Гм.. вчитайся что написал. ;)
Правильная формулировка, имхо: "Не читал вообще".
Однозначно переход на начало темы. Думаю надо сделать, чтобы индикатор (галочка) напротив такой темы окрашивался в этом случае в зелёный цвет.
читал, но есть новые сообщения;
На последнее просмотренное в прошлый раз сообщение, используя адрес конкретного поста. Индикатор окрашивается в оранжевый цвет.
читал, нет новых сообщений.
На последнее сообщение в теме, используя адрес конкретного поста. Инликатор окрашивается в чёрный цвет.

Имхо это будет самый реальный вариант. - Идеальный :)
Я об этом-то как раз и думал, но сам реализовать подобное не смогу :(
Но вот как запомнить место (пост) на котором пользователь остановился в прошлый раз? Наверное надо поля ныве в базе... проблематично...

Вернуться в «Бета-версии модов для phpBB 2.0.x»