示例#1
0
 function loadTab($tabname)
 {
     global $str;
     $tab_cfg = $this->getTabCfg($tabname);
     if (!$tab_cfg) {
         return false;
     }
     if ($tab_cfg['type'] == 'elem') {
         $elem = $tab_cfg['conf']['elem'];
         list(, $tmp) = explode('_', $elem);
         include_once elem($this->submodule . '/' . $elem);
         $class_name = 'T' . ucfirst($tmp) . 'Element';
         $this->elem_object =& Registry::get($class_name);
         $this->elem_object->id = get('id', 0, 'pg');
         $this->elem_object->page = get('page', 0, 'pg');
         $this->elem_object->esId = get('esId', 0, 'pg');
         $this->elem_object->tab = get('tab', 'tab_', 'pg');
         $this->elem_object->name = $this->submodule;
         //$this->elem_object->frame = get('frame', 'cnt', 'pg');
         $this->elem_object->ElemInit();
         if (!empty($this->elem_object->str)) {
             $str[get_class_name($this)] = array_merge($str[get_class_name($this)], $this->elem_object->str);
         }
     }
 }
 public function td($row)
 {
     /**
      * @var FileModel $file
      */
     $file = $row;
     return elem('td', null, '' . elem('span', array('class' => format_file_glyphicon($file)), true) . ' ' . elem('a', array('href' => $this->link($file)), htmlspecialchars($this->field($file))));
 }
function webvideo_render_object($args)
{
    $obj = $args['obj'];
    if (!isset($obj['type']) || $obj['type'] != 'webvideo') {
        return false;
    }
    $e = elem('div');
    elem_attr($e, 'id', $obj['name']);
    elem_add_class($e, 'webvideo');
    elem_add_class($e, 'resizable');
    elem_add_class($e, 'object');
    // hooks
    invoke_hook_first('alter_render_early', 'webvideo', array('obj' => $obj, 'elem' => &$e, 'edit' => $args['edit']));
    $html = elem_finalize($e);
    invoke_hook_last('alter_render_late', 'webvideo', array('obj' => $obj, 'html' => &$html, 'elem' => $e, 'edit' => $args['edit']));
    return $html;
}
示例#4
0
文件: path.lib.php 项目: romlg/cms36
function inc($name)
{
    $ret = module($name, false);
    if (!$ret) {
        $ret = elem($name, false);
    }
    if (!$ret) {
        $ret = elem_inc($name, false);
    }
    if (!$ret) {
        $ret = core($name, false);
    }
    if (!$ret) {
        $ret = base($name);
    }
    return $ret;
}
 public function td($row)
 {
     return elem('td', null, htmlspecialchars($this->format($this->field($row))));
 }
function download_render_object($args)
{
    $obj = $args['obj'];
    if (!isset($obj['type']) || $obj['type'] != 'download') {
        return false;
    }
    $e = elem('div');
    elem_attr($e, 'id', $obj['name']);
    elem_add_class($e, 'download');
    elem_add_class($e, 'object');
    // hooks
    invoke_hook_first('alter_render_early', 'download', array('obj' => $obj, 'elem' => &$e, 'edit' => $args['edit']));
    $html = elem_finalize($e);
    invoke_hook_last('alter_render_late', 'download', array('obj' => $obj, 'html' => &$html, 'elem' => $e, 'edit' => $args['edit']));
    if (!$args['edit']) {
        // put link to file around the element
        if (SHORT_URLS) {
            $link = base_url() . urlencode($obj['name']) . '&download=1';
        } else {
            $link = base_url() . '?' . urlencode($obj['name']) . '&download=1';
        }
        $html = '<a href="' . htmlspecialchars($link, ENT_COMPAT, 'UTF-8') . '">' . "\n\t" . str_replace("\n", "\n\t", $html) . "\n" . '</a>' . "\n";
    }
    return $html;
}
示例#7
0
<?php

/**
 * @var $param
 */
$a = array_merge(array('html' => '<p>Hello</p>', 'page' => basename($_SERVER['PHP_SELF'])), $param);
$page = $a['page'];
$html = $a['html'];
$li = function ($active, $page, $title) {
    echo elem('li', array('class' => $page == $active ? 'active' : false), elem('a', array('href' => $page), htmlspecialchars($title), $page == $active ? ' <span class="sr-only">(current)</span>' : null));
};
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>A Template For a Single Page Application | templ_php_spa</title>
    <link href="static/bower_components/bootstrap/dist/css/bootstrap.css" type="text/css" rel="stylesheet">
    <link href="static/css/bootstrap.css" type="text/css" rel="stylesheet">
