Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

[Поддержка] Admin Language toggle - быстрая смена языка администратора


AlexDW
 Поделиться

Рекомендованные сообщения

Admin Language toggle - быстрая смена языка администратора


Admin Language toggle - быстрая смена языка администратора


Мод для быстрой смены текущего языка админки без захода в основные настройки

 

DEMO 3x

DEMO 2x

 

Особенности:
- быстрая смена языка администратора без захода в настройки
            с учетом прав пользователя на изменение настроек

 

- запрос подтверждения при смене языка, для исключения случайных нажатий и потери данных

- совместим с ocStore / OCSHOP (OpencartPro) / Opencart версий 2000-303x
- не создает дополнительных полей и таблиц в БД
- никакие файлы не заменяет, используется OCMOD


Установка 2x:
1. Загрузить файл ocmod.xml из папки 2x в Дополнения > Установщик дополнений
2. Обновить кеш модификаторов в Дополнения > Модификаторы (Менеджер дополнений)


Установка 3x:
1. Загрузить архив admin-lang-toggle-3x.ocmod.zip в Дополнения > Установщик дополнений
2. Обновить кеш модификаторов в Дополнения > Модификаторы (Менеджер дополнений)
3. Обновить кеш шаблона в Панель управления > Настройки разработчика

 

 

Другие дополнения:

-----------------------------

CartKeeper - хранение, просмотр и управление корзинами покупателей

AO Tooltips - стильные подсказки для характеристик и опций товаров

SearchOrder 2x - расширенный поиск, просмотр и экспорт заказов

OrderField - сортировка товаров в счете, дополнительные поля в заказах и многое другое


  • Добавил
  • Добавлено
    05.05.2020
  • Категория
  • Системные требования
  • Метод активации
    Без активации
  • Ioncube Loader
    Нет
  • ocStore
    3.0
    2.3
    2.2
    2.1
  • OpenCart.Pro, ocShop
    Opencart.pro 2.3
    Opencart.pro 2.1
    OcShop 2.0.3.х
  • Обращение к серверу разработчика
    Нет

 

Ссылка на комментарий
Поделиться на других сайтах

Интересный мод, а главное полезный, ну во всяком случае мне полезный

Поставил и попробовал на Версия ocStore 2.3.0.2.3

Но при попыке сменить язык, вот такое вижу


 

Прихований текст

 

SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data
OK
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<title>Доступ запрещен!</title>
<base href="https://rev-moda.palexa.net/admin/" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0" />
<script type="text/javascript" src="view/javascript/jquery/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="view/javascript/bootstrap/js/bootstrap.min.js"></script>
<link href="view/stylesheet/bootstrap.css" type="text/css" rel="stylesheet" />
<link href="view/javascript/revolution/font-awesome/css/font-awesome.min.css" type="text/css" rel="stylesheet" />
<script src="view/javascript/jquery/datetimepicker/moment.js" type="text/javascript"></script>
<script src="view/javascript/jquery/datetimepicker/locale/ru.js" type="text/javascript"></script>
<script src="view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js" type="text/javascript"></script>
<link href="view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css" type="text/css" rel="stylesheet" media="screen" />
<link type="text/css" href="view/stylesheet/stylesheet.css" rel="stylesheet" media="screen" />

        <link type="text/css" href="view/stylesheet/autocomplete.css" rel="stylesheet" media="screen" />
      

                <link type="text/css" href="view/stylesheet/revolution.css" rel="stylesheet" media="screen" />
            
<script src="view/javascript/common.js" type="text/javascript"></script>
</head>
<body>
<div id="container">
<header id="header" class="navbar navbar-static-top">
  <div class="navbar-header">
        <a type="button" id="button-menu" class="pull-left"><i class="fa fa-indent fa-lg"></i></a>
        <a href="https://rev-moda.palexa.net/admin/index.php?route=common/dashboard&amp;token=CWEt4hueY7bEYtZGcevL36qQpKSfrgqe" class="navbar-brand"><img src="view/image/logo.png" alt="ocStore" title="ocStore" /></a></div>
 
