fae-rails 1.7.1 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -2
  3. data/Rakefile +0 -3
  4. data/app/assets/images/fae/tutorial_model_location.png +0 -0
  5. data/app/assets/javascripts/fae/_deploy.js +198 -0
  6. data/app/assets/javascripts/fae/_modals.js +94 -0
  7. data/app/assets/javascripts/fae/_tables.js +11 -25
  8. data/app/assets/javascripts/fae/application.js +4 -2
  9. data/app/assets/javascripts/fae/fae_init.js +0 -4
  10. data/app/assets/javascripts/fae/form/_ajax.js +26 -7
  11. data/app/assets/javascripts/fae/form/_cancel.js +1 -0
  12. data/app/assets/javascripts/fae/form/_filtering.js +34 -0
  13. data/app/assets/javascripts/fae/form/_form.js +1 -0
  14. data/app/assets/javascripts/fae/form/_form_manager.js +295 -0
  15. data/app/assets/javascripts/fae/form/_slugger.js.erb +2 -2
  16. data/app/assets/javascripts/fae/form/_validator.js +24 -14
  17. data/app/assets/javascripts/fae/form/inputs/_color.js +2 -1
  18. data/app/assets/javascripts/fae/form/inputs/_select.js +5 -2
  19. data/app/assets/javascripts/fae/navigation/_language.js +1 -1
  20. data/app/assets/javascripts/fae/navigation/_navigation.js +9 -21
  21. data/app/assets/javascripts/fae/navigation/_subnav_highlighter.js +7 -41
  22. data/app/assets/javascripts/fae/vendor/jqColorPicker.min.js +0 -1
  23. data/app/assets/stylesheets/fae/base.scss +7 -8
  24. data/app/assets/stylesheets/fae/globals/imports/_variables.scss +1 -2
  25. data/app/assets/stylesheets/fae/globals/layout/_base.scss +7 -2
  26. data/app/assets/stylesheets/fae/globals/layout/_content-header.scss +17 -31
  27. data/app/assets/stylesheets/fae/globals/navigation/_header.scss +2 -2
  28. data/app/assets/stylesheets/fae/globals/navigation/_multi-col-subnav.scss +50 -0
  29. data/app/assets/stylesheets/fae/modules/_buttons.scss +11 -0
  30. data/app/assets/stylesheets/fae/modules/_deploy.scss +25 -0
  31. data/app/assets/stylesheets/fae/modules/_modal.scss +25 -0
  32. data/app/assets/stylesheets/fae/modules/_toggles.scss +39 -23
  33. data/app/assets/stylesheets/fae/modules/forms/_asset-actions.scss +1 -1
  34. data/app/assets/stylesheets/fae/modules/forms/_base.scss +1 -1
  35. data/app/assets/stylesheets/fae/modules/forms/_checkbox.scss +1 -1
  36. data/app/assets/stylesheets/fae/modules/forms/_date.scss +16 -0
  37. data/app/assets/stylesheets/fae/modules/forms/_form-manager.scss +82 -0
  38. data/app/assets/stylesheets/fae/modules/forms/_radio.scss +1 -1
  39. data/app/assets/stylesheets/fae/modules/forms/_select.scss +7 -6
  40. data/app/assets/stylesheets/fae/modules/forms/_simple-mde.scss +1 -1
  41. data/app/assets/stylesheets/fae/modules/forms/_textarea.scss +1 -1
  42. data/app/assets/stylesheets/fae/modules/tables/_filters.scss +4 -0
  43. data/app/assets/stylesheets/fae/pages/_home.scss +18 -0
  44. data/app/assets/stylesheets/fae/pages/_login.scss +4 -0
  45. data/app/controllers/fae/application_controller.rb +22 -1
  46. data/app/controllers/fae/base_controller.rb +6 -2
  47. data/app/controllers/fae/deploy_controller.rb +24 -0
  48. data/app/controllers/fae/deploy_hooks_controller.rb +71 -0
  49. data/app/controllers/fae/form_managers_controller.rb +19 -0
  50. data/app/controllers/fae/options_controller.rb +1 -0
  51. data/app/controllers/fae/pages_controller.rb +3 -2
  52. data/app/controllers/fae/static_pages_controller.rb +6 -1
  53. data/app/controllers/fae/users_controller.rb +19 -1
  54. data/app/controllers/fae/utilities_controller.rb +18 -6
  55. data/app/helpers/fae/application_helper.rb +27 -2
  56. data/app/helpers/fae/form_helper.rb +40 -8
  57. data/app/helpers/fae/nested_form_helper.rb +2 -2
  58. data/app/helpers/fae/view_helper.rb +99 -43
  59. data/app/models/concerns/fae/base_model_concern.rb +10 -7
  60. data/app/models/concerns/fae/user_concern.rb +10 -1
  61. data/app/models/fae/change.rb +18 -5
  62. data/app/models/fae/deploy_hook.rb +12 -0
  63. data/app/models/fae/file.rb +1 -1
  64. data/app/models/fae/form_manager.rb +24 -0
  65. data/app/models/fae/image.rb +1 -1
  66. data/app/models/fae/option.rb +1 -1
  67. data/app/models/fae/role.rb +1 -1
  68. data/app/models/fae/static_page.rb +11 -2
  69. data/app/models/fae/user.rb +4 -5
  70. data/app/services/fae/netlify_api.rb +197 -0
  71. data/app/uploaders/fae/file_uploader.rb +2 -5
  72. data/app/uploaders/fae/image_uploader.rb +3 -3
  73. data/app/views/devise/unlocks/new.html.slim +5 -9
  74. data/app/views/fae/application/_content_form.html.slim +16 -11
  75. data/app/views/fae/application/_file_uploader.html.slim +11 -3
  76. data/app/views/fae/application/_global_search_results.html.slim +2 -2
  77. data/app/views/fae/application/_header.slim +12 -9
  78. data/app/views/fae/application/_markdown_helper.slim +17 -17
  79. data/app/views/fae/application/_mobilenav.slim +9 -6
  80. data/app/views/fae/application/_user_log.html.slim +2 -2
  81. data/app/views/fae/deploy/index.html.slim +40 -0
  82. data/app/views/fae/deploy_hooks/_form.html.slim +18 -0
  83. data/app/views/fae/deploy_hooks/_table.html.slim +28 -0
  84. data/app/views/fae/deploy_hooks/edit.html.slim +3 -0
  85. data/app/views/fae/deploy_hooks/new.html.slim +3 -0
  86. data/app/views/fae/images/_image_uploader.html.slim +15 -6
  87. data/app/views/fae/options/_form.html.slim +11 -8
  88. data/app/views/fae/pages/activity_log.html.slim +16 -12
  89. data/app/views/fae/pages/disabled_environment.html.slim +2 -2
  90. data/app/views/fae/pages/error404.html.slim +5 -3
  91. data/app/views/fae/pages/home.html.slim +32 -21
  92. data/app/views/fae/setup/first_user.html.slim +3 -3
  93. data/app/views/fae/shared/_form_header.html.slim +37 -33
  94. data/app/views/fae/shared/_index_header.html.slim +3 -2
  95. data/app/views/fae/shared/_nested_table.html.slim +6 -6
  96. data/app/views/fae/shared/_recent_changes.html.slim +6 -6
  97. data/app/views/fae/shared/_shared_nested_table.html.slim +5 -2
  98. data/app/views/fae/static_pages/index.html.slim +2 -2
  99. data/app/views/fae/users/_form.html.slim +8 -12
  100. data/app/views/fae/users/index.html.slim +7 -7
  101. data/app/views/layouts/fae/application.html.slim +1 -0
  102. data/config/deploy.rb +3 -1
  103. data/config/initializers/devise.rb +6 -6
  104. data/config/locales/devise.cs.yml +59 -0
  105. data/config/locales/fae.cs.yml +125 -0
  106. data/config/locales/fae.en.yml +145 -0
  107. data/config/locales/fae.zh-CN.yml +109 -0
  108. data/config/routes.rb +9 -1
  109. data/db/migrate/20140809222030_add_user_table.rb +2 -2
  110. data/db/migrate/20140822224029_create_fae_roles.rb +1 -1
  111. data/db/migrate/20141008180718_create_fae_images_table.rb +1 -1
  112. data/db/migrate/20141017194616_create_fae_options.rb +1 -1
  113. data/db/migrate/20141021181327_create_fae_files.rb +1 -1
  114. data/db/migrate/20141021183047_create_fae_text_areas.rb +1 -1
  115. data/db/migrate/20141021184311_create_fae_pages.rb +1 -1
  116. data/db/migrate/20141105214814_create_fae_text_fields.rb +1 -1
  117. data/db/migrate/20150930224821_create_fae_changes.rb +1 -1
  118. data/db/migrate/20190925153222_create_fae_form_managers.rb +11 -0
  119. data/db/migrate/20220118192729_create_fae_publish_hooks.rb +10 -0
  120. data/db/migrate/20220128133730_rename_publish_hooks.rb +5 -0
  121. data/db/migrate/20220202153607_add_position_to_deploy_hooks.rb +6 -0
  122. data/lib/fae/options.rb +4 -2
  123. data/lib/fae/version.rb +1 -1
  124. data/lib/generators/fae/base_generator.rb +62 -8
  125. data/lib/generators/fae/nested_index_scaffold_generator.rb +1 -1
  126. data/lib/generators/fae/nested_scaffold_generator.rb +16 -2
  127. data/lib/generators/fae/page_generator.rb +8 -0
  128. data/lib/generators/fae/scaffold_generator.rb +1 -1
  129. data/lib/generators/fae/templates/assets/fae.js +1 -1
  130. data/lib/generators/fae/templates/controllers/nested_scaffold_controller.rb +14 -0
  131. data/lib/generators/fae/templates/graphql/graphql_page_type.rb +17 -0
  132. data/lib/generators/fae/templates/graphql/graphql_type.rb +13 -0
  133. data/lib/generators/fae/templates/initializers/fae.rb +16 -1
  134. data/lib/generators/fae/templates/views/_form.html.slim +11 -4
  135. data/lib/generators/fae/templates/views/_form_index_nested.html.slim +15 -1
  136. data/lib/generators/fae/templates/views/_form_nested.html.slim +19 -2
  137. data/lib/generators/fae/templates/views/index_nested.html.slim +1 -0
  138. data/lib/generators/fae/templates/views/static_page_form.html.slim +14 -3
  139. metadata +70 -47
  140. data/app/views/fae/shared/_form_buttons.html.slim +0 -11
  141. data/app/views/fae/shared/_nested_table_advanced.html.slim +0 -18
  142. data/lib/sub_test_task_patch.rb +0 -129