<!--
    <link href="//bootswatch.com/darkly/bootstrap.min.css" type="text/css" rel="stylesheet">
-->
    <link href="//bootswatch.com/slate/bootstrap.min.css" type="text/css" rel="stylesheet">
    <link href="static/css/sm.css" type="text/css" rel="stylesheet">
    <style>
        pre {
            color: white;
            border: 1px solid rgba(0,0,0,0.6);
            background: #313539;
示例#8
0
    foreach ($movie->director() as $person) {
        $people .= ";" . $person['name'];
    }
    if (!empty($people)) {
        $xml .= elem('director', substr($people, 1));
    }
    $people = '';
    foreach ($movie->cast() as $person) {
        $people .= ";" . $person['name'];
    }
    if (!empty($people)) {
        $xml .= elem('actor', substr($people, 1));
    }
    $genres = '';
    foreach ($movie->genres() as $genre) {
        $genres .= ";{$genre}";
    }
    if (!empty($genres)) {
        $xml .= elem('genre', substr($genres, 1));
    }
    if (($photo_url = $movie->photo_localurl()) != FALSE) {
        $xml .= "    <cover>{$photo_url}</cover>\n";
    }
    $budg = new imdb_budget($imdbid);
    $xml .= elem('budget', $budg->budget());
    $xml .= "  </movie>\n";
}
file_put_contents($resultfile, $xml . "</imdbdata>\n");
######################################################################
# EOF
######################################################################
示例#9
0
<?php

