Мне нравится 1.0.0

Добавляет возможность установки отметок "Мне нравится" у сообщений.

  1. Exile
    Совместимость:
    не проверялся на совместимость
    Изменения в БД:
    требуются
    Автор:
    frost444
    Общественное достояние:
    да
    Описание: добавляет возможность установки отметок "Мне нравится" у сообщений.

    Возможности:
    • Внешний вид как у известной социальной сети
    • Работа на AJAX
    • Всплывающее окно со списком выразивших симпатию
    Инструкция по установке:
    PHP:
    Автор модаfrost444

    //-----[Обновления]-----\\

    |--(00.00.0000)
       
    1измененный код: ---
       
    2) ---
       
    info: (1) ---
      
    \\-----[
    Обновления]-----//

    ####[ВЫПОЛНИТЬ]-----SQL

    CREATE TABLE  `bb_like_post` (
      `
    lk_post_idmediumint(11unsigned NOT NULL DEFAULT '0',
      `
    lk_autor_idmediumint(11unsigned NOT NULL DEFAULT '0',
      `
    lk_user_idmediumint(11NOT NULL DEFAULT '0',
      `
    lk_timeint(11NOT NULL DEFAULT '0',
      
    PRIMARY KEY (`lk_autor_id`,`lk_post_id`,`lk_user_id`,`lk_time`)
    );
    ALTER TABLE `bb_postsADD `like_for_postINT10 NOT NULL DEFAULT '0';
    ALTER TABLE `bb_usersADD `user_likesint(11) DEFAULT '0' NOT NULL;

    ####[КОНЕЦ]-----SQL

    ####[ОТКРЫТЬ]----- config.php

    $bb_cfg['like_post'] = array(
      
    'on'          => true,
      
    'cache'       => 24//кеш держится в часах
      
    'cache_autor' => 24//кеш держится в часах
    );

    ####[СОХРАНИТЬ_ФАЙЛ]####

    ####[ОТКРЫТЬ]----- init_bb.php

    -----[найти]-----

    define('BB_USERS',                'bb_users');

    -----[
    добавить после]-----

    define('BB_LIKE_POST',            'bb_like_post');

    ####[СОХРАНИТЬ_ФАЙЛ]####

    ####[ОТКРЫТЬ]----- ajax.php

    -----[найти]-----

            
    'index_data'        => array('guest'),

    -----[
    добавить после]-----

            
    'like_post'            => array('user'),

    -----[
    найти]-----

        
    последнюю скобку }

    -----[
    добавить перед]-----

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

    ####[СОХРАНИТЬ_ФАЙЛ]####

    ####[ОТКРЫТЬ]----- viewtopic.php

    -----[найти]-----

        
    'FORUM_ID'            => $forum_id,

    -----[
    добавить после]-----

        
    'LIKE_POST_ON'        => ($bb_cfg['like_post']['on'] && $userdata['session_logged_in']),

    -----[
    найти]------
    //
    // Go ahead and pull all data for this topic
    //
    // 1. Add first post of topic if it pinned and page of topic not first

    -----[найти]------

              
    p.*,

    -----[
    ниже добавить]------

              
    lk.*,

    -----[
    найти]------

            
    LEFT JOIN ". BB_POSTS_HTML ." h  ON(h.post_id p.post_id)

    -----[
    ниже добавить]------

            
    LEFT JOIN ". BB_LIKE_POST  ." lk ON(lk.lk_post_id p.post_id)
                   
    -----[
    найти]------
    // 2. All others posts

    -----[найти]------

          
    p.*,

    -----[
    ниже добавить]------

          
    lk.*,

    -----[
    найти]------

        
    LEFT JOIN ". BB_POSTS_HTML ." h  ON(h.post_id p.post_id)

    -----[
    ниже добавить]------

        
    LEFT JOIN ". BB_LIKE_POST  ." lk ON(lk.lk_post_id p.post_id)
               
    -----[
    найти]------

    $template->assign_block_vars('postrow', array(

    -----[
    перед добавить]------

        
    $set_like_post = ($postrow[$i]['poster_id'] <> $userdata['user_id'] && $postrow[$i]['poster_id'] > 0);
       
    -----[
    найти]------

    $template->assign_block_vars('postrow', array(
       
    -----[
    ниже добавить]------

            
    'LIKE_POST'          => $postrow[$i]['like_for_post'],
            
    'SET_LIKE_POST'      => $set_like_post,
            
    'GET_LIKE_POST'      => ($postrow[$i]['like_for_post'] > 0),

    ####[СОХРАНИТЬ_ФАЙЛ]####

    ####[ОТКРЫТЬ]----- includes\ucp\usercp_viewprofile.php
    -----[найти]------

        
    'ICQ'                  => $profiledata['user_icq'],
       
    -----[
    ниже добавить]------

        
    'LIKES'                => ($bb_cfg['like_post']['on']) ? $profiledata['user_likes'] : '',
        
    'LIKES_ON'             => $bb_cfg['like_post']['on'],
       
    ####[СОХРАНИТЬ_ФАЙЛ]####
       
    ####[ОТКРЫТЬ]----- usercp_viewprofile.tpl
    -----[найти]------

    <var class=
    "ajax-params">{action"edit_user_profile"id"user_birthday"}</var>
       
    -----[
    ниже добавить]------

    <var class=
    "ajax-params">{action"edit_user_profile"id"user_likes"}</var>

    -----[
    найти]------

                <
    tr>
                    <
    th>{L_AGE}:</th>
                    <
    td><b>{AGE}</b></td>
                </
    tr>
                <!-- ENDIF -->
       
    -----[
    ниже добавить]------

                <!-- IF 
    LIKES_ON -->
                <
    tr>
                    <
    th>Лайки:</th>
                    <
    td id="user_likes"><class="editable">{LIKES}</b></td>
                </
    tr>
                <!-- ENDIF -->
               
    ####[СОХРАНИТЬ_ФАЙЛ]####

    ####[ОТКРЫТЬ]----- viewtopic.tpl

    -----[в самом начале добавить]-----
    <
    link rel="stylesheet" href="{TPL_DIR}/popup.css?v={$bb_cfg['css_ver']}type="text/css">
    <!-- IF 
    LIKE_POST_ON -->
    <
    link rel="stylesheet" href="{TPL_DIR}/like.css?v={$bb_cfg['css_ver']}type="text/css">
    <
    script type="text/javascript">
    function 
    like_post(post_idmodetype 0){
        
    ajax.exec({
            
    action  'like_post',
            
    mode    mode,
            
    post_id    post_id,
            
    type    type,
        });
        
    ajax.callback.like_post = function(data) {
            if(
    data.like){
                $(
    '#post_like_count-'data.post_id).html(data.html_count);
                if (!
    data.html_list)
                {
                    $(
    '#post_like_list-'data.post_id).removeClass('post_like');
                }else{       
                    $(
    '#post_like_list-'data.post_id).addClass('post_like');
                }
                $(
    '#post_like_list-'data.post_id).html(data.html_list);
            }
            if(
    data.list){
                $(
    '#like_post').html(data.html);
            }
        };
    }
    </
    script>
    <
    span id="like_post"></span>
    <!-- ENDIF -->

    -----[
    найти]-----

                <!-- IF 
    postrow.EDITED_MESSAGE --><div class="last_edited">{postrow.EDITED_MESSAGE}</div><!-- ENDIF -->

    -----[
    добавить ниже]-----

                <!-- IF 
    LIKE_POST_ON -->
                <
    div class="floatR">
                    <
    span class="like_list" style="display:none;" id="likelist-popup-{postrow.POST_ID}"></span>
                    <
    div id="setlike-{postrow.POST_ID}">
                        <
    div class="post_like_wrap fl_r">
                            <
    div class="post_like floatL" onclick="like_post({postrow.POST_ID}, 'like');">
                                <
    span class="post_like_link floatL">Мне нравится</span>
                                <
    class="post_like_icon my_like floatL"></i>
                                <
    span id="post_like_count-{postrow.POST_ID}" class="post_like_count floatL" >{postrow.LIKE_POST}</span>
                            </
    div>
                            <
    div id="post_like_list-{postrow.POST_ID}" class="<!-- IF postrow.GET_LIKE_POST -->post_like <!-- ELSE --><!-- ENDIF -->floatL">
                                <!-- IF 
    postrow.GET_LIKE_POST --><span class="post_like_count floatR" onclick="like_post({postrow.POST_ID}, 'list');"><b>&#8593;&#8593;</b></span><!-- ELSE --><!-- ENDIF -->
                            
    </div>
                        </
    div>
                    </
    div>
                </
    div>
                <!-- ENDIF -->

    ####[СОХРАНИТЬ_ФАЙЛ]####

    Изображения

    1. likemod.JPG