<script type="text/javascript"><!--
$(document).ready(function() {
    $('.clear-dropdown li, .clear-dropdown a').on('click', function(e) {
        e.stopPropagation();
    });
});

function clearOption(type, key) {
    var pvnm_size = $('.clear-dropdown').prev('a').children('span').html();
    var pvnm_type = type + '-' + key;

    $.ajax({
        url: 'index.php?route=extension/module/pvnm_storage_cleaner/clear' + type + '&token=' + getURLVar('token'),
        type: 'post',
        data: 'key=' + key,
        dataType: 'json',
        beforeSend: function() {
            $('.clear-dropdown').prev('a').children('span').html('<i class=\'fa fa-spinner\'></i>');
            $('#button-' + pvnm_type + ' span').html('<i class=\'fa fa-spinner\'></i>');
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        },
        success: function(json) {
            $('.clear-dropdown > .alert-success, .clear-dropdown > .alert-danger').remove();

            if (json['success']) {
                $('#button-' + pvnm_type).closest('li').addClass('bg-success');
                $('.clear-dropdown').append('<div class="alert alert-success" style="margin: 15px 20px 15px 20px; padding: 5px; font-size: 11px;"><i class="fa fa-check-circle"></i> ' + json['success'] + '<button type="button" class="close" data-dismiss="alert">&times;</button></div>');

                if (json['size']) {
                    $('.clear-dropdown').prev('a').children('span').html(json['size']['all']);
                    $('#button-' + pvnm_type + ' span').html(json['size'][pvnm_type]);
                }
            }

            if (json['error']) {
                $('.clear-dropdown').prev('a').children('span').html(pvnm_size);
                $('#button-' + pvnm_type).closest('li').addClass('bg-danger');
                $('.clear-dropdown').append('<div class="alert alert-danger" style="margin: 15px 20px 15px 20px; padding: 5px; font-size: 11px;"><i class="fa fa-exclamation-circle"></i> ' + json['error'] + '<button type="button" class="close" data-dismiss="alert">&times;</button></div>');
            }
        }
    });
}

function clearAll() {
    clearOption('cache', 'system');
    clearOption('cache', 'modification');
    clearOption('cache', 'image');
    clearOption('log', 'error');
    clearOption('log', 'modification');
}
//--></script>
            
  <ul class="nav pull-right">

        <li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown"><span class="label label-warning pull-left">5 MB</span><i class="fa fa-eraser fa-lg"></i></a>
      <ul class="dropdown-menu dropdown-menu-right clear-dropdown" style="width: 230px;">
        <li class="dropdown-header">Кэш</li>
        <li><a>Системный кэш<button onclick="clearOption('cache', 'system');" type="button" data-loading-text="<i class='fa fa-spinner'></i>" data-toggle="tooltip" title="Очистить" class="btn btn-warning btn-xs pull-right" id="button-cache-system"><span>2 KB</span> <i class="fa fa-eraser"></i></button></a></li>
        <li><a>Кэш модификаций<button onclick="clearOption('cache', 'modification');" type="button" data-loading-text="<i class='fa fa-spinner'></i>" data-toggle="tooltip" title="Очистить и обновить" class="btn btn-warning btn-xs pull-right" id="button-cache-modification"><span>5 MB</span> <i class="fa fa-eraser"></i></button></a></li>
        <li><a>Кэш изображений<button onclick="clearOption('cache', 'image');" type="button" data-loading-text="<i class='fa fa-spinner'></i>" data-toggle="tooltip" title="Очистить" class="btn btn-warning btn-xs pull-right" id="button-cache-image"><span>2 KB</span> <i class="fa fa-eraser"></i></button></a></li>
        <li class="divider"></li>
        <li class="dropdown-header">Логи</li>
        <li><a>Лог ошибок<button onclick="clearOption('log', 'error');" type="button" data-loading-text="<i class='fa fa-spinner'></i>" data-toggle="tooltip" title="Очистить" class="btn btn-warning btn-xs pull-right" id="button-log-error"><span>0 B</span> <i class="fa fa-eraser"></i></button></a></li>
        <li><a>Лог модификаций<button onclick="clearOption('log', 'modification');" type="button" data-loading-text="<i class='fa fa-spinner'></i>" data-toggle="tooltip" title="Очистить" class="btn btn-warning btn-xs pull-right" id="button-log-modification"><span>0 B</span> <i class="fa fa-eraser"></i></button></a></li>
        <li class="divider"></li>
        <li><a><button onclick="clearAll();" type="button" data-loading-text="<i class='fa fa-spinner'></i>" class="btn btn-warning btn-sm btn-block" id="button-clear-all">Очистить все<span class="pull-right"><i class="fa fa-eraser"></i></span></button></a></li>
      </ul>
    </li>
                

