imperavi-rails 0.0.2.beta → 0.0.3.beta
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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);
|