padrino-admin 0.8.5 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +40 -84
- data/VERSION +1 -1
- data/lib/padrino-admin.rb +3 -20
- data/lib/padrino-admin/access_control.rb +78 -326
- data/lib/padrino-admin/generators/actions.rb +6 -26
- data/lib/padrino-admin/generators/admin_app.rb +40 -11
- data/lib/padrino-admin/generators/admin_page.rb +11 -17
- data/lib/padrino-admin/generators/orm.rb +85 -0
- data/lib/padrino-admin/generators/templates/account/activerecord.rb.tt +43 -0
- data/lib/padrino-admin/generators/templates/account/datamapper.rb.tt +54 -0
- data/lib/padrino-admin/generators/templates/{page/db → account}/seeds.rb.tt +5 -6
- data/lib/padrino-admin/generators/{app/app.rb.tt → templates/app/app.rb} +2 -10
- data/lib/padrino-admin/generators/templates/app/controllers/base.rb +7 -0
- data/lib/padrino-admin/generators/{app → templates/app}/controllers/sessions.rb +6 -6
- data/lib/padrino-admin/generators/templates/assets/stylesheets/base.css +370 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/amro/style.css +364 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/bec-green/style.css +290 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/bec/style.css +301 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/blue/style.css +287 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/default/style.css +373 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/djime-cerulean/style.css +305 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/kathleene/style.css +279 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/olive/style.css +345 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/orange/style.css +269 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/reidb-greenish/style.css +302 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/ruby/style.css +281 -0
- data/lib/padrino-admin/generators/templates/assets/stylesheets/themes/warehouse/style.css +391 -0
- data/lib/padrino-admin/generators/templates/erb/app/base/_sidebar.erb.tt +13 -0
- data/lib/padrino-admin/generators/templates/erb/app/base/index.erb.tt +17 -0
- data/lib/padrino-admin/generators/templates/erb/app/layouts/application.erb.tt +44 -0
- data/lib/padrino-admin/generators/templates/erb/app/sessions/new.erb.tt +46 -0
- data/lib/padrino-admin/generators/templates/erb/page/_form.erb.tt +11 -0
- data/lib/padrino-admin/generators/templates/erb/page/edit.erb.tt +18 -0
- data/lib/padrino-admin/generators/templates/erb/page/index.erb.tt +36 -0
- data/lib/padrino-admin/generators/templates/erb/page/new.erb.tt +17 -0
- data/lib/padrino-admin/generators/templates/page/controller.rb.tt +32 -22
- data/lib/padrino-admin/helpers/authentication_helpers.rb +8 -9
- data/lib/padrino-admin/helpers/view_helpers.rb +20 -338
- data/lib/padrino-admin/locale/admin/de.yml +15 -49
- data/lib/padrino-admin/locale/admin/en.yml +12 -50
- data/lib/padrino-admin/locale/admin/it.yml +15 -50
- data/padrino-admin.gemspec +40 -321
- data/test/fixtures/data_mapper.rb +56 -7
- data/test/generators/test_admin_app_generator.rb +17 -16
- data/test/generators/test_admin_page_generator.rb +12 -16
- data/test/test_admin_application.rb +193 -12
- metadata +33 -314
- data/lib/padrino-admin/column_store.rb +0 -156
- data/lib/padrino-admin/config.rb +0 -36
- data/lib/padrino-admin/generators/admin_uploader.rb +0 -88
- data/lib/padrino-admin/generators/app/controllers/accounts.rb +0 -37
- data/lib/padrino-admin/generators/app/controllers/base.rb +0 -11
- data/lib/padrino-admin/generators/app/controllers/javascripts.rb +0 -10
- data/lib/padrino-admin/generators/app/views/accounts/_form.haml +0 -24
- data/lib/padrino-admin/generators/app/views/accounts/edit.haml +0 -3
- data/lib/padrino-admin/generators/app/views/accounts/grid.js.erb +0 -9
- data/lib/padrino-admin/generators/app/views/accounts/new.haml +0 -3
- data/lib/padrino-admin/generators/app/views/accounts/store.jml +0 -7
- data/lib/padrino-admin/generators/app/views/base/dashboard.haml +0 -3
- data/lib/padrino-admin/generators/app/views/base/index.haml +0 -19
- data/lib/padrino-admin/generators/app/views/javascripts/admin.js.erb +0 -490
- data/lib/padrino-admin/generators/app/views/javascripts/locale.js.erb +0 -135
- data/lib/padrino-admin/generators/app/views/sessions/new.haml +0 -26
- data/lib/padrino-admin/generators/assets/flash/charts.swf +0 -0
- data/lib/padrino-admin/generators/assets/flash/clippy.swf +0 -0
- data/lib/padrino-admin/generators/assets/flash/expressinstall.swf +0 -0
- data/lib/padrino-admin/generators/assets/flash/swfupload.swf +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/back.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/background.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/bg-content.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/bg-hd-slate.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/bg-hd.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/bg-intro.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/bg-login.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/bg-menu-slate.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/bg-menu.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/bg.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/btn-login.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/cancel.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/categories.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/close.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/close.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/delete.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/download.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/duplicate.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/edit.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/export.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/hd-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/image.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/loader.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/logo-loader.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/logo-small.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/new.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/no-image.png +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/preview.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/print.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/save.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/support.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/admin/up.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/box/corners-blue.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/box/corners.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/box/l-blue.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/box/l.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/box/r-blue.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/box/r.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/box/tb-blue.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/box/tb.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/arrow.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/btn.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/group-cs.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/group-lr.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/group-tb.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-b-noline.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-b.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-bo.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-noline.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow-o.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/button/s-arrow.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/dd/drop-add.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/dd/drop-no.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/dd/drop-yes.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/editor/tb-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/checkbox.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/clear-trigger.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/clear-trigger.psd +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/date-trigger.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/date-trigger.psd +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/error-tip-corners.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/exclamation.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/radio.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/search-trigger.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/search-trigger.psd +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/text-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/trigger-tpl.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/trigger.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/form/trigger.psd +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/gradient-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/Thumbs.db +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/arrow-left-white.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/arrow-right-white.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/col-move-bottom.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/col-move-top.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/columns.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/dirty.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/done.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/drop-no.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/drop-yes.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/footer-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-blue-hd.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-blue-split.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-hrow.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-loading.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-split.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid-vista-hd.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-hd-btn.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-hrow-over.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-hrow.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-special-col-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/grid3-special-col-sel-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/group-by.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/group-expand-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/hd-pop.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-asc.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-desc.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-lock.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-lock.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-unlock.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/hmenu-unlock.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/invalid_line.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/loading.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/mso-hd.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/nowait.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-first-disabled.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-first.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-last-disabled.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-last.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-next-disabled.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-next.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-prev-disabled.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/page-prev.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/pick-button.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/refresh.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/row-check-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/row-expand-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/row-over.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/row-sel.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/sort-hd.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/sort_asc.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/sort_desc.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/grid/wait.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/collapse.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/expand.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/gradient-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/mini-bottom.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/mini-left.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/mini-right.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/mini-top.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/ns-collapse.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/ns-expand.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/panel-close.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/panel-title-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/panel-title-light-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/stick.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/stuck.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/tab-close-on.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/layout/tab-close.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/menu/checked.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/menu/group-checked.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/menu/item-over.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/menu/menu-parent.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/menu/menu.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/menu/unchecked.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/corners-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/left-right.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/light-hd.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/tool-sprite-tpl.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/tool-sprites.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/tools-sprites-trans.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/top-bottom.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/top-bottom.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/white-corners-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/white-left-right.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/panel/white-top-bottom.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/progress/progress-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/qtip/bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/qtip/close.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/qtip/tip-anchor-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/qtip/tip-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/s.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shadow-c.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shadow-lr.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shadow.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shared/blue-loading.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shared/calendar.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shared/glass-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shared/hd-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shared/large-loading.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shared/left-btn.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shared/loading-balls.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shared/right-btn.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/shared/warning.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/e-handle-dark.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/e-handle.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/ne-handle-dark.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/ne-handle.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/nw-handle-dark.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/nw-handle.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/s-handle-dark.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/s-handle.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/se-handle-dark.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/se-handle.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/square.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/sw-handle-dark.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/sizer/sw-handle.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/slider/slider-bg.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/slider/slider-thumb.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/slider/slider-v-bg.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/slider/slider-v-thumb.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/scroll-left.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/scroll-right.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/scroller-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-btm-left-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-btm-right-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-close.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-strip-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-strip-bg.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tab-strip-btm-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tabs/tabs-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/btn-arrow-light.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/btn-arrow.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/btn-over-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/gray-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/more.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/tb-bg.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/tb-btn-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/tb-xl-btn-sprite.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/toolbar/tb-xl-sep.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/arrows.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-add.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-between.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-no.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-over.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-under.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/drop-yes.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end-minus-nl.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end-minus.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end-plus-nl.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end-plus.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-end.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-line.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-minus-nl.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-minus.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-plus-nl.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow-plus.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/elbow.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/folder-open.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/folder.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/leaf.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/loading.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/tree/s.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/icon-error.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/icon-info.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/icon-question.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/icon-warning.gif +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/left-corners.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/left-corners.psd +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/left-right.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/left-right.psd +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/right-corners.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/right-corners.psd +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/top-bottom.png +0 -0
- data/lib/padrino-admin/generators/assets/images/ext/default/window/top-bottom.psd +0 -0
- data/lib/padrino-admin/generators/assets/javascripts/controls.js +0 -3
- data/lib/padrino-admin/generators/assets/javascripts/dragdrop.js +0 -3
- data/lib/padrino-admin/generators/assets/javascripts/effects.js +0 -4
- data/lib/padrino-admin/generators/assets/javascripts/ext.js +0 -29
- data/lib/padrino-admin/generators/assets/javascripts/prototype.js +0 -14
- data/lib/padrino-admin/generators/assets/javascripts/swfupload.js +0 -4
- data/lib/padrino-admin/generators/assets/stylesheets/admin.css +0 -60
- data/lib/padrino-admin/generators/assets/stylesheets/ext.css +0 -1543
- data/lib/padrino-admin/generators/assets/stylesheets/login.css +0 -17
- data/lib/padrino-admin/generators/assets/stylesheets/standard.css +0 -62
- data/lib/padrino-admin/generators/templates/page/views/_form.haml.tt +0 -9
- data/lib/padrino-admin/generators/templates/page/views/edit.haml.tt +0 -3
- data/lib/padrino-admin/generators/templates/page/views/grid.js.erb.tt +0 -9
- data/lib/padrino-admin/generators/templates/page/views/new.haml.tt +0 -3
- data/lib/padrino-admin/generators/templates/page/views/store.jml.tt +0 -6
- data/lib/padrino-admin/generators/templates/uploader/controller.rb +0 -24
- data/lib/padrino-admin/generators/templates/uploader/lib/uploader.rb +0 -66
- data/lib/padrino-admin/generators/templates/uploader/views/grid.js.erb +0 -57
- data/lib/padrino-admin/generators/templates/uploader/views/store.jml +0 -10
- data/lib/padrino-admin/locale/extjs/de.yml +0 -147
- data/lib/padrino-admin/locale/extjs/en.yml +0 -147
- data/lib/padrino-admin/locale/extjs/it.yml +0 -147
- data/lib/padrino-admin/orm.rb +0 -48
- data/lib/padrino-admin/orm/abstract.rb +0 -95
- data/lib/padrino-admin/orm/activerecord.rb +0 -144
- data/lib/padrino-admin/orm/datamapper.rb +0 -229
- data/lib/padrino-admin/orm/mongomapper.rb +0 -65
- data/lib/padrino-admin/utils/literal.rb +0 -13
- data/test/fixtures/active_record.rb +0 -29
- data/test/fixtures/mongo_mapper.rb +0 -12
- data/test/fixtures/test_column_store.jml +0 -11
- data/test/generators/test_admin_uploader_generator.rb +0 -56
- data/test/test_access_control.rb +0 -99
- data/test/test_active_record.rb +0 -96
- data/test/test_column_store.rb +0 -87
- data/test/test_config.rb +0 -13
- data/test/test_data_mapper.rb +0 -114
- data/test/test_mongo_mapper.rb +0 -30
@@ -1,147 +0,0 @@
|
|
1
|
-
it:
|
2
|
-
extjs:
|
3
|
-
dateFormat: "d/m/Y"
|
4
|
-
dateTimeFormat: "d/m/Y G:i"
|
5
|
-
ddText: "{0} righe selezionate"
|
6
|
-
closeText: "Chiudi pannello"
|
7
|
-
invalidText: "Valore non valido"
|
8
|
-
msg: "Caricamento in corso..."
|
9
|
-
emptyText: ""
|
10
|
-
splitRegion:
|
11
|
-
splitTip: "Trascina per cambiare dimensioni."
|
12
|
-
collapsibleSplitTip: "Trascina per cambiare dimensioni. Doppio click per nascondere."
|
13
|
-
messageBox:
|
14
|
-
ok: "OK"
|
15
|
-
yesse: "Sì"
|
16
|
-
cancel: "Annulla"
|
17
|
-
none: "No"
|
18
|
-
datePicker:
|
19
|
-
todayText: "Oggi"
|
20
|
-
minText: "Data precedente alla data minima"
|
21
|
-
maxText: "Data successiva alla data massima"
|
22
|
-
disabledDaysText: ""
|
23
|
-
disabledDatesText: ""
|
24
|
-
nextText: 'Mese successivo (Ctrl+Destra)'
|
25
|
-
prevText: 'Mese precedente (Ctrl+Sinistra)'
|
26
|
-
monthYearText: 'Scegli un mese (Ctrl+Su/Giu per cambiare anno)'
|
27
|
-
todayTip: "{0} (Barra spaziatrice)"
|
28
|
-
format: "d/m/y"
|
29
|
-
cancelText: "Annulla"
|
30
|
-
okText: " OK "
|
31
|
-
startDay: 1
|
32
|
-
grid:
|
33
|
-
gridView:
|
34
|
-
sortAscText: "Ordinamento crescente"
|
35
|
-
sortDescText: "Ordinamento decrescente"
|
36
|
-
lockText: "Blocca colonna"
|
37
|
-
unlockText: "Sblocca colonna"
|
38
|
-
columnsText: "Colonne"
|
39
|
-
groupingView:
|
40
|
-
emptyGroupText: '(Nessun dato)'
|
41
|
-
groupByText: 'Raggruppa per questo campo'
|
42
|
-
showGroupsText: 'Mostra nei gruppi'
|
43
|
-
propertyColumnModel:
|
44
|
-
nameText: "Nome"
|
45
|
-
valueText: "Valore"
|
46
|
-
dateFormat: "j/m/Y"
|
47
|
-
search:
|
48
|
-
searchText: "Cerca"
|
49
|
-
searchTipText: "Inserisci una parola o premi cerca"
|
50
|
-
selectAllText: "Seleziona Tutto"
|
51
|
-
minCharsTipText: "Inserisci almeno {0} caratteri"
|
52
|
-
pagingToolbar:
|
53
|
-
beforePageText: "Pagina"
|
54
|
-
afterPageText: "di {0}"
|
55
|
-
firstText: "Prima pagina"
|
56
|
-
prevText: "Pagina precedente"
|
57
|
-
nextText: "Pagina successiva"
|
58
|
-
lastText: "Ultima pagina"
|
59
|
-
refreshText: "Aggiorna"
|
60
|
-
displayMsg: "Record {0} - {1} di {2}"
|
61
|
-
emptyMsg: 'Nessun dato da mostrare'
|
62
|
-
form:
|
63
|
-
textField:
|
64
|
-
minLengthText: "La lunghezza minima è {0}"
|
65
|
-
maxLengthText: "La lunghezza massima è {0}"
|
66
|
-
blankText: "Campo obbligatorio"
|
67
|
-
regexText: ""
|
68
|
-
emptyText: ""
|
69
|
-
numberField:
|
70
|
-
minText: "Il valore minimo è {0}"
|
71
|
-
maxText: "Il valore massimo è {0}"
|
72
|
-
nanText: "{0} non è un valore numerico corretto"
|
73
|
-
dateField:
|
74
|
-
disabledDaysText: "Disabilitato"
|
75
|
-
disabledDatesText: "Disabilitato"
|
76
|
-
minText: "La data deve essere successiva al {0}"
|
77
|
-
maxText: "La data deve essere precedente al {0}"
|
78
|
-
invalidText: "{0} non \u00E8 una data valida. Deve essere nel formato {1}"
|
79
|
-
format: "d/m/y"
|
80
|
-
altFormats: "d/m/Y|d-m-y|d-m-Y|d/m|d-m|dm|dmy|dmY|d|Y-m-d"
|
81
|
-
comboBox:
|
82
|
-
loadingText: "Caricamento in corso..."
|
83
|
-
valueNotFoundText: ""
|
84
|
-
vTypes:
|
85
|
-
emailText: 'Il campo deve essere un indirizzo e-mail nel formato "user@domain.com"'
|
86
|
-
urlText: 'Il campo deve essere un indirizzo web nel formato "http://www.domain.com"'
|
87
|
-
alphaText: 'Il campo deve contenere solo lettere e _'
|
88
|
-
alphanumText: 'Il campo deve contenere solo lettere, numeri e _'
|
89
|
-
htmlEditor:
|
90
|
-
createLinkText: 'Inserire un URL per il link:'
|
91
|
-
buttonTips:
|
92
|
-
bold:
|
93
|
-
title: 'Grassetto (Ctrl+B)'
|
94
|
-
text: 'Rende il testo selezionato in grassetto.'
|
95
|
-
cls: 'x-html-editor-tip'
|
96
|
-
italic:
|
97
|
-
title: 'Corsivo (Ctrl+I)'
|
98
|
-
text: 'Rende il testo selezionato in corsivo.'
|
99
|
-
cls: 'x-html-editor-tip'
|
100
|
-
underline:
|
101
|
-
title: 'Sottolinea (Ctrl+U)'
|
102
|
-
text: 'Sottolinea il testo selezionato.'
|
103
|
-
cls: 'x-html-editor-tip'
|
104
|
-
increasefontsize:
|
105
|
-
title: 'Ingrandisci testo'
|
106
|
-
text: 'Aumenta la dimensione del carattere.'
|
107
|
-
cls: 'x-html-editor-tip'
|
108
|
-
decreasefontsize:
|
109
|
-
title: 'Rimpicciolisci testo'
|
110
|
-
text: 'Diminuisce la dimensione del carattere.'
|
111
|
-
cls: 'x-html-editor-tip'
|
112
|
-
backcolor:
|
113
|
-
title: 'Colore evidenziatore testo'
|
114
|
-
text: 'Modifica il colore di sfondo del testo selezionato.'
|
115
|
-
cls: 'x-html-editor-tip'
|
116
|
-
forecolor:
|
117
|
-
title: 'Colore carattere'
|
118
|
-
text: 'Modifica il colore del testo selezionato.'
|
119
|
-
cls: 'x-html-editor-tip'
|
120
|
-
justifyleft:
|
121
|
-
title: 'Allinea a sinistra'
|
122
|
-
text: 'Allinea il testo a sinistra.'
|
123
|
-
cls: 'x-html-editor-tip'
|
124
|
-
justifycenter:
|
125
|
-
title: 'Centra'
|
126
|
-
text: 'Centra il testo.'
|
127
|
-
cls: 'x-html-editor-tip'
|
128
|
-
justifyright:
|
129
|
-
title: 'Allinea a destra'
|
130
|
-
text: 'Allinea il testo a destra.'
|
131
|
-
cls: 'x-html-editor-tip'
|
132
|
-
insertunorderedlist:
|
133
|
-
title: 'Elenco puntato'
|
134
|
-
text: 'Elenco puntato.'
|
135
|
-
cls: 'x-html-editor-tip'
|
136
|
-
insertorderedlist:
|
137
|
-
title: 'Elenco numerato'
|
138
|
-
text: 'Elenco numerato.'
|
139
|
-
cls: 'x-html-editor-tip'
|
140
|
-
createlink:
|
141
|
-
title: 'Collegamento'
|
142
|
-
text: 'Trasforma il testo selezionato in un collegamanto.'
|
143
|
-
cls: 'x-html-editor-tip'
|
144
|
-
sourceedit:
|
145
|
-
title: 'Sorgente'
|
146
|
-
text: 'Passa alla modalit\u00E0 editing del sorgente.'
|
147
|
-
cls: 'x-html-editor-tip'
|
data/lib/padrino-admin/orm.rb
DELETED
@@ -1,48 +0,0 @@
|
|
1
|
-
module Padrino
|
2
|
-
module Admin
|
3
|
-
|
4
|
-
##
|
5
|
-
# Extend your orm adding these functions:
|
6
|
-
#
|
7
|
-
# * Translatable columns names (if not just support them)
|
8
|
-
# * Full text search
|
9
|
-
# * Pagination
|
10
|
-
# * Extend Account Model with: role, validation, permission, authentication
|
11
|
-
#
|
12
|
-
module Orm
|
13
|
-
|
14
|
-
##
|
15
|
-
# ExtSearch it's the result of an ext_search
|
16
|
-
#
|
17
|
-
# result = Account.ext_search(..)
|
18
|
-
# result.count
|
19
|
-
# result.records
|
20
|
-
#
|
21
|
-
class ExtSearch < Struct.new(:count, :records); end
|
22
|
-
|
23
|
-
##
|
24
|
-
# Method used for register the orm extensions.
|
25
|
-
#
|
26
|
-
def self.register!
|
27
|
-
::DataMapper::Model.append_inclusions(Padrino::Admin::Orm::DataMapper::Base) if defined?(::DataMapper)
|
28
|
-
::ActiveRecord::Base.send(:include, Padrino::Admin::Orm::ActiveRecord::Base) if defined?(::ActiveRecord)
|
29
|
-
::MongoMapper::Document.append_inclusions(Padrino::Admin::Orm::MongoMapper::Base) if defined?(::MongoMapper)
|
30
|
-
# Extend also account model
|
31
|
-
self.extend_account!
|
32
|
-
end
|
33
|
-
|
34
|
-
##
|
35
|
-
# This method it's used for extend Account Model (if present)
|
36
|
-
#
|
37
|
-
def self.extend_account!
|
38
|
-
if defined?(Account) && Account.respond_to?(:orm)
|
39
|
-
case Account.orm
|
40
|
-
when :activerecord then Account.send(:include, Padrino::Admin::Orm::ActiveRecord::Account)
|
41
|
-
when :datamapper then Account.send(:include, Padrino::Admin::Orm::DataMapper::Account)
|
42
|
-
when :mongomapper then Account.send(:include, Padrino::Admin::Orm::MongoMapper::Account)
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
end # Orm
|
47
|
-
end # Admin
|
48
|
-
end # Padrino
|
@@ -1,95 +0,0 @@
|
|
1
|
-
module Padrino
|
2
|
-
module Admin
|
3
|
-
class OrmError < StandardError #:nodoc:
|
4
|
-
end
|
5
|
-
|
6
|
-
module Orm
|
7
|
-
module Abstract
|
8
|
-
##
|
9
|
-
# In this module we have shared function that are shared
|
10
|
-
# with all orm.
|
11
|
-
#
|
12
|
-
module Base
|
13
|
-
def self.included(base) #:nodoc:
|
14
|
-
base.send :include, InstanceMethods
|
15
|
-
base.extend ClassMethods
|
16
|
-
end
|
17
|
-
|
18
|
-
module InstanceMethods
|
19
|
-
end
|
20
|
-
|
21
|
-
module ClassMethods
|
22
|
-
##
|
23
|
-
# This method generate store and column config.
|
24
|
-
# for lazinies hands instead supply:
|
25
|
-
#
|
26
|
-
# Model.column_store("./../views/model/store.jml")
|
27
|
-
#
|
28
|
-
# you can:
|
29
|
-
#
|
30
|
-
# Model.column_store(options.views, "models/store")
|
31
|
-
def column_store(*args)
|
32
|
-
path = File.join(*args)
|
33
|
-
path = Dir[path + ".{jml,jaml}"].first.to_s if path !~ /(\.jml|\.jaml)$/
|
34
|
-
config = YAML.load_file(path)
|
35
|
-
Padrino::Admin::ColumnStore.new(self, config)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end # Abstract
|
39
|
-
|
40
|
-
##
|
41
|
-
# Accoun Extensions
|
42
|
-
#
|
43
|
-
# An Account must have these column/fields:
|
44
|
-
#
|
45
|
-
# role:: String
|
46
|
-
# email:: String (used as login)
|
47
|
-
# crypted_password:: String
|
48
|
-
# salt:: String
|
49
|
-
#
|
50
|
-
# We add to Account model some methods:
|
51
|
-
#
|
52
|
-
# Account.authenticate(email, password):: check if exist an account for the given email and return it if password match
|
53
|
-
# account.password_clean:: return the decrypted password of an Account instance
|
54
|
-
#
|
55
|
-
module Account
|
56
|
-
|
57
|
-
def self.included(base) #:nodoc:
|
58
|
-
base.extend ClassMethods
|
59
|
-
base.send :include, InstanceMethods
|
60
|
-
end
|
61
|
-
|
62
|
-
module ClassMethods
|
63
|
-
##
|
64
|
-
# This method it's for authentication purpose
|
65
|
-
#
|
66
|
-
def authenticate(email, password)
|
67
|
-
account = first(:conditions => { :email => email }) if email.present?
|
68
|
-
account && account.password_clean == password ? account : nil
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
module InstanceMethods
|
73
|
-
##
|
74
|
-
# This method it's used for retrive the original password.
|
75
|
-
#
|
76
|
-
def password_clean
|
77
|
-
crypted_password.decrypt(salt)
|
78
|
-
end
|
79
|
-
|
80
|
-
private
|
81
|
-
def generate_password
|
82
|
-
return if password.blank?
|
83
|
-
self.salt = Digest::SHA1.hexdigest("--#{Time.now.to_s}--#{email}--") if new_record?
|
84
|
-
self.crypted_password = password.encrypt(self.salt)
|
85
|
-
end
|
86
|
-
|
87
|
-
def password_required
|
88
|
-
crypted_password.blank? || !password.blank?
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end # Account
|
92
|
-
end # Abstract
|
93
|
-
end # Orm
|
94
|
-
end # Admin
|
95
|
-
end # Padrino
|
@@ -1,144 +0,0 @@
|
|
1
|
-
module Padrino
|
2
|
-
module Admin
|
3
|
-
module Orm
|
4
|
-
module ActiveRecord
|
5
|
-
##
|
6
|
-
# Here basic functions for interact with ActiveRecord
|
7
|
-
#
|
8
|
-
module Base
|
9
|
-
|
10
|
-
def self.included(base) #:nodoc:
|
11
|
-
base.send :include, Padrino::Admin::Orm::Abstract::Base
|
12
|
-
base.send :include, InstanceMethods
|
13
|
-
base.extend ClassMethods
|
14
|
-
end
|
15
|
-
|
16
|
-
module InstanceMethods
|
17
|
-
##
|
18
|
-
# Method for get only fields with errors
|
19
|
-
#
|
20
|
-
def errors_keys
|
21
|
-
errors.map { |k,v| k.to_sym }.uniq
|
22
|
-
end
|
23
|
-
end # InstanceMethods
|
24
|
-
|
25
|
-
module ClassMethods
|
26
|
-
##
|
27
|
-
# Transforms attribute key names into a more humane and localizable format, such as "First name" instead of "first_name".
|
28
|
-
#
|
29
|
-
# ==== Examples
|
30
|
-
# # Do: I18n.translate("models.person.attributes.first_name")
|
31
|
-
# Person.human_local_attribute_name("first_name") # => "First name"
|
32
|
-
#
|
33
|
-
# Specify +options+ with additional translating options.
|
34
|
-
#
|
35
|
-
def human_local_attribute_name(field, options = {})
|
36
|
-
options.reverse_merge!(:count => 1, :default => field.to_s.humanize, :scope => :models)
|
37
|
-
I18n.translate("#{self.name.underscore}.attributes.#{field}", options)
|
38
|
-
end
|
39
|
-
|
40
|
-
##
|
41
|
-
# Transform table name into a more humane and localizable format, such as "Blog Posts" instead of "BlogPost".
|
42
|
-
#
|
43
|
-
# ==== Examples
|
44
|
-
# # Do: I18n.translate("models.person.name")
|
45
|
-
# Person.human_local_name # => "Persona"
|
46
|
-
#
|
47
|
-
# Specify +options+ with additional translating options.
|
48
|
-
#
|
49
|
-
def human_local_name(options = {})
|
50
|
-
options.reverse_merge!(:count => 1, :default => self.name.humanize, :scope => :models)
|
51
|
-
I18n.translate("#{self.name.underscore}.name", options)
|
52
|
-
end
|
53
|
-
|
54
|
-
##
|
55
|
-
# Alias method for get columns names
|
56
|
-
#
|
57
|
-
def properties
|
58
|
-
columns
|
59
|
-
end
|
60
|
-
|
61
|
-
##
|
62
|
-
# Return :activerecord
|
63
|
-
#
|
64
|
-
def orm
|
65
|
-
:activerecord
|
66
|
-
end
|
67
|
-
|
68
|
-
##
|
69
|
-
# Method for perorm a full text search / sorting in ExtJS grids.
|
70
|
-
#
|
71
|
-
# For build a query you can provide for +params+:
|
72
|
-
#
|
73
|
-
# query:: word do search will be converted to "%word%"
|
74
|
-
# fields:: where you want search
|
75
|
-
# sort:: field to sort
|
76
|
-
# dir:: one of ASC/DESC
|
77
|
-
# limit:: limit your results
|
78
|
-
# start:: offset of your resluts
|
79
|
-
#
|
80
|
-
# For +query+ we mean standard adapter options such as +include+, +joins+ ...
|
81
|
-
#
|
82
|
-
# So a +ext_search+ can be:
|
83
|
-
#
|
84
|
-
# Account.ext_search({:query => "foo", fileds="name,surname,categories.name", :sort => "name",
|
85
|
-
# :dir => "asc", :limit => 50, :offset => 10 }, { :joins => :categories })
|
86
|
-
#
|
87
|
-
def ext_search(params, query={})
|
88
|
-
|
89
|
-
# We build a base struct for have some good results
|
90
|
-
result = ExtSearch.new(0, [])
|
91
|
-
|
92
|
-
# Search conditions
|
93
|
-
if params[:query].present? && params[:fields].present?
|
94
|
-
filters = params[:fields].split(",").collect { |f| "#{f} LIKE ?" }.compact
|
95
|
-
query[:conditions] = [filters.join(" OR ")].concat((1..filters.size).collect { "%#{params[:query]}%" })
|
96
|
-
end
|
97
|
-
|
98
|
-
result.count = count(query)
|
99
|
-
|
100
|
-
# Order conditions
|
101
|
-
query[:order] = params[:sort].present? && params[:dir].to_s =~ /^(asc|desc)$/i ? "#{params[:sort]} #{params[:dir]}" : nil
|
102
|
-
|
103
|
-
# Now time to limit/offset it
|
104
|
-
query[:limit] = params[:limit].to_i if params[:limit].to_i > 0
|
105
|
-
query[:offset] = params[:start].to_i if params[:start].to_i > 0
|
106
|
-
|
107
|
-
result.records = all(query)
|
108
|
-
result
|
109
|
-
end
|
110
|
-
|
111
|
-
end # ClassMethods
|
112
|
-
end # Base
|
113
|
-
|
114
|
-
##
|
115
|
-
# Here extension for Account for ActiveRecord
|
116
|
-
#
|
117
|
-
# Basically we need only to perform:
|
118
|
-
#
|
119
|
-
# * Validations (email, password, role)
|
120
|
-
# * Generate crypted_password on save
|
121
|
-
#
|
122
|
-
module Account
|
123
|
-
|
124
|
-
def self.included(base) #:nodoc:
|
125
|
-
base.send :include, Padrino::Admin::Orm::Abstract::Account
|
126
|
-
base.send :attr_accessor, :password
|
127
|
-
# Validations
|
128
|
-
base.validates_presence_of :email, :role
|
129
|
-
base.validates_presence_of :password, :if => :password_required
|
130
|
-
base.validates_presence_of :password_confirmation, :if => :password_required
|
131
|
-
base.validates_length_of :password, :within => 4..40, :if => :password_required
|
132
|
-
base.validates_confirmation_of :password, :if => :password_required
|
133
|
-
base.validates_length_of :email, :within => 3..100
|
134
|
-
base.validates_uniqueness_of :email, :case_sensitive => false
|
135
|
-
base.validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
|
136
|
-
base.validates_format_of :role, :with => /[A-Za-z]/
|
137
|
-
# Callbacks
|
138
|
-
base.before_save :generate_password
|
139
|
-
end
|
140
|
-
end # Account
|
141
|
-
end # ActiveRecord
|
142
|
-
end # Orm
|
143
|
-
end # Admin
|
144
|
-
end # Padrino
|
@@ -1,229 +0,0 @@
|
|
1
|
-
module Padrino
|
2
|
-
module Admin
|
3
|
-
module Orm
|
4
|
-
module DataMapper
|
5
|
-
##
|
6
|
-
# Here basic functions for interact with DataMapper
|
7
|
-
#
|
8
|
-
module Base
|
9
|
-
|
10
|
-
def self.included(base) #:nodoc:
|
11
|
-
base.send :include, Padrino::Admin::Orm::Abstract::Base
|
12
|
-
base.send :include, InstanceMethods
|
13
|
-
base.extend ClassMethods
|
14
|
-
end
|
15
|
-
|
16
|
-
module InstanceMethods
|
17
|
-
##
|
18
|
-
# This is an alias method to allow us to don't see deprecations
|
19
|
-
# and keep compatibility with new DataMapper versions
|
20
|
-
#
|
21
|
-
def new_record?; new?; end
|
22
|
-
|
23
|
-
##
|
24
|
-
# Returns a String, which Padrino uses for constructing an URL to this object.
|
25
|
-
# The default implementation returns this record‘s id as a String,
|
26
|
-
# or nil if this record‘s unsaved.
|
27
|
-
#
|
28
|
-
def to_param
|
29
|
-
# We can't use alias_method here, because method 'id' optimizes itself on the fly.
|
30
|
-
(id = self.id) ? id.to_s : nil # Be sure to stringify the id for routes
|
31
|
-
end
|
32
|
-
|
33
|
-
##
|
34
|
-
# Update attributes is deprecated but for compatibility with other ORM we support them.
|
35
|
-
#
|
36
|
-
def update_attributes(attributes = {})
|
37
|
-
update(attributes)
|
38
|
-
end
|
39
|
-
|
40
|
-
##
|
41
|
-
# Method for get only fields with errors
|
42
|
-
#
|
43
|
-
def errors_keys
|
44
|
-
errors.keys
|
45
|
-
end
|
46
|
-
|
47
|
-
end # InstanceMethods
|
48
|
-
|
49
|
-
module ClassMethods
|
50
|
-
##
|
51
|
-
# Transforms attribute key names into a more humane and localizable format, such as "First name" instead of "first_name".
|
52
|
-
#
|
53
|
-
# ==== Examples
|
54
|
-
# # Do: I18n.translate("models.person.attributes.first_name")
|
55
|
-
# Person.human_local_attribute_name("first_name") # => "First name"
|
56
|
-
#
|
57
|
-
# Specify +options+ with additional translating options.
|
58
|
-
#
|
59
|
-
def human_local_attribute_name(field, options = {})
|
60
|
-
options.reverse_merge!(:count => 1, :default => field.to_s.humanize, :scope => :models)
|
61
|
-
I18n.translate("#{self.name.underscore}.attributes.#{field}", options)
|
62
|
-
end
|
63
|
-
|
64
|
-
##
|
65
|
-
# Transform table name into a more humane and localizable format, such as "Blog Posts" instead of "BlogPost".
|
66
|
-
#
|
67
|
-
# ==== Examples
|
68
|
-
# # Do: I18n.translate("models.person.name")
|
69
|
-
# Person.human_local_name # => "Persona"
|
70
|
-
#
|
71
|
-
# Specify +options+ with additional translating options.
|
72
|
-
#
|
73
|
-
def human_local_name(options = {})
|
74
|
-
options.reverse_merge!(:count => 1, :default => self.name.humanize, :scope => :models)
|
75
|
-
I18n.translate("#{self.name.underscore}.name", options)
|
76
|
-
end
|
77
|
-
|
78
|
-
##
|
79
|
-
# Return the name of the Table
|
80
|
-
#
|
81
|
-
# Because in some unkown circumstances +storage_names[:default]+ give us an wrong value
|
82
|
-
# we use the class name for get the value
|
83
|
-
#
|
84
|
-
def table_name
|
85
|
-
self.name.underscore.pluralize
|
86
|
-
end
|
87
|
-
|
88
|
-
##
|
89
|
-
# Return :activerecord
|
90
|
-
#
|
91
|
-
def orm
|
92
|
-
:datamapper
|
93
|
-
end
|
94
|
-
|
95
|
-
##
|
96
|
-
# Method for perorm a full text search / sorting in ExtJS grids.
|
97
|
-
#
|
98
|
-
# For build a query you can provide for +params+:
|
99
|
-
#
|
100
|
-
# query:: word do search will be converted to "%word%"
|
101
|
-
# fields:: where you want search
|
102
|
-
# sort:: field to sort
|
103
|
-
# dir:: one of ASC/DESC
|
104
|
-
# limit:: limit your results
|
105
|
-
# start:: offset of your resluts
|
106
|
-
#
|
107
|
-
# For +query+ we mean standard adapter options such as +links+ ...
|
108
|
-
#
|
109
|
-
# So a +ext_search+ can be:
|
110
|
-
#
|
111
|
-
# Account.ext_search({:query => "foo", fileds="name,surname,categories.name", :sort => "name",
|
112
|
-
# :dir => "asc", :limit => 50, :offset => 10 }, { :links => :categories })
|
113
|
-
#
|
114
|
-
def ext_search(params, query={})
|
115
|
-
|
116
|
-
# We build a base struct for have some good results
|
117
|
-
result = ExtSearch.new(0, [])
|
118
|
-
|
119
|
-
if params[:query].present? && params[:fields].present?
|
120
|
-
# Here we build some like: ["name LIKE ?", "surname LIKE ?"]
|
121
|
-
fields = params[:fields].split(",").collect { |f| "#{f.strip.downcase} LIKE ?" }
|
122
|
-
# Here we build some like: ["name LIKE ? OR surname LIKE ?", "%foo%", "%foo%"]
|
123
|
-
query[:conditions] = [fields.join(" OR ")].concat(1.upto(fields.length).collect { "%#{params[:query]}%" })
|
124
|
-
end
|
125
|
-
|
126
|
-
# Now we can perform a count
|
127
|
-
result.count = count(query)
|
128
|
-
|
129
|
-
# First we need to sort our record but we have some problems if we sort for associated tables.
|
130
|
-
#
|
131
|
-
# see: http://www.mail-archive.com/datamapper@googlegroups.com/msg01310.html
|
132
|
-
#
|
133
|
-
# I can get these values:
|
134
|
-
#
|
135
|
-
# * accounts.name
|
136
|
-
# * accounts.posts.name
|
137
|
-
# * accounts.posts.categories.name
|
138
|
-
#
|
139
|
-
# We need to transform in some like [DataMapper::Query::Direction.new(Account.properties[:name], :asc)]
|
140
|
-
#
|
141
|
-
if params[:sort].present? && params[:dir].to_s =~ /^(asc|desc)$/i
|
142
|
-
values = params[:sort].to_s.sub(/^#{table_name}\./, "").split(".").collect(&:to_sym)
|
143
|
-
property = values.delete_at(-1) # the last value is always a property
|
144
|
-
relation = values.inject(self) do |relation, value|
|
145
|
-
raise "Unknow relation #{value} for #{relation}" unless relation.relationships[value]
|
146
|
-
relation.send(value)
|
147
|
-
end
|
148
|
-
target = relation.respond_to?(:model) ? relation.model.properties[property] : relation.properties[property]
|
149
|
-
query[:order] = [::DataMapper::Query::Direction.new(target, params[:dir].to_s.downcase.to_sym)]
|
150
|
-
end
|
151
|
-
|
152
|
-
# Now time to limit/offset it
|
153
|
-
query[:limit] = params[:limit].to_i if params[:limit].to_i > 0
|
154
|
-
query[:offset] = params[:start].to_i if params[:start].to_i > 0
|
155
|
-
|
156
|
-
# Now we can perform ording/limiting
|
157
|
-
result.records = all(query)
|
158
|
-
result
|
159
|
-
end
|
160
|
-
|
161
|
-
##
|
162
|
-
# The aim of this method is act DM as AR, so when you define a many-to-many relation like:
|
163
|
-
#
|
164
|
-
# has n, :images
|
165
|
-
# has n, :images, :through => Resource
|
166
|
-
#
|
167
|
-
# you have two new methods:
|
168
|
-
#
|
169
|
-
# images_ids
|
170
|
-
# images_ids=(*ids)
|
171
|
-
#
|
172
|
-
def has(cardinality, name, *args)
|
173
|
-
relationship = super(cardinality, name, *args)
|
174
|
-
if relationship.is_a?(::DataMapper::Associations::ManyToMany::Relationship) ||
|
175
|
-
relationship.is_a?(::DataMapper::Associations::OneToMany::Relationship)
|
176
|
-
|
177
|
-
class_eval <<-RUBY, __FILE__, __LINE__ + 1
|
178
|
-
def #{name.to_s.singular}_ids
|
179
|
-
#{name}.collect(&:id)
|
180
|
-
end
|
181
|
-
|
182
|
-
def #{name.to_s.singular}_ids=(*ids)
|
183
|
-
self.#{name} = #{relationship.child_model.name}.all(:id => ids.flatten)
|
184
|
-
end
|
185
|
-
RUBY
|
186
|
-
end
|
187
|
-
relationship
|
188
|
-
end
|
189
|
-
end # ClassMethods
|
190
|
-
end # Base
|
191
|
-
|
192
|
-
##
|
193
|
-
# Here extension for Account for MongoMapper
|
194
|
-
#
|
195
|
-
# Basically we need only to perform:
|
196
|
-
#
|
197
|
-
# * Validations (email, password, role)
|
198
|
-
# * Generate crypted_password on save
|
199
|
-
#
|
200
|
-
module Account
|
201
|
-
|
202
|
-
def self.included(base) #:nodoc:
|
203
|
-
super(base)
|
204
|
-
base.send :include, Padrino::Admin::Orm::Abstract::Account
|
205
|
-
base.send :include, ::DataMapper::Validate
|
206
|
-
base.send :attr_accessor, :password, :password_confirmation
|
207
|
-
# Properties
|
208
|
-
base.property :email, String
|
209
|
-
base.property :crypted_password, String
|
210
|
-
base.property :salt, String
|
211
|
-
base.property :role, String
|
212
|
-
# Validations
|
213
|
-
base.validates_present :email, :role
|
214
|
-
base.validates_present :password, :if => :password_required
|
215
|
-
base.validates_present :password_confirmation, :if => :password_required
|
216
|
-
base.validates_length :password, :min => 4, :max => 40, :if => :password_required
|
217
|
-
base.validates_is_confirmed :password, :if => :password_required
|
218
|
-
base.validates_length :email, :min => 3, :max => 100
|
219
|
-
base.validates_is_unique :email, :case_sensitive => false
|
220
|
-
base.validates_format :email, :with => :email_address
|
221
|
-
base.validates_format :role, :with => /[A-Za-z]/
|
222
|
-
# Callbacks
|
223
|
-
base.before :save, :generate_password
|
224
|
-
end
|
225
|
-
end # Account
|
226
|
-
end # DataMapper
|
227
|
-
end # Orm
|
228
|
-
end # Admin
|
229
|
-
end # Padrino
|