it-swarm.com.de

Die Meldung "Artikel erfolgreich gespeichert" wird nach x Sekunden ausgeblendet

Angenommen, ich bearbeite und speichere einen Artikel. Die Meldung "Artikel erfolgreich gespeichert" erscheint im system-message-container div und bleibt dort. Nehmen wir an, ich bearbeite gerade etwas und werde von etwas anderem unterbrochen. Nach einer Weile komme ich auf meinen Artikel zurück. Ich sehe die Meldung "Artikel erfolgreich gespeichert" und klicke auf Schließen. Danach stellte ich fest, dass die Nachricht tatsächlich seit dem ersten Speichern vorhanden war und dass ich die zweite Bearbeitung nicht gespeichert habe.

Ich weiß, dass ich mehr Aufmerksamkeit schenken könnte (übrigens nicht nur auf Web-Bearbeitung), sondern auch, dass die Meldung "Artikel erfolgreich gespeichert" nach 20 Sekunden ausgeblendet wird.

PS: * Sie werden mir sagen, dass ich auf Speichern und Schließen klicken kann, wenn ich nicht sicher bin, aber ich habe mich in einer Situation wiedergefunden, in der ich den Artikel durcheinander gebracht habe, als ich zurückkam, und weil ich diese Nachricht gesehen habe, sagte ich mir: "OK kein Problem, schließe einfach den Artikel und öffne ihn erneut ohne zu speichern und du wirst die Version zurückbekommen, die du hattetest, als du zurückkamst, aber ... ".

Bearbeiten: Inhalt von administrator\templates\isis\html\layouts\joomla\system\message.php:

<?php
/**
 * @package     Joomla.Administrator
 * @subpackage  Template.Isis
 *
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */

defined('_JEXEC') or die;

$msgList = $displayData['msgList'];

$alert = array('error' => 'alert-error', 'warning' => '', 'notice' => 'alert-info', 'message' => 'alert-success');
?>
<div id="system-message-container">
    <?php if (is_array($msgList) && $msgList) : ?>
        <button type="button" class="close" data-dismiss="alert">&times;</button>
        <?php foreach ($msgList as $type => $msgs) : ?>
            <div class="alert <?php echo $alert[$type]; ?>">
                <h4 class="alert-heading"><?php echo JText::_($type); ?></h4>
                <?php if ($msgs) : ?>
                    <?php foreach ($msgs as $msg) : ?>
                        <p><?php echo $msg; ?></p>
                    <?php endforeach; ?>
                <?php endif; ?>
            </div>
        <?php endforeach; ?>
    <?php endif; ?>
</div>

inhalt von administrator\templates\isis\js\template.js:

/**
 * @package     Joomla.Administrator
 * @subpackage  Templates.isis
 * @copyright   Copyright (C) 2005 - 2014 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 * @since       3.0
 */

(function($)
{
    $(document).ready(function()
    {
        $('*[rel=tooltip]').tooltip();

        // Turn radios into btn-group
        $('.radio.btn-group label').addClass('btn');
        $('.btn-group label:not(.active)').click(function()
        {
            var label = $(this);
            var input = $('#' + label.attr('for'));

            if (!input.prop('checked')) {
                label.closest('.btn-group').find('label').removeClass('active btn-success btn-danger btn-primary');
                if (input.val() == '') {
                    label.addClass('active btn-primary');
                } else if (input.val() == 0) {
                    label.addClass('active btn-danger');
                } else {
                    label.addClass('active btn-success');
                }
                input.prop('checked', true);
            }
        });
        $('.btn-group input[checked=checked]').each(function()
        {
            if ($(this).val() == '') {
                $('label[for=' + $(this).attr('id') + ']').addClass('active btn-primary');
            } else if ($(this).val() == 0) {
                $('label[for=' + $(this).attr('id') + ']').addClass('active btn-danger');
            } else {
                $('label[for=' + $(this).attr('id') + ']').addClass('active btn-success');
            }
        });
        // add color classes to chosen field based on value
        $('select[class^="chzn-color"], select[class*=" chzn-color"]').on('liszt:ready', function(){
            var select = $(this);
            var cls = this.className.replace(/^.(chzn-color[a-z0-9-_]*)$.*/, '\1');
            var container = select.next('.chzn-container').find('.chzn-single');
            container.addClass(cls).attr('rel', 'value_' + select.val());
            select.on('change click', function()
            {
                container.attr('rel', 'value_' + select.val());
            });

        });
    });
})(jQuery);
3
MagTun

Sie können dazu die folgende jQuery verwenden:

setTimeout(function() {
    $('#system-message-container').fadeOut('fast');
}, 5000);

5000 beträgt 5 Sekunden, daher können Sie diesen Wert nach Belieben ändern

Wo füge ich diesen Code hinzu?

Option 1: Dies ist eine langwierige Methode. Sie können ein kleines Plugin erstellen, das diesen jQuery-Code aufruft.

Option 2: Fügen Sie einfach den obigen Code zur folgenden Datei hinzu:

administrator/templates/isis/js/template.js

Bitte beachten Sie, dass Option 2 als Core-Hack angesehen wird. Wenn Sie also ein Joomla-Update installieren und einige Änderungen an der Admin-Vorlage vorgenommen haben, wird diese Änderung überschrieben.

Update >> Option 3:

Ich habe gerade bemerkt, dass Sie dies auch zur Vorlagenüberschreibung für Systemnachrichten hinzufügen können. Öffnen Sie daher die folgende Datei in einem Texteditor:

administrator/templates/isis/html/message.php

Sie sollten in Zeile 14 sehen, $buffer = null;. Fügen Sie direkt darunter Folgendes hinzu:

$buffer .= "<script>
                setTimeout(function() {
                    jQuery('#system-message-container').fadeOut('fast');
                }, 5000);
            </script>";

Verwenden Sie dies nur für Erfolg Nachrichten:

$buffer .= "<script>    
                setTimeout(function() {
                    jQuery('.alert-success').parents('#system-message-container').fadeOut('fast');
                }, 5000);
            </script>";

Hoffe das hilft

5
Lodder

Das funktioniert aber nur einmal prima. Wenn eine zweite Meldung angezeigt wird, wird das Skript nicht ausgelöst.

Wenn Sie dies verwenden, funktioniert es jedes Mal um eine Erfolgswarnung auszublenden:

setInterval(function() {
    jQuery('.alert-success').parents('#system-message-container').fadeOut('fast');
}, 5000);

Ich benutze es im Frontend, indem ich dies hinzufüge:

$buffer .= "<script>    
            setInterval(function() {
              jQuery('.alert-success').parents('#system-message-container').fadeOut('fast');
            }, 5000);
            console.log('timout triggered');
            </script>";

nach Zeile 14 in der Datei messages.php (ursprünglich in templates/beez3/html/layouts/joomla/system zu finden) und in den Ordner template/html einfügen.

1
TLWebdesignNL