@@ -33,8 +33,7 @@
33
33
  text-transform: uppercase;
34
34
  font-size: 14px;
35
35
  letter-spacing: .2em;
36
- // counters the padding from .content
37
- margin: 0 negate($content-buffer) 30px;
36
+ margin: 0 0 30px;
38
37
  }
39
38
 
40
39
  h3 {
@@ -46,3 +45,9 @@
46
45
  margin-bottom: 20px;
47
46
  }
48
47
  }
48
+
49
+ p {
50
+ margin-bottom: 1.3em;
51
+ max-width: 80%;
52
+ line-height: 1.2em;
53
+ }
@@ -1,22 +1,20 @@
1
+ $content-header-padding: 16px;
2
+
1
3
  // content header
2
4
  .content-header {
3
- @include clearfix;
4
5
  @include stack($fae-nav-stack);
5
6
  width: 100%;
6
- padding: 16px $content-buffer;
7
+ padding: $content-header-padding $content-buffer;
7
8
  background: $c-content-header-bg;
8
9
  border-bottom: 1px solid $c-grey;
9
10
  position: absolute;
10
11
  left: 0;
11
12
  top: 0;
12
- box-shadow: 0 0 10px $c-grey;
13
-
14
- &:after {
15
- content: '';
16
- display: block;
17
- height: 100%;
18
- position: static;
19
- }
13
+ box-shadow: 0 0 5px rgba(0, 0, 0, 0.5);
14
+ display: flex;
15
+ justify-content: space-between;
16
+ align-items: center;
17
+ flex-wrap: wrap;
20
18
 
21
19
  &.-dashboard {
22
20
  padding-top: 26px;
@@ -28,13 +26,6 @@
28
26
  }
29
27
  }
