card 1.15.pre → 1.15.pre2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (212) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/db/bootstrap/card_actions.yml +1039 -668
  4. data/db/bootstrap/card_acts.yml +1 -1
  5. data/db/bootstrap/card_changes.yml +3614 -2523
  6. data/db/bootstrap/card_references.yml +1401 -1163
  7. data/db/bootstrap/cards.yml +2832 -1848
  8. data/db/migrate_core_cards/20150202143810_import_bootstrap_layout.rb +58 -4
  9. data/db/migrate_core_cards/20150317162412_bootstrap_themes.rb +37 -0
  10. data/db/migrate_core_cards/data/1.12_stylesheets/traditional.scss +1 -1
  11. data/db/migrate_core_cards/data/bootstrap_layout.json +39 -24
  12. data/db/migrate_core_cards/data/skin_images.json +91 -0
  13. data/db/schema.rb +1 -1
  14. data/db/version_core_cards.txt +1 -1
  15. data/lib/card/format.rb +6 -6
  16. data/lib/card/migration.rb +7 -2
  17. data/mod/01_core/chunk/include.rb +10 -0
  18. data/mod/01_core/format/html_format.rb +2 -8
  19. data/mod/01_core/set/all/collection.rb +4 -0
  20. data/mod/01_core/set/all/states.rb +1 -1
  21. data/mod/01_core/set/all/utils.rb +3 -2
  22. data/mod/01_core/set_pattern/02_all_plus.rb +1 -1
  23. data/mod/01_core/set_pattern/04_star.rb +2 -2
  24. data/mod/01_core/set_pattern/05_rstar.rb +2 -2
  25. data/mod/01_core/set_pattern/07_type_plus_right.rb +1 -1
  26. data/mod/01_core/spec/format/html_format_spec.rb +23 -24
  27. data/mod/01_history/set/all/history.rb +6 -7
  28. data/mod/02_basic_types/set/all/all_css.rb +1 -1
  29. data/mod/02_basic_types/set/all/all_csv.rb +2 -2
  30. data/mod/02_basic_types/set/all/json.rb +1 -1
  31. data/mod/02_basic_types/set/type/plain_text.rb +1 -1
  32. data/mod/02_basic_types/set/type/pointer.rb +25 -29
  33. data/mod/03_machines/lib/javascript/wagn.js.coffee +7 -6
  34. data/mod/03_machines/lib/javascript/wagn_mod.js.coffee +2 -1
  35. data/mod/03_machines/lib/stylesheets/style_bootstrap_compatible.css +154 -0
  36. data/mod/03_machines/lib/stylesheets/{standard.scss → style_cards.scss} +260 -166
  37. data/mod/03_machines/set/self/style_bootstrap_compatible.rb +9 -0
  38. data/mod/03_machines/set/self/{style_functional.rb → style_cards.rb} +1 -1
  39. data/mod/03_machines/spec/set/type/scss_spec.rb +1 -1
  40. data/mod/04_settings/set/type/setting.rb +1 -1
  41. data/mod/05_email/set/all/notify.rb +1 -1
  42. data/mod/05_email/set/self/follow_defaults.rb +3 -3
  43. data/mod/05_standard/file/{790/icon-6419.png → credit/icon-image.png} +0 -0
  44. data/mod/05_standard/file/{790/large-6419.png → credit/large-image.png} +0 -0
  45. data/mod/05_standard/file/{790/medium-6419.png → credit/medium-image.png} +0 -0
  46. data/mod/05_standard/file/{790/original-6419.png → credit/original-image.png} +0 -0
  47. data/mod/05_standard/file/{790/small-6419.png → credit/small-image.png} +0 -0
  48. data/mod/05_standard/file/{103/icon-6566.ico → favicon/icon-image.ico} +0 -0
  49. data/mod/05_standard/file/{103/large-6566.ico → favicon/large-image.ico} +0 -0
  50. data/mod/05_standard/file/{103/medium-6566.ico → favicon/medium-image.ico} +0 -0
  51. data/mod/05_standard/file/{103/original-6566.ico → favicon/original-image.ico} +0 -0
  52. data/mod/05_standard/file/{103/small-6566.ico → favicon/small-image.ico} +0 -0
  53. data/mod/05_standard/file/{79/icon-6556.png → logo/icon-image.png} +0 -0
  54. data/mod/05_standard/file/{79/large-6556.png → logo/large-image.png} +0 -0
  55. data/mod/05_standard/file/{79/medium-6556.png → logo/medium-image.png} +0 -0
  56. data/mod/05_standard/file/{79/original-6556.png → logo/original-image.png} +0 -0
  57. data/mod/05_standard/file/{79/small-6556.png → logo/small-image.png} +0 -0
  58. data/mod/05_standard/set/all/attach.rb +8 -10
  59. data/mod/05_standard/set/all/comment.rb +1 -1
  60. data/mod/05_standard/set/all/error.rb +1 -1
  61. data/mod/05_standard/set/all/rich_html/content.rb +14 -2
  62. data/mod/05_standard/set/all/rich_html/editing.rb +19 -18
  63. data/mod/05_standard/set/all/rich_html/form.rb +38 -47
  64. data/mod/05_standard/set/all/rich_html/header.rb +37 -14
  65. data/mod/05_standard/set/all/rich_html/wrapper.rb +3 -3
  66. data/mod/05_standard/set/rstar/rules.rb +18 -18
  67. data/mod/05_standard/set/self/account_links.rb +6 -18
  68. data/mod/05_standard/set/self/navbox.rb +23 -10
  69. data/mod/05_standard/set/self/recent.rb +1 -1
  70. data/mod/05_standard/set/self/signin.rb +6 -3
  71. data/mod/05_standard/set/type/cardtype.rb +1 -1
  72. data/mod/05_standard/set/type/html.rb +1 -1
  73. data/mod/05_standard/set/type/search_type.rb +76 -54
  74. data/mod/05_standard/set/type/signup.rb +5 -5
  75. data/mod/05_standard/set/type/user.rb +4 -4
  76. data/mod/05_standard/spec/set/all/rich_html/wrapper_spec.rb +2 -2
  77. data/mod/05_standard/spec/set/self/account_links_spec.rb +1 -1
  78. data/mod/06_bootstrap/file/cerulean_skin/icon-image.png +0 -0
  79. data/mod/06_bootstrap/file/cerulean_skin/large-image.png +0 -0
  80. data/mod/06_bootstrap/file/cerulean_skin/medium-image.png +0 -0
  81. data/mod/06_bootstrap/file/cerulean_skin/original-image.png +0 -0
  82. data/mod/06_bootstrap/file/cerulean_skin/small-image.png +0 -0
  83. data/mod/06_bootstrap/file/cosmo_skin/icon-image.png +0 -0
  84. data/mod/06_bootstrap/file/cosmo_skin/large-image.png +0 -0
  85. data/mod/06_bootstrap/file/cosmo_skin/medium-image.png +0 -0
  86. data/mod/06_bootstrap/file/cosmo_skin/original-image.png +0 -0
  87. data/mod/06_bootstrap/file/cosmo_skin/small-image.png +0 -0
  88. data/mod/06_bootstrap/file/cyborg_skin/icon-image.png +0 -0
  89. data/mod/06_bootstrap/file/cyborg_skin/large-image.png +0 -0
  90. data/mod/06_bootstrap/file/cyborg_skin/medium-image.png +0 -0
  91. data/mod/06_bootstrap/file/cyborg_skin/original-image.png +0 -0
  92. data/mod/06_bootstrap/file/cyborg_skin/small-image.png +0 -0
  93. data/mod/06_bootstrap/file/darkly_skin/icon-image.png +0 -0
  94. data/mod/06_bootstrap/file/darkly_skin/large-image.png +0 -0
  95. data/mod/06_bootstrap/file/darkly_skin/medium-image.png +0 -0
  96. data/mod/06_bootstrap/file/darkly_skin/original-image.png +0 -0
  97. data/mod/06_bootstrap/file/darkly_skin/small-image.png +0 -0
  98. data/mod/06_bootstrap/file/flatly_skin/icon-image.png +0 -0
  99. data/mod/06_bootstrap/file/flatly_skin/large-image.png +0 -0
  100. data/mod/06_bootstrap/file/flatly_skin/medium-image.png +0 -0
  101. data/mod/06_bootstrap/file/flatly_skin/original-image.png +0 -0
  102. data/mod/06_bootstrap/file/flatly_skin/small-image.png +0 -0
  103. data/mod/06_bootstrap/file/journal_skin/icon-image.png +0 -0
  104. data/mod/06_bootstrap/file/journal_skin/large-image.png +0 -0
  105. data/mod/06_bootstrap/file/journal_skin/medium-image.png +0 -0
  106. data/mod/06_bootstrap/file/journal_skin/original-image.png +0 -0
  107. data/mod/06_bootstrap/file/journal_skin/small-image.png +0 -0
  108. data/mod/06_bootstrap/file/lumen_skin/icon-image.png +0 -0
  109. data/mod/06_bootstrap/file/lumen_skin/large-image.png +0 -0
  110. data/mod/06_bootstrap/file/lumen_skin/medium-image.png +0 -0
  111. data/mod/06_bootstrap/file/lumen_skin/original-image.png +0 -0
  112. data/mod/06_bootstrap/file/lumen_skin/small-image.png +0 -0
  113. data/mod/06_bootstrap/file/paper_skin/icon-image.png +0 -0
  114. data/mod/06_bootstrap/file/paper_skin/large-image.png +0 -0
  115. data/mod/06_bootstrap/file/paper_skin/medium-image.png +0 -0
  116. data/mod/06_bootstrap/file/paper_skin/original-image.png +0 -0
  117. data/mod/06_bootstrap/file/paper_skin/small-image.png +0 -0
  118. data/mod/06_bootstrap/file/readable_skin/icon-image.png +0 -0
  119. data/mod/06_bootstrap/file/readable_skin/large-image.png +0 -0
  120. data/mod/06_bootstrap/file/readable_skin/medium-image.png +0 -0
  121. data/mod/06_bootstrap/file/readable_skin/original-image.png +0 -0
  122. data/mod/06_bootstrap/file/readable_skin/small-image.png +0 -0
  123. data/mod/06_bootstrap/file/sandstone_skin/icon-image.png +0 -0
  124. data/mod/06_bootstrap/file/sandstone_skin/large-image.png +0 -0
  125. data/mod/06_bootstrap/file/sandstone_skin/medium-image.png +0 -0
  126. data/mod/06_bootstrap/file/sandstone_skin/original-image.png +0 -0
  127. data/mod/06_bootstrap/file/sandstone_skin/small-image.png +0 -0
  128. data/mod/06_bootstrap/file/simplex_skin/icon-image.png +0 -0
  129. data/mod/06_bootstrap/file/simplex_skin/large-image.png +0 -0
  130. data/mod/06_bootstrap/file/simplex_skin/medium-image.png +0 -0
  131. data/mod/06_bootstrap/file/simplex_skin/original-image.png +0 -0
  132. data/mod/06_bootstrap/file/simplex_skin/small-image.png +0 -0
  133. data/mod/06_bootstrap/file/slate_skin/icon-image.png +0 -0
  134. data/mod/06_bootstrap/file/slate_skin/large-image.png +0 -0
  135. data/mod/06_bootstrap/file/slate_skin/medium-image.png +0 -0
  136. data/mod/06_bootstrap/file/slate_skin/original-image.png +0 -0
  137. data/mod/06_bootstrap/file/slate_skin/small-image.png +0 -0
  138. data/mod/06_bootstrap/file/spacelab_skin/icon-image.png +0 -0
  139. data/mod/06_bootstrap/file/spacelab_skin/large-image.png +0 -0
  140. data/mod/06_bootstrap/file/spacelab_skin/medium-image.png +0 -0
  141. data/mod/06_bootstrap/file/spacelab_skin/original-image.png +0 -0
  142. data/mod/06_bootstrap/file/spacelab_skin/small-image.png +0 -0
  143. data/mod/06_bootstrap/file/superhero_skin/icon-image.png +0 -0
  144. data/mod/06_bootstrap/file/superhero_skin/large-image.png +0 -0
  145. data/mod/06_bootstrap/file/superhero_skin/medium-image.png +0 -0
  146. data/mod/06_bootstrap/file/superhero_skin/original-image.png +0 -0
  147. data/mod/06_bootstrap/file/superhero_skin/small-image.png +0 -0
  148. data/mod/06_bootstrap/file/united_skin/icon-image.png +0 -0
  149. data/mod/06_bootstrap/file/united_skin/large-image.png +0 -0
  150. data/mod/06_bootstrap/file/united_skin/medium-image.png +0 -0
  151. data/mod/06_bootstrap/file/united_skin/original-image.png +0 -0
  152. data/mod/06_bootstrap/file/united_skin/small-image.png +0 -0
  153. data/mod/06_bootstrap/file/yeti_skin/icon-image.png +0 -0
  154. data/mod/06_bootstrap/file/yeti_skin/large-image.png +0 -0
  155. data/mod/06_bootstrap/file/yeti_skin/medium-image.png +0 -0
  156. data/mod/06_bootstrap/file/yeti_skin/original-image.png +0 -0
  157. data/mod/06_bootstrap/file/yeti_skin/small-image.png +0 -0
  158. data/mod/06_bootstrap/lib/stylesheets/bootstrap_cards.scss +199 -0
  159. data/mod/06_bootstrap/lib/stylesheets/{bootstrap.css → bootstrap_css.css} +0 -0
  160. data/mod/06_bootstrap/lib/stylesheets/theme_amelia.css +5871 -0
  161. data/mod/06_bootstrap/lib/stylesheets/{bootstrap-theme.css → theme_bootstrap_default.css} +0 -0
  162. data/mod/06_bootstrap/lib/stylesheets/theme_cerulean.css +5893 -0
  163. data/mod/06_bootstrap/lib/stylesheets/theme_cosmo.css +5898 -0
  164. data/mod/06_bootstrap/lib/stylesheets/theme_cyborg.css +5876 -0
  165. data/mod/06_bootstrap/lib/stylesheets/theme_darkly.css +5986 -0
  166. data/mod/06_bootstrap/lib/stylesheets/{darkly.css → theme_flatly.css} +574 -327
  167. data/mod/06_bootstrap/lib/stylesheets/theme_holo.css +183 -0
  168. data/mod/06_bootstrap/lib/stylesheets/theme_journal.css +6647 -0
  169. data/mod/06_bootstrap/lib/stylesheets/theme_lumen.css +6097 -0
  170. data/mod/06_bootstrap/lib/stylesheets/theme_paper.css +6647 -0
  171. data/mod/06_bootstrap/lib/stylesheets/theme_readable.css +5896 -0
  172. data/mod/06_bootstrap/lib/stylesheets/theme_sandstone.css +6733 -0
  173. data/mod/06_bootstrap/lib/stylesheets/theme_simplex.css +5886 -0
  174. data/mod/06_bootstrap/lib/stylesheets/theme_slate.css +7057 -0
  175. data/mod/06_bootstrap/lib/stylesheets/theme_spacelab.css +5935 -0
  176. data/mod/06_bootstrap/lib/stylesheets/theme_superhero.css +5964 -0
  177. data/mod/06_bootstrap/lib/stylesheets/theme_united.css +6588 -0
  178. data/mod/06_bootstrap/lib/stylesheets/theme_yeti.css +6088 -0
  179. data/mod/06_bootstrap/set/all/rich_bootstrap.rb +0 -16
  180. data/mod/06_bootstrap/set/self/bootstrap_cards.rb +9 -0
  181. data/mod/06_bootstrap/set/self/bootstrap_css.rb +5 -3
  182. data/mod/06_bootstrap/set/self/theme_bootstrap_default.rb +2 -0
  183. data/mod/06_bootstrap/set/self/theme_cerulean.rb +2 -0
  184. data/mod/06_bootstrap/set/self/theme_cosmo.rb +2 -0
  185. data/mod/06_bootstrap/set/self/theme_cyborg.rb +2 -0
  186. data/mod/06_bootstrap/set/self/theme_darkly.rb +2 -0
  187. data/mod/06_bootstrap/set/self/theme_flatly.rb +2 -0
  188. data/mod/06_bootstrap/set/self/theme_journal.rb +2 -0
  189. data/mod/06_bootstrap/set/self/theme_lumen.rb +2 -0
  190. data/mod/06_bootstrap/set/self/theme_paper.rb +2 -0
  191. data/mod/06_bootstrap/set/self/theme_readable.rb +2 -0
  192. data/mod/06_bootstrap/set/self/theme_sandstone.rb +2 -0
  193. data/mod/06_bootstrap/set/self/theme_simplex.rb +2 -0
  194. data/mod/06_bootstrap/set/self/theme_slate.rb +2 -0
  195. data/mod/06_bootstrap/set/self/theme_spacelab.rb +2 -0
  196. data/mod/06_bootstrap/set/self/theme_superhero.rb +2 -0
  197. data/mod/06_bootstrap/set/self/theme_united.rb +2 -0
  198. data/mod/06_bootstrap/set/self/theme_yeti.rb +2 -0
  199. data/test/fixtures/card_actions.yml +1951 -1580
  200. data/test/fixtures/card_acts.yml +282 -282
  201. data/test/fixtures/card_changes.yml +6769 -5678
  202. data/test/fixtures/card_references.yml +2086 -1848
  203. data/test/fixtures/cards.yml +4167 -3183
  204. metadata +142 -30
  205. data/mod/03_machines/lib/stylesheets/functional.scss +0 -184
  206. data/mod/03_machines/set/self/style_standard.rb +0 -8
  207. data/mod/03_machines/spec/set/self/style_functional_spec.rb +0 -5
  208. data/mod/03_machines/spec/set/self/style_standard_spec.rb +0 -5
  209. data/mod/06_bootstrap/set/all/bootstrap/header.rb +0 -29
  210. data/mod/06_bootstrap/set/self/bootstrap_theme_css.rb +0 -7
  211. data/mod/06_bootstrap/set/self/navbox.rb +0 -32
  212. data/mod/06_bootstrap/set/type/search_type.rb +0 -79
