imperavi-rails 0.0.2.beta → 0.0.3.beta
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +16 -4
- data/app/assets/javascripts/imperavi-rails/imperavi/dd_upload.js +100 -0
- data/app/assets/javascripts/imperavi-rails/imperavi/linkify.js +30 -0
- data/app/assets/javascripts/imperavi-rails/imperavi/redactor.js +104 -364
- data/app/assets/javascripts/imperavi-rails/imperavi/textselect.js +14 -0
- data/app/assets/javascripts/imperavi-rails/imperavi.js +4 -0
- data/app/helpers/imperavi_rails/imperavi_helper.rb +2 -2
- data/lib/imperavi-rails/version.rb +1 -1
- data/spec/dummy/app/assets/stylesheets/application.css.scss +1 -9
- data/spec/dummy/app/views/pages/index.html.erb +7 -17
- data/spec/dummy/db/development.sqlite3 +0 -0
- data/spec/dummy/log/development.log +1197 -0
- data/spec/dummy/public/system/dragonfly/development/2012/02/03/10_10_05_126_6.jpg +0 -0
- data/spec/dummy/public/system/dragonfly/development/2012/02/03/10_10_05_126_6.jpg.meta +4 -0
- data/spec/dummy/tmp/cache/assets/C41/5B0/sprockets%2F095415e1141a435237aa9464752d21fd +242 -0
- data/spec/dummy/tmp/cache/assets/CBE/FC0/sprockets%2Ff5431a64e341b062b7530132a5c1ea5a +1726 -0
- data/spec/dummy/tmp/cache/assets/CC0/310/sprockets%2Fb372e5f868e8a8801e126262f66c9c08 +16 -0
- data/spec/dummy/tmp/cache/assets/CC5/C10/sprockets%2F7c81f5c40dc9b87819488e127f487a04 +513 -0
- data/spec/dummy/tmp/cache/assets/CE5/650/sprockets%2F8ab512c9b33ac90e699b73469d71f061 +269 -0
- data/spec/dummy/tmp/cache/assets/CF0/1D0/sprockets%2F6fc757c2c8329244ca95d6909865bbc2 +81 -0
- data/spec/dummy/tmp/cache/assets/D02/F90/sprockets%2Ff029f33d65d53d13d3c0fd29e0c08133 +10 -0
- data/spec/dummy/tmp/cache/assets/D06/850/sprockets%2F9027c767fa3c09c1a605eae10b43d549 +9272 -0
- data/spec/dummy/tmp/cache/assets/D0C/0C0/sprockets%2F106b7f622fb804e4248c862abe73a4c8 +16 -0
- data/spec/dummy/{app/assets/stylesheets/scaffold.css → tmp/cache/assets/D11/D20/sprockets%2Fcac21eac42152981882bf9e489316af4} +6 -1
- data/spec/dummy/tmp/cache/assets/D24/8E0/sprockets%2F47f976dc55ebc7889e349067c9ba01b2 +16 -0
- data/spec/dummy/tmp/cache/assets/D2A/450/sprockets%2F58e369b37e5157ea746a485eea17e9f7 +28 -0
- data/spec/dummy/tmp/cache/assets/D34/D90/sprockets%2Fac3fb880b6bb140d16d5b4a6916e5067 +52 -0
- data/spec/dummy/tmp/cache/assets/D38/C80/sprockets%2Fb7152c93aa41253e9ed17d71a5c0eb88 +16 -0
- data/spec/dummy/tmp/cache/assets/D58/6D0/sprockets%2Fd2a3ab2b5401861dcd2e343ca6e4923e +37 -0
- data/spec/dummy/tmp/cache/assets/D59/260/sprockets%2Fd513a46ce8d83f003a733cb306dfe01a +1598 -0
- data/spec/dummy/tmp/cache/assets/D64/190/sprockets%2Ffdfa1bbf71247a2b9ef0b97732603e02 +0 -0
- data/spec/dummy/tmp/cache/assets/D6D/7C0/sprockets%2Fa4b9caa51f636e2b2db868c480e2a487 +8 -0
- data/spec/dummy/tmp/cache/assets/D73/170/sprockets%2Ffe70d93b5d3398dd8d0c6a3d701290ef +123 -0
- data/spec/dummy/tmp/cache/assets/D76/B30/sprockets%2Fce979145545abbfd4ca50fea3489554c +395 -0
- data/spec/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +9655 -0
- data/spec/dummy/tmp/cache/assets/D9B/E30/sprockets%2Fd87c8ca46743542cace533cfe91ae1d0 +495 -0
- data/spec/dummy/tmp/cache/assets/DA2/EA0/sprockets%2F9e95d2e1a4da7fafb60b9b782a53b753 +378 -0
- data/spec/dummy/tmp/cache/assets/DA8/F60/sprockets%2Fbb2cd57d63160c94d622ef9d91ccef68 +16 -0
- data/spec/dummy/tmp/cache/assets/DAC/DC0/sprockets%2Fe8cdb03f780ff87851dd459dc844ad1b +246 -0
- data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +61 -0
- data/spec/dummy/tmp/cache/assets/E05/F10/sprockets%2Fb3d9b0e88cdded276ebdce333e338a85 +30 -0
- data/spec/dummy/tmp/cache/assets/E22/CE0/sprockets%2F6fe70d27fda81ea53c8bdaeb1b112dd7 +9289 -0
- data/spec/dummy/tmp/cache/assets/E26/210/sprockets%2Fbb3accabff7037e93dc9a3373f4a5b7a +1580 -0
- data/spec/dummy/tmp/cache/assets/E66/AE0/sprockets%2Ffcb98ed9ac3e15f6d9e59fd00cbb2d3d +16 -0
- data/spec/dummy/tmp/cache/sass/9bd7199bacdbfc23c47b913698aa7195d1e0f382/application.css.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/bc54e898614d486bf9338d646e8cd056915d4779/imperavi-base.css.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/bc54e898614d486bf9338d646e8cd056915d4779/redactor.css.scssc +0 -0
- data/spec/dummy/tmp/cache/sass/bc54e898614d486bf9338d646e8cd056915d4779/wym.css.scssc +0 -0
- data/spec/dummy/tmp/dragonfly/cache/body/00/4aecc0c59254723e83737f8928702ffd7bb98b +373 -0
- data/spec/dummy/tmp/dragonfly/cache/body/16/c5ea89574eb557096b3fefd758954e84a34381 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/body/21/199c9bdb6c7f65200a15ca0934612bcae4204c +242 -0
- data/spec/dummy/tmp/dragonfly/cache/body/42/bb515c02767a37104eca97f75df3b4a49e1759 +242 -0
- data/spec/dummy/tmp/dragonfly/cache/body/48/cf4eb3ec838cdab2af24f4603e7954ab5012ee +0 -0
- data/spec/dummy/tmp/dragonfly/cache/body/4a/72b5c050f6e3702f880e19fcf37793c135cd3d +0 -0
- data/spec/dummy/tmp/dragonfly/cache/body/61/e9711fd55eccdf62882cb8d127b22664f7023f +3 -0
- data/spec/dummy/tmp/dragonfly/cache/body/74/98c8a3bb6ee03af2b6952e797e632938d84649 +237 -0
- data/spec/dummy/tmp/dragonfly/cache/body/77/78d2df49ed1274a18f2c479b5747a91417458f +490 -0
- data/spec/dummy/tmp/dragonfly/cache/body/8e/46450213e0599dab4f0033c16b21731ca5e19c +242 -0
- data/spec/dummy/tmp/dragonfly/cache/body/a4/2e62d48de5370a8402707dd02fcf64039923b4 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/body/a8/85ba08a1465f458ec2e999aecc73ba6b885520 +1575 -0
- data/spec/dummy/tmp/dragonfly/cache/body/ab/c30526420462e4081de3dcbc7598a7930bbc51 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/body/b2/f1d81a83ca37d428780d1d9deb87cf0312cb62 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/body/bb/cf048304dee182fc21ba43f408d8623c2f65b1 +1721 -0
- data/{app/assets/javascripts/imperavi-rails/application.js → spec/dummy/tmp/dragonfly/cache/body/c2/d1fe276d6e527c155855e99dc19d239b6d71f3} +1 -3
- data/spec/dummy/tmp/dragonfly/cache/body/d6/1d64e39570cd647cee3d3a62efa17ab2290d1e +0 -0
- data/spec/dummy/tmp/dragonfly/cache/body/ef/f130cc312268f0864d651bb53d4f83189b925a +9267 -0
- data/spec/dummy/tmp/dragonfly/cache/body/fb/54a1604f6c72b35d8b9c3da9f3899d77db70dd +1834 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/1d/f723c27427056dd58a506f1e4f15020442098e +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/23/4f7740cb6118c7c530ce379339a99828a75ef3 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/2d/fe381b58b48b16278672bd61db736e4e920955 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/39/b52b68255f54efe8cb853fd153088f94a7661a +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/55/32c60f25996b8e8a9fdf7125956c5204fa8792 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/66/b6e26427e56a9f9ade00d4cf5d615679f0f7a7 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/66/f44aba1428593600ff0e47ea6aa54362e39a59 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/78/d74c0cd05a77c0c06acb622761d30c9ea00bb3 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/80/5841ac20acdd8dd41460c8346294abc5c4dd8f +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/e7/6d1dc2d45d19440e781f6c5d00f39d8aeb4da1 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/ee/fe74949a8c2a0bbc077385a12944d9f98a12e0 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/ef/d71b44567b90c7f85e9bd0576e4b7e55bd3565 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/f4/2f71b4755920b57e574c91123765511a8f0b25 +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/f5/b1288f6769945a2de532e359e061896e1197df +0 -0
- data/spec/dummy/tmp/dragonfly/cache/meta/f9/67ac04386c59253bd80f4034d18af166cc5691 +0 -0
- data/spec/dummy/tmp/pids/server.pid +1 -0
- metadata +260 -122
- data/app/assets/stylesheets/imperavi-rails/imperavi/imperavi.css.scss +0 -150
- data/spec/dummy/app/assets/stylesheets/pages.css +0 -4
- data/spec/dummy/db/test.sqlite3 +0 -0
data/README.md
CHANGED
@@ -8,11 +8,15 @@ I created this mountable engine with Imperavi so now you can easily integrate th
|
|
8
8
|
|
9
9
|
Put this line into your Gemfile:
|
10
10
|
|
11
|
-
|
11
|
+
```ruby
|
12
|
+
gem 'imperavi-rails'
|
13
|
+
```
|
12
14
|
|
13
15
|
Then mount the engine in routes.rb:
|
14
16
|
|
15
|
-
|
17
|
+
```ruby
|
18
|
+
mount ImperaviRails::Engine => "/imperavi"
|
19
|
+
```
|
16
20
|
|
17
21
|
And you're done!
|
18
22
|
|
@@ -20,14 +24,17 @@ And you're done!
|
|
20
24
|
|
21
25
|
Add this helpers into the your view that contains a form:
|
22
26
|
|
27
|
+
```ruby
|
23
28
|
<%= include_imperavi_stylesheet %>
|
24
29
|
<%= include_imperavi_javascript %>
|
25
30
|
<%= imperavi :page_article %>
|
31
|
+
```
|
26
32
|
|
27
33
|
In this example `page_article` is an id of textarea field. You can pass additional options to `imperavi` helper as second argument. See the full list of options here: https://github.com/tanraya/imperavi-rails/blob/master/app/helpers/imperavi_rails/imperavi_helper.rb#L35
|
28
34
|
|
29
35
|
You may want the text on your page to be styled the same way as it looks in the editor. To do this, add the following styles into your `application.css.scss` (provided that the text on the page is enclosed with `article` tag):
|
30
36
|
|
37
|
+
```scss
|
31
38
|
@import "imperavi-rails/imperavi/imperavi-base";
|
32
39
|
|
33
40
|
body {
|
@@ -55,10 +62,15 @@ You may want the text on your page to be styled the same way as it looks in the
|
|
55
62
|
}
|
56
63
|
}
|
57
64
|
}
|
65
|
+
```
|
58
66
|
|
59
|
-
## Deal with images
|
67
|
+
## Deal with images
|
60
68
|
|
61
|
-
|
69
|
+
Uploading images is not part of the imperavi-rails. You have to implement this functionality in your application yourself. It's easy. Read the docs below.
|
70
|
+
|
71
|
+
* [How to upload images with imperavi-rails](https://github.com/tanraya/imperavi-rails/wiki/How-to-upload-images-with-imperavi-rails)
|
72
|
+
|
73
|
+
Also you can see Dummy app that has working images uploading: https://github.com/tanraya/imperavi-rails/tree/master/spec/dummy
|
62
74
|
|
63
75
|
# Contribute
|
64
76
|
|
@@ -0,0 +1,100 @@
|
|
1
|
+
/*
|
2
|
+
Plugin Drag and drop Upload v1.0.0
|
3
|
+
http://imperavi.com/
|
4
|
+
Copyright 2011, Imperavi Ltd.
|
5
|
+
*/
|
6
|
+
(function($){
|
7
|
+
|
8
|
+
// Initialization
|
9
|
+
$.fn.dragupload = function(options)
|
10
|
+
{
|
11
|
+
return this.each(function() {
|
12
|
+
var obj = new Construct(this, options);
|
13
|
+
obj.init();
|
14
|
+
});
|
15
|
+
};
|
16
|
+
|
17
|
+
// Options and variables
|
18
|
+
function Construct(el, options) {
|
19
|
+
this.opts = $.extend({
|
20
|
+
url: false,
|
21
|
+
success: false,
|
22
|
+
maxfilesize: 10485760, // 10MB
|
23
|
+
preview: false,
|
24
|
+
text: RLANG.drop_file_here,
|
25
|
+
atext: RLANG.or_choose
|
26
|
+
}, options);
|
27
|
+
|
28
|
+
this.$el = $(el);
|
29
|
+
};
|
30
|
+
|
31
|
+
// Functionality
|
32
|
+
Construct.prototype = {
|
33
|
+
init: function()
|
34
|
+
{
|
35
|
+
if (!$.browser.opera && !$.browser.msie)
|
36
|
+
{
|
37
|
+
this.droparea = $('<div class="redactor_droparea"></div>');
|
38
|
+
this.dropareabox = $('<div class="redactor_dropareabox">' + this.opts.text + '</div>');
|
39
|
+
this.dropalternative = $('<div class="redactor_dropalternative">' + this.opts.atext + '</div>');
|
40
|
+
|
41
|
+
this.droparea.append(this.dropareabox);
|
42
|
+
|
43
|
+
this.$el.before(this.droparea);
|
44
|
+
this.$el.before(this.dropalternative);
|
45
|
+
|
46
|
+
|
47
|
+
// drag over
|
48
|
+
this.dropareabox.bind('dragover', function() { return this.ondrag(); }.bind2(this));
|
49
|
+
|
50
|
+
// drag leave
|
51
|
+
this.dropareabox.bind('dragleave', function() { return this.ondragleave(); }.bind2(this));
|
52
|
+
|
53
|
+
|
54
|
+
// drop
|
55
|
+
this.dropareabox.get(0).ondrop = function(event) {
|
56
|
+
event.preventDefault();
|
57
|
+
|
58
|
+
this.dropareabox.removeClass('hover').addClass('drop');
|
59
|
+
|
60
|
+
var file = event.dataTransfer.files[0];
|
61
|
+
var fd = new FormData();
|
62
|
+
|
63
|
+
fd.append('file', file);
|
64
|
+
|
65
|
+
$.ajax({
|
66
|
+
url: this.opts.url,
|
67
|
+
data: fd,
|
68
|
+
//xhr: provider,
|
69
|
+
cache: false,
|
70
|
+
contentType: false,
|
71
|
+
processData: false,
|
72
|
+
type: 'POST',
|
73
|
+
success: function(data)
|
74
|
+
{
|
75
|
+
if (this.opts.success !== false) this.opts.success(data);
|
76
|
+
|
77
|
+
if (this.opts.preview === true) this.dropareabox.html(data);
|
78
|
+
//else this.dropareabox.text(this.opts.success_text);
|
79
|
+
|
80
|
+
}.bind2(this)
|
81
|
+
});
|
82
|
+
|
83
|
+
|
84
|
+
}.bind2(this);
|
85
|
+
}
|
86
|
+
},
|
87
|
+
ondrag: function()
|
88
|
+
{
|
89
|
+
this.dropareabox.addClass('hover');
|
90
|
+
return false;
|
91
|
+
},
|
92
|
+
ondragleave: function()
|
93
|
+
{
|
94
|
+
this.dropareabox.removeClass('hover');
|
95
|
+
return false;
|
96
|
+
}
|
97
|
+
};
|
98
|
+
|
99
|
+
|
100
|
+
})(jQuery);
|
@@ -0,0 +1,30 @@
|
|
1
|
+
// Define: Linkify plugin from stackoverflow
|
2
|
+
(function($){
|
3
|
+
var url2 = /(^|<|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|>|$)/g;
|
4
|
+
|
5
|
+
linkifyThis = function ()
|
6
|
+
{
|
7
|
+
var childNodes = this.childNodes,
|
8
|
+
i = childNodes.length;
|
9
|
+
while(i--)
|
10
|
+
{
|
11
|
+
var n = childNodes[i];
|
12
|
+
if (n.nodeType == 3)
|
13
|
+
{
|
14
|
+
var html = n.nodeValue;
|
15
|
+
if (html)
|
16
|
+
{
|
17
|
+
html = html.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(url2, '$1<a href="$2">$2</a>$5');
|
18
|
+
$(n).after(html).remove();
|
19
|
+
}
|
20
|
+
}
|
21
|
+
else if (n.nodeType == 1 && !/^(a|button|textarea)$/i.test(n.tagName)) linkifyThis.call(n);
|
22
|
+
}
|
23
|
+
};
|
24
|
+
|
25
|
+
$.fn.linkify = function ()
|
26
|
+
{
|
27
|
+
this.each(linkifyThis);
|
28
|
+
};
|
29
|
+
|
30
|
+
})(jQuery);
|