abstracted 0.3.3 → 0.3.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +4 -3
- data/Gemfile.lock +12 -10
- data/app/assets/javascripts/abstract_resources.js +0 -1
- data/app/assets/javascripts/abstracted/app.fab_delete.coffee +3 -26
- data/app/assets/javascripts/abstracted/app.materialize.coffee +15 -1
- data/app/assets/javascripts/abstracted/app.page_scrolling.coffee +143 -0
- data/app/assets/javascripts/abstracted/app.resource_form.coffee +0 -7
- data/app/assets/javascripts/abstracted/app.resources_list.coffee +7 -4
- data/app/assets/javascripts/abstracted/app.shared.coffee +3 -0
- data/app/assets/javascripts/init.js.coffee +58 -18
- data/app/assets/javascripts/triggers.coffee +9 -21
- data/app/assets/stylesheets/abstract_resources.css +1 -0
- data/app/assets/stylesheets/balloon.min.css +1 -0
- data/app/controllers/abstract_resources_controller.rb +22 -20
- data/app/helpers/abstract_resources_helper.rb +2 -2
- data/app/models/abstract_resource.rb +29 -28
- data/app/views/abstract_resources/index.html.haml +32 -14
- data/app/views/abstract_resources/show.html.haml +3 -2
- data/lib/abstracted/version.rb +1 -1
- data/lib/exceptions.rb +2 -0
- data/spec/controllers/abstract_resources_controller_spec.rb +316 -176
- data/spec/dummy/db/test.sqlite3 +0 -0
- data/spec/dummy/log/test.log +8801 -0
- data/spec/policies/abstract_resources_policy.rb +83 -0
- data/spec/rails_helper.rb +92 -1
- data/spec/spec_helper.rb +2 -0
- metadata +6 -3
- data/app/assets/javascripts/pagescrolling.js.coffee +0 -93
@@ -0,0 +1,83 @@
|
|
1
|
+
class AbstractResourcePolicy
|
2
|
+
|
3
|
+
class Scope
|
4
|
+
attr_reader :current_user, :scope
|
5
|
+
|
6
|
+
def initialize(user, scope)
|
7
|
+
@current_user = user
|
8
|
+
@scope = scope
|
9
|
+
end
|
10
|
+
|
11
|
+
def resolve
|
12
|
+
scope.all
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
attr_reader :current_user, :model
|
17
|
+
|
18
|
+
def initialize(current_user, model)
|
19
|
+
@current_user = current_user
|
20
|
+
@model = model
|
21
|
+
end
|
22
|
+
|
23
|
+
def index?
|
24
|
+
# @current_user.admin?
|
25
|
+
true
|
26
|
+
end
|
27
|
+
|
28
|
+
def new?
|
29
|
+
# @current_user.admin?
|
30
|
+
true
|
31
|
+
end
|
32
|
+
|
33
|
+
def edit?
|
34
|
+
# @current_user.admin?
|
35
|
+
true
|
36
|
+
end
|
37
|
+
|
38
|
+
def show?
|
39
|
+
# @current_user.admin? or @current_user == @user
|
40
|
+
true
|
41
|
+
end
|
42
|
+
|
43
|
+
def create?
|
44
|
+
# @current_user.admin?
|
45
|
+
true
|
46
|
+
end
|
47
|
+
|
48
|
+
def update?
|
49
|
+
# @current_user.admin?
|
50
|
+
true
|
51
|
+
end
|
52
|
+
|
53
|
+
def destroy?
|
54
|
+
# return false if @current_user == @user
|
55
|
+
# @current_user.admin?
|
56
|
+
true
|
57
|
+
end
|
58
|
+
|
59
|
+
def attach?
|
60
|
+
true
|
61
|
+
end
|
62
|
+
|
63
|
+
def detach?
|
64
|
+
true
|
65
|
+
end
|
66
|
+
|
67
|
+
def prefer?
|
68
|
+
true
|
69
|
+
end
|
70
|
+
|
71
|
+
def defer?
|
72
|
+
true
|
73
|
+
end
|
74
|
+
|
75
|
+
def activate?
|
76
|
+
true
|
77
|
+
end
|
78
|
+
|
79
|
+
def deactivate?
|
80
|
+
true
|
81
|
+
end
|
82
|
+
|
83
|
+
end
|
data/spec/rails_helper.rb
CHANGED
@@ -87,12 +87,56 @@ end
|
|
87
87
|
|
88
88
|
|
89
89
|
class UsersController < AbstractResourcesController
|
90
|
+
def current_user
|
91
|
+
# User.create! id: 1010101, login: 'test'
|
92
|
+
end
|
93
|
+
def authenticate_user!
|
94
|
+
true
|
95
|
+
end
|
96
|
+
def print
|
97
|
+
authorize resource
|
98
|
+
render text: 'done', layout: false
|
99
|
+
end
|
100
|
+
def edit
|
101
|
+
authorize resource
|
102
|
+
render text: 'done', layout: false
|
103
|
+
end
|
104
|
+
def show
|
105
|
+
authorize resource
|
106
|
+
render text: 'done', layout: false
|
107
|
+
end
|
108
|
+
def index
|
109
|
+
authorize resource
|
110
|
+
render text: 'done', layout: false
|
111
|
+
end
|
90
112
|
def resource_params
|
91
113
|
params.require(:user).permit(:id, :login, posts_attributes: [:id, :title, :_destroy])
|
92
114
|
end
|
93
115
|
end
|
94
116
|
|
95
117
|
class PostsController < AbstractResourcesController
|
118
|
+
def current_user
|
119
|
+
# User.create! id: 1010101, login: 'test'
|
120
|
+
end
|
121
|
+
def print
|
122
|
+
authorize resource
|
123
|
+
render text: 'done', layout: false
|
124
|
+
end
|
125
|
+
def edit
|
126
|
+
authorize resource
|
127
|
+
render text: 'done', layout: false
|
128
|
+
end
|
129
|
+
def show
|
130
|
+
authorize resource
|
131
|
+
render text: 'done', layout: false
|
132
|
+
end
|
133
|
+
def authenticate_user!
|
134
|
+
true
|
135
|
+
end
|
136
|
+
def index
|
137
|
+
authorize resource
|
138
|
+
render text: 'done', layout: false
|
139
|
+
end
|
96
140
|
def resource_params
|
97
141
|
params.require(:post).permit(:id, :title, :user_id)
|
98
142
|
end
|
@@ -100,15 +144,62 @@ end
|
|
100
144
|
|
101
145
|
class User < AbstractResource
|
102
146
|
has_many :posts
|
147
|
+
def current_user
|
148
|
+
end
|
103
149
|
end
|
104
150
|
|
105
151
|
class Post < AbstractResource
|
106
152
|
belongs_to :user
|
107
153
|
end
|
108
154
|
|
155
|
+
class UserPolicy < AbstractResourcePolicy
|
156
|
+
def print?
|
157
|
+
true
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
class PostPolicy < AbstractResourcePolicy
|
162
|
+
def print?
|
163
|
+
true
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
109
167
|
Rails.application.routes.draw do
|
110
168
|
resources :posts
|
111
169
|
resources :users do
|
112
|
-
|
170
|
+
member do
|
171
|
+
get :print
|
172
|
+
end
|
173
|
+
collection do
|
174
|
+
get :print
|
175
|
+
end
|
176
|
+
resources :posts do
|
177
|
+
member do
|
178
|
+
get :print
|
179
|
+
end
|
180
|
+
collection do
|
181
|
+
get :print
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
scope '/admin' do
|
187
|
+
resources :users do
|
188
|
+
member do
|
189
|
+
get :print
|
190
|
+
end
|
191
|
+
collection do
|
192
|
+
get :print
|
193
|
+
end
|
194
|
+
resources :posts do
|
195
|
+
member do
|
196
|
+
get :print
|
197
|
+
end
|
198
|
+
collection do
|
199
|
+
get :print
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
113
203
|
end
|
204
|
+
|
114
205
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abstracted
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Walther H Diechmann
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-03-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
@@ -272,16 +272,17 @@ files:
|
|
272
272
|
- app/assets/javascripts/abstracted/.keep
|
273
273
|
- app/assets/javascripts/abstracted/app.fab_delete.coffee
|
274
274
|
- app/assets/javascripts/abstracted/app.materialize.coffee
|
275
|
+
- app/assets/javascripts/abstracted/app.page_scrolling.coffee
|
275
276
|
- app/assets/javascripts/abstracted/app.resource_form.coffee
|
276
277
|
- app/assets/javascripts/abstracted/app.resources_list.coffee
|
277
278
|
- app/assets/javascripts/abstracted/app.shared.coffee
|
278
279
|
- app/assets/javascripts/abstracted/app.sweetalert.coffee
|
279
280
|
- app/assets/javascripts/abstracted/keypress.coffee
|
280
281
|
- app/assets/javascripts/init.js.coffee
|
281
|
-
- app/assets/javascripts/pagescrolling.js.coffee
|
282
282
|
- app/assets/javascripts/triggers.coffee
|
283
283
|
- app/assets/stylesheets/abstract_resources.css
|
284
284
|
- app/assets/stylesheets/abstracted/.keep
|
285
|
+
- app/assets/stylesheets/balloon.min.css
|
285
286
|
- app/assets/stylesheets/scaffold.css
|
286
287
|
- app/assets/stylesheets/selectize.css.scss
|
287
288
|
- app/controllers/.keep
|
@@ -380,6 +381,7 @@ files:
|
|
380
381
|
- spec/factories/users.rb
|
381
382
|
- spec/features/posts/manage_posts_spec.rb
|
382
383
|
- spec/models/abstract_resource_spec.rb
|
384
|
+
- spec/policies/abstract_resources_policy.rb
|
383
385
|
- spec/rails_helper.rb
|
384
386
|
- spec/spec_helper.rb
|
385
387
|
- test/integration/abstract_resource_test.rb
|
@@ -635,6 +637,7 @@ test_files:
|
|
635
637
|
- spec/factories/users.rb
|
636
638
|
- spec/features/posts/manage_posts_spec.rb
|
637
639
|
- spec/models/abstract_resource_spec.rb
|
640
|
+
- spec/policies/abstract_resources_policy.rb
|
638
641
|
- spec/rails_helper.rb
|
639
642
|
- spec/spec_helper.rb
|
640
643
|
- test/integration/abstract_resource_test.rb
|
@@ -1,93 +0,0 @@
|
|
1
|
-
loadingPage = false
|
2
|
-
currentPage = 0
|
3
|
-
totalPages = 0
|
4
|
-
navPaginator = ''
|
5
|
-
lastPage = 0
|
6
|
-
nextPage = 0
|
7
|
-
pageUrl = ''
|
8
|
-
contxt = null
|
9
|
-
scrollTimeout = false
|
10
|
-
|
11
|
-
@evalPageNumber = (elem) ->
|
12
|
-
if elem
|
13
|
-
try
|
14
|
-
pn = elem[0].href
|
15
|
-
.split('?')[1]
|
16
|
-
.split('&')
|
17
|
-
.filter (el,i,array) ->
|
18
|
-
if el.match /^page/
|
19
|
-
return el
|
20
|
-
.join('')
|
21
|
-
.split('=')[1]
|
22
|
-
parseInt(pn)
|
23
|
-
catch error
|
24
|
-
pn = 0
|
25
|
-
|
26
|
-
#
|
27
|
-
# setVariables prepares for a great scrolling experience
|
28
|
-
#
|
29
|
-
@setVariables = (elem) ->
|
30
|
-
navPaginator = $('nav.pagination')
|
31
|
-
try
|
32
|
-
pageUrl = navPaginator.find('a[rel=next]')[0].href.replace( '?', '.js?scrolling=true&')
|
33
|
-
lastPage = evalPageNumber navPaginator.find('span.last a')
|
34
|
-
nextPage = evalPageNumber navPaginator.find('a[rel=next]')
|
35
|
-
contxt = $(elem)
|
36
|
-
if nextPage > 1
|
37
|
-
nextPage = 1
|
38
|
-
true
|
39
|
-
|
40
|
-
catch error
|
41
|
-
console.log error
|
42
|
-
return false
|
43
|
-
|
44
|
-
#
|
45
|
-
# closeToBottom checks to see if you're close to the bottom of the screen
|
46
|
-
#
|
47
|
-
@closeToBottom = () ->
|
48
|
-
return false if navPaginator.size() == 0
|
49
|
-
return ($(window).scrollTop() - parseInt($(document).height()) + parseInt($(window).height())) > -200
|
50
|
-
|
51
|
-
@findNextPageToLoad = () ->
|
52
|
-
nextPage += 1
|
53
|
-
if nextPage > lastPage
|
54
|
-
clearTimeout( scrollTimeout )
|
55
|
-
return false
|
56
|
-
if !pageUrl.split("?")[0].split(".js")[0].match window.location.href.split("?")[0]
|
57
|
-
clearTimeout( scrollTimeout )
|
58
|
-
return false
|
59
|
-
pageUrl
|
60
|
-
.replace /page=\d*&/, 'page=' + nextPage + '&'
|
61
|
-
|
62
|
-
|
63
|
-
@loadNextPage = () ->
|
64
|
-
if !loadingPage
|
65
|
-
url = findNextPageToLoad()
|
66
|
-
if url
|
67
|
-
loadingPage = true
|
68
|
-
jqxhr = $.ajax
|
69
|
-
url: url
|
70
|
-
type: 'GET'
|
71
|
-
dataType: 'html'
|
72
|
-
.done (data) ->
|
73
|
-
contxt.find('tbody').append(data)
|
74
|
-
loadingPage=false
|
75
|
-
.fail (data) ->
|
76
|
-
loadingPage = false
|
77
|
-
console.log 'err'
|
78
|
-
#
|
79
|
-
# scroll a list - behind the scenes calling in extra pages of content
|
80
|
-
#
|
81
|
-
@scrollTable = (elem) ->
|
82
|
-
return unless setVariables(elem)
|
83
|
-
if nextPage > 0
|
84
|
-
scrollHandler = () ->
|
85
|
-
clearTimeout( scrollTimeout )
|
86
|
-
if closeToBottom()
|
87
|
-
$.when loadNextPage()
|
88
|
-
.then scrollTimeout = setTimeout( scrollHandler, 250)
|
89
|
-
.then navPaginator.hide()
|
90
|
-
else
|
91
|
-
setTimeout( scrollHandler, 250)
|
92
|
-
|
93
|
-
scrollTimeout = setTimeout( scrollHandler, 250)
|