
Support
Рейтинг: 136
Сообщений: 41
Спасибок: 19
- CS:Bans 1.3 от @onotole;
- IPB 3.x версии (можно попробовать на 4.х, но нету нулла хД);
- PDO;
- необходим хостинг, который предоставляет список демо в JSON формате, или настроить веб-сервер самому
- опционально, можно создать специального пользователя, от которого буду создаваться темы (либо темы будут создаваться от определенного пользователя).
-
По факту, данная работа - скрипт + статья. Мы немного переработаем стили и JS от CS:Bans и будем вызывать свой новый скрипт.
Делать было нечего.
И вспомнил что давно хотел себе сделать, чтобы пользователи в автоматическом режиме создавали заявку на разбан.
Набросал скрипт буквально за пару часов.
Он требует много доработок. Но базовый функционал скрипт выполняет.
- +создавать тему с заявкой на разбан;
- +собирать из БД все необходимые данные;
- +вывод прямой ссылки на бан в банлисте;
- +вывод ссылки на демо из базы HLTV ;
- +редирект с помощью jquery на тему, созданную на форме;
- +удаление кнопки после нажатия;
- +вызов окна "#loading" после нажатия, на время отправки POST запроса(до редиректа пользователю покажет окошко с фразой "загрузка", как в обычном CS:Bans, потом сразу перенаправит в тему);
- +вызов окна "#loading" после нажатия, на время отправки POST запроса(до редиректа пользователю покажет окошко с фразой "загрузка", как в обычном CS:Bans, потом сразу перенаправит в тему);
- ADD: Добавил проверок. Вывод теперь в JSON. Все возможные ошибки алертятся.
- FIX: Проверка существования демо (если время бана больше чем время последней демки) - выводится alert с ошибкой, тема не создается.
- ADD: Добавил полный script.js на GitHub.
- -сделать опционально ссылки на демо, т.к. не у всех ИХ, и не у всех будет возможность получать список демо в JSON.
Конфиг пока до боли простой:
$user = "";
$password = "";
$host = "";
$DataBase = ""; //БД форума
$BansBase = "";//БД банов
//Данные для форума
$forumID = 6; //Куда постим, ID раздела
$memberID = 1496; //Пользователь, под которым постим. TODO: Запилить на проверку сессии, если будет, то под самим юзером постить
$DemoUrl = 'http://cs16-18496a.demki.com/index.json'; //Ссылка на список демок в JSON
Думаю тут все предельно ясно.
Далее, скажем CS:Bans, что нужно от рисовать кнопку. Редактируем $Bans_ROOT_DIR/protected/views/bans/index.php
Ищем:
<table class="items table table-bordered table-condensed" style="width:500px; margin: 0 auto">
Добавляем ниже:
<html>
<tr>
<td colspan="2" style="text-align: center">
<?php $this->widget('bootstrap.widgets.TbButton', array(
'label'=>'Подать апелляцию',
'url'=> '#',
'htmlOptions'=>array('id' => 'apillation'),
)); ?>
</td>
</tr>
Теперь скажем что нужно делать с этой кнопкой. Идем сюда: $Bans_ROOT_DIR/themes/default/js/theme.js и меняем содержимое на:
$(function () {
responsiveNav ();
$('ul.main-nav a').each(function () {
if (this.href === location.href) $(this).parent().addClass('active');
});
});
function responsiveNav () {
var html = '';
var cloned = $('.main-nav > li').clone ();
var container = $('<div>', { id: 'responsive-nav' });
var items = $('<ul>', { id: 'responsive-nav-items' });
var trigger = $('<div>', { id: 'responsive-nav-trigger', text: 'Navigate...' });
container.appendTo ('#nav .container');
items.appendTo (container);
items.append (cloned);
items.find ('li').removeClass ('dropdown');
items.find ('ul').removeClass ('dropdown-menu');
items.find ('.caret').remove ();
items.append (html);
trigger.bind ('click', function (e) {
items.slideToggle ();
trigger.toggleClass ('open');
});;
trigger.prependTo (container);
}
$(document).ready(function () {
$("#apillation").click(function () {
$(this).remove();
$("#loading").show();
var link = $("#viewban").attr("href");
var bid = $("#viewban").attr("href");
if (bid.match(/[^0-9]/g)) {
bid = bid.replace(/[^0-9]/g, '');
var data = {
'bid': bid,
'link': link
};
}
$.ajax({
type: "POST",
url: "/unban.php",
data: data,
success: function (json) {
var width = 550;
window.location.href = json;
console.log(json);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(thrownError);
}
});
});
});
Тут вроде тоже все понятно. Взяли ссылку на бан, взяли ID, передали в наш скрипт.
Готово.
by praccprefere
Дата: 27 февраля 2021 г, 18:28
Автор: Monax
Дата: 27 февраля 2021 г, 18:26
Автор: Monax
Дата: 25 декабря 2020 г, 23:24
Автор: praccprefere
Дата: 21 декабря 2020 г, 20:36
Автор: КтО ЗдЕсЬ?
Дата: 13 декабря 2020 г, 20:53
Автор: praccprefere