admix 0.23.1 → 0.24.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +7 -0
  2. data/app/assets/javascripts/admix/application.js.coffee +30 -2
  3. data/app/assets/stylesheets/admix/application.css +6 -1
  4. data/app/assets/stylesheets/admix/wice_grid.css.scss +143 -0
  5. data/app/controllers/admix/inherited_controller.rb +13 -34
  6. data/app/controllers/admix/registrations_controller.rb +2 -0
  7. data/app/controllers/admix/rest_controller.rb +46 -0
  8. data/app/helpers/admix/tab.rb +33 -0
  9. data/app/helpers/admix_helper.rb +76 -0
  10. data/app/views/admix/inherited/_actions.haml +7 -0
  11. data/app/views/admix/inherited/_column_actions.haml +3 -0
  12. data/app/views/admix/inherited/_empty_grid.haml +3 -0
  13. data/app/views/admix/inherited/_form_config.haml +0 -0
  14. data/app/views/admix/inherited/_grid.haml +5 -0
  15. data/app/views/admix/inherited/_grid_actions.haml +1 -0
  16. data/app/views/admix/inherited/_grid_columns.haml +11 -0
  17. data/app/views/admix/inherited/edit.html.haml +3 -3
  18. data/app/views/admix/inherited/form.html.haml +52 -0
  19. data/app/views/admix/inherited/index.html.haml +3 -5
  20. data/app/views/admix/inherited/new.html.haml +3 -3
  21. data/app/views/admix/inherited/show.html.haml +3 -5
  22. data/app/views/admix/rest/_actions.haml +7 -0
  23. data/app/views/admix/rest/_column_actions.haml +3 -0
  24. data/app/views/admix/rest/_empty_grid.haml +3 -0
  25. data/app/views/admix/rest/_form_config.haml +0 -0
  26. data/app/views/admix/rest/_grid.haml +5 -0
  27. data/app/views/admix/rest/_grid_actions.haml +1 -0
  28. data/app/views/admix/rest/_grid_columns.haml +11 -0
  29. data/app/views/admix/rest/edit.html.haml +5 -0
  30. data/app/views/admix/rest/form.html.haml +50 -0
  31. data/app/views/admix/rest/index.html.haml +3 -0
  32. data/app/views/admix/rest/new.html.haml +3 -0
  33. data/app/views/admix/rest/show.html.haml +3 -0
  34. data/app/views/layouts/admix/{admix.html.haml → admix.haml} +2 -2
  35. data/app/views/layouts/admix/{login.html.haml → login.haml} +1 -1
  36. data/config/admix_navigation.rb +34 -49
  37. data/config/application.rb +0 -2
  38. data/config/initializers/admix.rb +0 -3
  39. data/config/initializers/wice_grid_config.rb +142 -0
  40. data/config/locales/admix.pt-BR.yml +10 -3
  41. data/config/locales/wice_grid.yml +502 -0
  42. data/lib/admix.rb +1 -3
  43. data/lib/admix/engine.rb +28 -0
  44. data/lib/admix/version.rb +2 -2
  45. metadata +51 -71
  46. data/app/views/admix/inherited/_form.html.haml +0 -14
  47. data/app/views/admix/inherited/_table_actions.html.haml +0 -3
  48. data/config/initializers/locale.rb +0 -1
  49. data/lib/admix/table-actions.rb +0 -17
@@ -0,0 +1,7 @@
1
+ .well
2
+ = link_to "#{t('admix.crud.new.link')} " + t("#{@collection_name}.#{@collection_name.singularize}"), new_resource_url, class: 'btn'
3
+ = link_to t('admix.crud.list.title', resources: t("#{@collection_name}.#{@collection_name}")), collection_url, class: 'btn'
4
+ - if not ['index', 'edit'].include? params[:action]
5
+ - if not resource.nil? and not resource.new_record?
6
+ = link_edit(resource, t('admix.crud.edit.link'), 'btn-primary')
7
+ = link_destroy(resource, t('admix.crud.destroy.link'), 'btn-danger')
@@ -0,0 +1,3 @@
1
+ - grid.column do |obj|
2
+ - content_tag :div do
3
+ = render partial: 'grid_actions', locals: {obj:obj}
@@ -0,0 +1,3 @@
1
+ .well
2
+ = t('admix.alerts.no_records_found')
3
+ = link_to(t('admix.links.new_record'), new_resource_url) + '.'
File without changes
@@ -0,0 +1,5 @@
1
+ = grid(@grid, show_filters: :when_filtered) do |grid|
2
+
3
+ - grid.blank_slate partial: "empty_grid"
4
+
5
+ = render partial: 'grid_columns', locals: {grid: grid}
@@ -0,0 +1 @@
1
+ = grid_actions_for(obj)
@@ -0,0 +1,11 @@
1
+ - if resource_class.column_names.include? 'name'
2
+ - grid.column name: input_label(:defaults, :name), attribute: 'name' do |obj|
3
+ - obj.name
4
+ - elsif resource_class.column_names.include? 'title'
5
+ - grid.column name: input_label(:defaults, :title), attribute: 'title' do |obj|
6
+ - obj.title
7
+ - elsif resource_class.column_names.include? 'email'
8
+ - grid.column name: input_label(:defaults, :email), attribute: 'email' do |obj|
9
+ - obj.email
10
+
11
+ - column_actions(grid)
@@ -1,5 +1,5 @@
1
1
  - collection_name = resource_class.to_s.downcase.pluralize
