express_translate 1.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (27) hide show
  1. data/README.md +53 -43
  2. data/VERSION +1 -1
  3. data/app/assets/stylesheets/express_translate/express_translate.css.scss +4 -0
  4. data/app/controllers/express_translate/account_controller.rb +10 -0
  5. data/app/controllers/express_translate/ajax/codes_controller.rb +21 -1
  6. data/app/controllers/express_translate/ajax/languages_controller.rb +16 -0
  7. data/app/controllers/express_translate/ajax/packages_controller.rb +13 -0
  8. data/app/controllers/express_translate/base_controller.rb +3 -1
  9. data/app/controllers/express_translate/files_controller.rb +32 -1
  10. data/app/controllers/express_translate/options_controller.rb +16 -5
  11. data/app/controllers/express_translate/services_controller.rb +20 -1
  12. data/app/views/express_translate/ajax/languages/_content_language.html.erb +1 -1
  13. data/app/views/express_translate/options/languages.html.erb +69 -1
  14. data/config/routes.rb +1 -0
  15. data/express_translate.gemspec +1 -2
  16. data/lib/express_translate.rb +7 -2
  17. data/lib/express_translate/account_management.rb +4 -1
  18. data/lib/express_translate/express_translate_model.rb +39 -5
  19. data/lib/express_translate/language_detail_management.rb +1 -1
  20. data/lib/express_translate/languages_management.rb +7 -1
  21. data/lib/express_translate/package_management.rb +1 -1
  22. data/lib/generators/express_translate/install_generator.rb +2 -0
  23. data/lib/generators/express_translate/reset_account_generator.rb +2 -0
  24. data/lib/generators/express_translate/reset_generator.rb +2 -1
  25. data/lib/generators/express_translate/seed_generator.rb +1 -0
  26. metadata +2 -3
  27. data/app/views/express_translate/options/_language.html.erb +0 -28
data/README.md CHANGED
@@ -21,57 +21,67 @@ Express Translate
21
21
 
22
22
  ##Installation
23
23
  ### 1. Gemfile
24
- ```bash
25
- gem 'rubify_dashboard', :git => 'git@github.com:RubifyTechnology/express_translate.git'
26
- ```
27
-
28
- ### 2. Install
29
- Open terminal and run:
30
-
31
- ```bash
32
- rails g express_translate:install
33
- ```
34
-
35
- ### 3. Setup
36
- Run on terminal.
37
- ```bash
38
- bundle install
39
- ```
24
+ ```bash
25
+ gem 'express_translate', '~> 1.0.0'
26
+ ```
27
+
28
+ ### 2. Setup
29
+ Run on terminal.
30
+ ```bash
31
+ bundle install
32
+ ```
33
+
34
+ ### 3. Install
35
+ Open terminal and run:
36
+
37
+ ```bash
38
+ rails g express_translate:install
39
+ ```
40
40
 
41
41
  ##Using
42
42
  ### Run
43
- Start Redis Server
44
- ```bash
45
- redis-server
46
- ```
43
+ Start Redis Server
44
+ ```bash
45
+ redis-server
46
+ ```
47
47
 
48
48
  ### Reset data
49
- ```bash
50
- rails g express_translate:reset
51
- ```
49
+ ```bash
50
+ rails g express_translate:reset
51
+ ```
52
52
 
53
53
  ### Reset Account
54
- ```bash
55
- rails g express_translate:reset_account
56
- ```
57
- Account list config in "/config/express_translate.yml"
58
- You can add account:
59
- ```bash
60
- account:
61
- -
62
- username: "abc_name"
63
- password: "abc_pass"
64
- ```
54
+ ```bash
55
+ rails g express_translate:reset_account
56
+ ```
57
+ Account list config in "/config/express_translate.yml"
58
+ You can add account:
59
+ ```bash
60
+ account:
61
+ -
62
+ username: "abc_name"
63
+ password: "abc_pass"
64
+ ```
65
65
  ### Login page
66
- You can see login page at:
67
- http://you_domain/express_translate/login
68
-
69
- * e.g: http://localhost:3000/express_translate/login
66
+ You can see login page at:
67
+ http://you_domain/express_translate/login
68
+
69
+ * e.g: http://localhost:3000/express_translate/login
70
70
 
71
71
  ### Packages management
72
- You can see at:
73
- http://you_domain/express_translate
72
+ You can see at:
73
+ http://you_domain/express_translate
74
+
75
+ * e.g: http://localhost:3000/express_translate
74
76
 
75
- * e.g: http://localhost:3000/express_translate
76
-
77
- Note: You can see before login. Account for login in config file ("/config/express_translate.yml").
77
+ Note: You can see before login. Account for login in config file ("/config/express_translate.yml").
78
+
79
+ ##Support
80
+
81
+ ### Files
82
+ Export and Import csv file
83
+
84
+ ### Application
85
+ Backend for Ruby on Rails
86
+
87
+ Get data with json (for Javascript)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.0
1
+ 1.0.1
@@ -313,6 +313,10 @@ body#express_translate {
313
313
  background: #0B61A4;