<!-- AdminLang -->
<style type="text/css">
.admlang_act{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.42857;color:#333;white-space:nowrap;outline:0;outline-offset:0;cursor:pointer}.admlang_header{color:#fff;background-color:#3ea9e3}.admlang>li>a{outline:0;outline-offset:0}
</style>
    <li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown">
                                                        <img src="language/ru-ru/ru-ru.png" />
                        </a>
      <ul class="dropdown-menu admlang">
        <li class="dropdown-header admlang_header">Язык администратора</li>
                            <li><a href="#" name="uk-ua"><img src="language/uk-ua/uk-ua.png" /> Українська</a></li>
                                                <li class="admlang_act"><img src="language/ru-ru/ru-ru.png" /> Русский</li>
                          </ul>
    </li>
<script type="text/javascript"><!--
$('.admlang > li > a').on('click', function(e) {
    e.preventDefault();
    e.stopPropagation();
    var admlang = this.name;
    $('#admlang .eout').remove();
var htm ='';
htm += '<div id="admlang" class="modal" role="dialog" aria-labelledby="dataConfirmLabel" aria-hidden="true">';
htm += '<div class="modal-dialog"><div class="modal-content">';
htm += '    <div class="modal-header">Язык администратора';
htm += '        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>';
htm += '    </div>';
htm += '    <div class="modal-body">';
htm += '<div class="row">';
htm += '<div class="col-sm-12">';
htm += '<p>Обратите внимание! При смене языка текущая страница будет перезагружена, а все несохраненные данные утеряны</p>';
htm += '</div>';
htm += '</div>';
htm += '<div class="col-sm-12" id="eout"></div>';
htm += '<div class="row" style="margin-top:10px;">';
htm += '<div class="col-sm-12 ck_buttons">';
htm += '    <div class="pull-left"><button class="btn btn-primary" id="adwchnLang">Сменить язык</button></div><div class="pull-right"><button class="btn btn-default" data-dismiss="modal" aria-hidden="true">Отмена</button></div>';
htm += '</div>';
htm += '</div>';
htm += '    </div>';
htm += '</div></div>';
htm += '</div>';
if (!$('#admlang').length > 0) {
    $('body').append(htm);
    $('#admlang').modal({show:true, keyboard:true, backdrop:true});

    $('#adwchnLang').on('click', function(e) {
        e.preventDefault();
        $('#admlang .alert-danger').remove();
        $('#admlang .eout').remove();
        $.ajax({
            url : 'index.php?route=common/column_left/adw_adminlang&token=CWEt4hueY7bEYtZGcevL36qQpKSfrgqe' + '&admlang=' + encodeURIComponent(admlang),
            dataType: 'json',
            beforeSend: function() {
                $('#adwchnLang').prop('disabled', true);
                $('#admlang .eout').remove();
            },
            complete: function() {
                $('#adwchnLang').prop('disabled', false);
            },
            success : function (json) {
                $('#admlang .eout').remove();
                if (json['nop']) {
                    $('#adwchnLang').remove();
                    html = '<div class="alert alert-danger">' + json['nop'] + '</div>';
                    $('#eout').append(html).hide().fadeIn(200);
                }
                if (json['success']) {
                $('#admlang').remove();
                document.location.reload();
                }
            },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
        });
    });
}
    $("#admlang").on('hidden.bs.modal', function(){
        $('#admlang').remove();
    });
});
//--></script>
<!-- AdminLang -->
            
    <li class="dropdown"><a class="dropdown-toggle" data-toggle="dropdown"><span class="label label-danger pull-left">2</span> <i class="fa fa-bell fa-lg"></i

 

 

Наверно с чем то конфликтует, поставил на голую CMS, заработало

Изменено пользователем oleksij
Ссылка на комментарий
Поделиться на других сайтах

проверить и поставить права доступа на common/column_left

если не поможет - смотреть ответ сервера и искать причину по нему

Ссылка на комментарий
Поделиться на других сайтах

спасибо, все права есть, на "голой" CMS всё работает,

Отключил все модификаторы, та же ошибка

Стоит шаблон Revolution, может там загвоздка

Будет возможность, я это проверю

 

Ещё раз спасибо за такую модификацию

 

 

Ссылка на комментарий
Поделиться на других сайтах

  • 2 недели спустя...

Полезный модуль! Автору спасибо.
Отлично работает на шаблоне Revolution Версия ocStore 2.3.0.2.3
От себя: Добавьте украинский язык, смотрю по коду это не тяжело. Но не все могут самостоятельно допилить.

Ссылка на комментарий
Поделиться на других сайтах


<file path="admin/language/uk*/common/header.php">
		<operation error="skip">
		<search><![CDATA[
<?php
			]]></search>
			<add position="after" ><![CDATA[
//MaintenanceModeWarn
$_['text_admlang'] 			= 'Мова адміністратора';
$_['text_admlang_warning']	= 'Зверніть увагу! При зміні мови поточна сторінка буде перезавантажена, а усі дані загублені';
$_['admlang_change']		= 'Змінити мову';
$_['admlang_cancel']		= 'Відміна';
//MaintenanceModeWarn
			]]></add>
		</operation>
	</file>

 

Ссылка на комментарий
Поделиться на других сайтах


5 часов назад, Kostya150 сказал:

Полезный модуль! Автору спасибо.

:)

 

