cama_language_editor 1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
 - data/MIT-LICENSE +20 -0
 - data/Rakefile +37 -0
 - data/app/assets/javascripts/plugins/cama_language_editor/admin.js +43 -0
 - data/app/assets/stylesheets/plugins/cama_language_editor/admin.css.scss +80 -0
 - data/app/controllers/plugins/cama_language_editor/admin_controller.rb +7 -0
 - data/app/helpers/plugins/cama_language_editor/main_helper.rb +74 -0
 - data/app/views/plugins/cama_language_editor/admin/index.html.erb +53 -0
 - data/config/camaleon_plugin.json +18 -0
 - data/config/initializers/custom_models.rb +3 -0
 - data/config/locales/en.yml +192 -0
 - data/config/locales/es.yml +175 -0
 - data/config/routes.rb +18 -0
 - data/lib/cama_language_editor/engine.rb +4 -0
 - data/lib/cama_language_editor/version.rb +3 -0
 - data/lib/cama_language_editor.rb +4 -0
 - data/lib/tasks/cama_language_editor_tasks.rake +4 -0
 - data/test/cama_language_editor_test.rb +7 -0
 - data/test/dummy/README.rdoc +28 -0
 - data/test/dummy/Rakefile +6 -0
 - data/test/dummy/app/assets/javascripts/application.js +13 -0
 - data/test/dummy/app/assets/stylesheets/application.css +15 -0
 - data/test/dummy/app/controllers/application_controller.rb +5 -0
 - data/test/dummy/app/helpers/application_helper.rb +2 -0
 - data/test/dummy/app/views/layouts/application.html.erb +14 -0
 - data/test/dummy/bin/bundle +3 -0
 - data/test/dummy/bin/rails +4 -0
 - data/test/dummy/bin/rake +4 -0
 - data/test/dummy/bin/setup +29 -0
 - data/test/dummy/config/application.rb +26 -0
 - data/test/dummy/config/boot.rb +5 -0
 - data/test/dummy/config/database.yml +25 -0
 - data/test/dummy/config/environment.rb +5 -0
 - data/test/dummy/config/environments/development.rb +41 -0
 - data/test/dummy/config/environments/production.rb +79 -0
 - data/test/dummy/config/environments/test.rb +42 -0
 - data/test/dummy/config/initializers/assets.rb +11 -0
 - data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
 - data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
 - data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
 - data/test/dummy/config/initializers/inflections.rb +16 -0
 - data/test/dummy/config/initializers/mime_types.rb +4 -0
 - data/test/dummy/config/initializers/session_store.rb +3 -0
 - data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
 - data/test/dummy/config/locales/en.yml +23 -0
 - data/test/dummy/config/routes.rb +56 -0
 - data/test/dummy/config/secrets.yml +22 -0
 - data/test/dummy/config.ru +4 -0
 - data/test/dummy/public/404.html +67 -0
 - data/test/dummy/public/422.html +67 -0
 - data/test/dummy/public/500.html +66 -0
 - data/test/dummy/public/favicon.ico +0 -0
 - data/test/integration/navigation_test.rb +8 -0
 - data/test/test_helper.rb +20 -0
 - metadata +165 -0
 
    
        checksums.yaml
    ADDED
    
    | 
         @@ -0,0 +1,7 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            ---
         
     | 
| 
      
 2 
     | 
    
         
            +
            SHA1:
         
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 1d6f38af1223fbad9a63c215a146054fe2e65752
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: a4e41d95f7bef0f0aa542d6d8d2c2eea01712e44
         
     | 
| 
      
 5 
     | 
    
         
            +
            SHA512:
         
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 19e5a62f192ad6c507493a3fbebd8f0269f0ab81d36f426711f7e3cd54cc3fcdb81641d68fb05573b2de7bf605ff31f42bbdea5dc7488925e2ea4ee1272303ab
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 82505819b8cc7ef261b120137f0300d3a28cfa7e763901b78e19bb1b9bc63ea989f29162ffe0866f8b0b98514d282ae5029f8583c7f196e529e12e7f4a3e05b8
         
     | 
    
        data/MIT-LICENSE
    ADDED
    
    | 
         @@ -0,0 +1,20 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Copyright 2016 Owen Peredo
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
      
 4 
     | 
    
         
            +
            a copy of this software and associated documentation files (the
         
     | 
| 
      
 5 
     | 
    
         
            +
            "Software"), to deal in the Software without restriction, including
         
     | 
| 
      
 6 
     | 
    
         
            +
            without limitation the rights to use, copy, modify, merge, publish,
         
     | 
| 
      
 7 
     | 
    
         
            +
            distribute, sublicense, and/or sell copies of the Software, and to
         
     | 
| 
      
 8 
     | 
    
         
            +
            permit persons to whom the Software is furnished to do so, subject to
         
     | 
| 
      
 9 
     | 
    
         
            +
            the following conditions:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            The above copyright notice and this permission notice shall be
         
     | 
| 
      
 12 
     | 
    
         
            +
            included in all copies or substantial portions of the Software.
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
         
     | 
| 
      
 15 
     | 
    
         
            +
            EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
         
     | 
| 
      
 16 
     | 
    
         
            +
            MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
         
     | 
| 
      
 17 
     | 
    
         
            +
            NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
         
     | 
| 
      
 18 
     | 
    
         
            +
            LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
         
     | 
| 
      
 19 
     | 
    
         
            +
            OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
         
     | 
| 
      
 20 
     | 
    
         
            +
            WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            begin
         
     | 
| 
      
 2 
     | 
    
         
            +
              require 'bundler/setup'
         
     | 
| 
      
 3 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 4 
     | 
    
         
            +
              puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
         
     | 
| 
      
 5 
     | 
    
         
            +
            end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            require 'rdoc/task'
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            RDoc::Task.new(:rdoc) do |rdoc|
         
     | 
| 
      
 10 
     | 
    
         
            +
              rdoc.rdoc_dir = 'rdoc'
         
     | 
| 
      
 11 
     | 
    
         
            +
              rdoc.title    = 'CamaLanguageEditor'
         
     | 
| 
      
 12 
     | 
    
         
            +
              rdoc.options << '--line-numbers'
         
     | 
| 
      
 13 
     | 
    
         
            +
              rdoc.rdoc_files.include('README.rdoc')
         
     | 
