activeadmin_trumbowyg 0.1.0
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.
- checksums.yaml +7 -0
- data/.gitignore +3 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +20 -0
- data/README.md +60 -0
- data/Rakefile +3 -0
- data/activeadmin_trumbowyg.gemspec +19 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ar.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/bg.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/by.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ca.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/cs.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/da.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/de.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/el.min.js +12 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/es.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/es_ar.min.js +10 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/fa.min.js +10 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/fi.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/fr.min.js +10 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/he.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/hr.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/hu.min.js +10 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/id.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/it.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ja.min.js +10 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ko.min.js +10 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/mn.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/my.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/nl.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/no_nb.min.js +10 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ph.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/pl.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/pt.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/pt_br.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ro.min.js +12 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/rs.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/rs_latin.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ru.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/sk.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/sv.min.js +12 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/tr.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/ua.min.js +8 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/vi.min.js +9 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/zh_cn.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/langs/zh_tw.min.js +11 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/base64/trumbowyg.base64.js +121 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/base64/trumbowyg.base64.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.js +179 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/trumbowyg.colors.js +176 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/trumbowyg.colors.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/ui/sass/trumbowyg.colors.scss +49 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/ui/trumbowyg.colors.css +43 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/ui/trumbowyg.colors.min.css +2 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/trumbowyg.emoji.js +965 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/trumbowyg.emoji.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/ui/sass/trumbowyg.emoji.scss +56 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/ui/trumbowyg.emoji.css +47 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/emoji/ui/trumbowyg.emoji.min.css +2 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.js +83 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/noembed/trumbowyg.noembed.js +101 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/noembed/trumbowyg.noembed.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/pasteimage/trumbowyg.pasteimage.js +41 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/pasteimage/trumbowyg.pasteimage.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/preformatted/trumbowyg.preformatted.js +123 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/preformatted/trumbowyg.preformatted.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/table/trumbowyg.table.js +154 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/table/trumbowyg.table.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/template/trumbowyg.template.js +58 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/template/trumbowyg.template.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/upload/trumbowyg.upload.js +242 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/plugins/upload/trumbowyg.upload.min.js +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/trumbowyg.js +1688 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/trumbowyg.min.js +2 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/ui/icons.svg +1 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/ui/sass/trumbowyg.scss +796 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/ui/trumbowyg.css +584 -0
- data/app/assets/javascripts/activeadmin/trumbowyg/ui/trumbowyg.min.css +2 -0
- data/app/assets/javascripts/activeadmin/trumbowyg_input.js +7 -0
- data/app/assets/stylesheets/activeadmin/_trumbowyg_input.sass +48 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/ar.min.js +11 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/bg.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/by.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/ca.min.js +11 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/cs.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/da.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/de.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/el.min.js +12 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/es.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/es_ar.min.js +10 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/fa.min.js +10 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/fi.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/fr.min.js +10 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/he.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/hr.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/hu.min.js +10 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/id.min.js +11 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/it.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/ja.min.js +10 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/ko.min.js +10 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/mn.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/my.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/nl.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/no_nb.min.js +10 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/ph.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/pl.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/pt.min.js +11 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/pt_br.min.js +11 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/ro.min.js +12 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/rs.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/rs_latin.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/ru.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/sk.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/sv.min.js +12 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/tr.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/ua.min.js +8 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/vi.min.js +9 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/zh_cn.min.js +11 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/langs/zh_tw.min.js +11 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/base64/trumbowyg.base64.js +121 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/base64/trumbowyg.base64.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.js +179 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/colors/trumbowyg.colors.js +176 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/colors/trumbowyg.colors.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/colors/ui/sass/trumbowyg.colors.scss +49 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/colors/ui/trumbowyg.colors.css +43 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/colors/ui/trumbowyg.colors.min.css +2 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/emoji/trumbowyg.emoji.js +965 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/emoji/trumbowyg.emoji.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/emoji/ui/sass/trumbowyg.emoji.scss +56 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/emoji/ui/trumbowyg.emoji.css +47 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/emoji/ui/trumbowyg.emoji.min.css +2 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.js +83 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/insertaudio/trumbowyg.insertaudio.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/noembed/trumbowyg.noembed.js +101 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/noembed/trumbowyg.noembed.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/pasteimage/trumbowyg.pasteimage.js +41 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/pasteimage/trumbowyg.pasteimage.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/preformatted/trumbowyg.preformatted.js +123 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/preformatted/trumbowyg.preformatted.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/table/trumbowyg.table.js +154 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/table/trumbowyg.table.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/template/trumbowyg.template.js +58 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/template/trumbowyg.template.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/upload/trumbowyg.upload.js +242 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/plugins/upload/trumbowyg.upload.min.js +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/trumbowyg.js +1688 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/trumbowyg.min.js +2 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/ui/icons.svg +1 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/ui/sass/trumbowyg.scss +796 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/ui/trumbowyg.css +584 -0
- data/app/assets/stylesheets/activeadmin/trumbowyg/ui/trumbowyg.min.css +2 -0
- data/lib/activeadmin/trumbowyg/engine.rb +9 -0
- data/lib/activeadmin/trumbowyg/version.rb +5 -0
- data/lib/activeadmin/trumbowyg.rb +1 -0
- data/lib/activeadmin_trumbowyg.rb +3 -0
- data/lib/formtastic/inputs/trumbowyg_input.rb +12 -0
- data/screenshot.jpg +0 -0
- metadata +217 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/* ===========================================================
|
|
2
|
+
* vi.js
|
|
3
|
+
* Vietnamese translation for Trumbowyg
|
|
4
|
+
* http://alex-d.github.com/Trumbowyg
|
|
5
|
+
* ===========================================================
|
|
6
|
+
* Author : heocoi
|
|
7
|
+
* Github: https://github.com/heocoi
|
|
8
|
+
*/
|
|
9
|
+
jQuery.trumbowyg.langs.vi={viewHTML:"Hiển thị HTML",formatting:"Định dạng",p:"Đoạn",blockquote:"Trích dẫn",code:"Code",header:"Đầu trang",bold:"In đậm",italic:"In nghiêng",strikethrough:"Gạch ngang",underline:"Gạch chân",strong:"In đậm",em:"In nghiêng",del:"Gạch ngang",unorderedList:"Danh sách không thứ tự",orderedList:"Danh sách có thứ tự",insertImage:"Chèn hình ảnh",insertVideo:"Chèn video",link:"Đường dẫn",createLink:"Tạo đường dẫn",unlink:"Hủy đường dẫn",justifyLeft:"Canh lề trái",justifyCenter:"Canh giữa",justifyRight:"Canh lề phải",justifyFull:"Canh đều",horizontalRule:"Thêm đường kẻ ngang",fullscreen:"Toàn màn hình",close:"Đóng",submit:"Đồng ý",reset:"Hủy bỏ",required:"Bắt buộc",description:"Mô tả",title:"Tiêu đề",text:"Nội dung"};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* ===========================================================
|
|
2
|
+
* zh_cn.js
|
|
3
|
+
* Simplified Chinese translation for Trumbowyg
|
|
4
|
+
* http://alex-d.github.com/Trumbowyg
|
|
5
|
+
* ===========================================================
|
|
6
|
+
* Author : Liu Kai (akai)
|
|
7
|
+
* Twitter : @akai404
|
|
8
|
+
* Github : https://github.com/akai
|
|
9
|
+
*/
|
|
10
|
+
// jshint camelcase:false
|
|
11
|
+
jQuery.trumbowyg.langs.zh_cn={viewHTML:"源代码",formatting:"格式",p:"段落",blockquote:"引用",code:"代码",header:"标题",bold:"加粗",italic:"斜体",strikethrough:"删除线",underline:"下划线",strong:"加粗",em:"斜体",del:"删除线",unorderedList:"无序列表",orderedList:"有序列表",insertImage:"插入图片",insertVideo:"插入视频",link:"超链接",createLink:"插入链接",unlink:"取消链接",justifyLeft:"居左对齐",justifyCenter:"居中对齐",justifyRight:"居右对齐",justifyFull:"两端对齐",horizontalRule:"插入分隔线",fullscreen:"全屏",close:"关闭",submit:"确定",reset:"取消",required:"必需的",description:"描述",title:"标题",text:"文字"};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/* ===========================================================
|
|
2
|
+
* zh_tw.js
|
|
3
|
+
* Traditional Chinese translation for Trumbowyg
|
|
4
|
+
* http://alex-d.github.com/Trumbowyg
|
|
5
|
+
* ===========================================================
|
|
6
|
+
* Author : Peter Dave Hello (PeterDaveHello)
|
|
7
|
+
* Twitter : @PeterDaveHello
|
|
8
|
+
* Github : https://github.com/PeterDaveHello
|
|
9
|
+
*/
|
|
10
|
+
// jshint camelcase:false
|
|
11
|
+
jQuery.trumbowyg.langs.zh_tw={viewHTML:"原始碼",formatting:"格式",p:"段落",blockquote:"引用",code:"代碼",header:"標題",bold:"加粗",italic:"斜體",strikethrough:"刪除線",underline:"底線",strong:"加粗",em:"斜體",del:"刪除線",unorderedList:"無序列表",orderedList:"有序列表",insertImage:"插入圖片",insertVideo:"插入影片",link:"超連結",createLink:"插入連結",unlink:"取消連結",justifyLeft:"靠左對齊",justifyCenter:"置中對齊",justifyRight:"靠右對齊",justifyFull:"左右對齊",horizontalRule:"插入分隔線",fullscreen:"全螢幕",close:"關閉",submit:"確定",reset:"取消",required:"必需的",description:"描述",title:"標題",text:"文字"};
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/* ===========================================================
|
|
2
|
+
* trumbowyg.base64.js v1.0
|
|
3
|
+
* Base64 plugin for Trumbowyg
|
|
4
|
+
* http://alex-d.github.com/Trumbowyg
|
|
5
|
+
* ===========================================================
|
|
6
|
+
* Author : Cyril Biencourt (lizardK)
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
(function ($) {
|
|
10
|
+
'use strict';
|
|
11
|
+
|
|
12
|
+
var isSupported = function () {
|
|
13
|
+
return typeof FileReader !== 'undefined';
|
|
14
|
+
};
|
|
15
|
+
|
|
16
|
+
var isValidImage = function (type) {
|
|
17
|
+
return /^data:image\/[a-z]?/i.test(type);
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
$.extend(true, $.trumbowyg, {
|
|
21
|
+
langs: {
|
|
22
|
+
// jshint camelcase:false
|
|
23
|
+
en: {
|
|
24
|
+
base64: 'Image as base64',
|
|
25
|
+
file: 'File',
|
|
26
|
+
errFileReaderNotSupported: 'FileReader is not supported by your browser.',
|
|
27
|
+
errInvalidImage: 'Invalid image file.'
|
|
28
|
+
},
|
|
29
|
+
fr: {
|
|
30
|
+
base64: 'Image en base64',
|
|
31
|
+
file: 'Fichier'
|
|
32
|
+
},
|
|
33
|
+
cs: {
|
|
34
|
+
base64: 'Vložit obrázek',
|
|
35
|
+
file: 'Soubor'
|
|
36
|
+
},
|
|
37
|
+
zh_cn: {
|
|
38
|
+
base64: '图片(Base64编码)',
|
|
39
|
+
file: '文件'
|
|
40
|
+
},
|
|
41
|
+
nl: {
|
|
42
|
+
errFileReaderNotSupported: 'Uw browser ondersteunt deze functionaliteit niet.',
|
|
43
|
+
errInvalidImage: 'De gekozen afbeelding is ongeldig.'
|
|
44
|
+
},
|
|
45
|
+
ru: {
|
|
46
|
+
base64: 'Изображение как код в base64',
|
|
47
|
+
file: 'Файл',
|
|
48
|
+
errFileReaderNotSupported: 'FileReader не поддерживается вашим браузером.',
|
|
49
|
+
errInvalidImage: 'Недопустимый файл изображения.'
|
|
50
|
+
},
|
|
51
|
+
ja: {
|
|
52
|
+
base64: '画像 (Base64形式)',
|
|
53
|
+
file: 'ファイル',
|
|
54
|
+
errFileReaderNotSupported: 'あなたのブラウザーはFileReaderをサポートしていません',
|
|
55
|
+
errInvalidImage: '画像形式が正しくありません'
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
// jshint camelcase:true
|
|
59
|
+
|
|
60
|
+
plugins: {
|
|
61
|
+
base64: {
|
|
62
|
+
shouldInit: isSupported,
|
|
63
|
+
init: function (trumbowyg) {
|
|
64
|
+
var btnDef = {
|
|
65
|
+
isSupported: isSupported,
|
|
66
|
+
fn: function () {
|
|
67
|
+
trumbowyg.saveRange();
|
|
68
|
+
|
|
69
|
+
var file;
|
|
70
|
+
var $modal = trumbowyg.openModalInsert(
|
|
71
|
+
// Title
|
|
72
|
+
trumbowyg.lang.base64,
|
|
73
|
+
|
|
74
|
+
// Fields
|
|
75
|
+
{
|
|
76
|
+
file: {
|
|
77
|
+
type: 'file',
|
|
78
|
+
required: true,
|
|
79
|
+
attributes: {
|
|
80
|
+
accept: 'image/*'
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
alt: {
|
|
84
|
+
label: 'description',
|
|
85
|
+
value: trumbowyg.getRangeText()
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
// Callback
|
|
90
|
+
function (values) {
|
|
91
|
+
var fReader = new FileReader();
|
|
92
|
+
|
|
93
|
+
fReader.onloadend = function (e) {
|
|
94
|
+
if (isValidImage(e.target.result)) {
|
|
95
|
+
trumbowyg.execCmd('insertImage', fReader.result);
|
|
96
|
+
$(['img[src="', fReader.result, '"]:not([alt])'].join(''), trumbowyg.$box).attr('alt', values.alt);
|
|
97
|
+
trumbowyg.closeModal();
|
|
98
|
+
} else {
|
|
99
|
+
trumbowyg.addErrorOnModalField(
|
|
100
|
+
$('input[type=file]', $modal),
|
|
101
|
+
trumbowyg.lang.errInvalidImage
|
|
102
|
+
);
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
|
|
106
|
+
fReader.readAsDataURL(file);
|
|
107
|
+
}
|
|
108
|
+
);
|
|
109
|
+
|
|
110
|
+
$('input[type=file]').on('change', function (e) {
|
|
111
|
+
file = e.target.files[0];
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
trumbowyg.addBtnDef('base64', btnDef);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
})(jQuery);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(e){"use strict";var a=function(){return"undefined"!=typeof FileReader},r=function(e){return/^data:image\/[a-z]?/i.test(e)};e.extend(!0,e.trumbowyg,{langs:{en:{base64:"Image as base64",file:"File",errFileReaderNotSupported:"FileReader is not supported by your browser.",errInvalidImage:"Invalid image file."},fr:{base64:"Image en base64",file:"Fichier"},cs:{base64:"Vložit obrázek",file:"Soubor"},zh_cn:{base64:"图片(Base64编码)",file:"文件"},nl:{errFileReaderNotSupported:"Uw browser ondersteunt deze functionaliteit niet.",errInvalidImage:"De gekozen afbeelding is ongeldig."},ru:{base64:"Изображение как код в base64",file:"Файл",errFileReaderNotSupported:"FileReader не поддерживается вашим браузером.",errInvalidImage:"Недопустимый файл изображения."},ja:{base64:"画像 (Base64形式)",file:"ファイル",errFileReaderNotSupported:"あなたのブラウザーはFileReaderをサポートしていません",errInvalidImage:"画像形式が正しくありません"}},plugins:{base64:{shouldInit:a,init:function(i){var t={isSupported:a,fn:function(){i.saveRange();var a,t=i.openModalInsert(i.lang.base64,{file:{type:"file",required:!0,attributes:{accept:"image/*"}},alt:{label:"description",value:i.getRangeText()}},function(n){var l=new FileReader;l.onloadend=function(a){r(a.target.result)?(i.execCmd("insertImage",l.result),e(['img[src="',l.result,'"]:not([alt])'].join(""),i.$box).attr("alt",n.alt),i.closeModal()):i.addErrorOnModalField(e("input[type=file]",t),i.lang.errInvalidImage)},l.readAsDataURL(a)});e("input[type=file]").on("change",function(e){a=e.target.files[0]})}};i.addBtnDef("base64",t)}}}})}(jQuery);
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
/* ===========================================================
|
|
2
|
+
* trumbowyg.cleanpaste.js v1.0
|
|
3
|
+
* Font Clean paste plugin for Trumbowyg
|
|
4
|
+
* http://alex-d.github.com/Trumbowyg
|
|
5
|
+
* ===========================================================
|
|
6
|
+
* Author : Eric Radin
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* This plugin will perform a "cleaning" on any paste, in particular
|
|
11
|
+
* it will clean pasted content of microsoft word document tags and classes.
|
|
12
|
+
*/
|
|
13
|
+
(function ($) {
|
|
14
|
+
'use strict';
|
|
15
|
+
|
|
16
|
+
function reverse(sentString) {
|
|
17
|
+
var theString = '';
|
|
18
|
+
for (var i = sentString.length - 1; i >= 0; i -= 1) {
|
|
19
|
+
theString += sentString.charAt(i);
|
|
20
|
+
}
|
|
21
|
+
return theString;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
function checkValidTags(snippet) {
|
|
25
|
+
var theString = snippet;
|
|
26
|
+
|
|
27
|
+
// Replace uppercase element names with lowercase
|
|
28
|
+
theString = theString.replace(/<[^> ]*/g, function (match) {
|
|
29
|
+
return match.toLowerCase();
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
// Replace uppercase attribute names with lowercase
|
|
33
|
+
theString = theString.replace(/<[^>]*>/g, function (match) {
|
|
34
|
+
match = match.replace(/ [^=]+=/g, function (match2) {
|
|
35
|
+
return match2.toLowerCase();
|
|
36
|
+
});
|
|
37
|
+
return match;
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// Put quotes around unquoted attributes
|
|
41
|
+
theString = theString.replace(/<[^>]*>/g, function (match) {
|
|
42
|
+
match = match.replace(/( [^=]+=)([^"][^ >]*)/g, '$1\"$2\"');
|
|
43
|
+
return match;
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
return theString;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function cleanIt(htmlBefore, htmlAfter) {
|
|
50
|
+
var matchedHead = '';
|
|
51
|
+
var matchedTail = '';
|
|
52
|
+
var afterStart;
|
|
53
|
+
var afterFinish;
|
|
54
|
+
var newSnippet;
|
|
55
|
+
|
|
56
|
+
// we need to extract the inserted block
|
|
57
|
+
for (afterStart = 0; htmlAfter.charAt(afterStart) === htmlBefore.charAt(afterStart); afterStart += 1) {
|
|
58
|
+
matchedHead += htmlAfter.charAt(afterStart);
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// If afterStart is inside a HTML tag, move to opening brace of tag
|
|
62
|
+
for (var i = afterStart; i >= 0; i -= 1) {
|
|
63
|
+
if (htmlBefore.charAt(i) === '<') {
|
|
64
|
+
afterStart = i;
|
|
65
|
+
matchedHead = htmlBefore.substring(0, afterStart);
|
|
66
|
+
break;
|
|
67
|
+
} else if (htmlBefore.charAt(i) === '>') {
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// now reverse string and work from the end in
|
|
73
|
+
htmlAfter = reverse(htmlAfter);
|
|
74
|
+
htmlBefore = reverse(htmlBefore);
|
|
75
|
+
|
|
76
|
+
// Find end of both strings that matches
|
|
77
|
+
for (afterFinish = 0; htmlAfter.charAt(afterFinish) === htmlBefore.charAt(afterFinish); afterFinish += 1) {
|
|
78
|
+
matchedTail += htmlAfter.charAt(afterFinish);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// If afterFinish is inside a HTML tag, move to closing brace of tag
|
|
82
|
+
for (var j = afterFinish; j >= 0; j -= 1) {
|
|
83
|
+
if (htmlBefore.charAt(j) === '>') {
|
|
84
|
+
afterFinish = j;
|
|
85
|
+
matchedTail = htmlBefore.substring(0, afterFinish);
|
|
86
|
+
break;
|
|
87
|
+
} else if (htmlBefore.charAt(j) === '<') {
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
matchedTail = reverse(matchedTail);
|
|
93
|
+
|
|
94
|
+
// If there's no difference in pasted content
|
|
95
|
+
if (afterStart === (htmlAfter.length - afterFinish)) {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
htmlAfter = reverse(htmlAfter);
|
|
100
|
+
newSnippet = htmlAfter.substring(afterStart, htmlAfter.length - afterFinish);
|
|
101
|
+
|
|
102
|
+
// first make sure all tags and attributes are made valid
|
|
103
|
+
newSnippet = checkValidTags(newSnippet);
|
|
104
|
+
|
|
105
|
+
// Replace opening bold tags with strong
|
|
106
|
+
newSnippet = newSnippet.replace(/<b(\s+|>)/g, '<strong$1');
|
|
107
|
+
// Replace closing bold tags with closing strong
|
|
108
|
+
newSnippet = newSnippet.replace(/<\/b(\s+|>)/g, '</strong$1');
|
|
109
|
+
|
|
110
|
+
// Replace italic tags with em
|
|
111
|
+
newSnippet = newSnippet.replace(/<i(\s+|>)/g, '<em$1');
|
|
112
|
+
// Replace closing italic tags with closing em
|
|
113
|
+
newSnippet = newSnippet.replace(/<\/i(\s+|>)/g, '</em$1');
|
|
114
|
+
|
|
115
|
+
// strip out comments -cgCraft
|
|
116
|
+
newSnippet = newSnippet.replace(/<!(?:--[\s\S]*?--\s*)?>\s*/g, '');
|
|
117
|
+
|
|
118
|
+
// strip out -cgCraft
|
|
119
|
+
newSnippet = newSnippet.replace(/ /gi, ' ');
|
|
120
|
+
// strip out extra spaces -cgCraft
|
|
121
|
+
newSnippet = newSnippet.replace(/ <\//gi, '</');
|
|
122
|
+
|
|
123
|
+
while (newSnippet.indexOf(' ') !== -1) {
|
|
124
|
+
var anArray = newSnippet.split(' ');
|
|
125
|
+
newSnippet = anArray.join(' ');
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
// strip -cgCraft
|
|
129
|
+
newSnippet = newSnippet.replace(/^\s*|\s*$/g, '');
|
|
130
|
+
|
|
131
|
+
// Strip out unaccepted attributes
|
|
132
|
+
newSnippet = newSnippet.replace(/<[^>]*>/g, function (match) {
|
|
133
|
+
match = match.replace(/ ([^=]+)="[^"]*"/g, function (match2, attributeName) {
|
|
134
|
+
if (['alt', 'href', 'src', 'title'].indexOf(attributeName) !== -1) {
|
|
135
|
+
return match2;
|
|
136
|
+
}
|
|
137
|
+
return '';
|
|
138
|
+
});
|
|
139
|
+
return match;
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
// Final cleanout for MS Word crud
|
|
143
|
+
newSnippet = newSnippet.replace(/<\?xml[^>]*>/g, '');
|
|
144
|
+
newSnippet = newSnippet.replace(/<[^ >]+:[^>]*>/g, '');
|
|
145
|
+
newSnippet = newSnippet.replace(/<\/[^ >]+:[^>]*>/g, '');
|
|
146
|
+
|
|
147
|
+
// remove unwanted tags
|
|
148
|
+
newSnippet = newSnippet.replace(/<(div|span|style|meta|link){1}.*?>/gi, '');
|
|
149
|
+
|
|
150
|
+
htmlAfter = matchedHead + newSnippet + matchedTail;
|
|
151
|
+
return htmlAfter;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
// clean editor
|
|
155
|
+
// this will clean the inserted contents
|
|
156
|
+
// it does a compare, before and after paste to determine the
|
|
157
|
+
// pasted contents
|
|
158
|
+
$.extend(true, $.trumbowyg, {
|
|
159
|
+
plugins: {
|
|
160
|
+
cleanPaste: {
|
|
161
|
+
init: function (trumbowyg) {
|
|
162
|
+
trumbowyg.pasteHandlers.push(function () {
|
|
163
|
+
try {
|
|
164
|
+
var contentBefore = trumbowyg.$ed.html();
|
|
165
|
+
setTimeout(function () {
|
|
166
|
+
var contentAfter = trumbowyg.$ed.html();
|
|
167
|
+
contentAfter = cleanIt(contentBefore, contentAfter);
|
|
168
|
+
trumbowyg.$ed.html(contentAfter);
|
|
169
|
+
}, 0);
|
|
170
|
+
} catch (c) {
|
|
171
|
+
}
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
})(jQuery);
|
|
178
|
+
|
|
179
|
+
|
data/app/assets/javascripts/activeadmin/trumbowyg/plugins/cleanpaste/trumbowyg.cleanpaste.min.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(r){"use strict";function e(r){for(var e="",t=r.length-1;t>=0;t-=1)e+=r.charAt(t);return e}function t(r){var e=r;return e=e.replace(/<[^> ]*/g,function(r){return r.toLowerCase()}),e=e.replace(/<[^>]*>/g,function(r){return r=r.replace(/ [^=]+=/g,function(r){return r.toLowerCase()})}),e=e.replace(/<[^>]*>/g,function(r){return r=r.replace(/( [^=]+=)([^"][^ >]*)/g,'$1"$2"')})}function n(r,n){var a,c,i,l="",s="";for(a=0;n.charAt(a)===r.charAt(a);a+=1)l+=n.charAt(a);for(var u=a;u>=0;u-=1){if("<"===r.charAt(u)){a=u,l=r.substring(0,a);break}if(">"===r.charAt(u))break}for(n=e(n),r=e(r),c=0;n.charAt(c)===r.charAt(c);c+=1)s+=n.charAt(c);for(var g=c;g>=0;g-=1){if(">"===r.charAt(g)){c=g,s=r.substring(0,c);break}if("<"===r.charAt(g))break}if(s=e(s),a===n.length-c)return!1;for(n=e(n),i=n.substring(a,n.length-c),i=t(i),i=i.replace(/<b(\s+|>)/g,"<strong$1"),i=i.replace(/<\/b(\s+|>)/g,"</strong$1"),i=i.replace(/<i(\s+|>)/g,"<em$1"),i=i.replace(/<\/i(\s+|>)/g,"</em$1"),i=i.replace(/<!(?:--[\s\S]*?--\s*)?>\s*/g,""),i=i.replace(/ /gi," "),i=i.replace(/ <\//gi,"</");-1!==i.indexOf(" ");){var o=i.split(" ");i=o.join(" ")}return i=i.replace(/^\s*|\s*$/g,""),i=i.replace(/<[^>]*>/g,function(r){return r=r.replace(/ ([^=]+)="[^"]*"/g,function(r,e){return-1!==["alt","href","src","title"].indexOf(e)?r:""})}),i=i.replace(/<\?xml[^>]*>/g,""),i=i.replace(/<[^ >]+:[^>]*>/g,""),i=i.replace(/<\/[^ >]+:[^>]*>/g,""),i=i.replace(/<(div|span|style|meta|link){1}.*?>/gi,""),n=l+i+s}r.extend(!0,r.trumbowyg,{plugins:{cleanPaste:{init:function(r){r.pasteHandlers.push(function(){try{var e=r.$ed.html();setTimeout(function(){var t=r.$ed.html();t=n(e,t),r.$ed.html(t)},0)}catch(t){}})}}}})}(jQuery);
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
/* ===========================================================
|
|
2
|
+
* trumbowyg.colors.js v1.2
|
|
3
|
+
* Colors picker plugin for Trumbowyg
|
|
4
|
+
* http://alex-d.github.com/Trumbowyg
|
|
5
|
+
* ===========================================================
|
|
6
|
+
* Author : Alexandre Demode (Alex-D)
|
|
7
|
+
* Twitter : @AlexandreDemode
|
|
8
|
+
* Website : alex-d.fr
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
(function ($) {
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
$.extend(true, $.trumbowyg, {
|
|
15
|
+
langs: {
|
|
16
|
+
// jshint camelcase:false
|
|
17
|
+
cs: {
|
|
18
|
+
foreColor: 'Barva textu',
|
|
19
|
+
backColor: 'Barva pozadí'
|
|
20
|
+
},
|
|
21
|
+
en: {
|
|
22
|
+
foreColor: 'Text color',
|
|
23
|
+
backColor: 'Background color'
|
|
24
|
+
},
|
|
25
|
+
fr: {
|
|
26
|
+
foreColor: 'Couleur du texte',
|
|
27
|
+
backColor: 'Couleur de fond'
|
|
28
|
+
},
|
|
29
|
+
sk: {
|
|
30
|
+
foreColor: 'Farba textu',
|
|
31
|
+
backColor: 'Farba pozadia'
|
|
32
|
+
},
|
|
33
|
+
zh_cn: {
|
|
34
|
+
foreColor: '文字颜色',
|
|
35
|
+
backColor: '背景颜色'
|
|
36
|
+
},
|
|
37
|
+
ru: {
|
|
38
|
+
foreColor: 'Цвет текста',
|
|
39
|
+
backColor: 'Цвет выделения текста'
|
|
40
|
+
},
|
|
41
|
+
ja: {
|
|
42
|
+
foreColor: '文字色',
|
|
43
|
+
backColor: '背景色'
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
// jshint camelcase:true
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
function hex(x) {
|
|
51
|
+
return ('0' + parseInt(x).toString(16)).slice(-2);
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function colorToHex(rgb) {
|
|
55
|
+
if (rgb.search('rgb') === -1) {
|
|
56
|
+
return rgb.replace('#', '');
|
|
57
|
+
} else if (rgb === 'rgba(0, 0, 0, 0)') {
|
|
58
|
+
return 'transparent';
|
|
59
|
+
} else {
|
|
60
|
+
rgb = rgb.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/);
|
|
61
|
+
return hex(rgb[1]) + hex(rgb[2]) + hex(rgb[3]);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
function colorTagHandler(element, trumbowyg) {
|
|
66
|
+
var tags = [];
|
|
67
|
+
|
|
68
|
+
if(!element.style){
|
|
69
|
+
return tags;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// background color
|
|
73
|
+
if (element.style.backgroundColor !== '') {
|
|
74
|
+
var backColor = colorToHex(element.style.backgroundColor);
|
|
75
|
+
if (trumbowyg.o.plugins.colors.colorList.indexOf(backColor) >= 0) {
|
|
76
|
+
tags.push('backColor' + backColor);
|
|
77
|
+
} else {
|
|
78
|
+
tags.push('backColorFree');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// text color
|
|
83
|
+
var foreColor;
|
|
84
|
+
if (element.style.color !== '') {
|
|
85
|
+
foreColor = colorToHex(element.style.color);
|
|
86
|
+
} else if (element.hasAttribute('color')) {
|
|
87
|
+
foreColor = colorToHex(element.getAttribute('color'));
|
|
88
|
+
}
|
|
89
|
+
if (foreColor) {
|
|
90
|
+
if (trumbowyg.o.plugins.colors.colorList.indexOf(foreColor) >= 0) {
|
|
91
|
+
tags.push('foreColor' + foreColor);
|
|
92
|
+
} else {
|
|
93
|
+
tags.push('foreColorFree');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return tags;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
var defaultOptions = {
|
|
101
|
+
colorList: ['ffffff', '000000', 'eeece1', '1f497d', '4f81bd', 'c0504d', '9bbb59', '8064a2', '4bacc6', 'f79646', 'ffff00', 'f2f2f2', '7f7f7f', 'ddd9c3', 'c6d9f0', 'dbe5f1', 'f2dcdb', 'ebf1dd', 'e5e0ec', 'dbeef3', 'fdeada', 'fff2ca', 'd8d8d8', '595959', 'c4bd97', '8db3e2', 'b8cce4', 'e5b9b7', 'd7e3bc', 'ccc1d9', 'b7dde8', 'fbd5b5', 'ffe694', 'bfbfbf', '3f3f3f', '938953', '548dd4', '95b3d7', 'd99694', 'c3d69b', 'b2a2c7', 'b7dde8', 'fac08f', 'f2c314', 'a5a5a5', '262626', '494429', '17365d', '366092', '953734', '76923c', '5f497a', '92cddc', 'e36c09', 'c09100', '7f7f7f', '0c0c0c', '1d1b10', '0f243e', '244061', '632423', '4f6128', '3f3151', '31859b', '974806', '7f6000']
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
// Add all colors in two dropdowns
|
|
105
|
+
$.extend(true, $.trumbowyg, {
|
|
106
|
+
plugins: {
|
|
107
|
+
color: {
|
|
108
|
+
init: function (trumbowyg) {
|
|
109
|
+
trumbowyg.o.plugins.colors = trumbowyg.o.plugins.colors || defaultOptions;
|
|
110
|
+
var foreColorBtnDef = {
|
|
111
|
+
dropdown: buildDropdown('foreColor', trumbowyg)
|
|
112
|
+
},
|
|
113
|
+
backColorBtnDef = {
|
|
114
|
+
dropdown: buildDropdown('backColor', trumbowyg)
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
trumbowyg.addBtnDef('foreColor', foreColorBtnDef);
|
|
118
|
+
trumbowyg.addBtnDef('backColor', backColorBtnDef);
|
|
119
|
+
},
|
|
120
|
+
tagHandler: colorTagHandler
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
});
|
|
124
|
+
|
|
125
|
+
function buildDropdown(fn, trumbowyg) {
|
|
126
|
+
var dropdown = [];
|
|
127
|
+
|
|
128
|
+
$.each(trumbowyg.o.plugins.colors.colorList, function (i, color) {
|
|
129
|
+
var btn = fn + color,
|
|
130
|
+
btnDef = {
|
|
131
|
+
fn: fn,
|
|
132
|
+
forceCss: true,
|
|
133
|
+
param: '#' + color,
|
|
134
|
+
style: 'background-color: #' + color + ';'
|
|
135
|
+
};
|
|
136
|
+
trumbowyg.addBtnDef(btn, btnDef);
|
|
137
|
+
dropdown.push(btn);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
var removeColorButtonName = fn + 'Remove',
|
|
141
|
+
removeColorBtnDef = {
|
|
142
|
+
fn: 'removeFormat',
|
|
143
|
+
param: fn,
|
|
144
|
+
style: 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);'
|
|
145
|
+
};
|
|
146
|
+
trumbowyg.addBtnDef(removeColorButtonName, removeColorBtnDef);
|
|
147
|
+
dropdown.push(removeColorButtonName);
|
|
148
|
+
|
|
149
|
+
// add free color btn
|
|
150
|
+
var freeColorButtonName = fn + 'Free',
|
|
151
|
+
freeColorBtnDef = {
|
|
152
|
+
fn: function () {
|
|
153
|
+
trumbowyg.openModalInsert(trumbowyg.lang[fn],
|
|
154
|
+
{
|
|
155
|
+
color: {
|
|
156
|
+
label: fn,
|
|
157
|
+
value: '#FFFFFF'
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
// callback
|
|
161
|
+
function (values) {
|
|
162
|
+
trumbowyg.execCmd(fn, values.color);
|
|
163
|
+
return true;
|
|
164
|
+
}
|
|
165
|
+
);
|
|
166
|
+
},
|
|
167
|
+
text: '#',
|
|
168
|
+
// style adjust for displaying the text
|
|
169
|
+
style: 'text-indent: 0;line-height: 20px;padding: 0 5px;'
|
|
170
|
+
};
|
|
171
|
+
trumbowyg.addBtnDef(freeColorButtonName, freeColorBtnDef);
|
|
172
|
+
dropdown.push(freeColorButtonName);
|
|
173
|
+
|
|
174
|
+
return dropdown;
|
|
175
|
+
}
|
|
176
|
+
})(jQuery);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
!function(o){"use strict";function r(o){return("0"+parseInt(o).toString(16)).slice(-2)}function e(o){return-1===o.search("rgb")?o.replace("#",""):"rgba(0, 0, 0, 0)"===o?"transparent":(o=o.match(/^rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*(\d+))?\)$/),r(o[1])+r(o[2])+r(o[3]))}function f(o,r){var f=[];if(!o.style)return f;if(""!==o.style.backgroundColor){var c=e(o.style.backgroundColor);r.o.plugins.colors.colorList.indexOf(c)>=0?f.push("backColor"+c):f.push("backColorFree")}var a;return""!==o.style.color?a=e(o.style.color):o.hasAttribute("color")&&(a=e(o.getAttribute("color"))),a&&(r.o.plugins.colors.colorList.indexOf(a)>=0?f.push("foreColor"+a):f.push("foreColorFree")),f}function c(r,e){var f=[];o.each(e.o.plugins.colors.colorList,function(o,c){var a=r+c,d={fn:r,forceCss:!0,param:"#"+c,style:"background-color: #"+c+";"};e.addBtnDef(a,d),f.push(a)});var c=r+"Remove",a={fn:"removeFormat",param:r,style:"background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);"};e.addBtnDef(c,a),f.push(c);var d=r+"Free",l={fn:function(){e.openModalInsert(e.lang[r],{color:{label:r,value:"#FFFFFF"}},function(o){return e.execCmd(r,o.color),!0})},text:"#",style:"text-indent: 0;line-height: 20px;padding: 0 5px;"};return e.addBtnDef(d,l),f.push(d),f}o.extend(!0,o.trumbowyg,{langs:{cs:{foreColor:"Barva textu",backColor:"Barva pozadí"},en:{foreColor:"Text color",backColor:"Background color"},fr:{foreColor:"Couleur du texte",backColor:"Couleur de fond"},sk:{foreColor:"Farba textu",backColor:"Farba pozadia"},zh_cn:{foreColor:"文字颜色",backColor:"背景颜色"},ru:{foreColor:"Цвет текста",backColor:"Цвет выделения текста"},ja:{foreColor:"文字色",backColor:"背景色"}}});var a={colorList:["ffffff","000000","eeece1","1f497d","4f81bd","c0504d","9bbb59","8064a2","4bacc6","f79646","ffff00","f2f2f2","7f7f7f","ddd9c3","c6d9f0","dbe5f1","f2dcdb","ebf1dd","e5e0ec","dbeef3","fdeada","fff2ca","d8d8d8","595959","c4bd97","8db3e2","b8cce4","e5b9b7","d7e3bc","ccc1d9","b7dde8","fbd5b5","ffe694","bfbfbf","3f3f3f","938953","548dd4","95b3d7","d99694","c3d69b","b2a2c7","b7dde8","fac08f","f2c314","a5a5a5","262626","494429","17365d","366092","953734","76923c","5f497a","92cddc","e36c09","c09100","7f7f7f","0c0c0c","1d1b10","0f243e","244061","632423","4f6128","3f3151","31859b","974806","7f6000"]};o.extend(!0,o.trumbowyg,{plugins:{color:{init:function(o){o.o.plugins.colors=o.o.plugins.colors||a;var r={dropdown:c("foreColor",o)},e={dropdown:c("backColor",o)};o.addBtnDef("foreColor",r),o.addBtnDef("backColor",e)},tagHandler:f}}})}(jQuery);
|
data/app/assets/javascripts/activeadmin/trumbowyg/plugins/colors/ui/sass/trumbowyg.colors.scss
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trumbowyg v2.8.1 - A lightweight WYSIWYG editor
|
|
3
|
+
* Default stylesheet for Trumbowyg editor plugin
|
|
4
|
+
* ------------------------
|
|
5
|
+
* @link http://alex-d.github.io/Trumbowyg
|
|
6
|
+
* @license MIT
|
|
7
|
+
* @author Alexandre Demode (Alex-D)
|
|
8
|
+
* Twitter : @AlexandreDemode
|
|
9
|
+
* Website : alex-d.fr
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
.trumbowyg-dropdown-foreColor,
|
|
13
|
+
.trumbowyg-dropdown-backColor {
|
|
14
|
+
width: 276px;
|
|
15
|
+
padding: 7px 5px;
|
|
16
|
+
|
|
17
|
+
svg {
|
|
18
|
+
display: none !important;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
button {
|
|
22
|
+
display: block;
|
|
23
|
+
position: relative;
|
|
24
|
+
float: left;
|
|
25
|
+
text-indent: -9999px;
|
|
26
|
+
height: 20px;
|
|
27
|
+
width: 20px;
|
|
28
|
+
border: 1px solid #333;
|
|
29
|
+
padding: 0;
|
|
30
|
+
margin: 2px;
|
|
31
|
+
|
|
32
|
+
&:hover,
|
|
33
|
+
&:focus {
|
|
34
|
+
&::after {
|
|
35
|
+
content: " ";
|
|
36
|
+
display: block;
|
|
37
|
+
position: absolute;
|
|
38
|
+
top: -5px;
|
|
39
|
+
left: -5px;
|
|
40
|
+
height: 27px;
|
|
41
|
+
width: 27px;
|
|
42
|
+
background: inherit;
|
|
43
|
+
border: 1px solid #FFF;
|
|
44
|
+
box-shadow: #000 0 0 2px;
|
|
45
|
+
z-index: 10;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trumbowyg v2.8.1 - A lightweight WYSIWYG editor
|
|
3
|
+
* Trumbowyg plugin stylesheet
|
|
4
|
+
* ------------------------
|
|
5
|
+
* @link http://alex-d.github.io/Trumbowyg
|
|
6
|
+
* @license MIT
|
|
7
|
+
* @author Alexandre Demode (Alex-D)
|
|
8
|
+
* Twitter : @AlexandreDemode
|
|
9
|
+
* Website : alex-d.fr
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
.trumbowyg-dropdown-foreColor,
|
|
13
|
+
.trumbowyg-dropdown-backColor {
|
|
14
|
+
width: 276px;
|
|
15
|
+
padding: 7px 5px; }
|
|
16
|
+
.trumbowyg-dropdown-foreColor svg,
|
|
17
|
+
.trumbowyg-dropdown-backColor svg {
|
|
18
|
+
display: none !important; }
|
|
19
|
+
.trumbowyg-dropdown-foreColor button,
|
|
20
|
+
.trumbowyg-dropdown-backColor button {
|
|
21
|
+
display: block;
|
|
22
|
+
position: relative;
|
|
23
|
+
float: left;
|
|
24
|
+
text-indent: -9999px;
|
|
25
|
+
height: 20px;
|
|
26
|
+
width: 20px;
|
|
27
|
+
border: 1px solid #333;
|
|
28
|
+
padding: 0;
|
|
29
|
+
margin: 2px; }
|
|
30
|
+
.trumbowyg-dropdown-foreColor button:hover::after, .trumbowyg-dropdown-foreColor button:focus::after,
|
|
31
|
+
.trumbowyg-dropdown-backColor button:hover::after,
|
|
32
|
+
.trumbowyg-dropdown-backColor button:focus::after {
|
|
33
|
+
content: " ";
|
|
34
|
+
display: block;
|
|
35
|
+
position: absolute;
|
|
36
|
+
top: -5px;
|
|
37
|
+
left: -5px;
|
|
38
|
+
height: 27px;
|
|
39
|
+
width: 27px;
|
|
40
|
+
background: inherit;
|
|
41
|
+
border: 1px solid #FFF;
|
|
42
|
+
box-shadow: #000 0 0 2px;
|
|
43
|
+
z-index: 10; }
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
/** Trumbowyg v2.8.1 - A lightweight WYSIWYG editor - alex-d.github.io/Trumbowyg - License MIT - Author : Alexandre Demode (Alex-D) / alex-d.fr */
|
|
2
|
+
.trumbowyg-dropdown-backColor,.trumbowyg-dropdown-foreColor{width:276px;padding:7px 5px}.trumbowyg-dropdown-backColor svg,.trumbowyg-dropdown-foreColor svg{display:none!important}.trumbowyg-dropdown-backColor button,.trumbowyg-dropdown-foreColor button{display:block;position:relative;float:left;text-indent:-9999px;height:20px;width:20px;border:1px solid #333;padding:0;margin:2px}.trumbowyg-dropdown-backColor button:focus::after,.trumbowyg-dropdown-backColor button:hover::after,.trumbowyg-dropdown-foreColor button:focus::after,.trumbowyg-dropdown-foreColor button:hover::after{content:" ";display:block;position:absolute;top:-5px;left:-5px;height:27px;width:27px;background:inherit;border:1px solid #FFF;box-shadow:#000 0 0 2px;z-index:10}
|