wagn 1.16.12 → 1.16.13
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/lib/wagn/generators/wagn/wagn_generator.rb +13 -5
- data/rails/controllers/card_controller.rb +92 -72
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8e473eb9550da267709664cbb3ce08fb40c90c92
|
4
|
+
data.tar.gz: edcbe05bf48a8f157f0f7df766b5351d80bcfdbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26ece38ec313b7ccc52fc38f920cb2a67293fec2b56c5274c90107ad3202b5ab1076597d74b5e935fa97ca70ffd7224d4b5376f4bb4b6b657cf65ac6fa5b6a99
|
7
|
+
data.tar.gz: fde98b8b4bb6e5b8fc45ec4da9df60899bdcf6d775ffe8129376de31cf8997674892862661718f5b10536347b265762dfb70219aee996d1e12faec368bccc270
|
@@ -222,15 +222,23 @@ class WagnGenerator < Rails::Generators::AppBase
|
|
222
222
|
|
223
223
|
def database_gemfile_entry
|
224
224
|
return [] if options[:skip_active_record]
|
225
|
-
gem_name = gem_for_database
|
226
|
-
|
227
|
-
|
228
|
-
|
225
|
+
gem_name, gem_version = gem_for_database
|
226
|
+
if gem_name == 'mysql2'
|
227
|
+
# && Gem.loaded_specs['rails'].version < Gem::Version.new('4.2.5')
|
228
|
+
# Rails update from 4.2.4 to 4.2.5 didn't help.
|
229
|
+
# Current mysql2 gem (0.4.1) is still causing trouble.
|
230
|
+
# Maybe with the next Rails release?
|
231
|
+
# Could also be that ruby 1.9.3 is the problem.
|
232
|
+
gem_version = '0.3.20'
|
233
|
+
end
|
234
|
+
msg = "Use #{options[:database]} as the database for Active Record"
|
235
|
+
GemfileEntry.version gem_name, gem_version, msg
|
229
236
|
end
|
230
237
|
|
231
238
|
protected
|
239
|
+
|
232
240
|
def self.banner
|
233
|
-
|
241
|
+
"wagn new #{arguments.map(&:usage).join(' ')} [options]"
|
234
242
|
end
|
235
243
|
|
236
244
|
def mysql_socket
|
@@ -10,17 +10,11 @@ class CardController < ActionController::Base
|
|
10
10
|
include Card::Location
|
11
11
|
include Recaptcha::Verify
|
12
12
|
|
13
|
-
before_filter :per_request_setup, except: [:asset]
|
14
|
-
before_filter :load_id, only: [:read]
|
15
|
-
before_filter :load_card, except: [:asset]
|
16
|
-
before_filter :refresh_card, only: [:create, :update, :delete, :rollback]
|
17
|
-
|
18
13
|
layout nil
|
19
|
-
|
20
14
|
attr_reader :card
|
21
15
|
|
22
16
|
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
23
|
-
#
|
17
|
+
# PUBLIC METHODS
|
24
18
|
|
25
19
|
def create
|
26
20
|
handle { card.save }
|
@@ -38,93 +32,129 @@ class CardController < ActionController::Base
|
|
38
32
|
handle { card.delete }
|
39
33
|
end
|
40
34
|
|
35
|
+
# DEPRECATED
|
41
36
|
def asset
|
42
37
|
Rails.logger.info 'Routing assets through Card. Recommend symlink from ' \
|
43
38
|
'Deck to Card gem using "rake wagn:update_assets_symlink"'
|
44
39
|
asset_path = Decko::Engine.paths['gem-assets'].existent.first
|
45
40
|
filename = [params[:filename], params[:format]].join('.')
|
46
|
-
|
41
|
+
send_asset asset_path, filename, x_sendfile: true
|
47
42
|
end
|
48
43
|
|
49
|
-
|
44
|
+
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
45
|
+
# PRIVATE METHODS
|
50
46
|
|
51
|
-
|
52
|
-
def send_file_inside allowed_path, filename, options={}
|
53
|
-
if filename.include? '../'
|
54
|
-
raise Wagn::BadAddress
|
55
|
-
else
|
56
|
-
send_file File.join(allowed_path, filename), options
|
57
|
-
end
|
58
|
-
end
|
47
|
+
private
|
59
48
|
|
60
49
|
#-------( FILTERS )
|
61
50
|
|
62
|
-
|
51
|
+
before_filter :setup, except: [:asset]
|
52
|
+
before_filter :authenticate, except: [:asset]
|
53
|
+
before_filter :load_id, only: [:read]
|
54
|
+
before_filter :load_card, except: [:asset]
|
55
|
+
before_filter :refresh_card, only: [:create, :update, :delete, :rollback]
|
56
|
+
|
57
|
+
def setup
|
63
58
|
request.format = :html if !params[:format] # is this used??
|
64
59
|
Card::Cache.renew
|
65
60
|
Card::Env.reset controller: self
|
66
|
-
|
61
|
+
end
|
67
62
|
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
63
|
+
def authenticate
|
64
|
+
if params[:token]
|
65
|
+
ok = Card::Auth.set_current_from_token params[:token], params[:current]
|
66
|
+
raise Card::Oops, 'token authentication failed' unless ok
|
67
|
+
# arguably should be PermissionDenied; that requires a card object,
|
68
|
+
# and that's not loaded yet.
|
69
|
+
else
|
70
|
+
Card::Auth.set_current_from_session
|
73
71
|
end
|
74
72
|
end
|
75
73
|
|
76
74
|
def load_id
|
77
|
-
params[:id]
|
78
|
-
case
|
79
|
-
when
|
80
|
-
|
81
|
-
|
82
|
-
''
|
83
|
-
when params[:card] && params[:card][:name]
|
84
|
-
params[:card][:name]
|
85
|
-
when Card::Format.tagged(params[:view], :unknown_ok)
|
86
|
-
''
|
87
|
-
else
|
88
|
-
Card.setting(:home) || 'Home'
|
75
|
+
params[:id] =
|
76
|
+
case params[:id]
|
77
|
+
when '*previous' then return card_redirect(Card::Env.previous_location)
|
78
|
+
when nil then determine_id
|
79
|
+
else validate_id_encoding params[:id]
|
89
80
|
end
|
90
|
-
rescue ArgumentError # less than perfect way to handle encoding issues.
|
91
|
-
raise Wagn::BadAddress
|
92
81
|
end
|
93
82
|
|
94
83
|
def load_card
|
95
|
-
|
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
|
111
|
-
end
|
84
|
+
@card = new_or_fetch_card
|
112
85
|
raise Card::NotFound unless @card
|
113
86
|
|
114
|
-
@card.select_action_by_params params
|
87
|
+
@card.select_action_by_params params #
|
115
88
|
Card::Env[:main_name] = params[:main] || (card && card.name) || ''
|
116
89
|
|
117
|
-
|
118
|
-
true
|
90
|
+
card.errors.any? ? render_errors : true
|
119
91
|
end
|
120
92
|
|
121
93
|
def refresh_card
|
122
94
|
@card = card.refresh
|
123
95
|
end
|
124
96
|
|
125
|
-
|
97
|
+
# ----------( HELPER METHODS ) -------------
|
98
|
+
|
99
|
+
def new_or_fetch_card
|
100
|
+
opts = card_opts
|
101
|
+
if params[:action] == 'create'
|
102
|
+
# FIXME: we currently need a "new" card to catch duplicates
|
103
|
+
# (otherwise save will just act like a normal update)
|
104
|
+
# We may need a "#create" instance method to handle this checking?
|
105
|
+
Card.new opts
|
106
|
+
else
|
107
|
+
mark = params[:id] || opts[:name]
|
108
|
+
Card.fetch mark, new: opts
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def card_opts
|
113
|
+
opts = (params[:card] || {}).clone
|
114
|
+
# clone so that original params remain unaltered. need deeper clone?
|
115
|
+
opts[:type] ||= params[:type] if params[:type]
|
116
|
+
# for /new/:type shortcut. we should fix and deprecate this.
|
117
|
+
opts[:name] ||= params[:id].to_s.tr('_', ' ')
|
118
|
+
# move handling to Card::Name?
|
119
|
+
opts
|
120
|
+
end
|
126
121
|
|
127
|
-
|
122
|
+
def determine_id
|
123
|
+
case
|
124
|
+
when needs_setup?
|
125
|
+
prepare_setup_card!
|
126
|
+
when params[:card] && params[:card][:name]
|
127
|
+
params[:card][:name]
|
128
|
+
when Card::Format.tagged(params[:view], :unknown_ok)
|
129
|
+
''
|
130
|
+
else
|
131
|
+
Card.setting(:home) || 'Home'
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
135
|
+
def needs_setup?
|
136
|
+
Card::Auth.needs_setup? && Card::Env.html?
|
137
|
+
end
|
138
|
+
|
139
|
+
def prepare_setup_card!
|
140
|
+
params[:card] = { type_id: Card.default_accounted_type_id }
|
141
|
+
params[:view] = 'setup'
|
142
|
+
''
|
143
|
+
end
|
144
|
+
|
145
|
+
def validate_id_encoding id
|
146
|
+
# we should find the place where we produce these bad urls
|
147
|
+
id.valid_encoding? ? id : id.force_encoding('ISO-8859-1').encode('UTF-8')
|
148
|
+
end
|
149
|
+
|
150
|
+
def send_asset path, filename, options={}
|
151
|
+
if filename.include? '../'
|
152
|
+
# for security, block relative paths
|
153
|
+
raise Wagn::BadAddress
|
154
|
+
else
|
155
|
+
send_file File.join(path, filename), options
|
156
|
+
end
|
157
|
+
end
|
128
158
|
|
129
159
|
def card_redirect url
|
130
160
|
url = card_url url # make sure we have absolute url
|
@@ -203,7 +233,7 @@ class CardController < ActionController::Base
|
|
203
233
|
case exception
|
204
234
|
## arguably the view and status should be defined in the error class;
|
205
235
|
## some are redundantly defined in view
|
206
|
-
when Card::Oops, Card::
|
236
|
+
when Card::Oops, Card::BadQuery
|
207
237
|
card.errors.add :exception, exception.message
|
208
238
|
# these error messages are visible to end users and are generally not
|
209
239
|
# treated as bugs.
|
@@ -242,16 +272,6 @@ class CardController < ActionController::Base
|
|
242
272
|
Card::Env[:success]
|
243
273
|
end
|
244
274
|
|
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
|
254
|
-
|
255
275
|
def format_from_params
|
256
276
|
return :file if params[:explicit_file]
|
257
277
|
format = request.parameters[:format]
|
@@ -264,7 +284,7 @@ class CardController < ActionController::Base
|
|
264
284
|
self.params = success.params
|
265
285
|
else
|
266
286
|
# need tests. insure we get slot, main...
|
267
|
-
|
287
|
+
params.merge! success.params
|
268
288
|
end
|
269
289
|
end
|
270
290
|
|
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.
|
4
|
+
version: 1.16.13
|
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-11-
|
14
|
+
date: 2015-11-23 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.
|
36
|
+
version: 1.16.13
|
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.
|
43
|
+
version: 1.16.13
|
44
44
|
description: a wiki approach to stuctured data, dynamic interaction, and web design
|
45
45
|
email:
|
46
46
|
- info@wagn.org
|