SourceBans - что-то неправильно сделал

Тема в разделе "Веб-технологии", создана пользователем legend1998, 7 июн 2012.

  1. legend1998

    legend1998

    Сообщения:
    292
    Симпатии:
    178
    Здравствуйте.
    Думаю, что я создал тему в нужном месте, т.к. я решил сделать поле при добавлении админки под названием "Срок админки"
    Но когда я добавляю, срок не добавляется, а если я редактирую, но срок появляется.
    Помогите, пожалуйста.
    Вот содержимое /themes/default_ru/page_admin_admins_add.tpl:
    {if NOT $permission_addadmin}
    Доступ Запрещен!
    {else}
    <div id="msg-green" style="display:none;">
    <i><img src="./images/yay.png" alt="Внимание!" /></i>
    <b>Админ добавлен</b>
    <br />
    Новый админ успешно добавлен в систему.<br /><br />
    <i>Перенаправление на страничку админов</i>
    </div>


    <div id="add-group">
    <h3>(А)Инфо</h3>
    Для получения расширенной информации наведите курсор на ЗНАЧОК ВОПРОСА..<br /><br />
    <table width="90%" border="0" style="border-collapse:collapse;" id="group.details" cellpadding="3">
    <tr>
    <td valign="top" width="35%">
    <div class="rowdesc">
    {help_icon title="(А)Имя" message="This is the username the admin will use to login-to their admin panel. Also this will identify the admin on any bans they make."}Имя
    </div>
    </td>
    <td>
    <div align="left">
    <input type="text" TABINDEX=1 class="submit-fields" id="adminname" name="adminname" />
    </div>
    <div id="name.msg" class="badentry"></div>
    </td>
    </tr>
    <tr>
    <td valign="top">
    <div class="rowdesc">
    {help_icon title="(A)Steam ID" message="Это 'STEAM' id админа. This must be set so that admins can use their admin rights ingame."}Steam ID
    </div>
    </td>
    <td>
    <div align="left">
    <input type="text" TABINDEX=2 value="STEAM_0:" class="submit-fields" id="steam" name="steam" />
    </div>
    <div id="steam.msg" class="badentry"></div>
    </td>
    </tr>
    <tr>
    <td valign="top">
    <div class="rowdesc">
    <img src="http://funservers.ru/img/skype.png"> Skype
    </div>
    </td>
    <td>
    <div align="left">
    <input type="text" TABINDEX=3 class="submit-fields" id="email" name="email" />
    </div>
    <div id="email.msg" class="badentry"></div>
    </td>
    </tr>
    <tr>
    <td valign="top">
    <div class="rowdesc">
    Срок админки<br><font color="red">не указывайте '<b>до</b>'</font>
    </div>
    </td>

    <tr>
    <td valign="top">
    <div class="rowdesc">
    {help_icon title="Пароль" message="The password the admin will need to access the admin panel. This is only required, if you set webpanel permissions."} Пароль
    </div>
    </td>
    <td>
    <div align="left">
    <input type="password" TABINDEX=5 class="submit-fields" id="password" name="password" />
    </div>
    <div id="password.msg" class="badentry"></div>
    </td>
    </tr>
    <tr>
    <td valign="top">
    <div class="rowdesc">
    {help_icon title="Пароль" message="Type the password again to confirm."} Подтверждение пароля
    </div>
    </td>
    <td>
    <div align="left">
    <input type="password" TABINDEX=6 class="submit-fields" id="password2" name="password2" />
    </div>
    <div id="password2.msg" class="badentry"></div>
    </td>
    </tr>
    <tr>
    <td valign="top" width="35%">
    <div class="rowdesc">
    {help_icon title="(SA)Пароль" message="If this box is checked, you will need to specify this password in the game server before you can use your admin rights."} Пароль на сервере <small>(<a href="http://wiki.alliedmods.net/Adding_Admins_%28SourceMod%29#Passwords" title="SourceMod Password Info" target="_blank">Более</a>)</small>
    </div>
    </td>
    <td>
    <div align="left">
    <input type="checkbox" id="a_useserverpass" name="a_useserverpass" TABINDEX=7 onclick="$('a_serverpass').disabled = !$(this).checked;" /> <input type="password" TABINDEX=7 class="submit-fields" name="a_serverpass" id="a_serverpass" disabled="disabled" />
    </div>
    <div id="a_serverpass.msg" class="badentry"></div>
    </td>
    </tr>
    </table>


    <br />


    <h3>(А)Доступ</h3>
    <table width="90%" border="0" style="border-collapse:collapse;" id="group.details" cellpadding="3">
    <tr>
    <td valign="top" width="35%">
    <div class="rowdesc">
    {help_icon title="(S)Доступ" message="<b>(S)Доступ: </b><br>>Выберете сервер или группу серверов доступную аджминистратору."}(S)Доступ
    </div>
    </td>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td colspan="2">
    <table width="90%" border="0" cellspacing="0" cellpadding="4" align="center">
    {foreach from="$group_list" item="group"}
    <tr>
    <td colspan="2" class="tablerow4">{$group.name}<b><i>(Группа)</i></b></td>
    <td align="center" class="tablerow4"><input type="checkbox" id="group[]" name="group[]" value="g{$group.gid}" /></td>
    </tr>
    {/foreach}

    {foreach from="$server_list" item="server"}
    <tr class="tablerow1">
    <td colspan="2" class="tablerow1" id="sa{$server.sid}"><i>Получение имени хоста... {$server.ip}:{$server.port}</i></td>
    <td align="center" class="tablerow1">
    <input type="checkbox" name="servers[]" id="servers[]" value="s{$server.sid}" />
    </td>
    </tr>
    {/foreach}
    </table>
    </td>
    </tr>
    </table>



    <br />



    <h3>(А)Разрешения</h3>
    <table width="90%" border="0" style="border-collapse:collapse;" id="group.details" cellpadding="3">
    <tr>
    <td valign="top" width="35%">
    <div class="rowdesc">
    {help_icon title="(SA)Группа" message="<b>Выборочные разрешения: </b><br>Установите выборочные разрешения для этого админа.<br><br><b>Новая группа: </b><br>Установите выборочные разрешения и сохраните их как новую группу.<br><br><b>Группы: </b><br>Выберете ранее созданную группу для этого админа."}(SA)Группа
    </div>
    </td>
    <td>
    <div align="left" id="admingroup">
    <select TABINDEX=8 onchange="update_server()" name="serverg" id="serverg" class="submit-fields">
    <option value="-2">Выберете...</option>
    <option value="-3">Нет разрешений</option>
    <option value="c">Свои разрешения</option>
    <option value="n">Новая (SA)Группа</option>
    <optgroup label="Группа" style="font-weight:bold;">
    {foreach from="$server_admin_group_list" item="server_wg"}
    <option value='{$server_wg.id}'>{$server_wg.name}</option>
    {/foreach}
    </optgroup>
    </select>
    </div>
    <div id="server.msg" class="badentry"></div>
    </td>
    </tr>
    <tr>
    <td colspan="2" id="serverperm" valign="top" style="height:5px;overflow:hidden;"></td>
    </tr>
    <tr>
    <td valign="top">
    <div class="rowdesc">
    {help_icon title="(WA)Группа" message="<b>Выборочные разрешения: </b><br>Установите выборочные разрешения для этого админа.<br><br><b>Новая группа: </b><br>>Установите выборочные разрешения и сохраните их как новую группу.<br><br><b>Группы: </b><br>Выберете ранее созданную группу для этого админа."}(WA)Группа
    </div>
    </td>
    <td>
    <div align="left" id="webgroup">
    <select TABINDEX=9 onchange="update_web()" name="webg" id="webg" class="submit-fields">
    <option value="-2">Выберете...</option>
    <option value="-3">Нет разрешения</option>
    <option value="c">Свои разрешения</option>
    <option value="n">Новая (WA)Группа</option>
    <optgroup label="Группа" style="font-weight:bold;">
    {foreach from="$server_group_list" item="server_g"}
    <option value='{$server_g.gid}'>{$server_g.name}</option>
    {/foreach}
    </optgroup>
    </select>
    </div>
    <div id="web.msg" class="badentry"></div>
    </td>
    </tr>
    <tr>
    <td colspan="2" id="webperm" valign="top" style="height:5px;overflow:hidden;"></td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    <td>
    {sb_button text="Добавить Админа" onclick="ProcessAddAdmin();" class="ok" id="aadmin" submit=false}
    &nbsp;
    {sb_button text="Назад" onclick="history.go(-1)" class="cancel" id="aback"}
    </td>
    </tr>
    </table>
    {$server_script}
    </div>
    {/if}


    Содержимое /pages/admin.admins.php:
    <?php
    /**
    * =============================================================================
    * Our admins page
    *
    * @author SteamFriends Development Team
    * @version 1.0.0
    * @copyright SourceBans (C)2007 SteamFriends.com. All rights reserved.
    * @package SourceBans
    * @link http://www.sourcebans.net
    *
    * @version $Id: admin.admins.php 270 2009-06-22 22:01:44Z peace-maker $
    * =============================================================================
    */
    ?>

    <div id="admin-page-content">
    <?php
    if(!defined("IN_SB")){echo "You should not be here. Only follow links!";die();}
    global $userbank, $ui;

    if (isset($_GET['page']) && $_GET['page'] > 0)
    {
    $page = intval($_GET['page']);
    }

    $AdminsStart = intval(($page-1) * $AdminsPerPage);
    $AdminsEnd = intval($AdminsStart+$AdminsPerPage);
    if ($AdminsEnd > $admin_count) $AdminsEnd = $admin_count;

    // List Page
    $admin_list = array();
    foreach($admins AS $admin)
    {
    $admin['immunity'] = $userbank->GetProperty("srv_immunity", $admin['aid']);
    $admin['web_group'] = $userbank->GetProperty("group_name", $admin['aid']);
    $admin['server_group'] = $userbank->GetProperty("srv_groups", $admin['aid']);
    if(empty($admin['web_group']) || $admin['web_group']==" ")
    {
    $admin['web_group'] = "Нет группы / Свои права";
    }
    if(empty($admin['server_group']) || $admin['server_group']==" ")
    {
    $admin['server_group'] = "Нет группы/Индивид. права";
    }
    $num = $GLOBALS['db']->GetRow("SELECT count(authid) AS num FROM `" . DB_PREFIX . "_bans` WHERE aid = '".$admin['aid']."'");
    $admin['bancount'] = $num['num'];

    $nodem = $GLOBALS['db']->GetRow("SELECT count(B.bid) AS num FROM `" . DB_PREFIX . "_bans` AS B WHERE aid = '".$admin['aid']."' AND NOT EXISTS (SELECT D.demid FROM `" . DB_PREFIX . "_demos` AS D WHERE D.demid = B.bid)");
    $admin['aid'] = $admin['aid'];
    $admin['nodemocount'] = $nodem['num'];

    $admin['name'] = stripslashes($admin['user']);
    $admin['cpok'] = stripslashes($admin['cpok']);
    $admin['server_flag_string'] = SmFlagsToSb($userbank->GetProperty("srv_flags",$admin['aid']));
    $admin['web_flag_string'] = BitToString($userbank->GetProperty("extraflags",$admin['aid']));
    $admin['lastvisit'] = SBDate($dateformat,$userbank->GetProperty("lastvisit", $admin['aid']));
    array_push($admin_list, $admin);
    }

    if ($page > 1)
    {
    $prev = CreateLinkR('<img border="0" alt="prev" src="http://hlmod.ru/forum/images/left.gif" style="vertical-align:middle;" /> prev',"index.php?p=admin&c=admins&page=" .($page-1). $advSearchString);
    }
    else
    {
    $prev = "";
    }
    if ($AdminsEnd < $admin_count)
    {
    $next = CreateLinkR('след. <img border="0" alt="prev" src="http://hlmod.ru/forum/images/right.gif" style="vertical-align:middle;" />',"index.php?p=admin&c=admins&page=" .($page+1).$advSearchString);
    }
    else
    $next = "";

    //=================[ Start Layout ]==================================
    $admin_nav = 'В базе <b>'.$admin_count.'</b>&nbsp;админов';

    if (strlen($prev) > 0)
    {
    $admin_nav .= ' | <b>'.$prev.'</b>';
    }
    if (strlen($next) > 0)
    {
    $admin_nav .= ' | <b>'.$next.'</b>';
    }

    $pages = ceil($admin_count/$AdminsPerPage);
    if($pages > 1) {
    $admin_nav .= '&nbsp;<select onchange="changePage(this,\'A\',\''.$_GET['advSearch'].'\',\''.$_GET['advType'].'\');">';
    for($i=1;$i<=$pages;$i++) {
    if($i==$_GET["page"]) {
    $admin_nav .= '<option value="' . $i . '" selected="selected">' . $i . '</option>';
    continue;
    }
    $admin_nav .= '<option value="' . $i . '">' . $i . '</option>';
    }
    $admin_nav .= '</select>';
    }

    echo '<div id="0" style="display:none;">';
    $theme->assign('permission_listadmin', $userbank->HasAccess(ADMIN_OWNER|ADMIN_LIST_ADMINS));
    $theme->assign('permission_editadmin', $userbank->HasAccess(ADMIN_OWNER|ADMIN_EDIT_ADMINS));
    $theme->assign('permission_deleteadmin', $userbank->HasAccess(ADMIN_OWNER|ADMIN_DELETE_ADMINS));
    $theme->assign('admin_count', $admin_count);
    $theme->assign('admin_nav', $admin_nav);
    $theme->assign('admins', $admin_list);
    $theme->display('page_admin_admins_list.tpl');
    echo '</div>';




    // Add Page
    $group_list = $GLOBALS['db']->GetAll("SELECT * FROM `" . DB_PREFIX . "_groups` WHERE type = '3'");
    $servers = $GLOBALS['db']->GetAll("SELECT * FROM `" . DB_PREFIX . "_servers`");
    $server_admin_group_list = $GLOBALS['db']->GetAll("SELECT * FROM `" . DB_PREFIX . "_srvgroups`");
    $server_group_list = $GLOBALS['db']->GetAll("SELECT * FROM `" . DB_PREFIX . "_groups` WHERE type != 3");
    $server_list = array();
    $serverscript = "<script type=\"text/javascript\">";
    foreach($servers AS $server)
    {
    $serverscript .= "xajax_ServerHostPlayers('".$server['sid']."', 'id', 'sa".$server['sid']."');";
    $info['sid'] = $server['sid'];
    $info['ip'] = $server['ip'];
    $info['port'] = $server['port'];
    array_push($server_list, $info);
    }
    $serverscript .= "</script>";

    echo '<div id="1" style="display:none;">';
    $theme->assign('group_list', $group_list);
    $theme->assign('server_list', $server_list);
    $theme->assign('server_script', $serverscript);
    $theme->assign('server_admin_group_list', $server_admin_group_list);
    $theme->assign('cpok', $cpok);
    $theme->assign('server_group_list', $server_group_list);
    $theme->assign('permission_addadmin', $userbank->HasAccess(ADMIN_OWNER|ADMIN_ADD_ADMINS));
    $theme->display('page_admin_admins_add.tpl');
    echo '</div>';

    ?>
    </div>

    P.S. Поля выделенные жирным текстом, это то, что я добавил.

    Скриншоты:
    [​IMG] - если добавляю админа и прописываю срок.
    [​IMG] - если редактирую админа и тоже прописываю срок.


    16 июня: Сделал √, но уже с кроном(авто удаление админа в срок).
    Спасибо за помощь Онотоле :)
     
    Последнее редактирование: 16 июн 2012
  2. Игорь Охремчук

    Игорь Охремчук Админ uaplayer.com

    Сообщения:
    243
    Симпатии:
    366
    Нуу, если это весь твой труд, то следует ещё поработать.
    Начнём с бд. Логичней всего будет добавить интовый столбец в таблицу админов. Если срок не указан - хранить значение NULL, если же указан, то хранить timestamp. Почему timestamp? Во-первых им удобно выводить даты через смарти:
    PHP:
    {$timestamp|date_format:"%d.%m.%Y"}
    Во-вторых, не так сложно запилить выборку админов из бд (по-скольку в плагине это реализировано всего одним запросом).
    Ну а если ты решил реализовать полный интерфейс, то добавь нормальный датапикер.

    В твоих "исходниках" не написано ровным счётом ничего. Кстати, ещё советую немного дополнить CUserManager.php.
    Если будет конкретный вопрос - милости просим)
     
  3. legend1998

    legend1998

    Сообщения:
    292
    Симпатии:
    178
    Добавил в CUserManager.
    Теперь при добавлении вылазиет ajax с ошибкой:
    Error: the XML response that was returned from the server is invalid. Received:
    Warning: Missing argument 15 for AddAdmin() in /var/www/****/data/www/*******/includes/sb-callback.php on line 824

    Warning: Cannot modify header information - headers already sent by (output started at /var/www/****/data/www/****************/includes/sb-callback.php:824) in /var/www/*****/data/www/****************/includes/xajax.inc.php on line 766
    $('name.msg').setStyle('display', 'none');$('steam.msg').setStyle('display', 'none');$('email.msg').setStyle('display', 'none');$('password.msg').setStyle('display', 'none');Your passwords don't match$('password2.msg').setStyle('display', 'block');You must type a server password or uncheck the box.$('a_serverpass.msg').setStyle('display', 'block');$('server.msg').setStyle('display', 'none');$('web.msg').setStyle('display', 'none');ShowBox('Error', 'There are some errors in your input. Please correct them.', 'red', '', 1);

    Строчка 824(в CUserManager):
    function AddAdmin($mask, $srv_mask, $a_name, $a_steam, $a_email, $a_cpok, $a_password, $a_password2, $a_sg, $a_wg, $a_serverpass, $a_webname, $a_servername, $server, $singlesrv)

    Строчка 766 в xajax:
    header($sContentHeader);
     
  4. Игорь Охремчук

    Игорь Охремчук Админ uaplayer.com

    Сообщения:
    243
    Симпатии:
    366
    Тебе советы не помогут...
     
    Andrey нравится это.
  5. September

    September

    Сообщения:
    1.187
    Симпатии:
    164
    Рано ты начал всем этим заниматься. Если ты действительно 1998 года
     
  6. The Night Fury

    The Night Fury Администратор

    Сообщения:
    1.222
    Симпатии:
    915
    Оффтоп
     
  7. onotole.myarena.ru

    onotole.myarena.ru

    Сообщения:
    42
    Симпатии:
    34
    September нравится это.
  8. wiskas243

    wiskas243

    Сообщения:
    30
    Симпатии:
    0
    Ребята, а кто нибудь может выложить уже готовые файлы, чтоб кинуть по папкам с заменой ? Просто я в бд не шарю.