sail 3.2.1 → 3.2.2
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 +4 -4
- data/README.md +3 -1
- data/app/assets/javascripts/settings.js.erb +17 -1
- data/app/assets/stylesheets/sail/_colors.scss +1 -1
- data/app/assets/stylesheets/sail/application.scss +35 -8
- data/app/assets/stylesheets/sail/settings.scss +10 -3
- data/app/controllers/sail/application_controller.rb +8 -0
- data/app/controllers/sail/settings_controller.rb +1 -0
- data/app/views/layouts/sail/application.html.erb +1 -1
- data/app/views/sail/settings/_guide_modal.html.erb +8 -0
- data/app/views/sail/settings/_setting.html.erb +6 -2
- data/config/locales/en.yml +1 -1
- data/lib/sail/engine.rb +0 -2
- data/lib/sail/version.rb +1 -1
- metadata +18 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1f50a3ffd08ce3319b7c12965a4ada7954e9be63c98904480cb82fc9ca94876e
|
4
|
+
data.tar.gz: caf14276d020f847b8b7fd3d5959e028d300289cd7e996622cd4c00505dc820e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 34a45a3c9879a9317d60f43df33ad48f1391b7a44861eabefbe187cb221d9029c5bf98d4ce6bd8770059a8c535a9023fe0627b9dc458d5b2d82df67d4730667d
|
7
|
+
data.tar.gz: 034f78ae3a617031c3861b0777dc165dbf48ca3b5325e23758ac1d97cb53e684f06f8dfee05756a6eeb0dea0c04b6239fd75f0a29762839ad64c530578fee960
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|