314
314
  }
315
315
 
316
+ &.add_files {
317
+ border:3px dotted #cacaca;
318
+ }
319
+
316
320
  .remove {
317
321
  background-image: url("remove.png");
318
322
  }
@@ -1,12 +1,19 @@
1
1
  class ExpressTranslate::AccountController < ExpressTranslate::BaseController
2
+ # Check login status for goto page
2
3
  before_filter :check_login
3
4
 
4
5
  include ExpressTranslate
5
6
 
7
+ # Login page html code only
6
8
  def login
7
9
  render layout: 'express_translate/login'
8
10
  end
9
11
 
12
+ # Login action
13
+ # Find account with username
14
+ # Change exists of account and change password for account (encoding password)
15
+ # If oke, new token for account login and update token for account
16
+ # Render json data for client Successful or Error
10
17
  def login_check
11
18
  account = Account.find(params[:username])
12
19
  if account.present? and account["password"] == Account.encoding(params[:password])
@@ -18,11 +25,14 @@ class ExpressTranslate::AccountController < ExpressTranslate::BaseController
18
25
  end
19
26
  end
20
27
 
28
+ # Create token for login action, random string
21
29
  def new_token
22
30
  o = [('a'..'z'), ('A'..'Z')].map { |i| i.to_a }.flatten
23
31
  string = (0...50).map { o[rand(o.length)] }.join
24
32
  end
25
33
 
34
+ # Check login status function
35
+ # If logined auto change location for Client
26
36
  def check_login
27
37
  if check_authentication
28
38
  redirect_to controller: "options", action: "index"
@@ -1,21 +1,38 @@
1
+ # Ajax action for Codes Controller
1
2
  class ExpressTranslate::Ajax::CodesController < ActionController::Base
3
+
4
+ # Include and require Libraries
2
5
  require 'redis'
3
6
  require 'json'
4
7
  require 'csv'
5
8
  include ExpressTranslate
6
9
 
10
+ # Add code
11
+ # The first: selector LanguageDetail want to add with Language ID and Package ID
12
+ # After: add code for LanguageDetail selected
13
+ # The finally: check status add and show html content for Client is successful or json data is error
7
14
  def code_add
8
15
  @lang_detail = LanguageDetail.info({'id'=> params[:lang], 'packages'=> params[:pack]})
9
16
  add = @lang_detail.add(params)
10
17
  add['success'] ? load_content_code(params) : (render :json => add)
11
18
  end
12
19
 
20
+ # Update code
21
+ # The first: selector LanguageDetail want to add with Language ID and Package ID
22
+ # Next step: selector code want to update Text for this
23
+ # Next step: Update if exists data and add for not exists data
24
+ # The finally: show html content for Client
13
25
  def code_update
14
- @lang_detail = LanguageDetail.info({'id'=> params[:lang], 'packages'=> params[:pack]})
26
+ @lang_detail = LanguageDetail.info({'id'=> params[:lang], 'packages'=> params[:pack]})
15
27
  @lang_detail.find(params[:code]).present? ? @lang_detail.update(params) : @lang_detail.add(params)
16
28
  load_content_code(params)
17
29
  end
18
30
 
31
+
32
+ # Delete code
33
+ # The first: selector LanguageDetail want to add with Language ID and Package ID
34
+ # Next step: find and remove code data
35
+ # The finally: show html content for Client
19
36
  def code_delete
20
37
  @lang_detail = LanguageDetail.info({'id'=> params[:lang], 'packages'=> params[:pack]})
21
38
  @lang_detail.delete(params[:code])
@@ -24,6 +41,9 @@ class ExpressTranslate::Ajax::CodesController < ActionController::Base
24
41
 
25
42
  private
26
43
 
44
+ # Load html contents code
45
+ # The first: selector Origin language
46
+ # The second: selector Language want to show
27
47
  def load_content_code(params)
28
48
  @origin_lang = Language.get_origin(params[:pack])
29
49
  @LanguageDetail = LanguageDetail
@@ -1,27 +1,43 @@
1
+ # Ajax action for Languages Controller
1
2
  class ExpressTranslate::Ajax::LanguagesController < ActionController::Base
3
+
4
+ # Include and require Libraries
2
5
  require 'redis'
3
6
  require 'json'
4
7
  require 'csv'
5
8
  include ExpressTranslate
6
9
 
10
+ # Add language
11
+ # Load html content when add Language
7
12
  def language_add
8
13
  load_content_language(params, Language.add(params))
9
14
  end
10
15
 
16
+ # Update language
17
+ # Load html content when update Language
11
18
  def language_update
