get('Errors')))
{
throw new Exception(implode("\n", $errors), 500);
}
$this->app = JFactory::getApplication();
$this->form = $this->get('Form');
$input = $this->app->input;
$this->referenceId = $input->get('id', 0, 'int');
list($extensionName, $typeName) = explode('.', $input->get('itemtype', '', 'string'));
$extension = AssociationsHelper::getSupportedExtension($extensionName);
$types = $extension->get('types');
if (array_key_exists($typeName, $types))
{
$this->type = $types[$typeName];
$this->typeSupports = array();
$details = $this->type->get('details');
$this->save2copy = false;
if (array_key_exists('support', $details))
{
$support = $details['support'];
$this->typeSupports = $support;
}
if (!empty($this->typeSupports['save2copy']))
{
$this->save2copy = true;
}
}
$this->extensionName = $extensionName;
$this->typeName = $typeName;
$this->itemtype = $extensionName . '.' . $typeName;
$languageField = AssociationsHelper::getTypeFieldName($extensionName, $typeName, 'language');
$referenceId = $input->get('id', 0, 'int');
$reference = ArrayHelper::fromObject(AssociationsHelper::getItem($extensionName, $typeName, $referenceId));
$this->referenceLanguage = $reference[$languageField];
$this->referenceTitle = AssociationsHelper::getTypeFieldName($extensionName, $typeName, 'title');
$this->referenceTitleValue = $reference[$this->referenceTitle];
$options = array(
'option' => $typeName === 'category' ? 'com_categories' : $extensionName,
'view' => $typeName,
'extension' => $extensionName,
'tmpl' => 'component',
);
// Reference and target edit links.
$this->editUri = 'index.php?' . http_build_query($options);
// Get target language.
$this->targetId = '0';
$this->targetLanguage = '';
$this->defaultTargetSrc = '';
$this->targetAction = '';
$this->targetTitle = '';
if ($target = $input->get('target', '', 'string'))
{
$matches = preg_split("#[\:]+#", $target);
$this->targetAction = $matches[2];
$this->targetId = $matches[1];
$this->targetLanguage = $matches[0];
$this->targetTitle = AssociationsHelper::getTypeFieldName($extensionName, $typeName, 'title');
$task = $typeName . '.' . $this->targetAction;
/* Let's put the target src into a variable to use in the javascript code
* to avoid race conditions when the reference iframe loads.
*/
$document = JFactory::getDocument();
$document->addScriptOptions('targetSrc', JRoute::_($this->editUri . '&task=' . $task . '&id=' . (int) $this->targetId));
$this->form->setValue('itemlanguage', '', $this->targetLanguage . ':' . $this->targetId . ':' . $this->targetAction);
}
$this->addToolbar();
parent::display($tpl);
}
/**
* Add the page title and toolbar.
*
* @return void
*
* @since 3.7.0
*/
protected function addToolbar()
{
// Hide main menu.
JFactory::getApplication()->input->set('hidemainmenu', 1);
$helper = AssociationsHelper::getExtensionHelper($this->extensionName);
$title = $helper->getTypeTitle($this->typeName);
$languageKey = strtoupper($this->extensionName . '_' . $title . 'S');
if ($this->typeName === 'category')
{
$languageKey = strtoupper($this->extensionName) . '_CATEGORIES';
}
JToolbarHelper::title(JText::sprintf('COM_ASSOCIATIONS_TITLE_EDIT', JText::_($this->extensionName), JText::_($languageKey)), 'contract assoc');
$bar = JToolbar::getInstance('toolbar');
$bar->appendButton(
'Custom', '', 'reference'
);
$bar->appendButton(
'Custom', '', 'target'
);
if ($this->typeName === 'category' || $this->extensionName === 'com_menus' || $this->save2copy === true)
{
JToolBarHelper::custom('copy', 'copy.png', '', 'COM_ASSOCIATIONS_COPY_REFERENCE', false);
}
JToolbarHelper::cancel('association.cancel', 'JTOOLBAR_CLOSE');
JToolbarHelper::help('JHELP_COMPONENTS_ASSOCIATIONS_EDIT');
JHtmlSidebar::setAction('index.php?option=com_associations');
}
}