Быстрый лёгкий надёжный форумный движок
Вы не вошли.
Навеяно многочисленными вопросами и просьбами касаемо Службы личных сообщений в редакции нашего форума
Основано на оригинальном моде, добавлены фичи:
[listo]
[li] Управление службой из панели приватных сообщений[/li]
[li] Возможность использования поп-ап для оповещения[/li]
[li] Возможность отключить службу индивидуально[/li]
[li] Исправлена верстка[/li]
[li] Исправлен инсталлер[/li]
[li] Устранена мелкая дырка в защите[/li]
[/listo]
Какие еще особенности - не припомню.
Скачать: http://punbb.ru/downloads/PMS_Mod_hcs_edition.zip
Инструкция для новой установки внутри архива.
Особенности обновления с оригинального мода:
Специального инсталлера для апгрейда нет, правим бд ручками
добавляем в messages 1 поле и в users еще 2 поля:
ALTER TABLE messages ADD popup TINYINT DEFAULT '1'
ALTER TABLE users ADD popup_enable TINYINT DEFAULT '1'
ALTER TABLE users ADD messages_enable TINYINT DEFAULT '1'
Файлы из архива переписываем в форум, удаляем инсталлер и пользуемся.
Архив обновлен
Редактировался hcs (2008-01-11 20:36:05)
hcs
Я правильно понял - чтобы добавить только возможность отключать почту нужно добавить только это:
ALTER TABLE users ADD messages_enable TINYINT DEFAULT '1'
И загрузить файл message_list.php с небольшой добавкой ленгвиджа?
Т.е. всплывающее окно мне не нужно к примеру, только возможность отключать почту.
Не уверен что этого достаточно, гарантированно работать будет только если обновить все файлы и добавить все требуемые поля в таблицы. Можешь поэкспериментировать.
Получилось!
Но не сразу...
Нужно убрать из запроса в файле message_list.php:
$result = $db->query('SELECT popup_enable, messages_enable FROM '.$db->prefix.'users WHERE id='. $pun_user['id']) or error('Unable to fetch user info for Private Messsage options', __FILE__, __LINE__, $db->error());
вот эту строчку:
popup_enable,
т.е. вот так должно быть:
$result = $db->query('SELECT messages_enable FROM '.$db->prefix.'users WHERE id='. $pun_user['id']) or error('Unable to fetch user info for Private Messsage options', __FILE__, __LINE__, $db->error());
Это запрос вообще лишний.
Сделал ревизию, убраны лишние запросы, лишние переменные и лишние условия, архив обновлён.
ставил апдгрейдом, при отправке сообщения вылазил еррор на отсутствие popup в messages. переименовал popup_enable в popup и всё заработало.
мод понра, спасибо!
Редактировался ViK Mefisto (2007-02-03 16:47:04)
Спасибо, исправил.
А подойдет ли этот мод для стандартной (не UTF8) версии форума?
подойдет, только надо будет пересохранить русский языковой файл в win-1251
Большое спасибо, все работает.
hcs, а можно пожелания высказывать? твоя редакция - это только багфикс или будешь развивать мод?
хочется иметь дополнительные папки, как в почтовых клиентах, для раскладывания писем по темам.
Пожелания высказывать можно, если не я, то кто-то другой вполне возможно будет развивать.
Лично я бы сделал как тут ктото предлагал - переписку с одним из пользователей в виде топика...
Лично я бы сделал как тут ктото предлагал - переписку с одним из пользователей в виде топика...
хорошая мысль. готов проводить тест, если кто сделает)
Редактировался ViK Mefisto (2007-02-09 13:19:36)
а может буквально топики использовать? представь, почтовая папка реализуется как форум, а в ней топики с постами. перенос ветки обсуждения в другую папку - это перенос темы. все уже есть, кроме контроля прав на почтовый ящик...
это же перспективно: добавляешь плагин аттача - и он сразу есть в ЛС. поисковые метки, пометка как прочитанное и т.д. - все надо делается только один раз и сразу доступно в личных сообщениях
Прикольно
Как быть с правами?
представь, почтовая папка реализуется как форум
то есть тут подойдёт твоя наработка с суперкатегориями?
Прикольно
Как быть с правами?
еще не придумал давайте помозгуем вместе как это красиво реализовать
то есть тут подойдёт твоя наработка с суперкатегориями?
ага. суперкатегории - это вообще штука с большим потенциалом но это другая тема...
чтобы не засорять эту ветку - завожу отдельную тему Проект "Личные сообщения на базе топиков"
допустим, есть у нас суперкатегория ЛС, в ней на каждого юзера создаётся форум и в этом форуме лежат топики-переписки с другими юзерами. так оно в вашем представлении будет? если так то надо делать настройку прав доступа к форумам не по группам а по отдельным юзерам(давно о таком мечтаю))). ещё придётся решыть проблемму с выводом темы переписки в форума обоих переписчиков(держать 2 одинаковых темы жирно сильно будет). вроде пока все мысли по этой теме, если я что не так понял поправте.
едит: пока писал, тему создали новую. если несложно, перенесите пост туда.
Редактировался ViK Mefisto (2007-02-09 15:21:24)
Опа, ребята, так это очень в тему к моей идее про создание раздела для каждого пользователя с избранными темами!
hcs, все б хорошо, но
[mono]Fatal error: require() [function.require]: Failed opening required './mod_modern_bbcode.php' .......\message_send.php on line 246[/mono]
Или чтоб юзеры не пользовались другими BB-модами?
Еще замечание - когда ставишь или убираешь галку включения ЛС, то пишет - сообщение удалено, перенаправление. Пофиксить бы.
В целом - понравилось
Личка уже стала частью большинства форумов, пора бы настройки уже перенести в профиль, а то они как то болтаются отдельно
У себя пока сделал так:
#
# [ OPEN ]
#
profile.php
#
# [ FIND ]
#
// Load the profile.php language file
require PUN_ROOT.'lang/'.$pun_user['language'].'/profile.php';
#
# [ AFTER ADD ]
#
if(!isset($lang_pms))
require PUN_ROOT.'lang/'.$pun_user['language'].'/pms.php';
#
# [ FIND ]
#
// Validate input depending on section
switch ($section)
{
#
# [ AFTER ADD ]
#
case 'private':
{
$form = extract_elements(array('messages_enable', 'popup_enable'));
$form['messages_enable'] = (isset($form['messages_enable']) && intval($form['messages_enable']) > 0 ? 1 : 0);
$form['popup_enable'] = (isset($form['popup_enable']) && intval($form['popup_enable']) > 0 ? 1 : 0);
break;
}
#
# [ FIND ]
#
?>
<div class="clearer"></div>
</div>
<?php
require PUN_ROOT.'footer.php';
}
#
# [ BEFORE ADD ]
#
else if ($section == 'private')
{
$page_title = pun_htmlspecialchars($pun_config['o_board_title']).' / '.$lang_common['Profile'];
require PUN_ROOT.'header.php';
generate_profile_menu('private');
?>
<div class="blockform">
<h2><span><?php echo pun_htmlspecialchars($user['username']).' - '.$lang_profile['Section private'] ?></span></h2>
<div class="box">
<form id="profile9" method="post" action="profile.php?section=private&id=<?php echo $id ?>">
<div><input type="hidden" name="form_sent" value="1" /></div>
<div class="inform">
<fieldset id="profileavatar">
<legend><?php echo $lang_pms['Options PM'] ?></legend>
<div class="infldset">
<div class="rbox">
<label><input type="checkbox" name="form[messages_enable]" value="1"<?php if ($pun_user['messages_enable'] == '1') echo ' checked="checked"' ?> /><?php echo $lang_pms['Use messages'] ?><br /></label>
<label><input type="checkbox" name="form[popup_enable]" value="1"<?php if ($pun_user['popup_enable'] == '1') echo ' checked="checked"' ?> /><?php echo $lang_pms['Use popup'] ?><br /></label>
</div>
</div>
</fieldset>
</div>
<p><input type="submit" name="update" value="<?php echo $lang_pms['Send'] ?>" /><?php echo $lang_pms['Instructions'] ?></p>
</form>
</div>
</div>
<?php
}
#
# [ OPEN ]
#
lang/ВАШ ЯЗЫК/profile.php
#
# [ IN THE END OF FILE FIND]
#
);
#
# [ ADD BEFORE ]
#
,
// PM 2 Profile Stuff
'Section private' => 'Сообщений'
#
# [ OPEN ]
#
include/functions.php
#
# [ FIND ]
#
<li<?php if ($page == 'privacy') echo ' class="isactive"'; ?>><a href="profile.php?section=privacy&id=<?php echo $id ?>"><?php echo $lang_profile['Section privacy'] ?></a></li>
#
# [ AFTER ADD ]
#
<li<?php if ($page == 'private') echo ' class="isactive"'; ?>><a href="profile.php?section=private&id=<?php echo $id ?>"><?php echo $lang_profile['Section private'] ?></a></li>
выдирать из message_list.php было лень, поэтому просто закоментировал в нём элемент меню:
#
# [ FIND ]
#
<li <?php if ($box == 2) echo 'class="isactive"' ?>><a href="message_list.php?box=2"><?php echo $lang_pms['Options'] ?></a></li>
#
# [ REPLACE WITH ]
#
<?php
/* <li <?php if ($box == 2) echo 'class="isactive"' ?>><a href="message_list.php?box=2"><?php echo $lang_pms['Options'] ?></a></li> */
?>
скачал установил
появился вопрос: в русификации Личных сообщений используется кодировка UTF-8 ... как мне включить поддержку єтой кодировки или изменить на другую ?
подойдет, только надо будет пересохранить русский языковой файл в win-1251
собственно как ?
всё вопрос снимается нашел фишку перекодировки )
Редактировался Whisper (2007-03-24 02:37:31)
пробую внедрить с сборку 0.0.5
пока что выдаёт:
Notice: Undefined index: o_pms_messages in s:\home\aa.z\nlf\include\pms\header_new_messages.php on line 38
наверху.
o_pms_messages и вправду нету ни в конфиге базе, ни в кеше, нигде... но при этом - в сборке HCS точно такой же файл header_new_messages.php и тоже ничего подобного в конфиге. в чем дело? - там же не выдаёт эту ошибку?
вот 38-я строка:
// Check if the inbox is full
if($pun_config['o_pms_messages'] != 0 && $pun_user['g_id'] > PUN_GUEST){
$result = $db->query('SELECT count(*) FROM '.$db->prefix.'messages WHERE owner='.$pun_user['id']) or error('Unable to test if the message-box is full', __FILE__, __LINE__, $db->error());
list($count) = $db->fetch_row($result);
Добавлено спустя 25 минут 19 секунд:
.
.
.
и когда залазишь в настройки:
http://nlf.aa.z/message_list.php?box=2#
вместо футера вылазит:
Notice: Undefined variable: new_messages in s:\home\aa.z\nlf\include\pms\footer_links.php on line 12
[Денвер: показать возможную причину ошибки]
Notice: Undefined variable: messages_exist in s:\home\aa.z\nlf\include\pms\footer_links.php on line 14
я поправил все ссылки на header и footer - потому что они в сборке 005 перенесены в include
но вот такие кояски остались
это ошибка. o_pms_messages это какой-то странный гибрид, наверное он должен был мутировать в pms_messages в таблице users, чтобы хранить общее количество непрочтенных приватных сообщений, чтобы избавиться от следующего после проверки запроса.
Проверка тоже лишняя, строку :
if($pun_config['o_pms_messages'] != 0 && $pun_user['g_id'] > PUN_GUEST){
можно убрать. закрывающую скобку тоже надо убрать, она идет несколькими строками ниже, после этой строки:
$tpl_temp .= "\n\t\t\t\t".'<ul><li class="pmlink"><strong><a href="message_list.php">'.$lang_pms['Full inbox'].'</a></strong></li></ul>';
niikto, ну ты просто молодец!
hcs рад стараться!
остались только
Notice: Undefined variable: new_messages in s:\home\aa.z\nlf\include\pms\footer_links.php on line 12
[Денвер: показать возможную причину ошибки]
Notice: Undefined variable: messages_exist in s:\home\aa.z\nlf\include\pms\footer_links.php on line 14
как это решить?
и вообще я до сих пор не понял - в сборке 53 ведь ничего не закоментировано - так почему ТАМ эта ошибка не вылазит? и первая - тоже почему не вылазит?