SVarlamov
9 years ago
commit
e72fcee40e
7 changed files with 794 additions and 0 deletions
@ -0,0 +1,17 @@
|
||||
## faster |
||||
|
||||
# Модуль Импорт | Экспорт |
||||
|
||||
# Автор: Playmore (Сергей Батурин) pm@pmore.ru |
||||
|
||||
|
||||
## Ускоряем разработку сайтов, быстро создавая рубрики. |
||||
|
||||
* Импорт | экспорт рубрик, запросов и системных блоков |
||||
|
||||
|
||||
## Перед копированием модуля в папку modules, удалите файл README.md, копируйте только корневую папку faster со всем ее содержимым внутри! |
||||
|
||||
## Changelog: |
||||
|
||||
22.09.2013 - версия 0.4 fix |
@ -0,0 +1,31 @@
|
||||
<?php |
||||
|
||||
return array( |
||||
'title' => 'Подобные цены', |
||||
'desc' => 'Позволяет отобразить тизеры документов из рубрики с подобными ценами', |
||||
'author' => 'Юрий Рахимов', |
||||
'db_name' => 'Подобные цены', |
||||
'db_text' => '<h3>За такуюже цену:</h3><br /> |
||||
<?php |
||||
$last_count=5; //Количество |
||||
$rubric_field_id=29; //ID поля с ценой |
||||
$percent=10; //Проценты |
||||
$price=get_document_field($_REQUEST[\'id\'],$rubric_field_id); |
||||
$price_from=intval($price-$price*$percent/200); |
||||
$price_to=intval($price+$price*$percent/200); |
||||
$sql=$AVE_DB->Query("Select |
||||
d.document_id |
||||
FROM |
||||
".PREFIX."_document_fields d, |
||||
".PREFIX."_documents a |
||||
WHERE a.Id=d.document_id AND d.rubric_field_id=".$rubric_field_id." AND d.field_number_value>".$price_from." AND d.field_number_value<".$price_to." AND a.document_status=1 |
||||
ORDER by d.field_number_value |
||||
LIMIT ".$last_count); |
||||
while ($row = $sql->FetchAssocArray()) { |
||||
$t=eval2var(\'?>\'.showteaser($row[\'document_id\']).\'<?\'); |
||||
echo $t; |
||||
} |
||||
?>' |
||||
); |
||||
|
||||
?> |
@ -0,0 +1,27 @@
|
||||
<?php |
||||
|
||||
return array( |
||||
'title' => 'Просмотренные документы', |
||||
'desc' => 'Выводит историю просмотренных документов - показывает их тизеры', |
||||
'author' => 'Юрий Рахимов', |
||||
'db_name' => 'Просмотренные документы', |
||||
'db_text' => '<?php |
||||
$last_count=5; |
||||
$rubrics=5; //можно указывать номера рубрик через запятую |
||||
$_SESSION[\'doc_view\'][$_REQUEST[\'id\']]=time(); |
||||
$docs=$_SESSION[\'doc_view\']; |
||||
unset($docs[$_REQUEST[\'id\']]); |
||||
arsort($docs); |
||||
$ar=0; |
||||
foreach($docs as $k=>$v){ |
||||
$sql=$AVE_DB->Query("SELECT Id from ".PREFIX."_documents WHERE Id=\'".intval($k)."\' AND rubric_id IN (".$rubrics.") and document_status=1")->GetCell(); |
||||
$t=eval2var(\'?>\'.showteaser($sql).\'<?\'); |
||||
|
||||
if(!empty($t)){$ar++;echo $t;} |
||||
if($ar>=$last_count) break; |
||||
} |
||||
|
||||
?>' |
||||
); |
||||
|
||||
?> |
@ -0,0 +1,8 @@
|
||||
<?php |
||||
/** |
||||
* Файл-заглушка, предназначенный для запрета показа списка файлов в текущей директории, |
||||
* если через адресную строку браузера было прямое общращение к данной директории. |
||||
*/ |
||||
header('Location:/'); |
||||
exit; |
||||
?> |
@ -0,0 +1,463 @@
|
||||
<?php |
||||
|
||||
class Faster { |
||||
|
||||
const VERSION = '0.5'; |
||||
|
||||
public $tdir = NULL; |
||||
private $session = NULL; |
||||
|
||||
/** |
||||
* @var AVE_DB |
||||
*/ |
||||
public $db = FALSE; |
||||
|
||||
/** |
||||
* @var AVE_Template |
||||
*/ |
||||
public $template = FALSE; |
||||
protected $datadir = 'data'; |
||||
|
||||
public function __construct($tpl_dir) { |
||||
|
||||
global $AVE_DB, $AVE_Template; |
||||
$this->db = $AVE_DB; |
||||
$this->template = $AVE_Template; |
||||
$this->tdir = $tpl_dir; |
||||
$this->datadir = BASE_DIR . '/modules/faster/' . $this->datadir . '/'; |
||||
$this->session = $this->template->get_template_vars('sess'); |
||||
} |
||||
|
||||
/* -------------- |
||||
Actions |
||||
---------------- */ |
||||
/* |
||||
* Стартовая страница |
||||
*/ |
||||
|
||||
public function show_import() { |
||||
|
||||
$d['files'] = $this->get_data_files(); |
||||
|
||||
$d['rubrics'] = $this->get_rubrics(); |
||||
|
||||
$d['sysblocks'] = $this->get_sys_blocks(); |
||||
|
||||
$this->template->assign('content', $this->view('import', $d)); |
||||
} |
||||
|
||||
public function ajax_rub_delete() { |
||||
|
||||
/* $this->is_ajax() OR exit('no ajax'); |
||||
!empty($_POST['file']) OR exit('post empty'); |
||||
file_exists($this->datadir.$_POST['file'].'.php') OR exit('file not found'); */ |
||||
|
||||
if ($this->is_ajax() AND !empty($_POST['file']) AND file_exists($this->datadir . $_POST['file'] . '.php')) { |
||||
|
||||
if (unlink($this->datadir . $_POST['file'] . '.php')) |
||||
$this->send_json(array('type' => 'success', 'message' => 'Файл конфигурации удален')); |
||||
else |
||||
$this->send_json(array('type' => 'error', 'message' => 'Файл найден но не может быть удален.')); |
||||
} |
||||
else |
||||
$this->send_json(array('type' => 'error', 'message' => 'Файл не найден или не получен параметр.')); |
||||
} |
||||
|
||||
public function ajax_rub_export() { |
||||
|
||||
if (!empty($_POST['rubs']) AND is_array($_POST['rubs'])) { |
||||
|
||||
$c = 0; |
||||
foreach ($_POST['rubs'] as $id) { |
||||
|
||||
if ($this->export_rubric($id)) |
||||
$c++; |
||||
} |
||||
} |
||||
|
||||
if ($this->is_ajax()) |
||||
return $this->send_json(array('type' => 'success', 'message' => 'Экспортировано: ' . $c)); |
||||
|
||||
header('Location: ' . $this->uri('1', TRUE)); |
||||
} |
||||
|
||||
public function ajax_rub_import() { |
||||
|
||||
$req = (empty($_POST['with_req'])) ? FALSE : TRUE; |
||||
|
||||
if (!empty($_POST['files']) AND is_array($_POST['files'])) { |
||||
$c = 0; |
||||
foreach($_POST['files'] as $file){ |
||||
|
||||
if($this->import_rubric($file, $req)) $c++; |
||||
} |
||||
header('Location: ' . $this->uri('1', TRUE)); |
||||
} |
||||
|
||||
if($this->is_ajax() AND !empty($_POST['filenames'])){ |
||||
//$this->send_json(array('type' => 'success', 'message' => var_export($_POST['filenames'][0]['value'], TRUE))); |
||||
$c = 0; |
||||
foreach($_POST['filenames'] as $file){ |
||||
|
||||
if($this->import_rubric($file['value'], $req)) $c++; |
||||
} |
||||
return $this->send_json(array('type' => 'success', 'message' => 'Импортировано: ' . $c)); |
||||
} |
||||
|
||||
return $this->send_json(array('type' => 'error', 'message' => 'Выберите рубрики для импорта в систему')); |
||||
} |
||||
|
||||
public function ajax_sys_import() { |
||||
|
||||
if(!empty($_POST['sys_blocks']) AND $this->is_ajax()){ |
||||
|
||||
$c = 0; |
||||
foreach($_POST['sys_blocks'] as $file){ |
||||
|
||||
if($this->import_sysblock($file['value'])) $c++; |
||||
} |
||||
return $this->send_json(array('type' => 'success', 'message' => 'Импортировано: ' . $c)); |
||||
} |
||||
|
||||
return $this->send_json(array('type' => 'error', 'message' => 'Выберите системные блоки для импорта в систему')); |
||||
} |
||||
|
||||
/* ---------------- |
||||
Methods |
||||
------------------ */ |
||||
|
||||
/** |
||||
* Экспортируем рубрику+поля рубрики+запросы |
||||
* (пока без условий в запросах) |
||||
* @param type $rub_id |
||||
* @param type $filename |
||||
* @return boolean |
||||
*/ |
||||
public function export_rubric($rub_id) { |
||||
|
||||
$rub_id = (int) $rub_id; |
||||
$file['r_self'] = $this->db->Query('SELECT |
||||
rubric_title, |
||||
rubric_alias, |
||||
rubric_template, |
||||
rubric_template_id, |
||||
rubric_author_id, |
||||
rubric_created, |
||||
rubric_docs_active, |
||||
rubric_code_start, |
||||
rubric_code_end, |
||||
rubric_teaser_template, |
||||
rubric_admin_teaser_template, |
||||
rubric_header_template, |
||||
rubric_linked_rubric, |
||||
rubric_description, |
||||
rubric_position |
||||
FROM ' . PREFIX . '_rubrics WHERE Id = ' . $rub_id)->FetchAssocArray(); |
||||
|
||||
if (!empty($file['r_self'])) { |
||||
|
||||
$file['rub_export_id'] = $rub_id; |
||||
$file['title'] = $file['r_self']['rubric_title']; |
||||
$file['desc'] = $file['r_self']['rubric_description']; |
||||
|
||||
$file['r_fields'] = $this->query('SELECT |
||||
Id as old_id, |
||||
rubric_field_alias, |
||||
rubric_field_template, |
||||
rubric_field_template_request, |
||||
rubric_field_title, |
||||
rubric_field_type, |
||||
rubric_field_position, |
||||
rubric_field_default |
||||
FROM ' . PREFIX . '_rubric_fields WHERE rubric_id = ' . $rub_id); |
||||
|
||||
$file['r_requests'] = $this->query('SELECT |
||||
request_items_per_page, |
||||
request_title, |
||||
request_template_item, |
||||
request_template_main, |
||||
request_order_by, |
||||
request_order_by_nat, |
||||
request_author_id, |
||||
request_created, |
||||
request_description, |
||||
request_asc_desc, |
||||
request_show_pagination, |
||||
request_where_cond, |
||||
request_cache_lifetime, |
||||
request_lang |
||||
FROM ' . PREFIX . '_request WHERE rubric_id = ' . $rub_id); |
||||
|
||||
$filename = md5(serialize($file['r_fields']).$rub_id); //имя файла по набору полей |
||||
//var_export($file); |
||||
return file_put_contents($this->datadir . $filename . '.php', serialize($file)); |
||||
} |
||||
|
||||
return FALSE; |
||||
} |
||||
|
||||
/** |
||||
* Импортируем рубрику из указанного файла (без расширения) |
||||
* @param type $filename |
||||
* @return boolean |
||||
*/ |
||||
public function import_rubric($filename, $req_import = TRUE) { |
||||
|
||||
$file = $this->datadir . $filename . '.php'; |
||||
|
||||
if (file_exists($file)) { |
||||
|
||||
$file = file_get_contents($file); |
||||
$file = @unserialize($file); |
||||
|
||||
//array |
||||
if (!empty($file['r_self']) ) { |
||||
|
||||
$file['r_self'] = $this->text_fields($file['r_self'], array( |
||||
'rubric_title', |
||||
'rubric_alias', |
||||
'rubric_template', |
||||
'rubric_code_start', |
||||
'rubric_code_end', |
||||
'rubric_teaser_template', |
||||
'rubric_admin_teaser_template', |
||||
'rubric_header_template', |
||||
'rubric_linked_rubric', |
||||
'rubric_description' |
||||
)); |
||||
$fields = implode(',', array_keys($file['r_self'])); |
||||
$values = implode(',', array_values($file['r_self'])); |
||||
// импортируем рубрику |
||||
$this->db->Query('INSERT INTO ' . PREFIX . '_rubrics (' . $fields . ') VALUES (' . $values . ')'); |
||||
$new_id = $this->db->InsertId(); |
||||
|
||||
// импортируем поля, запоминаем связи старых и новых |
||||
$fields = ''; |
||||
if (count($file['r_fields']) AND !empty($file['r_fields'][0]) AND is_array($file['r_fields'][0])) { |
||||
|
||||
$replace = array(); |
||||
foreach ($file['r_fields'] as &$frow) { |
||||
$frow = $this->text_fields($frow, array( |
||||
'rubric_field_alias', |
||||
'rubric_field_title', |
||||
'rubric_field_type', |
||||
'rubric_field_default', |
||||
'rubric_field_template', |
||||
'rubric_field_template_request' |
||||
)); |
||||
$frow['rubric_id'] = $new_id; //new rubric id |
||||
$old_id = $frow['old_id']; unset($frow['old_id']); |
||||
$fields = implode(',', array_keys($frow)); // из за лишнего старого old_id |
||||
$values = '(' . implode(',', array_values($frow)) . ')'; |
||||
$this->db->Query('INSERT INTO ' . PREFIX . '_rubric_fields (' . $fields . ') VALUES ' .$values); |
||||
$f_id = $this->db->InsertId(); |
||||
$replace['tag:fld:'.$old_id] = 'tag:fld:'.$f_id; // для шаблона рубрики |
||||
$replace['tag:rfld:'.$old_id] = 'tag:rfld:'.$f_id; // для шаблонов запросов |
||||
} |
||||
// переписываем шаблон рубрики с новыми полями |
||||
if(count($replace)) $template = str_replace(array_keys($replace), array_values($replace), $file['r_self']['rubric_template']); |
||||
|
||||
$this->db->Query('UPDATE '.PREFIX.'_rubrics SET rubric_template = '.$template.' WHERE Id = '.$new_id.' LIMIT 1'); |
||||
} |
||||
|
||||
// импортируем запросы. переписываем поля в шаблонах |
||||
$fields = ''; |
||||
if (count($file['r_requests']) AND !empty($file['r_requests'][0]) AND is_array($file['r_requests'][0]) AND $req_import === TRUE) { |
||||
|
||||
$values = array(); |
||||
foreach ($file['r_requests'] as &$rrow) { |
||||
$rrow = $this->text_fields($rrow, array( |
||||
'request_title', |
||||
'request_template_item', |
||||
'request_template_main', |
||||
'request_order_by', |
||||
'request_description', |
||||
'request_asc_desc', |
||||
'request_show_pagination', |
||||
'request_where_cond', |
||||
'request_lang' |
||||
)); |
||||
$rrow['rubric_id'] = $new_id; //new rubric id |
||||
if(count($replace)) $rrow['request_template_item'] = str_replace(array_keys($replace), array_values($replace), $rrow['request_template_item']); |
||||
$values[] = '(' . implode(',', array_values($rrow)) . ')'; |
||||
} |
||||
$fields = implode(',', array_keys($file['r_requests'][0])); |
||||
$this->db->Query('INSERT INTO ' . PREFIX . '_request (' . $fields . ') VALUES ' . implode(',', $values)); |
||||
} |
||||
|
||||
if ($new_id) |
||||
return TRUE; |
||||
} |
||||
|
||||
return FALSE; |
||||
} |
||||
|
||||
return FALSE; |
||||
} |
||||
|
||||
public function import_sysblock($filename) { |
||||
|
||||
$filename = $this->datadir.'sysblocks/'.$filename.'.php'; |
||||
|
||||
if(file_exists($filename)){ |
||||
|
||||
$filename = (array) require_once $filename; |
||||
|
||||
if(!empty($filename['db_name']) AND !empty($filename['db_text'])){ |
||||
$values = array($filename['db_name'], $filename['db_text'], time()); |
||||
$values = $this->text_fields($values, array(0,1)); |
||||
|
||||
$this->db->Query('INSERT INTO '.PREFIX.'_sysblocks (sysblock_name, sysblock_text, sysblock_created) VALUES ('.implode(',', $values).')'); |
||||
return TRUE; |
||||
|
||||
} else return $this->send_json(array('type' => 'error', 'message' => 'Обнаружены пустые данные в системном блоке!')); |
||||
} else return $this->send_json(array('type' => 'error', 'message' => 'Удален файл из списка. Обновите страницу!')); |
||||
|
||||
return FALSE; |
||||
} |
||||
|
||||
/* |
||||
* Получаем данные по рубрикам (рубрика + колво полей + колво запросов) |
||||
*/ |
||||
|
||||
public function get_rubrics() { |
||||
|
||||
$rubric_fields = $this->query('SELECT ' . PREFIX . '_rubrics.Id as rub_id, rubric_title, rubric_alias, rubric_description, COUNT(rubric_id) as count_fields |
||||
FROM ' . PREFIX . '_rubrics |
||||
JOIN ' . PREFIX . '_rubric_fields ON ' . PREFIX . '_rubrics.Id = ' . PREFIX . '_rubric_fields.rubric_id |
||||
GROUP BY rubric_id |
||||
'); |
||||
$count_req = $this->query('SELECT rubric_id, COUNT(Id) as count_req FROM ' . PREFIX . '_request GROUP BY rubric_id'); |
||||
$result = array(); |
||||
foreach ($rubric_fields as &$row) { |
||||
if (empty($row['rubric_description'])) |
||||
$row['rubric_description'] = '#Нет описания#'; |
||||
$result[$row['rub_id']] = $row; |
||||
$result[$row['rub_id']]['count_req'] = 0; |
||||
} |
||||
foreach ($count_req as $row) { |
||||
if (isset($result[$row['rubric_id']])) |
||||
$result[$row['rubric_id']]['count_req'] = $row['count_req']; |
||||
} |
||||
|
||||
return $result; |
||||
} |
||||
|
||||
/* |
||||
* Получаем данные из файлов и формируем массив для вывода |
||||
*/ |
||||
|
||||
public function get_data_files() { |
||||
|
||||
$files = array(); |
||||
$id = 1; |
||||
foreach (glob($this->datadir . '/*.php') as $file) { |
||||
|
||||
$f = file_get_contents($file); |
||||
$f = @unserialize($f); |
||||
$nfile = str_replace('.php', '', basename($file)); |
||||
$files[$nfile] = array( |
||||
'id' => $id++, |
||||
'filename' => $nfile, |
||||
'title' => $f['title'], |
||||
'desc' => $f['desc'], |
||||
'path' => $file |
||||
); |
||||
} |
||||
|
||||
return $files; |
||||
} |
||||
|
||||
public function get_sys_blocks() { |
||||
|
||||
$files = array(); |
||||
foreach(glob($this->datadir . 'sysblocks/sb_*.php') as $file){ |
||||
|
||||
$nfile = str_replace('.php', '', basename($file)); |
||||
$files[$nfile] = (array) require_once $file; |
||||
} |
||||
|
||||
return $files; |
||||
} |
||||
|
||||
/* |
||||
* Собираем УРЛ |
||||
*/ |
||||
|
||||
public function uri($modact = FALSE, $inside = FALSE) { |
||||
|
||||
$build_with[] = 'do=modules'; |
||||
if ($inside === TRUE) { |
||||
$build_with[] = 'action=modedit'; |
||||
$build_with[] = 'mod=faster'; |
||||
} |
||||
if ($modact) |
||||
$build_with[] = 'moduleaction=' . $modact; |
||||
$build_with[] = 'cp=' . $this->session; |
||||
|
||||
return '/admin/index.php?' . implode('&', $build_with); |
||||
} |
||||
|
||||
/* Ассоциативный массив записей */ |
||||
|
||||
private function query($query) { |
||||
|
||||
$q = $this->db->Query($query); |
||||
|
||||
$result = array(); |
||||
while ($row = $q->FetchAssocArray()) { |
||||
|
||||
$result[] = $row; |
||||
} |
||||
|
||||
unset($q); |
||||
return $result; |
||||
} |
||||
|
||||
/* Отображение из папки templates (без шаблонизатора) */ |
||||
|
||||
private function view($name, $data = array()) { |
||||
|
||||
if (!empty($data) AND is_array($data)) |
||||
extract($data); |
||||
|
||||
ob_start(); |
||||
require $this->tdir . $name . '.php'; |
||||
$view = ob_get_clean(); |
||||
|
||||
return $view; |
||||
} |
||||
|
||||
/* Чтобы собрать запрос по ассоциативному массиву через функцию implode |
||||
* нужно обернуть текстовые поля в кавычки и поставить слэши, иначе error |
||||
* Особенно полезна для полей с PHP кодом |
||||
*/ |
||||
private function text_fields($cur_row, $tfields = array()) { |
||||
|
||||
$cur_row = (array) $cur_row; |
||||
foreach ($cur_row as $f => &$v) { |
||||
|
||||
if (in_array($f, $tfields)) |
||||
$v = "'" . addslashes($v) . "'"; |
||||
} |
||||
|
||||
return $cur_row; |
||||
} |
||||
|
||||
// проверяем что к нам пришел АЯКС запрос |
||||
public function is_ajax() { |
||||
|
||||
return isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND |
||||
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'; |
||||
} |
||||
|
||||
// отправляем формат json |
||||
public function send_json($data) { |
||||
|
||||
header('Content-Type: application/json'); |
||||
exit(json_encode($data)); |
||||
} |
||||
|
||||
} |
||||
|
||||
?> |
@ -0,0 +1,48 @@
|
||||
<?php |
||||
|
||||
if(!defined('BASE_DIR')) exit; |
||||
|
||||
if (defined('ACP')) |
||||
{ |
||||
$modul['ModuleName'] = '« Импорт | Экспорт »'; |
||||
$modul['ModuleSysName'] = 'faster'; |
||||
$modul['ModuleVersion'] = '0.4fixed'; |
||||
$modul['ModuleDescription'] = 'Ускоряем разработку сайтов, быстро создавая рубрики. Импорт | экспорт рубрик, запросов и системных блоков'; |
||||
$modul['ModuleAutor'] = 'Playmore'; |
||||
$modul['ModuleCopyright'] = '© 2013 Playmore'; |
||||
$modul['ModuleIsFunction'] = 0; |
||||
$modul['ModuleAdminEdit'] = 1; |
||||
$modul['ModuleFunction'] = ''; |
||||
$modul['ModuleTag'] = ''; |
||||
$modul['ModuleTagLink'] = null; |
||||
$modul['ModuleAveTag'] = ''; |
||||
$modul['ModulePHPTag'] = ""; |
||||
} |
||||
|
||||
/** |
||||
* Организуем работу в админке |
||||
*/ |
||||
if (defined('ACP') && !empty($_REQUEST['moduleaction'])) |
||||
{ |
||||
require_once(BASE_DIR.'/modules/faster/module.class.php'); |
||||
|
||||
if(class_exists('Faster')) { |
||||
|
||||
$tpl_dir = BASE_DIR . '/modules/faster/templates/'; |
||||
$act = $_REQUEST['moduleaction']; |
||||
$faster = new Faster($tpl_dir); |
||||
|
||||
if($act == 1) $faster->show_import(); |
||||
|
||||
// вызываем метод модели по moduleaction |
||||
if(method_exists($faster, $act)){ |
||||
|
||||
call_user_func_array(array($faster, $act), array()); |
||||
} |
||||
|
||||
} |
||||
|
||||
} |
||||
|
||||
|
||||
?> |
@ -0,0 +1,200 @@
|
||||
<style> |
||||
.message_box{padding: 5px 10px; margin-top: 5px; border-right: 2px solid #000; display: none;} |
||||
.message_red{background-color: #DD6B2C; color: #fff; border-right: 2px solid #d62;} |
||||
.message_green{background-color: #B3DB57; color:#000; border-right: 2px solid #bd5;} |
||||
</style> |
||||
|
||||
<div class="title"><h5>Импортируйте заранее готовые рубрики и запросы!</h5></div> |
||||
|
||||
<div class="widget" style="margin-top: 0px;"> |
||||
<div class="body"> |
||||
По вопросам развития модуля обращайтесь: <b>pm@pmore.ru</b> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="breadCrumbHolder module"> |
||||
<div class="breadCrumb module"> |
||||
<ul> |
||||
<li class="firstB"><a href="index.php" ></a></li> |
||||
<li><a href="<?=$this->uri(FALSE, FALSE)?>">Управление модулями</a></li>
|
||||
<li>Импорт | экспорт рубрик, запросов и системных блоков</li> |
||||
</ul> |
||||
</div> |
||||
</div> |
||||
<div id="rubimex_message" class="message_box"></div> |
||||
<div class="widget first"> |
||||
<ul class="tabs"> |
||||
<li class="activeTab"><a href="#tab1">« Импорт рубрик</a></li> |
||||
<li class=""><a href="#tab2">« Импорт системных блоков</a></li> |
||||
<li class=""><a href="#tab3">Экспорт рубрик »</a></li> |
||||
|
||||
</ul> |
||||
<div class="tab_container"> |
||||
<div id="tab1" class="tab_content" style="display: block;"> |
||||
<?php //$this->export_rubric(4,'static','Статические страницы','Рубрика для создания статических страниц с полем "Код". Запросы: список страниц с пагинацией, список страниц в виде постов.')?>
|
||||
|
||||
<?php if (!empty($files)) :?> |
||||
<form id="import_rub_form" action="<?=$this->uri('ajax_rub_import', TRUE)?>" method="POST">
|
||||
<table class="tableStatic mainForm" style="width:100%"> |
||||
<thead> |
||||
<tr> |
||||
<td width="1%"></td> |
||||
<td >Рубрика</td> |
||||
<td width="70%">Описание</td> |
||||
<td width="1%"></td> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<?php foreach($files as $data) :?> |
||||
<tr id="import_<?=$data['id']?>">
|
||||
<td align="center"> |
||||
<div class="jqTransformCheckboxWrapper"> |
||||
<input class="jqTransformCheckbox" type="checkbox" name="files[]" value="<?=$data['filename']?>">
|
||||
</div> |
||||
</td> |
||||
<td align="center"><b><?=$data['title']?></b></td>
|
||||
<td><?=$data['desc']?></td>
|
||||
<td align="center"> |
||||
<a onclick="rubimex_delete('<?=$data['filename']?>', <?=$data['id']?>)" class="topleftDir icon_sprite ico_delete" href="javascript:void(0)" original-title="Удалить конфиг"></a>
|
||||
</td> |
||||
</tr> |
||||
<?php endforeach;?> |
||||
</tbody> |
||||
</table> |
||||
|
||||
<div class="rowElem"> |
||||
<input id="import_rub" type="button" class="basicBtn ConfirmSettings" value="Импортировать рубрики"> |
||||
<input id="import_rub_req" type="button" class="basicBtn ConfirmSettings" value="Импортировать рубрики и запросы"> |
||||
</div> |
||||
</form> |
||||
<?php else:?> |
||||
<div class="highlight yellow">Готовых к импорту рубрик не найдено. Экспортируйте рубрики со старых проектов и добавьте в модуль.</div> |
||||
<?php endif; ?> |
||||
</div> |
||||
|
||||
<div id="tab2" class="tab_content" style="display: none;"> |
||||
<?php if(!empty($sysblocks)) :?> |
||||
<form id="import_sys_form" action="<?=$this->uri('ajax_sys_import', TRUE)?>" method="POST">
|
||||
<table class="tableStatic mainForm" style="width:100%"> |
||||
<thead> |
||||
<tr> |
||||
<td width="1%"></td> |
||||
<td>Имя блока</td> |
||||
<td width="60%">Описание</td> |
||||
<td>Автор</td> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
<?php foreach($sysblocks as $filename => $block) :?> |
||||
<tr> |
||||
<td align="center"> |
||||
<div class="jqTransformCheckboxWrapper"> |
||||
<input class="jqTransformCheckbox" type="checkbox" name="sys" value="<?=$filename?>">
|
||||
</div> |
||||
</td> |
||||
<td align="center"><b><?=$block['title']?></b></td>
|
||||
<td> |
||||
<div class="pm_rub_desc"><?=$block['desc']?></div>
|
||||
</td> |
||||
<td align="center"><b><?=$block['author']?></b></td>
|
||||
</tr> |
||||
<?php endforeach;?> |
||||
</tbody> |
||||
</table> |
||||
|
||||
<div class="rowElem"><input id="import_sys" type="button" class="basicBtn ConfirmSettings" value="Импортировать системные блоки"></div> |
||||
</form> |
||||
<?php else:?> |
||||
<div class="highlight yellow">Список системных блоков пуст.</div> |
||||
<?php endif;?> |
||||
</div> |
||||
|
||||
<div id="tab3" class="tab_content" style="display: none;"> |
||||
<?php if(!empty($rubrics)):?> |
||||
<form action="<?=$this->uri('ajax_rub_export', TRUE)?>" method="POST">
|
||||
<table id="rub_export" class="tableStatic mainForm" style="width:100%"> |
||||
<thead> |
||||
<tr> |
||||
<td width="1%"></td> |
||||
<td width="20%">Заголовок рубрики</td> |
||||
<td >Описание рубрики</td> |
||||
</tr> |
||||
</thead> |
||||
<tbody> |
||||
|
||||
<?php foreach($rubrics as $r): ?> |
||||
<tr> |
||||
<td><input class="jqTransformCheckbox" type="checkbox" name="rubs[]" value="<?=$r['rub_id']?>"></td>
|
||||
<td><b><?=$r['rubric_title']?></b>
|
||||
<div style="font-size:10px; font-style: italic"> |
||||
Полей: <b><?=$r['count_fields']?></b>
|
||||
Запросов: <b><?=$r['count_req']?></b>
|
||||
Алиас: <b><?=$r['rubric_alias']?></b>
|
||||
</div> |
||||
</td> |
||||
<td><?=$r['rubric_description']?></td>
|
||||
</tr> |
||||
<?php endforeach;?> |
||||
</tbody> |
||||
|
||||
</table> |
||||
|
||||
<div class="rowElem"> |
||||
<input id="export_rubs" type="submit" class="basicBtn ConfirmSettings" value="Экспортировать"> |
||||
</div> |
||||
</form> |
||||
<?php else:?> |
||||
<div class="highlight yellow">Готовых к экспорту рубрик в вашей системе не найдено. Создайте рубрики и затем экспортируйте их для повторного использования.</div> |
||||
<?php endif;?> |
||||
</div> |
||||
</div> |
||||
|
||||
<div class="fix"></div> |
||||
</div> |
||||
|
||||
<script type="text/javascript"> |
||||
function rubimex_delete(filename, tr_id){ |
||||
$.post('<?=$this->uri('ajax_rub_delete', TRUE)?>', {file: filename}, function(res){
|
||||
|
||||
if(res.type == 'success') $('#import_'+tr_id).fadeOut(400); |
||||
rubimex_result(res); |
||||
}); |
||||
} |
||||
|
||||
function rubimex_result(result){ |
||||
|
||||
console.log(result); |
||||
var type = 'message_green'; |
||||
if(result.type == 'error') type = 'message_red'; |
||||
if(result.message) { |
||||
$('#rubimex_message').hide().removeClass('message_green').addClass(type).text(result.message).fadeIn(400); |
||||
} |
||||
} |
||||
|
||||
$(function(){ |
||||
|
||||
$('#import_rub').on('click', function(){ |
||||
|
||||
$.post('<?=$this->uri('ajax_rub_import', TRUE)?>', {filenames: $('#import_rub_form').serializeArray()}, function(res){
|
||||
rubimex_result(res); |
||||
}); |
||||
}); |
||||
|
||||
$('#import_rub_req').on('click', function(){ |
||||
|
||||
$.post('<?=$this->uri('ajax_rub_import', TRUE)?>', {filenames: $('#import_rub_form').serializeArray(), with_req: 1}, function(res){
|
||||
rubimex_result(res); |
||||
}); |
||||
}); |
||||
|
||||
$('#import_sys').on('click', function(){ |
||||
|
||||
$.post('<?=$this->uri('ajax_sys_import', TRUE)?>', {sys_blocks: $('#import_sys_form').serializeArray()}, function(res){
|
||||
rubimex_result(res); |
||||
}); |
||||
}); |
||||
}); |
||||
|
||||
|
||||
|
||||
</script> |
Loading…
Reference in new issue