lipsiadmin 4.1.8 → 5.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +41 -2
- data/lib/access_control/authentication.rb +1 -1
- data/lib/access_control/base.rb +18 -11
- data/lib/controller/ext.rb +5 -3
- data/lib/controller/pdf_builder.rb +22 -6
- data/lib/controller/responds_to_parent.rb +1 -1
- data/lib/data_base/attachment_table.rb +0 -1
- data/lib/lipsiadmin.rb +7 -0
- data/lib/mailer/pdf_builder.rb +23 -9
- data/lib/version.rb +3 -3
- data/lib/view/helpers/backend_helper.rb +137 -97
- data/lib/view/helpers/ext/button.rb +62 -0
- data/lib/view/helpers/ext/column_model.rb +29 -23
- data/lib/view/helpers/ext/component.rb +52 -40
- data/lib/view/helpers/ext/configuration.rb +3 -2
- data/lib/view/helpers/ext/grid.rb +38 -40
- data/lib/view/helpers/ext/store.rb +12 -12
- data/lib/view/helpers/ext/templates/grid_functions.js.erb +14 -9
- data/lib/view/helpers/ext/tool_bar.rb +9 -10
- data/lib/view/helpers/ext_helper.rb +3 -2
- data/lib/view/helpers/pdf_helper.rb +45 -0
- data/lipsiadmin_generators/attachment/REMEMBER +0 -4
- data/lipsiadmin_generators/attachment/templates/migration.rb +1 -1
- data/lipsiadmin_generators/backend/templates/config/config.yml +2 -3
- data/lipsiadmin_generators/backend/templates/config/locales/backend/en.yml +2 -0
- data/lipsiadmin_generators/backend/templates/config/locales/backend/it.yml +2 -0
- data/lipsiadmin_generators/backend/templates/config/locales/models/{en.yml → account/en.yml} +0 -0
- data/lipsiadmin_generators/backend/templates/config/locales/models/{it.yml → account/it.yml} +0 -0
- data/lipsiadmin_generators/backend/templates/controllers/javascripts_controller.rb +1 -1
- data/lipsiadmin_generators/backend/templates/images/backend/association_break.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/backend/association_ok.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/backend/categories.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/charts.swf +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/sizer/se-handle.gif → default/button/arrow.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/btn.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/group-cs.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/grid/grid-blue-split.gif → default/button/group-lr.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/grid/arrow-right-white.gif → default/button/group-tb.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow-b-noline.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow-b.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow-bo.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/grid/grid3-hrow.gif → default/button/s-arrow-noline.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow-o.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/s-arrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/form/checkbox.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/form/radio.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/form/trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/group-collapse.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/group-expand.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/refresh.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/sort-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/panel/tool-sprites.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/panel/tools-sprites-trans.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/qtip/tip-anchor-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/shadow-c.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/slider/slider-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/slider/slider-thumb.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/slider/slider-v-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/slider/slider-v-thumb.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/grid/arrow-left-white.gif → default/toolbar/more.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/toolbar/tb-xl-btn-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/{slate/panel/left-right.gif → default/toolbar/tb-xl-sep.gif} +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/left-corners.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/left-right.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/left-right.psd +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/right-corners.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/top-bottom.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/window/top-bottom.psd +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/expressinstall.swf +0 -0
- data/lipsiadmin_generators/backend/templates/javascripts/ext.js +97 -76
- data/lipsiadmin_generators/backend/templates/javascripts/prototype.js +14 -12
- data/lipsiadmin_generators/backend/templates/models/notifier.rb +1 -1
- data/lipsiadmin_generators/backend/templates/stylesheets/backend.css +11 -2
- data/lipsiadmin_generators/backend/templates/stylesheets/ext.css +1070 -546
- data/lipsiadmin_generators/backend/templates/stylesheets/login.css +1 -0
- data/lipsiadmin_generators/backend/templates/views/backend/accounts/index.rjs +1 -0
- data/lipsiadmin_generators/backend/templates/views/backend/base/index.html.haml +7 -4
- data/lipsiadmin_generators/backend/templates/views/javascripts/backend.js.erb +203 -143
- data/lipsiadmin_generators/pdf/pdf_generator.rb +1 -4
- data/lipsiadmin_generators/pdf/templates/view.html.haml +11 -6
- data/lipsiadmin_generators/state_session/state_session_generator.rb +2 -0
- data/resources/javascripts/ux.js +16 -17
- data/resources/javascripts/ux.min.js +2 -0
- data/resources/pd4ml/ruby/Pd4Ruby.class +0 -0
- data/resources/pd4ml/ruby/Pd4Ruby.java +277 -31
- data/tasks/lipsiadmin_tasks.rake +18 -1
- metadata +32 -124
- data/lipsiadmin_generators/backend/templates/images/ext/default/box/tb-slate.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/btn-arrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/button/btn-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/default/grid/Thumbs.db +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/button/btn-arrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/button/btn-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/editor/tb-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/checkbox.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/clear-trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/date-trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/radio.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/search-trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/trigger-tpl.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/form/trigger.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/gradient-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/col-move-bottom.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/col-move-top.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/footer-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid-blue-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid-hrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid-split.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid-vista-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid3-hd-btn.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid3-hrow-over.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid3-special-col-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/grid3-special-col-sel-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/group-expand-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/mso-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-first-disabled.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-first.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-last-disabled.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-last.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-next-disabled.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-next.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-prev-disabled.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/page-prev.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/refresh.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/row-over.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/row-sel.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/sort_asc.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/grid/sort_desc.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/checked.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/group-checked.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/item-over - Copy.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/item-over.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/menu-parent.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/menu.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/menu/unchecked.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/corners-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/light-hd.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/tool-sprite-tpl.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/tool-sprites.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/tools-sprites-trans.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/top-bottom.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/top-bottom.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/white-corners-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/white-left-right.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/panel/white-top-bottom.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/progress/progress-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/qtip/bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/qtip/close.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/qtip/tip-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/s.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/shared/glass-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/shared/hd-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/shared/left-btn.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/shared/right-btn.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/e-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/e-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/ne-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/ne-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/nw-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/nw-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/s-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/s-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/se-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/square.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/sw-handle-dark.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/sizer/sw-handle.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/slider/slider-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/slider/slider-thumb.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/slider/slider-v-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/slider/slider-v-thumb.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/scroll-left.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/scroll-right.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/scroller-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-btm-inactive-left-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-btm-inactive-right-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-btm-left-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-btm-right-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-close.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-strip-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-strip-bg.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tab-strip-btm-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tabs/tabs-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/bg-menu.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/btn-arrow-light.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/btn-arrow.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/btn-over-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/gray-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/tb-bg.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/toolbar/tb-btn-sprite.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/tree/arrows.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/icon-error.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/icon-info.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/icon-question.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/icon-warning.gif +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/left-corners.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/left-right.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/right-corners.png +0 -0
- data/lipsiadmin_generators/backend/templates/images/ext/slate/window/top-bottom.png +0 -0
- data/lipsiadmin_generators/backend/templates/stylesheets/backend-slate.css +0 -105
- data/lipsiadmin_generators/backend/templates/stylesheets/ext-slate.css +0 -241
@@ -0,0 +1,62 @@
|
|
1
|
+
module Lipsiadmin
|
2
|
+
module Ext
|
3
|
+
# Generate a new Ext.Button
|
4
|
+
#
|
5
|
+
# This component is usefull for ex in toolbars
|
6
|
+
#
|
7
|
+
# # Generates:
|
8
|
+
# #{
|
9
|
+
# # buttons: [{
|
10
|
+
# # disabled: false,
|
11
|
+
# # text: Backend.locale.buttons.add,
|
12
|
+
# # id: "add",
|
13
|
+
# # cls: "x-btn-text-icon add"
|
14
|
+
# # },{
|
15
|
+
# # disabled: true,
|
16
|
+
# # text: Backend.locale.buttons.edit,
|
17
|
+
# # id: "edit",
|
18
|
+
# # cls: "x-btn-text-icon edit"
|
19
|
+
# # },{
|
20
|
+
# # disabled: true,
|
21
|
+
# # text: Backend.locale.buttons.remove,
|
22
|
+
# # id: "remove",
|
23
|
+
# # cls: "x-btn-text-icon remove"
|
24
|
+
# # },{
|
25
|
+
# # disabled: false,
|
26
|
+
# # menu: [{
|
27
|
+
# # text: "Test Me"
|
28
|
+
# # },{
|
29
|
+
# # text: "IM a sub Menu"
|
30
|
+
# # }],
|
31
|
+
# # text: Backend.locale.buttons.print,
|
32
|
+
# # id: "print",
|
33
|
+
# # cls: "x-btn-text-icon print"
|
34
|
+
# # }]
|
35
|
+
# #}
|
36
|
+
# tbar.add_button :text => "Backend.locale.buttons.add".to_l, :id => "add", :disabled => false, :cls => "x-btn-text-icon add", :handler => "add".to_l
|
37
|
+
# tbar.add_button :text => "Backend.locale.buttons.edit".to_l, :id => "edit", :disabled => true, :cls => "x-btn-text-icon edit", :handler => "edit".to_l
|
38
|
+
# tbar.add_button :text => "Backend.locale.buttons.remove".to_l, :id => "remove", :disabled => true, :cls => "x-btn-text-icon remove", :handler => "remove".to_l
|
39
|
+
# tbar.add_button :text => "Backend.locale.buttons.print".to_l, :id => "print", :disabled => false, :cls => "x-btn-text-icon print" do |menu|
|
40
|
+
# menu.add_button :text => "Test Me"
|
41
|
+
# menu.add_button :text => "IM a sub Menu"
|
42
|
+
# end
|
43
|
+
#
|
44
|
+
class Button < Component
|
45
|
+
|
46
|
+
def initialize(options={}, &block)#:nodoc:
|
47
|
+
super("Ext.Button", options)
|
48
|
+
yield self if block_given?
|
49
|
+
end
|
50
|
+
|
51
|
+
# Add new Button to the menu of this one
|
52
|
+
#
|
53
|
+
# # Generates: { handler: show, text: "Add", other: "...", icon: "..." }
|
54
|
+
# add_button :text => "Add", :handler => "show".to_l, :icon => "...", :other => "..."
|
55
|
+
#
|
56
|
+
def add_button(options, &block)
|
57
|
+
config[:menu] ||= []
|
58
|
+
config[:menu] << (options.is_a?(String) ? options : Button.new(options, &block).config)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -35,20 +35,24 @@ module Lipsiadmin
|
|
35
35
|
|
36
36
|
# This add automatically fields from an array
|
37
37
|
def fields(fields)
|
38
|
-
fields.each { |options|
|
38
|
+
fields.each { |options| add_column(nil, nil, options); }
|
39
39
|
end
|
40
40
|
|
41
41
|
# Add columns to a Ext.grid.ColumnModel
|
42
42
|
#
|
43
43
|
# # Generates: { header: "Created At", dataIndex: "accounts.datetime", sortable => true }
|
44
|
-
# add "Created At", "accounts.datetime", :sortable =>
|
44
|
+
# add "Created At", "accounts.datetime", :sortable => true
|
45
45
|
#
|
46
46
|
# You can pass :renderer
|
47
47
|
#
|
48
48
|
# # Generates: Ext.util.Format.dateRenderer()
|
49
|
+
# :render => :time_to_date # This render a datetime to a date
|
50
|
+
# # Generates: Ext.util.Format.dateRenderer()
|
49
51
|
# :renderer => :date
|
50
52
|
# # Generates: Ext.util.Format.dateTimeRenderer()
|
51
53
|
# :renderer => :datetime
|
54
|
+
# # Generates: Ext.util.Format.percentage
|
55
|
+
# :renderer => :percentage
|
52
56
|
# # Generates: Ext.util.Format.eurMoney
|
53
57
|
# :renderer => :eur_money
|
54
58
|
# # Generates: Ext.util.Format.usMoney
|
@@ -95,37 +99,39 @@ module Lipsiadmin
|
|
95
99
|
# :textfield => Ext.form.TextField
|
96
100
|
# :timefield => Ext.form.TimeField
|
97
101
|
#
|
98
|
-
def
|
102
|
+
def add_column(name=nil, data=nil, options={})
|
99
103
|
options[:header] = name if name
|
100
104
|
options[:dataIndex] = data if data
|
101
105
|
|
102
106
|
if options[:editor]
|
103
|
-
xtype = options[:editor]
|
107
|
+
xtype = options[:editor][:xtype]
|
104
108
|
case xtype
|
105
109
|
when :checkbox then options.delete(:editor); options.merge!(:checkbox => true)
|
106
|
-
when :combo then options.merge!(:editor =>
|
107
|
-
when :datefield then options.merge!(:editor =>
|
108
|
-
when :numberfield then options.merge!(:editor =>
|
109
|
-
when :radio then options.merge!(:editor =>
|
110
|
-
when :textarea then options.merge!(:editor =>
|
111
|
-
when :textfield then options.merge!(:editor =>
|
112
|
-
when :timefield then options.merge!(:editor =>
|
113
|
-
when :datetimefield then options.merge!(:editor =>
|
110
|
+
when :combo then options.merge!(:editor => "new Ext.form.ComboBox(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
|
111
|
+
when :datefield then options.merge!(:editor => "new Ext.form.DateField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
|
112
|
+
when :numberfield then options.merge!(:editor => "new Ext.form.NumberField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
|
113
|
+
when :radio then options.merge!(:editor => "new Ext.form.Radio(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
|
114
|
+
when :textarea then options.merge!(:editor => "new Ext.form.TextArea(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
|
115
|
+
when :textfield then options.merge!(:editor => "new Ext.form.TextField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
|
116
|
+
when :timefield then options.merge!(:editor => "new Ext.form.TimeField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
|
117
|
+
when :datetimefield then options.merge!(:editor => "new Ext.form.DateTimeField(#{Configuration.new(options[:editor]).to_s(3)})".to_l)
|
114
118
|
end
|
115
119
|
end
|
116
120
|
|
117
121
|
case options[:renderer]
|
118
|
-
when :
|
119
|
-
when :
|
120
|
-
when :
|
121
|
-
when :
|
122
|
-
when :
|
123
|
-
when :
|
124
|
-
when :
|
125
|
-
when :
|
126
|
-
when :
|
127
|
-
when :
|
128
|
-
when :
|
122
|
+
when :time_to_date then options.merge!(:renderer => "Ext.util.Format.dateRenderer()".to_l)
|
123
|
+
when :date then options.merge!(:renderer => "Ext.util.Format.dateRenderer()".to_l)
|
124
|
+
when :datetime then options.merge!(:renderer => "Ext.util.Format.dateTimeRenderer()".to_l)
|
125
|
+
when :percentage then options.merge!(:renderer => "Ext.util.Format.percentage".to_l)
|
126
|
+
when :eur_money then options.merge!(:renderer => "Ext.util.Format.eurMoney".to_l)
|
127
|
+
when :us_money then options.merge!(:renderer => "Ext.util.Format.usMoney".to_l)
|
128
|
+
when :boolean then options.merge!(:renderer => "Ext.util.Format.boolRenderer".to_l)
|
129
|
+
when :capitalize then options.merge!(:renderer => "Ext.util.Format.capitalize".to_l)
|
130
|
+
when :file_size then options.merge!(:renderer => "Ext.util.Format.fileSize".to_l)
|
131
|
+
when :downcase then options.merge!(:renderer => "Ext.util.Format.lowercase".to_l)
|
132
|
+
when :trim then options.merge!(:renderer => "Ext.util.Format.trim".to_l)
|
133
|
+
when :undef then options.merge!(:renderer => "Ext.util.Format.undef".to_l)
|
134
|
+
when :upcase then options.merge!(:renderer => "Ext.util.Format.uppercase".to_l)
|
129
135
|
end
|
130
136
|
|
131
137
|
raise ComponentError, "You must provide header and dataIndex for generate a column model" if options[:header].blank? ||
|
@@ -22,7 +22,7 @@ module Lipsiadmin#:nodoc:
|
|
22
22
|
@var = options.delete(:var)
|
23
23
|
@config = Configuration.new(options)
|
24
24
|
@before, @after = [], []
|
25
|
-
|
25
|
+
@items = {}
|
26
26
|
if self.class == Component && block_given?
|
27
27
|
yield self
|
28
28
|
end
|
@@ -47,12 +47,22 @@ module Lipsiadmin#:nodoc:
|
|
47
47
|
#
|
48
48
|
def get_var
|
49
49
|
# I will nillify obj if they are blank
|
50
|
-
@var = nil if @var
|
51
|
-
@config.delete(:var) if @config[:var]
|
50
|
+
@var = nil if @var.blank?
|
51
|
+
@config.delete(:var) if @config[:var].blank?
|
52
|
+
|
52
53
|
# Return a correct var
|
53
54
|
current_var = (@var || @config[:var] || build_var)
|
54
55
|
@prefix.to_s + current_var.to_s
|
55
56
|
end
|
57
|
+
|
58
|
+
# Define the title of the component.
|
59
|
+
#
|
60
|
+
# Every component can have a title, because in Lipsiadmin we use it
|
61
|
+
# as a "pagetitle", but if you need it as a config you can provide global = false
|
62
|
+
#
|
63
|
+
def title(title, global=true)
|
64
|
+
global ? (before << "Backend.app.setTitle(#{title.to_json});") : config[:title] = title
|
65
|
+
end
|
56
66
|
|
57
67
|
# Write the the configuration of object from an hash
|
58
68
|
#
|
@@ -60,17 +70,17 @@ module Lipsiadmin#:nodoc:
|
|
60
70
|
@config = Configuration.new(options)
|
61
71
|
end
|
62
72
|
|
63
|
-
#
|
73
|
+
# Return the configuration hash
|
64
74
|
#
|
65
75
|
def config
|
66
76
|
@config
|
67
77
|
end
|
68
78
|
|
69
|
-
def method_missing(method,
|
70
|
-
if method.to_s
|
71
|
-
@config[method.to_s.gsub(
|
79
|
+
def method_missing(method, arguments=nil, &block)#:nodoc:
|
80
|
+
if method.to_s =~ /^get_/
|
81
|
+
@config[method.to_s.gsub(/^get_/, "").to_sym]
|
72
82
|
else
|
73
|
-
add_object(method,
|
83
|
+
add_object(method, arguments)
|
74
84
|
end
|
75
85
|
end
|
76
86
|
|
@@ -104,44 +114,53 @@ module Lipsiadmin#:nodoc:
|
|
104
114
|
# # new();
|
105
115
|
# # Ext.Msg.alert("Hello", "world");
|
106
116
|
# # });
|
107
|
-
#
|
108
117
|
# grid.on :dblclick do |p|
|
109
118
|
# p.call "edit"
|
110
119
|
# p.call "new"
|
111
120
|
# p.ext_alert "Hello", "world"
|
112
121
|
# end
|
122
|
+
#
|
113
123
|
def on(event, function=nil, scope=nil, &block)
|
114
124
|
# Remove old handlers
|
115
|
-
|
116
|
-
scope = ", #{
|
125
|
+
un(event)
|
126
|
+
scope = ", #{scope.to_l}" unless scope.blank?
|
117
127
|
if function
|
118
128
|
after << "#{get_var}.on(#{event.to_json}, #{function}#{scope});"
|
119
129
|
else
|
120
130
|
generator = ActionView::Helpers::PrototypeHelper::JavaScriptGenerator.new(self, &block)
|
121
|
-
after << "#{get_var}.on(#{event.to_json}, function() { #{generator.to_s.gsub("\n", "\n ")}\n}#{scope});"
|
131
|
+
after << "#{get_var}.on(#{event.to_json}, function() { \n #{generator.to_s.gsub("\n", "\n ")}\n}#{scope});"
|
122
132
|
end
|
123
133
|
end
|
124
|
-
alias_method :add_listener, :on
|
125
134
|
|
126
135
|
# Remove a listener
|
136
|
+
#
|
137
|
+
# Example: grid.un(:dblclick)
|
127
138
|
#
|
128
|
-
|
129
|
-
|
130
|
-
|
139
|
+
def un(event)
|
140
|
+
found = @after.delete_if { |s| s.start_with?("#{get_var}.on(#{event.to_json}") if s.is_a?(String) }
|
141
|
+
after << "#{get_var}.un(#{event.to_json})" unless found
|
131
142
|
end
|
132
143
|
|
133
|
-
# Generates
|
144
|
+
# Generates and add new Component for generate on the fly ExtJs Objects
|
134
145
|
#
|
135
146
|
# Examples:
|
136
147
|
#
|
137
148
|
# # Generates:
|
138
|
-
# # var
|
139
|
-
# #
|
140
|
-
# #
|
141
|
-
#
|
149
|
+
# # var panel = new Ext.Panel({
|
150
|
+
# # id: 'testPanel',
|
151
|
+
# # region: 'center',
|
152
|
+
# # ...
|
153
|
+
# # })
|
154
|
+
# # mycmp.add(panel)
|
155
|
+
# #
|
156
|
+
# mycmp.add "Ext.Panel" do |panel|
|
157
|
+
# panel.id "testPanel",
|
158
|
+
# panel.region :center
|
159
|
+
# ...
|
160
|
+
# end
|
142
161
|
#
|
143
|
-
def
|
144
|
-
Component.new(klass, options, &block)
|
162
|
+
def add(klass, options={}, &block)
|
163
|
+
add_object(Component.new(klass, options.merge(:prefix => get_var), &block))
|
145
164
|
end
|
146
165
|
|
147
166
|
# Used by ActionView::Helpers::PrototypeHelper::JavaScriptGenerator
|
@@ -149,31 +168,23 @@ module Lipsiadmin#:nodoc:
|
|
149
168
|
yield
|
150
169
|
end
|
151
170
|
|
152
|
-
|
153
171
|
# Returns the javascript for current component
|
154
|
-
#
|
172
|
+
#
|
155
173
|
# # Generates: var rowSelectionModel = Ext.grid.RowSelectionModel();
|
156
|
-
# Component.new("Ext.grid.RowSelectionModel")
|
174
|
+
# Component.new("Ext.grid.RowSelectionModel").to_s
|
157
175
|
#
|
158
|
-
def to_s
|
159
|
-
script = []
|
160
|
-
|
161
|
-
|
162
|
-
|
176
|
+
def to_s(options={})
|
177
|
+
script = returning [] do |script|
|
178
|
+
script << @before.uniq.compact.join("\n\n")
|
179
|
+
script << "var #{get_var} = new #{@klass}(#{config.to_s});"
|
180
|
+
script << @after.uniq.compact.join("\n\n")
|
181
|
+
end
|
163
182
|
script.delete_if { |s| s.blank? }.join("\n\n")
|
164
183
|
end
|
165
184
|
|
166
185
|
def raise_error(error)#:nodoc:
|
167
186
|
raise ComponentError, error
|
168
187
|
end
|
169
|
-
|
170
|
-
# Returns an object whose <tt>to_json</tt> evaluates to +code+. Use this to pass a literal JavaScript
|
171
|
-
# expression as an argument to another JavaScriptGenerator method.
|
172
|
-
#
|
173
|
-
def literal(code)
|
174
|
-
ActiveSupport::JSON::Variable.new(code.to_s)
|
175
|
-
end
|
176
|
-
alias_method :l, :literal
|
177
188
|
|
178
189
|
private
|
179
190
|
def render_javascript(template, assigns)
|
@@ -187,7 +198,8 @@ module Lipsiadmin#:nodoc:
|
|
187
198
|
object.prefix = get_var
|
188
199
|
@before.delete_if { |b| b.start_with?("var #{object.get_var} = new") }
|
189
200
|
@before << object.to_s
|
190
|
-
@config[name.to_sym] =
|
201
|
+
@config[name.to_sym] = object.get_var.to_l
|
202
|
+
@items.merge!({ name.to_s.to_sym => object })
|
191
203
|
else
|
192
204
|
@config[name.to_sym] = object
|
193
205
|
end
|
@@ -14,9 +14,10 @@ module Lipsiadmin
|
|
14
14
|
# Optionally you can specify the indentation spaces.
|
15
15
|
def to_s(indent=1)
|
16
16
|
return if self.empty?
|
17
|
-
i = ("
|
17
|
+
i = (" "*indent)
|
18
18
|
s = self.size > 0 ? "\n" : " "
|
19
|
-
"{#{s}" + self.
|
19
|
+
r = "{#{s}" + self.collect { |k,v| "#{i*2}#{k}: #{s(v)}" if k != :var }.join(",#{s}") + "#{s}#{i if i.size > 1}}"
|
20
|
+
return r =~ /\{\s*\}/ ? "" : r
|
20
21
|
end
|
21
22
|
|
22
23
|
private
|
@@ -27,7 +27,7 @@ module Lipsiadmin
|
|
27
27
|
# grid.base_path "/backend/posts"
|
28
28
|
# grid.forgery_protection_token request_forgery_protection_token
|
29
29
|
# grid.authenticity_token form_authenticity_token
|
30
|
-
# grid.tbar :default
|
30
|
+
# grid.tbar :default # or [:add, :edit, :delete] or [:edit, :delete]
|
31
31
|
# grid.store do |store|
|
32
32
|
# store.url "/backend/posts.json"
|
33
33
|
# store.fields @column_store.store_fields
|
@@ -52,20 +52,20 @@ module Lipsiadmin
|
|
52
52
|
def initialize(options={}, &block)#:nodoc:
|
53
53
|
# Call Super Class for initialize configuration
|
54
54
|
@editable = options.delete(:editable)
|
55
|
-
|
56
|
-
super("Ext.grid.#{@editable ? 'EditorGridPanel' : 'GridPanel' }", options)
|
55
|
+
super("Ext.grid.#{@editable ? 'EditorGridPanel' : 'GridPanel' }", { :plugins => [] }.merge(options))
|
57
56
|
|
58
57
|
# Write default configuration if not specified
|
59
58
|
config[:plugins] ||= []
|
60
59
|
viewConfig :forceFit => true
|
61
|
-
clicksToEdit 1
|
62
60
|
border false
|
63
61
|
bodyBorder false
|
62
|
+
clicksToEdit 1
|
64
63
|
region "center"
|
65
64
|
sm :checkbox
|
66
|
-
add_plugin l("new Ext.grid.Search()")
|
67
65
|
view :default
|
68
66
|
render true
|
67
|
+
config[:plugins] << "new Ext.grid.Search()".to_l
|
68
|
+
|
69
69
|
# We need to add a setTimeout because, we destroy
|
70
70
|
# the grid before loading a new page/js.
|
71
71
|
on(:dblclick) do |p|
|
@@ -88,29 +88,14 @@ module Lipsiadmin
|
|
88
88
|
#
|
89
89
|
def sm(object)
|
90
90
|
selmodel = case object
|
91
|
-
when :default then Component.new("Ext.grid.CheckboxSelectionModel")
|
92
|
-
when :checkbox then Component.new("Ext.grid.CheckboxSelectionModel")
|
93
|
-
when :row then Component.new("Ext.grid.RowSelectionModel")
|
91
|
+
when :default then Component.new("Ext.grid.CheckboxSelectionModel", :prefix => get_var)
|
92
|
+
when :checkbox then Component.new("Ext.grid.CheckboxSelectionModel", :prefix => get_var)
|
93
|
+
when :row then Component.new("Ext.grid.RowSelectionModel", :prefix => get_var)
|
94
94
|
else object
|
95
95
|
end
|
96
96
|
add_object(:sm, selmodel)
|
97
97
|
end
|
98
98
|
|
99
|
-
# Define the title of the grid
|
100
|
-
def title(title, global=true)
|
101
|
-
global ? (before << "Backend.app.setTitle(#{title.to_json});") : config[:title] = title
|
102
|
-
end
|
103
|
-
|
104
|
-
# Assign plugins for the current grid
|
105
|
-
def plugins(plugins)
|
106
|
-
config[:plugins] = plugins
|
107
|
-
end
|
108
|
-
|
109
|
-
# Add a single plugin to the grid plugins
|
110
|
-
def add_plugin(plugins)
|
111
|
-
config[:plugins] << plugins
|
112
|
-
end
|
113
|
-
|
114
99
|
# Generate or set a new Ext.Toolbar
|
115
100
|
# You can pass tbar :default options that will create
|
116
101
|
# defaults buttons for add, edit and remove records, it's generate also
|
@@ -142,12 +127,27 @@ module Lipsiadmin
|
|
142
127
|
# tbar :default
|
143
128
|
#
|
144
129
|
def tbar(object=nil, &block)
|
145
|
-
tbar = object.is_a?(ToolBar) ? object : ToolBar.new
|
146
|
-
if object == :default
|
147
|
-
tbar.
|
148
|
-
tbar.
|
149
|
-
tbar.
|
150
|
-
@
|
130
|
+
tbar = object.is_a?(ToolBar) ? object : ToolBar.new(:prefix => get_var)
|
131
|
+
if object == :default || object == :all
|
132
|
+
tbar.add_button :text => "Backend.locale.buttons.add".to_l, :id => "add", :disabled => false, :cls => "x-btn-text-icon add", :handler => "add".to_l
|
133
|
+
tbar.add_button :text => "Backend.locale.buttons.edit".to_l, :id => "edit", :disabled => true, :cls => "x-btn-text-icon edit", :handler => "edit".to_l
|
134
|
+
tbar.add_button :text => "Backend.locale.buttons.remove".to_l, :id => "remove", :disabled => true, :cls => "x-btn-text-icon remove", :handler => "remove".to_l
|
135
|
+
@ttbar_add, @ttbar_edit, @ttbar_delete = true, true, true
|
136
|
+
end
|
137
|
+
if object.is_a?(Array)
|
138
|
+
object.each do |button|
|
139
|
+
case button
|
140
|
+
when :add
|
141
|
+
tbar.add_button :text => "Backend.locale.buttons.add".to_l, :id => "add", :disabled => false, :cls => "x-btn-text-icon add", :handler => "add".to_l
|
142
|
+
@ttbar_add = true
|
143
|
+
when :edit
|
144
|
+
tbar.add_button :text => "Backend.locale.buttons.edit".to_l, :id => "edit", :disabled => true, :cls => "x-btn-text-icon edit", :handler => "edit".to_l
|
145
|
+
@ttbar_edit = true
|
146
|
+
when :delete
|
147
|
+
tbar.add_button :text => "Backend.locale.buttons.remove".to_l, :id => "remove", :disabled => true, :cls => "x-btn-text-icon remove", :handler => "remove".to_l
|
148
|
+
@ttbar_delete = true
|
149
|
+
end
|
150
|
+
end
|
151
151
|
end
|
152
152
|
yield tbar if block_given?
|
153
153
|
add_object(:tbar, tbar)
|
@@ -164,7 +164,7 @@ module Lipsiadmin
|
|
164
164
|
# bbar :pageSize => params[:limit], :store => store.get_var, displayInfo: true
|
165
165
|
#
|
166
166
|
def bbar(object=nil, &block)
|
167
|
-
bbar = object.is_a?(Hash) ? Component.new("Ext.PagingToolbar", object) : object
|
167
|
+
bbar = object.is_a?(Hash) ? Component.new("Ext.PagingToolbar", object.merge(:prefix => get_var)) : object
|
168
168
|
add_object(:bbar, bbar)
|
169
169
|
end
|
170
170
|
|
@@ -180,8 +180,8 @@ module Lipsiadmin
|
|
180
180
|
#
|
181
181
|
def view(object=nil, &block)
|
182
182
|
view = case object
|
183
|
-
when :default then Component.new("Ext.grid.GroupingView", { :forceFit => true })
|
184
|
-
when Hash then Component.new("Ext.grid.GroupingView", { :forceFit => true }.merge(object))
|
183
|
+
when :default then Component.new("Ext.grid.GroupingView", { :forceFit => true, :prefix => get_var })
|
184
|
+
when Hash then Component.new("Ext.grid.GroupingView", { :forceFit => true, :prefix => get_var }.merge(object))
|
185
185
|
else object
|
186
186
|
end
|
187
187
|
add_object(:view, view)
|
@@ -189,7 +189,7 @@ module Lipsiadmin
|
|
189
189
|
|
190
190
|
# Generate or set a new Ext.data.GroupingStore
|
191
191
|
def store(object=nil, &block)
|
192
|
-
store = object.is_a?(Store) ? object : Store.new(&block)
|
192
|
+
store = object.is_a?(Store) ? object : Store.new(:prefix => get_var, &block)
|
193
193
|
add_object(:store, store)
|
194
194
|
end
|
195
195
|
|
@@ -199,7 +199,7 @@ module Lipsiadmin
|
|
199
199
|
if config[:sm] && before.find { |js| js.start_with?("var #{config[:sm]} = new Ext.grid.CheckboxSelectionModel") }
|
200
200
|
options[:columns] << config[:sm]
|
201
201
|
end
|
202
|
-
cm = object.is_a?(ColumnModel) ? value : ColumnModel.new(options, &block)
|
202
|
+
cm = object.is_a?(ColumnModel) ? value : ColumnModel.new(options.merge(:prefix => get_var), &block)
|
203
203
|
add_object(:cm, cm)
|
204
204
|
end
|
205
205
|
|
@@ -255,15 +255,15 @@ module Lipsiadmin
|
|
255
255
|
def get_selected(data=:id)
|
256
256
|
raise_error "No Column Selection Model Defined" if config[:sm].blank?
|
257
257
|
if data.to_sym == :id
|
258
|
-
|
258
|
+
"#{config[:sm]}.getSelected().id".to_l
|
259
259
|
else
|
260
|
-
|
260
|
+
"#{config[:sm]}.getSelected().data[#{data.to_json}]"
|
261
261
|
end
|
262
262
|
end
|
263
263
|
|
264
264
|
# Return the javascript for create a new Ext.grid.GridPanel
|
265
265
|
def to_s
|
266
|
-
if @
|
266
|
+
if @ttbar_add || @ttbar_edit || @ttbar_delete
|
267
267
|
raise_error "You must provide the base_path for autobuild toolbar." if @base_path.blank? && @new_path.blank? && @edit_path.blank? && @destroy_path.blank?
|
268
268
|
raise_error "You must provide the new_path for autobuild button new of toolbar." if @base_path.blank? && @new_path.blank?
|
269
269
|
raise_error "You must provide the edit_path for autobuild button edit of toolbar." if @base_path.blank? && @edit_path.blank?
|
@@ -275,9 +275,7 @@ module Lipsiadmin
|
|
275
275
|
raise_error "You must provide the store." if config[:store].blank?
|
276
276
|
end
|
277
277
|
|
278
|
-
|
279
|
-
after << render_javascript(:grid_functions, :var => get_var, :store => config[:store], :sm => config[:sm], :tbar => config[:tbar], :editable => @editable)
|
280
|
-
end
|
278
|
+
after << render_javascript(:grid_functions, :var => get_var, :store => config[:store], :sm => config[:sm], :tbar => config[:tbar], :editable => @editable)
|
281
279
|
|
282
280
|
if config[:store] && @render
|
283
281
|
after << "#{config[:store]}.on('beforeload', function(){ Backend.app.mask(); });"
|