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

Добавляет возможность оставлять записи в профиле пользователя.

  1. dredd
    Совместимость:
    проверялся на совместимость
    Изменения в БД:
    требуются
    Автор:
    _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">
        <
    class="gen" href="{U_SEARCH}?dlu={PROFILE_USER_ID}&dlw=1">{L_SEARCH_DL_WILL_DOWNLOADS}</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=0data.del.lengthi++) {
                $(
    '#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.idcomment_id data.id;
    };
    setInterval(function(){ get_message_comments(0); }, 60000);

    function 
    get_message_comments(up){
        
    ajax.exec({action'comments'table'user'mode'select'idcomment_idtype_id: {PROFILE_USER_ID}, upup});
    }
    function 
    submit_click(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'messagemessage});
    }
    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/

    Изображения

    1. 1.png
    2. 2.png
    3. 3.png

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

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