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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: b21db47058f105b7f1253aa41d9f65a0d27d4198
4
+ data.tar.gz: 015c9f53129ed8172c0c06ba6396992469b9aa84
5
+ SHA512:
6
+ metadata.gz: 0269db074ca54532844648e6bb8944dbc9886ba56fca0b3bc19a7f5459bcf4808ad6d68beb9d196de87cc287e4c9c543e9354801ac5e3b544b7bdd5f3d6a55f9
7
+ data.tar.gz: af39710bf0b7f34c6b9364ebbe1839a553af6ad8c6e6cf27287760f9ebed4ec50e0b483d34e25dd9e9365677fc87050ed326c8198fa8c43c0b00ea97f23e06eb
@@ -1,9 +1,11 @@
1
+
1
2
  #= require jquery
2
3
  #= require jquery_ujs
3
4
  #= require underscore
4
5
  #= require backbone
5
6
  #= require jquery/jquery.livequery
6
7
  #= require fancybox
8
+ #= require wice_grid
7
9
  #= require jquery.ui.all
8
10
  #= require bootstrap
9
11
  #= require ../../nicedit/nicEdit
@@ -12,7 +14,13 @@
12
14
  # ./tipsy_init
13
15
  #= require jquery.qtip.js
14
16
  #= require jquery.globalmoney
17
+ #= require ckeditor/init
18
+ #= require jquery.meio.mask.min
19
+ #= require jquery.ui.addresspicker
15
20
 
21
+ #= require angular.min
22
+ #= require angular-ui.min
23
+ #= require gmaps
16
24
 
17
25
 
18
26
  Backbone.emulateHTTP = true
@@ -29,7 +37,7 @@ $ ->
29
37
  style:
30
38
  classes: 'qtip-bootstrap'
31
39
 
32
- $('.fancybox').livequery ->
40
+ $('.zoom-image').livequery ->
33
41
  $(@).fancybox();
34
42
 
35
43
  $('.currency').livequery ->
@@ -44,4 +52,24 @@ $ ->
44
52
  $(this).datepicker
45
53
  altFormat: "yy-mm-dd"
46
54
  dateFormat: "dd/mm/yy"
47
- altField: $(this).next()
55
+ altField: $(this).next()
56
+
57
+ $(".cell, .phone").livequery ->
58
+ $(@).setMask('(84) 9999-9999')
59
+
60
+ $(".cep").livequery ->
61
+ $(@).setMask('99999-999')
62
+
63
+ # window.admix = angular.module('admix', ['ui'])
64
+ # .config(["$httpProvider", function(provider) {
65
+ # provider.defaults.headers.common['X-CSRF-Token'] = $('meta[name=csrf-token]').attr('content');
66
+ # .controller 'FormController', ($scope) ->
67
+ # console.log 'init From Controller'
68
+ # $scope.method = $(AdmixForm._method).val()
69
+ # $scope.authenticity_token = $(AdmixForm.authenticity_token).val()
70
+ # $scope.utf8 = $(AdmixForm.utf8).val()
71
+
72
+ # console.log $scope
73
+
74
+
75
+ # angular.bootstrap(document, ['admix'])
@@ -15,6 +15,7 @@
15
15
  *= require ./admix_bootstrap
16
16
  *= require ./style
17
17
  *= require jquery.qtip.css
18
+ *= require ./wice_grid
18
19
  *= require_self
19
20
  */
20
21
 
@@ -25,4 +26,8 @@
25
26
 
