it-swarm.com.de

Joomla! 2.5 Backend-Komponente angepasst an Joomla! 3.3: Die Symbolleiste funktioniert nicht mehr

Während ich eine Joomla! 2.5-Backend-Komponente an Joomla! 3.3 anpasste, stieß ich auf das Problem der Symbolleiste auf der Dateneditionsseite, das überhaupt nicht funktioniert. Es wurden nur zwei Schaltflächen deklariert: Speichern und Abbrechen; nichts tun. Auf den ersten Blick liegt das Problem weder in der Datei view.html.php noch in tmpl/edit.php. Diese Komponente wird bereits auf unserer aktuellen Joomla! 2.5-Website verwendet und funktioniert einwandfrei.

Alle Steuerelement-, Modell- und Ansichtsseiten wurden bereits auf JControllerLegacy, JModelLegacy bzw. JViewLegacy aktualisiert, sofern zutreffend. Die Fehlerberichterstattung der Servereinstellungen wurde bereits auf Maximum gesetzt, es werden jedoch keine Fehler oder Warnungen angezeigt.

view.html.php

defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.viewlegacy');

class MrCarrosselNoticiasViewMrCarrosselNoticias extends JViewLegacy {
    function display($tpl = null){
        $form = $this->get('Form');
        $item = $this->get('Item');
        if (count($errors = $this->get('Errors'))){
            JError::raiseError(500, implode('<br />', $errors));
            return false;
        }
        $this->form = $form;
        $this->item = $item;
        $this->addToolBar();
        parent::display($tpl);
    }

    protected function addToolBar(){
        $input = JFactory::getApplication()->input;
        $input->set('hidemainmenu', true);
        $isNew = ($this->item->cod_destaque == 0);
        JToolBarHelper::title($isNew ? "Novo Destaque" : "Editando Destaque");
        JToolBarHelper::save('mrcarrosselnoticias.save');
        JToolBarHelper::cancel('mrcarrosselnoticias.cancel', 'JTOOLBAR_CANCEL');
    }
}

tmpl/edit.php

<?php
defined('_JEXEC') or die('Restricted Access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.modal');
?>

<form action="<?php echo JRoute::_('index.php?option=com_mrcarrosselnoticias&layout=edit&cod_destaque='.(int) $this->item->cod_destaque); ?>" method="post" name="adminForm" id="mrcarrosselnoticias-form">
    <div class="form-horizontal">
        <?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?>
        <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', 'Detalhes do Destaque'); ?>
        <div class="row-fluid">
            <div class="span9">
                <?php echo $this->form->getControlGroup('imagem'); ?>
                <?php echo $this->form->getControlGroup('titulo'); ?>
                <?php echo $this->form->getControlGroup('desc'); ?>
                <?php echo $this->form->getControlGroup('link'); ?>
            </div>
        </div>
        <?php echo JHtml::_('bootstrap.endTab'); ?>
        <?php echo JHtml::_('bootstrap.endTabSet'); ?>
    </div>

<div>
    <input type="hidden" name="task" value="mrcarrosselnoticias.edit" />
    <?php echo JHtml::_('form.token'); ?>
</div>
</form>
2

Ich habe dieses Szenario bei der Fehlerbehebung bei der Funktionalität von Back-End-Komponenten erlebt. 9 von 10 Fällen, weil ich die JavaScript-Logik für die Ausführung der Symbolleistenaufgaben nicht berücksichtigt habe. Versuchen Sie, das folgende Skript über dem Formular hinzuzufügen. Nach dem Hinzufügen sollte der Aufruf der Aktionsschaltflächen in der Symbolleiste funktionieren.

<script type="text/javascript">
    Joomla.submitbutton = function(task)
    {
        if (task == 'mrcarrosselnoticias.cancel' || document.formvalidator.isValid(document.id('mrcarrosselnoticias-form'))) {
            Joomla.submitform(task, document.getElementById('mrcarrosselnoticias-form'));
        }
    }
</script>

Hoffe das hilft!

1
Brian Bolli