diff --git a/README.md b/README.md index b8ba3cba6..cfdad0d8d 100644 --- a/README.md +++ b/README.md @@ -125,11 +125,11 @@ 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*: 14th August, 2018 ++ *Last Build*: 18th August, 2018 + *Version*: 2.8.6 + *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **186762** ++ *Line count*: **187148** + *Field count*: **1061** + *File count*: **1240** + *Folder count*: **197** diff --git a/admin/README.txt b/admin/README.txt index b8ba3cba6..cfdad0d8d 100644 --- a/admin/README.txt +++ b/admin/README.txt @@ -125,11 +125,11 @@ 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*: 14th August, 2018 ++ *Last Build*: 18th August, 2018 + *Version*: 2.8.6 + *Copyright*: Copyright (C) 2015 - 2018 Vast Development Method. All rights reserved. + *License*: GNU General Public License version 2 or later; see LICENSE.txt -+ *Line count*: **186762** ++ *Line count*: **187148** + *Field count*: **1061** + *File count*: **1240** + *Folder count*: **197** diff --git a/admin/compiler/joomla_3/layoutlinkedview.php b/admin/compiler/joomla_3/layoutlinkedview.php index f8aba4b62..721623f3e 100644 --- a/admin/compiler/joomla_3/layoutlinkedview.php +++ b/admin/compiler/joomla_3/layoutlinkedview.php @@ -18,9 +18,9 @@ defined('_JEXEC') or die('Restricted access'); defined('_JEXEC') or die('Restricted access'); // set the defaults -$items = $displayData->###LAYOUTITEMS###; -$user = JFactory::getUser(); -$id = $displayData->item->id; +$items = $displayData->###LAYOUTITEMS###; +$user = JFactory::getUser(); +$id = $displayData->item->id; ###LAYOUTITEMSHEADER### ?> diff --git a/admin/helpers/compiler/a_Get.php b/admin/helpers/compiler/a_Get.php index b966f5339..4d3d825d0 100644 --- a/admin/helpers/compiler/a_Get.php +++ b/admin/helpers/compiler/a_Get.php @@ -1868,7 +1868,7 @@ class Get } } // add_php - $addArrayP = array('php_getitem', 'php_before_save', 'php_save', 'php_getform', 'php_postsavehook', 'php_getitems', 'php_getitems_after_all', 'php_getlistquery', 'php_allowedit', 'php_before_delete', 'php_after_delete', 'php_before_publish', 'php_after_publish', 'php_batchcopy', 'php_batchmove', 'php_document'); + $addArrayP = array('php_getitem', 'php_before_save', 'php_save', 'php_getform', 'php_postsavehook', 'php_getitems', 'php_getitems_after_all', 'php_getlistquery', 'php_allowadd', 'php_allowedit', 'php_before_delete', 'php_after_delete', 'php_before_publish', 'php_after_publish', 'php_batchcopy', 'php_batchmove', 'php_document'); foreach ($addArrayP as $scripter) { if (isset($view->{'add_' . $scripter}) && $view->{'add_' . $scripter} == 1) diff --git a/admin/helpers/compiler/c_Fields.php b/admin/helpers/compiler/c_Fields.php index 2d9914ca0..2df21cb01 100644 --- a/admin/helpers/compiler/c_Fields.php +++ b/admin/helpers/compiler/c_Fields.php @@ -2927,7 +2927,8 @@ class Fields extends Structure $addButton[] = $this->_t(3) . "//" . $this->setLine(__LINE__) . " get the view name & id"; $addButton[] = $this->_t(3) . "\$values = \$jinput->getArray(array("; $addButton[] = $this->_t(4) . "'id' => 'int',"; - $addButton[] = $this->_t(4) . "'view' => 'word'"; + $addButton[] = $this->_t(4) . "'view' => 'word',"; + $addButton[] = $this->_t(4) . "'return' => 'base64'"; $addButton[] = $this->_t(3) . "));"; $addButton[] = $this->_t(3) . "//" . $this->setLine(__LINE__) . " check if new item"; $addButton[] = $this->_t(3) . "\$ref = '';"; @@ -2939,6 +2940,12 @@ class Fields extends Structure $addButton[] = $this->_t(4) . "//" . $this->setLine(__LINE__) . " only load referal if not new item."; $addButton[] = $this->_t(4) . "\$ref = '&ref=' . \$values['view'] . '&refid=' . \$values['id'];"; $addButton[] = $this->_t(4) . "\$refJ = '&ref=' . \$values['view'] . '&refid=' . \$values['id'];"; + $addButton[] = $this->_t(4) . "//" . $this->setLine(__LINE__) . " get the return value."; + $addButton[] = $this->_t(4) . "\$_uri = (string) JUri::getInstance();"; + $addButton[] = $this->_t(4) . "\$_return = urlencode(base64_encode(\$_uri));"; + $addButton[] = $this->_t(4) . "//" . $this->setLine(__LINE__) . " load return value."; + $addButton[] = $this->_t(4) . "\$ref .= '&return=' . \$_return;"; + $addButton[] = $this->_t(4) . "\$refJ .= '&return=' . \$_return;"; $addButton[] = $this->_t(3) . "}"; } else diff --git a/admin/helpers/compiler/e_Interpretation.php b/admin/helpers/compiler/e_Interpretation.php index 2ba5e9fc3..052bfe3eb 100644 --- a/admin/helpers/compiler/e_Interpretation.php +++ b/admin/helpers/compiler/e_Interpretation.php @@ -7740,20 +7740,33 @@ class Interpretation extends Fields // LAYOUTITEMSTABLE <<>> $this->fileContentDynamic[$viewName_single . '_' . $layoutCodeName][$this->hhh . 'LAYOUTITEMSTABLE' . $this->hhh] = $head . $body; // LAYOUTITEMSHEADER <<>> - $headerscript = '$edit = "index.php?option=com_' . $this->fileContentStatic[$this->hhh . 'component' . $this->hhh] . '&view=' . $list . '&task=' . $single . '.edit";'; + $headerscript .= '//' . $this->setLine(__LINE__) . ' set the edit URL'; + $headerscript .= PHP_EOL . '$edit = "index.php?option=com_' . $this->fileContentStatic[$this->hhh . 'component' . $this->hhh] . '&view=' . $list . '&task=' . $single . '.edit";'; + $headerscript .= PHP_EOL . '//' . $this->setLine(__LINE__) . ' set a return value'; + $headerscript .= PHP_EOL . '$return = ($id) ? "index.php?option=com_' . $this->fileContentStatic[$this->hhh . 'component' . $this->hhh] . '&view=' . $viewName_single . '&layout=edit&id=" . $id : "";'; + $headerscript .= PHP_EOL . '//' . $this->setLine(__LINE__) . ' check for a return value'; + $headerscript .= PHP_EOL . '$jinput = JFactory::getApplication()->input;'; + $headerscript .= PHP_EOL . "if (\$_return = \$jinput->get('return', null, 'base64'))"; + $headerscript .= PHP_EOL . '{'; + $headerscript .= PHP_EOL . $this->_t(1) . '$return .= "&return=" . $_return;'; + $headerscript .= PHP_EOL . '}'; + $headerscript .= PHP_EOL . '//' . $this->setLine(__LINE__) . ' set the referral values'; + $headerscript .= PHP_EOL . '$ref = ($id) ? "&ref=' . $viewName_single . '&refid=" . $id . "&return=" . urlencode(base64_encode($return)) : "";'; if ($addNewButon > 0) { // add the link for new if ($addNewButon == 1 || $addNewButon == 2) { - $headerscript .= PHP_EOL . '$ref = ($id) ? "&ref=' . $viewName_single . '&refid=".$id : "";'; + $headerscript .= PHP_EOL . '//' . $this->setLine(__LINE__) . ' set the create new URL'; $headerscript .= PHP_EOL . '$new = "index.php?option=com_' . $this->fileContentStatic[$this->hhh . 'component' . $this->hhh] . '&view=' . $single . '&layout=edit".$ref;'; } // and the link for close and new if ($addNewButon == 2 || $addNewButon == 3) { + $headerscript .= PHP_EOL . '//' . $this->setLine(__LINE__) . ' set the create new and close URL'; $headerscript .= PHP_EOL . '$close_new = "index.php?option=com_' . $this->fileContentStatic[$this->hhh . 'component' . $this->hhh] . '&view=' . $single . '&layout=edit";'; } + $headerscript .= PHP_EOL . '//' . $this->setLine(__LINE__) . ' load the action object'; $headerscript .= PHP_EOL . '$can = ' . $this->fileContentStatic[$this->hhh . 'Component' . $this->hhh] . 'Helper::getActions(' . "'" . $single . "'" . ');'; } $this->fileContentDynamic[$viewName_single . '_' . $layoutCodeName][$this->hhh . 'LAYOUTITEMSHEADER' . $this->hhh] = $headerscript; @@ -7906,7 +7919,7 @@ class Interpretation extends Fields foreach ($this->listBuilder[$viewName_list] as $item) { // set the ref - $ref = '&ref=' . $refview . '&refid='; + $ref = ''; // set some defaults $customAdminViewButtons = ''; // set the item row diff --git a/admin/helpers/componentbuilder.php b/admin/helpers/componentbuilder.php index a615821dc..7ba04c18c 100644 --- a/admin/helpers/componentbuilder.php +++ b/admin/helpers/componentbuilder.php @@ -3546,6 +3546,108 @@ abstract class ComponentbuilderHelper return false; } + /** + * Get the edit button + * + * @param int $item The item to edit + * @param string $view The type of item to edit + * @param string $views The list view controller name + * @param string $ref The return path + * @param string $headsup The message to show on click of button + * + * @return string On success the full html edit button + * + */ + public static function getEditButton(&$item, $view, $views, $ref = '', $component = 'com_componentbuilder', $headsup = 'COM_COMPONENTBUILDER_ALL_UNSAVED_WORK_ON_THIS_PAGE_WILL_BE_LOST_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE') + { + // get URL + $url = self::getEditURL($item, $view, $views, $ref, $component); + // check if we found any + if (self::checkString($url)) + { + // check that we have the ID + if (self::checkObject($item) && isset($item->id)) + { + // check if the checked_out is available + if (isset($item->checked_out)) + { + $checked_out = (int) $item->checked_out; + } + } + elseif (self::checkArray($item) && isset($item['id'])) + { + // check if the checked_out is available + if (isset($item['checked_out'])) + { + $checked_out = (int) $item['checked_out']; + } + } + // set the link title + $title = self::safeString(JText::_('COM_COMPONENTBUILDER_EDIT') . ' ' . $view, 'W'); + // check that there is a check message + if (self::checkString($headsup)) + { + $href = 'onclick="UIkit.modal.confirm(\''.JText::_($headsup).'\', function(){ window.location.href = \'' . $url . '\' })" href="javascript:void(0)"'; + } + else + { + $href = 'href="' . $url . '"'; + } + // check if it is checked out + if (isset($checked_out) && $checked_out > 0) + { + // is this user the one who checked it out + if ($checked_out == JFactory::getUser()->id) + { + return ' '; + } + return ' '; + } + // return normal edit link + return ' '; + } + return ''; + } + + /** + * Get the edit URL + * + * @param int $item The item to edit + * @param string $view The type of item to edit + * @param string $ref The return path + * + * @return string On success the edit url + * + */ + public static function getEditURL(&$item, $view, $views, $ref = '', $component = 'com_componentbuilder') + { + // check that we have the ID + if (self::checkObject($item) && isset($item->id)) + { + $id = (int) $item->id; + } + elseif (self::checkArray($item) && isset($item['id'])) + { + $id = (int) $item['id']; + } + elseif (is_numeric($item)) + { + $id = (int) $item; + } + // check ID + if (isset($id) && $id > 0) + { + // can edit + if (JFactory::getUser()->authorise($view . '.edit', $component . '.' . $view . '.' . (int) $id)) + { + // set the edit link + return JRoute::_("index.php?option=" . $component . "&view=" . $views . "&task=" . $view . ".edit&id=" . $id . $ref); + } + } + return false; + } + + /** * the Crypt objects **/ diff --git a/admin/language/en-GB/en-GB.com_componentbuilder.ini b/admin/language/en-GB/en-GB.com_componentbuilder.ini index 8ff85f09d..908c1f282 100644 --- a/admin/language/en-GB/en-GB.com_componentbuilder.ini +++ b/admin/language/en-GB/en-GB.com_componentbuilder.ini @@ -6757,6 +6757,7 @@ COM_COMPONENTBUILDER_YOU_SHOULD_ONLY_CONTINUE_THIS_IMPORT_IF_YOU_HAVE_BACKUP_YOU COM_COMPONENTBUILDER_YOU_WILL_NEED_TO_KNOW_HOW_S_WORKS_BASIC_YOU_WILL_ALSO_NEED_A_S_ACCOUNT_AND_KNOW_HOW_TO_MAKE_A_PULL_REQUEST_ON_GITHUB="you will need to know how %s works (basic). You will also need a %s account and know how to make a pull request on github." COM_COMPONENTBUILDER_ZIPPED_FILE_LOCATION="Zipped File Location" COM_COMPONENTBUILDER__ADD_YOUR_PHP_SCRIPT_HERE="// Add your php script here" +COM_COMPONENTBUILDER__HAS_BEEN_CHECKED_OUT_BY_S="% has been checked out by %s" COM_COMPONENTBUILDER__SELECT_COMPONENT_="- Select Component -" COM_COMPONENTBUILDER__SELECT_PACKAGE_="- Select Package -" COM_COMPONENTBUILDER__SINCE_YOU_DONT_HAVE_PERMISSION_TO_CREATE_S=", since you don't have permission to create %s!" diff --git a/admin/layouts/fieldtype/fields_fullwidth.php b/admin/layouts/fieldtype/fields_fullwidth.php index 820b42de9..f3c29ac19 100644 --- a/admin/layouts/fieldtype/fields_fullwidth.php +++ b/admin/layouts/fieldtype/fields_fullwidth.php @@ -13,18 +13,35 @@ defined('_JEXEC') or die('Restricted access'); // set the defaults -$items = $displayData->waffields; -$user = JFactory::getUser(); -$id = $displayData->item->id; +$items = $displayData->waffields; +$user = JFactory::getUser(); +$id = $displayData->item->id; +// set the edit URL $edit = "index.php?option=com_componentbuilder&view=fields&task=field.edit"; -$ref = ($id) ? "&ref=fieldtype&refid=".$id : ""; +// set a return value +$return = ($id) ? "index.php?option=com_componentbuilder&view=fieldtype&layout=edit&id=" . $id : ""; +// check for a return value +$jinput = JFactory::getApplication()->input; +if ($_return = $jinput->get('return', null, 'base64')) +{ + $return .= "&return=" . $_return; +} +// set the referral values +$ref = ($id) ? "&ref=fieldtype&refid=" . $id . "&return=" . urlencode(base64_encode($return)) : ""; +// set the create new URL $new = "index.php?option=com_componentbuilder&view=field&layout=edit".$ref; +// set the create new and close URL +$close_new = "index.php?option=com_componentbuilder&view=field&layout=edit"; +// load the action object $can = ComponentbuilderHelper::getActions('field'); ?>
get('field.create')): ?> -