30
28
 
31
- h1,
32
- .breadcrumbs {
33
- @include bp(large) {
34
- float: left;
35
- }
36
- }
37
-
38
29
  h1 {
39
30
  padding: 5px 0;
40
31
  font-weight: bold;
@@ -42,17 +33,17 @@
42
33
  }
43
34
 
44
35
  .content-header-subnav {
45
- position: absolute;
46
- left: $content-buffer;
47
36
  bottom: 0;
48
37
  width: 100%;
38
+ margin-bottom: negate($content-header-padding);
39
+ flex-basis: 100%;
49
40
 
50
41
  a {
51
42
  @include transition(all .2s);
52
43
  display: inline-block;
53
44
  vertical-align: top;
54
45
  padding: 6px 0;
55
- border-bottom: 4px solid transparent;
46
+ border-bottom: 2px solid transparent;
56
47
  margin: 0 12px;
57
48
  font-size: 13px;
58
49
  color: $c-darkest-grey;
@@ -83,20 +74,15 @@
83
74
  }
84
75
 
85
76
  .content-header-buttons {
86
- margin: 10px 0;
87
-
88
- @include bp(large) {
89
- float: right;
90
- margin: 0;
91
- }
92
-
77
+ position: absolute;
78
+ height: 100%;
79
+ top: 0;
80
+ display: flex;
81
+ align-items: center;
82
+ right: 30px;
93
83
  a {
94
84
  margin-right: 5px;
95
85
 
96
- @include bp(medium) {
97
- height: 37px; // Fix height so descenders don't mess up the visual balance
98
- }
99
-
100
86
  &:last-child {
101
87
  margin-right: 0;
102
88
  }
@@ -6,7 +6,7 @@
6
6
  left: 0;
7
7
  width: 100%;
8
8
  background: $c-header-bg;
9
- border-bottom: $header-border-width solid $c-custom-highlight;
9
+ border-top: $header-border-width solid $c-custom-highlight;
10
10
 
11
11
  @include bp(large) {
12
12
  padding: 0 $content-buffer;
@@ -87,7 +87,7 @@
87
87
  }
88
88
  }
89
89
 
90
- .main-header-nav {
90
+ .main-header-nav, .utility-nav {
91
91
  @include transition(opacity .2s ease-in-out);
92
92
 
93
93
  a {
@@ -0,0 +1,50 @@
1
+ $col_width: 176px;
2
+ $col_width_padding: 36px;
3
+
4
+ header.main-header ul ul.multicol-nav {
5
+ min-height: auto;
6
+ max-height: 1024px!important;
7
+ left: -($col_width * .5);
8
+ }
9
+ .main-header-nav li:nth-of-type(n+5) ul.multicol-nav.three,
10
+ .main-header-nav li ul.multicol-nav.four,
11
+ .main-header-nav li:nth-of-type(n+7) ul.multicol-nav {
12
+ left: -($col_width * 0.75);
13
+ }
14
+ .main-header-nav li:nth-of-type(n+6) ul.multicol-nav.three,
15
+ .main-header-nav li:nth-of-type(n+2) ul.multicol-nav.four,
16
+ .main-header-nav li:nth-of-type(n+8) ul.multicol-nav {
17
+ left: -($col_width * 1);
18
+ }
19
+
20
+ .main-header-nav li:nth-of-type(n+7) ul.multicol-nav.three,
21
+ .main-header-nav li:nth-of-type(n+3) ul.multicol-nav.four {
22
+ left: -($col_width * 1.25);
23
+ }
24
+
25
+ .main-header-nav li:nth-of-type(n+8) ul.multicol-nav.three,
26
+ .main-header-nav li:nth-of-type(n+4) ul.multicol-nav.four {
27
+ left: -($col_width * 1.75);
28
+ }
29
+
30
+ .main-header-nav li:nth-of-type(n+5) ul.multicol-nav.four {
31
+ left: -($col_width * 2.25);
32
+ }
33
+ .main-header-nav li:nth-of-type(n+6) ul.multicol-nav.four {
34
+ left: -($col_width * 2.5);
35
+ }
36
+ .main-header-nav li:nth-of-type(n+7) ul.multicol-nav.four {
37
+ left: -($col_width * 3);
38
+ }
39
+
40
+
41
+ .multicol-nav {
42
+ display: grid;
43
+ grid-template-columns: $col_width $col_width;
44
+ &.three {
45
+ grid-template-columns: $col_width $col_width $col_width;
46
+ }
47
+ &.four {
48
+ grid-template-columns: $col_width $col_width $col_width $col_width;
49
+ }
50
+ }
@@ -13,6 +13,10 @@ button[type=button],
13
13
  line-height: 1;
14
14
  }
15
15
 
16
+ .deploy .button {
17
+ margin-right: 10px;
18
+ }
19
+
16
20
  // Dark buttons
17
21
 
18
22
  input[type=submit],
@@ -47,6 +51,13 @@ button[type=button],
47
51
  &:hover {
48
52
  background: $c-light-button-gradient-end;
49
53
  }
54
+
55
+ &:disabled {
56
+ background: $c-light-button-gradient-end;
57
+ color: $c-mid-grey;
58
+ border-color: $c-grey;
59
+ cursor: wait;
60
+ }
50
61
  }
51
62
 
52
63
  .button {
@@ -0,0 +1,25 @@
1
+ .deploying-heading.running:after {
2
+ overflow: hidden;
3
+ display: inline-block;
4
+ vertical-align: bottom;
5
+ -webkit-animation: ellipsis steps(4,end) 900ms infinite;
6
+ animation: ellipsis steps(4,end) 900ms infinite;
7
+ content: "\2026"; /* ascii code for the ellipsis character */
8
+ width: 0px;
9
+ }
10
+
11
+ @keyframes ellipsis {
12
+ to {
13
+ width: 20px;
14
+ }
15
+ }
16
+
17
+ @-webkit-keyframes ellipsis {
18
+ to {
19
+ width: 20px;
20
+ }
21
+ }
22
+
23
+ .hidden {
24
+ display: none;
25
+ }
@@ -76,3 +76,28 @@
76
76
  font-size: 12px;
77
77
  }
78
78
  }
79
+
80
+ #fae-modal {
81
+ padding: 0;
82
+ box-shadow: none;
83
+
84
+ .simplemodal-data {
85
+ min-height: 100%;
86
+ }
87
+
88
+ .simplemodal-close {
89
+ position: absolute;
90
+ top: 5px;
91
+ right: 5px;
92
+ height: 20px;
93
+ width: 20px;
94
+
95
+ &:before {
96
+ position: relative;
97
+ padding: 4px;
98
+ top: auto;
99
+ right: auto;
100
+ color: #3b3b3b;
101
+ }
102
+ }
103
+ }
@@ -2,47 +2,63 @@
2
2
  .slider-wrapper {
3
3
  display: block;
4
4
  position: relative;
5
- width: 60px;
6
- border: 1px solid $c-mid-grey;
7
- border-radius: 2px;
5
+ width: 50px;
6
+ border-radius: 15px;
7
+ height: 25px;
8
8
  font-size: 12px;
9
- overflow: hidden;
10
9
  cursor: pointer;
11
10
  text-decoration: none;
12
- background: $c-white;
11
+ background: $c-light-grey;
12
+ transition: background-color 0.24s;
13
+ &:hover, &:focus {
14
+ background-color: $c-mid-grey;
15
+ }
16
+ &.slider-yes-selected {
17
+ background: $c-custom-highlight;
18
+ }
13
19
  }
14
20
 
15
21
  .slider-options {
16
- @include transition(left .2s);
17
- position: relative;
18
- left: -35px;
22
+ @include transition(left .24s);
19
23
  white-space: nowrap;
20
-
21
- .slider-yes-selected & {
22
- left: 0;
23
- }
24
24
  }
25
25
 
26
26
  .slider-option-selector {
27
- display: inline-block;
28
- width: 18px;
27
+ display: block;
28
+ position: absolute;
29
+ width: 50%;
30
+ left: 0;
31
+ top: 0;
32
+ bottom: 0;
33
+ border-radius: 50%;
34
+ box-sizing: border-box;
35
+ height: 100%;
36
+ border: 1px solid $c-mid-grey;
37
+ transition: left 0.24s;
38
+ .slider-yes-selected & {
39
+ left: 50%;
40
+ }
41
+ background: $c-white;
29
42
  }
30
43
 
31
44
  .slider-option-no,
32
45
  .slider-option-yes {
33
- @include user-select(none);
34
- display: inline-block;
35
- width: 35px;
36
- padding: 3px 4px;
37
- text-align: center;
46
+ position: absolute;
47
+ height: 0;
48
+ width: 0;
49
+ left: -200vw;
38
50
  }
39
51
 
40
52
  .slider-option-no {
41
- color: $c-slider-no-color;
42
- background: $c-slider-no-bg;
53
+ display:block;
54
+ .slider-yes-selected & {
55
+ display: none;
56
+ }
43
57
  }
44
58
 
45
59
  .slider-option-yes {
46
- color: $c-white;
47
- background: $c-custom-highlight;
60
+ display: none;
61
+ .slider-yes-selected & {
62
+ display:block;
63
+ }
48
64
  }
@@ -45,7 +45,7 @@
45
45
  margin-right: 10px;
46
46
 
47
47
  &:focus {
48
- border-color: $c-notice-content;
48
+ border-color: $c-focus-border;
49
49
  outline: 0;
50
50
  }
51
51
 
@@ -14,7 +14,7 @@ input[type=email] {
14
14
  max-width: 100%;
15
15
 
16
16
  &:focus {
17
- border-color: $c-notice-content;
17
+ border-color: $c-focus-border;
18
18
  }
19
19
  }
20
20
 
@@ -56,7 +56,7 @@ label.checkbox,
56
56
 
57
57
  label.checkbox.focused:before,
58
58
  .checkbox.focused label:before {
59
- border-color: $c-notice-content;
59
+ border-color: $c-focus-border;
60
60
  }
61
61
 
62
62
  .checkbox-wrapper {
@@ -207,6 +207,22 @@
207
207
  padding: 12px;
208
208
  font-size: 19px;
209
209
  color: $c-darker-grey;
210
+
211
+ }
212
+
213
+ &.table-filter-group {
214
+ width: 130px;
215
+
216
+ input[type=text] {
217
+ border-radius: 0;
218
+ }
219
+
220
+ label:before {
221
+ right: -5px;
222
+ bottom: -6px;
223
+
224
+ font-size: 15px;
225
+ }
210
226
  }
211
227
  }