12
19
  load_content_language(params, Language.update_by_id_packages(params[:old_id], params[:packages], params))
13
20
  end
14
21
 
22
+ # Delete language
23
+ # Load html content when delete Language
15
24
  def language_delete
16
25
  load_content_language(params, Language.delete_by_id_packages(params[:id], params[:packages]))
17
26
  end
18
27
 
28
+ # Set origin language
29
+ # Load html content when set origin Language for package
19
30
  def language_set_origin
20
31
  load_content_language(params, Language.set_origin(params[:id], params[:packages]))
21
32
  end
22
33
 
23
34
  private
24
35
 
36
+ # Load language html content
37
+ # The firstly: check status for action add, update, delete and set origin language
38
+ # get origin language for know max count => percent complete
39
+ # get max number language origin
40
+ # render to html content
25
41
  def load_content_language(params, check)
26
42
  if check['success']
27
43
  origin = Language.get_origin(params[:packages])
@@ -1,23 +1,36 @@
1
+ # Ajax action for Package Controller
1
2
  class ExpressTranslate::Ajax::PackagesController < ActionController::Base
3
+
4
+ # Include and require Libraries
2
5
  require 'redis'
3
6
  require 'json'
4
7
  require 'csv'
5
8
  include ExpressTranslate
6
9
 
10
+ # Add package
11
+ # Load html content when add Package
7
12
  def package_add
8
13
  load_content_package(Package.add(params))
9
14
  end
10
15
 
16
+ # Update package
17
+ # Load html content when update Package
11
18
  def package_update
12
19
  load_content_package(Package.update(params))
13
20
  end
14
21
 
22
+ # Delete package
23
+ # Load html content when delete Package
15
24
  def package_delete
16
25
  load_content_package(Package.delete(params[:id]))
17
26
  end
18
27
 
19
28
  private
20
29
 
30
+ # Load packages html content
31
+ # The firstly: check status for action add, update, delete package
32
+ # render to html content for successful
33
+ # render to json content for error
21
34
  def load_content_package(check)
22
35
  if check['success']
23
36
  @packages = Package.all
@@ -1,11 +1,13 @@
1
1
  class ExpressTranslate::BaseController < ActionController::Base
2
2
  include ExpressTranslate
3
-
3
+
4
+ # Check login status by cookie
4
5
  def check_authentication
5
6
  token_store = getCookie(request.headers["HTTP_COOKIE"], "token")
6
7
  return (token_store.present? and Account.find_by_token(token_store).present?)
7
8
  end
8
9
 
10
+ # Get cookie form header action
9
11
  def getCookie(string, key)
10
12
  if string.present?
11
13
  string.split(";").each do |cookie|
@@ -1,9 +1,12 @@
1
1
  class ExpressTranslate::FilesController < ExpressTranslate::BaseController
2
+
3
+ # Require or include Libraries
2
4
  before_filter :check_login_files
3
5
  require 'redis'
4
6
  require 'json'
5
7
  require 'csv'
6
8
 
9
+ # Export to csv file form redis database
7
10
  def export
8
11
  respond_to do |format|
9
12
  format.csv do
@@ -14,6 +17,8 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
14
17
  end
15
18
  end
16
19
 
20
+ # Export form csv file to redis database
21
+ # Upload csv file
17
22
  def import
18
23
  filename = Rails.root.join('public', "last_import.csv")
19
24
  File.open(filename, 'wb') do |file|
@@ -23,8 +28,18 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
23
28
  render text: "Uploaded"
24
29
  end
25
30
 
31
+ def import_yml
32
+ filename = Rails.root.join('public', "last_import.yml")
33
+ File.open(filename, 'wb') do |file|
34
+ file.write(params[:file_yml].read)
35
+ end
36
+ import_yml_file(File.open(filename, 'r').path)
37
+ render text: "Uploaded"
38
+ end
39
+
26
40
  private
27
41
 
42
+ # Check login status when excute with files
28
43
  def check_login_files
29
44
  redirect_to controller: "account", action: "login" if !check_authentication
30
45
  end
@@ -42,7 +57,7 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
42
57
  csv_string
43
58
  end
44
59
 
45
- # Import files
60
+ # Import csv file
46
61
  def import_csv(path)
47
62
  @before_row = []
48
63
  @last_package = {}
@@ -58,6 +73,14 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
58
73
  end
59
74
  end
60
75
 
76
+ # Import yml file
77
+ def import_yml_file(path)
78
+ data = YAML.load_file(path)
79
+ data.each do |lang|
80
+ # puts lang
81
+ end
82
+ end
83
+
61
84
  # Processing
62
85
  def exp_pack(csv)
63
86
  csv << [@package["id"], @package["text"]]
@@ -74,6 +97,7 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
74
97
  csv << []
75
98
  end
76
99
 
100
+ # Export row
77
101
  def exp_rows(csv)
