active_admin_editor 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (185) hide show
  1. data/MIT-LICENSE +20 -0
  2. data/README.md +39 -0
  3. data/Rakefile +38 -0
  4. data/app/assets/images/active_admin/editor/icons.png +0 -0
  5. data/app/assets/javascripts/active_admin/editor.js +23 -0
  6. data/app/assets/javascripts/active_admin/editor/quicksave.js +36 -0
  7. data/app/assets/stylesheets/active_admin/editor.css +136 -0
  8. data/app/assets/stylesheets/active_admin/editor/wysiwyg.css +130 -0
  9. data/app/inputs/html_editor_input.rb +79 -0
  10. data/lib/active_admin/editor.rb +2 -0
  11. data/lib/active_admin/editor/rails/engine.rb +16 -0
  12. data/lib/active_admin/editor/version.rb +5 -0
  13. data/lib/active_admin_editor.rb +1 -0
  14. data/lib/tasks/active_admin_editor_tasks.rake +4 -0
  15. data/test/active_admin_editor_test.rb +7 -0
  16. data/test/dummy/README.rdoc +261 -0
  17. data/test/dummy/Rakefile +7 -0
  18. data/test/dummy/app/admin/dashboards.rb +44 -0
  19. data/test/dummy/app/admin/pages.rb +16 -0
  20. data/test/dummy/app/assets/javascripts/active_admin.js +1 -0
  21. data/test/dummy/app/assets/javascripts/application.js +15 -0
  22. data/test/dummy/app/assets/javascripts/pages.js +2 -0
  23. data/test/dummy/app/assets/stylesheets/active_admin.css.scss +6 -0
  24. data/test/dummy/app/assets/stylesheets/application.css +13 -0
  25. data/test/dummy/app/assets/stylesheets/pages.css.scss +3 -0
  26. data/test/dummy/app/assets/stylesheets/scaffolds.css.scss +56 -0
  27. data/test/dummy/app/controllers/application_controller.rb +3 -0
  28. data/test/dummy/app/controllers/pages_controller.rb +2 -0
  29. data/test/dummy/app/helpers/application_helper.rb +2 -0
  30. data/test/dummy/app/helpers/pages_helper.rb +2 -0
  31. data/test/dummy/app/models/admin_user.rb +10 -0
  32. data/test/dummy/app/models/page.rb +3 -0
  33. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  34. data/test/dummy/app/views/pages/_form.html.erb +25 -0
  35. data/test/dummy/app/views/pages/edit.html.erb +6 -0
  36. data/test/dummy/app/views/pages/index.html.erb +25 -0
  37. data/test/dummy/app/views/pages/new.html.erb +5 -0
  38. data/test/dummy/app/views/pages/show.html.erb +15 -0
  39. data/test/dummy/config.ru +4 -0
  40. data/test/dummy/config/application.rb +56 -0
  41. data/test/dummy/config/boot.rb +10 -0
  42. data/test/dummy/config/database.yml +25 -0
  43. data/test/dummy/config/environment.rb +5 -0
  44. data/test/dummy/config/environments/development.rb +37 -0
  45. data/test/dummy/config/environments/production.rb +67 -0
  46. data/test/dummy/config/environments/test.rb +37 -0
  47. data/test/dummy/config/initializers/active_admin.rb +129 -0
  48. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  49. data/test/dummy/config/initializers/devise.rb +223 -0
  50. data/test/dummy/config/initializers/inflections.rb +15 -0
  51. data/test/dummy/config/initializers/mime_types.rb +5 -0
  52. data/test/dummy/config/initializers/secret_token.rb +7 -0
  53. data/test/dummy/config/initializers/session_store.rb +8 -0
  54. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  55. data/test/dummy/config/locales/devise.en.yml +57 -0
  56. data/test/dummy/config/locales/en.yml +5 -0
  57. data/test/dummy/config/routes.rb +64 -0
  58. data/test/dummy/db/development.sqlite3 +0 -0
  59. data/test/dummy/db/migrate/20120430130552_create_admin_notes.rb +17 -0
  60. data/test/dummy/db/migrate/20120430130553_move_admin_notes_to_comments.rb +25 -0
  61. data/test/dummy/db/migrate/20120430200549_devise_create_admin_users.rb +52 -0
  62. data/test/dummy/db/migrate/20120430201522_create_pages.rb +10 -0
  63. data/test/dummy/db/schema.rb +56 -0
  64. data/test/dummy/db/test.sqlite3 +0 -0
  65. data/test/dummy/log/development.log +9246 -0
  66. data/test/dummy/public/404.html +26 -0
  67. data/test/dummy/public/422.html +26 -0
  68. data/test/dummy/public/500.html +25 -0
  69. data/test/dummy/public/favicon.ico +0 -0
  70. data/test/dummy/script/rails +6 -0
  71. data/test/dummy/test/fixtures/admin_users.yml +11 -0
  72. data/test/dummy/test/fixtures/pages.yml +9 -0
  73. data/test/dummy/test/functional/pages_controller_test.rb +49 -0
  74. data/test/dummy/test/unit/admin_user_test.rb +7 -0
  75. data/test/dummy/test/unit/helpers/pages_helper_test.rb +4 -0
  76. data/test/dummy/test/unit/page_test.rb +7 -0
  77. data/test/dummy/tmp/cache/assets/C37/920/sprockets%2F06193740ee7452897ea890866606e46c +0 -0
  78. data/test/dummy/tmp/cache/assets/C71/0E0/sprockets%2F21b76d0a722239c66071874c6c1f103d +0 -0
  79. data/test/dummy/tmp/cache/assets/C72/550/sprockets%2Fb10447885a4e045d14e632325d4167ba +0 -0
  80. data/test/dummy/tmp/cache/assets/C79/430/sprockets%2F239310c864d95b8029081a8cbb51109f +0 -0
  81. data/test/dummy/tmp/cache/assets/C7A/E90/sprockets%2F43393b12e73846b417e5187012f74cab +0 -0
  82. data/test/dummy/tmp/cache/assets/C8E/6F0/sprockets%2F17a15f67b95d85b259346b1988509d0b +0 -0
  83. data/test/dummy/tmp/cache/assets/C9C/4C0/sprockets%2F310c249165fa3e00ec5239562bc245f1 +0 -0
  84. data/test/dummy/tmp/cache/assets/CDB/040/sprockets%2Fc732474e67003a4eb840eb44c5ca9385 +0 -0
  85. data/test/dummy/tmp/cache/assets/CDD/2E0/sprockets%2F0f78bdd85b7f5fd4621224a2c0437572 +0 -0
  86. data/test/dummy/tmp/cache/assets/CE3/2D0/sprockets%2F4d4462dd9972233e700be2e38188ed1d +0 -0
  87. data/test/dummy/tmp/cache/assets/CEC/AF0/sprockets%2F7d8695745080bd838fea849c0d2d3a42 +0 -0
  88. data/test/dummy/tmp/cache/assets/D09/190/sprockets%2F45fb79553642c806213ebc0e22faed63 +0 -0
  89. data/test/dummy/tmp/cache/assets/D13/FE0/sprockets%2Ffb7916af38b70bb578a6d035d2508f18 +0 -0
  90. data/test/dummy/tmp/cache/assets/D24/8D0/sprockets%2F8f2a1bfe27153639fb959a5968b44c8d +0 -0
  91. data/test/dummy/tmp/cache/assets/D2A/F60/sprockets%2Fe73a58b43837c7ff9f6543898b362ebb +0 -0
  92. data/test/dummy/tmp/cache/assets/D2C/800/sprockets%2Fc7dacf6709ba20274c032814cd4e531b +0 -0
  93. data/test/dummy/tmp/cache/assets/D2F/AF0/sprockets%2F701a5254fb5ba1455e860e5c70d07cdb +0 -0
  94. data/test/dummy/tmp/cache/assets/D38/540/sprockets%2F86e1ad844bc9df4491a2a52b870421db +0 -0
  95. data/test/dummy/tmp/cache/assets/D3B/4F0/sprockets%2F6be6ae7be6be4167064d435a34ca1369 +0 -0
  96. data/test/dummy/tmp/cache/assets/D3E/150/sprockets%2Fec3ae7fd44729124d3e7046f33af28a4 +0 -0
  97. data/test/dummy/tmp/cache/assets/D48/640/sprockets%2F9f4f18d910b678b1d0777e04cdaf6f24 +0 -0
  98. data/test/dummy/tmp/cache/assets/D4D/D70/sprockets%2F169a66ca31e9576ce9062c9c38bf5e2e +0 -0
  99. data/test/dummy/tmp/cache/assets/D59/D70/sprockets%2Fed9f0de1b65ae8d7ef89087c83728461 +0 -0
  100. data/test/dummy/tmp/cache/assets/D64/2C0/sprockets%2Fce4f2416932b7aae7c1e2cdad1343873 +0 -0
  101. data/test/dummy/tmp/cache/assets/D6D/830/sprockets%2Fae3018f4cb13ce743eecf52ff7951532 +0 -0
  102. data/test/dummy/tmp/cache/assets/D75/FD0/sprockets%2Fc7cfc0d19e8f7f5166a4b436ba358e34 +0 -0
  103. data/test/dummy/tmp/cache/assets/D86/680/sprockets%2F16dbbba0db91ea56e2a6a5f6450c2522 +0 -0
  104. data/test/dummy/tmp/cache/assets/D91/A70/sprockets%2F4bc82aa15ade4213e6574aaac1d8387f +0 -0
  105. data/test/dummy/tmp/cache/assets/D93/4C0/sprockets%2F857ecd2092cee11f740b3cf2e373ad2a +0 -0
  106. data/test/dummy/tmp/cache/assets/DA3/140/sprockets%2Fbdcfc2e11e8ef8080de86623e8734ad2 +0 -0
  107. data/test/dummy/tmp/cache/assets/DBA/330/sprockets%2Fc80aa22f501364dfa9cbf2b4135efbc4 +0 -0
  108. data/test/dummy/tmp/cache/assets/DCE/D20/sprockets%2Fbb2839e538aadcf1cacde890159b37e2 +0 -0
  109. data/test/dummy/tmp/cache/assets/DD0/820/sprockets%2F92503cd8fdbce38ac5de45630df9d15b +0 -0
  110. data/test/dummy/tmp/cache/assets/DD2/350/sprockets%2Ffabdac3a31a0fd1f9132ff5e89f46993 +0 -0
  111. data/test/dummy/tmp/cache/assets/DD9/760/sprockets%2F96b2c42e56df91c925faff94d3dbfb32 +0 -0
  112. data/test/dummy/tmp/cache/assets/DDE/420/sprockets%2Ffb8b186d5bf0307f86f65fc787d2adeb +0 -0
  113. data/test/dummy/tmp/cache/assets/DE5/ED0/sprockets%2Fbceb64af6e2b030cc2362a481efae2d2 +0 -0
  114. data/test/dummy/tmp/cache/assets/DF5/940/sprockets%2F68a03b5cb8fac91ac7bb6f7a3703d5ae +0 -0
  115. data/test/dummy/tmp/cache/assets/DFE/710/sprockets%2Fbaba2fa1e1be8d768b866fc59c8b250c +0 -0
  116. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_animation.scssc +0 -0
  117. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_appearance.scssc +0 -0
  118. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_background-image.scssc +0 -0
  119. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_background-size.scssc +0 -0
  120. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_border-image.scssc +0 -0
  121. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_border-radius.scssc +0 -0
  122. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_box-shadow.scssc +0 -0
  123. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_box-sizing.scssc +0 -0
  124. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_columns.scssc +0 -0
  125. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_flex-box.scssc +0 -0
  126. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_inline-block.scssc +0 -0
  127. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_linear-gradient.scssc +0 -0
  128. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_radial-gradient.scssc +0 -0
  129. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_transform.scssc +0 -0
  130. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_transition.scssc +0 -0
  131. data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_user-select.scssc +0 -0
  132. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_blank_slates.scssc +0 -0
  133. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_breadcrumbs.scssc +0 -0
  134. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_buttons.scssc +0 -0
  135. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_columns.scssc +0 -0
  136. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_comments.css.scssc +0 -0
  137. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_date_picker.css.scssc +0 -0
  138. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_flash_messages.css.scssc +0 -0
  139. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_grid.scssc +0 -0
  140. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_links.scssc +0 -0
  141. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_pagination.scssc +0 -0
  142. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_panels.scssc +0 -0
  143. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_scopes.scssc +0 -0
  144. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_status_tags.scssc +0 -0
  145. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_table_tools.css.scssc +0 -0
  146. data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_tables.css.scssc +0 -0
  147. data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_button.scssc +0 -0
  148. data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_clearfix.scssc +0 -0
  149. data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_font-family.scssc +0 -0
  150. data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_html5-input-types.scssc +0 -0
  151. data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_position.scssc +0 -0
  152. data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_timing-functions.scssc +0 -0
  153. data/test/dummy/tmp/cache/sass/649eb811547a5926cdeb483c470efd70480ac80c/_dashboard.scssc +0 -0
  154. data/test/dummy/tmp/cache/sass/649eb811547a5926cdeb483c470efd70480ac80c/_logged_out.scssc +0 -0
  155. data/test/dummy/tmp/cache/sass/6918b4b0c0893eabd3eaf41fe8db1fb76432cdb7/_footer.scssc +0 -0
  156. data/test/dummy/tmp/cache/sass/6918b4b0c0893eabd3eaf41fe8db1fb76432cdb7/_main_structure.scssc +0 -0
  157. data/test/dummy/tmp/cache/sass/6918b4b0c0893eabd3eaf41fe8db1fb76432cdb7/_title_bar.scssc +0 -0
  158. data/test/dummy/tmp/cache/sass/6b007881be7ebec964704521003b1d386a87a62e/active_admin.css.scssc +0 -0
  159. data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_deprecated-webkit-gradient.scssc +0 -0
  160. data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_flex-grid.scssc +0 -0
  161. data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_grid-width.scssc +0 -0
  162. data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_linear-gradient.scssc +0 -0
  163. data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_modular-scale.scssc +0 -0
  164. data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_radial-gradient.scssc +0 -0
  165. data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_render-gradients.scssc +0 -0
  166. data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_tint-shade.scssc +0 -0
  167. data/test/dummy/tmp/cache/sass/9281732a5ed473e2068958b0e7f25e8bbdf281c1/_bourbon.scssc +0 -0
  168. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_all.css.scssc +0 -0
  169. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_buttons.css.scssc +0 -0
  170. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_gradients.css.scssc +0 -0
  171. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_icons.css.scssc +0 -0
  172. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_reset.css.scssc +0 -0
  173. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_rounded.css.scssc +0 -0
  174. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_sections.css.scssc +0 -0
  175. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_shadows.css.scssc +0 -0
  176. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_typography.scssc +0 -0
  177. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_utilities.scssc +0 -0
  178. data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_variables.css.scssc +0 -0
  179. data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_base.css.scssc +0 -0
  180. data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_forms.css.scssc +0 -0
  181. data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_header.css.scssc +0 -0
  182. data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_mixins.css.scssc +0 -0
  183. data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_typography.css.scssc +0 -0
  184. data/test/test_helper.rb +15 -0
  185. metadata +454 -0
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2012 YOURNAME
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,39 @@
1
+ # Active Admin Editor
2
+
3
+ This is a wysiyg html editor for the [Active Admin](http://activeadmin.info/)
4
+ interface using [wysihtml5](https://github.com/xing/wysihtml5).
5
+
6
+ ![screenshot](http://i.imgur.com/vfX1A.png)
7
+
8
+ ## Installation
9
+
10
+ ```ruby
11
+ # Gemfile
12
+
13
+ gem 'active_admin_editor'
14
+ ```
15
+
16
+ Then add the following stylesheet to your application manifest:
17
+
18
+ ```
19
+ //= require active_admin/editor/wysiwyg
20
+ ```
21
+
22
+ ## Usage
23
+ This gem provides you with a custom formtastic input called `:html_editor` to build out an html editor.
24
+ All you have to do is specify the `:as` option for your inputs.
25
+
26
+ **Example**
27
+
28
+ ```ruby
29
+ ActiveAdmin.register Page do
30
+ form do |f|
31
+ f.inputs do
32
+ f.input :title
33
+ f.input :content, as: :html_editor
34
+ end
35
+
36
+ f.buttons
37
+ end
38
+ end
39
+ ```
data/Rakefile ADDED
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env rake
2
+ begin
3
+ require 'bundler/setup'
4
+ rescue LoadError
5
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
6
+ end
7
+ begin
8
+ require 'rdoc/task'
9
+ rescue LoadError
10
+ require 'rdoc/rdoc'
11
+ require 'rake/rdoctask'
12
+ RDoc::Task = Rake::RDocTask
13
+ end
14
+
15
+ RDoc::Task.new(:rdoc) do |rdoc|
16
+ rdoc.rdoc_dir = 'rdoc'
17
+ rdoc.title = 'ActiveAdminEditor'
18
+ rdoc.options << '--line-numbers'
19
+ rdoc.rdoc_files.include('README.rdoc')
20
+ rdoc.rdoc_files.include('lib/**/*.rb')
21
+ end
22
+
23
+
24
+
25
+
26
+ Bundler::GemHelper.install_tasks
27
+
28
+ require 'rake/testtask'
29
+
30
+ Rake::TestTask.new(:test) do |t|
31
+ t.libs << 'lib'
32
+ t.libs << 'test'
33
+ t.pattern = 'test/**/*_test.rb'
34
+ t.verbose = false
35
+ end
36
+
37
+
38
+ task :default => :test
@@ -0,0 +1,23 @@
1
+ //= require active_admin/editor/wysihtml5.min
2
+ //= require active_admin/editor/wysihtml5/parser_rules
3
+ //= require active_admin/editor/quicksave
4
+
5
+ (function($) {
6
+ $(function(){
7
+ var active_admin_editor, textarea_id, toolbar_id;
8
+ active_admin_editor = $('.active_admin_editor');
9
+
10
+ if (active_admin_editor.length > 0) {
11
+ textarea_id = active_admin_editor.find('textarea').attr('id');
12
+ toolbar_id = active_admin_editor.find('.active_admin_editor_toolbar').attr('id');
13
+
14
+ var editor = new wysihtml5.Editor(textarea_id, {
15
+ toolbar: toolbar_id,
16
+ stylesheets: "/assets/active_admin/editor/wysiwyg",
17
+ parserRules: wysihtml5ParserRules
18
+ });
19
+
20
+ window.editor = editor;
21
+ }
22
+ });
23
+ })(jQuery);
@@ -0,0 +1,36 @@
1
+ (function($) {
2
+ $(function(){
3
+ var button = $('.button.quicksave');
4
+ button.click(function(e) {
5
+ e.preventDefault();
6
+
7
+ $.ajaxSetup({
8
+ beforeSend: function(xhr) {
9
+ xhr.setRequestHeader('X-CSRF-Token', $('meta[name="csrf-token"]').attr('content'));
10
+ }
11
+ });
12
+
13
+ var form = $(this).closest('form');
14
+ var url = form.attr('action');
15
+ var textarea = $(this).closest('.active_admin_editor').find('textarea');
16
+ var fields = textarea.attr('id').split('_');
17
+ var content = textarea.val();
18
+ var data = {
19
+ _method: 'PUT'
20
+ };
21
+
22
+ data[fields[0]] = {};
23
+ data[fields[0]][fields[1]] = content;
24
+
25
+ $.ajax({
26
+ url: url,
27
+ type: 'POST',
28
+ dataType: 'json',
29
+ data: data,
30
+ success: function(response) {
31
+ console.log('saved');
32
+ }
33
+ });
34
+ });
35
+ });
36
+ })(jQuery);
@@ -0,0 +1,136 @@
1
+ .active_admin_editor {
2
+ width: 76%;
3
+ float: left;
4
+ }
5
+ .active_admin_editor textarea {
6
+ width: 100%;
7
+ font-family: Georgia;
8
+ font-size: 1.3em;
9
+ height: 700px;
10
+ line-height: 1.5em;
11
+ }
12
+
13
+ /* wysihtml5 styles */
14
+ .active_admin_editor .active_admin_editor_toolbar {
15
+ position: relative;
16
+ }
17
+
18
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-command] {
19
+ width: 16px;
20
+ height: 16px;
21
+ display: inline-block;
22
+ background: url('editor/icons.png') top left no-repeat;
23
+ }
24
+
25
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-action="change_view"] {
26
+ display: inline-block;
27
+ height: 16px;
28
+ line-height: 16px;
29
+ padding-left: 20px;
30
+ margin-right: 10px;
31
+ position: relative;
32
+ top: -4px;
33
+ background: url('editor/icons.png') top left no-repeat;
34
+ color: #000;
35
+ text-decoration: none;
36
+ }
37
+
38
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-command="bold"] {
39
+ background-position: 0 -304px;
40
+ }
41
+
42
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-command="italic"] {
43
+ background-position: 0 -320px;
44
+ }
45
+
46
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-command="createLink"] {
47
+ background-position: 0 -528px;
48
+ }
49
+
50
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-command="insertImage"] {
51
+ background-position: 0 -576px;
52
+ }
53
+
54
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-command="insertUnorderedList"] {
55
+ background-position: 0 -416px;
56
+ }
57
+
58
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-command="insertOrderedList"] {
59
+ background-position: 0 -400px;
60
+ }
61
+
62
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-command="formatBlock"] {
63
+ background: none;
64
+ width: auto;
65
+ padding-right: 2px;
66
+ position: relative;
67
+ top: -3px;
68
+ text-decoration: none;
69
+ font-size: 14px;
70
+ font-family: Georgia;
71
+ color: #000;
72
+ }
73
+
74
+ .active_admin_editor .active_admin_editor_toolbar .separator {
75
+ display: inline-block;
76
+ height: 1px;
77
+ width: 10px;
78
+ }
79
+
80
+ .active_admin_editor .active_admin_editor_toolbar .wysihtml5-command-active {
81
+ background-color: #ccc;
82
+ }
83
+
84
+ .active_admin_editor .active_admin_editor_toolbar .button.quicksave {
85
+ float: right;
86
+ margin-top: -5px;
87
+ margin-right: -20px;
88
+ position: relative;
89
+ top: -5px;
90
+ }
91
+
92
+ /* wysihtml5 dialogs */
93
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-dialog] {
94
+ position: absolute;
95
+ top: 30px;
96
+ left: 10px;
97
+ width: 600px;
98
+ background: #fff;
99
+ padding: 10px;
100
+ border: 1px solid #c9d0d6;
101
+
102
+ -moz-border-radius: 3px;
103
+ -webkit-border-radius: 3px;
104
+ border-radius: 3px;
105
+
106
+ -moz-box-shadow: 0 0 5px #ccc;
107
+ -webkit-box-shadow: 0 0 5px #ccc;
108
+ box-shadow: 0 0 5px #ccc;
109
+ }
110
+
111
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-dialog] label {
112
+ clear: both;
113
+ display: block;
114
+ margin: 10px 0;
115
+ }
116
+
117
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-dialog] input {
118
+ width: 400px;
119
+ border: 1px solid #c9d0d6;
120
+ -webkit-border-radius: 3px;
121
+ -moz-border-radius: 3px;
122
+ border-radius: 3px;
123
+ font-size: 0.95em;
124
+ font-family: Helvetica, Arial, sans-serif;
125
+ outline: none;
126
+ padding: 8px 10px 7px;
127
+ }
128
+
129
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-dialog] .action-group {
130
+ padding-top: 20px;
131
+ clear: both;
132
+ }
133
+
134
+ .active_admin_editor .active_admin_editor_toolbar [data-wysihtml5-dialog-action] {
135
+ cursor: pointer;
136
+ }
@@ -0,0 +1,130 @@
1
+
2
+ .wysiwyg-font-size-smaller {
3
+ font-size: smaller;
4
+ }
5
+
6
+ .wysiwyg-font-size-larger {
7
+ font-size: larger;
8
+ }
9
+
10
+ .wysiwyg-font-size-xx-large {
11
+ font-size: xx-large;
12
+ }
13
+
14
+ .wysiwyg-font-size-x-large {
15
+ font-size: x-large;
16
+ }
17
+
18
+ .wysiwyg-font-size-large {
19
+ font-size: large;
20
+ }
21
+
22
+ .wysiwyg-font-size-medium {
23
+ font-size: medium;
24
+ }
25
+
26
+ .wysiwyg-font-size-small {
27
+ font-size: small;
28
+ }
29
+
30
+ .wysiwyg-font-size-x-small {
31
+ font-size: x-small;
32
+ }
33
+
34
+ .wysiwyg-font-size-xx-small {
35
+ font-size: xx-small;
36
+ }
37
+
38
+ .wysiwyg-color-black {
39
+ color: black;
40
+ }
41
+
42
+ .wysiwyg-color-silver {
43
+ color: silver;
44
+ }
45
+
46
+ .wysiwyg-color-gray {
47
+ color: gray;
48
+ }
49
+
50
+ .wysiwyg-color-white {
51
+ color: white;
52
+ }
53
+
54
+ .wysiwyg-color-maroon {
55
+ color: maroon;
56
+ }
57
+
58
+ .wysiwyg-color-red {
59
+ color: red;
60
+ }
61
+
62
+ .wysiwyg-color-purple {
63
+ color: purple;
64
+ }
65
+
66
+ .wysiwyg-color-fuchsia {
67
+ color: fuchsia;
68
+ }
69
+
70
+ .wysiwyg-color-green {
71
+ color: green;
72
+ }
73
+
74
+ .wysiwyg-color-lime {
75
+ color: lime;
76
+ }
77
+
78
+ .wysiwyg-color-olive {
79
+ color: olive;
80
+ }
81
+
82
+ .wysiwyg-color-yellow {
83
+ color: yellow;
84
+ }
85
+
86
+ .wysiwyg-color-navy {
87
+ color: navy;
88
+ }
89
+
90
+ .wysiwyg-color-blue {
91
+ color: blue;
92
+ }
93
+
94
+ .wysiwyg-color-teal {
95
+ color: teal;
96
+ }
97
+
98
+ .wysiwyg-color-aqua {
99
+ color: aqua;
100
+ }
101
+
102
+ .wysiwyg-text-align-right {
103
+ text-align: right;
104
+ }
105
+
106
+ .wysiwyg-text-align-center {
107
+ text-align: center;
108
+ }
109
+
110
+ .wysiwyg-text-align-left {
111
+ text-align: left;
112
+ }
113
+
114
+ .wysiwyg-float-left {
115
+ float: left;
116
+ margin: 0 8px 8px 0;
117
+ }
118
+
119
+ .wysiwyg-float-right {
120
+ float: right;
121
+ margin: 0 0 8px 8px;
122
+ }
123
+
124
+ .wysiwyg-clear-right {
125
+ clear: right;
126
+ }
127
+
128
+ .wysiwyg-clear-left {
129
+ clear: left;
130
+ }
@@ -0,0 +1,79 @@
1
+ class HtmlEditorInput < Formtastic::Inputs::TextInput
2
+ def toolbar
3
+ <<-HTML
4
+ <div id="#{input_html_options[:id]}-toolbar" class="active_admin_editor_toolbar">
5
+ <a data-wysihtml5-action="change_view">Source</a>
6
+ #{%Q{<a data-wysihtml5-command="bold" title="Bold"></a>} if input_html_options[:commands][:bold]}
7
+ #{%Q{<a data-wysihtml5-command="italic" title="Italic"></a>} if input_html_options[:commands][:italic]}
8
+ #{%Q{<a data-wysihtml5-command="createLink" title="Link"></a>} if input_html_options[:commands][:link]}
9
+ #{%Q{<a data-wysihtml5-command="insertImage" title="Image"></a>} if input_html_options[:commands][:image]}
10
+ #{%Q{<a data-wysihtml5-command="insertUnorderedList" title="Unordered list"></a>} if input_html_options[:commands][:ul]}
11
+ #{%Q{<a data-wysihtml5-command="insertOrderedList" title="Ordered list"></a>} if input_html_options[:commands][:li]}
12
+ <div class="separator"></div>
13
+ #{%Q{<a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h1">h1</a>} if input_html_options[:commands][:h1]}
14
+ #{%Q{<a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h2">h2</a>} if input_html_options[:commands][:h2]}
15
+ #{%Q{<a data-wysihtml5-command="formatBlock" data-wysihtml5-command-value="h3">h3</a>} if input_html_options[:commands][:h3]}
16
+ #{%Q{<a class="button quicksave" href="#">Save</a>} if input_html_options[:quicksave]}
17
+
18
+ <div data-wysihtml5-dialog="createLink" style="display: none">
19
+ <label>
20
+ Link:
21
+ <input data-wysihtml5-dialog-field="href" value="http://">
22
+ </label>
23
+ <div class="action-group">
24
+ <a data-wysihtml5-dialog-action="save" class="button">OK</a>
25
+ <a data-wysihtml5-dialog-action="cancel">Cancel</a>
26
+ </div>
27
+ </div>
28
+
29
+ <div data-wysihtml5-dialog="insertImage" style="display: none">
30
+ <label>
31
+ Image:
32
+ <input data-wysihtml5-dialog-field="src" value="http://">
33
+ </label>
34
+ <label>
35
+ Align:
36
+ <select data-wysihtml5-dialog-field="className">
37
+ <option value="">default</option>
38
+ <option value="wysiwyg-float-left">left</option>
39
+ <option value="wysiwyg-float-right">right</option>
40
+ </select>
41
+ </label>
42
+ <div class="action-group">
43
+ <a data-wysihtml5-dialog-action="save" class="button">OK</a>
44
+ <a data-wysihtml5-dialog-action="cancel">Cancel</a>
45
+ </div>
46
+ </div>
47
+
48
+ </div>
49
+ HTML
50
+ end
51
+
52
+ def input_html_options
53
+ {
54
+ quicksave: false,
55
+ commands: {
56
+ bold: true,
57
+ italic: true,
58
+ link: true,
59
+ image: true,
60
+ ul: true,
61
+ li: true,
62
+
63
+ h1: true,
64
+ h2: true,
65
+ h3: true
66
+ }
67
+ }.merge(super)
68
+ end
69
+
70
+ def to_html
71
+ html = '<div class="active_admin_editor">'
72
+ html << toolbar.html_safe
73
+ html << builder.text_area(method, input_html_options)
74
+ html << '</div>'
75
+ input_wrapping do
76
+ label_html << html.html_safe
77
+ end
78
+ end
79
+ end