|
2
2
|
|
3
|
-
[](https://codeclimate.com/github/vinistock/sail/maintainability) [](https://travis-ci.org/vinistock/sail) [](https://codeclimate.com/github/vinistock/sail/coverage) [](https://badge.fury.io/rb/sail) 
|
3
|
+
[](https://codeclimate.com/github/vinistock/sail/maintainability) [](https://travis-ci.org/vinistock/sail) [](https://codeclimate.com/github/vinistock/sail/coverage) [](https://badge.fury.io/rb/sail)  [](https://github.com/markets/awesome-ruby)
|
4
4
|
|
5
5
|
# Sail
|
6
6
|
|
@@ -213,6 +213,8 @@ Response
|
|
213
213
|
|
214
214
|
Sail's few strings are all localized for English in [en.yml], making it easy to create translations for the desired languages.
|
215
215
|
|
216
|
+
Make sure to pass in the desired locale as a parameter.
|
217
|
+
|
216
218
|
## Contributing
|
217
219
|
|
218
220
|
Contributions are very welcome! Don't hesitate to ask if you wish to contribute, but don't yet know how.
|
@@ -15,6 +15,8 @@ let profilesButton = document.getElementById("btn-profiles");
|
|
15
15
|
let dashboardBody = document.getElementById("settings-dashboard");
|
16
16
|
let guideButton = document.getElementById("btn-guide");
|
17
17
|
let guide = document.getElementById("guide-modal");
|
18
|
+
let guideSections = guide.getElementsByTagName("summary");
|
19
|
+
var i;
|
18
20
|
|
19
21
|
function submitSearch() {
|
20
22
|
document.getElementById("search-form").submit();
|
@@ -118,4 +120,18 @@ function refreshClick() {
|
|
118
120
|
}
|
119
121
|
}
|
120
122
|
|
121
|
-
for(
|
123
|
+
for(i = 0; i < refreshButtons.length; i++) refreshButtons[i].addEventListener("click", refreshClick);
|
124
|
+
|
125
|
+
// Guide related functions
|
126
|
+
|
127
|
+
function sectionClick() {
|
128
|
+
for(i = 0; i < guideSections.length; i++) {
|
129
|
+
if (this.parentElement.open) {
|
130
|
+
guideSections[i].parentElement.style.display = "block";
|
131
|
+
} else if (this !== guideSections[i]) {
|
132
|
+
guideSections[i].parentElement.style.display = "none";
|
133
|
+
}
|
134
|
+
}
|
135
|
+
}
|
136
|
+
|
137
|
+
for(i = 0; i < guideSections.length; i++) guideSections[i].addEventListener("click", sectionClick);
|
@@ -17,20 +17,35 @@
|
|
17
17
|
@import "colors";
|
18
18
|
@import "shared";
|
19
19
|
|
20
|
+
* {
|
21
|
+
font-family: 'Open Sans', sans-serif;
|
22
|
+
}
|
23
|
+
|
24
|
+
.title {
|
25
|
+
font-family: 'Montserrat', sans-serif;
|
26
|
+
}
|
27
|
+
|
20
28
|
html, body {
|
21
29
|
height: 100vh;
|
22
30
|
margin: 0;
|
23
31
|
padding: 0;
|
24
32
|
background-color: $cerulean;
|
25
|
-
font-family: 'Raleway', sans-serif;
|
26
33
|
}
|
27
34
|
|
28
35
|
.clearfix {
|
29
36
|
clear: both;
|
30
37
|
}
|
31
38
|
|
39
|
+
.clear-xs {
|
40
|
+
@media (max-width: 413px) {
|
41
|
+
clear: both;
|
42
|
+
margin-top: 8px;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
32
46
|
#nav-bar {
|
33
47
|
background-color: $lead;
|
48
|
+
box-shadow: 0 5px 10px rgba(0, 0, 0, 0.15), 0 5px 12px rgba(0, 0, 0, 0.1);
|
34
49
|
|
35
50
|
.home-link {
|
36
51
|
@extend .color-transition;
|
@@ -48,7 +63,6 @@ html, body {
|
|
48
63
|
position: relative;
|
49
64
|
bottom: 50px;
|
50
65
|
font-size: 20px;
|
51
|
-
font-family: "Raleway", sans-serif;
|
52
66
|
outline: none;
|
53
67
|
background: transparent;
|
54
68
|
border: none;
|
@@ -63,7 +77,8 @@ html, body {
|
|
63
77
|
|
64
78
|
#btn-guide {
|
65
79
|
right: 70px;
|
66
|
-
|
80
|
+
padding: 0;
|
81
|
+
margin: 0;
|
67
82
|
@media (min-width: 1200px) { right: 110px; }
|
68
83
|
}
|
69
84
|
|
@@ -116,10 +131,10 @@ html, body {
|
|
116
131
|
|
117
132
|
.modal {
|
118
133
|
position: fixed;
|
119
|
-
height:
|
120
|
-
width:
|
121
|
-
top:
|
122
|
-
left:
|
134
|
+
height: 70%;
|
135
|
+
width: 70%;
|
136
|
+
top: 15%;
|
137
|
+
left: 15%;
|
123
138
|
background-color: white;
|
124
139
|
z-index: 1;
|
125
140
|
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
|
@@ -220,7 +235,6 @@ html, body {
|
|
220
235
|
border: none;
|
221
236
|
font-size: 20px;
|
222
237
|
width: 90%;
|
223
|
-
font-family: 'Raleway', sans-serif;
|
224
238
|
position: relative;
|
225
239
|
top: 10px;
|
226
240
|
text-overflow: ellipsis;
|
@@ -260,6 +274,10 @@ html, body {
|
|
260
274
|
float: right;
|
261
275
|
}
|
262
276
|
|
277
|
+
img {
|
278
|
+
display: none;
|
279
|
+
}
|
280
|
+
|
263
281
|
&::-webkit-details-marker {
|
264
282
|
display: none;
|
265
283
|
}
|
@@ -299,6 +317,15 @@ html, body {
|
|
299
317
|
label {
|
300
318
|
display: none;
|
301
319
|
}
|
320
|
+
|
321
|
+
img {
|
322
|
+
display: block;
|
323
|
+
height: 20px;
|
324
|
+
width: 20px;
|
325
|
+
float: left;
|
326
|
+
position: relative;
|
327
|
+
top: 10px;
|
328
|
+
}
|
302
329
|
}
|
303
330
|
|
304
331
|
p, p ~ * {
|
@@ -15,7 +15,7 @@
|
|
15
15
|
background-color: white;
|
16
16
|
margin: 1rem .75rem;
|
17
17
|
display: inline-block;
|
18
|
-
box-shadow: 0
|
18
|
+
box-shadow: 0 19px 38px rgba(0, 0, 0, 0.15), 0 15px 12px rgba(0, 0, 0, 0.1);
|
19
19
|
padding: 10px;
|
20
20
|
z-index: 2;
|
21
21
|
width: 90%;
|
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
.relevancy-score {
|
34
34
|
float: right;
|
35
|
-
color: darken($aluminium,
|
35
|
+
color: darken($aluminium, 30%);
|
36
36
|
}
|
37
37
|
}
|
38
38
|
|
@@ -91,6 +91,10 @@
|
|
91
91
|
text-align: center;
|
92
92
|
border: none;
|
93
93
|
border-bottom: 2px solid $aluminium;
|
94
|
+
-webkit-border-radius: 0;
|
95
|
+
-moz-border-radius: 0;
|
96
|
+
border-radius: 0;
|
97
|
+
padding: 0;
|
94
98
|
@extend .border-transition;
|
95
99
|
}
|
96
100
|
|
@@ -99,9 +103,13 @@
|
|
99
103
|
bottom: 10px;
|
100
104
|
border: none;
|
101
105
|
border-bottom: 2px solid $aluminium;
|
106
|
+
-webkit-border-radius: 0;
|
107
|
+
-moz-border-radius: 0;
|
108
|
+
border-radius: 0;
|
102
109
|
width: 100%;
|
103
110
|
text-align: center;
|
104
111
|
font-size: 22px;
|
112
|
+
padding: 0;
|
105
113
|
@extend .border-transition;
|
106
114
|
}
|
107
115
|
|
@@ -317,7 +325,6 @@
|
|
317
325
|
border: none;
|
318
326
|
width: 100%;
|
319
327
|
font-size: 20px;
|
320
|
-
font-family: 'Raleway', sans-serif;
|
321
328
|
background: transparent;
|
322
329
|
padding: 5px;
|
323
330
|
@extend .rounded;
|
@@ -9,5 +9,13 @@ module Sail
|
|
9
9
|
def current_user
|
10
10
|
main_app.scope.request.env["warden"]&.user
|
11
11
|
end
|
12
|
+
|
13
|
+
def default_url_options
|
14
|
+
{ locale: I18n.locale }
|
15
|
+
end
|
16
|
+
|
17
|
+
def set_locale
|
18
|
+
I18n.locale = params[:locale].presence || I18n.default_locale
|
19
|
+
end
|
12
20
|
end
|
13
21
|
end
|
@@ -8,6 +8,7 @@ module Sail
|
|
8
8
|
# Implements all actions for the dashboard
|
9
9
|
# and for the JSON API
|
10
10
|
class SettingsController < ApplicationController
|
11
|
+
before_action :set_locale, only: :index
|
11
12
|
after_action :log_update, only: %i[update reset], if: -> { Sail.configuration.enable_logging && @successful_update }
|
12
13
|
|
13
14
|
# rubocop:disable AbcSize
|
@@ -6,7 +6,7 @@
|
|
6
6
|
<meta name="theme-color" content="#4484CE">
|
7
7
|
<meta name="description" content="Sail is a lightweight Rails engine that brings an admin panel for managing configuration settings on a live Rails app">
|
8
8
|
<title><%= I18n.t('sail.page_title') %></title>
|
9
|
-
<link href="https://fonts.googleapis.com/css?family=
|
9
|
+
<link href="https://fonts.googleapis.com/css?family=Montserrat|Open+Sans&display=swap" rel="preload" as="style" onload="this.onload=null;this.rel='stylesheet'">
|
10
10
|
<%= stylesheet_link_tag "sail/application", media: "all" %>
|
11
11
|
<%= javascript_include_tag "sail/application", async: true %>
|
12
12
|
<%= csrf_meta_tags %>
|
@@ -4,6 +4,8 @@
|
|
4
4
|
|
5
5
|
<details>
|
6
6
|
<summary>
|
7
|
+
<%= image_tag("sail/angle-left.svg") %>
|
8
|
+
|
7
9
|
<div>
|
8
10
|
<%= I18n.t("sail.searching") %>
|
9
11
|
<label><%= I18n.t("sail.how_to_find_settings") %></label>
|
@@ -26,6 +28,8 @@
|
|
26
28
|
|
27
29
|
<details>
|
28
30
|
<summary>
|
31
|
+
<%= image_tag("sail/angle-left.svg") %>
|
32
|
+
|
29
33
|
<div>
|
30
34
|
<%= I18n.t("sail.profiles") %>
|
31
35
|
<label><%= I18n.t("sail.how_to_profiles") %></label>
|
@@ -39,6 +43,8 @@
|
|
39
43
|
|
40
44
|
<details>
|
41
45
|
<summary>
|
46
|
+
<%= image_tag("sail/angle-left.svg") %>
|
47
|
+
|
42
48
|
<div>
|
43
49
|
<%= I18n.t("sail.relevancy_score") %>
|
44
50
|
<label><%= I18n.t("sail.how_to_relevancy_score") %></label>
|
@@ -51,6 +57,8 @@
|
|
51
57
|
|
52
58
|
<details>
|
53
59
|
<summary>
|
60
|
+
<%= image_tag("sail/angle-left.svg") %>
|
61
|
+
|
54
62
|
<div>
|
55
63
|
<%= I18n.t("sail.available_groups_and_types") %>
|
56
64
|
<label><%= I18n.t("sail.how_to_groups_and_types") %></label>
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% cache setting, expires_in: Sail.configuration.cache_life_span do %>
|
2
2
|
<div class="card">
|
3
|
-
<h3>
|
3
|
+
<h3 class="title">
|
4
4
|
<%= setting.display_name %>
|
5
5
|
|
6
6
|
<span class="relevancy-score" title="<%= I18n.t("sail.relevancy_tooltip") %>"><%= setting.relevancy %></span>
|
@@ -24,13 +24,17 @@
|
|
24
24
|
</div>
|
25
25
|
<% end %>
|
26
26
|
|
27
|
+
<div class="clear-xs"></div>
|
28
|
+
|
27
29
|
<% if setting.stale? %>
|
28
30
|
<div class="label-container">
|
29
31
|
<%= link_to(I18n.t("sail.stale"), settings_path(query: Sail::ConstantCollection::STALE), method: :get, class: "tag stale-label", title: I18n.t("sail.stale_tooltip", days: Sail.configuration.days_until_stale)) %>
|
30
32
|
</div>
|
31
33
|
<% end %>
|
32
34
|
|
33
|
-
<p class="setting-description" title="<%= setting.description %>"
|
35
|
+
<p class="setting-description" title="<%= setting.description %>">
|
36
|
+
<label for="<%= "input_for_#{setting.name}" %>"><%= setting.description %></label>
|
37
|
+
</p>
|
34
38
|
|
35
39
|
<%= form_tag(setting_path(name: setting.name), method: :put, remote: true) do %>
|
36
40
|
<div class="card-body-container">
|
data/config/locales/en.yml
CHANGED
@@ -32,7 +32,7 @@ en:
|
|
32
32
|
by_group_html: "<b>By group:</b> will find all settings in the same group (must be exact match)"
|
33
33
|
by_cast_type_html: "<b>By cast type:</b> will find all settings with the same type (must be exact match)"
|
34
34
|
by_stale_html: "<b>By stale:</b> will find settings that are stale (haven't been updated recently)"
|
35
|
-
by_recent_html: "<b>By recent:</b> will find settings updated in the last X hours (
|
35
|
+
by_recent_html: "<b>By recent:</b> will find settings updated in the last X hours (e.g.: recent 50)"
|
36
36
|
profiles_can_be_used: Profiles can be used to configure many states of settings. They save the values of all settings in a given moment.
|
37
37
|
profile_configuring: Configure settings as desired and create a new profile. Activate profiles to change the value of all settings at once.
|
38
38
|
relevancy_score: Relevancy Score
|
data/lib/sail/engine.rb
CHANGED
@@ -40,13 +40,11 @@ module Sail
|
|
40
40
|
errors = [ActiveRecord::NoDatabaseError]
|
41
41
|
errors << PG::ConnectionBad if defined?(PG)
|
42
42
|
|
43
|
-
# rubocop:disable Naming/RescuedExceptionsVariableName
|
44
43
|
begin
|
45
44
|
Sail::Setting.load_defaults unless Rails.env.test?
|
46
45
|
rescue *errors
|
47
46
|
warn "Skipping setting creation because database doesn't exist"
|
48
47
|
end
|
49
|
-
# rubocop:enable Naming/RescuedExceptionsVariableName
|
50
48
|
end
|
51
49
|
|
52
50
|
private
|
data/lib/sail/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.2.
|
4
|
+
version: 3.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Vinicius Stock
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-
|
11
|
+
date: 2019-07-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fugit
|
@@ -248,6 +248,20 @@ dependencies:
|
|
248
248
|
- - ">="
|
249
249
|
- !ruby/object:Gem::Version
|
250
250
|
version: '0'
|
251
|
+
- !ruby/object:Gem::Dependency
|
252
|
+
name: rubocop-rails
|
253
|
+
requirement: !ruby/object:Gem::Requirement
|
254
|
+
requirements:
|
255
|
+
- - ">="
|
256
|
+
- !ruby/object:Gem::Version
|
257
|
+
version: '0'
|
258
|
+
type: :development
|
259
|
+
prerelease: false
|
260
|
+
version_requirements: !ruby/object:Gem::Requirement
|
261
|
+
requirements:
|
262
|
+
- - ">="
|
263
|
+
- !ruby/object:Gem::Version
|
264
|
+
version: '0'
|
251
265
|
- !ruby/object:Gem::Dependency
|
252
266
|
name: simplecov
|
253
267
|
requirement: !ruby/object:Gem::Requirement
|
@@ -359,7 +373,7 @@ licenses:
|
|
359
373
|
metadata: {}
|
360
374
|
post_install_message: |
|
361
375
|
**************************************************************************
|
362
|
-
Sail 3.2.
|
376
|
+
Sail 3.2.2!
|
363
377
|
|
364
378
|
For major version upgrades, check the CHANGELOG and run the updater to
|
365
379
|
create necessary migrations.
|
@@ -381,7 +395,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
381
395
|
- !ruby/object:Gem::Version
|
382
396
|
version: '0'
|
383
397
|
requirements: []
|
384
|
-
rubygems_version: 3.0.
|
398
|
+
rubygems_version: 3.0.4
|
385
399
|
signing_key:
|
386
400
|
specification_version: 4
|
387
401
|
summary: Sail is a lightweight Rails engine that brings an admin panel for managing
|