active_admin_editor 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/MIT-LICENSE +20 -0
- data/README.md +39 -0
- data/Rakefile +38 -0
- data/app/assets/images/active_admin/editor/icons.png +0 -0
- data/app/assets/javascripts/active_admin/editor.js +23 -0
- data/app/assets/javascripts/active_admin/editor/quicksave.js +36 -0
- data/app/assets/stylesheets/active_admin/editor.css +136 -0
- data/app/assets/stylesheets/active_admin/editor/wysiwyg.css +130 -0
- data/app/inputs/html_editor_input.rb +79 -0
- data/lib/active_admin/editor.rb +2 -0
- data/lib/active_admin/editor/rails/engine.rb +16 -0
- data/lib/active_admin/editor/version.rb +5 -0
- data/lib/active_admin_editor.rb +1 -0
- data/lib/tasks/active_admin_editor_tasks.rake +4 -0
- data/test/active_admin_editor_test.rb +7 -0
- data/test/dummy/README.rdoc +261 -0
- data/test/dummy/Rakefile +7 -0
- data/test/dummy/app/admin/dashboards.rb +44 -0
- data/test/dummy/app/admin/pages.rb +16 -0
- data/test/dummy/app/assets/javascripts/active_admin.js +1 -0
- data/test/dummy/app/assets/javascripts/application.js +15 -0
- data/test/dummy/app/assets/javascripts/pages.js +2 -0
- data/test/dummy/app/assets/stylesheets/active_admin.css.scss +6 -0
- data/test/dummy/app/assets/stylesheets/application.css +13 -0
- data/test/dummy/app/assets/stylesheets/pages.css.scss +3 -0
- data/test/dummy/app/assets/stylesheets/scaffolds.css.scss +56 -0
- data/test/dummy/app/controllers/application_controller.rb +3 -0
- data/test/dummy/app/controllers/pages_controller.rb +2 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/helpers/pages_helper.rb +2 -0
- data/test/dummy/app/models/admin_user.rb +10 -0
- data/test/dummy/app/models/page.rb +3 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/app/views/pages/_form.html.erb +25 -0
- data/test/dummy/app/views/pages/edit.html.erb +6 -0
- data/test/dummy/app/views/pages/index.html.erb +25 -0
- data/test/dummy/app/views/pages/new.html.erb +5 -0
- data/test/dummy/app/views/pages/show.html.erb +15 -0
- data/test/dummy/config.ru +4 -0
- data/test/dummy/config/application.rb +56 -0
- data/test/dummy/config/boot.rb +10 -0
- data/test/dummy/config/database.yml +25 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +37 -0
- data/test/dummy/config/environments/production.rb +67 -0
- data/test/dummy/config/environments/test.rb +37 -0
- data/test/dummy/config/initializers/active_admin.rb +129 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/devise.rb +223 -0
- data/test/dummy/config/initializers/inflections.rb +15 -0
- data/test/dummy/config/initializers/mime_types.rb +5 -0
- data/test/dummy/config/initializers/secret_token.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +8 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
- data/test/dummy/config/locales/devise.en.yml +57 -0
- data/test/dummy/config/locales/en.yml +5 -0
- data/test/dummy/config/routes.rb +64 -0
- data/test/dummy/db/development.sqlite3 +0 -0
- data/test/dummy/db/migrate/20120430130552_create_admin_notes.rb +17 -0
- data/test/dummy/db/migrate/20120430130553_move_admin_notes_to_comments.rb +25 -0
- data/test/dummy/db/migrate/20120430200549_devise_create_admin_users.rb +52 -0
- data/test/dummy/db/migrate/20120430201522_create_pages.rb +10 -0
- data/test/dummy/db/schema.rb +56 -0
- data/test/dummy/db/test.sqlite3 +0 -0
- data/test/dummy/log/development.log +9246 -0
- data/test/dummy/public/404.html +26 -0
- data/test/dummy/public/422.html +26 -0
- data/test/dummy/public/500.html +25 -0
- data/test/dummy/public/favicon.ico +0 -0
- data/test/dummy/script/rails +6 -0
- data/test/dummy/test/fixtures/admin_users.yml +11 -0
- data/test/dummy/test/fixtures/pages.yml +9 -0
- data/test/dummy/test/functional/pages_controller_test.rb +49 -0
- data/test/dummy/test/unit/admin_user_test.rb +7 -0
- data/test/dummy/test/unit/helpers/pages_helper_test.rb +4 -0
- data/test/dummy/test/unit/page_test.rb +7 -0
- data/test/dummy/tmp/cache/assets/C37/920/sprockets%2F06193740ee7452897ea890866606e46c +0 -0
- data/test/dummy/tmp/cache/assets/C71/0E0/sprockets%2F21b76d0a722239c66071874c6c1f103d +0 -0
- data/test/dummy/tmp/cache/assets/C72/550/sprockets%2Fb10447885a4e045d14e632325d4167ba +0 -0
- data/test/dummy/tmp/cache/assets/C79/430/sprockets%2F239310c864d95b8029081a8cbb51109f +0 -0
- data/test/dummy/tmp/cache/assets/C7A/E90/sprockets%2F43393b12e73846b417e5187012f74cab +0 -0
- data/test/dummy/tmp/cache/assets/C8E/6F0/sprockets%2F17a15f67b95d85b259346b1988509d0b +0 -0
- data/test/dummy/tmp/cache/assets/C9C/4C0/sprockets%2F310c249165fa3e00ec5239562bc245f1 +0 -0
- data/test/dummy/tmp/cache/assets/CDB/040/sprockets%2Fc732474e67003a4eb840eb44c5ca9385 +0 -0
- data/test/dummy/tmp/cache/assets/CDD/2E0/sprockets%2F0f78bdd85b7f5fd4621224a2c0437572 +0 -0
- data/test/dummy/tmp/cache/assets/CE3/2D0/sprockets%2F4d4462dd9972233e700be2e38188ed1d +0 -0
- data/test/dummy/tmp/cache/assets/CEC/AF0/sprockets%2F7d8695745080bd838fea849c0d2d3a42 +0 -0
- data/test/dummy/tmp/cache/assets/D09/190/sprockets%2F45fb79553642c806213ebc0e22faed63 +0 -0
- data/test/dummy/tmp/cache/assets/D13/FE0/sprockets%2Ffb7916af38b70bb578a6d035d2508f18 +0 -0
- data/test/dummy/tmp/cache/assets/D24/8D0/sprockets%2F8f2a1bfe27153639fb959a5968b44c8d +0 -0
- data/test/dummy/tmp/cache/assets/D2A/F60/sprockets%2Fe73a58b43837c7ff9f6543898b362ebb +0 -0
- data/test/dummy/tmp/cache/assets/D2C/800/sprockets%2Fc7dacf6709ba20274c032814cd4e531b +0 -0
- data/test/dummy/tmp/cache/assets/D2F/AF0/sprockets%2F701a5254fb5ba1455e860e5c70d07cdb +0 -0
- data/test/dummy/tmp/cache/assets/D38/540/sprockets%2F86e1ad844bc9df4491a2a52b870421db +0 -0
- data/test/dummy/tmp/cache/assets/D3B/4F0/sprockets%2F6be6ae7be6be4167064d435a34ca1369 +0 -0
- data/test/dummy/tmp/cache/assets/D3E/150/sprockets%2Fec3ae7fd44729124d3e7046f33af28a4 +0 -0
- data/test/dummy/tmp/cache/assets/D48/640/sprockets%2F9f4f18d910b678b1d0777e04cdaf6f24 +0 -0
- data/test/dummy/tmp/cache/assets/D4D/D70/sprockets%2F169a66ca31e9576ce9062c9c38bf5e2e +0 -0
- data/test/dummy/tmp/cache/assets/D59/D70/sprockets%2Fed9f0de1b65ae8d7ef89087c83728461 +0 -0
- data/test/dummy/tmp/cache/assets/D64/2C0/sprockets%2Fce4f2416932b7aae7c1e2cdad1343873 +0 -0
- data/test/dummy/tmp/cache/assets/D6D/830/sprockets%2Fae3018f4cb13ce743eecf52ff7951532 +0 -0
- data/test/dummy/tmp/cache/assets/D75/FD0/sprockets%2Fc7cfc0d19e8f7f5166a4b436ba358e34 +0 -0
- data/test/dummy/tmp/cache/assets/D86/680/sprockets%2F16dbbba0db91ea56e2a6a5f6450c2522 +0 -0
- data/test/dummy/tmp/cache/assets/D91/A70/sprockets%2F4bc82aa15ade4213e6574aaac1d8387f +0 -0
- data/test/dummy/tmp/cache/assets/D93/4C0/sprockets%2F857ecd2092cee11f740b3cf2e373ad2a +0 -0
- data/test/dummy/tmp/cache/assets/DA3/140/sprockets%2Fbdcfc2e11e8ef8080de86623e8734ad2 +0 -0
- data/test/dummy/tmp/cache/assets/DBA/330/sprockets%2Fc80aa22f501364dfa9cbf2b4135efbc4 +0 -0
- data/test/dummy/tmp/cache/assets/DCE/D20/sprockets%2Fbb2839e538aadcf1cacde890159b37e2 +0 -0
- data/test/dummy/tmp/cache/assets/DD0/820/sprockets%2F92503cd8fdbce38ac5de45630df9d15b +0 -0
- data/test/dummy/tmp/cache/assets/DD2/350/sprockets%2Ffabdac3a31a0fd1f9132ff5e89f46993 +0 -0
- data/test/dummy/tmp/cache/assets/DD9/760/sprockets%2F96b2c42e56df91c925faff94d3dbfb32 +0 -0
- data/test/dummy/tmp/cache/assets/DDE/420/sprockets%2Ffb8b186d5bf0307f86f65fc787d2adeb +0 -0
- data/test/dummy/tmp/cache/assets/DE5/ED0/sprockets%2Fbceb64af6e2b030cc2362a481efae2d2 +0 -0
- data/test/dummy/tmp/cache/assets/DF5/940/sprockets%2F68a03b5cb8fac91ac7bb6f7a3703d5ae +0 -0
- data/test/dummy/tmp/cache/assets/DFE/710/sprockets%2Fbaba2fa1e1be8d768b866fc59c8b250c +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_animation.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_appearance.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_background-image.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_background-size.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_border-image.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_border-radius.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_box-shadow.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_box-sizing.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_columns.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_flex-box.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_inline-block.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_linear-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_radial-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_transform.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_transition.scssc +0 -0
- data/test/dummy/tmp/cache/sass/11e515356bc5cb9773a810e4d1a8f0adc86f5a55/_user-select.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_blank_slates.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_breadcrumbs.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_buttons.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_columns.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_comments.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_date_picker.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_flash_messages.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_grid.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_links.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_pagination.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_panels.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_scopes.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_status_tags.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_table_tools.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/56f95d233a346715dafb1425c7f414577b3d6faa/_tables.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_button.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_clearfix.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_font-family.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_html5-input-types.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_position.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6013972b9ab0cd5761b527297d1ebb87580f0630/_timing-functions.scssc +0 -0
- data/test/dummy/tmp/cache/sass/649eb811547a5926cdeb483c470efd70480ac80c/_dashboard.scssc +0 -0
- data/test/dummy/tmp/cache/sass/649eb811547a5926cdeb483c470efd70480ac80c/_logged_out.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6918b4b0c0893eabd3eaf41fe8db1fb76432cdb7/_footer.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6918b4b0c0893eabd3eaf41fe8db1fb76432cdb7/_main_structure.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6918b4b0c0893eabd3eaf41fe8db1fb76432cdb7/_title_bar.scssc +0 -0
- data/test/dummy/tmp/cache/sass/6b007881be7ebec964704521003b1d386a87a62e/active_admin.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_deprecated-webkit-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_flex-grid.scssc +0 -0
- data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_grid-width.scssc +0 -0
- data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_linear-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_modular-scale.scssc +0 -0
- data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_radial-gradient.scssc +0 -0
- data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_render-gradients.scssc +0 -0
- data/test/dummy/tmp/cache/sass/888027b357ba8ec167989a2ba7b1e1313066ae81/_tint-shade.scssc +0 -0
- data/test/dummy/tmp/cache/sass/9281732a5ed473e2068958b0e7f25e8bbdf281c1/_bourbon.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_all.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_buttons.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_gradients.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_icons.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_reset.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_rounded.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_sections.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_shadows.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_typography.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_utilities.scssc +0 -0
- data/test/dummy/tmp/cache/sass/ba7a563e935ca29470253023d07bc597fa6926a3/_variables.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_base.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_forms.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_header.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_mixins.css.scssc +0 -0
- data/test/dummy/tmp/cache/sass/e1ee1d106b06fec6178a485c63d8daecda888171/_typography.css.scssc +0 -0
- data/test/test_helper.rb +15 -0
- 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
|
Binary file
|
@@ -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
|