Админка для XBTT

E

Explosive

Гость
#1
################################################################
## Название мода: Админка для 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');
?>
admin_xbtt.tpl:
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"  /> &nbsp;&nbsp;<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/
 
Сверху