rails-settings-ui 1.3.5 → 1.4.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.
Files changed (101) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -3
  3. data/README.md +15 -60
  4. data/app/controllers/rails_settings_ui/settings_controller.rb +17 -13
  5. data/app/helpers/rails_settings_ui/settings_helper.rb +5 -10
  6. data/config/locales/en.yml +3 -4
  7. data/lib/rails-settings-ui/engine.rb +0 -1
  8. data/lib/rails-settings-ui/settings_form_coercible.rb +2 -1
  9. data/lib/rails-settings-ui/settings_form_validator.rb +2 -1
  10. data/lib/rails-settings-ui/type_converter.rb +79 -0
  11. data/lib/rails-settings-ui/value_types/array.rb +19 -0
  12. data/lib/rails-settings-ui/value_types/base.rb +30 -0
  13. data/lib/rails-settings-ui/value_types/boolean.rb +16 -0
  14. data/lib/rails-settings-ui/value_types/duration.rb +17 -0
  15. data/lib/rails-settings-ui/value_types/fixnum.rb +17 -0
  16. data/lib/rails-settings-ui/value_types/float.rb +17 -0
  17. data/lib/rails-settings-ui/value_types/hash.rb +19 -0
  18. data/lib/rails-settings-ui/value_types/string.rb +11 -0
  19. data/lib/rails-settings-ui/value_types/symbol.rb +11 -0
  20. data/lib/rails-settings-ui/version.rb +1 -1
  21. data/lib/rails-settings-ui.rb +13 -5
  22. data/spec/dummy/app/assets/config/manifest.js +3 -0
  23. data/spec/dummy/app/models/settings.rb +17 -11
  24. data/spec/dummy/config/application.rb +8 -5
  25. data/spec/dummy/config/environments/development.rb +1 -1
  26. data/spec/dummy/config/environments/test.rb +5 -0
  27. data/spec/dummy/db/development.sqlite3 +0 -0
  28. data/spec/dummy/log/development.log +204 -0
  29. data/spec/dummy/log/test.log +17721 -0
  30. data/spec/dummy/tmp/cache/983/850/rails-settings-cached%2Fv1 +0 -0
  31. data/spec/dummy/tmp/cache/B43/920/rails_settings_cached%3Aangle +1 -0
  32. data/spec/dummy/tmp/cache/B5B/D00/rails_settings_cached%3Alimit +1 -0
  33. data/spec/dummy/tmp/cache/C33/A30/rails_settings_cached%3Acompany +2 -0
  34. data/spec/dummy/tmp/cache/E33/F60/rails_settings_cached%3Aproject_name +2 -0
  35. data/spec/dummy/tmp/capybara/capybara-202210171734284469945531.html +149 -0
  36. data/spec/dummy/tmp/capybara/capybara-202210171737204973407096.html +149 -0
  37. data/spec/dummy/tmp/capybara/capybara-202210171748434956557154.html +149 -0
  38. data/spec/dummy/tmp/capybara/capybara-202210171748436975538759.html +149 -0
  39. data/spec/dummy/tmp/capybara/capybara-202210171750314291147778.html +149 -0
  40. data/spec/dummy/tmp/capybara/capybara-20221017175031820707857.html +149 -0
  41. data/spec/dummy/tmp/capybara/capybara-202210171753008459837645.html +149 -0
  42. data/spec/dummy/tmp/capybara/capybara-202210171852063304179945.html +149 -0
  43. data/spec/dummy/tmp/capybara/capybara-202210171856426164369905.html +149 -0
  44. data/spec/dummy/tmp/capybara/capybara-202210171858321617647144.html +146 -0
  45. data/spec/dummy/tmp/capybara/capybara-202210171859225748767967.html +149 -0
  46. data/spec/dummy/tmp/capybara/capybara-202210171900593853637022.html +149 -0
  47. data/spec/dummy/tmp/capybara/capybara-202210171905425563856340.html +149 -0
  48. data/spec/dummy/tmp/capybara/capybara-202210171906453524726761.html +149 -0
  49. data/spec/dummy/tmp/capybara/capybara-202210171907021196417641.html +149 -0
  50. data/spec/dummy/tmp/capybara/capybara-202210171907177584260273.html +149 -0
  51. data/spec/dummy/tmp/capybara/capybara-202210171908598155484313.html +146 -0
  52. data/spec/dummy/tmp/capybara/capybara-202210171910151128908606.html +149 -0
  53. data/spec/dummy/tmp/capybara/capybara-202210171910335167198647.html +149 -0
  54. data/spec/dummy/tmp/capybara/capybara-20221017191603669584955.html +149 -0
  55. data/spec/dummy/tmp/capybara/capybara-202210171923383386177630.html +149 -0
  56. data/spec/dummy/tmp/capybara/capybara-20221017192440932299839.html +149 -0
  57. data/spec/dummy/tmp/capybara/capybara-202210171925398582267473.html +149 -0
  58. data/spec/dummy/tmp/capybara/capybara-202210171926266453882118.html +149 -0
  59. data/spec/dummy/tmp/capybara/capybara-202210171927092397731872.html +149 -0
  60. data/spec/dummy/tmp/capybara/capybara-202210171927096856622887.html +149 -0
  61. data/spec/dummy/tmp/capybara/capybara-20221017192857430966358.html +149 -0
  62. data/spec/dummy/tmp/capybara/capybara-20221017192857715946316.html +149 -0
  63. data/spec/dummy/tmp/capybara/capybara-202210171929344449627309.html +148 -0
  64. data/spec/dummy/tmp/capybara/capybara-202210171929349483966535.html +148 -0
  65. data/spec/dummy/tmp/capybara/capybara-202210171931514543176977.html +149 -0
  66. data/spec/dummy/tmp/capybara/capybara-202210171931516552014196.html +149 -0
  67. data/spec/dummy/tmp/capybara/capybara-202210171933532109133909.html +148 -0
  68. data/spec/dummy/tmp/capybara/capybara-202210171933538239745721.html +148 -0
  69. data/spec/dummy/tmp/capybara/capybara-202210171934252299363012.html +148 -0
  70. data/spec/dummy/tmp/capybara/capybara-202210171934257507814102.html +148 -0
  71. data/spec/dummy/tmp/capybara/capybara-202210171935002341486006.html +148 -0
  72. data/spec/dummy/tmp/capybara/capybara-202210171935003194509488.html +148 -0
  73. data/spec/dummy/tmp/capybara/capybara-202210171935191080772264.html +149 -0
  74. data/spec/dummy/tmp/capybara/capybara-20221017193519504184564.html +148 -0
  75. data/spec/dummy/tmp/capybara/capybara-202210171935494419345825.html +148 -0
  76. data/spec/dummy/tmp/capybara/capybara-202210171935495077855617.html +149 -0
  77. data/spec/dummy/tmp/capybara/capybara-202210171935512244046619.html +149 -0
  78. data/spec/dummy/tmp/capybara/capybara-202210171935515471773291.html +148 -0
  79. data/spec/dummy/tmp/capybara/capybara-20221017193621299357586.html +148 -0
  80. data/spec/dummy/tmp/capybara/capybara-202210171936214576498840.html +149 -0
  81. data/spec/dummy/tmp/capybara/capybara-202210171943053342669430.html +149 -0
  82. data/spec/dummy/tmp/capybara/capybara-202210171943054897250624.html +148 -0
  83. data/spec/dummy/tmp/capybara/capybara-202210171943172523615452.html +148 -0
  84. data/spec/dummy/tmp/capybara/capybara-202210171943176449343696.html +149 -0
  85. data/spec/dummy/tmp/capybara/capybara-202210171944092904892605.html +149 -0
  86. data/spec/dummy/tmp/capybara/capybara-202210171944096476035010.html +148 -0
  87. data/spec/features/settings_spec.rb +9 -8
  88. data/spec/lib/rails-settings-ui/type_converter_spec.rb +43 -0
  89. data/spec/lib/rails-settings-ui/value_types/array_spec.rb +21 -0
  90. data/spec/lib/rails-settings-ui/value_types/base_spec.rb +23 -0
  91. data/spec/lib/rails-settings-ui/value_types/boolean_spec.rb +10 -0
  92. data/spec/lib/rails-settings-ui/value_types/duration_spec.rb +19 -0
  93. data/spec/lib/rails-settings-ui/value_types/fixnum_spec.rb +17 -0
  94. data/spec/lib/rails-settings-ui/value_types/float_spec.rb +17 -0
  95. data/spec/lib/rails-settings-ui/value_types/hash_spec.rb +26 -0
  96. data/spec/lib/rails-settings-ui/value_types/string_spec.rb +10 -0
  97. data/spec/lib/rails-settings-ui/value_types/symbol_spec.rb +10 -0
  98. data/spec/spec_helper.rb +0 -1
  99. metadata +199 -55
  100. data/spec/lib/rails-settings-ui/settings_form_coercible_spec.rb +0 -136
  101. data/spec/lib/rails-settings-ui/settings_form_validator_spec.rb +0 -94
