"Спасибо" на ajax

druid

Пользователь
Выполняем запрос в базу данных MySQL:

Код:
CREATE TABLE  `bb_attachments_rating` (
  `attach_id` mediumint(8) unsigned NOT NULL DEFAULT '0',
  `user_id` mediumint(9) NOT NULL DEFAULT '0',
  `time` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`attach_id`,`user_id`)
);
====================================
Открываем ajax.php

Находим:
PHP:
'change_tz'        => array('user'),

После добавляем
PHP:
'set_thanks'        => array('user'),
'get_thanks'        => array('user'),

Находим последний символ "}" и перед ним добавляем:
PHP:
    function set_thanks()
    {
        global $lang, $userdata;

        $user_id = (int)$this->request['user_id'];
        if ($user_id == $userdata['user_id'])
        {
            $this->response['html'] = '<size="10"><i><b>'.$lang['THANKS_SELF'].'</b></i></size>';
        }
        else
        {
            $attach_id= (int)$this->request['attach_id'];
            $result = DB()->sql_query("SELECT * FROM bb_attachments_rating WHERE user_id=".$userdata['user_id']." AND attach_id=$attach_id");
            if (DB()->num_rows($result) == 0)
            {
                DB()->sql_query("INSERT INTO bb_attachments_rating (attach_id,user_id,time) VALUES ($attach_id,".$userdata['user_id'].",UNIX_TIMESTAMP())");
                $this->response['html'] = '<size="12"><b>'.$lang['THANKS_SET'].'</b></size>';
            }
            else
            {
                $this->response['html'] = '<size="10"><i><b>'.$lang['THANKS_ALREADY'].'</b></i></size>';
            }
        }
    }

    function get_thanks()
    {
        global $lang,$userdata;

        $attach_id= (int)$this->request['attach_id'];
        $result = DB()->sql_query("SELECT a.time,u.user_id,u.username,u.user_level,u.user_rank FROM bb_attachments_rating a,bb_users u WHERE a.attach_id=$attach_id AND a.user_id=u.user_id ORDER BY a.time  DESC");
        $i = DB()->num_rows($result);
        if ($i > 0)
        {
            $this->response['html'] = '<br>';
            while ($row = DB()->sql_fetchrow($result))
            {
                $i--;
                $this->response['html'] .= profile_url($row).' (<i>'.bb_date($row['time'],"d-M-y",$userdata['user_timezone']).'</i>)';
                if ($i>0)
                {
                    $this->response['html'] .= ', ';
                }
            }
        }
        else
        {
            $this->response['html'] = '<br><size="10"><b>'.$lang['THANKS_NOT'].'</b></size>';
        }
    }
======================================
Открываем languages/lang_russian/lang_main.php

В самый конец добавляем:
PHP:
$lang['THANKS_ALREADY'] = "Вы уже благодарили";
$lang['THANKS_SET'] = "Спасибо за Cпасибо";
$lang['THANKS_SELF'] = "Сам себя не похвалишь - никто не похвалит ;-)";
$lang['THANKS_SAY'] = "Сказать Cпасибо";
$lang['THANKS_SHOW'] = "Показать поблагодаривших";
$lang['THANKS_NOT'] = "Ещё никто не сказал \"Cпасибо\". Будете первым?";
======================================
Открываем templates/default/viewtopic_attach.tpl

Находим:
HTML:
<tr>
<!--<td class="vTop"><div id="tor-fl-bgn" class="border bw_TRBL med row1">YOUR ADS BLOCK</div></td>-->
<td class="vTop" style="width: 100%;"><div id="tor-filelist" class="border bw_TRBL med row1"><span class="loading-1">{L_LOADING}</span></div></td>
</tr>
</table>
</div>
</div>
<div class="spacer_12"></div>
заменяем на
HTML:
<tr>
<!--<td class="vTop"><div id="tor-fl-bgn" class="border bw_TRBL med row1">YOUR ADS BLOCK</div></td>-->
<td class="vTop" style="width: 100%;"><div id="tor-filelist" class="border bw_TRBL med row1"><span class="loading-1">{L_LOADING}</span></div></td>
</tr>
</table>
</div>
</div>
<!-- IF not IS_GUEST -->
<div class="spacer_12"></div>
<div class="tCenter">
<script type="text/javascript">
list_loaded = false;
ajax.get_thanks = function() {
    if (list_loaded) return;
    ajax.exec({
        action        : 'get_thanks',
        attach_id    : '{postrow.attach.tor_reged.ATTACH_ID}',
    });
};
ajax.callback.get_thanks = function(data){
    $('#thanks_list').html(data.html);
    list_loaded = true;
}
ajax.set_thanks = function() {
    ajax.exec({
        action        : 'set_thanks',
        attach_id    : '{postrow.attach.tor_reged.ATTACH_ID}',
        user_id      : '{AUTHOR_USER_ID}',
    });
};
ajax.callback.set_thanks = function(data){
    $('#show_thanks').html(data.html);
    $('#set_thanks_button').hide();
    list_loaded = false;
    ajax.get_thanks();
}
</script>
<input type="button" id="set_thanks_button" value="{L_THANKS_SAY}" onclick="ajax.set_thanks()">
<span id="show_thanks"></span>
<br>
<div class="sp-wrap" onclick="ajax.get_thanks()">
    <div class="sp-body" title="{L_THANKS_SHOW}">
    <h3 class="sp-title">{L_THANKS_SHOW}</h3>
    <span id="thanks_list"></span>
    </div>
</div>
</div>
<!-- ENDIF -->
====================================================
открываем viewtopic.php

находим:
PHP:
'SHOW_JUMPBOX'        => true,

после этого добавляем
PHP:
'AUTHOR_USER_ID'      => $t_data['topic_poster'],

c3c485489a1024bc7ba3dfa56175133f.png

e7da55e18c4ccdf1a387581ba4d849d1.png

604e3bd5b703ba41c042d512dda212aa.png
 

druid

Пользователь
frost444, слышал, но не вижу смысла в его использовании здесь, хотя это мое личное мнение и никого ему не навязываю. Если кому-то захочется сделать с кешем - пусть сделает и выложит, больше хороших модов - лучше движок ;-)
 

nord51

Пользователь
А это что:
PHP:
//
// Ajax
//
class ajax_common
{
    var $request  = array();
    var $response = array();

    var $valid_actions = array(
    //  ACTION NAME            AJAX_AUTH
        'edit_user_profile' => array('admin'),
        'change_user_rank'  => array('admin'),
        'change_user_opt'  => array('admin'),
        'manage_user'      => array('admin'),

        'change_tor_status' => array('mod'),
        'mod_action'        => array('mod'),
        'topic_tpl'        => array('mod'),

        'gen_passkey'      => array('user'),
        'change_torrent'    => array('user'),
        'change_tz'        => array('user'),

        'view_post'        => array('guest'),
        'view_torrent'      => array('guest'),
        'user_register'    => array('guest'),
        'posts'            => array('guest'),
        'birthday_list'    => array('guest'),
        'get_forum_mods'    => array('guest'),
);
 

_Xz_

Пользователь
user_id : '{AUTHOR_USER_ID}', смысла нет в этой строке, как и нет проверки на аттач_ид, вернее проверки есть ли такой торрент или нет
 
Сверху