* @copyright 2007-2015 Leotheme
* @license http://leotheme.com - prestashop template provider
*/
include_once(_PS_MODULE_DIR_.'leoblog/loader.php');
require_once(_PS_MODULE_DIR_.'leoblog/classes/comment.php');
class AdminLeoblogDashboardController extends ModuleAdminController
{
public function __construct()
{
$this->bootstrap = true;
$this->display = 'view';
$this->addRowAction('view');
parent::__construct();
}
public function initPageHeaderToolbar()
{
parent::initPageHeaderToolbar();
$this->page_header_toolbar_title = $this->l('Dashboard');
$this->page_header_toolbar_btn = array();
}
public function postProcess()
{
if (count($this->errors)) {
return false;
}
if (Tools::isSubmit('saveConfiguration')) {
$keys = LeoBlogHelper::getConfigKey(false);
$post = array();
foreach ($keys as $key) {
# validate module
$post[$key] = Tools::getValue($key);
if ($key == 'social_code') {
$post[$key] = LeoBlogHelper::correctEnCodeData(Tools::getValue($key));
}
}
$multi_lang_keys = LeoBlogHelper::getConfigKey(true);
foreach ($multi_lang_keys as $multi_lang_key) {
foreach (Language::getIDs(false) as $id_lang) {
$post[$multi_lang_key.'_'.(int)$id_lang] = Tools::getValue($multi_lang_key.'_'.(int)$id_lang);
}
}
// print_r(Tools::jsonEncode($post));die;
// Configuration::updateValue(Tools::strtoupper(_LEO_BLOG_PREFIX_.'cfg_global_'.$post['template']), Tools::jsonEncode($post));
if ($post['template'] != 'default') {
LeoBlogConfig::updateConfigValue('cfg_global_'.$post['template'], Tools::jsonEncode($post));
} else {
LeoBlogConfig::updateConfigValue('cfg_global', Tools::jsonEncode($post));
}
Configuration::updateValue(Tools::strtoupper(_LEO_BLOG_PREFIX_.'template_current'), $post['template']);
Configuration::updateValue('LEOBLOG_DASHBOARD_DEFAULTTAB', Tools::getValue('LEOBLOG_DASHBOARD_DEFAULTTAB'));
}
}
public function setMedia($isNewTheme = false)
{
parent::setMedia($isNewTheme);
$this->addJqueryUi('ui.widget');
$this->addJqueryPlugin('tagify');
if (file_exists(_PS_THEME_DIR_.'js/modules/leoblog/assets/form.js')) {
$this->context->controller->addJS(__PS_BASE_URI__.'modules/leoblog/assets/admin/form.js');
} else {
$this->context->controller->addJS(__PS_BASE_URI__.$this->module->getMediaDir().'js/admin/form.js');
}
}
public function renderView()
{
$link = $this->context->link;
$quicktools = array();
$quicktools[] = array(
'title' => $this->l('Categories'),
'href' => $link->getAdminLink('AdminLeoblogCategories'),
'icon' => 'icon-desktop',
'class' => '',
);
$quicktools[] = array(
'title' => $this->l('Add Category'),
'href' => $link->getAdminLink('AdminLeoblogCategories'),
'icon' => 'icon-list',
'class' => '',
);
$quicktools[] = array(
'title' => $this->l('Blogs'),
'href' => $link->getAdminLink('AdminLeoblogBlogs'),
'icon' => 'icon-list',
'class' => '',
);
$quicktools[] = array(
'title' => $this->l('Add Blog'),
'href' => $link->getAdminLink('AdminLeoblogBlogs').'&addleoblog_blog',
'icon' => 'icon-list',
'class' => '',
);
$quicktools[] = array(
'title' => $this->l('Comments'),
'href' => $link->getAdminLink('AdminLeoblogComments'),
'icon' => 'icon-list',
'class' => '',
);
$onoff = array(
array(
'id' => 'indexation_on',
'value' => 1,
'label' => $this->l('Enabled')
),
array(
'id' => 'indexation_off',
'value' => 0,
'label' => $this->l('Disabled')
)
);
//$obj = new Leoblogcat();
//$menus = $obj->getDropdown(null, $obj->id_parent);
$templates = LeoBlogHelper::getTemplates();
$url_rss = Tools::htmlentitiesutf8('http://'.$_SERVER['HTTP_HOST'].__PS_BASE_URI__).'modules/leoblog/rss.php';
$form = '';
$this->fields_form[0]['form'] = array(
'tinymce' => true,
// 'legend' => array(
// 'title' => $this->l('General Setting'),
// 'icon' => 'icon-folder-close',
// ),
'input' => array(
// custom template
array(
'type' => 'hidden',
'name' => 'LEOBLOG_DASHBOARD_DEFAULTTAB',
'default' => '',
),
array(
'type' => 'select',
'label' => $this->l('Theme - Template'),
'name' => 'template',
'options' => array('query' => $templates,
'id' => 'template',
'name' => 'template'),
'default' => 'default',
),
array(
'type' => 'text',
'label' => $this->l('Root Link Title'),
'name' => 'blog_link_title',
'required' => true,
'lang' => true,
'desc' => $this->l('Make Link Title For Blog Root Link, Example http://domain/blog'),
'default' => 'Blog',
),
array(
'type' => 'select',
'label' => $this->l('Friendly URL'),
'name' => 'url_use_id',
'required' => false,
'class' => 'form-action',
'is_bool' => true,
'default' => '1',
'hint' => $this->l('When turn on Prestashop SEO, Blog show Friendly URL'),
'options' => array(
'query' => array(
array(
'value' => 1,
'name' => self::l('Include ID'),
),
array(
'value' => 0,
'name' => self::l('NOT include ID'),
),
),
'id' => 'value',
'name' => 'name'
)
),
array(
'type' => 'text',
'label' => $this->l('Root'),
'name' => 'link_rewrite',
'required' => true,
'lang' => true,
// 'desc' => $this->l('Make seo start with this, Example http://domain/blog'),
'hint' => $this->l('Example http://domain/blog.html'),
'default' => 'blog',
),
array(
'type' => 'text',
'label' => $this->l('Category'),
'name' => 'category_rewrite',
'required' => true,
'lang' => true,
'default' => 'category',
'form_group_class' => 'url_use_id_sub url_use_id-0',
'hint' => $this->l('Example http://domain/blog/category/name.html'),
),
array(
'type' => 'text',
'label' => $this->l('Detail'),
'name' => 'detail_rewrite',
'required' => true,
'lang' => true,
'default' => 'detail',
'form_group_class' => 'url_use_id_sub url_use_id-0',
'hint' => $this->l('Example http://domain/blog/detail/name.html'),
),
array(
'type' => 'text',
'label' => $this->l('Meta Title'),
'name' => 'meta_title',
'lang' => true,
'cols' => 40,
'rows' => 10,
'default' => 'Blog',
'desc' => $this->l('Display browser title on frontpage blog')
),
array(
'type' => 'textarea',
'label' => $this->l('Meta description'),
'name' => 'meta_description',
'lang' => true,
'cols' => 40,
'rows' => 10,
'default' => '',
'desk' => $this->l('Display meta descrition on frontpage blog').'note: note <>;=#{}'
),
array(
'type' => 'tags',
'label' => $this->l('Meta keywords'),
'name' => 'meta_keywords',
'default' => '',
'lang' => true,
'desc' => array(
$this->l('Invalid characters:').' <>;=#{}',
$this->l('To add "tags" click in the field, write something, and then press "Enter."')
)
),
array(
'type' => 'switch',
'label' => $this->l('Enable Rss:'),
'name' => 'indexation',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '',
'values' => $onoff,
'desc' => $url_rss
),
array(
'type' => 'text',
'label' => $this->l('Rss Limit Items'),
'name' => 'rss_limit_item',
'default' => '20',
'desc' => 'Set Maximun shows in rss'
),
array(
'type' => 'text',
'label' => $this->l('Rss Title'),
'name' => 'rss_title_item',
'default' => 'RSS FEED',
'desc' => 'Set title in rss'
),
// array(
// 'type' => 'text',
// 'label' => $this->l('Limit Latest Item'),
// 'name' => 'latest_limit_items',
// 'default' => '20',
// 'desc' => 'Set Maximun shows in latest blog page'
// ),
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-danger'
)
);
$this->fields_form[1]['form'] = array(
'tinymce' => true,
'default' => '',
// 'legend' => array(
// 'title' => $this->l('Listing Blog Setting'),
// 'icon' => 'icon-folder-close'
// ),
'input' => array(
array(
'type' => 'switch',
'label' => $this->l('Show Category Info:'),
'name' => 'listing_show_categoryinfo',
'required' => false,
'class' => 't',
'desc' => $this->l('Display category information in listing blogs'),
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Sub Categories:'),
'name' => 'listing_show_subcategories',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
'desc' => $this->l('Display subcategory in listing blog')
),
array(
'type' => 'text',
'label' => $this->l('Leading Column:'),
'name' => 'listing_leading_column',
'required' => false,
'class' => 't',
'default' => '1',
),
array(
'type' => 'text',
'label' => $this->l('Leading Limit Items:'),
'name' => 'listing_leading_limit_items',
'required' => false,
'class' => 't',
'default' => '2',
),
array(
'type' => 'text',
'label' => $this->l('Leading Image Width:'),
'name' => 'listing_leading_img_width',
'required' => false,
'class' => 't',
'default' => '690',
),
array(
'type' => 'text',
'label' => $this->l('Leading Image Height:'),
'name' => 'listing_leading_img_height',
'required' => false,
'class' => 't',
'default' => '300',
),
array(
'type' => 'text',
'label' => $this->l('Secondary Column:'),
'name' => 'listing_secondary_column',
'required' => false,
'class' => 't',
'default' => '3',
),
array(
'type' => 'text',
'label' => $this->l('Secondary Limit Items:'),
'name' => 'listing_secondary_limit_items',
'required' => false,
'class' => 't',
'default' => '6',
),
array(
'type' => 'text',
'label' => $this->l('Secondary Image Width:'),
'name' => 'listing_secondary_img_width',
'required' => false,
'class' => 't',
'default' => '390',
),
array(
'type' => 'text',
'label' => $this->l('Secondary Image Height:'),
'name' => 'listing_secondary_img_height',
'required' => false,
'class' => 't',
'default' => '220',
),
array(
'type' => 'switch',
'label' => $this->l('Show Title:'),
'name' => 'listing_show_title',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Description:'),
'name' => 'listing_show_description',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Readmore:'),
'name' => 'listing_show_readmore',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Image:'),
'name' => 'listing_show_image',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Author:'),
'name' => 'listing_show_author',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Category:'),
'name' => 'listing_show_category',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Created Date:'),
'name' => 'listing_show_created',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Hits:'),
'name' => 'listing_show_hit',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Counter:'),
'name' => 'listing_show_counter',
'required' => false,
'class' => 't',
'default' => '1',
'values' => $onoff,
),
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-danger'
)
);
$this->fields_form[2]['form'] = array(
'tinymce' => true,
'default' => '',
// 'legend' => array(
// 'title' => $this->l('Item Blog Setting'),
// 'icon' => 'icon-folder-close'
// ),
'input' => array(
array(
'type' => 'text',
'label' => $this->l('Item Image Width:'),
'name' => 'item_img_width',
'required' => false,
'class' => 't',
'default' => '690',
),
array(
'type' => 'text',
'label' => $this->l('Item Image Height:'),
'name' => 'item_img_height',
'required' => false,
'class' => 't',
'default' => '350',
),
array(
'type' => 'switch',
'label' => $this->l('Show Description:'),
'name' => 'item_show_description',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Image:'),
'name' => 'item_show_image',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Author:'),
'name' => 'item_show_author',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Category:'),
'name' => 'item_show_category',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Created Date:'),
'name' => 'item_show_created',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Hits:'),
'name' => 'item_show_hit',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'switch',
'label' => $this->l('Show Counter:'),
'name' => 'item_show_counter',
'required' => false,
'class' => 't',
'default' => '1',
'values' => $onoff,
),
array(
'type' => 'textarea',
'label' => $this->l('Social Sharing CODE'),
'name' => 'social_code',
'required' => false,
'default' => '',
'desc' => 'put sharing social code from sharethis service....to replace current sharing social.'
),
// array(
// 'type' => 'switch',
// 'label' => $this->l('Comment Engine:'),
// 'name' => 'item_comment_engine',
// 'required' => false,
// 'class' => 't',
// 'default' => '1',
// 'values' => $onoff,
// ),
array(
'type' => 'switch',
'label' => $this->l('Show List Comment:'),
'name' => 'item_show_listcomment',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
'desc' => $this->l('Show/Hidden the list comment'),
),
array(
'type' => 'switch',
'label' => $this->l('Show Form Comment:'),
'name' => 'item_show_formcomment',
'required' => false,
'class' => 't',
'is_bool' => true,
'default' => '1',
'values' => $onoff,
'desc' => $this->l('This option just worked for the local comment'),
),
array(
'type' => 'select',
'label' => $this->l('Comment Engine:'),
'name' => 'item_comment_engine',
'id' => 'item_comment_engine',
'options' => array('query' => array(
array('id' => 'local', 'name' => $this->l('Local')),
array('id' => 'facebook', 'name' => $this->l('Facebook')),
array('id' => 'diquis', 'name' => $this->l('Diquis')),
),
'id' => 'id',
'name' => 'name'),
'default' => 'local'
),
array(
'type' => 'text',
'label' => $this->l('Limit Local Comment'),
'name' => 'item_limit_comments',
'required' => false,
'class' => 't',
'default' => '10',
),
array(
'type' => 'text',
'label' => $this->l('Diquis Account:'),
'name' => 'item_diquis_account',
'required' => false,
'class' => 't',
'default' => 'demo4leotheme',
'desc' => ''.$this->l('Sign Up Diquis').''
),
array(
'type' => 'text',
'label' => $this->l('Facebook Application ID:'),
'name' => 'item_facebook_appid',
'required' => false,
'class' => 't',
'default' => '100858303516',
'desc' => ''.$this->l('Register A Comment Box, Then Get Application ID in Script Or Register Facebook Application ID to moderate comments').''
),
array(
'type' => 'text',
'label' => $this->l('Facebook Width:'),
'name' => 'item_facebook_width',
'required' => false,
'class' => 't',
'default' => '600'
),
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-danger'
)
);
$this->fields_form[3]['form'] = array(
'tinymce' => true,
'default' => '',
'input' => array(
array(
'type' => 'switch',
'label' => $this->l('Show Popular Blog'),
'name' => 'show_popular_blog',
'is_bool' => true,
'default' => '0',
'values' => $onoff,
),
array(
'type' => 'text',
'label' => $this->l('Limit Popular Blog'),
'name' => 'limit_popular_blog',
'default' => '5',
),
array(
'type' => 'switch',
'label' => $this->l('Show Recent Blog'),
'name' => 'show_recent_blog',
'is_bool' => true,
'default' => '0',
'values' => $onoff,
),
array(
'type' => 'text',
'label' => $this->l('Limit Recent Blog'),
'name' => 'limit_recent_blog',
'default' => '5',
),
array(
'type' => 'switch',
'label' => $this->l('Show All Tags'),
'name' => 'show_all_tags',
'is_bool' => true,
'default' => '0',
'values' => $onoff,
),
),
'submit' => array(
'title' => $this->l('Save'),
'class' => 'btn btn-danger'
)
);
if (Configuration::get(Tools::strtoupper(_LEO_BLOG_PREFIX_.'template_current')) == 'default') {
$data = LeoBlogConfig::getConfigValue('cfg_global');
} else {
$data = LeoBlogConfig::getConfigValue('cfg_global_'.Configuration::get(Tools::strtoupper(_LEO_BLOG_PREFIX_.'template_current')));
}
$obj = new stdClass();
if ($data && $tmp = Tools::jsonDecode($data, true)) {
foreach ($tmp as $key => $value) {
# validate module
$obj->{$key} = $value;
}
}
$fields_value = $this->getConfigFieldsValues($obj);
$fields_value['social_code'] = LeoBlogHelper::correctDeCodeData($fields_value['social_code']);
$helper = new HelperForm($this);
$this->setHelperDisplay($helper);
// $helper->override_folder = 'test/';
$helper->fields_value = $fields_value;
$helper->tpl_vars = $this->tpl_form_vars;
!is_null($this->base_tpl_form) ? $helper->base_tpl = $this->base_tpl_form : '';
if ($this->tabAccess['view']) {
$helper->tpl_vars['show_toolbar'] = false;
$helper->tpl_vars['submit_action'] = 'saveConfiguration';
if (Tools::getValue('back')) {
$helper->tpl_vars['back'] = '';
} else {
$helper->tpl_vars['back'] = '';
}
}
$form = $helper->generateForm($this->fields_form);
$template = $this->createTemplate('panel.tpl');
$comments = LeoBlogComment::getComments(null, 10, $this->context->language->id);
$blogs = LeoBlogBlog::getListBlogs(null, $this->context->language->id, 0, 10, 'hits', 'DESC');
$template->assign(array(
'quicktools' => $quicktools,
'showed' => 1,
'comment_link' => $link->getAdminLink('AdminLeoblogComments'),
'blog_link' => $link->getAdminLink('AdminLeoblogBlogs'),
'blogs' => $blogs,
'count_blogs' => LeoBlogBlog::countBlogs(null, $this->context->language->id),
'count_cats' => Leoblogcat::countCats(),
'count_comments' => LeoBlogComment::countComments(),
'latest_comments' => $comments,
'globalform' => $form,
'default_tab' => Configuration::get('LEOBLOG_DASHBOARD_DEFAULTTAB')
));
return $template->fetch();
}
/**
* Asign value for each input of Data form
*/
public function getConfigFieldsValues($obj)
{
$languages = Language::getLanguages(false);
$fields_values = array();
foreach ($this->fields_form as $k => $f) {
foreach ($f['form']['input'] as $j => $input) {
if (isset($input['lang'])) {
foreach ($languages as $lang) {
if (isset($obj->{trim($input['name']).'_'.$lang['id_lang']})) {
$data = $obj->{trim($input['name']).'_'.$lang['id_lang']};
$fields_values[$input['name']][$lang['id_lang']] = $data;
} else {
# validate module
$fields_values[$input['name']][$lang['id_lang']] = $input['default'];
}
}
} else {
if (isset($obj->{trim($input['name'])})) {
$data = $obj->{trim($input['name'])};
if ($input['name'] == 'image' && $data) {
$thumb = __PS_BASE_URI__.'modules/'.$this->name.'/views/img/'.$data;
$this->fields_form[$k]['form']['input'][$j]['thumb'] = $thumb;
}
$fields_values[$input['name']] = $data;
} else {
# validate module
$fields_values[$input['name']] = $input['default'];
}
}
}
}
$fields_values['LEOBLOG_DASHBOARD_DEFAULTTAB'] = Tools::getValue('LEOBLOG_DASHBOARD_DEFAULTTAB', Configuration::get('LEOBLOG_DASHBOARD_DEFAULTTAB'));
return $fields_values;
}
/**
* PERMISSION ACCOUNT demo@demo.com
* OVERRIDE CORE
*/
public function initProcess()
{
parent::initProcess();
if (count($this->errors) <= 0) {
# EDIT
if (!$this->access('edit')) {
if (Tools::isSubmit('saveConfiguration') && Tools::getValue('saveConfiguration')) {
$this->errors[] = $this->trans('You do not have permission to edit this.', array(), 'Admin.Notifications.Error');
}
}
}
}
}