wagn 1.16.9 → 1.16.10

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: 6e2d535153a197b92c0822ab179707b0682c4bf0
4
- data.tar.gz: 61a2241a28124f1ffbe02b07988de44ecdccd85d
3
+ metadata.gz: 868985bd60371dbdf3eb8985578149faf1d72ca6
4
+ data.tar.gz: b2c87b109129dadd549da40bf355cde451b59df4
5
5
  SHA512:
6
- metadata.gz: 164ead08ce3191ec24b18852e3248638e0caf1719816792fc63669e7211a950d8660229a38ede7c4065b1a2d3b93b876e3c00963e9471dd4e56cb68be37e8ef1
7
- data.tar.gz: 7eb97223c44d5337b9a4333786a45d76725c38b5cdee516fe5efea2569a1e5d843e5cebe52248846a42829e3b82250111ca9ebb795124813a176884eefd13445
6
+ metadata.gz: ba75aef50dee68c139d0fb9d6b068c9cf8c3a2a05d291b0c680f31c2b14cf5e7478466857ce64c15c29c4b813c612ceb24c698591aecfcd21bcd6289b5a1307f
7
+ data.tar.gz: 130c1496e1ed4eefb74658b5b0a8a0337443748ace7f17f45efa04b899403f67a25ac768437770da57c4be545832f9604be7bac6b8c8639e161f3dcc3410a14e
@@ -0,0 +1,20 @@
1
+ @javascript
2
+ Feature: paging
3
+ In order to see limited items per page
4
+ As an Viewer
5
+ I want to have paging function
6
+
7
+ Background:
8
+ Given I am signed in as Joe Admin
9
+ And I create Search card "basic card search" with content "{\"type\":\"basic\", \"limit\":2}"
10
+ And I create HTML card "basic item structure" with content "{{_|name}}"
11
+ And I create HTML card "list all basic cards" with content "{{basic card search||content;structure:basic item structure}}"
12
+
13
+ Scenario: jump to pages should keep the item structure
14
+ When I go to card "list all basic cards"
15
+ And I click "2" within ".paging"
16
+ And I wait until ajax response done
17
+ Then I should see css class ".STRUCTURE-basic_item_structure" within ".search-result-item"
18
+ And I click "3" within ".paging"
19
+ And I wait until ajax response done
20
+ Then I should see css class ".STRUCTURE-basic_item_structure" within ".search-result-item"
@@ -1,7 +1,8 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  require 'uri'
3
3
  require 'cgi'
4
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "support", "paths"))
4
+ support_paths_file = File.join File.dirname(__FILE__), '..', 'support', 'paths'
5
+ require File.expand_path support_paths_file
5
6
 
6
7
  if RUBY_VERSION =~ /^2/
7
8
  require 'byebug'
@@ -9,7 +10,6 @@ else
9
10
  require 'debugger'
10
11
  end
11
12
 
12
-
13
13
  Given /^site simulates setup need$/ do
14
14
  Card::Auth.simulate_setup_need!
15
15
  end
@@ -21,30 +21,28 @@ end
21
21
 
22
22
  Given /^I am signed in as (.+)$/ do |account_name|
23
23
  accounted = Card[account_name]
24
- visit "/update/:signin?card[subcards][%2B*email][content]=#{accounted.account.email}&card[subcards][%2B*password][content]=joe_pass"
25
- #could optimize by specifying simple text success page
24
+ visit '/update/:signin?card[subcards][%2B*email][content]='\
25
+ "#{accounted.account.email}&card[subcards][%2B*password][content]=joe_pass"
26
+ # could optimize by specifying simple text success page
26
27
  end
27
28
 
28
29
  Given /^I am signed out$/ do
29
- visit "/"
30
- if page.has_content? "Sign out"
30
+ visit '/'
31
+ if page.has_content? 'Sign out'
31
32
  step 'I follow "Sign out"'
32
33
  end
33
34
  end
34
35
 
35
- =begin
36
- Given /^I sign in as (.+)$/ do |account_name|
37
- # FIXME: define a faster simulate method ("I am logged in as")
38
- accounted = Card[account_name]
39
- @current_id = accounted.id
40
- visit "/:signin"
41
- fill_in "card[subcards][+*email][content]", with: accounted.account.email
42
- fill_in "card[subcards][+*password][content]", with: 'joe_pass'
43
- click_button "Sign in"
44
- page.should have_content(account_name)
45
- end
46
- =end
47
-
36
+ # Given /^I sign in as (.+)$/ do |account_name|
37
+ # # FIXME: define a faster simulate method ("I am logged in as")
38
+ # accounted = Card[account_name]
39
+ # @current_id = accounted.id
40
+ # visit "/:signin"
41
+ # fill_in "card[subcards][+*email][content]", with: accounted.account.email
42
+ # fill_in "card[subcards][+*password][content]", with: 'joe_pass'
43
+ # click_button "Sign in"
44
+ # page.should have_content(account_name)
45
+ # end
48
46
 
