fae-rails 1.7.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +0 -3
  3. data/app/assets/images/fae/tutorial_model_location.png +0 -0
  4. data/app/assets/javascripts/fae/_tables.js +11 -25
  5. data/app/assets/javascripts/fae/application.js +2 -2
  6. data/app/assets/javascripts/fae/fae_init.js +0 -4
  7. data/app/assets/javascripts/fae/form/_ajax.js +3 -6
  8. data/app/assets/javascripts/fae/form/_validator.js +2 -2
  9. data/app/assets/javascripts/fae/navigation/_language.js +1 -1
  10. data/app/assets/javascripts/fae/navigation/_navigation.js +9 -21
  11. data/app/assets/javascripts/fae/navigation/_subnav_highlighter.js +7 -41
  12. data/app/assets/stylesheets/fae/base.scss +2 -6
  13. data/app/assets/stylesheets/fae/globals/imports/_variables.scss +0 -2
  14. data/app/assets/stylesheets/fae/globals/layout/_content-header.scss +9 -29
  15. data/app/assets/stylesheets/fae/pages/_home.scss +18 -0
  16. data/app/controllers/fae/base_controller.rb +1 -1
  17. data/app/controllers/fae/pages_controller.rb +3 -2
  18. data/app/helpers/fae/application_helper.rb +1 -1
  19. data/app/helpers/fae/form_helper.rb +3 -4
  20. data/app/helpers/fae/nested_form_helper.rb +2 -2
  21. data/app/helpers/fae/view_helper.rb +1 -3
  22. data/app/models/concerns/fae/base_model_concern.rb +1 -7
  23. data/app/models/fae/change.rb +1 -1
  24. data/app/models/fae/file.rb +1 -1
  25. data/app/models/fae/image.rb +1 -1
  26. data/app/models/fae/option.rb +1 -1
  27. data/app/models/fae/role.rb +1 -1
  28. data/app/models/fae/static_page.rb +4 -0
  29. data/app/uploaders/fae/file_uploader.rb +1 -4
  30. data/app/uploaders/fae/image_uploader.rb +2 -2
  31. data/app/views/fae/images/_image_uploader.html.slim +2 -2
  32. data/app/views/fae/options/_form.html.slim +1 -1
  33. data/app/views/fae/pages/home.html.slim +32 -21
  34. data/app/views/fae/shared/_form_header.html.slim +33 -33
  35. data/app/views/fae/shared/_nested_table.html.slim +2 -4
  36. data/app/views/fae/users/index.html.slim +1 -1
  37. data/db/migrate/20140809222030_add_user_table.rb +1 -1
  38. data/db/migrate/20140822224029_create_fae_roles.rb +1 -1
  39. data/db/migrate/20141008180718_create_fae_images_table.rb +1 -1
  40. data/db/migrate/20141017194616_create_fae_options.rb +1 -1
  41. data/db/migrate/20141021181327_create_fae_files.rb +1 -1
  42. data/db/migrate/20141021183047_create_fae_text_areas.rb +1 -1
  43. data/db/migrate/20141021184311_create_fae_pages.rb +1 -1
  44. data/db/migrate/20141105214814_create_fae_text_fields.rb +1 -1
  45. data/db/migrate/20150930224821_create_fae_changes.rb +1 -1
  46. data/lib/fae/options.rb +1 -1
  47. data/lib/fae/version.rb +1 -1
  48. data/lib/generators/fae/base_generator.rb +5 -4
  49. data/lib/generators/fae/nested_index_scaffold_generator.rb +0 -1
  50. data/lib/generators/fae/nested_scaffold_generator.rb +2 -2
  51. data/lib/generators/fae/scaffold_generator.rb +0 -1
  52. data/lib/generators/fae/templates/views/_form.html.slim +1 -3
  53. data/lib/generators/fae/templates/views/index_nested.html.slim +1 -0
  54. data/lib/generators/fae/templates/views/static_page_form.html.slim +1 -2
  55. metadata +46 -47
  56. data/app/views/fae/shared/_form_buttons.html.slim +0 -11
  57. data/app/views/fae/shared/_nested_table_advanced.html.slim +0 -18
  58. data/lib/sub_test_task_patch.rb +0 -129
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2efad2fc9feedd56fc9ec582e9ac519e6f7c0a8b
4
- data.tar.gz: 1f3079cb3d1143a955289d8add21a72a7b6772a4
3
+ metadata.gz: 792dd37ac209ab8e11c320ca46d8fa889aa7b076
4
+ data.tar.gz: 2b06e7346546949a0537f25f0e2c20245c536036
5
5
  SHA512:
6
- metadata.gz: ccf4b94fe96cdc89fe3119ba65ee96584dea2cacbc6dc15a7b8518a90a8053f1481c82201d7165883b3ad57bfb993abe0d5368242ae2e18750a8ec3d5a29bf8b
7
- data.tar.gz: 5f3702e59f1583fac3bcddada5aff0c324c2a9464c4071584256995ccbed06e4ae8329f14b1bcb8e5667d500a50b1bb199d449d8a5555a07c53ae6c2df941a3d
6
+ metadata.gz: 52ceefb35b9b05867733ca0f125657b474a9517c1df2bcd5706ca51dd76c81bb14458062fa15ede894c9073623e8f43f336e96e09a2291567918a1112c2cdb69
7
+ data.tar.gz: 963568ce30f5c580bdb33eefb24639145ea4b2c1f5a271dfb08ae85a63e49d9f22efbde7e0c0e18dbf634ee7fdcc4c0fccec1831c29745fe68cf0297ff89d28a
data/Rakefile CHANGED
@@ -25,9 +25,6 @@ require 'rspec/core/rake_task'
25
25
  desc "Run all specs in spec directory (excluding plugin specs)"
26
26
  RSpec::Core::RakeTask.new(:spec => 'app:db:test:prepare')
27
27
 
28
- # @deprecation - remove require when we drop Rails 4 support
29
- require 'sub_test_task_patch'
30
-
31
28
  require 'rake/testtask'
32
29
  Rake::TestTask.new(:test) do |t|
33
30
  t.libs << 'lib'