212
228
 
@@ -0,0 +1,82 @@
1
+ .form-manager-form {
2
+ z-index: 2;
3
+ background: gray(90);
4
+ display: none;
5
+ position: absolute;
6
+ width: 100%;
7
+ height: 100%;
8
+ overflow: scroll;
9
+ margin-top: 1px;
10
+ padding: 100px 40px 0px 30px;
11
+
12
+ .js-form-manager-submit {
13
+ background: gray(20);
14
+ color: white;
15
+ font-size: 13px;
16
+
17
+ &:hover {
18
+ background: gray(10);
19
+ }
20
+ }
21
+
22
+ .helper {
23
+ color: gray(40);
24
+ font-weight: normal;
25
+ }
26
+
27
+ .inner-content {
28
+ margin-top: 103px;
29
+ }
30
+
31
+ .field-input {
32
+ margin-bottom: 10px;
33
+ }
34
+
35
+ header {
36
+ height: 74px;
37
+
38
+ a {
39
+ margin-right: 5px;
40
+ float: right;
41
+ }
42
+ }
43
+
44
+ .form-section {
45
+ margin-bottom: 30px;
46
+ overflow: auto;
47
+ }
48
+
49
+ .single-field {
50
+ float: left;
51
+ width: 25%;
52
+ margin-right: 20px;
53
+
54
+ input {
55
+ width: 100%;
56
+ }
57
+
58
+ .field_title {
59
+ width: 100%;
60
+ display: inline-block;
61
+
62
+ label {
63
+ float: left;
64
+ margin-right: 10px;
65
+ }
66
+
67
+ input {
68
+ width: auto;
69
+ float: left;
70
+ }
71
+ }
72
+ }
73
+ }
74
+
75
+ .js-form-manager-container {
76
+ display: none;
77
+ z-index: 4;
78
+ }
79
+
80
+ .js-launch-form-manager {
81
+ margin-left: 10px;
82
+ }
@@ -64,6 +64,6 @@
64
64
 
