diff --git a/README.md b/README.md
index 19d0605..48ecc7f 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,6 @@
-# fieldsmanager
+### fieldsmanager
+
+### Модуль управления полями рубрик
+
+04.09.2019 - версия 0.26.2 - адаптация для версии ave.cms 3.26
-Модуль управления полями рубрик Только для AVE.CMS ALT
\ No newline at end of file
diff --git a/admin/field-code.tpl b/admin/field-code.tpl
new file mode 100644
index 0000000..4914a95
--- /dev/null
+++ b/admin/field-code.tpl
@@ -0,0 +1,119 @@
+
+
Управление полями
+
+
+
+
+
+ - {#MAIN_PAGE#}
+ - {#MODULES_SUB_TITLE#}
+ - Управление полями
+ {if $params.id}
+ - Рубрика > {$params.field.rubric_title}
+ - Поле: > {$params.field.rubric_field_title}
+ {/if}
+ - Тип: > {$main.name} {if $params.id}(id: {$params.id}){/if}
+ -
+ {if $params.type == 'adm'}Шаблон для панели{elseif $params.type == 'doc'}Шаблоня вывода в документе{elseif $params.type == 'req'}Шаблоня вывода в запросе{/if}
+
+
+
+
+
+{if $code_text}
+
+
+{include file="$codemirror_editor" conn_id="ftpl" textarea_id='code_text' ctrls='$("#code_templ").ajaxSubmit(sett_options);' height=400}
+
+
+
+{else}
+
+
+
+
+ -
+ Отсутсвует основной файл шаблона
+
+
+
+{/if}
diff --git a/admin/field-list.tpl b/admin/field-list.tpl
new file mode 100644
index 0000000..a631188
--- /dev/null
+++ b/admin/field-list.tpl
@@ -0,0 +1,115 @@
+
+
Управление полями
+
+
+
+
+
+
+
+
+
+ {foreach from=$rubrics item=rubric}
+
+ {/foreach}
+
+{include file="$codemirror_connect"}
diff --git a/admin/fields-list.tpl b/admin/fields-list.tpl
new file mode 100644
index 0000000..146a70c
--- /dev/null
+++ b/admin/fields-list.tpl
@@ -0,0 +1,117 @@
+
+
Управление полями
+
+
+
+
+
+
+
+
+
+
+{include file="$codemirror_connect"}
diff --git a/admin/index.php b/admin/index.php
new file mode 100644
index 0000000..4ca25aa
--- /dev/null
+++ b/admin/index.php
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/class.fieldsmanager.php b/class.fieldsmanager.php
new file mode 100644
index 0000000..682e0d8
--- /dev/null
+++ b/class.fieldsmanager.php
@@ -0,0 +1,310 @@
+ $id,'name' => (isset($fields_vars[$name])
+ ? $fields_vars[$name]
+ : $name));
+
+ if (! empty($type) && $id == $type)
+ $field = array('id' => $id,'name' => (isset($fields_vars[$name])
+ ? $fields_vars[$name]
+ : $name));
+ }
+ }
+
+ $fields = msort($fields, array('name'));
+
+ return (! empty($type)) ? $field : $fields;
+ }
+
+ /**
+ * Вывод списка полей
+ *
+ */
+ public static function ShowFields()
+ {
+ global $AVE_DB, $AVE_Template, $_fm_dir;
+
+ $sql = $AVE_DB->Query("
+ SELECT (rubric_field_type)
+ FROM " . PREFIX . "_rubric_fields
+ GROUP BY rubric_field_type
+ ");
+
+ $enable = array();
+
+ while ($row = $sql->FetchArray())
+ {
+ $enable[] = $row['rubric_field_type'];
+ }
+
+ $fields = self::__get_fields_type();
+
+ foreach ($fields as $field)
+ {
+ $exists[$field['id']]['adm'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field.tpl');
+ $exists[$field['id']]['doc'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field-doc.tpl');
+ $exists[$field['id']]['req'] = file_exists(BASE_DIR . '/fields/' . $field['id'] . '/tpl/field-req.tpl');
+ }
+
+ $AVE_Template->assign("enable", $enable);
+ $AVE_Template->assign("exists", $exists);
+ $AVE_Template->assign("fields", $fields);
+ $AVE_Template->assign("content", $AVE_Template->fetch($_fm_dir . "admin/fields-list.tpl"));
+ }
+
+
+ /**
+ * Вывод поля по рубрикам
+ *
+ */
+ public static function ShowField($fld)
+ {
+ global $AVE_DB, $AVE_Template, $_fm_dir;
+
+ $sql = $AVE_DB->Query("
+ SELECT
+ a.Id,
+ a.rubric_id,
+ a.rubric_field_type,
+ a.rubric_field_title,
+ b.rubric_title
+ FROM
+ " . PREFIX . "_rubric_fields AS a
+ LEFT JOIN
+ " . PREFIX . "_rubrics AS b
+ ON a.rubric_id = b.Id
+ WHERE
+ a.rubric_field_type = '" . $fld ."'
+ ORDER BY
+ a.rubric_id
+ ");
+
+ $rubrics = array();
+
+ while ($row = $sql->FetchRow())
+ {
+ $rubrics[$row->rubric_id]['rubric_id'] = $row->rubric_id;
+ $rubrics[$row->rubric_id]['rubric_title'] = $row->rubric_title;
+ $rubrics[$row->rubric_id]['fields'][$row->Id]['id'] = $row->Id;
+ $rubrics[$row->rubric_id]['fields'][$row->Id]['title'] = $row->rubric_field_title;
+ $rubrics[$row->rubric_id]['fields'][$row->Id]['adm_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $row->Id . '.tpl');
+ $rubrics[$row->rubric_id]['fields'][$row->Id]['doc_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $row->Id . '.tpl');
+ $rubrics[$row->rubric_id]['fields'][$row->Id]['req_tpl'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $row->Id . '.tpl');
+ $rubrics[$row->rubric_id]['fields'][$row->Id]['adm_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl');
+ $rubrics[$row->rubric_id]['fields'][$row->Id]['doc_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl');
+ $rubrics[$row->rubric_id]['fields'][$row->Id]['req_main'] = file_exists(BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl');
+ }
+
+ $AVE_Template->assign('main', self::__get_fields_type($fld));
+ $AVE_Template->assign("rubrics", $rubrics);
+ $AVE_Template->assign("content", $AVE_Template->fetch($_fm_dir . "admin/field-list.tpl"));
+ }
+
+ /**
+ * Создание шаблона
+ *
+ */
+ public static function EditTpl($id = '', $fld, $type)
+ {
+ global $AVE_DB, $AVE_Template, $_fm_dir;
+
+ switch ($type)
+ {
+ case 'adm':
+ $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl';
+ $source = BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl';
+ break;
+
+ case 'doc':
+ $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl';
+ $source = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl';
+ break;
+
+ case 'req':
+ $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl';
+ $source = BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl';
+ break;
+ }
+
+ if (empty($id))
+ $file = $source;
+
+ if (file_exists($file))
+ {
+ $code_text = file_get_contents($file);
+ }
+ else
+ {
+ $code_text = file_get_contents($source);
+ }
+
+ $sql = $AVE_DB->Query("
+ SELECT
+ a.rubric_field_title,
+ b.rubric_title
+ FROM
+ " . PREFIX . "_rubric_fields AS a
+ LEFT JOIN
+ " . PREFIX . "_rubrics AS b
+ ON a.rubric_id = b.Id
+ WHERE
+ a.rubric_field_type = '" . $fld ."'
+ AND
+ a.Id = '" . $id ."'
+ ")->FetchAssocArray();
+
+ $params =
+ array(
+ 'id' => $id,
+ 'fld' => $fld,
+ 'type' => $type,
+ 'func' => (file_exists($file) ? 'edit' : 'new'),
+ 'field' => $sql,
+ );
+
+ $AVE_Template->assign('main', self::__get_fields_type($fld));
+ $AVE_Template->assign('params', $params);
+ $AVE_Template->assign('code_text', $code_text);
+ $AVE_Template->assign("content", $AVE_Template->fetch($_fm_dir . "admin/field-code.tpl"));
+ }
+
+
+ /**
+ * Сохранение шаблона
+ *
+ */
+ public static function SaveTpl($id = '', $fld, $type, $func)
+ {
+ switch ($type)
+ {
+ case 'adm':
+ $file = (! empty($id))
+ ? BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl'
+ : BASE_DIR . '/fields/' . $fld . '/tpl/field.tpl';
+ break;
+
+ case 'doc':
+ $file = (! empty($id))
+ ? BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl'
+ : BASE_DIR . '/fields/' . $fld . '/tpl/field-doc.tpl';
+ break;
+
+ case 'req':
+ $file = (! empty($id))
+ ? BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl'
+ : BASE_DIR . '/fields/' . $fld . '/tpl/field-req.tpl';
+ break;
+ }
+
+ $data = stripcslashes($_REQUEST['code_text']);
+
+ @file_put_contents($file, $data);
+ chmod($file, 0644);
+
+ $message = 'Шаблон успешнно сохранен';
+ $header = 'Выполнено';
+ $theme = 'accept';
+
+ echo json_encode(
+ array(
+ 'message' => $message,
+ 'header' => $header,
+ 'theme' => $theme)
+ );
+
+ exit;
+ }
+
+ /**
+ * Удаление шаблона поля
+ *
+ */
+ public static function DeleteTpl($id, $fld, $type, $func)
+ {
+ switch ($type)
+ {
+ case 'adm':
+ $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-' . $id . '.tpl';
+ break;
+
+ case 'doc':
+ $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-doc-' . $id . '.tpl';
+ break;
+
+ case 'req':
+ $file = BASE_DIR . '/fields/' . $fld . '/tpl/field-req-' . $id . '.tpl';
+ break;
+ }
+
+ @unlink($file);
+
+ header('Location:' . get_referer_link());
+ exit;
+ }
+
+ /**
+ * Удаление поля из системы
+ *
+ */
+ public static function UnlinkField($dir)
+ {
+ /*
+ $dirPath = (! empty($type))
+ ? BASE_DIR . '/fields/' . $dir
+ : $dir;
+ */
+
+ $dirPath = BASE_DIR . '/fields/' . $dir;
+
+ if (substr($dirPath, strlen($dirPath) - 1, 1) != '/') {
+ $dirPath .= '/';
+ }
+
+ $files = glob($dirPath . '*', GLOB_MARK);
+
+ foreach($files as $file)
+ {
+ if(substr($file, -1) == '/')
+ self::UnlinkField($file);
+ else
+ @unlink($file);
+ }
+
+ @rrmdir($dirPath);
+ }
+}
+?>
diff --git a/index.php b/index.php
new file mode 100644
index 0000000..4ca25aa
--- /dev/null
+++ b/index.php
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/info.php b/info.php
new file mode 100644
index 0000000..4742b25
--- /dev/null
+++ b/info.php
@@ -0,0 +1,20 @@
+ 'fieldsmanager',
+ 'ModuleVersion' => '0.26.2',
+ 'ModuleAutor' => 'M@d D3n',
+ 'ModuleCopyright' => '© 2007-' . date('Y') . ' AVE.cms',
+ 'ModuleStatus' => 1,
+ 'ModuleIsFunction' => 0,
+ 'ModuleTemplate' => 0,
+ 'ModuleAdminEdit' => 1,
+ 'ModuleFunction' => 'mod_fieldsmanager',
+ 'ModuleTag' => null,
+ 'ModuleTagLink' => null,
+ 'ModuleAveTag' => null,
+ 'ModulePHPTag' => null
+ );
+?>
\ No newline at end of file
diff --git a/lang/index.php b/lang/index.php
new file mode 100644
index 0000000..4ca25aa
--- /dev/null
+++ b/lang/index.php
@@ -0,0 +1,4 @@
+
\ No newline at end of file
diff --git a/lang/ru.txt b/lang/ru.txt
new file mode 100644
index 0000000..a585f64
--- /dev/null
+++ b/lang/ru.txt
@@ -0,0 +1,5 @@
+[name]
+MODULE_NAME = "Управление полями"
+MODULE_DESCRIPTION = "Модуль для управления полями рубрик."
+
+test = "Редактирование рубрики"
\ No newline at end of file
diff --git a/module.php b/module.php
new file mode 100644
index 0000000..8f1182d
--- /dev/null
+++ b/module.php
@@ -0,0 +1,62 @@
+config_load($lang_file, 'module');
+
+ require_once($_fm_dir . 'class.fieldsmanager.php');
+ $FieldsManager = new FieldsManager;
+
+ switch ($_REQUEST['moduleaction'])
+ {
+ case '1':
+ $FieldsManager::ShowFields();
+ break;
+
+ case 'showfield':
+ $FieldsManager::ShowField($_REQUEST['type']);
+ break;
+
+ case 'create':
+ $FieldsManager::EditTpl((int)$_REQUEST['id'], $_REQUEST['fld'], $_REQUEST['type']);
+ break;
+
+ case 'edit':
+ $FieldsManager::EditTpl((int)$_REQUEST['id'], $_REQUEST['fld'], $_REQUEST['type']);
+ break;
+
+ case 'save':
+ $FieldsManager::SaveTpl((int)$_REQUEST['field_id'], $_REQUEST['field_name'], $_REQUEST['field_type'], $_REQUEST['func']);
+ break;
+
+ case 'delete':
+ $FieldsManager::DeleteTpl((int)$_REQUEST['id'], $_REQUEST['fld'], $_REQUEST['type'], $_REQUEST['func']);
+ break;
+
+ case 'unlink':
+ $FieldsManager::UnlinkField($_REQUEST['type']);
+ header('Location:' . get_referer_link());
+ exit;
+ }
+}
+
+?>
diff --git a/sql.php b/sql.php
new file mode 100644
index 0000000..2b7d421
--- /dev/null
+++ b/sql.php
@@ -0,0 +1,33 @@
+
\ No newline at end of file