$Date: 2005-10-10 14:08:54 +0100 (Mon, 10 Oct 2005) $
| > $Revision: 23 $
| > $Author: matt $
+---------------------------------------------------------------------------
|
| > Skin -> Image Macro functions
| > Module written by Matt Mecham
| > Date started: 4th April 2002
|
| > Module Version Number: 1.0.0
| > DBA Checked: Tue 25th May 2004
+--------------------------------------------------------------------------
*/
if ( ! defined( 'IN_ACP' ) )
{
print "
Неверный вход
У Вас нет доступа к директиве этого файла. Если Вы проводили обновления, убедитесь, что не забыли обновить 'admin.php'.";
exit();
}
class ad_skin_macros {
var $base_url;
/**
* Section title name
*
* @var string
*/
var $perm_main = "lookandfeel";
/**
* Section title name
*
* @var string
*/
var $perm_child = "image";
function auto_run()
{
//-----------------------------------------
// Kill globals - globals bad, Homer good.
//-----------------------------------------
$tmp_in = array_merge( $_GET, $_POST, $_COOKIE );
foreach ( $tmp_in as $k => $v )
{
unset($$k);
}
//-----------------------------------------
switch($this->ipsclass->input['code'])
{
case 'edit':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
$this->show_macros();
break;
case 'doedit':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
$this->edit_set_name();
break;
case 'macroremove':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':remove' );
$this->macro_remove();
break;
case 'doeditmacro':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':edit' );
$this->macro_edit();
break;
case 'doaddmacro':
$this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':add' );
$this->macro_add();
break;
default:
print "Действие не выбрано"; exit();
break;
}
}
//-----------------------------------------
// Remove macro
//-----------------------------------------
function macro_remove()
{
if ($this->ipsclass->input['mid'] == "")
{
$this->ipsclass->admin->error("Вы должны выбрать ID макроса, вернитесь назад и попробуйте еще раз");
}
$id = intval($this->ipsclass->input['id']);
$p = intval($this->ipsclass->input['p']);
$this->ipsclass->DB->simple_exec_query( array( 'delete' => 'skin_macro', 'where' => "macro_id='".$this->ipsclass->input['mid']."'" ) );
//-----------------------------------------
// Recache macros
//-----------------------------------------
$this->ipsclass->cache_func->_recache_macros($id, $p);
//-----------------------------------------
// Bounce back
//-----------------------------------------
$this->ipsclass->input['id'] = $id;
$this->ipsclass->main_msg = "Макрос удален!";
$this->show_macros();
}
//-----------------------------------------
// Apply the edit to the DB
//-----------------------------------------
function macro_edit()
{
if ($this->ipsclass->input['mid'] == "")
{
$this->ipsclass->admin->error("Вы должны выбрать ID макроса, вернитесь назад и попробуйте еще раз");
}
$id = intval($this->ipsclass->input['id']);
$p = intval($this->ipsclass->input['p']);
$key = $this->ipsclass->DB->add_slashes( $this->ipsclass->txt_safeslashes($_POST['variable']) );
$val = $this->ipsclass->DB->add_slashes( $this->ipsclass->txt_safeslashes($_POST['replacement']) );
//-----------------------------------------
// Get macro for examination..
//-----------------------------------------
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_macro', 'where' => "macro_id='".$this->ipsclass->input['mid']."'" ) );
$this->ipsclass->DB->simple_exec();
if ( ! $row = $this->ipsclass->DB->fetch_row() )
{
$this->ipsclass->admin->error("Невозможно получить запись из базы данных");
}
//-----------------------------------------
// Is this our macro set?
//-----------------------------------------
if ( $row['macro_set'] == $id )
{
//-----------------------------------------
// Okay, update...
//-----------------------------------------
$this->ipsclass->DB->simple_construct( array( 'update' => 'skin_macro', 'set' => "macro_value='$key', macro_replace='$val'", 'where' => "macro_id=".$this->ipsclass->input['mid'] ) );
$this->ipsclass->DB->simple_exec();
}
else
{
//-----------------------------------------
// No? OK - best add it as a 'new' macro
//-----------------------------------------
$this->ipsclass->DB->manual_addslashes = 1;
$this->ipsclass->DB->do_insert( 'skin_macro', array (
'macro_value' => $key,
'macro_replace' => $val,
'macro_can_remove' => 1,
'macro_set' => $id
) );
$this->ipsclass->DB->manual_addslashes = 0;
}
//-----------------------------------------
// Recache macros
//-----------------------------------------
$this->ipsclass->cache_func->_recache_macros($id, $p);
//-----------------------------------------
// Bounce back
//-----------------------------------------
$this->ipsclass->input['id'] = $id;
$this->show_macros();
}
//-----------------------------------------
// ADD MACRO
//-----------------------------------------
function macro_add()
{
if ($this->ipsclass->input['mid'] == "")
{
$this->ipsclass->admin->error("Вы должны выбрать ID макроса, вернитесь назад и попробуйте еще раз");
}
$id = intval($this->ipsclass->input['id']);
$p = intval($this->ipsclass->input['p']);
$this->ipsclass->DB->do_insert( 'skin_macro', array (
'macro_value' => $this->ipsclass->txt_safeslashes($_POST['variable']),
'macro_replace' => $this->ipsclass->txt_safeslashes($_POST['replacement']),
'macro_can_remove' => 1,
'macro_set' => $id
) );
//-----------------------------------------
// Recache macros
//-----------------------------------------
$this->ipsclass->cache_func->_recache_macros($id, $p);
//-----------------------------------------
// Bounce back
//-----------------------------------------
$this->ipsclass->input['id'] = $id;
$this->show_macros();
}
//-----------------------------------------
// Show macros
//-----------------------------------------
function show_macros()
{
//-----------------------------------------
if ($this->ipsclass->input['id'] == "")
{
$this->ipsclass->admin->error("Вы должны выбрать ID макроса, вернитесь назад и попробуйте еще раз");
}
//-----------------------------------------
// check tree...
//-----------------------------------------
$this_set = "";
if ( $this->ipsclass->input['p'] > 0 )
{
$in = ','.$this->ipsclass->input['p'];
}
//-----------------------------------------
// Get macros
//-----------------------------------------
$macros = $this->ipsclass->cache_func->_get_macros($this->ipsclass->input['id'], $this->ipsclass->input['p']);
//-----------------------------------------
// Get img_dir this set is using...
//-----------------------------------------
$this->ipsclass->DB->simple_construct( array( 'select' => '*', 'from' => 'skin_sets', 'where' => "set_skin_set_id='".$this->ipsclass->input['id']."'" ) );
$this->ipsclass->DB->simple_exec();
$skin = $this->ipsclass->DB->fetch_row();
$this->ipsclass->admin->page_detail = "Для изменения макроса, нажмите на ссылку 'Изменить' напротив выбранного макроса.";
$this->ipsclass->admin->page_title = "Управление заменами макросов шаблона: {$skin['set_name']}";
//-----------------------------------------
// Start output
//-----------------------------------------
$this->ipsclass->html .= "
";
$this->ipsclass->html .= "";
$this->ipsclass->html .= $this->ipsclass->adskin->skin_jump_menu_wrap();
//-----------------------------------------
// Show altered / unaltered
// legend
//-----------------------------------------
$this->ipsclass->html .= "
Пример работы макроса
Если вы добавили макрос 'green_font' и замену для него в виде '<font color='green'>', каждый элемент текста <{green_font}> будет отображен как <font color='green'>
<#IMG_DIR#> доступен в любом макросе. Во время вывода текста на экран будет произведена замена данного тэга на путь прописанный в настройках к папке с изображениями.
Описание обозначений:
{$this->altered} Этот макрос был изменен.
{$this->unaltered} Этот макрос не был изменен.
{$this->inherited} Этот макрос построен на базе существующего макрос.
";
$this->ipsclass->admin->nav[] = array( 'section='.$this->ipsclass->section_code.'&act=sets' ,'Управление стилями' );
$this->ipsclass->admin->nav[] = array( '' ,'Управление заменами макросов '.$skin['set_name'] );
$this->ipsclass->admin->output();
}
}
?>