26
27
  form abbr {
27
28
  color: red;
28
- }
29
+ }
30
+
31
+ #gmapa img {
32
+ max-width: none;
33
+ }
@@ -0,0 +1,143 @@
1
+ @mixin icon-dimensions {
2
+ width: 16px;
3
+ height: 16px;
4
+ }
5
+
6
+ .wg-detached-filter{
7
+ a.date-label {text-decoration: none;}
8
+ a.date-label:hover {text-decoration: line-through;}
9
+ }
10
+
11
+ .wice-grid{
12
+
13
+ .clickable{
14
+ cursor: pointer;
15
+ margin-bottom: 2px;
16
+ margin-right: 2px;
17
+ }
18
+
19
+
20
+ a.date-label {text-decoration: none;}
21
+ a.date-label:hover {text-decoration: line-through;}
22
+
23
+ .ui-datepicker-trigger, .wg-detached-filter .ui-datepicker-trigger{
24
+ cursor: pointer;
25
+ }
26
+
27
+ .desc, .asc{
28
+ padding-right: 18px;
29
+ text-decoration:none;
30
+ }
31
+
32
+ .desc {
33
+ background: transparent url(/assets/icons/grid/arrow_down.gif) right no-repeat
34
+ }
35
+ .asc {
36
+ background: transparent url(/assets/icons/grid/arrow_up.gif) right no-repeat
37
+ }
38
+
39
+ .submit.clickable{
40
+ background: transparent url(/assets/icons/grid/table_refresh.png) no-repeat;
41
+ @include icon-dimensions;
42
+ }
43
+
44
+ .reset.clickable{
45
+ background: transparent url(/assets/icons/grid/table.png) no-repeat;
46
+ @include icon-dimensions;
47
+ }
48
+
49
+
50
+ .wg-show-filter.clickable,
51
+ .wg-hide-filter.clickable{
52
+ background: transparent url(/assets/icons/grid/page_white_find.png) no-repeat;
53
+ @include icon-dimensions;
54
+ }
55
+
56
+
57
+ .export-to-csv-button.clickable{
58
+ background: transparent url(/assets/icons/grid/page_white_excel.png) no-repeat;
59
+ @include icon-dimensions;
60
+ }
61
+
62
+ .clickable.select-all{
63
+ background: transparent url(/assets/icons/grid/tick_all.png) no-repeat;
64
+ @include icon-dimensions;
65
+ float:left;
66
+ }
67
+
68
+ .clickable.deselect-all{
69
+ background: transparent url(/assets/icons/grid/untick_all.png) no-repeat;
70
+ @include icon-dimensions;
71
+ float:left;
72
+ }
73
+
74
+ .custom-dropdown-container {
75
+ position: relative;
76
+ padding-right: 18px;
77
+
78
+
79
+ .collapse-multi-select-icon, .expand-multi-select-icon{
80
+ width: 12px;
81
+ height: 12px;
82
+ position:absolute;
83
+ top:0;
84
+ right:0;
85
+ }
86
+
87
+ .collapse-multi-select-icon{
88
+ background: transparent url(/assets/icons/grid/collapse.gif) no-repeat;
89
+ }
90
+
91
+ .expand-multi-select-icon{
92
+ background: transparent url(/assets/icons/grid/expand.gif) no-repeat;
93
+ }
94
+
95
+ }
96
+
97
+ .text-filter-container {
98
+ position: relative; padding-right: 13px;
99
+ .negation-checkbox {
100
+ position:absolute;
101
+ top:0;
102
+ right:0;
103
+ }
104
+ }
105
+
106
+
107
+ /* in case of twitter bootstrap :) */
108
+ thead th select{
109
+ width: auto;
110
+ }
111
+
112
+ .pagination{
113
+ margin: 0px;
114
+ float: left;
115
+ }
116
+
117
+
118
+ tr.wg-filter-row input[type=text] {
119
+ width: 100px;
120
+ }
121
+
122
+ .pagination_status {
123
+ font-weight: bold;
124
+ float: right;
125
+ }
126
+
127
+ }
128
+
129
+ .wice-grid-query-panel{
130
+ li {list-style-type: none; }
131
+
132
+ ul {margin-left: 0 }
133
+
134
+ a.wice-grid-delete-query .delete-icon{
135
+ background: transparent url(/assets/icons/grid/delete.png) no-repeat;
136
+ float: left;
137
+ @include icon-dimensions;
138
+ }
139
+ }
140
+
141
+ .table-striped td.active-filter {
142
+ background-color: #f9f9e9 !important;
143
+ }
@@ -1,25 +1,20 @@
1
1
  module Admix
2
2
  class InheritedController < Admix::AdmixController
3
+
3
4
  helper :all
4
5
 
5
6
  inherit_resources
6
- include InheritedResources::DSL
7
7
 
8
+ include InheritedResources::DSL
8
9
  rescue_from ActiveRecord::DeleteRestrictionError do |exception|
9
10
  #resource.errors.add(:base, exception)
10
11
  flash[:alert] = I18n.t('errors.dependent')
11
12
  redirect_to collection_url
12
13
  end
13
14
 
