Перейти к содержимому


Фотография
- - - - -

Редирект


Лучший Ответ Cheren-dow , 20 March 2015 - 00:38

nikolia, попробуйте сделать следующее

Содержимое шаблона элемента:

сайт\media\zoo\elements\itemremove\tmpl\itemremove.php

Замените полностью на:

<?php
/*************************
 * @package   ZOO Component
 * @file      itemremove.php
 * @version   3.3.0 March 2015
 * @author    Attavus M.D. http://www.raslab.org
 * @copyright Copyright (C) 2013 R.A.S.Lab[.org]
 * @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
 *******************************************************************/

// no direct access
defined('_JEXEC') or die('Restricted access');

$removeLink = array(
    'controller'    => 'submission',
    'submission_id' => $submission_id,
    'task'          => 'remove',
    'item_id'       => $item_id,
    'Itemid'        => $this->app->menu->getActive()->id,
    'currentUri'    => JUri::current(),
);
?>

<?php if ($this->canAccess()) : ?>
    <a href="javascript: if(confirm('Are you sure you want to remove this item?')) { window.location='<?php echo $this->app->link($removeLink); ?>';}"
       title="<?php echo JText::_('Remove Item'); ?>" class="item-icon remove-item">
        <img src="<?php echo JRoute::_($this->app->path->url('assets:images/delete.png')); ?>" width="16" height="16"
             alt="<?php echo JText::_('Remove Item'); ?>"/>
    </a>
<?php endif; ?>

Далее откройте файл событий подач:

сайт\media\zoo\applications\jbuniversal\framework\events\jbevent.submission.php

Найдите метод:

/**
 * On submission deleted
 * @param AppEvent $event
 */
public static function deleted($event)
{
}

И замените его на:

/**
 * On submission deleted
 * @param AppEvent $event
 */
public static function deleted($event)
{
    $app = self::app();
    $currentUri = $app->jbrequest->get('currentUri');

    if (isset($currentUri) && !empty($currentUri)) {
        // set redirect message
        $msg  = JText::_('Submission Deleted');
        $jApp = JFactory::getApplication();

        $jApp->redirect(JRoute::_($currentUri, false), $msg);
    }
}

Должно работать как часы. ;)

Перейти к сообщению


  • Закрытая тема Тема закрыта
Сообщений в теме: 5

#1 nikolia

nikolia

Отправлено 16 March 2015 - 12:21

Помогите справиться с проблемой, в продолжении вот этой темы http://forum.jbzoo.c...-knopka-udalit/

Все работает отлично, но после удаления переходит в мои подачи, а нужно ,что бы оставалось на этой же странице с применённым фильтром. (Только хак, через событие не получается.)

Как и где нужно заменить код?


  • 0

#2 Cheren-dow

Cheren-dow

Отправлено 17 March 2015 - 10:51

nikolia, удаление материала происходит в файле контролера:
 

сайт\components\com_zoo\controllers\submission.php

В методе remove. Вместо существующего редиректа можете установить свой. Получить url с которого пришел пользователь можно через глобальный массив $_SERVER['HTTP_REFERER']. Как вариант можно к ссылке из элемента добавить новый параметр - текущая страница. И в методе удаления проверять этот параметр и перенаправлять пользователя после удаления.

 

Что бы не вносить правки в контроллер можно использовать события, файл:

сайт\media\zoo\applications\jbuniversal\framework\events\jbevent.submission.php

метод deleted


  • 0
Изображение
 

#3 nikolia

nikolia

Отправлено 17 March 2015 - 14:13

