it-swarm.com.de

Die aktive Registerkarte ändert sich nach dem Speichern im Joomla-Administrator

Ich habe eine neue Komponente erstellt. Im Administrator-Backend kehrt die aktive Registerkarte zur ersten Registerkarte (die in edit.php deklariert wurde) zurück, wenn ich auf "Speichern" klicke, nachdem ich ein Feld in einer anderen Registerkarte geändert habe.

Ich verfolge meine Codes, und es folgt ähnlich wie im Inhalt (/article/views/tmpl/edit.php) und Weblinks (/weblink/views/tmpl/edit.php), wo die aktive Registerkarte funktioniert; Das heißt, es bleibt auf der gleichen Registerkarte nach "Speichern". Ich benutze Joomla 3.3.6

Hier ist ein Auszug meiner Codes ...

defined('_JEXEC') or die;

// Include the component HTML helpers.
JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html');

JHtml::_('behavior.formvalidation');
// JHtml::_('behavior.keepalive');
JHtml::_('formbehavior.chosen', 'select');

?>

<script type="text/javascript">
Joomla.submitbutton = function(task)
{
    if (task == 'subscription.cancel' ||     document.formvalidator.isValid(document.id('item-form')))
    {
        <?php echo $this->form->getField('description')->save(); ?>
        Joomla.submitform(task, document.getElementById('item-form'));
    }
}
</script>

<form action="<?php echo JRoute::_('index.php? option=com_subscriptions&view=subscription&layout=edit&id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="item-form" class="form-validate">

<?php echo JLayoutHelper::render('joomla.edit.title_alias', $this); ?>

  <div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'general')); ?>         

    <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'general', empty($this->item->id) ? JText::_('COM_SUBSCRIPTIONS_NEW_SUBSCRIPTION', true) : JText::_('COM_SUBSCRIPTIONS_EDIT_SUBSCRIPTION', $this->item->id, true)); ?>
    <div class="row-fluid">
        <div class="span9">
......

    <input type="hidden" name="task" value="" />
3
Samuel N

In der drittletzten Zeile oben

    <?php echo JHtml::_('bootstrap.addTab', 'myTab', 'general', empty($this->item->id) ? JText::_('COM_SUBSCRIPTIONS_NEW_SUBSCRIPTION', true) : JText::_('COM_SUBSCRIPTIONS_EDIT_SUBSCRIPTION', $this->item->id, true)); ?>

Ich denke es sollte sein

JText::sprintf('COM_SUBSCRIPTIONS_EDIT_SUBSCRIPTION', $this->item->id, true)

anstatt

JText::_('COM_SUBSCRIPTIONS_EDIT_SUBSCRIPTION', $this->item->id, true)
2
Arcanyx

Ich habe meinem Administrator/component/com_/view/file den folgenden Code hinzugefügt:

/* tab memory */
jQuery(function($) {
  var json, tabsState;
  $('a[data-toggle="pill"], a[data-toggle="tab"]').on('shown', function(e) {
    var href, json, parentId, tabsState;

    tabsState = localStorage.getItem("tabs-state");
    json = JSON.parse(tabsState || "{}");
    parentId = $(e.target).parents("ul.nav.nav-pills, ul.nav.nav-tabs").attr("id");
    href = $(e.target).attr('href');
    json[parentId] = href;

    return localStorage.setItem("tabs-state", JSON.stringify(json));
  });

  tabsState = localStorage.getItem("tabs-state");
  json = JSON.parse(tabsState || "{}");

  $.each(json, function(containerId, href) {
    return $("#" + containerId + " a[href=" + href + "]").tab('show');
  });

  $("ul.nav.nav-pills, ul.nav.nav-tabs").each(function() {
    var $this = $(this);
    if (!json[$this.attr("id")]) {
      return $this.find("a[data-toggle=tab]:first, a[data-toggle=pill]:first").tab("show");
    }
  });
});

aus dieser Diskussion: https://stackoverflow.com/a/16984739/1729791 und es funktioniert für mich

1
iamrobert