Вход
Главное меню





12>


Форма быстрого ответа
#1


Xoops 2.0.2

1. Во viewtopic.php на строке 251, после строки:
if ( (!empty($post_id) && $post_id == $key1) || ( empty($post_id) && $eachpost->parent() == 0 ) ) {
вставляем:
Quote:
//хак для формы ответа
$post_id=$key1;
//хак для формы ответа


2. на строке 309 (с учетом предыдущего хака для переходов на страницу с указанным сообщением), или просто поиском следующую строку:
foreach ( $postsArray as $eachpost ) {
после нее вставляем:
Quote:
//хак для формы ответа
$post_id=$eachpost->postid();
//хак для формы ответа


3. И в самом конце (перед "include XOOPS_ROOT_PATH.'/footer.php';") вписываем следующие строки:
Quote:
//Хак для формы быстрого ответа
if (!empty($post_id)){
$sql = "SELECT forum_type, forum_name, forum_access, allow_html, allow_sig, posts_per_page, hot_threshold, topics_per_page FROM ".$xoopsDB->prefix("bb_forums")." WHERE forum_id = $forum";
if ( !$result = $xoopsDB->query($sql) ) {
} else {
$forumdata = $xoopsDB->fetchArray($result);
$myts =& MyTextSanitizer::getInstance();
if ( $forumdata['forum_type'] == 1 ) {
$accesserror = 0; //initialize
if ( $xoopsUser ) {
if ( !$xoopsUser->isAdmin($xoopsModule->mid()) ) {
if ( !check_priv_forum_auth($xoopsUser->uid(), $forum, true) ) {$accesserror = 1;};
};
} else {$accesserror = 1;};
} else {
$accesserror = 0;
if ( $forumdata['forum_access'] == 3 ) {
if ( $xoopsUser ) {
if ( !$xoopsUser->isAdmin($xoopsModule->mid()) ) {
if ( !is_moderator($forum, $xoopsUser->uid()) ) {$accesserror = 1;};
};
} else {$accesserror = 1;};
} elseif ( $forumdata['forum_access'] == 1 && !$xoopsUser ) {$accesserror = 1;};
};
if ( $accesserror != 1 ) {
include_once 'class/class.forumposts.php';
$forumpost = new ForumPosts($post_id);
$r_message = $forumpost->text();
$r_date = formatTimestamp($forumpost->posttime());
$r_name = ($forumpost->uid() != 0) ? XoopsUser::getUnameFromId($forumpost->uid()) : $xoopsConfig['anonymous'];
$r_content = _MD_BY." ".$r_name." "._MD_ON." ".$r_date."<br /><br />";
$r_content.= $r_message;
$r_subject = $forumpost->subject();
if (!preg_match("/^Re:/i",$r_subject)) {$qa['subject'] = 'Re: '.$myts->htmlSpecialChars($r_subject);} else {$qa['subject'] = $myts->htmlSpecialChars($r_subject);};
$q_message = $forumpost->text("Quotes");
$hidden = "["."quote]\n";
$hidden .= sprintf(_MD_USERWROTE,$r_name);
$hidden .= "\n".$q_message."["."/quote]";
$message = "";
$pid = $post_id;
unset($post_id);
$topic_id = $forumpost->topic();
$forum = $forumpost->forum();
$isreply =1;
$istopic = 0;

include_once XOOPS_ROOT_PATH."/class/xoopslists.php";
include XOOPS_ROOT_PATH."/include/xoopscodes.php";

$lists = new XoopsLists;
$filelist = $lists->getSubjectsList();

$count = 1;
$qa['icons_list'] = '';
while ( list($key, $file) = each($filelist) ) {
$checked = "";
if ( isset($icon) && $file==$icon ) {$checked = " checked='checked'";}
$qa['icons_list'].="<input type='radio' value='$file' name='icon'$checked /> ";
$qa['icons_list'].="<img src='".XOOPS_URL."/images/subject/$file' alt='' /> ";
if ( $count == 8 ) {
$qa['icons_list'].="<br />";
$count = 0;
};
$count++;
};

ob_start();
xoopsCodeTarea("message");

if ( !empty($isreply) && isset($hidden) && $hidden != "" ) {
echo "<input type='hidden' name='isreply' value='1' />";
echo "<input type='hidden' name='hidden' id='hidden' value='$hidden' />
<input type='button' name='quote' class='formButton' value='"._MD_QUOTE."' onclick='xoopsGetElementById(\"message\").value=xoopsGetElementById(\"message\").value + xoopsGetElementById(\"hidden\").value; xoopsGetElementById(\"hidden\").value=\"\";' />  ";
}
xoopsSmilies("message");
$qa['message_area']=ob_get_contents();
ob_clean();

//-- Опции
if ( $xoopsUser && $forumdata['forum_access'] == 2 && !empty($post_id) ) {
echo "<input type='checkbox' name='noname' value='1'";
if ( isset($noname) && $noname ) {
echo " checked='checked'";
};
echo " /> "._MD_POSTANONLY."<br />\n";
};

echo "<input type='checkbox' name='nosmiley' value='1'";
if ( isset($nosmiley) && $nosmiley ) {
echo " checked='checked'";
};
echo " /> "._MD_DISABLESMILEY."<br />\n";

if ( $forumdata['allow_html'] ) {
echo "<input type='checkbox' name='nohtml' value='1'";
if ( $nohtml ) {
echo " checked='checked'";
};
echo " /> "._MD_DISABLEHTML."<br />\n";
} else {
echo "<input type='hidden' name='nohtml' value='1' />";
};

if ( $forumdata['allow_sig'] && $xoopsUser ) {
echo "<input type='checkbox' name='attachsig' value='1'";
if (isset($HTTP_POST_VARS['contents_preview'])) {
if ( $attachsig ) {
echo " checked='checked' /> ";
} else {
echo " /> ";
};
} else {
if ($xoopsUser->getVar('attachsig') || !empty($attachsig)) {
echo " checked='checked' /> ";
} else {
echo "/> ";
};
};

echo _MD_ATTACHSIG."<br />\n";
};

if (!empty($xoopsUser) && !empty($xoopsModuleConfig['notification_enabled'])) {
echo "<input type='hidden' name='istopic' value='1' />";
echo "<input type='checkbox' name='notify' value='1'";
// Check previous subscribed status...
$notification_handler =& xoops_gethandler('notification');
if (!empty($topic_id) && $notification_handler->isSubscribed('thread', $topic_id, 'new_post', $xoopsModule->getVar('mid'), $xoopsUser->getVar('uid'))) {
echo ' checked="checked"';
};
echo " /> "._MD_NEWPOSTNOTIFY."<br />\n";
};
$qa['options_area']=ob_get_contents(); //сбрасываем буффер
ob_clean(); //очищаем

//--Сабмит и хиддены
$post_id = isset($post_id) ? intval($post_id) : '';
$topic_id = isset($topic_id) ? intval($topic_id) : '';
$order = isset($order) ? intval($order) : '';
$pid = isset($pid) ? intval($pid) : 0;

echo " <input type='hidden' name='pid' value='".intval($pid)."' />
<input type='hidden' name='post_id' value='".$post_id."' />
<input type='hidden' name='topic_id' value='".$topic_id."' />
<input type='hidden' name='forum' value='".intval($forum)."' />
<input type='hidden' name='viewmode' value='$viewmode' />
<input type='hidden' name='order' value='".$order."' />
<input type='submit' name='contents_preview' class='formButton' value='"._PREVIEW."' /> <input type='submit' name='contents_submit' class='formButton' id='contents_submit' value='"._SUBMIT."' />
<input type='button' onclick='location=\"";
if ( isset($topic_id) && $topic_id != "" ) {
echo "viewtopic.php?topic_id=".intval($topic_id)."&forum=".intval($forum)."\"'";
} else {
echo "viewforum.php?forum=".intval($forum)."\"'";
};
echo " class='formButton' value='"._MD_CANCELPOST."' />";
$qa['submit_area']=ob_get_contents();
ob_end_clean();

$xoopsTpl->assign("qa",$qa);
};
};
};
//КОНЕЦ Хака на предмет быстрого ответа


4. В Администрировании->Темы Оформления->Форум(Forum)->newbb_viewtopic_flat.html
где-нить ближе к концу, перед <{include file='db:system_notification_select.html'}> непример, вставляем такой вот код:
Quote:
<table border='0' cellpadding='0' cellspacing='0' align='center' width='99%'>
<form action='post.php' method='post' name='forumform' id='forumform' onsubmit='return xoopsValidate("subject", "message", "contents_submit");'>
<tr align='center'><td class='odd' width='100%' valign='top'><input type='text' id='subject' name='subject' size='60' maxlength='100' value='<{$qa.subject}>' class='formTextBox' /></td></tr>
<tr align='center'><td class='even' valign='top'><{$qa.icons_list}></td></tr>
<tr align='center'><td class='odd'><{$qa.message_area}></td></tr>
<tr align='center'><td class='even'><{$qa.options_area}></td></tr>
<tr align='center'><td class='odd'><{$qa.submit_area}></td></tr>
</form>
</table>


--
В резульате получим нормальную в плане дизайна форму под сообщениями.

ЗЫ. К сожалению не так сильно владею инглишом, чтобы писать на xoops.org - был бы признателен кому угодно, кто размещал бы эти хаки у них на форумах или даже в багтракере, с соотвествующими переводами! подобное решение уже вобщем-то было. Единственное отличие - не будет глюка с удалением мессаги. Мессага добавляется как обычно и даже работает цитирование той мессаги которая последняя видна на экране, либо открыта, если просмотр идет в режиме тредов. К этой же мессаге происходит привязка ответа (актуально для тредов).

ЗЗЫ. Ну все, теперь меня точно выгонят с работы ;)

-- Исправлено 18.06.03 1:05
Замена $subject на $qa['subject']
В единственной строке где встречается $subject Ж)