14
- # destroy! do |success, failure|
15
- # failure.html { redirect_to polymorphic_path(resource) }
16
- # end
17
-
18
15
  # TODO: Add authorization here.
19
-
20
16
 
21
-
22
- before_filter :generate_datagrid , only: [:index ]
17
+ before_filter :load_grid , only: [:index ]
23
18
 
24
19
 
25
20
  # Add a breadcrumb, in this case nested resources. ;)
@@ -31,22 +26,29 @@ module Admix
31
26
  }
32
27
 
33
28
  before_filter -> { breadcrumbs.add t("#{collection_name}.#{collection_name}"), collection_url, :i18n => false }
34
- before_filter -> { breadcrumbs.add "#{resource[crumb_field]}" , resource_url, :i18n => false } , except: [:index, :new, :create ]
29
+ before_filter -> { breadcrumbs.add "#{crumb_field}" , resource_url, :i18n => false } , except: [:index, :new, :create ]
35
30
  before_filter -> { breadcrumbs.add t("admix.crud.new.title"), :i18n => false } , only: [:new ]
36
31
  before_filter -> { @crumb_field = crumb_field } , only: [:edit ]
37
32
 
38
33
  protected
39
34
 
40
35
  def crumb_field
41
- if resource.respond_to?(:name)
36
+ field_name = if resource.respond_to?(:name)
42
37
  :name
43
38
  elsif resource.respond_to?(:title)
44
39
  :title
45
40
  elsif resource.respond_to?(:email)
46
41
  :email
47
42
  else
48
- "Implement crumb_field method in #{self}"
43
+ raise "Implement crumb_field method in #{self}"
49
44
  end
45
+
46
+ resource[field_name]
47
+
48
+ end
49
+
50
+ def load_grid
51
+ @grid = initialize_grid(resource_class)
50
52
  end
51
53
 
52
54
  def collection_name
@@ -61,28 +63,5 @@ module Admix
61
63
  raise "TODO: We need implement this in #{self}"
62
64
  end
63
65
 
64
- def generate_datagrid
65
- @report = report
66
- @assets = @report.assets.paginate(:page => params[:page], :per_page => 10)
67
- end
68
-
69
- def report
70
- datagrid_class.new(params[datagrid_param_name])
71
- end
72
-
73
- def datagrid_class
74
- @datagrid_class = guess_datagrid_class
75
- end
76
-
77
- private
78
- def guess_datagrid_class
79
- "#{self.class.name}".gsub("Controller", "Datagrid").constantize
80
- end
81
-
82
- def datagrid_param_name
83
- guess_datagrid_class.to_s.underscore.gsub('/', '_')
84
- end
85
-
86
-
87
66
  end
88
67
  end
