321 lines
12 KiB
PHP
321 lines
12 KiB
PHP
|
|
<?
|
||
|
|
namespace ms\portal;
|
||
|
|
|
||
|
|
use common\Page;
|
||
|
|
use core\core\structure\eRowClick;
|
||
|
|
use core\db\structure\Column as C;
|
||
|
|
use core\db\structure\eColumnType;
|
||
|
|
use core\site\Theme;
|
||
|
|
use core\site\theme\structure\eThemes;
|
||
|
|
use ms\ms\structure\eTab;
|
||
|
|
use ms\ms\structure\eTabType;
|
||
|
|
use ms\ms\structure\msTo;
|
||
|
|
use ui\form\structure\eInputType;
|
||
|
|
use ui\Form;
|
||
|
|
use ui\form\structure\eInputValidation;
|
||
|
|
use ui\input\Input;
|
||
|
|
use core\lang\structure\LangVariable as V;
|
||
|
|
use ms\ms\structure\msModuleTable;
|
||
|
|
use ms\portal\section\structure\msPortalSectionLang as Vars;
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
class Section extends msModuleTable {
|
||
|
|
static $self;
|
||
|
|
static $table_name = 'msPortalSection';
|
||
|
|
static $controller = 'ms.portal.section';
|
||
|
|
|
||
|
|
static $ID = 'id';
|
||
|
|
static $NAME = 'name';
|
||
|
|
static $PORTAL = 'portal';
|
||
|
|
static $THEME = 'theme';
|
||
|
|
static $PATH = 'path';
|
||
|
|
static $DATA = 'data';
|
||
|
|
static $ACCOUNT = 'account';
|
||
|
|
static $CREATED = 'created';
|
||
|
|
static $UPDATED = 'updated';
|
||
|
|
|
||
|
|
|
||
|
|
static function getTitle(){return V::get(Vars::$MODULE_NAME);}
|
||
|
|
static function getSystemLangValues():array{ return Vars::getArray(); }
|
||
|
|
public function _update(\Where $w, array $values) {
|
||
|
|
$values[self::$UPDATED] = time();
|
||
|
|
return parent::_update($w, $values);
|
||
|
|
}
|
||
|
|
public static function installUniques() {
|
||
|
|
\DB::addIndex(self::$table_name,self::$PORTAL);
|
||
|
|
\DB::addIndex(self::$table_name,self::$PATH);
|
||
|
|
\DB::addIndexManyColumns(self::$table_name,[self::$PORTAL,self::$PATH]);
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function add($values){
|
||
|
|
self::insert($values);
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function afterUadd($values, $id, $result) {
|
||
|
|
|
||
|
|
$res = parent::afterUadd($values, $id, $result);
|
||
|
|
if($c = $values[self::$THEME]){
|
||
|
|
if ($C = Theme::init($c)) {
|
||
|
|
$section = self::getByID($id);
|
||
|
|
$options = $C::getOptions();
|
||
|
|
$keys = array_keys($options);
|
||
|
|
$data = json_decode($section[self::$DATA],true);
|
||
|
|
foreach ($keys as $k) {
|
||
|
|
if(isset($values[$k])) {
|
||
|
|
$data[$k] = $values[$k];
|
||
|
|
}
|
||
|
|
}
|
||
|
|
if($data) {
|
||
|
|
self::updateById($id, [self::$DATA => je($data)]);
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return $res;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
public static function checkUserAddAccess(array $values = [], int $id = 0, bool $isEdit = false): bool {
|
||
|
|
//return parent::checkUserAddAccess($values, $id, $isEdit); // TODO: Change the autogenerated stub
|
||
|
|
return true;
|
||
|
|
}
|
||
|
|
|
||
|
|
public static function getEditTabs($values=[]) {
|
||
|
|
$id = $values[self::$ID];
|
||
|
|
return
|
||
|
|
[
|
||
|
|
[
|
||
|
|
eTab::NAME=>'Редактировать',
|
||
|
|
eTab::TYPE=>eTabType::FORM,
|
||
|
|
eTab::CONTENT=>function($values=[]){
|
||
|
|
return self::_getForm($values, static::getFormOptions($values));
|
||
|
|
},
|
||
|
|
],
|
||
|
|
[
|
||
|
|
eTab::NAME=>'Статичные страницы',
|
||
|
|
eTab::TYPE=>eTabType::TABLE,
|
||
|
|
eTab::CONTENT=>function($values=[]){
|
||
|
|
$justData = boolval($values['justData']);
|
||
|
|
$id = $values[self::$ID];
|
||
|
|
$o = [
|
||
|
|
\Query::WHERE=>new \Where(\Where::_and([
|
||
|
|
\Where::_operator(Page::$TO,'=',msTo::SECTION),
|
||
|
|
\Where::_operator(Page::$OID,'=',$id),
|
||
|
|
])),
|
||
|
|
\ModuleTable::ROW_CLICK => $justData ? eRowClick::CARD : eRowClick::OPEN_UADD,
|
||
|
|
\ModuleTable::FORM_INIT_DATA=>[
|
||
|
|
Page::$TO => msTo::SECTION,
|
||
|
|
Page::$OID => $id,
|
||
|
|
],
|
||
|
|
\ModuleTable::TABLE_ID => self::$table_name.'_'.Page::$table_name.'_'.$id
|
||
|
|
];
|
||
|
|
|
||
|
|
return $justData ? Page::getTableData( $o ) : Page::drawTable( $o );
|
||
|
|
},
|
||
|
|
],
|
||
|
|
[
|
||
|
|
eTab::NAME=>'Код в тег HEAD',
|
||
|
|
eTab::TYPE=>eTabType::TABLE,
|
||
|
|
eTab::CONTENT=>function($values=[]){
|
||
|
|
$justData = boolval($values['justData']);
|
||
|
|
$id = $values[self::$ID];
|
||
|
|
$o = [
|
||
|
|
\Query::WHERE=>new \Where(\Where::_and([
|
||
|
|
\Where::_operator(Script::$TO,'=',msTo::SECTION),
|
||
|
|
\Where::_operator(Script::$OID,'=',$id),
|
||
|
|
])),
|
||
|
|
\ModuleTable::ROW_CLICK => $justData ? eRowClick::CARD : eRowClick::OPEN_UADD,
|
||
|
|
\Query::SORT=>Script::$POS,
|
||
|
|
\ModuleTable::FORM_INIT_DATA=>[
|
||
|
|
Script::$TO => msTo::SECTION,
|
||
|
|
Script::$OID => $id,
|
||
|
|
],
|
||
|
|
\ModuleTable::TABLE_ID => self::$table_name.'_'.Script::$table_name.'_'.$id
|
||
|
|
];
|
||
|
|
return $justData ? Script::getTableData( $o ) : Script::drawTable( $o );
|
||
|
|
},
|
||
|
|
],
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
static function getByPath($path,$portal_id){
|
||
|
|
$portal_id = intval($portal_id);
|
||
|
|
$res = null;
|
||
|
|
if($portal_id) {
|
||
|
|
$r = self::select([
|
||
|
|
\Query::WHERE => new \Where(\Where::_and([
|
||
|
|
\Where::_operator(self::$PATH, '=', $path),
|
||
|
|
\Where::_operator(self::$PORTAL, '=', $portal_id),
|
||
|
|
])),
|
||
|
|
\Query::COUNT => 1,
|
||
|
|
],true);
|
||
|
|
if(count($r)==1) {
|
||
|
|
$res = array_pop($r);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return $res;
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
public static function afterInstall() {
|
||
|
|
\DB::addUnique(self::$table_name,self::$table_name.'_unique',[self::$PORTAL,self::$PATH]);
|
||
|
|
parent::afterInstall(); // TODO: Change the autogenerated stub
|
||
|
|
}
|
||
|
|
|
||
|
|
static function getForm($values = [], $options = []) :array {
|
||
|
|
return [
|
||
|
|
self::getCommonFormInputs(),
|
||
|
|
[
|
||
|
|
Form::VIEW=>FORM::INPUT,
|
||
|
|
Form::TYPE=>eInputType::HIDDEN,
|
||
|
|
Form::KEY_VALUE=>self::$PORTAL,
|
||
|
|
],
|
||
|
|
[
|
||
|
|
Form::VIEW=>Form::ROW,
|
||
|
|
Form::COLS => [
|
||
|
|
[
|
||
|
|
Form::VIEW =>Form::INPUT,
|
||
|
|
Form::COL_CLASSES =>'c c-1-3',
|
||
|
|
Form::KEY_VALUE =>self::$NAME,
|
||
|
|
Form::TYPE =>eInputType::TEXT,
|
||
|
|
Form::INPUT_OPT => [
|
||
|
|
Input::PLACEHOLDER => $c = V::get(Vars::$NAME),
|
||
|
|
Input::LABEL => $c,
|
||
|
|
],
|
||
|
|
],
|
||
|
|
[
|
||
|
|
Form::VIEW =>Form::INPUT,
|
||
|
|
Form::COL_CLASSES =>'c c-1-3',
|
||
|
|
Form::KEY_VALUE =>self::$PATH,
|
||
|
|
Form::TYPE =>eInputType::TEXT,
|
||
|
|
Form::INPUT_OPT => [
|
||
|
|
Input::PLACEHOLDER => $c = V::get(Vars::$PATH),
|
||
|
|
Input::LABEL => $c,
|
||
|
|
Input::VALIDATION=>[
|
||
|
|
//eInputValidation::NOT_EMPTY,
|
||
|
|
//eInputValidation::REQUIRED,
|
||
|
|
],
|
||
|
|
],
|
||
|
|
],
|
||
|
|
[
|
||
|
|
Form::VIEW =>Form::INPUT,
|
||
|
|
Form::COL_CLASSES =>'c c-1-3',
|
||
|
|
Form::KEY_VALUE =>self::$THEME,
|
||
|
|
Form::TYPE =>eInputType::SELECT,
|
||
|
|
Form::INPUT_OPT => [
|
||
|
|
Input::PLACEHOLDER => $c = V::get(Vars::$THEME),
|
||
|
|
Input::LABEL => $c,
|
||
|
|
Input::OPTIONS => eThemes::getMyArray(),
|
||
|
|
],
|
||
|
|
],
|
||
|
|
]
|
||
|
|
],
|
||
|
|
[
|
||
|
|
Form::VIEW=>FORM::INPUT,
|
||
|
|
Form::TYPE=>eInputType::SCRIPT,
|
||
|
|
Form::INPUT_OPT=>[
|
||
|
|
Input::VALUE=>'$.fn.SECTION(\'initChangingTheme\','.je(($c = $values[self::$DATA])?$c:[]).')',
|
||
|
|
],
|
||
|
|
],
|
||
|
|
[
|
||
|
|
Form::VIEW=>FORM::INPUT,
|
||
|
|
Form::TYPE=>eInputType::HTML,
|
||
|
|
Form::INPUT_OPT=>[
|
||
|
|
Input::VALUE=>'<div class="loaded_form"></div>',
|
||
|
|
],
|
||
|
|
],
|
||
|
|
self::getCommonFormSubmits($values),
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
static function columnInfo() : array {
|
||
|
|
return [
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME =>&self::$ID,
|
||
|
|
C::TYPE =>eColumnType::INT,
|
||
|
|
C::AUTO_INCREMENT =>true,
|
||
|
|
C::PRIMARY =>true,
|
||
|
|
C::DEFAULT =>0,
|
||
|
|
C::HIDDEN =>true,
|
||
|
|
C::TH =>V::get(Vars::$ID),
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$NAME,
|
||
|
|
C::TYPE => eColumnType::VARCHAR,
|
||
|
|
C::LENGTH => 1023,
|
||
|
|
C::TH => V::get(Vars::$NAME),
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$PATH,
|
||
|
|
C::TYPE => eColumnType::VARCHAR,
|
||
|
|
C::LENGTH => 63,
|
||
|
|
C::TH => V::get(Vars::$PATH),
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$PORTAL,
|
||
|
|
C::TYPE => eColumnType::INT,
|
||
|
|
C::LENGTH => 11,
|
||
|
|
C::TH => V::get(Vars::$PORTAL),
|
||
|
|
C::HIDDEN => true,
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$THEME,
|
||
|
|
C::TYPE => eColumnType::INT,
|
||
|
|
C::LENGTH => 11,
|
||
|
|
C::TH => V::get(Vars::$THEME),
|
||
|
|
C::FUNC_VALUE => function($v){
|
||
|
|
return eThemes::getName($v[self::$THEME]);
|
||
|
|
}
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$DATA,
|
||
|
|
C::TYPE => eColumnType::TEXT,
|
||
|
|
//C::HIDDEN => true,
|
||
|
|
C::TH => V::get(Vars::$DATA),
|
||
|
|
c::FUNC_VALUE_DATA => function($v){
|
||
|
|
return 'Настройки';
|
||
|
|
},
|
||
|
|
c::FUNC_VALUE => function($v){
|
||
|
|
return 'Настройки';
|
||
|
|
},
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$ACCOUNT,
|
||
|
|
C::TYPE => eColumnType::INT,
|
||
|
|
C::LENGTH => 11,
|
||
|
|
C::TH => V::get(Vars::$ACCOUNT),
|
||
|
|
C::DEFAULT => intval(UID),
|
||
|
|
c::HIDDEN=>true,
|
||
|
|
c::FUNC_VALUE => function($v){
|
||
|
|
if($id = $v[self::$ACCOUNT]) {
|
||
|
|
return \Account::getName( \Account::getByID($id) );
|
||
|
|
} else return '-';
|
||
|
|
},
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$CREATED,
|
||
|
|
C::TYPE => eColumnType::INT,
|
||
|
|
C::LENGTH => 11,
|
||
|
|
C::TH => V::get(Vars::$CREATED),
|
||
|
|
C::DEFAULT => time(),
|
||
|
|
c::FUNC_VALUE => function($v){return self::formatDate($v[self::$CREATED]);},
|
||
|
|
c::HIDDEN=>true,
|
||
|
|
]),
|
||
|
|
new C([
|
||
|
|
C::VAR_NAME => &self::$UPDATED,
|
||
|
|
C::TYPE => eColumnType::INT,
|
||
|
|
C::DEFAULT => time(),
|
||
|
|
C::TH => V::get(Vars::$UPDATED),
|
||
|
|
c::FUNC_VALUE => function($v){return self::formatDate($v[self::$UPDATED]);},
|
||
|
|
c::HIDDEN=>true,
|
||
|
|
]),
|
||
|
|
];
|
||
|
|
}
|
||
|
|
|
||
|
|
}
|
||
|
|
new Section();
|
||
|
|
|
||
|
|
|
||
|
|
///
|