wagn 1.12.7 → 1.12.8
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/app/models/account.rb +5 -3
- data/db/migrate_cards/20130411191151_renaming_for_menu.rb +1 -0
- data/lib/card/format.rb +43 -8
- data/lib/tasks/wagn.rake +6 -2
- data/lib/wagn/application.rb +9 -0
- data/lib/wagn/migration_helper.rb +0 -1
- data/lib/wagn/version.rb +1 -1
- data/mods/core/formats/html_format.rb +3 -3
- data/mods/core/sets/all/name.rb +1 -1
- data/mods/standard/sets/all/account.rb +2 -2
- data/mods/standard/sets/all/admin.rb +1 -1
- data/mods/standard/sets/all/base.rb +1 -0
- data/mods/standard/sets/all/follow.rb +1 -1
- data/mods/standard/sets/all/rich_html.rb +24 -26
- data/mods/standard/sets/type/account_request.rb +2 -2
- data/mods/standard/sets/type/set.rb +5 -2
- data/mods/standard/sets/type/user.rb +2 -2
- data/script/{wagn.rb → wagn} +0 -0
- data/spec/lib/card/format_spec.rb +32 -1
- metadata +3 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.12.
|
1
|
+
1.12.8
|
data/app/models/account.rb
CHANGED
@@ -19,10 +19,12 @@ class Account
|
|
19
19
|
base.ok?(:create) && trait.ok?(:create)
|
20
20
|
end
|
21
21
|
|
22
|
-
# Authenticates a user by their login name and unencrypted password.
|
22
|
+
# Authenticates a user by their login name and unencrypted password.
|
23
23
|
def authenticate(email, password)
|
24
|
-
u = User.find_by_email(email.strip.downcase)
|
25
|
-
|
24
|
+
if u = User.find_by_email(email.strip.downcase) and
|
25
|
+
( Wagn.config.no_authentication or u.authenticated? password.strip )
|
26
|
+
u.card_id
|
27
|
+
end
|
26
28
|
end
|
27
29
|
|
28
30
|
# Encrypts some data with the salt.
|
data/lib/card/format.rb
CHANGED
@@ -206,17 +206,48 @@ class Card
|
|
206
206
|
render view, args
|
207
207
|
end
|
208
208
|
|
209
|
-
def optional_render view, args,
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
209
|
+
def optional_render view, args, default=:show
|
210
|
+
if show_view? view, args, default
|
211
|
+
view = args["optional_#{ canonicalize_view view }_view".to_sym] || view
|
212
|
+
render view, args
|
213
|
+
end
|
214
214
|
end
|
215
215
|
|
216
|
-
def _optional_render view, args,
|
216
|
+
def _optional_render view, args, default=:show
|
217
217
|
args[:allowed] = true
|
218
|
-
optional_render view, args,
|
218
|
+
optional_render view, args, default
|
219
|
+
end
|
220
|
+
|
221
|
+
def show_view? view, args, default=:show
|
222
|
+
view_key = canonicalize_view view
|
223
|
+
api_option = args["optional_#{ view_key }".to_sym]
|
224
|
+
case
|
225
|
+
# args remove option
|
226
|
+
when api_option == :always ; true
|
227
|
+
when api_option == :never ; false
|
228
|
+
# wagneer's choice
|
229
|
+
when show_views( args ).member?( view_key ) ; true
|
230
|
+
when hide_views( args ).member?( view_key ) ; false
|
231
|
+
# args override default
|
232
|
+
when api_option == :show ; true
|
233
|
+
when api_option == :hide ; false
|
234
|
+
# default
|
235
|
+
else ; default==:show
|
236
|
+
end
|
219
237
|
end
|
238
|
+
|
239
|
+
def show_views args
|
240
|
+
parse_view_visibility args[:show]
|
241
|
+
end
|
242
|
+
|
243
|
+
def hide_views args
|
244
|
+
parse_view_visibility args[:hide]
|
245
|
+
end
|
246
|
+
|
247
|
+
def parse_view_visibility val
|
248
|
+
(val || '').split( /[\s\,]+/ ).map { |view| canonicalize_view view }
|
249
|
+
end
|
250
|
+
|
220
251
|
|
221
252
|
def send_final_render_method view, *a
|
222
253
|
a = [{}] if a.empty?
|
@@ -228,7 +259,11 @@ class Card
|
|
228
259
|
unsupported_view view
|
229
260
|
end
|
230
261
|
rescue Exception=>e
|
231
|
-
|
262
|
+
if Rails.env.test?
|
263
|
+
raise e
|
264
|
+
else
|
265
|
+
rescue_view e, view
|
266
|
+
end
|
232
267
|
end
|
233
268
|
|
234
269
|
def rescue_view e, view
|
data/lib/tasks/wagn.rake
CHANGED
@@ -48,6 +48,8 @@ namespace :wagn do
|
|
48
48
|
|
49
49
|
desc "migrate structure and cards"
|
50
50
|
task :migrate =>:environment do
|
51
|
+
ENV['SCHEMA'] = "#{Wagn.gem_root}/db/schema.rb"
|
52
|
+
|
51
53
|
stamp = ENV['STAMP_MIGRATIONS']
|
52
54
|
|
53
55
|
puts 'migrating structure'
|
@@ -71,7 +73,8 @@ namespace :wagn do
|
|
71
73
|
desc "migrate cards"
|
72
74
|
task :cards => :environment do
|
73
75
|
Wagn::Cache.reset_global
|
74
|
-
ENV['
|
76
|
+
ENV['SCHEMA'] = "#{Wagn.gem_root}/db/schema.rb"
|
77
|
+
ENV['WAGN_MIGRATION'] = 'true'
|
75
78
|
Card # this is needed in production mode to insure core db structures are loaded before schema_mode is set
|
76
79
|
|
77
80
|
paths = ActiveRecord::Migrator.migrations_paths = Wagn::MigrationHelper.card_migration_paths
|
@@ -84,7 +87,8 @@ namespace :wagn do
|
|
84
87
|
|
85
88
|
desc 'write the version to a file (not usually called directly)' #maybe we should move this to a method?
|
86
89
|
task :stamp, :suffix do |t, args|
|
87
|
-
ENV['WAGN_MIGRATION'] = true
|
90
|
+
ENV['WAGN_MIGRATION'] = 'true'
|
91
|
+
ENV['SCHEMA'] = "#{Wagn.gem_root}/db/schema.rb"
|
88
92
|
|
89
93
|
stamp_file = Wagn::Version.schema_stamp_path args[:suffix]
|
90
94
|
Wagn::MigrationHelper.schema_mode args[:suffix ] do
|
data/lib/wagn/application.rb
CHANGED
@@ -37,6 +37,7 @@ module Wagn
|
|
37
37
|
config.filter_parameters += [:password]
|
38
38
|
config.read_only = !!ENV['WAGN_READ_ONLY']
|
39
39
|
config.allow_inline_styles = false
|
40
|
+
config.no_authentication = false
|
40
41
|
config.files_web_path = 'files'
|
41
42
|
config.cache_store = :file_store, 'tmp/cache'
|
42
43
|
|
@@ -70,6 +71,7 @@ module Wagn
|
|
70
71
|
add_wagn_path paths, "config/routes", :with => "config/routes.rb"
|
71
72
|
add_wagn_path paths, "db"
|
72
73
|
add_wagn_path paths, "db/migrate"
|
74
|
+
add_wagn_path paths, "db/migrate_cards"
|
73
75
|
add_wagn_path paths, "db/seeds", :with => "db/seeds.rb"
|
74
76
|
add_wagn_path paths, 'gem-mods', :with => 'mods'
|
75
77
|
|
@@ -91,6 +93,13 @@ module Wagn
|
|
91
93
|
paths[path] = Rails::Paths::Path.new(paths, wagn_path, with, options)
|
92
94
|
end
|
93
95
|
|
96
|
+
def load_tasks(app=self)
|
97
|
+
super
|
98
|
+
unless approot_is_gemroot?
|
99
|
+
Rake::Task["db:schema:dump"].clear
|
100
|
+
end
|
101
|
+
self
|
102
|
+
end
|
94
103
|
end
|
95
104
|
end
|
96
105
|
|
data/lib/wagn/version.rb
CHANGED
@@ -97,12 +97,12 @@ class Card::HtmlFormat < Card::Format
|
|
97
97
|
div = %{<div id="#{card.cardname.url_key}" data-card-id="#{card.id}" data-card-name="#{h card.name}" style="#{h args[:style]}" class="#{classes*' '}" } +
|
98
98
|
%{data-slot='#{html_escape_except_quotes slot_options( args )}'>#{yield}</div>}
|
99
99
|
|
100
|
-
if
|
101
|
-
div
|
102
|
-
else
|
100
|
+
if params[:debug] == 'slot' && !tagged(view, :no_wrap_comments )
|
103
101
|
name = h card.name
|
104
102
|
space = ' ' * @depth
|
105
103
|
%{<!--\n\n#{ space }BEGIN SLOT: #{ name }\n\n-->#{ div }<!--\n\n#{space}END SLOT: #{ name }\n\n-->}
|
104
|
+
else
|
105
|
+
div
|
106
106
|
end
|
107
107
|
end
|
108
108
|
|
data/mods/core/sets/all/name.rb
CHANGED
@@ -129,7 +129,7 @@ event :permit_codename, :before=>:approve, :on=>:update, :changed=>:codename do
|
|
129
129
|
end
|
130
130
|
|
131
131
|
event :validate_unique_codename, :after=>:permit_codename do
|
132
|
-
if
|
132
|
+
if codename.present? and errors.empty? and Card.find_by_codename(codename).present?
|
133
133
|
errors.add :codename, "codename #{codename} already in use"
|
134
134
|
end
|
135
135
|
end
|
@@ -133,7 +133,7 @@ format :html do
|
|
133
133
|
|
134
134
|
|
135
135
|
view :signin, :tags=>:unknown_ok, :perms=>:none do |args|
|
136
|
-
frame_args = args.merge :title=>'Sign In', :show_help=>true, :
|
136
|
+
frame_args = args.merge :title=>'Sign In', :show_help=>true, :optional_menu=>:never
|
137
137
|
signin_core = wrap_frame :signin, frame_args do
|
138
138
|
form_tag wagn_path('account/signin') do
|
139
139
|
%{
|
@@ -156,7 +156,7 @@ format :html do
|
|
156
156
|
|
157
157
|
|
158
158
|
view :forgot_password, :perms=>:none do |args|
|
159
|
-
frame_args = args.merge :title=>'Forgot Password', :show_help=>true, :
|
159
|
+
frame_args = args.merge :title=>'Forgot Password', :show_help=>true, :optional_menu=>:never
|
160
160
|
wrap_frame :forgot_password, frame_args do
|
161
161
|
form_tag wagn_path('account/forgot_password') do
|
162
162
|
%{
|
@@ -11,6 +11,7 @@ view :name, :perms=>:none do |args| card.name end
|
|
11
11
|
view :codename, :perms=>:none do |args| card.codename.to_s end
|
12
12
|
view :key, :perms=>:none do |args| card.key end
|
13
13
|
view :id, :perms=>:none do |args| card.id end
|
14
|
+
view :type, :perms=>:none do |args| card.type_name end
|
14
15
|
view :linkname, :perms=>:none do |args| card.cardname.url_key end
|
15
16
|
view :url, :perms=>:none do |args| wagn_url _render_linkname end
|
16
17
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
format :html do
|
2
2
|
|
3
3
|
watch_perms = lambda { |r| Account.logged_in? && !r.card.new_card? }
|
4
|
-
view :watch, :tags
|
4
|
+
view :watch, :tags=>[:unknown_ok, :no_wrap_comments], :denial=>:blank, :perms=>watch_perms do |args|
|
5
5
|
|
6
6
|
wrap :watch, args do
|
7
7
|
if card.watching_type?
|
@@ -23,7 +23,7 @@ format :html do
|
|
23
23
|
|
24
24
|
view :content do |args|
|
25
25
|
wrap :content, args.merge(:slot_class=>'card-content') do
|
26
|
-
menu = optional_render :menu, args,
|
26
|
+
menu = optional_render :menu, args, :hide
|
27
27
|
%{#{ menu }#{ _render_core args }}
|
28
28
|
end
|
29
29
|
end
|
@@ -31,7 +31,7 @@ format :html do
|
|
31
31
|
view :titled, :tags=>:comment do |args|
|
32
32
|
wrap :titled, args do
|
33
33
|
%{
|
34
|
-
#{ _render_header args.merge( :
|
34
|
+
#{ _render_header args.merge( :optional_menu=>:hide ) }
|
35
35
|
#{ wrap_body( :content=>true ) { _render_core args } }
|
36
36
|
#{ optional_render :comment_box, args }
|
37
37
|
}
|
@@ -54,7 +54,7 @@ format :html do
|
|
54
54
|
|
55
55
|
view :title do |args|
|
56
56
|
title = fancy_title args[:title]
|
57
|
-
title = _optional_render( :title_link, args.merge( :title_ready=>title ),
|
57
|
+
title = _optional_render( :title_link, args.merge( :title_ready=>title ), :hide ) || title
|
58
58
|
add_name_context
|
59
59
|
title
|
60
60
|
end
|
@@ -64,26 +64,30 @@ format :html do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
view :open, :tags=>:comment do |args|
|
67
|
-
args[:toggler] = link_to '', path( :view=>:closed ),
|
68
|
-
:remote => true,
|
69
|
-
:title => "close #{card.name}",
|
70
|
-
:class => "close-icon ui-icon ui-icon-circle-triangle-s toggler slotter nodblclick"
|
71
|
-
|
72
67
|
wrap_frame :open, args.merge(:content=>true) do
|
73
|
-
%{
|
68
|
+
%{
|
69
|
+
#{ _render_open_content args }
|
70
|
+
#{ optional_render :comment_box, args }
|
71
|
+
}
|
74
72
|
end
|
75
73
|
end
|
76
74
|
|
75
|
+
view :toggle do |args|
|
76
|
+
verb, adjective, direction = args[:toggle] == :close ? %w{ close closed s } : %w{ open open e }
|
77
|
+
|
78
|
+
link_to '', path( :view=>adjective ),
|
79
|
+
:remote => true,
|
80
|
+
:title => "#{verb} #{card.name}",
|
81
|
+
:class => "#{verb}-icon ui-icon ui-icon-circle-triangle-#{direction} toggler slotter nodblclick"
|
82
|
+
end
|
83
|
+
|
84
|
+
|
77
85
|
view :header do |args|
|
78
86
|
%{
|
79
87
|
<h1 class="card-header">
|
80
|
-
#{ args
|
88
|
+
#{ _optional_render :toggle, args, :hide }
|
81
89
|
#{ _render_title args }
|
82
|
-
#{
|
83
|
-
args[:custom_menu] or unless args[:hide_menu] # developer config
|
84
|
-
_optional_render :menu, args, (args[:menu_default_hidden] || false) # wagneer config
|
85
|
-
end
|
86
|
-
}
|
90
|
+
#{ _optional_render :menu, args }
|
87
91
|
</h1>
|
88
92
|
}
|
89
93
|
end
|
@@ -106,7 +110,7 @@ format :html do
|
|
106
110
|
@menu_vars.merge!({
|
107
111
|
:edit => card.ok?(:update),
|
108
112
|
:account => card.account && card.update_account_ok?,
|
109
|
-
:watch => Account.logged_in? && render_watch
|
113
|
+
:watch => Account.logged_in? && render_watch,
|
110
114
|
:creator => card.creator.name,
|
111
115
|
:updater => card.updater.name,
|
112
116
|
:delete => card.ok?(:delete) && link_to( 'delete', path(:action=>:delete),
|
@@ -131,13 +135,7 @@ format :html do
|
|
131
135
|
end
|
132
136
|
|
133
137
|
view :closed do |args|
|
134
|
-
args
|
135
|
-
:remote => true,
|
136
|
-
:title => "open #{card.name}",
|
137
|
-
:class => "open-icon ui-icon ui-icon-circle-triangle-e toggler slotter nodblclick"
|
138
|
-
|
139
|
-
wrap_frame :closed, args.merge(:content=>true, :body_class=>'closed-content') do
|
140
|
-
# wrap :closed, args do
|
138
|
+
wrap_frame :closed, args.merge(:content=>true, :body_class=>'closed-content', :toggle=>:close ) do
|
141
139
|
_render_closed_content args
|
142
140
|
end
|
143
141
|
end
|
@@ -377,8 +375,8 @@ format :html do
|
|
377
375
|
view :change do |args|
|
378
376
|
wrap :change, args do
|
379
377
|
%{
|
380
|
-
#{link_to_page card.name, nil, :class=>'change-card'}
|
381
|
-
#{ _optional_render :menu, args,
|
378
|
+
#{ link_to_page card.name, nil, :class=>'change-card' }
|
379
|
+
#{ _optional_render :menu, args, :hide }
|
382
380
|
#{
|
383
381
|
if rev = card.current_revision and !rev.new_record?
|
384
382
|
# this check should be unnecessary once we fix search result bug
|
@@ -417,7 +415,7 @@ format :html do
|
|
417
415
|
</div>}
|
418
416
|
end
|
419
417
|
|
420
|
-
wrap_frame :notfound, args.merge(:title=>'Not Found', :
|
418
|
+
wrap_frame :notfound, args.merge(:title=>'Not Found', :optional_menu=>:never) do
|
421
419
|
%{
|
422
420
|
<h2>Could not find #{card.name.present? ? "<em>#{card.name}</em>" : 'that'}.</h2>
|
423
421
|
#{sign_in_or_up_links}
|
@@ -3,7 +3,7 @@
|
|
3
3
|
format :html do
|
4
4
|
view :new do |args|
|
5
5
|
#FIXME - make more use of standard new view
|
6
|
-
frame_args = args.merge :title=>'Sign Up', :show_help=>true #, :
|
6
|
+
frame_args = args.merge :title=>'Sign Up', :show_help=>true #, :optional_menu=>:never
|
7
7
|
frame_args[:help_text] = case
|
8
8
|
when card.rule_card( :add_help, :fallback=>:help ) ; nil
|
9
9
|
when Account.create_ok? ; 'Send us the following, and we\'ll send you a password.'
|
@@ -30,7 +30,7 @@ format :html do
|
|
30
30
|
|
31
31
|
|
32
32
|
view :edit do |args|
|
33
|
-
frame_args = { :title=>'Invite', :show_help=>true, :
|
33
|
+
frame_args = { :title=>'Invite', :show_help=>true, :optional_menu=>:never,
|
34
34
|
:help_text=>"Accept account request from: #{link_to_page card.name}"
|
35
35
|
}
|
36
36
|
|
@@ -38,14 +38,17 @@ format :html do
|
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
41
|
+
view :template_closer do |args|
|
42
|
+
link_to_view '', :template_link, :class=>'slotter ui-icon ui-icon-closethick template-editor-close'
|
43
|
+
end
|
44
|
+
|
41
45
|
view :template_editor do |args|
|
42
|
-
custom_menu = link_to_view '', :template_link, :class=>'slotter ui-icon ui-icon-closethick template-editor-close'
|
43
46
|
wrap :template_editor, args do
|
44
47
|
%{
|
45
48
|
<div class="template-editor-left">{{</div>
|
46
49
|
<div class="template-editor-main">
|
47
50
|
#{
|
48
|
-
wrap_frame :template_editor, :no_slot=>true, :title=>card.label, :
|
51
|
+
wrap_frame :template_editor, :no_slot=>true, :title=>card.label, :optional_menu_view=>:template_closer do
|
49
52
|
_render_core args.merge(:unlabeled=>true)
|
50
53
|
end
|
51
54
|
}
|
@@ -7,13 +7,13 @@ attr_accessor :email
|
|
7
7
|
format :html do
|
8
8
|
#FIXME - should perms check permission to create account?
|
9
9
|
view :new do |args|
|
10
|
-
wrap_frame :invite, args.merge( :title=>'Invite', :show_help=>true, :
|
10
|
+
wrap_frame :invite, args.merge( :title=>'Invite', :show_help=>true, :optional_menu=>:never ) do
|
11
11
|
card_form :create do |f|
|
12
12
|
@form = f
|
13
13
|
%{
|
14
14
|
#{ f.hidden_field :type_id }
|
15
15
|
#{ _render_name_editor :help=>'usually first and last name' }
|
16
|
-
#{ fieldset :email, text_field(
|
16
|
+
#{ fieldset :email, text_field( 'card[account_args]', :email, :size=>60 ) }
|
17
17
|
#{ _render_invitation_field }
|
18
18
|
}
|
19
19
|
end
|
data/script/{wagn.rb → wagn}
RENAMED
File without changes
|
@@ -2,7 +2,7 @@
|
|
2
2
|
require 'wagn/spec_helper'
|
3
3
|
|
4
4
|
describe Card::Format do
|
5
|
-
|
5
|
+
=begin
|
6
6
|
describe :render do
|
7
7
|
it "should ignore underscores in view names" do
|
8
8
|
render_card(:not_found).should == render_card('not found')
|
@@ -170,4 +170,35 @@ describe Card::Format do
|
|
170
170
|
end
|
171
171
|
end
|
172
172
|
|
173
|
+
=end
|
174
|
+
describe '#show?' do
|
175
|
+
before :all do
|
176
|
+
@format = described_class.new Card.new
|
177
|
+
end
|
178
|
+
|
179
|
+
it "should respect defaults" do
|
180
|
+
@format.show_view?( :menu, {}, :show ).should be_true
|
181
|
+
@format.show_view?( :menu, {}, :hide ).should be_false
|
182
|
+
@format.show_view?( :menu, {} ).should be_true
|
183
|
+
end
|
184
|
+
|
185
|
+
it "should respect developer default overrides" do
|
186
|
+
@format.show_view?( :menu, { :optional_menu=>:show }, :hide ).should be_true
|
187
|
+
@format.show_view?( :menu, { :optional_menu=>:hide }, :show ).should be_false
|
188
|
+
@format.show_view?( :menu, { :optional_menu=>:hide } ).should be_false
|
189
|
+
end
|
190
|
+
|
191
|
+
it "should handle args from inclusions" do
|
192
|
+
@format.show_view?( :menu, { :show=>'menu' }, :hide ).should be_true
|
193
|
+
@format.show_view?( :menu, { :hide=>'menu, paging' }, :show ).should be_false
|
194
|
+
@format.show_view?( :menu, :show=>'menu', :optional_menu=>:hide ).should be_true
|
195
|
+
end
|
196
|
+
|
197
|
+
it "should handle hard developer overrides" do
|
198
|
+
@format.show_view?( :menu, :optional_menu=>:always, :hide=>'menu' ).should be_true
|
199
|
+
@format.show_view?( :menu, :optional_menu=>:never, :show=>'menu' ).should be_false
|
200
|
+
end
|
201
|
+
|
202
|
+
end
|
203
|
+
|
173
204
|
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.12.
|
4
|
+
version: 1.12.8
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2014-
|
14
|
+
date: 2014-02-03 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rails
|
@@ -949,7 +949,7 @@ files:
|
|
949
949
|
- script/autospec
|
950
950
|
- script/rails
|
951
951
|
- script/test_filter
|
952
|
-
- script/wagn
|
952
|
+
- script/wagn
|
953
953
|
- spec/controllers/account_controller_spec.rb
|
954
954
|
- spec/controllers/admin_controller_spec.rb
|
955
955
|
- spec/controllers/captcha_spec.rb
|