@@ -0,0 +1,148 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <link rel="stylesheet" href="/stylesheets/application.css" media="all" data-turbolinks-track="true" />
6
+ <script src="/javascripts/application.js" data-turbolinks-track="true"></script>
7
+
8
+ </head>
9
+ <body>
10
+
11
+ <ol class="breadcrumb">
12
+ <li class="active">
13
+ Settings
14
+ </li>
15
+ </ol>
16
+ <form class="form" action="/settings/update_all" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" autocomplete="off" /><input type="hidden" name="_method" value="put" autocomplete="off" />
17
+ <table class="table table-striped">
18
+ <thead>
19
+ <tr>
20
+ <th>
21
+ Description
22
+ </th>
23
+ <th>
24
+ Value
25
+ </th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <tr data-name="project_name">
30
+ <td>
31
+ translation missing: en.settings.attributes.project_name.name
32
+ </td>
33
+ <td class="setting-value">
34
+ <div class="form-group ">
35
+ <input type="text" name="settings[project_name]" id="settings_project_name" value="Dummy" class="form-control" />
36
+ </div>
37
+ </td>
38
+ </tr>
39
+ <tr data-name="limit">
40
+ <td>
41
+ translation missing: en.settings.attributes.limit.name
42
+ </td>
43
+ <td class="setting-value">
44
+ <div class="form-group ">
45
+ <input type="text" name="settings[limit]" id="settings_limit" value="150" class="form-control" />
46
+ </div>
47
+ </td>
48
+ </tr>
49
+ <tr data-name="angle">
50
+ <td>
51
+ translation missing: en.settings.attributes.angle.name
52
+ </td>
53
+ <td class="setting-value">
54
+ <div class="form-group ">
55
+ <input type="text" name="settings[angle]" id="settings_angle" value="0.5" class="form-control" />
56
+ </div>
57
+ </td>
58
+ </tr>
59
+ <tr data-name="style">
60
+ <td>
61
+ translation missing: en.settings.attributes.style.name
62
+ </td>
63
+ <td class="setting-value">
64
+ <div class="form-group ">
65
+ <textarea name="settings[style]" id="settings_style" class="form-control" rows="10">
66
+ {&quot;border_color&quot;=&gt;&quot;e0e0e0&quot;, &quot;block_color&quot;=&gt;&quot;ffffff&quot;, &quot;title&quot;=&gt;{&quot;font&quot;=&gt;&quot;Tahoma&quot;, &quot;size&quot;=&gt;&quot;12&quot;, &quot;color&quot;=&gt;&quot;107821&quot;}}</textarea>
67
+ </div>
68
+ </td>
69
+ </tr>
70
+ <tr data-name="check_something">
71
+ <td>
72
+ Check This Out!
73
+ </td>
74
+ <td class="setting-value">
75
+ <div class="form-group ">
76
+ <input type="hidden" name="settings[check_something]" id="settings_check_something" value="off" autocomplete="off" /><input type="checkbox" name="settings[check_something]" id="settings_check_something" checked="checked" /><span class="help-block">You really should check it out!</span>
77
+ </div>
78
+ </td>
79
+ </tr>
80
+ <tr data-name="description">
81
+ <td>
82
+ translation missing: en.settings.attributes.description.name
83
+ </td>
84
+ <td class="setting-value">
85
+ <div class="form-group ">
86
+ <textarea name="settings[description]" id="settings_description" class="form-control" rows="10">
87
+ But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful.</textarea>
88
+ </div>
89
+ </td>
90
+ </tr>
91
+ <tr data-name="mode">
92
+ <td>
93
+ Mode
94
+ </td>
95
+ <td class="setting-value">
96
+ <div class="form-group ">
97
+ <input type="checkbox" name="settings[mode][auto]" id="settings_mode_auto" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_mode_auto">Auto</label><input type="checkbox" name="settings[mode][manual]" id="settings_mode_manual" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_mode_manual">Manual</label><span class="help-block">This is some help text.</span>
98
+ </div>
99
+ </td>
100
+ </tr>
101
+ <tr data-name="timer">
102
+ <td>
103
+ translation missing: en.settings.attributes.timer.name
104
+ </td>
105
+ <td class="setting-value">
106
+ <div class="form-group ">
107
+ <input type="text" name="settings[timer]" id="settings_timer" value="7200" class="form-control" />
108
+ </div>
109
+ </td>
110
+ </tr>
111
+ <tr data-name="project_status">
112
+ <td>
113
+ translation missing: en.settings.attributes.project_status.name
114
+ </td>
115
+ <td class="setting-value">
116
+ <div class="form-group ">
117
+ <input type="text" name="settings[project_status]" id="settings_project_status" value="finished" class="form-control" />
118
+ </div>
119
+ </td>
120
+ </tr>
121
+ <tr data-name="locale">
122
+ <td>
123
+ Locale
124
+ </td>
125
+ <td class="setting-value">
126
+ <div class="form-group ">
127
+ <input type="checkbox" name="settings[locale][en]" id="settings_locale_en" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_locale_en">en</label><input type="checkbox" name="settings[locale][ru]" id="settings_locale_ru" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_locale_ru">ru</label>
128
+ </div>
129
+ </td>
130
+ </tr>
131
+ <tr data-name="readonly_item">
132
+ <td>
133
+ translation missing: en.settings.attributes.readonly_item.name
134
+ </td>
135
+ <td class="setting-value">
136
+ <div class="form-group ">
137
+ <input type="text" name="settings[readonly_item]" id="settings_readonly_item" value="100" class="form-control" />
138
+ </div>
139
+ </td>
140
+ </tr>
141
+ </tbody>
142
+ </table>
143
+ <input type="submit" name="commit" value="Save all" class="btn btn-primary btn-lg" data-disable-with="Save all" />
144
+ </form>
145
+
146
+
147
+ </body>
148
+ </html>
@@ -0,0 +1,149 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <link rel="stylesheet" href="/stylesheets/application.css" media="all" data-turbolinks-track="true" />
6
+ <script src="/javascripts/application.js" data-turbolinks-track="true"></script>
7
+
8
+ </head>
9
+ <body>
10
+
11
+ <ol class="breadcrumb">
12
+ <li class="active">
13
+ Settings
14
+ </li>
15
+ </ol>
16
+ <div class="alert alert-success">Settings saved succesfully!</div>
17
+ <form class="form" action="/settings/update_all" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" autocomplete="off" /><input type="hidden" name="_method" value="put" autocomplete="off" />
18
+ <table class="table table-striped">
19
+ <thead>
20
+ <tr>
21
+ <th>
22
+ Description
23
+ </th>
24
+ <th>
25
+ Value
26
+ </th>
27
+ </tr>
28
+ </thead>
29
+ <tbody>
30
+ <tr data-name="project_name">
31
+ <td>
32
+ translation missing: en.settings.attributes.project_name.name
33
+ </td>
34
+ <td class="setting-value">
35
+ <div class="form-group ">
36
+ <input type="text" name="settings[project_name]" id="settings_project_name" value="Dummy" class="form-control" />
37
+ </div>
38
+ </td>
39
+ </tr>
40
+ <tr data-name="limit">
41
+ <td>
42
+ translation missing: en.settings.attributes.limit.name
43
+ </td>
44
+ <td class="setting-value">
45
+ <div class="form-group ">
46
+ <input type="text" name="settings[limit]" id="settings_limit" value="150" class="form-control" />
47
+ </div>
48
+ </td>
49
+ </tr>
50
+ <tr data-name="angle">
51
+ <td>
52
+ translation missing: en.settings.attributes.angle.name
53
+ </td>
54
+ <td class="setting-value">
55
+ <div class="form-group ">
56
+ <input type="text" name="settings[angle]" id="settings_angle" value="0.5" class="form-control" />
57
+ </div>
58
+ </td>
59
+ </tr>
60
+ <tr data-name="style">
61
+ <td>
62
+ translation missing: en.settings.attributes.style.name
63
+ </td>
64
+ <td class="setting-value">
65
+ <div class="form-group ">
66
+ <textarea name="settings[style]" id="settings_style" class="form-control" rows="10">
67
+ {&quot;border_color&quot;=&gt;&quot;e0e0e0&quot;, &quot;block_color&quot;=&gt;&quot;ffffff&quot;, &quot;title&quot;=&gt;{&quot;font&quot;=&gt;&quot;Tahoma&quot;, &quot;size&quot;=&gt;&quot;12&quot;, &quot;color&quot;=&gt;&quot;107821&quot;}}</textarea>
68
+ </div>
69
+ </td>
70
+ </tr>
71
+ <tr data-name="check_something">
72
+ <td>
73
+ Check This Out!
74
+ </td>
75
+ <td class="setting-value">
76
+ <div class="form-group ">
77
+ <input type="hidden" name="settings[check_something]" id="settings_check_something" value="off" autocomplete="off" /><input type="checkbox" name="settings[check_something]" id="settings_check_something" checked="checked" /><span class="help-block">You really should check it out!</span>
78
+ </div>
79
+ </td>
80
+ </tr>
81
+ <tr data-name="description">
82
+ <td>
83
+ translation missing: en.settings.attributes.description.name
84
+ </td>
85
+ <td class="setting-value">
86
+ <div class="form-group ">
87
+ <textarea name="settings[description]" id="settings_description" class="form-control" rows="10">
88
+ But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful.</textarea>
89
+ </div>
90
+ </td>
91
+ </tr>
92
+ <tr data-name="mode">
93
+ <td>
94
+ Mode
95
+ </td>
96
+ <td class="setting-value">
97
+ <div class="form-group ">
98
+ <input type="checkbox" name="settings[mode][auto]" id="settings_mode_auto" style="margin: 0 10px;" /><label style="display: inline-block;" for="settings_mode_auto">Auto</label><input type="checkbox" name="settings[mode][manual]" id="settings_mode_manual" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_mode_manual">Manual</label><span class="help-block">This is some help text.</span>
99
+ </div>
100
+ </td>
101
+ </tr>
102
+ <tr data-name="timer">
103
+ <td>
104
+ translation missing: en.settings.attributes.timer.name
105
+ </td>
106
+ <td class="setting-value">
107
+ <div class="form-group ">
108
+ <input type="text" name="settings[timer]" id="settings_timer" value="7200.0" class="form-control" />
109
+ </div>
110
+ </td>
111
+ </tr>
112
+ <tr data-name="project_status">
113
+ <td>
114
+ translation missing: en.settings.attributes.project_status.name
115
+ </td>
116
+ <td class="setting-value">
117
+ <div class="form-group ">
118
+ <input type="text" name="settings[project_status]" id="settings_project_status" value="finished" class="form-control" />
119
+ </div>
120
+ </td>
121
+ </tr>
122
+ <tr data-name="locale">
123
+ <td>
124
+ Locale
125
+ </td>
126
+ <td class="setting-value">
127
+ <div class="form-group ">
128
+ <input type="checkbox" name="settings[locale][en]" id="settings_locale_en" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_locale_en">en</label><input type="checkbox" name="settings[locale][ru]" id="settings_locale_ru" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_locale_ru">ru</label>
129
+ </div>
130
+ </td>
131
+ </tr>
132
+ <tr data-name="readonly_item">
133
+ <td>
134
+ translation missing: en.settings.attributes.readonly_item.name
135
+ </td>
136
+ <td class="setting-value">
137
+ <div class="form-group ">
138
+ <input type="text" name="settings[readonly_item]" id="settings_readonly_item" value="100" class="form-control" />
139
+ </div>
140
+ </td>
141
+ </tr>
142
+ </tbody>
143
+ </table>
144
+ <input type="submit" name="commit" value="Save all" class="btn btn-primary btn-lg" data-disable-with="Save all" />
145
+ </form>
146
+
147
+
148
+ </body>
149
+ </html>
@@ -0,0 +1,149 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <link rel="stylesheet" href="/stylesheets/application.css" media="all" data-turbolinks-track="true" />
6
+ <script src="/javascripts/application.js" data-turbolinks-track="true"></script>
7
+
8
+ </head>
9
+ <body>
10
+
11
+ <ol class="breadcrumb">
12
+ <li class="active">
13
+ Settings
14
+ </li>
15
+ </ol>
16
+ <div class="alert alert-success">Settings saved succesfully!</div>
17
+ <form class="form" action="/settings/update_all" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" autocomplete="off" /><input type="hidden" name="_method" value="put" autocomplete="off" />
18
+ <table class="table table-striped">
19
+ <thead>
20
+ <tr>
21
+ <th>
22
+ Description
23
+ </th>
24
+ <th>
25
+ Value
26
+ </th>
27
+ </tr>
28
+ </thead>
29
+ <tbody>
30
+ <tr data-name="project_name">
31
+ <td>
32
+ translation missing: en.settings.attributes.project_name.name
33
+ </td>
34
+ <td class="setting-value">
35
+ <div class="form-group ">
36
+ <input type="text" name="settings[project_name]" id="settings_project_name" value="Dummy" class="form-control" />
37
+ </div>
38
+ </td>
39
+ </tr>
40
+ <tr data-name="limit">
41
+ <td>
42
+ translation missing: en.settings.attributes.limit.name
43
+ </td>
44
+ <td class="setting-value">
45
+ <div class="form-group ">
46
+ <input type="text" name="settings[limit]" id="settings_limit" value="150" class="form-control" />
47
+ </div>
48
+ </td>
49
+ </tr>
50
+ <tr data-name="angle">
51
+ <td>
52
+ translation missing: en.settings.attributes.angle.name
53
+ </td>
54
+ <td class="setting-value">
55
+ <div class="form-group ">
56
+ <input type="text" name="settings[angle]" id="settings_angle" value="0.5" class="form-control" />
57
+ </div>
58
+ </td>
59
+ </tr>
60
+ <tr data-name="style">
61
+ <td>
62
+ translation missing: en.settings.attributes.style.name
63
+ </td>
64
+ <td class="setting-value">
65
+ <div class="form-group ">
66
+ <textarea name="settings[style]" id="settings_style" class="form-control" rows="10">
67
+ {&quot;border_color&quot;=&gt;&quot;e0e0e0&quot;, &quot;block_color&quot;=&gt;&quot;ffffff&quot;, &quot;title&quot;=&gt;{&quot;font&quot;=&gt;&quot;Tahoma&quot;, &quot;size&quot;=&gt;&quot;12&quot;, &quot;color&quot;=&gt;&quot;107821&quot;}}</textarea>
68
+ </div>
69
+ </td>
70
+ </tr>
71
+ <tr data-name="check_something">
72
+ <td>
73
+ Check This Out!
74
+ </td>
75
+ <td class="setting-value">
76
+ <div class="form-group ">
77
+ <input type="hidden" name="settings[check_something]" id="settings_check_something" value="off" autocomplete="off" /><input type="checkbox" name="settings[check_something]" id="settings_check_something" checked="checked" /><span class="help-block">You really should check it out!</span>
78
+ </div>
79
+ </td>
80
+ </tr>
81
+ <tr data-name="description">
82
+ <td>
83
+ translation missing: en.settings.attributes.description.name
84
+ </td>
85
+ <td class="setting-value">
86
+ <div class="form-group ">
87
+ <textarea name="settings[description]" id="settings_description" class="form-control" rows="10">
88
+ But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful.</textarea>
89
+ </div>
90
+ </td>
91
+ </tr>
92
+ <tr data-name="mode">
93
+ <td>
94
+ Mode
95
+ </td>
96
+ <td class="setting-value">
97
+ <div class="form-group ">
98
+ <input type="checkbox" name="settings[mode][auto]" id="settings_mode_auto" style="margin: 0 10px;" /><label style="display: inline-block;" for="settings_mode_auto">Auto</label><input type="checkbox" name="settings[mode][manual]" id="settings_mode_manual" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_mode_manual">Manual</label><span class="help-block">This is some help text.</span>
99
+ </div>
100
+ </td>
101
+ </tr>
102
+ <tr data-name="timer">
103
+ <td>
104
+ translation missing: en.settings.attributes.timer.name
105
+ </td>
106
+ <td class="setting-value">
107
+ <div class="form-group ">
108
+ <input type="text" name="settings[timer]" id="settings_timer" value="7200.0" class="form-control" />
109
+ </div>
110
+ </td>
111
+ </tr>
112
+ <tr data-name="project_status">
113
+ <td>
114
+ translation missing: en.settings.attributes.project_status.name
115
+ </td>
116
+ <td class="setting-value">
117
+ <div class="form-group ">
118
+ <input type="text" name="settings[project_status]" id="settings_project_status" value="finished" class="form-control" />
119
+ </div>
120
+ </td>
121
+ </tr>
122
+ <tr data-name="locale">
123
+ <td>
124
+ Locale
125
+ </td>
126
+ <td class="setting-value">
127
+ <div class="form-group ">
128
+ <input type="checkbox" name="settings[locale][en]" id="settings_locale_en" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_locale_en">en</label><input type="checkbox" name="settings[locale][ru]" id="settings_locale_ru" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_locale_ru">ru</label>
129
+ </div>
130
+ </td>
131
+ </tr>
132
+ <tr data-name="readonly_item">
133
+ <td>
134
+ translation missing: en.settings.attributes.readonly_item.name
135
+ </td>
136
+ <td class="setting-value">
137
+ <div class="form-group ">
138
+ <input type="text" name="settings[readonly_item]" id="settings_readonly_item" value="100" class="form-control" />
139
+ </div>
140
+ </td>
141
+ </tr>
142
+ </tbody>
143
+ </table>
144
+ <input type="submit" name="commit" value="Save all" class="btn btn-primary btn-lg" data-disable-with="Save all" />
145
+ </form>
146
+
147
+
148
+ </body>
149
+ </html>
@@ -0,0 +1,148 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>Dummy</title>
5
+ <link rel="stylesheet" href="/stylesheets/application.css" media="all" data-turbolinks-track="true" />
6
+ <script src="/javascripts/application.js" data-turbolinks-track="true"></script>
7
+
8
+ </head>
9
+ <body>
10
+
11
+ <ol class="breadcrumb">
12
+ <li class="active">
13
+ Settings
14
+ </li>
15
+ </ol>
16
+ <form class="form" action="/settings/update_all" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="&#x2713;" autocomplete="off" /><input type="hidden" name="_method" value="put" autocomplete="off" />
17
+ <table class="table table-striped">
18
+ <thead>
19
+ <tr>
20
+ <th>
21
+ Description
22
+ </th>
23
+ <th>
24
+ Value
25
+ </th>
26
+ </tr>
27
+ </thead>
28
+ <tbody>
29
+ <tr data-name="project_name">
30
+ <td>
31
+ translation missing: en.settings.attributes.project_name.name
32
+ </td>
33
+ <td class="setting-value">
34
+ <div class="form-group ">
35
+ <input type="text" name="settings[project_name]" id="settings_project_name" value="Dummy" class="form-control" />
36
+ </div>
37
+ </td>
38
+ </tr>
39
+ <tr data-name="limit">
40
+ <td>
41
+ translation missing: en.settings.attributes.limit.name
42
+ </td>
43
+ <td class="setting-value">
44
+ <div class="form-group ">
45
+ <input type="text" name="settings[limit]" id="settings_limit" value="150" class="form-control" />
46
+ </div>
47
+ </td>
48
+ </tr>
49
+ <tr data-name="angle">
50
+ <td>
51
+ translation missing: en.settings.attributes.angle.name
52
+ </td>
53
+ <td class="setting-value">
54
+ <div class="form-group ">
55
+ <input type="text" name="settings[angle]" id="settings_angle" value="0.5" class="form-control" />
56
+ </div>
57
+ </td>
58
+ </tr>
59
+ <tr data-name="style">
60
+ <td>
61
+ translation missing: en.settings.attributes.style.name
62
+ </td>
63
+ <td class="setting-value">
64
+ <div class="form-group ">
65
+ <textarea name="settings[style]" id="settings_style" class="form-control" rows="10">
66
+ {&quot;border_color&quot;=&gt;&quot;e0e0e0&quot;, &quot;block_color&quot;=&gt;&quot;ffffff&quot;, &quot;title&quot;=&gt;{&quot;font&quot;=&gt;&quot;Tahoma&quot;, &quot;size&quot;=&gt;&quot;12&quot;, &quot;color&quot;=&gt;&quot;107821&quot;}}</textarea>
67
+ </div>
68
+ </td>
69
+ </tr>
70
+ <tr data-name="check_something">
71
+ <td>
72
+ Check This Out!
73
+ </td>
74
+ <td class="setting-value">
75
+ <div class="form-group ">
76
+ <input type="hidden" name="settings[check_something]" id="settings_check_something" value="off" autocomplete="off" /><input type="checkbox" name="settings[check_something]" id="settings_check_something" checked="checked" /><span class="help-block">You really should check it out!</span>
77
+ </div>
78
+ </td>
79
+ </tr>
80
+ <tr data-name="description">
81
+ <td>
82
+ translation missing: en.settings.attributes.description.name
83
+ </td>
84
+ <td class="setting-value">
85
+ <div class="form-group ">
86
+ <textarea name="settings[description]" id="settings_description" class="form-control" rows="10">
87
+ But I must explain to you how all this mistaken idea of denouncing pleasure and praising pain was born and I will give you a complete account of the system, and expound the actual teachings of the great explorer of the truth, the master-builder of human happiness. No one rejects, dislikes, or avoids pleasure itself, because it is pleasure, but because those who do not know how to pursue pleasure rationally encounter consequences that are extremely painful.</textarea>
88
+ </div>
89
+ </td>
90
+ </tr>
91
+ <tr data-name="mode">
92
+ <td>
93
+ Mode
94
+ </td>
95
+ <td class="setting-value">
96
+ <div class="form-group ">
97
+ <input type="checkbox" name="settings[mode][auto]" id="settings_mode_auto" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_mode_auto">Auto</label><input type="checkbox" name="settings[mode][manual]" id="settings_mode_manual" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_mode_manual">Manual</label><span class="help-block">This is some help text.</span>
98
+ </div>
99
+ </td>
100
+ </tr>
101
+ <tr data-name="timer">
102
+ <td>
103
+ translation missing: en.settings.attributes.timer.name
104
+ </td>
105
+ <td class="setting-value">
106
+ <div class="form-group ">
107
+ <input type="text" name="settings[timer]" id="settings_timer" value="7200" class="form-control" />
108
+ </div>
109
+ </td>
110
+ </tr>
111
+ <tr data-name="project_status">
112
+ <td>
113
+ translation missing: en.settings.attributes.project_status.name
114
+ </td>
115
+ <td class="setting-value">
116
+ <div class="form-group ">
117
+ <input type="text" name="settings[project_status]" id="settings_project_status" value="finished" class="form-control" />
118
+ </div>
119
+ </td>
120
+ </tr>
121
+ <tr data-name="locale">
122
+ <td>
123
+ Locale
124
+ </td>
125
+ <td class="setting-value">
126
+ <div class="form-group ">
127
+ <input type="checkbox" name="settings[locale][en]" id="settings_locale_en" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_locale_en">en</label><input type="checkbox" name="settings[locale][ru]" id="settings_locale_ru" style="margin: 0 10px;" checked="checked" /><label style="display: inline-block;" for="settings_locale_ru">ru</label>
128
+ </div>
129
+ </td>
130
+ </tr>
131
+ <tr data-name="readonly_item">
132
+ <td>
133
+ translation missing: en.settings.attributes.readonly_item.name
134
+ </td>
135
+ <td class="setting-value">
136
+ <div class="form-group ">
137
+ <input type="text" name="settings[readonly_item]" id="settings_readonly_item" value="100" class="form-control" />
138
+ </div>
139
+ </td>
140
+ </tr>
141
+ </tbody>
142
+ </table>
143
+ <input type="submit" name="commit" value="Save all" class="btn btn-primary btn-lg" data-disable-with="Save all" />
144
+ </form>
145
+
146
+
147
+ </body>
148
+ </html>
@@ -105,8 +105,8 @@ describe "Settings interface", type: :feature do
105
105
  form_value = JSON.generate(h)
