Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


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
    Нет
  • OpenCart
    3.0
    2.3
    2.2
    2.1
    2.0
  • ocStore
    3.0
    2.3
    2.2
    2.1
  • OpenCart.Pro, ocShop
    Opencart.pro 2.3
    Opencart.pro 2.1
    OcShop 2.0.3.х
  • Обраещёние к серверу разрилитлика
    Нет
  • Сирая этона
    0

 

Link to comment
Share on other sites

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

Посивил и попропотому чтовал на Версия 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, зарилиило

Edited by oleksij
Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

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

 

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

 

 

Link to comment
Share on other sites

  • 2 weeks later...

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

Link to comment
Share on other sites


<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>

 

Link to comment
Share on other sites


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

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

:)

 

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

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

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

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

 

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

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

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

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

Link to comment
Share on other sites

  • 10 months later...

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

 

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

 

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

 

Спасипотому что.

Link to comment
Share on other sites


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

 

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

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

нет

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

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

  • +1 1
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.