card 1.20.4 → 1.21.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/VERSION +1 -1
  3. data/card.gemspec +9 -9
  4. data/db/migrate_core_cards/20170515101262_add_advanced_edit_cards.rb +20 -0
  5. data/db/migrate_core_cards/20170608083819_add_full_width_layout_card.rb +23 -0
  6. data/db/migrate_core_cards/20170608200649_add_input_options_codename.rb +8 -0
  7. data/db/seed/new/card_actions.yml +783 -791
  8. data/db/seed/new/card_acts.yml +65 -47
  9. data/db/seed/new/card_changes.yml +3198 -3177
  10. data/db/seed/new/card_references.yml +604 -534
  11. data/db/seed/new/cards.yml +2355 -2256
  12. data/db/seed/test/fixtures/card_actions.yml +1795 -1803
  13. data/db/seed/test/fixtures/card_acts.yml +264 -246
  14. data/db/seed/test/fixtures/card_changes.yml +6275 -6184
  15. data/db/seed/test/fixtures/card_references.yml +1305 -1263
  16. data/db/seed/test/fixtures/cards.yml +3393 -3298
  17. data/db/seed/test/seed.rb +2 -2
  18. data/db/version_core_cards.txt +1 -1
  19. data/lib/card.rb +4 -0
  20. data/lib/card/act_manager/subdirector_array.rb +1 -0
  21. data/lib/card/auth/current.rb +7 -3
  22. data/lib/card/env.rb +5 -0
  23. data/lib/card/env/success.rb +1 -1
  24. data/lib/card/format/names.rb +3 -13
  25. data/lib/card/model/save_helper.rb +4 -6
  26. data/lib/card/query.rb +2 -1
  27. data/lib/card/query/attributes.rb +34 -14
  28. data/lib/card/query/value.rb +3 -4
  29. data/lib/card/set/format.rb +29 -4
  30. data/lib/card/set/format/haml_views.rb +25 -13
  31. data/lib/card/set/trait.rb +1 -0
  32. data/lib/card/set_pattern.rb +17 -1
  33. data/lib/card/subcards.rb +3 -2
  34. data/lib/generators/card/format/format_generator.rb +2 -0
  35. data/lib/generators/card/set/set_generator.rb +2 -0
  36. data/lib/generators/card/template/USAGE +10 -0
  37. data/lib/generators/card/template/template_generator.rb +46 -0
  38. data/lib/generators/card/template/templates/haml_template.erb +1 -0
  39. data/mod/Modfile +1 -1
  40. data/mod/account/set/all/account.rb +9 -5
  41. data/mod/account/set/right/account.rb +17 -5
  42. data/mod/account/set/self/account_links.rb +1 -2
  43. data/mod/account/set/type/signup.rb +4 -5
  44. data/mod/account/set/type/user.rb +1 -1
  45. data/mod/account/spec/set/all/account_spec.rb +2 -2
  46. data/mod/account/spec/set/right/account_spec.rb +2 -2
  47. data/mod/account/spec/set/right/email_spec.rb +1 -1
  48. data/mod/account/spec/set/right/password_spec.rb +1 -1
  49. data/mod/account/spec/set/self/signin_spec.rb +2 -2
  50. data/mod/account/spec/set/type/signup_spec.rb +4 -0
  51. data/mod/ace_editor/set/abstract/ace_editor.rb +6 -3
  52. data/mod/ace_editor/set/self/script_ace.rb +1 -0
  53. data/mod/admin/set/self/admin.rb +1 -1
  54. data/mod/admin/set/self/version.rb +1 -0
  55. data/mod/basic_formats/format/css_format.rb +1 -0
  56. data/mod/basic_formats/format/csv_format.rb +1 -0
  57. data/mod/basic_formats/format/file_format.rb +1 -0
  58. data/mod/basic_formats/format/js_format.rb +1 -0
  59. data/mod/basic_formats/format/json_format.rb +1 -0
  60. data/mod/basic_formats/format/rss_format.rb +1 -0
  61. data/mod/basic_formats/format/xml_format.rb +1 -0
  62. data/mod/basic_formats/set/all/all_csv.rb +1 -1
  63. data/mod/basic_formats/set/all/base.rb +11 -3
  64. data/mod/basic_formats/set/all/json.rb +50 -8
  65. data/mod/basic_formats/set/all/rss.rb +21 -7
  66. data/mod/basic_formats/set/self/01_head/javascript.rb +1 -1
  67. data/mod/basic_formats/set/self/head.rb +1 -1
  68. data/mod/basic_formats/spec/set/all/base_spec.rb +13 -0
  69. data/mod/basic_types/set/type/html.rb +6 -2
  70. data/mod/basic_types/set/type/plain_text.rb +2 -3
  71. data/mod/bootstrap/lib/bootstrap.rb +2 -2
  72. data/mod/bootstrap/lib/bootstrap/basic_tags.rb +1 -1
  73. data/mod/bootstrap/lib/bootstrap/component.rb +2 -3
  74. data/mod/bootstrap/lib/bootstrap/component/form.rb +6 -5
  75. data/mod/bootstrap/lib/bootstrap/component/horizontal_form.rb +1 -1
  76. data/mod/bootstrap/lib/bootstrap/component/layout.rb +3 -3
  77. data/mod/bootstrap/lib/bootstrap/component_loader.rb +0 -2
  78. data/mod/bootstrap/lib/bootstrap/delegate.rb +2 -2
  79. data/mod/bootstrap/lib/bootstrapper.rb +1 -1
  80. data/mod/bootstrap/set/all/bootstrap/accordion.rb +1 -1
  81. data/mod/bootstrap/set/all/bootstrap/form.rb +2 -2
  82. data/mod/bootstrap/set/all/bootstrap/helper.rb +1 -0
  83. data/mod/bootstrap/set/all/bootstrap/wrapper.rb +1 -1
  84. data/mod/bootstrap/set/self/bootstrap_js.rb +1 -1
  85. data/mod/bootstrap/set/self/bootswatch_shared.rb +6 -6
  86. data/mod/bootstrap/set/self/script_mods.rb +1 -1
  87. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_builder_spec.rb +7 -6
  88. data/mod/bootstrap/spec/set/all/bootstrap/bootstrap_spec.rb +2 -1
  89. data/mod/bootstrap/spec/set/all/bootstrap/form_spec.rb +6 -3
  90. data/mod/bootstrap/spec/set/all/bootstrap/layout_spec.rb +3 -2
  91. data/mod/carrierwave/set/abstract/attachment.rb +1 -3
  92. data/mod/carrierwave/set/abstract/attachment/paths.rb +1 -1
  93. data/mod/carrierwave/set/abstract/attachment/storage_type.rb +11 -1
  94. data/mod/carrierwave/set/type/file.rb +3 -3
  95. data/mod/carrierwave/spec/lib/carrier_wave/file_card_uploader_spec.rb +3 -0
  96. data/mod/carrierwave/spec/set/type/file_spec.rb +24 -6
  97. data/mod/carrierwave/spec/set/type/image_spec.rb +3 -0
  98. data/mod/core/chunk/link.rb +1 -1
  99. data/mod/core/chunk/nest.rb +2 -1
  100. data/mod/core/chunk/query_reference.rb +1 -1
  101. data/mod/core/chunk/reference.rb +1 -0
  102. data/mod/core/chunk/uri.rb +4 -3
  103. data/mod/core/set/abstract/lock.rb +26 -0
  104. data/mod/core/set/all/assign_attributes.rb +8 -4
  105. data/mod/core/set/all/collection.rb +16 -7
  106. data/mod/core/set/all/content.rb +6 -0
  107. data/mod/core/set/all/event.rb +1 -1
  108. data/mod/core/set/all/fetch.rb +2 -2
  109. data/mod/core/set/all/haml.rb +5 -15
  110. data/mod/core/set/all/initialize.rb +2 -2
  111. data/mod/core/set/all/name.rb +1 -1
  112. data/mod/core/set/all/permissions.rb +28 -16
  113. data/mod/core/set/all/rules.rb +1 -2
  114. data/mod/core/set/all/subcards.rb +3 -3
  115. data/mod/core/set/all/templating.rb +5 -1
  116. data/mod/core/set/all/trash.rb +1 -1
  117. data/mod/core/set/all/utils.rb +1 -1
  118. data/mod/core/spec/set/all/actify_spec.rb +1 -1
  119. data/mod/core/spec/set/all/assign_attributes_spec.rb +2 -2
  120. data/mod/core/spec/set/all/collection_spec.rb +6 -3
  121. data/mod/core/spec/set/all/export_spec.rb +40 -112
  122. data/mod/core/spec/set/all/name_spec.rb +1 -1
  123. data/mod/core/spec/set/all/permissions_spec.rb +7 -7
  124. data/mod/core/spec/set/all/rules2_spec.rb +25 -25
  125. data/mod/core/spec/set/all/rules_spec.rb +2 -7
  126. data/mod/developer/set/all/event_viz.rb +1 -1
  127. data/mod/developer/set/right/debug.rb +1 -1
  128. data/mod/history/lib/card/act.rb +1 -0
  129. data/mod/history/lib/card/act/act_renderer.rb +23 -20
  130. data/mod/history/lib/card/act/act_renderer/absolute_act_renderer.rb +0 -1
  131. data/mod/history/lib/card/act/act_renderer/relative_act_renderer.rb +1 -0
  132. data/mod/history/lib/card/action.rb +1 -1
  133. data/mod/history/lib/card/action/action_renderer.rb +2 -2
  134. data/mod/history/lib/card/change.rb +2 -1
  135. data/mod/history/set/all/action_view.rb +1 -1
  136. data/mod/history/set/all/content_history.rb +7 -4
  137. data/mod/history/set/all/history.rb +6 -6
  138. data/mod/machines/file/all_script_machine_output/file.js +50 -34
  139. data/mod/machines/file/all_style_machine_output/file.css +1 -1
  140. data/mod/machines/lib/javascript/wagn.js.coffee +29 -18
  141. data/mod/machines/lib/javascript/wagn_layout.js.coffee +7 -3
  142. data/mod/machines/lib/stylesheets/style_cards.scss +10 -10
  143. data/mod/machines/set/abstract/machine.rb +5 -28
  144. data/mod/machines/set/abstract/script.rb +7 -4
  145. data/mod/machines/set/all/reset_machines.rb +1 -1
  146. data/mod/machines/set/self/script_jquery_helper.rb +2 -2
  147. data/mod/machines/set/self/script_slot.rb +1 -1
  148. data/mod/machines/set/type/coffee_script.rb +3 -2
  149. data/mod/machines/set/type/css.rb +7 -3
  150. data/mod/machines/set/type/scss.rb +7 -1
  151. data/mod/machines/spec/set/type/coffeescript_spec.rb +1 -1
  152. data/mod/machines/spec/set/type/javascript_spec.rb +1 -1
  153. data/mod/machines/spec/set/type/scss_spec.rb +3 -2
  154. data/mod/machines/spec/set/type/skin_spec.rb +1 -1
  155. data/mod/machines/spec/shared_examples/machine.rb +5 -3
  156. data/mod/machines/spec/shared_examples/machine_input.rb +1 -0
  157. data/mod/notifications/format/email_html_format.rb +1 -0
  158. data/mod/notifications/set/all/follow.rb +1 -1
  159. data/mod/notifications/set/all/observer.rb +1 -1
  160. data/mod/notifications/set/all/send_notifications.rb +2 -2
  161. data/mod/notifications/set/self/follow_defaults.rb +3 -8
  162. data/mod/notifications/set/type/email_template/email_config.rb +2 -2
  163. data/mod/notifications/set/type_plus_right/user/follow.rb +2 -2
  164. data/mod/notifications/spec/set/all/follow_spec.rb +7 -0
  165. data/mod/notifications/spec/set/all/notify_spec.rb +3 -0
  166. data/mod/notifications/spec/set/all/observer_spec.rb +1 -1
  167. data/mod/notifications/spec/set/right/followers_spec.rb +1 -0
  168. data/mod/pointer/set/abstract/00_paging_params.rb +11 -0
  169. data/mod/pointer/set/abstract/{00_paging.rb → 01_paging.rb} +10 -6
  170. data/mod/pointer/set/abstract/{00_paging → 01_paging}/paging_links.rb +0 -0
  171. data/mod/pointer/set/abstract/{01_pointer.rb → 02_pointer.rb} +26 -5
  172. data/mod/pointer/set/abstract/{01_pointer → 02_pointer}/edit.rb +3 -5
  173. data/mod/pointer/set/self/input_options.rb +12 -0
  174. data/mod/pointer/spec/set/self/input_options_spec.rb +8 -0
  175. data/mod/pointer/spec/set/type/pointer_spec.rb +3 -2
  176. data/mod/prosemirror_editor/set/abstract/prosemirror_editor.rb +1 -1
  177. data/mod/prosemirror_editor/set/self/script_prosemirror.rb +1 -0
  178. data/mod/settings/lib/card/setting.rb +1 -2
  179. data/mod/settings/set/abstract/permission.rb +1 -1
  180. data/mod/settings/set/self/add_help.rb +1 -1
  181. data/mod/settings/set/self/autoname.rb +1 -1
  182. data/mod/settings/set/self/csv_structure.rb +2 -0
  183. data/mod/settings/set/self/help.rb +1 -1
  184. data/mod/settings/set/self/input.rb +1 -2
  185. data/mod/settings/set/self/options.rb +2 -2
  186. data/mod/settings/set/self/options_label.rb +2 -2
  187. data/mod/settings/set/type/setting.rb +1 -1
  188. data/mod/settings/spec/set/right/script_spec.rb +1 -1
  189. data/mod/settings/spec/set/right/style_spec.rb +1 -1
  190. data/mod/solid_cache/set/abstract/solid_cache.rb +5 -3
  191. data/mod/solid_cache/spec/set/abstract/solid_cache_spec.rb +4 -3
  192. data/mod/standard/set/abstract/01_search_params.rb +4 -3
  193. data/mod/standard/set/abstract/search.rb +2 -1
  194. data/mod/standard/set/abstract/toolbar_split_button.rb +22 -0
  195. data/mod/standard/set/all/links.rb +3 -3
  196. data/mod/standard/set/all/rich_html/classy.rb +37 -0
  197. data/mod/standard/set/all/rich_html/editing.rb +6 -2
  198. data/mod/standard/set/all/rich_html/editor.rb +50 -0
  199. data/mod/standard/set/all/rich_html/form.rb +19 -12
  200. data/mod/standard/set/all/rich_html/form_elements.rb +2 -2
  201. data/mod/standard/set/all/rich_html/formgroup.rb +2 -1
  202. data/mod/standard/set/all/rich_html/header.rb +2 -27
  203. data/mod/standard/set/all/rich_html/menu.rb +1 -1
  204. data/mod/standard/set/all/rich_html/new.rb +5 -1
  205. data/mod/standard/set/all/rich_html/toolbar.rb +15 -60
  206. data/mod/standard/set/all/rich_html/wrapper.rb +6 -3
  207. data/mod/standard/set/right/when_created.rb +2 -2
  208. data/mod/standard/set/rstar/rules_editor.rb +10 -7
  209. data/mod/standard/set/self/activity_toolbar_button.rb +14 -0
  210. data/mod/standard/set/self/recent.rb +7 -2
  211. data/mod/standard/set/self/rules_toolbar_button.rb +42 -0
  212. data/mod/standard/set/self/search.rb +19 -6
  213. data/mod/standard/set/type/basic.rb +6 -6
  214. data/mod/standard/set/type/cardtype.rb +7 -3
  215. data/mod/standard/set/type/date.rb +2 -4
  216. data/mod/standard/set/type/layout_type.rb +1 -0
  217. data/mod/standard/set/type/list.rb +1 -1
  218. data/mod/standard/set/type/listed_by.rb +1 -2
  219. data/mod/standard/set/type/number.rb +4 -2
  220. data/mod/standard/set/type/phrase.rb +4 -2
  221. data/mod/standard/set/type/search_type.rb +11 -3
  222. data/mod/standard/set/type/set.rb +8 -8
  223. data/mod/standard/set/type/toggle.rb +1 -3
  224. data/mod/standard/set/type/uri.rb +6 -2
  225. data/mod/standard/spec/chunk/include_spec.rb +3 -2
  226. data/mod/standard/spec/chunk/query_reference_spec.rb +2 -2
  227. data/mod/standard/spec/set/all/history_spec.rb +1 -0
  228. data/mod/standard/spec/set/all/links_spec.rb +1 -0
  229. data/mod/standard/spec/set/all/rich_html/toolbar_spec.rb +2 -0
  230. data/mod/standard/spec/set/self/activity_toolbar_button_spec.rb +22 -0
  231. data/mod/standard/spec/set/type/email_template/email_config_spec.rb +10 -8
  232. data/mod/standard/spec/set/type/email_template_spec.rb +1 -0
  233. data/mod/standard/spec/set/type/list_spec.rb +2 -0
  234. data/mod/standard/spec/set/type/listed_by_spec.rb +5 -0
  235. data/mod/standard/spec/set/type/search_type_spec.rb +1 -1
  236. data/mod/standard/spec/set/type/toggle_spec.rb +1 -2
  237. data/mod/standard/spec/set/type/uri_spec.rb +0 -1
  238. data/mod/tinymce_editor/db/migrate_cards/20160804112560_add_tinymce_cards.rb +3 -1
  239. data/mod/tinymce_editor/set/abstract/tinymce_editor.rb +1 -1
  240. data/mod/tinymce_editor/set/self/script_tinymce.rb +1 -0
  241. data/mod/twitter/db/migrate_cards/20170305112346_add_twitter_cards.rb +1 -1
  242. data/mod/twitter/set/type/twitter_template.rb +1 -1
  243. data/spec/lib/card/format_spec.rb +26 -7
  244. data/spec/lib/card/loader_spec.rb +96 -35
  245. data/spec/lib/card/query_spec.rb +0 -1
  246. data/spec/support/card_spec_loader.rb +1 -0
  247. data/spec/support/helper/card_helper.rb +0 -36
  248. data/spec/support/helper/set_helper.rb +80 -0
  249. data/spec/support/matchers.rb +74 -0
  250. data/tmpsets/set/mod001-core/all/actify.rb +5 -6
  251. data/tmpsets/set/mod001-core/all/fetch.rb +14 -12
  252. data/tmpsets/set/mod001-core/all/name.rb +1 -1
  253. data/tmpsets/set/mod001-core/all/permissions.rb +12 -22
  254. data/tmpsets/set/mod001-core/all/tracked_attributes.rb +76 -0
  255. data/tmpsets/set/mod001-core/all/utils.rb +40 -3
  256. data/tmpsets/set/mod002-history/all/history.rb +1 -2
  257. data/tmpsets/set/mod008-solid_cache/abstract/solid_cache.rb +1 -1
  258. data/tmpsets/set/mod013-carrierwave/abstract/attachment.rb +282 -0
  259. data/tmpsets/set/mod013-carrierwave/type/file.rb +155 -0
  260. data/tmpsets/set/mod013-carrierwave/type/image.rb +96 -0
  261. data/tmpsets/set/mod014-admin/self/admin.rb +113 -0
  262. data/tmpsets/set/mod014-admin/self/admin_info.rb +110 -0
  263. data/tmpsets/set/mod014-admin/self/version.rb +15 -0
  264. data/tmpsets/set/mod015-developer/all/event_viz.rb +59 -0
  265. data/tmpsets/set/mod015-developer/all/view_viz.rb +30 -0
  266. data/tmpsets/set/mod015-developer/right/debug.rb +96 -0
  267. metadata +52 -22
