storytime-admin 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9efd1b6120c7321e55cd4420d1fa448a98143686
4
- data.tar.gz: f7c29ae62e5a30b6e64993e1576ebe1d1498413f
3
+ metadata.gz: ca19df95337b36317294b2f754e5618c013ce9c5
4
+ data.tar.gz: 973448d39e10756f75e3ada1ea30321fa6f67680
5
5
  SHA512:
6
- metadata.gz: f858a1b34617cd6366c31ad1fd33040f646293c9ad988e0a1f2050733b665c3ddd0721b71fd04e742b60a52927ebfc0f10829d6b14eef2b153f04dea0f4502f0
7
- data.tar.gz: c36d792826ff52f7e47d8ea88c125cf5f5eaacfaab31b3d6c33af2e2232933552d0004f32357126dd79cee6dedb85a173fdf40a984e805116e29276ed6d13f9e
6
+ metadata.gz: e67229b9729669500efd655813a239cffb66e00da0539e23e04769b8e3f7121f8d6d3c523094bfb4ecc20d6fb661ac13905de5d2b14235e40feee65b297ee4da
7
+ data.tar.gz: ee22c05cbaefed41c890cf7817de81a9f8903e9e223bff967f1d3bfef8ad972f938c53c27b7ff11ed72e4fc45bcbbf3923c7a2489d95eab695a31b481d5e2cfb
@@ -1,3 +1 @@
1
- //= require jquery
2
- //= require jquery_ujs
3
- //= require_tree .
1
+ //= require_tree .
@@ -0,0 +1,2 @@
1
+ $ ->
2
+ $("[data-controller^='StorytimeAdmin::'] select[multiple='multiple']").chosen()
@@ -8,12 +8,21 @@ module StorytimeAdmin
8
8
  before_action :ensure_admin!
9
9
  before_action :load_model, only: [:edit, :update, :destroy]
10
10
 
11
- helper_method :model, :model_display_name, :model_display_name_pluralized, :model_name,
11
+ helper_method :model, :model_display_name, :model_display_name_pluralized, :model_name,
12
12
  :model_sym, :sort_column, :sort_direction, :admin_controller?, :headers,
13
- :form_attributes, :index_attr, :current_user, :polymorphic_route_components
13
+ :form_attributes, :index_attr, :current_user, :polymorphic_route_components, :search_keys
14
14
 
15
15
  def index
16
- @collection = model.all.order("#{sort_column} #{sort_direction}").page(params[:page]).per(20)
16
+ @collection_before_pagination = model.all
17
+ @collection_before_pagination = @collection_before_pagination.where("#{search_keys.join(' ILIKE :q OR ')} ILIKE :q", q: "%#{params[:search]}%") if search_keys.length > 0 && params[:search].present?
18
+ yield @collection_before_pagination if block_given?
19
+ @collection_before_pagination = @collection_before_pagination.order("#{sort_column} #{sort_direction}")
20
+ @collection = @collection_before_pagination.page(params[:page]).per(20)
21
+
22
+ respond_to do |format|
23
+ format.html
24
+ format.csv { send_data @collection_before_pagination.to_csv, filename: "#{model_name.underscore.pluralize}-#{Date.today}.csv" }
25
+ end
17
26
  end
18
27
 
19
28
  def new
@@ -66,7 +75,7 @@ module StorytimeAdmin
66
75
  end
67
76
  end
68
77
 
69
- def attributes
78
+ def attributes
70
79
  @attributes ||= model.columns.map(&:name)
71
80
  end
72
81
 
@@ -88,11 +97,11 @@ module StorytimeAdmin
88
97
 
89
98
  def index_attr
90
99
  if attributes.include?("title")
91
- ["title"]
100
+ { "title" => "title" }
92
101
  elsif attributes.include?("name")
93
- ["name"]
102
+ { "name" => "name" }
94
103
  else
95
- ["id"]
104
+ { "id" => "id" }
96
105
  end
97
106
  end
98
107
 
@@ -121,13 +130,17 @@ module StorytimeAdmin
121
130
  end
122
131
 
123
132
  def sort_column
124
- model.column_names.include?(params[:sort]) ? params[:sort] : "#{model_name.underscore.pluralize}.id"
133
+ params[:sort] || "#{model.name.tableize}.id"
125
134
  end
126
135
 
127
136
  def sort_direction
128
137
  %w[asc desc].include?(params[:direction]) ? params[:direction] : "asc"
129
138
  end
130
139
 
140
+ def search_keys
141
+ []
142
+ end
143
+
131
144
  def admin_controller?
132
145
  true
133
146
  end
@@ -30,11 +30,15 @@ module StorytimeAdmin
30
30
  direction = column == sort_column && sort_direction == "asc" ? "desc" : "asc"
31
31
  direction_arrow = if column == sort_column
32
32
  direction == "asc" ? icon("caret-up") : icon("caret-down")
33
- else
33
+ else
34
34
  nil
35
35
  end
36
36
 