5 часов назад, Kostya150 сказал:

Отлично работает на шаблоне Revolution Версия ocStore 2.3.0.2.3

модуль для админки никак не зависит от используемого шаблона

если конечно сам шаблон админку не курочит

 

5 часов назад, Kostya150 сказал:

От себя: Добавьте украинский язык, смотрю по коду это не тяжело. Но не все могут самостоятельно допилить.

в моих модулях "из коробки" два языка - русский и английский

любой другой можно добавить самостоятельно по аналогии - языковыми файлами или правкой xml, в зависимости от реализации модуля

Ссылка на комментарий
Поделиться на других сайтах

  • 10 месяцев спустя...

Добрый вечер. 

 

Модуль поддерживает разные языки для разных администраторов?

 

Допустим, одновременно онлайн 2 администратора, модуль поддерживает разные языки для разных администраторов?
И сохраняется ли выбор после перезахода в админку или надо постоянно менять. 

 

Спасибо.

Ссылка на комментарий
Поделиться на других сайтах


Здравствуйте

 

40 минут назад, Zaurius сказал:

Допустим, одновременно онлайн 2 администратора, модуль поддерживает разные языки для разных администраторов?

нет

модуль по сути является выносом смены языка из стандартных настроек в виде виджета

чтобы при переключении языка в них не лезть каждый раз

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.