trestle 0.9.3 → 0.9.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -0
- data/.travis.yml +18 -4
- data/CONTRIBUTING.md +38 -0
- data/Gemfile +12 -4
- data/README.md +6 -1
- data/app/assets/bundle/trestle/bundle.css +9 -9
- data/app/assets/bundle/trestle/bundle.js +47 -45
- data/app/assets/bundle/trestle/fa-brands-400.eot +0 -0
- data/app/assets/bundle/trestle/fa-brands-400.svg +801 -654
- data/app/assets/bundle/trestle/fa-brands-400.ttf +0 -0
- data/app/assets/bundle/trestle/fa-brands-400.woff +0 -0
- data/app/assets/bundle/trestle/fa-brands-400.woff2 +0 -0
- data/app/assets/bundle/trestle/fa-regular-400.eot +0 -0
- data/app/assets/bundle/trestle/fa-regular-400.svg +93 -95
- data/app/assets/bundle/trestle/fa-regular-400.ttf +0 -0
- data/app/assets/bundle/trestle/fa-regular-400.woff +0 -0
- data/app/assets/bundle/trestle/fa-regular-400.woff2 +0 -0
- data/app/assets/bundle/trestle/fa-solid-900.eot +0 -0
- data/app/assets/bundle/trestle/fa-solid-900.svg +1175 -1079
- data/app/assets/bundle/trestle/fa-solid-900.ttf +0 -0
- data/app/assets/bundle/trestle/fa-solid-900.woff +0 -0
- data/app/assets/bundle/trestle/fa-solid-900.woff2 +0 -0
- data/app/assets/bundle/trestle/flatpickr/ar-dz.js +1 -0
- data/app/assets/bundle/trestle/flatpickr/ar.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/at.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/az.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/be.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/bg.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/bn.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/bs.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/cat.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/ckb.js +1 -0
- data/app/assets/bundle/trestle/flatpickr/cs.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/cy.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/da.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/de.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/default.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/eo.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/es.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/et.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/fa.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/fi.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/fo.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/fr.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/ga.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/gr.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/he.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/hi.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/hr.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/hu.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/hy.js +1 -0
- data/app/assets/bundle/trestle/flatpickr/id.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/is.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/it.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/ja.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/ka.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/km.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/ko.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/kz.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/lt.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/lv.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/mk.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/mn.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/ms.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/my.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/nl.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/nn.js +1 -0
- data/app/assets/bundle/trestle/flatpickr/no.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/pa.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/pl.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/pt.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/ro.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/ru.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/si.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/sk.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/sl.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/sq.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/sr-cyr.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/sr.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/sv.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/th.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/tr.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/uk.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/uz.js +1 -0
- data/app/assets/bundle/trestle/flatpickr/uz_latn.js +1 -0
- data/app/assets/bundle/trestle/flatpickr/vn.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/zh-tw.js +1 -1
- data/app/assets/bundle/trestle/flatpickr/zh.js +1 -1
- data/app/assets/javascripts/trestle/i18n.js.erb +1 -1
- data/app/controllers/trestle/admin_controller.rb +23 -25
- data/app/controllers/trestle/application_controller.rb +10 -12
- data/app/controllers/trestle/dashboard_controller.rb +11 -13
- data/app/controllers/trestle/resource_controller.rb +5 -7
- data/app/helpers/trestle/avatar_helper.rb +6 -2
- data/app/helpers/trestle/container_helper.rb +12 -4
- data/app/helpers/trestle/hook_helper.rb +1 -27
- data/app/helpers/trestle/layout_helper.rb +20 -0
- data/app/helpers/trestle/navigation_helper.rb +23 -0
- data/app/helpers/trestle/params_helper.rb +4 -1
- data/app/helpers/trestle/table_helper.rb +15 -0
- data/app/helpers/trestle/url_helper.rb +1 -11
- data/app/views/layouts/trestle/admin.html.erb +2 -2
- data/app/views/trestle/flash/_alert.html.erb +3 -1
- data/app/views/trestle/flash/_debug.html.erb +13 -8
- data/app/views/trestle/flash/_flash.html.erb +1 -1
- data/app/views/trestle/resource/_scopes.html.erb +17 -8
- data/app/views/trestle/resource/index.html.erb +2 -2
- data/app/views/trestle/shared/_sidebar.html.erb +4 -5
- data/app/views/trestle/table/_pagination.html.erb +1 -1
- data/config/locales/vi.rb +18 -0
- data/config/locales/vi.yml +101 -0
- data/config/routes.rb +1 -1
- data/frontend/css/components/_alerts.scss +31 -0
- data/frontend/css/components/_avatar.scss +14 -0
- data/frontend/css/components/_buttons.scss +0 -1
- data/frontend/css/components/_datepicker.scss +1 -0
- data/frontend/css/components/_fields.scss +5 -0
- data/frontend/css/components/_modal.scss +2 -0
- data/frontend/css/components/_scopes.scss +66 -21
- data/frontend/css/components/_table.scss +4 -0
- data/frontend/css/components/_tags.scss +2 -0
- data/frontend/css/components/_timestamp.scss +1 -1
- data/frontend/css/layout/_content.scss +5 -2
- data/frontend/css/layout/_sidebar.scss +3 -2
- data/frontend/css/variables/_bootstrap.scss +1 -0
- data/frontend/css/variables/_trestle.scss +25 -5
- data/frontend/js/components/dialog.js +8 -3
- data/frontend/js/components/navigation.js +63 -0
- data/frontend/js/components/pagination.js +51 -0
- data/frontend/js/components/sidebar.js +4 -7
- data/frontend/js/index.js +1 -0
- data/frontend/theme/trestle/theme/_defaults.scss +4 -4
- data/lib/generators/trestle/install/templates/_theme.scss +1 -1
- data/lib/generators/trestle/install/templates/trestle.rb.erb +6 -1
- data/lib/trestle/adapters/active_record_adapter.rb +16 -0
- data/lib/trestle/admin.rb +12 -2
- data/lib/trestle/engine.rb +3 -6
- data/lib/trestle/evaluation_context.rb +11 -3
- data/lib/trestle/form/automatic.rb +2 -0
- data/lib/trestle/form/field.rb +20 -13
- data/lib/trestle/form/fields/collection_select.rb +1 -1
- data/lib/trestle/form/fields/date_picker.rb +9 -3
- data/lib/trestle/form/fields/file_field.rb +1 -1
- data/lib/trestle/form/fields/form_group.rb +18 -5
- data/lib/trestle/form/fields/grouped_collection_select.rb +1 -1
- data/lib/trestle/form/fields/range_field.rb +2 -4
- data/lib/trestle/form/fields/select.rb +2 -3
- data/lib/trestle/form/fields/static_field.rb +2 -2
- data/lib/trestle/form/fields/tag_select.rb +1 -1
- data/lib/trestle/form/fields/time_zone_select.rb +1 -1
- data/lib/trestle/form/renderer.rb +9 -4
- data/lib/trestle/hook/helpers.rb +33 -0
- data/lib/trestle/hook/set.rb +32 -0
- data/lib/trestle/hook.rb +3 -29
- data/lib/trestle/navigation/group.rb +4 -0
- data/lib/trestle/registry.rb +61 -0
- data/lib/trestle/reloader.rb +26 -6
- data/lib/trestle/resource/builder.rb +3 -2
- data/lib/trestle/resource/collection.rb +1 -5
- data/lib/trestle/resource.rb +4 -3
- data/lib/trestle/scopes/block.rb +9 -8
- data/lib/trestle/scopes/definition.rb +22 -0
- data/lib/trestle/scopes/scope.rb +6 -2
- data/lib/trestle/scopes.rb +37 -8
- data/lib/trestle/table/automatic.rb +7 -0
- data/lib/trestle/version.rb +1 -1
- data/lib/trestle.rb +29 -14
- data/package.json +21 -24
- data/webpack.config.js +40 -49
- data/yarn.lock +3129 -4810
- metadata +22 -6
@@ -1 +1 @@
|
|
1
|
-
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports):"function"==typeof define&&define.amd?define(["exports"],o):o((e=e||self).sk={})}(this,function(e){"use strict";var o="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},t={weekdays:{shorthand:["Ned","Pon","Ut","Str","Štv","Pia","Sob"],longhand:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],longhand:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};o.l10ns.sk=t;var n=o.l10ns;e.Slovak=t,e.default=n,Object.defineProperty(e,"__esModule",{value:!0})});
|
1
|
+
!function(e,o){"object"==typeof exports&&"undefined"!=typeof module?o(exports):"function"==typeof define&&define.amd?define(["exports"],o):o((e="undefined"!=typeof globalThis?globalThis:e||self).sk={})}(this,(function(e){"use strict";var o="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},t={weekdays:{shorthand:["Ned","Pon","Ut","Str","Štv","Pia","Sob"],longhand:["Nedeľa","Pondelok","Utorok","Streda","Štvrtok","Piatok","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Máj","Jún","Júl","Aug","Sep","Okt","Nov","Dec"],longhand:["Január","Február","Marec","Apríl","Máj","Jún","Júl","August","September","Október","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};o.l10ns.sk=t;var n=o.l10ns;e.Slovak=t,e.default=n,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).sl={})}(this,function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},o={weekdays:{shorthand:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],longhand:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};n.l10ns.sl=o;var t=n.l10ns;e.Slovenian=o,e.default=t,Object.defineProperty(e,"__esModule",{value:!0})});
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).sl={})}(this,(function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},o={weekdays:{shorthand:["Ned","Pon","Tor","Sre","Čet","Pet","Sob"],longhand:["Nedelja","Ponedeljek","Torek","Sreda","Četrtek","Petek","Sobota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Marec","April","Maj","Junij","Julij","Avgust","September","Oktober","November","December"]},firstDayOfWeek:1,rangeSeparator:" do ",time_24hr:!0,ordinal:function(){return"."}};n.l10ns.sl=o;var t=n.l10ns;e.Slovenian=o,e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,
|
1
|
+
!function(e,r){"object"==typeof exports&&"undefined"!=typeof module?r(exports):"function"==typeof define&&define.amd?define(["exports"],r):r((e="undefined"!=typeof globalThis?globalThis:e||self).sq={})}(this,(function(e){"use strict";var r="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},a={weekdays:{shorthand:["Di","Hë","Ma","Më","En","Pr","Sh"],longhand:["E Diel","E Hënë","E Martë","E Mërkurë","E Enjte","E Premte","E Shtunë"]},months:{shorthand:["Jan","Shk","Mar","Pri","Maj","Qer","Kor","Gus","Sht","Tet","Nën","Dhj"],longhand:["Janar","Shkurt","Mars","Prill","Maj","Qershor","Korrik","Gusht","Shtator","Tetor","Nëntor","Dhjetor"]},firstDayOfWeek:1,rangeSeparator:" deri ",weekAbbreviation:"Java",yearAriaLabel:"Viti",monthAriaLabel:"Muaji",hourAriaLabel:"Ora",minuteAriaLabel:"Minuta",time_24hr:!0};r.l10ns.sq=a;var n=r.l10ns;e.Albanian=a,e.default=n,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self)["sr-cyr"]={})}(this,function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},o={weekdays:{shorthand:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],longhand:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},months:{shorthand:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],longhand:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"]},firstDayOfWeek:1,weekAbbreviation:"Нед.",rangeSeparator:" до "};n.l10ns.sr=o;var
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self)["sr-cyr"]={})}(this,(function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},o={weekdays:{shorthand:["Нед","Пон","Уто","Сре","Чет","Пет","Суб"],longhand:["Недеља","Понедељак","Уторак","Среда","Четвртак","Петак","Субота"]},months:{shorthand:["Јан","Феб","Мар","Апр","Мај","Јун","Јул","Авг","Сеп","Окт","Нов","Дец"],longhand:["Јануар","Фебруар","Март","Април","Мај","Јун","Јул","Август","Септембар","Октобар","Новембар","Децембар"]},firstDayOfWeek:1,weekAbbreviation:"Нед.",rangeSeparator:" до "};n.l10ns.sr=o;var i=n.l10ns;e.SerbianCyrillic=o,e.default=i,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e=e||self).sr={})}(this,function(e){"use strict";var t="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},a={weekdays:{shorthand:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],longhand:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"]},firstDayOfWeek:1,weekAbbreviation:"Ned.",rangeSeparator:" do ",time_24hr:!0};t.l10ns.sr=a;var n=t.l10ns;e.Serbian=a,e.default=n,Object.defineProperty(e,"__esModule",{value:!0})});
|
1
|
+
!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).sr={})}(this,(function(e){"use strict";var t="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},a={weekdays:{shorthand:["Ned","Pon","Uto","Sre","Čet","Pet","Sub"],longhand:["Nedelja","Ponedeljak","Utorak","Sreda","Četvrtak","Petak","Subota"]},months:{shorthand:["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Avg","Sep","Okt","Nov","Dec"],longhand:["Januar","Februar","Mart","April","Maj","Jun","Jul","Avgust","Septembar","Oktobar","Novembar","Decembar"]},firstDayOfWeek:1,weekAbbreviation:"Ned.",rangeSeparator:" do ",time_24hr:!0};t.l10ns.sr=a;var n=t.l10ns;e.Serbian=a,e.default=n,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).sv={})}(this,function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).sv={})}(this,(function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},a={firstDayOfWeek:1,weekAbbreviation:"v",weekdays:{shorthand:["sön","mån","tis","ons","tor","fre","lör"],longhand:["söndag","måndag","tisdag","onsdag","torsdag","fredag","lördag"]},months:{shorthand:["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"],longhand:["januari","februari","mars","april","maj","juni","juli","augusti","september","oktober","november","december"]},rangeSeparator:" till ",time_24hr:!0,ordinal:function(){return"."}};n.l10ns.sv=a;var o=n.l10ns;e.Swedish=a,e.default=o,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).th={})}(this,function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},t={weekdays:{shorthand:["อา","จ","อ","พ","พฤ","ศ","ส"],longhand:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"]},months:{shorthand:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],longhand:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"]},firstDayOfWeek:1,rangeSeparator:" ถึง ",scrollTitle:"เลื่อนเพื่อเพิ่มหรือลด",toggleTitle:"คลิกเพื่อเปลี่ยน",time_24hr:!0,ordinal:function(){return""}};n.l10ns.th=t;var o=n.l10ns;e.Thai=t,e.default=o,Object.defineProperty(e,"__esModule",{value:!0})});
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).th={})}(this,(function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},t={weekdays:{shorthand:["อา","จ","อ","พ","พฤ","ศ","ส"],longhand:["อาทิตย์","จันทร์","อังคาร","พุธ","พฤหัสบดี","ศุกร์","เสาร์"]},months:{shorthand:["ม.ค.","ก.พ.","มี.ค.","เม.ย.","พ.ค.","มิ.ย.","ก.ค.","ส.ค.","ก.ย.","ต.ค.","พ.ย.","ธ.ค."],longhand:["มกราคม","กุมภาพันธ์","มีนาคม","เมษายน","พฤษภาคม","มิถุนายน","กรกฎาคม","สิงหาคม","กันยายน","ตุลาคม","พฤศจิกายน","ธันวาคม"]},firstDayOfWeek:1,rangeSeparator:" ถึง ",scrollTitle:"เลื่อนเพื่อเพิ่มหรือลด",toggleTitle:"คลิกเพื่อเปลี่ยน",time_24hr:!0,ordinal:function(){return""}};n.l10ns.th=t;var o=n.l10ns;e.Thai=t,e.default=o,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(a
|
1
|
+
!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?a(exports):"function"==typeof define&&define.amd?define(["exports"],a):a((e="undefined"!=typeof globalThis?globalThis:e||self).tr={})}(this,(function(e){"use strict";var a="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},t={weekdays:{shorthand:["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],longhand:["Pazar","Pazartesi","Salı","Çarşamba","Perşembe","Cuma","Cumartesi"]},months:{shorthand:["Oca","Şub","Mar","Nis","May","Haz","Tem","Ağu","Eyl","Eki","Kas","Ara"],longhand:["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"]},firstDayOfWeek:1,ordinal:function(){return"."},rangeSeparator:" - ",weekAbbreviation:"Hf",scrollTitle:"Artırmak için kaydırın",toggleTitle:"Aç/Kapa",amPM:["ÖÖ","ÖS"],time_24hr:!0};a.l10ns.tr=t;var r=a.l10ns;e.Turkish=t,e.default=r,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).uk={})}(this,function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).uk={})}(this,(function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},o={firstDayOfWeek:1,weekdays:{shorthand:["Нд","Пн","Вт","Ср","Чт","Пт","Сб"],longhand:["Неділя","Понеділок","Вівторок","Середа","Четвер","П'ятниця","Субота"]},months:{shorthand:["Січ","Лют","Бер","Кві","Тра","Чер","Лип","Сер","Вер","Жов","Лис","Гру"],longhand:["Січень","Лютий","Березень","Квітень","Травень","Червень","Липень","Серпень","Вересень","Жовтень","Листопад","Грудень"]},time_24hr:!0};n.l10ns.uk=o;var t=n.l10ns;e.Ukrainian=o,e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).uz={})}(this,(function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},o={weekdays:{shorthand:["Якш","Душ","Сеш","Чор","Пай","Жум","Шан"],longhand:["Якшанба","Душанба","Сешанба","Чоршанба","Пайшанба","Жума","Шанба"]},months:{shorthand:["Янв","Фев","Мар","Апр","Май","Июн","Июл","Авг","Сен","Окт","Ноя","Дек"],longhand:["Январ","Феврал","Март","Апрел","Май","Июн","Июл","Август","Сентябр","Октябр","Ноябр","Декабр"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" — ",weekAbbreviation:"Ҳафта",scrollTitle:"Катталаштириш учун айлантиринг",toggleTitle:"Ўтиш учун босинг",amPM:["AM","PM"],yearAriaLabel:"Йил",time_24hr:!0};n.l10ns.uz=o;var t=n.l10ns;e.Uzbek=o,e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -0,0 +1 @@
|
|
1
|
+
!function(a,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((a="undefined"!=typeof globalThis?globalThis:a||self).uz_latn={})}(this,(function(a){"use strict";var e="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},n={weekdays:{shorthand:["Ya","Du","Se","Cho","Pa","Ju","Sha"],longhand:["Yakshanba","Dushanba","Seshanba","Chorshanba","Payshanba","Juma","Shanba"]},months:{shorthand:["Yan","Fev","Mar","Apr","May","Iyun","Iyul","Avg","Sen","Okt","Noy","Dek"],longhand:["Yanvar","Fevral","Mart","Aprel","May","Iyun","Iyul","Avgust","Sentabr","Oktabr","Noyabr","Dekabr"]},firstDayOfWeek:1,ordinal:function(){return""},rangeSeparator:" — ",weekAbbreviation:"Hafta",scrollTitle:"Kattalashtirish uchun aylantiring",toggleTitle:"O‘tish uchun bosing",amPM:["AM","PM"],yearAriaLabel:"Yil",time_24hr:!0};e.l10ns.uz_latn=n;var t=e.l10ns;a.UzbekLatin=n,a.default=t,Object.defineProperty(a,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(n,h){"object"==typeof exports&&"undefined"!=typeof module?h(exports):"function"==typeof define&&define.amd?define(["exports"],h):h((n=n||self).vn={})}(this,function(n){"use strict";var h="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},e={weekdays:{shorthand:["CN","T2","T3","T4","T5","T6","T7"],longhand:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},months:{shorthand:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],longhand:["Tháng một","Tháng hai","Tháng ba","Tháng tư","Tháng năm","Tháng sáu","Tháng bảy","Tháng tám","Tháng chín","Tháng mười","Tháng
|
1
|
+
!function(n,h){"object"==typeof exports&&"undefined"!=typeof module?h(exports):"function"==typeof define&&define.amd?define(["exports"],h):h((n="undefined"!=typeof globalThis?globalThis:n||self).vn={})}(this,(function(n){"use strict";var h="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},e={weekdays:{shorthand:["CN","T2","T3","T4","T5","T6","T7"],longhand:["Chủ nhật","Thứ hai","Thứ ba","Thứ tư","Thứ năm","Thứ sáu","Thứ bảy"]},months:{shorthand:["Th1","Th2","Th3","Th4","Th5","Th6","Th7","Th8","Th9","Th10","Th11","Th12"],longhand:["Tháng một","Tháng hai","Tháng ba","Tháng tư","Tháng năm","Tháng sáu","Tháng bảy","Tháng tám","Tháng chín","Tháng mười","Tháng mười một","Tháng mười hai"]},firstDayOfWeek:1,rangeSeparator:" đến "};h.l10ns.vn=e;var T=h.l10ns;n.Vietnamese=e,n.default=T,Object.defineProperty(n,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self)["zh-tw"]={})}(this,function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self)["zh-tw"]={})}(this,(function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},o={weekdays:{shorthand:["週日","週一","週二","週三","週四","週五","週六"],longhand:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},months:{shorthand:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],longhand:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},rangeSeparator:" 至 ",weekAbbreviation:"週",scrollTitle:"滾動切換",toggleTitle:"點擊切換 12/24 小時時制"};n.l10ns.zh_tw=o;var t=n.l10ns;e.MandarinTraditional=o,e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1 +1 @@
|
|
1
|
-
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e=e||self).zh={})}(this,function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},o={weekdays:{shorthand:["周日","周一","周二","周三","周四","周五","周六"],longhand:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},months:{shorthand:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],longhand:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},rangeSeparator:" 至 ",weekAbbreviation:"周",scrollTitle:"滚动切换",toggleTitle:"点击切换 12/24 小时时制"};n.l10ns.zh=o;var t=n.l10ns;e.Mandarin=o,e.default=t,Object.defineProperty(e,"__esModule",{value:!0})});
|
1
|
+
!function(e,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((e="undefined"!=typeof globalThis?globalThis:e||self).zh={})}(this,(function(e){"use strict";var n="undefined"!=typeof window&&void 0!==window.flatpickr?window.flatpickr:{l10ns:{}},o={weekdays:{shorthand:["周日","周一","周二","周三","周四","周五","周六"],longhand:["星期日","星期一","星期二","星期三","星期四","星期五","星期六"]},months:{shorthand:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"],longhand:["一月","二月","三月","四月","五月","六月","七月","八月","九月","十月","十一月","十二月"]},rangeSeparator:" 至 ",weekAbbreviation:"周",scrollTitle:"滚动切换",toggleTitle:"点击切换 12/24 小时时制"};n.l10ns.zh=o;var t=n.l10ns;e.Mandarin=o,e.default=t,Object.defineProperty(e,"__esModule",{value:!0})}));
|
@@ -1,6 +1,6 @@
|
|
1
1
|
<% flatpickr_locale_conversions = { ca: "cat", el: "gr", nb: "no", vi: "vn" } %>
|
2
2
|
|
3
|
-
<% I18n.available_locales.each do |locale| %>
|
3
|
+
<% I18n.available_locales.sort.each do |locale| %>
|
4
4
|
<% Trestle.i18n_fallbacks(locale).each do |candidate| %>
|
5
5
|
<% candidate = flatpickr_locale_conversions[candidate] || candidate %>
|
6
6
|
<% require_asset("trestle/flatpickr/#{candidate}") rescue nil %>
|
@@ -1,33 +1,31 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
end
|
1
|
+
class Trestle::AdminController < Trestle::ApplicationController
|
2
|
+
def index
|
3
|
+
end
|
5
4
|
|
6
|
-
|
7
|
-
|
5
|
+
class << self
|
6
|
+
attr_reader :admin
|
8
7
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
8
|
+
private
|
9
|
+
def local_prefixes
|
10
|
+
return admin.view_path_prefixes if admin
|
11
|
+
[controller_path.sub(/\/$/, "")]
|
14
12
|
end
|
13
|
+
end
|
15
14
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
15
|
+
def admin
|
16
|
+
@_admin ||= self.class.admin.new(self)
|
17
|
+
end
|
18
|
+
helper_method :admin
|
20
19
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
protected
|
21
|
+
def breadcrumbs
|
22
|
+
@_breadcrumbs ||= admin.breadcrumbs.dup
|
23
|
+
end
|
25
24
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
25
|
+
def flash_message(type, title:, message:)
|
26
|
+
{
|
27
|
+
title: admin.t("flash.#{type}.title", default: title),
|
28
|
+
message: admin.t("flash.#{type}.message", default: message)
|
29
|
+
}
|
32
30
|
end
|
33
31
|
end
|
@@ -1,14 +1,12 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
protect_from_forgery
|
1
|
+
class Trestle::ApplicationController < ActionController::Base
|
2
|
+
protect_from_forgery
|
4
3
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
end
|
4
|
+
include Trestle::Controller::Breadcrumbs
|
5
|
+
include Trestle::Controller::Callbacks
|
6
|
+
include Trestle::Controller::Dialog
|
7
|
+
include Trestle::Controller::Helpers
|
8
|
+
include Trestle::Controller::Layout
|
9
|
+
include Trestle::Controller::Location
|
10
|
+
include Trestle::Controller::Title
|
11
|
+
include Trestle::Controller::Toolbars
|
14
12
|
end
|
@@ -1,17 +1,15 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
end
|
1
|
+
class Trestle::DashboardController < Trestle::ApplicationController
|
2
|
+
def index
|
3
|
+
admin = primary_admin
|
4
|
+
redirect_to admin.path if admin
|
5
|
+
end
|
7
6
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
end
|
7
|
+
private
|
8
|
+
def primary_admin
|
9
|
+
if navigation = Trestle.navigation(self).first
|
10
|
+
navigation.admin
|
11
|
+
elsif Trestle.registry.any?
|
12
|
+
Trestle.registry.first
|
15
13
|
end
|
16
14
|
end
|
17
15
|
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
include Resource::Controller::Toolbar
|
7
|
-
end
|
1
|
+
class Trestle::ResourceController < Trestle::AdminController
|
2
|
+
include Trestle::Resource::Controller::Actions
|
3
|
+
include Trestle::Resource::Controller::DataMethods
|
4
|
+
include Trestle::Resource::Controller::Redirection
|
5
|
+
include Trestle::Resource::Controller::Toolbar
|
8
6
|
end
|
@@ -3,19 +3,23 @@ module Trestle
|
|
3
3
|
def avatar(options={})
|
4
4
|
fallback = options.delete(:fallback) if options[:fallback]
|
5
5
|
|
6
|
-
content_tag(:div,
|
6
|
+
content_tag(:div, default_avatar_options.merge(options)) do
|
7
7
|
concat content_tag(:span, fallback, class: "avatar-fallback") if fallback
|
8
8
|
concat yield if block_given?
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
12
|
def gravatar(email, options={})
|
13
|
-
options = { d: "
|
13
|
+
options = { d: "mp" }.merge(options)
|
14
14
|
|
15
15
|
url = "https://www.gravatar.com/avatar/#{Digest::MD5.hexdigest(email.to_s.downcase)}.png"
|
16
16
|
url << "?#{options.to_query}" if options.any?
|
17
17
|
|
18
18
|
image_tag(url)
|
19
19
|
end
|
20
|
+
|
21
|
+
def default_avatar_options
|
22
|
+
Trestle::Options.new(class: ["avatar"])
|
23
|
+
end
|
20
24
|
end
|
21
25
|
end
|
@@ -6,7 +6,7 @@ module Trestle
|
|
6
6
|
|
7
7
|
content_tag(:div, class: "main-content-container") do
|
8
8
|
concat content_tag(:div, content, class: "main-content")
|
9
|
-
concat
|
9
|
+
concat context.sidebar if context.sidebar
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
@@ -15,9 +15,17 @@ module Trestle
|
|
15
15
|
@template = template
|
16
16
|
end
|
17
17
|
|
18
|
-
def sidebar(&block)
|
19
|
-
|
20
|
-
|
18
|
+
def sidebar(options={}, &block)
|
19
|
+
if block_given?
|
20
|
+
@sidebar = @template.content_tag(:aside, default_sidebar_options.merge(options), &block)
|
21
|
+
nil
|
22
|
+
else
|
23
|
+
@sidebar
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def default_sidebar_options
|
28
|
+
Trestle::Options.new(class: ["main-content-sidebar"])
|
21
29
|
end
|
22
30
|
end
|
23
31
|
end
|
@@ -1,31 +1,5 @@
|
|
1
1
|
module Trestle
|
2
2
|
module HookHelper
|
3
|
-
|
4
|
-
hooks = hooks(name)
|
5
|
-
|
6
|
-
if hooks.any?
|
7
|
-
safe_join(hooks.map { |hook|
|
8
|
-
hook.evaluate(self, *args)
|
9
|
-
}, "\n")
|
10
|
-
elsif block_given?
|
11
|
-
capture(*args, &Proc.new)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
def hook?(name)
|
16
|
-
hooks(name).any?
|
17
|
-
end
|
18
|
-
|
19
|
-
protected
|
20
|
-
def hooks(name)
|
21
|
-
hook_sets.map { |set| set.for(name) }.inject(&:+).select { |h| h.visible?(self) }
|
22
|
-
end
|
23
|
-
|
24
|
-
def hook_sets
|
25
|
-
@_hook_sets ||= [
|
26
|
-
(admin.hooks if defined?(admin) && admin),
|
27
|
-
Trestle.config.hooks
|
28
|
-
].compact
|
29
|
-
end
|
3
|
+
include Trestle::Hook::Helpers
|
30
4
|
end
|
31
5
|
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module Trestle
|
2
|
+
module LayoutHelper
|
3
|
+
SIDEBAR_CLASSES = {
|
4
|
+
"expanded" => "sidebar-expanded",
|
5
|
+
"collapsed" => "sidebar-collapsed"
|
6
|
+
}
|
7
|
+
|
8
|
+
def body_attributes
|
9
|
+
{
|
10
|
+
class: body_classes
|
11
|
+
}.reject { |k, v| v.blank? }
|
12
|
+
end
|
13
|
+
|
14
|
+
def body_classes
|
15
|
+
[
|
16
|
+
SIDEBAR_CLASSES[cookies["trestle:sidebar"]]
|
17
|
+
].compact
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -7,5 +7,28 @@ module Trestle
|
|
7
7
|
def current_admin?(admin)
|
8
8
|
respond_to?(:admin) && self.admin && self.admin.name == admin.name
|
9
9
|
end
|
10
|
+
|
11
|
+
def navigation_group_collapsed?(group)
|
12
|
+
if collapsed_navigation_groups.include?(group.id)
|
13
|
+
# Explicitly collapsed by user
|
14
|
+
true
|
15
|
+
elsif group.collapse?
|
16
|
+
# Default to collapsed unless expanded by user
|
17
|
+
!expanded_navigation_groups.include?(group.id)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
def collapsed_navigation_groups
|
23
|
+
@collapsed_navigation_groups ||= navigation_groups(:collapsed)
|
24
|
+
end
|
25
|
+
|
26
|
+
def expanded_navigation_groups
|
27
|
+
@expanded_navigation_groups ||= navigation_groups(:expanded)
|
28
|
+
end
|
29
|
+
|
30
|
+
def navigation_groups(state)
|
31
|
+
cookies["trestle:navigation:#{state}"].try(:split, ",") || []
|
32
|
+
end
|
10
33
|
end
|
11
34
|
end
|
@@ -1,7 +1,10 @@
|
|
1
1
|
module Trestle
|
2
2
|
module ParamsHelper
|
3
3
|
def persistent_params
|
4
|
-
|
4
|
+
flat, nested = Trestle.config.persistent_params.partition { |p| !p.is_a?(Hash) }
|
5
|
+
nested = nested.inject({}) { |result, param| result.merge(param) }
|
6
|
+
|
7
|
+
params.slice(*(flat + nested.keys)).permit(*(flat << nested))
|
5
8
|
end
|
6
9
|
end
|
7
10
|
end
|
@@ -47,5 +47,20 @@ module Trestle
|
|
47
47
|
|
48
48
|
render "trestle/table/table", table: table, collection: collection
|
49
49
|
end
|
50
|
+
|
51
|
+
# Renders the pagination controls for a collection.
|
52
|
+
#
|
53
|
+
# collection - The paginated Kaminari collection to render controls for (required).
|
54
|
+
# options - Hash of options that will be passed to the Kaminari #paginate method (default: {}):
|
55
|
+
#
|
56
|
+
# Examples
|
57
|
+
#
|
58
|
+
# <%= pagination collection: Account.page(params[:page]), remote: true %>
|
59
|
+
#
|
60
|
+
# Returns the HTML representation of the pagination controls as a HTML-safe String.
|
61
|
+
def pagination(collection:, entry_name: nil, **options)
|
62
|
+
collection = collection.call if collection.respond_to?(:call)
|
63
|
+
render "trestle/table/pagination", collection: collection, entry_name: entry_name, options: options
|
64
|
+
end
|
50
65
|
end
|
51
66
|
end
|
@@ -73,17 +73,7 @@ module Trestle
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def admin_for(instance)
|
76
|
-
|
77
|
-
|
78
|
-
while klass
|
79
|
-
admin = Trestle.admins[klass.name.underscore.pluralize]
|
80
|
-
return admin if admin
|
81
|
-
|
82
|
-
klass = klass.superclass
|
83
|
-
end
|
84
|
-
|
85
|
-
# No admin found
|
86
|
-
nil
|
76
|
+
Trestle.lookup_model(instance.class)
|
87
77
|
end
|
88
78
|
end
|
89
79
|
end
|
@@ -40,7 +40,7 @@
|
|
40
40
|
<%= hook :head %>
|
41
41
|
</head>
|
42
42
|
|
43
|
-
|
43
|
+
<%= content_tag :body, body_attributes do %>
|
44
44
|
<div class="app-wrapper">
|
45
45
|
<%= render "trestle/shared/sidebar" %>
|
46
46
|
|
@@ -54,5 +54,5 @@
|
|
54
54
|
<%= render "trestle/shared/footer" %>
|
55
55
|
</div>
|
56
56
|
</div>
|
57
|
-
|
57
|
+
<% end %>
|
58
58
|
</html>
|
@@ -1,8 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
1
|
+
<% errors = local_assigns.fetch(:errors, {}) %>
|
2
|
+
|
3
|
+
<% if errors.any? %>
|
4
|
+
<%= link_to "Debug errors", "#debug-errors", class: "toggle-debug-errors small", data: { toggle: "collapse" } %>
|
5
|
+
|
6
|
+
<div id="debug-errors" class="debug-errors collapse">
|
7
|
+
<ul>
|
8
|
+
<% errors.each do |key, message| %>
|
9
|
+
<li class="small"><tt><%= key %>:</tt> <%= message %></li>
|
10
|
+
<% end %>
|
11
|
+
</ul>
|
12
|
+
</div>
|
13
|
+
<% end %>
|
@@ -2,6 +2,6 @@
|
|
2
2
|
<%= render "trestle/flash/alert", html_class: "alert-success", icon: icon("alert-icon far fa-check-circle"), alert: normalize_flash_alert(flash[:message]) %>
|
3
3
|
<% elsif flash[:error] -%>
|
4
4
|
<%= render layout: "trestle/flash/alert", locals: { html_class: "alert-danger", icon: icon("alert-icon far fa-times-circle"), alert: normalize_flash_alert(flash[:error]) } do %>
|
5
|
-
<%= render "trestle/flash/debug" if debug_form_errors? %>
|
5
|
+
<%= render "trestle/flash/debug", errors: instance.errors if debug_form_errors? %>
|
6
6
|
<% end %>
|
7
7
|
<% end -%>
|
@@ -1,9 +1,18 @@
|
|
1
|
-
|
2
|
-
<% admin.scopes.each do |
|
3
|
-
<%= content_tag(:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
1
|
+
<%= content_tag(:dl, class: admin.scopes.classes) do %>
|
2
|
+
<% admin.scopes.grouped.each do |group, scopes| %>
|
3
|
+
<%= content_tag(:dt, group, class: ["scope-group", ("scope-group-empty" if group.blank?)]) if admin.scopes.grouped? %>
|
4
|
+
|
5
|
+
<dd>
|
6
|
+
<ul class="scope-list">
|
7
|
+
<% scopes.each do |scope| %>
|
8
|
+
<li>
|
9
|
+
<%= link_to persistent_params.merge(scope: (scope unless scope.active?(params))), class: ["scope", ("active" if scope.active?(params))] do %>
|
10
|
+
<strong><%= scope.label %></strong>
|
11
|
+
(<%= number_with_delimiter(scope.count(admin.collection(params))) %>)
|
12
|
+
<% end %>
|
13
|
+
</li>
|
14
|
+
<% end %>
|
15
|
+
</ul>
|
16
|
+
</dd>
|
8
17
|
<% end %>
|
9
|
-
|
18
|
+
<% end %>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
<% end %>
|
6
6
|
|
7
7
|
<% content_for(:utilities) do %>
|
8
|
-
<%= render "scopes"
|
8
|
+
<%= render "scopes" %>
|
9
9
|
<% end if admin.scopes.any? %>
|
10
10
|
|
11
11
|
<%= render layout: "layout" do %>
|
@@ -20,6 +20,6 @@
|
|
20
20
|
<footer class="main-content-footer">
|
21
21
|
<%= hook("resource.index.footer") %>
|
22
22
|
|
23
|
-
<%=
|
23
|
+
<%= pagination collection: collection, entry_name: admin.model_name, remote: admin.pagination_options[:ajax] %>
|
24
24
|
</footer>
|
25
25
|
<% end %>
|
@@ -11,24 +11,23 @@
|
|
11
11
|
|
12
12
|
<div class="app-sidebar-inner">
|
13
13
|
<nav class="app-nav">
|
14
|
-
<% collapsed = cookies["trestle:navigation:collapsed"].try(:split, ",") || [] %>
|
15
14
|
<% Trestle.navigation(self).each do |group, items| %>
|
16
|
-
|
15
|
+
<%= content_tag(:ul, class: ("collapsed" if group.present? && navigation_group_collapsed?(group)), data: { group: group.id }) do %>
|
17
16
|
<% if group.present? %>
|
18
17
|
<li class="nav-header"><%= link_to group.label, "##{group.id}" %></li>
|
19
18
|
<% end %>
|
20
19
|
|
21
20
|
<% items.each do |item| %>
|
22
|
-
|
21
|
+
<%= content_tag(:li, class: ("active" if current_navigation_item?(item))) do %>
|
23
22
|
<%= link_to item.path, item.html_options do %>
|
24
23
|
<%= icon("nav-icon", item.icon) %>
|
25
24
|
<span class="nav-label"><%= item.label %></span>
|
26
25
|
|
27
26
|
<%= content_tag(:span, item.badge.text, class: ["badge", item.badge.html_class]) if item.badge? %>
|
28
27
|
<% end %>
|
29
|
-
|
28
|
+
<% end %>
|
30
29
|
<% end %>
|
31
|
-
|
30
|
+
<% end %>
|
32
31
|
<% end %>
|
33
32
|
</nav>
|
34
33
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
<nav class="pagination-container">
|
2
2
|
<p><%= page_entries_info(collection, entry_name: (entry_name if local_assigns.has_key?(:entry_name))) %>
|
3
3
|
|
4
|
-
<%= paginate(collection, theme: "trestle") %>
|
4
|
+
<%= paginate(collection, **{ theme: "trestle" }.reverse_merge(local_assigns.has_key?(:options) ? options : {})) %>
|
5
5
|
</nav>
|