Стена пользователя

Стена пользователя 1.1.0

Нет прав для скачивания
Совместимость
проверялся на совместимость
Изменения в БД
требуются
Автор
_Xz_
Общественное достояние
да
Описание: добавляет возможность оставлять записи в профиле пользователя.
Инструкция по установке
PHP:
/*********************************/

config.php в конец добавить:

$bb_cfg['chat_message'] = 25;

в viewprofile.php найти:

//
// Generate page
//

после вставить:

if (!$sql = CACHE('bb_cache')->get("user_comments_{$profiledata['user_id']}"))
{
    $sql = DB()->fetch_rowset("SELECT c.*, u.username, u.user_rank, u.avatar_ext_id, u.user_opt
        FROM bb_user_comments c
        LEFT JOIN ". BB_USERS ." u ON(u.user_id = c.user_id)
        WHERE c.type_id = {$profiledata['user_id']}
        ORDER BY c.id DESC
        LIMIT {$bb_cfg['chat_message']}");
    CACHE('bb_cache')->set("user_comments_{$profiledata['user_id']}", $sql);
}

if(!$sql)
{
    $message = '<div class="tCenter row2 chat-comment"><span style="font-size: 11px;">Никто ещё не оставил комментарий, может быть это сделаете вы?</span></div>';

    $template->assign_block_vars('comments', array(
        'TEXT'        => $message,
    ));
}
else
{
    foreach($sql as $row)
    {
        $message = '<div class="row2 chat-comment" id="pp_'. $row['id'] .'"><div style="min-height: 32px;">';
        $message .= ($row['user_id'] == GUEST_UID) ? '' : '<a href="'. make_url(PROFILE_URL . $row['user_id']) .'">';
        $message .= str_replace('<img', '<img align="left" height="32" width="32" style="padding-right: 3px;"', get_avatar($row['user_id'], $row['avatar_ext_id'], !bf($row['user_opt'], 'user_opt', 'dis_avatar')));
        $message .= ($row['user_id'] == GUEST_UID) ? '' : '</a>';
        if(IS_AM)
        {
            $message .= '<input onclick="set_hid_chbox('. $row['id'] .');" class="floatR chat-post" type="checkbox" value="'. $row['id'] .'" />';
            $message .= '<span onclick="edit_comment('. $row['id'] .'); return false;" class="txtb floatR">[p]</span>';
        }
        $title_ip = (IS_ADMIN) ? decode_ip($row['ip']) : 'Ник в чат';
        $message .= '<a href="#" class="bold" title="'. $title_ip .'" onclick="add_nick(\'[n]'. $row['username'] .'[/n]\'); return false;">'. str_replace('title="', 'data="', profile_url(array('username' => $row['username'], 'user_rank' => $row['user_rank']))) .'</a><div class="small">'. bb_date($row['time']) .'</div></div>';
        $message .= '<div class="spacer_2"></div><span style="font-size: 11px;">'. $row['text_html'] .'</span></div>';
        $message .= (IS_AM) ? '<span id="pe_'. $row['id'] .'"></span>' : '';

        $template->assign_block_vars('comments', array(
            'TEXT'        => $message,
        ));
    }
}

$template->assign_vars(array(
    'COMMENT_ID'    => (int) @$sql[0]['id'],
    'COUNT_COMMENT' => count($sql),
));

в usercp_viewprofile.tpl найти

<!-- IF SHOW_SEARCH_DL -->
<div class="tCenter">
    <a class="gen" href="{U_SEARCH}?dlu={PROFILE_USER_ID}&dlw=1">{L_SEARCH_DL_WILL_DOWNLOADS}</a> ::
    <a class="gen" href="{U_SEARCH}?dlu={PROFILE_USER_ID}&dlc=1">{L_SEARCH_DL_COMPLETE_DOWNLOADS}</a>
</div>
<!-- ENDIF -->

после вставить

<script type="text/javascript">
var comment_id = {COMMENT_ID};
ajax.callback.comments = function(data) {
    if(data.up) $('#chat').scrollTop(0);
    if(data.clear) {
        $('.chat_message').attr('value', '');
        get_message_comments(1);
    }
    <!-- IF IS_AM -->
    else if(data.del) {
        for(i=0; i < data.del.length; i++) {
            $('#pp_'+ data.del[i]).hide();
        }
    }else if(data.html){
        $('#pp_'+ data.post_id).show().html(data.html);
        initPostBBCode('#pp_'+ data.post_id);
        $('#pe_'+ data.post_id).hide();
        ajax.open = false;
    } else if(data.text){
        ajax.open = data.post_id;
        $('#pe_'+ data.post_id).html(data.text);
    }
    <!-- ENDIF -->
    else {
        if(data.message) $('#chat').prepend(data.message);
        initPostBBCode('#chat');
    }

    if(data.id) comment_id = data.id;
};
setInterval(function(){ get_message_comments(0); }, 60000);

function get_message_comments(up){
    ajax.exec({action: 'comments', table: 'user', mode: 'select', id: comment_id, type_id: {PROFILE_USER_ID}, up: up});
}
function submit_click(e) {
    e = e || window.event;
    if (e.keyCode == 13 && e.ctrlKey) {
        submit_chat();
    };
}
function submit_chat(){
    var message = $('.chat_message').val();
    if (message.length < 3) {
        alert('Вы должны ввести текст сообщения');
        $('.chat_message').focus();
        return false;
    }
    ajax.exec({action : 'comments', table: 'user', type_id: {PROFILE_USER_ID}, mode: 'insert', message: message});
}
function add_nick(text){
    var message = $('.chat_message').val();
    $('.chat_message').attr('value', message + text +' ');
    $('.chat_message').focus();
}
</script>
<!-- IF IS_AM -->
<script type="text/javascript">
ajax.open = false;
function edit_comment (post_id, text, type) {
    if(ajax.open && ajax.open != post_id) {
        alert('У вас уже открыто одно быстрое редактирование!');
    } else{
        if(ajax.open && !text){
            $('#pp_'+ post_id).show();
            $('#pe_'+ post_id).hide();
        } else{
            $('#pp_'+ post_id).hide();
            $('#pe_'+ post_id).show();

            ajax.exec({
                action  : 'comments',
                mode    : 'edit',
                post_id : post_id,
                text    : text,
                type_id : {PROFILE_USER_ID},
                table   : 'user',
                type    : type
            });
        }
        ajax.open = false;
    }
}
function del_message_chat(){
    if(!confirm('Вы уверены, что хотите удалить эти сообщения?')) return false;
    var ids = 0;
    $('input.chat-post:checked').each(function(){
        ids += ','+ this.value;
    });
    if(!ids) alert('Вы не выбрали сообщения.');
    else ajax.exec({action : 'comments', table: 'user', type_id: {PROFILE_USER_ID}, mode: 'delete', ids: ids});
}
function set_hid_chbox(id)
{
    $('#pp_'+ id).toggleClass('hl-selected-post');
    return false;
}
</script>
<!-- ENDIF -->
<style type="text/css">
#chat { overflow: auto;<!-- IF COUNT_COMMENT > 3 --> height: 300px;<!-- ENDIF --> }
.chat-comment {
    margin: 3px;
    padding: 4px;
    border: solid 1px #b7c0c5;
    border-radius: 5px;
    -moz-border-radius: 5px;
    -webkit-border-radius: 5px;
}
textarea.chat_message {
    height: 40px;
    margin: 4px;
    border-radius: 0px;
    -moz-border-radius: 0px;
    -webkit-border-radius: 0px;
    font-size: 11px;
}
#submit_chat {
    border: 1px solid #b7c0c5;
    padding: 2px;
    background-color: #EFEFEF;
    font-size: 10px;
    font-weight: bold;
}
#submit_chat:hover { color: #0080FF; }
</style>
    <div class="tCenter">
        <form class="menu" name="post">
        <textarea class="chat_message w90" id="message" onkeydown="submit_click(event)"></textarea>
        <div class="floatR pad_4">
            <span title="Оправить (Ctrl+Enter)" id="submit_chat" onclick="submit_chat(); return false;">Отправить</span>
            <span title="Очистить" id="submit_chat" onclick="$('.chat_message').attr('value', ''); $('.chat_message').focus();">&nbsp;X&nbsp;</span>
            <span title="Смайлы" id="submit_chat" onclick="window.open('posting.php?mode=smilies', '_phpbbsmilies', 'height=540, resizable=yes, scrollbars=yes ,width=620, left=360, top=60'); return false;">&nbsp;:)&nbsp;</span>
            <!-- IF IS_AM --><span title="Удалялка" id="submit_chat" onclick="del_message_chat();">&#8224;</span><!-- ENDIF -->
            <img title="Обновить чат" onclick="get_message_comments(1);" src="/images/pic_loading.gif">
        </div>
        <div class="clear"></div>
        <div class="spacer_2"></div>
        <div class="tLeft w100" id="chat">
            <!-- BEGIN comments -->{comments.TEXT}<!-- END comments -->
        </div>
        </form>
    </div>