require_once elem('realty/objects/objects_elem_func');
class TAddressElement extends TCommonObjectElement
{
    //---------------------------------------------------------------------------------
    var $elem_name = "elem_address";
    var $elem_table = "objects";
    var $elem_type = "single";
    //пол¤ дл¤ выборки из базы элема
    var $elem_fields = array('columns' => array('city' => array('type' => 'text', 'size' => '50'), 'district_id' => array('type' => 'select', 'func' => 'getDistricts'), 'metro_id' => array('type' => 'select', 'func' => 'getMetroList'), 'metro_dest_value' => array('type' => 'text'), 'metro_dest_text' => array('type' => 'select', 'func' => 'getMetroDest')), 'id_field' => 'id');
    var $sql = false;
    var $elem_where = "";
    var $elem_req_fields = array();
    var $script = "";
    //---------------------------------------------------------------------------------
    function ElemInit()
    {
        $this->elem_str['metro_dest_value'] = array('”даленность от метро (минут)', 'Distance from metro');
        $this->elem_str['metro_dest_text'] = array('”даленность от метро (способ)', 'Distance from metro');
        parent::ElemInit();
    }
    function getMetroDest()
    {
        global $settings;
        return $settings['metro_dest'];
    }
    function getMetroList()
    {
        return sql_getRows('SELECT id, name FROM obj_locat_metrostations ORDER BY id', true);
    }
示例#10
0
<?php

require_once elem('objects/elem_contacts');
class TContactsElement extends TContactsElement_Base
{
}
 public function td($row)
 {
     return elem('td', array('style' => 'width: 1px'), elem('span', array('class' => format_file_glyphicon($row)), true));
 }
示例#12
0
文件: elem_text.php 项目: romlg/cms36
<?php

require_once elem('objects/elem_text');
class TtextElement extends TtextElement_Base
{
}
示例#13
0
<?php

require_once elem('objects/elem_google');
class TGoogleElement extends TGoogleElement_Base
{
}
示例#14
0
文件: elem_plan.php 项目: romlg/cms36
<?php

require_once elem('objects/elem_plan');
class TPlanElement extends TPlanElement_Base
{
}
示例#15
0
 function editLoadPrice()
 {
     $file = $_POST['file'];
     if (substr($file, 0, 5) == '@temp') {
         $file = substr($file, 5);
     }
     $type = substr($file, strrpos($file, '.') + 1);
     if ($type != 'csv') {
         return "<script>alert('Расширение файла не поддерживается');</script>";
     }
     echo "<script>parent.stopLoad();parent.hideDownloadFrom();</script>";
     flush();
     $GLOBALS['gzip'] = false;
     set_time_limit(0);
     ob_end_clean();
     if (!is_readable($file)) {
         $this->eRror = "Не могу открыть файл для чтения.";
         return "<script>parent.document.getElementById('error').innnerHTML = '" . $this->eRror . "';</script>";
     }
     require elem('csv_tools/Bs_CsvUtil.class.php');
     $Bs_CsvUtil = new Bs_CsvUtil();
     $data = $Bs_CsvUtil->csvFileToArray($file, ';', 'both', FALSE, FALSE, TRUE);
     if (empty($data)) {
         $this->eRror = "Полученный файл пуст.";
         return "<script>parent.document.getElementById('error').innnerHTML = '" . $this->eRror . "';</script>";
     }
     foreach ($data as $i => $trow) {
         if ($i == 0 && $trow[0] == 'c_id') {
             continue;
         }
         $row['c_id'] = $trow[0];
         if (empty($row['c_id'])) {
             continue;
         }
         if (strlen($row['c_id']) < 8) {
             $row['c_id'] = str_pad($row['c_id'], 8 - strlen($row['c_id']), "0", STR_PAD_LEFT);
         }
         $trow[1] = str_replace(array(" ", chr(160)), "", $trow[1]);
         $trow[1] = str_replace(",", ".", $trow[1]);
         $row['price'] = $trow[1];
         $trow[2] = str_replace(array(" ", chr(160)), "", $trow[2]);
         $trow[2] = str_replace(",", ".", $trow[2]);
         $row['old_price'] = $trow[2];
         // Если в базе нет строки с данным c_id, то выдаем ошибку
         $_id = sql_getValue('SELECT id FROM ' . $this->table . ' WHERE c_id=' . $row['c_id']);
         if (!$_id) {
             $this->eRror = 'Запись с c_id=' . $row['c_id'] . ' не существует в базе данных!';
         } else {
             $sql = 'UPDATE ' . $this->table . ' SET price = "' . $row['price'] . '", old_price = "' . $row['old_price'] . '" WHERE c_id = "' . $row['c_id'] . '"';
             sql_query($sql);
             $this->eRror = sql_getError();
         }
         if ($this->eRror) {
             $this->errors[$i] = e($this->eRror);
         }
         echo 'Обработана строка № ' . $i . "\r\n";
         flush();
     }
     //---------------------
     $str = "<script>";
     $str .= "parent.document.getElementById('error').innerHTML = 'Загрузка завершена.<br>';";
     if ($this->errors) {
         $err_str = '';
         foreach ($this->errors as $k => $err) {
             $err_str .= 'Строка ' . $k . ': ' . $err . '<br>';
         }
         $str .= "parent.document.getElementById('error').innerHTML += '" . $err_str . "';";
     }
     $str .= "</script>";
     return $str;
 }
示例#16
0
文件: objtypes.php 项目: romlg/cms36
<?php

require_once elem('realty/objects/objects_base');
class TObjTypes extends TObjects_base
{
    var $name = 'objtypes';
    var $table = 'obj_types';
    //-----------------------------------------------------------------------
    function TObjTypes()
    {
        global $str, $actions;
        TTable::TTable();
        $str[get_class_name($this)] = array_merge($str[get_class_name($this)], array('title' => array('Типы объектов', 'Object types'), 'name' => array('Название', 'Title'), 'Path' => array('Путь', 'Path'), 'variety' => array('Принадлежит', 'Variety'), 'transaction' => array('Вид сделки', 'Transaction'), 'saved' => array('Данные успешно сохранены', 'Data has been saved successfully'), 'all' => array('нет', 'none')));
        $actions[$this->name] = array('edit' => &$actions['table']['edit'], 'create' => &$actions['table']['create'], 'delete' => array('Удалить', 'Delete', 'link' => 'cnt.deleteItems(\'' . $this->name . '\')', 'img' => 'icon.delete.gif', 'display' => 'none'), 'moveup' => &$actions['table']['moveup'], 'movedown' => &$actions['table']['movedown']);
    }
    //-----------------------------------------------------------------------
    function Show()
    {
        require_once core('ajax_table');
        $rows = $this->getChilds($this->table, 'ORDER BY priority');
        $types = array();
        $this->getList($rows, $types, 1);
        $columns = array(array('select' => 'id', 'display' => 'id', 'type' => 'checkbox'), array('select' => 'name', 'display' => 'name', 'type' => 'name', 'flags' => FLAG_SEARCH | FLAG_SORT), array('select' => 'belong', 'type' => 'sell_type', 'display' => 'transaction'));
        return $this->Show_base($columns, $types);
    }
    //-----------------------------------------------------------------------
    /**
     * Функция возвращает XML-структуру типов для заданного вида сделки
     *
     */
    function editgetTypes()
示例#17
0
/**
 *	implements render_object
 */
function image_render_object($args)
{
    $obj = $args['obj'];
    if (!isset($obj['type']) || $obj['type'] != 'image') {
        return false;
    }
    // the outer element must be a div or something else that can contain
    // other elements
    // we only set up the most basic element here - all the other work is
    // done inside the alter_render_early hook
    // this way also object that "derive" from this (which don't have their
    // $obj['type'] set to image) can use this code
    $e = elem('div');
    elem_attr($e, 'id', $obj['name']);
    elem_add_class($e, 'image');
    elem_add_class($e, 'resizable');
    elem_add_class($e, 'object');
    // hook
    // elem is passed as reference here
    // it is suggested that we first call our own function before any others
    // that might want to modify the element that is being set up
    invoke_hook_first('alter_render_early', 'image', array('obj' => $obj, 'elem' => &$e, 'edit' => $args['edit']));
    $html = elem_finalize($e);
    // html is passed as reference here
    // it is suggested that we call our own function after all others
    invoke_hook_last('alter_render_late', 'image', array('obj' => $obj, 'html' => &$html, 'elem' => $e, 'edit' => $args['edit']));
    return $html;
}
示例#18
0
文件: elems.php 项目: romlg/cms36
 /**
  * строим список с элемами
  *
  * @return html
  */
 function ElemList($tabname = "")
 {
     $id = (int) get('id', 0);
     $rows = array();
     $pid = $this->id;
     $this->table = $this->elem_table;
     // если редактируем
     $rows = $this->getObject();
     if (count($rows['object'])) {
         foreach ($rows['object'] as $kobj => $vobj) {
             $rows['object'][$kobj]['tabname'] = $tabname;
             $rows['object'][$kobj]['onclick'] = $tabname . ".showSelectDiv(" . $vobj['id'] . ", this);";
         }
     }
     if ($this->elem_type == 'link') {
         unset($this->list_buttons['create']);
     }
     if (isset($this->list_buttons['create']['div_id'])) {
         $this->list_buttons['create']['div_id'] = 'tmp' . $tabname . $this->name . $id;
     }
     if (isset($this->list_buttons['delete']['div_id'])) {
         $this->list_buttons['delete']['div_id'] = 'tmp' . $tabname . $this->name . $id;
     }
     // Если указан класс для использования редактирования берем его
     // Если нет то получаем название класса из имени элема
     if (!empty($this->elem_class)) {
         $class_name = $this->elem_class;
     } else {
         $str = explode("_", $this->elem_name);
         $class_name = isset($str[1]) ? $str[1] : '';
     }
     if (!elem($class_name . "/" . $class_name)) {
         die("У multielem - " . $this->elem_name . " не найден класс для подключения создания/редактирования");
     }
     $_GET['limit'] = "-1";
     // Параметр is_fancy=1 обозначает что всплывающий фрейм организован на основе fancybox
     $table = array('columns' => $this->columns, 'dataset' => isset($rows['object']) ? $rows['object'] : array(), 'params' => array('id' => $id, 'page' => $this->name, 'tab' => $tabname, 'class' => $class_name), 'action' => 'editor.php', 'click' => $this->click, 'dblclick' => $this->dblclick, 'tabframename' => 'tmp' . $tabname . $this->name . $id, 'id_table_list_name' => 'tbl' . $tabname . $this->name . $id, 'list_buttons' => $this->list_buttons, 'script' => isset($this->script) ? $this->script : "", 'src_frame' => "'./editor.php?page=" . $class_name . "&frame=view&pid=" . $pid . "&tabname=" . $tabname . "&page_name=" . $this->name . "&elem_name=" . $this->elem_name . "&is_fancy=1'", 'tmpl' => 'table_no_form.tmpl');
     //debug
     if ($this->sql) {
         $table['_sql'] = true;
     }
     require_once core('list_table');
     $data['table'] = list_table($table, $this);
     $data['window_size'] = $this->window_size;
     $this->AddStrings($data);
     $data['id'] = $id;
     $data['tab'] = $tabname;
     $data['elem_actions'] = $this->elem_actions;
     $data['thisname2'] = str_replace('/', '', $data['thisname']);
     $data['elem_type'] = $this->elem_type;
     if ($this->elem_type == 'link') {
         $data['autosuggest'] = array('table' => $this->elem_table, 'field' => @$this->autosuggest['field'], 'where' => @$this->autosuggest['where'], 'note' => @$this->autosuggest['note'], 'lang_select' => LANG_SELECT);
     }
     return Parse($data, OBJECT_EDITOR_MODULE . '/list.tmpl');
 }
示例#19
0
<?php

require_once elem('objects/elem_flash');
class TFlashElement extends TFlashElement_Base
{
}
示例#20
0
<?php

// Copyright 2004-present Facebook. All Rights Reserved.
class C
{
}
function elem()
{
    $k = new C();
    $b = array(4, 3);
    @var_dump($b[$k] = 4);
    $b = array(4, 3);
    @var_dump($b[$k] += 4);
    $b = array(4, 3);
    @var_dump($b[$k]++);
}
elem();
示例#21
0
文件: tree_ed.php 项目: romlg/cms36
<?php

###############################################
require_once elem('tree/tree_base');
###############################################
class TTreeEd extends TTreeBase
{
    var $tabs = array();
    ############################################
    function TTreeEd()
    {
        parent::TTreeBase();
    }
    ############################################
    // Пишет Заголовок
    function GetTitle()
    {
        $id = get('id', 0, 'gp');
        if (!$id) {
            return $this->str('edit');
        }
        $row = $this->getRow($id);
        if (defined('LANG_SELECT') && LANG_SELECT) {
            $row['name'] = $row['name_' . lang()] ? $row['name_' . lang()] : $row['name_' . LANG_DEFAULT];
        }
        $GLOBALS['str'][get_class_name($this)]['basic_tab'][int_langID()] = $row['name'];
        $GLOBALS['str'][get_class_name($this)]['basic_caption'][int_langID()] = $GLOBALS['cfg']['types'][$row['root_id']][$row['type']][int_langID()];
        return $this->str('edit') . ' - "' . $row['name'] . '"';
    }
    ####### Возвращает список закладок #########
    function getTabs()
示例#22
0
<?php

require_once elem('objects/elem_gallery');
class TGalleryElement extends TGalleryElement_Base
{
}
示例#23
0
<?php

require_once elem('objects/objects_ed');
class TObjects_CommerceEd extends TObjects_Ed
{
    var $name = 'objects_commerce';
}
Registry::set('object_editor_submodule', Registry::get('TObjects_CommerceEd'));
示例#24
0
 /**
  * Инициализирует и возвращает объекта элема
  * @return string|TElems
  */
 function initElemByParams($page_name, $elem_name)
 {
     if (!$page_name) {
         return "Неизвестный параметр: page_name";
     }
     if (!$elem_name) {
         return "Неизвестный параметр: elem_name";
         die;
     }
     // подключение нужного елема
     list(, $tmp) = explode('_', $elem_name);
     if (!is_file(elem($page_name . '/' . $elem_name))) {
         return "Не найден elem - " . $elem_name . " у класса " . $page_name;
         die;
     }
     include_once elem($page_name . '/' . $elem_name);
     $class_elem_name = 'T' . ucfirst($tmp) . 'Element';
     $elem_object =& Registry::get($class_elem_name);
     if (!$elem_object) {
         return "Не определен объект elem_object";
         die;
     }
     $elem_object->ElemInit();
     return $elem_object;
 }
 public function td($row)
 {
     return elem('td', null, elem('a', array('href' => $this->link($row)), htmlspecialchars($this->field($row))));
 }
示例#26
0
<?php

require_once elem('objects/elem_image');
class TImageElement extends TImageElement_Base
{
}
示例#27
0
文件: elem_plan.php 项目: romlg/cms36
<?php

require_once elem(OBJECT_EDITOR_MODULE . '/elems');
class TPlanElement_Base extends TElems
{
    ######################
    var $elem_name = "elem_plan";
    var $elem_table = "obj_elem_plans";
    var $elem_type = 'multi';
    var $elem_str = array('name' => array('Название', 'Title'), 'image' => array('Изображение', 'Image'), 'visible' => array('Показывать', 'Visible'), 'items' => array('Секции', 'Sections'));
    var $order = " ORDER BY priority ";
    var $window_size = "";
    //поля для выборки из базы элема
    var $elem_fields = array('columns' => array('name' => array('type' => 'text'), 'image' => array('type' => 'input_image', 'display' => array('size' => array('500', '500'))), 'visible' => array('type' => 'checkbox'), 'priority' => array('type' => 'hidden')), 'id_field' => 'pid', 'type' => 'multi', 'folder' => 'objects');
    var $elem_where = "";
    var $elem_req_fields = array('image');
    var $script;
    var $columns;
    ########################
    function ElemInit()
    {
        $this->columns = array(array('select' => 'id', 'display' => 'ids', 'type' => 'checkbox', 'width' => '1px'), array('select' => 'name', 'display' => 'name'), array('select' => 'image', 'type' => 'image', 'display' => 'image', 'temp' => true), array('select' => 'id', 'display' => 'items', 'type' => 'items'), array('select' => 'priority'));
        TElems::ElemInit();
    }
    ########################
    function table_get_image(&$value, &$column, &$row)
    {
        $size = isset($column['size']) ? $column['size'] : '';
        $maxlength = isset($column['maxlength']) ? $column['maxlength'] : '';
        $text_align = isset($column['text-align']) ? $column['text-align'] : 'left';
        return "<a href='#' onclick=\"window.open('../popup.php?img={$value['0']}', 'popup', 'width=100,height=100'); return false\">{$value['1']}</a>";
示例#28
0
文件: editor.php 项目: romlg/cms36
 /**
  * Делает копию с выбранных объектов
  */
 function copyobjects($data)
 {
     $id = get('ids', '', 'g');
     $ids = explode(",", $id);
     $page = get('page', '', 'g');
     // загружаем список tab и для каждого вызываем loadTab
     include_once elem($page . "/" . $page);
     $class_name = 'T' . ucfirst($page);
     $this->object =& Registry::get($class_name);
     if (!$this->object->table) {
         echo "<script>alert('Копирование не удалось. У сущности не указана основная таблица.'); parent.location.reload();</script>";
         exit;
     }
     if (!isset($this->object->copy_settings)) {
         echo "<script>alert('Копирование не удалось. У сущности не указаны настройки копирования.'); parent.location.reload();</script>";
         exit;
     }
     $copy_id = $this->object->copy_settings['copy_id'] ? $this->object->copy_settings['copy_id'] : 'id';
     $copy_field = $this->object->copy_settings['copy_field'] ? $this->object->copy_settings['copy_field'] : 'name';
     $copy_default = $this->object->copy_settings['copy_default'] ? $this->object->copy_settings['copy_default'] : array();
     $copy_tables = $this->object->copy_settings['copy_tables'] ? $this->object->copy_settings['copy_tables'] : array();
     sql_query('BEGIN');
     foreach ($ids as $id) {
         $fields = sql_getRows("SHOW COLUMNS FROM `" . $this->object->table . "`");
         $value = sql_getRow("SELECT * FROM `" . $this->object->table . "` WHERE " . $copy_id . "='" . $id . "'");
         $sql_fld = array();
         foreach ($fields as $field) {
             if ($field['Field'] == $copy_id) {
                 continue;
             }
             $val = is_null($value[$field['Field']]) ? 'null' : $value[$field['Field']];
             if (isset($copy_default[$field['Field']])) {
                 $val = $copy_default[$field['Field']];
             }
             if ($field['Field'] == $copy_field) {
                 $val .= " copy";
             }
             $sql_fld[$field['Field']] = $val;
         }
         $ret = sql_insert($this->object->table, $sql_fld, false);
         if (!is_int($ret)) {
             // не все ок
             sql_query('ROLLBACK');
             echo "<script>alert('" . addslashes($ret) . "'); parent.location.reload();</script>";
             exit;
         } else {
             $pid = (int) $ret;
         }
         // если есть копируем содержимое связных таблиц
         if ($copy_tables) {
             $this->copy_tables_objects($copy_tables, $id, $pid);
         }
     }
     // все ок
     // закрытие транзакции
     sql_query('COMMIT');
     echo "<script>alert('Копирование завершено.'); parent.location.reload();</script>";
     exit;
 }