| 
      
 14 
     | 
    
         
            +
              rdoc.rdoc_files.include('lib/**/*.rb')
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            APP_RAKEFILE = File.expand_path("../test/dummy/Rakefile", __FILE__)
         
     | 
| 
      
 18 
     | 
    
         
            +
            load 'rails/tasks/engine.rake'
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            load 'rails/tasks/statistics.rake'
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
            Bundler::GemHelper.install_tasks
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            require 'rake/testtask'
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            Rake::TestTask.new(:test) do |t|
         
     | 
| 
      
 30 
     | 
    
         
            +
              t.libs << 'lib'
         
     | 
| 
      
 31 
     | 
    
         
            +
              t.libs << 'test'
         
     | 
| 
      
 32 
     | 
    
         
            +
              t.pattern = 'test/**/*_test.rb'
         
     | 
| 
      
 33 
     | 
    
         
            +
              t.verbose = false
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            task default: :test
         
     | 
| 
         @@ -0,0 +1,43 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            jQuery(function(){
         
     | 
| 
      
 2 
     | 
    
         
            +
                $.fn.extend({
         
     | 
| 
      
 3 
     | 
    
         
            +
                    treed: function (openedClass, closedClass, onChange) {
         
     | 
| 
      
 4 
     | 
    
         
            +
                        var openedClass = openedClass || 'glyphicon-minus-sign';
         
     | 
| 
      
 5 
     | 
    
         
            +
                        var closedClass = closedClass || 'glyphicon-plus-sign';
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                        //initialize each of the top levels
         
     | 
| 
      
 8 
     | 
    
         
            +
                        var tree = $(this);
         
     | 
| 
      
 9 
     | 
    
         
            +
                        tree.addClass("tree");
         
     | 
| 
      
 10 
     | 
    
         
            +
                        tree.on('click', 'li.branch', function (e, skip_recursive) {
         
     | 
| 
      
 11 
     | 
    
         
            +
                            if (this == e.target) {
         
     | 
| 
      
 12 
     | 
    
         
            +
                                var icon = $(this).children('i:first');
         
     | 
| 
      
 13 
     | 
    
         
            +
                                icon.toggleClass(openedClass + " " + closedClass);
         
     | 
| 
      
 14 
     | 
    
         
            +
                                $(this).children().children().toggle();
         
     | 
| 
      
 15 
     | 
    
         
            +
                                if(onChange && !skip_recursive) onChange($(this))
         
     | 
| 
      
 16 
     | 
    
         
            +
                            }
         
     | 
| 
      
 17 
     | 
    
         
            +
                            e.stopPropagation();
         
     | 
| 
      
 18 
     | 
    
         
            +
                        });
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                        tree.on('click', '.branch .indicator', function(){ $(this).closest('li').click(); });
         
     | 
| 
      
 21 
     | 
    
         
            +
                    }
         
     | 
| 
      
 22 
     | 
    
         
            +
                });
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                var panel = $('#translations_editor_table')
         
     | 
| 
      
 25 
     | 
    
         
            +
                $('#translations_editor_form .mode_copy').click(function(){
         
     | 
| 
      
 26 
     | 
    
         
            +
                    var btn = $(this);
         
     | 
| 
      
 27 
     | 
    
         
            +
                    var edit_mode = btn.hasClass('is_edit_mode');
         
     | 
| 
      
 28 
     | 
    
         
            +
                    if(edit_mode) btn.removeClass('is_edit_mode');
         
     | 
| 
      
 29 
     | 
    
         
            +
                    else btn.addClass('is_edit_mode');
         
     | 
| 
      
 30 
     | 
    
         
            +
                    panel.find('input').each(function(){
         
     | 
| 
      
 31 
     | 
    
         
            +
                        if(edit_mode){
         
     | 
| 
      
 32 
     | 
    
         
            +
                            $(this).show().next().remove();
         
     | 
| 
      
 33 
     | 
    
         
            +
                        }else{
         
     | 
| 
      
 34 
     | 
    
         
            +
                            $(this).hide().after("<span class='input-group-addon copy_mode_label'>\""+$(this).val().replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '\\\"')+"\"</span>");
         
     | 
| 
      
 35 
     | 
    
         
            +
                        }
         
     | 
| 
      
 36 
     | 
    
         
            +
                    });
         
     | 
| 
      
 37 
     | 
    
         
            +
                });
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                $('#translations_editor_table .translation_column').treed(null, null, function(li, e){
         
     | 
| 
      
 40 
     | 
    
         
            +
                    $('#translations_editor_table li.'+li.attr('data-class')).not(li).trigger('click', [true]);
         
     | 
| 
      
 41 
     | 
    
         
            +
                });
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
            });
         
     | 
| 
         @@ -0,0 +1,80 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #translations_editor_table{
         
     | 
| 
      
 2 
     | 
    
         
            +
              .tree, .tree ul {
         
     | 
| 
      
 3 
     | 
    
         
            +
                margin:0;
         
     | 
| 
      
 4 
     | 
    
         
            +
                padding:0;
         
     | 
| 
      
 5 
     | 
    
         
            +
                list-style:none
         
     | 
| 
      
 6 
     | 
    
         
            +
              }
         
     | 
| 
      
 7 
     | 
    
         
            +
              .tree ul {
         
     | 
| 
      
 8 
     | 
    
         
            +
                margin-left:1em;
         
     | 
| 
      
 9 
     | 
    
         
            +
                position:relative
         
     | 
| 
      
 10 
     | 
    
         
            +
              }
         
     | 
| 
      
 11 
     | 
    
         
            +
              .tree ul ul {
         
     | 
| 
      
 12 
     | 
    
         
            +
                margin-left:.5em
         
     | 
| 
      
 13 
     | 
    
         
            +
              }
         
     | 
| 
      
 14 
     | 
    
         
            +
              .tree ul:before {
         
     | 
| 
      
 15 
     | 
    
         
            +
                content:"";
         
     | 
| 
      
 16 
     | 
    
         
            +
                display:block;
         
     | 
| 
      
 17 
     | 
    
         
            +
                width:0;
         
     | 
| 
      
 18 
     | 
    
         
            +
                position:absolute;
         
     | 
| 
      
 19 
     | 
    
         
            +
                top:0;
         
     | 
| 
      
 20 
     | 
    
         
            +
                bottom:0;
         
     | 
| 
      
 21 
     | 
    
         
            +
                left:0;
         
     | 
| 
      
 22 
     | 
    
         
            +
                border-left:1px solid
         
     | 
| 
      
 23 
     | 
    
         
            +
              }
         
     | 
