D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
var
/
www
/
ipwdn
/
modules
/
mod_sppagebuilder
/
fields
/
Filename :
pagebuilder.php
back
Copy
<?php /** * @package SP Page Builder * @author JoomShaper http://www.joomshaper.com * @copyright Copyright (c) 2010 - 2021 JoomShaper * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later */ // No direct accees defined('_JEXEC') or die('restricted access'); use Joomla\CMS\Factory; use Joomla\CMS\Uri\Uri; use Joomla\Registry\Registry; use Joomla\CMS\Form\FormField; use Joomla\CMS\HTML\HTMLHelper; use Joomla\CMS\Component\ComponentHelper; JLoader::register('SppagebuilderHelper', JPATH_ADMINISTRATOR . '/components/com_sppagebuilder/helpers/sppagebuilder.php'); JLoader::register('SppagebuilderHelperRoute', JPATH_ROOT . '/components/com_sppagebuilder/helpers/route.php'); class JFormFieldPagebuilder extends FormField { protected $type = 'Pagebuilder'; protected function getInput() { $output = ''; $id = (int) Factory::getApplication()->input->get('id', 0, 'INT'); if ($id) { require_once JPATH_ROOT . '/administrator/components/com_sppagebuilder/builder/classes/base.php'; require_once JPATH_ROOT . '/administrator/components/com_sppagebuilder/builder/classes/config.php'; $this->loadPageBuilderLanguage(); $params = ComponentHelper::getParams('com_sppagebuilder'); $doc = Factory::getDocument(); $input = Factory::getApplication()->input; HTMLHelper::_('jquery.framework'); SppagebuilderHelper::loadAssets('css'); $doc->addStylesheet(Uri::base(true) . '/components/com_sppagebuilder/assets/css/react-select.css'); SppagebuilderHelper::loadEditor(); $doc->addScript(Uri::base(true) . '/components/com_sppagebuilder/assets/js/script.js'); $doc->addScript(Uri::root(true) . '/modules/mod_sppagebuilder/assets/js/action.js'); $doc->addScriptdeclaration('var pagebuilder_base="' . Uri::root() . '";'); // Addon List Initialize SpPgaeBuilderBase::loadAddons(); $fa_icon_list = SpPgaeBuilderBase::getIconList(); // Icon List $animateNames = SpPgaeBuilderBase::getAnimationsList(); // Animation Names $accessLevels = SpPgaeBuilderBase::getAccessLevelList(); // Access Levels $article_cats = SpPgaeBuilderBase::getArticleCategories(); // Article Categories $moduleAttr = SpPgaeBuilderBase::getModuleAttributes(); // Module Postions and Module Lits $rowSettings = SpPgaeBuilderBase::getRowGlobalSettings(); // Row Settings Attributes $columnSettings = SpPgaeBuilderBase::getColumnGlobalSettings(); // Column Settings Attributes $global_attributes = SpPgaeBuilderBase::addonOptions(); // Addon List $addons_list = SpAddonsConfig::$addons; $globalDefault = SpPgaeBuilderBase::getSettingsDefaultValue($global_attributes); foreach ($addons_list as $key => &$addon) { $new_default_value = SpPgaeBuilderBase::getSettingsDefaultValue($addon['attr']); $addon['default'] = array_merge($new_default_value['default'], $globalDefault['default']); } $row_default_value = SpPgaeBuilderBase::getSettingsDefaultValue($rowSettings['attr']); $rowSettings['default'] = $row_default_value; $column_default_value = SpPgaeBuilderBase::getSettingsDefaultValue($columnSettings['attr']); $columnSettings['default'] = $column_default_value; $doc->addScriptdeclaration('var addonsJSON=' . json_encode($addons_list) . ';'); // Addon Categories $addon_cats = SpPgaeBuilderBase::getAddonCategories($addons_list); $doc->addScriptdeclaration('var addonCats=' . json_encode($addon_cats) . ';'); // Global Attributes $doc->addScriptdeclaration('var globalAttr=' . json_encode($global_attributes) . ';'); $doc->addScriptdeclaration('var faIconList=' . json_encode($fa_icon_list) . ';'); $doc->addScriptdeclaration('var animateNames=' . json_encode($animateNames) . ';'); $doc->addScriptdeclaration('var accessLevels=' . json_encode($accessLevels) . ';'); $doc->addScriptdeclaration('var articleCats=' . json_encode($article_cats) . ';'); $doc->addScriptdeclaration('var moduleAttr=' . json_encode($moduleAttr) . ';'); $doc->addScriptdeclaration('var rowSettings=' . json_encode($rowSettings) . ';'); $doc->addScriptdeclaration('var colSettings=' . json_encode($columnSettings) . ';'); // Global variable for page name $doc->addScriptdeclaration('var pageType="module"; '); // Media $mediaParams = ComponentHelper::getParams('com_media'); $doc->addScriptdeclaration('var sppbMediaPath=\'/' . $mediaParams->get('file_path', 'images') . '\';'); $initialState = '[]'; $pageData = $this->pageData($id); if (isset($pageData->id) && $pageData->id) { $view_id = $pageData->id; $content = $pageData->text; if (empty($content)) { $content = '[]'; } } else { $data = $this->form->getData(); $params = new Registry($this->moduleParams($id)); $title = $data->get('title'); $content = $params->get('content', '[]'); if (!$this->isJson($content)) { $content = '[]'; } $view_id = $this->insertData($id, $title, $content); if (empty($content)) { $content = '[]'; } } $initialState = $content; $doc->addScriptdeclaration('var initialState=' . $initialState . ';'); $doc->addScriptdeclaration('var boxLayout=1;'); $front_link = 'index.php?option=com_sppagebuilder&view=form&tmpl=component&layout=edit&extension=mod_sppagebuilder&extension_view=module&id=' . $view_id; $sefURI = str_replace('/administrator', '', SppagebuilderHelperRoute::buildRoute($front_link)); $output = '<a class="btn btn-default" style="margin-bottom: 20px;" href="' . $sefURI . '" target="_blank">Frontend Edit with SP Page builder</a>'; $output .= '<div class="sp-pagebuilder-admin pagebuilder-module"><div id="sp-pagebuilder-page-tools" class="sp-pagebuilder-page-tools"></div><div class="sp-pagebuilder-sidebar-and-builder"><div id="sp-pagebuilder-section-lib" class="clearfix sp-pagebuilder-section-lib"></div><div id="container"></div></div></div>'; $output .= '<input type="hidden" name="' . $this->name . '" id="' . $this->id . '" value="">'; $output .= '<input type="hidden" name="jform[content]" id="jform_content" value="">'; $output .= '<input type="hidden" id="sppagebuilder_module_id" value="' . $id . '">'; $output .= '<script type="text/javascript" src="' . Uri::base(true) . '/components/com_sppagebuilder/assets/js/engine.js" defer></script>'; return $output; } else { $output .= '<div class="alert alert-info">Please save this module to activate Page Builder</div>'; } $output .= '<style>#general .control-group .control-label {display: none;} #general .control-group .controls {margin-left: 0;}</style>'; return $output; } private function moduleParams($id) { $db = Factory::getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName(array('params'))); $query->from($db->quoteName('#__modules')); $query->where($db->quoteName('id') . ' = ' . $db->quote($id)); $db->setQuery($query); $result = $db->loadResult(); return $result; } private function pageData($id) { $db = Factory::getDbo(); $query = $db->getQuery(true); $query->select('*'); $query->from($db->quoteName('#__sppagebuilder')); $query->where($db->quoteName('extension') . ' = ' . $db->quote('mod_sppagebuilder')); $query->where($db->quoteName('extension_view') . ' = ' . $db->quote('module')); $query->where($db->quoteName('view_id') . ' = ' . $db->quote($id)); $db->setQuery($query); $result = $db->loadObject(); return $result; } private function insertData($id, $title, $content) { $user = Factory::getUser(); $date = Factory::getDate(); $db = Factory::getDbo(); $page = new stdClass; $page->title = $title; $page->text = $content; $page->extension = 'mod_sppagebuilder'; $page->extension_view = 'module'; $page->view_id = $id; $page->published = 1; $page->created_by = (int) $user->id; $page->created_on = $date->toSql(); $page->modified = $date->toSql(); $page->checked_out_time = $date->toSql(); $page->language = '*'; $page->access = 1; $page->css = ''; $page->active = 1; $db->insertObject('#__sppagebuilder', $page); return $db->insertid(); } function isJson($string) { json_decode($string); return (json_last_error() == JSON_ERROR_NONE); } private function loadPageBuilderLanguage() { $lang = Factory::getLanguage(); $lang->load('com_sppagebuilder', JPATH_ADMINISTRATOR, $lang->getName(), true); $lang->load('tpl_' . $this->getTemplate(), JPATH_SITE, $lang->getName(), true); require_once JPATH_ROOT . '/administrator/components/com_sppagebuilder/helpers/language.php'; } private function getTemplate() { $db = Factory::getDbo(); $query = $db->getQuery(true); $query->select($db->quoteName(array('template'))); $query->from($db->quoteName('#__template_styles')); $query->where($db->quoteName('client_id') . ' = ' . $db->quote(0)); $query->where($db->quoteName('home') . ' = ' . $db->quote(1)); $db->setQuery($query); return $db->loadResult(); } }