lesli_babel 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Rakefile +5 -0
- data/app/assets/config/lesli_babel_manifest.js +7 -0
- data/app/assets/images/lesli_babel/babel-logo.svg +157 -0
- data/app/assets/javascripts/lesli_babel/application.js +3288 -0
- data/app/assets/stylesheets/lesli_babel/application.scss +41 -0
- data/app/assets/stylesheets/lesli_babel/dashboards.scss +55 -0
- data/app/assets/stylesheets/lesli_babel/modules.scss +33 -0
- data/app/assets/stylesheets/lesli_babel/translations.scss +58 -0
- data/app/controllers/lesli_babel/application_controller.rb +37 -0
- data/app/controllers/lesli_babel/buckets_controller.rb +79 -0
- data/app/controllers/lesli_babel/clones_controller.rb +80 -0
- data/app/controllers/lesli_babel/dashboards_controller.rb +38 -0
- data/app/controllers/lesli_babel/modules_controller.rb +91 -0
- data/app/controllers/lesli_babel/relevants_controller.rb +38 -0
- data/app/controllers/lesli_babel/strings_controller.rb +142 -0
- data/app/controllers/lesli_babel/translations_controller.rb +134 -0
- data/app/jobs/lesli_babel/application_job.rb +7 -0
- data/app/mailers/lesli_babel/application_mailer.rb +6 -0
- data/app/models/lesli_babel/application_record.rb +36 -0
- data/app/models/lesli_babel/bucket.rb +6 -0
- data/app/models/lesli_babel/clone.rb +24 -0
- data/app/models/lesli_babel/dashboard.rb +35 -0
- data/app/models/lesli_babel/module.rb +35 -0
- data/app/models/lesli_babel/relevant.rb +21 -0
- data/app/models/lesli_babel/string/activity.rb +5 -0
- data/app/models/lesli_babel/string/discussion.rb +68 -0
- data/app/models/lesli_babel/string.rb +225 -0
- data/app/models/lesli_babel/translation.rb +5 -0
- data/app/services/lesli_babel/module_service.rb +18 -0
- data/app/services/lesli_babel/old/translations_android_service.rb +82 -0
- data/app/services/lesli_babel/old/translations_clone_service.rb +161 -0
- data/app/services/lesli_babel/old/translations_flutter_service.rb +102 -0
- data/app/services/lesli_babel/old/translations_ios_service.rb +119 -0
- data/app/services/lesli_babel/old/translations_js_service.rb +114 -0
- data/app/services/lesli_babel/old/translations_middleman_service.rb +77 -0
- data/app/services/lesli_babel/old/translations_rails_service.rb +119 -0
- data/app/services/lesli_babel/old/translations_service.rb +97 -0
- data/app/services/lesli_babel/old/translations_synchronization_service.rb +215 -0
- data/app/services/lesli_babel/string_service.rb +80 -0
- data/app/views/lesli_babel/buckets/_form.html.erb +17 -0
- data/app/views/lesli_babel/buckets/edit.html.erb +6 -0
- data/app/views/lesli_babel/buckets/index.html.erb +25 -0
- data/app/views/lesli_babel/buckets/new.html.erb +5 -0
- data/app/views/lesli_babel/buckets/show.html.erb +4 -0
- data/app/views/lesli_babel/clones/_form.html.erb +19 -0
- data/app/views/lesli_babel/clones/edit.html.erb +20 -0
- data/app/views/lesli_babel/clones/index.html.erb +20 -0
- data/app/views/lesli_babel/clones/new.html.erb +20 -0
- data/app/views/lesli_babel/clones/show.html.erb +20 -0
- data/app/views/lesli_babel/dashboards/show.html.erb +1 -0
- data/app/views/lesli_babel/dashboards/stats..html.erb +1 -0
- data/app/views/lesli_babel/modules/_form.html.erb +17 -0
- data/app/views/lesli_babel/modules/edit.html.erb +1 -0
- data/app/views/lesli_babel/modules/index.html.erb +1 -0
- data/app/views/lesli_babel/modules/new.html.erb +1 -0
- data/app/views/lesli_babel/modules/show.html.erb +1 -0
- data/app/views/lesli_babel/partials/_engine-navigation.html.erb +37 -0
- data/app/views/lesli_babel/partials/_engine-sidebar.html.erb +45 -0
- data/app/views/lesli_babel/relevants/edit.html.erb +20 -0
- data/app/views/lesli_babel/relevants/index.html.erb +21 -0
- data/app/views/lesli_babel/relevants/new.html.erb +20 -0
- data/app/views/lesli_babel/relevants/show.html.erb +20 -0
- data/app/views/lesli_babel/string/activities/_form.html.erb +17 -0
- data/app/views/lesli_babel/string/activities/edit.html.erb +6 -0
- data/app/views/lesli_babel/string/activities/index.html.erb +25 -0
- data/app/views/lesli_babel/string/activities/new.html.erb +5 -0
- data/app/views/lesli_babel/string/activities/show.html.erb +4 -0
- data/app/views/lesli_babel/string/discussions/_form.html.erb +17 -0
- data/app/views/lesli_babel/string/discussions/edit.html.erb +6 -0
- data/app/views/lesli_babel/string/discussions/index.html.erb +25 -0
- data/app/views/lesli_babel/string/discussions/new.html.erb +5 -0
- data/app/views/lesli_babel/string/discussions/show.html.erb +4 -0
- data/app/views/lesli_babel/strings/_form.html.erb +17 -0
- data/app/views/lesli_babel/strings/edit.html.erb +6 -0
- data/app/views/lesli_babel/strings/index.html.erb +25 -0
- data/app/views/lesli_babel/strings/new.html.erb +5 -0
- data/app/views/lesli_babel/strings/show.html.erb +4 -0
- data/app/views/lesli_babel/translations/_form.html.erb +17 -0
- data/app/views/lesli_babel/translations/edit.html.erb +6 -0
- data/app/views/lesli_babel/translations/index.html.erb +1 -0
- data/app/views/lesli_babel/translations/new.html.erb +5 -0
- data/app/views/lesli_babel/translations/show.html.erb +1 -0
- data/config/routes.rb +63 -0
- data/db/migrate/v1.0/0901100110_create_lesli_babel_modules.rb +42 -0
- data/db/migrate/v1.0/0901110110_create_lesli_babel_buckets.rb +43 -0
- data/db/migrate/v1.0/0901120110_create_lesli_babel_strings.rb +80 -0
- data/lib/lesli_babel/engine.rb +54 -0
- data/lib/lesli_babel/version.rb +3 -0
- data/lib/lesli_babel.rb +6 -0
- data/lib/tasks/lesli_babel_tasks.rake +121 -0
- data/lib/vue/application.js +46 -0
- data/lib/vue/apps/dashboards/show.vue +85 -0
- data/lib/vue/apps/modules/show.vue +97 -0
- data/lib/vue/apps/relevants/index.vue +47 -0
- data/lib/vue/apps/translations/index.vue +64 -0
- data/lib/vue/components/actions.vue +29 -0
- data/lib/vue/components/form-label-editor.vue +439 -0
- data/lib/vue/components/form-string-new.vue +171 -0
- data/lib/vue/stores/module.js +49 -0
- data/lib/vue/stores/statistics.js +42 -0
- data/lib/vue/stores/strings.js +141 -0
- data/lib/vue/stores/translations.js +73 -0
- data/license +674 -0
- data/readme.md +19 -0
- metadata +149 -0
@@ -0,0 +1,41 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
6
|
+
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
21
|
+
|
22
|
+
Made with ♥ by https://www.lesli.tech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
31
|
+
*/
|
32
|
+
|
33
|
+
|
34
|
+
// // ·
|
35
|
+
body.lesli-babel-dashboard { @import "./dashboards"; }
|
36
|
+
|
37
|
+
|
38
|
+
// // ·
|
39
|
+
// body.cloud_babel-modules,
|
40
|
+
// body.cloud_babel-relevants,
|
41
|
+
// body.cloud_babel-translations { @import "./translations"; }
|
@@ -0,0 +1,55 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
6
|
+
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
21
|
+
|
22
|
+
Made with ♥ by https://www.lesli.tech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
31
|
+
*/
|
32
|
+
|
33
|
+
|
34
|
+
// ·
|
35
|
+
@import "lesli/templates/dashboards";
|
36
|
+
@import "flag-icon";
|
37
|
+
|
38
|
+
// ·
|
39
|
+
.locales {
|
40
|
+
@include lesli-css-flex-columns($column-width: 200px);
|
41
|
+
justify-content: start;
|
42
|
+
|
43
|
+
.card {
|
44
|
+
padding: 1.8rem 1rem;
|
45
|
+
text-align: center;
|
46
|
+
box-shadow: $lesli-box-shadow;
|
47
|
+
background-color: white;
|
48
|
+
border-radius: 4px;
|
49
|
+
|
50
|
+
span.flag-icon {
|
51
|
+
border-radius: 4px;
|
52
|
+
box-shadow: $lesli-box-shadow;
|
53
|
+
}
|
54
|
+
}
|
55
|
+
}
|
@@ -0,0 +1,33 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Copyright (c) 2020, all rights reserved.
|
4
|
+
|
5
|
+
All the information provided by this platform is protected by international laws related to
|
6
|
+
industrial property, intellectual property, copyright and relative international laws.
|
7
|
+
All intellectual or industrial property rights of the code, texts, trade mark, design,
|
8
|
+
pictures and any other information belongs to the owner of this platform.
|
9
|
+
|
10
|
+
Without the written permission of the owner, any replication, modification,
|
11
|
+
transmission, publication is strictly forbidden.
|
12
|
+
|
13
|
+
For more information read the license file including with this software.
|
14
|
+
|
15
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
16
|
+
// ·
|
17
|
+
|
18
|
+
*/
|
19
|
+
|
20
|
+
|
21
|
+
// ·
|
22
|
+
@import "templates/component";
|
23
|
+
|
24
|
+
|
25
|
+
// ·
|
26
|
+
.card {
|
27
|
+
margin-bottom: 1.2rem;
|
28
|
+
}
|
29
|
+
|
30
|
+
|
31
|
+
.pagination-link {
|
32
|
+
justify-content: center;
|
33
|
+
}
|
@@ -0,0 +1,58 @@
|
|
1
|
+
/*
|
2
|
+
|
3
|
+
Copyright (c) 2020, all rights reserved.
|
4
|
+
|
5
|
+
All the information provided by this platform is protected by international laws related to
|
6
|
+
industrial property, intellectual property, copyright and relative international laws.
|
7
|
+
All intellectual or industrial property rights of the code, texts, trade mark, design,
|
8
|
+
pictures and any other information belongs to the owner of this platform.
|
9
|
+
|
10
|
+
Without the written permission of the owner, any replication, modification,
|
11
|
+
transmission, publication is strictly forbidden.
|
12
|
+
|
13
|
+
For more information read the license file including with this software.
|
14
|
+
|
15
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
16
|
+
// ·
|
17
|
+
*/
|
18
|
+
|
19
|
+
|
20
|
+
// ·
|
21
|
+
@import "templates/component";
|
22
|
+
|
23
|
+
|
24
|
+
// ·
|
25
|
+
#babel-translations {
|
26
|
+
|
27
|
+
tbody td {
|
28
|
+
padding: 0rem 1rem;
|
29
|
+
height: 60px;
|
30
|
+
input.input {
|
31
|
+
height: 60px;
|
32
|
+
border: none;
|
33
|
+
box-shadow: none;
|
34
|
+
border-radius: 3px;
|
35
|
+
background-color: transparent;
|
36
|
+
&::placeholder {
|
37
|
+
color: lesli-css-color(silver, 900);
|
38
|
+
}
|
39
|
+
}
|
40
|
+
|
41
|
+
&.detail-row {
|
42
|
+
padding-left: 1rem !important;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
.copied:after{
|
47
|
+
display: inline;
|
48
|
+
position: absolute;
|
49
|
+
content: "Label copied to clipboard!";
|
50
|
+
animation: 1s ease-in-out 0s 1 normal forwards running copyit;
|
51
|
+
font-size: .8em;
|
52
|
+
}
|
53
|
+
|
54
|
+
@keyframes copyit{
|
55
|
+
0%{ bottom:2em;opacity:1;}
|
56
|
+
100%{bottom:4em;opacity:0;}
|
57
|
+
}
|
58
|
+
}
|
@@ -0,0 +1,37 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
6
|
+
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
21
|
+
|
22
|
+
Made with ♥ by https://www.lesli.tech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
31
|
+
=end
|
32
|
+
|
33
|
+
module LesliBabel
|
34
|
+
class ApplicationController < Lesli::ApplicationLesliController
|
35
|
+
protect_from_forgery with: :exception
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require_dependency "cloud_babel/application_controller"
|
2
|
+
|
3
|
+
module LesliBabel
|
4
|
+
class BucketsController < ApplicationController
|
5
|
+
before_action :set_bucket, only: [:show, :edit, :update, :destroy]
|
6
|
+
|
7
|
+
def privileges
|
8
|
+
{
|
9
|
+
index: []
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
# GET /buckets
|
14
|
+
def index
|
15
|
+
respond_to do |format|
|
16
|
+
format.html { }
|
17
|
+
format.json {
|
18
|
+
respond_with_successful(
|
19
|
+
Module.find(params[:module_id]).buckets.order(name: :asc)
|
20
|
+
)
|
21
|
+
}
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# GET /buckets/1
|
26
|
+
def show
|
27
|
+
end
|
28
|
+
|
29
|
+
# GET /buckets/new
|
30
|
+
def new
|
31
|
+
@bucket = Bucket.new
|
32
|
+
end
|
33
|
+
|
34
|
+
# GET /buckets/1/edit
|
35
|
+
def edit
|
36
|
+
end
|
37
|
+
|
38
|
+
# POST /buckets
|
39
|
+
def create
|
40
|
+
bucket = Bucket.new(bucket_params)
|
41
|
+
bucket.module = Module.find(params[:module_id])
|
42
|
+
bucket.reference_module = bucket.module.name
|
43
|
+
|
44
|
+
if bucket.save
|
45
|
+
respond_with_successful bucket
|
46
|
+
else
|
47
|
+
respond_with_error bucket.errors.full_messages
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
# PATCH/PUT /buckets/1
|
52
|
+
def update
|
53
|
+
if @bucket.update(bucket_params)
|
54
|
+
redirect_to @bucket, notice: 'Bucket was successfully updated.'
|
55
|
+
else
|
56
|
+
render :edit
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
# DELETE /buckets/1
|
61
|
+
def destroy
|
62
|
+
@bucket.destroy
|
63
|
+
redirect_to buckets_url, notice: 'Bucket was successfully destroyed.'
|
64
|
+
end
|
65
|
+
|
66
|
+
private
|
67
|
+
|
68
|
+
# Use callbacks to share common setup or constraints between actions.
|
69
|
+
def set_bucket
|
70
|
+
@bucket = Bucket.find(params[:id])
|
71
|
+
end
|
72
|
+
|
73
|
+
# Only allow a trusted parameter "white list" through.
|
74
|
+
def bucket_params
|
75
|
+
params.require(:bucket).permit(:name)
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2021, all rights reserved.
|
4
|
+
|
5
|
+
All the information provided by this platform is protected by international laws related to
|
6
|
+
industrial property, intellectual property, copyright and relative international laws.
|
7
|
+
All intellectual or industrial property rights of the code, texts, trade mark, design,
|
8
|
+
pictures and any other information belongs to the owner of this platform.
|
9
|
+
|
10
|
+
Without the written permission of the owner, any replication, modification,
|
11
|
+
transmission, publication is strictly forbidden.
|
12
|
+
|
13
|
+
For more information read the license file including with this software.
|
14
|
+
|
15
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
16
|
+
// ·
|
17
|
+
|
18
|
+
=end
|
19
|
+
require_dependency "cloud_babel/application_controller"
|
20
|
+
|
21
|
+
module LesliBabel
|
22
|
+
class ClonesController < ApplicationController
|
23
|
+
|
24
|
+
# GET /clones/1
|
25
|
+
def show
|
26
|
+
respond_to do |format|
|
27
|
+
format.html {}
|
28
|
+
format.json do
|
29
|
+
return respond_with_successful()
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# GET /clones/new
|
35
|
+
def new
|
36
|
+
end
|
37
|
+
|
38
|
+
# GET /clones/1/edit
|
39
|
+
def edit
|
40
|
+
end
|
41
|
+
|
42
|
+
# POST /clones
|
43
|
+
def create
|
44
|
+
|
45
|
+
result = TranslationsCloneService.remote_clone(clone_params[:instance_code])
|
46
|
+
respond_with_successful if result.success?
|
47
|
+
respond_with_error if not result.success?
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
# PATCH/PUT /clones/1
|
52
|
+
def update
|
53
|
+
return respond_with_not_found unless @clone
|
54
|
+
|
55
|
+
if @clone.update(clone_params)
|
56
|
+
respond_with_successful(@clone.show(current_user, @query))
|
57
|
+
else
|
58
|
+
respond_with_error(@clone.errors.full_messages.to_sentence)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
# DELETE /clones/1
|
63
|
+
def destroy
|
64
|
+
return respond_with_not_found unless @clone
|
65
|
+
|
66
|
+
if @clone.destroy
|
67
|
+
respond_with_successful
|
68
|
+
else
|
69
|
+
respond_with_error(@clone.errors.full_messages.to_sentence)
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
private
|
74
|
+
|
75
|
+
# Only allow a list of trusted parameters through.
|
76
|
+
def clone_params
|
77
|
+
params.require(:clone).permit(:instance_code)
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Lesli
|
4
|
+
|
5
|
+
Copyright (c) 2023, Lesli Technologies, S. A.
|
6
|
+
|
7
|
+
This program is free software: you can redistribute it and/or modify
|
8
|
+
it under the terms of the GNU General Public License as published by
|
9
|
+
the Free Software Foundation, either version 3 of the License, or
|
10
|
+
(at your option) any later version.
|
11
|
+
|
12
|
+
This program is distributed in the hope that it will be useful,
|
13
|
+
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
14
|
+
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
15
|
+
GNU General Public License for more details.
|
16
|
+
|
17
|
+
You should have received a copy of the GNU General Public License
|
18
|
+
along with this program. If not, see http://www.gnu.org/licenses/.
|
19
|
+
|
20
|
+
Lesli · Ruby on Rails SaaS Development Framework.
|
21
|
+
|
22
|
+
Made with ♥ by https://www.lesli.tech
|
23
|
+
Building a better future, one line of code at a time.
|
24
|
+
|
25
|
+
@contact hello@lesli.tech
|
26
|
+
@website https://www.lesli.tech
|
27
|
+
@license GPLv3 http://www.gnu.org/licenses/gpl-3.0.en.html
|
28
|
+
|
29
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
30
|
+
// ·
|
31
|
+
=end
|
32
|
+
|
33
|
+
module LesliBabel
|
34
|
+
class DashboardsController < ApplicationController
|
35
|
+
def show
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,91 @@
|
|
1
|
+
=begin
|
2
|
+
|
3
|
+
Copyright (c) 2022, all rights reserved.
|
4
|
+
|
5
|
+
All the information provided by this platform is protected by international laws related to
|
6
|
+
industrial property, intellectual property, copyright and relative international laws.
|
7
|
+
All intellectual or industrial property rights of the code, texts, trade mark, design,
|
8
|
+
pictures and any other information belongs to the owner of this platform.
|
9
|
+
|
10
|
+
Without the written permission of the owner, any replication, modification,
|
11
|
+
transmission, publication is strictly forbidden.
|
12
|
+
|
13
|
+
For more information read the license file including with this software.
|
14
|
+
|
15
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
16
|
+
// ·
|
17
|
+
=end
|
18
|
+
|
19
|
+
require_dependency "cloud_babel/application_controller"
|
20
|
+
|
21
|
+
module LesliBabel
|
22
|
+
class ModulesController < ApplicationController
|
23
|
+
before_action :set_module, only: [:show, :edit, :update, :destroy]
|
24
|
+
|
25
|
+
def privileges
|
26
|
+
{
|
27
|
+
show: ['CloudBabel::StringsController#index']
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
# GET /modules
|
32
|
+
def index
|
33
|
+
respond_to do |format|
|
34
|
+
format.html { }
|
35
|
+
format.json { respond_with_successful(Module.index) }
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# GET /modules/1
|
40
|
+
def show
|
41
|
+
respond_to do |format|
|
42
|
+
format.html { }
|
43
|
+
format.json { respond_with_successful(@module) }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
# GET /modules/new
|
48
|
+
def new
|
49
|
+
@module = Module.new
|
50
|
+
end
|
51
|
+
|
52
|
+
# GET /modules/1/edit
|
53
|
+
def edit
|
54
|
+
end
|
55
|
+
|
56
|
+
# POST /modules
|
57
|
+
def create
|
58
|
+
new_module = Module.new(module_params)
|
59
|
+
if new_module.save
|
60
|
+
respond_with_successful(new_module)
|
61
|
+
else
|
62
|
+
respond_with_error("Error on create module", new_module.errors)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
# PATCH/PUT /modules/1
|
67
|
+
def update
|
68
|
+
if @module.update(module_params)
|
69
|
+
redirect_to @module, notice: 'Module was successfully updated.'
|
70
|
+
else
|
71
|
+
render :edit
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
# DELETE /modules/1
|
76
|
+
def destroy
|
77
|
+
end
|
78
|
+
|
79
|
+
private
|
80
|
+
|
81
|
+
# Use callbacks to share common setup or constraints between actions.
|
82
|
+
def set_module
|
83
|
+
@module = Module.find(params[:id])
|
84
|
+
end
|
85
|
+
|
86
|
+
# Only allow a trusted parameter "white list" through.
|
87
|
+
def module_params
|
88
|
+
params.require(:module).permit(:name, :platform)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
=begin
|
2
|
+
Copyright (c) 2023, all rights reserved.
|
3
|
+
|
4
|
+
All the information provided by this platform is protected by international laws related to
|
5
|
+
industrial property, intellectual property, copyright and relative international laws.
|
6
|
+
All intellectual or industrial property rights of the code, texts, trade mark, design,
|
7
|
+
pictures and any other information belongs to the owner of this platform.
|
8
|
+
|
9
|
+
Without the written permission of the owner, any replication, modification,
|
10
|
+
transmission, publication is strictly forbidden.
|
11
|
+
|
12
|
+
For more information read the license file including with this software.
|
13
|
+
|
14
|
+
// · ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~ ~·~
|
15
|
+
// ·
|
16
|
+
|
17
|
+
=end
|
18
|
+
require_dependency "cloud_babel/application_controller"
|
19
|
+
|
20
|
+
module LesliBabel
|
21
|
+
class RelevantsController < ApplicationController
|
22
|
+
before_action :set_relevant, only: [:show, :update, :destroy]
|
23
|
+
|
24
|
+
# GET /relevants
|
25
|
+
def index
|
26
|
+
end
|
27
|
+
|
28
|
+
private
|
29
|
+
|
30
|
+
# Use callbacks to share common setup or constraints between actions.
|
31
|
+
def set_relevant
|
32
|
+
end
|
33
|
+
|
34
|
+
# Only allow a list of trusted parameters through.
|
35
|
+
def relevant_params
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,142 @@
|
|
1
|
+
|
2
|
+
module LesliBabel
|
3
|
+
class StringsController < ApplicationController
|
4
|
+
before_action :set_string, only: [:show, :edit, :update, :destroy, :need_help, :need_translation]
|
5
|
+
|
6
|
+
# GET /strings
|
7
|
+
def index
|
8
|
+
respond_to do |format|
|
9
|
+
format.html { }
|
10
|
+
format.json {
|
11
|
+
respond_with_pagination(StringService.new(current_user, query).index(params))
|
12
|
+
}
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
# GET /strings/1
|
17
|
+
def show
|
18
|
+
end
|
19
|
+
|
20
|
+
# GET /strings/new
|
21
|
+
def new
|
22
|
+
@string = String.new
|
23
|
+
end
|
24
|
+
|
25
|
+
# GET /strings/1/edit
|
26
|
+
def edit
|
27
|
+
end
|
28
|
+
|
29
|
+
# POST /strings
|
30
|
+
def create
|
31
|
+
|
32
|
+
if String.find_by(label: string_params[:label],cloud_babel_buckets_id: string_params[:cloud_babel_buckets_id])
|
33
|
+
return respond_with_error("Duplicated string")
|
34
|
+
end
|
35
|
+
|
36
|
+
string = String.new(string_params)
|
37
|
+
if string.save
|
38
|
+
String.log_activity_create(current_user, string)
|
39
|
+
respond_with_successful(string)
|
40
|
+
else
|
41
|
+
respond_with_error("Error on create translation string", string.errors)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# PATCH/PUT /strings/1
|
46
|
+
def update
|
47
|
+
return respond_with_not_found unless @string
|
48
|
+
|
49
|
+
# We store the original attributes
|
50
|
+
old_attributes = @string.attributes
|
51
|
+
|
52
|
+
# if status changed
|
53
|
+
if @string["status"] != string_params["status"]
|
54
|
+
|
55
|
+
# saved update date
|
56
|
+
@string["last_update_status"] = Time.now
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
# if context changed
|
61
|
+
if @string["context"] != string_params["context"]
|
62
|
+
|
63
|
+
# saved update date
|
64
|
+
@string["last_update_context"] = Time.now
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
Rails.application.config.lesli_settings["configuration"]["locales"].each do |locale|
|
69
|
+
|
70
|
+
# if translation changed
|
71
|
+
if @string[locale] != string_params[locale]
|
72
|
+
|
73
|
+
# saved update date
|
74
|
+
@string["last_update_#{locale}"] = Time.now
|
75
|
+
|
76
|
+
end
|
77
|
+
|
78
|
+
end
|
79
|
+
|
80
|
+
if @string.update(string_params)
|
81
|
+
|
82
|
+
# We store the new attributes and compare the activities
|
83
|
+
new_attributes = @string.attributes
|
84
|
+
String.log_activity_update(current_user, @string, old_attributes, new_attributes)
|
85
|
+
|
86
|
+
respond_with_successful(@string)
|
87
|
+
else
|
88
|
+
respond_with_error(@string.errors.full_sentence)
|
89
|
+
end
|
90
|
+
|
91
|
+
end
|
92
|
+
|
93
|
+
# DELETE /strings/1
|
94
|
+
def destroy
|
95
|
+
return respond_with_not_found unless @string
|
96
|
+
|
97
|
+
if @string.destroy
|
98
|
+
respond_with_successful
|
99
|
+
|
100
|
+
String.log_activity_destroy(current_user, @string)
|
101
|
+
else
|
102
|
+
respond_with_error(@string.errors.full_messages.to_sentence)
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def stats
|
107
|
+
respond_with_successful(StringService.new(current_user, query).stats())
|
108
|
+
end
|
109
|
+
|
110
|
+
def relevant
|
111
|
+
respond_with_pagination(String.relevant(current_user, @query, params))
|
112
|
+
end
|
113
|
+
|
114
|
+
# return a list of the locales available
|
115
|
+
def locales
|
116
|
+
respond_with_successful(Rails.application.config.lesli.dig(:configuration, :locales))
|
117
|
+
end
|
118
|
+
|
119
|
+
private
|
120
|
+
|
121
|
+
# Use callbacks to share common setup or constraints between actions.
|
122
|
+
def set_string
|
123
|
+
@string = String.find(params[:id])
|
124
|
+
end
|
125
|
+
|
126
|
+
# Only allow a trusted parameter "white list" through.
|
127
|
+
def string_params
|
128
|
+
params.require(:string).permit(
|
129
|
+
:id,
|
130
|
+
:label,
|
131
|
+
:status,
|
132
|
+
:context,
|
133
|
+
:priority,
|
134
|
+
:need_help,
|
135
|
+
:need_translation,
|
136
|
+
:cloud_babel_buckets_id,
|
137
|
+
Rails.application.config.lesli_settings["configuration"]["locales"]
|
138
|
+
)
|
139
|
+
end
|
140
|
+
|
141
|
+
end
|
142
|
+
end
|