| 
      
 24 
     | 
    
         
            +
              .tree li {
         
     | 
| 
      
 25 
     | 
    
         
            +
                margin:0;
         
     | 
| 
      
 26 
     | 
    
         
            +
                padding:0 1em;
         
     | 
| 
      
 27 
     | 
    
         
            +
                line-height:2em;
         
     | 
| 
      
 28 
     | 
    
         
            +
                color:#369;
         
     | 
| 
      
 29 
     | 
    
         
            +
                font-weight:700;
         
     | 
| 
      
 30 
     | 
    
         
            +
                position:relative;
         
     | 
| 
      
 31 
     | 
    
         
            +
                padding-right: 0;
         
     | 
| 
      
 32 
     | 
    
         
            +
              }
         
     | 
| 
      
 33 
     | 
    
         
            +
              .tree ul li:before {
         
     | 
| 
      
 34 
     | 
    
         
            +
                content:"";
         
     | 
| 
      
 35 
     | 
    
         
            +
                display:block;
         
     | 
| 
      
 36 
     | 
    
         
            +
                width:10px;
         
     | 
| 
      
 37 
     | 
    
         
            +
                height:0;
         
     | 
| 
      
 38 
     | 
    
         
            +
                border-top:1px solid;
         
     | 
| 
      
 39 
     | 
    
         
            +
                margin-top:-1px;
         
     | 
| 
      
 40 
     | 
    
         
            +
                position:absolute;
         
     | 
| 
      
 41 
     | 
    
         
            +
                top:1em;
         
     | 
| 
      
 42 
     | 
    
         
            +
                left:0
         
     | 
| 
      
 43 
     | 
    
         
            +
              }
         
     | 
| 
      
 44 
     | 
    
         
            +
              .tree ul li:last-child:before {
         
     | 
| 
      
 45 
     | 
    
         
            +
                background:#fff;
         
     | 
| 
      
 46 
     | 
    
         
            +
                height:auto;
         
     | 
| 
      
 47 
     | 
    
         
            +
                top:1em;
         
     | 
| 
      
 48 
     | 
    
         
            +
                bottom:0
         
     | 
| 
      
 49 
     | 
    
         
            +
              }
         
     | 
| 
      
 50 
     | 
    
         
            +
              .indicator {
         
     | 
| 
      
 51 
     | 
    
         
            +
                margin-right:5px;
         
     | 
| 
      
 52 
     | 
    
         
            +
              }
         
     | 
| 
      
 53 
     | 
    
         
            +
              .tree li a {
         
     | 
| 
      
 54 
     | 
    
         
            +
                text-decoration: none;
         
     | 
| 
      
 55 
     | 
    
         
            +
                color:#369;
         
     | 
| 
      
 56 
     | 
    
         
            +
              }
         
     | 
| 
      
 57 
     | 
    
         
            +
              .tree li button, .tree li button:active, .tree li button:focus {
         
     | 
| 
      
 58 
     | 
    
         
            +
                text-decoration: none;
         
     | 
| 
      
 59 
     | 
    
         
            +
                color:#369;
         
     | 
| 
      
 60 
     | 
    
         
            +
                border:none;
         
     | 
| 
      
 61 
     | 
    
         
            +
                background:transparent;
         
     | 
| 
      
 62 
     | 
    
         
            +
                margin:0px 0px 0px 0px;
         
     | 
| 
      
 63 
     | 
    
         
            +
                padding:0px 0px 0px 0px;
         
     | 
| 
      
 64 
     | 
    
         
            +
                outline: 0;
         
     | 
| 
      
 65 
     | 
    
         
            +
              }
         
     | 
| 
      
 66 
     | 
    
         
            +
              div.form-control{
         
     | 
| 
      
 67 
     | 
    
         
            +
                padding: 0;
         
     | 
| 
      
 68 
     | 
    
         
            +
                border: none;
         
     | 
| 
      
 69 
     | 
    
         
            +
              }
         
     | 
| 
      
 70 
     | 
    
         
            +
              .input-group-addon{
         
     | 
| 
      
 71 
     | 
    
         
            +
                font-size: 10px;
         
     | 
| 
      
 72 
     | 
    
         
            +
                min-width: 150px;
         
     | 
| 
      
 73 
     | 
    
         
            +
              }
         
     | 
| 
      
 74 
     | 
    
         
            +
              input{
         
     | 
| 
      
 75 
     | 
    
         
            +
                font-weight: normal;
         
     | 
| 
      
 76 
     | 
    
         
            +
              }
         
     | 
| 
      
 77 
     | 
    
         
            +
              .copy_mode_label{
         
     | 
| 
      
 78 
     | 
    
         
            +
                text-align: left !important;
         
     | 
| 
      
 79 
     | 
    
         
            +
              }
         
     | 
| 
      
 80 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,74 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Plugins::CamaLanguageEditor::MainHelper
         
     | 
| 
      
 2 
     | 
    
         
            +
              def self.included(klass)
         
     | 
| 
      
 3 
     | 
    
         
            +
                # klass.helper_method [:my_helper_method] rescue "" # here your methods accessible from views
         
     | 
| 
      
 4 
     | 
    
         
            +
              end
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              # here all actions on going to active
         
     | 
| 
      
 7 
     | 
    
         
            +
              # you can run sql commands like this:
         
     | 
| 
      
 8 
     | 
    
         
            +
              # results = ActiveRecord::Base.connection.execute(query);
         
     | 
| 
      
 9 
     | 
    
         
            +
              # plugin: plugin model
         
     | 
| 
      
 10 
     | 
    
         
            +
              def cama_language_editor_on_active(plugin)
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              # here all actions on going to inactive
         
     | 
| 
      
 14 
     | 
    
         
            +
              # plugin: plugin model
         
     | 
| 
      
 15 
     | 
    
         
            +
              def cama_language_editor_on_inactive(plugin)
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
              # here all actions to upgrade for a new version
         
     | 