49
47
  Given /^the card (.*) contains "([^\"]*)"$/ do |cardname, content|
50
48
  Card::Auth.as_bot do
@@ -60,23 +58,26 @@ When /^(.*) edits? "([^\"]*)"$/ do |username, cardname|
60
58
  end
61
59
  end
62
60
 
63
- When /^(.*) edits? "([^\"]*)" entering "([^\"]*)" into wysiwyg$/ do |username, cardname, content|
61
+ wysiwyg_re = /^(.*) edits? "([^\"]*)" entering "([^\"]*)" into wysiwyg$/
62
+ When wysiwyg_re do |username, cardname, content|
64
63
  signed_in_as(username) do
65
64
  visit "/card/edit/#{cardname.to_name.url_key}"
66
65
  page.execute_script "$('#main .card-content').val('#{content}')"
67
- click_button("Submit")
66
+ click_button 'Submit'
68
67
  end
69
68
  end
70
69
 
71
- When /^(.*) edits? "([^\"]*)" setting (.*) to "([^\"]*)"$/ do |username, cardname, field, content|
70
+ edit_re = /^(.*) edits? "([^\"]*)" setting (.*) to "([^\"]*)"$/
71
+ When edit_re do |username, cardname, _field, content|
72
72
  signed_in_as(username) do
73
73
  visit "/card/edit/#{cardname.to_name.url_key}"
74
74
  fill_in 'card[content]', with: content
75
- click_button("Submit")
75
+ click_button 'Submit'
76
76
  end
77
77
  end
78
78
 
79
- When /^(.*) edits? "([^\"]*)" filling in "([^\"]*)"$/ do |username, cardname, content|
79
+ filling_re = /^(.*) edits? "([^\"]*)" filling in "([^\"]*)"$/
80
+ When filling_re do |_username, cardname, content|
80
81
  visit "/card/edit/#{cardname.to_name.url_key}"
81
82
  fill_in 'card[content]', with: content
82
83
  end
@@ -87,27 +88,34 @@ When /^(.*) edits? "([^\"]*)" with plusses:/ do |username, cardname, plusses|
87
88
  plusses.hashes.first.each do |name, content|
88
89
  fill_in "card[subcards][#{cardname}+#{name}][content]", with: content
89
90
  end
90
- click_button("Submit")
91
+ click_button 'Submit'
91
92
  end
92
93
  end
93
94
 
94
- When /^(.*) creates?\s*a?\s*([^\s]*) card "(.*)" with content "(.*)"$/ do |username, cardtype, cardname, content|
95
+ content_re = /^(.*) creates?\s*a?\s*([^\s]*) card "(.*)" with content "(.*)"$/
96
+ When content_re do |username, cardtype, cardname, content|
95
97
  create_card(username, cardtype, cardname, content) do
96
- normal_textarea_card_type = ["JavaScript","CoffeeScript","HTML","CSS","SCSS","Search"]
97
- if not normal_textarea_card_type.include? cardtype or not page.evaluate_script "typeof ace != 'undefined'"
98
- fill_in("card[content]", with: content)
98
+ normal_textarea_types = %w(
99
+ JavaScript CoffeeScript HTML CSS SCSS Search
100
+ )
101
+ if !normal_textarea_types.include?(cardtype) ||
102
+ !page.evaluate_script("typeof ace != 'undefined'")
103
+ fill_in('card[content]', with: content)
99
104
  else
100
- page.execute_script %{ace.edit($('.ace_editor').get(0)).getSession().setValue('#{content}')}
105
+ page.execute_script "ace.edit($('.ace_editor').get(0))"\
106
+ ".getSession().setValue('#{content}')"
101
107
  end
102
108
  end
103
109
  end
104
110
 
105
- When /^(.*) creates?\s*([^\s]*) card "([^"]*)"$/ do |username, cardtype, cardname|
106
- create_card(username,cardtype,cardname)
111
+ create_re = /^(.*) creates?\s*([^\s]*) card "([^"]*)"$/
112
+ When create_re do |username, cardtype, cardname|
113
+ create_card username, cardtype, cardname
107
114
  end