@@ -17,16 +17,14 @@ Fae.tables = {
17
17
  sort_cookie_name: 'Fae_table_sort_preferences',
18
18
 
19
19
  ready: function() {
20
- // @depreciation - remove `|| FCH.exists('.main_table-sort_columns')` and only use FCH.exists('.js-sort-column') in v2.0
21
- if (FCH.exists('.js-sort-column') || FCH.exists('.main_table-sort_columns')) {
20
+ if (FCH.exists('.js-sort-column')) {
22
21
  this.dateColumnSorting();
23
22
  this.columnSorting();
24
23
  this.defaultSortCookie();
25
24
  this.sortColumnsFromCookies();
26
25
  }
27
26
 
28
- // @depreciation - remove || FCH.exists('.main_content-sortable-handle') and only use FCH.exists('.sortable-handle') in v2.0
29
- if (FCH.exists('.sortable-handle') || FCH.exists('.main_content-sortable-handle')) {
27
+ if (FCH.exists('.sortable-handle')) {
30
28
  this.rowSorting();
31
29
  }
32
30
 
@@ -36,10 +34,7 @@ Fae.tables = {
36
34
  this.collapsibleTable();
37
35
  }
38
36
 
39
- // @depreciation - remove conditional wrapping and call endingSelectShim like `this.endingSelectShim()` in v2.0
40
- if (FCH.exists('form ' + Fae.content_selector)) {
41
- this.endingSelectShim(Fae.content_selector);
42
- }
37
+ this.endingSelectShim();
43
38
 
44
39
  if (FCH.exists('.js-tooltip')) {
45
40
  this.tooltip();
@@ -54,8 +49,7 @@ Fae.tables = {
54
49
  var path = window.location.pathname;
55
50
  var cookie_value = Cookies.getJSON(_this.sort_cookie_name);
56
51
 
57
- // @depreciation - remove `, .main_table-sort_columns` and only use '.js-sort-column' in v2.0
58
- $('.js-sort-column, .main_table-sort_columns')
52
+ $('.js-sort-column')
59
53
  .tablesorter()
60
54
  .on('sortEnd', function(e) {
61
55
  var $this = $(this);
@@ -142,8 +136,7 @@ Fae.tables = {
142
136
  return;
143
137
  }
144
138
 
145
- // @depreciation - remove `, .main_table-sort_columns` and only use '.js-sort-column' in v2.0
146
- $('.js-sort-column, .main_table-sort_columns').each(function(idx) {
139
+ $('.js-sort-column').each(function(idx) {
147
140
  // If this table exists in the cookie hash
148
141
  if (cookie_value[path].hasOwnProperty(idx)) {
149
142
  // Use array value within another array because of how tablesorter accepts this argument
@@ -156,15 +149,10 @@ Fae.tables = {
156
149
  * Make table rows draggable by user
157
150
  */
158
151
  rowSorting: function() {
159
- // @depreciation - remove sort_selector var in v2.0
160
- var sort_selector = FCH.exists('.sortable-handle') ? '.sortable-handle' : '.main_content-sortable-handle';
161
-
162
- // @depreciation - remove `, .main_content-sortable` and only use '.js-sort-row' in v2.0
163
- $('.js-sort-row, .main_content-sortable').sortable({
152
+ $('.js-sort-row').sortable({
164
153
  items: 'tbody tr',
165
154
  opacity: 0.8,
166
- // @depreciation - replace sort_selector with '.sortable-handle' in v2.0
167
- handle: (sort_selector),
155
+ handle: ('.sortable-handle'),
168
156
 
169
157
  //helper function to preserve the width of the table row
170
158
  helper: function(e, $tr) {
@@ -271,11 +259,9 @@ Fae.tables = {
271
259
 
272
260
  /**
273
261
  * Add extra space if the last item in a form is a select menu so the dropdown doesn't run off the screen or section
274
- * @param {String} selector - Last of type element to target
275
- * @deprecation remove selector arg and replace selector variable with '.content' in v2.0
276
262
  */
277
- endingSelectShim: function(selector) {
278
- $('form ' + selector + ':last-of-type').each(function() {
263
+ endingSelectShim: function() {
264
+ $('form .content:last-of-type').each(function() {
279
265
  var $last_item = $(this).find('.input:last-of-type');
280
266
 
281
267
  if( $last_item.hasClass('select') ) {
@@ -342,8 +328,8 @@ Fae.tables = {
342
328
  */
343
329
  sizeFixedHeader: function() {
344
330
  var $tables = $('.content table');
345
- // @depreciation - change value from ternary to $('.js-content-header').outerHeight() in v2.0
346
- var header_height = FCH.exists('.js-content-header') ? $('.js-content-header').outerHeight() : $('.main_content-header').outerHeight();
331
+
332
+ var header_height = $('.js-content-header').outerHeight();
347
333
  if(FCH.large_down) {
348
334
  header_height = $('#js-main-header').outerHeight();
349
335
  }
@@ -13,8 +13,8 @@
13
13
  //= require jquery
14
14
  //= require jquery_ujs
15
15
  //= require jquery.remotipart
16
- //= require jquery.ui.sortable
17
- //= require jquery.ui.datepicker
16
+ //= require jquery-ui/widgets/sortable
17
+ //= require jquery-ui/widgets/datepicker
18
18
  //= require underscore
19
19
  //= require json2
20
20
  //= require judge
@@ -5,8 +5,4 @@
5
5
  window.FCH = new FrobCoreHelpers(Fae, {
6
6
  mobile_fps: false
7
7
  });
8
-
9
- // Selector to support pre-1.3 changes
10
- // @depreciation - replace Fae.content_selector property and all instances of it with '.content' in v2.0
11
- Fae.content_selector = FCH.exists('.main_content-section') || FCH.exists('.main_content-sections') ? '.main_content-section-area' : '.content';
12
8
  })();
@@ -123,13 +123,10 @@ Fae.form.ajax = {
123
123
  if($html.hasClass('js-addedit-form') || $html.hasClass( 'js-index-addedit-form' )) {
124
124
  // we're returning the table, replace everything
125
125
  _this._addEditReplaceAndReinit($this, $html.html(), $target);
126
- } else if ($html.hasClass('nested-form') || $html.hasClass('form_content-wrapper')) {
127
-
128
- // @depreciation - remove `|| $html.hasClass('form_content_wrapper')` from above conditional as well as the following ternary (value should just be '.nested-form') in v2.0
129
- var form_wrapper_selector = $html.hasClass('nested-form') ? '.nested-form' : '.form_content-wrapper';
126
+ } else if ($html.hasClass('nested-form')) {
130
127
 
131
128
  // we're returning the form due to an error, just replace the form
132
- $this.find( form_wrapper_selector ).replaceWith(data);
129
+ $this.find( '.nested-form' ).replaceWith(data);
133
130
  $this.find('.select select').fae_chosen();
134
131
  $this.find('.input.file').fileinputer();
135
132
 
@@ -286,7 +283,7 @@ Fae.form.ajax = {
286
283
  },
287
284
 
288
285
  /**
289
- * Attaching click handlers to #main_content to allow ajax replacement
286
+ * Attaching click handlers to #js-main-content to allow ajax replacement
290
287
  * @todo Clean this up, moving listeners into their respective component classes (select, checkbox, etc.)
291
288
  */
292
289
  htmlListeners: function() {
@@ -214,9 +214,9 @@ Fae.form.validator = {
214
214
 
215
215
  var $wrapper = $input.closest('.input');
216
216
  if ($wrapper.children('.error').length) {
217
- $wrapper.children('.error').text(messages.join(','));
217
+ $wrapper.children('.error').text(messages.join(', '));
218
218
  } else {
219
- $wrapper.addClass('field_with_errors').append("<span class='error'>" + messages.join(',') + "</span>");
219
+ $wrapper.addClass('field_with_errors').append("<span class='error'>" + messages.join(', ') + "</span>");
220
220
  }
221
221
  },
222
222
 
@@ -83,7 +83,7 @@ Fae.navigation.language = {
83
83
  */
84
84
  checkForHiddenErrors: function() {
85
85
  if (this.el.$select.length && $('div.field_with_errors:hidden').length && !FCH.exists('.hidden_errors')) {
86
- $(Fae.content_selector).prepend('<div class="hidden_errors field_with_errors"><span class="error">There are hidden errors. Click "All Languages" in the language nav to view all errors.</span></div>');
86
+ $('.content').prepend('<div class="hidden_errors field_with_errors"><span class="error">There are hidden errors. Click "All Languages" in the language nav to view all errors.</span></div>');
87
87
  }
88
88
  }
89
89
  };
@@ -167,27 +167,15 @@ Fae.navigation = {
167
167
  stickyHeaders: function(just_headers) {
168
168
  just_headers = FCH.setDefault(just_headers, false);
169
169
 
170
- if(FCH.exists('.js-content-header')) {
171
- var $header = $('.js-content-header');
172
- var sidebar_top_offset = (parseInt( $header.outerHeight(), 10) + 30) + 'px';
173
- $('#js-sidenav').css('padding-top', sidebar_top_offset );
174
-
175
- $header.sticky({
176
- placeholder: true,
177
- perpetual_placeholder: true,
178
- ignore_placeholder_offsets: true
179
- });
180
-
181
- // @depreciation - remove else block in 2.0
182
- } else {
183
- var $header = $('.main_content-header');
184
- var sidebar_top_offset = (parseInt( $header.outerHeight(), 10) + 30) + 'px';
185
- $('#js-sidenav').css('padding-top', sidebar_top_offset );
186
-
187
- $('.main_content-header').sticky({
188
- placeholder: true
189
- });
190
- }
170
+ var $header = $('.js-content-header');
171
+ var sidebar_top_offset = (parseInt( $header.outerHeight(), 10) + 30) + 'px';
172
+ $('#js-sidenav').css('padding-top', sidebar_top_offset );
173
+
174
+ $header.sticky({
175
+ placeholder: true,
176
+ perpetual_placeholder: true,
177
+ ignore_placeholder_offsets: true
178
+ });
191
179
 
192
180
  if (!just_headers) {
193
181
  $('#js-sidenav').sticky();
@@ -8,18 +8,7 @@
8
8
  Fae.navigation.subnav_highlighter = {
9
9
  init: function() {
10
10
  //only run everything if there is a subnav area
11
- // @depreciation - change conditional to FCH.exists('.content-header-subnav') in v2.0
12
- if (FCH.exists('.main_content-header-section-links') || FCH.exists('.content-header-subnav')) {
13
- // @depreciation - remove entire conditional block (following 7 lines) in v2.0
14
- if(Fae.content_selector === '.content') {
15
- this.section_class = Fae.content_selector;
16
- this.subnav_class = '#js-content-header-subnav';
17
- this.addBuffer();
18
- } else {
19
- this.section_class = '.main_content-section';
20
- this.subnav_class = '.main_content-header-section-links';
21
- }
22
-
11
+ if (FCH.exists('.content-header-subnav')) {
23
12
  this.FCHListeners();
24
13
 
25
14
  //makes the subnav clicks
@@ -27,28 +16,10 @@ Fae.navigation.subnav_highlighter = {
27
16
  }
28
17
  },
29
18
 
30
- /**
31
- * Add space above subnav links if they're present
32
- * @depreciation - Remove this function in favor of a better HTML solution in form_header in a v2.0 refactor.
33
- */
34
- addBuffer: function() {
35
- var $subnav = $( this.subnav_class );
36
- var height = $subnav.css('height');
37
- $subnav.parent().css('padding-bottom', height);
38
- },
39
-
40
19
  /**
41
20
  * Since subnavHighlighter is not a direct child of Fae and therefore unknown to FCH, these listeners are saved in private functions in this method
42
21
  */
43
22
  FCHListeners: function() {
44
- // @depreciation - change value of section_class to '.content' in v2.0
45
- var section_class = this.section_class;
46
- // @depreciation - change value of subnav_class to '#js-content-header-subnav' in v2.0
47
- // Ideally, form_header will include header.content-header.js-content-header
48
- var subnav_class = this.subnav_class;
49
- // @depreciation - remove legacy_buffer expression in v2.0 (the value should be 0, so it will be unnecessary)
50
- var legacy_buffer = section_class === Fae.content_selector ? 0 : 32;
51
-
52
23
  /**
53
24
  * On scroll, change highlight of nav item. Bread and butter of this subclass.
54
25
  * @private
@@ -56,11 +27,11 @@ Fae.navigation.subnav_highlighter = {
56
27
  function scrollCallback() {
57
28
  var scroll_top = FCH.$window.scrollTop();
58
29
 
59
- $(section_class).each(function(index) {
30
+ $('.content').each(function(index) {
60
31
  var $this = $(this);
61
- var position = $this.position().top - scroll_top - legacy_buffer;
32
+ var position = $this.position().top - scroll_top;
62
33
  var $link = $('a[href="#' + $this.attr('id') + '"]').parent();
63
- var is_scrolled_to_bottom = scroll_top - legacy_buffer >= (FCH.$document.outerHeight() - FCH.dimensions.wh);
34
+ var is_scrolled_to_bottom = scroll_top >= (FCH.$document.outerHeight() - FCH.dimensions.wh);
64
35
 
65
36
  $link.removeClass('-active');
66
37
  if (position <= 0 || index === 0 || is_scrolled_to_bottom) {
@@ -80,11 +51,7 @@ Fae.navigation.subnav_highlighter = {
80
51
  * Smooth scrolling on anchor links in the tab area.
81
52
  */
82
53
  anchorClickListener: function() {
83
- // @depreciation - replace scroll_offset_selector variable with string '.content-header' in v2.0
84
- var scroll_offset_selector = FCH.exists('.main_content-header') ? '.main_content-header' : '.content-header';
85
- var scroll_offset = parseInt( $(scroll_offset_selector).css('height'), 10 );
86
- // @depreciation - remove should_find_h2 in v2.0
87
- var should_find_h2 = this.section_class === Fae.content_selector;
54
+ var scroll_offset = parseInt( $('.content-header').css('height'), 10 );
88
55
 
89
56
  /**
90
57
  * Smoothly scroll to destination if it's a link to the current page
@@ -98,8 +65,7 @@ Fae.navigation.subnav_highlighter = {
98
65
  var $target = $(this.hash);
99
66
  $target = $target.length ? $target : $('[name=' + this.hash.slice(1) + ']');
100
67
 
101
- // @depreciation - remove conditional wrapping (keep $target = ... and scroll_offset -= ...) in v2.0
102
- if(should_find_h2 && $target.find('h2').length) {
68
+ if($target.find('h2').length) {
103
69
  $target = $target.find('h2');
104
70
  scroll_offset -= 2;
105
71
  }
@@ -110,6 +76,6 @@ Fae.navigation.subnav_highlighter = {
110
76
  }
111
77
  }
112
78
 
113
- $(this.subnav_class + ' a').on('click', scroller);
79
+ $('#js-content-header-subnav a').on('click', scroller);
114
80
  },
115
81
  };
@@ -77,10 +77,6 @@
77
77
  @import
78
78
  'pages/error',
79
79
  'pages/login',
80
- 'pages/help'
81
- ;
82
-
83
- // Legacy styles
84
- @import
85
- 'globals/legacy/pre-1.3'
80
+ 'pages/help',
81
+ 'pages/home'
86
82
  ;
@@ -7,8 +7,6 @@ $custom-breakpoints: () !default;
7
7
 
8
8
  // Fae-specific breakpoints
9
9
  $fae-breakpoints: (
10
- // @depreciation - remove page_header_save_block in v2.0
11
- 'page_header_save_block': ( max-width: 615px ),
12
10
  'login_container': ( min-width: 700px ),
13
11
  'login_submit': ( min-width: 500px ),
14
12
  );
@@ -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
13
  box-shadow: 0 0 10px $c-grey;
13
-
14
- &:after {
15
- content: '';
16
- display: block;
17
- height: 100%;
18
- position: static;
19
- }
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,10 +33,10 @@
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);
@@ -83,20 +74,9 @@
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
-
93
77
  a {
94
78
  margin-right: 5px;
95
79
 
96
- @include bp(medium) {
97
- height: 37px; // Fix height so descenders don't mess up the visual balance
98
- }
99
-
100
80
  &:last-child {
101
81
  margin-right: 0;
102
82
  }
@@ -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
+ }
@@ -84,7 +84,7 @@ module Fae
84
84
  @klass = klass_base.classify.constantize # used as class reference in this controller
85
85
  @klass_singular = klass_base.singularize # used in index views
86
86
  @klass_humanized = @klass_name.singularize.humanize # used in index views
87
- @index_path = '/' + params[:controller] # used in form_header and form_buttons partials
87
+ @index_path = '/' + params[:controller] # used in form_header partial
88
88
  @new_path = @index_path + '/new' # used in index_header partial
89
89
  end
90
90
 
@@ -5,11 +5,12 @@ module Fae
5
5
 
6
6
  def home
7
7
  @list = recently_updated
8
+ @models = all_models
8
9
  end
9
10
 
10
11
  def help
11
12
  require 'browser'
12
- @browser = Browser.new(ua: request.user_agent, accept_language: 'en-us')
13
+ @browser = Browser.new(request.user_agent, accept_language: 'en-us')
13
14
  end
14
15
 
15
16
  def activity_log
@@ -40,4 +41,4 @@ module Fae
40
41
  list.flatten.sort_by(&:updated_at).reverse.first(num)
41
42
  end
42
43
  end
43
- end
44
+ end