37
- link_to "#{title} #{direction_arrow}".html_safe, {:sort => column, :direction => direction}
37
+ link_to "#{title} #{direction_arrow}".html_safe, params.merge(sort: column, direction: direction, page: nil)
38
+ end
39
+
40
+ def has_many_association?(model, attribute)
41
+ model.reflect_on_all_associations(:has_many).map(&:name).include?(attribute)
38
42
  end
39
43
  end
40
44
  end
@@ -1,2 +1,5 @@
1
1
  - form_attributes.each do |attribute|
2
- = f.input attribute.to_sym
2
+ - if has_many_association?(model, attribute.to_sym)
3
+ = f.association attribute.to_sym
4
+ - else
5
+ = f.input attribute.to_sym
@@ -1,3 +1,3 @@
1
- - index_attr.each do |attribute|
1
+ - index_attr.each do |sort, attribute|
2
2
  %th{:class => "sort_by"}
3
- = sortable(attribute.parameterize)
3
+ = sortable(sort, attribute.titleize)
@@ -1,2 +1,2 @@
1
- - index_attr.each do |attribute|
1
+ - index_attr.each do |sort, attribute|
2
2
  %td= object.send(attribute)
@@ -0,0 +1,6 @@
1
+ = form_tag [model], method: :get, class: "form-inline" do
2
+ = hidden_field_tag :direction, params[:direction] if params[:direction].present?
3
+ = hidden_field_tag :sort, params[:sort] if params[:sort].present?
4
+ .form-group
5
+ = text_field_tag :search, params[:search], class: 'form-control input-sm'
6
+ = submit_tag "Search", name: nil, class: "btn btn-primary btn-sm btn-outline"
@@ -6,5 +6,8 @@
6
6
  = link_to "New #{model_display_name}", [:new, model_sym], class: "btn btn-sm btn-primary btn-outline pull-right"
7
7
  %h3.scroll-panel-title= model_display_name_pluralized
8
8
  .scroll-panel-body
9
+ = render 'search' if search_keys.length > 0
10
+
9
11
  = render 'table'
10
- = paginate @collection, theme: 'twitter-bootstrap-3'
12
+ = paginate @collection, theme: 'twitter-bootstrap-3'
13
+ %p= link_to "Download CSV", [storytime_admin, model, format: :csv]
@@ -12,7 +12,7 @@ module StorytimeAdmin
12
12
  # end
13
13
 
14
14
  ##########################################
15
- ### Add attributes here to exclude them
15
+ ### Add attributes here to exclude them
16
16
  ### from permitted_params
17
17
  ##########################################
18
18
  # def permitted_params_blacklist
@@ -20,7 +20,7 @@ module StorytimeAdmin
20
20
  # end
21
21
 
22
22
  ##########################################
23
- ### Add attributes here to use the default
23
+ ### Add attributes here to use the default
24
24
  ### form but exclude additional attributes
25
25
  ##########################################
26
26
  # def form_blacklist
@@ -28,18 +28,34 @@ module StorytimeAdmin
28
28
  # end
29
29
 
30
30
  ##########################################
31
- ### If you are using the default index
32
- ### template, this controls which attributes
31
+ ### If you are using the default index
32
+ ### template, this controls which attributes
33
33
  ### are used in the table
34
34
  ##########################################
35
35
  # def index_attr
36
36
  # if attributes.include?("title")
37
- # ["title"]
37
+ # { "title" => "title" }
38
38
  # elsif attributes.include?("name")
39
- # ["name"]
39
+ # { "name" => "name" }
40
40
  # else
41
- # ["id"]
41
+ # { "id" => "id" }
42
42
  # end
43
43
  # end
44
+
45
+ ##########################################
46
+ ### Add attributes here to be able to
47
+ ### search by
48
+ ##########################################
49
+ # def search_keys
50
+ # ["name"]
51
+ # end
52
+
53
+ ##########################################
54
+ ### Add additional attributes such as
55
+ ### assocations to be included in the form
56
+ # ##########################################
57
+ # def form_attributes
58
+ # @form_attributes ||= super + ["associated_model"]
59
+ # end
44
60
  end
45
- end
61
+ end
@@ -7,6 +7,8 @@ require 'simple_form'
7
7
  require 'leather'
8
8
  require 'kaminari'
9
9
  require 'bootstrap-kaminari-views'
10
+ require 'storytime_admin/to_csv'
11
+ require 'csv'
10
12
 
11
13
  module StorytimeAdmin
12
14
  class Engine < ::Rails::Engine
@@ -0,0 +1,22 @@
1
+ module StorytimeAdmin
2
+ module ToCsv
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def csv_columns
7
+ column_names
8
+ end
9
+
10
+ def to_csv
11
+ CSV.generate(headers: true) do |csv|
12
+ csv << self.csv_columns
13
+ all.each do |record|
14
+ csv << self.csv_columns.map{ |attr| record.send(attr) }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+
22
+ ActiveRecord::Base.send :include, StorytimeAdmin::ToCsv
@@ -1,3 +1,3 @@
1
1
  module StorytimeAdmin
2
- VERSION = "0.2.0"
2
+ VERSION = "0.2.1"
3
3
  end
