Как недавно выяснилось ExBB не позволяет пользователю редактировать заголовок темы, которую он же сам и создал.
Пообщавшись на эту тему со знатоками ExBB выяснил, что это было сделано сознательно, ибо нефиг...
Однако я всё же посчитал возможным дописать код, который такую возможность предоставит, но ограничил во времени. После появления следующего за первым постом сообщения, редактирование названия темы для пользователя прекращается - возможность редактирования остается только у админов.
Короче, если кому будет интересно делается это так.
Открываем файл post_edit.tpl в котором ищем строку
code:if ($forumcodes === TRUE) {
перед которой вставляем
code:if ($editname) {
echo <<<DATA
<tr>
<td class="pformleft"><b>{$fm->LANG['TopicName']}</b></td>
<td class="pformright"><input type="text" name="topictitle" style="width:450px" tabindex="1" size="40" maxlength="255" value="{$topic[$post_id]['name']}"></td>
</tr>
<tr>
<td class="pformleft"><b>{$fm->LANG['TopicDesc']}</b></td>
<td class="pformright"><input type=text name="description" tabindex="2" style="width:450px" size="40" maxlength="160" value="{$topic[$post_id]['desc']}"></td>
</tr>\n
<tr>
<td class="pformleft"><b>{$fm->LANG['TopicKeywords']}</b></td>
<td class="pformright"><input type="text" name="keywords" size="45" maxlength="255" style="width: 450px" value="{$topic[$post_id]['keywords']}" /></td>
</tr>
DATA;
}
Далее открываем файл postings.php и ищем строку
code:$attach_options = '';
перед которой вставляем
code:$editname = (isset($topic[$post_id]['name']) && (count($topic) == "1" || $moderform === TRUE)) ? TRUE : FALSE;
затем ниже в функции processedit() ищем строку
code:$allforums = $fm->_Read(FM_ALLFORUMS);
которую меняем на
code:$allforums = $fm->_Read2Write($fp_allforums,FM_ALLFORUMS);
затем ещё ниже в функции processedit() ищем строку
code:$list = $fm->_Read('forum'.$forum_id.'/list.php', FALSE);
которую меняем на
code:$list = $fm->_Read2Write($fp_list, 'forum'.$forum_id.'/list.php');
затем ещё ниже в функции processedit() ищем строку
code:$topic[$post_id]['post'] = $fm->bads_filter(preg_replace( "#(\?|&|;|&)PHPSESSID=([0-9a-zA-Z]){32}#i", "", $fm->input['inpost']));
перед которой вставляем
code:if (isset($fm->input['topictitle']))
{
if ($fm->input['topictitle'] == '') {$fm->_Message($fm->LANG['EditTopic'],$fm->LANG['EmptyTitle']);}
$fm->input['topictitle'] = $fm->bads_filter(substr($fm->input['topictitle'],0,255));
$fm->input['description'] = $fm->bads_filter(substr($fm->input['description'],0,160));
$fm->input['keywords'] = $fm->bads_filter(keywordsProcessor(substr($fm->_String('keywords'), 0, 255)));
$pcatid = $allforums[$forum_id]['catid'];
if (stristr($pcatid, 'f'))
{
$pforum = substr($pcatid, 1, strlen($pcatid) - 1);
if ($allforums[$pforum]['last_post_id'] == $topic_id && @$allforums[$pforum]['last_sub'] == $forum_id)
{$allforums[$pforum]['last_post'] = $fm->input['topictitle'];}
}
if ($allforums[$forum_id]['last_post_id'] == $topic_id)
{
$allforums[$forum_id]['last_post'] = $fm->input['topictitle'];
$fm->_Write($fp_allforums,$allforums);
}
$list[$topic_id]['name'] = $fm->input['topictitle'];
$list[$topic_id]['desc'] = $fm->input['description'];
$fm->_Write($fp_list,$list);
$topic[$list[$topic_id]['date']]['name'] = $fm->input['topictitle'];
$topic[$list[$topic_id]['date']]['desc'] = $fm->input['description'];
$topic[$list[$topic_id]['date']]['keywords'] = $fm->input['keywords'];
}
и наконец ещё ниже в функции processedit() ищем строку
которую заменяем строкой
code:unset($topic, $list, $allforums);
После этих изменений редактировать заголовки тем станет проще... это я так думаю... |