65
65
  .radio_collection.focused {
66
66
  .radio_collection-bullet {
67
- border-color: $c-notice-content;
67
+ border-color: $c-focus-border;
68
68
  }
69
69
  }
@@ -32,7 +32,7 @@
32
32
  top: auto;
33
33
  bottom: 100%;
34
34
  margin-bottom: -1px;
35
- border-top: 1px solid $c-notice-content;
35
+ border-top: 1px solid $c-focus-border;
36
36
  border-bottom: none;
37
37
  box-shadow: none;
38
38
  border-radius: 0;
@@ -41,7 +41,7 @@
41
41
 
42
42
  .chosen-container-active {
43
43
  .chosen-single {
44
- border-color: $c-notice-content;
44
+ border-color: $c-focus-border;
45
45
  background: $c-chosen-gradient-end;
46
46
  }
47
47
  }
@@ -120,7 +120,7 @@
120
120
  .chosen-container-multi.chosen-container-active {
121
121
  .chosen-single,
122
122
  .chosen-choices {
123
- border-color: $c-notice-content;
123
+ border-color: $c-focus-border;
124
124
  }
125
125
  }
126
126
 
@@ -159,7 +159,8 @@
159
159
  }
160
160
 
161
161
  .chosen-search {
162
- display: none;
162
+ position: absolute;
163
+ left: -9999px;
163
164
  }