2
2
  - resource_name = resource_class.to_s.downcase
3
- %h1= t('admix.crud.edit.title', resource: resource[@crumb_field])
4
- = render 'form'
5
- = link_to t('admix.crud.back'), collection_url, class: 'btn'
3
+ = render 'actions'
4
+ -#%h1= t('admix.crud.edit.title', resource: resource[@crumb_field])
5
+ = render file: 'admix/inherited/form'
@@ -0,0 +1,52 @@
1
+ - array_of_resources = [:admix]
2
+ - if defined? parent_type
3
+ - array_of_resources << parent_type
4
+ - array_of_resources << resource
5
+
6
+ = content_for(:before_form)
7
+ = simple_form_for array_of_resources, :html => { :class => 'form-admix' }, wrapper: :bootstrap do |f|
8
+ = render partial: 'form_config', locals: {f:f}
9
+ = content_for(:before_inner_form)
10
+ = content_for(:before_errors)
11
+ = f.error_notification
12
+ = content_for(:after_errors)
13
+ .row-fluid
14
+ .span7
15
+ .row-fluid
16
+ .span12
17
+ .tabbable.tabs-left
18
+ %ul#admix_form_tabs.nav.nav-tabs
19
+ - if content_for?(:nav_tabs)
20
+ = content_for(:nav_tabs)
21
+ - elsif @admix_tabs
22
+ - @admix_tabs.each do |tab|
23
+ = tab.header
24
+ .tab-content.well
25
+ - if content_for?(:tabs_content)
26
+ = content_for(:tabs_content)
27
+ - elsif @admix_tabs
28
+ - @admix_tabs.each do |tab|
29
+ .tab-pane{id: tab.tab_id, class: (tab.options[:first] ? 'active' : '')}
30
+ .span12
31
+ .row-fluid
32
+ = tab.content
33
+ .span4
34
+ %ul.nav.nav-list.well
35
+ %li
36
+ .div
37
+ = f.button :submit, class: 'btn-primary'
38
+ = link_to t('admix.crud.cancel'), collection_url, class: 'btn'
39
+ - if not resource.nil? and not resource.new_record?
40
+ = link_destroy(resource, t('admix.crud.destroy.link'), 'btn-danger')
41
+ - if content_for?(:form_options)
42
+ %li.nav-header Opções
43
+ %li
44
+ = content_for(:form_options)
45
+
46
+
47
+ = content_for(:after_inner_form)
48
+ = content_for(:after_form)
49
+ :coffeescript
50
+ $('#admix_form_tabs a').click (e) ->
51
+ e.preventDefault()
52
+ $(this).tab('show')
@@ -1,5 +1,3 @@
1
- %h1= t('admix.crud.listing', resources: t("#{@collection_name}.#{@collection_name}"))
2
-
3
- = datagrid_table @report, @assets, html: {class: 'table table-striped'}
4
- = will_paginate @assets, :renderer => BootstrapPagination::Rails
5
- = link_to t('admix.crud.new.link'), new_resource_url, class: 'btn'
1
+ = render 'actions'
2
+ -#%h1= t('admix.crud.listing', resources: t("#{@collection_name}.#{@collection_name}"))
3
+ = render partial: 'grid'
@@ -1,3 +1,3 @@
1
- %h1= t('admix.crud.new.title')
2
- = render 'form'
3
- = link_to t('admix.crud.back'), collection_url, class: 'btn'
1
+ = render 'actions'
2
+ -#%h1= t('admix.crud.new.title')
3
+ = render file: 'admix/inherited/form'
@@ -1,5 +1,3 @@
1
- %h1= t('admix.crud.show.title')
2
- = render partial: 'show', locals: {resource: resource}
3
- %br
4
- .well{style: 'clear:both;'}
5
- = link_to t('admix.crud.list.title', resources: t("#{@collection_name}.#{@collection_name}")), collection_url, class: 'btn'
1
+ = render 'actions'
2
+ -#%h1= t('admix.crud.show.title')
3
+ = render partial: 'show', locals: {resource: resource}
@@ -0,0 +1,7 @@
1
+ .well
2
+ = link_to "#{t('admix.crud.new.link')} " + t("#{@collection_name}.#{@collection_name.singularize}"), new_resource_url, class: 'btn'
3
+ = link_to t('admix.crud.list.title', resources: t("#{@collection_name}.#{@collection_name}")), collection_url, class: 'btn'
4
+ - if not ['index', 'edit'].include? params[:action]
5
+ - if not resource.nil? and not resource.new_record?
6
+ = link_edit(resource, t('admix.crud.edit.link'), 'btn-primary')
7
+ = link_destroy(resource, t('admix.crud.destroy.link'), 'btn-danger')
@@ -0,0 +1,3 @@
1
+ - grid.column do |obj|
2
+ - content_tag :div do
3
+ = render partial: 'grid_actions', locals: {obj:obj}
@@ -0,0 +1,3 @@
1
+ .well
2
+ = t('admix.alerts.no_records_found')
3
+ = link_to(t('admix.links.new_record'), new_resource_url) + '.'
File without changes
@@ -0,0 +1,5 @@
1
+ = grid(@grid, show_filters: :when_filtered) do |grid|
2
+
3
+ - grid.blank_slate partial: "empty_grid"
4
+
5
+ = render partial: 'grid_columns', locals: {grid: grid}
@@ -0,0 +1 @@
1
+ = grid_actions_for(obj)
@@ -0,0 +1,11 @@
1
+ - if resource_class.column_names.include? 'name'
2
+ - grid.column name: input_label(:defaults, :name), attribute: 'name' do |obj|
3
+ - obj.name
4
+ - elsif resource_class.column_names.include? 'title'
5
+ - grid.column name: input_label(:defaults, :title), attribute: 'title' do |obj|
6
+ - obj.title
7
+ - elsif resource_class.column_names.include? 'email'
8
+ - grid.column name: input_label(:defaults, :email), attribute: 'email' do |obj|
9
+ - obj.email
10
+
11
+ - column_actions(grid)
@@ -0,0 +1,5 @@
1
+ - collection_name = resource_class.to_s.downcase.pluralize
2
+ - resource_name = resource_class.to_s.downcase
3
+ = render 'actions'
4
+ -#%h1= t('admix.crud.edit.title', resource: resource[@crumb_field])
5
+ = render file: 'admix/rest/form'
@@ -0,0 +1,50 @@
1
+ - array_of_resources = [:admix]
2
+ - if defined? parent_type
3
+ - array_of_resources << parent_type
4
+ - array_of_resources << resource
5
+
6
+ = simple_form_for array_of_resources, :html => {:name => 'AdmixForm', :class => 'form-admix', 'ng-controller' => 'FormController' }, wrapper: :bootstrap do |f|
7
+ %h1 {{method}}
8
+ = render partial: 'form_config', locals: {f:f}
9
+ = f.error_notification
10
+
11
+ .row-fluid
12
+ .span7
13
+ .row-fluid
14
+ .span12
15
+ .tabbable.tabs-left
16
+ %ul#admix_form_tabs.nav.nav-tabs
17
+ - if content_for?(:nav_tabs)
18
+ = content_for(:nav_tabs)
19
+ - elsif @admix_tabs
20
+ - @admix_tabs.each do |tab|
21
+ = tab.header
22
+ .tab-content.well
23
+ - if content_for?(:tabs_content)
24
+ = content_for(:tabs_content)
25
+ - elsif @admix_tabs
26
+ - @admix_tabs.each do |tab|
27
+ .tab-pane{id: tab.tab_id, class: (tab.options[:first] ? 'active' : '')}
28
+ .span12
29
+ .row-fluid
30
+ = tab.content
31
+ .span4
32
+ %ul.nav.nav-list.well
33
+ %li
34
+ .div
35
+ = f.button :submit, class: 'btn-primary'
36
+ = link_to t('admix.crud.cancel'), collection_url, class: 'btn'
37
+ - if not resource.nil? and not resource.new_record?
38
+ = link_destroy(resource, t('admix.crud.destroy.link'), 'btn-danger')
39
+ - if content_for?(:form_options)
40
+ %li.nav-header Opções
41
+ %li
42
+ = content_for(:form_options)
43
+
44
+
45
+ = content_for(:after_inner_form)
46
+ = content_for(:after_form)
47
+ :coffeescript
48
+ $('#admix_form_tabs a').click (e) ->
49
+ e.preventDefault()
50
+ $(this).tab('show')
@@ -0,0 +1,3 @@
1
+ = render 'actions'
2
+ -#%h1= t('admix.crud.listing', resources: t("#{@collection_name}.#{@collection_name}"))
3
+ = render partial: 'grid'
@@ -0,0 +1,3 @@
1
+ = render 'actions'
2
+ -#%h1= t('admix.crud.new.title')
3
+ = render file: 'admix/rest/form'
@@ -0,0 +1,3 @@
1
+ = render 'actions'
2
+ -#%h1= t('admix.crud.show.title')
3
+ = render partial: 'show', locals: {resource: resource}
@@ -4,9 +4,10 @@
4
4
  %meta{:charset => "utf-8"}