metadata CHANGED
@@ -1,29 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: storytime-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Van Der Beek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-08 00:00:00.000000000 Z
11
+ date: 2016-12-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '4.0'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '5.1'
20
23
  type: :runtime
21
24
  prerelease: false
22
25
  version_requirements: !ruby/object:Gem::Requirement
23
26
  requirements:
24
- - - "~>"
27
+ - - ">="
25
28
  - !ruby/object:Gem::Version
26
29
  version: '4.0'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '5.1'
27
33
  - !ruby/object:Gem::Dependency
28
34
  name: kaminari
29
35
  requirement: !ruby/object:Gem::Requirement
@@ -59,6 +65,9 @@ dependencies:
59
65
  - - ">="
60
66
  - !ruby/object:Gem::Version
61
67
  version: '4.0'
68
+ - - "<"
69
+ - !ruby/object:Gem::Version
70
+ version: '4.2'
62
71
  type: :runtime
63
72
  prerelease: false
64
73
  version_requirements: !ruby/object:Gem::Requirement
@@ -66,6 +75,9 @@ dependencies:
66
75
  - - ">="
67
76
  - !ruby/object:Gem::Version
68
77
  version: '4.0'
78
+ - - "<"
79
+ - !ruby/object:Gem::Version
80
+ version: '4.2'
69
81
  - !ruby/object:Gem::Dependency
70
82
  name: jquery-rails
71
83
  requirement: !ruby/object:Gem::Requirement
@@ -73,6 +85,9 @@ dependencies:
73
85
  - - ">="
74
86
  - !ruby/object:Gem::Version
75
87
  version: '3.0'
88
+ - - "<"
89
+ - !ruby/object:Gem::Version
90
+ version: '4.2'
76
91
  type: :runtime
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
@@ -80,6 +95,9 @@ dependencies:
80
95
  - - ">="
81
96
  - !ruby/object:Gem::Version
82
97
  version: '3.0'
98
+ - - "<"
99
+ - !ruby/object:Gem::Version
100
+ version: '4.2'
83
101
  - !ruby/object:Gem::Dependency
84
102
  name: haml-rails
85
103
  requirement: !ruby/object:Gem::Requirement
@@ -115,6 +133,9 @@ dependencies:
115
133
  - - ">="
116
134
  - !ruby/object:Gem::Version
117
135
  version: '4.0'
136
+ - - "<="
137
+ - !ruby/object:Gem::Version
138
+ version: 5.0.6
118
139
  type: :runtime
119
140
  prerelease: false
120
141
  version_requirements: !ruby/object:Gem::Requirement
@@ -122,6 +143,9 @@ dependencies:
122
143
  - - ">="
123
144
  - !ruby/object:Gem::Version
124
145
  version: '4.0'
146
+ - - "<="
147
+ - !ruby/object:Gem::Version
148
+ version: 5.0.6
125
149
  - !ruby/object:Gem::Dependency
126
150
  name: font-awesome-sass
127
151
  requirement: !ruby/object:Gem::Requirement
@@ -273,7 +297,7 @@ files:
273
297
  - README.rdoc
274
298
  - Rakefile
275
299
  - app/assets/javascripts/storytime_admin.js
276
- - app/assets/javascripts/storytime_admin/table_links.js.coffee
300
+ - app/assets/javascripts/storytime_admin/selects.coffee
277
301
  - app/assets/stylesheets/storytime_admin.css.scss
278
302
  - app/assets/stylesheets/storytime_admin/_content.css.scss
279
303
  - app/assets/stylesheets/storytime_admin/_tables.css.scss
@@ -287,6 +311,7 @@ files:
287
311
  - app/views/storytime_admin/application/_navigation.html.haml
288
312
  - app/views/storytime_admin/application/_object.html.haml
289
313
  - app/views/storytime_admin/application/_row.html.haml
314
+ - app/views/storytime_admin/application/_search.html.haml
290
315
  - app/views/storytime_admin/application/_table.html.haml
291
316
  - app/views/storytime_admin/application/edit.html.haml
292
317
  - app/views/storytime_admin/application/index.html.haml
@@ -297,6 +322,7 @@ files:
297
322
  - lib/generators/storytime_admin/resource/templates/controller.rb
298
323
  - lib/storytime_admin.rb
299
324
  - lib/storytime_admin/engine.rb
325
+ - lib/storytime_admin/to_csv.rb
300
326
  - lib/storytime_admin/version.rb
301
327
  - lib/tasks/admin_tasks.rake
302
328
  homepage: http://www.github.com/flyoverworks/storytime-admin
@@ -319,7 +345,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
319
345
  version: '0'
320
346
  requirements: []
321
347
  rubyforge_project:
322
- rubygems_version: 2.2.2
348
+ rubygems_version: 2.4.5.1
323
349
  signing_key:
324
350
  specification_version: 4
325
351
  summary: Admin engine originally created for Storytime
@@ -1,5 +0,0 @@
1
- $ ->
2
- $(".table-row-link").on "click", (e) ->
3
- unless $(e.target).data("confirm")? || $(e.target).parent("a[data-confirm]").length > 0
4
- url = $(@).data('url')
5
- document.location.href = url