@@ -0,0 +1,2 @@
1
+ class Admix::RegistrationsController < Devise::RegistrationsController
2
+ end
@@ -0,0 +1,46 @@
1
+ class Admix::RestController < Admix::AdmixController
2
+
3
+ inherit_resources
4
+
5
+ before_filter -> {
6
+ if defined?(parent_type)
7
+ breadcrumbs.add t("#{parent_type.to_s.gsub('_', '').pluralize}.#{parent_type.to_s.gsub('_', '').pluralize}") , polymorphic_path([:admix, parent_class])
8
+ breadcrumbs.add "#{parent.name}" , parent_url
9
+ end
10
+ }
11
+
12
+ before_filter -> { breadcrumbs.add t("#{collection_name}.#{collection_name}"), collection_url, :i18n => false }
13
+ before_filter -> { breadcrumbs.add "#{crumb_field}" , resource_url, :i18n => false } , except: [:index, :new, :create ]
14
+ before_filter -> { breadcrumbs.add t("admix.crud.new.title"), :i18n => false } , only: [:new ]
15
+ before_filter -> { @crumb_field = crumb_field } , only: [:edit ]
16
+
17
+ protected
18
+
19
+ def crumb_field
20
+ field_name = if resource.respond_to?(:name)
21
+ :name
22
+ elsif resource.respond_to?(:title)
23
+ :title
24
+ elsif resource.respond_to?(:email)
25
+ :email
26
+ else
27
+ raise "Implement crumb_field method in #{self}"
28
+ end
29
+
30
+ resource[field_name]
31
+
32
+ end
33
+
34
+ def load_grid
35
+ @grid = initialize_grid(resource_class)
36
+ end
37
+
38
+ def collection_name
39
+ @collection_name = resource_class.to_s.underscore.pluralize.gsub("::", "_")
40
+ end
41
+
42
+ def resource_name
43
+ resource_class.to_s.downcase
44
+ end
45
+
46
+ end
@@ -0,0 +1,33 @@
1
+ module Admix
2
+ class Tab
3
+
4
+ # include ActionView::Helpers::CaptureHelper
5
+ # include ActionView::Helpers::TagHelper
6
+
7
+ attr_reader :tab_id, :header, :content, :view_context, :options
8
+
9
+ def initialize(view_context, tab_name, tab_id = nil, options={}, &block)
10
+ @view_context ||= view_context
11
+ @tab_id = "tab-#{tab_name}".parameterize.to_sym unless tab_id
12
+ @tab_name = tab_name
13
+
14
+ @options = options
15
+
16
+ @header = view_context.content_tag :li, class: (options[:first] ? 'active' : '') do
17
+ view_context.link_to(@tab_name, "##{@tab_id}")
18
+ end
19
+
20
+ @content = ''.html_safe
21
+ yield(self)
22
+ end
23
+
24
+ def tab_header(&block)
25
+ @header = block_given? ? @view_context.capture(&block) : ''
26
+ end
27
+
28
+ def tab_content(&block)
29
+ @content = block_given? ? @view_context.capture(&block) : ''
30
+ end
31
+
32
+ end
33
+ end
@@ -10,4 +10,80 @@ module AdmixHelper
10
10
  I18n.t("#{model_name}.#{input_name}", scope: :"simple_form.labels", default: [:"defaults.#{input_name}"])
11
11
  end
12
12
 
13
+ def column_actions(grid)
14
+ render partial: 'column_actions', locals: {grid: grid}
15
+ end
16
+
17
+ def action_edit(obj)
18
+ link_edit(obj, image_tag('admix/page_edit.png'))
19
+ end
20
+
21
+ def link_edit(obj, link_content=nil, classes='')
22
+ link_content ||= image_tag('admix/page_edit.png')
23
+ link_to(link_content, edit_resource_url(obj), class: "btn #{classes}", title:'Editar registro')
24
+ end
25
+
26
+ def action_show(obj)
27
+ link_to(image_tag('admix/zoom.png'), resource_url(obj), class: 'btn', title:'Visualizar registro')
28
+ end
29
+
30
+ def action_destroy(obj)
31
+ link_destroy(obj, image_tag('admix/cancel.png'))
32
+ end
33
+
34
+ def link_destroy(obj, link_content=nil, classes='')
35
+ link_content ||= image_tag('admix/cancel.png')
36
+ link_to(link_content, resource_url(obj), method: :delete, data: { confirm: t('admix.crud.destroy_confirm') }, class: "btn #{classes}", title:'Deletar registro')
37
+ end
38
+
39
+ def grid_actions_for(obj, actions = [:show, :edit, :destroy], &block)
40
+
41
+ yield(actions) if block_given?
42
+
43
+ html = ''
44
+
45
+ actions.each do |action_name|
46
+ html += send("action_#{action_name}", obj)
47
+ end
48
+
49
+ raw html
50
+
51
+ end
52
+
53
+
54
+ def admix_tab(tab_name, tab_id = nil, options={}, &block)
55
+ @admix_tabs ||= []
56
+ if @admix_tabs.length == 0
57
+ options[:first] = true
58
+ end
59
+ @admix_tabs << Admix::Tab.new(self, tab_name, tab_id, options, &block)
60
+ end
61
+
62
+
63
+ def nav_items
64
+ items = {}
65
+
66
+ build_menu = lambda { |item, menu|
67
+
68
+ item[:key] = menu.id
69
+ item[:name] = menu.text
70
+ item[:url] = menu.href
71
+ item[:options] = menu.options
72
+
73
+ if menu.children.length > 0
74
+ subitems = []
75
+ menu.children.each do |c|
76
+ subitems << build_menu.call({}, c)
77
+ end
78
+ item[:items] = subitems
79
+ end
80
+
81
+ item
82
+
83
+ }
84
+ build_menu.call(items, ActiveMenu::get('admix-nav'))
85
+ items
86
+
87
+ end
88
+
13
89
  end