164
165
  }
165
166
 
@@ -185,7 +186,7 @@
185
186
 
186
187
  .chosen-container {
187
188
  .chosen-drop {
188
- border-color: $c-notice-content;
189
+ border-color: $c-focus-border;
189
190
  }
190
191
  }
191
192
 
@@ -307,7 +308,7 @@
307
308
 
308
309
  &.ms-focus {
309
310
  outline: 0;
310
- border-bottom: 4px solid $c-notice-content;
311
+ border-bottom: 4px solid $c-focus-border;
311
312
  }
312
313
  }
313
314
 
@@ -23,7 +23,7 @@
23
23
  &.mde-focus {
24
24
  .CodeMirror-wrap,
25
25
  .editor-toolbar {
26
- border-color: $c-notice-content;
26
+ border-color: $c-focus-border;
27
27
  }
28
28
  }
29
29
  }
@@ -11,6 +11,6 @@ textarea {
11
11
  border-radius: 2px;
12
12
 
13
13
  &:focus {
14
- border-color: $c-notice-content;
14
+ border-color: $c-focus-border;
15
15
  }
16
16
  }
@@ -58,4 +58,8 @@
58
58
  .table-filter-group {
59
59
  display: inline-block;
60
60
  margin: 0 30px 20px 0;
61
+
62
+ &.no-right-margin {
63
+ margin-right: 0;
64
+ }
61
65
  }