106
106
  fill_in("settings[style]", with: form_value)
107
107
  click_on_save
108
- expect(find("#settings_style").value).to eq("{\"border_color\"=>\"e0e0e0\", \"block_color\"=>\"000000\"}")
109
- expect(Settings[:style]).to eq(h)
108
+ # expect(find("#settings_style").value).to eq("{\"border_color\" => \"e0e0e0\", \"block_color\" => \"000000\"}")
109
+ expect(Settings.style).to eq(h)
110
110
  end
111
111
 
112
112
  describe 'array' do
@@ -116,20 +116,21 @@ describe "Settings interface", type: :feature do
116
116
  click_on_save
117
117
  expect(find('#settings_mode_auto')).not_to be_checked
118
118
  expect(find('#settings_mode_manual')).to be_checked
119
- expect(Settings[:mode]).to eq([:manual])
119
+ expect(Settings.mode).to eq([:manual])
120
120
 
121
121
  uncheck 'settings_mode_manual'
122
+
122
123
  click_on_save
123
124
  expect(find('#settings_mode_auto')).not_to be_checked
124
125
  expect(find('#settings_mode_manual')).not_to be_checked
125
- expect(Settings[:mode]).to eq([])
126
+ expect(Settings.mode).to eq([])
126
127
 
127
128
  check 'settings_mode_manual'
