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.
- checksums.yaml +4 -4
- data/Rakefile +0 -3
- data/app/assets/images/fae/tutorial_model_location.png +0 -0
- data/app/assets/javascripts/fae/_tables.js +11 -25
- data/app/assets/javascripts/fae/application.js +2 -2
- data/app/assets/javascripts/fae/fae_init.js +0 -4
- data/app/assets/javascripts/fae/form/_ajax.js +3 -6
- data/app/assets/javascripts/fae/form/_validator.js +2 -2
- data/app/assets/javascripts/fae/navigation/_language.js +1 -1
- data/app/assets/javascripts/fae/navigation/_navigation.js +9 -21
- data/app/assets/javascripts/fae/navigation/_subnav_highlighter.js +7 -41
- data/app/assets/stylesheets/fae/base.scss +2 -6
- data/app/assets/stylesheets/fae/globals/imports/_variables.scss +0 -2
- data/app/assets/stylesheets/fae/globals/layout/_content-header.scss +9 -29
- data/app/assets/stylesheets/fae/pages/_home.scss +18 -0
- data/app/controllers/fae/base_controller.rb +1 -1
- data/app/controllers/fae/pages_controller.rb +3 -2
- data/app/helpers/fae/application_helper.rb +1 -1
- data/app/helpers/fae/form_helper.rb +3 -4
- data/app/helpers/fae/nested_form_helper.rb +2 -2
- data/app/helpers/fae/view_helper.rb +1 -3
- data/app/models/concerns/fae/base_model_concern.rb +1 -7
- data/app/models/fae/change.rb +1 -1
- data/app/models/fae/file.rb +1 -1
- data/app/models/fae/image.rb +1 -1
- data/app/models/fae/option.rb +1 -1
- data/app/models/fae/role.rb +1 -1
- data/app/models/fae/static_page.rb +4 -0
- data/app/uploaders/fae/file_uploader.rb +1 -4
- data/app/uploaders/fae/image_uploader.rb +2 -2
- data/app/views/fae/images/_image_uploader.html.slim +2 -2
- data/app/views/fae/options/_form.html.slim +1 -1
- data/app/views/fae/pages/home.html.slim +32 -21
- data/app/views/fae/shared/_form_header.html.slim +33 -33
- data/app/views/fae/shared/_nested_table.html.slim +2 -4
- data/app/views/fae/users/index.html.slim +1 -1
- data/db/migrate/20140809222030_add_user_table.rb +1 -1
- data/db/migrate/20140822224029_create_fae_roles.rb +1 -1
- data/db/migrate/20141008180718_create_fae_images_table.rb +1 -1
- data/db/migrate/20141017194616_create_fae_options.rb +1 -1
- data/db/migrate/20141021181327_create_fae_files.rb +1 -1
- data/db/migrate/20141021183047_create_fae_text_areas.rb +1 -1
- data/db/migrate/20141021184311_create_fae_pages.rb +1 -1
- data/db/migrate/20141105214814_create_fae_text_fields.rb +1 -1
- data/db/migrate/20150930224821_create_fae_changes.rb +1 -1
- data/lib/fae/options.rb +1 -1
- data/lib/fae/version.rb +1 -1
- data/lib/generators/fae/base_generator.rb +5 -4
- data/lib/generators/fae/nested_index_scaffold_generator.rb +0 -1
- data/lib/generators/fae/nested_scaffold_generator.rb +2 -2
- data/lib/generators/fae/scaffold_generator.rb +0 -1
- data/lib/generators/fae/templates/views/_form.html.slim +1 -3
- data/lib/generators/fae/templates/views/index_nested.html.slim +1 -0
- data/lib/generators/fae/templates/views/static_page_form.html.slim +1 -2
- metadata +46 -47
- data/app/views/fae/shared/_form_buttons.html.slim +0 -11
- data/app/views/fae/shared/_nested_table_advanced.html.slim +0 -18
- data/lib/sub_test_task_patch.rb +0 -129
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 792dd37ac209ab8e11c320ca46d8fa889aa7b076
|
4
|
+
data.tar.gz: 2b06e7346546949a0537f25f0e2c20245c536036
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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'
|
Binary file
|
@@ -17,16 +17,14 @@ Fae.tables = {
|
|
17
17
|
sort_cookie_name: 'Fae_table_sort_preferences',
|
18
18
|
|
19
19
|
ready: function() {
|
20
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
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(
|
278
|
-
$('form
|
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
|
-
|
346
|
-
var header_height =
|
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
|
17
|
-
//= require jquery
|
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')
|
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(
|
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 #
|
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
|
-
$(
|
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
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
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
|
-
|
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
|
-
$(
|
30
|
+
$('.content').each(function(index) {
|
60
31
|
var $this = $(this);
|
61
|
-
var position = $this.position().top - scroll_top
|
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
|
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
|
-
|
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
|
-
|
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
|
-
$(
|
79
|
+
$('#js-content-header-subnav a').on('click', scroller);
|
114
80
|
},
|
115
81
|
};
|
@@ -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:
|
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
|
-
|
15
|
-
|
16
|
-
|
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
|
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(
|
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
|