+
+ + +


@@ -69,7 +86,7 @@ $can = ComponentbuilderHelper::getActions('field');
get('field.edit')): ?> - escape($item->name); ?> + escape($item->name); ?> checked_out): ?> name, $item->checked_out_time, 'fields.', $canCheckin); ?> diff --git a/admin/layouts/server/linked_components_fullwidth.php b/admin/layouts/server/linked_components_fullwidth.php index 81d32dd22..a11146cd5 100644 --- a/admin/layouts/server/linked_components_fullwidth.php +++ b/admin/layouts/server/linked_components_fullwidth.php @@ -13,10 +13,21 @@ defined('_JEXEC') or die('Restricted access'); // set the defaults -$items = $displayData->waplinked_components; -$user = JFactory::getUser(); -$id = $displayData->item->id; -$edit = "index.php?option=com_componentbuilder&view=joomla_components&task=joomla_component.edit"; +$items = $displayData->waplinked_components; +$user = JFactory::getUser(); +$id = $displayData->item->id; +// set the edit URL +$edit = "index.php?option=com_componentbuilder&view=joomla_components&task=joomla_component.edit"; +// set a return value +$return = ($id) ? "index.php?option=com_componentbuilder&view=server&layout=edit&id=" . $id : ""; +// check for a return value +$jinput = JFactory::getApplication()->input; +if ($_return = $jinput->get('return', null, 'base64')) +{ + $return .= "&return=" . $_return; +} +// set the referral values +$ref = ($id) ? "&ref=server&refid=" . $id . "&return=" . urlencode(base64_encode($return)) : ""; ?>
@@ -60,7 +71,7 @@ $edit = "index.php?option=com_componentbuilder&view=joomla_components&task=jooml
get('joomla_component.edit')): ?> - escape($item->system_name); ?> + escape($item->system_name); ?> checked_out): ?> name, $item->checked_out_time, 'joomla_components.', $canCheckin); ?> diff --git a/admin/models/admin_view.php b/admin/models/admin_view.php index 00f860107..5bb1dccb0 100644 --- a/admin/models/admin_view.php +++ b/admin/models/admin_view.php @@ -374,9 +374,14 @@ class ComponentbuilderModelAdmin_view extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'admin_view__'.$id); ComponentbuilderHelper::set('admin_view__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } // update the fields diff --git a/admin/models/ajax.php b/admin/models/ajax.php index 445258d3b..f90711a30 100644 --- a/admin/models/ajax.php +++ b/admin/models/ajax.php @@ -210,6 +210,7 @@ class ComponentbuilderModelAjax extends JModelList $vdm = $jinput->get('vdm', null, 'WORD'); if ($vdm) { + // set view and id if ($view = ComponentbuilderHelper::get($vdm)) { $current = (array) explode('__', $view); @@ -222,6 +223,14 @@ class ComponentbuilderModelAjax extends JModelList ); } } + // set return if found + if ($return = ComponentbuilderHelper::get($vdm . '__return')) + { + if (ComponentbuilderHelper::checkString($return)) + { + $this->viewid[$call]['a_return'] = $return; + } + } } } if (isset($this->viewid[$call])) @@ -269,11 +278,17 @@ class ComponentbuilderModelAjax extends JModelList $ref = ''; if (!is_null($values['a_id']) && $values['a_id'] > 0 && strlen($values['a_view'])) { - // only load referal if not new item. - $ref = '&ref=' . $values['a_view'] . '&refid=' . $values['a_id']; + // check if we have a return value + $return_url = 'index.php?option=com_componentbuilder&view=' . (string) $values['a_view'] . '&layout=edit&id=' . (int) $values['a_id']; + if (isset($values['a_return'])) + { + $return_url .= '&return=' . (string) $values['a_return']; + } + // only load referral if not new item. + $ref = '&ref=' . $values['a_view'] . '&refid=' . $values['a_id'] . '&return=' . urlencode(base64_encode($return_url)); } // build url (A tag) - $startAtag = ''; + $startAtag = ''; // build the smaller button if (2 == $size) { @@ -317,8 +332,14 @@ class ComponentbuilderModelAjax extends JModelList $ref = ''; if (!is_null($values['a_id']) && $values['a_id'] > 0 && strlen($values['a_view'])) { + // set the return value + $return_url = 'index.php?option=com_componentbuilder&view=' . (string) $values['a_view'] . '&layout=edit&id=' . (int) $values['a_id']; + if (isset($values['a_return'])) + { + $return_url .= '&return=' . (string) $values['a_return']; + } // only load referral if not new item. - $ref = '&ref=' . $values['a_view'] . '&refid=' . $values['a_id']; + $ref = '&ref=' . $values['a_view'] . '&refid=' . $values['a_id'] . '&return=' . urlencode(base64_encode($return_url)); // get item id if ($id = ComponentbuilderHelper::getVar($type, $values['a_id'], $values['a_view'], 'id')) { @@ -658,7 +679,14 @@ class ComponentbuilderModelAjax extends JModelList // check if we are in the correct view. if (!is_null($values['a_id']) && $values['a_id'] > 0 && strlen($values['a_view']) && in_array($values['a_view'], $this->allowedViewsArray)) { - $this->ref = '&ref=' . $values['a_view'] . '&refid=' . $values['a_id']; + // set a return value + $return_url = 'index.php?option=com_componentbuilder&view=' . (string) $values['a_view'] . '&layout=edit&id=' . (int) $values['a_id']; + if (isset($values['a_return'])) + { + $return_url .= '&return=' . (string) $values['a_return']; + } + // set the ref + $this->ref = '&ref=' . $values['a_view'] . '&refid=' . $values['a_id'] . '&return=' . urlencode(base64_encode($return_url)); // load the results $result = array(); // return field table @@ -810,7 +838,7 @@ class ComponentbuilderModelAjax extends JModelList } } // set edit link - $link = ($edit) ? $this->addEditLink($item, $this->itemKeys[$header]['table'], $this->itemKeys[$header]['tables']) : ''; + $link = ($edit) ? ComponentbuilderHelper::getEditButton($item, $this->itemKeys[$header]['table'], $this->itemKeys[$header]['tables'], $this->ref) : ''; // load item $bucket[] = $this->itemNames[$this->itemKeys[$header]['table']][$item] . $link; } @@ -836,7 +864,7 @@ class ComponentbuilderModelAjax extends JModelList } } // set edit link - $link = ($edit) ? $this->addEditLink($value, $this->itemKeys[$header]['table'], $this->itemKeys[$header]['tables']) : ''; + $link = ($edit) ? ComponentbuilderHelper::getEditButton($value, $this->itemKeys[$header]['table'], $this->itemKeys[$header]['tables'], $this->ref) : ''; // load item $bucket[] = $this->itemNames[$this->itemKeys[$header]['table']][$value] . $link; } @@ -955,31 +983,6 @@ class ComponentbuilderModelAjax extends JModelList return JText::_('COM_COMPONENTBUILDER_NOT_SET'); } - protected function addEditLink($id, $view, $views) - { - // can edit - if ($this->canEdit($id, $view)) - { - $edit = "index.php?option=com_componentbuilder&view=".$views."&task=".$view.".edit&id=".$id.$this->ref; - $title = ComponentbuilderHelper::safeString(JText::_('COM_COMPONENTBUILDER_EDIT').' '.$view, 'W'); - return ' '; - - } - return ''; - } - - protected $user; - - protected function canEdit($id, $view = 'admin_fields') - { - // load field permission check - if (!ComponentbuilderHelper::checkObject($this->user)) // TODO && $this->user instanceof JUser) - { - $this->user = JFactory::getUser(); - } - return $this->user->authorise($view.'.edit', 'com_componentbuilder.'.$view.'.' . (int) $id); - } - protected function setAdminBehaviour($header, $value) { switch ($value) @@ -1284,8 +1287,14 @@ class ComponentbuilderModelAjax extends JModelList // check if we have any linked to config if (isset($this->linkedKeys[$values['a_view']])) { + // set a return value + $return_url = 'index.php?option=com_componentbuilder&view=' . (string) $values['a_view'] . '&layout=edit&id=' . (int) $values['a_id']; + if (isset($values['a_return'])) + { + $return_url .= '&return=' . (string) $values['a_return']; + } // make sure the ref is set - $this->ref = '&ref=' . $values['a_view'] . '&refid=' . $values['a_id']; + $this->ref = '&ref=' . $values['a_view'] . '&refid=' . $values['a_id'] . '&return=' . urlencode(base64_encode($return_url)); // get the linked to if ($linked = $this->getLinkedTo($values['a_view'], $values['a_id'])) { @@ -1454,7 +1463,7 @@ class ComponentbuilderModelAjax extends JModelList $type_name = ' (' . $type_name . ') '; } // set edit link - $link = ($edit) ? $this->addEditLink($item->id, $search['table'], $search['tables']) : ''; + $link = ($edit) ? ComponentbuilderHelper::getEditButton($item->id, $search['table'], $search['tables'], $this->ref) : ''; // build the linked $linked[] = JText::_($search['linked']) . $type_name . ' - ' . $linked_name . ' ' . $link; } diff --git a/admin/models/custom_admin_view.php b/admin/models/custom_admin_view.php index 17f8033d7..b97e3ceff 100644 --- a/admin/models/custom_admin_view.php +++ b/admin/models/custom_admin_view.php @@ -206,9 +206,14 @@ class ComponentbuilderModelCustom_admin_view extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'custom_admin_view__'.$id); ComponentbuilderHelper::set('custom_admin_view__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } // check what type of custom_button array we have here (should be subform... but just incase) diff --git a/admin/models/dynamic_get.php b/admin/models/dynamic_get.php index 728573474..53c6817a0 100644 --- a/admin/models/dynamic_get.php +++ b/admin/models/dynamic_get.php @@ -198,9 +198,14 @@ class ComponentbuilderModelDynamic_get extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'dynamic_get__'.$id); ComponentbuilderHelper::set('dynamic_get__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } // update the fields diff --git a/admin/models/field.php b/admin/models/field.php index bc2bc00a5..60488c3d6 100644 --- a/admin/models/field.php +++ b/admin/models/field.php @@ -132,9 +132,14 @@ class ComponentbuilderModelField extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'field__'.$id); ComponentbuilderHelper::set('field__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } if (!empty($item->id)) diff --git a/admin/models/fields/component.php b/admin/models/fields/component.php index 70d6eae3e..12edbebd3 100644 --- a/admin/models/fields/component.php +++ b/admin/models/fields/component.php @@ -53,7 +53,8 @@ class JFormFieldComponent extends JFormFieldList // get the view name & id $values = $jinput->getArray(array( 'id' => 'int', - 'view' => 'word' + 'view' => 'word', + 'return' => 'base64' )); // check if new item $ref = ''; @@ -63,6 +64,12 @@ class JFormFieldComponent extends JFormFieldList // only load referal if not new item. $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + // get the return value. + $_uri = (string) JUri::getInstance(); + $_return = urlencode(base64_encode($_uri)); + // load return value. + $ref .= '&return=' . $_return; + $refJ .= '&return=' . $_return; } $user = JFactory::getUser(); // only add if user allowed to create joomla_component diff --git a/admin/models/fields/dynamicget.php b/admin/models/fields/dynamicget.php index 270382ef8..8342c72dd 100644 --- a/admin/models/fields/dynamicget.php +++ b/admin/models/fields/dynamicget.php @@ -53,7 +53,8 @@ class JFormFieldDynamicget extends JFormFieldList // get the view name & id $values = $jinput->getArray(array( 'id' => 'int', - 'view' => 'word' + 'view' => 'word', + 'return' => 'base64' )); // check if new item $ref = ''; @@ -63,6 +64,12 @@ class JFormFieldDynamicget extends JFormFieldList // only load referal if not new item. $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + // get the return value. + $_uri = (string) JUri::getInstance(); + $_return = urlencode(base64_encode($_uri)); + // load return value. + $ref .= '&return=' . $_return; + $refJ .= '&return=' . $_return; } $user = JFactory::getUser(); // only add if user allowed to create dynamic_get diff --git a/admin/models/fields/fieldtypes.php b/admin/models/fields/fieldtypes.php index eb786a189..08e0f2f28 100644 --- a/admin/models/fields/fieldtypes.php +++ b/admin/models/fields/fieldtypes.php @@ -53,7 +53,8 @@ class JFormFieldFieldtypes extends JFormFieldList // get the view name & id $values = $jinput->getArray(array( 'id' => 'int', - 'view' => 'word' + 'view' => 'word', + 'return' => 'base64' )); // check if new item $ref = ''; @@ -63,6 +64,12 @@ class JFormFieldFieldtypes extends JFormFieldList // only load referal if not new item. $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + // get the return value. + $_uri = (string) JUri::getInstance(); + $_return = urlencode(base64_encode($_uri)); + // load return value. + $ref .= '&return=' . $_return; + $refJ .= '&return=' . $_return; } $user = JFactory::getUser(); // only add if user allowed to create fieldtype diff --git a/admin/models/fields/libraries.php b/admin/models/fields/libraries.php index 2a6a238ec..5463e5ef7 100644 --- a/admin/models/fields/libraries.php +++ b/admin/models/fields/libraries.php @@ -53,7 +53,8 @@ class JFormFieldLibraries extends JFormFieldList // get the view name & id $values = $jinput->getArray(array( 'id' => 'int', - 'view' => 'word' + 'view' => 'word', + 'return' => 'base64' )); // check if new item $ref = ''; @@ -63,6 +64,12 @@ class JFormFieldLibraries extends JFormFieldList // only load referal if not new item. $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + // get the return value. + $_uri = (string) JUri::getInstance(); + $_return = urlencode(base64_encode($_uri)); + // load return value. + $ref .= '&return=' . $_return; + $refJ .= '&return=' . $_return; } $user = JFactory::getUser(); // only add if user allowed to create library diff --git a/admin/models/fields/librariesx.php b/admin/models/fields/librariesx.php index 2e359af95..44fa742ce 100644 --- a/admin/models/fields/librariesx.php +++ b/admin/models/fields/librariesx.php @@ -53,7 +53,8 @@ class JFormFieldLibrariesx extends JFormFieldList // get the view name & id $values = $jinput->getArray(array( 'id' => 'int', - 'view' => 'word' + 'view' => 'word', + 'return' => 'base64' )); // check if new item $ref = ''; @@ -63,6 +64,12 @@ class JFormFieldLibrariesx extends JFormFieldList // only load referal if not new item. $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + // get the return value. + $_uri = (string) JUri::getInstance(); + $_return = urlencode(base64_encode($_uri)); + // load return value. + $ref .= '&return=' . $_return; + $refJ .= '&return=' . $_return; } $user = JFactory::getUser(); // only add if user allowed to create library diff --git a/admin/models/fields/library.php b/admin/models/fields/library.php index 4a422961e..b7b5da851 100644 --- a/admin/models/fields/library.php +++ b/admin/models/fields/library.php @@ -53,7 +53,8 @@ class JFormFieldLibrary extends JFormFieldList // get the view name & id $values = $jinput->getArray(array( 'id' => 'int', - 'view' => 'word' + 'view' => 'word', + 'return' => 'base64' )); // check if new item $ref = ''; @@ -63,6 +64,12 @@ class JFormFieldLibrary extends JFormFieldList // only load referal if not new item. $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + // get the return value. + $_uri = (string) JUri::getInstance(); + $_return = urlencode(base64_encode($_uri)); + // load return value. + $ref .= '&return=' . $_return; + $refJ .= '&return=' . $_return; } $user = JFactory::getUser(); // only add if user allowed to create library diff --git a/admin/models/fields/maingets.php b/admin/models/fields/maingets.php index c8a6823fe..8c09bffc4 100644 --- a/admin/models/fields/maingets.php +++ b/admin/models/fields/maingets.php @@ -53,7 +53,8 @@ class JFormFieldMaingets extends JFormFieldList // get the view name & id $values = $jinput->getArray(array( 'id' => 'int', - 'view' => 'word' + 'view' => 'word', + 'return' => 'base64' )); // check if new item $ref = ''; @@ -63,6 +64,12 @@ class JFormFieldMaingets extends JFormFieldList // only load referal if not new item. $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + // get the return value. + $_uri = (string) JUri::getInstance(); + $_return = urlencode(base64_encode($_uri)); + // load return value. + $ref .= '&return=' . $_return; + $refJ .= '&return=' . $_return; } $user = JFactory::getUser(); // only add if user allowed to create dynamic_get diff --git a/admin/models/fields/servers.php b/admin/models/fields/servers.php index 408ab46d9..ee1b62586 100644 --- a/admin/models/fields/servers.php +++ b/admin/models/fields/servers.php @@ -53,7 +53,8 @@ class JFormFieldServers extends JFormFieldList // get the view name & id $values = $jinput->getArray(array( 'id' => 'int', - 'view' => 'word' + 'view' => 'word', + 'return' => 'base64' )); // check if new item $ref = ''; @@ -63,6 +64,12 @@ class JFormFieldServers extends JFormFieldList // only load referal if not new item. $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + // get the return value. + $_uri = (string) JUri::getInstance(); + $_return = urlencode(base64_encode($_uri)); + // load return value. + $ref .= '&return=' . $_return; + $refJ .= '&return=' . $_return; } $user = JFactory::getUser(); // only add if user allowed to create server diff --git a/admin/models/fields/snippets.php b/admin/models/fields/snippets.php index cdf4248c6..7e3043f78 100644 --- a/admin/models/fields/snippets.php +++ b/admin/models/fields/snippets.php @@ -53,7 +53,8 @@ class JFormFieldSnippets extends JFormFieldList // get the view name & id $values = $jinput->getArray(array( 'id' => 'int', - 'view' => 'word' + 'view' => 'word', + 'return' => 'base64' )); // check if new item $ref = ''; @@ -63,6 +64,12 @@ class JFormFieldSnippets extends JFormFieldList // only load referal if not new item. $ref = '&ref=' . $values['view'] . '&refid=' . $values['id']; $refJ = '&ref=' . $values['view'] . '&refid=' . $values['id']; + // get the return value. + $_uri = (string) JUri::getInstance(); + $_return = urlencode(base64_encode($_uri)); + // load return value. + $ref .= '&return=' . $_return; + $refJ .= '&return=' . $_return; } $user = JFactory::getUser(); // only add if user allowed to create snippet diff --git a/admin/models/forms/joomla_component.xml b/admin/models/forms/joomla_component.xml index 7f396f838..b19db1be3 100644 --- a/admin/models/forms/joomla_component.xml +++ b/admin/models/forms/joomla_component.xml @@ -731,6 +731,8 @@ directory="administrator/components/com_componentbuilder/compiler" default="default.txt" description="COM_COMPONENTBUILDER_JOOMLA_COMPONENT_BOM_DESCRIPTION" + filter="\.txt" + hide_none="true" hide_default="true" /> diff --git a/admin/models/joomla_component.php b/admin/models/joomla_component.php index 43539aba3..1f8073c19 100644 --- a/admin/models/joomla_component.php +++ b/admin/models/joomla_component.php @@ -229,9 +229,14 @@ class ComponentbuilderModelJoomla_component extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'joomla_component__'.$id); ComponentbuilderHelper::set('joomla_component__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } // update the fields diff --git a/admin/models/language_translation.php b/admin/models/language_translation.php index 61c4b454e..8854e5364 100644 --- a/admin/models/language_translation.php +++ b/admin/models/language_translation.php @@ -116,9 +116,14 @@ class ComponentbuilderModelLanguage_translation extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'language_translation__'.$id); ComponentbuilderHelper::set('language_translation__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } if (!empty($item->id)) diff --git a/admin/models/layout.php b/admin/models/layout.php index 695d29168..1e8fd6a8b 100644 --- a/admin/models/layout.php +++ b/admin/models/layout.php @@ -122,9 +122,14 @@ class ComponentbuilderModelLayout extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'layout__'.$id); ComponentbuilderHelper::set('layout__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } if (!empty($item->id)) diff --git a/admin/models/library.php b/admin/models/library.php index 567b0751c..2fe56f676 100644 --- a/admin/models/library.php +++ b/admin/models/library.php @@ -124,9 +124,14 @@ class ComponentbuilderModelLibrary extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'library__'.$id); ComponentbuilderHelper::set('library__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } if (!empty($item->id)) diff --git a/admin/models/site_view.php b/admin/models/site_view.php index ae016c173..8b32e40bf 100644 --- a/admin/models/site_view.php +++ b/admin/models/site_view.php @@ -206,9 +206,14 @@ class ComponentbuilderModelSite_view extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'site_view__'.$id); ComponentbuilderHelper::set('site_view__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } // update the fields diff --git a/admin/models/template.php b/admin/models/template.php index 362d00179..231dca185 100644 --- a/admin/models/template.php +++ b/admin/models/template.php @@ -122,9 +122,14 @@ class ComponentbuilderModelTemplate extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'template__'.$id); ComponentbuilderHelper::set('template__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } if (!empty($item->id)) diff --git a/admin/models/validation_rule.php b/admin/models/validation_rule.php index 9313a78be..df946d3a9 100644 --- a/admin/models/validation_rule.php +++ b/admin/models/validation_rule.php @@ -108,9 +108,14 @@ class ComponentbuilderModelValidation_rule extends JModelAdmin } else { + // set the vast development method key $this->vastDevMod = ComponentbuilderHelper::randomkey(50); ComponentbuilderHelper::set($this->vastDevMod, 'validation_rule__'.$id); ComponentbuilderHelper::set('validation_rule__'.$id, $this->vastDevMod); + // set a return value if found + $jinput = JFactory::getApplication()->input; + $return = $jinput->get('return', null, 'base64'); + ComponentbuilderHelper::set($this->vastDevMod . '__return', $return); } if (!empty($item->id)) diff --git a/admin/sql/updates/mysql/2.8.5.sql b/admin/sql/updates/mysql/2.8.5.sql index 08f6fa90a..b816f1db1 100644 --- a/admin/sql/updates/mysql/2.8.5.sql +++ b/admin/sql/updates/mysql/2.8.5.sql @@ -1,3 +1,3 @@ -ALTER TABLE `#__componentbuilder_admin_view` ADD `add_php_allowadd` TINYINT(1) NOT NULL DEFAULT 0 AFTER `add_php_ajax`; - +ALTER TABLE `#__componentbuilder_admin_view` ADD `add_php_allowadd` TINYINT(1) NOT NULL DEFAULT 0 AFTER `add_php_ajax`; + ALTER TABLE `#__componentbuilder_admin_view` ADD `php_allowadd` MEDIUMTEXT NOT NULL AFTER `php_ajaxmethod`; diff --git a/componentbuilder.xml b/componentbuilder.xml index e9359f27b..3f5145d18 100644 --- a/componentbuilder.xml +++ b/componentbuilder.xml @@ -1,7 +1,7 @@ COM_COMPONENTBUILDER - 14th August, 2018 + 18th August, 2018 Llewellyn van der Merwe llewellyn@joomlacomponentbuilder.com http://www.joomlacomponentbuilder.com diff --git a/componentbuilder_update_server.xml b/componentbuilder_update_server.xml index 753f98a20..c3117b700 100644 --- a/componentbuilder_update_server.xml +++ b/componentbuilder_update_server.xml @@ -449,7 +449,7 @@ 2.8.6 http://www.joomlacomponentbuilder.com - http://domain.com/demo.zip + https://github.com/vdm-io/Joomla-Component-Builder/releases/download/v2.8.6/JCB_v2.8.6.zip stable diff --git a/site/helpers/componentbuilder.php b/site/helpers/componentbuilder.php index f5b5dbd83..fbe668e19 100644 --- a/site/helpers/componentbuilder.php +++ b/site/helpers/componentbuilder.php @@ -3546,6 +3546,108 @@ abstract class ComponentbuilderHelper return false; } + /** + * Get the edit button + * + * @param int $item The item to edit + * @param string $view The type of item to edit + * @param string $views The list view controller name + * @param string $ref The return path + * @param string $headsup The message to show on click of button + * + * @return string On success the full html edit button + * + */ + public static function getEditButton(&$item, $view, $views, $ref = '', $component = 'com_componentbuilder', $headsup = 'COM_COMPONENTBUILDER_ALL_UNSAVED_WORK_ON_THIS_PAGE_WILL_BE_LOST_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE') + { + // get URL + $url = self::getEditURL($item, $view, $views, $ref, $component); + // check if we found any + if (self::checkString($url)) + { + // check that we have the ID + if (self::checkObject($item) && isset($item->id)) + { + // check if the checked_out is available + if (isset($item->checked_out)) + { + $checked_out = (int) $item->checked_out; + } + } + elseif (self::checkArray($item) && isset($item['id'])) + { + // check if the checked_out is available + if (isset($item['checked_out'])) + { + $checked_out = (int) $item['checked_out']; + } + } + // set the link title + $title = self::safeString(JText::_('COM_COMPONENTBUILDER_EDIT') . ' ' . $view, 'W'); + // check that there is a check message + if (self::checkString($headsup)) + { + $href = 'onclick="UIkit.modal.confirm(\''.JText::_($headsup).'\', function(){ window.location.href = \'' . $url . '\' })" href="javascript:void(0)"'; + } + else + { + $href = 'href="' . $url . '"'; + } + // check if it is checked out + if (isset($checked_out) && $checked_out > 0) + { + // is this user the one who checked it out + if ($checked_out == JFactory::getUser()->id) + { + return ' '; + } + return ' '; + } + // return normal edit link + return ' '; + } + return ''; + } + + /** + * Get the edit URL + * + * @param int $item The item to edit + * @param string $view The type of item to edit + * @param string $ref The return path + * + * @return string On success the edit url + * + */ + public static function getEditURL(&$item, $view, $views, $ref = '', $component = 'com_componentbuilder') + { + // check that we have the ID + if (self::checkObject($item) && isset($item->id)) + { + $id = (int) $item->id; + } + elseif (self::checkArray($item) && isset($item['id'])) + { + $id = (int) $item['id']; + } + elseif (is_numeric($item)) + { + $id = (int) $item; + } + // check ID + if (isset($id) && $id > 0) + { + // can edit + if (JFactory::getUser()->authorise($view . '.edit', $component . '.' . $view . '.' . (int) $id)) + { + // set the edit link + return JRoute::_("index.php?option=" . $component . "&view=" . $views . "&task=" . $view . ".edit&id=" . $id . $ref); + } + } + return false; + } + + /** * the Crypt objects **/ diff --git a/site/language/en-GB/en-GB.com_componentbuilder.ini b/site/language/en-GB/en-GB.com_componentbuilder.ini index 7bb8db707..845b8d467 100644 --- a/site/language/en-GB/en-GB.com_componentbuilder.ini +++ b/site/language/en-GB/en-GB.com_componentbuilder.ini @@ -1,5 +1,6 @@ COM_COMPONENTBUILDER="Component Builder" COM_COMPONENTBUILDER_ACCESS_DENIED="Access denied!" +COM_COMPONENTBUILDER_ALL_UNSAVED_WORK_ON_THIS_PAGE_WILL_BE_LOST_ARE_YOU_SURE_YOU_WANT_TO_CONTINUE="All unsaved work on this page will be lost, are you sure you want to continue?" COM_COMPONENTBUILDER_API="Api" COM_COMPONENTBUILDER_API_DESC="Sync Portal API" COM_COMPONENTBUILDER_BACKUP_FAILED_PLEASE_TRY_AGAIN_IF_THE_ERROR_CONTINUE_PLEASE_CONTACT_YOUR_SYSTEM_ADMINISTRATOR="Backup failed, please try again. If the error continue, please contact your system administrator." @@ -21,6 +22,7 @@ COM_COMPONENTBUILDER_DTEMAILDTDDSDD="
Email
%s
" COM_COMPONENTBUILDER_DTLICENSEDTDDSDD="
License
%s
" COM_COMPONENTBUILDER_DTOWNERDTDDSDD="
Owner
%s
" COM_COMPONENTBUILDER_DTWEBSITEDTDDSDD="
Website
%s
" +COM_COMPONENTBUILDER_EDIT="Edit" COM_COMPONENTBUILDER_EDIT_S="Edit %s" COM_COMPONENTBUILDER_EMAIL_S="Email: %s" COM_COMPONENTBUILDER_EMAIL_WITH_THE_NEW_KEY_WAS_SEND="Email with the new key was send" @@ -87,6 +89,7 @@ COM_COMPONENTBUILDER_WEBSITE_S="Website: %s" COM_COMPONENTBUILDER_YOUR_DATA_IS_ENCRYPTED_WITH_A_AES_ONE_HUNDRED_AND_TWENTY_EIGHT_BIT_ENCRYPTION_USING_THE_ABOVE_THIRTY_TWO_CHARACTER_KEY_WITHOUT_THIS_KEY_IT_WILL_TAKE_THE_CURRENT_TECHNOLOGY_WITH_A_BRUTE_FORCE_ATTACK_METHOD_MORE_THEN_A_HREFHTTPRANDOMIZECOMHOWLONGTOHACKPASS_TARGET_BLANK_TITLEHOW_LONG_TO_HACK_PASSSEVEN_HUNDRED_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZERO_ZEROA_YEARS_TO_CRACK_THEORETICALLY_UNLESS_THEY_HAVE_THIS_KEY_ABOVE_SO_DO_KEEP_IT_SAFE="Your data is encrypted with a AES 128 bit encryption using the above 32 character key. Without this key it will take the current technology with a brute force attack method more then 700 000 000 000 000 000 000 000 000 000 000 years to crack theoretically. Unless they have this key above, so do keep it safe." COM_COMPONENTBUILDER_YOU_DO_NOT_HAVE_PERMISSION_TO_ACCESS_THE_SERVER_DETAILS_BS_DENIEDB_PLEASE_CONTACT_YOUR_SYSTEM_ADMINISTRATOR_FOR_MORE_INFO="You do not have permission to access the server details (%s - denied), please contact your system administrator for more info." COM_COMPONENTBUILDER_YOU_SHOULD_ADD_THE_CORRECT_OWNER_DETAILS="You should add the correct owner details." +COM_COMPONENTBUILDER__HAS_BEEN_CHECKED_OUT_BY_S="% has been checked out by %s" COM_CONTENT_FIELD_MODIFIED_DESC="The last date this item was modified." JGLOBAL_FIELD_ID_DESC="Record number in the database." JGLOBAL_FIELD_ID_LABEL="ID"