78
102
  all_of_origin = LanguageDetail.info(@origin_lang).all
79
103
  all_of_origin.each_with_index do |item, index|
@@ -81,6 +105,7 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
81
105
  end
82
106
  end
83
107
 
108
+ # Export header row for file
84
109
  def exp_header(csv)
85
110
  header = ["No.", "Key", @origin_lang["text"]]
86
111
  @package["language"].each do |lang|
@@ -89,6 +114,7 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
89
114
  csv << header
90
115
  end
91
116
 
117
+ # Export data with row data
92
118
  def exp_row(csv, item, index)
93
119
  row = ["#{index+1}", item["code"], item["text"]]
94
120
  @package["language"].each do |lang|
@@ -100,6 +126,7 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
100
126
  csv << row
101
127
  end
102
128
 
129
+ # Add row when import file
103
130
  def add_row(row)
104
131
  if row[0].to_i > 0
105
132
  index_col = 0
@@ -110,6 +137,7 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
110
137
  end
111
138
  end
112
139
 
140
+ # Add details of row when import file
113
141
  def add_row_detail(row, cell_header, index_col)
114
142
  if row[index_col].present?
115
143
  lang_id = lang_text_to_id(cell_header)
@@ -117,6 +145,7 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
117
145
  end
118
146
  end
119
147
 
148
+ # Set header row for package
120
149
  def is_header_row(row)
121
150
  packages = Package.all.select{|pack| pack["id"] == @before_row[0]}
122
151
  if packages.count > 0
@@ -127,6 +156,7 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
127
156
  end
128
157
  end
129
158
 
159
+ # Clear old data in language
130
160
  def clear_lang(pack_id, row_header)
131
161
  row_header.each do |cell_header|
132
162
  lang_id = lang_text_to_id(cell_header)
@@ -134,6 +164,7 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
134
164
  end
135
165
  end
136
166
 
167
+ # Detect language id with text language
137
168
  def lang_text_to_id(text)
138
169
  languages = YAML.load_file("#{ExpressTranslate.root}/config/languages.yml")
139
170
  languages.each do |lang|
@@ -1,20 +1,25 @@
1
1
  class ExpressTranslate::OptionsController < ExpressTranslate::BaseController
2
2
 
3
+ # Check login status for controller
3
4
  before_filter :check_login
4
5
 
6
+ # Require and include Libraries
5
7
  require 'redis'
6
8
  require 'json'
7
9
  require 'csv'
8
-
9
10
  include ExpressTranslate
10
11
 
12
+ # Show all packages for client (html code) index page
13
+ # Get all packages
11
14
  def index
12
- # ExpressTranslate.reset
13
- # ExpressTranslate.seeds
14
15
  @packages = Package.all
15
16
  render :action => :index, layout: 'express_translate/translate'
16
17
  end
17
-
18
+
19
+ # Show all languages for client (html code) index page
20
+ # Get all languages of package ID
21
+ # Get origin languages
22
+ # Get max count of percent translate
18
23
  def languages
19
24
  @selects = YAML.load_file("#{ExpressTranslate.root}/config/languages.yml")
20
25
  origin = Language.get_origin(params[:packages])
@@ -25,6 +30,11 @@ class ExpressTranslate::OptionsController < ExpressTranslate::BaseController
25
30
  render :action => :languages, layout: 'express_translate/translate'
26
31
  end
27
32
 
33
+
34
+ # Show all codes for client (html code) index page
35
+ # Get all codes of package ID and language ID
36
+ # Get origin language
37
+ # Get language for show
28
38
  def language_detail
29
39
  @languages = Package.find(params[:package])['language']
30
40
  @origin_lang = Language.get_origin(params[:package])
@@ -34,7 +44,8 @@ class ExpressTranslate::OptionsController < ExpressTranslate::BaseController
34
44
  end
35
45
 
36
46
  private
37
-
47
+
48
+ # Check login status for controller
38
49
  def check_login
39
50
  if !check_authentication
40
51
  redirect_to controller: "account", action: "login"
@@ -1,11 +1,12 @@
1
1
  class ExpressTranslate::ServicesController < ExpressTranslate::BaseController
2
2
 
3
+ # Require and include Libraries
3
4
  require 'redis'
4
-
5
5
  include ExpressTranslate
6
6
 
7
7
  # SERVICE
8
8
 
9
+ # Get all languages in package with json data
9
10
  def service_languages
10
11
  respond_to do |format|
11
12
  format.json do
@@ -15,6 +16,7 @@ class ExpressTranslate::ServicesController < ExpressTranslate::BaseController
15
16
  end
16
17
  end
17
18
 
19
+ # Get all data of language with json data
18
20
  def service_language
19
21
  respond_to do |format|
20
22
  format.json do
@@ -31,6 +33,12 @@ class ExpressTranslate::ServicesController < ExpressTranslate::BaseController
31
33
 