@@ -0,0 +1,18 @@
1
+ .tutorial {
2
+ div {
3
+ background-image: image-url('fae/tutorial_model_location.png');
4
+ height: 11em;
5
+ margin-left: 2em;
6
+ background-size: 60%;
7
+ background-position: left;
8
+ background-repeat: no-repeat;
9
+ }
10
+
11
+ @media (max-width: 800px){
12
+ height: 8em;
13
+ }
14
+
15
+ p {
16
+ margin: 2em;
17
+ }
18
+ }
@@ -33,6 +33,10 @@
33
33
  width: 50%;
34
34
  margin: auto;
35
35
 
36
+ h2 {
37
+ margin: 0 0 28px;
38
+ }
39
+
36
40
  @include bp(login_container) {
37
41
  display: inline-block;
38
42
  vertical-align: middle;
@@ -17,11 +17,32 @@ module Fae
17
17
  before_action :detect_cancellation
18
18
  before_action :set_change_user
19
19
  before_action :set_locale
20
+ before_action :setup_form_manager
20
21
 
21
22
  private
22
23
 
24
+ def setup_form_manager
25
+ if Fae.use_form_manager
26
+ @form_manager = FormManager.for_model(params, @item)
27
+ end
28
+ end
29
+
30
+ # defines the locale used to translate the Fae interface
23
31
  def set_locale
24
- I18n.locale = :en
32
+ if I18n.available_locales.include?(language_from_browser)
33
+ language_from_browser
34
+ else
35
+ :en
36
+ end
37
+ end
38
+
39
+ # parse HTTP_ACCEPT_LANGUAGE and return an array of language codes
40
+ # ex: ["en-US", "en", "zh-CN", "zh", "cs"]
41
+ # then grab the first and convert to symbol
42
+ def language_from_browser
43
+ if request.env['HTTP_ACCEPT_LANGUAGE'].present?
44
+ request.env['HTTP_ACCEPT_LANGUAGE'].scan(/[a-z-]{2,5}/i).first.try(:to_sym)
45
+ end
25
46
  end
26
47
 
27
48
  def check_disabled_environment
@@ -35,7 +35,11 @@ module Fae
35
35
  @item = @klass.new(item_params)
36
36
 
37
37
  if @item.save
38
- redirect_to @index_path, notice: t('fae.save_notice')
38
+ if @item.try(:fae_redirect_to_form_on_create)
39
+ redirect_to send("edit_admin_#{@klass_singular}_path", @item.id), notice: t('fae.save_notice')
40
+ else
41
+ redirect_to @index_path, notice: t('fae.save_notice')
42
+ end
39
43
  else
40
44
  build_assets
41
45
  flash[:alert] = t('fae.save_error')
@@ -84,7 +88,7 @@ module Fae
84
88
  @klass = klass_base.classify.constantize # used as class reference in this controller
85
89
  @klass_singular = klass_base.singularize # used in index views
86
90
  @klass_humanized = @klass_name.singularize.humanize # used in index views
87
- @index_path = '/' + params[:controller] # used in form_header and form_buttons partials
91
+ @index_path = '/' + params[:controller] # used in form_header partial
88
92
  @new_path = @index_path + '/new' # used in index_header partial
89
93
  end
90
94
 
@@ -0,0 +1,24 @@
1
+ module Fae
2
+ class DeployController < ApplicationController
3
+ before_action :admin_only
4
+
5
+ include Fae::ApplicationHelper
6
+
7
+ def index
8
+ raise 'Fae.netlify configs are missing.' unless netlify_enabled?
9
+ @deploy_hooks = DeployHook.all
10
+ end
11
+
12
+ def deploys_list
13
+ render json: Fae::NetlifyApi.new().get_deploys
14
+ end
15
+
16
+ def deploy_site
17
+ if Fae::NetlifyApi.new().run_deploy(params['deploy_hook_type'], current_user)
18
+ return render json: { success: true }
19
+ end
20
+ render json: {success: false}
21
+ end
22
+
23
+ end
24
+ end