128
129
  check 'settings_mode_auto'
129
130
  click_on_save
130
131
  expect(find('#settings_mode_auto')).to be_checked
131
132
  expect(find('#settings_mode_manual')).to be_checked
132
- expect(Settings[:mode]).to eq([:auto, :manual])
133
+ expect(Settings.mode).to eq([:auto, :manual])
133
134
  end
134
135
 
135
136
  it 'as select' do
@@ -138,12 +139,12 @@ describe "Settings interface", type: :feature do
138
139
  select 'Auto', from: 'settings_mode'
139
140
  click_on_save
140
141
  expect(find('select#settings_mode').value).to eq('auto')
141
- expect(Settings[:mode]).to eq(:auto)
142
+ expect(Settings.mode).to eq(:auto)
142
143
 
143
144
  select 'Manual', from: 'settings_mode'
144
145
  click_on_save
145
146
  expect(find('select#settings_mode').value).to eq('manual')
146
- expect(Settings[:mode]).to eq(:manual)
147
+ expect(Settings.mode).to eq(:manual)
147
148
  end
148
149
  end
149
150
 
@@ -159,7 +160,7 @@ describe "Settings interface", type: :feature do
159
160
  fill_in("settings[#{name}]", with: form_value)
160
161
  click_on_save
161
162
  expect(find("#settings_#{name}").value).to eq(form_value)
162
- expect(Settings[name]).to eq(db_value)
163
+ expect(Settings.public_send(name)).to eq(db_value)
163
164
  end
164
165
 
165
166
  def visit_settings_page