Release of v3.2.3-alpha1

Fix site view form missing classes in J4+. Fix permissions tab in items in J4+. Fix site display controller checkEditId function in J4+. Add class methods to the HtmlView classes in J4+. Fix broken toolbar call in HtmlView in J4+.
This commit is contained in:
Robot committed 2024-07-26 15:33:16 +02:00
1 parent 36d0eb98ee
commit fd08d48baf
31 files changed
+1445 -68

No files matched your search

+8
View File
@@ -1,3 +1,11 @@
# v3.2.3-alpha1
- Fix site view form missing classes in J4+
- Fix permissions tab in items in J4+
- Fix site display controller checkEditId function in J4+
- Add class methods to the HtmlView classes in J4+
- Fix broken toolbar call in HtmlView in J4+
# v3.2.2
- Fix auto build from SQL in Joomla 4 and 5.
+5 -5
View File
@@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (3.2.2) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (3.2.3-alpha1) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45)
@@ -144,13 +144,13 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 20th July, 2024
+ *Version*: 3.2.2
+ *Last Build*: 26th July, 2024
+ *Version*: 3.2.3-alpha1
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **796047**
+ *Line count*: **799073**
+ *Field count*: **2104**
+ *File count*: **5469**
+ *File count*: **5490**
+ *Folder count*: **482**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).
+5 -5
View File
@@ -9,7 +9,7 @@ The Component Builder for [Joomla](https://extensions.joomla.org/extension/compo
Whether you're a seasoned [Joomla](https://extensions.joomla.org/extension/component-builder/) developer, or have just started, Component Builder will save you lots of time and money. A real must have!
You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (3.2.2) with **ALL** its features and **ALL** concepts totally open-source and free!
You can install it quite easily and with no limitations. On [gitea](https://git.vdm.dev/joomla/Component-Builder/tags) is the latest release (3.2.3-alpha1) with **ALL** its features and **ALL** concepts totally open-source and free!
> Watch Quick Build of a Hello World component in [JCB on Youtube](https://www.youtube.com/watch?v=IQfsLYIeblk&list=PLQRGFI8XZ_wtGvPQZWBfDzzlERLQgpMRE&index=45)
@@ -144,13 +144,13 @@ TODO
+ *Author*: [Llewellyn van der Merwe](mailto:joomla@vdm.io)
+ *Name*: [Component Builder](https://git.vdm.dev/joomla/Component-Builder)
+ *First Build*: 30th April, 2015
+ *Last Build*: 20th July, 2024
+ *Version*: 3.2.2
+ *Last Build*: 26th July, 2024
+ *Version*: 3.2.3-alpha1
+ *Copyright*: Copyright (C) 2015 Vast Development Method. All rights reserved.
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
+ *Line count*: **796047**
+ *Line count*: **799073**
+ *Field count*: **2104**
+ *File count*: **5469**
+ *File count*: **5490**
+ *Folder count*: **482**
> This **component** was build with a [Joomla](https://extensions.joomla.org/extension/component-builder/) [Automated Component Builder](https://www.joomlacomponentbuilder.com).
+57 -1
View File
@@ -27,6 +27,62 @@ namespace ###NAMESPACEPREFIX###\Component\###ComponentNamespace###\Administrator
*/
class HtmlView extends BaseHtmlView
{
/**
* The items from the model
*
* @var mixed
* @since 3.10.11
*/
public mixed $items;
/**
* The state object
*
* @var mixed
* @since 3.10.11
*/
public mixed $state;
/**
* The styles url array
*
* @var array
* @since 5.0.0
*/
protected array $styles;
/**
* The scripts url array
*
* @var array
* @since 5.0.0
*/
protected array $scripts;
/**
* The actions object
*
* @var object
* @since 3.10.11
*/
public object $canDo;
/**
* The return here base64 url
*
* @var string
* @since 3.10.11
*/
public string $return_here;
/**
* The user object.
*
* @var Joomla___effdaf6d_2275_425d_9f52_d4952e564d34___Power
* @since 3.10.11
*/
public Joomla___effdaf6d_2275_425d_9f52_d4952e564d34___Power $user;
/**
* ###Views### view display method
*
@@ -43,7 +99,7 @@ class HtmlView extends BaseHtmlView
$this->state = $this->get('State');
$this->styles = $this->get('Styles');
$this->scripts = $this->get('Scripts');
$this->user ??= Factory::getApplication()->getIdentity();###ADMIN_DIPLAY_METHOD###
$this->user ??= $this->getCurrentUser();###ADMIN_DIPLAY_METHOD###
$this->saveOrder = $this->listOrder == 'a.ordering';
// set the return here value
$this->return_here = urlencode(base64_encode((string) Uri::getInstance()));
+81 -1
View File
@@ -27,6 +27,86 @@ namespace ###NAMESPACEPREFIX###\Component\###ComponentNamespace###\Administrator
*/
class HtmlView extends BaseHtmlView
{
/**
* The item from the model
*
* @var mixed
* @since 3.10.11
*/
public mixed $item;
/**
* The state object
*
* @var mixed
* @since 3.10.11
*/
public mixed $state;
/**
* The form from the model
*
* @var mixed
* @since 3.10.11
*/
public mixed $form;
/**
* The toolbar object
*
* @var Toolbar
* @since 3.10.11
*/
public Toolbar $toolbar;
/**
* The styles url array
*
* @var array
* @since 5.0.0
*/
protected array $styles;
/**
* The scripts url array
*
* @var array
* @since 5.0.0
*/
protected array $scripts;
/**
* The actions object
*
* @var object
* @since 3.10.11
*/
public object $canDo;
/**
* The origin referral view name
*
* @var string
* @since 3.10.11
*/
public string $ref;
/**
* The origin referral item id
*
* @var int
* @since 3.10.11
*/
public int $refid;
/**
* The referral url suffix values
*
* @var string
* @since 3.10.11
*/
public string $referral;
/**
* ###View### view display method
*
@@ -41,7 +121,7 @@ class HtmlView extends BaseHtmlView
$this->params = ComponentHelper::getParams('com_###component###');
$this->useCoreUI = true;
// Assign the variables
$this->form = $this->get('Form');
$this->form ??= $this->get('Form');
$this->item = $this->get('Item');
$this->styles = $this->get('Styles');
$this->scripts = $this->get('Scripts');
@@ -27,6 +27,38 @@ namespace ###NAMESPACEPREFIX###\Component\###ComponentNamespace###\Administrator
*/
class HtmlView extends BaseHtmlView
{
/**
* The styles url array
*
* @var array
* @since 5.0.0
*/
protected array $styles;
/**
* The scripts url array
*
* @var array
* @since 5.0.0
*/
protected array $scripts;
/**
* The actions object
*
* @var object
* @since 3.10.11
*/
public object $canDo;
/**
* The user object.
*
* @var Joomla___effdaf6d_2275_425d_9f52_d4952e564d34___Power
* @since 3.10.11
*/
public Joomla___effdaf6d_2275_425d_9f52_d4952e564d34___Power $user;
/**
* Display the view
*
@@ -42,11 +74,11 @@ class HtmlView extends BaseHtmlView
// get the application
$this->app ??= Factory::getApplication();
// get the user object
$this->user ??= $this->app->getIdentity();
$this->user ??= $this->getCurrentUser();
// get global action permissions
$this->canDo = ###Component###Helper::getActions('###sview###');
$this->styles = $this->get('Styles');
$this->scripts = $this->get('Scripts');###CUSTOM_ADMIN_DIPLAY_METHOD###
$this->styles = $this->get('Styles') ?? [];
$this->scripts = $this->get('Scripts') ?? [];###CUSTOM_ADMIN_DIPLAY_METHOD###
// Set the html view document stuff
$this->_prepareDocument();
@@ -27,6 +27,86 @@ namespace ###NAMESPACEPREFIX###\Component\###ComponentNamespace###\Site\View\###
*/
class HtmlView extends BaseHtmlView
{
/**
* The item from the model
*
* @var mixed
* @since 3.10.11
*/
public mixed $item;
/**
* The state object
*
* @var mixed
* @since 3.10.11
*/
public mixed $state;
/**
* The form from the model
*
* @var mixed
* @since 3.10.11
*/
public mixed $form;
/**
* The toolbar object
*
* @var Toolbar
* @since 3.10.11
*/
public Toolbar $toolbar;
/**
* The styles url array
*
* @var array
* @since 5.0.0
*/
protected array $styles;
/**
* The scripts url array
*
* @var array
* @since 5.0.0
*/
protected array $scripts;
/**
* The actions object
*
* @var object
* @since 3.10.11
*/
public object $canDo;
/**
* The origin referral view name
*
* @var string
* @since 3.10.11
*/
public string $ref;
/**
* The origin referral view item id
*
* @var int
* @since 3.10.11
*/
public int $refid;
/**
* The referral url suffix values
*
* @var string
* @since 3.10.11
*/
public string $referral;
/**
* ###View### view display method
*
@@ -41,11 +121,11 @@ class HtmlView extends BaseHtmlView
$this->params = ComponentHelper::getParams('com_###component###');
$this->useCoreUI = true;
// Assign the variables
$this->form = $this->get('Form');
$this->form ??= $this->get('Form');
$this->item = $this->get('Item');
$this->state = $this->get('State');
$this->styles = $this->get('Styles');
$this->scripts = $this->get('Scripts');
$this->styles = $this->get('Styles') ?? [];
$this->scripts = $this->get('Scripts') ?? [];
// get action permissions
$this->canDo = ###Component###Helper::getActions('###view###', $this->item);
// get input
@@ -97,6 +177,9 @@ class HtmlView extends BaseHtmlView
protected function addToolbar(): void
{
###ADDTOOLBAR###
// now initiate the toolbar
$this->toolbar ??= Toolbar::getInstance();
}
/**
@@ -15,9 +15,13 @@ defined('_JCB_TEMPLATE') or die;
###BOM###
namespace ###NAMESPACEPREFIX###\Component\###ComponentNamespace###\Site\Controller;
use Joomla\Input\Input;
use Joomla\CMS\Factory;
use Joomla\CMS\Application\CMSApplication;
use Joomla\CMS\MVC\Controller\BaseController;
use Joomla\CMS\MVC\Factory\MVCFactoryInterface;
use Joomla\CMS\Router\Route;
use Joomla\CMS\User\User;
use Joomla\Utilities\ArrayHelper;
use Joomla\CMS\Language\Text;
@@ -31,13 +35,50 @@ use Joomla\CMS\Language\Text;
*/
class DisplayController extends BaseController
{
/**
* The allowed edit views.
*
* @var array
* @since 4.0.0
*/
protected array $allowed_edit_views = [###SITE_ALLOW_EDIT_VIEWS_ARRAY###
];
/**
* The application identity object.
*
* @var User
* @since 4.0.0
*/
protected $identity;
/**
* @param array $config An optional associative array of configuration settings.
* Recognized key values include 'name', 'default_task', 'model_path', and
* 'view_path' (this list is not meant to be comprehensive).
* @param MVCFactoryInterface|null $factory The factory.
* @param CMSApplication|null $app The Application for the dispatcher
* @param Input|null $input The Input object for the request
*
* @throws \Exception
* @since 3.0.1
*/
public function __construct($config = [], MVCFactoryInterface $factory = null, $app = null, $input = null)
{
$app ??= Factory::getApplication();
$this->identity ??= $app->getIdentity();
parent::__construct($config, $factory, $app, $input);
}
/**
* Method to display a view.
*
* @param boolean $cachable If true, the view output will be cached.
* @param boolean $urlparams An array of safe URL parameters and their variable types, for valid values see {@link InputFilter::clean()}.
* @param boolean $cachable If true, the view output will be cached.
* @param boolean|array $urlparams An array of safe URL parameters and their variable types, for valid values see {@link InputFilter::clean()}.
*
* @return DisplayController This object to support chaining.
* @throws \Exception
* @since 1.5
*/
function display($cachable = false, $urlparams = false)
@@ -51,14 +92,13 @@ class DisplayController extends BaseController
$cachable = true;
// ensure that the view is not cashable if edit view or if user is logged in
$user = $this->app->getIdentity();
if ($user->get('id') || $this->input->getMethod() === 'POST' || $isEdit)
if ($this->identity->get('id') || $this->input->getMethod() === 'POST' || $isEdit)
{
$cachable = false;
}
// Check for edit form.
if ($isEdit && !$this->checkEditId('com_###component###.edit.'.$view, $id))
if ($isEdit && !$this->checkEditId($view, $id))
{
// check if item was opened from other than its own list view
$ref = $this->input->getCmd('ref', 0);
@@ -68,12 +108,12 @@ class DisplayController extends BaseController
if ($refid > 0 && Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($ref))
{
// redirect to item of ref
$this->setRedirect(Route::_('index.php?option=com_###component###&view='.(string)$ref.'&layout=edit&id='.(int)$refid, false));
$this->setRedirect(Route::_('index.php?option=com_###component###&view=' . (string) $ref . '&layout=edit&id=' . (int) $refid, false));
}
elseif (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($ref))
{
// redirect to ref
$this->setRedirect(Route::_('index.php?option=com_###component###&view='.(string)$ref, false));
$this->setRedirect(Route::_('index.php?option=com_###component###&view=' . (string) $ref, false));
}
else
{
@@ -115,18 +155,133 @@ class DisplayController extends BaseController
return $this;
}
protected function checkEditView($view)
/**
* Method to check whether an ID is in the edit list.
*
* @param string $context The view name.
* @param integer $id The ID of the record to add to the edit list.
*
* @return boolean True if the ID is in the edit list.
*
* @throws \Exception
* @since 3.0
*/
protected function checkEditId($context, $id)
{
if (parent::checkEditId("com_###component###.edit.{$context}", $id))
{
return true;
}
// check user edit access
if ($this->canEditId($context, $id))
{
$this->holdEditId("com_###component###.edit.{$context}", $id);
return true;
}
return false;
}
/**
* Method to check whether an ID is allowed to be edited by the active user.
*
* @param string $view The view name.
* @param integer $id The ID of the record to add to the edit list.
*
* @return boolean True if the ID is in the edit list.
*
* @since 5.0.2
*/
protected function canEditId($view, $id): bool
{
// check that this view is even allowed
$allowed = $this->getAllowedEditView($view);
if ($allowed === null)
{
return false;
}
// check if this item has custom function set for canEditId
if (isset($allowed['function'])
&& method_exists($this, $allowed['function'])
&& $this->{$allowed['function']}(['id' => $id], 'id'))
{
return true;
}
// check if this item can be accessed (and has access)
$access = true;
if (isset($allowed['access']))
{
$access = ($this->identity->authorise($allowed['access'], "com_###component###.{$view}." . (int) $id)
&& $this->identity->authorise($allowed['access'], 'com_###component###'));
}
// check if this item can be edited
$edit = false;
if ($access && isset($allowed['edit']))
{
$edit = ($this->identity->authorise($allowed['edit'], "com_###component###.{$view}." . (int) $id)
&& $this->identity->authorise($allowed['edit'], 'com_###component###'));
}
// check if this item can be edited by owner
if ($access && !$edit && isset($allowed['edit.own']))
{
$edit = ($this->identity->authorise($allowed['edit.own'], "com_###component###.{$view}." . (int) $id)
&& $this->identity->authorise($allowed['edit.own'], 'com_###component###'));
}
return $edit;
}
/**
* Checks if the provided view is an edit view.
*
* This method verifies whether the given view name is recognized as an edit view.
* It uses the StringHelper::check() method to validate the input and then checks
* against a predefined list of edit views.
*
* @param string|null $view The name of the view to check.
*
* @return bool True if the view is an edit view, false otherwise.
* @since 4.0.0
*/
protected function checkEditView(?string $view): bool
{
if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($view))
{
$views = [###SITE_EDIT_VIEW_ARRAY###
];
// check if this is a edit view
if (in_array($view,$views))
// check if this is an edit view
if (isset($this->allowed_edit_views[$view]))
{
return true;
}
}
return false;
}
/**
* Get the allowed edit view permission map
*
* @param string|null $view The name of the view to check.
*
* @return array|null The permissions map
* @since 5.0.2
*/
protected function getAllowedEditView(?string $view): ?array
{
if (Super___1f28cb53_60d9_4db1_b517_3c7dc6b429ef___Power::check($view))
{
// check if this is an edit view
if (isset($this->allowed_edit_views[$view]))
{
return $this->allowed_edit_views[$view];
}
}
return null;
}###SITE_ALLOW_EDIT_VIEWS_FUNCTIONS###
}
@@ -27,6 +27,54 @@ namespace ###NAMESPACEPREFIX###\Component\###ComponentNamespace###\Site\View\###
*/
class HtmlView extends BaseHtmlView
{
/**
* The items from the model
*
* @var mixed
* @since 3.10.11
*/
public mixed $items;
/**
* The toolbar object
*
* @var Toolbar
* @since 3.10.11
*/
public Toolbar $toolbar;
/**
* The styles url array
*
* @var array
* @since 5.0.0
*/
protected array $styles;
/**
* The scripts url array
*
* @var array
* @since 5.0.0
*/
protected array $scripts;
/**
* The actions object
*
* @var object
* @since 3.10.11
*/
public object $canDo;
/**
* The user object.
*
* @var Joomla___effdaf6d_2275_425d_9f52_d4952e564d34___Power
* @since 3.10.11
*/
public Joomla___effdaf6d_2275_425d_9f52_d4952e564d34___Power $user;
/**
* Display the view
*
@@ -82,6 +130,7 @@ class HtmlView extends BaseHtmlView
{
ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
}
// now initiate the toolbar
$this->toolbar = Toolbar::getInstance();
}###SITE_GET_MODULE###
@@ -25,7 +25,7 @@ namespace ###NAMESPACEPREFIX###\Component\###ComponentNamespace###\Site\Controll
*
* @since 1.6
*/
class ###SView###Controller extends FormController
class ###SView###Controller extends Joomla___907ccae5_57a9_44b9_a8aa_5b905d1cd70f___Power
{
/**
* The prefix to use with controller messages.
@@ -107,14 +107,14 @@ class ###SView###Controller extends FormController
* Function that allows child controller access to model data
* after the data has been saved.
*
* @param BaseDatabaseModel $model The data model object.
* @param Joomla___6dce7a1b_cfc3_4c2a_837d_be9cbc902446___Power $model The data model object.
* @param array $validData The validated data.
*
* @return void
*
* @since 12.2
*/
protected function postSaveHook(BaseDatabaseModel $model, $validData = [])
protected function postSaveHook(Joomla___6dce7a1b_cfc3_4c2a_837d_be9cbc902446___Power $model, $validData = [])
{
}
}
+37 -4
View File
@@ -27,6 +27,38 @@ namespace ###NAMESPACEPREFIX###\Component\###ComponentNamespace###\Site\View\###
*/
class HtmlView extends BaseHtmlView
{
/**
* The toolbar object
*
* @var Toolbar
* @since 3.10.11
*/
public Toolbar $toolbar;
/**
* The styles url array
*
* @var array
* @since 3.10.11
*/
protected array $styles;
/**
* The scripts url array
*
* @var array
* @since 3.10.11
*/
protected array $scripts;
/**
* The user object.
*
* @var Joomla___effdaf6d_2275_425d_9f52_d4952e564d34___Power
* @since 3.10.11
*/
public Joomla___effdaf6d_2275_425d_9f52_d4952e564d34___Power $user;
/**
* Display the view
*
@@ -41,10 +73,10 @@ class HtmlView extends BaseHtmlView
$this->app ??= Factory::getApplication();
$this->params = $this->app->getParams();
$this->menu = $this->app->getMenu()->getActive();
$this->styles = $this->get('Styles');
$this->scripts = $this->get('Scripts');
$this->styles = $this->get('Styles') ?? [];
$this->scripts = $this->get('Scripts') ?? [];
// get the user object
$this->user ??= $this->app->getIdentity();###SITE_DIPLAY_METHOD###
$this->user ??= $this->getCurrentUser();###SITE_DIPLAY_METHOD###
}###SITE_EXTRA_DIPLAY_METHODS###
/**
@@ -82,8 +114,9 @@ class HtmlView extends BaseHtmlView
{
ToolbarHelper::help('COM_###COMPONENT###_HELP_MANAGER', false, $this->help_url);
}
// now initiate the toolbar
$this->toolbar = Toolbar::getInstance();
$this->toolbar ??= Toolbar::getInstance();
}###SITE_GET_MODULE###
/**
@@ -3275,7 +3275,7 @@ COM_COMPONENTBUILDER_COMPONENT_UPDATES_UPDATE_STATE_DESCRIPTION="Set the release
COM_COMPONENTBUILDER_COMPONENT_UPDATES_UPDATE_STATE_HINT="stable"
COM_COMPONENTBUILDER_COMPONENT_UPDATES_UPDATE_STATE_LABEL="Release State"
COM_COMPONENTBUILDER_COMPONENT_UPDATES_UPDATE_TARGET_VERSION_DESCRIPTION="Set the release target version"
COM_COMPONENTBUILDER_COMPONENT_UPDATES_UPDATE_TARGET_VERSION_HINT="3.*"
COM_COMPONENTBUILDER_COMPONENT_UPDATES_UPDATE_TARGET_VERSION_HINT="5\.[012]"
COM_COMPONENTBUILDER_COMPONENT_UPDATES_UPDATE_TARGET_VERSION_LABEL="Update Server Release Target Version"
COM_COMPONENTBUILDER_COMPONENT_UPDATES_URL_DESCRIPTION="Enter Download Link"
COM_COMPONENTBUILDER_COMPONENT_UPDATES_URL_HINT="http://www.example.com/file.zip"
+1 -1
View File
@@ -247,7 +247,7 @@
label="COM_COMPONENTBUILDER_COMPONENT_UPDATES_UPDATE_TARGET_VERSION_LABEL"
size="10"
maxlength="50"
default="3.*"
default="5\.[012]"
description="COM_COMPONENTBUILDER_COMPONENT_UPDATES_UPDATE_TARGET_VERSION_DESCRIPTION"
class="text_area"
filter="string"
+5 -5
View File
@@ -2086,7 +2086,7 @@ CREATE TABLE IF NOT EXISTS `#__componentbuilder_joomla_plugin_files_folders_urls
--
INSERT INTO `#__componentbuilder_joomla_component` (`id`, `add_admin_event`, `add_backup_folder_path`, `add_css_admin`, `add_css_site`, `add_email_helper`, `add_git_folder_path`, `add_javascript`, `add_menu_prefix`, `add_namespace_prefix`, `add_php_helper_admin`, `add_php_helper_both`, `add_php_helper_site`, `add_php_method_uninstall`, `add_php_postflight_install`, `add_php_postflight_update`, `add_php_preflight_install`, `add_php_preflight_update`, `add_placeholders`, `add_powers`, `add_sales_server`, `add_site_event`, `add_sql`, `add_sql_uninstall`, `add_update_server`, `addcontributors`, `addfootable`, `addreadme`, `adduikit`, `assets_table_fix`, `author`, `backup_folder_path`, `bom`, `buildcomp`, `buildcompsql`, `companyname`, `component_version`, `copyright`, `created`, `creatuserhelper`, `crowdin_account_api_key`, `crowdin_project_api_key`, `crowdin_project_identifier`, `crowdin_username`, `css_admin`, `css_site`, `dashboard`, `dashboard_type`, `debug_linenr`, `description`, `email`, `emptycontributors`, `export_buy_link`, `export_key`, `git_folder_path`, `guid`, `image`, `javascript`, `joomla_source_link`, `license`, `menu_prefix`, `modified`, `mvc_versiondate`, `name`, `name_code`, `namespace_prefix`, `number`, `php_admin_event`, `php_helper_admin`, `php_helper_both`, `php_helper_site`, `php_method_uninstall`, `php_postflight_install`, `php_postflight_update`, `php_preflight_install`, `php_preflight_update`, `php_site_event`, `php_method_install`, `readme`, `remove_line_breaks`, `sales_server`, `short_description`, `sql`, `sql_uninstall`, `system_name`, `toignore`, `translation_tool`, `update_server`, `update_server_target`, `update_server_url`, `website`, `params`, `published`, `version`, `hits`, `access`, `ordering`) VALUES
(25, '', '', '', '', '', '', '', 1, '', '', '', 1, '', 1, '', '', '', '', 1, '', '', '', '', 1, '{}', '', 1, 1, 3, 'Llewellyn van der Merwe', '', 'default.txt', '', '', 'Vast Development Method', '2.1.0', 'Copyright (C) 2015. All Rights Reserved', '2016-10-18 11:44:09', '', 'mvVkzmHCEIoBhzD3gR3uTzXRGwNVNRWw8Hr1vrXxb+I=', 'BbloLSYT6Yup6v3I/YNmrdOwzjbI4BGfDvJSB82N9DU=', '', 'VtSt2RMz+AHCrwc7jk1G70t83ZwZsNp2upqfzMyaVHE=', '', '', '', 1, '', 'Just a basic demo of the most basic implementations of the [Joomla](http://www.joomla.org) Component Builder\'s ability.', 'joomla@vdm.io', '', '', 'nZDegSPK87rXA4KMC6P8I6zEldjVIJpPYGRPZlKBI+U=', '', 'efde995e-60aa-4b39-b644-44349dfb660d', 'images/vdm/demo500.jpg', '', 'https://github.com/Llewellynvdm/Joomla-Demo-Component', 'GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html', '»', '2024-01-19 11:57:08', '', 'Demo', 'demo', 'JCB', 4, '', '', '', 'CS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGZhbmN5IGRhdGUNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhbmN5RGF0ZSgkZGF0ZSkNCgl7DQoJCWlmICghc2VsZjo6aXNWYWxpZFRpbWVTdGFtcCgkZGF0ZSkpDQoJCXsNCgkJCSRkYXRlID0gc3RydG90aW1lKCRkYXRlKTsNCgkJfQ0KCQlyZXR1cm4gZGF0ZSgnalMgXG9cZiBGIFknLCRkYXRlKTsNCgl9DQoNCgkvKioNCgkgKglDaGFuZ2UgdG8gbmljZSBmYW5jeSB0aW1lIGFuZCBkYXRlDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeURhdGVUaW1lKCR0aW1lKQ0KCXsNCgkJaWYgKCFzZWxmOjppc1ZhbGlkVGltZVN0YW1wKCR0aW1lKSkNCgkJew0KCQkJJHRpbWUgPSBzdHJ0b3RpbWUoJHRpbWUpOw0KCQl9DQoJCXJldHVybiBkYXRlKCcoRzppKSBqUyBcb1xmIEYgWScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGhvdXI6bWludXRlcyB0aW1lDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeVRpbWUoJHRpbWUpDQoJew0KCQlpZiAoIXNlbGY6OmlzVmFsaWRUaW1lU3RhbXAoJHRpbWUpKQ0KCQl7DQoJCQkkdGltZSA9IHN0cnRvdGltZSgkdGltZSk7DQoJCX0NCgkJcmV0dXJuIGRhdGUoJ0c6aScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoZWNrIGlmIHN0cmluZyBpcyBhIHZhbGlkIHRpbWUgc3RhbXANCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWRUaW1lU3RhbXAoJHRpbWVzdGFtcCkNCgl7DQoJCXJldHVybiAoKGludCkgJHRpbWVzdGFtcCA9PT0gJHRpbWVzdGFtcCkNCgkJJiYgKCR0aW1lc3RhbXAgPD0gUEhQX0lOVF9NQVgpDQoJCSYmICgkdGltZXN0YW1wID49IH5QSFBfSU5UX01BWCk7DQoJfQ0K', '', 'CQkvLyBHZXQgQXBwbGljYXRpb24gb2JqZWN0DQoJCSRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOw0KCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnVGhpcyBpcyBhIGRlbW8gY29tcG9uZW50IGRldmVsb3BlZCBpbiA8YSBocmVmPSJodHRwOi8vdmRtLmJ6L2NvbXBvbmVudC1idWlsZGVyIiB0YWdldD0iX2JhbG5rIiB0aXRsZT0iSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIj5KQ0I8L2E+ISBZb3UgY2FuIGJ1aWxkIG1vcmUgY29tcG9uZW50cyBsaWtlIHRoaXMgd2l0aCBKQ0IsIGNoZWNrb3V0IG91ciBwYWdlIG9uIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92ZG0taW8vSm9vbWxhLUNvbXBvbmVudC1CdWlsZGVyIiB0YWdldD0iX2JhbG5rIiB0aXRsZT0iSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIj5naXRodWI8L2E+IGZvciBtb3JlIGluZm8uIFRoZSBmdXR1cmUgb2YgPGEgaHJlZj0iaHR0cDovL3ZkbS5iei9jb21wb25lbnQtYnVpbGRlciIgdGFnZXQ9Il9iYWxuayIgdGl0bGU9Ikpvb21sYSBDb21wb25lbnQgQnVpbGRlciI+Sm9vbWxhIENvbXBvbmVudCBEZXZlbG9wbWVudDwvYT4gaXMgSGVyZSEnLCAnSW5mbycpOw==', '', '', '', '', '', 'IyAjIyNDb21wb25lbnRfbmFtZSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIVsjIyNDb21wb25lbnRfbmFtZSMjIyBpbWFnZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25hbWliaWEvZGVtby1qb29tbGEtMy1jb21wb25lbnQvbWFzdGVyL2FkbWluL2Fzc2V0cy9pbWFnZXMvdmRtLWNvbXBvbmVudC5qcGcgIlRoZSAjIyNDb21wb25lbnRfbmFtZSMjIyIpDQoNCiMjI0RFU0NSSVBUSU9OIyMjDQoNCiMgQnVpbGQgRGV0YWlscw0KDQorICpDb21wYW55KjogWyMjI0NPTVBBTllOQU1FIyMjXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqQXV0aG9yKjogWyMjI0FVVEhPUiMjI10obWFpbHRvOiMjI0FVVEhPUkVNQUlMIyMjKQ0KKyAqTmFtZSo6IFsjIyNDb21wb25lbnRfbmFtZSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkZpcnN0IEJ1aWxkKjogIyMjQ1JFQVRJT05EQVRFIyMjDQorICpMYXN0IEJ1aWxkKjogIyMjQlVJTEREQVRFIyMjDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQojIyBCdWlsZCBUaW1lDQoNCioqIyMjdG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjdG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqIChhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNhdmVkIC0NCmR1ZSB0byBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKSkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gbmV2ZXIgbWFraW5nIG9uZSBtaXN0YWtlIG9yIHRha2luZyBhbnkgY29mZmVlIGJyZWFrLikNCg0KKyAqTGluZSBjb3VudCo6ICoqIyMjTElORV9DT1VOVCMjIyoqDQorICpGaWxlIGNvdW50KjogKiojIyNGSUxFX0NPVU5UIyMjKioNCisgKkZvbGRlciBjb3VudCo6ICoqIyMjRk9MREVSX0NPVU5UIyMjKioNCg0KKiojIyNhY3R1YWxIb3Vyc1NwZW50IyMjIEhvdXJzKiogb3IgKiojIyNhY3R1YWxEYXlzU3BlbnQjIyMgRWlnaHQgSG91ciBEYXlzKiogKHRoZSBhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNwZW50KQ0KDQo+ICh3aXRoIHRoZSBmb2xsb3dpbmcgYnJlYWsgZG93bjoNCj4gKipkZWJ1Z2dpbmcgQCMjI2RlYnVnZ2luZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA0Ow0KPiAqKnBsYW5uaW5nIEAjIyNwbGFubmluZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA3Ow0KPiAqKm1hcHBpbmcgQCMjI21hcHBpbmdIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gMTA7DQo+ICoqb2ZmaWNlIEAjIyNvZmZpY2VIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gNjspDQoNCioqIyMjYWN0dWFsVG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjYWN0dWFsVG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqDQooYSB0b3RhbCBvZiB0aGUgcmVhbGlzdGljIHRpbWUgLine truncated
(25, '', '', '', '', '', '', '', 1, '', '', 1, '', '', 1, '', '', '', '', 1, '', '', '', '', 1, '{}', '', 1, 3, 3, 'Llewellyn van der Merwe', '', 'default.txt', '', '', 'Vast Development Method', '5.0.0', 'Copyright (C) 2015. All Rights Reserved', '2016-10-18 11:44:09', '', 'JEl15Tox48qBC67gFA3BFmY1Ti/z8VfnxnSdEkgC330=', 'U78ZMsh7lfg/PmyRyrhMJ81r0PMKHYghhRW/GU6P/KI=', '', '4Pce5rC1MUF+opQEt9cE9In8yOrdYepDEJKpNQOx7SE=', '', '', '', 1, '', 'Just a basic demo of the most basic implementations of the [Joomla](http://www.joomla.org) Component Builder\'s ability.', 'joomla@vdm.io', '', '', 'QvjfxcSoqPTlwNZqSIbptkk/kZrnMWIzOEEQ2xFuLd0=', '', 'efde995e-60aa-4b39-b644-44349dfb660d', 'images/vdm/demo500.jpg', '', 'https://github.com/Llewellynvdm/Joomla-Demo-Component', 'GNU/GPL Version 2 or later - http://www.gnu.org/licenses/gpl-2.0.html', '»', '2024-07-24 14:34:48', '', 'Demo', 'Demo', 'JCB', 4, '', '', 'CS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGZhbmN5IGRhdGUNCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGZhbmN5RGF0ZSgkZGF0ZSkNCgl7DQoJCWlmICghc2VsZjo6aXNWYWxpZFRpbWVTdGFtcCgkZGF0ZSkpDQoJCXsNCgkJCSRkYXRlID0gc3RydG90aW1lKCRkYXRlKTsNCgkJfQ0KCQlyZXR1cm4gZGF0ZSgnalMgXG9cZiBGIFknLCRkYXRlKTsNCgl9DQoNCgkvKioNCgkgKglDaGFuZ2UgdG8gbmljZSBmYW5jeSB0aW1lIGFuZCBkYXRlDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeURhdGVUaW1lKCR0aW1lKQ0KCXsNCgkJaWYgKCFzZWxmOjppc1ZhbGlkVGltZVN0YW1wKCR0aW1lKSkNCgkJew0KCQkJJHRpbWUgPSBzdHJ0b3RpbWUoJHRpbWUpOw0KCQl9DQoJCXJldHVybiBkYXRlKCcoRzppKSBqUyBcb1xmIEYgWScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoYW5nZSB0byBuaWNlIGhvdXI6bWludXRlcyB0aW1lDQoJICovDQoJcHVibGljIHN0YXRpYyBmdW5jdGlvbiBmYW5jeVRpbWUoJHRpbWUpDQoJew0KCQlpZiAoIXNlbGY6OmlzVmFsaWRUaW1lU3RhbXAoJHRpbWUpKQ0KCQl7DQoJCQkkdGltZSA9IHN0cnRvdGltZSgkdGltZSk7DQoJCX0NCgkJcmV0dXJuIGRhdGUoJ0c6aScsJHRpbWUpOw0KCX0NCg0KCS8qKg0KCSAqCUNoZWNrIGlmIHN0cmluZyBpcyBhIHZhbGlkIHRpbWUgc3RhbXANCgkgKi8NCglwdWJsaWMgc3RhdGljIGZ1bmN0aW9uIGlzVmFsaWRUaW1lU3RhbXAoJHRpbWVzdGFtcCkNCgl7DQoJCXJldHVybiAoKGludCkgJHRpbWVzdGFtcCA9PT0gJHRpbWVzdGFtcCkNCgkJJiYgKCR0aW1lc3RhbXAgPD0gUEhQX0lOVF9NQVgpDQoJCSYmICgkdGltZXN0YW1wID49IH5QSFBfSU5UX01BWCk7DQoJfQ==', '', '', 'CQkvLyBHZXQgQXBwbGljYXRpb24gb2JqZWN0DQoJCSRhcHAgPSBGYWN0b3J5OjpnZXRBcHBsaWNhdGlvbigpOw0KCQkkYXBwLT5lbnF1ZXVlTWVzc2FnZSgnVGhpcyBpcyBhIGRlbW8gY29tcG9uZW50IGRldmVsb3BlZCBpbiA8YSBocmVmPSJodHRwOi8vdmRtLmJ6L2NvbXBvbmVudC1idWlsZGVyIiB0YWdldD0iX2JhbG5rIiB0aXRsZT0iSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIj5KQ0I8L2E+ISBZb3UgY2FuIGJ1aWxkIG1vcmUgY29tcG9uZW50cyBsaWtlIHRoaXMgd2l0aCBKQ0IsIGNoZWNrb3V0IG91ciBwYWdlIG9uIDxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS92ZG0taW8vSm9vbWxhLUNvbXBvbmVudC1CdWlsZGVyIiB0YWdldD0iX2JhbG5rIiB0aXRsZT0iSm9vbWxhIENvbXBvbmVudCBCdWlsZGVyIj5naXRodWI8L2E+IGZvciBtb3JlIGluZm8uIFRoZSBmdXR1cmUgb2YgPGEgaHJlZj0iaHR0cDovL3ZkbS5iei9jb21wb25lbnQtYnVpbGRlciIgdGFnZXQ9Il9iYWxuayIgdGl0bGU9Ikpvb21sYSBDb21wb25lbnQgQnVpbGRlciI+Sm9vbWxhIENvbXBvbmVudCBEZXZlbG9wbWVudDwvYT4gaXMgSGVyZSEnLCAnSW5mbycpOw==', '', '', '', '', '', 'IyAjIyNDb21wb25lbnRfbmFtZSMjIyAoIyMjVkVSU0lPTiMjIykNCg0KIVsjIyNDb21wb25lbnRfbmFtZSMjIyBpbWFnZV0oaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL25hbWliaWEvZGVtby1qb29tbGEtMy1jb21wb25lbnQvbWFzdGVyL2FkbWluL2Fzc2V0cy9pbWFnZXMvdmRtLWNvbXBvbmVudC5qcGcgIlRoZSAjIyNDb21wb25lbnRfbmFtZSMjIyIpDQoNCiMjI0RFU0NSSVBUSU9OIyMjDQoNCiMgQnVpbGQgRGV0YWlscw0KDQorICpDb21wYW55KjogWyMjI0NPTVBBTllOQU1FIyMjXSgjIyNBVVRIT1JXRUJTSVRFIyMjKQ0KKyAqQXV0aG9yKjogWyMjI0FVVEhPUiMjI10obWFpbHRvOiMjI0FVVEhPUkVNQUlMIyMjKQ0KKyAqTmFtZSo6IFsjIyNDb21wb25lbnRfbmFtZSMjI10oIyMjQVVUSE9SV0VCU0lURSMjIykNCisgKkZpcnN0IEJ1aWxkKjogIyMjQ1JFQVRJT05EQVRFIyMjDQorICpMYXN0IEJ1aWxkKjogIyMjQlVJTEREQVRFIyMjDQorICpWZXJzaW9uKjogIyMjVkVSU0lPTiMjIw0KKyAqQ29weXJpZ2h0KjogIyMjQ09QWVJJR0hUIyMjDQorICpMaWNlbnNlKjogIyMjTElDRU5TRSMjIw0KDQojIyBCdWlsZCBUaW1lDQoNCioqIyMjdG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjdG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqIChhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNhdmVkIC0NCmR1ZSB0byBbQXV0b21hdGVkIENvbXBvbmVudCBCdWlsZGVyXShodHRwczovL3d3dy52ZG0uaW8vam9vbWxhLWNvbXBvbmVudC1idWlsZGVyKSkNCg0KPiAoaWYgY3JlYXRpbmcgYSBmb2xkZXIgYW5kIGZpbGUgdG9vayAqKjUgc2Vjb25kcyoqIGFuZCB3cml0aW5nIG9uZSBsaW5lIG9mIGNvZGUgdG9vayAqKjEwIHNlY29uZHMqKiwNCj4gbmV2ZXIgbWFraW5nIG9uZSBtaXN0YWtlIG9yIHRha2luZyBhbnkgY29mZmVlIGJyZWFrLikNCg0KKyAqTGluZSBjb3VudCo6ICoqIyMjTElORV9DT1VOVCMjIyoqDQorICpGaWxlIGNvdW50KjogKiojIyNGSUxFX0NPVU5UIyMjKioNCisgKkZvbGRlciBjb3VudCo6ICoqIyMjRk9MREVSX0NPVU5UIyMjKioNCg0KKiojIyNhY3R1YWxIb3Vyc1NwZW50IyMjIEhvdXJzKiogb3IgKiojIyNhY3R1YWxEYXlzU3BlbnQjIyMgRWlnaHQgSG91ciBEYXlzKiogKHRoZSBhY3R1YWwgdGltZSB0aGUgYXV0aG9yIHNwZW50KQ0KDQo+ICh3aXRoIHRoZSBmb2xsb3dpbmcgYnJlYWsgZG93bjoNCj4gKipkZWJ1Z2dpbmcgQCMjI2RlYnVnZ2luZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA0Ow0KPiAqKnBsYW5uaW5nIEAjIyNwbGFubmluZ0hvdXJzIyMjaG91cnMqKiA9IGNvZGluZ3RpbWUgLyA3Ow0KPiAqKm1hcHBpbmcgQCMjI21hcHBpbmdIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gMTA7DQo+ICoqb2ZmaWNlIEAjIyNvZmZpY2VIb3VycyMjI2hvdXJzKiogPSBjb2Rpbmd0aW1lIC8gNjspDQoNCioqIyMjYWN0dWFsVG90YWxIb3VycyMjIyBIb3VycyoqIG9yICoqIyMjYWN0dWFsVG90YWxEYXlzIyMjIEVpZ2h0IEhvdXIgRGF5cyoqDQooYSB0b3RhbCBvZiB0aGUgcmVhbGlzdGljIHRpbWUgLine truncated
--
-- Dumping data for table `#__componentbuilder_joomla_plugin`
@@ -2103,15 +2103,15 @@ INSERT INTO `#__componentbuilder_joomla_plugin` (`id`, `add_head`, `add_php_meth
--
INSERT INTO `#__componentbuilder_admin_view` (`id`, `add_css_view`, `add_css_views`, `add_custom_button`, `add_custom_import`, `add_fadein`, `add_javascript_view_file`, `add_javascript_view_footer`, `add_javascript_views_file`, `add_javascript_views_footer`, `add_php_ajax`, `add_php_allowedit`, `add_php_batchcopy`, `add_php_batchmove`, `add_php_getitem`, `add_php_getitems`, `add_php_getitems_after_all`, `add_php_getlistquery`, `add_php_postsavehook`, `add_php_save`, `add_sql`, `addlinked_views`, `addpermissions`, `addtables`, `addtabs`, `add_php_before_delete`, `add_php_before_publish`, `add_php_document`, `add_php_after_delete`, `add_php_after_publish`, `php_before_delete`, `php_before_publish`, `php_controller`, `php_document`, `php_after_delete`, `php_after_publish`, `ajax_input`, `css_view`, `css_views`, `custom_button`, `description`, `html_import_view`, `icon`, `icon_add`, `icon_category`, `javascript_view_file`, `javascript_view_footer`, `javascript_views_file`, `javascript_views_footer`, `name_list`, `system_name`, `name_single`, `php_ajaxmethod`, `php_allowedit`, `php_batchcopy`, `php_batchmove`, `php_getitem`, `php_getitems`, `php_getitems_after_all`, `php_getlistquery`, `php_import`, `php_import_display`, `php_import_save`, `php_import_setdata`, `php_model`, `php_postsavehook`, `php_save`, `short_description`, `source`, `sql`, `type`, `php_before_save`, `php_controller_list`, `php_getform`, `php_after_cancel`, `php_allowadd`, `php_before_cancel`, `php_import_ext`, `php_import_headers`, `php_model_list`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`) VALUES
(109, '', '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{\"addtabs0\":{\"name\":\"Details\"},\"addtabs1\":{\"name\":\"More\"}}', '', '', '', '', '', '', '', '', '', '', '', '{}', '', '', '{}', '', '', 'images/WoodMannequin-icon.png', 'images/WoodMannequin-icon-plus.png', '', '', '', '', '', 'Looks', 'Look', 'Look', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'The demo view', '', '', 1, '', '', '', '', '', '', '', '', '', '{\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"ASC\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"\",\"direction\":\"ASC\"}}},\"privacy\":{\"activate\":\"1\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"682\"}}', 1, '2016-10-18 11:44:46', '2020-05-21 14:39:27', 18, '', 110, 'c1053952-8a84-4398-aef1-41726f7c0043');
(109, '', '', '', '', 1, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '{}', '{\"addpermissions0\":{\"action\":\"view.edit\",\"implementation\":3},\"addpermissions1\":{\"action\":\"view.edit.own\",\"implementation\":3},\"addpermissions2\":{\"action\":\"view.edit.state\",\"implementation\":3},\"addpermissions3\":{\"action\":\"view.edit.created_by\",\"implementation\":3},\"addpermissions4\":{\"action\":\"view.edit.created\",\"implementation\":3},\"addpermissions5\":{\"action\":\"view.create\",\"implementation\":3},\"addpermissions6\":{\"action\":\"view.delete\",\"implementation\":3},\"addpermissions7\":{\"action\":\"view.access\",\"implementation\":3}}', '{}', '{\"addtabs0\":{\"name\":\"Details\"},\"addtabs1\":{\"name\":\"More\"}}', '', '', '', '', '', '', '', '', '', '', '', '{}', '', '', '{}', '', '', 'images/WoodMannequin-icon.png', 'images/WoodMannequin-icon-plus.png', '', '', '', '', '', 'Looks', 'Look', 'Look', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'The demo view', '', '', 1, '', '', '', '', '', '', '', '', '', '{\"privacy\":{\"activate\":\"1\",\"permissions\":\"1\",\"anonymize\":\"0\",\"anonymize_fields\":[],\"user_link\":\"1\",\"custom_link\":\"$query->where($db->quoteName(\'created_by\') . \' = \' . $db->quote($user->id));\",\"other_user_field\":\"682\"},\"fieldordering\":{\"add_admin_ordering\":\"0\",\"admin_ordering_fields\":{\"admin_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}},\"add_linked_ordering\":\"0\",\"linked_ordering_fields\":{\"linked_ordering_fields0\":{\"field\":\"\",\"direction\":\"asc\"}}},\"admin_view_headers\":{\"add_admin_view_model\":\"0\",\"admin_view_model\":\"\",\"power_admin_view_model\":[],\"add_admin_view_html\":\"0\",\"admin_view_html\":\"\",\"power_admin_view_html\":[],\"add_admin_view\":\"0\",\"admin_view\":\"\",\"power_admin_view\":[],\"add_admin_view_controller\":\"0\",\"admin_view_controller\":\"\",\"power_admin_view_controller\":[],\"add_admin_views_model\":\"0\",\"admin_views_model\":\"\",\"power_admin_views_model\":[],\"add_admin_views_html\":\"0\",\"admin_views_html\":\"\",\"power_admin_views_html\":[],\"add_admin_views\":\"0\",\"admin_views\":\"\",\"power_admin_views\":[],\"add_admin_views_controller\":\"0\",\"admin_views_controller\":\"\",\"power_admin_views_controller\":[],\"add_site_admin_view_model\":\"0\",\"site_admin_view_model\":\"\",\"power_site_admin_view_model\":[],\"add_site_admin_view_html\":\"0\",\"site_admin_view_html\":\"\",\"power_site_admin_view_html\":[],\"add_site_admin_view\":\"0\",\"site_admin_view\":\"\",\"power_site_admin_view\":[],\"add_import_custom_controller\":\"0\",\"import_custom_controller\":\"\",\"power_import_custom_controller\":[],\"add_import_custom_model\":\"0\",\"import_custom_model\":\"\",\"power_import_custom_model\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', 1, '2016-10-18 11:44:46', '2024-07-25 18:06:21', 22, '', 110, 'c1053952-8a84-4398-aef1-41726f7c0043');
--
-- Dumping data for table `#__componentbuilder_site_view`
--
INSERT INTO `#__componentbuilder_site_view` (`id`, `add_css_document`, `add_css`, `add_js_document`, `add_php_document`, `add_php_jview`, `add_php_jview_display`, `add_php_view`, `add_php_ajax`, `add_custom_button`, `custom_button`, `button_position`, `php_controller`, `php_model`, `ajax_input`, `php_ajaxmethod`, `codename`, `css_document`, `css`, `custom_get`, `default`, `description`, `dynamic_get`, `js_document`, `main_get`, `name`, `system_name`, `php_document`, `php_jview`, `php_jview_display`, `php_view`, `snippet`, `params`, `javascript_file`, `libraries`, `published`, `created`, `modified`, `version`, `hits`, `ordering`, `guid`) VALUES
(23, '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', 'looks', '', '', '', 'PHRhYmxlIGNsYXNzPSJ1ay10YWJsZSB1ay10YWJsZS1ob3ZlciI+DQogICAgPGNhcHRpb24+PD9waHAgZWNobyBUZXh0OjpfKCdMaXN0IG9mIGFsbCBsb29rcycpOyA/PjwvY2FwdGlvbj4NCiAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0aD48P3BocCBlY2hvIFRleHQ6Ol8oJ05hbWUnKTsgPz48L3RoPg0KICAgICAgICAgICAgPHRoPjw/cGhwIGVjaG8gVGV4dDo6XygnRGVzY3JpcHRpb24nKTsgPz48L3RoPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGhlYWQ+DQogICAgPHRib2R5Pg0KICAgICAgICA8P3BocCBmb3JlYWNoICgkdGhpcy0+aXRlbXMgYXMgJGl0ZW0pOiA/Pg0KICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+PGEgaHJlZj0iPD9waHAgZWNobyAgW1tbQ29tcG9uZW50XV1dSGVscGVyUm91dGU6OmdldExvb2tpbmdSb3V0ZSgkaXRlbS0+c2x1Zyk7ID8+IiA+PD9waHAgZWNobyAkaXRlbS0+bmFtZTsgPz48L2E+PC90ZD4NCiAgICAgICAgICAgIDx0ZD48P3BocCBlY2hvICR0aGlzLT5lc2NhcGUoJGl0ZW0tPmRlc2NyaXB0aW9uLCB0cnVlLCAxMjApOyA/Pjw/cGhwIGVjaG8gJGl0ZW0tPmVkaXRMaW5rOyA/PjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+DQogICAgPC90Ym9keT4NCjwvdGFibGU+', 'The List of all published looks', 36, '', 36, 'Looks', 'Looks', '', '', '', '', '', '', '', '', 1, '2016-04-05 14:31:59', '2016-10-20 15:57:24', 9, '', 14, 'b2dce59e-e3b8-4467-bcb5-8f2df4bdfeb7'),
(25, '', '', '', '', 1, 1, '', '', '', '', 1, '', '', '', '', 'looking', '', '', '', 'PGFydGljbGUgY2xhc3M9InVrLWNvbW1lbnQiPg0KICAgIDxoZWFkZXIgY2xhc3M9InVrLWNvbW1lbnQtaGVhZGVyIj4NCiAgICAgICAgPGltZyBjbGFzcz0idWstY29tbWVudC1hdmF0YXIiIHNyYz0ie2ltYWdldXJsfSIgYWx0PSIiPg0KICAgICAgICA8aDQgY2xhc3M9InVrLWNvbW1lbnQtdGl0bGUiPjw/cGhwIGVjaG8gJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+bmFtZSk7ID8+PC9oND4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstY29tbWVudC1tZXRhIj48P3BocCBlY2hvIFRleHQ6Ol8oJ0hpdHMnKTsgPz46IDw/cGhwIGVjaG8gJHRoaXMtPml0ZW0tPmhpdHM7ID8+PC9kaXY+DQogICAgPC9oZWFkZXI+DQogICAgPGRpdiBjbGFzcz0idWstY29tbWVudC1ib2R5Ij4NCiAgICAgICAgPD9waHAgZWNobyAkdGhpcy0+aXRlbS0+ZGVzY3JpcHRpb247ID8+DQogICAgICAgIDw/cGhwIGlmICgkdGhpcy0+aXRlbS0+YWRkKTogPz4NCiAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgPCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgZGF0YS11ay1tb2RhbD0ie3RhcmdldDonI21vcmUtZGV0YWlscy0wOTAnfSI+PD9waHAgZWNobyBUZXh0OjpfKCdNb3JlIERldGFpbHMnKTsgPz48L2J1dHRvbj4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgPC9kaXY+DQo8L2FydGljbGU+DQo8P3BocCBpZiAoJHRoaXMtPml0ZW0tPmFkZCk6ID8+DQo8IS0tIFRoaXMgaXMgdGhlIG1vZGFsIC0tPg0KPGRpdiBpZD0ibW9yZS1kZXRhaWxzLTA5MCIgY2xhc3M9InVrLW1vZGFsIj4NCiAgICA8ZGl2IGNsYXNzPSJ1ay1tb2RhbC1kaWFsb2ciPg0KICAgICAgICA8YSBjbGFzcz0idWstbW9kYWwtY2xvc2UgdWstY2xvc2UiPjwvYT4NCiAgICAgICAgPGRsIGNsYXNzPSJ1ay1kZXNjcmlwdGlvbi1saXN0LWhvcml6b250YWwiPg0KICAgICAgICA8P3BocCBpZiAoU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPml0ZW0tPmRhdGVvZmJpcnRoKSk6ID8+DQogICAgICAgICAgICA8ZHQ+PD9waHAgZWNobyBUZXh0OjpfKCdCaXJ0aCBkYXknKTsgPz48L2R0PjxkZD48P3BocCBlY2hvIFtbW0NvbXBvbmVudF1dXUhlbHBlcjo6ZmFuY3lEYXRlKCR0aGlzLT5lc2NhcGUoJHRoaXMtPml0ZW0tPmRhdGVvZmJpcnRoKSk7ID8+PC9kZD4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgIDw/cGhwIGlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aXRlbS0+ZW1haWwpKTogPz4NCiAgICAgICAgICAgIDxkdD48P3BocCBlY2hvIFRleHQ6Ol8oJ0VtYWlsJyk7ID8+PC9kdD48ZGQ+PD9waHAgZWNobyAkdGhpcy0+ZXNjYXBlKCR0aGlzLT5pdGVtLT5lbWFpbCk7ID8+PC9kZD4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgIDw/cGhwIGlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aXRlbS0+bW9iaWxlX3Bob25lKSk6ID8+DQogICAgICAgICAgICA8ZHQ+PD9waHAgZWNobyBUZXh0OjpfKCdNb2JpbGUnKTsgPz48L2R0PjxkZD48P3BocCBlY2hvICR0aGlzLT5lc2NhcGUoJHRoaXMtPml0ZW0tPm1vYmlsZV9waG9uZSk7ID8+PC9kZD4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgIDw/cGhwIGlmIChTdXBlcl9fXzFmMjhjYjUzXzYwZDlfNGRiMV9iNTE3XzNjN2RjNmI0MjllZl9fX1Bvd2VyOjpjaGVjaygkdGhpcy0+aXRlbS0+d2Vic2l0ZSkpOiA/Pg0KICAgICAgICAgICAgPGR0Pjw/cGhwIGVjaG8gVGV4dDo6XygnV2Vic2l0ZScpOyA/PjwvZHQ+PGRkPjw/cGhwIGVjaG8gJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+d2Vic2l0ZSk7ID8+PC9kZD4NCiAgICAgICAgPD9waHAgZW5kaWY7ID8+DQogICAgICAgIDwvZGw+DQogICAgPC9kaXY+DQo8L2Rpdj4NCjw/cGhwIGVuZGlmOyA/Pg==', 'Looking at a look', 39, '', 39, 'Looking', 'Looking', '', 'CSAvKioNCgkgKiBJbmNyZW1lbnQgdGhlIGhpdCBjb3VudGVyIGZvciB0aGUgcHJlYWNoZXIuDQoJICoNCgkgKiBAcGFyYW0gICBpbnRlZ2VyICAkcGsgIFByaW1hcnkga2V5IG9mIHRoZSBwcmVhY2hlciB0byBpbmNyZW1lbnQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHN1Y2Nlc3NmdWw7DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGhpdCgkcGsgPSAwKQ0KCXsNCgkJaWYgKCRwaykNCgkJew0KCQkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCQkkcXVlcnkgPSAkZGItPmdldFF1ZXJ5KHRydWUpOw0KDQoJCQkvLyBGaWVsZHMgdG8gdXBkYXRlLg0KCQkJJGZpZWxkcyA9IGFycmF5KA0KCQkJICAgICRkYi0+cXVvdGVOYW1lKCdoaXRzJykgLiAnID0gJy4kZGItPnF1b3RlTmFtZSgnaGl0cycpLicgKyAxJw0KCQkJKTsNCg0KCQkJLy8gQ29uZGl0aW9ucyBmb3Igd2hpY2ggcmVjb3JkcyBzaG91bGQgYmUgdXBkYXRlZC4NCgkJCSRjb25kaXRpb25zID0gYXJyYXkoDQoJCQkgICAgJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnID0gJyAuICRwaw0KCQkJKTsNCg0KCQkJJHF1ZXJ5LT51cGRhdGUoJGRiLT5xdW90ZU5hbWUoJyNfX1tbW2NvbXBvbmVudF1dXV9sb29rJykpLT5zZXQoJGZpZWxkcyktPndoZXJlKCRjb25kaXRpb25zKTsNCg0KCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkJcmV0dXJuICRkYi0+ZXhlY3V0ZSgpOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9', 'Ly8gYWRkIGEgaGl0IHRvIHRoZSBsb29rDQppZiAoJHRoaXMtPmhpdCgkdGhpcy0+aXRlbS0+aWQpKQ0Kew0KCSR0aGlzLT5pdGVtLT5oaXRzKys7DQp9', '', '', '', '', '', 1, '2016-10-20 15:11:29', '2016-10-20 17:10:58', 16, '', 14, '851ed44e-5431-4951-876f-4b62a4c56ad2');
(23, '', '', '', '', '', '', '', '', '', '{}', '', '', '', '{}', '', 'looks', '', '', '', 'PHRhYmxlIGNsYXNzPSJ1ay10YWJsZSB1ay10YWJsZS1ob3ZlciI+DQogICAgPGNhcHRpb24+PD9waHAgZWNobyBUZXh0OjpfKCdMaXN0IG9mIGFsbCBsb29rcycpOyA/PjwvY2FwdGlvbj4NCiAgICA8dGhlYWQ+DQogICAgICAgIDx0cj4NCiAgICAgICAgICAgIDx0aD48P3BocCBlY2hvIFRleHQ6Ol8oJ05hbWUnKTsgPz48L3RoPg0KICAgICAgICAgICAgPHRoPjw/cGhwIGVjaG8gVGV4dDo6XygnRGVzY3JpcHRpb24nKTsgPz48L3RoPg0KICAgICAgICA8L3RyPg0KICAgIDwvdGhlYWQ+DQogICAgPHRib2R5Pg0KICAgICAgICA8P3BocCBmb3JlYWNoICgkdGhpcy0+aXRlbXMgYXMgJGl0ZW0pOiA/Pg0KICAgICAgICA8dHI+DQogICAgICAgICAgICA8dGQ+PGEgaHJlZj0iPD9waHAgZWNobyAgSm9vbWxhX19fOTIxNjdmMThfODU0M180MGU4XzkyYWZfMDUzZWY0YzIxMGQxX19fUG93ZXI6OmdldExvb2tpbmdSb3V0ZSgkaXRlbS0+c2x1Zyk7ID8+IiA+PD9waHAgZWNobyAkaXRlbS0+bmFtZTsgPz48L2E+PC90ZD4NCiAgICAgICAgICAgIDx0ZD48P3BocCBlY2hvICR0aGlzLT5lc2NhcGUoJGl0ZW0tPmRlc2NyaXB0aW9uLCB0cnVlLCAxMjApOyA/Pjw/cGhwIGVjaG8gJGl0ZW0tPmVkaXRMaW5rOyA/PjwvdGQ+DQogICAgICAgIDwvdHI+DQogICAgICAgIDw/cGhwIGVuZGZvcmVhY2g7ID8+DQogICAgPC90Ym9keT4NCjwvdGFibGU+', 'The List of all published looks', 36, '', 36, 'Looks', 'Looks', '', '', '', '', '', '{\"site_view_headers\":{\"add_site_view_model\":\"0\",\"site_view_model\":\"\",\"power_site_view_model\":[],\"add_site_view_html\":\"0\",\"site_view_html\":\"\",\"power_site_view_html\":[],\"add_site_view\":\"0\",\"site_view\":\"\",\"power_site_view\":[],\"add_site_view_controller\":\"0\",\"site_view_controller\":\"\",\"power_site_view_controller\":[],\"add_site_views_model\":\"0\",\"site_views_model\":\"\",\"power_site_views_model\":[],\"add_site_views_html\":\"0\",\"site_views_html\":\"\",\"power_site_views_html\":[],\"add_site_views\":\"0\",\"site_views\":\"\",\"power_site_views\":[],\"add_site_views_controller\":\"0\",\"site_views_controller\":\"\",\"power_site_views_controller\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', '', '', 1, '2016-04-05 14:31:59', '2024-07-24 14:31:08', 11, '', 14, 'b2dce59e-e3b8-4467-bcb5-8f2df4bdfeb7'),
(25, '', '', '', '', 1, 1, '', '', '', '{}', 1, '', '', '{}', '', 'looking', '', '', '', 'PGFydGljbGUgY2xhc3M9InVrLWNvbW1lbnQiPg0KICAgIDxoZWFkZXIgY2xhc3M9InVrLWNvbW1lbnQtaGVhZGVyIj4NCiAgICAgICAgPGltZyBjbGFzcz0idWstY29tbWVudC1hdmF0YXIiIHNyYz0ie2ltYWdldXJsfSIgYWx0PSIiPg0KICAgICAgICA8aDQgY2xhc3M9InVrLWNvbW1lbnQtdGl0bGUiPjw/cGhwIGVjaG8gJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+bmFtZSk7ID8+PC9oND4NCiAgICAgICAgPGRpdiBjbGFzcz0idWstY29tbWVudC1tZXRhIj48P3BocCBlY2hvIFRleHQ6Ol8oJ0hpdHMnKTsgPz46IDw/cGhwIGVjaG8gJHRoaXMtPml0ZW0tPmhpdHM7ID8+PC9kaXY+DQogICAgPC9oZWFkZXI+DQogICAgPGRpdiBjbGFzcz0idWstY29tbWVudC1ib2R5Ij4NCiAgICAgICAgPD9waHAgZWNobyAkdGhpcy0+aXRlbS0+ZGVzY3JpcHRpb247ID8+DQogICAgICAgIDw/cGhwIGlmICgkdGhpcy0+aXRlbS0+YWRkKTogPz4NCiAgICAgICAgICAgIDxiciAvPg0KICAgICAgICAgICAgPCEtLSBUaGlzIGlzIGEgYnV0dG9uIHRvZ2dsaW5nIHRoZSBtb2RhbCAtLT4NCiAgICAgICAgICAgIDxidXR0b24gY2xhc3M9InVrLWJ1dHRvbiIgdWstdG9nZ2xlPSJ0YXJnZXQ6ICNtb3JlLWRldGFpbHMtMDkwIj48P3BocCBlY2hvIFRleHQ6Ol8oJ01vcmUgRGV0YWlscycpOyA/PjwvYnV0dG9uPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICA8L2Rpdj4NCjwvYXJ0aWNsZT4NCjw/cGhwIGlmICgkdGhpcy0+aXRlbS0+YWRkKTogPz4NCjwhLS0gVGhpcyBpcyB0aGUgbW9kYWwgLS0+DQo8ZGl2IGlkPSJtb3JlLWRldGFpbHMtMDkwIiB1ay1tb2RhbD4NCiAgICA8ZGl2IGNsYXNzPSJ1ay1tb2RhbC1kaWFsb2cgdWstbW9kYWwtYm9keSI+DQogICAgICAgIDxidXR0b24gY2xhc3M9InVrLW1vZGFsLWNsb3NlLWRlZmF1bHQiIHR5cGU9ImJ1dHRvbiIgdWstY2xvc2U+PC9idXR0b24+DQogICAgICAgIDxkbCBjbGFzcz0idWstZGVzY3JpcHRpb24tbGlzdCB1ay1kZXNjcmlwdGlvbi1saXN0LWRpdmlkZXIiPg0KICAgICAgICA8P3BocCBpZiAoU3VwZXJfX18xZjI4Y2I1M182MGQ5XzRkYjFfYjUxN18zYzdkYzZiNDI5ZWZfX19Qb3dlcjo6Y2hlY2soJHRoaXMtPml0ZW0tPmRhdGVvZmJpcnRoKSk6ID8+DQogICAgICAgICAgICA8ZHQ+PD9waHAgZWNobyBUZXh0OjpfKCdCaXJ0aCBkYXknKTsgPz48L2R0PjxkZD48P3BocCBlY2hvIEpvb21sYV9fX2NmM2I5NWMxX2JhNTZfNDE5M184ZWI0XzkxNjQ1ODJiN2Y1NV9fX1Bvd2VyOjpmYW5jeURhdGUoJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+ZGF0ZW9mYmlydGgpKTsgPz48L2RkPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgPD9waHAgaWYgKFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5pdGVtLT5lbWFpbCkpOiA/Pg0KICAgICAgICAgICAgPGR0Pjw/cGhwIGVjaG8gVGV4dDo6XygnRW1haWwnKTsgPz48L2R0PjxkZD48P3BocCBlY2hvICR0aGlzLT5lc2NhcGUoJHRoaXMtPml0ZW0tPmVtYWlsKTsgPz48L2RkPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgPD9waHAgaWYgKFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5pdGVtLT5tb2JpbGVfcGhvbmUpKTogPz4NCiAgICAgICAgICAgIDxkdD48P3BocCBlY2hvIFRleHQ6Ol8oJ01vYmlsZScpOyA/PjwvZHQ+PGRkPjw/cGhwIGVjaG8gJHRoaXMtPmVzY2FwZSgkdGhpcy0+aXRlbS0+bW9iaWxlX3Bob25lKTsgPz48L2RkPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgPD9waHAgaWYgKFN1cGVyX19fMWYyOGNiNTNfNjBkOV80ZGIxX2I1MTdfM2M3ZGM2YjQyOWVmX19fUG93ZXI6OmNoZWNrKCR0aGlzLT5pdGVtLT53ZWJzaXRlKSk6ID8+DQogICAgICAgICAgICA8ZHQ+PD9waHAgZWNobyBUZXh0OjpfKCdXZWJzaXRlJyk7ID8+PC9kdD48ZGQ+PD9waHAgZWNobyAkdGhpcy0+ZXNjYXBlKCR0aGlzLT5pdGVtLT53ZWJzaXRlKTsgPz48L2RkPg0KICAgICAgICA8P3BocCBlbmRpZjsgPz4NCiAgICAgICAgPC9kbD4NCiAgICA8L2Rpdj4NCjwvZGl2Pg0KPD9waHAgZW5kaWY7ID8+', 'Looking at a look', 39, '', 39, 'Looking', 'Looking', '', 'CSAvKioNCgkgKiBJbmNyZW1lbnQgdGhlIGhpdCBjb3VudGVyIGZvciB0aGUgcHJlYWNoZXIuDQoJICoNCgkgKiBAcGFyYW0gICBpbnRlZ2VyICAkcGsgIFByaW1hcnkga2V5IG9mIHRoZSBwcmVhY2hlciB0byBpbmNyZW1lbnQuDQoJICoNCgkgKiBAcmV0dXJuICBib29sZWFuICBUcnVlIGlmIHN1Y2Nlc3NmdWw7DQoJICovDQoJcHVibGljIGZ1bmN0aW9uIGhpdCgkcGsgPSAwKQ0KCXsNCgkJaWYgKCRwaykNCgkJew0KCQkJJGRiID0gRmFjdG9yeTo6Z2V0RGJvKCk7DQoJCQkkcXVlcnkgPSAkZGItPmdldFF1ZXJ5KHRydWUpOw0KDQoJCQkvLyBGaWVsZHMgdG8gdXBkYXRlLg0KCQkJJGZpZWxkcyA9IGFycmF5KA0KCQkJICAgICRkYi0+cXVvdGVOYW1lKCdoaXRzJykgLiAnID0gJy4kZGItPnF1b3RlTmFtZSgnaGl0cycpLicgKyAxJw0KCQkJKTsNCg0KCQkJLy8gQ29uZGl0aW9ucyBmb3Igd2hpY2ggcmVjb3JkcyBzaG91bGQgYmUgdXBkYXRlZC4NCgkJCSRjb25kaXRpb25zID0gYXJyYXkoDQoJCQkgICAgJGRiLT5xdW90ZU5hbWUoJ2lkJykgLiAnID0gJyAuICRwaw0KCQkJKTsNCg0KCQkJJHF1ZXJ5LT51cGRhdGUoJGRiLT5xdW90ZU5hbWUoJyNfX1tbW2NvbXBvbmVudF1dXV9sb29rJykpLT5zZXQoJGZpZWxkcyktPndoZXJlKCRjb25kaXRpb25zKTsNCg0KCQkJJGRiLT5zZXRRdWVyeSgkcXVlcnkpOw0KCQkJcmV0dXJuICRkYi0+ZXhlY3V0ZSgpOw0KCQl9DQoJCXJldHVybiBmYWxzZTsNCgl9', 'Ly8gYWRkIGEgaGl0IHRvIHRoZSBsb29rDQppZiAoJHRoaXMtPmhpdCgkdGhpcy0+aXRlbS0+aWQpKQ0Kew0KCSR0aGlzLT5pdGVtLT5oaXRzKys7DQp9', '', '', '{\"site_view_headers\":{\"add_site_view_model\":\"0\",\"site_view_model\":\"\",\"power_site_view_model\":[],\"add_site_view_html\":\"0\",\"site_view_html\":\"\",\"power_site_view_html\":[],\"add_site_view\":\"0\",\"site_view\":\"\",\"power_site_view\":[],\"add_site_view_controller\":\"0\",\"site_view_controller\":\"\",\"power_site_view_controller\":[],\"add_site_views_model\":\"0\",\"site_views_model\":\"\",\"power_site_views_model\":[],\"add_site_views_html\":\"0\",\"site_views_html\":\"\",\"power_site_views_html\":[],\"add_site_views\":\"0\",\"site_views\":\"\",\"power_site_views\":[],\"add_site_views_controller\":\"0\",\"site_views_controller\":\"\",\"power_site_views_controller\":[],\"add_ajax_model\":\"0\",\"ajax_model\":\"\",\"power_ajax_model\":[]}}', '', '', 1, '2016-10-20 15:11:29', '2024-07-24 14:52:19', 19, '', 14, '851ed44e-5431-4951-876f-4b62a4c56ad2');
--
-- Dumping data for table `#__componentbuilder_layout`
@@ -2624,7 +2624,7 @@ INSERT INTO `#__componentbuilder_library_config` (`id`, `addconfig`, `library`,
INSERT INTO `#__componentbuilder_library_files_folders_urls` (`id`, `addfiles`, `addfolders`, `addurls`, `library`, `params`, `published`, `created`, `modified`, `version`, `hits`, `ordering`) VALUES
(2, '', '', '{\"addurls0\":{\"url\":\"https:\\/\\/maxcdn.bootstrapcdn.com\\/bootstrap\\/4.0.0-alpha.6\\/js\\/bootstrap.min.js\",\"type\":\"2\"},\"addurls1\":{\"url\":\"https:\\/\\/maxcdn.bootstrapcdn.com\\/bootstrap\\/4.0.0-alpha.6\\/css\\/bootstrap.min.css\",\"type\":\"2\"}}', 2, '', 1, '2017-11-25 16:17:36', '2018-05-02 23:29:05', 11, '', 2),
(3, '{}', '{}', '{\"addurls2\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.6.22\\/dist\\/css\\/uikit.min.css\",\"type\":2},\"addurls0\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.6.22\\/dist\\/js\\/uikit.min.js\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.6.22\\/dist\\/js\\/uikit-icons.min.js\",\"type\":2}}', 3, '', 1, '2017-11-25 21:47:40', '2021-05-27 00:16:34', 11, '', 3),
(3, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.21.7\\/dist\\/css\\/uikit.min.css\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.21.7\\/dist\\/js\\/uikit.min.js\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/cdn.jsdelivr.net\\/npm\\/uikit@3.21.7\\/dist\\/js\\/uikit-icons.min.js\",\"type\":2}}', 3, '', 1, '2017-11-25 21:47:40', '2024-07-24 15:01:17', 12, '', 3),
(4, '{}', '{\"addfolders0\":{\"folder\":\"file_icon_vectors\",\"path\":\"\\/media\\/vector\",\"rename\":\"1\"}}', '{}', 7, '', 1, '2019-10-03 09:24:30', '2019-10-03 09:25:39', 2, '', 4),
(5, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/grapesjs\\/0.14.15\\/css\\/grapes.min.css\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/cdnjs.cloudflare.com\\/ajax\\/libs\\/grapesjs\\/0.14.15\\/grapes.min.js\",\"type\":2}}', 8, '', 1, '2020-02-10 21:34:33', '2020-02-18 21:12:35', 5, '', 5),
(6, '{}', '{}', '{\"addurls0\":{\"url\":\"https:\\/\\/raw.githubusercontent.com\\/artf\\/grapesjs-preset-webpage\\/master\\/dist\\/grapesjs-preset-webpage.min.css\",\"type\":2},\"addurls1\":{\"url\":\"https:\\/\\/raw.githubusercontent.com\\/artf\\/grapesjs-preset-webpage\\/master\\/dist\\/grapesjs-preset-webpage.min.js\",\"type\":2},\"addurls2\":{\"url\":\"https:\\/\\/static.filestackapi.com\\/v3\\/filestack-0.1.10.js\",\"type\":2}}', 9, '', 1, '2020-02-18 21:13:16', '2020-02-18 21:14:11', 2, '', 5),
+1
View File
@@ -0,0 +1 @@
+3 -3
View File
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.10" method="upgrade">
<name>COM_COMPONENTBUILDER</name>
<creationDate>20th July, 2024</creationDate>
<creationDate>26th July, 2024</creationDate>
<author>Llewellyn van der Merwe</author>
<authorEmail>joomla@vdm.io</authorEmail>
<authorUrl>https://dev.vdm.io</authorUrl>
<copyright>Copyright (C) 2015 Vast Development Method. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<version>3.2.2</version>
<version>3.2.3-alpha1</version>
<description><![CDATA[
<h1>Component Builder (v.3.2.2)</h1>
<h1>Component Builder (v.3.2.3-alpha1)</h1>
<div style="clear: both;"></div>
<p>The Component Builder for [Joomla](https://extensions.joomla.org/extension/component-builder/) is highly advanced tool that is truly able to build extremely complex components in a fraction of the time.
+18
View File
@@ -160,4 +160,22 @@
<maintainerurl>https://dev.vdm.io</maintainerurl>
<targetplatform name="joomla" version="3.*"/>
</update>
<update>
<name>Component Builder</name>
<description>Builds Complex Joomla Components</description>
<element>pkg_component_builder</element>
<type>package</type>
<client>site</client>
<version>3.2.3-alpha1</version>
<infourl title="Component Builder!">https://dev.vdm.io</infourl>
<downloads>
<downloadurl type="full" format="zip">https://git.vdm.dev/api/v1/repos/joomla/pkg-component-builder/archive/v3.2.3-alpha1.zip</downloadurl>
</downloads>
<tags>
<tag>alpha</tag>
</tags>
<maintainer>Llewellyn van der Merwe</maintainer>
<maintainerurl>https://dev.vdm.io</maintainerurl>
<targetplatform name="joomla" version="3.*"/>
</update>
</updates>
@@ -106,7 +106,7 @@ final class AllowEdit implements AllowEditInterface
// prepare custom permission script
$customAllow = $this->dispenser->get(
'php_allowedit', $nameSingleCode, '', null, true
'php_allowedit', $nameSingleCode
);
if ($this->category->exists("{$nameListCode}"))
@@ -0,0 +1,243 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 4th September, 2022
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace VDM\Joomla\Componentbuilder\Compiler\Architecture\JoomlaFive\Controller;
use VDM\Joomla\Componentbuilder\Compiler\Creator\Permission;
use VDM\Joomla\Componentbuilder\Compiler\Customcode\Dispenser;
use VDM\Joomla\Componentbuilder\Compiler\Builder\Category;
use VDM\Joomla\Componentbuilder\Compiler\Builder\CategoryOtherName;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Indent;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Line;
use VDM\Joomla\Componentbuilder\Compiler\Interfaces\Architecture\Controller\AllowEditViewsInterface;
/**
* Controller Allow Edit Views Class for Joomla 5
*
* @since 5.0.2
*/
final class AllowEditViews implements AllowEditViewsInterface
{
/**
* The Permission Class.
*
* @var Permission
* @since 5.0.2
*/
protected Permission $permission;
/**
* The Dispenser Class.
*
* @var Dispenser
* @since 5.0.2
*/
protected Dispenser $dispenser;
/**
* The Category Class.
*
* @var Category
* @since 5.0.2
*/
protected Category $category;
/**
* The CategoryOtherName Class.
*
* @var CategoryOtherName
* @since 5.0.2
*/
protected CategoryOtherName $categoryothername;
/**
* Constructor.
*
* @param Permission $permission The Permission Class.
* @param Dispenser $dispenser The Dispenser Class.
* @param Category $category The Category Class.
* @param CategoryOtherName $categoryothername The CategoryOtherName Class.
*
* @since 5.0.2
*/
public function __construct(Permission $permission,
Dispenser $dispenser, Category $category,
CategoryOtherName $categoryothername)
{
$this->permission = $permission;
$this->dispenser = $dispenser;
$this->category = $category;
$this->categoryothername = $categoryothername;
}
/**
* Get Array Code
*
* @param array $views
*
* @since 5.0.2
* @return string The array of Code (string)
*/
public function getArray(array $views): string
{
$allow = [];
foreach ($views as $nameSingleCode => $nameListCode)
{
$allow[] = $this->getViewArray($nameSingleCode, $nameListCode);
}
if ($allow === [])
{
return '';
}
return PHP_EOL . Indent::_(2) . implode("," . PHP_EOL . Indent::_(2), $allow);
}
/**
* Get Custom Function Code
*
* @param array $views
*
* @since 5.0.2
* @return string The functions of Code (string)
*/
public function getFunctions(array $views): string
{
$allow = [];
foreach ($views as $nameSingleCode => $nameListCode)
{
if (($function = $this->getViewFunction($nameSingleCode, $nameListCode)) !== null)
{
$allow[] = $function;
}
}
if ($allow === [])
{
return '';
}
return PHP_EOL . PHP_EOL . implode(PHP_EOL . PHP_EOL, $allow);
}
/**
* Get View Permissions Array Code
*
* @param string $nameSingleCode The single code name of the view.
* @param string $nameListCode The list code name of the view.
*
* @since 3.2.0
* @return string The allow edit method code
*/
protected function getViewArray(string $nameSingleCode, string $nameListCode): string
{
$allow = [];
// prepare custom permission script
$customAllow = $this->dispenser->get(
'php_allowedit', $nameSingleCode
);
if ($customAllow !== '')
{
$allow[] = Indent::_(3) . "'function' => 'allowEdit_{$nameSingleCode}'";
}
if ($this->category->exists("{$nameListCode}"))
{
// check if category has another name
$otherView = $this->categoryothername->
get($nameListCode . '.view', $nameSingleCode);
// check if the item has permissions.
if ($this->permission->globalExist($otherView, 'core.access'))
{
$access = $this->permission->getGlobal($otherView, 'core.access');
$allow[] = Indent::_(3) . "'access' => '{$access}'";
}
$edit = $this->permission->getAction($otherView, 'core.edit');
$allow[] = Indent::_(3) . "'edit' => '{$edit}'";
$edit_own = $this->permission->getAction($otherView, 'core.edit.own');
$allow[] = Indent::_(3) . "'edit.own' => '{$edit_own}'";
}
else
{
// check if the item has permissions.
if ($this->permission->actionExist($nameSingleCode, 'core.access'))
{
$access = $this->permission->getAction($nameSingleCode, 'core.access');
$allow[] = Indent::_(3) . "'access' => '{$access}'";
}
$edit = $this->permission->getAction($nameSingleCode, 'core.edit');
$allow[] = Indent::_(3) . "'edit' => '{$edit}'";
$edit_own = $this->permission->getAction($nameSingleCode, 'core.edit.own');
$allow[] = Indent::_(3) . "'edit.own' => '{$edit_own}'";
}
return "'{$nameSingleCode}' => [" . PHP_EOL . implode(',' . PHP_EOL, $allow) . PHP_EOL . Indent::_(2) . ']';
}
/**
* Get View Permissions Function Code
*
* @param string $nameSingleCode The single code name of the view.
* @param string $nameListCode The list code name of the view.
*
* @since 3.2.0
* @return string|null The allow edit method code
*/
protected function getViewFunction(string $nameSingleCode, string $nameListCode): ?string
{
$allow = [];
// prepare custom permission script
$customAllow = $this->dispenser->get(
'php_allowedit', $nameSingleCode
);
if ($customAllow !== '')
{
// setup the function
$allow[] = Indent::_(1) . '/**';
$allow[] = Indent::_(1) . " * Method to check if you can edit an existing {$nameSingleCode} record.";
$allow[] = Indent::_(1) . ' *';
$allow[] = Indent::_(1) . ' * @param array $data An array of input data.';
$allow[] = Indent::_(1) . ' * @param string $key The name of the key for the primary key.';
$allow[] = Indent::_(1) . ' *';
$allow[] = Indent::_(1) . ' * @return boolean';
$allow[] = Indent::_(1) . ' *';
$allow[] = Indent::_(1) . ' * @since 5.0.2';
$allow[] = Indent::_(1) . ' */';
$allow[] = Indent::_(1) . "protected function allowEdit_{$nameSingleCode}(\$data = [], \$key = 'id')";
$allow[] = Indent::_(1) . '{';
$allow[] = Indent::_(2) . "//" . Line::_(__Line__, __Class__)
. " get user object.";
$allow[] = Indent::_(2) . "\$user = \$this->identity;";
$allow[] = Indent::_(2) . "//" . Line::_(__Line__, __Class__)
. " get record id.";
$allow[] = Indent::_(2)
. "\$recordId = (int) isset(\$data[\$key]) ? \$data[\$key] : 0;";
// load custom permission script
$allow[] = $customAllow;
$allow[] = Indent::_(1) . '}';
return implode(PHP_EOL, $allow);
}
return null;
}
}
@@ -106,7 +106,7 @@ final class AllowEdit implements AllowEditInterface
// prepare custom permission script
$customAllow = $this->dispenser->get(
'php_allowedit', $nameSingleCode, '', null, true
'php_allowedit', $nameSingleCode
);
if ($this->category->exists("{$nameListCode}"))
@@ -0,0 +1,243 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 4th September, 2022
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace VDM\Joomla\Componentbuilder\Compiler\Architecture\JoomlaFour\Controller;
use VDM\Joomla\Componentbuilder\Compiler\Creator\Permission;
use VDM\Joomla\Componentbuilder\Compiler\Customcode\Dispenser;
use VDM\Joomla\Componentbuilder\Compiler\Builder\Category;
use VDM\Joomla\Componentbuilder\Compiler\Builder\CategoryOtherName;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Indent;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Line;
use VDM\Joomla\Componentbuilder\Compiler\Interfaces\Architecture\Controller\AllowEditViewsInterface;
/**
* Controller Allow Edit Views Class for Joomla 4
*
* @since 5.0.2
*/
final class AllowEditViews implements AllowEditViewsInterface
{
/**
* The Permission Class.
*
* @var Permission
* @since 5.0.2
*/
protected Permission $permission;
/**
* The Dispenser Class.
*
* @var Dispenser
* @since 5.0.2
*/
protected Dispenser $dispenser;
/**
* The Category Class.
*
* @var Category
* @since 5.0.2
*/
protected Category $category;
/**
* The CategoryOtherName Class.
*
* @var CategoryOtherName
* @since 5.0.2
*/
protected CategoryOtherName $categoryothername;
/**
* Constructor.
*
* @param Permission $permission The Permission Class.
* @param Dispenser $dispenser The Dispenser Class.
* @param Category $category The Category Class.
* @param CategoryOtherName $categoryothername The CategoryOtherName Class.
*
* @since 5.0.2
*/
public function __construct(Permission $permission,
Dispenser $dispenser, Category $category,
CategoryOtherName $categoryothername)
{
$this->permission = $permission;
$this->dispenser = $dispenser;
$this->category = $category;
$this->categoryothername = $categoryothername;
}
/**
* Get Array Code
*
* @param array $views
*
* @since 5.0.2
* @return string The array of Code (string)
*/
public function getArray(array $views): string
{
$allow = [];
foreach ($views as $nameSingleCode => $nameListCode)
{
$allow[] = $this->getViewArray($nameSingleCode, $nameListCode);
}
if ($allow === [])
{
return '';
}
return PHP_EOL . Indent::_(2) . implode("," . PHP_EOL . Indent::_(2), $allow);
}
/**
* Get Custom Function Code
*
* @param array $views
*
* @since 5.0.2
* @return string The functions of Code (string)
*/
public function getFunctions(array $views): string
{
$allow = [];
foreach ($views as $nameSingleCode => $nameListCode)
{
if (($function = $this->getViewFunction($nameSingleCode, $nameListCode)) !== null)
{
$allow[] = $function;
}
}
if ($allow === [])
{
return '';
}
return PHP_EOL . PHP_EOL . implode(PHP_EOL . PHP_EOL, $allow);
}
/**
* Get View Permissions Array Code
*
* @param string $nameSingleCode The single code name of the view.
* @param string $nameListCode The list code name of the view.
*
* @since 3.2.0
* @return string The allow edit method code
*/
protected function getViewArray(string $nameSingleCode, string $nameListCode): string
{
$allow = [];
// prepare custom permission script
$customAllow = $this->dispenser->get(
'php_allowedit', $nameSingleCode
);
if ($customAllow !== '')
{
$allow[] = Indent::_(3) . "'function' => 'allowEdit_{$nameSingleCode}'";
}
if ($this->category->exists("{$nameListCode}"))
{
// check if category has another name
$otherView = $this->categoryothername->
get($nameListCode . '.view', $nameSingleCode);
// check if the item has permissions.
if ($this->permission->globalExist($otherView, 'core.access'))
{
$access = $this->permission->getGlobal($otherView, 'core.access');
$allow[] = Indent::_(3) . "'access' => '{$access}'";
}
$edit = $this->permission->getAction($otherView, 'core.edit');
$allow[] = Indent::_(3) . "'edit' => '{$edit}'";
$edit_own = $this->permission->getAction($otherView, 'core.edit.own');
$allow[] = Indent::_(3) . "'edit.own' => '{$edit_own}'";
}
else
{
// check if the item has permissions.
if ($this->permission->actionExist($nameSingleCode, 'core.access'))
{
$access = $this->permission->getAction($nameSingleCode, 'core.access');
$allow[] = Indent::_(3) . "'access' => '{$access}'";
}
$edit = $this->permission->getAction($nameSingleCode, 'core.edit');
$allow[] = Indent::_(3) . "'edit' => '{$edit}'";
$edit_own = $this->permission->getAction($nameSingleCode, 'core.edit.own');
$allow[] = Indent::_(3) . "'edit.own' => '{$edit_own}'";
}
return "'{$nameSingleCode}' => [" . PHP_EOL . implode(',' . PHP_EOL, $allow) . PHP_EOL . Indent::_(2) . ']';
}
/**
* Get View Permissions Function Code
*
* @param string $nameSingleCode The single code name of the view.
* @param string $nameListCode The list code name of the view.
*
* @since 3.2.0
* @return string|null The allow edit method code
*/
protected function getViewFunction(string $nameSingleCode, string $nameListCode): ?string
{
$allow = [];
// prepare custom permission script
$customAllow = $this->dispenser->get(
'php_allowedit', $nameSingleCode
);
if ($customAllow !== '')
{
// setup the function
$allow[] = Indent::_(1) . '/**';
$allow[] = Indent::_(1) . " * Method to check if you can edit an existing {$nameSingleCode} record.";
$allow[] = Indent::_(1) . ' *';
$allow[] = Indent::_(1) . ' * @param array $data An array of input data.';
$allow[] = Indent::_(1) . ' * @param string $key The name of the key for the primary key.';
$allow[] = Indent::_(1) . ' *';
$allow[] = Indent::_(1) . ' * @return boolean';
$allow[] = Indent::_(1) . ' *';
$allow[] = Indent::_(1) . ' * @since 5.0.2';
$allow[] = Indent::_(1) . ' */';
$allow[] = Indent::_(1) . "protected function allowEdit_{$nameSingleCode}(\$data = [], \$key = 'id')";
$allow[] = Indent::_(1) . '{';
$allow[] = Indent::_(2) . "//" . Line::_(__Line__, __Class__)
. " get user object.";
$allow[] = Indent::_(2) . "\$user = \$this->identity;";
$allow[] = Indent::_(2) . "//" . Line::_(__Line__, __Class__)
. " get record id.";
$allow[] = Indent::_(2)
. "\$recordId = (int) isset(\$data[\$key]) ? \$data[\$key] : 0;";
// load custom permission script
$allow[] = $customAllow;
$allow[] = Indent::_(1) . '}';
return implode(PHP_EOL, $allow);
}
return null;
}
}
@@ -106,7 +106,7 @@ final class AllowEdit implements AllowEditInterface
// prepare custom permission script
$customAllow = $this->dispenser->get(
'php_allowedit', $nameSingleCode, '', null, true
'php_allowedit', $nameSingleCode
);
if ($this->category->exists("{$nameListCode}"))
@@ -0,0 +1,218 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 4th September, 2022
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace VDM\Joomla\Componentbuilder\Compiler\Architecture\JoomlaThree\Controller;
use VDM\Joomla\Componentbuilder\Compiler\Creator\Permission;
use VDM\Joomla\Componentbuilder\Compiler\Customcode\Dispenser;
use VDM\Joomla\Componentbuilder\Compiler\Builder\Category;
use VDM\Joomla\Componentbuilder\Compiler\Builder\CategoryOtherName;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Indent;
use VDM\Joomla\Componentbuilder\Compiler\Utilities\Line;
use VDM\Joomla\Componentbuilder\Compiler\Interfaces\Architecture\Controller\AllowEditViewsInterface;
/**
* Controller Allow Edit Views Class for Joomla 3
*
* @since 5.0.2
*/
final class AllowEditViews implements AllowEditViewsInterface
{
/**
* The Permission Class.
*
* @var Permission
* @since 5.0.2
*/
protected Permission $permission;
/**
* The Dispenser Class.
*
* @var Dispenser
* @since 5.0.2
*/
protected Dispenser $dispenser;
/**
* The Category Class.
*
* @var Category
* @since 5.0.2
*/
protected Category $category;
/**
* The CategoryOtherName Class.
*
* @var CategoryOtherName
* @since 5.0.2
*/
protected CategoryOtherName $categoryothername;
/**
* Constructor.
*
* @param Permission $permission The Permission Class.
* @param Dispenser $dispenser The Dispenser Class.
* @param Category $category The Category Class.
* @param CategoryOtherName $categoryothername The CategoryOtherName Class.
*
* @since 5.0.2
*/
public function __construct(Permission $permission,
Dispenser $dispenser, Category $category,
CategoryOtherName $categoryothername)
{
$this->permission = $permission;
$this->dispenser = $dispenser;
$this->category = $category;
$this->categoryothername = $categoryothername;
}
/**
* Get Array Code
*
* @param array $views
*
* @since 5.0.2
* @return string The array of Code (string)
*/
public function getArray(array $views): string
{
return ''; // not used for now in Joomla 3
}
/**
* Get Custom Function Code
*
* @param array $views
*
* @since 5.0.2
* @return string The functions of Code (string)
*/
public function getFunctions(array $views): string
{
return ''; // not used for now in Joomla 3
}
/**
* Get View Permissions Array Code
*
* @param string $nameSingleCode The single code name of the view.
* @param string $nameListCode The list code name of the view.
*
* @since 3.2.0
* @return string The allow edit method code
*/
protected function getViewArray(string $nameSingleCode, string $nameListCode): string
{
$allow = [];
// prepare custom permission script
$customAllow = $this->dispenser->get(
'php_allowedit', $nameSingleCode
);
if ($customAllow !== '')
{
$allow[] = Indent::_(3) . "'function' => 'allowEdit_{$nameSingleCode}'";
}
if ($this->category->exists("{$nameListCode}"))
{
// check if category has another name
$otherView = $this->categoryothername->
get($nameListCode . '.view', $nameSingleCode);
// check if the item has permissions.
if ($this->permission->globalExist($otherView, 'core.access'))
{
$access = $this->permission->getGlobal($otherView, 'core.access');
$allow[] = Indent::_(3) . "'access' => '{$access}'";
}
$edit = $this->permission->getAction($otherView, 'core.edit');
$allow[] = Indent::_(3) . "'edit' => '{$edit}'";
$edit_own = $this->permission->getAction($otherView, 'core.edit.own');
$allow[] = Indent::_(3) . "'edit.own' => '{$edit_own}'";
}
else
{
// check if the item has permissions.
if ($this->permission->actionExist($nameSingleCode, 'core.access'))
{
$access = $this->permission->getAction($nameSingleCode, 'core.access');
$allow[] = Indent::_(3) . "'access' => '{$access}'";
}
$edit = $this->permission->getAction($nameSingleCode, 'core.edit');
$allow[] = Indent::_(3) . "'edit' => '{$edit}'";
$edit_own = $this->permission->getAction($nameSingleCode, 'core.edit.own');
$allow[] = Indent::_(3) . "'edit.own' => '{$edit_own}'";
}
return "'{$nameSingleCode}' => [" . PHP_EOL . implode(',' . PHP_EOL, $allow) . PHP_EOL . Indent::_(2) . ']';
}
/**
* Get View Permissions Function Code
*
* @param string $nameSingleCode The single code name of the view.
* @param string $nameListCode The list code name of the view.
*
* @since 3.2.0
* @return string|null The allow edit method code
*/
protected function getViewFunction(string $nameSingleCode, string $nameListCode): ?string
{
$allow = [];
// prepare custom permission script
$customAllow = $this->dispenser->get(
'php_allowedit', $nameSingleCode
);
if ($customAllow !== '')
{
// setup the function
$allow[] = Indent::_(1) . '/**';
$allow[] = Indent::_(1) . " * Method to check if you can edit an existing {$nameSingleCode} record.";
$allow[] = Indent::_(1) . ' *';
$allow[] = Indent::_(1) . ' * @param array $data An array of input data.';
$allow[] = Indent::_(1) . ' * @param string $key The name of the key for the primary key.';
$allow[] = Indent::_(1) . ' *';
$allow[] = Indent::_(1) . ' * @return boolean';
$allow[] = Indent::_(1) . ' *';
$allow[] = Indent::_(1) . ' * @since 5.0.2';
$allow[] = Indent::_(1) . ' */';
$allow[] = Indent::_(1) . "protected function allowEdit_{$nameSingleCode}(\$data = [], \$key = 'id')";
$allow[] = Indent::_(1) . '{';
$allow[] = Indent::_(2) . "//" . Line::_(__Line__, __Class__)
. " get user object.";
$allow[] = Indent::_(2) . "\$user = \$this->identity;";
$allow[] = Indent::_(2) . "//" . Line::_(__Line__, __Class__)
. " get record id.";
$allow[] = Indent::_(2)
. "\$recordId = (int) isset(\$data[\$key]) ? \$data[\$key] : 0;";
// load custom permission script
$allow[] = $customAllow;
$allow[] = Indent::_(1) . '}';
return implode(PHP_EOL, $allow);
}
return null;
}
}
@@ -386,8 +386,7 @@ class Infusion extends Interpretation
)
&& $view['edit_create_site_view'] > 0)
{
$site_edit_view_array[] = Indent::_(4) . "'"
. $nameSingleCode . "'";
$site_edit_view_array[$nameSingleCode] = $nameListCode;
CFactory::_('Config')->lang_target = 'both';
// insure site view does not get removed
CFactory::_('Config')->remove_site_edit_folder = false;
@@ -1501,9 +1500,19 @@ class Infusion extends Interpretation
PHP_EOL . implode("," . PHP_EOL, $viewarray)
);
// CUSTOM_ADMIN_EDIT_VIEW_ARRAY
// SITE_EDIT_VIEW_ARRAY (Joomla3 only)
CFactory::_('Compiler.Builder.Content.One')->set('SITE_EDIT_VIEW_ARRAY',
PHP_EOL . implode("," . PHP_EOL, $site_edit_view_array)
PHP_EOL . Indent::_(4) . "'" . implode("'," . PHP_EOL . Indent::_(4) . "'", array_keys($site_edit_view_array)) . "'"
);
// SITE_ALLOW_EDIT_VIEWS_ARRAY
CFactory::_('Compiler.Builder.Content.One')->set('SITE_ALLOW_EDIT_VIEWS_ARRAY',
CFactory::_('Architecture.Controller.AllowEditViews')->getArray($site_edit_view_array)
);
// SITE_ALLOW_EDIT_VIEWS_FUNCTIONS
CFactory::_('Compiler.Builder.Content.One')->set('SITE_ALLOW_EDIT_VIEWS_FUNCTIONS',
CFactory::_('Architecture.Controller.AllowEditViews')->getFunctions($site_edit_view_array)
);
// MAINMENUS
@@ -13389,18 +13389,33 @@ class Interpretation extends Fields
$tabs .= PHP_EOL . Indent::_(2)
. '<div class="' . $row_class . '">';
$tabs .= PHP_EOL . Indent::_(3) . '<div class="' . $width_class . '12">';
$tabs .= PHP_EOL . Indent::_(4) . '<fieldset class="adminform">';
$tabs .= PHP_EOL . Indent::_(5) . '<div class="adminformlist">';
$tabs .= PHP_EOL . Indent::_(5)
. "<?php foreach (\$this->form->getFieldset('accesscontrol') as \$field): ?>";
$tabs .= PHP_EOL . Indent::_(6) . "<div>";
$tabs .= PHP_EOL . Indent::_(7)
. "<?php echo \$field->label; echo \$field->input;?>";
$tabs .= PHP_EOL . Indent::_(6) . "</div>";
$tabs .= PHP_EOL . Indent::_(6) . '<div class="clearfix"></div>';
$tabs .= PHP_EOL . Indent::_(5) . "<?php endforeach; ?>";
$tabs .= PHP_EOL . Indent::_(5) . "</div>";
$tabs .= PHP_EOL . Indent::_(4) . "</fieldset>";
if (CFactory::_('Config')->get('joomla_version', 3) == 3)
{
$tabs .= PHP_EOL . Indent::_(4) . '<fieldset class="adminform">';
$tabs .= PHP_EOL . Indent::_(5) . '<div class="adminformlist">';
$tabs .= PHP_EOL . Indent::_(5)
. "<?php foreach (\$this->form->getFieldset('accesscontrol') as \$field): ?>";
$tabs .= PHP_EOL . Indent::_(6) . "<div>";
$tabs .= PHP_EOL . Indent::_(7)
. "<?php echo \$field->label; echo \$field->input;?>";
$tabs .= PHP_EOL . Indent::_(6) . "</div>";
$tabs .= PHP_EOL . Indent::_(6) . '<div class="clearfix"></div>';
$tabs .= PHP_EOL . Indent::_(5) . "<?php endforeach; ?>";
$tabs .= PHP_EOL . Indent::_(5) . "</div>";
$tabs .= PHP_EOL . Indent::_(4) . "</fieldset>";
}
else
{
$tabs .= PHP_EOL . Indent::_(4) . '<fieldset id="fieldset-rules" class="options-form">';
$tabs .= PHP_EOL . Indent::_(5)
. "<legend><?php echo Text:"
. ":_('{$tabLangName}'); ?></legend>";
$tabs .= PHP_EOL . Indent::_(5) . "<div>";
$tabs .= PHP_EOL . Indent::_(6)
. "<?php echo \$this->form->getInput('rules'); ?>";
$tabs .= PHP_EOL . Indent::_(5) . "</div>";
$tabs .= PHP_EOL . Indent::_(4) . "</fieldset>";
}
$tabs .= PHP_EOL . Indent::_(3) . "</div>";
$tabs .= PHP_EOL . Indent::_(2) . "</div>";
$tabs .= PHP_EOL . Indent::_(1)
@@ -0,0 +1,42 @@
<?php
/**
* @package Joomla.Component.Builder
*
* @created 4th September, 2022
* @author Llewellyn van der Merwe <https://dev.vdm.io>
* @git Joomla Component Builder <https://git.vdm.dev/joomla/Component-Builder>
* @copyright Copyright (C) 2015 Vast Development Method. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
namespace VDM\Joomla\Componentbuilder\Compiler\Interfaces\Architecture\Controller;
/**
* Controller Allow Edit Views Interface
*
* @since 5.0.2
*/
interface AllowEditViewsInterface
{
/**
* Get Array Code
*
* @param array $views
*
* @since 5.0.2
* @return string The array of Code (string)
*/
public function getArray(array $views): string;
/**
* Get Custom Function Code
*
* @param array $views
*
* @since 5.0.2
* @return string The functions of Code (string)
*/
public function getFunctions(array $views): string;
}
@@ -367,6 +367,7 @@ final class Header implements HeaderInterface
$headers[] = 'use Joomla\CMS\Form\FormHelper;';
$headers[] = 'use Joomla\CMS\Session\Session;';
$headers[] = 'use Joomla\CMS\Uri\Uri;';
$headers[] = 'use Joomla\CMS\User\User;';
$headers[] = 'use Joomla\CMS\Component\ComponentHelper;';
$headers[] = 'use Joomla\CMS\HTML\HTMLHelper as Html;';
$headers[] = 'use Joomla\CMS\Layout\FileLayout;';
@@ -402,6 +403,7 @@ final class Header implements HeaderInterface
$headers[] = 'use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;';
$headers[] = 'use Joomla\CMS\Plugin\PluginHelper;';
$headers[] = 'use Joomla\CMS\Toolbar\ToolbarHelper;';
$headers[] = 'use Joomla\CMS\User\User;';
$headers[] = 'use Joomla\CMS\Document\Document;';
$headers[] = "use {$this->NamespacePrefix}\\Component\\{$this->ComponentNamespace}\\{$target}\\Helper\\HeaderCheck;";
break;
@@ -367,6 +367,7 @@ final class Header implements HeaderInterface
$headers[] = 'use Joomla\CMS\Form\FormHelper;';
$headers[] = 'use Joomla\CMS\Session\Session;';
$headers[] = 'use Joomla\CMS\Uri\Uri;';
$headers[] = 'use Joomla\CMS\User\User;';
$headers[] = 'use Joomla\CMS\Component\ComponentHelper;';
$headers[] = 'use Joomla\CMS\HTML\HTMLHelper as Html;';
$headers[] = 'use Joomla\CMS\Layout\FileLayout;';
@@ -402,6 +403,7 @@ final class Header implements HeaderInterface
$headers[] = 'use Joomla\CMS\MVC\View\HtmlView as BaseHtmlView;';
$headers[] = 'use Joomla\CMS\Plugin\PluginHelper;';
$headers[] = 'use Joomla\CMS\Toolbar\ToolbarHelper;';
$headers[] = 'use Joomla\CMS\User\User;';
$headers[] = 'use Joomla\CMS\Document\Document;';
$headers[] = "use {$this->NamespacePrefix}\\Component\\{$this->ComponentNamespace}\\{$target}\\Helper\\HeaderCheck;";
break;
@@ -22,6 +22,10 @@ use VDM\Joomla\Componentbuilder\Compiler\Interfaces\Architecture\Controller\Allo
use VDM\Joomla\Componentbuilder\Compiler\Architecture\JoomlaFive\Controller\AllowEdit as J5ControllerAllowEdit;
use VDM\Joomla\Componentbuilder\Compiler\Architecture\JoomlaFour\Controller\AllowEdit as J4ControllerAllowEdit;
use VDM\Joomla\Componentbuilder\Compiler\Architecture\JoomlaThree\Controller\AllowEdit as J3ControllerAllowEdit;
use VDM\Joomla\Componentbuilder\Compiler\Interfaces\Architecture\Controller\AllowEditViewsInterface;
use VDM\Joomla\Componentbuilder\Compiler\Architecture\JoomlaFive\Controller\AllowEditViews as J5ControllerAllowEditViews;
use VDM\Joomla\Componentbuilder\Compiler\Architecture\JoomlaFour\Controller\AllowEditViews as J4ControllerAllowEditViews;
use VDM\Joomla\Componentbuilder\Compiler\Architecture\JoomlaThree\Controller\AllowEditViews as J3ControllerAllowEditViews;
/**
@@ -72,6 +76,18 @@ class ArchitectureController implements ServiceProviderInterface
$container->alias(J3ControllerAllowEdit::class, 'Architecture.Controller.J3.AllowEdit')
->share('Architecture.Controller.J3.AllowEdit', [$this, 'getJ3ControllerAllowEdit'], true);
$container->alias(AllowEditViewsInterface::class, 'Architecture.Controller.AllowEditViews')
->share('Architecture.Controller.AllowEditViews', [$this, 'getAllowEditViews'], true);
$container->alias(J5ControllerAllowEditViews::class, 'Architecture.Controller.J5.AllowEditViews')
->share('Architecture.Controller.J5.AllowEditViews', [$this, 'getJ5ControllerAllowEditViews'], true);
$container->alias(J4ControllerAllowEditViews::class, 'Architecture.Controller.J4.AllowEditViews')
->share('Architecture.Controller.J4.AllowEditViews', [$this, 'getJ4ControllerAllowEditViews'], true);
$container->alias(J3ControllerAllowEditViews::class, 'Architecture.Controller.J3.AllowEditViews')
->share('Architecture.Controller.J3.AllowEditViews', [$this, 'getJ3ControllerAllowEditViews'], true);
}
/**
@@ -216,6 +232,78 @@ class ArchitectureController implements ServiceProviderInterface
$container->get('Compiler.Builder.Category'),
$container->get('Compiler.Builder.Category.Other.Name')
);
}
/**
* Get The AllowEditViewsInterface Class.
*
* @param Container $container The DI container.
*
* @return AllowEditViewsInterface
* @since 5.0.2
*/
public function getAllowEditViews(Container $container): AllowEditViewsInterface
{
if (empty($this->targetVersion))
{
$this->targetVersion = $container->get('Config')->joomla_version;
}
return $container->get('Architecture.Controller.J' . $this->targetVersion . '.AllowEditViews');
}
/**
* Get The AllowEditViews Class.
*
* @param Container $container The DI container.
*
* @return J5ControllerAllowEdit
* @since 5.0.2
*/
public function getJ5ControllerAllowEditViews(Container $container): J5ControllerAllowEditViews
{
return new J5ControllerAllowEditViews(
$container->get('Compiler.Creator.Permission'),
$container->get('Customcode.Dispenser'),
$container->get('Compiler.Builder.Category'),
$container->get('Compiler.Builder.Category.Other.Name')
);
}
/**
* Get The AllowEditViews Class.
*
* @param Container $container The DI container.
*
* @return J4ControllerAllowEditViews
* @since 5.0.2
*/
public function getJ4ControllerAllowEditViews(Container $container): J4ControllerAllowEditViews
{
return new J4ControllerAllowEditViews(
$container->get('Compiler.Creator.Permission'),
$container->get('Customcode.Dispenser'),
$container->get('Compiler.Builder.Category'),
$container->get('Compiler.Builder.Category.Other.Name')
);
}
/**
* Get The AllowEditViews Class.
*
* @param Container $container The DI container.
*
* @return J3ControllerAllowEditViews
* @since 5.0.2
*/
public function getJ3ControllerAllowEditViews(Container $container): J3ControllerAllowEditViews
{
return new J3ControllerAllowEditViews(
$container->get('Compiler.Creator.Permission'),
$container->get('Customcode.Dispenser'),
$container->get('Compiler.Builder.Category'),
$container->get('Compiler.Builder.Category.Other.Name')
);
}
}
+1 -1
View File
@@ -9985,7 +9985,7 @@ class Com_ComponentbuilderInstallerScript
echo '<div style="background-color: #fff;" class="alert alert-info"><a target="_blank" href="https://dev.vdm.io" title="Component Builder">
<img src="components/com_componentbuilder/assets/images/vdm-component.jpg"/>
</a>
<h3>Upgrade to Version 3.2.2 Was Successful! Let us know if anything is not working as expected.</h3></div>';
<h3>Upgrade to Version 3.2.3-alpha1 Was Successful! Let us know if anything is not working as expected.</h3></div>';
// Set db if not set already.
if (!isset($db))
+1 -1
View File
@@ -115,7 +115,7 @@ class ComponentbuilderController extends BaseController
if (StringHelper::check($view))
{
$views = array(
''
);
// check if this is a edit view
if (in_array($view,$views))