diff --git a/resources/assets/js/vendor/trumbowyg/langs/ar.min.js b/resources/assets/js/vendor/trumbowyg/langs/ar.min.js
new file mode 100644
index 00000000..0f83dd37
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/ar.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * ar.js
+ * Arabic translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Abo Mokh ahmed (abomokhahmed)
+ * Github : https://github.com/abomokhahmed
+ */
+jQuery.trumbowyg.langs.ar={_dir:"rtl",viewHTML:"إعرض-HTML",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:"نصّ"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/ca.min.js b/resources/assets/js/vendor/trumbowyg/langs/ca.min.js
new file mode 100644
index 00000000..f6cf1f24
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/ca.min.js
@@ -0,0 +1,11 @@
+/* ===========================================================
+ * ca.js
+ * Catalan translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Àlfons Sánchez (alsanan)
+ * Twitter : @alsanan
+ * Website : about.me/alsanan
+ * Github : https://github.com/alsanan
+ */
+jQuery.trumbowyg.langs.ca={viewHTML:"Veure HTML",formatting:"Formatar",p:"Paragraf",blockquote:"Citació",code:"Codi",header:"Títol",bold:"Negreta",italic:"Itàlica",strikethrough:"Suprimir",underline:"Subratllat",strong:"Forta",em:"Èmfasi",del:"Apagar",unorderedList:"Lista desordenada",orderedList:"Lista ordenada",insertImage:"Inserir imatge",insertVideo:"Inserir vídeo",link:"Enllaç",createLink:"Crear un enllaç",unlink:"Eliminar enllaç",justifyLeft:"Alinear a esquerra",justifyCenter:"Centrar",justifyRight:"Alinear a dreta",justifyFull:"Justificar",horizontalRule:"Inserir separador horitzontal",fullscreen:"Pantalla completa",close:"Tancar",submit:"Enviar",reset:"Reiniciar",required:"Obligatori",description:"Descripció",title:"Títol",text:"Text"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/cs.min.js b/resources/assets/js/vendor/trumbowyg/langs/cs.min.js
new file mode 100644
index 00000000..0666e151
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/cs.min.js
@@ -0,0 +1,8 @@
+/* ===========================================================
+ * cs.js
+ * Czech translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Jan Svoboda (https://github.com/svoboda-jan)
+ */
+jQuery.trumbowyg.langs.cs={viewHTML:"Zobrazit HTML",formatting:"Formátování",p:"Odstavec",blockquote:"Citace",code:"Kód",header:"Nadpis",bold:"Tučné",italic:"Kurzíva",strikethrough:"Přeškrtnuté",underline:"Podtržené",strong:"Tučné",em:"Zvýraznit",del:"Smazat",unorderedList:"Netříděný seznam",orderedList:"Tříděný seznam",insertImage:"Vložit obrázek",insertVideo:"Vložit video",link:"Odkaz",createLink:"Vložit odkaz",unlink:"Smazat odkaz",justifyLeft:"Zarovnat doleva",justifyCenter:"Zarovnat na střed",justifyRight:"Zarovnat doprava",justifyFull:"Zarovnat do bloku",horizontalRule:"Vložit vodorovnou čáru",fullscreen:"Režim celé obrazovky",close:"Zavřít",submit:"Potvrdit",reset:"Zrušit",required:"Povinné",description:"Popis",title:"Nadpis",text:"Text"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/da.min.js b/resources/assets/js/vendor/trumbowyg/langs/da.min.js
new file mode 100644
index 00000000..47adf1a2
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/da.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * da.js
+ * Danish translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Christian Pedersen
+ * Github : https://github.com/chripede
+ */
+jQuery.trumbowyg.langs.da={viewHTML:"Vis HTML",formatting:"Formatter",p:"Afsnit",blockquote:"Citat",code:"Kode",header:"Overskrift",bold:"Fed",italic:"Kursiv",strikethrough:"Gennemstreg",underline:"Understreg",strong:"Vigtig",em:"Fremhæv",del:"Slettet",unorderedList:"Uordnet liste",orderedList:"Ordnet liste",insertImage:"Indsæt billede",insertVideo:"Indsæt video",link:"Link",createLink:"Indsæt link",unlink:"Fjern link",justifyLeft:"Venstrestil",justifyCenter:"Centrer",justifyRight:"Højrestil",justifyFull:"Lige margener",horizontalRule:"Horisontal linie",fullscreen:"Fuld skærm",close:"Luk",submit:"Bekræft",reset:"Annuller",required:"Påkrævet",description:"Beskrivelse",title:"Titel",text:"Tekst"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/de.min.js b/resources/assets/js/vendor/trumbowyg/langs/de.min.js
new file mode 100644
index 00000000..15e3ae02
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/de.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * de.js
+ * German translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Manfred Timm
+ * Github : https://github.com/Manfred62
+ */
+jQuery.trumbowyg.langs.de={viewHTML:"HTML anzeigen",formatting:"Formatieren",p:"Absatz",blockquote:"Zitat",code:"Code",header:"Überschrift",bold:"Fett",italic:"Kursiv",strikethrough:"Durchgestrichen",underline:"Unterstrichen",strong:"Wichtig",em:"Betont",del:"Gelöscht",unorderedList:"Ungeordnete Liste",orderedList:"Geordnete Liste",insertImage:"Bild einfügen",insertVideo:"Video einfügen",link:"Link",createLink:"Link einfügen",unlink:"Link entfernen",justifyLeft:"Links ausrichten",justifyCenter:"Zentrieren",justifyRight:"Rechts ausrichten",justifyFull:"Blocksatz",horizontalRule:"Horizontale Linie einfügen",fullscreen:"Vollbild",close:"Schliessen",submit:"Bestätigen",reset:"Rücksetzen",required:"Erforderlich",description:"Beschreibung",title:"Titel",text:"Text"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/el.min.js b/resources/assets/js/vendor/trumbowyg/langs/el.min.js
new file mode 100644
index 00000000..e47c5a38
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/el.min.js
@@ -0,0 +1,12 @@
+/* ===========================================================
+ * el.js
+ * Greek translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Merianos Nikos
+ * Twitter : @_webresources
+ * Website : http://www.wp-lion.com
+ * LinkedIn: https://gr.linkedin.com/in/merianosnikos
+ * Behance: https://www.behance.net/web_design_blog
+ */
+jQuery.trumbowyg.langs.es={viewHTML:"Προβολή κώδικα HTML",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:"Επαναφορά",invalidUrl:"Λανθασμένο URL",required:"Απαραίτητο",description:"Περιγραφή",title:"Τίτλος",text:"Κείμενο"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/es.min.js b/resources/assets/js/vendor/trumbowyg/langs/es.min.js
new file mode 100644
index 00000000..da16ed52
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/es.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * es.js
+ * Spanish translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Moisés Márquez
+ * Email : moises.marquez.g@gmail.com
+ */
+jQuery.trumbowyg.langs.es={viewHTML:"Ver HTML",formatting:"Formato",p:"Párrafo",blockquote:"Cita",code:"Código",header:"Título",bold:"Negrita",italic:"Cursiva",strikethrough:"Tachado",underline:"Subrayado",strong:"Negrita",em:"Énfasis",del:"Borrar",unorderedList:"Lista Desordenada",orderedList:"Lista Ordenada",insertImage:"Insertar una imagen",insertVideo:"Insertar un vídeo",link:"Enlace",createLink:"Insertar un enlace",unlink:"Suprimir un enlace",justifyLeft:"Izquierda",justifyCenter:"Centrar",justifyRight:"Derecha",justifyFull:"Justificado",horizontalRule:"Insertar separador horizontal",fullscreen:"Pantalla completa",close:"Cerrar",submit:"Enviar",reset:"Cancelar",required:"Obligatorio",description:"Descripción",title:"Título",text:"Texto"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/es_ar.min.js b/resources/assets/js/vendor/trumbowyg/langs/es_ar.min.js
new file mode 100644
index 00000000..0d4ed99a
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/es_ar.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * es_ar.js
+ * Spanish (Argentina) translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Félix Vera
+ * Email : felix.vera@gmail.com
+ */
+jQuery.trumbowyg.langs.es_ar={viewHTML:"Ver HTML",formatting:"Formato",p:"Párrafo",blockquote:"Cita",code:"Código",header:"Título",bold:"Negrita",italic:"Itálica",strikethrough:"Tachado",underline:"Subrayado",strong:"Fuere",em:"Énfasis",del:"Borrar",unorderedList:"Lista Desordenada",orderedList:"Lista Ordenada",insertImage:"Insertar una imagen",insertVideo:"Insertar un video",link:"Vínculo",createLink:"Insertar un vínculo",unlink:"Suprimir un vínculo",justifyLeft:"Alinear a la Izquierda",justifyCenter:"Centrar",justifyRight:"Alinear a la Derecha",justifyFull:"Justificado",horizontalRule:"Insertar separado Horizontal",fullscreen:"Pantalla Completa",close:"Cerrar",submit:"Enviar",reset:"Cancelar",required:"Obligatorio",description:"Descripción",title:"Título",text:"Texto"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/fa.min.js b/resources/assets/js/vendor/trumbowyg/langs/fa.min.js
new file mode 100644
index 00000000..c3f9843c
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/fa.min.js
@@ -0,0 +1,10 @@
+/* ===========================================================
+ * fa.js
+ * Persian translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Kiarash Soleimanzadeh
+ * Github : https://github.com/kiyarash
+ * Email : kiarash.s@hotmail.com
+ */
+jQuery.trumbowyg.langs.fa={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:"متن"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/fi.min.js b/resources/assets/js/vendor/trumbowyg/langs/fi.min.js
new file mode 100644
index 00000000..e6dde022
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/fi.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * fi.js
+ * Finnish translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Teppo Koivula (teppokoivula)
+ * Github : https://github.com/teppokoivula
+ */
+jQuery.trumbowyg.langs.fi={viewHTML:"Näytä HTML",formatting:"Muotoilu",p:"Kappale",blockquote:"Lainaus",code:"Koodi",header:"Otsikko",bold:"Lihavointi",italic:"Kursivointi",strikethrough:"Yliviivaus",underline:"Allevivaus",strong:"Vahvennus",em:"Painotus",del:"Poistettu",unorderedList:"Numeroimaton lista",orderedList:"Numeroitu lista",insertImage:"Lisää kuva",insertVideo:"Lisää video",link:"Linkki",createLink:"Luo linkki",unlink:"Poista linkki",justifyLeft:"Asemoi vasemmalle",justifyCenter:"Keskitä",justifyRight:"Asemoi oikealle",justifyFull:"Tasaa",horizontalRule:"Vaakaviiva",fullscreen:"Kokoruutu",close:"Sulje",submit:"Lähetä",reset:"Palauta",required:"Pakollinen",description:"Kuvaus",title:"Otsikko",text:"Teksti"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/fr.min.js b/resources/assets/js/vendor/trumbowyg/langs/fr.min.js
new file mode 100644
index 00000000..7274d757
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/fr.min.js
@@ -0,0 +1,10 @@
+/* ===========================================================
+ * fr.js
+ * French translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+jQuery.trumbowyg.langs.fr={viewHTML:"Voir le HTML",formatting:"Format",p:"Paragraphe",blockquote:"Citation",code:"Code",header:"Titre",bold:"Gras",italic:"Italique",strikethrough:"Rayé",underline:"Souligné",strong:"Fort",em:"Emphase",del:"Supprimé",unorderedList:"Liste à puces",orderedList:"Liste ordonnée",insertImage:"Insérer une image",insertVideo:"Insérer une video",link:"Lien",createLink:"Insérer un lien",unlink:"Supprimer le lien",justifyLeft:"Aligner à gauche",justifyCenter:"Centrer",justifyRight:"Aligner à droite",justifyFull:"Justifier",horizontalRule:"Insérer un séparateur horizontal",fullscreen:"Plein écran",close:"Fermer",submit:"Valider",reset:"Annuler",required:"Obligatoire",description:"Description",title:"Titre",text:"Texte"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/he.min.js b/resources/assets/js/vendor/trumbowyg/langs/he.min.js
new file mode 100644
index 00000000..a706ecd0
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/he.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+* he.js
+* Hebrew translation for Trumbowyg
+* http://alex-d.github.com/Trumbowyg
+* ===========================================================
+* Author : Udi Doron (udidoron)
+* Github : https://github.com/udidoron
+*/
+jQuery.trumbowyg.langs.he={_dir:"rtl",viewHTML:"צפה ב-HTML",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:"טקסט"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/hu.min.js b/resources/assets/js/vendor/trumbowyg/langs/hu.min.js
new file mode 100644
index 00000000..92c464ee
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/hu.min.js
@@ -0,0 +1,10 @@
+/* ===========================================================
+ * hu.js
+ * Hungarian translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Peter MATO
+ * Web: http://fixme.hu
+ * GitHub: https://github.com/matopeter
+ */
+jQuery.trumbowyg.langs.hu={viewHTML:"HTML nézet",formatting:"Stílusok",p:"Bekezdés",blockquote:"Idézet",code:"Kód",header:"Címsor",bold:"Félkövér",italic:"Dőlt",strikethrough:"Áthúzott",underline:"Aláhúzott",strong:"Vastag",em:"Kiemelt",del:"Törölt",unorderedList:"Felsorolás",orderedList:"Számozás",insertImage:"Kép beszúrása",insertVideo:"Video beszúrása",link:"Link",createLink:"Link létrehozása",unlink:"Link eltávolítása",justifyLeft:"Balra igazítás",justifyCenter:"Középre igazítás",justifyRight:"Jobbra igazítás",justifyFull:"Sorkizárt",horizontalRule:"Vízszintes vonal",fullscreen:"Teljes képernyő",close:"Bezár",submit:"Beküldés",reset:"Alaphelyzet",required:"Kötelező",description:"Leírás",title:"Cím",text:"Szöveg",removeformat:"Formázás eltávolítása"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/id.min.js b/resources/assets/js/vendor/trumbowyg/langs/id.min.js
new file mode 100644
index 00000000..418fc885
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/id.min.js
@@ -0,0 +1,11 @@
+/* ===========================================================
+ * id.js
+ * Indonesian translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Rezha Julio (kimiamania)
+ * Twitter : @kimiamania
+ * Website : http://rezhajulio.web.id
+ * Github : https://github.com/kimiamania
+ */
+jQuery.trumbowyg.langs.id={viewHTML:"Lihat HTML",formatting:"Penyusunan",p:"Paragraf",blockquote:"Kutipan",code:"Kode",header:"Kepala",bold:"Tebal",italic:"Miring",strikethrough:"Coret",underline:"Garis bawah",strong:"Tebal",em:"Miring",del:"Dicoret",unorderedList:"Daftar tak teratur",orderedList:"Daftar teratur",insertImage:"Sisipkan gambar",insertVideo:"Sisipkan video",link:"Tautan",createLink:"Sisipkan Tautan",unlink:"Singkirkan tautan",justifyLeft:"Rata kiri",justifyCenter:"Rata Tengah",justifyRight:"Rata kanan",justifyFull:"Rata kiri dan kanan",horizontalRule:"Sisipkan garis mendatar",fullscreen:"Layar penuh",close:"Tutup",submit:"Setuju",reset:"Batal",required:"Diperlukan",description:"Deskripsi",title:"Judul",text:"Teks"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/it.min.js b/resources/assets/js/vendor/trumbowyg/langs/it.min.js
new file mode 100644
index 00000000..da7fd4b0
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/it.min.js
@@ -0,0 +1,8 @@
+/* ===========================================================
+ * it.js
+ * Italian translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Mirko Buffoni
+ */
+jQuery.trumbowyg.langs.it={viewHTML:"Mostra HTML",formatting:"Formattazione",p:"Paragrafo",blockquote:"Citazione",code:"Codice",header:"Intestazione",bold:"Grassetto",italic:"Italico",strikethrough:"Barrato",underline:"Sottolineato",strong:"Rafforza",em:"Enfatizza",del:"Cancella",unorderedList:"Elenco puntato",orderedList:"Elenco numerato",insertImage:"Inserisci immagine",insertVideo:"Inserisci video",link:"Collegamento",createLink:"Crea un collegamento",unlink:"Elimina collegamento",justifyLeft:"Allinea a sinistra",justifyCenter:"Centra",justifyRight:"Allinea a destra",justifyFull:"Giustifica",horizontalRule:"Inserisci un separatore orizzontale",fullscreen:"Schermo intero",close:"Chiudi",submit:"Invia",reset:"Annulla",required:"Obbligatorio",description:"Descrizione",title:"Titolo",text:"Testo"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/ja.min.js b/resources/assets/js/vendor/trumbowyg/langs/ja.min.js
new file mode 100644
index 00000000..ff34a2f0
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/ja.min.js
@@ -0,0 +1,10 @@
+/* ===========================================================
+ * ja.js
+ * Japanese translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Kouta Fukuhara (foo9)
+ * Twitter : @foo9
+ * Website : https://github.com/foo9
+ */
+jQuery.trumbowyg.langs.ja={viewHTML:"HTML表示",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:"テキスト"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/ko.min.js b/resources/assets/js/vendor/trumbowyg/langs/ko.min.js
new file mode 100644
index 00000000..76e9c248
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/ko.min.js
@@ -0,0 +1,10 @@
+/* ===========================================================
+ * ko.js
+ * Korean translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : JoongSeob Vito Kim (dorajistyle)
+ * Blog : http://dorajistyle.pe.kr
+ * Github : https://github.com/dorajistyle
+ */
+jQuery.trumbowyg.langs.ko={viewHTML:"HTML로 보기",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:"본문 내용"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/my.min.js b/resources/assets/js/vendor/trumbowyg/langs/my.min.js
new file mode 100644
index 00000000..8dda5931
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/my.min.js
@@ -0,0 +1,8 @@
+/* ===========================================================
+ * my.js
+ * Malaysian translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : JohnPozy
+ */
+jQuery.trumbowyg.langs.id={viewHTML:"Lihat HTML",formatting:"Pemformatan",p:"Perenggan",blockquote:"Blockquote",code:"Kod",header:"Pengepala",bold:"Tebal",italic:"Condong",strikethrough:"Garis batal",underline:"Garis bawah",strong:"Kuat",em:"Condong",del:"Hapus",unorderedList:"Senarai tidak tertib",orderedList:"Senarai tertib",insertImage:"Masukkan imej",insertVideo:"Masukkan video",link:"Pautan",createLink:"Cipta pautan",unlink:"Hapus pautan",justifyLeft:"Mengimbangkan ke kiri",justifyCenter:"Mengimbangkan ke tengah",justifyRight:"Mengimbangkan ke kanan",justifyFull:"Mengimbangkan ke kiri dan kanan",horizontalRule:"Masukkan garis mendatar",fullscreen:"Skrin penuh",close:"Tutup",submit:"Hantar",reset:"Batal",required:"Diperlukan",description:"Perihal",title:"Tajuk",text:"Teks"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/nl.min.js b/resources/assets/js/vendor/trumbowyg/langs/nl.min.js
new file mode 100644
index 00000000..ddd7b1bd
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/nl.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * nl.js
+ * Dutch translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Danny Hiemstra
+ * Github : https://github.com/dhiemstra
+ */
+jQuery.trumbowyg.langs.nl={viewHTML:"HTML bekijken",formatting:"Opmaak",p:"Paragraaf",blockquote:"Citaat",code:"Code",header:"Kop",bold:"Vet",italic:"Cursief",strikethrough:"Doorhalen",underline:"Onderlijnen",strong:"Sterk",em:"Nadruk",del:"Verwijderd",unorderedList:"Ongenummerde lijst",orderedList:"Genummerde lijst",insertImage:"Afbeelding invoegen",insertVideo:"Video invoegen",link:"Link",createLink:"Link maken",unlink:"Link verwijderen",justifyLeft:"Links uitlijnen",justifyCenter:"Centreren",justifyRight:"Rechts uitlijnen",justifyFull:"Uitvullen",horizontalRule:"Horizontale lijn",removeFormat:"Opmaak verwijderen",fullscreen:"Volledig scherm",close:"Sluiten",submit:"Verzenden",reset:"Herstellen",required:"Verplicht",description:"Omschrijving",title:"Titel",text:"Tekst"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/pl.min.js b/resources/assets/js/vendor/trumbowyg/langs/pl.min.js
new file mode 100644
index 00000000..7d7a436a
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/pl.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * pl.js
+ * Polish translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Paweł Abramowicz
+ * Github : https://github.com/pawelabrams
+ */
+jQuery.trumbowyg.langs.pl={viewHTML:"Pokaż HTML",formatting:"Format",p:"Akapit",blockquote:"Cytat",code:"Kod",header:"Nagłówek",bold:"Pogrubienie",italic:"Pochylenie",strikethrough:"Przekreślenie",underline:"Podkreślenie",strong:"Wytłuszczenie",em:"Uwydatnienie",del:"Usunięte",unorderedList:"Lista nieuporządkowana",orderedList:"Lista uporządkowana",insertImage:"Wstaw obraz",insertVideo:"Wstaw film",link:"Link",createLink:"Wstaw link",unlink:"Usuń link",justifyLeft:"Wyrównaj do lewej",justifyCenter:"Wyśrodkuj",justifyRight:"Wyrównaj do prawej",justifyFull:"Wyjustuj",horizontalRule:"Odkreśl linią",fullscreen:"Pełny ekran",close:"Zamknij",submit:"Zastosuj",reset:"Przywróć",required:"Wymagane",description:"Opis",title:"Tytuł",text:"Tekst"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/pt.min.js b/resources/assets/js/vendor/trumbowyg/langs/pt.min.js
new file mode 100644
index 00000000..462fda3a
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/pt.min.js
@@ -0,0 +1,11 @@
+/* ===========================================================
+ * pt.js
+ * Portuguese translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Ramiro Varandas Jr (ramirovjr)
+ * Twitter : @ramirovjnr
+ * Website : about.me/ramirovjnr
+ * Github : https://github.com/ramirovjr
+ */
+jQuery.trumbowyg.langs.pt={viewHTML:"Ver HTML",formatting:"Formatar",p:"Paragráfo",blockquote:"Citação",code:"Código",header:"Título",bold:"Negrito",italic:"Itálico",strikethrough:"Suprimir",underline:"Sublinhado",strong:"Forte",em:"Ênfase",del:"Apagar",unorderedList:"Lista não ordenada",orderedList:"Liste ordenada",insertImage:"Inserir imagem",insertVideo:"Inserir vídeo",link:"Link",createLink:"Criar um link",unlink:"Remover link",justifyLeft:"Alinhar a esquerda",justifyCenter:"Centralizar",justifyRight:"Alinhar a direita",justifyFull:"Justificar",horizontalRule:"Inserir separador horizontal",fullscreen:"Tela cheia",close:"Fechar",submit:"Enviar",reset:"Limpar",required:"Obrigatório",description:"Descrição",title:"Título",text:"Texto"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/ro.min.js b/resources/assets/js/vendor/trumbowyg/langs/ro.min.js
new file mode 100644
index 00000000..b3c4528b
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/ro.min.js
@@ -0,0 +1,12 @@
+/* ===========================================================
+ * ro.js
+ * Romanian translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Vladut Radulescu (pacMakaveli)
+ * Email: pacMakaveli90@gmail.com
+ * Twitter : @pacMakaveli90
+ * Website : creative-studio51.co.uk
+ * Github : https://github.com/pacMakaveli
+ */
+jQuery.trumbowyg.langs.pt={viewHTML:"Vizualizare HTML",formatting:"Format",p:"Paragraf",blockquote:"Citație",code:"Cod",header:"Titlu",bold:"Bold",italic:"Italic",strikethrough:"Tăiat",underline:"Subliniat",strong:"Puternic",em:"Accentuat",del:"Sterge",unorderedList:"Lista dezordonată",orderedList:"Liste ordonată",insertImage:"Adăugare Imagine",insertVideo:"Adăugare Video",link:"Link",createLink:"Crează link",unlink:"Remover link",justifyLeft:"Aliniază stânga",justifyCenter:"Aliniază centru",justifyRight:"Aliniază dreapta",justifyFull:"Justificare",horizontalRule:"Linie orizontală",fullscreen:"Tot ecranul",close:"Închide",submit:"Procesează",reset:"Resetează",required:"Obligatoriu",description:"Descriere",title:"Titlu",text:"Text"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/rs.min.js b/resources/assets/js/vendor/trumbowyg/langs/rs.min.js
new file mode 100644
index 00000000..f591173a
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/rs.min.js
@@ -0,0 +1,8 @@
+/* ===========================================================
+ * rs.js
+ * Serbian (Cyrlic) translation for Trumbowyg
+ * https://www.github.com/johonunu
+ * ===========================================================
+ * Author : Nikola Trifunovic (https://www.github.com/johonunu)
+ */
+jQuery.trumbowyg.langs.rs={viewHTML:"Погледај HTML кóд",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:"Обавезно поље",invalidUrl:"URL",description:"Опис",title:"Наслов",text:"Текст"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/rs_latin.min.js b/resources/assets/js/vendor/trumbowyg/langs/rs_latin.min.js
new file mode 100644
index 00000000..9fe81099
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/rs_latin.min.js
@@ -0,0 +1,8 @@
+/* ===========================================================
+ * rs_latin.js
+ * Serbian (Latin) translation for Trumbowyg
+ * https://www.github.com/johonunu
+ * ===========================================================
+ * Author : Nikola Trifunovic (https://www.github.com/johonunu)
+ */
+jQuery.trumbowyg.langs.rs_latin={viewHTML:"Poglеdaj HTML kód",formatting:"Formatiranjе",p:"Paragraf",blockquote:"Citat",code:"Kód",header:"Naslov",bold:"Podеbljano",italic:"Kurziv",strikethrough:"Prеcrtano",underline:"Podvučеno",strong:"Podеbljano",em:"Istaknuto",del:"Obrisano",unorderedList:"Nеnabrojiva lista",orderedList:"Nabrojiva lista",insertImage:"Unеsi sliku",insertVideo:"Unеsi vidеo",link:"Link",createLink:"Unеsi link",unlink:"Ukloni link",justifyLeft:"Lеvo ravnanjе",justifyCenter:"Cеntralno ravnanjе",justifyRight:"Dеsno ravnanjе",justifyFull:"Obostrano ravnanjе",horizontalRule:"Horizontalna linija",fullscreen:"Rеžim čitavog еkrana",close:"Zatvori",submit:"Unеsi",reset:"Otkaži",required:"Obavеzno poljе",invalidUrl:"URL",description:"Opis",title:"Naslov",text:"Tеkst"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/ru.min.js b/resources/assets/js/vendor/trumbowyg/langs/ru.min.js
new file mode 100644
index 00000000..8132efea
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/ru.min.js
@@ -0,0 +1,8 @@
+/* ===========================================================
+ * ru.js
+ * Russion translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Yuri Lya
+ */
+jQuery.trumbowyg.langs.ru={viewHTML:"Посмотреть HTML",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:"Текст"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/sk.min.js b/resources/assets/js/vendor/trumbowyg/langs/sk.min.js
new file mode 100644
index 00000000..cb74fd2a
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/sk.min.js
@@ -0,0 +1,8 @@
+/* ===========================================================
+ * sk.js
+ * Slovak translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : VeeeneX (https://github.com/VeeeneX)
+ */
+jQuery.trumbowyg.langs.sk={viewHTML:"Zobraziť HTML",formatting:"Formátovanie",p:"Paragraf",blockquote:"Citácia",code:"Kód",header:"Nadpis",bold:"Tučné",italic:"Kurzíva",strikethrough:"Preškrtnuté",underline:"Podčiarknuté",strong:"Tučné",em:"Zvýrazniť",del:"Zmazať",unorderedList:"Netriedený zoznam",orderedList:"Triedený zoznam",insertImage:"Vložiť obrázok",insertVideo:"Vložiť video",link:"Odkaz",createLink:"Vložiť odkaz",unlink:"Zmazať odkaz",justifyLeft:"Zarovnať doľava",justifyCenter:"Zarovnať na stred",justifyRight:"Zarovnať doprava",justifyFull:"Zarovnať do bloku",horizontalRule:"Vložit vodorovnú čiaru",fullscreen:"Režim celej obrazovky",close:"Zavrieť",submit:"Potvrdiť",reset:"Zrušiť",required:"Povinné",description:"Popis",title:"Nadpis",text:"Text"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/sv.min.js b/resources/assets/js/vendor/trumbowyg/langs/sv.min.js
new file mode 100644
index 00000000..78d73280
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/sv.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * sv.js
+ * Swedish translation for Trumbowyg
+ * http://www.tim-international.net
+ * ===========================================================
+ * Author : T. Almroth
+ * Github : https://github.com/timint
+ */
+jQuery.trumbowyg.langs.sv={viewHTML:"Visa HTML",formatting:"Formatera",p:"Avsnitt",blockquote:"Citat",code:"Kod",header:"Överskrift",bold:"Fet",italic:"Kursiv",strikethrough:"Genomstruken",underline:"Understreck",strong:"Viktig",em:"Framhäv",del:"Rensa formatering",unorderedList:"Lista",orderedList:"Numrerad lista",insertImage:"Infoga bild",insertVideo:"Infoga video",link:"Länk",createLink:"Infoga länk",unlink:"Ta bort länk",justifyLeft:"Vänsterjustera",justifyCenter:"Centrera",justifyRight:"Högerjustera",justifyFull:"Marginaljustera",horizontalRule:"Horisontell linje",fullscreen:"Fullskärm",close:"Stäng",submit:"Bekräfta",reset:"Återställ",required:"Obligatorisk",description:"Beskrivning",title:"Titel",text:"Text"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/tr.min.js b/resources/assets/js/vendor/trumbowyg/langs/tr.min.js
new file mode 100644
index 00000000..8d36ef21
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/tr.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * tr.js
+ * Turkish translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Emrah Bilbay (munzur)
+ * Github : https://github.com/munzur
+ */
+jQuery.trumbowyg.langs.tr={viewHTML:"HTML Kodu",formatting:"Biçimlendirme",p:"Paragraf",blockquote:"Alıntı",code:"Kod",header:"Başlık",bold:"Kalın",italic:"İtalik",strikethrough:"Üzeri çizgili",underline:"Altı çizgili",strong:"Koyu",em:"Vurgulu",del:"Üzeri çizgili",unorderedList:"Simgeli liste",orderedList:"Numaralı liste",insertImage:"Resim yerleştir",insertVideo:"Video yerleştir",link:"Link",createLink:"Link yerleştir",unlink:"Linki sil",justifyLeft:"Sola hizala",justifyCenter:"Ortaya hizala",justifyRight:"Sağa hizala",justifyFull:"Yasla",horizontalRule:"Yatay satır ekle",fullscreen:"Tam ekran",close:"Kapat",submit:"Onayla",reset:"Sıfırla",required:"Gerekli",description:"Açıklama",title:"Başlık",text:"Metin"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/ua.min.js b/resources/assets/js/vendor/trumbowyg/langs/ua.min.js
new file mode 100644
index 00000000..dab81062
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/ua.min.js
@@ -0,0 +1,8 @@
+/* ===========================================================
+ * ua.js
+ * Ukrainian translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Igor Buksha
+ */
+jQuery.trumbowyg.langs.ua={viewHTML:"Подивитись HTML",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:"Текст"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/vi.min.js b/resources/assets/js/vendor/trumbowyg/langs/vi.min.js
new file mode 100644
index 00000000..96734f30
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/vi.min.js
@@ -0,0 +1,9 @@
+/* ===========================================================
+ * vi.js
+ * Vietnamese translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : heocoi
+ * Github: https://github.com/heocoi
+ */
+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"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/zh_cn.min.js b/resources/assets/js/vendor/trumbowyg/langs/zh_cn.min.js
new file mode 100644
index 00000000..0f4c13d1
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/zh_cn.min.js
@@ -0,0 +1,10 @@
+/* ===========================================================
+ * zh_cn.js
+ * Simplified Chinese translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Liu Kai (akai)
+ * Twitter : @akai404
+ * Github : https://github.com/akai
+ */
+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:"文字"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/langs/zh_tw.min.js b/resources/assets/js/vendor/trumbowyg/langs/zh_tw.min.js
new file mode 100644
index 00000000..1f5b1d9a
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/langs/zh_tw.min.js
@@ -0,0 +1,10 @@
+/* ===========================================================
+ * zh_tw.js
+ * Traditional Chinese translation for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Peter Dave Hello (PeterDaveHello)
+ * Twitter : @PeterDaveHello
+ * Github : https://github.com/PeterDaveHello
+ */
+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:"文字"};
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/base64/trumbowyg.base64.js b/resources/assets/js/vendor/trumbowyg/plugins/base64/trumbowyg.base64.js
new file mode 100644
index 00000000..fd7fef3c
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/base64/trumbowyg.base64.js
@@ -0,0 +1,81 @@
+/* ===========================================================
+ * trumbowyg.base64.js v1.0
+ * Base64 plugin for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Cyril Biencourt (lizardK)
+ */
+
+(function ($) {
+ 'use strict';
+
+ $.extend(true, $.trumbowyg, {
+ langs: {
+ en: {
+ base64: 'Image as base64',
+ file: 'File',
+ errFileReaderNotSupported: 'FileReader is not supported by your browser.'
+ },
+ fr: {
+ base64: 'Image en base64',
+ file: 'Fichier'
+ },
+ cs: {
+ base64: 'Vložit obrázek',
+ file: 'Soubor'
+ }
+ },
+
+ opts: {
+ btnsDef: {
+ base64: {
+ isSupported: function () {
+ if (typeof FileReader === 'undefined') {
+ if (window.console !== undefined) {
+ console.err('[Trumbowyg - Plugin base64] FileReader is not supported by your browser.');
+ }
+ return false;
+ }
+ return true;
+ },
+ func: function (params, tbw) {
+ var file;
+ tbw.openModalInsert(
+ // Title
+ tbw.lang.base64,
+
+ // Fields
+ {
+ file: {
+ type: 'file',
+ required: true
+ },
+ alt: {
+ label: 'description'
+ }
+ },
+
+ // Callback
+ function (values) {
+ var fReader = new FileReader();
+
+ fReader.onloadend = function () {
+ tbw.execCmd('insertImage', fReader.result);
+ $(['img[src="', fReader.result, '"]:not([alt])'].join(''), tbw.$box).attr('alt', values.alt);
+ tbw.closeModal();
+ };
+
+ fReader.readAsDataURL(file);
+ }
+ );
+
+ $('input[type=file]').on('change', function (e) {
+ file = e.target.files[0];
+ });
+ },
+ ico: 'insertImage'
+ }
+ }
+ }
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/base64/trumbowyg.base64.min.js b/resources/assets/js/vendor/trumbowyg/plugins/base64/trumbowyg.base64.min.js
new file mode 100644
index 00000000..8ba7c172
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/base64/trumbowyg.base64.min.js
@@ -0,0 +1 @@
+!function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{base64:"Image as base64",file:"File",errFileReaderNotSupported:"FileReader is not supported by your browser."},fr:{base64:"Image en base64",file:"Fichier"},cs:{base64:"Vložit obrázek",file:"Soubor"}},opts:{btnsDef:{base64:{isSupported:function(){return"undefined"==typeof FileReader?(void 0!==window.console&&console.err("[Trumbowyg - Plugin base64] FileReader is not supported by your browser."),!1):!0},func:function(o,r){var n;r.openModalInsert(r.lang.base64,{file:{type:"file",required:!0},alt:{label:"description"}},function(o){var t=new FileReader;t.onloadend=function(){r.execCmd("insertImage",t.result),e(['img[src="',t.result,'"]:not([alt])'].join(""),r.$box).attr("alt",o.alt),r.closeModal()},t.readAsDataURL(n)}),e("input[type=file]").on("change",function(e){n=e.target.files[0]})},ico:"insertImage"}}}})}(jQuery);
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/trumbowyg.colors.js b/resources/assets/js/vendor/trumbowyg/plugins/colors/trumbowyg.colors.js
new file mode 100644
index 00000000..15c356b8
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/colors/trumbowyg.colors.js
@@ -0,0 +1,82 @@
+/* ===========================================================
+ * trumbowyg.colors.js v1.1
+ * Colors picker plugin for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+(function ($) {
+ 'use strict';
+
+ $.extend(true, $.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'
+ }
+ }
+ });
+
+ // Create btnsDef entry
+ $.extend(true, $.trumbowyg, {
+ opts: {
+ btnsDef: {}
+ }
+ });
+
+ // Set default colors
+ if (!$.trumbowyg.opts.colors)
+ $.trumbowyg.opts.colors = ['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'];
+
+ // Add all colors in two dropdowns
+ $.extend(true, $.trumbowyg, {
+ opts: {
+ btnsDef: {
+ foreColor: {
+ dropdown: buildDropdown('foreColor')
+ },
+ backColor: {
+ dropdown: buildDropdown('backColor')
+ }
+ }
+ }
+ });
+
+
+ function buildDropdown(func) {
+ var dropdown = [];
+
+ $.each($.trumbowyg.opts.colors, function (i, color) {
+ var btn = '_' + func + color;
+ $.trumbowyg.opts.btnsDef[btn] = {
+ func: func,
+ param: '#' + color,
+ style: 'background-color: #' + color + ';'
+ };
+ dropdown.push(btn);
+ });
+ var btn = '_' + func + 'transparent';
+ $.trumbowyg.opts.btnsDef[btn] = {
+ func: func,
+ param: 'transparent',
+ style: 'background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);'
+ };
+ dropdown.push(btn);
+ return dropdown;
+ }
+})(jQuery);
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/trumbowyg.colors.min.js b/resources/assets/js/vendor/trumbowyg/plugins/colors/trumbowyg.colors.min.js
new file mode 100644
index 00000000..26962a71
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/colors/trumbowyg.colors.min.js
@@ -0,0 +1 @@
+!function(o){"use strict";function f(f){var r=[];o.each(o.trumbowyg.opts.colors,function(e,d){var c="_"+f+d;o.trumbowyg.opts.btnsDef[c]={func:f,param:"#"+d,style:"background-color: #"+d+";"},r.push(c)});var e="_"+f+"transparent";return o.trumbowyg.opts.btnsDef[e]={func:f,param:"transparent",style:"background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAAECAYAAACp8Z5+AAAAG0lEQVQIW2NkQAAfEJMRmwBYhoGBYQtMBYoAADziAp0jtJTgAAAAAElFTkSuQmCC);"},r.push(e),r}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"}}}),o.extend(!0,o.trumbowyg,{opts:{btnsDef:{}}}),o.trumbowyg.opts.colors||(o.trumbowyg.opts.colors=["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,{opts:{btnsDef:{foreColor:{dropdown:f("foreColor")},backColor:{dropdown:f("backColor")}}}})}(jQuery);
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-black-2x.png b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-black-2x.png
new file mode 100644
index 00000000..1be27fb1
Binary files /dev/null and b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-black-2x.png differ
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-black.png b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-black.png
new file mode 100644
index 00000000..f98394e4
Binary files /dev/null and b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-black.png differ
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-white-2x.png b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-white-2x.png
new file mode 100644
index 00000000..4518d226
Binary files /dev/null and b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-white-2x.png differ
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-white.png b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-white.png
new file mode 100644
index 00000000..a7949e9c
Binary files /dev/null and b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/images/icons-white.png differ
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-black-2x.scss b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-black-2x.scss
new file mode 100644
index 00000000..402ddfd5
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-black-2x.scss
@@ -0,0 +1,18 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Colors plugin stylesheet for Trumbowyg editor
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+$backcolor-black-2x: 0px 0px;
+$forecolor-black-2x: -50px 0px;
+
+
+$sprite-height-black-2x: 50px;
+$sprite-width-black-2x: 100px;
+$icons-black-2x: "./images/icons-black-2x.png";
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-black.scss b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-black.scss
new file mode 100644
index 00000000..2d84ca03
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-black.scss
@@ -0,0 +1,18 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Colors plugin stylesheet for Trumbowyg editor
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+$backcolor-black: 0px 0px;
+$forecolor-black: -25px 0px;
+
+
+$sprite-height-black: 25px;
+$sprite-width-black: 50px;
+$icons-black: "./images/icons-black.png";
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-white-2x.scss b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-white-2x.scss
new file mode 100644
index 00000000..f90169ad
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-white-2x.scss
@@ -0,0 +1,18 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Colors plugin stylesheet for Trumbowyg editor
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+$backcolor-white-2x: 0px 0px;
+$forecolor-white-2x: -50px 0px;
+
+
+$sprite-height-white-2x: 50px;
+$sprite-width-white-2x: 100px;
+$icons-white-2x: "./images/icons-white-2x.png";
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-white.scss b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-white.scss
new file mode 100644
index 00000000..b7e8f8c1
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/_sprite-white.scss
@@ -0,0 +1,18 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Colors plugin stylesheet for Trumbowyg editor
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+$backcolor-white: 0px 0px;
+$forecolor-white: -25px 0px;
+
+
+$sprite-height-white: 25px;
+$sprite-width-white: 50px;
+$icons-white: "./images/icons-white.png";
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/trumbowyg.colors.scss b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/trumbowyg.colors.scss
new file mode 100644
index 00000000..4f353fc3
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/sass/trumbowyg.colors.scss
@@ -0,0 +1,105 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Colors plugin stylesheet for Trumbowyg editor
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+@import "sprite-black";
+@import "sprite-black-2x";
+@import "sprite-white";
+@import "sprite-white-2x";
+
+@import "sprite-pos";
+
+.foreColor-trumbowyg-dropdown,
+.backColor-trumbowyg-dropdown {
+ width: 276px;
+ padding: 7px 5px;
+
+ button {
+ display: block;
+ position: relative;
+ float: left;
+ text-indent: -9999px;
+ height: 20px;
+ width: 20px;
+ border: 1px solid #333;
+ padding: 0;
+ margin: 2px;
+
+ &:hover,
+ &:focus {
+ &::after {
+ content: " ";
+ display: block;
+ height: 27px;
+ width: 27px;
+ background: inherit;
+ position: absolute;
+ top: -5px;
+ left: -5px;
+ border: 1px solid #FFF;
+ box-shadow: #000 0 0 2px;
+ z-index: 10;
+ }
+ }
+ }
+}
+
+
+
+/*
+ * Buttons icons
+ */
+.trumbowyg-button-pane li button {
+ &.trumbowyg-foreColor-button,
+ &.trumbowyg-backColor-button {
+ background-image: url($icons-black);
+ }
+
+ &.trumbowyg-foreColor-button { @include sprite-pos($forecolor-black); }
+ &.trumbowyg-backColor-button { @include sprite-pos($backcolor-black); }
+}
+
+.trumbowyg-black {
+ .trumbowyg-button-pane li button {
+ &.trumbowyg-foreColor-button,
+ &.trumbowyg-backColor-button {
+ background-image: url($icons-white);
+ }
+
+ &.trumbowyg-foreColor-button { @include sprite-pos($forecolor-white); }
+ &.trumbowyg-backColor-button { @include sprite-pos($backcolor-white); }
+ }
+}
+
+
+@media only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 4/3), only screen and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){
+ .trumbowyg-button-pane li button {
+ &.trumbowyg-foreColor-button,
+ &.trumbowyg-backColor-button {
+ background-image: url($icons-black-2x) !important;
+ background-size: round($sprite-width-black-2x / 2) round($sprite-height-black-2x / 2) !important;
+ }
+
+ &.trumbowyg-foreColor-button { @include sprite-pos($forecolor-black-2x, true); }
+ &.trumbowyg-backColor-button { @include sprite-pos($backcolor-black-2x, true); }
+ }
+
+ .trumbowyg-black {
+ .trumbowyg-button-pane li button {
+ &.trumbowyg-foreColor-button,
+ &.trumbowyg-backColor-button {
+ background-image: url($icons-white-2x) !important;
+ }
+
+ &.trumbowyg-foreColor-button { @include sprite-pos($forecolor-white-2x, true); }
+ &.trumbowyg-backColor-button { @include sprite-pos($backcolor-white-2x, true); }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/trumbowyg.colors.css b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/trumbowyg.colors.css
new file mode 100644
index 00000000..72561baf
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/trumbowyg.colors.css
@@ -0,0 +1,76 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Colors plugin stylesheet for Trumbowyg editor
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+.foreColor-trumbowyg-dropdown,
+.backColor-trumbowyg-dropdown {
+ width: 276px;
+ padding: 7px 5px; }
+ .foreColor-trumbowyg-dropdown button,
+ .backColor-trumbowyg-dropdown button {
+ display: block;
+ position: relative;
+ float: left;
+ text-indent: -9999px;
+ height: 20px;
+ width: 20px;
+ border: 1px solid #333;
+ padding: 0;
+ margin: 2px; }
+ .foreColor-trumbowyg-dropdown button:hover::after, .foreColor-trumbowyg-dropdown button:focus::after,
+ .backColor-trumbowyg-dropdown button:hover::after,
+ .backColor-trumbowyg-dropdown button:focus::after {
+ content: " ";
+ display: block;
+ height: 27px;
+ width: 27px;
+ background: inherit;
+ position: absolute;
+ top: -5px;
+ left: -5px;
+ border: 1px solid #FFF;
+ box-shadow: #000 0 0 2px;
+ z-index: 10; }
+
+/*
+ * Buttons icons
+ */
+.trumbowyg-button-pane li button.trumbowyg-foreColor-button, .trumbowyg-button-pane li button.trumbowyg-backColor-button {
+ background-image: url("./images/icons-black.png"); }
+
+.trumbowyg-button-pane li button.trumbowyg-foreColor-button {
+ background-position: -20px 5px; }
+
+.trumbowyg-button-pane li button.trumbowyg-backColor-button {
+ background-position: 5px 5px; }
+
+.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-foreColor-button, .trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-backColor-button {
+ background-image: url("./images/icons-white.png"); }
+
+.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-foreColor-button {
+ background-position: -20px 5px; }
+
+.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-backColor-button {
+ background-position: 5px 5px; }
+
+@media only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
+ .trumbowyg-button-pane li button.trumbowyg-foreColor-button, .trumbowyg-button-pane li button.trumbowyg-backColor-button {
+ background-image: url("./images/icons-black-2x.png") !important;
+ background-size: 50px 25px !important; }
+ .trumbowyg-button-pane li button.trumbowyg-foreColor-button {
+ background-position: -20px 5px; }
+ .trumbowyg-button-pane li button.trumbowyg-backColor-button {
+ background-position: 5px 5px; }
+ .trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-foreColor-button, .trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-backColor-button {
+ background-image: url("./images/icons-white-2x.png") !important; }
+ .trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-foreColor-button {
+ background-position: -20px 5px; }
+ .trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-backColor-button {
+ background-position: 5px 5px; } }
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/trumbowyg.colors.min.css b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/trumbowyg.colors.min.css
new file mode 100644
index 00000000..6ccc2889
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/colors/ui/trumbowyg.colors.min.css
@@ -0,0 +1,2 @@
+/** Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor - alex-d.github.io/Trumbowyg - License MIT - Author : Alexandre Demode (Alex-D) / alex-d.fr */
+.backColor-trumbowyg-dropdown,.foreColor-trumbowyg-dropdown{width:276px;padding:7px 5px}.backColor-trumbowyg-dropdown button,.foreColor-trumbowyg-dropdown button{display:block;position:relative;float:left;text-indent:-9999px;height:20px;width:20px;border:1px solid #333;padding:0;margin:2px}.backColor-trumbowyg-dropdown button:focus::after,.backColor-trumbowyg-dropdown button:hover::after,.foreColor-trumbowyg-dropdown button:focus::after,.foreColor-trumbowyg-dropdown button:hover::after{content:" ";display:block;height:27px;width:27px;background:inherit;position:absolute;top:-5px;left:-5px;border:1px solid #FFF;box-shadow:#000 0 0 2px;z-index:10}.trumbowyg-button-pane li button.trumbowyg-backColor-button,.trumbowyg-button-pane li button.trumbowyg-foreColor-button{background-image:url(images/icons-black.png)}.trumbowyg-button-pane li button.trumbowyg-foreColor-button{background-position:-20px 5px}.trumbowyg-button-pane li button.trumbowyg-backColor-button{background-position:5px 5px}.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-backColor-button,.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-foreColor-button{background-image:url(images/icons-white.png)}.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-foreColor-button{background-position:-20px 5px}.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-backColor-button{background-position:5px 5px}@media only screen and (-webkit-min-device-pixel-ratio:1.3),only screen and (min--moz-device-pixel-ratio:1.3),only screen and (min-device-pixel-ratio:1.3),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.trumbowyg-button-pane li button.trumbowyg-backColor-button,.trumbowyg-button-pane li button.trumbowyg-foreColor-button{background-image:url(images/icons-black-2x.png)!important;background-size:50px 25px!important}.trumbowyg-button-pane li button.trumbowyg-foreColor-button{background-position:-20px 5px}.trumbowyg-button-pane li button.trumbowyg-backColor-button{background-position:5px 5px}.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-backColor-button,.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-foreColor-button{background-image:url(images/icons-white-2x.png)!important}.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-foreColor-button{background-position:-20px 5px}.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-backColor-button{background-position:5px 5px}}
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/editlink/trumbowyg.editlink.js b/resources/assets/js/vendor/trumbowyg/plugins/editlink/trumbowyg.editlink.js
new file mode 100644
index 00000000..ded1de95
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/editlink/trumbowyg.editlink.js
@@ -0,0 +1,112 @@
+/* ===========================================================
+ * trumbowyg.editlink.js v1.0
+ * Link editation plugin for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Rastislav Švarba (ra100)
+ * Twitter : @ra100
+ * Website : ra100.net
+ */
+
+(function ($) {
+ 'use strict';
+
+ $.extend(true, $.trumbowyg, {
+ langs: {
+ en: {
+ editLink: 'Edit Link'
+ },
+ fr: {
+ editLink: 'Editer un lien'
+ },
+ cs: {
+ editLink: 'Upravit odkaz'
+ },
+ sk: {
+ editLink: 'Upraviť odkaz'
+ }
+ },
+ opts: {
+ btnsDef: {
+ editLink: {
+ func: function (params, tbw) {
+ var t = tbw,
+ url = '',
+ title = '',
+ target = '_blank',
+ node = '',
+ edit = false;
+
+ var sel = t.doc.getSelection();
+ var range = new Range();
+ if (sel.type === 'Caret') { //if range is not selected, select whole element
+ range.selectNode(sel.baseNode);
+ sel.addRange(range);
+ t.saveSelection();
+ node = t.selection.commonAncestorContainer;
+ } else {
+ if ((sel.anchorOffset + sel.focusOffset) === sel.focusNode.length) { //if selection is large as whole
+ range.selectNode(sel.focusNode);
+ sel.addRange(range);
+ t.saveSelection();
+ node = t.selection.commonAncestorContainer;
+ } else {
+ t.saveSelection();
+ node = t.selection.commonAncestorContainer.parentNode;
+ }
+ }
+
+ if (node !== '' && $(node).prop('tagName') === 'A') {
+ var $a = $(node);
+ url = $a.attr('href');
+ title = ($a.attr('title') !== undefined) ? $a.attr('title') : $a.text();
+ target = ($a.attr('target') !== undefined) ? $a.attr('target') : target;
+ edit = true;
+ }
+
+ t.openModalInsert(t.lang.editLink, {
+ url: {
+ label: 'URL',
+ required: true,
+ value: url
+ },
+ title: {
+ label: t.lang.title,
+ value: title
+ },
+ text: {
+ label: t.lang.text,
+ value: t.getSelectedText()
+ },
+ target: {
+ label: t.lang.target,
+ value: target
+ }
+ }, function (v) { // v is value
+ t.execCmd('createLink', v.url);
+ if (!edit) return true;
+ var l = $('a[href="' + v.url + '"]:not([title])', t.$box);
+ if (v.text.length > 0) {
+ l.text(v.text);
+ }
+ if (v.title.length > 0) {
+ l.attr('title', v.title);
+ } else {
+ l.removeAttr('title');
+ }
+ if (v.target.length > 0) {
+ l.attr('target', v.target);
+ } else {
+ l.removeAttr('target');
+ }
+ return true;
+ });
+ }
+ },
+ link: {
+ dropdown: ['createLink', 'editLink', 'unlink']
+ }
+ }
+ }
+ });
+})(jQuery);
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/editlink/trumbowyg.editlink.min.js b/resources/assets/js/vendor/trumbowyg/plugins/editlink/trumbowyg.editlink.min.js
new file mode 100644
index 00000000..94ecee0f
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/editlink/trumbowyg.editlink.min.js
@@ -0,0 +1 @@
+!function(e){"use strict";e.extend(!0,e.trumbowyg,{langs:{en:{editLink:"Edit Link"},fr:{editLink:"Editer un lien"},cs:{editLink:"Upravit odkaz"},sk:{editLink:"Upraviť odkaz"}},opts:{btnsDef:{editLink:{func:function(t,n){var a=n,r="",i="",l="_blank",o="",d=!1,c=a.doc.getSelection(),s=new Range;if("Caret"===c.type?(s.selectNode(c.baseNode),c.addRange(s),a.saveSelection(),o=a.selection.commonAncestorContainer):c.anchorOffset+c.focusOffset===c.focusNode.length?(s.selectNode(c.focusNode),c.addRange(s),a.saveSelection(),o=a.selection.commonAncestorContainer):(a.saveSelection(),o=a.selection.commonAncestorContainer.parentNode),""!==o&&"A"===e(o).prop("tagName")){var g=e(o);r=g.attr("href"),i=void 0!==g.attr("title")?g.attr("title"):g.text(),l=void 0!==g.attr("target")?g.attr("target"):l,d=!0}a.openModalInsert(a.lang.editLink,{url:{label:"URL",required:!0,value:r},title:{label:a.lang.title,value:i},text:{label:a.lang.text,value:a.getSelectedText()},target:{label:a.lang.target,value:l}},function(t){if(a.execCmd("createLink",t.url),!d)return!0;var n=e('a[href="'+t.url+'"]:not([title])',a.$box);return t.text.length>0&&n.text(t.text),t.title.length>0?n.attr("title",t.title):n.removeAttr("title"),t.target.length>0?n.attr("target",t.target):n.removeAttr("target"),!0})}},link:{dropdown:["createLink","editLink","unlink"]}}}})}(jQuery);
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/trumbowyg.preformatted.js b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/trumbowyg.preformatted.js
new file mode 100755
index 00000000..64555477
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/trumbowyg.preformatted.js
@@ -0,0 +1,106 @@
+/* ===========================================================
+ * trumbowyg.preformatted.js v1.0
+ * Preformatted plugin for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Casella Edoardo (Civile)
+ */
+
+
+(function ($) {
+ 'use strict';
+
+ $.extend(true, $.trumbowyg, {
+ langs: {
+ en: {
+ preformatted: 'Code sample
+ semanticCode: function (force, full) {
+ var t = this;
+ t.syncCode(force);
+ t.saveSelection();
+
+ if (t.o.tagsToRemove.length > 0) {
+ $(t.o.tagsToRemove.join(', '), t.$ed).remove();
+ }
+
+ if (t.o.semantic) {
+ t.semanticTag('b', 'strong');
+ t.semanticTag('i', 'em');
+ t.semanticTag('strike', 'del');
+
+ if (full) {
+ var inlineElementsSelector = t.o.inlineElementsSelector,
+ blockElementsSelector = ':not(' + t.o.inlineElementsSelector + ')';
+
+ // Wrap text nodes in span for easier processing
+ t.$ed.contents().filter(function () {
+ return this.nodeType === 3 && $.trim(this.nodeValue).length > 0;
+ }).wrap('');
+
+ // Wrap groups of inline elements in paragraphs (recursive)
+ var wrapInlinesInParagraphsFrom = function ($from) {
+ if ($from.length !== 0) {
+ var $finalParagraph = $from.nextUntil(blockElementsSelector).andSelf()
+ .wrapAll(' with )
+ t.$ed.find('p:empty').replaceWith(''
+ },
+ fr: {
+ preformatted: 'Exemple de code'
+ },
+ it: {
+ preformatted: 'Codice '
+ }
+ },
+ opts: {
+ btnsDef: {
+ preformatted: {
+ func: function (params, tbw) {
+ var text = String(tbw.doc.getSelection());
+ if (text.replace(/\s/g, '') !== '') {
+ try {
+ var curtag = getSelectionParentElement().tagName.toLowerCase();
+ if (curtag == 'code' || curtag == 'pre') {
+ return unwrapCode();
+ }
+ else {
+ tbw.execCmd('insertHTML', '
');
+ }
+ } catch (e) {
+ }
+ }
+ },
+ ico: 'insertCode'
+ }
+ }
+ },
+ });
+
+ /*
+ * GetSelectionParentElement
+ */
+ function getSelectionParentElement() {
+ var parentEl = null,
+ sel;
+ if (window.getSelection) {
+ sel = window.getSelection();
+ if (sel.rangeCount) {
+ parentEl = sel.getRangeAt(0).commonAncestorContainer;
+ if (parentEl.nodeType != 1) {
+ parentEl = parentEl.parentNode;
+ }
+ }
+ } else if ((sel = document.selection) && sel.type != 'Control') {
+ parentEl = sel.createRange().parentElement();
+ }
+ return parentEl;
+ }
+
+ /*
+ * Strip
+ * returns a text without HTML tags
+ */
+ function strip(html) {
+ var tmp = document.createElement('DIV');
+ tmp.innerHTML = html;
+ return tmp.textContent || tmp.innerText || '';
+ }
+
+ /*
+ * UnwrapCode
+ * ADD/FIX: to improve, works but can be better
+ * "paranoic" solution
+ */
+ function unwrapCode() {
+ var container = null;
+ if (document.selection) //for IE
+ container = document.selection.createRange().parentElement();
+ else {
+ var select = window.getSelection();
+ if (select.rangeCount > 0)
+ container = select.getRangeAt(0).startContainer.parentNode;
+ }
+ //'paranoic' unwrap
+ var ispre = $(container).contents().closest('pre').length;
+ var iscode = $(container).contents().closest('code').length;
+ if (ispre && iscode) {
+ $(container).contents().unwrap('code').unwrap('pre');
+ } else if (ispre) {
+ $(container).contents().unwrap('pre');
+ } else if (iscode) {
+ $(container).contents().unwrap('code');
+ }
+ }
+
+
+})(jQuery);
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/trumbowyg.preformatted.min.js b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/trumbowyg.preformatted.min.js
new file mode 100755
index 00000000..a419fa93
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/trumbowyg.preformatted.min.js
@@ -0,0 +1 @@
+!function(e){"use strict";function t(){var e,t=null;return window.getSelection?(e=window.getSelection(),e.rangeCount&&(t=e.getRangeAt(0).commonAncestorContainer,1!=t.nodeType&&(t=t.parentNode))):(e=document.selection)&&"Control"!=e.type&&(t=e.createRange().parentElement()),t}function n(e){var t=document.createElement("DIV");return t.innerHTML=e,t.textContent||t.innerText||""}function o(){var t=null;if(document.selection)t=document.selection.createRange().parentElement();else{var n=window.getSelection();n.rangeCount>0&&(t=n.getRangeAt(0).startContainer.parentNode)}var o=e(t).contents().closest("pre").length,r=e(t).contents().closest("code").length;o&&r?e(t).contents().unwrap("code").unwrap("pre"):o?e(t).contents().unwrap("pre"):r&&e(t).contents().unwrap("code")}e.extend(!0,e.trumbowyg,{langs:{en:{preformatted:"Code sample ' + strip(text) + '"},fr:{preformatted:"Exemple de code"},it:{preformatted:"Codice "}},opts:{btnsDef:{preformatted:{func:function(e,r){var c=String(r.doc.getSelection());if(""!==c.replace(/\s/g,""))try{var a=t().tagName.toLowerCase();if("code"==a||"pre"==a)return o();r.execCmd("insertHTML","
")}catch(i){}},ico:"insertCode"}}}})}(jQuery);
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-black-2x.png b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-black-2x.png
new file mode 100644
index 00000000..78a6e729
Binary files /dev/null and b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-black-2x.png differ
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-black.png b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-black.png
new file mode 100644
index 00000000..6269bbc8
Binary files /dev/null and b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-black.png differ
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-white-2x.png b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-white-2x.png
new file mode 100644
index 00000000..b7104afc
Binary files /dev/null and b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-white-2x.png differ
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-white.png b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-white.png
new file mode 100644
index 00000000..093306b6
Binary files /dev/null and b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/images/icons-white.png differ
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-black-2x.scss b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-black-2x.scss
new file mode 100644
index 00000000..af37eef7
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-black-2x.scss
@@ -0,0 +1,17 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Preformatted text supplier
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+$preformatted-black-2x: 0px 0px;
+
+
+$sprite-height-black-2x: 50px;
+$sprite-width-black-2x: 50px;
+$icons-black-2x: "./images/icons-black-2x.png";
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-black.scss b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-black.scss
new file mode 100644
index 00000000..361fa886
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-black.scss
@@ -0,0 +1,17 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Preformatted text supplier
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+$preformatted-black: 0px 0px;
+
+
+$sprite-height-black: 25px;
+$sprite-width-black: 25px;
+$icons-black: "./images/icons-black.png";
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-white-2x.scss b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-white-2x.scss
new file mode 100644
index 00000000..49f3f604
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-white-2x.scss
@@ -0,0 +1,17 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Preformatted text supplier
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+$preformatted-white-2x: 0px 0px;
+
+
+$sprite-height-white-2x: 50px;
+$sprite-width-white-2x: 50px;
+$icons-white-2x: "./images/icons-white-2x.png";
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-white.scss b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-white.scss
new file mode 100644
index 00000000..3821dacd
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/_sprite-white.scss
@@ -0,0 +1,17 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Preformatted text supplier
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+$preformatted-white: 0px 0px;
+
+
+$sprite-height-white: 25px;
+$sprite-width-white: 25px;
+$icons-white: "./images/icons-white.png";
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/trumbowyg.preformatted.scss b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/trumbowyg.preformatted.scss
new file mode 100755
index 00000000..f57ab5ef
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/sass/trumbowyg.preformatted.scss
@@ -0,0 +1,56 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Preformatted text supplier
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+@import "sprite-black";
+@import "sprite-black-2x";
+@import "sprite-white";
+@import "sprite-white-2x";
+
+@import "sprite-pos";
+
+/*
+ * Buttons icons
+ */
+.trumbowyg-button-pane li button {
+ &.trumbowyg-preformatted-button {
+ background-image: url($icons-black);
+ }
+ &.trumbowyg-preformatted-button { @include sprite-pos($preformatted-black); }
+}
+
+.trumbowyg-black {
+ .trumbowyg-button-pane li button {
+ &.trumbowyg-preformatted-button {
+ background-image: url($icons-white);
+ }
+ &.trumbowyg-preformatted-button { @include sprite-pos($preformatted-white); }
+ }
+}
+
+
+@media only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 4/3), only screen and (min-device-pixel-ratio: 1.3), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx){
+ .trumbowyg-button-pane li button {
+ &.trumbowyg-preformatted-button {
+ background-image: url($icons-black-2x) !important;
+ background-size: round($sprite-width-black-2x / 2) round($sprite-height-black-2x / 2) !important;
+ }
+ &.trumbowyg-preformatted-button { @include sprite-pos($preformatted-black-2x, true); }
+ }
+
+ .trumbowyg-black {
+ .trumbowyg-button-pane li button {
+ &.trumbowyg-preformatted-button {
+ background-image: url($icons-white-2x) !important;
+ }
+ &.trumbowyg-preformatted-button { @include sprite-pos($preformatted-white-2x, true); }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/trumbowyg.preformatted.css b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/trumbowyg.preformatted.css
new file mode 100755
index 00000000..2aac95c2
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/trumbowyg.preformatted.css
@@ -0,0 +1,36 @@
+/**
+ * Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor
+ * Preformatted text supplier
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+/*
+ * Buttons icons
+ */
+.trumbowyg-button-pane li button.trumbowyg-preformatted-button {
+ background-image: url("./images/icons-black.png"); }
+
+.trumbowyg-button-pane li button.trumbowyg-preformatted-button {
+ background-position: 5px 5px; }
+
+.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-preformatted-button {
+ background-image: url("./images/icons-white.png"); }
+
+.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-preformatted-button {
+ background-position: 5px 5px; }
+
+@media only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3), only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx) {
+ .trumbowyg-button-pane li button.trumbowyg-preformatted-button {
+ background-image: url("./images/icons-black-2x.png") !important;
+ background-size: 25px 25px !important; }
+ .trumbowyg-button-pane li button.trumbowyg-preformatted-button {
+ background-position: 5px 5px; }
+ .trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-preformatted-button {
+ background-image: url("./images/icons-white-2x.png") !important; }
+ .trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-preformatted-button {
+ background-position: 5px 5px; } }
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/trumbowyg.preformatted.min.css b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/trumbowyg.preformatted.min.css
new file mode 100755
index 00000000..833e5caf
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/preformatted/ui/trumbowyg.preformatted.min.css
@@ -0,0 +1,2 @@
+/** Trumbowyg v2.0.0-beta.7 - A lightweight WYSIWYG editor - alex-d.github.io/Trumbowyg - License MIT - Author : Alexandre Demode (Alex-D) / alex-d.fr */
+.trumbowyg-button-pane li button.trumbowyg-preformatted-button{background-image:url(images/icons-black.png);background-position:5px 5px}.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-preformatted-button{background-image:url(images/icons-white.png);background-position:5px 5px}@media only screen and (-webkit-min-device-pixel-ratio:1.3),only screen and (min--moz-device-pixel-ratio:1.3),only screen and (min-device-pixel-ratio:1.3),only screen and (-webkit-min-device-pixel-ratio:2),only screen and (min-resolution:192dpi),only screen and (min-resolution:2dppx){.trumbowyg-button-pane li button.trumbowyg-preformatted-button{background-image:url(images/icons-black-2x.png)!important;background-size:25px 25px!important;background-position:5px 5px}.trumbowyg-black .trumbowyg-button-pane li button.trumbowyg-preformatted-button{background-image:url(images/icons-white-2x.png)!important;background-position:5px 5px}}
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/upload/trumbowyg.upload.js b/resources/assets/js/vendor/trumbowyg/plugins/upload/trumbowyg.upload.js
new file mode 100644
index 00000000..77284982
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/upload/trumbowyg.upload.js
@@ -0,0 +1,187 @@
+/* ===========================================================
+ * trumbowyg.upload.js v1.1
+ * Upload plugin for Trumbowyg
+ * http://alex-d.github.com/Trumbowyg
+ * ===========================================================
+ * Author : Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+(function ($) {
+ 'use strict';
+
+ function getDeep(object, propertyParts) {
+ var mainProperty = propertyParts.shift(),
+ otherProperties = propertyParts;
+
+ if (object !== null) {
+ if (otherProperties.length === 0) {
+ return object[mainProperty];
+ }
+
+ if (typeof object === 'object') {
+ return getDeep(object[mainProperty], otherProperties);
+ }
+ }
+ return object;
+ }
+
+ addXhrProgressEvent();
+
+ $.extend(true, $.trumbowyg, {
+ langs: {
+ en: {
+ upload: 'Upload',
+ file: 'File',
+ uploadError: 'Error'
+ },
+ sk: {
+ upload: 'Nahrať',
+ file: 'Súbor',
+ uploadError: 'Chyba'
+ },
+ fr: {
+ upload: 'Envoi',
+ file: 'Fichier',
+ uploadError: 'Erreur'
+ },
+ cs: {
+ upload: 'Nahrát obrázek',
+ file: 'Soubor',
+ uploadError: 'Chyba'
+ }
+ },
+
+ upload: {
+ serverPath: './src/plugins/upload/trumbowyg.upload.php',
+ fileFieldName: 'fileToUpload',
+ data: [],
+ headers: {},
+ urlPropertyName: 'file',
+ statusPropertyName: 'success',
+ success: undefined,
+ error: undefined
+ },
+
+ opts: {
+ btnsDef: {
+ upload: {
+ func: function (params, tbw) {
+ var file,
+ prefix = tbw.o.prefix;
+
+ var $modal = tbw.openModalInsert(
+ // Title
+ tbw.lang.upload,
+
+ // Fields
+ {
+ file: {
+ type: 'file',
+ required: true
+ },
+ alt: {
+ label: 'description'
+ }
+ },
+
+ // Callback
+ function (values) {
+ var data = new FormData();
+ data.append($.trumbowyg.upload.fileFieldName, file);
+
+ $.trumbowyg.upload.data.map(function (cur) {
+ data.append(cur.name, cur.value);
+ });
+
+ if ($('.' + prefix + 'progress', $modal).length === 0) {
+ $('.' + prefix + 'modal-title', $modal)
+ .after(
+ $('', {
+ 'class': prefix + 'progress'
+ }).append(
+ $('', {
+ 'class': prefix + 'progress-bar'
+ })
+ )
+ );
+ }
+
+ $.ajax({
+ url: $.trumbowyg.upload.serverPath,
+ headers: $.trumbowyg.upload.headers,
+ type: 'POST',
+ data: data,
+ cache: false,
+ dataType: 'json',
+ processData: false,
+ contentType: false,
+
+ progressUpload: function (e) {
+ $('.' + prefix + 'progress-bar').stop().animate({
+ width: Math.round(e.loaded * 100 / e.total) + '%'
+ }, 200);
+ },
+
+ success: $.trumbowyg.upload.success || function (data) {
+ if (!!getDeep(data, $.trumbowyg.upload.statusPropertyName.split('.'))) {
+ var url = getDeep(data, $.trumbowyg.upload.urlPropertyName.split('.'));
+ tbw.execCmd('insertImage', url);
+ $('img[src="' + url + '"]:not([alt])', tbw.$box).attr('alt', values.alt);
+ setTimeout(function () {
+ tbw.closeModal();
+ }, 250);
+ } else {
+ tbw.addErrorOnModalField(
+ $('input[type=file]', $modal),
+ tbw.lang[data.message]
+ );
+ }
+ },
+ error: $.trumbowyg.upload.error || function () {
+ tbw.addErrorOnModalField(
+ $('input[type=file]', $modal),
+ tbw.lang.uploadError
+ );
+ }
+ });
+ }
+ );
+
+ $('input[type=file]').on('change', function (e) {
+ try {
+ // If multiple files allowed, we just get the first.
+ file = e.target.files[0];
+ } catch (err) {
+ // In IE8, multiple files not allowed
+ file = e.target.value;
+ }
+ });
+ },
+ ico: 'insertImage'
+ }
+ }
+ }
+ });
+
+
+ function addXhrProgressEvent() {
+ if (!$.trumbowyg && !$.trumbowyg.addedXhrProgressEvent) { // Avoid adding progress event multiple times
+ var originalXhr = $.ajaxSettings.xhr;
+ $.ajaxSetup({
+ xhr: function () {
+ var req = originalXhr(),
+ that = this;
+ if (req && typeof req.upload == 'object' && that.progressUpload !== undefined)
+ req.upload.addEventListener('progress', function (e) {
+ that.progressUpload(e);
+ }, false);
+
+ return req;
+ }
+ });
+ $.trumbowyg.addedXhrProgressEvent = true;
+ }
+ }
+})(jQuery);
diff --git a/resources/assets/js/vendor/trumbowyg/plugins/upload/trumbowyg.upload.min.js b/resources/assets/js/vendor/trumbowyg/plugins/upload/trumbowyg.upload.min.js
new file mode 100644
index 00000000..43c401b7
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/plugins/upload/trumbowyg.upload.min.js
@@ -0,0 +1 @@
+!function(r){"use strict";function e(r,a){var o=a.shift(),t=a;if(null!==r){if(0===t.length)return r[o];if("object"==typeof r)return e(r[o],t)}return r}function a(){if(!r.trumbowyg&&!r.trumbowyg.addedXhrProgressEvent){var e=r.ajaxSettings.xhr;r.ajaxSetup({xhr:function(){var r=e(),a=this;return r&&"object"==typeof r.upload&&void 0!==a.progressUpload&&r.upload.addEventListener("progress",function(r){a.progressUpload(r)},!1),r}}),r.trumbowyg.addedXhrProgressEvent=!0}}a(),r.extend(!0,r.trumbowyg,{langs:{en:{upload:"Upload",file:"File",uploadError:"Error"},sk:{upload:"Nahrať",file:"Súbor",uploadError:"Chyba"},fr:{upload:"Envoi",file:"Fichier",uploadError:"Erreur"},cs:{upload:"Nahrát obrázek",file:"Soubor",uploadError:"Chyba"}},upload:{serverPath:"./src/plugins/upload/trumbowyg.upload.php",fileFieldName:"fileToUpload",data:[],headers:{},urlPropertyName:"file",statusPropertyName:"success",success:void 0,error:void 0},opts:{btnsDef:{upload:{func:function(a,o){var t,l=o.o.prefix,u=o.openModalInsert(o.lang.upload,{file:{type:"file",required:!0},alt:{label:"description"}},function(a){var s=new FormData;s.append(r.trumbowyg.upload.fileFieldName,t),r.trumbowyg.upload.data.map(function(r){s.append(r.name,r.value)}),0===r("."+l+"progress",u).length&&r("."+l+"modal-title",u).after(r("",{"class":l+"progress"}).append(r("",{"class":l+"progress-bar"}))),r.ajax({url:r.trumbowyg.upload.serverPath,headers:r.trumbowyg.upload.headers,type:"POST",data:s,cache:!1,dataType:"json",processData:!1,contentType:!1,progressUpload:function(e){r("."+l+"progress-bar").stop().animate({width:Math.round(100*e.loaded/e.total)+"%"},200)},success:r.trumbowyg.upload.success||function(t){if(e(t,r.trumbowyg.upload.statusPropertyName.split("."))){var l=e(t,r.trumbowyg.upload.urlPropertyName.split("."));o.execCmd("insertImage",l),r('img[src="'+l+'"]:not([alt])',o.$box).attr("alt",a.alt),setTimeout(function(){o.closeModal()},250)}else o.addErrorOnModalField(r("input[type=file]",u),o.lang[t.message])},error:r.trumbowyg.upload.error||function(){o.addErrorOnModalField(r("input[type=file]",u),o.lang.uploadError)}})});r("input[type=file]").on("change",function(r){try{t=r.target.files[0]}catch(e){t=r.target.value}})},ico:"insertImage"}}}})}(jQuery);
\ No newline at end of file
diff --git a/resources/assets/js/vendor/trumbowyg/trumbowyg.js b/resources/assets/js/vendor/trumbowyg/trumbowyg.js
new file mode 100644
index 00000000..cc54346c
--- /dev/null
+++ b/resources/assets/js/vendor/trumbowyg/trumbowyg.js
@@ -0,0 +1,1213 @@
+/**
+ * Trumbowyg v2.0.0-beta.5 - A lightweight WYSIWYG editor
+ * Trumbowyg core file
+ * ------------------------
+ * @link http://alex-d.github.io/Trumbowyg
+ * @license MIT
+ * @author Alexandre Demode (Alex-D)
+ * Twitter : @AlexandreDemode
+ * Website : alex-d.fr
+ */
+
+jQuery.trumbowyg = {
+ langs: {
+ en: {
+ viewHTML: "View HTML",
+
+ formatting: "Formatting",
+ p: "Paragraph",
+ blockquote: "Quote",
+ code: "Code",
+ header: "Header",
+
+ bold: "Bold",
+ italic: "Italic",
+ strikethrough: "Stroke",
+ underline: "Underline",
+
+ strong: "Strong",
+ em: "Emphasis",
+ del: "Deleted",
+
+ unorderedList: "Unordered list",
+ orderedList: "Ordered list",
+
+ insertImage: "Insert Image",
+ insertVideo: "Insert Video",
+ link: "Link",
+ createLink: "Insert link",
+ unlink: "Remove link",
+
+ justifyLeft: "Align Left",
+ justifyCenter: "Align Center",
+ justifyRight: "Align Right",
+ justifyFull: "Align Justify",
+
+ horizontalRule: "Insert horizontal rule",
+ removeformat: "Remove format",
+
+ fullscreen: "fullscreen",
+
+ close: "Close",
+
+ submit: "Confirm",
+ reset: "Cancel",
+
+ required: "Required",
+ description: "Description",
+ title: "Title",
+ text: "Text",
+ target: "Target"
+ }
+ },
+
+ // User default options
+ opts: {},
+
+ btnsGrps: {
+ design: ['bold', 'italic', 'underline', 'strikethrough'],
+ semantic: ['strong', 'em', 'del'],
+ justify: ['justifyLeft', 'justifyCenter', 'justifyRight', 'justifyFull'],
+ lists: ['unorderedList', 'orderedList']
+ }
+};
+
+
+(function (navigator, window, document, $, undefined) {
+ 'use strict';
+
+ // @param : o are options
+ // @param : p are params
+ $.fn.trumbowyg = function (options, params) {
+ if (options === Object(options) || !options) {
+ return this.each(function () {
+ if (!$(this).data('trumbowyg'))
+ $(this).data('trumbowyg', new Trumbowyg(this, options));
+ });
+ }
+ if (this.length === 1) {
+ try {
+ var t = $(this).data('trumbowyg');
+ switch (options) {
+ // Modal box
+ case 'openModal':
+ return t.openModal(params.title, params.content);
+ case 'closeModal':
+ return t.closeModal();
+ case 'openModalInsert':
+ return t.openModalInsert(params.title, params.fields, params.callback);
+
+ // Selection
+ case 'saveSelection':
+ return t.saveSelection();
+ case 'getSelection':
+ return t.selection;
+ case 'getSelectedText':
+ return t.getSelectedText();
+ case 'restoreSelection':
+ return t.restoreSelection();
+
+ // Destroy
+ case 'destroy':
+ return t.destroy();
+
+ // Empty
+ case 'empty':
+ return t.empty();
+
+ // Public options
+ case 'lang':
+ return t.lang;
+
+ // HTML
+ case 'html':
+ return t.html(params);
+ }
+ } catch (e) {
+ }
+ }
+
+ return false;
+ };
+
+ // @param : editorElem is the DOM element
+ // @param : o are options
+ var Trumbowyg = function (editorElem, o) {
+ var t = this;
+ // Get the document of the element. It use to makes the plugin
+ // compatible on iframes.
+ t.doc = editorElem.ownerDocument || document;
+ // jQuery object of the editor
+ t.$ta = $(editorElem); // $ta : Textarea
+ t.$c = $(editorElem); // $c : creator
+
+ // Extend with options
+ o = $.extend(true, {}, o, $.trumbowyg.opts);
+
+ // Localization management
+ if (typeof o.lang === 'undefined' || typeof $.trumbowyg.langs[o.lang] === 'undefined')
+ t.lang = $.trumbowyg.langs.en;
+ else
+ t.lang = $.extend(true, {}, $.trumbowyg.langs.en, $.trumbowyg.langs[o.lang]);
+
+ // Header translation
+ var h = t.lang.header;
+
+ // Defaults Options
+ t.o = $.extend(true, {}, {
+ lang: 'en',
+ dir: 'ltr',
+
+ closable: false,
+ fullscreenable: true,
+ fixedBtnPane: false,
+ fixedFullWidth: false,
+ autogrow: false,
+
+ prefix: 'trumbowyg-',
+
+ // WYSIWYG only
+ semantic: true,
+ resetCss: false,
+ removeformatPasted: false,
+ tagsToRemove: [],
+
+ btns: [
+ 'viewHTML',
+ '|', 'formatting',
+ '|', 'btnGrp-design',
+ '|', 'link',
+ '|', 'insertImage',
+ '|', 'btnGrp-justify',
+ '|', 'btnGrp-lists',
+ '|', 'horizontalRule',
+ '|', 'removeformat'
+ ],
+ btnsAdd: [],
+
+ /**
+ * When the button is associated to a empty object
+ * func and title attributs are defined from the button key value
+ *
+ * For example
+ * foo: {}
+ * is equivalent to :
+ * foo: {
+ * func: 'foo',
+ * title: this.lang.foo
+ * }
+ */
+ btnsDef: {
+ viewHTML: {
+ func: 'toggle'
+ },
+
+ p: {
+ func: 'formatBlock'
+ },
+ blockquote: {
+ func: 'formatBlock'
+ },
+ h1: {
+ func: 'formatBlock',
+ title: h + ' 1'
+ },
+ h2: {
+ func: 'formatBlock',
+ title: h + ' 2'
+ },
+ h3: {
+ func: 'formatBlock',
+ title: h + ' 3'
+ },
+ h4: {
+ func: 'formatBlock',
+ title: h + ' 4'
+ },
+
+ bold: {
+ key: 'B'
+ },
+ italic: {
+ key: 'I'
+ },
+ underline: {},
+ strikethrough: {},
+
+ strong: {
+ func: 'bold',
+ key: 'B'
+ },
+ em: {
+ func: 'italic',
+ key: 'I'
+ },
+ del: {
+ func: 'strikethrough'
+ },
+
+ createLink: {
+ key: 'K'
+ },
+ unlink: {},
+
+ insertImage: {},
+
+ justifyLeft: {},
+ justifyCenter: {},
+ justifyRight: {},
+ justifyFull: {},
+
+ unorderedList: {
+ func: 'insertUnorderedList'
+ },
+ orderedList: {
+ func: 'insertOrderedList'
+ },
+
+ horizontalRule: {
+ func: 'insertHorizontalRule'
+ },
+
+ removeformat: {},
+
+ // Dropdowns
+ formatting: {
+ dropdown: ['p', 'blockquote', 'h1', 'h2', 'h3', 'h4']
+ },
+ link: {
+ dropdown: ['createLink', 'unlink']
+ }
+ },
+
+ inlineElementsSelector: 'a, abbr, acronym, b, caption, cite, code, col, dfn, dir, dt, dd, em, font, hr, i, kbd, li, q, span, strikeout, strong, sub, sup, u'
+ }, o);
+
+ if (o.btns)
+ t.o.btns = o.btns;
+ else if (t.o.semantic)
+ t.o.btns[4] = 'btnGrp-semantic';
+
+ // Keyboard shortcuts are load in this array
+ t.keys = [];
+
+ t.init();
+ };
+
+ Trumbowyg.prototype = {
+ init: function () {
+ var t = this;
+ t.height = t.$ta.height();
+
+ t.buildEditor();
+ t.buildBtnPane();
+
+ t.fixedBtnPaneEvents();
+
+ t.buildOverlay();
+ },
+
+ buildEditor: function () {
+ var t = this,
+ prefix = t.o.prefix,
+ html = '';
+
+ t.$box = $('', {
+ 'class': prefix + 'box ' + prefix + 'editor-visible ' + prefix + t.o.lang + ' trumbowyg'
+ });
+
+ // $ta = Textarea
+ // $ed = Editor
+ t.isTextarea = t.$ta.is('textarea');
+ if (t.isTextarea) {
+ html = t.$ta.val();
+ t.$ed = $('');
+ t.$box
+ .insertAfter(t.$ta)
+ .append(t.$ed, t.$ta);
+ } else {
+ t.$ed = t.$ta;
+ html = t.$ed.html();
+
+ t.$ta = $('', {
+ name: t.$ta.attr('id'),
+ height: t.height
+ }).val(html);
+
+ t.$box
+ .insertAfter(t.$ed)
+ .append(t.$ta, t.$ed);
+ t.syncCode();
+ }
+
+ t.$ta
+ .addClass(prefix + 'textarea')
+ .attr('tabindex', -1)
+ ;
+
+ t.$ed
+ .addClass(prefix + 'editor')
+ .attr({
+ 'contenteditable': true,
+ 'dir': t.lang._dir || t.o.dir
+ })
+ .html(html)
+ ;
+
+ if (t.o.tabindex) {
+ t.$ed.attr('tabindex', t.o.tabindex);
+ }
+
+ if (t.$c.is('[placeholder]')) {
+ t.$ed.attr('placeholder', t.$c.attr('placeholder'));
+ }
+
+ if (t.o.resetCss) {
+ t.$ed.addClass(prefix + 'reset-css');
+ }
+
+ if (!t.o.autogrow) {
+ t.$ta.add(t.$ed).css({
+ height: t.height
+ });
+ }
+
+ t.semanticCode();
+
+
+ t._ctrl = false;
+ t.$ed
+ .on('dblclick', 'img', function () {
+ var $img = $(this);
+ t.openModalInsert(t.lang.insertImage, {
+ url: {
+ label: 'URL',
+ value: $img.attr('src'),
+ required: true
+ },
+ alt: {
+ label: t.lang.description,
+ value: $img.attr('alt')
+ }
+ }, function (v) {
+ return $img.attr({
+ src: v.url,
+ alt: v.alt
+ });
+ });
+ return false;
+ })
+ .on('keydown', function (e) {
+ t._composition = (e.which === 229);
+
+ if (e.ctrlKey) {
+ t._ctrl = true;
+ var k = t.keys[String.fromCharCode(e.which).toUpperCase()];
+
+ try {
+ t.execCmd(k.func, k.param);
+ return false;
+ } catch (e) {
+ }
+ }
+ })
+ .on('keyup', function (e) {
+ if (!t._ctrl && e.which !== 17 && !t._composition) {
+ t.semanticCode(false, e.which === 13);
+ t.$c.trigger('tbwchange');
+ }
+
+ setTimeout(function () {
+ t._ctrl = false;
+ }, 200);
+ })
+ .on('focus blur', function (e) {
+ t.$c.trigger('tbw' + e.type);
+ })
+ .on('paste', function (e) {
+ if (t.o.removeformatPasted) {
+ e.preventDefault();
+
+ try {
+ // IE
+ var text = window.clipboardData.getData("Text");
+
+ try {
+ // <= IE10
+ t.doc.selection.createRange().pasteHTML(text);
+ } catch (err) {
+ // IE 11
+ t.doc.getSelection().getRangeAt(0).insertNode(document.createTextNode(text));
+ }
+ } catch (err) {
+ // Not IE
+ t.execCmd('insertText', (e.originalEvent || e).clipboardData.getData('text/plain'));
+ }
+ }
+
+ setTimeout(function () {
+ if (t.o.semantic) {
+ t.semanticCode(false, true);
+ } else {
+ t.syncCode();
+ }
+ t.$c.trigger('tbwpaste', e);
+ }, 0);
+
+ });
+ t.$ta.on('keyup paste', function () {
+ t.$c.trigger('tbwchange');
+ });
+
+ $(t.doc).on('keydown', function (e) {
+ if (e.which === 27) {
+ t.closeModal();
+ return false;
+ }
+ });
+ },
+
+
+ // Build button pane, use o.btns and o.btnsAdd options
+ buildBtnPane: function () {
+ var t = this,
+ prefix = t.o.prefix;
+
+ if (t.o.btns === false)
+ return;
+
+ t.$btnPane = $('"+n(c)+"', {
+ 'class': prefix + 'button-pane'
+ });
+
+ $.each(t.o.btns.concat(t.o.btnsAdd), function (i, btn) {
+ // Managment of group of buttons
+ try {
+ var b = btn.split('btnGrp-');
+ if (b[1] !== undefined)
+ btn = $.trumbowyg.btnsGrps[b[1]];
+ } catch (e) {
+ }
+
+ if (!$.isArray(btn))
+ btn = [btn];
+
+ $.each(btn, function (i, b) {
+ try { // Prevent buildBtn error
+ var $li = $('');
+
+ if (b === '|') // It's a separator
+ $li.addClass(prefix + 'separator');
+ else if (t.isSupportedBtn(b)) // It's a supported button
+ $li.append(t.buildBtn(b));
+
+ t.$btnPane.append($li);
+ } catch (e) {
+ }
+ });
+ });
+
+ // Build right li for fullscreen and close buttons
+ var $liRight = $('', {
+ 'class': prefix + 'not-disable ' + prefix + 'buttons-right'
+ });
+
+ // Add the fullscreen button
+ if (t.o.fullscreenable)
+ $liRight.append(
+ t.buildRightBtn('fullscreen')
+ .on('click', function () {
+ var cssClass = prefix + 'fullscreen';
+ t.$box.toggleClass(cssClass);
+ $('body').toggleClass(prefix + 'body-fullscreen', t.$box.hasClass(cssClass));
+ $(window).trigger('scroll');
+ })
+ );
+
+ // Build and add close button
+ if (t.o.closable)
+ $liRight
+ .append(
+ t.buildRightBtn('close')
+ .on('click', function () {
+ t.$box.removeClass(prefix + 'fullscreen');
+ t.destroy();
+ t.$c.trigger('tbwclose');
+ })
+ );
+
+
+ // Add right li only if isn't empty
+ if ($liRight.not(':empty'))
+ t.$btnPane.append($liRight);
+
+ t.$box.prepend(t.$btnPane);
+ },
+
+
+ // Build a button and his action
+ buildBtn: function (n) { // n is name of the button
+ var t = this,
+ prefix = t.o.prefix,
+ btn = t.o.btnsDef[n],
+ d = btn.dropdown,
+ textDef = t.lang[n] || n,
+
+ $btn = $('', {
+ type: 'button',
+ 'class': prefix + n + '-button' + (btn.ico ? ' ' + prefix + btn.ico + '-button' : ''),
+ text: btn.text || btn.title || textDef,
+ title: btn.title || btn.text || textDef + ((btn.key) ? ' (Ctrl + ' + btn.key + ')' : ''),
+ tabindex: -1,
+ mousedown: function () {
+ if (!d || $('.' + n + '-' + prefix + 'dropdown', t.$box).is(':hidden'))
+ $('body', t.doc).trigger('mousedown');
+
+ if (t.$btnPane.hasClass(prefix + 'disable') && !$(this).hasClass(prefix + 'active') && !$(this).parent().hasClass(prefix + 'not-disable'))
+ return false;
+
+ t.execCmd((d ? 'dropdown' : false) || btn.func || n, btn.param || n);
+
+ return false;
+ }
+ });
+
+ if (d) {
+ $btn.addClass(prefix + 'open-dropdown');
+ var c = prefix + 'dropdown',
+ dd = $('', { // the dropdown
+ 'class': n + '-' + c + ' ' + c + ' ' + prefix + 'fixed-top'
+ });
+ $.each(d, function (i, def) {
+ if (t.o.btnsDef[def] && t.isSupportedBtn(def))
+ dd.append(t.buildSubBtn(def));
+ });
+ t.$box.append(dd.hide());
+ } else if (btn.key) {
+ t.keys[btn.key] = {
+ func: btn.func || n,
+ param: btn.param || n
+ };
+ }
+
+ return $btn;
+ },
+ // Build a button for dropdown menu
+ // @param n : name of the subbutton
+ buildSubBtn: function (n) {
+ var t = this,
+ b = t.o.btnsDef[n];
+
+ if (b.key) {
+ t.keys[b.key] = {
+ func: b.func || n,
+ param: b.param || n
+ };
+ }
+
+ return $('', {
+ type: 'button',
+ 'class': t.o.prefix + n + '-dropdown-button' + (b.ico ? ' ' + t.o.prefix + b.ico + '-button' : ''),
+ text: b.text || b.title || t.lang[n] || n,
+ title: ((b.key) ? ' (Ctrl + ' + b.key + ')' : null),
+ style: b.style || null,
+ mousedown: function () {
+ $('body', t.doc).trigger('mousedown');
+
+ t.execCmd(b.func || n,
+ b.param || n);
+
+ return false;
+ }
+ });
+ },
+ // Build a button for right li
+ // @param n : name of the right button
+ buildRightBtn: function (n) {
+ var l = this.lang[n];
+ return $('', {
+ type: 'button',
+ 'class': this.o.prefix + n + '-button',
+ title: l,
+ text: l,
+ tabindex: -1
+ });
+ },
+ // Check if button is supported
+ isSupportedBtn: function (b) {
+ try {
+ return this.o.btnsDef[b].isSupported();
+ } catch (e) {
+ }
+ return true;
+ },
+
+ // Build overlay for modal box
+ buildOverlay: function () {
+ var t = this;
+ t.$overlay = $('', {
+ 'class': t.o.prefix + 'overlay'
+ }).css({
+ top: t.$btnPane.outerHeight(),
+ height: (t.$ed.outerHeight() + 1) + 'px'
+ }).appendTo(t.$box);
+ return t.$overlay;
+ },
+ showOverlay: function () {
+ var t = this;
+ $(window).trigger('scroll');
+ t.$overlay.fadeIn(200);
+ t.$box.addClass(t.o.prefix + 'box-blur');
+ },
+ hideOverlay: function () {
+ var t = this;
+ t.$overlay.fadeOut(50);
+ t.$box.removeClass(t.o.prefix + 'box-blur');
+ },
+
+ // Management of fixed button pane
+ fixedBtnPaneEvents: function () {
+ var t = this,
+ fixedFullWidth = t.o.fixedFullWidth,
+ box = t.$box;
+ if (!t.o.fixedBtnPane)
+ return;
+
+ t.isFixed = false;
+
+ $(window)
+ .on('scroll resize', function () {
+ if (!box)
+ return;
+
+ t.syncCode();
+
+ var scrollTop = $(window).scrollTop(),
+ offset = box.offset().top + 1,
+ bp = t.$btnPane,
+ oh = bp.outerHeight();
+
+ if ((scrollTop - offset > 0) && ((scrollTop - offset - t.height) < 0)) {
+ if (!t.isFixed) {
+ t.isFixed = true;
+ bp.css({
+ position: 'fixed',
+ top: 0,
+ left: fixedFullWidth ? '0' : 'auto',
+ zIndex: 7
+ });
+ $([t.$ta, t.$ed]).css({marginTop: bp.height()});
+ }
+ bp.css({
+ width: fixedFullWidth ? '100%' : ((box.width() - 1) + 'px')
+ });
+
+ $('.' + t.o.prefix + 'fixed-top', box).css({
+ position: fixedFullWidth ? 'fixed' : 'absolute',
+ top: fixedFullWidth ? oh : oh + (scrollTop - offset) + 'px',
+ zIndex: 15
+ });
+ } else if (t.isFixed) {
+ t.isFixed = false;
+ bp.removeAttr('style');
+ $([t.$ta, t.$ed]).css({marginTop: 0});
+ $('.' + t.o.prefix + 'fixed-top', box).css({
+ position: 'absolute',
+ top: oh
+ });
+ }
+ });
+ },
+
+
+ // Destroy the editor
+ destroy: function () {
+ var t = this,
+ prefix = t.o.prefix,
+ height = t.height;
+
+ if (t.isTextarea) {
+ t.$box.after(
+ t.$ta
+ .css({height: height})
+ .val(t.html())
+ .removeClass(prefix + 'textarea')
+ .show()
+ );
+ } else {
+ t.$box.after(
+ t.$ed
+ .css({height: height})
+ .removeClass(prefix + 'editor')
+ .removeAttr('contenteditable')
+ .html(t.html())
+ .show()
+ );
+ }
+
+ t.$box.remove();
+ t.$c.removeData('trumbowyg');
+ },
+
+
+ // Empty the editor
+ empty: function () {
+ this.$ta.val('');
+ this.syncCode(true);
+ },
+
+
+ // Function call when click on viewHTML button
+ toggle: function () {
+ var t = this,
+ prefix = t.o.prefix;
+ t.semanticCode(false, true);
+ setTimeout(function () {
+ t.$box.toggleClass(prefix + 'editor-hidden ' + prefix + 'editor-visible');
+ t.$btnPane.toggleClass(prefix + 'disable');
+ $('.' + prefix + 'viewHTML-button', t.$btnPane).toggleClass(prefix + 'active');
+ if (t.$box.hasClass(prefix + 'editor-visible'))
+ t.$ta.attr('tabindex', -1);
+ else
+ t.$ta.removeAttr('tabindex');
+ }, 0);
+ },
+
+ // Open dropdown when click on a button which open that
+ dropdown: function (name) {
+ var t = this,
+ d = t.doc,
+ prefix = t.o.prefix,
+ $dd = $('.' + name + '-' + prefix + 'dropdown', t.$box),
+ $btn = $('.' + prefix + name + '-button', t.$btnPane);
+
+ if ($dd.is(':hidden')) {
+ var o = $btn.offset().left;
+ $btn.addClass(prefix + 'active');
+
+ $dd.css({
+ position: 'absolute',
+ top: t.$btnPane.outerHeight(),
+ left: (t.o.fixedFullWidth && t.isFixed) ? o + 'px' : (o - t.$btnPane.offset().left) + 'px'
+ }).show();
+
+ $(window).trigger('scroll');
+
+ $('body', d).on('mousedown', function () {
+ $('.' + prefix + 'dropdown', d).hide();
+ $('.' + prefix + 'active', d).removeClass(prefix + 'active');
+ $('body', d).off('mousedown');
+ });
+ } else
+ $('body', d).trigger('mousedown');
+ },
+
+
+ // HTML Code management
+ html: function (html) {
+ var t = this;
+ if (html) {
+ t.$ta.val(html);
+ t.syncCode(true);
+ return t;
+ }
+ return t.$ta.val();
+ },
+ syncCode: function (force) {
+ var t = this;
+ if (!force && t.$ed.is(':visible')) {
+ t.$ta.val(t.$ed.html());
+ t.$c.trigger('tbwchange');
+ } else {
+ t.$ed.html(t.$ta.val());
+ }
+
+ if (t.o.autogrow) {
+ t.height = t.$ed.height();
+ if (t.height != t.$ta.css('height')) {
+ t.$ta.css({height: t.height});
+ t.$c.trigger('tbwresize');
+ }
+ }
+ },
+
+ // Analyse and update to semantic code
+ // @param force : force to sync code from textarea
+ // @param full : wrap text nodes in
(IE loves adding empty
');
+ }
+
+ t.restoreSelection();
+
+ t.$ta.val(t.$ed.html());
+ }
+ },
+
+ semanticTag: function (oldTag, newTag, copyAttributes) {
+ $(oldTag, this.$ed).each(function () {
+ var $oldTag = $(this);
+ $oldTag.wrap('<' + newTag + '/>');
+ if (copyAttributes) {
+ $.each($oldTag.prop('attributes'), function () {
+ $oldTag.parent().attr(this.name, this.value);
+ });
+ }
+ $oldTag.contents().unwrap();
+ });
+ },
+
+ // Function call when user click on "Insert Link"
+ createLink: function () {
+ var t = this;
+ t.saveSelection();
+ t.openModalInsert(t.lang.createLink, {
+ url: {
+ label: 'URL',
+ required: true
+ },
+ title: {
+ label: t.lang.title
+ },
+ text: {
+ label: t.lang.text,
+ value: t.getSelectedText()
+ },
+ target: {
+ label: t.lang.target
+ }
+ }, function (v) { // v is value
+ var link = $(['', v.text, ''].join(''));
+ if (v.title.length > 0)
+ link.attr('title', v.title);
+ if (v.target.length > 0)
+ link.attr('target', v.target);
+ t.selection.deleteContents();
+ t.selection.insertNode(link.get(0));
+ t.restoreSelection();
+ return true;
+ });
+ },
+ insertImage: function () {
+ var t = this;
+ t.saveSelection();
+ t.openModalInsert(t.lang.insertImage, {
+ url: {
+ label: 'URL',
+ required: true
+ },
+ alt: {
+ label: t.lang.description,
+ value: t.getSelectedText()
+ }
+ }, function (v) { // v are values
+ t.execCmd('insertImage', v.url);
+ $('img[src="' + v.url + '"]:not([alt])', t.$box).attr('alt', v.alt);
+ return true;
+ });
+ },
+
+
+ /*
+ * Call method of trumbowyg if exist
+ * else try to call anonymous function
+ * and finaly native execCommand
+ */
+ execCmd: function (cmd, param) {
+ var t = this;
+ if (cmd != 'dropdown')
+ t.$ed.focus();
+
+ try {
+ t[cmd](param);
+ } catch (e) {
+ try {
+ cmd(param, t);
+ } catch (e2) {
+ if (cmd == 'insertHorizontalRule')
+ param = null;
+ else if (cmd == 'formatBlock' && (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') !== -1))
+ param = '<' + param + '>';
+
+ t.doc.execCommand(cmd, false, param);
+ }
+ }
+
+ if (cmd != 'dropdown')
+ t.syncCode();
+ },
+
+
+ // Open a modal box
+ openModal: function (title, content) {
+ var t = this,
+ prefix = t.o.prefix;
+
+ // No open a modal box when exist other modal box
+ if ($('.' + prefix + 'modal-box', t.$box).length > 0)
+ return false;
+
+ t.saveSelection();
+ t.showOverlay();
+
+ // Disable all btnPane btns
+ t.$btnPane.addClass(prefix + 'disable');
+
+ // Build out of ModalBox, it's the mask for animations
+ var $modal = $('",{"class":n+"button-pane"}),o.each(e.o.btns.concat(e.o.btnsAdd),function(t,r){try{var a=r.split("btnGrp-");a[1]!==i&&(r=o.trumbowyg.btnsGrps[a[1]])}catch(s){}o.isArray(r)||(r=[r]),o.each(r,function(t,i){try{var r=o("");"|"===i?r.addClass(n+"separator"):e.isSupportedBtn(i)&&r.append(e.buildBtn(i)),e.$btnPane.append(r)}catch(a){}})});var r=o("",{"class":n+"not-disable "+n+"buttons-right"});e.o.fullscreenable&&r.append(e.buildRightBtn("fullscreen").on("click",function(){var i=n+"fullscreen";e.$box.toggleClass(i),o("body").toggleClass(n+"body-fullscreen",e.$box.hasClass(i)),o(t).trigger("scroll")})),e.o.closable&&r.append(e.buildRightBtn("close").on("click",function(){e.$box.removeClass(n+"fullscreen"),e.destroy(),e.$c.trigger("tbwclose")})),r.not(":empty")&&e.$btnPane.append(r),e.$box.prepend(e.$btnPane)}},buildBtn:function(e){var t=this,n=t.o.prefix,i=t.o.btnsDef[e],r=i.dropdown,a=t.lang[e]||e,s=o("",{type:"button","class":n+e+"-button"+(i.ico?" "+n+i.ico+"-button":""),text:i.text||i.title||a,title:i.title||i.text||a+(i.key?" (Ctrl + "+i.key+")":""),tabindex:-1,mousedown:function(){return(!r||o("."+e+"-"+n+"dropdown",t.$box).is(":hidden"))&&o("body",t.doc).trigger("mousedown"),!t.$btnPane.hasClass(n+"disable")||o(this).hasClass(n+"active")||o(this).parent().hasClass(n+"not-disable")?(t.execCmd((r?"dropdown":!1)||i.func||e,i.param||e),!1):!1}});if(r){s.addClass(n+"open-dropdown");var l=n+"dropdown",c=o("",{"class":e+"-"+l+" "+l+" "+n+"fixed-top"});o.each(r,function(e,n){t.o.btnsDef[n]&&t.isSupportedBtn(n)&&c.append(t.buildSubBtn(n))}),t.$box.append(c.hide())}else i.key&&(t.keys[i.key]={func:i.func||e,param:i.param||e});return s},buildSubBtn:function(e){var t=this,n=t.o.btnsDef[e];return n.key&&(t.keys[n.key]={func:n.func||e,param:n.param||e}),o("",{type:"button","class":t.o.prefix+e+"-dropdown-button"+(n.ico?" "+t.o.prefix+n.ico+"-button":""),text:n.text||n.title||t.lang[e]||e,title:n.key?" (Ctrl + "+n.key+")":null,style:n.style||null,mousedown:function(){return o("body",t.doc).trigger("mousedown"),t.execCmd(n.func||e,n.param||e),!1}})},buildRightBtn:function(e){var t=this.lang[e];return o("",{type:"button","class":this.o.prefix+e+"-button",title:t,text:t,tabindex:-1})},isSupportedBtn:function(e){try{return this.o.btnsDef[e].isSupported()}catch(t){}return!0},buildOverlay:function(){var e=this;return e.$overlay=o("",{"class":e.o.prefix+"overlay"}).css({top:e.$btnPane.outerHeight(),height:e.$ed.outerHeight()+1+"px"}).appendTo(e.$box),e.$overlay},showOverlay:function(){var e=this;o(t).trigger("scroll"),e.$overlay.fadeIn(200),e.$box.addClass(e.o.prefix+"box-blur")},hideOverlay:function(){var e=this;e.$overlay.fadeOut(50),e.$box.removeClass(e.o.prefix+"box-blur")},fixedBtnPaneEvents:function(){var e=this,n=e.o.fixedFullWidth,i=e.$box;e.o.fixedBtnPane&&(e.isFixed=!1,o(t).on("scroll resize",function(){if(i){e.syncCode();var r=o(t).scrollTop(),a=i.offset().top+1,s=e.$btnPane,l=s.outerHeight();r-a>0&&r-a-e.height<0?(e.isFixed||(e.isFixed=!0,s.css({position:"fixed",top:0,left:n?"0":"auto",zIndex:7}),o([e.$ta,e.$ed]).css({marginTop:s.height()})),s.css({width:n?"100%":i.width()-1+"px"}),o("."+e.o.prefix+"fixed-top",i).css({position:n?"fixed":"absolute",top:n?l:l+(r-a)+"px",zIndex:15})):e.isFixed&&(e.isFixed=!1,s.removeAttr("style"),o([e.$ta,e.$ed]).css({marginTop:0}),o("."+e.o.prefix+"fixed-top",i).css({position:"absolute",top:l}))}}))},destroy:function(){var e=this,t=e.o.prefix,n=e.height;e.isTextarea?e.$box.after(e.$ta.css({height:n}).val(e.html()).removeClass(t+"textarea").show()):e.$box.after(e.$ed.css({height:n}).removeClass(t+"editor").removeAttr("contenteditable").html(e.html()).show()),e.$box.remove(),e.$c.removeData("trumbowyg")},empty:function(){this.$ta.val(""),this.syncCode(!0)},toggle:function(){var e=this,t=e.o.prefix;e.semanticCode(!1,!0),setTimeout(function(){e.$box.toggleClass(t+"editor-hidden "+t+"editor-visible"),e.$btnPane.toggleClass(t+"disable"),o("."+t+"viewHTML-button",e.$btnPane).toggleClass(t+"active"),e.$box.hasClass(t+"editor-visible")?e.$ta.attr("tabindex",-1):e.$ta.removeAttr("tabindex")},0)},dropdown:function(e){var n=this,i=n.doc,r=n.o.prefix,a=o("."+e+"-"+r+"dropdown",n.$box),s=o("."+r+e+"-button",n.$btnPane);if(a.is(":hidden")){var l=s.offset().left;s.addClass(r+"active"),a.css({position:"absolute",top:n.$btnPane.outerHeight(),left:n.o.fixedFullWidth&&n.isFixed?l+"px":l-n.$btnPane.offset().left+"px"}).show(),o(t).trigger("scroll"),o("body",i).on("mousedown",function(){o("."+r+"dropdown",i).hide(),o("."+r+"active",i).removeClass(r+"active"),o("body",i).off("mousedown")})}else o("body",i).trigger("mousedown")},html:function(e){var t=this;return e?(t.$ta.val(e),t.syncCode(!0),t):t.$ta.val()},syncCode:function(e){var t=this;!e&&t.$ed.is(":visible")?(t.$ta.val(t.$ed.html()),t.$c.trigger("tbwchange")):t.$ed.html(t.$ta.val()),t.o.autogrow&&(t.height=t.$ed.height(),t.height!=t.$ta.css("height")&&(t.$ta.css({height:t.height}),t.$c.trigger("tbwresize")))},semanticCode:function(e,t){var n=this;if(n.syncCode(e),n.saveSelection(),n.o.tagsToRemove.length>0&&o(n.o.tagsToRemove.join(", "),n.$ed).remove(),n.o.semantic){if(n.semanticTag("b","strong"),n.semanticTag("i","em"),n.semanticTag("strike","del"),t){var i=n.o.inlineElementsSelector,r=":not("+n.o.inlineElementsSelector+")";n.$ed.contents().filter(function(){return 3===this.nodeType&&o.trim(this.nodeValue).length>0}).wrap("");var a=function(e){if(0!==e.length){var t=e.nextUntil(r).andSelf().wrapAll("").parent();t.next("br").remove();var n=t.nextAll(i).first();n.length&&a(n)}};a(n.$ed.children(i).first()),n.semanticTag("div","p",!0),n.$ed.find("p").filter(function(){return n.selection&&this===n.selection.startContainer?!1:0===o(this).text().trim().length&&0===o(this).children().not("br, span").length}).contents().unwrap(),o("[data-trumbowyg-textnode]",n.$ed).contents().unwrap(),n.$ed.find("p:empty").replaceWith("
")}n.restoreSelection(),n.$ta.val(n.$ed.html())}},semanticTag:function(e,t,n){o(e,this.$ed).each(function(){var e=o(this);e.wrap("<"+t+"/>"),n&&o.each(e.prop("attributes"),function(){e.parent().attr(this.name,this.value)}),e.contents().unwrap()})},createLink:function(){var e=this;e.saveSelection(),e.openModalInsert(e.lang.createLink,{url:{label:"URL",required:!0},title:{label:e.lang.title},text:{label:e.lang.text,value:e.getSelectedText()},target:{label:e.lang.target}},function(t){var n=o(['',t.text,""].join(""));return t.title.length>0&&n.attr("title",t.title),t.target.length>0&&n.attr("target",t.target),e.selection.deleteContents(),e.selection.insertNode(n.get(0)),e.restoreSelection(),!0})},insertImage:function(){var e=this;e.saveSelection(),e.openModalInsert(e.lang.insertImage,{url:{label:"URL",required:!0},alt:{label:e.lang.description,value:e.getSelectedText()}},function(t){return e.execCmd("insertImage",t.url),o('img[src="'+t.url+'"]:not([alt])',e.$box).attr("alt",t.alt),!0})},execCmd:function(t,n){var o=this;"dropdown"!=t&&o.$ed.focus();try{o[t](n)}catch(i){try{t(n,o)}catch(r){"insertHorizontalRule"==t?n=null:"formatBlock"!=t||-1===e.userAgent.indexOf("MSIE")&&-1===e.appVersion.indexOf("Trident/")||(n="<"+n+">"),o.doc.execCommand(t,!1,n)}}"dropdown"!=t&&o.syncCode()},openModal:function(e,n){var i=this,r=i.o.prefix;if(o("."+r+"modal-box",i.$box).length>0)return!1;i.saveSelection(),i.showOverlay(),i.$btnPane.addClass(r+"disable");var a=o("