it-swarm-es.tech

¿Seguro que quieres salir de esta página? Ventana emergente del navegador para evitar el cierre accidental de la pestaña durante la edición

¿Hay alguna manera de forzar mi navegador (Chrome) cuando edito (JCE) un artículo en la interfaz para mostrar un mensaje que impide el cierre o la redirección accidental de la pestaña?

A menudo cometo ese error al cerrar una pestaña y perder todo mi trabajo.

En algún momento, al hacer clic hacia atrás, puedo recuperar mi trabajo, pero a menudo no funciona.

Tenga en cuenta que soy consciente de que debo tener cuidado al hacer clic y que debo guardar a menudo.

EDITAR:

function getJavaScript($message) {


    $javascript .= 'if(window.addEventListener){ // Mozilla, Netscape, Firefox' . "\n";
    $javascript .= '    window.addEventListener("load", function(){ alert("' . $message . '");}, false);' . "\n";
    $javascript .= '} else { // IE' . "\n";
    $javascript .= '    window.attachEvent("onload", function(){ alert("' . $message . '");});' . "\n";
    $javascript .= '}';
    return $javascript;
}

$doc = JFactory::getDocument();
$doc->addScriptDeclaration( getJavaScript( 'Make sure you have saved your JCE content.' ) );

EDITAR 2: C: Mis plantillas\protostar\html\com_content\form\edit.php archivo