| 
      
 19 
     | 
    
         
            +
              # plugin: plugin model
         
     | 
| 
      
 20 
     | 
    
         
            +
              def cama_language_editor_on_upgrade(plugin)
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def cama_language_plugin_options(args)
         
     | 
| 
      
 24 
     | 
    
         
            +
                args[:links] << link_to('Access to Editor', admin_plugins_cama_language_editor_index_url)
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              def cama_language_render_item_translations(groups, base_key = nil, res = [], p_keys = [])
         
     | 
| 
      
 28 
     | 
    
         
            +
                res_html = groups.map{|g| "" }
         
     | 
| 
      
 29 
     | 
    
         
            +
                all_attrs = PluginRoutes.static_system_info['available_languages'].map{|_l| cama_language_get_hash_value(I18n.backend.send(:translations)[_l.to_sym], base_key.split(':') + p_keys) }
         
     | 
| 
      
 30 
     | 
    
         
            +
                all_attrs.map{|g| g.keys || [] }.flatten.uniq.sort_by{|k| groups.map{|_g| _g[k].is_a?(Hash) ? 1 : 0 }.reduce(&:+) }.each do |key|
         
     | 
| 
      
 31 
     | 
    
         
            +
                  key_ori = key; key = 'no' if key === false; key = 'yes' if key === true
         
     | 
| 
      
 32 
     | 
    
         
            +
                  key = key.to_s
         
     | 
| 
      
 33 
     | 
    
         
            +
                  has_children = false
         
     | 
| 
      
 34 
     | 
    
         
            +
                  _groups = []
         
     | 
| 
      
 35 
     | 
    
         
            +
                  groups.each_with_index do |g, index|
         
     | 
| 
      
 36 
     | 
    
         
            +
                    res[index] = {} if res[index].nil?
         
     | 
| 
      
 37 
     | 
    
         
            +
                    _g = p_keys.present? ? cama_language_get_hash_value(res[index], p_keys.dup) : res[index]
         
     | 
| 
      
 38 
     | 
    
         
            +
                    _g[key] = g[key.to_sym] || g[key_ori] || {}
         
     | 
| 
      
 39 
     | 
    
         
            +
                    _groups[index] = _g[key]
         
     | 
| 
      
 40 
     | 
    
         
            +
                  end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                  all_attrs.each{|_g| has_children = true if _g[key.to_sym].is_a?(Hash) } # check if there exist any key with sub items
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
                  if has_children
         
     | 
| 
      
 45 
     | 
    
         
            +
                    cama_language_render_item_translations(_groups, base_key, res, p_keys + [key]).each_with_index do |html_g, index|
         
     | 
| 
      
 46 
     | 
    
         
            +
                      res_html[index] << "<li data-class='#{(p_keys+[key]).join('_')}' class='branch #{(p_keys+[key]).join('_')}'> <i class='indicator glyphicon glyphicon-minus-sign'></i>
         
     | 
| 
      
 47 
     | 
    
         
            +
                                              <label>#{' ' * (((p_keys.size+1)*2)-1)}#{key}: </label>
         
     | 
| 
      
 48 
     | 
    
         
            +
                                              <ul class='list-group'> #{html_g} </ul>
         
     | 
| 
      
 49 
     | 
    
         
            +
                                          </li>"
         
     | 
| 
      
 50 
     | 
    
         
            +
                    end
         
     | 
| 
      
 51 
     | 
    
         
            +
                  else
         
     | 
| 
      
 52 
     | 
    
         
            +
                    _groups.each_with_index do |g_val, index|
         
     | 
| 
      
 53 
     | 
    
         
            +
                      res_html[index] << "<li><div class='input-group form-control'><span class='input-group-addon' style='text-align: left !important;'><b>#{' ' * ((p_keys.size+1)*2)}#{key}: </b></span><input type='text' class='form-control' value='#{(g_val.is_a?(Hash) ? '' : g_val).gsub("'", "\\\'") }'></div></li>"
         
     | 
| 
      
 54 
     | 
    
         
            +
                    end
         
     | 
| 
      
 55 
     | 
    
         
            +
                  end
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
                # res
         
     | 
| 
      
 58 
     | 
    
         
            +
                res_html
         
     | 
| 
      
 59 
     | 
    
         
            +
              end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
              # return the value of a hash with a recursive keys
         
     | 
| 
      
 62 
     | 
    
         
            +
              # keys: (Array of keys) [:a, :b, :c]
         
     | 
| 
      
 63 
     | 
    
         
            +
              # g: Hash with all values from where get the value
         
     | 
| 
      
 64 
     | 
    
         
            +
              def cama_language_get_hash_value(g, keys)
         
     | 
| 
      
 65 
     | 
    
         
            +
                k = keys.shift
         
     | 
| 
      
 66 
     | 
    
         
            +
                g = g[k.to_sym]
         
     | 
| 
      
 67 
     | 
    
         
            +
                (keys.any? ? cama_language_get_hash_value(g || {}, keys) : g) || {}
         
     | 
| 
      
 68 
     | 
    
         
            +
              end
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
              def cama_language_get_hash_value2(g, keys)
         
     | 
| 
      
 71 
     | 
    
         
            +
                k = keys.shift
         
     | 
| 
      
 72 
     | 
    
         
            +
                (keys.any? ? cama_language_get_hash_value(g[k] || {}, keys) : g[keys]) || {}
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,53 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <% params[:prefix] = 'camaleon_cms' unless params[:prefix].present? %>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <% params[:left_column] ||= 'en' %>
         
     | 
| 
      
 3 
     | 
    
         
            +
            <% params[:right_column] ||= 'es' %>
         
     | 
| 
      
 4 
     | 
    
         
            +
            <%= stylesheet_link_tag(plugin_asset_path('admin')) %>
         
     | 
| 
      
 5 
     | 
    
         
            +
            <%= javascript_include_tag(plugin_asset_path('admin')) %>
         
     | 
| 
      
 6 
     | 
    
         
            +
            <% languages = [params[:left_column], params[:right_column]] %>
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            <% r = cama_language_render_item_translations(languages.map{|_l| cama_language_get_hash_value(I18n.backend.send(:translations)[_l.to_sym], params[:prefix].split(":")) || {} }, params[:prefix]) %>
         
     | 