Posted on: 2003/6/16 23:39
 Top  Print  Reply Quote


Re: Форма быстрого ответа
#2


На самом деле, время написания мессаги - 4:44, а предыдущее решение было слишком уродливым, поэтому я его затер этим.

Posted on: 2003/6/17 1:48
 Top  Print  Reply Quote


re
#3


Класс. Наконец появился долгожданный хак. А теперь вопрос-просьба...
Как убрать из этой формы все смайлики? Оставить окно ввода темы, кнопки ссылок/шрифтов и окно ввода сообщения. Сможешь это сделать?

Posted on: 2003/6/17 12:47
http://bratan.no-ip.info
ссылки на игры, фильмы, музыку в eDonkey
 Top  Print  Reply Quote


Re: re
#4


Так вот же, в 4 шаге, прям в шаблоне возьми и убери.
Строчку : <tr align='center'><td class='even' valign='top'><{$qa.icons_list}></td></tr>

Posted on: 2003/6/17 13:49
 Top  Print  Reply Quote


ре
#5
Just popping in
Just popping in


а как в шаге 4 это всё сохранить после редактирования ???

Posted on: 2003/6/17 13:56
 Top  Print  Reply Quote


Re: ре
#6


Quote:
UNREGISTRED пишет:
а как в шаге 4 это всё сохранить после редактирования ???

Не понял, там есть кнопка сохранить, это ж стандартный редактор шаблонов. Если админские права в норме - значит никаких проблем не будет.

Posted on: 2003/6/17 14:16
 Top  Print  Reply Quote


ре
#7
Just popping in
Just popping in


я тоже думаю что должна, а есть тролько кнопка просмотра ))

Posted on: 2003/6/17 14:25
 Top  Print  Reply Quote


Где посмотреть?
#8
Webmaster
Webmaster


Кто установил ХАК.
Дайте УРЛ - посмотреть, как это выглядит.. :biggrin:

Posted on: 2003/6/17 17:19
 Top  Print  Reply Quote


Re: Где посмотреть?
#9
Just popping in
Just popping in


почемуто у меня не работает (((
в низу страницы куча кода..и все

Posted on: 2003/6/17 17:28
 Top  Print  Reply Quote


Re: Где посмотреть?
#10


У меня можно глянуть. Только придётся пройти регистрацию.

Posted on: 2003/6/17 19:03
http://bratan.no-ip.info
ссылки на игры, фильмы, музыку в eDonkey
 Top  Print  Reply Quote








Powered by XOOPS © 2001-2023 The XOOPS Project