express_translate 1.0.2 → 1.0.3
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.
- data/README.md +7 -4
- data/VERSION +1 -1
- data/app/assets/stylesheets/express_translate/express_translate.css.scss +27 -1
- data/app/controllers/express_translate/files_controller.rb +28 -18
- data/app/views/express_translate/ajax/languages/_content_language.html.erb +1 -1
- data/app/views/express_translate/ajax/packages/_content_index.html.erb +9 -1
- data/app/views/express_translate/options/index.html.erb +68 -1
- data/app/views/express_translate/options/languages.html.erb +1 -69
- data/express_translate.gemspec +2 -2
- metadata +3 -3
data/README.md
CHANGED
@@ -22,7 +22,7 @@ Express Translate
|
|
22
22
|
##Installation
|
23
23
|
### 1. Gemfile
|
24
24
|
```bash
|
25
|
-
gem 'express_translate', '~> 1.0.
|
25
|
+
gem 'express_translate', '~> 1.0.3'
|
26
26
|
```
|
27
27
|
|
28
28
|
### 2. Setup
|
@@ -84,9 +84,12 @@ Note: You can see before login. Account for login in config file ("/config/expre
|
|
84
84
|
##Support
|
85
85
|
|
86
86
|
### Files
|
87
|
-
|
87
|
+
#### Import
|
88
|
+
* CSV file
|
89
|
+
* YML file
|
90
|
+
#### Export
|
91
|
+
* CSV file
|
88
92
|
|
89
93
|
### Application
|
90
94
|
Backend for Ruby on Rails
|
91
|
-
|
92
|
-
Get data with json (for Javascript)
|
95
|
+
Get data with json (for Javascript) => Development
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.0.
|
1
|
+
1.0.3
|
@@ -112,7 +112,7 @@ body#express_translate {
|
|
112
112
|
&:hover {
|
113
113
|
box-shadow:0px 0px 3px #665;
|
114
114
|
background: #398ac4;
|
115
|
-
p {display:none;}
|
115
|
+
& > p {display:none;}
|
116
116
|
h5 {display:block;}
|
117
117
|
h4 {display:block;}
|
118
118
|
.tool {
|
@@ -388,6 +388,32 @@ body#express_translate {
|
|
388
388
|
}
|
389
389
|
}
|
390
390
|
|
391
|
+
&.wait {
|
392
|
+
&:hover {
|
393
|
+
.tool {
|
394
|
+
z-index:-1;
|
395
|
+
opacity:0;
|
396
|
+
}
|
397
|
+
};
|
398
|
+
.waiting {
|
399
|
+
display:block;
|
400
|
+
}
|
401
|
+
}
|
402
|
+
|
403
|
+
.waiting {
|
404
|
+
background: rgba(0,0,0,0.6);
|
405
|
+
width:100%;
|
406
|
+
height:100%;
|
407
|
+
position:relative;
|
408
|
+
top:0px;
|
409
|
+
left:0px;
|
410
|
+
border-radius:200px;
|
411
|
+
display:none;
|
412
|
+
.bubblingG {
|
413
|
+
margin-left:-30px;
|
414
|
+
}
|
415
|
+
}
|
416
|
+
|
391
417
|
span {
|
392
418
|
text-align:center;
|
393
419
|
width:90%;
|
@@ -33,7 +33,9 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
|
|
33
33
|
File.open(filename, 'wb') do |file|
|
34
34
|
file.write(params[:file_yml].read)
|
35
35
|
end
|
36
|
-
|
36
|
+
@list_data = []
|
37
|
+
lang_id = import_yml_file(File.open(filename, 'r').path)
|
38
|
+
add_data_form_list(params["pack"], lang_id)
|
37
39
|
render text: "Uploaded"
|
38
40
|
end
|
39
41
|
|
@@ -76,23 +78,31 @@ class ExpressTranslate::FilesController < ExpressTranslate::BaseController
|
|
76
78
|
# Import yml file
|
77
79
|
def import_yml_file(path)
|
78
80
|
data = YAML.load_file(path)
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
81
|
+
data.each do |lang|
|
82
|
+
@list_data = to_shallow_hash(lang[1])
|
83
|
+
return lang[0]
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
def add_data_form_list(pack, lang)
|
88
|
+
language_detail = LanguageDetail.info({"id"=> lang, "packages"=> pack})
|
89
|
+
language_detail.destroy
|
90
|
+
@list_data.each do |item|
|
91
|
+
language_detail.add({code: item[0], text: item[1]})
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def to_shallow_hash(hash)
|
96
|
+
hash.inject({}) do |shallow_hash, (key, value)|
|
97
|
+
if value.is_a?(Hash)
|
98
|
+
to_shallow_hash(value).each do |sub_key, sub_value|
|
99
|
+
shallow_hash[[key, sub_key].join(".")] = sub_value
|
100
|
+
end
|
101
|
+
else
|
102
|
+
shallow_hash[key.to_s] = value
|
103
|
+
end
|
104
|
+
shallow_hash
|
105
|
+
end
|
96
106
|
end
|
97
107
|
|
98
108
|
# Processing
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% @languages.each do |lang| %>
|
2
|
-
<a class="lang
|
2
|
+
<a class="lang 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>
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<% @packages.each do |package| %>
|
2
|
-
<a class="lang package <%= package['language'].count > 1 ? "multi" : "" %>" href="/express_translate/package/<%= package['id'] %>">
|
2
|
+
<a data="<%= package['id'] %>" class="lang package <%= package['language'].count > 1 ? "multi" : "" %>" href="/express_translate/package/<%= package['id'] %>">
|
3
3
|
<span><%= package['text'].slice(0,1).capitalize + package['text'].slice(1..-1) %></span>
|
4
4
|
<p><%= package['language'].count %></p>
|
5
5
|
<div class="list_review">
|
@@ -12,6 +12,14 @@
|
|
12
12
|
<div class="tool setting" data="<%= package['id'] %>" text="<%= package['text'] %>"></div>
|
13
13
|
<div class="tool json" data="<%= package['id'] %>"></div>
|
14
14
|
</div>
|
15
|
+
|
16
|
+
<div class="waiting">
|
17
|
+
<div class="bubblingG">
|
18
|
+
<p id="bubblingG_1"></p>
|
19
|
+
<p id="bubblingG_2"></p>
|
20
|
+
<p id="bubblingG_3"></p>
|
21
|
+
</div>
|
22
|
+
</div>
|
15
23
|
</a>
|
16
24
|
<div class="delete_dialog_<%= package['id'] %>" style="display: none">
|
17
25
|
<h4>Are you sure you want to delete?</br><%= package['text'] %></h4>
|
@@ -147,7 +147,74 @@
|
|
147
147
|
$(".json").click(function(event) {
|
148
148
|
event.preventDefault();
|
149
149
|
openInNewTab(window.location.origin + "/express_translate/service/" + $(event.target).attr("data") + ".json");
|
150
|
-
})
|
150
|
+
});
|
151
|
+
|
152
|
+
var obj = $(".package");
|
153
|
+
|
154
|
+
obj.on('dragenter', function (e){
|
155
|
+
e.stopPropagation();
|
156
|
+
e.preventDefault();
|
157
|
+
$(this).removeClass("add_files");
|
158
|
+
});
|
159
|
+
|
160
|
+
obj.on('dragover', function (e){
|
161
|
+
e.stopPropagation();
|
162
|
+
e.preventDefault();
|
163
|
+
$(this).addClass("add_files");
|
164
|
+
});
|
165
|
+
|
166
|
+
obj.on('drop', function (e){
|
167
|
+
$(this).removeClass("add_files");
|
168
|
+
e.preventDefault();
|
169
|
+
var files = e.originalEvent.dataTransfer.files;
|
170
|
+
handleFileUpload(files, obj);
|
171
|
+
});
|
172
|
+
|
173
|
+
obj.on('dragleave', function (e) {
|
174
|
+
$(this).removeClass("add_files");
|
175
|
+
});
|
176
|
+
|
177
|
+
function handleFileUpload(files, obj) {
|
178
|
+
obj.addClass("wait");
|
179
|
+
for (var i = 0; i < files.length; i++) {
|
180
|
+
var fd = new FormData();
|
181
|
+
fd.append("pack", obj.attr("data"));
|
182
|
+
fd.append('file_yml', files[i]);
|
183
|
+
sendFileToServer(fd, obj);
|
184
|
+
}
|
185
|
+
}
|
186
|
+
|
187
|
+
function sendFileToServer(formData, obj) {
|
188
|
+
var uploadURL ="/express_translate/import_yml";
|
189
|
+
var jqXHR = $.ajax({
|
190
|
+
xhr: function() {
|
191
|
+
var xhrobj = $.ajaxSettings.xhr();
|
192
|
+
if (xhrobj.upload) {
|
193
|
+
xhrobj.upload.addEventListener('progress', function(event) {
|
194
|
+
var percent = 0;
|
195
|
+
var position = event.loaded || event.position;
|
196
|
+
var total = event.total;
|
197
|
+
if (event.lengthComputable) {
|
198
|
+
percent = Math.ceil(position / total * 100);
|
199
|
+
console.log(percent)
|
200
|
+
}
|
201
|
+
}, false);
|
202
|
+
}
|
203
|
+
return xhrobj;
|
204
|
+
},
|
205
|
+
url: uploadURL,
|
206
|
+
type: "POST",
|
207
|
+
contentType:false,
|
208
|
+
processData: false,
|
209
|
+
cache: false,
|
210
|
+
data: formData,
|
211
|
+
success: function(data){
|
212
|
+
console.log(data)
|
213
|
+
// Uploaded
|
214
|
+
obj.removeClass("wait");
|
215
|
+
}
|
216
|
+
});
|
217
|
+
}
|
151
218
|
}
|
152
219
|
|
153
220
|
runJavascriptsIndex();
|
@@ -172,75 +172,7 @@
|
|
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
|
-
});
|
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
|
-
|
175
|
+
});
|
244
176
|
}
|
245
177
|
|
246
178
|
runJavascriptsLanguage();
|
data/express_translate.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
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.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Karl"]
|
12
|
-
s.date = "2014-
|
12
|
+
s.date = "2014-07-01"
|
13
13
|
s.description = "longer description of your gem"
|
14
14
|
s.email = "karl@rubify.com"
|
15
15
|
s.extra_rdoc_files = [
|
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.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-07-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: redis
|
@@ -355,7 +355,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
355
355
|
version: '0'
|
356
356
|
segments:
|
357
357
|
- 0
|
358
|
-
hash:
|
358
|
+
hash: 2342580513378280072
|
359
359
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
360
360
|
none: false
|
361
361
|
requirements:
|