32
34
  private
33
35
 
36
+ # Convert redis database to json data with key
37
+ # Nnew arrayfor store value level key
38
+ # ex: en.home.hello = "Hello"
39
+ # ["home" => {"hello"=> "Hello"}, {"hello"=> "Hello"}]
40
+ # Set data for array
41
+ # Support multi level keys
34
42
  def service_language_detail(key)
35
43
  path = key.split(".")
36
44
  i = path.count - 1
@@ -44,6 +52,17 @@ class ExpressTranslate::ServicesController < ExpressTranslate::BaseController
44
52
  extendObjects(@data, items[0])
45
53
  end
46
54
 
55
+ # Function for convert redis database to json data (support multi level)
56
+ # Check type of old data
57
+ # String: extend value
58
+ # Object: add attribute for object
59
+ # Nil: add attribute for object
60
+ # If type of old and new data is Object
61
+ # Extend new object for old object
62
+ # Description:
63
+ # obj1: old object
64
+ # obj2: new object
65
+ # Return: Object
47
66
  def extendObjects(obj1, obj2)
48
67
  if obj1.is_a?(String)
49
68
  if obj2.is_a?(String)
@@ -1,5 +1,5 @@
1
1
  <% @languages.each do |lang| %>
2
- <a class="lang origin_<%= lang['is_origin'] %>" href="/express_translate/language/<%= params[:packages] %>/<%= lang['id'] %>">
2
+ <a class="lang add_files origin_<%= lang['is_origin'] %>" href="/express_translate/language/<%= params[:packages] %>/<%= lang['id'] %>">
3
3
  <span><%= lang['text'].slice(0,1).capitalize + lang['text'].slice(1..-1) %></span>
4
4
  <p><%= (@LanguageDetail.info(lang).all.count.to_f / (@max == 0 ? 1 : @max) * 100).to_i %>%</p>
5
5
  <h5><%= @LanguageDetail.info(lang).all.count %>/<%= @max %></h5>
@@ -172,7 +172,75 @@
172
172
  $(".json").click(function(event) {
173
173
  event.preventDefault();
174
174
  openInNewTab(window.location.origin + "/express_translate/service/" + $(event.target).attr("data") + ".json")
175
- })
175
+ });
176
+
177
+ var obj = $(".lang");
178
+
179
+ obj.on('dragenter', function (e){
180
+ e.stopPropagation();
181
+ e.preventDefault();
182
+ $(this).removeClass("add_files");
183
+ });
184
+
185
+ obj.on('dragover', function (e){
186
+ e.stopPropagation();
187
+ e.preventDefault();
188
+ $(this).addClass("add_files");
189
+ });
190
+
191
+ obj.on('drop', function (e){
192
+ $(this).removeClass("add_files");
193
+ e.preventDefault();
194
+ var files = e.originalEvent.dataTransfer.files;
195
+ handleFileUpload(files, obj);
196
+ });
197
+
198
+ obj.on('dragleave', function (e) {
199
+ $(this).removeClass("add_files");
200
+ });
201
+
202
+ function handleFileUpload(files, obj) {
203
+ for (var i = 0; i < files.length; i++) {
204
+ var fd = new FormData();
205
+ fd.append('file_yml', files[i]);
206
+ sendFileToServer(fd);
207
+ }
208
+ }
209
+
210
+ function sendFileToServer(formData) {
211
+ var uploadURL ="/express_translate/import_yml";
212
+ var extraData ={};
213
+ var jqXHR = $.ajax({
214
+ xhr: function() {
215
+ var xhrobj = $.ajaxSettings.xhr();
216
+ if (xhrobj.upload) {
217
+ xhrobj.upload.addEventListener('progress', function(event) {
218
+ var percent = 0;
219
+ var position = event.loaded || event.position;
220
+ var total = event.total;
221
+ if (event.lengthComputable) {
222
+ percent = Math.ceil(position / total * 100);
223
+ }
224
+ }, false);
225
+ }
226
+ return xhrobj;
227
+ },
228
+ url: uploadURL,
229
+ type: "POST",
230
+ contentType:false,
231
+ processData: false,
232
+ cache: false,
233
+ data: formData,
234
+ success: function(data){
235
+ console.log(data)
236
+ $(".import").html("Import");
237
+ setTimeout(function(){
238
+ // window.location.reload();
239
+ }, 100);
240
+ }
241
+ });
242
+ }
243
+
176
244
  }
177
245
 
178
246
  runJavascriptsLanguage();
data/config/routes.rb CHANGED
@@ -6,6 +6,7 @@ Rails.application.routes.draw do
6
6
 
7
7
  get "/export" => "express_translate/files#export"
8
8
  post "/import" => "express_translate/files#import"
9
+ post "/import_yml" => "express_translate/files#import_yml"
9
10
 