Вот блин все как непонятно! Я не совсем понимаю в коде, только общие черты. То, что в com_zoo\controllers\submission.php сделать изменения я знаю, но что и где заменить так и не могу вкурить :(

Если можно напишите кусок кода и куда (заместо чего) вставить. (blush)

В контроллере три места remove где менять?

// remove post data from session
				$this->app->system->application->setUserState($this->session_form_key, null);

public function remove() {

        // init vars
        $msg = null;

        try {

            $this->_checkConfig();

            if (!$this->submission->isInTrustedMode()) {
                throw new AppControllerException('The submission is not in Trusted Mode.');
            }

			// get item table and delete item
			$table = $this->app->table->item;

            $item = $table->get($this->item_id);

            // is current user the item owner and does the user have sufficient user rights
            if ($item->id && (!$item->canAccess($this->user) || $item->created_by != $this->user->id)) {
                throw new AppControllerException('You are not allowed to make changes to this item.');
            }

            $table->delete($item);

			// set redirect message
			$msg = JText::_('Объект успешно удалён!');

			// trigger deleted event
			$this->app->event->dispatcher->notify($this->app->event->create($item, 'submission:deleted'));

		} catch (AppException $e) {

            // raise warning on exception
            $this->app->error->raiseWarning(0, JText::_('There was an error deleting your submission, please try again later.'));

            // add exception details, for super administrators only
            if ($this->user->superadmin) {
                $this->app->error->raiseWarning(0, (string) JText::_($e));
            }

		}

        $this->setRedirect(JRoute::_($this->app->route->mysubmissions($this->submission), false), $msg);

    }

            // remove item_id (menu item may not have an item_id)
            $this->item_id = null;

Сообщение отредактировал nikolia: 17 March 2015 - 14:39

  • 0

#4 nikolia

nikolia

Отправлено 19 March 2015 - 23:47

Помогите справиться :(


  • 0

#5 Cheren-dow

Cheren-dow

Отправлено 20 March 2015 - 00:38   Лучший Ответ

nikolia, попробуйте сделать следующее

Содержимое шаблона элемента:

сайт\media\zoo\elements\itemremove\tmpl\itemremove.php

Замените полностью на:

<?php
/*************************
 * @package   ZOO Component
 * @file      itemremove.php
 * @version   3.3.0 March 2015
 * @author    Attavus M.D. http://www.raslab.org
 * @copyright Copyright (C) 2013 R.A.S.Lab[.org]
 * @license   http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
 *******************************************************************/

// no direct access
defined('_JEXEC') or die('Restricted access');

$removeLink = array(
    'controller'    => 'submission',
    'submission_id' => $submission_id,
    'task'          => 'remove',
    'item_id'       => $item_id,
    'Itemid'        => $this->app->menu->getActive()->id,
    'currentUri'    => JUri::current(),
);
?>

<?php if ($this->canAccess()) : ?>
    <a href="javascript: if(confirm('Are you sure you want to remove this item?')) { window.location='<?php echo $this->app->link($removeLink); ?>';}"
       title="<?php echo JText::_('Remove Item'); ?>" class="item-icon remove-item">
        <img src="<?php echo JRoute::_($this->app->path->url('assets:images/delete.png')); ?>" width="16" height="16"
             alt="<?php echo JText::_('Remove Item'); ?>"/>
    </a>
<?php endif; ?>

Далее откройте файл событий подач:

сайт\media\zoo\applications\jbuniversal\framework\events\jbevent.submission.php

Найдите метод:

/**
 * On submission deleted
 * @param AppEvent $event
 */
public static function deleted($event)
{
}

И замените его на:

/**
 * On submission deleted
 * @param AppEvent $event
 */
public static function deleted($event)
{
    $app = self::app();
    $currentUri = $app->jbrequest->get('currentUri');

    if (isset($currentUri) && !empty($currentUri)) {
        // set redirect message
        $msg  = JText::_('Submission Deleted');
        $jApp = JFactory::getApplication();

        $jApp->redirect(JRoute::_($currentUri, false), $msg);
    }
}

Должно работать как часы. ;)


  • 1
Изображение
 

#6 nikolia

nikolia

Отправлено 20 March 2015 - 13:48

Большое человеческое спасибо!!! Дествительно все работает, как часы!!! (inlove)


  • 0




Click to return to top of page in style!