| 
      
 9 
     | 
    
         
            +
            <%= form_tag url_for(action: :index), id: 'translations_editor_form', method: :get, class: 'row' do %>
         
     | 
| 
      
 10 
     | 
    
         
            +
                <div class="col-md-6">
         
     | 
| 
      
 11 
     | 
    
         
            +
                    <div class="row">
         
     | 
| 
      
 12 
     | 
    
         
            +
                        <div class="col-md-6">
         
     | 
| 
      
 13 
     | 
    
         
            +
                            <label>Left Column</label><br>
         
     | 
| 
      
 14 
     | 
    
         
            +
                            <%= select_tag :left_column, options_for_select(PluginRoutes.static_system_info['available_languages'], params[:left_column]), class: 'form-control' %>
         
     | 
| 
      
 15 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                        <div class="col-md-6">
         
     | 
| 
      
 18 
     | 
    
         
            +
                            <label>Right Column</label><br>
         
     | 
| 
      
 19 
     | 
    
         
            +
                            <%= select_tag :right_column, options_for_select(PluginRoutes.static_system_info['available_languages'], params[:right_column]), class: 'form-control' %>
         
     | 
| 
      
 20 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 21 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 24 
     | 
    
         
            +
                <div class="col-md-6">
         
     | 
| 
      
 25 
     | 
    
         
            +
                    <small>Enter your prefix to filter specific translations, sample: plugins:ecommerce | camaleon_cms:admin</small>
         
     | 
| 
      
 26 
     | 
    
         
            +
                    <br>
         
     | 
| 
      
 27 
     | 
    
         
            +
                    <div class="input-group">
         
     | 
| 
      
 28 
     | 
    
         
            +
                        <span class="input-group-addon">Prefix</span>
         
     | 
| 
      
 29 
     | 
    
         
            +
                        <%= text_field_tag 'prefix', params[:prefix], class: 'form-control' %>
         
     | 
| 
      
 30 
     | 
    
         
            +
                        <span class="input-group-btn">
         
     | 
| 
      
 31 
     | 
    
         
            +
                            <button class="btn btn-secondary" type="submit">Load Translations</button>
         
     | 
| 
      
 32 
     | 
    
         
            +
                            <button type="button" class="btn btn-primary mode_copy">Copy Mode</button>
         
     | 
| 
      
 33 
     | 
    
         
            +
                        </span>
         
     | 
| 
      
 34 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 35 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 36 
     | 
    
         
            +
            <% end %>
         
     | 
| 
      
 37 
     | 
    
         
            +
            <hr>
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
            <div class="clearfix"></div>
         
     | 
| 
      
 40 
     | 
    
         
            +
            <div id="translations_editor_table" class="row">
         
     | 
| 
      
 41 
     | 
    
         
            +
                <% r.each_with_index do |g, index|  %>
         
     | 
| 
      
 42 
     | 
    
         
            +
                    <div class="col-md-6">
         
     | 
| 
      
 43 
     | 
    
         
            +
                        <div class="panel panel-default">
         
     | 
| 
      
 44 
     | 
    
         
            +
                            <div class="panel-heading"><h4><%= languages[index] %>:<%= params[:prefix] %>:</h4></div>
         
     | 
| 
      
 45 
     | 
    
         
            +
                            <div class="panel-body translation_column tree">
         
     | 
| 
      
 46 
     | 
    
         
            +
                                <ul>
         
     | 
| 
      
 47 
     | 
    
         
            +
                                    <%= raw g %>
         
     | 
| 
      
 48 
     | 
    
         
            +
                                </ul>
         
     | 
| 
      
 49 
     | 
    
         
            +
                            </div>
         
     | 
| 
      
 50 
     | 
    
         
            +
                        </div>
         
     | 
| 
      
 51 
     | 
    
         
            +
                    </div>
         
     | 
| 
      
 52 
     | 
    
         
            +
                <% end %>
         
     | 
