- Совместимость
- не проверялся на совместимость
- Изменения в БД
- требуются
- Автор
- Pherum
- Общественное достояние
- да
Описание: добавляет возможность пользователям указывать других пользователей как друзей.
Возможности:
Возможности:
- Добавление друзей
- Удаление друзей
- Работа на AJAX без перезагрузки страницы
- Инструкция по установке
-
PHP:
В БД добавить: Код: CREATE TABLE IF NOT EXISTS `bb_friends` ( `user_id` mediumint(8) unsigned NOT NULL DEFAULT '0', `friends_id` mediumint(8) unsigned NOT NULL DEFAULT '0' ) ENGINE=MyISAM DEFAULT CHARSET=utf8; и Код: INSERT INTO `bb_friends` VALUES (`user_id`, `friends_id`); Закинуть файл: friends.php (в папку /ajax) ***************Открыть ajax.php***************** Найти: 'change_tor_status' => array('user'), После вставить: 'friends' => array('user'), Найти: function index_data() { require(AJAX_DIR .'index_data.php'); } После вставить: function friends() { require(AJAX_DIR .'friends.php'); } ***************Открыть usercp_viewprofile.php***************** Найти: $template->assign_vars(array( 'EDITABLE_TPLS' => true, 'AJAX_USER_OPT' => $ajax_user_opt, 'EMAIL_ADDRESS' => htmlCHR($profiledata['user_email']), )); } После вставить: if($bb_cfg['friends']) { $count = DB()->fetch_row("SELECT COUNT(friends_id) AS friends FROM bb_friends WHERE user_id = ". $profiledata['user_id']); if($profile_user_id) $friends = DB()->fetch_row("SELECT * FROM bb_friends WHERE user_id = ". $userdata['user_id'] ." AND friends_id = ". $profiledata['user_id']); $template->assign_vars(array( 'FRIENDS' => $count['friends'], 'MY_FRIEND' => $friends, )); } ***************Открыть usercp_viewprofile.tpl***************** Найти: ajax.callback.index_data = function(data) { $('#traf-stats-tbl').html(data.html); $('#bt_user_ratio').html(data.user_ratio); $('#traf-stats-span').hide(); $('#traf-stats-tbl').show(); $('#bt_user_ratio').show(); } </script> <!-- ENDIF --> После вставить: <script type="text/javascript"> ajax.friends = function(mode) { ajax.exec({ action : 'friends', mode : mode, user_id : {PROFILE_USER_ID} }); } ajax.callback.friends = function(data) { $('#friends').html(data.html); } </script> Найти: <tr id="ratio-expl" style="display: none;"> <td colspan="2" class="med tCenter"> ( {L_UPLOADED} <b class="seedmed">{UP_TOTAL}</b> + {L_RELEASED} <b class="seedmed">{RELEASED}</b> + {L_BONUS} <b class="seedmed">{UP_BONUS}</b> ) / {L_DOWNLOADED} <b class="leechmed">{DOWN_TOTAL}</b> </td> </tr> После вставить: <!-- IF $bb_cfg['friends'] --> <tr> <th class="vBottom"></th> <td> <b><a class="gen" href="#" onclick="ajax.friends('list'); return false;"></a></b> <span id="friends"></span> </td> </tr> <!-- ENDIF --> В нужное для Вас место ставим вывод количества друзей: <tr> <th>Друзей:</th> <td id="u_thanks" class="gen"> <b>{FRIENDS}</b> </td> </tr> В нужное для Вас место ставим кнопки для добавления в друзья: <a class="med" href="#" onclick="ajax.friends('list'); return false;"><input type="submit" value="Список друзей" class="main gen" /></a> <!-- IF MY_FRIEND --> <a class="med" href="#" onclick="ajax.friends('del'); return false;"><input type="submit" value="Удалить из друзей" class="main gen" /></a> <!-- ELSE --> <a class="med" href="#" onclick="ajax.friends('add'); return false;"><input type="submit" value="Добавить в друзья" class="main gen" /></a> <!-- ENDIF --> В main.css .xenOverlay { display: none; width: 690px; z-index: 10000; } .xenOverlay > .section, .xenOverlay > .sectionMain { background: transparent; margin: 0px; } .xenOverlay .section, .xenOverlay .sectionMain { border: 10px solid rgba(64, 64, 64, 0.506); border-radius: 5px; box-shadow: 0px 15px 20px rgba(0, 0, 0, 0.506); padding: 0px; } .xenOverlay .section .heading, .xenOverlay .sectionMain .heading { border-radius: 0px; margin-bottom: 0px; } .heading { color: #F0F7FC; margin: 0px; } .heading, .xenForm .formHeader { background-color: #000000; color: #EFEFEF; font-size: 11pt; font-weight: 700; margin-bottom: 3px; padding: 5px 10px; } .xenOverlay .section .subHeading, .xenOverlay .sectionMain .subHeading { margin-top: 0px; } .subHeading { background: url("http://tracker/templates/default/images/category-23px-light.png") 50% 0% repeat-x #EAEAEA; border-bottom: 1px solid #E4E4E4; border-top: 1px solid #E4E4E4; color: #6D3F03; font-size: 11px; margin: 3px auto 0px; padding: 5px 10px; } .pairsInline dl, .pairsInline dt, .pairsInline dd { display: inline; } .pairs dt, .pairsInline dt, .pairsJustified dt { color: #969696; } .pairsInline dl, .pairsInline dt, .pairsInline dd { display: inline; } dl, dt, dd, ol, li { margin: 0px; padding: 0px;} .subHeading a { color: #6D3F03; font-size: 11px; line-height: 1.27; } .xenOverlay .overlayScroll { max-height: 400px; overflow: auto; } .memberListItem { overflow: hidden; } .primaryContent { background-color: #EFEFEF; border-bottom: 1px solid #E4E4E4; padding: 10px; } .memberListItem .avatars, .memberListItem .icon { float: left; } .avatars .img { background-position: 2px 2px; background-repeat: no-repeat; display: block; overflow: hidden; text-indent: 1000px; white-space: nowrap; word-wrap: normal; } .avatars .img.s { height: 48px; width: 48px; } .memberListItem .extra { float: right; font-size: 11px; } .memberListItem .member { margin-left: 65px; } .memberListItem h3.username { font-weight: 700; margin-bottom: 3px; } .memberListItem .userInfo { font-size: 11px; margin-bottom: 3px; } .dimmed, a.dimmed, .dimmed a {color: #646464; } .sectionFooter { overflow: hidden; } .sectionFooter { background-color: #000000; color: #000000; font-size: 11px; line-height: 16px; padding: 4px 10px; } .xenOverlay .overlayOnly { display: block !important; } .xenOverlay .sectionFooter .button, .xenOverlay .sectionFooter .buttonContainer { float: right; } .button { cursor: pointer; display: inline-block; font-style: normal; line-height: 13px; } В config.php $bb_cfg['friends'] = true;