108
115
 
109
- When /^(.*) creates?\s*([^\s]*) card "([^"]*)" with plusses:$/ do |username,cardtype,cardname,plusses|
110
- create_card(username,cardtype,cardname) do
116
+ plus_re = /^(.*) creates?\s*([^\s]*) card "([^"]*)" with plusses:$/
117
+ When plus_re do |username, cardtype, cardname, plusses|
118
+ create_card(username, cardtype, cardname) do
111
119
  plusses.hashes.first.each do |name, content|
112
120
  fill_in "card[subcards][+#{name}][content]", with: content
113
121
  end
@@ -122,30 +130,30 @@ end
122
130
 
123
131
  When /^(?:|I )enter "([^"]*)" into "([^"]*)"$/ do |value, field|
124
132
  selector = ".RIGHT-#{field.to_name.safe_key} input.card-content"
125
- find( selector ).set value
133
+ find(selector).set value
126
134
  end
127
135
 
128
136
  When /^(?:|I )upload the (.+) "(.+)"$/ do |attachment_name, filename|
129
137
  script = "$('input[type=file]').css('opacity','1');"
130
138
  page.driver.browser.execute_script(script)
131
- attach_file("card_#{attachment_name}", File.join(Wagn.gem_root,'features', 'support', filename))
139
+ file = File.join Wagn.gem_root, 'features', 'support', filename
140
+ attach_file "card_#{attachment_name}", file
132
141
  end
133
142
 
134
- Given /^(.*) (is|am) watching "([^\"]+)"$/ do |user, verb, cardname|
135
- user = Card::Auth.current.name if user == "I"
143
+ Given /^(.*) (is|am) watching "([^\"]+)"$/ do |user, _verb, cardname|
144
+ user = Card::Auth.current.name if user == 'I'
136
145
  signed_in_as user do
137
146
  step "the card #{cardname}+#{user}+*follow contains \"[[*always]]\""
138
147
  end
139
148
  end
140
149
 
141
- Given /^(.*) (is|am) not watching "([^\"]+)"$/ do |user, verb, cardname|
142
- user = Card::Auth.current.name if user == "I"
150
+ Given /^(.*) (is|am) not watching "([^\"]+)"$/ do |user, _verb, cardname|
151
+ user = Card::Auth.current.name if user == 'I'
143
152
  signed_in_as user do
144
153
  step "the card #{cardname}+#{user}+*follow contains \"[[*never]]\""
145
154
  end
146
155
  end
147
156
 
148
-
149
157
  When /I wait a sec/ do
150
158
  sleep 1
151
159
  end
@@ -162,45 +170,49 @@ When /^I wait until ajax response done$/ do
162
170
  end
163
171
  end
164
172
 
165
- Then /what/ do
166
- save_and_open_page
167
- end
168
-
169
- Then /debug/ do
170
- if RUBY_VERSION =~ /^2/
171
- require 'pry'
172
- binding.pry
173
- else
174
- debugger
175
- end
176
- nil
177
- end
178
-
179
- def create_card(username,cardtype,cardname,content="")
173
+ # Then /what/ do
174
+ # save_and_open_page
175
+ # end
176
+ #
177
+ # Then /debug/ do
178
+ # if RUBY_VERSION =~ /^2/
179
+ # require 'pry'
180
+ # binding.pry
181
+ # else
182
+ # debugger
183
+ # end
184
+ # nil
185
+ # end
186
+
187
+ def create_card username, cardtype, cardname, content=''
180
188
  signed_in_as(username) do
181
- if cardtype=='Pointer'
189
+ if cardtype == 'Pointer'
182
190
  Card.create name: cardname, type: cardtype, content: content
183
191
  else
184
192
  visit "/card/new?card[name]=#{CGI.escape(cardname)}&type=#{cardtype}"
185
193
  yield if block_given?
186
- click_button("Submit")
194
+ click_button 'Submit'
187
195
  end
188
196
  end
189
197
  end
190
198
 
191
199
  def signed_in_as username
192
- sameuser = (username == "I" or Card::Auth.current.key == username.to_name.key)
200
+ sameuser = (username == 'I')
201
+ sameuser ||= (Card::Auth.current.key == username.to_name.key)
193
202
  was_signed_in = Card::Auth.current_id if Card::Auth.signed_in?
194
203
  unless sameuser
195
204
  step "I am signed in as #{username}"
196
205
  end
197
206
  yield
198
- unless sameuser
199
- step( was_signed_in ? "I am signed in as #{Card[was_signed_in].name}" : 'I follow "Sign out"' )
200
- end
207
+ return if sameuser
208
+ msg = if was_signed_in
209
+ "I am signed in as #{Card[was_signed_in].name}"
210
+ else
211
+ 'I follow "Sign out"'
212
+ end
213
+ step msg
201
214
  end
202
215
 
203
-
204
216
  When /^In (.*) I follow "([^\"]*)"$/ do |section, link|
205
217
  within scope_of(section) do
206
218
  click_link link
@@ -213,7 +225,14 @@ When /^In (.*) I click "(.*)"$/ do |section, link|
213
225
  end
214
226
  end
215
227
 
216
- When /^In (.*) I find link with class "(.*)" and click it$/ do |section, css_class|
228
+ When /^I click "(.*)" within "(.*)"$/ do |link, selector|
229
+ within selector do
230
+ click_link link
231
+ end
232
+ end
233
+
234
+ link_re = /^In (.*) I find link with class "(.*)" and click it$/
235
+ When link_re do |section, css_class|
217
236
  within scope_of(section) do
218
237
  find("a.#{css_class}").click
219
238
  end
@@ -224,6 +243,7 @@ When /^In (.*) I find link with icon "(.*)" and click it$/ do |section, icon|
224
243
  find("a > span.glyphicon-#{icon}").click
225
244
  end
226
245
  end
246
+
227
247
  When /^In (.*) I find button with icon "(.*)" and click it$/ do |section, icon|
228
248
  within scope_of(section) do
229
249
  find("button > span.glyphicon-#{icon}").click
@@ -231,11 +251,12 @@ When /^In (.*) I find button with icon "(.*)" and click it$/ do |section, icon|
231
251
  end
232
252
 
233
253
  Then /I submit$/ do
234
- click_button("Submit")
254
+ click_button 'Submit'
235
255
  end
236
256
 
237
257
  When /^I open the main card menu$/ do
238
- page.execute_script "$('#main .menu-slot .vertical-card-menu.show-on-hover .card-slot').show()"
258
+ slot = "$('#main .menu-slot .vertical-card-menu.show-on-hover .card-slot')"
259
+ page.execute_script "#{slot}.show()"
239
260
  page.find('#main .menu-slot .card-menu a').click
240
261
  end
241
262
 
@@ -243,43 +264,41 @@ When /^I close the modal window$/ do
243
264
  page.find('.modal-menu .close-modal').click
244
265
  end
245
266
 
246
- When /^I pick (.*)$/ do |menu_item|
247
- end
267
+ # When /^I pick (.*)$/ do |menu_item|
268
+ # end
248
269
 
249
270
  Then /the card (.*) should contain "([^\"]*)"$/ do |cardname, content|
250
271
  visit path_to("card #{cardname}")
251
- within scope_of("main card content") do
272
+ within scope_of('main card content') do
252
273
  expect(page).to have_content(content)
253
274
  end
254
275
  end
255
276
 
256
277
  Then /the card (.*) should not contain "([^\"]*)"$/ do |cardname, content|
257
278
  visit path_to("card #{cardname}")
258
- within scope_of("main card content") do
279
+ within scope_of('main card content') do
259
280
  expect(page).not_to have_content(content)
260
281
  end
261
282
  end
262
283
 
263
284
  Then /the card (.*) should point to "([^\"]*)"$/ do |cardname, content|
264
285
  visit path_to("card #{cardname}")
265
- within scope_of("pointer card content") do
286
+ within scope_of('pointer card content') do
266
287
  expect(page).to have_content(content)
267
288
  end
268
289
  end
269
290
 
270
291
  Then /the card (.*) should not point to "([^\"]*)"$/ do |cardname, content|
271
292
  visit path_to("card #{cardname}")
272
- within scope_of("pointer card content") do
293
+ within scope_of('pointer card content') do
273
294
  expect(page).not_to have_content(content)
274
295
  end
275
296
  end
276
297
 
277
-
278
-
279
298
  Then /^In (.*) I should see "([^\"]*)"$/ do |section, text|
280
299
  within scope_of(section) do
281
300
  if text.index('|')
282
- expect(text.split('|').any? {|t| have_content(t)}).to be
301
+ expect(text.split('|').any? { |t| have_content(t) }).to be
283
302
  else
284
303
  expect(page).to have_content(text)
285
304
  end
@@ -292,19 +311,23 @@ Then /^In (.*) I should not see "([^\"]*)"$/ do |section, text|
292
311
  end
293
312
  end
294
313
 
295
- Then /^In (.*) I should (not )?see a ([^\"]*) with class "([^\"]*)"$/ do |selection, neg, element, selector|
314
+ class_re = /^In (.*) I should (not )?see a ([^\"]*) with class "([^\"]*)"$/
315
+ Then class_re do |selection, neg, element, selector|
296
316
  # checks for existence of a element with a class in a selection context
297
317
  element = 'a' if element == 'link'
298
318
  within scope_of(selection) do
299
- page.send( ( neg ? :should_not : :should ), have_css( [ element, selector ] * '.' ) )
319
+ verb = neg ? :should_not : :should
320
+ page.send(verb, have_css([element, selector] * '.'))
300
321
  end
301
322
  end
302
323
 
303
- Then /^In (.*) I should (not )?see a ([^\"]*) with content "([^\"]*)"$/ do |selection, neg, element, content|
324
+ content_re = /^In (.*) I should (not )?see a ([^\"]*) with content "([^\"]*)"$/
325
+ Then content_re do |selection, neg, element, content|
304
326
  # checks for existence of a element with a class in a selection context
305
327
  element = 'a' if element == 'link'
306
328
  within scope_of(selection) do
307
- page.send( ( neg ? :should_not : :should ), have_css( element, text: content ) )
329
+ verb = neg ? :should_not : :should
330
+ page.send(verb, have_css(element, text: content))
308
331
  end
309
332
  end
310
333
 
@@ -313,7 +336,9 @@ Then /^the "([^"]*)" field should contain "([^"]*)"$/ do |field, value|
313
336
  end
314
337
 
315
338
  Then /^"([^"]*)" should be selected for "([^"]*)"$/ do |value, field|
316
- expect(field_labeled(field).element.search(".//option[@selected = 'selected']").inner_html).to match(/#{value}/)
339
+ element = field_labeled(field).element
340
+ selected = element.search ".//option[@selected = 'selected']"
341
+ expect(selected.inner_html).to match /#{value}/
317
342
  end
318
343
 
319
344
  When /^I press enter to search$/ do
@@ -333,7 +358,8 @@ Then /^I should see an image of size "(.+)" and type "(.+)"$/ do |size, type|
333
358
  find("img[src*='#{size}.#{type}']")
334
359
  end
335
360
 
336
- Then /^I should see a non-mod image of size "(.+)" and type "(.+)"$/ do |size, type|
361
+ img_should = /^I should see a non-mod image of size "(.+)" and type "(.+)"$/
362
+ Then img_should do |size, type|
337
363
  element = find("img[src*='#{size}.#{type}']")
338
364
  expect(element[:src]).to match(%r(/~\d+/))
339
365
  end
@@ -342,7 +368,13 @@ Then /^I should see "([^\"]*)" in color (.*)$/ do |text, css_class|
342
368
  page.has_css?(".diff-#{css_class}", text: text)
343
369
  end
344
370
 
371
+ css_should = /^I should see css class "([^\"]*)" within "(.*)"$/
372
+ Then css_should do |css_class, selector|
373
+ within selector do
374
+ find(css_class)
375
+ end
376
+ end
377
+
345
378
  When /^I fill in "([^\"]*)" with$/ do |field, value|
346
379
  fill_in(field, with: value)
347
380
  end
348
-
@@ -66,7 +66,7 @@ group :test do
66
66
  gem 'spork', '>=0.9'
67
67
  gem 'rr'#, '=1.0.0'
68
68
  gem 'simplecov', '~> 0.7.1', :require => false #test coverage
69
-
69
+ gem 'codeclimate-test-reporter', require: nil
70
70
  # gem 'guard-rspec', '~> 4.2' # trigger test runs based on file edits,
71
71
  # currently not compatible with spring-watcher-listen
72
72
  if RUBY_PLATFORM =~ /darwin/
@@ -1,4 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
+ require "codeclimate-test-reporter"
3
+ CodeClimate::TestReporter.start
2
4
  require 'spork'
3
5
 
4
6
  ENV["RAILS_ENV"] = 'test'
@@ -3,24 +3,23 @@
3
3
  require_dependency 'card'
4
4
 
5
5
  require_dependency 'wagn/exceptions'
6
- require_dependency 'card/mailer' #otherwise Net::SMTPError rescues can cause problems when error raised comes before Card::Mailer is mentioned
6
+ require_dependency 'card/mailer' # otherwise Net::SMTPError rescues can cause
7
+ # problems when error raised comes before Card::Mailer is mentioned
7
8
 
8
9
  class CardController < ActionController::Base
9
-
10
10
  include Card::Location
11
11
  include Recaptcha::Verify
12
12
 
13
13
  before_filter :per_request_setup, except: [:asset]
14
- before_filter :load_id, only: [ :read ]
14
+ before_filter :load_id, only: [:read]
15
15
  before_filter :load_card, except: [:asset]
16
- before_filter :refresh_card, only: [ :create, :update, :delete, :rollback ]
16
+ before_filter :refresh_card, only: [:create, :update, :delete, :rollback]
17
17
 
18
18
  layout nil
19
19
 
20
20
  attr_reader :card
21
21
 
22
-
23
- #~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
22
+ # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
24
23
  # CORE METHODS
25
24
 
26
25
  def create
@@ -40,18 +39,18 @@ class CardController < ActionController::Base
40
39
  end
41
40
 
42
41
  def asset
43
- Rails.logger.info "Routing assets through Card. Recommend symlink from Deck to Card gem using 'rake wagn:update_assets_symlink'"
42
+ Rails.logger.info 'Routing assets through Card. Recommend symlink from ' \
43
+ 'Deck to Card gem using "rake wagn:update_assets_symlink"'
44
44
  asset_path = Decko::Engine.paths['gem-assets'].existent.first
45
- filename = [ params[:filename], params[:format] ].join('.')
46
- send_file_inside asset_path, filename , x_sendfile: true
45
+ filename = [params[:filename], params[:format]].join('.')
46
+ send_file_inside asset_path, filename, x_sendfile: true
47
47
  end
48
48
 
49
-
50
49
  private
51
50
 
52
51
  # make sure that filename doesn't leave allowed_path using ".."
53
- def send_file_inside(allowed_path, filename, options = {})
54
- if filename.include? "../"
52
+ def send_file_inside allowed_path, filename, options={}
53
+ if filename.include? '../'
55
54
  raise Wagn::BadAddress
56
55
  else
57
56
  send_file File.join(allowed_path, filename), options
@@ -61,27 +60,29 @@ class CardController < ActionController::Base
61
60
  #-------( FILTERS )
62
61
 
63
62
  def per_request_setup
64
- request.format = :html if !params[:format] #is this used??
63
+ request.format = :html if !params[:format] # is this used??
65
64
  Card::Cache.renew
66
65
  Card::Env.reset controller: self
67
66
  Card::Auth.set_current_from_session
68
67
 
69
- if params[:id] && !params[:id].valid_encoding? # slightly better way to handle encoding issues (than the rescue in load_id)
70
- # we should find the place where we produce these bad urls
68
+ if params[:id] && !params[:id].valid_encoding?
69
+ # slightly better way to handle encoding issues (than the rescue in
70
+ # load_id)
71
+ # we should find the place where we produce these bad urls
71
72
  params[:id] = params[:id].force_encoding('ISO-8859-1').encode('UTF-8')
72
73
  end
73
74
  end
74
75
 
75
-
76
76
  def load_id
77
- params[:id] ||= case
77
+ params[:id] ||=
78
+ case
78
79
  when Card::Auth.needs_setup? && Card::Env.html?
79
80
  params[:card] = { type_id: Card.default_accounted_type_id }
80
81
  params[:view] = 'setup'
81
82
  ''
82
83
  when params[:card] && params[:card][:name]
83
84
  params[:card][:name]
84
- when Card::Format.tagged( params[:view], :unknown_ok )
85
+ when Card::Format.tagged(params[:view], :unknown_ok)
85
86
  ''
86
87
  else
87
88
  Card.setting(:home) || 'Home'
@@ -90,25 +91,23 @@ class CardController < ActionController::Base
90
91
  raise Wagn::BadAddress
91
92
  end
92
93
 
93
-
94
94
  def load_card
95
- @card = case params[:id]
96
- when '*previous'
97
- return card_redirect( Card::Env.previous_location )
98
- else # get by name
99
- opts = params[:card] ? params[:card].clone : {} # clone so that original params remain unaltered. need deeper clone?
100
- opts[:type] ||= params[:type] if params[:type] # for /new/:type shortcut. we should fix and deprecate this.
101
- opts[:name] ||= params[:id].to_s.gsub( '_', ' ') # move handling to Card::Name?
102
-
103
- if params[:action] == 'create'
104
- # FIXME we currently need a "new" card to catch duplicates (otherwise #save will just act like a normal update)
105
- # I think we may need to create a "#create" instance method that handles this checking.
106
- # that would let us get rid of this...
107
- Card.new opts
108
- else
109
- mark = params[:id] || opts[:name]
110
- Card.fetch mark, new: opts
111
- end
95
+ if params[:id] == '*previous'
96
+ return card_redirect(Card::Env.previous_location)
97
+ end
98
+
99
+ opts = card_attr_from_params
100
+ @card =
101
+ if params[:action] == 'create'
102
+ # FIXME: we currently need a "new" card to catch duplicates (otherwise
103
+ # save will just act like a normal update)
104
+ # I think we may need to create a "#create" instance method that
105
+ # handles this checking.
106
+ # that would let us get rid of this...
107
+ Card.new opts
108
+ else
109
+ mark = params[:id] || opts[:name]
110
+ Card.fetch mark, new: opts
112
111
  end
113
112
  raise Card::NotFound unless @card
114
113
 
@@ -123,25 +122,16 @@ class CardController < ActionController::Base
123
122
  @card = card.refresh
124
123
  end
125
124
 
126
-
127
125
  protected
128
126
 
129
- def ajax?
130
- Card::Env.ajax?
131
- end
132
-
133
- def success
134
- Card::Env[:success]
135
- end
136
-
137
127
  # ----------( rendering methods ) -------------
138
128
 
139
129
  def card_redirect url
140
- url = card_url url #make sure we have absolute url
130
+ url = card_url url # make sure we have absolute url
141
131
  if ajax?
142
132
  # lets client reset window location (not just receive redirected response)
143
133
  # formerly used 303 response, but that gave IE the fits
144
- render json: {redirect: url}
134
+ render json: { redirect: url }
145
135
  else
146
136
  redirect_to url
147
137
  end
@@ -155,58 +145,45 @@ class CardController < ActionController::Base
155
145
 
156
146
  def render_success
157
147
  success.name_context = @card.cardname
158
- if !ajax? || success.hard_redirect?
159
- card_redirect success.to_url
160
- elsif String === success.target
161
- render text: success.target
162
- else
163
- if success.soft_redirect?
164
- self.params = success.params
165
- else
166
- self.params.merge! success.params # #need tests. insure we get slot, main...
167
- end
168
- @card = success.target
169
- @card.select_action_by_params params
170
- show
171
- end
172
- end
148
+ return card_redirect success.to_url if !ajax? || success.hard_redirect?
149
+ return render text: success.target if success.target.is_a? String
173
150
 
151
+ @card = success.target
152
+ update_params_for_success
153
+ @card.select_action_by_params params
154
+ show
155
+ end
174
156
 
175
157
  def render_errors
176
- #fixme - should prioritize certain error classes
158
+ # FIXME: should prioritize certain error classes
177
159
  code = nil
178
- card.errors.each do |key, msg|
179
- break if code = Card.error_codes[ key ]
160
+ card.errors.each do |key, _msg|
161
+ break if (code = Card.error_codes[key])
180
162
  end
181
- view, status = code || [ :errors, 422]
163
+ view, status = code || [:errors, 422]
182
164
  show view, status
183
165
  end
184
166
 
185
- def show view = nil, status = 200
186
- # ActiveSupport::Notifications.instrument('card', message: 'CardController#show') do
167
+ def show view=nil, status=200
187
168
  card.action = :read
188
- format = request.parameters[:format]
189
- format = :file if params[:explicit_file] or !Card::Format.registered.member? format #unknown format
169
+ card.content = card.last_draft_content if use_draft?
190
170
 
191
- opts = ( params[:slot] || {} ).deep_symbolize_keys
192
171
  view ||= params[:view]
172
+ slot_opts = (params[:slot] || {}).deep_symbolize_keys
193
173
 
194
- if params[:edit_draft] && card.drafts.present?
195
- card.content = card.drafts.last.card_changes.last.value
196
- end
174
+ format = format_from_params
197
175
  formatter = card.format(format.to_sym)
198
176
  result = card.run_callbacks :show do
199
- formatter.show view, opts
177
+ formatter.show view, slot_opts
200
178
  end
201
179
  status = formatter.error_status || status
202
180
 
203
181
  deliver format, result, status
204
182
  end
205
183
 
206
-
207
184
  def deliver format, result, status
208
- if format==:file && status==200
209
- send_file *result
185
+ if format == :file && status == 200
186
+ send_file(*result)
210
187
  elsif status == 302
211
188
  card_redirect result
212
189
  else
@@ -222,27 +199,32 @@ class CardController < ActionController::Base
222
199
  @card ||= Card.new
223
200
  Card::Error.current = exception
224
201
 
225
-
226
- view = case exception
202
+ view =
203
+ case exception
227
204
  ## arguably the view and status should be defined in the error class;
228
205
  ## some are redundantly defined in view
229
206
  when Card::Oops, Card::Query
230
207
  card.errors.add :exception, exception.message
231
- # these error messages are visible to end users and are generally not treated as bugs.
208
+ # these error messages are visible to end users and are generally not
209
+ # treated as bugs.
232
210
  # Probably want to rename accordingly.
233
211
  :errors
234
212
  when Card::PermissionDenied
235
213
  :denial
236
- when Card::NotFound, ActiveRecord::RecordNotFound, ActionController::MissingFile
214
+ when Card::NotFound, ActiveRecord::RecordNotFound,
215
+ ActionController::MissingFile
237
216
  :not_found
238
217
  when Wagn::BadAddress
239
218
  :bad_address
240
- else #the following indicate a code problem and therefore require full logging
219
+ else
220
+ # the following indicate a code problem and therefore require full
221
+ # logging
241
222
  @card.notable_exception_raised
242
223
 
243
224
  if ActiveRecord::RecordInvalid === exception
244
225
  :errors
245
- elsif Rails.logger.level == 0 # could also just check non-production mode...
226
+ # could also just check non-production mode...
227
+ elsif Rails.logger.level == 0
246
228
  raise exception
247
229
  else
248
230
  :server_error
@@ -252,9 +234,41 @@ class CardController < ActionController::Base
252
234
  show view
253
235
  end
254
236
 
237
+ def ajax?
238
+ Card::Env.ajax?
239
+ end
255
240
 
241
+ def success
242
+ Card::Env[:success]
243
+ end
256
244
 
257
- end
245
+ def card_attr_from_params
246
+ # clone so that original params remain unaltered. need deeper clone?
247
+ opts = params[:card] ? params[:card].clone : {}
248
+ # for /new/:type shortcut. we should fix and deprecate this.
249
+ opts[:type] ||= params[:type] if params[:type]
250
+ # move handling to Card::Name?
251
+ opts[:name] ||= params[:id].to_s.gsub('_', ' ')
252
+ opts
253
+ end
258
254
 
255
+ def format_from_params
256
+ return :file if params[:explicit_file]
257
+ format = request.parameters[:format]
258
+ return :file if !Card::Format.registered.member?(format) # unknown format
259
+ format
260
+ end
259
261
 
262
+ def update_params_for_success
263
+ if success.soft_redirect?
264
+ self.params = success.params
265
+ else
266
+ # need tests. insure we get slot, main...
267
+ self.params.merge! success.params
268
+ end
269
+ end
260
270
 
271
+ def use_draft?
272
+ params[:edit_draft] && card.drafts.present?
273
+ end
274
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wagn
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.16.9
4
+ version: 1.16.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan McCutchen
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2015-10-20 00:00:00.000000000 Z
14
+ date: 2015-11-04 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: rails
@@ -33,14 +33,14 @@ dependencies:
33
33
  requirements:
34
34
  - - '='
35
35
  - !ruby/object:Gem::Version
36
- version: 1.16.9
36
+ version: 1.16.10
37
37
  type: :runtime
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
41
  - - '='
42
42
  - !ruby/object:Gem::Version
43
- version: 1.16.9
43
+ version: 1.16.10
44
44
  description: a wiki approach to stuctured data, dynamic interaction, and web design
45
45
  email:
46
46
  - info@wagn.org
@@ -86,6 +86,7 @@ files:
86
86
  - features/layouts.feature
87
87
  - features/navbox.feature
88
88
  - features/notifications.feature
89
+ - features/paging.feature
89
90
  - features/pointer_inputs.feature
90
91
  - features/presetting_content.feature
91
92
  - features/reset_password.feature
@@ -767,6 +768,7 @@ test_files:
767
768
  - features/layouts.feature
768
769
  - features/navbox.feature
769
770
  - features/notifications.feature
771
+ - features/paging.feature
770
772
  - features/pointer_inputs.feature
771
773
  - features/presetting_content.feature
772
774
  - features/reset_password.feature