Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


AlexDW

Recommended Posts

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 weeks later...

Полезный модуль! Автору спасибо.
Отлично работает на шаблоне 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 months later...

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

 

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

 

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

 

Спасибо.

Надіслати
Поділитися на інших сайтах


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

 

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

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

нет

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

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

  • +1 1
Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.