Стена пользователя 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_idtexttype) {
        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(!
    idsalert('Вы не выбрали сообщения.');
        else 
    ajax.exec({action 'comments'table'user'type_id: {PROFILE_USER_ID}, mode'delete'idsids});
    }
    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 {
        
    margin3px;
        
    padding4px;
        
    bordersolid 1px #b7c0c5;
        
    border-radius5px;
        -
    moz-border-radius5px;
        -
    webkit-border-radius5px;
    }
    textarea.chat_message {
        
    height40px;
        
    margin4px;
        
    border-radius0px;
        -
    moz-border-radius0px;
        -
    webkit-border-radius0px;
        
    font-size11px;
    }
    #submit_chat {
        
    border1px solid #b7c0c5;
        
    padding2px;
        
    background-color#EFEFEF;
        
    font-size10px;
        
    font-weightbold;
    }
    #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` (
      `
    idint(11NOT NULL AUTO_INCREMENT,
      `
    type_idint(11NOT NULL DEFAULT '0',
      `
    user_idint(11NOT NULL DEFAULT '0',
      `
    timeint(11NOT NULL DEFAULT '0',
      `
    texttext NOT NULL,
      `
    text_htmltext NOT NULL,
      `
    ipchar(32NOT 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