<?php
/**
 * @package     Joomla.Site
 * @subpackage  com_content
 *
 * @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;

JHtml::_('behavior.tabstate');
JHtml::_('behavior.keepalive');
JHtml::_('behavior.calendar');
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
JHtml::_('behavior.modal', 'a.modal_jform_contenthistory');

// Create shortcut to parameters.
$params = $this->state->get('params');
//$images = json_decode($this->item->images);
//$urls = json_decode($this->item->urls);

// This checks if the editor config options have ever been saved. If they haven't they will fall back to the original settings.
$editoroptions = isset($params->show_publishing_options);
if (!$editoroptions)
{
    $params->show_urls_images_frontend = '0';
}
/// lodder code pour pop up front end
$js = '
    var needToConfirm = true;

    window.onbeforeunload = confirmExit;
    function confirmExit() {
        if (needToConfirm) {
            return "Make sure you have saved your JCE content";
        }
    }    
';


/// end lodder code pour pop up front end


?>

<script type="text/javascript">
    Joomla.submitbutton = function(task)
    {
        if (task == 'article.cancel' || document.formvalidator.isValid(document.getElementById('adminForm')))
        {
            <?php echo $this->form->getField('articletext')->save(); ?>
            Joomla.submitform(task);
        }
    }
</script>
<div class="edit item-page<?php echo $this->pageclass_sfx; ?>">
    <?php if ($params->get('show_page_heading', 1)) : ?>
    <div class="page-header">
        <h1>
            <?php echo $this->escape($params->get('page_heading')); ?>
        </h1>
    </div>
    <?php endif; ?>

    <form action="<?php echo JRoute::_('index.php?option=com_content&a_id='.(int) $this->item->id); ?>" method="post" name="adminForm" id="adminForm" class="form-validate form-vertical">
        <div class="btn-toolbar">
            <div class="btn-group">
                <button type="button" class="btn btn-primary" onclick="Joomla.submitbutton('article.save')">
                    <span class="icon-ok"></span>&#160;<?php echo JText::_('JSAVE') ?>
                </button>
            </div>
            <div class="btn-group">
                <button type="button" class="btn" onclick="Joomla.submitbutton('article.cancel')">
                    <span class="icon-cancel"></span>&#160;<?php echo JText::_('JCANCEL') ?>
                </button>
            </div>
            <?php if ($params->get('save_history', 0)) : ?>
            <div class="btn-group">
                <?php echo $this->form->getInput('contenthistory'); ?>
            </div>
            <?php endif; ?>
        </div>
        <fieldset>
            <ul class="nav nav-tabs">
                <li class="active"><a href="#editor" data-toggle="tab"><?php echo JText::_('COM_CONTENT_ARTICLE_CONTENT') ?></a></li>
                <?php if ($params->get('show_urls_images_frontend') ) : ?>
                <li><a href="#images" data-toggle="tab"><?php echo JText::_('COM_CONTENT_IMAGES_AND_URLS') ?></a></li>
                <?php endif; ?>
                <li><a href="#publishing" data-toggle="tab"><?php echo JText::_('COM_CONTENT_PUBLISHING') ?></a></li>
                <li><a href="#language" data-toggle="tab"><?php echo JText::_('JFIELD_LANGUAGE_LABEL') ?></a></li>
                <li><a href="#metadata" data-toggle="tab"><?php echo JText::_('COM_CONTENT_METADATA') ?></a></li>
            </ul>

            <div class="tab-content">
                <div class="tab-pane active" id="editor">
                    <?php echo $this->form->renderField('title'); ?>

                    <?php if (is_null($this->item->id)) : ?>
                        <?php echo $this->form->renderField('alias'); ?>
                    <?php endif; ?>

                    <?php echo $this->form->getInput('articletext'); ?>
                </div>
                <?php if ($params->get('show_urls_images_frontend')): ?>
                <div class="tab-pane" id="images">
                    <?php echo $this->form->renderField('image_intro', 'images'); ?>
                    <?php echo $this->form->renderField('image_intro_alt', 'images'); ?>
                    <?php echo $this->form->renderField('image_intro_caption', 'images'); ?>
                    <?php echo $this->form->renderField('float_intro', 'images'); ?>
                    <?php echo $this->form->renderField('image_fulltext', 'images'); ?>
                    <?php echo $this->form->renderField('image_fulltext_alt', 'images'); ?>
                    <?php echo $this->form->renderField('image_fulltext_caption', 'images'); ?>
                    <?php echo $this->form->renderField('float_fulltext', 'images'); ?>
                    <?php echo $this->form->renderField('urla', 'urls'); ?>
                    <?php echo $this->form->renderField('urlatext', 'urls'); ?>
                    <div class="control-group">
                        <div class="controls">
                            <?php echo $this->form->getInput('targeta', 'urls'); ?>
                        </div>
                    </div>
                    <?php echo $this->form->renderField('urlb', 'urls'); ?>
                    <?php echo $this->form->renderField('urlbtext', 'urls'); ?>
                    <div class="control-group">
                        <div class="controls">
                            <?php echo $this->form->getInput('targetb', 'urls'); ?>
                        </div>
                    </div>
                    <?php echo $this->form->renderField('urlc', 'urls'); ?>
                    <?php echo $this->form->renderField('urlctext', 'urls'); ?>
                    <div class="control-group">
                        <div class="controls">
                            <?php echo $this->form->getInput('targetc', 'urls'); ?>
                        </div>
                    </div>
                </div>
                <?php endif; ?>
                <div class="tab-pane" id="publishing">
                    <?php echo $this->form->renderField('catid'); ?>
                    <?php echo $this->form->renderField('tags'); ?>
                    <?php if ($params->get('save_history', 0)) : ?>
                        <?php echo $this->form->renderField('version_note'); ?>
                    <?php endif; ?>
                    <?php echo $this->form->renderField('created_by_alias'); ?>
                    <?php if ($this->item->params->get('access-change')) : ?>
                        <?php echo $this->form->renderField('state'); ?>
                        <?php echo $this->form->renderField('featured'); ?>
                        <?php echo $this->form->renderField('publish_up'); ?>
                        <?php echo $this->form->renderField('publish_down'); ?>
                    <?php endif; ?>
                    <?php echo $this->form->renderField('access'); ?>
                    <?php if (is_null($this->item->id)):?>
                        <div class="control-group">
                            <div class="control-label">
                            </div>
                            <div class="controls">
                                <?php echo JText::_('COM_CONTENT_ORDERING'); ?>
                            </div>
                        </div>
                    <?php endif; ?>
                </div>
                <div class="tab-pane" id="language">
                    <?php echo $this->form->renderField('language'); ?>
                </div>
                <div class="tab-pane" id="metadata">
                    <?php echo $this->form->renderField('metadesc'); ?>
                    <?php echo $this->form->renderField('metakey'); ?>

                    <input type="hidden" name="task" value="" />
                    <input type="hidden" name="return" value="<?php echo $this->return_page; ?>" />
                    <?php if ($this->params->get('enable_category', 0) == 1) :?>
                    <input type="hidden" name="jform[catid]" value="<?php echo $this->params->get('catid', 1); ?>" />
                    <?php endif; ?>
                </div>
            </div>
            <?php echo JHtml::_('form.token'); ?>
        </fieldset>
    </form>
</div>
2
JinSnow

Puede usar el siguiente Javascript que mostrará un cuadro de alerta que le preguntará si desea abandonar la página o permanecer en ella cuando cierre una pestaña del navegador.

<script>
    window.onbeforeunload = function() {
        return 'Make sure you have saved your JCE content';
    }
</script>

Si se pregunta dónde agregar su código, puede:

  1. Agréguelo a su archivo de plantilla admin index.php, sin embargo, este es un truco central para cualquier actualización de plantilla que anulará este cambio.
  2. Puede crear un pequeño Plugin que ejecuta este código.
  3. Cree un Anulación de plantilla para la vista com_content e inyecte el código anterior en la cabeza utilizando la función addScriptDeclaration() de Joomla.

Actualizar:

$js = '
    var needToConfirm = true;

    window.onbeforeunload = confirmExit;
    function confirmExit() {
        if (needToConfirm) {
            return "Make sure you have saved your JCE content";
        }
    }    
';
$doc = JFactory::getDocument();
$doc->addScriptDeclaration($js);
6
Lodder

Mi idea sería agregar un script js con un módulo llamado Jumi, establecer en qué páginas aparecer y los permisos para limitarlo solo a editores o administradores. http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-content/102

0
Eva Farkasne