| 
      
 53 
     | 
    
         
            +
            </div>
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {
         
     | 
| 
      
 2 
     | 
    
         
            +
              "title": "Cama Language Editor",
         
     | 
| 
      
 3 
     | 
    
         
            +
              "descr": "",
         
     | 
| 
      
 4 
     | 
    
         
            +
              "key": "cama_language_editor",
         
     | 
| 
      
 5 
     | 
    
         
            +
              "helpers": [
         
     | 
| 
      
 6 
     | 
    
         
            +
                "Plugins::CamaLanguageEditor::MainHelper"
         
     | 
| 
      
 7 
     | 
    
         
            +
              ],
         
     | 
| 
      
 8 
     | 
    
         
            +
              "hooks": {
         
     | 
| 
      
 9 
     | 
    
         
            +
                "on_active": [
         
     | 
| 
      
 10 
     | 
    
         
            +
                  "cama_language_editor_on_active"
         
     | 
| 
      
 11 
     | 
    
         
            +
                ],
         
     | 
| 
      
 12 
     | 
    
         
            +
                "on_inactive": [
         
     | 
| 
      
 13 
     | 
    
         
            +
                  "cama_language_editor_on_inactive"
         
     | 
| 
      
 14 
     | 
    
         
            +
                ],
         
     | 
| 
      
 15 
     | 
    
         
            +
                "plugin_options": ["cama_language_plugin_options"]
         
     | 
| 
      
 16 
     | 
    
         
            +
                //here you can add all your hooks (read documentation)
         
     | 
| 
      
 17 
     | 
    
         
            +
              }
         
     | 
| 
      
 18 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,192 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            en:
         
     | 
| 
      
 2 
     | 
    
         
            +
              plugin:
         
     | 
| 
      
 3 
     | 
    
         
            +
                ecommerce:
         
     | 
| 
      
 4 
     | 
    
         
            +
                  active: 'Active'
         
     | 
| 
      
 5 
     | 
    
         
            +
                  add_shipping_methods: 'Add Shipping Method'
         
     | 
| 
      
 6 
     | 
    
         
            +
                  not_active: 'Not Active'
         
     | 
| 
      
 7 
     | 
    
         
            +
                  accepted: 'Accepted'
         
     | 
| 
      
 8 
     | 
    
         
            +
                  coupons: 'Coupons'
         
     | 
| 
      
 9 
     | 
    
         
            +
                  e_commerce: 'E-Commerce'
         
     | 
| 
      
 10 
     | 
    
         
            +
                  e_commerce_settings: 'E-commerce Settings'
         
     | 
| 
      
 11 
     | 
    
         
            +
                  e_mail_address: 'E-Mail Address'
         
     | 
| 
      
 12 
     | 
    
         
            +
                  edit_tax_rate: 'Edit Tax Rate'
         
     | 
| 
      
 13 
     | 
    
         
            +
                  edit_shipping_methods: 'Edit Shipping Method'
         
     | 
| 
      
 14 
     | 
    
         
            +
                  edit_price: 'Edit Price'
         
     | 
| 
      
 15 
     | 
    
         
            +
                  edit_payment_methods: 'Edit Payment Methods'
         
     | 
| 
      
 16 
     | 
    
         
            +
                  edit_coupon: 'Edit Coupon'
         
     | 
| 
      
 17 
     | 
    
         
            +
                  edit_order: 'Edit Order'
         
     | 
| 
      
 18 
     | 
    
         
            +
                  all_products: 'All Products'
         
     | 
| 
      
 19 
     | 
    
         
            +
                  add_new: 'Add New'
         
     | 
| 
      
 20 
     | 
    
         
            +
                  add_tax_rate: 'Add Tax Rate'
         
     | 
| 
      
 21 
     | 
    
         
            +
                  add_shipping_methods: 'Add Shipping Method'
         
     | 
| 
      
 22 
     | 
    
         
            +
                  add_price: 'Add Price'
         
     | 
| 
      
 23 
     | 
    
         
            +
                  add_coupons: 'Add Coupons'
         
     | 
| 
      
 24 
     | 
    
         
            +
                  add_payment_method: 'Add Payment Method'
         
     | 
| 
      
 25 
     | 
    
         
            +
                  billing_address: 'Billing Address'
         
     | 
| 
      
 26 
     | 
    
         
            +
                  by_bank_transfer: 'By bank transfer'
         
     | 
| 
      
 27 
     | 
    
         
            +
                  by_paypal: 'By Paypal'
         
     | 
| 
      
 28 
     | 
    
         
            +
                  by_credit_card: 'By credit card (with paypal)'
         
     | 
| 
      
 29 
     | 
    
         
            +
                  by_authorize_net: 'By credit card (Authorize.net)'
         
     | 
| 
      
 30 
     | 
    
         
            +
                  details_shipping_methods: 'Shipping Method Details'
         
     | 
| 
      
 31 
     | 
    
         
            +
                  details_payment_methods: 'Payment Methods Details'
         
     | 
| 
      
 32 
     | 
    
         
            +
                  details_order: 'Details Order'
         
     | 
| 
      
 33 
     | 
    
         
            +
                  details_user: 'User Details'
         
     | 
| 
      
 34 
     | 
    
         
            +
                  form_tax_rate: 'Tax Rate Form'
         
     | 
| 
      
 35 
     | 
    
         
            +
                  form_shipping_methods: 'Shipping Method Form'
         
     | 
| 
      
 36 
     | 
    
         
            +
                  form_price: 'Price Form'
         
     | 
| 
      
 37 
     | 
    
         
            +
                  form_payment_methods: 'Payment Methods Form'
         
     | 
| 
      
 38 
     | 
    
         
            +
                  form_coupon: 'Coupon Form'
         
     | 
| 
      
 39 
     | 
    
         
            +
                  form_settings: 'Settings Form'
         
     | 
| 
      
 40 
     | 
    
         
            +
                  orders: 'Orders'
         
     | 
| 
      
 41 
     | 
    
         
            +
                  order_received: 'Order Received'
         
     | 
| 
      
 42 
     | 
    
         
            +
                  order_accepted: 'Order Accepted'
         
     | 
| 
      
 43 
     | 
    
         
            +
                  order_shipped: 'Order Shipped'
         
     | 
| 
      
 44 
     | 
    
         
            +
                  payment_methods: 'Payment Methods'
         
     | 
| 
      
 45 
     | 
    
         
            +
                  info: 'Information'
         
     | 
| 
      
 46 
     | 
    
         
            +
                  list_orders: 'List Orders'
         
     | 
| 
      
 47 
     | 
    
         
            +
                  list_tax_rate: 'Tax Rate List'
         
     | 
| 
      
 48 
     | 
    
         
            +
                  list_shipping_methods: 'Shipping Method List'
         
     | 
| 
      
 49 
     | 
    
         
            +
                  shipping_methods: 'Shipping Methods'
         
     | 
| 
      
 50 
     | 
    
         
            +
                  shipping_prices: 'Shipping Prices'
         
     | 
| 
      
 51 
     | 
    
         
            +
                  list_price: 'Price List'
         
     | 
| 
      
 52 
     | 
    
         
            +
                  list_payment_methods: 'Payment Methods List'
         
     | 
| 
      
 53 
     | 
    
         
            +
                  list_coupons: 'Coupons List'
         
     | 
| 
      
 54 
     | 
    
         
            +
                  mark_shipped: 'Mark as Shipped'
         
     | 
| 
      
 55 
     | 
    
         
            +
                  message:
         
     | 
| 
      
 56 
     | 
    
         
            +
                    consignment_number: 'Use {{consignment_number}} to insert the consignment number.'
         
     | 
| 
      
 57 
     | 
    
         
            +
                    error_paypal_values: 'Error Paypal Values'
         
     | 
| 
      
 58 
     | 
    
         
            +
                    not_shipped: 'Not Shipped'
         
     | 
| 
      
 59 
     | 
    
         
            +
                    not_shipped_assigned: 'Not Shipped Assigned'
         
     | 
| 
      
 60 
     | 
    
         
            +
                    order: 'Order %{status}'
         
     | 
| 
      
 61 
     | 
    
         
            +
                    accepted: 'Accepted'
         
     | 
| 
      
 62 
     | 
    
         
            +
                    shipped: 'Shipped'
         
     | 
| 
      
 63 
     | 
    
         
            +
                    updated: 'Updated'
         
     | 
| 
      
 64 
     | 
    
         
            +
                  method_paypal: 'Method by Paypal'
         
     | 
| 
      
 65 
     | 
    
         
            +
                  method_credit_card: 'Method by Credit Card'
         
     | 
| 
      
 66 
     | 
    
         
            +
                  method_bank_transfer: 'Method Bank Transfer'
         
     | 
| 
      
 67 
     | 
    
         
            +
                  method_shipped: 'Method Shipped'
         
     | 
| 
      
 68 
     | 
    
         
            +
                  method_authorize_net: 'Method by Authorize.net'
         
     | 
| 
      
 69 
     | 
    
         
            +
                  new: 'New'
         
     | 
| 
      
 70 
     | 
    
         
            +
                  new_tax_rate: 'New Tax Rate'
         
     | 
| 
      
 71 
     | 
    
         
            +
                  new_shipping_methods: 'New Shipping Method'
         
     | 
| 
      
 72 
     | 
    
         
            +
                  new_payment_methods: 'New Payment Methods'
         
     | 
| 
      
 73 
     | 
    
         
            +
                  new_coupon: 'New Coupon'
         
     | 
| 
      
 74 
     | 
    
         
            +
                  options_payment_methods: 'Payment Options'
         
     | 
| 
      
 75 
     | 
    
         
            +
                  payments: 'Payments'
         
     | 
| 
      
 76 
     | 
    
         
            +
                  phone_number: 'Phone Number'
         
     | 
| 
      
 77 
     | 
    
         
            +
                  product:
         
     | 
| 
      
 78 
     | 
    
         
            +
                    featured: 'Featured'
         
     | 
| 
      
 79 
     | 
    
         
            +
                    item: 'Item'
         
     | 
| 
      
 80 
     | 
    
         
            +
                    photo: "Photos of product"
         
     | 
| 
      
 81 
     | 
    
         
            +
                    box: "What's in the box"
         
     | 
| 
      
 82 
     | 
    
         
            +
                    sku: "SKU"
         
     | 
| 
      
 83 
     | 
    
         
            +
                    attrs: "Attributes"
         
     | 
| 
      
 84 
     | 
    
         
            +
                    photos: "Photos"
         
     | 
| 
      
 85 
     | 
    
         
            +
                    price: "Price"
         
     | 
| 
      
 86 
     | 
    
         
            +
                    cost: "Cost"
         
     | 
| 
      
 87 
     | 
    
         
            +
                    tax: "Tax rate"
         
     | 
| 
      
 88 
     | 
    
         
            +
                    weight: "Weight"
         
     | 
| 
      
 89 
     | 
    
         
            +
                    stock_status: 'Stock Status'
         
     | 
| 
      
 90 
     | 
    
         
            +
                    stock: "Stock control?"
         
     | 
| 
      
 91 
     | 
    
         
            +
                    qty: "Quantity"
         
     | 
| 
      
 92 
     | 
    
         
            +
                    in_stock: 'In Stock'
         
     | 
| 
      
 93 
     | 
    
         
            +
                    not_in_tock: 'Not In Stock'
         
     | 
| 
      
 94 
     | 
    
         
            +
                    total_excluding_tax: 'Total (excluding Tax)'
         
     | 
| 
      
 95 
     | 
    
         
            +
                    current_unit: 'Current unit: %{unit}'
         
     | 
| 
      
 96 
     | 
    
         
            +
                    current_weight: 'Current weight: %{weight}'
         
     | 
| 
      
 97 
     | 
    
         
            +
                  products: 'Products'
         
     | 
| 
      
 98 
     | 
    
         
            +
                  shipping_address: 'Shipping Address'
         
     | 
| 
      
 99 
     | 
    
         
            +
                  shipping_methods: 'Shipping Methods'
         
     | 
| 
      
 100 
     | 
    
         
            +
                  shipped_date: 'Shipped Date'
         
     | 
| 
      
 101 
     | 
    
         
            +
                  search_order_number: 'Search for order number'
         
     | 
| 
      
 102 
     | 
    
         
            +
                  select:
         
     | 
| 
      
 103 
     | 
    
         
            +
                    received: 'Received'
         
     | 
| 
      
 104 
     | 
    
         
            +
                    unpaid: 'Unpaid'
         
     | 
| 
      
 105 
     | 
    
         
            +
                    accepted: 'Accepted'
         
     | 
| 
      
 106 
     | 
    
         
            +
                    shipped: 'Shipped'
         
     | 
| 
      
 107 
     | 
    
         
            +
                    closed: 'Closed'
         
     | 
| 
      
 108 
     | 
    
         
            +
                    canceled: 'Canceled'
         
     | 
| 
      
 109 
     | 
    
         
            +
                    kilogram: 'kilogram'
         
     | 
| 
      
 110 
     | 
    
         
            +
                    pound: 'pound'
         
     | 
| 
      
 111 
     | 
    
         
            +
                    dram: 'dram'
         
     | 
| 
      
 112 
     | 
    
         
            +
                    grain: 'grain'
         
     | 
| 
      
 113 
     | 
    
         
            +
                    gram: 'gram'
         
     | 
| 
      
 114 
     | 
    
         
            +
                    hundredweight: 'hundredweight'
         
     | 
| 
      
 115 
     | 
    
         
            +
                    milligram: 'milligram'
         
     | 
| 
      
 116 
     | 
    
         
            +
                    ounce: 'ounce'
         
     | 
| 
      
 117 
     | 
    
         
            +
                    tonne: 'tonne'
         
     | 
| 
      
 118 
     | 
    
         
            +
                  table:
         
     | 
| 
      
 119 
     | 
    
         
            +
                    address: 'Address'
         
     | 
| 
      
 120 
     | 
    
         
            +
                    actions: 'Actions'
         
     | 
| 
      
 121 
     | 
    
         
            +
                    amount: 'Amount'
         
     | 
| 
      
 122 
     | 
    
         
            +
                    allowed_applications: 'Allowed applications'
         
     | 
| 
      
 123 
     | 
    
         
            +
                    city: 'City'
         
     | 
| 
      
 124 
     | 
    
         
            +
                    code: 'Code'
         
     | 
| 
      
 125 
     | 
    
         
            +
                    country: 'Country'
         
     | 
| 
      
 126 
     | 
    
         
            +
                    currency_unit: 'Currency Unit'
         
     | 
| 
      
 127 
     | 
    
         
            +
                    currency_weight: 'Currency Weight'
         
     | 
| 
      
 128 
     | 
    
         
            +
                    customer: 'Customer'
         
     | 
| 
      
 129 
     | 
    
         
            +
                    customer_info: 'Customer Info'
         
     | 
| 
      
 130 
     | 
    
         
            +
                    description: 'Description'
         
     | 
| 
      
 131 
     | 
    
         
            +
                    details: 'Details'
         
     | 
| 
      
 132 
     | 
    
         
            +
                    discount: 'Discount'
         
     | 
| 
      
 133 
     | 
    
         
            +
                    discount_type: 'Discount  type'
         
     | 
| 
      
 134 
     | 
    
         
            +
                    email: 'Email'
         
     | 
| 
      
 135 
     | 
    
         
            +
                    expiration_date: 'Expiration date'
         
     | 
| 
      
 136 
     | 
    
         
            +
                    expired: 'Expired'
         
     | 
| 
      
 137 
     | 
    
         
            +
                    firstname: 'Firstname'
         
     | 
| 
      
 138 
     | 
    
         
            +
                    id: 'ID'
         
     | 
| 
      
 139 
     | 
    
         
            +
                    lastname: 'Lastname'
         
     | 
| 
      
 140 
     | 
    
         
            +
                    login: 'Login'
         
     | 
| 
      
 141 
     | 
    
         
            +
                    login_id: 'Login Id'
         
     | 
| 
      
 142 
     | 
    
         
            +
                    max_weight: 'Max Weight'
         
     | 
| 
      
 143 
     | 
    
         
            +
                    min_weight: 'Min Weight'
         
     | 
| 
      
 144 
     | 
    
         
            +
                    min_cart_total: 'Min cart total'
         
     | 
| 
      
 145 
     | 
    
         
            +
                    name: 'Name'
         
     | 
| 
      
 146 
     | 
    
         
            +
                    not_paid: 'Not Paid'
         
     | 
| 
      
 147 
     | 
    
         
            +
                    method: 'Method'
         
     | 
| 
      
 148 
     | 
    
         
            +
                    number_account_bank: 'Number Account Bank'
         
     | 
| 
      
 149 
     | 
    
         
            +
                    phone: 'Phone'
         
     | 
| 
      
 150 
     | 
    
         
            +
                    paid: 'Paid?'
         
     | 
| 
      
 151 
     | 
    
         
            +
                    password: 'Password'
         
     | 
| 
      
 152 
     | 
    
         
            +
                    payment_method: 'Payment Method'
         
     | 
| 
      
 153 
     | 
    
         
            +
                    percent: 'Percent'
         
     | 
| 
      
 154 
     | 
    
         
            +
                    money: 'Money'
         
     | 
| 
      
 155 
     | 
    
         
            +
                    free_shipping: 'Free Shipping'
         
     | 
| 
      
 156 
     | 
    
         
            +
                    products: 'Products'
         
     | 
| 
      
 157 
     | 
    
         
            +
                    rate: 'Rate'
         
     | 
| 
      
 158 
     | 
    
         
            +
                    received_time: 'Received Time'
         
     | 
| 
      
 159 
     | 
    
         
            +
                    sandbox: 'Sandbox'
         
     | 
| 
      
 160 
     | 
    
         
            +
                    shipping: 'Shipping'
         
     | 
| 
      
 161 
     | 
    
         
            +
                    signature: 'Signature'
         
     | 
| 
      
 162 
     | 
    
         
            +
                    status: 'Status'
         
     | 
| 
      
 163 
     | 
    
         
            +
                    slug: 'Slug'
         
     | 
| 
      
 164 
     | 
    
         
            +
                    sub_total: 'Subtotal'
         
     | 
| 
      
 165 
     | 
    
         
            +
                    state: 'State'
         
     | 
| 
      
 166 
     | 
    
         
            +
                    total: 'Total'
         
     | 
| 
      
 167 
     | 
    
         
            +
                    url_tracking: 'URL Tracking'
         
     | 
| 
      
 168 
     | 
    
         
            +
                    username_login: 'Username / Login'
         
     | 
| 
      
 169 
     | 
    
         
            +
                    used_applications: 'Used applications'
         
     | 
| 
      
 170 
     | 
    
         
            +
                    code_zip: 'Code Zip'
         
     | 
| 
      
 171 
     | 
    
         
            +
                    method_type: 'Method type'
         
     | 
| 
      
 172 
     | 
    
         
            +
                    transaction_key: 'Transaction key'
         
     | 
| 
      
 173 
     | 
    
         
            +
                  tax_rates: 'Tax Rates'
         
     | 
| 
      
 174 
     | 
    
         
            +
                  add_to_cart: 'Add to cart'
         
     | 
| 
      
 175 
     | 
    
         
            +
                  msg:
         
     | 
| 
      
 176 
     | 
    
         
            +
                    added_product_in_cart: 'Added product successfully in Cart.'
         
     | 
| 
      
 177 
     | 
    
         
            +
                  mail:
         
     | 
| 
      
 178 
     | 
    
         
            +
                    order_received:
         
     | 
| 
      
 179 
     | 
    
         
            +
                      welcome: "Hi"
         
     | 
| 
      
 180 
     | 
    
         
            +
                      thanks: "Thank you for your purchase."
         
     | 
| 
      
 181 
     | 
    
         
            +
                      reference: "For your reference, your order number is:"
         
     | 
| 
      
 182 
     | 
    
         
            +
                    recovery_cart:
         
     | 
| 
      
 183 
     | 
    
         
            +
                      body: "We noticed that you might be stuck."
         
     | 
| 
      
 184 
     | 
    
         
            +
                      reference: "For your reference, your order number is:"
         
     | 
| 
      
 185 
     | 
    
         
            +
                  email:
         
     | 
| 
      
 186 
     | 
    
         
            +
                    order_received:
         
     | 
| 
      
 187 
     | 
    
         
            +
                      subject: "Thank you for purchasing"
         
     | 
| 
      
 188 
     | 
    
         
            +
                    recovery_cart:
         
     | 
| 
      
 189 
     | 
    
         
            +
                      subject: "We noticed that you might be stuck"
         
     | 
| 
      
 190 
     | 
    
         
            +
                    order_received_admin:
         
     | 
| 
      
 191 
     | 
    
         
            +
                      subject: "New purchase"
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     |