UnbanRequest PHP\IPB
praccprefere

Support


Рейтинг: 136


Сообщений: 41


Спасибок: 19

 

 
Автор 
oxoTHuk
 
Требования 
  • CS:Bans 1.3 от @onotole;
  • IPB 3.x версии (можно попробовать на 4.х, но нету нулла хД);
  • PDO;
  • необходим хостинг, который предоставляет список демо в JSON формате, или настроить веб-сервер самому
  • опционально, можно создать специального пользователя, от которого буду создаваться темы (либо темы будут создаваться от определенного пользователя).
По факту, данная работа - скрипт + статья. Мы немного переработаем стили и JS от CS:Bans и будем вызывать свой новый скрипт.
17_gn_logo.png.30960f8749c28110a9651d476eb59ebc.png
Примечание: Актуальная версия на GitHub.

Делать было нечего.
И вспомнил что давно хотел себе сделать, чтобы пользователи в автоматическом режиме создавали заявку на разбан.
Набросал скрипт буквально за пару часов.
Он требует много доработок. Но базовый функционал скрипт выполняет.
 
Возможности и планы 
  • +создавать тему с заявкой на разбан;
  • +собирать из БД все необходимые данные;
  • +вывод прямой ссылки на бан в банлисте;
  • +вывод ссылки на демо из базы HLTV ;
  • +редирект с помощью jquery на тему, созданную на форме;
  • +удаление кнопки после нажатия;
  • +вызов окна "#loading" после нажатия, на время отправки POST запроса(до редиректа пользователю покажет окошко с фразой "загрузка", как в обычном CS:Bans, потом сразу перенаправит в тему);
  • +вызов окна "#loading" после нажатия, на время отправки POST запроса(до редиректа пользователю покажет окошко с фразой "загрузка", как в обычном CS:Bans, потом сразу перенаправит в тему);
  • ADD: Добавил проверок. Вывод теперь в JSON. Все возможные ошибки алертятся.
  • FIX: Проверка существования демо (если время бана больше чем время последней демки) - выводится alert с ошибкой, тема не создается.
  • ADD: Добавил полный script.js на GitHub.
  • -сделать опционально ссылки на демо, т.к. не у всех ИХ, и не у всех будет возможность получать список демо в JSON.
Скрипт я планирую сам допиливать в свободное время, но если кто-то хочет помогать - милости прошу:
 
 
Установка и настройка 
Итак, поехали, для начала, нужно залить скрипт в корень форма. Рядом с initdata.php.
Конфиг пока до боли простой:
$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, передали в наш скрипт.

Готово.

 
Отредактировал: praccprefere, 22 апреля 2020 г, 14:21

by praccprefere

Авторизация
  Войти через ВК
Последнее на форуме

Играем в слова

Дата: 27 февраля 2021 г, 18:28

Автор: Monax

Досчитаем до 1000?

Дата: 27 февраля 2021 г, 18:26

Автор: Monax

Демо по запросу

Дата: 25 декабря 2020 г, 23:24

Автор: praccprefere

Крутые моменты

Дата: 21 декабря 2020 г, 20:36

Автор: КтО ЗдЕсЬ?

Клиент Counter-Strike 1.6

Дата: 13 декабря 2020 г, 20:53

Автор: praccprefere