5
5
  %meta{:content => "noindex, nofollow", :name => "robots"}
6
6
  %meta{:name => 'viewport', :content => "width=device-width, initial-scale=1.0"}
7
- %title= app_title
7
+ %title= "Admix | #{app_title}"
8
8
  = stylesheet_link_tag "admix/application", :media => "all"
9
9
  = yield :stylesheets
10
+ = yield :top_javascripts
10
11
  %script
11
12
  var HOST_NAME = "#{request.protocol + request.host_with_port}";
12
13
  var ROOT_PATH = HOST_NAME + "#{root_path.chomp("/")}";
@@ -14,7 +15,6 @@
14
15
  = yield :javascripts
15
16
  = csrf_meta_tags
16
17
  %body
17
-
18
18
  / Top
19
19
  .container-fluid
20
20
  .navbar.navbar-inverse
@@ -3,7 +3,7 @@
3
3
  %head
4
4
  %meta{:charset => "utf-8"}
5
5
  %meta{:content => "noindex, nofollow", :name => "robots"}
6
- %title Admix
6
+ %title= "Admix | #{app_title}"
7
7
  = stylesheet_link_tag "admix/application", :media => "all"
8
8
  = yield :stylesheets
9
9
  %script
@@ -1,59 +1,44 @@
1
- # Default menus
2
-
3
- # Clear menus
4
- # TODO don't let add repeated menu keys
5
- Admix::Navigation::NavBar.clear!
6
-
7
- # Dashboard
8
- dashboard = Admix::Navigation::Menu.new
9
- dashboard.key = :dashboard
10
- dashboard.title = t 'dashboard.dashboard'
11
- dashboard.url = admix_root_url
12
- dashboard.icon = 'icon-flag'
13
-
14
- # General
15
- if current_user.has_role? :admin
16
- general = Admix::Navigation::Menu.new
17
- general.key = :general
18
- general.title = t 'general.general'
19
- general.url = 'javascript:;'
20
- general.icon = 'icon-flag'
21
- end
22
-
23
- # Content
24
- content = Admix::Navigation::Menu.new
25
- content.key = :content
26
- content.title = t 'content.content'
27
- content.url = 'javascript:;'
28
- content.icon = 'icon-flag'
29
-
30
- Admix::Navigation::NavBar.add dashboard, general, content
31
-
32
- Admix::Navigation::NavBar.insert_post_menus
33
-
34
- # Add menus in navigation bar
35
1
  SimpleNavigation::Configuration.run do |navigation|