10
11
  get "/login" => "express_translate/account#login"
11
12
  post "/login" => "express_translate/account#login_check"
@@ -5,7 +5,7 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = "express_translate"
8
- s.version = "1.0"
8
+ s.version = "1.0.1"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Karl"]
@@ -147,7 +147,6 @@ Gem::Specification.new do |s|
147
147
  "app/views/express_translate/ajax/packages/_content_index.html.erb",
148
148
  "app/views/express_translate/ajax/packages/package_update.html.erb",
149
149
  "app/views/express_translate/options/.DS_Store",
150
- "app/views/express_translate/options/_language.html.erb",
151
150
  "app/views/express_translate/options/index.html.erb",
152
151
  "app/views/express_translate/options/language_detail.html.erb",
153
152
  "app/views/express_translate/options/languages.html.erb",
@@ -1,3 +1,4 @@
1
+ # Class in my gem
1
2
  require 'express_translate/express_translate_model'
2
3
  require 'express_translate/database_management'
3
4
  require 'express_translate/account_management'
@@ -13,6 +14,7 @@ require 'seeds/accounts_seed'
13
14
  # Lib
14
15
  require 'redis'
15
16
 
17
+ # Main module for my gem
16
18
  module ExpressTranslate
17
19
 
18
20
  class << self; attr_accessor :package, :language, :url end
@@ -21,6 +23,8 @@ module ExpressTranslate
21
23
  @language = ""
22
24
  @url = ""
23
25
 
26
+ # Change language locals for I18N
27
+ # lang: is a code of language want to change for backend
24
28
  def language(lang)
25
29
  I18n.locale = "#{YAML.load_file(Rails.root.to_s + '/config/express_translate.yml')['package']['id']}#{lang}"
26
30
  end
@@ -51,9 +55,10 @@ module ExpressTranslate
51
55
  end
52
56
 
53
57
  # def initialize
54
- #
55
- # end
58
+ #
59
+ # end
56
60
 
61
+ # Setup My gem
57
62
  def self.setup
58
63
  yield self
59
64
  end
@@ -4,21 +4,24 @@ module ExpressTranslate
4
4
  # password:
5
5
  require "base64"
6
6
 
7
- class Account < RLangModel
7
+ class Account < ExpressTranslateModel
8
8
  @name = "account"
9
9
  @primary = "username"
10
10
  @attr = "password", "token"
11
11
 
12
+ # Modify account when add (Encoding password)
12
13
  def self.add(params)
13
14
  params[:password] = self.encoding(params[:password])
14
15
  super(params)
15
16
  end
16
17
 
18
+ # Find account with token, check status login bt cookie
17
19
  def self.find_by_token(token)
18
20
  _find = self.all.select{|s| (s["token"] == token)}
19
21
  return _find.count > 0 ? _find[0] : nil
20
22
  end
21
23
 
24
+ # Ecoding password
22
25
  def self.encoding(string)
23
26
  encode = Base64.encode64(string)
24
27
  encode = encode.split("=").join()
@@ -4,16 +4,24 @@ module ExpressTranslate
4
4
  # ......
5
5
  # ......
6
6
 
7
- class RLangModel
8
-
7
+ class ExpressTranslateModel
8
+ # Attributes for table
9
9
  class << self; attr_accessor :name, :primary, :has_many, :attr, :unique end
10
10
  # attr_accessor :
11
+
12
+ # Config for item
13
+ # List table relationship
11
14
  @has_many = []
15
+ # Table name
12
16
  @name = "express_translate"
17
+ # Primary key for table
13
18
  @primary = "id"
19
+ # All attributes
14
20
  @attr = ""
21
+ # @unique for options check when add data
15
22
  @unique = ""
16
23
 
24
+ # get all item in table
17
25
  def self.all
18
26
  data = Database.get(@name)
19
27
  data = data.nil? ? [] : (data.is_a?(Array) ? data : [].push(data))
@@ -22,14 +30,21 @@ module ExpressTranslate
22
30
  data
23
31
  end
24
32
 
33
+ # Save obj to redis database
34
+ # Synchronize data to redis database
25
35
  def self.save(obj)
26
36
  Database.set(@name, self.protect_attr_items(obj))
27
37
  end
28
38
 
39
+ # Clear all data of table
29
40
  def self.destroy
30
41
  Database.del(@name)
31
42
  end
32
43
 
44
+ # Add item with params
45
+ # Check primary key for present
46
+ # Check unique data
47
+ # Return messages
33
48
  def self.add(params)
34
49
  if JSON.parse(params.to_json)[@primary] == ""
35
50
  return self.primary_nil
@@ -43,13 +58,19 @@ module ExpressTranslate
43
58
  end
44
59
  end
45
60
 
61
+ # Delete item by id
62
+ # Remove item with primary key
46
63
  def self.delete(id)