@@ -0,0 +1,155 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class Card; module Set; class Type; module File; extend Card::Set
3
+ # ~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/carrierwave/set/type/file.rb ~~
4
+ attachment :file, uploader: CarrierWave::FileCardUploader
5
+
6
+ module SelectedAction
7
+ def select_action_by_params params
8
+ # skip action table lookups for current revision
9
+ rev_id = params[:rev_id]
10
+ super unless rev_id && rev_id == last_content_action_id
11
+ end
12
+
13
+ def last_content_action_id
14
+ # find action id from content (saves lookups)
15
+ db_content.to_s.split(%r{[/\.]})[1]
16
+ end
17
+ end
18
+ include SelectedAction
19
+
20
+ format do
21
+ view :source do |_args|
22
+ card.attachment.url
23
+ end
24
+
25
+ view :core do |args|
26
+ handle_source args do |source|
27
+ card_url source
28
+ end
29
+ end
30
+
31
+ def handle_source args
32
+ source = _render_source args
33
+ source ? yield(source) : ""
34
+ rescue
35
+ "File Error"
36
+ end
37
+ end
38
+
39
+ format :file do
40
+ # returns send_file args. not in love with this...
41
+ view :core do |_args|
42
+ # this means we only support known formats. dislike.
43
+ if (_format = card.attachment_format(params[:format]))
44
+ if params[:explicit_file] && (r = controller.response)
45
+ r.headers["Expires"] = 1.year.from_now.httpdate
46
+ # currently using default "private", because proxy servers could block
47
+ # needed permission checks
48
+ # r.headers["Cache-Control"] = "public"
49
+ end
50
+
51
+ # formerly supported redirecting to correct file format
52
+ # elsif ![format, 'file'].member? params[:format]
53
+ # path = request.fullpath.sub( /\.#{params[:format]}\b/, '.' + format )
54
+ # return redirect_to(path) #card.attachment.url(style) )
55
+
56
+ file = selected_file_version
57
+ [file.path,
58
+ {
59
+ type: file.content_type,
60
+ filename: "#{card.cardname.safe_key}#{file.extension}",
61
+ x_sendfile: true,
62
+ disposition: (params[:format] == "file" ? "attachment" : "inline")
63
+ }]
64
+ else
65
+ _render_not_found
66
+ end
67
+ end
68
+
69
+ def selected_file_version
70
+ card.attachment
71
+ end
72
+ end
73
+
74
+ format :html do
75
+ view :core do |args|
76
+ handle_source args do |source|
77
+ "<a href=\"#{source}\">Download #{showname args[:title]}</a>"
78
+ end
79
+ end
80
+
81
+ view :editor do |args|
82
+ file_chooser args
83
+ end
84
+
85
+ def preview _args
86
+ ""
87
+ end
88
+
89
+ view :preview_editor, tags: :unknown_ok do |args|
90
+ cached_upload_card_name = Card::Env.params[:attachment_upload]
91
+ cached_upload_card_name.gsub!(/\[\w+\]$/, "[action_id_of_cached_upload]")
92
+ <<-HTML
93
+ <div class="chosen-file">
94
+ <input type="hidden" name="#{cached_upload_card_name}"
95
+ value="#{card.selected_action_id}">
96
+ <table role="presentation" class="table table-striped">
97
+ <tbody class="files">
98
+ <tr class="template-download fade in">
99
+ <td>
100
+ <span class="preview">
101
+ #{preview(args)}
102
+ </span>
103
+ </td>
104
+ <td>
105
+ <p class="name">
106
+ #{card.original_filename}
107
+ </p>
108
+ </td>
109
+ <td>
110
+ <span class="size">
111
+ #{number_to_human_size(card.attachment.size)}
112
+ </span>
113
+ </td>
114
+ <td class="pull-right">
115
+ <button class="btn btn-danger delete cancel-upload"
116
+ data-type="DELETE">
117
+ <i class="glyphicon glyphicon-trash"></i>
118
+ <span>Delete</span>
119
+ </button>
120
+ </td>
121
+ </tr>
122
+ </tbody>
123
+ </table>
124
+ </div>
125
+ HTML
126
+ end
127
+
128
+ def file_chooser args
129
+ <<-HTML
130
+ <div class="choose-file">
131
+ #{preview(args)}
132
+ <span class="btn btn-success fileinput-button">
133
+ <i class="glyphicon glyphicon-cloud-upload"></i>
134
+ <span>
135
+ #{card.new_card? ? 'Add' : 'Replace'} #{card.attachment_name}...
136
+ </span>
137
+ <input class="file-upload slotter form-control" type="file"
138
+ name="card[#{card.type_code}]" id="card_#{card.type_code}">
139
+ #{hidden_field_tag 'attachment_type_id', card.type_id}
140
+ #{hidden_field card.attachment_name, class: 'attachment_card_name',
141
+ value: ''}
142
+ #{hidden_field_tag 'file_card_name', card.cardname.url_key}
143
+ </span>
144
+ </div>
145
+ <div id="progress" class="progress" style="display: none;">
146
+ <div class="progress-bar progress-bar-success" style="width: 0%;"></div>
147
+ </div>
148
+ <div class="chosen-file"></div>
149
+ HTML
150
+ end
151
+ end
152
+
153
+
154
+ # ~~ below autogenerated; above pulled from /Users/ethan/dev/wagn/gem/card/mod/carrierwave/set/type/file.rb ~~
155
+ end;end;end;end;
@@ -0,0 +1,96 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class Card; module Set; class Type; module Image; extend Card::Set
3
+ # ~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/carrierwave/set/type/image.rb ~~
4
+ attachment :image, uploader: CarrierWave::ImageCardUploader
5
+
6
+ include File::SelectedAction
7
+
8
+ format do
9
+ include File::Format
10
+
11
+ view :closed_content do |_args|
12
+ _render_core size: :icon
13
+ end
14
+
15
+ view :source do |args|
16
+ style =
17
+ case
18
+ when @mode == :closed then :icon
19
+ when args[:size] then args[:size].to_sym
20
+ when main? then :large
21
+ else :medium
22
+ end
23
+ style = :original if style.to_sym == :full
24
+ if style == :original
25
+ card.image.url
26
+ else
27
+ card.image.versions[style].url
28
+ end
29
+ end
30
+ end
31
+
32
+ format :html do
33
+ include File::HtmlFormat
34
+
35
+ view :core do |args|
36
+ handle_source args do |source|
37
+ if source == "missing"
38
+ "<!-- image missing #{@card.name} -->"
39
+ else
40
+ image_tag(source)
41
+ end
42
+ end
43
+ end
44
+
45
+ def preview args
46
+ if !card.new_card? || card.preliminary_upload?
47
+ content_tag :div, _render_core(args.merge(size: :medium)).html_safe,
48
+ class: "attachment-preview",
49
+ id: "#{card.attachment.filename}-preview"
50
+ end
51
+ end
52
+
53
+ view :content_changes do |args|
54
+ out = ""
55
+ size = args[:diff_type] == :summary ? :icon : :medium
56
+ if !args[:hide_diff] && args[:action] &&
57
+ (last_change = card.last_change_on(:db_content, before: args[:action]))
58
+ card.selected_action_id = last_change.card_action_id
59
+ out << Card::Content::Diff.render_deleted_chunk(_render_core(size: size))
60
+ end
61
+ card.selected_action_id = args[:action].id
62
+ out << Card::Content::Diff.render_added_chunk(_render_core(size: size))
63
+ out
64
+ end
65
+ end
66
+
67
+ format :css do
68
+ view :core do |_args|
69
+ render_source
70
+ end
71
+
72
+ view :content do |_args| # why is this necessary?
73
+ render_core
74
+ end
75
+ end
76
+
77
+ format :file do
78
+ include File::FileFormat
79
+
80
+ view :style do |args| # should this be in model?
81
+ ["", "full"].member?(args[:style].to_s) ? :original : args[:style]
82
+ end
83
+
84
+ def selected_file_version
85
+ style = _render_style(style: params[:size]).to_sym
86
+ if style && style != :original
87
+ card.attachment.versions[style]
88
+ else
89
+ card.attachment
90
+ end
91
+ end
92
+ end
93
+
94
+
95
+ # ~~ below autogenerated; above pulled from /Users/ethan/dev/wagn/gem/card/mod/carrierwave/set/type/image.rb ~~
96
+ end;end;end;end;
@@ -0,0 +1,113 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class Card; module Set; class Self; module Admin; extend Card::Set
3
+ # ~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/admin/set/self/admin.rb ~~
4
+ event :admin_tasks, :initialize, on: :update do
5
+ return unless (task = Env.params[:task])
6
+ raise Card::Error::PermissionDenied.new(self) unless Auth.always_ok?
7
+
8
+ case task.to_sym
9
+ when :clear_cache then Card::Cache.reset_all
10
+ when :repair_references then Card::Reference.repair_all
11
+ when :empty_trash then Card.empty_trash
12
+ when :clear_view_cache then Card::Cache::ViewCache.reset
13
+ when :delete_old_revisions then Card::Action.delete_old
14
+ when :repair_permissions then Card.repair_all_permissions
15
+ when :clear_solid_cache then Card.clear_solid_cache
16
+ when :clear_machine_cache then Card.reset_all_machines
17
+ end
18
+ abort :success
19
+ end
20
+
21
+ format :html do
22
+ view :core do |_args|
23
+ stats = card_stats
24
+ stats += cache_stats
25
+ stats += memory_stats
26
+ table_content = stats.map { |args| stat_row(*args) }
27
+ table table_content, header: %w(Stat Value Action)
28
+ end
29
+
30
+ def card_stats
31
+ [
32
+ ["cards", { count: Card.where(trash: false) }],
33
+ ["trashed cards", { count: Card.where(trash: true),
34
+ link_text: "delete all", task: "empty_trash" }],
35
+ ["actions", { count: Card::Action,
36
+ link_text: "delete old",
37
+ task: "delete_old_revisions" }],
38
+ ["references", { count: Card::Reference,
39
+ link_text: "repair all", task: "repair_references" }]
40
+ ]
41
+ end
42
+
43
+ def cache_stats
44
+ stats = [
45
+ ["solid cache", { count: solid_cache_count, unit: " cards",
46
+ link_text: "clear cache",
47
+ task: "clear_solid_cache" }],
48
+ ["machine cache", { count: machine_cache_count, unit: " cards",
49
+ link_text: "clear cache",
50
+ task: "clear_machine_cache" }]
51
+ ]
52
+ return stats unless Card.config.view_cache
53
+ stats <<
54
+ ["view cache", { count: Card::Cache::ViewCache,
55
+ link_text: "clear view cache",
56
+ task: "clear_view_cache" }]
57
+ stats
58
+ end
59
+
60
+ def memory_stats
61
+ oldmem = session[:memory]
62
+ session[:memory] = newmem = card.profile_memory
63
+ stats = [
64
+ ["memory now", { count: newmem, unit: "M",
65
+ link_text: "clear cache", task: "clear_cache" }]
66
+ ]
67
+ return stats unless oldmem
68
+ stats << ["memory prev", { count: oldmem, unit: "M" }]
69
+ stats << ["memory diff", { count: newmem - oldmem, unit: "M" }]
70
+ stats
71
+ end
72
+
73
+ def stat_row name, args={}
74
+ res = [name]
75
+ args[:count] = args[:count].count if args[:count].respond_to?(:count)
76
+ res << "#{args[:count]}#{args[:unit]}"
77
+ return res unless args[:task]
78
+ path = card_path("update/:admin?task=#{args[:task]}")
79
+ res << link_to(args[:link_text] || args[:task], path)
80
+ res
81
+ end
82
+
83
+ def solid_cache_count
84
+ Card.search right: { codename: "solid_cache" }, return: "count"
85
+ end
86
+
87
+ def machine_cache_count
88
+ Card.search right: { codename: "machine_cache" }, return: "count"
89
+ end
90
+
91
+ def delete_sessions_link months
92
+ link_to months,
93
+ card_path("update/:admin?task=delete_old_sessions&months=#{months}")
94
+ end
95
+ end
96
+
97
+ def current_memory_usage
98
+ `ps -o rss= -p #{Process.pid}`.to_i
99
+ end
100
+
101
+ def profile_memory &block
102
+ before = current_memory_usage
103
+ if block_given?
104
+ instance_eval(&block)
105
+ else
106
+ before = 0
107
+ end
108
+ (current_memory_usage - before) / 1024.to_i
109
+ end
110
+
111
+
112
+ # ~~ below autogenerated; above pulled from /Users/ethan/dev/wagn/gem/card/mod/admin/set/self/admin.rb ~~
113
+ end;end;end;end;
@@ -0,0 +1,110 @@
1
+ # -*- encoding : utf-8 -*-
2
+ class Card; module Set; class Self; module AdminInfo; extend Card::Set
3
+ # ~~ above autogenerated; below pulled from /Users/ethan/dev/wagn/gem/card/mod/admin/set/self/admin_info.rb ~~
4
+ def clean_html?
5
+ false
6
+ end
7
+
8
+ format :html do
9
+ view :core do
10
+ warnings = []
11
+ if Card.config.action_mailer.perform_deliveries == false
12
+ warnings << email_warning
13
+ end
14
+ if Card.config.recaptcha_public_key ==
15
+ Card::Auth::Permissions::RECAPTCHA_DEFAULTS[:recaptcha_public_key] &&
16
+ card.rule(:captcha) == "1"
17
+ warnings << recaptcha_warning
18
+ end
19
+ return "" if warnings.empty?
20
+ alert :warning, dismissible: true do
21
+ render_warning_list warnings
22
+ end
23
+ end
24
+
25
+ def render_warning_list warnings
26
+ # 'ADMINISTRATOR WARNING'
27
+ admin_warn = I18n.t(:admin_warn,
28
+ scope: "mod.standard.set.self.admin_info")
29
+ "<h6>#{admin_warn}</h6>".html_safe + list_group(
30
+ warnings,
31
+ items: { class: "list-group-item-warning" }
32
+ )
33
+ end
34
+
35
+ def email_warning
36
+ # "Email delivery is turned off."
37
+ # "Change settings in config/application.rb to send sign up notifications."
38
+ I18n.t(:email_off,
39
+ scope: "mod.standard.set.self.admin_info",
40
+ path: "config/application.rb")
41
+ end
42
+
43
+ def recaptcha_warning
44
+ warning =
45
+ if Card::Env.localhost?
46
+ # %(Your captcha is currently working with temporary settings.
47
+ # This is fine for a local installation, but you will need new
48
+ # recaptcha keys if you want to make this site public.)
49
+ I18n.t(:captcha_temp, scope: "mod.standard.set.self.admin_info")
50
+ else
51
+ # %(You are configured to use [[*captcha]], but for that to work
52
+ # you need new recaptcha keys.)
53
+ process_content(I18n.t(:captcha_keys,
54
+ scope: "mod.standard.set.self.admin_info"))
55
+ end
56
+ # 'Instructions'
57
+ instructions = I18n.t(:instructions,
58
+ scope: "mod.standard.set.self.admin_info")
59
+ <<-HTML
60
+ <p>
61
+ #{warning}
62
+ </p>
63
+ <h4>#{instructions}</h4>
64
+ #{howto_add_new_recaptcha_keys}
65
+ #{howto_turn_captcha_off}
66
+ HTML
67
+ end
68
+
69
+ def instructions title, steps
70
+ steps = list_group steps
71
+ "#{title}#{steps}"
72
+ end
73
+
74
+ def howto_add_new_recaptcha_keys
75
+ instructions(
76
+ # 'How to add new recaptcha keys:'
77
+ I18n.t(:howto_add_keys, scope: "mod.standard.set.self.admin_info"),
78
+ [
79
+ # "1. Register your domain at #{web_link 'http://google.com/recaptcha'}"
80
+ I18n.t(:howto_register,
81
+ scope: "mod.standard.set.self.admin_info",
82
+ recaptcha_link: web_link("http://google.com/recaptcha")),
83
+ # "2. Add your keys to #{card_link :recaptcha_settings}"
84
+ I18n.t(:howto_add,
85
+ scope: "mod.standard.set.self.admin_info",
86
+ recaptcha_settings: card_link(:recaptcha_settings))
87
+ ]
88
+ )
89
+ end
90
+
91
+ def howto_turn_captcha_off
92
+ instructions(
93
+ # 'How to turn captcha off:'
94
+ I18n.t(:howto_turn_off, scope: "mod.standard.set.self.admin_info"),
95
+ [
96
+ # "1. Go to #{card_link :captcha}"
97
+ I18n.t(:howto_go,
98
+ scope: "mod.standard.set.self.admin_info",
99
+ captcha_card: card_link(:captcha)),
100
+ # '2. Update all *captcha rules to "no".'
101
+ I18n.t(:howto_update,
102
+ scope: "mod.standard.set.self.admin_info")
103
+ ]
104
+ )
105
+ end
106
+ end
107
+
108
+
109
+ # ~~ below autogenerated; above pulled from /Users/ethan/dev/wagn/gem/card/mod/admin/set/self/admin_info.rb ~~
110
+ end;end;end;end;