36
2
  navigation.items do |primary|
37
3
  primary.dom_class = 'nav'
38
4
 
39
- Admix::Navigation::NavBar.all.each do |menu|
40
- key = ('menu_' + menu.key.to_s).to_sym
41
- # Primary menus
42
- if menu.children.length > 0
43
- primary.item key, menu.title, menu.url do |sec|
44
- menu.children.each do |submenu|
45
- if submenu.respond_to?(:can_render?)
46
- if submenu.can_render?(current_user)
47
- sec.item submenu.key, submenu.title, send(submenu.url)
48
- end
49
- else
50
- sec.item submenu.key, submenu.title, send(submenu.url)
51
- end
5
+ build_menu = lambda { |pri, activemenu|
6
+ block = if activemenu.children.length > 0
7
+ Proc.new { |sub|
8
+ activemenu.children.each do |c|
9
+ build_menu.call(sub, c)
52
10
  end
53
- end
11
+ }
12
+ else
13
+ nil
14
+ end
15
+
16
+ href = if activemenu.href.kind_of?(Proc)
17
+ instance_eval(&activemenu.href)
18
+ else
19
+ activemenu.href
20
+ end
21
+
22
+ text = if activemenu.text.kind_of?(Proc)
23
+ instance_eval(&activemenu.text)
54
24
  else
55
- primary.item key, menu.title, menu.url
25
+ activemenu.text
56
26
  end
27
+ visible = if activemenu.visible.kind_of?(Proc)
28
+ instance_eval(&activemenu.visible)
29
+ else
30
+ activemenu.visible
31
+ end
32
+
33
+ if visible
34
+ pri.item "activemenu-#{activemenu.id}", text, href, &block
35
+ end
36
+
37
+ }
38
+
39
+
40
+ ActiveMenu::get('admix-nav').children.each do |menu|
41
+ build_menu.call(primary, menu)
57
42
  end
