wysia 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +21 -0
- data/Gemfile +4 -0
- data/LICENSE +22 -0
- data/README.md +75 -0
- data/Rakefile +2 -0
- data/lib/wysia/version.rb +3 -0
- data/lib/wysia/wysia_form_helper.rb +80 -0
- data/lib/wysia.rb +15 -0
- data/vendor/assets/javascripts/wysia.js +2 -0
- data/vendor/assets/javascripts/wysiwyg/advanced.js +553 -0
- data/vendor/assets/javascripts/wysiwyg/wysihtml5-0.3.0.js +9521 -0
- data/vendor/assets/stylesheets/font-awesome/FontAwesome-Vectors.pdf +3180 -7
- data/vendor/assets/stylesheets/font-awesome/FontAwesome.ttf +0 -0
- data/vendor/assets/stylesheets/font-awesome/README.md +18 -0
- data/vendor/assets/stylesheets/font-awesome/css/font-awesome.scss +303 -0
- data/vendor/assets/stylesheets/font-awesome/font/fontawesome-webfont.eot +0 -0
- data/vendor/assets/stylesheets/font-awesome/font/fontawesome-webfont.svg +255 -0
- data/vendor/assets/stylesheets/font-awesome/font/fontawesome-webfont.ttf +0 -0
- data/vendor/assets/stylesheets/font-awesome/font/fontawesome-webfont.woff +0 -0
- data/vendor/assets/stylesheets/wysia.scss +1 -0
- data/vendor/assets/stylesheets/wysiwyg/_mixins.scss +643 -0
- data/vendor/assets/stylesheets/wysiwyg/_variables.scss +96 -0
- data/vendor/assets/stylesheets/wysiwyg/stylesheet.css.scss +115 -0
- data/wysia.gemspec +19 -0
- metadata +81 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2012 Johnny Eradus
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,75 @@
|
|
1
|
+
# Wysia
|
2
|
+
|
3
|
+
A WYSIWYG for textarea to work with **Rails 3** FormBuilders
|
4
|
+
|
5
|
+
This Gem uses
|
6
|
+
- [WYSIHTML5][1] <- this actually does all the hard work
|
7
|
+
- [Font Awesome][2] <- used for scaling icons wich are AWESOME
|
8
|
+
|
9
|
+
[1]:http://xing.github.com/wysihtml5/
|
10
|
+
[2]:http://fortawesome.github.com/Font-Awesome/
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
In your `Gemfile`, add the following dependencies:
|
15
|
+
```ruby
|
16
|
+
gem 'wysia', :git => 'https://github.com/jhny/wysia.git'
|
17
|
+
```
|
18
|
+
Run:
|
19
|
+
```unix
|
20
|
+
$ bundle install
|
21
|
+
```
|
22
|
+
## Usage
|
23
|
+
Include the Javascript (wysihtm5) into your `application.js`:
|
24
|
+
```ruby
|
25
|
+
//= require wysia.js
|
26
|
+
```
|
27
|
+
Include de css into your `applications.css`
|
28
|
+
```sass
|
29
|
+
@import "wysia.scss";
|
30
|
+
```
|
31
|
+
In your forms use the `wysia_text_area` helper
|
32
|
+
|
33
|
+
### default usage
|
34
|
+
```ruby
|
35
|
+
= form_for @user do |f|
|
36
|
+
= f.wysia_text_area :about
|
37
|
+
```
|
38
|
+
### Configuration
|
39
|
+
#### Available options:
|
40
|
+
- All the usual options for a `text_area` can be used.
|
41
|
+
- `size`: `normal`, `small` or `mini`. Affects the button size of the toolbar. `normal` is default.
|
42
|
+
- `js`: `inline` or `yield`. Yields the javascript to a block called `:javascript` or its placed inline. `inline` is default.
|
43
|
+
|
44
|
+
using the options:
|
45
|
+
```ruby
|
46
|
+
= f.wysia_text_area :about, {:class => "shaded comment grey remark", :rows => 3, :id => "about_#{@user.id}_remark", :size => "small"}
|
47
|
+
```
|
48
|
+
|
49
|
+
1. If you use `js: "yield"` as option, the javascript is yielded to a block called `:javascript`. In your layout or view use:
|
50
|
+
```ruby
|
51
|
+
yield :javascript
|
52
|
+
```
|
53
|
+
|
54
|
+
2. If you have multiple `wysia_text_area` elements in a single page, you need to provide a ID to the options to make sure they are distinguisable for the javascript.
|
55
|
+
|
56
|
+
## Contribute
|
57
|
+
|
58
|
+
### Edit gem
|
59
|
+
Instead of pointing to the git repo, point to the local source `#gem 'wysia', :path => "/home/user/src/wysia"`
|
60
|
+
|
61
|
+
[issues]: https://github.com/jhny/wysia/issues
|
62
|
+
### Submitting an Issue
|
63
|
+
We use the [GitHub issue tracker][issues] to track bugs and features. Before
|
64
|
+
submitting a bug report or feature request, check to make sure it hasn't
|
65
|
+
already been submitted. When submitting a bug report, please include a [Gist][]
|
66
|
+
that includes a stack trace and any details that may be necessary to reproduce
|
67
|
+
the bug, including your gem version, Ruby version, and operating system.
|
68
|
+
Ideally, a bug report should include a pull request with failing specs.
|
69
|
+
|
70
|
+
## Additional information
|
71
|
+
|
72
|
+
### Authors
|
73
|
+
|
74
|
+
* Johnny Eradus (https://github.com/jhny)
|
75
|
+
* Benjamin Udink ten Cate (https://github.com/hezus)
|
data/Rakefile
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
module Wysia
|
2
|
+
module FormHelper
|
3
|
+
def wysia_text_area(object_name, method, options = {})
|
4
|
+
|
5
|
+
#size = " btn-mini" if options[:size] == "mini"
|
6
|
+
size = " btn-small" if options[:size] == "small"
|
7
|
+
size = " btn-normal" if options[:size] == "normal"
|
8
|
+
size = "" if options[:size].nil?
|
9
|
+
options.delete(:size) if options[:size].present?
|
10
|
+
text_area_id = options[:id] || "#{object_name}_#{method}"
|
11
|
+
p options.inspect
|
12
|
+
content = <<HTML
|
13
|
+
<div id="#{text_area_id}_wysihtml5-toolbar" class="btn-toolbar">
|
14
|
+
<div class="btn-group">
|
15
|
+
<a class="btn#{size}" data-wysihtml5-command="bold"><i class="icon-bold"></i></a>
|
16
|
+
<a class="btn#{size}" data-wysihtml5-command="italic"><i class="icon-italic"></i></a>
|
17
|
+
</div>
|
18
|
+
|
19
|
+
<div class="btn-group">
|
20
|
+
<a class="btn#{size}" data-wysihtml5-command-value="h1" data-wysihtml5-command="formatBlock"><b>h1</b></a>
|
21
|
+
<a class="btn#{size}" data-wysihtml5-command-value="h2" data-wysihtml5-command="formatBlock"><b>h2</b></a>
|
22
|
+
</div>
|
23
|
+
|
24
|
+
<div class="btn-group">
|
25
|
+
<a class="btn#{size}" data-wysihtml5-command="insertOrderedList"><i class="icon-list-ol"></i></a>
|
26
|
+
<a class="btn#{size}" data-wysihtml5-command="insertUnorderedList"><i class="icon-list-ul"></i></a>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
<div class="btn-group">
|
30
|
+
<a class="btn#{size}" data-wysihtml5-command="createLink"><i class="icon-link"></i></a>
|
31
|
+
</div>
|
32
|
+
|
33
|
+
<div class="btn-group">
|
34
|
+
<a class="btn#{size}" data-wysihtml5-action="change_view"><i class="icon-edit"></i></a>
|
35
|
+
</div>
|
36
|
+
<div data-wysihtml5-dialog="createLink" class="wysihtml5-dialog" style='display: none;'>
|
37
|
+
<label>
|
38
|
+
Link:
|
39
|
+
<input data-wysihtml5-dialog-field="href" value="http://" class="text">
|
40
|
+
</label>
|
41
|
+
<a data-wysihtml5-dialog-action="save" class="ok">OK</a>
|
42
|
+
<a data-wysihtml5-dialog-action="cancel" class="cancel">Cancel</a>
|
43
|
+
</div>
|
44
|
+
<div class="clearfix"></div>
|
45
|
+
</div>
|
46
|
+
#{text_area object_name, method, options}
|
47
|
+
HTML
|
48
|
+
|
49
|
+
js =<<javascript
|
50
|
+
var editor = new wysihtml5.Editor("#{text_area_id}", { // id of textarea element
|
51
|
+
toolbar:"#{text_area_id}_wysihtml5-toolbar", // id of toolbar element
|
52
|
+
stylesheets:"/assets/wysiwyg/stylesheet.css", // stylesheet to be used
|
53
|
+
parserRules:wysihtml5ParserRules // defined in parser rules set
|
54
|
+
});
|
55
|
+
javascript
|
56
|
+
|
57
|
+
|
58
|
+
if options[:js].present? && options[:js] == "yield"
|
59
|
+
content_for(:javascript) do
|
60
|
+
javascript_tag(js).html_safe
|
61
|
+
end
|
62
|
+
else
|
63
|
+
content = content + javascript_tag(js)
|
64
|
+
end
|
65
|
+
|
66
|
+
content.html_safe
|
67
|
+
end
|
68
|
+
def self.included(arg)
|
69
|
+
ActionView::Helpers::FormBuilder.send(:include, Wysia::FormBuilder)
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
74
|
+
module Wysia::FormBuilder
|
75
|
+
# ActionPack's metaprogramming would have done this for us, if FormHelper#labeled_input
|
76
|
+
# had been defined at load. Instead we define it ourselves here.
|
77
|
+
def wysia_text_area(method, options = {})
|
78
|
+
@template.wysia_text_area(@object_name, method, objectify_options(options))
|
79
|
+
end
|
80
|
+
end
|
data/lib/wysia.rb
ADDED