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

legend1998

Участник
Сообщения
286
Реакции
187
Здравствуйте.
Думаю, что я создал тему в нужном месте, т.к. я решил сделать поле при добавлении админки под названием "Срок админки"
Но когда я добавляю, срок не добавляется, а если я редактирую, но срок появляется.
Помогите, пожалуйста.
Вот содержимое /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. Поля выделенные жирным текстом, это то, что я добавил.

Скриншоты:
986e92615ff8.png
- если добавляю админа и прописываю срок.
77b57a956952.png
- если редактирую админа и тоже прописываю срок.


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

Игорь Охремчук

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

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

legend1998

Участник
Сообщения
286
Реакции
187
Добавил в 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);
 

September

Участник
Сообщения
5,238
Реакции
2,742
  • Команда форума
  • #5
Рано ты начал всем этим заниматься. Если ты действительно 1998 года
 

The Night Fury

Участник
Сообщения
1,300
Реакции
1,395
Оффтоп
 

wiskas243

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