58
43
 
59
44
  end
@@ -2,8 +2,6 @@ config.assets.paths << "#{ Rails.root }/app/assets/bootstrap"
2
2
  config.assets.paths << "#{ Rails.root }/app/assets/tipsy"
3
3
  config.assets.paths << "#{ Rails.root }/app/assets/nicedit"
4
4
 
5
- config.i18n.default_locale = "pt-BR"
6
-
7
5
  #4. If you are deploying Rails 3.1 on Heroku, you may want to set:
8
6
  #
9
7
  # config.assets.initialize_on_precompile = false
@@ -1,4 +1 @@
1
- I18n.default_locale = :"pt-BR"
2
- I18n.locale = I18n.default_locale
3
-
4
1
  SimpleNavigation::config_file_paths << File.expand_path("../../", __FILE__)
@@ -0,0 +1,142 @@
1
+ if defined?(Wice::Defaults)
2
+
3
+ # Default number of rows to show per page.
4
+ Wice::Defaults::PER_PAGE = 20
5
+
6
+ # Default order direction
7
+ Wice::Defaults::ORDER_DIRECTION = 'asc'
8
+
9
+ # Default name for a grid. A grid name is the basis for a lot of
10
+ # names including parameter names, DOM IDs, etc
11
+ # The shorter the name is the shorter the request URI will be.
12
+ Wice::Defaults::GRID_NAME = 'grid'
13
+
14
+ # If REUSE_LAST_COLUMN_FOR_FILTER_ICONS is true and the last column doesn't have any filter and column name, it will be used
15
+ # for filter related icons (filter icon, reset icon, show/hide icon), otherwise an additional table column is added.
16
+ Wice::Defaults::REUSE_LAST_COLUMN_FOR_FILTER_ICONS = true
17
+
18
+ # The label of the first option of a custom dropdown list meaning 'All items'
19
+ Wice::Defaults::CUSTOM_FILTER_ALL_LABEL = '--'
20
+
21
+ # A list of classes for the table tag of the grid
22
+ Wice::Defaults::DEFAULT_TABLE_CLASSES = ['table', 'table-bordered', 'table-striped']
23
+
24
+ # Allow switching between a single and multiple selection modes in custom filters (dropdown boxes)
25
+ Wice::Defaults::ALLOW_MULTIPLE_SELECTION = true
26
+
27
+ # Show the upper pagination panel by default or not
28
+ Wice::Defaults::SHOW_UPPER_PAGINATION_PANEL = false
29
+
30
+ # Disabling CSV export by default
31
+ Wice::Defaults::ENABLE_EXPORT_TO_CSV = false
32
+
33
+ # Default CSV field separator
34
+ Wice::Defaults::CSV_FIELD_SEPARATOR = ','
35
+
36
+
37
+ # The strategy when to show the filter.
38
+ # * <tt>:when_filtered</tt> - when the table is the result of filtering
39
+ # * <tt>:always</tt> - show the filter always
40
+ # * <tt>:no</tt> - never show the filter
41
+ Wice::Defaults::SHOW_FILTER = :always
42
+
43
+ # A boolean value specifying if a change in a filter triggers reloading of the grid.
44
+ Wice::Defaults::AUTO_RELOAD = false
45
+
46
+
47
+ # SQL operator used for matching strings in string filters.
48
+ Wice::Defaults::STRING_MATCHING_OPERATOR = 'LIKE'
49
+ # STRING_MATCHING_OPERATOR = 'ILIKE' # Use this for Postgresql case-insensitive matching.
50
+
51
+
52
+ # Defining one string matching operator globally for the whole application turns is not enough
53
+ # when you connect to two databases one of which is MySQL and the other is Postgresql.
54
+ # If the key for an adapter is missing it will fall back to Wice::Defaults::STRING_MATCHING_OPERATOR
55
+ Wice::Defaults::STRING_MATCHING_OPERATORS = {
56
+ 'ActiveRecord::ConnectionAdapters::MysqlAdapter' => 'LIKE',
57
+ 'ActiveRecord::ConnectionAdapters::PostgreSQLAdapter' => 'ILIKE'
58
+ }
59
+
60
+
61
+
62
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
63
+ # Advanced Filters #
64
+
65
+ # Switch of the negation checkbox in all text filters
66
+ Wice::Defaults::NEGATION_IN_STRING_FILTERS = false
67
+
68
+
69
+
70
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
71
+ # Showing All Queries #
72
+
73
+ # Enable or disable showing all queries (non-paginated table)
74
+ Wice::Defaults::ALLOW_SHOWING_ALL_QUERIES = true
75
+
76
+ # If number of all queries is more than this value, the user will be given a warning message
77
+ Wice::Defaults::START_SHOWING_WARNING_FROM = 100
78
+
79
+
80
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
81
+ # Saving Queries #
82
+
83
+ # ActiveRecord model to store queries. Read the documentation for details
84
+ # QUERY_STORE_MODEL = 'WiceGridSerializedQuery'
85
+ Wice::Defaults::QUERY_STORE_MODEL = 'WiceGridSerializedQuery'
86
+
87
+
88
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
89
+ # Here go settings related to the calendar helpers #
90
+
91
+ # The default style of the date and datetime helper
92
+ # * <tt>:calendar</tt> - JS calendar
93
+ # * <tt>:standard</tt> - standard Rails date and datetime helpers
94
+ Wice::Defaults::HELPER_STYLE = :calendar
95
+
96
+ # Format of the datetime displayed.
97
+ # If you change the format, make sure to check if +DATETIME_PARSER+ can still parse this string.
98
+ Wice::Defaults::DATETIME_FORMAT = "%Y-%m-%d %H:%M"
99
+
100
+ # Format of the date displayed.
101
+ # If you change the format, make sure to check if +DATE_PARSER+ can still parse this string.
102
+ Wice::Defaults::DATE_FORMAT = "%Y-%m-%d"
103
+
104
+ # Format of the date displayed in jQuery's Datepicker
105
+ # If you change the format, make sure to check if +DATE_PARSER+ can still parse this string.
106
+ Wice::Defaults::DATE_FORMAT_JQUERY = "dd/mm/yy"
107
+
108
+
109
+ # With Calendar helpers enabled the parameter sent is the string displayed. This lambda will be given a date string in the
110
+ # format defined by +DATETIME_FORMAT+ and must generate a DateTime object.
111
+ # In many cases <tt>Time.zone.parse</tt> is enough, for instance, <tt>%Y-%m-%d</tt>. If you change the format, make sure to check this code
112
+ # and modify it if needed.
113
+ Wice::Defaults::DATETIME_PARSER = lambda{|datetime_string|
114
+ if datetime_string.blank?
115
+ nil
116
+ elsif Time.zone
117
+ Time.zone.parse(datetime_string)
118
+ else
119
+ Time.parse(datetime_string)
120
+ end
121
+ }
122
+
123
+
124
+ # With Calendar helpers enabled the parameter sent is the string displayed. This lambda will be given a date string in the
125
+ # format defined by +DATETIME+ and must generate a Date object.
126
+ # In many cases <tt>Date.parse</tt> is enough, for instance, <tt>%Y-%m-%d</tt>. If you change the format, make sure to check this code
127
+ # and modify it if needed.
128
+ Wice::Defaults::DATE_PARSER = lambda{|date_string|
129
+ if date_string.blank?
130
+ nil
131
+ else
132
+ Date.parse(date_string)
133
+ end
134
+ }
135
+
136
+ # Icon to popup the calendar.
137
+ Wice::Defaults::CALENDAR_ICON = "/assets/icons/grid/calendar_view_month.png"
138
+
139
+ # popup calendar will be shown relative to the popup trigger element or to the mouse pointer
140
+ Wice::Defaults::POPUP_PLACEMENT_STRATEGY = :trigger # :pointer
141
+
142
+ end