forked from joomla/Component-Builder
Fixed gh-301 to insure the sql dump of tables will build new fields and views using the new subform method
This commit is contained in:
parent
01149bfb7c
commit
ffbd380b10
@ -125,7 +125,7 @@ Watch the [proposed development workflow](https://vdm.bz/proposed-development-wo
|
||||
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
|
||||
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
|
||||
+ *First Build*: 30th April, 2015
|
||||
+ *Last Build*: 31st May, 2018
|
||||
+ *Last Build*: 9th June, 2018
|
||||
+ *Version*: 2.8.0
|
||||
+ *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved.
|
||||
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
||||
|
@ -125,7 +125,7 @@ Watch the [proposed development workflow](https://vdm.bz/proposed-development-wo
|
||||
+ *Author*: [Llewellyn van der Merwe](mailto:llewellyn@joomlacomponentbuilder.com)
|
||||
+ *Name*: [Component Builder](https://github.com/vdm-io/Joomla-Component-Builder)
|
||||
+ *First Build*: 30th April, 2015
|
||||
+ *Last Build*: 31st May, 2018
|
||||
+ *Last Build*: 9th June, 2018
|
||||
+ *Version*: 2.8.0
|
||||
+ *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved.
|
||||
+ *License*: GNU General Public License version 2 or later; see LICENSE.txt
|
||||
|
@ -55,7 +55,7 @@ class Mapping
|
||||
/**
|
||||
* The needed set of keys needed to set
|
||||
*/
|
||||
protected $setting = array('id' => 'default', 'buildcompsql' => 'base64', 'addadmin_views' => 'json', 'name_code' => 'safeString');
|
||||
protected $setting = array('id' => 'default', 'buildcompsql' => 'base64', 'name_code' => 'safeString');
|
||||
|
||||
/**
|
||||
* The needed set of keys needed to set
|
||||
@ -79,7 +79,8 @@ class Mapping
|
||||
/**
|
||||
* The datasize identifiers
|
||||
*/
|
||||
protected $dataSize = array( 'CHAR', 'VARCHAR', 'INT', 'TINYINT',
|
||||
protected $dataSize = array(
|
||||
'CHAR', 'VARCHAR', 'INT', 'TINYINT',
|
||||
'BIGINT', 'FLOAT', 'DECIMAL', 'DOUBLE');
|
||||
|
||||
/**
|
||||
@ -101,7 +102,7 @@ class Mapping
|
||||
// set the app to insure messages can be set
|
||||
$this->app = JFactory::getApplication();
|
||||
|
||||
if ($data)
|
||||
if (ComponentbuilderHelper::checkArray($data))
|
||||
{
|
||||
if (isset($data['buildcomp']) && 1 == $data['buildcomp'] && isset($data['buildcompsql']))
|
||||
{
|
||||
@ -129,6 +130,12 @@ class Mapping
|
||||
}
|
||||
}
|
||||
}
|
||||
// get linked admin views
|
||||
$addadmin_views = ComponentbuilderHelper::getVar('component_admin_views', $data['id'], 'joomla_component', 'addadmin_views');
|
||||
if (ComponentbuilderHelper::checkJson($addadmin_views))
|
||||
{
|
||||
$this->addadmin_views = json_decode($addadmin_views, true);
|
||||
}
|
||||
// set the map of the views needed
|
||||
if ($this->setMap())
|
||||
{
|
||||
|
@ -38,6 +38,7 @@ class Builder extends Mapping
|
||||
public $today;
|
||||
public $db;
|
||||
public $views = array();
|
||||
public $admin_fields = array();
|
||||
protected $fields = array();
|
||||
protected $title = array();
|
||||
protected $description = array();
|
||||
@ -112,7 +113,6 @@ class Builder extends Mapping
|
||||
$object->source = (isset($this->source[$name])) ? $this->source[$name]: 0;
|
||||
$object->sql = (isset($this->sql[$name])) ? base64_encode($this->sql[$name]): '';
|
||||
$object->addpermissions = '{"action":["view.edit","view.edit.own","view.edit.state","view.create","view.delete","view.access"],"implementation":["3","3","3","3","3","3"]}';
|
||||
$object->addfields = $this->addFields($name);
|
||||
$object->created = $this->today;
|
||||
$object->created_by = $this->user->id;
|
||||
$object->published = 1;
|
||||
@ -124,7 +124,8 @@ class Builder extends Mapping
|
||||
ComponentbuilderHelper::setAsset($id, 'admin_view');
|
||||
// load the views
|
||||
$this->views[] = $id;
|
||||
return true;
|
||||
// load the admin view fields
|
||||
return $this->addFields($name, $id);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -132,26 +133,12 @@ class Builder extends Mapping
|
||||
/**
|
||||
* Add the fields to the view
|
||||
*/
|
||||
protected function addFields(&$view)
|
||||
protected function addFields(&$view, &$view_id)
|
||||
{
|
||||
if (isset($this->fields[$view]))
|
||||
{
|
||||
// set some defaults
|
||||
$addField = array (
|
||||
'field' => array(),
|
||||
'list' => array(),
|
||||
'order_list' => array(),
|
||||
'title' => array(),
|
||||
'alias' => array(),
|
||||
'sort' => array(),
|
||||
'search' => array(),
|
||||
'filter' => array(),
|
||||
'link' => array(),
|
||||
'tab' => array(),
|
||||
'alignment' => array(),
|
||||
'order_edit' => array(),
|
||||
'permission' => array()
|
||||
);
|
||||
$addField = array ();
|
||||
$fixLink = (isset($this->title[$view])) ? 0 : 1;
|
||||
// build the field data... hmmm
|
||||
foreach ($this->fields[$view] as $nr => $id)
|
||||
@ -171,23 +158,32 @@ class Builder extends Mapping
|
||||
$fixLink = 0;
|
||||
}
|
||||
// load the field values
|
||||
$addField['field'][] = $id;
|
||||
$addField['list'][] = $isList;
|
||||
$addField['order_list'][] = ($key) ? $key : 0;
|
||||
$addField['title'][] = $isTitle;
|
||||
$addField['alias'][] = $isAlias;
|
||||
$addField['sort'][] = $isList;
|
||||
$addField['search'][] = $isList;
|
||||
$addField['filter'][] = $isList;
|
||||
$addField['link'][] = $isLink;
|
||||
$addField['tab'][] = 1;
|
||||
$addField['alignment'][] = ($isTitle || $isAlias) ? 4 : $alignment;
|
||||
$addField['order_edit'][] = $nr;
|
||||
$addField['permission'][] = 0;
|
||||
$addField['addfields'.$nr]['field'] = $id;
|
||||
$addField['addfields'.$nr]['list'] = $isList;
|
||||
$addField['addfields'.$nr]['order_list'] = ($key) ? $key : 0;
|
||||
$addField['addfields'.$nr]['title'] = $isTitle;
|
||||
$addField['addfields'.$nr]['alias'] = $isAlias;
|
||||
$addField['addfields'.$nr]['sort'] = $isList;
|
||||
$addField['addfields'.$nr]['search'] = $isList;
|
||||
$addField['addfields'.$nr]['filter'] = $isList;
|
||||
$addField['addfields'.$nr]['link'] = $isLink;
|
||||
$addField['addfields'.$nr]['tab'] = 1;
|
||||
$addField['addfields'.$nr]['alignment'] = ($isTitle || $isAlias) ? 4 : $alignment;
|
||||
$addField['addfields'.$nr]['order_edit'] = $nr;
|
||||
$addField['addfields'.$nr]['permission'] = 0;
|
||||
}
|
||||
return json_encode($addField);
|
||||
|
||||
// set the field object
|
||||
$object = new stdClass();
|
||||
$object->admin_view = $view_id;
|
||||
$object->addfields = json_encode($addField, JSON_FORCE_OBJECT);
|
||||
$object->created = $this->today;
|
||||
$object->created_by = $this->user->id;
|
||||
$object->published = 1;
|
||||
// add to data base
|
||||
return $this->db->insertObject('#__componentbuilder_admin_fields', $object);
|
||||
}
|
||||
return '';
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -35,13 +35,15 @@ class Extrusion extends Builder
|
||||
* Constructor
|
||||
*/
|
||||
public function __construct(&$data)
|
||||
{
|
||||
// make sure we have an id
|
||||
if (isset($data['id']) && $data['id'] > 0)
|
||||
{
|
||||
// first we run the perent constructor
|
||||
if (parent::__construct($data))
|
||||
{
|
||||
// link the view data to the component
|
||||
$data['addadmin_views'] = $this->linkAdminViews();
|
||||
if (ComponentbuilderHelper::checkJson($data['addadmin_views']))
|
||||
if ($this->setAdminViews($data['id']))
|
||||
{
|
||||
$this->app->enqueueMessage(
|
||||
JText::_('All the fields and views from your sql dump has been created and linked to this component.'),
|
||||
@ -52,90 +54,64 @@ class Extrusion extends Builder
|
||||
}
|
||||
return false;
|
||||
}
|
||||
$this->app->enqueueMessage(
|
||||
JText::_('Please try again, this error usualy happens if it is a new component, beacues we need a component ID to do this build with your sql dump.'),
|
||||
'Error'
|
||||
);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* link the build views to the component
|
||||
*/
|
||||
protected function linkAdminViews()
|
||||
protected function setAdminViews(&$component_id)
|
||||
{
|
||||
// check if views were set
|
||||
if (ComponentbuilderHelper::checkArray($this->views))
|
||||
{
|
||||
// insure arrays are set
|
||||
if (!isset($this->addadmin_views['adminview']))
|
||||
$count = 0;
|
||||
if (ComponentbuilderHelper::checkArray($this->addadmin_views))
|
||||
{
|
||||
$this->addadmin_views['adminview'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['icomoon']))
|
||||
{
|
||||
$this->addadmin_views['icomoon'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['mainmenu']))
|
||||
{
|
||||
$this->addadmin_views['mainmenu'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['dashboard_add']))
|
||||
{
|
||||
$this->addadmin_views['dashboard_add'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['dashboard_list']))
|
||||
{
|
||||
$this->addadmin_views['dashboard_list'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['submenu']))
|
||||
{
|
||||
$this->addadmin_views['submenu'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['checkin']))
|
||||
{
|
||||
$this->addadmin_views['checkin'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['history']))
|
||||
{
|
||||
$this->addadmin_views['history'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['metadata']))
|
||||
{
|
||||
$this->addadmin_views['metadata'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['access']))
|
||||
{
|
||||
$this->addadmin_views['access'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['port']))
|
||||
{
|
||||
$this->addadmin_views['port'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['edit_create_site_view']))
|
||||
{
|
||||
$this->addadmin_views['edit_create_site_view'] = array();
|
||||
}
|
||||
if (!isset($this->addadmin_views['order']))
|
||||
{
|
||||
$this->addadmin_views['order'] = array();
|
||||
$count = (int) count((array)$this->addadmin_views) + 3;
|
||||
}
|
||||
// set the admin view data linking
|
||||
foreach ($this->views as $id)
|
||||
foreach ($this->views as $nr => $id)
|
||||
{
|
||||
$this->addadmin_views['adminview'][] = $id;
|
||||
$this->addadmin_views['icomoon'][] = 'joomla';
|
||||
$this->addadmin_views['mainmenu'][] = 1;
|
||||
$this->addadmin_views['dashboard_add'][] = 1;
|
||||
$this->addadmin_views['dashboard_list'][] = 1;
|
||||
$this->addadmin_views['submenu'][] = 1;
|
||||
$this->addadmin_views['checkin'][] = 1;
|
||||
$this->addadmin_views['history'][] = 1;
|
||||
$this->addadmin_views['metadata'][] = 1;
|
||||
$this->addadmin_views['access'][] = 1;
|
||||
$this->addadmin_views['port'][] = 1;
|
||||
$this->addadmin_views['edit_create_site_view'][] = 0;
|
||||
$this->addadmin_views['order'][] = count($this->addadmin_views['order']) + 1;
|
||||
$pointer = $count + $nr;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['adminview'] = $id;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['icomoon'] = 'joomla';
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['mainmenu'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['dashboard_add'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['dashboard_list'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['submenu'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['checkin'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['history'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['metadata'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['access'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['port'] = 1;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['edit_create_site_view'] = 0;
|
||||
$this->addadmin_views['addadmin_views'.$pointer]['order'] = $pointer + 1;
|
||||
}
|
||||
}
|
||||
if (isset($this->addadmin_views) && ComponentbuilderHelper::checkArray($this->addadmin_views))
|
||||
{
|
||||
return json_encode($this->addadmin_views);
|
||||
// set the field object
|
||||
$object = new stdClass();
|
||||
$object->joomla_component = $component_id;
|
||||
$object->addadmin_views = json_encode($this->addadmin_views, JSON_FORCE_OBJECT);
|
||||
$object->created = $this->today;
|
||||
$object->created_by = $this->user->id;
|
||||
$object->published = 1;
|
||||
// check if it is already set
|
||||
if ($item_id = ComponentbuilderHelper::getVar('component_admin_views', $component_id, 'joomla_component', 'id'))
|
||||
{
|
||||
// set ID
|
||||
$object->id = (int) $item_id;
|
||||
return $this->db->updateObject('#__componentbuilder_component_admin_views', $object, 'id');
|
||||
}
|
||||
return '';
|
||||
// add to data base
|
||||
return $this->db->insertObject('#__componentbuilder_component_admin_views', $object);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<extension type="component" version="3.2" method="upgrade">
|
||||
<name>COM_COMPONENTBUILDER</name>
|
||||
<creationDate>31st May, 2018</creationDate>
|
||||
<creationDate>9th June, 2018</creationDate>
|
||||
<author>Llewellyn van der Merwe</author>
|
||||
<authorEmail>llewellyn@joomlacomponentbuilder.com</authorEmail>
|
||||
<authorUrl>http://www.joomlacomponentbuilder.com</authorUrl>
|
||||
|
Loading…
Reference in New Issue
Block a user