47
64
  all = self.all
48
65
  count_before = all.count
49
66
  all.reject!{|package| package[@primary] == id}
50
67
  return self.change_data(count_before, all.count, all)
51
68
  end
52
-
69
+
70
+ # Update item by params
71
+ # Remove old item
72
+ # Add new item with exsits data
73
+ # Return json data for status
53
74
  def self.update(params)
54
75
  all = self.all
55
76
  count_before = all.count
@@ -59,6 +80,9 @@ module ExpressTranslate
59
80
  return self.change_data(count_before, count_after, all)
60
81
  end
61
82
 
83
+ # Find item by code
84
+ # Select item with primary key
85
+ # return limit items selected
62
86
  def self.find(code)
63
87
  data = self.all
64
88
  search = data.select{|package| package[@primary] == code}
@@ -72,6 +96,7 @@ module ExpressTranslate
72
96
 
73
97
  private
74
98
 
99
+ # Check duplicate primary key or list unique
75
100
  def self.check_unique_allow_add(item)
76
101
  if @unique.present?
77
102
  @unique = @unique.is_a?(Array) ? @unique : [@unique]
@@ -86,6 +111,7 @@ module ExpressTranslate
86
111
  end
87
112
  end
88
113
 
114
+ # Check attributes for allow store for list items
89
115
  def self.protect_attr_items(items)
90
116
  items_copy = []
91
117
  items.each do |item|
@@ -94,6 +120,7 @@ module ExpressTranslate
94
120
  return items_copy
95
121
  end
96
122
 
123
+ # Check attributes for allow store only one item
97
124
  def self.protect_attr(item)
98
125
  if item.to_json == ""
99
126
  puts item.inspect
@@ -111,12 +138,14 @@ module ExpressTranslate
111
138
  return item_copy
112
139
  end
113
140
 
141
+ # Add relationship for model for item list
114
142
  def self.add_has_many(items)
115
143
  items.each do |item|
116
144
  self.add_has_many_item(item)
117
145
  end
118
146
  end
119
147
 
148
+ # Add relationship for model only one item
120
149
  def self.add_has_many_item(item)
121
150
  if @has_many.present?
122
151
  @has_many = @has_many.is_a?(Array) ? @has_many : [@has_many]
@@ -128,8 +157,9 @@ module ExpressTranslate
128
157
  end
129
158
  end
130
159
 
131
- # Return
160
+ # Return messages
132
161
 
162
+ # Messages for change data
133
163
  def self.change_data(before, after, data)
134
164
  if before > after
135
165
  self.save(data)
@@ -138,19 +168,23 @@ module ExpressTranslate
138
168
  return self.notfound
139
169
  end
140
170
  end
141
-
171
+
172
+ # Messages for not found data
142
173
  def self.notfound
143
174
  return {"success"=> false, "error"=> "Data is not found!"}
144
175
  end
145
176
 
177
+ # Messages for duplicate primary key
146
178
  def self.primary_key
147
179
  return {"success" => false, "error" => "Duplicate primary key"}
148
180
  end
149
181
 
182
+ # Messages for primary key is nil
150
183
  def self.primary_nil
151
184
  return {"success" => false, "error" => "Primary data is nil!"}
152
185
  end
153
186
 
187
+ # Messages for successful
154
188
  def self.successful(data)
155
189
  return {"success" => true, "#{@name}" => data}
156
190
  end
@@ -3,7 +3,7 @@ module ExpressTranslate
3
3
  # code: no_one
4
4
  # text: Number one....
5
5
 
6
- class LanguageDetail < RLangModel
6
+ class LanguageDetail < ExpressTranslateModel
7
7
  @name = "lang_package_id"
8
8
  @primary = "code"
9
9
  @attr = "text"
@@ -4,16 +4,18 @@ module ExpressTranslate
4
4
  # text: English
5
5
  # packages: be
6
6
 
7
- class Language < RLangModel
7
+ class Language < ExpressTranslateModel
8
8
  @name = "languages"
9
9
  @primary = "id"
10
10
  @attr = "text", "packages", "is_origin"
11
11
  @unique = "id", "packages"
12
12
 
13
+ # Remove package by ID package
13
14
  def self.delete_by_id_packages(id, packages)
14
15
  return self.reject_with_id_packages(id, packages)
15
16
  end
16
17
 
18
+ # Update package by item id and ID package
17
19
  def self.update_by_id_packages(old_id, packages, params)
18
20
  all = self.all
19
21
  return self.primary_key if self.get_with_id_packages(params[:id], packages).present?
@@ -21,6 +23,7 @@ module ExpressTranslate
21
23
  return self.check_update_data(old_id, packages, params, self.add(params))
22
24
  end
23
25
 
26
+ # Set origin language id and packages id
24
27
  def self.set_origin(id, packages)
25
28
  all = self.all