@@ -25,7 +25,7 @@ format :html do
25
25
  card.safe_set_keys
26
26
  ].compact
27
27
 
28
- div = %{<div id="#{card.cardname.url_key}" data-card-id="#{card.id}" data-card-name="#{h card.name}" data-card-type-code="#{card.type_code}" style="#{h args[:style]}" class="#{classes*' '}" } +
28
+ div = %{<div id="#{card.cardname.url_key}" data-card-id="#{card.id}" data-card-name="#{h card.name}" style="#{h args[:style]}" class="#{classes*' '}" } +
29
29
  %{data-slot='#{html_escape_except_quotes slot_options( args )}'>#{ output yield }</div>}
30
30
 
31
31
  if params[:debug] == 'slot' && !tagged( @current_view, :no_wrap_comments )
@@ -52,7 +52,7 @@ format :html do
52
52
  %{
53
53
  #{ _render_header args }
54
54
  #{ %{ <div class="card-subheader">#{ args[:subheader] }</div> } if args[:subheader] }
55
- #{ _optional_render :help, args, :hide }
55
+ #{ _optional_render :help, args.merge(:help_class=>'alert alert-info'), :hide }
56
56
  #{ wrap_body args do output( yield args ) end }
57
57
  }
58
58
  end
@@ -90,7 +90,7 @@ format :html do
90
90
 
91
91
  def wrap_with tag, html_args={}
92
92
  content_tag( tag, html_args ) do
93
- output( yield )
93
+ output( yield ).html_safe
94
94
  end
95
95
  end
96
96
 
@@ -64,7 +64,7 @@ format :html do
64
64
  #{ card_link setting_name, :text=>"all #{setting_name} rules", :class=>'setting-link', :target=>'wagn_setting' }
65
65
  </div>
66
66
 
67
- <div class="instruction rule-instruction">
67
+ <div class="alert alert-info rule-instruction">
68
68
  #{ process_content "{{#{setting_name}+*right+*help}}" }
69
69
  </div>
70
70
 
@@ -110,7 +110,7 @@ format :html do
110
110
  {:class=>"card-form card-rule-form slotter" } do |form|
111
111
  @form = form
112
112
  %{
113
- #{ hidden_success_fieldset args[:success]}
113
+ #{ hidden_success_formgroup args[:success]}
114
114
  #{ editor args }
115
115
  }
116
116
  end
@@ -137,16 +137,16 @@ format :html do
137
137
  def editor args
138
138
  wrap_with( :div, :class=>'card-editor' ) do
139
139
  [
140
- (type_fieldset( args ) if card.right.rule_type_editable),
141
- fieldset( 'rule', content_field( form, args.merge(:skip_rev_id=>true) ), :editor=>'content' ),
142
- set_fieldset( args )
140
+ (type_formgroup( args ) if card.right.rule_type_editable),
141
+ formgroup( 'rule', content_field( form, args.merge(:skip_rev_id=>true) ), :editor=>'content' ),
142
+ set_formgroup( args )
143
143
  ]
144
144
  end + edit_buttons( args )
145
145
  end
146
146
 
147
147
 
148
- def type_fieldset args
149
- fieldset 'type', type_field(
148
+ def type_formgroup args
149
+ formgroup 'type', type_field(
150
150
  :href => path(:name=>args[:success][:card].name, :view=>args[:success][:view], :type_reload=>true),
151
151
  :class => 'type-field rule-type-field live-type-field',
152
152
  'data-remote' => true
@@ -154,7 +154,7 @@ format :html do
154
154
  end
155
155
 
156
156
 
157
- def hidden_success_fieldset args
157
+ def hidden_success_formgroup args
158
158
  %{
159
159
  #{ hidden_field_tag 'success[id]', args[:id] || args[:card].name }
160
160
  #{ hidden_field_tag 'success[view]', args[:view] }
@@ -162,12 +162,12 @@ format :html do
162
162
  }
163
163
  end
164
164
 
165
- def set_fieldset args
165
+ def set_formgroup args
166
166
  current_set_key = card.new_card? ? Card[:all].cardname.key : card.rule_set_key # (should have a constant for this?)
167
167
  tag = args[:rule_context].rule_user_setting_name
168
168
  narrower_rules = []
169
169
  option_list =
170
- wrap_each_with :li do
170
+ wrap_each_with :li, :class=>'radio' do
171
171
  args[:set_options].map do |set_name, state|
172
172
 
173
173
  checked = ( args[:set_selected] == set_name or current_set_key && args[:set_options].length==1 )
@@ -183,16 +183,16 @@ format :html do
183
183
  end
184
184
  rule_name = "#{set_name}+#{tag}"
185
185
  radio_button( :name, rule_name, :checked=>checked, :warning=>warning ) + %{
186
- <span class="set-label" #{'current-set-label' if is_current }>
186
+ <label class="set-label" #{'current-set-label' if is_current }>
187
187
  #{ card_link set_name, :text=> Card.fetch(set_name).label, :target=>'wagn_set' }
188
188
  #{'<em>(current)</em>' if is_current }
189
189
  #{"<em> #{card_link "#{set_name}+#{card.rule_user_setting_name}", :text=>"(overwritten)"}</em>" if state == :overwritten }
190
- </span>
190
+ </label>
191
191
  }.html_safe
192
192
  end
193
193
 
194
194
  end
195
- fieldset 'set', "<ul>#{ option_list }</ul>", :editor => 'set'
195
+ formgroup 'set', "<ul>#{ option_list }</ul>", :editor => 'set'
196
196
  end
197
197
 
198
198
  def edit_buttons args
@@ -205,7 +205,7 @@ format :html do
205
205
  %{<span class="rule-delete-section">#{ button_tag 'Delete', b_args }</span>}
206
206
  end
207
207
  cancel_path = path :view=>( card.new_card? ? :closed_rule : :open_rule )
208
- wrap_with( :div, :class=>'edit-button-area' ) do
208
+ wrap_with( :div, :class=>'button-area' ) do
209
209
  [
210
210
  delete_button,
211
211
  button_tag( 'Submit', :class=>'rule-submit-button' ),
@@ -220,10 +220,10 @@ format :html do
220
220
 
221
221
  card_form :update do
222
222
  [
223
- _optional_render( :type_fieldset, args ),
224
- _optional_render( :content_fieldset, args ),
225
- _optional_render( :set_fieldset, args ),
226
- _optional_render( :button_fieldset, args )
223
+ _optional_render( :type_formgroup, args ),
224
+ _optional_render( :content_formgroup, args ),
225
+ _optional_render( :set_formgroup, args ),
226
+ _optional_render( :button_formgroup, args )
227
227
  ]
228
228
  end
229
229
  end
@@ -1,7 +1,7 @@
1
1
 
2
2
  format :html do
3
3
 
4
- def account_links args
4
+ def item_links args
5
5
  [
6
6
  optional_render( :my_card, args),
7
7
  optional_render( :invite, args),
@@ -38,24 +38,12 @@ format :html do
38
38
  end
39
39
 
40
40
  view :raw do |args|
41
- content_tag :span, :id=>'logging' do
42
- account_links(args).join ' '
43
- end
41
+ item_links(args).join ' '
44
42
  end
45
-
46
- view :list do |args|
47
- content_tag :ul, :class=>args[:class] do
48
- account_links(args).map do |al|
49
- content_tag :li, al
50
- end.join "\n"
43
+
44
+ view :core do |args|
45
+ content_tag :span, :id=>'logging' do
46
+ render_raw args
51
47
  end
52
48
  end
53
-
54
- view :navbar_right do |args|
55
- render_list args.merge(:class=>"nav navbar-nav navbar-right")
56
- end
57
-
58
- view :navbar_left do |args|
59
- render_list args.merge(:class=>"nav navbar-nav navbar-left")
60
- end
61
49
  end
@@ -1,20 +1,33 @@
1
1
 
2
2
  format :html do
3
-
3
+
4
4
  view :raw do |args|
5
- input_args = { :class=>'navbox' }
5
+ input_args = { :class=>'navbox form-control' }
6
6
  @@placeholder ||= begin
7
7
  p = Card["#{Card[:navbox].name}+*placeholder"] and p.raw_content
8
8
  end
9
-
10
9
  input_args[:placeholder] = @@placeholder if @@placeholder
11
-
12
- %{
13
- <form action="#{Card.path_setting '/:search'}" method="get" class="navbox-form nodblclick">
14
- #{ text_field_tag :_keyword, '', input_args }
15
- </form>
16
- }
10
+
11
+ content_tag :div, :class=>'form-group' do
12
+ text_field_tag :_keyword, '', input_args
13
+ end
17
14
  end
15
+
16
+ view :navbar_left do |args|
17
+ _render_core args.merge(:navbar_class=>'navbar-form navbar-left')
18
+ end
19
+
20
+ view :navbar_right do |args|
21
+ _render_core args.merge(:navbar_class=>'navbar-form navbar-right')
22
+ end
23
+
24
+ view :core do |args|
25
+ tag_args = { :method=>'get', :role=>'search', :class=>"nodblclick navbox-form #{args[:navbar_class]}"}
26
+ form_tag Card.path_setting('/:search'), tag_args do
27
+ _render_raw args
28
+ end
18
29
 
19
- view :core, :raw
30
+ end
31
+
20
32
  end
33
+
@@ -9,7 +9,7 @@ format :html do
9
9
  search_vars[:item] ||= :change
10
10
 
11
11
  cards_by_day = Hash.new { |h, day| h[day] = [] }
12
- search_vars[:results].each do |card|
12
+ search_results.each do |card|
13
13
  begin
14
14
  stamp = card.updated_at
15
15
  day = Date.new(stamp.year, stamp.month, stamp.day)
@@ -40,9 +40,9 @@ format :html do
40
40
  card_form :update, form_args do
41
41
  [
42
42
  Auth.as_bot do
43
- subformat(account)._render :content_fieldset, :structure=>true, :items=>{:autocomplete=>'on'}
43
+ subformat(account)._render :content_formgroup, :structure=>true, :items=>{:autocomplete=>'on'}
44
44
  end,
45
- _optional_render( :button_fieldset, args )
45
+ _optional_render( :button_formgroup, args )
46
46
  ].join
47
47
  end
48
48
  end
@@ -84,7 +84,6 @@ event :signin, :before=>:approve, :on=>:update do
84
84
 
85
85
  if signin_id = Auth.authenticate( email, pword )
86
86
  Auth.signin signin_id
87
- abort :success
88
87
  else
89
88
  accted = Auth[ email.strip.downcase ]
90
89
  errors.add :signin, case
@@ -96,6 +95,10 @@ event :signin, :before=>:approve, :on=>:update do
96
95
  end
97
96
  end
98
97
 
98
+ event :signin_success, :after=>:signin do
99
+ abort :success
100
+ end
101
+
99
102
  event :send_reset_password_token, :before=>:signin, :on=>:update, :when=>proc{ |c| Env.params[:reset_password] } do
100
103
  email = subcards["+#{Card[:email].name}"]
101
104
  email &&= email['content']
@@ -6,7 +6,7 @@ format :html do
6
6
  super args
7
7
  end
8
8
 
9
- view :type_fieldset do |args|
9
+ view :type_formgroup do |args|
10
10
  if card.cards_of_type_exist?
11
11
  %{<div>Sorry, this card must remain a Cardtype so long as there are <strong>#{ card.name }</strong> cards.</div>}
12
12
  else
@@ -1,6 +1,6 @@
1
1
 
2
2
  view :editor do |args|
3
- text_area :content, :rows=>5, :class=>'card-content'
3
+ text_area :content, :rows=>5, :class=>'card-content', "data-card-type-code"=>card.type_code
4
4
  end
5
5
 
6
6
  view :closed_content do |args|
@@ -54,7 +54,7 @@ format do
54
54
  when e = search_vars[:error]
55
55
  %{#{e.class.to_s} :: #{e.message} :: #{card.raw_content}}
56
56
  when search_vars[:query][:return] =='count'
57
- search_vars[:results].to_s
57
+ search_results.to_s
58
58
  when @mode == :template
59
59
  render :raw
60
60
  else
@@ -63,25 +63,34 @@ format do
63
63
  end
64
64
 
65
65
  view :card_list do |args|
66
- if search_vars[:results].empty?
66
+ if search_results.empty?
67
67
  'no results'
68
68
  else
69
- search_vars[:results].map do |c|
69
+ search_results.map do |c|
70
70
  nest c
71
71
  end.join "\n"
72
72
  end
73
73
  end
74
74
 
75
75
  def search_vars args={}
76
- @search_vars ||= begin
77
- v = {}
78
- v[:query] = card.query search_params
79
- v[:item] = set_inclusion_opts args.merge( :query_view=>v[:query][:view] )
80
- v[:results] = card.item_cards search_params # this is really odd. the search is called from within the vars???
81
- v
82
- rescue =>e
83
- { :error => e }
84
- end
76
+ @search_vars ||=
77
+ begin
78
+ v = {}
79
+ v[:query] = card.query(search_params)
80
+ v[:item] = set_inclusion_opts args.merge( :query_view=>v[:query][:view] )
81
+ v
82
+ rescue =>e
83
+ { :error => e }
84
+ end
85
+ end
86
+
87
+ def search_results
88
+ @search_results ||=
89
+ begin
90
+ card.item_cards search_params
91
+ rescue => e
92
+ { :error => e}
93
+ end
85
94
  end
86
95
 
87
96
  def set_inclusion_opts args
@@ -93,11 +102,34 @@ format do
93
102
 
94
103
 
95
104
 
105
+ def page_link text, page, current=false, options={}
106
+ @paging_path_args[:offset] = page * @paging_limit
107
+ options.merge!(:class=>'card-paging-link slotter', :remote => true)
108
+ link_to raw(text), path(@paging_path_args), options
109
+ end
110
+
111
+ def page_li text, page, current=false, options={}
112
+ css_class = if current
113
+ 'active'
114
+ elsif !page
115
+ 'disabled'
116
+ end
117
+ page ||= 0
118
+ content_tag :li, :class=>css_class do
119
+ page_link text, page, current, options
120
+ end
121
+ end
122
+
123
+ def previous_page_link page
124
+ page_li '<span aria-hidden="true">&laquo;</span>', page, false, 'aria-label'=>"Previous"
125
+ end
96
126
 
127
+ def next_page_link page
128
+ page_li '<span aria-hidden="true">&raquo;</span>', page, false, 'aria-label'=>"Next"
129
+ end
97
130
 
98
- def page_link text, page
99
- @paging_path_args[:offset] = page * @paging_limit
100
- " #{link_to raw(text), path(@paging_path_args), :class=>'card-paging-link slotter', :remote => true} "
131
+ def ellipse_page
132
+ content_tag :li, content_tag(:span, '...')
101
133
  end
102
134
 
103
135
  end
@@ -106,7 +138,7 @@ end
106
138
  format :data do
107
139
 
108
140
  view :card_list do |args|
109
- search_vars[:results].map do |c|
141
+ search_results.map do |c|
110
142
  nest c
111
143
  end
112
144
  end
@@ -134,23 +166,25 @@ format :html do
134
166
  view :card_list do |args|
135
167
  paging = _optional_render :paging, args
136
168
 
137
- if search_vars[:results].empty?
169
+ if search_results.empty?
138
170
  render_no_search_results(args)
139
171
  else
172
+ results =
173
+ search_results.map do |c|
174
+ item_view = inclusion_defaults(c)[:view]
175
+ %{
176
+ <div class="search-result-item item-#{ item_view }">
177
+ #{nest(c, :size=>args[:size], :view=>item_view)}
178
+ </div>
179
+ }
180
+ end.join "\n"
181
+
140
182
  %{
141
- #{paging}
183
+ #{ paging }
142
184
  <div class="search-result-list">
143
- #{
144
- search_vars[:results].map do |c|
145
- %{
146
- <div class="search-result-item item-#{ inclusion_defaults[:view] }">
147
- #{ nest c, :size=>args[:size] }
148
- </div>
149
- }
150
- end * "\n"
151
- }
185
+ #{ results }
152
186
  </div>
153
- #{ paging if search_vars[:results].length > 10 }
187
+ #{ paging if search_results.length > 10 }
154
188
  }
155
189
  end
156
190
  end
@@ -169,7 +203,7 @@ format :html do
169
203
  end
170
204
 
171
205
  view :editor do |args|
172
- text_area :content, :rows=>5
206
+ text_area :content, :rows=>5, "data-card-type-code"=>card.type_code
173
207
  end
174
208
 
175
209
  view :no_search_results do |args|
@@ -180,16 +214,16 @@ format :html do
180
214
  s = card.query search_params
181
215
  offset, limit = s[:offset].to_i, s[:limit].to_i
182
216
  return '' if limit < 1
183
- return '' if offset==0 && limit > offset + search_vars[:results].length #avoid query if we know there aren't enough results to warrant paging
217
+ return '' if offset==0 && limit > offset + search_results.length #avoid query if we know there aren't enough results to warrant paging
184
218
  total = card.count search_params
185
219
  return '' if limit >= total # should only happen if limit exactly equals the total
186
220
 
187
- @paging_path_args = { :limit => limit, :item=> inclusion_defaults[:view] }
221
+ @paging_path_args = { :limit => limit, :item=> inclusion_defaults(card)[:view] }
188
222
  @paging_limit = limit
189
223
 
190
224
  s[:vars].each { |key, value| @paging_path_args["_#{key}"] = value }
191
225
 
192
- out = ['<span class="paging">' ]
226
+ out = ['<nav><ul class="pagination paging">' ]
193
227
 
194
228
  total_pages = ((total-1) / limit).to_i
195
229
  current_page = ( offset / limit).to_i # should already be integer
@@ -197,33 +231,28 @@ format :html do
197
231
  window_min = current_page - window
198
232
  window_max = current_page + window
199
233
 
200
- if current_page > 0
201
- out << page_link( '&laquo; prev', current_page - 1 )
202
- end
203
-
204
- out << %{<span class="paging-numbers">}
234
+ previous_page = current_page > 0 ? current_page - 1 : false
235
+ out << previous_page_link(previous_page)
205
236
  if window_min > 0
206
- out << page_link( 1, 0 )
207
- out << '...' if window_min > 1
237
+ out << page_li( 1, 0 )
238
+ out << ellipse_page if window_min > 1
208
239
  end
209
240
 
210
241
  (window_min .. window_max).each do |page|
211
242
  next if page < 0 or page > total_pages
212
243
  text = page + 1
213
- out << ( page==current_page ? text : page_link( text, page ) )
244
+ out << page_li( text, page, page==current_page )
214
245
  end
215
246
 
216
247
  if total_pages > window_max
217
- out << '...' if total_pages > window_max + 1
218
- out << page_link( total_pages + 1, total_pages )
248
+ out << ellipse_page if total_pages > window_max + 1
249
+ out << page_li( total_pages + 1, total_pages )
219
250
  end
220
- out << %{</span>}
221
251
 
222
- if current_page < total_pages
223
- out << page_link( 'next &raquo;', current_page + 1 )
224
- end
252
+ next_page = current_page < total_pages ? current_page + 1 : false
253
+ out << next_page_link(next_page)
225
254
 
226
- out << %{<span class="search-count">(#{total})</span></span>}
255
+ out << %{</ul></nav>}
227
256
  out.join
228
257
  end
229
258
 
@@ -231,13 +260,6 @@ format :html do
231
260
  set_default_search_params :default_limit=>20
232
261
  end
233
262
 
234
-
235
263
  end
236
264
 
237
265
 
238
-
239
-
240
-
241
-
242
-
243
-