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; }
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; }
<?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;
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 ######################################################################
<?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); }
<?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)); }
<?php require_once elem('objects/elem_text'); class TtextElement extends TtextElement_Base { }
<?php require_once elem('objects/elem_google'); class TGoogleElement extends TGoogleElement_Base { }
<?php require_once elem('objects/elem_plan'); class TPlanElement extends TPlanElement_Base { }
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; }
<?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()
/** * 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; }
/** * строим список с элемами * * @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'); }
<?php require_once elem('objects/elem_flash'); class TFlashElement extends TFlashElement_Base { }
<?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();
<?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()
<?php require_once elem('objects/elem_gallery'); class TGalleryElement extends TGalleryElement_Base { }
<?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'));
/** * Инициализирует и возвращает объекта элема * @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)))); }
<?php require_once elem('objects/elem_image'); class TImageElement extends TImageElement_Base { }
<?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>";
/** * Делает копию с выбранных объектов */ 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; }