E
Explosive
Гость
################################################################
## Название мода: Админка для XBTT
## Автор мода: Roman
## Адаптация с SVN: Explosive
## Описание:Данный мод позволяет из админки управлять всеми доступными из конфига настройками для XBTT анонсера.
## Сложность: легко
## Время установки: 5 мин
################################################################
admin_xbtt.php:
admin_xbtt.tpl:
Установка:
## Название мода: Админка для XBTT
## Автор мода: Roman
## Адаптация с SVN: Explosive
## Описание:Данный мод позволяет из админки управлять всеми доступными из конфига настройками для XBTT анонсера.
## Сложность: легко
## Время установки: 5 мин
################################################################
admin_xbtt.php:
PHP:
<?php
// ACP Header - START
if (!empty($setmodules))
{
$module['TorrentPier']['XBTT control'] = basename(__FILE__);
return;
}
require('./pagestart.php');
// ACP Header - END
$i = 0;
$sql = 'SELECT * from xbt_config';
if (!$result = DB()->sql_query($sql))
{
message_die('GENERAL_MESSAGE', 'Ахтунг, таблица пуста');
}
while($row = DB()->sql_fetchrow($result))
{
$massiv[] = $row;
$template->assign_block_vars('conf', array(
'ROW_CLASS' => !($i % 2) ? 'row2' : 'row1',
'NAME' => $row['name'],
'VALUE' => $row['value'],
));
$i++;
}
print_page('admin_xbtt.tpl', 'admin');
?>
PHP:
<style type="text/css">
.inp-inact { border: 1px solid #7f9dbd; background-color: #D1D7DC; color: grey; }
</style>
<!--========================================================================-->
<h1 class="tCenter">Хобото-админка</h1>
<table width="99%" cellpadding="4" cellspacing="1" border="0" align="center" class="forumline">
<tr class="row3">
<td>Параметр</td><td>Значение</td>
</tr>
<form method="post" name="post">
<!-- BEGIN conf -->
<tr class="{conf.ROW_CLASS}">
<td width="10%" nowrap>{conf.NAME}</td>
<td nowrap><input class="inp-inact" name="{conf.NAME}" type="text" size="100" value="{conf.VALUE}" readonly="readonly" /> <input type="button" value="Save param" disabled="disabled" /></td>
</tr>
<!-- END config -->
<script type="text/javascript">
$(document).ready(function(){
var frm = document.post;
var val = '';
for (var i=0;i < frm.elements.length;i++) {
var elmnt = frm.elements[i];
if (elmnt.type=='text') {
$(":input").dblclick(function(){
$(this).attr("readonly","");
$(this).removeClass("inp-inact");
$(this).next().removeAttr("disabled");
$(this).next().click(function(){
var val = $(this).prev().val();
var name= $(this).prev().attr("name");
ajax.edit_xbtt(name, val);
});
});
break;
}
}
});
ajax.edit_xbtt = function(name, val) {
ajax.exec({
action : "edit_xbtt",
name : name,
val : val
});
};
ajax.callback.edit_xbtt = function(data){
var name = data.name;
var th_input = $("input[name='"+name+"']");
th_input.val(data.val);
th_input.addClass("inp-inact");
th_input.next().attr("disabled",true);
};
</script>
</form>
</table>
PHP:
Открыть ajax.php
найти
'view_post' => array('guest'),
после вставить
'edit_xbtt' => array('admin'),
в самом низу, перед }
вставить
function edit_xbtt ()
{
$action = $this->request['name'];
$val = $this->request['val'];
if (!$val || !$action) $this->ajax_die('Не введены обязательные параметры');
$action = DB()->escape($action);
$val = DB()->escape($val);
$sql = 'UPDATE xbt_config SET value = "'.$val.'" WHERE name = "'.$action.'"';
if (!$db->query($sql)) $this->ajax_die('Ошибка выполнения запроса');
else
{
$this->response['name'] = $action;
$this->response['val'] = $val;
}
}
admin_xbtt.php поместить в /admin/
admin_xbtt.tpl поместить в /templates/admin/