-- bbcode.php
+ в самый конец
function bbcode_chat ($text)
{
    global $bbcode;

    if (!isset($bbcode))
    {
        $bbcode = new bbcode();
    }
    $text = $bbcode->new_line2html($text);
    $text = $bbcode->make_clickable($text);
    $text = $bbcode->smilies_pass($text);

    return ($text);
}

-- sql

CREATE TABLE IF NOT EXISTS `bb_user_comments` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `type_id` int(11) NOT NULL DEFAULT '0',
  `user_id` int(11) NOT NULL DEFAULT '0',
  `time` int(11) NOT NULL DEFAULT '0',
  `text` text NOT NULL,
  `text_html` text NOT NULL,
  `ip` char(32) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 ;

-- ajax.php
- найти

switch ($ajax->action)
{
    case 'view_post':
        require(INC_DIR .'bbcode.php');
    break;
   
+ заменить на

switch ($ajax->action)
{
    case 'comments':
    case 'view_post':
        require(INC_DIR .'bbcode.php');
    break;
   
- найти

        'view_post'         => array('guest'),
       
+ после вставить

        'comments'          => array('guest'),
       
- найти

    function manage_user()
    {
        require(AJAX_DIR .'manage_user.php');
    }
   
+ после вставить

    function comments()
    {
        require(AJAX_DIR .'comments.php');
    }

-- comments.php  закинуть в папку library/ajax/
  • 76.9 KB Просмотры: 153
  • 86.7 KB Просмотры: 153
  • 83 KB Просмотры: 148
Автор
dredd
Скачивания
33
Первый выпуск
Обновление
Оценка
0.00 звёзд 0 оценок

Другие ресурсы пользователя dredd

Последние обновления

  1. Адаптация к 2.1.6

    Не стал добавлять ббкоды, думаю, здесь они не нужны. Но если нужны, черакните, сделаем:)
Сверху