namespace themes;
use blog\Blog;
use blog\News;
use common\Image;
use common\Menu;
use core\site\Theme;
use core\lang\structure\LangVariable as V;
use core\site\theme\structure\eThemeOption;
use core\site\theme\structure\themeLang as Vars;
use core\Token;
use ui\Form;
use ui\form\structure\eInputType;
use ui\input\Input;
use core\site\structure\HTMLPage;
class Modulebz extends Theme {
static $name = 'Modulebz';
static $themeUrl = 'modulebz';
const BG_CARD_ALPHA = 0.03;
static $_BLOG = 'blog';
static $_PORTFOLIO = 'portfolio';
static $_SERVICES = 'services';
static $_UPDATES = 'updates';
static $_ANNOUNCEMENT = 'announcement';
static $_TURNKEY = 'turnkey';
static $_SERVICES_MENU = 'services_menu';
static $_SOCIALS = 'socials';
const PAGE_NEWS = 'news';
const PAGE_DOMAINS = 'domains';
const PAGE_DOMAINS_GROUPS = 'domains_groups';
const PAGE_VCARD_CARD = 'card';
const PAGE_VCARD_CARD_MODERATE = 'card_moderate';
const PAGE_PORTFOLIO = 'portfolio';
const PAGE_SERVICES = 'services';
const PAGE_MONEY = 'money';
const PAGE_MODERATION = 'moderation';
const PAGE_ACADEMY = 'academy';
const PAGE_STUDENTS = 'students';
const PAGE_TEACHERS = 'teachers';
const PAGE_COURSE = 'course';
const PAGE_TEST = 'test';
const PAGE_REVIEWS = 'reviews';
const PAGE_TIME = 'time';
const PAGE_BASE = 'base';
const PAGE_PROJECT = 'project';
const PAGE_COMPANY = 'company';
const PAGE_POST = 'post';
const PAGE_TASK = 'task';
const PAGE_ITEMS = 'items';
const PAGE_REPORT = 'reports';
const PAGE_SHOP = 'shop';
const PAGE_SHOP_REPORT_SALES = 'sales';
const PAGE_SHOP_REPORT_ITEMS = 'items';
const PAGE_SHOP_REPORT_MANAGERS = 'managers';
const PAGE_CATEGORIES = 'categories';
const PAGE_PROPERTIES = 'properties';
const PAGE_COMPONENTS = 'components';
const PAGE_WAREHOUSE = 'warehouse';
const PAGE_MINUS = 'minus';
const PAGE_PLUS = 'plus';
const PAGE_FORECAST = 'forecast';
const PAGE_ORDERS = 'orders';
const PAGE_CLIENTS = 'clients';
const PAGE_CLIENT_TASK = 'client_task';
const PAGE_DOCS = 'docs';
const PAGE_UPDATES = 'updates';
const PAGE_CONTENT = 'content';
const PAGE_MENU = 'menu';
const PAGE_PAGE = 'page';
const PAGE_GALLERY = 'gallery';
const PAGE_BLOG = 'blog';
const PAGE_ANNOUNCEMENT = 'announcement';
const PAGE_FAQ = 'faq';
const PAGE_KBASE = 'know_base';
const PAGE_TURNKEY = 'turnkey';
const PAGE_PIPELINE = 'pipeline';
const PAGE_GROUP = 'group';
const PAGE_SITE = 'site';
const PAGE_SECTION = 'section';
const PAGE_SECTION_DATA = 'section_data';
const PAGE_SUPERADMIN = 'superadmin';
const PAGE_PURCHASES = 'purchases';
const PAGE_BLOCK = 'block';
const PAGE_ORDER_BLANK = 'order_blank';
const PAGE_TARGETS = 'targets';
const PAGE_EMAIL_TEMPLATE = 'email_template';
const PAGE_EMAIL_HISTORY = 'email_history';
const PAGE_ACCUMULATE_GROUP = 'accumulate_group';
const PAGE_CASHBACK_GROUP = 'cashback_group';
const PAGE_AZBUKA_PERIL = 'azbukaperil';
const PAGE_AZBUKA_PERIL_CATALOG = 'catalog';
const PAGE_AZBUKA_PERIL_REVIEWS = 'reviews';
const PAGE_AZBUKA_PERIL_ALSO = 'also';
const PAGE_AZBUKA_PERIL_ITEM = 'item';
/** @var Blog */
static $BLOG;
/** @var Blog */
static $PORTFOLIO;
/** @var Blog */
static $SERVICES;
/** @var Blog */
static $ANNOUNCEMENT;
/** @var Blog */
static $TURNKEY;
/** @var Blog */
static $UPDATES;
/** @var Menu */
static $SERVICES_MENU;
/** @var Menu */
static $SOCIALS;
static function getUploadToken(){
$res = 'modulebz_'.\Site::$owner_id.'_'.time();
$token = Token::getOneEqualByColumn(Token::$ACCOUNT,\Site::$owner_id);
if(!$token){
$r = Token::insert([
Token::$ACCOUNT=>\Site::$owner_id,
Token::$HASH => $res,
]);
} else {
$res = $token[Token::$HASH];
}
return $res;
}
static function prepare() {
$data = static::$data;
$a = self::getOptions();
foreach ($a as $k=>$v){
if($v[eThemeOption::CONTROLLER]) {
if( $id = intval( $data[$k] ) ) {
$x = strtoupper($k);
self::$$x = new $v[eThemeOption::CONTROLLER];
self::$$x->id_for_theme = $id;
self::$$x->owner_id = self::$owner_id;
}
}
}
}
static function echoCrumbs(){
$res = '';
if($a = HTMLPage::$head_crumbs){
$links = '';
foreach ($a as $k=>$v) $links .= ''.$v[0].'';
$res .= '
'.$links.'
';
}
echo $res;
}
static function getSocialLinksBlock(){
$res = 'Следите за новостями: ';
$a = self::getSocialLinksData();
foreach ($a as $v){
$res .= '
';
}
$res .= '
';
return $res;
}
static function getSocialLinksData(){
$res = [];
$s = self::$SOCIALS->_getStructure();
foreach ($s[self::$SOCIALS->id_for_theme] as $id){
$v = $s['base'][$id];
if($v[Menu::$VIS]) {
$res[] = [
'link' => $v[Menu::$LINK],
'icon' => Image::imageResize($v[Image::$URL], 64, 64, 100, ['crop' => 'center']),
'title' => $v[Menu::$NAME],
];
}
}
//foreach ($r as $v) $res[] = self::formatService($v);
return $res;
}
static function getServiceLink($v){
return \Site::portalUrl($v[News::$TEXT_ID]);
}
static function formatService($v){
return [
'title' => News::getName($v),
'link' => self::getServiceLink($v),
//'image' => Image::imageResize($v[Image::$URL],640,480,100,['crop'=>'center']),
'image' => Image::imageResize($v[Image::$URL],480,320,100,['crop'=>'center']),
'annotation' => nl2br($v[News::$ANNOTATION]),
];
}
static function getServicesData(){
$res = [];
$r = self::$SERVICES->_getNews();
foreach ($r as $v) $res[] = self::formatService($v);
return $res;
}
static function getServicesFastMenuData(){
$res = [];
$s = self::$SERVICES_MENU->_getStructure();
foreach ($s[self::$SERVICES_MENU->id_for_theme] as $id){
$v = $s['base'][$id];
if($v[Menu::$VIS]) {
$res[] = [
'link' => \Site::sectionUrl($v[Menu::$LINK]),
'icon' => Image::imageResize($v[Image::$URL], 64, 64, 100, ['crop' => 'center']),
'title' => $v[Menu::$NAME],
];
}
}
//foreach ($r as $v) $res[] = self::formatService($v);
return $res;
}
static function getPortfolioLink($v){
return \Site::portalUrl(self::PAGE_PORTFOLIO.'/'.$v[News::$TEXT_ID]);
}
static function formatPortfolio($v){
return [
'title' => News::getName($v),
'link' => self::getPortfolioLink($v),
//'image' => Image::imageResize($v[Image::$URL],640,480,100,['crop'=>'center']),
'image' => Image::imageResize($v[Image::$URL],1200,580,100,['crop'=>'center']),
'annotation' => nl2br($v[News::$ANNOTATION]),
];
}
static function getPortfolioAnnotationData(){
$res = [];
$r = self::$PORTFOLIO->_getNews();
foreach ($r as $v) $res[] = self::formatPortfolio($v);
return $res;
}
static function getNewsLink($v){
return \Site::portalUrl(self::PAGE_NEWS.'/'.$v[News::$TEXT_ID]);
}
static function formatNews($v){
return [
'title' => News::getName($v),
'link' => self::getNewsLink($v),
//'image' => Image::imageResize($v[Image::$URL],320,215,100,['crop'=>'center']),
'image' => Image::imageResize($v[Image::$URL],640,480,100,['crop'=>'center']),
'annotation' => $v[News::$ANNOTATION],
];
}
static function getNewsAnnotationData(){
$res = [];
$r = self::$BLOG->_getNews(8);
foreach ($r as $v) $res[] = self::formatNews($v);
return $res;
}
static function getUpdatesLink($v){
return \Site::portalUrl(self::PAGE_UPDATES.'/'.$v[News::$TEXT_ID]);
}
static function formatUpdates($v){
return [
'title' => News::getName($v),
'link' => self::getUpdatesLink($v),
//'image' => Image::imageResize($v[Image::$URL],320,215,100,['crop'=>'center']),
'image' => Image::imageResize($v[Image::$URL],480,320,100,['crop'=>'center']),
'annotation' => $v[News::$ANNOTATION],
];
}
static function getUpdatesAnnotationData(){
$res = [];
$r = self::$UPDATES->_getNews(28);
foreach ($r as $v) $res[] = self::formatUpdates($v);
return $res;
}
static function getAnnouncementLink($v){
return \Site::portalUrl(self::PAGE_ANNOUNCEMENT.'/'.$v[News::$TEXT_ID]);
}
static function formatAnnouncement($v){
return [
'title' => News::getName($v),
'link' => self::getAnnouncementLink($v),
//'image' => Image::imageResize($v[Image::$URL],320,215,100,['crop'=>'center']),
'image' => Image::imageResize($v[Image::$URL],640,480,100,['crop'=>'center']),
'annotation' => $v[News::$ANNOTATION],
];
}
static function getUpdatesAnnouncementData(){
$res = [];
$r = self::$ANNOUNCEMENT->_getNews(6);
foreach ($r as $v) $res[] = self::formatAnnouncement($v);
return $res;
}
static function getTurnkeyLink($v){
return \Site::portalUrl(self::PAGE_TURNKEY.'/'.$v[News::$TEXT_ID]);
}
static function formatTurnkey($v){
return [
'title' => News::getName($v),
'link' => self::getTurnkeyLink($v),
//'image' => Image::imageResize($v[Image::$URL],320,215,100,['crop'=>'center']),
'image' => Image::imageResize($v[Image::$URL],640,480,100,['crop'=>'center']),
'annotation' => $v[News::$ANNOTATION],
];
}
static function getTurnkeyAnnotationData(){
$res = [];
$r = self::$TURNKEY->_getNews(6);
foreach ($r as $v) $res[] = self::formatTurnkey($v);
return $res;
}
public static function getForm(){
$data = self::$data;
$blog = Blog::getNameList([
\Query::WHERE => new \Where(\Where::_and([
\Where::_operator(Blog::$ACCOUNT, '=', UID),
]))
]);
$menu = Menu::getNameList([
\Query::WHERE => new \Where(\Where::_and([
\Where::_operator(Menu::$ACCOUNT, '=', UID),
\Where::_operator(Menu::$PARENT, '=', 0),
]))
]);
return [
[
Form::VIEW=>Form::ROW,
Form::COLS => [
[
Form::VIEW => Form::INPUT,
Form::COL_CLASSES => 'c c-1-3',
Form::TYPE => eInputType::SELECT,
Form::INPUT_OPT => [
Input::NAME => self::$_BLOG,
Input::PLACEHOLDER => $c = V::get(Vars::$MODULEBZ_BLOG),
Input::LABEL => $c,
Input::OPTIONS => $blog,
Input::VALUE => $data[self::$_BLOG],
],
],
[
Form::VIEW => Form::INPUT,
Form::COL_CLASSES => 'c c-1-3',
Form::TYPE => eInputType::SELECT,
Form::INPUT_OPT => [
Input::NAME => self::$_PORTFOLIO,
Input::PLACEHOLDER => $c = V::get(Vars::$MODULEBZ_PORTFOLIO),
Input::LABEL => $c,
Input::OPTIONS => $blog,
Input::VALUE => $data[self::$_PORTFOLIO],
],
],
[
Form::VIEW => Form::INPUT,
Form::COL_CLASSES => 'c c-1-3',
Form::TYPE => eInputType::SELECT,
Form::INPUT_OPT => [
Input::NAME => self::$_SERVICES,
Input::PLACEHOLDER => $c = V::get(Vars::$MODULEBZ_SERVICES),
Input::LABEL => $c,
Input::OPTIONS => $blog,
Input::VALUE => $data[self::$_SERVICES],
],
],
[
Form::VIEW => Form::INPUT,
Form::COL_CLASSES => 'c c-1-3',
Form::TYPE => eInputType::SELECT,
Form::INPUT_OPT => [
Input::NAME => self::$_UPDATES,
Input::PLACEHOLDER => $c = V::get(Vars::$MODULEBZ_UPDATES),
Input::LABEL => $c,
Input::OPTIONS => $blog,
Input::VALUE => $data[self::$_UPDATES],
],
],
[
Form::VIEW => Form::INPUT,
Form::COL_CLASSES => 'c c-1-3',
Form::TYPE => eInputType::SELECT,
Form::INPUT_OPT => [
Input::NAME => self::$_ANNOUNCEMENT,
Input::PLACEHOLDER => $c = V::get(Vars::$MODULEBZ_ANNOUNCEMENT),
Input::LABEL => $c,
Input::OPTIONS => $blog,
Input::VALUE => $data[self::$_ANNOUNCEMENT],
],
],
[
Form::VIEW => Form::INPUT,
Form::COL_CLASSES => 'c c-1-3',
Form::TYPE => eInputType::SELECT,
Form::INPUT_OPT => [
Input::NAME => self::$_TURNKEY,
Input::PLACEHOLDER => $c = V::get(Vars::$MODULEBZ_TURNKEY),
Input::LABEL => $c,
Input::OPTIONS => $blog,
Input::VALUE => $data[self::$_TURNKEY],
],
],
[
Form::VIEW => Form::INPUT,
Form::COL_CLASSES => 'c c-1-3',
Form::TYPE => eInputType::SELECT,
Form::INPUT_OPT => [
Input::NAME => self::$_SERVICES_MENU,
Input::PLACEHOLDER => $c = V::get(Vars::$MODULEBZ_SERVICES_MENU),
Input::LABEL => $c,
Input::OPTIONS => $menu,
Input::VALUE => $data[self::$_SERVICES_MENU],
],
],
[
Form::VIEW => Form::INPUT,
Form::COL_CLASSES => 'c c-1-3',
Form::TYPE => eInputType::SELECT,
Form::INPUT_OPT => [
Input::NAME => self::$_SOCIALS,
Input::PLACEHOLDER => $c = V::get(Vars::$MODULEBZ_SOCIALS),
Input::LABEL => $c,
Input::OPTIONS => $menu,
Input::VALUE => $data[self::$_SOCIALS],
],
],
],
],
];
}
public static function getOptions(): array {
if (static::$options) return static::$options;
else {
$data = static::$data;
return static::$options = [
self::$_BLOG => [
eThemeOption::NAME => V::get(Vars::$MODULEBZ_BLOG),
eThemeOption::ID => $data[self::$_BLOG],
eThemeOption::CONTROLLER => 'blog\blog',
],
self::$_PORTFOLIO => [
eThemeOption::NAME => V::get(Vars::$MODULEBZ_PORTFOLIO),
eThemeOption::ID => $data[self::$_PORTFOLIO],
eThemeOption::CONTROLLER => 'blog\blog',
],
self::$_SERVICES => [
eThemeOption::NAME => V::get(Vars::$MODULEBZ_SERVICES),
eThemeOption::ID => $data[self::$_SERVICES],
eThemeOption::CONTROLLER => 'blog\blog',
],
//*
self::$_UPDATES=> [
eThemeOption::NAME => V::get(Vars::$MODULEBZ_UPDATES),
eThemeOption::ID => $data[self::$_UPDATES],
eThemeOption::CONTROLLER => 'blog\blog',
],
self::$_ANNOUNCEMENT=> [
eThemeOption::NAME => V::get(Vars::$MODULEBZ_ANNOUNCEMENT),
eThemeOption::ID => $data[self::$_ANNOUNCEMENT],
eThemeOption::CONTROLLER => 'blog\blog',
],
self::$_TURNKEY => [
eThemeOption::NAME => V::get(Vars::$MODULEBZ_TURNKEY),
eThemeOption::ID => $data[self::$_TURNKEY],
eThemeOption::CONTROLLER => 'blog\blog',
],
/**/
self::$_SERVICES_MENU => [
eThemeOption::NAME => V::get(Vars::$MODULEBZ_SERVICES_MENU),
eThemeOption::ID => $data[self::$_SERVICES_MENU],
eThemeOption::CONTROLLER => 'common\menu',
],
self::$_SOCIALS => [
eThemeOption::NAME => V::get(Vars::$MODULEBZ_SOCIALS),
eThemeOption::ID => $data[self::$_SOCIALS],
eThemeOption::CONTROLLER => 'common\menu',
],
];
}
}
}