26
29
  origin_old = self.get_origin(packages)
@@ -33,6 +36,7 @@ module ExpressTranslate
33
36
  return self.notfound
34
37
  end
35
38
 
39
+ # Get origin language id and packages id
36
40
  def self.get_origin(packages)
37
41
  origin = self.all.select{|lang| (lang["packages"] == packages and lang["is_origin"] == true)}
38
42
  return origin[0] if origin.count > 0
@@ -41,6 +45,7 @@ module ExpressTranslate
41
45
 
42
46
  private
43
47
 
48
+ # Remove Language by ID and Package ID
44
49
  def self.reject_with_id_packages(id, packages)
45
50
  all_reject = self.all
46
51
  count_before = all_reject.count
@@ -48,6 +53,7 @@ module ExpressTranslate
48
53
  return self.change_data(count_before, all_reject.count, all_reject)
49
54
  end
50
55
 
56
+ # Update status origin for language
51
57
  def self.update_origin_only(id, packages, is_true)
52
58
  this = self.get_with_id_packages(id, packages)
53
59
  this["is_origin"] = is_true
@@ -3,7 +3,7 @@ module ExpressTranslate
3
3
  # id: be
4
4
  # text: Backend
5
5
 
6
- class Package < RLangModel
6
+ class Package < ExpressTranslateModel
7
7
  @name = "packages"
8
8
  @primary = "id"
9
9
  @attr = "text"
@@ -8,10 +8,12 @@ module ExpressTranslate
8
8
 
9
9
  include ExpressTranslate
10
10
 
11
+ # Copy config file for my gem
11
12
  def create_file_config
12
13
  template "config/express_translate.yml", "config/express_translate.yml"
13
14
  end
14
15
 
16
+ # Seed data for redis database
15
17
  def seeds_data
16
18
  ExpressTranslate.seeds
17
19
  end
@@ -2,6 +2,8 @@ module ExpressTranslate
2
2
  class ResetAccountGenerator < Rails::Generators::Base
3
3
  include ExpressTranslate
4
4
 
5
+ # Reset all account
6
+ # Synchronize account with config file
5
7
  def reset_data
6
8
  Database.redis.del("account")
7
9
  Account.seed
@@ -1,7 +1,8 @@
1
1
  module ExpressTranslate
2
2
  class ResetGenerator < Rails::Generators::Base
3
3
  include ExpressTranslate
4
-
4
+
5
+ # Clear all data for redis database
5
6
  def reset_data
6
7
  ExpressTranslate.reset
7
8
  puts "Reset successful!"
@@ -2,6 +2,7 @@ module ExpressTranslate
2
2
  class SeedGenerator < Rails::Generators::Base
3
3
  include ExpressTranslate
4
4
 
5
+ # Seed data for redis database
5
6
  def seed_data
6
7
  ExpressTranslate.seeds
7
8
  puts "Seed data is successful!"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: express_translate
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: 1.0.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -261,7 +261,6 @@ files:
261
261
  - app/views/express_translate/ajax/packages/_content_index.html.erb
262
262
  - app/views/express_translate/ajax/packages/package_update.html.erb
263
263
  - app/views/express_translate/options/.DS_Store
264
- - app/views/express_translate/options/_language.html.erb
265
264
  - app/views/express_translate/options/index.html.erb
266
265
  - app/views/express_translate/options/language_detail.html.erb
267
266
  - app/views/express_translate/options/languages.html.erb
@@ -356,7 +355,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
356
355
  version: '0'
357
356
  segments:
358
357
  - 0
359
- hash: 4372043879744402579
358
+ hash: -3049154278621812228
360
359
  required_rubygems_version: !ruby/object:Gem::Requirement
361
360
  none: false
362
361
  requirements:
@@ -1,28 +0,0 @@
1
- <ul>
2
- <!-- <% en_list.each do |key,value| %>
3
- <% if value.class != Array %>
4
- <li key='<%= key %>'>
5
- <%= @trans[key] %>
6
- <input type='text' value='<%= @trans[key] %>' readonly='readonly' class='translate-box hidden' />
7
- </li>
8
- <% else %>
9
- <li>
10
- <ol>
11
- <% value.each_with_index do |from_text_section, index| %>
12
- <%
13
- from_text_section = from_text_section.to_s
14
- line_size = 100
15
- # this is needed so the controller doesn't freak out when there is no translations found
16
- # for this element yet...
17
- to_text = Array.new if to_text.blank?
18
- %>
19
- <li key='<%= key %>[<%=index%>]'>
20
- <%= @trans[key][index] if @trans[key] %>
21
- <input type='text' value='<%= trans[key] ? [index] : '' %>' readonly='readonly' class='translate-box hidden' />
22
- </li>
23
- <% end %>
24
- </ol>
25
- </li>
26
- <% end %>
27
- <% end %> -->
28
- </ul>