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
|
@@ -24,39 +24,29 @@ var deviceAndroid = "android";
|
|
|
24
24
|
var uagent = navigator.userAgent.toLowerCase();
|
|
25
25
|
|
|
26
26
|
// detect iOS and Android
|
|
27
|
-
function isiOS()
|
|
28
|
-
{
|
|
27
|
+
function isiOS() {
|
|
29
28
|
return ((navigator.platform.indexOf("iPhone") != -1) || (navigator.platform.indexOf("iPod") != -1) || (navigator.platform.indexOf("iPad") != -1));
|
|
30
29
|
}
|
|
31
30
|
|
|
32
|
-
function detectAndroid()
|
|
33
|
-
|
|
34
|
-
if (uagent.search(deviceAndroid) > -1) return true;
|
|
35
|
-
else return false;
|
|
31
|
+
function detectAndroid() {
|
|
32
|
+
return uagent.search(deviceAndroid) > -1
|
|
36
33
|
}
|
|
37
34
|
|
|
38
|
-
function detectAndroidWebKit()
|
|
39
|
-
{
|
|
40
|
-
|
|
41
|
-
{
|
|
42
|
-
if (uagent.search('webkit') > -1) return true;
|
|
43
|
-
else return false;
|
|
35
|
+
function detectAndroidWebKit() {
|
|
36
|
+
if (detectAndroid()) {
|
|
37
|
+
return uagent.search('webkit') > -1
|
|
44
38
|
}
|
|
45
|
-
|
|
39
|
+
|
|
40
|
+
return false;
|
|
46
41
|
}
|
|
47
42
|
|
|
48
43
|
// redactor
|
|
49
44
|
(function($){
|
|
50
|
-
|
|
51
45
|
// Initialization
|
|
52
|
-
$.fn.redactor = function(options)
|
|
53
|
-
{
|
|
46
|
+
$.fn.redactor = function(options) {
|
|
54
47
|
if (isiOS() || detectAndroid() || detectAndroidWebKit()) return false;
|
|
55
|
-
|
|
56
48
|
var obj = new Construct(this, options);
|
|
57
|
-
|
|
58
49
|
obj.init();
|
|
59
|
-
|
|
60
50
|
return obj;
|
|
61
51
|
};
|
|
62
52
|
|
|
@@ -126,9 +116,7 @@ function detectAndroidWebKit()
|
|
|
126
116
|
|
|
127
117
|
// Functionality
|
|
128
118
|
Construct.prototype = {
|
|
129
|
-
|
|
130
|
-
init: function()
|
|
131
|
-
{
|
|
119
|
+
init: function() {
|
|
132
120
|
if (this.opts.air) this.opts.toolbar = 'air';
|
|
133
121
|
|
|
134
122
|
// include lang and toolbar
|
|
@@ -136,13 +124,11 @@ function detectAndroidWebKit()
|
|
|
136
124
|
|
|
137
125
|
// sizes and id
|
|
138
126
|
this.frameID = this.$el.attr('id');
|
|
139
|
-
this.width
|
|
140
|
-
this.height
|
|
141
|
-
|
|
127
|
+
this.width = this.$el.css('width');
|
|
128
|
+
this.height = this.$el.css('height');
|
|
142
129
|
|
|
143
130
|
// modal overlay
|
|
144
|
-
if ($('#redactor_imp_modal_overlay').size() == 0)
|
|
145
|
-
{
|
|
131
|
+
if ($('#redactor_imp_modal_overlay').size() == 0) {
|
|
146
132
|
this.overlay = $('<div id="redactor_imp_modal_overlay" style="display: none;"></div>');
|
|
147
133
|
$('body').prepend(this.overlay);
|
|
148
134
|
}
|
|
@@ -151,8 +137,7 @@ function detectAndroidWebKit()
|
|
|
151
137
|
this.box = $('<div id="imp_redactor_box_' + this.frameID + '" style="width: ' + this.width + ';" class="imp_redactor_box imp_redactor_box"></div>');
|
|
152
138
|
|
|
153
139
|
// air box
|
|
154
|
-
if (this.opts.air)
|
|
155
|
-
{
|
|
140
|
+
if (this.opts.air) {
|
|
156
141
|
this.air = $('<div id="imp_redactor_air_' + this.frameID + '" class="redactor_air" style="display: none;"></div>');
|
|
157
142
|
}
|
|
158
143
|
|
|
@@ -168,12 +153,11 @@ function detectAndroidWebKit()
|
|
|
168
153
|
if (this.opts.toolbar !== false) this.buildToolbar();
|
|
169
154
|
|
|
170
155
|
// resizer
|
|
171
|
-
if (this.opts.resize)
|
|
172
|
-
{
|
|
156
|
+
if (this.opts.resize) {
|
|
173
157
|
this.resizer = $('<div id="imp_redactor_resize' + this.frameID + '" class="imp_redactor_resize"><div></div></div>');
|
|
174
158
|
$(this.box).append(this.resizer);
|
|
175
159
|
|
|
176
|
-
|
|
160
|
+
$(this.resizer).mousedown(function(e) { this.initResize(e) }.bind2(this));
|
|
177
161
|
}
|
|
178
162
|
|
|
179
163
|
// enable
|
|
@@ -181,10 +165,8 @@ function detectAndroidWebKit()
|
|
|
181
165
|
|
|
182
166
|
$(this.doc).click(function() { this.hideAllDropDown() }.bind2(this));
|
|
183
167
|
|
|
184
|
-
if (this.opts.autoclear)
|
|
185
|
-
|
|
186
|
-
$(this.doc).bind('paste', function(e)
|
|
187
|
-
{
|
|
168
|
+
if (this.opts.autoclear) {
|
|
169
|
+
$(this.doc).bind('paste', function(e) {
|
|
188
170
|
setTimeout(function () { this.clean(); }.bind2(this), 200);
|
|
189
171
|
}.bind2(this));
|
|
190
172
|
}
|
|
@@ -193,40 +175,30 @@ function detectAndroidWebKit()
|
|
|
193
175
|
this.enableAir();
|
|
194
176
|
|
|
195
177
|
// doc events
|
|
196
|
-
$(this.doc).keydown(function(e)
|
|
197
|
-
{
|
|
178
|
+
$(this.doc).keydown(function(e) {
|
|
198
179
|
if (e.ctrlKey || e.metaKey) isCtrl = true;
|
|
199
|
-
|
|
200
180
|
if (e.keyCode == 9) { this.execCommand('indent', false); return false; }
|
|
201
181
|
if (e.keyCode == 66 && isCtrl) { this.execCommand('bold', 'bold'); return false; }
|
|
202
182
|
if (e.keyCode == 73 && isCtrl) { this.execCommand('italic', 'italic'); return false; }
|
|
203
183
|
|
|
204
|
-
}.bind2(this)).keyup(function(e)
|
|
205
|
-
{
|
|
184
|
+
}.bind2(this)).keyup(function(e) {
|
|
206
185
|
isCtrl = false;
|
|
207
186
|
|
|
208
|
-
if (e.keyCode == 13)
|
|
209
|
-
{
|
|
187
|
+
if (e.keyCode == 13) {
|
|
210
188
|
$(this.doc).linkify();
|
|
211
189
|
return true;
|
|
212
190
|
}
|
|
213
191
|
|
|
214
|
-
this.syncCode();
|
|
215
|
-
|
|
192
|
+
this.syncCode();
|
|
216
193
|
}.bind2(this));
|
|
217
|
-
|
|
218
194
|
|
|
219
195
|
// autosave
|
|
220
|
-
if (this.opts.autosave)
|
|
221
|
-
|
|
222
|
-
setInterval(function()
|
|
223
|
-
{
|
|
196
|
+
if (this.opts.autosave) {
|
|
197
|
+
setInterval(function() {
|
|
224
198
|
var html = this.getHtml();
|
|
225
199
|
$.post(this.opts.autosave, { data: html });
|
|
226
|
-
|
|
227
200
|
}.bind2(this), this.opts.interval*1000);
|
|
228
|
-
|
|
229
|
-
}
|
|
201
|
+
}
|
|
230
202
|
|
|
231
203
|
this.formSets();
|
|
232
204
|
|
|
@@ -237,64 +209,57 @@ function detectAndroidWebKit()
|
|
|
237
209
|
/*
|
|
238
210
|
API
|
|
239
211
|
*/
|
|
240
|
-
setHtml: function(html)
|
|
241
|
-
{
|
|
212
|
+
setHtml: function(html) {
|
|
242
213
|
this.doc.body.innerHTML = html;
|
|
243
214
|
this.docObserve();
|
|
244
215
|
},
|
|
245
|
-
|
|
246
|
-
{
|
|
216
|
+
|
|
217
|
+
getHtml: function() {
|
|
247
218
|
return this.doc.body.innerHTML;
|
|
248
219
|
},
|
|
249
|
-
|
|
250
|
-
{
|
|
220
|
+
|
|
221
|
+
getCode: function(clear) {
|
|
251
222
|
return this.$el.val();
|
|
252
|
-
},
|
|
253
|
-
|
|
254
|
-
{
|
|
223
|
+
},
|
|
224
|
+
|
|
225
|
+
focus: function() {
|
|
255
226
|
if ($.browser.msie) $(this.frame).load(function() { $(this).get(0).contentWindow.focus(); });
|
|
256
227
|
else this.frame.get(0).contentWindow.focus();
|
|
257
|
-
},
|
|
258
|
-
|
|
259
|
-
{
|
|
228
|
+
},
|
|
229
|
+
|
|
230
|
+
typo: function() {
|
|
260
231
|
var html = this.getHtml();
|
|
232
|
+
|
|
261
233
|
$.ajax({
|
|
262
|
-
url: this.opts.paths.typograf,
|
|
263
|
-
type: 'post',
|
|
264
|
-
data: 'redactor=' + escape(encodeURIComponent(html)),
|
|
265
|
-
success: function(data)
|
|
266
|
-
{
|
|
234
|
+
url : this.opts.paths.typograf,
|
|
235
|
+
type : 'post',
|
|
236
|
+
data : 'redactor=' + escape(encodeURIComponent(html)),
|
|
237
|
+
success: function(data) {
|
|
267
238
|
this.setHtml(data);
|
|
268
239
|
}.bind2(this)
|
|
269
240
|
});
|
|
270
|
-
},
|
|
271
|
-
|
|
272
|
-
{
|
|
241
|
+
},
|
|
242
|
+
|
|
243
|
+
syncCode: function() {
|
|
273
244
|
var html = this.getHtml();
|
|
274
245
|
|
|
275
246
|
html = this.tidyUp(html);
|
|
276
|
-
|
|
277
247
|
html = html.replace(/\%7B/gi, '{');
|
|
278
248
|
html = html.replace(/\%7D/gi, '}');
|
|
279
|
-
|
|
280
249
|
html = html.replace(/<hr class="redactor_cut">/gi, '<!--more-->');
|
|
281
250
|
html = html.replace(/<hr class=redactor_cut>/gi, '<!--more-->');
|
|
282
|
-
|
|
283
251
|
this.$el.val(html);
|
|
284
252
|
},
|
|
285
|
-
|
|
286
|
-
{
|
|
253
|
+
|
|
254
|
+
destroy: function() {
|
|
287
255
|
var html = this.getCode();
|
|
288
256
|
$(this.box).after(this.$el)
|
|
289
257
|
this.box.remove();
|
|
290
258
|
this.$el.val(html).show();
|
|
291
259
|
},
|
|
292
260
|
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
*/
|
|
296
|
-
include: function()
|
|
297
|
-
{
|
|
261
|
+
// Include
|
|
262
|
+
include: function() {
|
|
298
263
|
// lang
|
|
299
264
|
$('head').append(
|
|
300
265
|
$('<script src="' + this.opts.paths.language + '"></script>')
|
|
@@ -307,68 +272,55 @@ function detectAndroidWebKit()
|
|
|
307
272
|
}
|
|
308
273
|
},
|
|
309
274
|
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
*/
|
|
313
|
-
enable: function(html)
|
|
314
|
-
{
|
|
275
|
+
// Enable
|
|
276
|
+
enable: function(html) {
|
|
315
277
|
this.doc = this.contentDocumentFrame(this.frame);
|
|
316
278
|
|
|
317
279
|
// flash replace
|
|
318
280
|
html = html.replace(/\<object([\w\W]*?)\<\/object\>/gi, '<p class="redactor_video_box"><object$1</object></p>');
|
|
319
281
|
|
|
320
|
-
if (html == '')
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
{
|
|
324
|
-
if ($.browser.msie) html = "<p></p>";
|
|
325
|
-
else html = "<p> </p>";
|
|
282
|
+
if (html == '') {
|
|
283
|
+
if (this.opts.autoformat === true) {
|
|
284
|
+
html = $.browser.msie ? "<p></p>" : "<p> </p>";
|
|
326
285
|
}
|
|
327
286
|
}
|
|
328
287
|
|
|
329
288
|
this.redactorWrite(this.getRedactorDoc(html));
|
|
330
|
-
|
|
331
289
|
if (this.opts.clearOnInit) this.clean();
|
|
332
|
-
|
|
333
|
-
|
|
334
290
|
this.designMode();
|
|
335
291
|
},
|
|
336
|
-
|
|
337
|
-
{
|
|
338
|
-
if (this.opts.air)
|
|
339
|
-
{
|
|
292
|
+
|
|
293
|
+
enableAir: function() {
|
|
294
|
+
if (this.opts.air) {
|
|
340
295
|
$('#imp_redactor_air_' + this.frameID).hide();
|
|
341
296
|
|
|
342
|
-
$(this.doc).bind('textselect', this.frameID, function(e)
|
|
343
|
-
{
|
|
297
|
+
$(this.doc).bind('textselect', this.frameID, function(e) {
|
|
344
298
|
var width = $('#imp_redactor_air_' + this.frameID).width();
|
|
345
299
|
var width_area = $(this.frame).width();
|
|
346
|
-
|
|
347
300
|
var diff = width_area - e.clientX;
|
|
301
|
+
|
|
348
302
|
if (diff < width) e.clientX = e.clientX - width;
|
|
349
303
|
|
|
350
304
|
$('#imp_redactor_air_' + this.frameID).css({ left: e.clientX + 'px', top: (e.clientY + 8) + 'px' }).show();
|
|
351
305
|
|
|
352
306
|
}.bind2(this));
|
|
353
307
|
|
|
354
|
-
$(this.doc).bind('textunselect', this.frameID, function()
|
|
355
|
-
{
|
|
308
|
+
$(this.doc).bind('textunselect', this.frameID, function() {
|
|
356
309
|
$('#imp_redactor_air_' + this.frameID).hide();
|
|
357
|
-
|
|
358
310
|
}.bind2(this));
|
|
359
311
|
}
|
|
360
312
|
},
|
|
361
|
-
|
|
362
|
-
{
|
|
313
|
+
|
|
314
|
+
redactorWrite: function(html) {
|
|
363
315
|
this.doc.open();
|
|
364
316
|
this.doc.write(html);
|
|
365
317
|
this.doc.close();
|
|
366
318
|
},
|
|
367
|
-
|
|
368
|
-
{
|
|
319
|
+
|
|
320
|
+
getRedactorDoc: function(html) {
|
|
369
321
|
css = '';
|
|
370
|
-
|
|
371
|
-
{
|
|
322
|
+
|
|
323
|
+
for (stylesheet in this.opts.paths.stylesheets) {
|
|
372
324
|
css += '<link media="all" href="' + this.opts.paths.stylesheets[stylesheet] + '" rel="stylesheet">';
|
|
373
325
|
}
|
|
374
326
|
|
|
@@ -376,10 +328,11 @@ function detectAndroidWebKit()
|
|
|
376
328
|
frameHtml += '<html><head>' + css + '</head><body>';
|
|
377
329
|
frameHtml += html;
|
|
378
330
|
frameHtml += '</body></html>';
|
|
331
|
+
|
|
379
332
|
return frameHtml;
|
|
380
|
-
},
|
|
381
|
-
|
|
382
|
-
{
|
|
333
|
+
},
|
|
334
|
+
|
|
335
|
+
contentDocumentFrame: function(frame) {
|
|
383
336
|
frame = frame.get(0);
|
|
384
337
|
|
|
385
338
|
if (frame.contentDocument) return frame.contentDocument;
|
|
@@ -387,34 +340,28 @@ function detectAndroidWebKit()
|
|
|
387
340
|
else if (frame.document) return frame.document;
|
|
388
341
|
else return null;
|
|
389
342
|
},
|
|
390
|
-
|
|
391
|
-
{
|
|
392
|
-
if (this.doc)
|
|
393
|
-
{
|
|
343
|
+
|
|
344
|
+
designMode: function() {
|
|
345
|
+
if (this.doc) {
|
|
394
346
|
this.doc.designMode = 'on';
|
|
395
|
-
this.frame.load(function()
|
|
396
|
-
{
|
|
347
|
+
this.frame.load(function() {
|
|
397
348
|
this.enableObjects();
|
|
398
349
|
this.docObserve();
|
|
399
350
|
this.doc.designMode = 'on';
|
|
400
351
|
}.bind2(this));
|
|
401
352
|
}
|
|
402
353
|
},
|
|
403
|
-
|
|
404
|
-
{
|
|
405
|
-
if ($.browser.mozilla)
|
|
406
|
-
{
|
|
354
|
+
|
|
355
|
+
enableObjects: function() {
|
|
356
|
+
if ($.browser.mozilla) {
|
|
407
357
|
this.doc.execCommand("enableObjectResizing", false, "false");
|
|
408
358
|
this.doc.execCommand("enableInlineTableEditing", false, "false");
|
|
409
359
|
}
|
|
410
360
|
},
|
|
411
361
|
|
|
412
362
|
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
*/
|
|
416
|
-
docObserve: function()
|
|
417
|
-
{
|
|
363
|
+
// Observers
|
|
364
|
+
docObserve: function() {
|
|
418
365
|
var body = $(this.doc).find('body');
|
|
419
366
|
|
|
420
367
|
body.find('img').click(function(e) { this.imageEdit(e); }.bind2(this));
|
|
@@ -423,38 +370,26 @@ function detectAndroidWebKit()
|
|
|
423
370
|
|
|
424
371
|
},
|
|
425
372
|
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
var oldOnsubmit = null;
|
|
432
|
-
|
|
433
|
-
var theForm = $(this.box).parents('form');
|
|
373
|
+
// Format on submit form
|
|
374
|
+
formSets: function() {
|
|
375
|
+
var oldOnsubmit = null;
|
|
376
|
+
var theForm = $(this.box).parents('form');
|
|
377
|
+
|
|
434
378
|
if (theForm.length == 0) return false;
|
|
435
379
|
|
|
436
380
|
oldOnsubmit = theForm.get(0).onsubmit;
|
|
437
381
|
|
|
438
|
-
if (typeof theForm.get(0).onsubmit != "function")
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
{
|
|
442
|
-
if (this.opts.visual)
|
|
443
|
-
{
|
|
382
|
+
if (typeof theForm.get(0).onsubmit != "function") {
|
|
383
|
+
theForm.get(0).onsubmit = function() {
|
|
384
|
+
if (this.opts.visual) {
|
|
444
385
|
this.syncCode();
|
|
445
|
-
|
|
446
386
|
return true;
|
|
447
387
|
}
|
|
448
388
|
}.bind2(this)
|
|
449
|
-
}
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
theForm.get(0).onsubmit = function()
|
|
453
|
-
{
|
|
454
|
-
if (this.opts.visual)
|
|
455
|
-
{
|
|
389
|
+
} else {
|
|
390
|
+
theForm.get(0).onsubmit = function() {
|
|
391
|
+
if (this.opts.visual) {
|
|
456
392
|
this.syncCode();
|
|
457
|
-
|
|
458
393
|
return oldOnsubmit();
|
|
459
394
|
}
|
|
460
395
|
}.bind2(this)
|
|
@@ -463,40 +398,29 @@ function detectAndroidWebKit()
|
|
|
463
398
|
return true;
|
|
464
399
|
},
|
|
465
400
|
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
{
|
|
471
|
-
if (this.opts.visual && this.doc)
|
|
472
|
-
{
|
|
473
|
-
try
|
|
474
|
-
{
|
|
401
|
+
// Exec
|
|
402
|
+
execCommand: function(cmd, param) {
|
|
403
|
+
if (this.opts.visual && this.doc) {
|
|
404
|
+
try {
|
|
475
405
|
this.frame.get(0).contentWindow.focus();
|
|
476
406
|
|
|
477
|
-
if (cmd == 'inserthtml' && $.browser.msie)
|
|
478
|
-
|
|
479
|
-
|
|
407
|
+
if (cmd == 'inserthtml' && $.browser.msie) {
|
|
408
|
+
this.doc.selection.createRange().pasteHTML(param);
|
|
409
|
+
} else {
|
|
480
410
|
this.doc.execCommand(cmd, false, param);
|
|
481
|
-
|
|
482
|
-
if (param == "blockquote" || param == 'pre')
|
|
411
|
+
|
|
412
|
+
if (param == "blockquote" || param == 'pre')
|
|
413
|
+
this.doc.body.appendChild(this.doc.createElement("BR"));
|
|
483
414
|
}
|
|
484
|
-
}
|
|
485
|
-
catch (e) { }
|
|
415
|
+
} catch (e) { }
|
|
486
416
|
|
|
487
417
|
this.syncCode();
|
|
488
|
-
|
|
489
|
-
if (this.opts.air) $('#imp_redactor_air_' + this.frameID).hide();
|
|
490
|
-
|
|
418
|
+
if (this.opts.air) $('#imp_redactor_air_' + this.frameID).hide();
|
|
491
419
|
}
|
|
492
420
|
},
|
|
493
421
|
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
*/
|
|
497
|
-
|
|
498
|
-
clean: function()
|
|
499
|
-
{
|
|
422
|
+
// Format and clean
|
|
423
|
+
clean: function() {
|
|
500
424
|
var html = this.getHtml();
|
|
501
425
|
|
|
502
426
|
if ($.browser.mozilla) html = this.convertSpan(html);
|
|
@@ -510,14 +434,12 @@ function detectAndroidWebKit()
|
|
|
510
434
|
html = this.tidyUp(html);
|
|
511
435
|
|
|
512
436
|
this.setHtml(html);
|
|
513
|
-
|
|
514
437
|
this.paragraphise();
|
|
515
438
|
|
|
516
439
|
return html;
|
|
517
440
|
},
|
|
518
441
|
|
|
519
|
-
tidyUp: function (html)
|
|
520
|
-
{
|
|
442
|
+
tidyUp: function (html) {
|
|
521
443
|
// lowercase
|
|
522
444
|
if ($.browser.msie)
|
|
523
445
|
{
|
|
@@ -1649,185 +1571,3 @@ function showRedactorTabs(el, index)
|
|
|
1649
1571
|
$('.redactor_tabs').hide();
|
|
1650
1572
|
$('#redactor_tabs' + index).show();
|
|
1651
1573
|
}
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
// Define: Linkify plugin from stackoverflow
|
|
1655
|
-
(function($){
|
|
1656
|
-
var url2 = /(^|<|\s)(((https?|ftp):\/\/|mailto:).+?)(\s|>|$)/g;
|
|
1657
|
-
|
|
1658
|
-
linkifyThis = function ()
|
|
1659
|
-
{
|
|
1660
|
-
var childNodes = this.childNodes,
|
|
1661
|
-
i = childNodes.length;
|
|
1662
|
-
while(i--)
|
|
1663
|
-
{
|
|
1664
|
-
var n = childNodes[i];
|
|
1665
|
-
if (n.nodeType == 3)
|
|
1666
|
-
{
|
|
1667
|
-
var html = n.nodeValue;
|
|
1668
|
-
if (html)
|
|
1669
|
-
{
|
|
1670
|
-
html = html.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(url2, '$1<a href="$2">$2</a>$5');
|
|
1671
|
-
$(n).after(html).remove();
|
|
1672
|
-
}
|
|
1673
|
-
}
|
|
1674
|
-
else if (n.nodeType == 1 && !/^(a|button|textarea)$/i.test(n.tagName)) linkifyThis.call(n);
|
|
1675
|
-
}
|
|
1676
|
-
};
|
|
1677
|
-
|
|
1678
|
-
$.fn.linkify = function ()
|
|
1679
|
-
{
|
|
1680
|
-
this.each(linkifyThis);
|
|
1681
|
-
};
|
|
1682
|
-
|
|
1683
|
-
})(jQuery);
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
/* jQuery plugin textselect
|
|
1687
|
-
* version: 0.9
|
|
1688
|
-
* author: Josef Moravec, josef.moravec@gmail.com
|
|
1689
|
-
* updated: Imperavi
|
|
1690
|
-
*
|
|
1691
|
-
*/
|
|
1692
|
-
(function($){$.event.special.textselect={setup:function(data,namespaces)
|
|
1693
|
-
{$(this).data("textselected",false);$(this).data("ttt",data);$(this).bind('mouseup',$.event.special.textselect.handler);},teardown:function(data)
|
|
1694
|
-
{$(this).unbind('mouseup',$.event.special.textselect.handler);},handler:function(event)
|
|
1695
|
-
{var data=$(this).data("ttt");var text=$.event.special.textselect.getSelectedText(data).toString();if(text!='')
|
|
1696
|
-
{$(this).data("textselected",true);event.type="textselect";event.text=text;$.event.handle.apply(this,arguments);}},getSelectedText:function(data)
|
|
1697
|
-
{var text='';var frame=$('#imp_redactor_frame_'+data).get(0);if(frame.contentWindow.getSelection)text=frame.contentWindow.getSelection();else if(frame.contentWindow.document.getSelection) text=frame.contentWindow.document.getSelection();else if(frame.contentWindow.document.selection)text=frame.contentWindow.document.selection.createRange().text;return text;}}
|
|
1698
|
-
$.event.special.textunselect={setup:function(data,namespaces){$(this).data("rttt",data);$(this).data("textselected",false);$(this).bind('mouseup',$.event.special.textunselect.handler);$(this).bind('keyup',$.event.special.textunselect.handlerKey)},teardown:function(data){$(this).unbind('mouseup',$.event.special.textunselect.handler);},handler:function(event){if($(this).data("textselected")){var data=$(this).data("rttt");var text=$.event.special.textselect.getSelectedText(data).toString();if(text==''){$(this).data("textselected",false);event.type="textunselect";$.event.handle.apply(this,arguments);}}},handlerKey:function(event){if($(this).data("textselected")){var data=$(this).data("rttt");var text=$.event.special.textselect.getSelectedText(data).toString();if((event.keyCode=27)&&(text=='')){$(this).data("textselected",false);event.type="textunselect";$.event.handle.apply(this,arguments);}}}}})(jQuery);
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
/*
|
|
1702
|
-
Plugin Drag and drop Upload v1.0.0
|
|
1703
|
-
http://imperavi.com/
|
|
1704
|
-
Copyright 2011, Imperavi Ltd.
|
|
1705
|
-
*/
|
|
1706
|
-
(function($){
|
|
1707
|
-
|
|
1708
|
-
// Initialization
|
|
1709
|
-
$.fn.dragupload = function(options)
|
|
1710
|
-
{
|
|
1711
|
-
return this.each(function() {
|
|
1712
|
-
var obj = new Construct(this, options);
|
|
1713
|
-
obj.init();
|
|
1714
|
-
});
|
|
1715
|
-
};
|
|
1716
|
-
|
|
1717
|
-
// Options and variables
|
|
1718
|
-
function Construct(el, options) {
|
|
1719
|
-
|
|
1720
|
-
this.opts = $.extend({
|
|
1721
|
-
|
|
1722
|
-
url: false,
|
|
1723
|
-
success: false,
|
|
1724
|
-
maxfilesize: 10485760, // 10MB
|
|
1725
|
-
preview: false,
|
|
1726
|
-
|
|
1727
|
-
text: RLANG.drop_file_here,
|
|
1728
|
-
atext: RLANG.or_choose
|
|
1729
|
-
|
|
1730
|
-
/*
|
|
1731
|
-
success_text: 'Загрузка успешно завершена',
|
|
1732
|
-
progress_text: 'Загрузка',
|
|
1733
|
-
maxsize_error: 'Файл слишком большой'
|
|
1734
|
-
*/
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
}, options);
|
|
1738
|
-
|
|
1739
|
-
this.$el = $(el);
|
|
1740
|
-
};
|
|
1741
|
-
|
|
1742
|
-
// Functionality
|
|
1743
|
-
Construct.prototype = {
|
|
1744
|
-
init: function()
|
|
1745
|
-
{
|
|
1746
|
-
if (!$.browser.opera && !$.browser.msie)
|
|
1747
|
-
{
|
|
1748
|
-
this.droparea = $('<div class="redactor_droparea"></div>');
|
|
1749
|
-
this.dropareabox = $('<div class="redactor_dropareabox">' + this.opts.text + '</div>');
|
|
1750
|
-
this.dropalternative = $('<div class="redactor_dropalternative">' + this.opts.atext + '</div>');
|
|
1751
|
-
|
|
1752
|
-
this.droparea.append(this.dropareabox);
|
|
1753
|
-
|
|
1754
|
-
this.$el.before(this.droparea);
|
|
1755
|
-
this.$el.before(this.dropalternative);
|
|
1756
|
-
|
|
1757
|
-
|
|
1758
|
-
// drag over
|
|
1759
|
-
this.dropareabox.bind('dragover', function() { return this.ondrag(); }.bind2(this));
|
|
1760
|
-
|
|
1761
|
-
// drag leave
|
|
1762
|
-
this.dropareabox.bind('dragleave', function() { return this.ondragleave(); }.bind2(this));
|
|
1763
|
-
|
|
1764
|
-
|
|
1765
|
-
// drop
|
|
1766
|
-
this.dropareabox.get(0).ondrop = function(event) {
|
|
1767
|
-
|
|
1768
|
-
event.preventDefault();
|
|
1769
|
-
|
|
1770
|
-
this.dropareabox.removeClass('hover').addClass('drop');
|
|
1771
|
-
|
|
1772
|
-
var file = event.dataTransfer.files[0];
|
|
1773
|
-
|
|
1774
|
-
|
|
1775
|
-
/*
|
|
1776
|
-
if (file.size > this.opts.maxfilesize)
|
|
1777
|
-
{
|
|
1778
|
-
this.dropareabox.text(this.opts.maxsize_error).addClass('error');
|
|
1779
|
-
return false;
|
|
1780
|
-
}
|
|
1781
|
-
|
|
1782
|
-
var uploadProgress = function(e)
|
|
1783
|
-
{
|
|
1784
|
-
var percent = parseInt(e.loaded / e.total * 100);
|
|
1785
|
-
this.dropareabox.text(this.opts.progress_text + ': ' + percent + '%');
|
|
1786
|
-
|
|
1787
|
-
}.bind2(this);
|
|
1788
|
-
|
|
1789
|
-
|
|
1790
|
-
var xhr = jQuery.ajaxSettings.xhr();
|
|
1791
|
-
if (xhr.upload) xhr.upload.addEventListener('progress', uploadProgress, false);
|
|
1792
|
-
var provider = function () { return xhr; };
|
|
1793
|
-
*/
|
|
1794
|
-
|
|
1795
|
-
var fd = new FormData();
|
|
1796
|
-
fd.append('file', file);
|
|
1797
|
-
|
|
1798
|
-
$.ajax({
|
|
1799
|
-
url: this.opts.url,
|
|
1800
|
-
data: fd,
|
|
1801
|
-
//xhr: provider,
|
|
1802
|
-
cache: false,
|
|
1803
|
-
contentType: false,
|
|
1804
|
-
processData: false,
|
|
1805
|
-
type: 'POST',
|
|
1806
|
-
success: function(data)
|
|
1807
|
-
{
|
|
1808
|
-
if (this.opts.success !== false) this.opts.success(data);
|
|
1809
|
-
|
|
1810
|
-
if (this.opts.preview === true) this.dropareabox.html(data);
|
|
1811
|
-
//else this.dropareabox.text(this.opts.success_text);
|
|
1812
|
-
|
|
1813
|
-
}.bind2(this)
|
|
1814
|
-
});
|
|
1815
|
-
|
|
1816
|
-
|
|
1817
|
-
}.bind2(this);
|
|
1818
|
-
}
|
|
1819
|
-
},
|
|
1820
|
-
ondrag: function()
|
|
1821
|
-
{
|
|
1822
|
-
this.dropareabox.addClass('hover');
|
|
1823
|
-
return false;
|
|
1824
|
-
},
|
|
1825
|
-
ondragleave: function()
|
|
1826
|
-
{
|
|
1827
|
-
this.dropareabox.removeClass('hover');
|
|
1828
|
-
return false;
|
|
1829
|
-
}
|
|
1830
|
-
};
|
|
1831
|
-
|
|
1832
|
-
|
|
1833
|
-
})(jQuery);
|