From 254bed311fb08e5036bbb4d0531ad39b645dccc2 Mon Sep 17 00:00:00 2001 From: gothack329 Date: Fri, 23 Feb 2018 23:01:09 +0800 Subject: [PATCH] add text editing --- article/__pycache__/admin.cpython-36.pyc | Bin 173 -> 503 bytes article/__pycache__/adminx.cpython-36.pyc | Bin 0 -> 1870 bytes article/__pycache__/models.cpython-36.pyc | Bin 170 -> 1443 bytes article/admin.py | 5 + article/adminx.py | 54 ++ article/migrations/0001_initial.py | 31 ++ article/migrations/0002_article_visible.py | 18 + .../__pycache__/0001_initial.cpython-36.pyc | Bin 0 -> 950 bytes .../0002_article_visible.cpython-36.pyc | Bin 0 -> 631 bytes article/models.py | 26 + db.sqlite3 | Bin 208896 -> 212992 bytes edconline/__pycache__/settings.cpython-36.pyc | Bin 2517 -> 3601 bytes edconline/__pycache__/urls.cpython-36.pyc | Bin 1135 -> 1192 bytes edconline/settings.py | 35 ++ edconline/urls.py | 2 + static/tinymce/jquery.tinymce.min.js | 1 + static/tinymce/langs/readme.md | 3 + static/tinymce/license.txt | 504 ++++++++++++++++++ static/tinymce/plugins/advlist/plugin.min.js | 1 + static/tinymce/plugins/anchor/plugin.min.js | 1 + static/tinymce/plugins/autolink/plugin.min.js | 1 + .../tinymce/plugins/autoresize/plugin.min.js | 1 + static/tinymce/plugins/autosave/plugin.min.js | 1 + static/tinymce/plugins/bbcode/plugin.min.js | 1 + static/tinymce/plugins/charmap/plugin.min.js | 1 + static/tinymce/plugins/code/plugin.min.js | 1 + .../tinymce/plugins/codesample/css/prism.css | 138 +++++ .../tinymce/plugins/codesample/plugin.min.js | 1 + .../tinymce/plugins/colorpicker/plugin.min.js | 1 + .../tinymce/plugins/contextmenu/plugin.min.js | 1 + .../plugins/directionality/plugin.min.js | 1 + .../plugins/emoticons/img/smiley-cool.gif | Bin 0 -> 354 bytes .../plugins/emoticons/img/smiley-cry.gif | Bin 0 -> 329 bytes .../emoticons/img/smiley-embarassed.gif | Bin 0 -> 331 bytes .../emoticons/img/smiley-foot-in-mouth.gif | Bin 0 -> 342 bytes .../plugins/emoticons/img/smiley-frown.gif | Bin 0 -> 340 bytes .../plugins/emoticons/img/smiley-innocent.gif | Bin 0 -> 336 bytes .../plugins/emoticons/img/smiley-kiss.gif | Bin 0 -> 338 bytes .../plugins/emoticons/img/smiley-laughing.gif | Bin 0 -> 343 bytes .../emoticons/img/smiley-money-mouth.gif | Bin 0 -> 321 bytes .../plugins/emoticons/img/smiley-sealed.gif | Bin 0 -> 323 bytes .../plugins/emoticons/img/smiley-smile.gif | Bin 0 -> 344 bytes .../emoticons/img/smiley-surprised.gif | Bin 0 -> 338 bytes .../emoticons/img/smiley-tongue-out.gif | Bin 0 -> 328 bytes .../emoticons/img/smiley-undecided.gif | Bin 0 -> 337 bytes .../plugins/emoticons/img/smiley-wink.gif | Bin 0 -> 350 bytes .../plugins/emoticons/img/smiley-yell.gif | Bin 0 -> 336 bytes .../tinymce/plugins/emoticons/plugin.min.js | 1 + static/tinymce/plugins/fullpage/plugin.min.js | 1 + .../tinymce/plugins/fullscreen/plugin.min.js | 1 + static/tinymce/plugins/help/img/logo.png | Bin 0 -> 13208 bytes static/tinymce/plugins/help/plugin.min.js | 1 + static/tinymce/plugins/hr/plugin.min.js | 1 + static/tinymce/plugins/image/plugin.min.js | 1 + .../tinymce/plugins/imagetools/plugin.min.js | 1 + .../tinymce/plugins/importcss/plugin.min.js | 1 + .../plugins/insertdatetime/plugin.min.js | 1 + .../plugins/legacyoutput/plugin.min.js | 1 + static/tinymce/plugins/link/plugin.min.js | 1 + static/tinymce/plugins/lists/plugin.min.js | 1 + static/tinymce/plugins/media/plugin.min.js | 1 + .../tinymce/plugins/nonbreaking/plugin.min.js | 1 + .../tinymce/plugins/noneditable/plugin.min.js | 1 + .../tinymce/plugins/pagebreak/plugin.min.js | 1 + static/tinymce/plugins/paste/plugin.min.js | 1 + static/tinymce/plugins/preview/plugin.min.js | 1 + static/tinymce/plugins/print/plugin.min.js | 1 + static/tinymce/plugins/save/plugin.min.js | 1 + .../plugins/searchreplace/plugin.min.js | 1 + .../plugins/spellchecker/plugin.min.js | 1 + static/tinymce/plugins/tabfocus/plugin.min.js | 1 + static/tinymce/plugins/table/plugin.min.js | 1 + static/tinymce/plugins/template/plugin.min.js | 1 + .../tinymce/plugins/textcolor/plugin.min.js | 1 + .../tinymce/plugins/textpattern/plugin.min.js | 1 + static/tinymce/plugins/toc/plugin.min.js | 1 + .../plugins/visualblocks/css/visualblocks.css | 154 ++++++ .../plugins/visualblocks/plugin.min.js | 1 + .../tinymce/plugins/visualchars/plugin.min.js | 1 + .../tinymce/plugins/wordcount/plugin.min.js | 1 + .../skins/lightgray/content.inline.min.css | 1 + .../tinymce/skins/lightgray/content.min.css | 1 + .../skins/lightgray/content.mobile.min.css | 1 + .../skins/lightgray/fonts/tinymce-mobile.woff | Bin 0 -> 4624 bytes .../skins/lightgray/fonts/tinymce-small.eot | Bin 0 -> 9492 bytes .../skins/lightgray/fonts/tinymce-small.svg | 63 +++ .../skins/lightgray/fonts/tinymce-small.ttf | Bin 0 -> 9304 bytes .../skins/lightgray/fonts/tinymce-small.woff | Bin 0 -> 9380 bytes .../tinymce/skins/lightgray/fonts/tinymce.eot | Bin 0 -> 18808 bytes .../tinymce/skins/lightgray/fonts/tinymce.svg | 131 +++++ .../tinymce/skins/lightgray/fonts/tinymce.ttf | Bin 0 -> 18644 bytes .../skins/lightgray/fonts/tinymce.woff | Bin 0 -> 18720 bytes static/tinymce/skins/lightgray/img/anchor.gif | Bin 0 -> 53 bytes static/tinymce/skins/lightgray/img/loader.gif | Bin 0 -> 2608 bytes static/tinymce/skins/lightgray/img/object.gif | Bin 0 -> 152 bytes static/tinymce/skins/lightgray/img/trans.gif | Bin 0 -> 43 bytes static/tinymce/skins/lightgray/skin.min.css | 1 + .../skins/lightgray/skin.mobile.min.css | 2 + static/tinymce/themes/inlite/theme.min.js | 1 + static/tinymce/themes/mobile/theme.min.js | 1 + static/tinymce/themes/modern/theme.min.js | 1 + static/tinymce/tinymce.min.js | 2 + 102 files changed, 1219 insertions(+) create mode 100644 article/__pycache__/adminx.cpython-36.pyc create mode 100644 article/adminx.py create mode 100644 article/migrations/0001_initial.py create mode 100644 article/migrations/0002_article_visible.py create mode 100644 article/migrations/__pycache__/0001_initial.cpython-36.pyc create mode 100644 article/migrations/__pycache__/0002_article_visible.cpython-36.pyc create mode 100755 static/tinymce/jquery.tinymce.min.js create mode 100755 static/tinymce/langs/readme.md create mode 100755 static/tinymce/license.txt create mode 100755 static/tinymce/plugins/advlist/plugin.min.js create mode 100755 static/tinymce/plugins/anchor/plugin.min.js create mode 100755 static/tinymce/plugins/autolink/plugin.min.js create mode 100755 static/tinymce/plugins/autoresize/plugin.min.js create mode 100755 static/tinymce/plugins/autosave/plugin.min.js create mode 100755 static/tinymce/plugins/bbcode/plugin.min.js create mode 100755 static/tinymce/plugins/charmap/plugin.min.js create mode 100755 static/tinymce/plugins/code/plugin.min.js create mode 100755 static/tinymce/plugins/codesample/css/prism.css create mode 100755 static/tinymce/plugins/codesample/plugin.min.js create mode 100755 static/tinymce/plugins/colorpicker/plugin.min.js create mode 100755 static/tinymce/plugins/contextmenu/plugin.min.js create mode 100755 static/tinymce/plugins/directionality/plugin.min.js create mode 100755 static/tinymce/plugins/emoticons/img/smiley-cool.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-cry.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-embarassed.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-foot-in-mouth.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-frown.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-innocent.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-kiss.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-laughing.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-money-mouth.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-sealed.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-smile.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-surprised.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-tongue-out.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-undecided.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-wink.gif create mode 100755 static/tinymce/plugins/emoticons/img/smiley-yell.gif create mode 100755 static/tinymce/plugins/emoticons/plugin.min.js create mode 100755 static/tinymce/plugins/fullpage/plugin.min.js create mode 100755 static/tinymce/plugins/fullscreen/plugin.min.js create mode 100755 static/tinymce/plugins/help/img/logo.png create mode 100755 static/tinymce/plugins/help/plugin.min.js create mode 100755 static/tinymce/plugins/hr/plugin.min.js create mode 100755 static/tinymce/plugins/image/plugin.min.js create mode 100755 static/tinymce/plugins/imagetools/plugin.min.js create mode 100755 static/tinymce/plugins/importcss/plugin.min.js create mode 100755 static/tinymce/plugins/insertdatetime/plugin.min.js create mode 100755 static/tinymce/plugins/legacyoutput/plugin.min.js create mode 100755 static/tinymce/plugins/link/plugin.min.js create mode 100755 static/tinymce/plugins/lists/plugin.min.js create mode 100755 static/tinymce/plugins/media/plugin.min.js create mode 100755 static/tinymce/plugins/nonbreaking/plugin.min.js create mode 100755 static/tinymce/plugins/noneditable/plugin.min.js create mode 100755 static/tinymce/plugins/pagebreak/plugin.min.js create mode 100755 static/tinymce/plugins/paste/plugin.min.js create mode 100755 static/tinymce/plugins/preview/plugin.min.js create mode 100755 static/tinymce/plugins/print/plugin.min.js create mode 100755 static/tinymce/plugins/save/plugin.min.js create mode 100755 static/tinymce/plugins/searchreplace/plugin.min.js create mode 100755 static/tinymce/plugins/spellchecker/plugin.min.js create mode 100755 static/tinymce/plugins/tabfocus/plugin.min.js create mode 100755 static/tinymce/plugins/table/plugin.min.js create mode 100755 static/tinymce/plugins/template/plugin.min.js create mode 100755 static/tinymce/plugins/textcolor/plugin.min.js create mode 100755 static/tinymce/plugins/textpattern/plugin.min.js create mode 100755 static/tinymce/plugins/toc/plugin.min.js create mode 100755 static/tinymce/plugins/visualblocks/css/visualblocks.css create mode 100755 static/tinymce/plugins/visualblocks/plugin.min.js create mode 100755 static/tinymce/plugins/visualchars/plugin.min.js create mode 100755 static/tinymce/plugins/wordcount/plugin.min.js create mode 100755 static/tinymce/skins/lightgray/content.inline.min.css create mode 100755 static/tinymce/skins/lightgray/content.min.css create mode 100755 static/tinymce/skins/lightgray/content.mobile.min.css create mode 100755 static/tinymce/skins/lightgray/fonts/tinymce-mobile.woff create mode 100755 static/tinymce/skins/lightgray/fonts/tinymce-small.eot create mode 100755 static/tinymce/skins/lightgray/fonts/tinymce-small.svg create mode 100755 static/tinymce/skins/lightgray/fonts/tinymce-small.ttf create mode 100755 static/tinymce/skins/lightgray/fonts/tinymce-small.woff create mode 100755 static/tinymce/skins/lightgray/fonts/tinymce.eot create mode 100755 static/tinymce/skins/lightgray/fonts/tinymce.svg create mode 100755 static/tinymce/skins/lightgray/fonts/tinymce.ttf create mode 100755 static/tinymce/skins/lightgray/fonts/tinymce.woff create mode 100755 static/tinymce/skins/lightgray/img/anchor.gif create mode 100755 static/tinymce/skins/lightgray/img/loader.gif create mode 100755 static/tinymce/skins/lightgray/img/object.gif create mode 100755 static/tinymce/skins/lightgray/img/trans.gif create mode 100755 static/tinymce/skins/lightgray/skin.min.css create mode 100755 static/tinymce/skins/lightgray/skin.mobile.min.css create mode 100755 static/tinymce/themes/inlite/theme.min.js create mode 100755 static/tinymce/themes/mobile/theme.min.js create mode 100755 static/tinymce/themes/modern/theme.min.js create mode 100755 static/tinymce/tinymce.min.js diff --git a/article/__pycache__/admin.cpython-36.pyc b/article/__pycache__/admin.cpython-36.pyc index 828f2a36d47bf6c0d75f3c09938a5e2ddba664a8..0ba6d3034422787962c5f7925181a8c04ad54efe 100644 GIT binary patch literal 503 zcmYLFJx{|h5ViAZsOf%r>anHX7_ zxJwIIy60z~-}&8L4Tpob%h&3Q5b^=>w<2I;2zw16h@hG@w4xMwpo0f;M?@&17a}4_ z*Wo^_aF5rCOl7nW;9Wc;dGZNrl2aeoqERgnda=N(-xUKHL)bF_Nh&Hx6^OJ7MFMi> zvx#wPq2&bSK2XBPPB|@oQg?2(F+SUNbFJ)(i`q$_J}ax{T2AxWU}=*eqzDY*1R#$* za|ww51e_ zO{-Na%lhEB>^m;DJA np^q&5=b4d9@F$H=j}!Vgcwnbc&9j?BcefP($6;iYh3DZ9mVkj0 delta 132 zcmey)yp}QDn3tF9?8E*jdjews{Cd?{IpdFlCj$@zIDMVU!OAOlu16fpy-BId~kjK;#ZIBatB QQ%ZAE?HGZA#X!se0PPAJo&W#< diff --git a/article/__pycache__/adminx.cpython-36.pyc b/article/__pycache__/adminx.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..934b0ca9c9dd10ae43badb84d81cdb3e6e10f97d GIT binary patch literal 1870 zcma)7OK%%D5Z+y`R;$&nEIW3ZS5u`xfhw(~L(ofM7;#cG&7lDryASZPpu~wpXCDg5 zwQOJ0OK!dOl0T4N(f`3yfubn-7kcWDQk@5K=&m?BoEehy_=dWZWyyqhv|YwDE<3bSCNwF# zwCn6zMOtPwb9_|v$_={Vdk;L`=JC%SkD>pZ&`t1gT{R}=%}8!v+y;eE8;1j4s)hA$2IB@A%eWHywqn3_*&CbLz1u9bC}BusAEPv_vgS~jXu%{am1#elG+Niy zdH1_UOrH)8HIrKIpe2nS)b*@@^PRcYi!aCH<#IWiInf9m9tLvL?nfF~toL3C!ilbM zU&i^9T3R!EtlRO?uw~*ruUH9rZjwAlSDM1|X`Vl8Sh3c$4 zsJ&~=wvoIB10~$Ya$39+)4j(O9D>%OnjK*{@;che8C#AHyh2}Y#nP=YeOMnOKQ zYps?Rhp&TJakuQckC9x(p=|HRe&{>N|MbiPji6_t$sQE-gcWPwOovUUwd4r+Cc=IH zdhzPd-+q0M!$}EMlPi6O*-jLuGIyYQucx2jMju^x+CopQ^6GZqt=S+hkn$1ka zK{HXDx1T)SWykCkOA^Z4c(hw7KeL?mWavA=u=8%cQrj{)7iv+kGqd&PEJrjwRVH&X z;6mHNnoI$c(|P{H-9@G+p>XUfg|si>1hI)}&sRuzZz6~2(k>2_BC#b8{U}Im>8)mX zgZ9=S9=TpsCOUO!mIT!%TTMpjaouQXQ!ZPU*g{MENAaWuy6jkDaWA__=+1iCqG)EK zQX}EoMOqi=_B*4e#al5++X6d5D+r=?{2+JM@~& z_K7Q`lUbaY?0#LAuVpq=dDD`?+r)N-iT74_!+wA>bqz`E$A0R6iX$ccbc^)uoA!f# F{4d9I-^>62 literal 0 HcmV?d00001 diff --git a/article/__pycache__/models.cpython-36.pyc b/article/__pycache__/models.cpython-36.pyc index f854f5f34da5ea78b4c0e0633960bc4eb3ee2ad6..13a6f49b5ca5c838e64f83ed54da85df84fbde68 100644 GIT binary patch literal 1443 zcmZuxOK&4Z5bmCr$H~~q=CLo>T?x315cYv9LRl^1ArW6T9O%nvJk_z=+nxzMGeDvo zki6Hxo`7F~v?urn{0c68MM26B;KGTjwv7yIkGi^gs;lbzs;1}NUT^E$w_k|ge8zrf z8zVsd2xmP&0Svfib1pb1-P7LO7d~enG4LUH&LEI{7A$-bLim)W(GB{rl-p=tfz&l> z-H%U>KmAZi4F%cOBShs0XZ<}2$pi-`Jn7E@;NV?x5uzSZ4hXM2(ZOAemIy6fXX!wU z`j*^YFp;dzay-$!@A3z@x*ui}t_dBo)x6or3_F(@x6Sv?14sqRs+i(ZhePnbO z?jfUl3r`%tePr{{b{?BX6c0iuyt!~gO$=jyN%Id2u2T%-)n{v}Z$JBR=4aYh!pV^>nwYL28Kd~L`j~{=w zeB{*Y7eCz`x#PA|OeG1zC=MUL*j<%$ur~e+I304plMUbtzJhFsj@d_H z`xA_PTA6H#KlKbHF^41w?NZ#KqcI&NBJ}=$FxJL`YDt4unhplF_>#?5HRCpHRHG%9 z+-3VuqU|heOI6^PpJjK^ah+>_O?ks!p#7gg>5gzZgzL)yT=?KkxCp>U{=r4E4s$G< zT*Rw-*B8Ba&f2k7^)#afj?&P^SytwAL}9nG4Exb)(vvLvqRsWn62lmaGSuo~ zIoT+jW9F(CP`3L7j(!X=54d>)mC;MjP>)Ox1?qj$cTiv_-X#4k(hto8(jSs|M1uNj zyN~fsxL<QzBM0i`Km9f1KkjaUf%jN52lc0Hx0{Iju0>q}Y^|8C6^QEd4 z@ku@@8#$4ykg<_DG#JWIOAIkFuah7auVQS7XBTHp4lz%>K2Pw8_%1$)7rV!u8l{o# u!YnT*)d0qhoai^IJf9bGu)GILpy4t74xP`dQrh^vWtZNk`nW=4#^`Tf+*E)7 delta 126 zcmZ3?y^1l}n3tF9?8E*jO9lpp$3P4ROhA?c5Elyoi4=wu#vF!R#wbQch7_h?22JLd zKv4!w##?N;`6;P6#eSMhw>VR>67$mY^-_|GK$=%F6tMuQB9_T|OlE>MKy{@#sdkJ& Jp<*Cr000ok88H9= diff --git a/article/admin.py b/article/admin.py index 8c38f3f..0a1cd10 100644 --- a/article/admin.py +++ b/article/admin.py @@ -1,3 +1,8 @@ from django.contrib import admin +from article.models import * # Register your models here. +class ArticleAdmin(admin.ModelAdmin): + list_display = ('id','title','author','publish_date','visible') + +admin.site.register(Article,ArticleAdmin) diff --git a/article/adminx.py b/article/adminx.py new file mode 100644 index 0000000..47ca6f3 --- /dev/null +++ b/article/adminx.py @@ -0,0 +1,54 @@ +#-*- coding:UTF-8 -*- +from article.models import * +import xadmin +from xadmin import views +from xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side +from xadmin.plugins.inline import Inline +from xadmin.plugins.batch import BatchChangeAction + + +class MainDashboard(object): + widgets = [ + [ + {"type": "html", "title": "Notice", "content": "

Welcome to Xadmin!

this is html text

"}, + # {"type": "chart", "model": "app.accessrecord", 'chart': 'user_count', 'params': {'_p_date__gte': '2013-01-08', 'p': 1, '_p_date__lt': '2013-01-29'}}, + {"type": "list", "model": "cmdb.device", 'params': {'o':'-uptime'}}, + ], + [ + {"type": "qbutton", "title": "Quick Start", "btns": [{'model': Article}, {'model':Article}, {'title': "Google", 'url': "http://www.google.com"}]}, + {"type": "addform", "model": Article}, + ] + ] +xadmin.site.register(views.website.IndexView, MainDashboard) + + +class BaseSetting(object): + enable_themes = True + use_bootswatch = True +xadmin.site.register(views.BaseAdminView, BaseSetting) + + +class GlobalSetting(object): + #global_search_models = [Host, IDC] + # global_models_icon = { + # MemoStaff:'fa fa-user' + # } + menu_style = 'accordion' + site_title = '物志' +# def get_site_menu(self): +# return ({'title':'友情链接', 'menus':( +# {'title':'百度','url':'test'}, +# )}, +# ) +xadmin.site.register(views.CommAdminView, GlobalSetting) + +class ArticleAdminx(object): + list_display = ('id','title','author','publish_date') + list_display_links = ('title',) + list_editable = ['tag'] + + search_fields = ['title','detail','tag'] + relfield_style = 'fk-ajax' + reversion_enable = True +xadmin.site.register(Article,ArticleAdminx) + diff --git a/article/migrations/0001_initial.py b/article/migrations/0001_initial.py new file mode 100644 index 0000000..391f811 --- /dev/null +++ b/article/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 2.0.2 on 2018-02-23 14:08 + +from django.db import migrations, models +import tinymce.models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Article', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('author', models.CharField(default='小志', max_length=128)), + ('publish_date', models.DateTimeField(auto_now_add=True)), + ('title', models.CharField(max_length=1024)), + ('detail', tinymce.models.HTMLField()), + ('tag', models.CharField(blank=True, max_length=128, null=True)), + ('readtime', models.IntegerField(default=0)), + ], + options={ + 'db_table': 'articles', + 'ordering': ['-publish_date'], + }, + ), + ] diff --git a/article/migrations/0002_article_visible.py b/article/migrations/0002_article_visible.py new file mode 100644 index 0000000..9c914af --- /dev/null +++ b/article/migrations/0002_article_visible.py @@ -0,0 +1,18 @@ +# Generated by Django 2.0.2 on 2018-02-23 14:54 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('article', '0001_initial'), + ] + + operations = [ + migrations.AddField( + model_name='article', + name='visible', + field=models.CharField(choices=[('Y', '是'), ('N', '否')], default='N', max_length=64), + ), + ] diff --git a/article/migrations/__pycache__/0001_initial.cpython-36.pyc b/article/migrations/__pycache__/0001_initial.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee4b81ba71a9395486eb7fa682e4fef737985c60 GIT binary patch literal 950 zcmY*Yy>in)5WYLfmSoG03I9|S6u7_+L(4G9gb6T1(j+u$G-vNcKIbHv(`mq|m1 zDrk5CI!Zd;<60&~UV)001ucW=MlyC=O~hu{Ak{d5TVP5${@l(%seBiw)h zRV1YmOd=n3D!mWhD?Qab3tek{KeYlHk z?%81flE#tscC?XGB`lM$hZMUDEmN+S@rhX4pb%PeB~OKI^U}<6UAB?f`HxTMzrJ34 zKoKK65XZb!2D`)G$4X?0nb~krPLwQWF>oV>)P@+I$65X^<^Z;3q)|c=9LkXD5cAkJ z2*ahaj^WABv8{>X*+~PrS*euuwcuc6Dm1OmrMg>%`MfE=IPE?9??`5Sn8b!pkeZ)s zKq6U{*v)u~Y>uT+P*^Wt)YCi|ZdgB#D=dy}CysHrrK;pGj^CDCtr1UV(qKny2x1{J z5ZP3ULbIxr?k-kn#C~-xG+sYqgB>KjSDj>o-5J-7*n5s%M@XbmJtMPaIu$l}d9?q! zv4yWPBNDL==;RBrzIES;eu$at?a%i34bG<+7gEcz7#~U_im`xco++7$@wzkPt2;a1 z+S+;?uPKZcOIb5cVUxdE72gLyr`JF3Y1t=uSvL!!{=h(pb67T-GZmS?nx=nrlzGl3#!X z4gbe20_lDL4He_;o(@|ceV*~meBb!Ve4agga9MumjQwQ)t%&du9e1A$FyMx@yyUGY z1!u1q2$1ItB=WWVEK3Q|3Ckx}^p@qqXRU5*HR!%`e%khc#?>Koy%GXPblg)i$Vv{Z z6fkReDKT14fK%b=I)*viY6MInf%HN`b|L9S0teLUwol(&_waFL2VEQVv&CZZNa;=w zx-vfgpq)M?H-Gm>QlsBret5nd;jhcDSAjq-eO#}4U8D0c;90db1F^3@DuZ1!tSFw1 z{8d-A=%dk2&NLcW=E6>>gq?;u!Ujz?-Qg_YgMd??s4-V5pD9JPwgw5$lzP9dOsE%b zfE(-pyIP~Of)agl4Dd4av4OfzU#u!S-hI|@a6jB{%-#*Hg8BQpc&S2n-muxBdz9~!XFJu;gAfcRj+3UH#MYlIQ`4>xy0)UEZtb@2;v`DE ztnffXsRWwTX_X(U@q(zP@d^Z~2$HXvTs7Lr*xrz-ipl1U5t z-C!Hl=s>Ab^kWR}(2q+F_95+Qu=;$U8nQZ2I(6pJQHtKf;6r#1egnUN@4>6E0AGdY zU>Ed5lHMyFXTGOBhbSxN^VPC-a%2w|oZC8aVcdO|e1lZT1Q{TGWSw)@xs7;f=kg&d zXa-b4k*}DA6g*bY3MffV$(n3BLlx)j0?KjU$-AxK1fWDoGGSaf99a%mkaI@5Y=afF z0B6~ilMRtF>0mh;iIyl$z4AdG7w9`W@$I<#7y2*y5xqIs_RW#ej@fBRHXa=t0F>wrsa3|Uf9Ys?}1BJd#h@UNQt47%UZB>On8AOo zAXECS`(FcZr|YRgQ6-Qy3$drwPbm76#8Bq=t&GPiJsn}0mff->uw@a zXZ)s_oUYoBklD*KDJ8#C?Zt|Ia!o6MMW_cbY0BLxr40gP4+L7j2u{Q>-V=TJ4C!L zR%hgntu&t_ye%zYwZ10dWHOVI%&f~F{C}pNFVAi4zHJHrUnJF4m=TDBC+Zk8CT>hv!p|(m)iRk~KzFmELIBt17O4hS zA$I;S2L6})SNNCl@8|E}593eUESTWHKRHZagNc9oa)1R%UI+#L|+C_=41;+|1(Q%=|pP$yfBXxy87E zj^N?vW#E6enaAKQ-^2xClX>mG%kc2?Fz~k^gWm+M*qRBITO>uT&*HTliETjr_mZrMrUIi;SN<(WzD zmU*5z2F0G4UMXpTwzftFh8DU8#<~WU3I>)|CI(ifrh0~^#+HT#T$>pa{>v{a5CEc0 z1&jjQ866mz8<_PtZcS%Dz!hj<;^qQqI(auU7Ql4E^($y{?_l6z{>H$~ z$(6>jfqfQR66iMK|`su jIJGD~Gev3p*Jh@7?9=s=7}>XfN@Ubz+%DY9^mY*dl~})C diff --git a/edconline/__pycache__/settings.cpython-36.pyc b/edconline/__pycache__/settings.cpython-36.pyc index 4aca1bf6e5f0a65be13fbeb6d4488f496ba2cfbd..7de9b2e81916327ca077e23dfd0891ad4df063c0 100644 GIT binary patch delta 1359 zcmZWoOH{DZ4aUaK*u-%b<0SZz_aVtwR% z{WI6M`3x|A1@6FIwD+97_izlBPaOE*%#k*~3isec^1KK4^ZBEEZc5vC`7Er!gWoM) zhgGb@!xPW$Iq)%=pPZ1@bNC#r@&1>5`8Eu3Qj@Y?7KW*pAS%YBN-;4Y3>q0BV@j(oWwtMsUqLCM zGmr^-MrtKOX^vQmBJqL*<4}0W4s`;a&Xi#XGR;KT4F}rWPb*->ju(g|%_}HpBr>D( za*JHq&?^!#RV)dU1xW=-C@&zAVqzvwySllU(>f^eS}J`+VONL1q@h|omMM~hPDj>f zJ>oOPkSblRpyuoH7>hlYdlDbHSY6@m7gnDUpszygnL%MD(hm&lSFmy)4@tPBaN5gK zBYQ^#Dk&8zSZ5~x_F0!yBl(!hqWo)eS*v*c|948C4N6T?bw93>ITCEB*M)k8M%Ad1 zB0-7wa^J8EQTnV9cTf#KZuB%MN_|+)wmHqm0vuBG_VS?w6Y#nhqEK1f(W;Zubun4Y z7d+xeM;+2hcM_y2!~+b|x8sExI^ma1fD!Uq9A-W>H(jD5C-&0jj8> zZdas)P}b0}3K~tc&_)NFR;PrmskS5r+p>-wbQ8)r+entNn=_&*rzB@WIY z(T6EnEfvJ*zbNrBNPHaSG`eIQJ3VpABbERIsp3>>&{B7Vjs}L({5u-vEG_W8iqB?u g)aTjj(vzm~$LbBo?b*C^K}BXFdMMsZxA-*IzdUh1$N&HU diff --git a/edconline/__pycache__/urls.cpython-36.pyc b/edconline/__pycache__/urls.cpython-36.pyc index 38efcf8533f762aecf9ab7857f1ef8f5405908a7..1203b6ca6614583cabf9f784054731c60754a02b 100644 GIT binary patch delta 225 zcmaFQv4T_Cn3tDpne>Dx2^I#1#|%h-9msY7;^HY2mF=Ta7*kksxT3gHnX85kK- z*`PE>77v)ulEMa*>DV)uWU~w)Wn;XPVXNlrZVF_l?T9i{fIfhx1QDAZza|}B>M11lEW*asEpsR`mCJV7R%Si#5 aEQ~yi0*o9$l7o?h2?!ZESa^Uu9!3DJUM-~n delta 189 zcmZ3%`JO}Bn3tDJ_f>z?O=bp$#|%h-4ajx?;^Kyh%Jy!lOj%sb42%q^Y*3mbiyO>m zNnr!Z@nrEfGo`Ymumj~`Y>rgc6wYSGW~OxJD83YyUR0hV zS$d^KImMd%lNT|^OlD`XV&ezeTEsuuoyA#749H|*0&&(n=c().get(i[0].id)))return n.getContent()},a=function(e){var t=null;return e&&e.id&&r.tinymce&&(t=c().get(e.id)),t},o=function(e){return!!(e&&e.length&&r.tinymce&&e.is(":tinymce"))},l={};i.each(["text","html","val"],function(t,r){var c=l[r]=i.fn[r],u="text"===r;i.fn[r]=function(t){var r=this;if(!o(r))return c.apply(r,arguments);if(t!==e)return n.call(r.filter(":tinymce"),t),c.apply(r.not(":tinymce"),arguments),r;var l="",s=arguments;return(u?r:r.eq(0)).each(function(e,t){var n=a(t);l+=n?u?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):c.apply(i(t),s)}),l}}),i.each(["append","prepend"],function(t,n){var r=l[n]=i.fn[n],c="prepend"===n;i.fn[n]=function(t){var n=this;return o(n)?t!==e?("string"==typeof t&&n.filter(":tinymce").each(function(e,n){var i=a(n);i&&i.setContent(c?t+i.getContent():i.getContent()+t)}),r.apply(n.not(":tinymce"),arguments),n):void 0:r.apply(n,arguments)}}),i.each(["remove","replaceWith","replaceAll","empty"],function(e,n){var r=l[n]=i.fn[n];i.fn[n]=function(){return t.call(this,n),r.apply(this,arguments)}}),l.attr=i.fn.attr,i.fn.attr=function(t,r){var c=this,u=arguments;if(!t||"value"!==t||!o(c))return l.attr.apply(c,u);if(r!==e)return n.call(c.filter(":tinymce"),r),l.attr.apply(c.not(":tinymce"),u),c;var s=c[0],f=a(s);return f?f.getContent({save:!0}):l.attr.apply(i(s),u)}}}(); \ No newline at end of file diff --git a/static/tinymce/langs/readme.md b/static/tinymce/langs/readme.md new file mode 100755 index 0000000..a52bf03 --- /dev/null +++ b/static/tinymce/langs/readme.md @@ -0,0 +1,3 @@ +This is where language files should be placed. + +Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/ diff --git a/static/tinymce/license.txt b/static/tinymce/license.txt new file mode 100755 index 0000000..b17fc90 --- /dev/null +++ b/static/tinymce/license.txt @@ -0,0 +1,504 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 Free Software Foundation, Inc. + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + +[This is the first released version of the Lesser GPL. It also counts + as the successor of the GNU Library Public License, version 2, hence + the version number 2.1.] + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +Licenses are intended to guarantee your freedom to share and change +free software--to make sure the software is free for all its users. + + This license, the Lesser General Public License, applies to some +specially designated software packages--typically libraries--of the +Free Software Foundation and other authors who decide to use it. You +can use it too, but we suggest you first think carefully about whether +this license or the ordinary General Public License is the better +strategy to use in any particular case, based on the explanations below. + + When we speak of free software, we are referring to freedom of use, +not price. Our General Public Licenses are designed to make sure that +you have the freedom to distribute copies of free software (and charge +for this service if you wish); that you receive source code or can get +it if you want it; that you can change the software and use pieces of +it in new free programs; and that you are informed that you can do +these things. + + To protect your rights, we need to make restrictions that forbid +distributors to deny you these rights or to ask you to surrender these +rights. These restrictions translate to certain responsibilities for +you if you distribute copies of the library or if you modify it. + + For example, if you distribute copies of the library, whether gratis +or for a fee, you must give the recipients all the rights that we gave +you. You must make sure that they, too, receive or can get the source +code. If you link other code with the library, you must provide +complete object files to the recipients, so that they can relink them +with the library after making changes to the library and recompiling +it. And you must show them these terms so they know their rights. + + We protect your rights with a two-step method: (1) we copyright the +library, and (2) we offer you this license, which gives you legal +permission to copy, distribute and/or modify the library. + + To protect each distributor, we want to make it very clear that +there is no warranty for the free library. Also, if the library is +modified by someone else and passed on, the recipients should know +that what they have is not the original version, so that the original +author's reputation will not be affected by problems that might be +introduced by others. + + Finally, software patents pose a constant threat to the existence of +any free program. We wish to make sure that a company cannot +effectively restrict the users of a free program by obtaining a +restrictive license from a patent holder. Therefore, we insist that +any patent license obtained for a version of the library must be +consistent with the full freedom of use specified in this license. + + Most GNU software, including some libraries, is covered by the +ordinary GNU General Public License. This license, the GNU Lesser +General Public License, applies to certain designated libraries, and +is quite different from the ordinary General Public License. We use +this license for certain libraries in order to permit linking those +libraries into non-free programs. + + When a program is linked with a library, whether statically or using +a shared library, the combination of the two is legally speaking a +combined work, a derivative of the original library. The ordinary +General Public License therefore permits such linking only if the +entire combination fits its criteria of freedom. The Lesser General +Public License permits more lax criteria for linking other code with +the library. + + We call this license the "Lesser" General Public License because it +does Less to protect the user's freedom than the ordinary General +Public License. It also provides other free software developers Less +of an advantage over competing non-free programs. These disadvantages +are the reason we use the ordinary General Public License for many +libraries. However, the Lesser license provides advantages in certain +special circumstances. + + For example, on rare occasions, there may be a special need to +encourage the widest possible use of a certain library, so that it becomes +a de-facto standard. To achieve this, non-free programs must be +allowed to use the library. A more frequent case is that a free +library does the same job as widely used non-free libraries. In this +case, there is little to gain by limiting the free library to free +software only, so we use the Lesser General Public License. + + In other cases, permission to use a particular library in non-free +programs enables a greater number of people to use a large body of +free software. For example, permission to use the GNU C Library in +non-free programs enables many more people to use the whole GNU +operating system, as well as its variant, the GNU/Linux operating +system. + + Although the Lesser General Public License is Less protective of the +users' freedom, it does ensure that the user of a program that is +linked with the Library has the freedom and the wherewithal to run +that program using a modified version of the Library. + + The precise terms and conditions for copying, distribution and +modification follow. Pay close attention to the difference between a +"work based on the library" and a "work that uses the library". The +former contains code derived from the library, whereas the latter must +be combined with the library in order to run. + + GNU LESSER GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License Agreement applies to any software library or other +program which contains a notice placed by the copyright holder or +other authorized party saying it may be distributed under the terms of +this Lesser General Public License (also called "this License"). +Each licensee is addressed as "you". + + A "library" means a collection of software functions and/or data +prepared so as to be conveniently linked with application programs +(which use some of those functions and data) to form executables. + + The "Library", below, refers to any such software library or work +which has been distributed under these terms. A "work based on the +Library" means either the Library or any derivative work under +copyright law: that is to say, a work containing the Library or a +portion of it, either verbatim or with modifications and/or translated +straightforwardly into another language. (Hereinafter, translation is +included without limitation in the term "modification".) + + "Source code" for a work means the preferred form of the work for +making modifications to it. For a library, complete source code means +all the source code for all modules it contains, plus any associated +interface definition files, plus the scripts used to control compilation +and installation of the library. + + Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running a program using the Library is not restricted, and output from +such a program is covered only if its contents constitute a work based +on the Library (independent of the use of the Library in a tool for +writing it). Whether that is true depends on what the Library does +and what the program that uses the Library does. + + 1. You may copy and distribute verbatim copies of the Library's +complete source code as you receive it, in any medium, provided that +you conspicuously and appropriately publish on each copy an +appropriate copyright notice and disclaimer of warranty; keep intact +all the notices that refer to this License and to the absence of any +warranty; and distribute a copy of this License along with the +Library. + + You may charge a fee for the physical act of transferring a copy, +and you may at your option offer warranty protection in exchange for a +fee. + + 2. You may modify your copy or copies of the Library or any portion +of it, thus forming a work based on the Library, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) The modified work must itself be a software library. + + b) You must cause the files modified to carry prominent notices + stating that you changed the files and the date of any change. + + c) You must cause the whole of the work to be licensed at no + charge to all third parties under the terms of this License. + + d) If a facility in the modified Library refers to a function or a + table of data to be supplied by an application program that uses + the facility, other than as an argument passed when the facility + is invoked, then you must make a good faith effort to ensure that, + in the event an application does not supply such function or + table, the facility still operates, and performs whatever part of + its purpose remains meaningful. + + (For example, a function in a library to compute square roots has + a purpose that is entirely well-defined independent of the + application. Therefore, Subsection 2d requires that any + application-supplied function or table used by this function must + be optional: if the application does not supply it, the square + root function must still compute square roots.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Library, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Library, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote +it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Library. + +In addition, mere aggregation of another work not based on the Library +with the Library (or with a work based on the Library) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may opt to apply the terms of the ordinary GNU General Public +License instead of this License to a given copy of the Library. To do +this, you must alter all the notices that refer to this License, so +that they refer to the ordinary GNU General Public License, version 2, +instead of to this License. (If a newer version than version 2 of the +ordinary GNU General Public License has appeared, then you can specify +that version instead if you wish.) Do not make any other change in +these notices. + + Once this change is made in a given copy, it is irreversible for +that copy, so the ordinary GNU General Public License applies to all +subsequent copies and derivative works made from that copy. + + This option is useful when you wish to copy part of the code of +the Library into a program that is not a library. + + 4. You may copy and distribute the Library (or a portion or +derivative of it, under Section 2) in object code or executable form +under the terms of Sections 1 and 2 above provided that you accompany +it with the complete corresponding machine-readable source code, which +must be distributed under the terms of Sections 1 and 2 above on a +medium customarily used for software interchange. + + If distribution of object code is made by offering access to copy +from a designated place, then offering equivalent access to copy the +source code from the same place satisfies the requirement to +distribute the source code, even though third parties are not +compelled to copy the source along with the object code. + + 5. A program that contains no derivative of any portion of the +Library, but is designed to work with the Library by being compiled or +linked with it, is called a "work that uses the Library". Such a +work, in isolation, is not a derivative work of the Library, and +therefore falls outside the scope of this License. + + However, linking a "work that uses the Library" with the Library +creates an executable that is a derivative of the Library (because it +contains portions of the Library), rather than a "work that uses the +library". The executable is therefore covered by this License. +Section 6 states terms for distribution of such executables. + + When a "work that uses the Library" uses material from a header file +that is part of the Library, the object code for the work may be a +derivative work of the Library even though the source code is not. +Whether this is true is especially significant if the work can be +linked without the Library, or if the work is itself a library. The +threshold for this to be true is not precisely defined by law. + + If such an object file uses only numerical parameters, data +structure layouts and accessors, and small macros and small inline +functions (ten lines or less in length), then the use of the object +file is unrestricted, regardless of whether it is legally a derivative +work. (Executables containing this object code plus portions of the +Library will still fall under Section 6.) + + Otherwise, if the work is a derivative of the Library, you may +distribute the object code for the work under the terms of Section 6. +Any executables containing that work also fall under Section 6, +whether or not they are linked directly with the Library itself. + + 6. As an exception to the Sections above, you may also combine or +link a "work that uses the Library" with the Library to produce a +work containing portions of the Library, and distribute that work +under terms of your choice, provided that the terms permit +modification of the work for the customer's own use and reverse +engineering for debugging such modifications. + + You must give prominent notice with each copy of the work that the +Library is used in it and that the Library and its use are covered by +this License. You must supply a copy of this License. If the work +during execution displays copyright notices, you must include the +copyright notice for the Library among them, as well as a reference +directing the user to the copy of this License. Also, you must do one +of these things: + + a) Accompany the work with the complete corresponding + machine-readable source code for the Library including whatever + changes were used in the work (which must be distributed under + Sections 1 and 2 above); and, if the work is an executable linked + with the Library, with the complete machine-readable "work that + uses the Library", as object code and/or source code, so that the + user can modify the Library and then relink to produce a modified + executable containing the modified Library. (It is understood + that the user who changes the contents of definitions files in the + Library will not necessarily be able to recompile the application + to use the modified definitions.) + + b) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (1) uses at run time a + copy of the library already present on the user's computer system, + rather than copying library functions into the executable, and (2) + will operate properly with a modified version of the library, if + the user installs one, as long as the modified version is + interface-compatible with the version that the work was made with. + + c) Accompany the work with a written offer, valid for at + least three years, to give the same user the materials + specified in Subsection 6a, above, for a charge no more + than the cost of performing this distribution. + + d) If distribution of the work is made by offering access to copy + from a designated place, offer equivalent access to copy the above + specified materials from the same place. + + e) Verify that the user has already received a copy of these + materials or that you have already sent this user a copy. + + For an executable, the required form of the "work that uses the +Library" must include any data and utility programs needed for +reproducing the executable from it. However, as a special exception, +the materials to be distributed need not include anything that is +normally distributed (in either source or binary form) with the major +components (compiler, kernel, and so on) of the operating system on +which the executable runs, unless that component itself accompanies +the executable. + + It may happen that this requirement contradicts the license +restrictions of other proprietary libraries that do not normally +accompany the operating system. Such a contradiction means you cannot +use both them and the Library together in an executable that you +distribute. + + 7. You may place library facilities that are a work based on the +Library side-by-side in a single library together with other library +facilities not covered by this License, and distribute such a combined +library, provided that the separate distribution of the work based on +the Library and of the other library facilities is otherwise +permitted, and provided that you do these two things: + + a) Accompany the combined library with a copy of the same work + based on the Library, uncombined with any other library + facilities. This must be distributed under the terms of the + Sections above. + + b) Give prominent notice with the combined library of the fact + that part of it is a work based on the Library, and explaining + where to find the accompanying uncombined form of the same work. + + 8. You may not copy, modify, sublicense, link with, or distribute +the Library except as expressly provided under this License. Any +attempt otherwise to copy, modify, sublicense, link with, or +distribute the Library is void, and will automatically terminate your +rights under this License. However, parties who have received copies, +or rights, from you under this License will not have their licenses +terminated so long as such parties remain in full compliance. + + 9. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Library or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Library (or any work based on the +Library), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Library or works based on it. + + 10. Each time you redistribute the Library (or any work based on the +Library), the recipient automatically receives a license from the +original licensor to copy, distribute, link with or modify the Library +subject to these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties with +this License. + + 11. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Library at all. For example, if a patent +license would not permit royalty-free redistribution of the Library by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Library. + +If any portion of this section is held invalid or unenforceable under any +particular circumstance, the balance of the section is intended to apply, +and the section as a whole is intended to apply in other circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 12. If the distribution and/or use of the Library is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Library under this License may add +an explicit geographical distribution limitation excluding those countries, +so that distribution is permitted only in or among countries not thus +excluded. In such case, this License incorporates the limitation as if +written in the body of this License. + + 13. The Free Software Foundation may publish revised and/or new +versions of the Lesser General Public License from time to time. +Such new versions will be similar in spirit to the present version, +but may differ in detail to address new problems or concerns. + +Each version is given a distinguishing version number. If the Library +specifies a version number of this License which applies to it and +"any later version", you have the option of following the terms and +conditions either of that version or of any later version published by +the Free Software Foundation. If the Library does not specify a +license version number, you may choose any version ever published by +the Free Software Foundation. + + 14. If you wish to incorporate parts of the Library into other free +programs whose distribution conditions are incompatible with these, +write to the author to ask for permission. For software which is +copyrighted by the Free Software Foundation, write to the Free +Software Foundation; we sometimes make exceptions for this. Our +decision will be guided by the two goals of preserving the free status +of all derivatives of our free software and of promoting the sharing +and reuse of software generally. + + NO WARRANTY + + 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO +WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. +EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR +OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY +KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR +PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE +LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME +THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. + + 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN +WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY +AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU +FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR +CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE +LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING +RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A +FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF +SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH +DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Libraries + + If you develop a new library, and you want it to be of the greatest +possible use to the public, we recommend making it free software that +everyone can redistribute and change. You can do so by permitting +redistribution under these terms (or, alternatively, under the terms of the +ordinary General Public License). + + To apply these terms, attach the following notices to the library. It is +safest to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + This library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with this library; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +Also add information on how to contact you by electronic and paper mail. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the library, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the + library `Frob' (a library for tweaking knobs) written by James Random Hacker. + + , 1 April 1990 + Ty Coon, President of Vice + +That's all there is to it! + + diff --git a/static/tinymce/plugins/advlist/plugin.min.js b/static/tinymce/plugins/advlist/plugin.min.js new file mode 100755 index 0000000..c6e0a89 --- /dev/null +++ b/static/tinymce/plugins/advlist/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=tinymce.util.Tools.resolve("tinymce.util.Tools"),n=function(t,e,n){var r="UL"===e?"InsertUnorderedList":"InsertOrderedList";t.execCommand(r,!1,!1===n?null:{"list-style-type":n})},r=function(t){t.addCommand("ApplyUnorderedListStyle",function(e,r){n(t,"UL",r["list-style-type"])}),t.addCommand("ApplyOrderedListStyle",function(e,r){n(t,"OL",r["list-style-type"])})},o=function(t){var e=t.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");return e?e.split(/[ ,]/):[]},i=function(t){var e=t.getParam("advlist_bullet_styles","default,circle,disc,square");return e?e.split(/[ ,]/):[]},l=function(t){return t&&/^(TH|TD)$/.test(t.nodeName)},a=function(t){return function(e){return e&&/^(OL|UL|DL)$/.test(e.nodeName)&&(r=e,(n=t).$.contains(n.getBody(),r));var n,r}},s=function(t){var e=t.dom.getParent(t.selection.getNode(),"ol,ul");return t.dom.getStyle(e,"listStyleType")||""},u=function(t){return e.map(t,function(t){return{text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()}),data:"default"===t?"":t}})},c=function(t,n){return function(r){var o=r.control;t.on("NodeChange",function(r){var i=function(t,e){for(var n=0;n0&&u[0].nodeName===n)})}},d=function(t,e,r,o,i,l){var a;t.addButton(e,{active:!1,type:"splitbutton",tooltip:r,menu:u(l),onPostRender:c(t,i),onshow:(a=t,function(t){var e=s(a);t.control.items().each(function(t){t.active(t.settings.data===e)})}),onselect:function(e){n(t,i,e.control.settings.data)},onclick:function(){t.execCommand(o)}})},p=function(t,e,n,r,o,i){var l,a,s,u,p;i.length>0?d(t,e,n,r,o,i):(a=e,s=n,u=r,p=o,(l=t).addButton(a,{active:!1,type:"button",tooltip:s,onPostRender:c(l,p),onclick:function(){l.execCommand(u)}}))},f=function(t){p(t,"numlist","Numbered list","InsertOrderedList","OL",o(t)),p(t,"bullist","Bullet list","InsertUnorderedList","UL",i(t))};t.add("advlist",function(t){var n,o,i;o="lists",i=(n=t).settings.plugins?n.settings.plugins:"",-1!==e.inArray(i.split(/[ ,]/),o)&&(f(t),r(t))})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/anchor/plugin.min.js b/static/tinymce/plugins/anchor/plugin.min.js new file mode 100755 index 0000000..ed6279d --- /dev/null +++ b/static/tinymce/plugins/anchor/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},n=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.id||e.name:""},o=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},r=function(t){var r=n(t);t.windowManager.open({title:"Anchor",body:{type:"textbox",name:"id",size:40,label:"Id",value:r},onsubmit:function(n){var r,a,i=n.data.id;r=t,(e(a=i)?(o(r,a),0):(r.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),1))&&n.preventDefault()}})},a=function(t){t.addCommand("mceAnchor",function(){r(t)})},i=function(t){return function(e){for(var n=0;nn&&(t=n)}return t},r=function(e,t,n){1!==t.nodeType||t.hasChildNodes()?e.setStart(t,o(t,n)):e.setStartBefore(t)},a=function(e,t,n){1!==t.nodeType||t.hasChildNodes()?e.setEnd(t,o(t,n)):e.setEndAfter(t)},f=function(e,t,o){var f,s,d,l,c,u,g,h,C,m,y=n(e),k=i(e);if("A"!==e.selection.getNode().tagName){if((f=e.selection.getRng(!0).cloneRange()).startOffset<5){if(!(h=f.endContainer.previousSibling)){if(!f.endContainer.firstChild||!f.endContainer.firstChild.nextSibling)return;h=f.endContainer.firstChild.nextSibling}if(C=h.length,r(f,h,C),a(f,h,C),f.endOffset<5)return;s=f.endOffset,l=h}else{if(3!==(l=f.endContainer).nodeType&&l.firstChild){for(;3!==l.nodeType&&l.firstChild;)l=l.firstChild;3===l.nodeType&&(r(f,l,0),a(f,l,l.nodeValue.length))}s=1===f.endOffset?2:f.endOffset-1-t}for(d=s;r(f,l,s>=2?s-2:0),a(f,l,s>=1?s-1:0),s-=1," "!==(m=f.toString())&&""!==m&&160!==m.charCodeAt(0)&&s-2>=0&&m!==o;);var p;(p=f.toString())===o||" "===p||160===p.charCodeAt(0)?(r(f,l,s),a(f,l,d),s+=1):0===f.startOffset?(r(f,l,0),a(f,l,d)):(r(f,l,s),a(f,l,d)),"."===(u=f.toString()).charAt(u.length-1)&&a(f,l,d-1),(g=(u=f.toString().trim()).match(y))&&("www."===g[1]?g[1]="http://www.":/@$/.test(g[1])&&!/^mailto:/.test(g[1])&&(g[1]="mailto:"+g[1]),c=e.selection.getBookmark(),e.selection.setRng(f),e.execCommand("createlink",!1,g[1]+g[2]),k&&e.dom.setAttrib(e.selection.getNode(),"target",k),e.selection.moveToBookmark(c),e.nodeChanged())}},s=function(e){var n;e.on("keydown",function(t){13!==t.keyCode||f(e,-1,"")}),t.ie?e.on("focus",function(){if(!n){n=!0;try{e.execCommand("AutoUrlDetect",!1,!0)}catch(t){}}}):(e.on("keypress",function(t){41!==t.keyCode||f(e,-1,"(")}),e.on("keyup",function(t){32!==t.keyCode||f(e,0,"")}))};e.add("autolink",function(e){s(e)})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/autoresize/plugin.min.js b/static/tinymce/plugins/autoresize/plugin.min.js new file mode 100755 index 0000000..9f2b8fc --- /dev/null +++ b/static/tinymce/plugins/autoresize/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var t=function(e){var n=e,i=function(){return n};return{get:i,set:function(t){n=t},clone:function(){return t(i())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.Env"),i=tinymce.util.Tools.resolve("tinymce.util.Delay"),o=function(t){return parseInt(t.getParam("autoresize_min_height",t.getElement().offsetHeight),10)},r=function(t){return parseInt(t.getParam("autoresize_max_height",0),10)},a=function(t){return t.getParam("autoresize_overflow_padding",1)},u=function(t){return t.getParam("autoresize_bottom_margin",50)},s=function(t){return t.getParam("autoresize_on_init",!0)},l=function(t,e,n,o,r){i.setEditorTimeout(t,function(){c(t,e),n--?l(t,e,n,o,r):r&&r()},o)},g=function(t,e){var n=t.getBody();n&&(n.style.overflowY=e?"":"hidden",e||(n.scrollTop=0))},c=function(t,e){var i,a,u,s,l,f,d,m,p,y,h,v=t.dom;if(a=t.getDoc())if((S=t).plugins.fullscreen&&S.plugins.fullscreen.isFullscreen())g(t,!0);else{var S;u=a.body,s=o(t),f=v.getStyle(u,"margin-top",!0),d=v.getStyle(u,"margin-bottom",!0),m=v.getStyle(u,"padding-top",!0),p=v.getStyle(u,"padding-bottom",!0),y=v.getStyle(u,"border-top-width",!0),h=v.getStyle(u,"border-bottom-width",!0),l=u.offsetHeight+parseInt(f,10)+parseInt(d,10)+parseInt(m,10)+parseInt(p,10)+parseInt(y,10)+parseInt(h,10),(isNaN(l)||l<=0)&&(l=n.ie?u.scrollHeight:n.webkit&&0===u.clientHeight?0:u.offsetHeight),l>o(t)&&(s=l);var _=r(t);_&&l>_?(s=_,g(t,!0)):g(t,!1),s!==e.get()&&(i=s-e.get(),v.setStyle(t.iframeElement,"height",s+"px"),e.set(s),n.webkit&&i<0&&c(t,e))}},f={setup:function(t,e){t.on("init",function(){var e,n,i=t.dom;e=a(t),n=u(t),!1!==e&&i.setStyles(t.getBody(),{paddingLeft:e,paddingRight:e}),!1!==n&&i.setStyles(t.getBody(),{paddingBottom:n})}),t.on("nodechange setcontent keyup FullscreenStateChanged",function(n){c(t,e)}),s(t)&&t.on("init",function(){l(t,e,20,100,function(){l(t,e,5,1e3)})})},resize:c},d=function(t,e){t.addCommand("mceAutoResize",function(){f.resize(t,e)})};e.add("autoresize",function(e){if(!e.inline){var n=t(0);d(e,n),f.setup(e,n)}})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/autosave/plugin.min.js b/static/tinymce/plugins/autosave/plugin.min.js new file mode 100755 index 0000000..77d0af9 --- /dev/null +++ b/static/tinymce/plugins/autosave/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var t=function(e){var r=e,n=function(){return r};return{get:n,set:function(t){r=t},clone:function(){return t(n())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),n=tinymce.util.Tools.resolve("tinymce.util.Tools"),a=function(t){return t.fire("RestoreDraft")},o=function(t){return t.fire("StoreDraft")},i=function(t){return t.fire("RemoveDraft")},s=function(t,e){return((t=/^(\d+)([ms]?)$/.exec(""+(t||e)))[2]?{s:1e3,m:6e4}[t[2]]:1)*parseInt(t,10)},u=function(t){return t.getParam("autosave_ask_before_unload",!0)},f=function(t){var e=t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-");return e=(e=(e=(e=e.replace(/\{path\}/g,document.location.pathname)).replace(/\{query\}/g,document.location.search)).replace(/\{hash\}/g,document.location.hash)).replace(/\{id\}/g,t.id)},c=function(t){return s(t.settings.autosave_interval,"30s")},l=function(t){return s(t.settings.autosave_retention,"20m")},m=function(t,e){var r=t.settings.forced_root_block;return""===(e=n.trim(void 0===e?t.getBody().innerHTML:e))||new RegExp("^<"+r+"[^>]*>((\xa0| |[ \t]|]*>)+?|)|
$","i").test(e)},v=function(t){var e=parseInt(r.getItem(f(t)+"time"),10)||0;return!((new Date).getTime()-e>l(t)&&(d(t,!1),1))},d=function(t,e){var n=f(t);r.removeItem(n+"draft"),r.removeItem(n+"time"),!1!==e&&i(t)},D=function(t){var e=f(t);!m(t)&&t.isDirty()&&(r.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),r.setItem(e+"time",(new Date).getTime().toString()),o(t))},g=function(t){var e=f(t);v(t)&&(t.setContent(r.getItem(e+"draft"),{format:"raw"}),a(t))},y={isEmpty:m,hasDraft:v,removeDraft:d,storeDraft:D,restoreDraft:g,startStoreDraft:function(t,e){var r=c(t);e.get()||(setInterval(function(){t.removed||D(t)},r),e.set(!0))},restoreLastDraft:function(t){t.undoManager.transact(function(){g(t),d(t)}),t.focus()}},p=function(t,e){return function(){var r=Array.prototype.slice.call(arguments);return t.apply(null,[e].concat(r))}},h=function(t){return{hasDraft:p(y.hasDraft,t),storeDraft:p(y.storeDraft,t),restoreDraft:p(y.restoreDraft,t),removeDraft:p(y.removeDraft,t),isEmpty:p(y.isEmpty,t)}},_=tinymce.util.Tools.resolve("tinymce.EditorManager");_._beforeUnloadHandler=function(){var t;return n.each(_.get(),function(e){e.plugins.autosave&&e.plugins.autosave.storeDraft(),!t&&e.isDirty()&&u(e)&&(t=e.translate("You have unsaved changes are you sure you want to navigate away?"))}),t};var b=function(t){window.onbeforeunload=_._beforeUnloadHandler},I=function(t,e){return function(r){var n=r.control;n.disabled(!y.hasDraft(t)),t.on("StoreDraft RestoreDraft RemoveDraft",function(){n.disabled(!y.hasDraft(t))}),y.startStoreDraft(t,e)}},w=function(t,e){t.addButton("restoredraft",{title:"Restore last draft",onclick:function(){y.restoreLastDraft(t)},onPostRender:I(t,e)}),t.addMenuItem("restoredraft",{text:"Restore last draft",onclick:function(){y.restoreLastDraft(t)},onPostRender:I(t,e),context:"file"})};e.add("autosave",function(e){var r=t(!1);return b(e),w(e,r),h(e)})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/bbcode/plugin.min.js b/static/tinymce/plugins/bbcode/plugin.min.js new file mode 100755 index 0000000..1589274 --- /dev/null +++ b/static/tinymce/plugins/bbcode/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(o){o=t.trim(o);var e=function(t,e){o=o.replace(t,e)};return e(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"),e(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),e(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),e(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"),e(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"),e(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"),e(/(.*?)<\/font>/gi,"$1"),e(//gi,"[img]$1[/img]"),e(/(.*?)<\/span>/gi,"[code]$1[/code]"),e(/(.*?)<\/span>/gi,"[quote]$1[/quote]"),e(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),e(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),e(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),e(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),e(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),e(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),e(/<\/(strong|b)>/gi,"[/b]"),e(/<(strong|b)>/gi,"[b]"),e(/<\/(em|i)>/gi,"[/i]"),e(/<(em|i)>/gi,"[i]"),e(/<\/u>/gi,"[/u]"),e(/(.*?)<\/span>/gi,"[u]$1[/u]"),e(//gi,"[u]"),e(/]*>/gi,"[quote]"),e(/<\/blockquote>/gi,"[/quote]"),e(/
/gi,"\n"),e(//gi,"\n"),e(/
/gi,"\n"),e(/

/gi,""),e(/<\/p>/gi,"\n"),e(/ |\u00a0/gi," "),e(/"/gi,'"'),e(/</gi,"<"),e(/>/gi,">"),e(/&/gi,"&"),o},i=function(o){o=t.trim(o);var e=function(t,e){o=o.replace(t,e)};return e(/\n/gi,"
"),e(/\[b\]/gi,""),e(/\[\/b\]/gi,""),e(/\[i\]/gi,""),e(/\[\/i\]/gi,""),e(/\[u\]/gi,""),e(/\[\/u\]/gi,""),e(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2'),e(/\[url\](.*?)\[\/url\]/gi,'$1'),e(/\[img\](.*?)\[\/img\]/gi,''),e(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2'),e(/\[code\](.*?)\[\/code\]/gi,'$1 '),e(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),o};o.add("bbcode",function(){return{init:function(o){o.on("beforeSetContent",function(o){o.content=i(o.content)}),o.on("postProcess",function(o){o.set&&(o.content=i(o.content)),o.get&&(o.content=e(o.content))})}}})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/charmap/plugin.min.js b/static/tinymce/plugins/charmap/plugin.min.js new file mode 100755 index 0000000..14d1653 --- /dev/null +++ b/static/tinymce/plugins/charmap/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e,t){return e.fire("insertCustomChar",{chr:t})},a=function(e,a){var i=t(e,a).chr;e.execCommand("mceInsertContent",!1,i)},i=tinymce.util.Tools.resolve("tinymce.util.Tools"),r=function(e){return e.settings.charmap},n=function(e){return e.settings.charmap_append},o=i.isArray,l=function(e){return o(e)?[].concat((t=e,i.grep(t,function(e){return o(e)&&2===e.length}))):"function"==typeof e?e():[];var t},c=function(e){return function(e,t){var a=r(e);a&&(t=l(a));var i=n(e);return i?[].concat(t).concat(l(i)):t}(e,[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["256","A - macron"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["274","E - macron"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["298","I - macron"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["332","O - macron"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["362","U - macron"],["221","Y - acute"],["376","Y - diaeresis"],["562","Y - macron"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["257","a - macron"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["275","e - macron"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["299","i - macron"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["333","o macron"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["363","u - macron"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["563","y - macron"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]])},s=function(e){return{getCharMap:function(){return c(e)},insertChar:function(t){a(e,t)}}},u=function(e){var t,a,i,r=Math.min(e.length,25),n=Math.ceil(e.length/r);for(t='',i=0;i",a=0;a
'+s+"
"}else t+="
"}return t+=""},d=function(e){for(;e;){if("TD"===e.nodeName)return e;e=e.parentNode}},m=function(e){var t,i={type:"container",html:u(c(e)),onclick:function(i){var r=i.target;if(/^(TD|DIV)$/.test(r.nodeName)){var n=d(r).firstChild;if(n&&n.hasAttribute("data-chr")){var o=n.getAttribute("data-chr"),l=parseInt(o,10);isNaN(l)||a(e,String.fromCharCode(l)),i.ctrlKey||t.close()}}},onmouseover:function(e){var a=d(e.target);a&&a.firstChild?(t.find("#preview").text(a.firstChild.firstChild.data),t.find("#previewTitle").text(a.title)):(t.find("#preview").text(" "),t.find("#previewTitle").text(" "))}};t=e.windowManager.open({title:"Special character",spacing:10,padding:10,items:[i,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"spacer",minHeight:20},{type:"label",name:"previewTitle",text:" ",style:"white-space: pre-wrap;",border:1,minWidth:140}]}],buttons:[{text:"Close",onclick:function(){t.close()}}]})},g=function(e){e.addCommand("mceShowCharmap",function(){m(e)})},p=function(e){e.addButton("charmap",{icon:"charmap",tooltip:"Special character",cmd:"mceShowCharmap"}),e.addMenuItem("charmap",{icon:"charmap",text:"Special character",cmd:"mceShowCharmap",context:"insert"})};e.add("charmap",function(e){return g(e),p(e),s(e)})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/code/plugin.min.js b/static/tinymce/plugins/code/plugin.min.js new file mode 100755 index 0000000..c983b5c --- /dev/null +++ b/static/tinymce/plugins/code/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),e=function(t){return t.getParam("code_dialog_width",600)},o=function(t){return t.getParam("code_dialog_height",Math.min(n.DOM.getViewPort().h-200,500))},i=function(t,n){t.focus(),t.undoManager.transact(function(){t.setContent(n)}),t.selection.setCursorLocation(),t.nodeChanged()},c=function(t){return t.getContent({source_view:!0})},d=function(t){var n=e(t),d=o(t);t.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:n,minHeight:d,spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(n){i(t,n.data.code)}}).find("#code").value(c(t))},u=function(t){t.addCommand("mceCodeEditor",function(){d(t)})},a=function(t){t.addButton("code",{icon:"code",tooltip:"Source code",onclick:function(){d(t)}}),t.addMenuItem("code",{icon:"code",text:"Source code",onclick:function(){d(t)}})};t.add("code",function(t){return u(t),a(t),{}})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/codesample/css/prism.css b/static/tinymce/plugins/codesample/css/prism.css new file mode 100755 index 0000000..128237f --- /dev/null +++ b/static/tinymce/plugins/codesample/css/prism.css @@ -0,0 +1,138 @@ +/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */ +/** + * prism.js default theme for JavaScript, CSS and HTML + * Based on dabblet (http://dabblet.com) + * @author Lea Verou + */ + +code[class*="language-"], +pre[class*="language-"] { + color: black; + text-shadow: 0 1px white; + font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + direction: ltr; + text-align: left; + white-space: pre; + word-spacing: normal; + word-break: normal; + word-wrap: normal; + line-height: 1.5; + + -moz-tab-size: 4; + -o-tab-size: 4; + tab-size: 4; + + -webkit-hyphens: none; + -moz-hyphens: none; + -ms-hyphens: none; + hyphens: none; +} + +pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection, +code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection { + text-shadow: none; + background: #b3d4fc; +} + +pre[class*="language-"]::selection, pre[class*="language-"] ::selection, +code[class*="language-"]::selection, code[class*="language-"] ::selection { + text-shadow: none; + background: #b3d4fc; +} + +@media print { + code[class*="language-"], + pre[class*="language-"] { + text-shadow: none; + } +} + +/* Code blocks */ +pre[class*="language-"] { + padding: 1em; + margin: .5em 0; + overflow: auto; +} + +:not(pre) > code[class*="language-"], +pre[class*="language-"] { + background: #f5f2f0; +} + +/* Inline code */ +:not(pre) > code[class*="language-"] { + padding: .1em; + border-radius: .3em; +} + +.token.comment, +.token.prolog, +.token.doctype, +.token.cdata { + color: slategray; +} + +.token.punctuation { + color: #999; +} + +.namespace { + opacity: .7; +} + +.token.property, +.token.tag, +.token.boolean, +.token.number, +.token.constant, +.token.symbol, +.token.deleted { + color: #905; +} + +.token.selector, +.token.attr-name, +.token.string, +.token.char, +.token.builtin, +.token.inserted { + color: #690; +} + +.token.operator, +.token.entity, +.token.url, +.language-css .token.string, +.style .token.string { + color: #a67f59; + background: hsla(0, 0%, 100%, .5); +} + +.token.atrule, +.token.attr-value, +.token.keyword { + color: #07a; +} + +.token.function { + color: #DD4A68; +} + +.token.regex, +.token.important, +.token.variable { + color: #e90; +} + +.token.important, +.token.bold { + font-weight: bold; +} +.token.italic { + font-style: italic; +} + +.token.entity { + cursor: help; +} + diff --git a/static/tinymce/plugins/codesample/plugin.min.js b/static/tinymce/plugins/codesample/plugin.min.js new file mode 100755 index 0000000..f8bdb3f --- /dev/null +++ b/static/tinymce/plugins/codesample/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var e=function(t){var a=t,n=function(){return a};return{get:n,set:function(e){a=e},clone:function(){return e(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),n=function(e){return e.settings.codesample_content_css},i=function(e){return e.settings.codesample_languages},r=function(e){return Math.min(a.DOM.getViewPort().w,e.getParam("codesample_dialog_width",800))},s=function(e){return Math.min(a.DOM.getViewPort().w,e.getParam("codesample_dialog_height",650))},o={},l=void 0!==o?o:"undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?self:{},c=function(){var e=/\blang(?:uage)?-(?!\*)(\w+)\b/i,t=l.Prism={util:{encode:function(e){return e instanceof a?new a(e.type,t.util.encode(e.content),e.alias):"Array"===t.util.type(e)?e.map(t.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(m instanceof i)){u.lastIndex=0;var b=u.exec(m);if(b){d&&(p=b[1].length);var y=b.index-1+p,v=y+(b=b[0].slice(p)).length,k=m.slice(0,y+1),w=m.slice(v+1),x=[h,1];k&&x.push(k);var S=new i(o,g?t.tokenize(b,g):b,f);x.push(S),w&&x.push(w),Array.prototype.splice.apply(r,x)}}}}}return r},hooks:{all:{},add:function(e,a){var n=t.hooks.all;n[e]=n[e]||[],n[e].push(a)},run:function(e,a){var n=t.hooks.all[e];if(n&&n.length)for(var i=0,r=void 0;r=n[i++];)r(a)}}},a=t.Token=function(e,t,a){this.type=e,this.content=t,this.alias=a};if(a.stringify=function(e,n,i){if("string"==typeof e)return e;if("Array"===t.util.type(e))return e.map(function(t){return a.stringify(t,n,e)}).join("");var r={type:e.type,content:a.stringify(e.content,n,i),tag:"span",classes:["token",e.type],attributes:{},language:n,parent:i};if("comment"===r.type&&(r.attributes.spellcheck="true"),e.alias){var s="Array"===t.util.type(e.alias)?e.alias:[e.alias];Array.prototype.push.apply(r.classes,s)}t.hooks.run("wrap",r);var o="";for(var l in r.attributes)o+=(o?" ":"")+l+'="'+(r.attributes[l]||"")+'"';return"<"+r.tag+' class="'+r.classes.join(" ")+'" '+o+">"+r.content+""},!l.document)return l.addEventListener?(l.addEventListener("message",function(e){var a=JSON.parse(e.data),n=a.language,i=a.code,r=a.immediateClose;l.postMessage(t.highlight(i,t.languages[n],n)),r&&l.close()},!1),l.Prism):l.Prism}();"undefined"!=typeof module&&module.exports&&(module.exports=c),"undefined"!=typeof global&&(global.Prism=c),c.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},c.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),c.languages.xml=c.languages.markup,c.languages.html=c.languages.markup,c.languages.mathml=c.languages.markup,c.languages.svg=c.languages.markup,c.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},c.languages.css.atrule.inside.rest=c.util.clone(c.languages.css),c.languages.markup&&(c.languages.insertBefore("markup","tag",{style:{pattern:/[\w\W]*?<\/style>/i,inside:{tag:{pattern:/|<\/style>/i,inside:c.languages.markup.tag.inside},rest:c.languages.css},alias:"language-css"}}),c.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:c.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:c.languages.css}},alias:"language-css"}},c.languages.markup.tag)),c.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,"boolean":/\b(true|false)\b/,"function":/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},c.languages.javascript=c.languages.extend("clike",{keyword:/\b(as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,"function":/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i}),c.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}}),c.languages.insertBefore("javascript","class-name",{"template-string":{pattern:/`(?:\\`|\\?[^`])*`/,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:c.languages.javascript}},string:/[\s\S]+/}}}),c.languages.markup&&c.languages.insertBefore("markup","tag",{script:{pattern:/[\w\W]*?<\/script>/i,inside:{tag:{pattern:/|<\/script>/i,inside:c.languages.markup.tag.inside},rest:c.languages.javascript},alias:"language-javascript"}}),c.languages.js=c.languages.javascript,c.languages.c=c.languages.extend("clike",{keyword:/\b(asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\b/,operator:/\-[>-]?|\+\+?|!=?|<>?=?|==?|&&?|\|?\||[~^%?*\/]/,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)[ful]*\b/i}),c.languages.insertBefore("c","string",{macro:{pattern:/(^\s*)#\s*[a-z]+([^\r\n\\]|\\.|\\(?:\r\n?|\n))*/im,lookbehind:!0,alias:"property",inside:{string:{pattern:/(#\s*include\s*)(<.+?>|("|')(\\?.)+?\3)/,lookbehind:!0}}}}),delete c.languages.c["class-name"],delete c.languages.c["boolean"],c.languages.csharp=c.languages.extend("clike",{keyword:/\b(abstract|as|async|await|base|bool|break|byte|case|catch|char|checked|class|const|continue|decimal|default|delegate|do|double|else|enum|event|explicit|extern|false|finally|fixed|float|for|foreach|goto|if|implicit|in|int|interface|internal|is|lock|long|namespace|new|null|object|operator|out|override|params|private|protected|public|readonly|ref|return|sbyte|sealed|short|sizeof|stackalloc|static|string|struct|switch|this|throw|true|try|typeof|uint|ulong|unchecked|unsafe|ushort|using|virtual|void|volatile|while|add|alias|ascending|async|await|descending|dynamic|from|get|global|group|into|join|let|orderby|partial|remove|select|set|value|var|where|yield)\b/,string:[/@("|')(\1\1|\\\1|\\?(?!\1)[\s\S])*\1/,/("|')(\\?.)*?\1/],number:/\b-?(0x[\da-f]+|\d*\.?\d+)\b/i}),c.languages.insertBefore("csharp","keyword",{preprocessor:{pattern:/(^\s*)#.*/m,lookbehind:!0}}),c.languages.cpp=c.languages.extend("c",{keyword:/\b(alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,"boolean":/\b(true|false)\b/,operator:/[-+]{1,2}|!=?|<{1,2}=?|>{1,2}=?|\->|:{1,2}|={1,2}|\^|~|%|&{1,2}|\|?\||\?|\*|\/|\b(and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/}),c.languages.insertBefore("cpp","keyword",{"class-name":{pattern:/(class\s+)[a-z0-9_]+/i,lookbehind:!0}}),c.languages.java=c.languages.extend("clike",{keyword:/\b(abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while)\b/,number:/\b0b[01]+\b|\b0x[\da-f]*\.?[\da-fp\-]+\b|\b\d*\.?\d+(?:e[+-]?\d+)?[df]?\b/i,operator:{pattern:/(^|[^.])(?:\+[+=]?|-[-=]?|!=?|<>?>?=?|==?|&[&=]?|\|[|=]?|\*=?|\/=?|%=?|\^=?|[?:~])/m,lookbehind:!0}}),c.languages.php=c.languages.extend("clike",{keyword:/\b(and|or|xor|array|as|break|case|cfunction|class|const|continue|declare|default|die|do|else|elseif|enddeclare|endfor|endforeach|endif|endswitch|endwhile|extends|for|foreach|function|include|include_once|global|if|new|return|static|switch|use|require|require_once|var|while|abstract|interface|public|implements|private|protected|parent|throw|null|echo|print|trait|namespace|final|yield|goto|instanceof|finally|try|catch)\b/i,constant:/\b[A-Z0-9_]{2,}\b/,comment:{pattern:/(^|[^\\])(?:\/\*[\w\W]*?\*\/|\/\/.*)/,lookbehind:!0}}),c.languages.insertBefore("php","class-name",{"shell-comment":{pattern:/(^|[^\\])#.*/,lookbehind:!0,alias:"comment"}}),c.languages.insertBefore("php","keyword",{delimiter:/\?>|<\?(?:php)?/i,variable:/\$\w+\b/i,"package":{pattern:/(\\|namespace\s+|use\s+)[\w\\]+/,lookbehind:!0,inside:{punctuation:/\\/}}}),c.languages.insertBefore("php","operator",{property:{pattern:/(->)[\w]+/,lookbehind:!0}}),c.languages.markup&&(c.hooks.add("before-highlight",function(e){"php"===e.language&&(e.tokenStack=[],e.backupCode=e.code,e.code=e.code.replace(/(?:<\?php|<\?)[\w\W]*?(?:\?>)/gi,function(t){return e.tokenStack.push(t),"{{{PHP"+e.tokenStack.length+"}}}"}))}),c.hooks.add("before-insert",function(e){"php"===e.language&&(e.code=e.backupCode,delete e.backupCode)}),c.hooks.add("after-highlight",function(e){if("php"===e.language){for(var t=0,a=void 0;a=e.tokenStack[t];t++)e.highlightedCode=e.highlightedCode.replace("{{{PHP"+(t+1)+"}}}",c.highlight(a,e.grammar,"php").replace(/\$/g,"$$$$"));e.element.innerHTML=e.highlightedCode}}),c.hooks.add("wrap",function(e){"php"===e.language&&"markup"===e.type&&(e.content=e.content.replace(/(\{\{\{PHP[0-9]+\}\}\})/g,'$1'))}),c.languages.insertBefore("php","comment",{markup:{pattern:/<[^?]\/?(.*?)>/,inside:c.languages.markup},php:/\{\{\{PHP[0-9]+\}\}\}/})),c.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0},string:/"""[\s\S]+?"""|'''[\s\S]+?'''|("|')(?:\\?.)*?\1/,"function":{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_][a-zA-Z0-9_]*(?=\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)[a-z0-9_]+/i,lookbehind:!0},keyword:/\b(?:as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|pass|print|raise|return|try|while|with|yield)\b/,"boolean":/\b(?:True|False)\b/,number:/\b-?(?:0[bo])?(?:(?:\d|0x[\da-f])[\da-f]*\.?\d*|\.\d+)(?:e[+-]?\d+)?j?\b/i,operator:/[-+%=]=?|!=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]|\b(?:or|and|not)\b/,punctuation:/[{}[\];(),.:]/},function(e){e.languages.ruby=e.languages.extend("clike",{comment:/#(?!\{[^\r\n]*?\}).*/,keyword:/\b(alias|and|BEGIN|begin|break|case|class|def|define_method|defined|do|each|else|elsif|END|end|ensure|false|for|if|in|module|new|next|nil|not|or|raise|redo|require|rescue|retry|return|self|super|then|throw|true|undef|unless|until|when|while|yield)\b/});var t={pattern:/#\{[^}]+\}/,inside:{delimiter:{pattern:/^#\{|\}$/,alias:"tag"},rest:e.util.clone(e.languages.ruby)}};e.languages.insertBefore("ruby","keyword",{regex:[{pattern:/%r([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\((?:[^()\\]|\\[\s\S])*\)[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}[gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r\[(?:[^\[\]\\]|\\[\s\S])*\][gim]{0,3}/,inside:{interpolation:t}},{pattern:/%r<(?:[^<>\\]|\\[\s\S])*>[gim]{0,3}/,inside:{interpolation:t}},{pattern:/(^|[^/])\/(?!\/)(\[.+?]|\\.|[^/\r\n])+\/[gim]{0,3}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0}],variable:/[@$]+[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/,symbol:/:[a-zA-Z_][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.insertBefore("ruby","number",{builtin:/\b(Array|Bignum|Binding|Class|Continuation|Dir|Exception|FalseClass|File|Stat|File|Fixnum|Fload|Hash|Integer|IO|MatchData|Method|Module|NilClass|Numeric|Object|Proc|Range|Regexp|String|Struct|TMS|Symbol|ThreadGroup|Thread|Time|TrueClass)\b/,constant:/\b[A-Z][a-zA-Z_0-9]*(?:[?!]|\b)/}),e.languages.ruby.string=[{pattern:/%[qQiIwWxs]?([^a-zA-Z0-9\s\{\(\[<])(?:[^\\]|\\[\s\S])*?\1/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\((?:[^()\\]|\\[\s\S])*\)/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\{(?:[^#{}\\]|#(?:\{[^}]+\})?|\\[\s\S])*\}/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?\[(?:[^\[\]\\]|\\[\s\S])*\]/,inside:{interpolation:t}},{pattern:/%[qQiIwWxs]?<(?:[^<>\\]|\\[\s\S])*>/,inside:{interpolation:t}},{pattern:/("|')(#\{[^}]+\}|\\(?:\r?\n|\r)|\\?.)*?\1/,inside:{interpolation:t}}]}(c);var u={isCodeSample:function(e){return e&&"PRE"===e.nodeName&&-1!==e.className.indexOf("language-")},trimArg:function(e){return function(t,a){return e(a)}}},g=function(e){var t=e.selection.getNode();return u.isCodeSample(t)?t:null},d=g,p=function(e,t,n){e.undoManager.transact(function(){var i=g(e);n=a.DOM.encode(n),i?(e.dom.setAttrib(i,"class","language-"+t),i.innerHTML=n,c.highlightElement(i),e.selection.select(i)):(e.insertContent('

'+n+"
"),e.selection.select(e.$("#__new").removeAttr("id")[0]))})},f=function(e){var t=g(e);return t?t.textContent:""},h=function(e){var t=i(e);return t||[{text:"HTML/XML",value:"markup"},{text:"JavaScript",value:"javascript"},{text:"CSS",value:"css"},{text:"PHP",value:"php"},{text:"Ruby",value:"ruby"},{text:"Python",value:"python"},{text:"Java",value:"java"},{text:"C",value:"c"},{text:"C#",value:"csharp"},{text:"C++",value:"cpp"}]},m=function(e){var t,a=d(e);return a&&(t=a.className.match(/language-(\w+)/))?t[1]:""},b=function(e){var t=r(e),a=s(e),n=m(e),i=h(e),o=f(e);e.windowManager.open({title:"Insert/Edit code sample",minWidth:t,minHeight:a,layout:"flex",direction:"column",align:"stretch",body:[{type:"listbox",name:"language",label:"Language",maxWidth:200,value:n,values:i},{type:"textbox",name:"code",multiline:!0,spellcheck:!1,ariaLabel:"Code view",flex:1,style:"direction: ltr; text-align: left",classes:"monospace",value:o,autofocus:!0}],onSubmit:function(t){p(e,t.data.language,t.data.code)}})},y=function(e){e.addCommand("codesample",function(){var t=e.selection.getNode();e.selection.isCollapsed()||u.isCodeSample(t)?b(e):e.formatter.toggle("code")})},v=function(e){var t=e.$;e.on("PreProcess",function(e){t("pre[contenteditable=false]",e.node).filter(u.trimArg(u.isCodeSample)).each(function(e,a){var n=t(a),i=a.textContent;n.attr("class",t.trim(n.attr("class"))),n.removeAttr("contentEditable"),n.empty().append(t("").each(function(){this.textContent=i}))})}),e.on("SetContent",function(){var a=t("pre").filter(u.trimArg(u.isCodeSample)).filter(function(e,t){return"false"!==t.contentEditable});a.length&&e.undoManager.transact(function(){a.each(function(a,n){t(n).find("br").each(function(t,a){a.parentNode.replaceChild(e.getDoc().createTextNode("\n"),a)}),n.contentEditable=!1,n.innerHTML=e.dom.encode(n.textContent),c.highlightElement(n),n.className=t.trim(n.className)})})})},k=function(e,t,a,i){var r,s=n(e);e.inline&&a.get()||!e.inline&&i.get()||(e.inline?a.set(!0):i.set(!0),!1!==s&&(r=e.dom.create("link",{rel:"stylesheet",href:s||t+"/css/prism.css"}),e.getDoc().getElementsByTagName("head")[0].appendChild(r)))},w=function(e){e.addButton("codesample",{cmd:"codesample",title:"Insert/Edit code sample"}),e.addMenuItem("codesample",{cmd:"codesample",text:"Code sample",icon:"codesample"})},x=e(!1);t.add("codesample",function(t,a){var n=e(!1);v(t),w(t),y(t),t.on("init",function(){k(t,a,x,n)}),t.on("dblclick",function(e){u.isCodeSample(e.target)&&b(t)})})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/colorpicker/plugin.min.js b/static/tinymce/plugins/colorpicker/plugin.min.js new file mode 100755 index 0000000..3ffbe16 --- /dev/null +++ b/static/tinymce/plugins/colorpicker/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.Color"),i=function(e,n){e.find("#preview")[0].getEl().style.background=n},t=function(e,t){var l=n(t),a=l.toRgb();e.fromJSON({r:a.r,g:a.g,b:a.b,hex:l.toHex().substr(1)}),i(e,l.toHex())},l=function(e,n,l){var a=e.windowManager.open({title:"Color",items:{type:"container",layout:"flex",direction:"row",align:"stretch",padding:5,spacing:10,items:[{type:"colorpicker",value:l,onchange:function(){var e=this.rgb();a&&(a.find("#r").value(e.r),a.find("#g").value(e.g),a.find("#b").value(e.b),a.find("#hex").value(this.value().substr(1)),i(a,this.value()))}},{type:"form",padding:0,labelGap:5,defaults:{type:"textbox",size:7,value:"0",flex:1,spellcheck:!1,onchange:function(){var e,n,i=a.find("colorpicker")[0];if(e=this.name(),n=this.value(),"hex"===e)return t(a,n="#"+n),void i.value(n);n={r:a.find("#r").value(),g:a.find("#g").value(),b:a.find("#b").value()},i.value(n),t(a,n)}},items:[{name:"r",label:"R",autofocus:1},{name:"g",label:"G"},{name:"b",label:"B"},{name:"hex",label:"#",value:"000000"},{name:"preview",type:"container",border:1}]}]},onSubmit:function(){n("#"+a.toJSON().hex)}});t(a,l)};e.add("colorpicker",function(e){e.settings.color_picker_callback||(e.settings.color_picker_callback=function(n,i){l(e,n,i)})})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/contextmenu/plugin.min.js b/static/tinymce/plugins/contextmenu/plugin.min.js new file mode 100755 index 0000000..8603ff5 --- /dev/null +++ b/static/tinymce/plugins/contextmenu/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var t=function(n){var e=n,o=function(){return e};return{get:o,set:function(t){e=t},clone:function(){return t(o())}}},n=tinymce.util.Tools.resolve("tinymce.PluginManager"),e=function(t){return{isContextMenuVisible:function(){return t.get()}}},o=function(t){return t.settings.contextmenu_never_use_native},i=function(t){return t.getParam("contextmenu","link openlink image inserttable | cell row column deletetable")},r=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),u=function(t){return r.DOM.select(t.settings.ui_container)[0]},c=function(t,n){return{x:t,y:n}},l=function(t,n,e){return c(t.x+n,t.y+e)},s=function(t,n){if(t&&"static"!==r.DOM.getStyle(t,"position",!0)){var e=r.DOM.getPos(t),o=e.x-t.scrollLeft,i=e.y-t.scrollTop;return l(n,-o,-i)}return l(n,0,0)},a=function(t,n){if(t.inline)return s(u(t),c((f=n).pageX,f.pageY));var e,o,i,a,f,m=(e=t.getContentAreaContainer(),o=c((a=n).clientX,a.clientY),i=r.DOM.getPos(e),l(o,i.x,i.y));return s(u(t),m)},f=tinymce.util.Tools.resolve("tinymce.ui.Factory"),m=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,n,e,o){null===o.get()?o.set(function(t,n){var e,o,r=[];o=i(t),m.each(o.split(/[ ,]/),function(n){var e=t.menuItems[n];"|"===n&&(e={text:n}),e&&(e.shortcut="",r.push(e))});for(var c=0;cKx}s1_F$4FCWDA^8LW0018VEC2ui01^Na000Hw;3tYzX_jM3Qpv$_M?zI9i5=0S zX-{-uv=l3%&P0s%m9Ox_a(m_c|u z01g3U0`Wll5)poVdma=N8y<3f0Sf~hXmTC}2oxMW4FdxUj+z4<0}lrX2nP=qkDRIt z9Ge*(qzMrj3jrIOjvI{`5eWzt3`G_T8yChG8w(a19SkK12@M(+799Zr9n=~PzBCmA z5)BU-)YKUd4H5!D9|!^o9kWIe9SH(WDHRk92}DZ?3})2$P@$55g90f0N)ZA8JID5J Aw*UYD literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/emoticons/img/smiley-cry.gif b/static/tinymce/plugins/emoticons/img/smiley-cry.gif new file mode 100755 index 0000000000000000000000000000000000000000..74d897a4f6d22e814e2b054e98b8a75fb464b4be GIT binary patch literal 329 zcmV-P0k-}}Nk%w1VG;lm0Mr-&E)xPSit@9T3%;vR+|V+?t0A(pllJjXrMl7n=_A_a za^B+Su$LjvyC3@TIQZNZa##w=!k(SO^P#bO*w(eU#;{U83XFCU_V)J5wrb+;g2vkN z#>U24qVoOvY5)KLA^8LW0018VEC2ui01^Na000HX;3tY$X_jM3QUfCh%s^o(nF++< zc?Th6v=oL>*by8K!mhvwelUXuuW&&U9iGO3hM@>Njw{l^#0q9mWpcefdI;O$;efnY zkd~@r-o$*74FCWI1%d((4+jDz0va0>69^fI6%`W{8w!gU1pyL>prH>E0R<%k6Aq%H z4ij+^9TEwM5P}eh2@)L<~6+>@EpxfA0YrcPNsSu literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/emoticons/img/smiley-embarassed.gif b/static/tinymce/plugins/emoticons/img/smiley-embarassed.gif new file mode 100755 index 0000000000000000000000000000000000000000..963a96b8a7593b1d8bcbab073abe5ee4e539dbf6 GIT binary patch literal 331 zcmV-R0kr-{Nk%w1VG;lm0MrryDh>j~yq&6%75dW~z^P39(NxsGDE{UkxtkIEq(S-a zRKlwv+S=Lr?>hbYY~sQ?c3T&ZcN_Nh_EU3s(>Io6B&>WW`@bsw**)Ocy1bht z{*G6|uwwqUQ2+n{A^8LW0018VEC2ui01^Na000HZ;3tYwX_jM3YQ!c88=*-m*&&bO zILd=`w3KAC;8hxpif*w9ek6oqV-Z0L77fROK$BSR@5BAv-%C>6y>>#+D4e#&nz^qMDItlpp zTG728+|V&?R13PIEBW(C`uh6d*t-1sZ^XQv;oDD}iYLOV7uVO;{`xl4#4tJ{0;h@! z>)kdc3IhA?Hvj+tA^8La0018VEC2ui01^Na06+!P;3tYuX_ljS7!u|-O)I}TzP1q%xT4HOFwMJaO;2ml)!00$)141pU08x3594IX?4 o5YuAA8yXz~76K1c;3^jg77WP185Rf^u}23N0sR5^q(T4yJ1sVN5dZ)H literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/emoticons/img/smiley-frown.gif b/static/tinymce/plugins/emoticons/img/smiley-frown.gif new file mode 100755 index 0000000000000000000000000000000000000000..716f55e161bfebb1c3d34f0b0f40c177fc82c30b GIT binary patch literal 340 zcmV-a0jvH;Nk%w1VG;lm0MroxK_>;q#>Sw62=mns-On=0wransPVevT^YK{Dy(0YY zH)vE6x0?;Wqb>gZas1^OT0si>`ugD5y87}*#H$s=yq(wA*8cf7{`y+(+9J7|9QfT7 z`ROHiU=Y&6FaQ7mA^8LW0018VEC2ui01^Na000Hi;3tYvX_jM3N`@u~nju9hSuh^r zIEcp-wA7(NL0~2d#RP+(G!CPPA>o*KJjv_CkucCA5=K?AfF#RG2V*8BU@jL304|4P z2;PGRF@bj$et;Jf2pR_mVsIA<85|n}kQ*Bq42Ovqj*yy>6P0=h3X&9Z01yyk~2N4w%7#RW^55W%`0vQ+-6(y_*2pqz~90*;x9}yM}%$UI(7t#$D mK_3Se1{4HKM+6iG7EmeH6$V631{L5n)#CyC0qx-*Apkoyg?w!Q literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/emoticons/img/smiley-innocent.gif b/static/tinymce/plugins/emoticons/img/smiley-innocent.gif new file mode 100755 index 0000000000000000000000000000000000000000..334d49e0e60f2997c9ba24071764f95d9e08a5cc GIT binary patch literal 336 zcmV-W0k8f?Nk%w1VG;lm0MrryI4TI-%dP0m5~*+Y`T~ z7Rth){q{I_X%*S48uRZ|(b3V&wIKTX`u+WJzo<^$#wuY;3W|Cf{O29IkTAcaE&lpe z+P*^H)-tknA^-pYA^8LW0018VEC2ui01^Na000He;3tYwX_n)75QgVvNQ`6#5gcMm zEEG~blgXokptKAJgCU?%JT?yos!R6cPtcQWh2siHlNI2L}ifQhgX02^InZ2?-ktkqVRyZJY^Trk|lv zovp437?1~d46O)?2(1i+2NDYk8<+_Kil!K!3njA^!I#dL8x<729}*B65mC=m5gHH@ iDi9P3f*VjB3KS4HDb_qqRul{0DIT=Nk%w1VG;lm0Mrx!QauaC#>Vb6G=_5=^YB^9wrc376Sb5I-qJGf@9vZ# z5WlKU(!eVB+7tfnDXp0zyB`?BZ5IChalob*`uh6d*t+@dKGHcU+L|83yq*5~IoH?L zy`?Gp<{bX|SpWb4A^8LW0018VEC2ui01^Na000Hg;3tYyX_jM3R?Bl7&r(q;SsVx< zNd$5fv{ZsKA$SlL3&KN~a1tZRf*~1Ltkx9~2uL3&z-yb0WJDRY082|tP literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/emoticons/img/smiley-laughing.gif b/static/tinymce/plugins/emoticons/img/smiley-laughing.gif new file mode 100755 index 0000000000000000000000000000000000000000..82c5b182e61d32bd394acae551eff180f1eebd26 GIT binary patch literal 343 zcmV-d0jT~*Nk%w1VG;lm0Q4UK!lp8=s;1-69HWK?p_PpF=Pd8~Ygtcnp*fHAL z**;z>w3iC}`fmL6IkKB1N;3zEa}&zKpsu1;_V)HocR5-{J~BcYvE`YXhBnc@CfU=! za(Ec zG>66zv=rqr;2j)}gKqE$ekcSD?}0=WLB?AWp85)qALd+P=4)6X4oXy{bw2>K^d$ z@6ERvva+(4ib~41YUkTEn1&#?rzrOHT>1I=Y*h`+%*@WtPUPg|!@EEI_d5LgZ>^Og z-qyBKJqy*wF8}}lA^8La0018VEC2ui01^Na06+!6;3tYxX_lj?7+U61R3gAaEg8x< zT>%mSfCwURnWQF&g=Q0ZxH1ulW`QtH0>O!5%iT_X0VBy_@EkOngU8?ye~=H!t21{= z9@Uj3a_UbE88~kh5Eq7rh!7QSBn1c?0|Off1&k^`5*QE<4-gmSR<4C>Dj%C>6W(lWoQPVevT^YB^Fy&h6M z4YZgH{O~qtR1(Ci8T;lQ`uh6d*t-7xar*K{#Jrulo-Wtd*44u?{`oh#n;gQXGXDEo z_}UUC3IeK%0ssI2A^8La0018VEC2ui01^Na06+!R;3tYuX_ljSEE482&%+G^XK%|f zLKbCc4u{4-u|QG~LqamSTo?@JM3OKZAr!|Z2IzP@fY`=CIg$vA3qm46TowfLCt29I z6pDKuvnf~)83+sm9yW#?9s>^(89F=~2?!W44-6Ox2^vNza}fp^9v&G65pp936%Gg+ z6HpTy2o4oGoh+>l3Q)KVQwybl2oo*<4a3D469|nfEii|MH4`}p1_cZp0ssj%2>=2d q41Na?)CpS;4gvxWVpZcR76uLludD?Q1{SnP2NnVU0rZ&)0RTIit8@_n literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/emoticons/img/smiley-surprised.gif b/static/tinymce/plugins/emoticons/img/smiley-surprised.gif new file mode 100755 index 0000000000000000000000000000000000000000..0cc9bb71cca4cdeafbb248ce7e07c3708c1cbd64 GIT binary patch literal 338 zcmV-Y0j>T=Nk%w1VG;lm0Q4UK`{WwN#>SnDDC*4*{OcpiwransPVevTQacIr@mkQp zCf(06s)_=>r7UYx48o@u`uh6d*t-7rH~ji<`P&oj;5Wp)o!8ga`SV6TA_BIW5#ZWV z{`*)c32kA}f=futY?#YE7kxGD|7L}4&OEDw$hkm+~<00QS>F_H?J#bz?uEHnl42f5(9 z5O)`6Q9V2o5;YVLUK)Y`7!Nr+4GMq?85s%^2?`BGDRU798Vn2?1`%>22R{iO0u>bk z9tlA?nk*O<3zHJH6&Mp5qALj)E(mxM!Y&vII4dm@1Ov{`f*8pL3xPEVUI>D>1_uxa kNm?`6VH{N6Di;P13m6<67z+;u7qCYM7XkVK^`jvGJD~P?KL7v# literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/emoticons/img/smiley-tongue-out.gif b/static/tinymce/plugins/emoticons/img/smiley-tongue-out.gif new file mode 100755 index 0000000000000000000000000000000000000000..2075dc16058f1f17912167675ce5cfb9986fc71d GIT binary patch literal 328 zcmV-O0k{4~Nk%w1VG;lm0Mrx!CJF+^#>SU@3-{U*rx+Q^wrc$ABfqLn@9*x?z8(4X zSW-O=@){bmmI~g|GQXoP);cvj3|f1M8e@{G*!tYaiCEujj1NGxRN#6#tiCETo+{x{Hkzt z5k-kPvcD=V2nbmjCgL6k{uF&2nP-t0s;w<385Nx2oxDb z9T5Pp7qJl?3Kkh9oe2sCr5F$p7zPSlsUH*@54w*83=9Or4;w)r2pcU95(FL|1Th;< aDaRQH4;Tal7#Y$v#?=Au0pHUfApkpvZg^t= literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/emoticons/img/smiley-undecided.gif b/static/tinymce/plugins/emoticons/img/smiley-undecided.gif new file mode 100755 index 0000000000000000000000000000000000000000..bef7e257303f8243c89787e7a7f9955dd1f112e2 GIT binary patch literal 337 zcmV-X0j~Z>Nk%w1VG;lm0MroxDi#99#>R?y8~4}{%C>6#>?OadPVevTr-=vi@LATn z4rERY-qJF+n+?CCE&B3D{{3Shh?>WT0o%`b%*Voqm`dL;(4F35y zc485^n;g!+Bme*aA^8LW0018VEC2ui01^Na000Hf;3tYvX_jM3N=AnuogqakNi<9X zK?&0kwA8^tNn{?C$|IAYI1ZzT!2>}iuMddFK#NEkRl!7%6brJAnUs;)XcnA}TNBSP zxQ9;SvEfwYeSaGd2^|LqU~(QF1qBxr3Ii7x84ZVt8wCTKoSYAqc?p`G2onnpk`IOl z1`HLGj}riN2p1K12N4z&8IBDc6tEWs859;JtRB6>lf+xO9}yT19toMv8wnl`7(pKg j7zPv!OGgY81{hE&(iR3pP6ig;HPPS!_yOwPA0Yrc)=Yf3 literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/emoticons/img/smiley-wink.gif b/static/tinymce/plugins/emoticons/img/smiley-wink.gif new file mode 100755 index 0000000000000000000000000000000000000000..0631c7616ec8624ddeee02b633326f697ee72f80 GIT binary patch literal 350 zcmV-k0ipg!Nk%w1VG;lm0Q4UK(ZVUl#>Sn03F^-g-qAA3wransPV?|t@9*x%vmQ`7 z4E*pcw3rOOq%3t@4*K#({N^40{c-yG`rz2Q!KfI-yq*61HrBop*VoqW<}&{JS@_x# zwwfF$4Fdh~IsgCwA^8La0018VEC2ui01^Na06+!X;3tYwX_ljiFp=e23$zWxW@`*G zN?2ty6iUNT!AMdPLn89IbS7WCB_mWF$+hzY-{PWkp(?(Xf;zbH~P z3jOdj?W+^YwrakfE8fyG&5jTBz!3WS`fgM_;MltQ+c}4GO8)(E`S3`@yq&d~5!ct& z)v79NObo)O7XSbNA^8LW0018VEC2ui01^Na000He;3tYwX_jM3QifI(nn6h_*=Wyk zUB{y}v=qYOIUF#R3dZPhAVv~H;(|a2yN_5FH&J0|$eJ3kw4gj1Y?v5d#>LMV12^6BYy$1)ZKA zga!|m2?POz0R)f>4+aPl8KD{gz`+G_9vLMFQU?RU!8uyH9}*i52|cC+7S0YEK_3Vk i1|APfM-Ltb8&4_H83sg61{vHn(cc000qNZzApkp'}),o+=""}),o+=""},n=function(t,e){var i=o(e);t.addButton("emoticons",{type:"panelbutton",panel:{role:"application",autohide:!0,html:i,onclick:function(e){var i,o,n,a=t.dom.getParent(e.target,"a");a&&(i=t,o=a.getAttribute("data-mce-url"),n=a.getAttribute("data-mce-alt"),i.insertContent(i.dom.createHTML("img",{src:o,alt:n})),this.hide())}},tooltip:"Emoticons"})};t.add("emoticons",function(t,e){n(t,e)})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/fullpage/plugin.min.js b/static/tinymce/plugins/fullpage/plugin.min.js new file mode 100755 index 0000000..9d2cdff --- /dev/null +++ b/static/tinymce/plugins/fullpage/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var e=function(t){var n=t,l=function(){return n};return{get:l,set:function(e){n=e},clone:function(){return e(l())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.Tools"),l=tinymce.util.Tools.resolve("tinymce.html.DomParser"),i=tinymce.util.Tools.resolve("tinymce.html.Node"),r=tinymce.util.Tools.resolve("tinymce.html.Serializer"),o=function(e){return e.getParam("fullpage_hide_in_source_view")},a=function(e){return e.getParam("fullpage_default_xml_pi")},c=function(e){return e.getParam("fullpage_default_encoding")},s=function(e){return e.getParam("fullpage_default_font_family")},u=function(e){return e.getParam("fullpage_default_font_size")},d=function(e){return e.getParam("fullpage_default_text_color")},f=function(e){return e.getParam("fullpage_default_title")},g=function(e){return e.getParam("fullpage_default_doctype","")},m=function(e){return l({validate:!1,root_name:"#document"}).parse(e)},h=m,p=function(e,t){var l,i,r=m(t),o={};function a(e,t){return e.attr(t)||""}return o.fontface=s(e),o.fontsize=u(e),7===(l=r.firstChild).type&&(o.xml_pi=!0,(i=/encoding="([^"]+)"/.exec(l.value))&&(o.docencoding=i[1])),(l=r.getAll("#doctype")[0])&&(o.doctype=""),(l=r.getAll("title")[0])&&l.firstChild&&(o.title=l.firstChild.value),n.each(r.getAll("meta"),function(e){var t,n=e.attr("name"),l=e.attr("http-equiv");n?o[n.toLowerCase()]=e.attr("content"):"Content-Type"===l&&(t=/charset\s*=\s*(.*)\s*/gi.exec(e.attr("content")))&&(o.docencoding=t[1])}),(l=r.getAll("html")[0])&&(o.langcode=a(l,"lang")||a(l,"xml:lang")),o.stylesheets=[],n.each(r.getAll("link"),function(e){"stylesheet"===e.attr("rel")&&o.stylesheets.push(e.attr("href"))}),(l=r.getAll("body")[0])&&(o.langdir=a(l,"dir"),o.style=a(l,"style"),o.visited_color=a(l,"vlink"),o.link_color=a(l,"link"),o.active_color=a(l,"alink")),o},y=function(e,t,l){var o,a,c,s,u,d=e.dom;function f(e,t,n){e.attr(t,n||undefined)}function g(e){a.firstChild?a.insert(e,a.firstChild):a.append(e)}o=m(l),(a=o.getAll("head")[0])||(s=o.getAll("html")[0],a=new i("head",1),s.firstChild?s.insert(a,s.firstChild,!0):s.append(a)),s=o.firstChild,t.xml_pi?(u='version="1.0"',t.docencoding&&(u+=' encoding="'+t.docencoding+'"'),7!==s.type&&(s=new i("xml",7),o.insert(s,o.firstChild,!0)),s.value=u):s&&7===s.type&&s.remove(),s=o.getAll("#doctype")[0],t.doctype?(s||(s=new i("#doctype",10),t.xml_pi?o.insert(s,o.firstChild):g(s)),s.value=t.doctype.substring(9,t.doctype.length-1)):s&&s.remove(),s=null,n.each(o.getAll("meta"),function(e){"Content-Type"===e.attr("http-equiv")&&(s=e)}),t.docencoding?(s||((s=new i("meta",1)).attr("http-equiv","Content-Type"),s.shortEnded=!0,g(s)),s.attr("content","text/html; charset="+t.docencoding)):s&&s.remove(),s=o.getAll("title")[0],t.title?(s?s.empty():g(s=new i("title",1)),s.append(new i("#text",3)).value=t.title):s&&s.remove(),n.each("keywords,description,author,copyright,robots".split(","),function(e){var n,l,r=o.getAll("meta"),a=t[e];for(n=0;n"))},v=function(e,t){var l=p(e,t.get());e.windowManager.open({title:"Document properties",data:l,defaults:{type:"textbox",size:40},body:[{name:"title",label:"Title"},{name:"keywords",label:"Keywords"},{name:"description",label:"Description"},{name:"robots",label:"Robots"},{name:"author",label:"Author"},{name:"docencoding",label:"Encoding"}],onSubmit:function(i){var r=y(e,n.extend(l,i.data),t.get());t.set(r)}})},_=function(e,t){e.addCommand("mceFullPageProperties",function(){v(e,t)})},b=function(e,t){return n.each(e,function(e){t=t.replace(e,function(e){return"\x3c!--mce:protected "+escape(e)+"--\x3e"})}),t},x=function(e){return e.replace(//g,function(e,t){return unescape(t)})},k=n.each,C=function(e){return e.replace(/<\/?[A-Z]+/g,function(e){return e.toLowerCase()})},A=function(e){var t,n="",l="";if(a(e)){var i=c(e);n+='\n'}return n+=g(e),n+="\n\n\n",(t=f(e))&&(n+=""+t+"\n"),(t=c(e))&&(n+='\n'),(t=s(e))&&(l+="font-family: "+t+";"),(t=u(e))&&(l+="font-size: "+t+";"),(t=d(e))&&(l+="color: "+t+";"),n+="\n\n"},w=function(e,t,l){e.on("BeforeSetContent",function(i){!function(e,t,l,i){var r,a,c,s,u,d="",f=e.dom;if(!(i.selection||(c=b(e.settings.protect,i.content),"raw"===i.format&&t.get()||i.source_view&&o(e)))){0!==c.length||i.source_view||(c=n.trim(t.get())+"\n"+n.trim(c)+"\n"+n.trim(l.get())),-1!==(r=(c=c.replace(/<(\/?)BODY/gi,"<$1body")).indexOf("",r),t.set(C(c.substring(0,r+1))),-1===(a=c.indexOf("\n")),s=h(t.get()),k(s.getAll("style"),function(e){e.firstChild&&(d+=e.firstChild.value)}),(u=s.getAll("body")[0])&&f.setAttribs(e.getBody(),{style:u.attr("style")||"",dir:u.attr("dir")||"",vLink:u.attr("vlink")||"",link:u.attr("link")||"",aLink:u.attr("alink")||""}),f.remove("fullpage_styles");var g=e.getDoc().getElementsByTagName("head")[0];d&&(f.add(g,"style",{id:"fullpage_styles"},d),(u=f.get("fullpage_styles")).styleSheet&&(u.styleSheet.cssText=d));var m={};n.each(g.getElementsByTagName("link"),function(e){"stylesheet"===e.rel&&e.getAttribute("data-mce-fullpage")&&(m[e.href]=e)}),n.each(s.getAll("link"),function(e){var t=e.attr("href");if(!t)return!0;m[t]||"stylesheet"!==e.attr("rel")||f.add(g,"link",{rel:"stylesheet",text:"text/css",href:t,"data-mce-fullpage":"1"}),delete m[t]}),n.each(m,function(e){e.parentNode.removeChild(e)})}}(e,t,l,i)}),e.on("GetContent",function(i){var r,a,c,s;r=e,a=t.get(),c=l.get(),(s=i).selection||s.source_view&&o(r)||(s.content=x(n.trim(a)+"\n"+n.trim(s.content)+"\n"+n.trim(c)))})},P=function(e){e.addButton("fullpage",{title:"Document properties",cmd:"mceFullPageProperties"}),e.addMenuItem("fullpage",{text:"Document properties",cmd:"mceFullPageProperties",context:"file"})};t.add("fullpage",function(t){var n=e(""),l=e("");_(t,n),P(t),w(t,n,l)})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/fullscreen/plugin.min.js b/static/tinymce/plugins/fullscreen/plugin.min.js new file mode 100755 index 0000000..cd8feb7 --- /dev/null +++ b/static/tinymce/plugins/fullscreen/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var e=function(n){var t=n,i=function(){return t};return{get:i,set:function(e){t=e},clone:function(){return e(i())}}},n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(e){return{isFullscreen:function(){return null!==e.get()}}},i=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),r=function(e,n){e.fire("FullscreenStateChanged",{state:n})},l=i.DOM,o=function(e,n){var t,i,o,c,s,u,d=document.body,a=document.documentElement,h=n.get(),f=function(){var e,n,t,r;l.setStyle(o,"height",(t=window,r=document.body,r.offsetWidth&&(e=r.offsetWidth,n=r.offsetHeight),t.innerWidth&&t.innerHeight&&(e=t.innerWidth,n=t.innerHeight),{w:e,h:n}).h-(i.clientHeight-o.clientHeight))},m=function(){l.unbind(window,"resize",f)};if(t=(i=e.getContainer()).style,c=(o=e.getContentAreaContainer().firstChild).style,h)c.width=h.iframeWidth,c.height=h.iframeHeight,h.containerWidth&&(t.width=h.containerWidth),h.containerHeight&&(t.height=h.containerHeight),l.removeClass(d,"mce-fullscreen"),l.removeClass(a,"mce-fullscreen"),l.removeClass(i,"mce-fullscreen"),s=h.scrollPos,window.scrollTo(s.x,s.y),l.unbind(window,"resize",h.resizeHandler),e.off("remove",h.removeHandler),n.set(null),r(e,!1);else{var g={scrollPos:(u=l.getViewPort(),{x:u.x,y:u.y}),containerWidth:t.width,containerHeight:t.height,iframeWidth:c.width,iframeHeight:c.height,resizeHandler:f,removeHandler:m};c.width=c.height="100%",t.width=t.height="",l.addClass(d,"mce-fullscreen"),l.addClass(a,"mce-fullscreen"),l.addClass(i,"mce-fullscreen"),l.bind(window,"resize",f),e.on("remove",m),f(),n.set(g),r(e,!0)}},c=function(e,n){e.addCommand("mceFullScreen",function(){o(e,n)})},s=function(e){return function(n){var t=n.control;e.on("FullscreenStateChanged",function(e){t.active(e.state)})}},u=function(e){e.addMenuItem("fullscreen",{text:"Fullscreen",shortcut:"Ctrl+Shift+F",selectable:!0,cmd:"mceFullScreen",onPostRender:s(e),context:"view"}),e.addButton("fullscreen",{active:!1,tooltip:"Fullscreen",cmd:"mceFullScreen",onPostRender:s(e)})};n.add("fullscreen",function(n){var i=e(null);return n.settings.inline?t(i):(c(n,i),u(n),n.addShortcut("Ctrl+Shift+F","","mceFullScreen"),t(i))})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/help/img/logo.png b/static/tinymce/plugins/help/img/logo.png new file mode 100755 index 0000000000000000000000000000000000000000..ebd7eb1424b5b571d74a06fc1ba211e168b7e0e9 GIT binary patch literal 13208 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�x8a_6hzULJ1Og=3n8m7@LHN&c08QS_81L zvgm@D&)@(=nRrWaOlvOT9&0cP^BpCGAq0KT&%X_Sm6~d4!`8Km0s_PAV`C^~AOC+ZJL zytniD!W=a3`n|rK@l4Jw_GuxKid^|*7Sy!KbJeoKvq%x4kX)2iD7Q`)CW0Dl#+WcZ;lk1g7~x)@5l#haTG=YiN{ z1+7v|j$%)I0IFF1^5Xkd?piKryO&kc?-KvT0s-fZbqC|E*!F)?_)<-9H<)4o0000< KMNUMnLSTZ+CVU?N literal 0 HcmV?d00001 diff --git a/static/tinymce/plugins/help/plugin.min.js b/static/tinymce/plugins/help/plugin.min.js new file mode 100755 index 0000000..77a6b62 --- /dev/null +++ b/static/tinymce/plugins/help/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var e,t,n,r,o,a,i=tinymce.util.Tools.resolve("tinymce.PluginManager"),u=function(e){return function(){return e}},c={noop:function(){},noarg:function(e){return function(){return e()}},compose:function(e,t){return function(){return e(t.apply(null,arguments))}},constant:u,identity:function(e){return e},tripleEquals:function(e,t){return e===t},curry:function(e){for(var t=new Array(arguments.length-1),n=1;n-1},g=function(e,t){for(var n=e.length,r=new Array(n),o=0;o Ctrl + Shift + P",action:"Focus to contextual toolbar"},{shortcut:T+" + K",action:"Insert link (if link plugin activated)"},{shortcut:T+" + S",action:"Save (if save plugin activated)"},{shortcut:T+" + F",action:"Find (if searchreplace plugin activated)"}]},H=function(){var e=b(_.shortcuts,function(e){return''+A.translate(e.action)+""+e.shortcut+"";var t}).join("");return{title:"Handy Shortcuts",type:"container",style:"overflow-y: auto; overflow-x: hidden; max-height: 250px",items:[{type:"container",html:'
"+e+"
'+A.translate("Action")+""+A.translate("Shortcut")+"
"}]}},O=(a=Object.keys)===undefined?function(e){var t=[];for(var n in e)e.hasOwnProperty(n)&&t.push(n);return t}:a,M=function(e,t){for(var n=O(e),r=0,o=n.length;r${name}'),z=function(e){var t,n,r=(t=e,n=L.keys(t.plugins),t.settings.forced_plugins===undefined?n:x(n,c.not(c.curry(C,t.settings.forced_plugins)))),o=b(r,function(t){return"
  • "+(n=e,r=t,w(B,function(e){return e.key===r}).fold(function(){var e=n.plugins[r].getMetadata;return"function"==typeof e?j(e()):r},function(e){return j({name:e.name,url:"https://www.tinymce.com/docs/plugins/"+e.key})}))+"
  • ";var n,r}),a=o.length,i=o.join("");return"

    "+A.translate(["Plugins installed ({0}):",a])+"

      "+i+"
    "},D=function(e){return{title:"Plugins",type:"container",style:"overflow-y: auto; overflow-x: hidden;",layout:"flex",padding:10,spacing:10,items:[(t=e,{type:"container",html:'
    '+z(t)+"
    ",flex:1}),{type:"container",html:'

    '+A.translate("Premium plugins:")+'

    • PowerPaste
    • Spell Checker Pro
    • Accessibility Checker
    • Advanced Code Editor
    • Enhanced Media Embed
    • Link Checker

    '+A.translate("Learn more...")+"

    ",flex:1}]};var t},q=tinymce.util.Tools.resolve("tinymce.EditorManager"),N=function(){var e,t,n='TinyMCE '+(e=q.majorVersion,t=q.minorVersion,0===e.indexOf("@")?"X.X.X":e+"."+t)+"";return[{type:"label",html:A.translate(["You are using {0}",n])},{type:"spacer",flex:1},{text:"Close",onclick:function(){this.parent().parent().close()}}]},R=function(e,t){return function(){e.windowManager.open({title:"Help",bodyType:"tabpanel",layout:"flex",body:[H(),D(e)],buttons:N(),onPostRender:function(){this.getEl("title").innerHTML='TinyMCE Logo'}})}},V=function(e,t){e.addCommand("mceHelp",R(e,t))},U=function(e,t){e.addButton("help",{icon:"help",onclick:R(e,t)}),e.addMenuItem("Help",{text:"Help",icon:"help",context:"help",onclick:R(e,t)})};i.add("help",function(e,t){U(e,t),V(e,t),e.shortcuts.add("Alt+0","Open help dialog","mceHelp")})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/hr/plugin.min.js b/static/tinymce/plugins/hr/plugin.min.js new file mode 100755 index 0000000..72bc2ca --- /dev/null +++ b/static/tinymce/plugins/hr/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=function(n){n.addCommand("InsertHorizontalRule",function(){n.execCommand("mceInsertContent",!1,"
    ")})},o=function(n){n.addButton("hr",{icon:"hr",tooltip:"Horizontal line",cmd:"InsertHorizontalRule"}),n.addMenuItem("hr",{icon:"hr",text:"Horizontal line",cmd:"InsertHorizontalRule",context:"insert"})};n.add("hr",function(n){t(n),o(n)})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/image/plugin.min.js b/static/tinymce/plugins/image/plugin.min.js new file mode 100755 index 0000000..cc6cdae --- /dev/null +++ b/static/tinymce/plugins/image/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.util.Tools"),n={hasDimensions:function(e){return!1!==e.settings.image_dimensions},hasAdvTab:function(e){return!0===e.settings.image_advtab},getPrependUrl:function(e){return e.getParam("image_prepend_url","")},getClassList:function(e){return e.getParam("image_class_list")},hasDescription:function(e){return!1!==e.settings.image_description},hasImageTitle:function(e){return!0===e.settings.image_title},hasImageCaption:function(e){return!0===e.settings.image_caption},getImageList:function(e){return e.getParam("image_list",!1)},hasUploadUrl:function(e){return e.getParam("images_upload_url",!1)},hasUploadHandler:function(e){return e.getParam("images_upload_handler",!1)},getUploadUrl:function(e){return e.getParam("images_upload_url")},getUploadHandler:function(e){return e.getParam("images_upload_handler")},getUploadBasePath:function(e){return e.getParam("images_upload_base_path")},getUploadCredentials:function(e){return e.getParam("images_upload_credentials")}},a="undefined"!=typeof window?window:Function("return this;")(),i=function(e,t){for(var n=t!==undefined&&null!==t?t:a,i=0;i0&&/^[0-9]+$/.test(e)&&(e+="px"),e},mergeMargins:function(e){if(e.margin){var t=e.margin.split(" ");switch(t.length){case 1:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[0],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[0];break;case 2:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[0],e["margin-left"]=e["margin-left"]||t[1];break;case 3:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[1];break;case 4:e["margin-top"]=e["margin-top"]||t[0],e["margin-right"]=e["margin-right"]||t[1],e["margin-bottom"]=e["margin-bottom"]||t[2],e["margin-left"]=e["margin-left"]||t[3]}delete e.margin}return e},createImageList:function(e,t){var a=n.getImageList(e);"string"==typeof a?u.send({url:a,success:function(e){t(JSON.parse(e))}}):"function"==typeof a?a(t):t(a)},waitLoadImage:function(e,t,a){function i(){a.onload=a.onerror=null,e.selection&&(e.selection.select(a),e.nodeChanged())}a.onload=function(){t.width||t.height||!n.hasDimensions(e)||e.dom.setAttribs(a,{width:a.clientWidth,height:a.clientHeight}),i()},a.onerror=i},blobToDataUri:function(e){return new s(function(t,n){var a=new l;a.onload=function(){t(a.result)},a.onerror=function(){n(l.error.message)},a.readAsDataURL(e)})}},g={makeTab:function(e,t){return{title:"Advanced",type:"form",pack:"start",items:[{label:"Style",name:"style",type:"textbox",onchange:(a=e,function(e){var t=a.dom,i=e.control.rootControl;if(n.hasAdvTab(a)){var r=i.toJSON(),o=t.parseStyle(r.style);i.find("#vspace").value(""),i.find("#hspace").value(""),((o=d.mergeMargins(o))["margin-top"]&&o["margin-bottom"]||o["margin-right"]&&o["margin-left"])&&(o["margin-top"]===o["margin-bottom"]?i.find("#vspace").value(d.removePixelSuffix(o["margin-top"])):i.find("#vspace").value(""),o["margin-right"]===o["margin-left"]?i.find("#hspace").value(d.removePixelSuffix(o["margin-right"])):i.find("#hspace").value("")),o["border-width"]&&i.find("#border").value(d.removePixelSuffix(o["border-width"])),i.find("#style").value(t.serializeStyle(t.parseStyle(t.serializeStyle(o))))}})},{type:"form",layout:"grid",packV:"start",columns:2,padding:0,defaults:{type:"textbox",maxWidth:50,onchange:function(n){t(e,n.control.rootControl)}},items:[{label:"Vertical space",name:"vspace"},{label:"Border width",name:"border"},{label:"Horizontal space",name:"hspace"},{label:"Border style",type:"listbox",name:"borderStyle",width:90,maxWidth:90,onselect:function(n){t(e,n.control.rootControl)},values:[{text:"Select...",value:""},{text:"Solid",value:"solid"},{text:"Dotted",value:"dotted"},{text:"Dashed",value:"dashed"},{text:"Double",value:"double"},{text:"Groove",value:"groove"},{text:"Ridge",value:"ridge"},{text:"Inset",value:"inset"},{text:"Outset",value:"outset"},{text:"None",value:"none"},{text:"Hidden",value:"hidden"}]}]}]};var a}},m=function(e,t){e.state.set("oldVal",e.value()),t.state.set("oldVal",t.value())},f=function(e,t){var n=e.find("#width")[0],a=e.find("#height")[0],i=e.find("#constrain")[0];n&&a&&i&&t(n,a,i.checked())},p=function(e,t,n){var a=e.state.get("oldVal"),i=t.state.get("oldVal"),r=e.value(),o=t.value();n&&a&&i&&r&&o&&(r!==a?(o=Math.round(r/a*o),isNaN(o)||t.value(o)):(r=Math.round(o/i*r),isNaN(r)||e.value(r))),m(e,t)},h=function(e){f(e,p)},b={createUi:function(){var e=function(e){h(e.control.rootControl)};return{type:"container",label:"Dimensions",layout:"flex",align:"center",spacing:5,items:[{name:"width",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Width"},{type:"label",text:"x"},{name:"height",type:"textbox",maxLength:5,size:5,onchange:e,ariaLabel:"Height"},{name:"constrain",type:"checkbox",checked:!0,text:"Constrain proportions"}]}},syncSize:function(e){f(e,m)},updateSize:h},v=function(e){e.meta=e.control.rootControl.toJSON()},y=function(e,a){var i=[{name:"src",type:"filepicker",filetype:"image",label:"Source",autofocus:!0,onchange:function(a){var i,r,o,l,s,u,c,g,m;r=e,u=(i=a).meta||{},c=i.control,g=c.rootControl,(m=g.find("#image-list")[0])&&m.value(r.convertURL(c.value(),"src")),t.each(u,function(e,t){g.find("#"+t).value(e)}),u.width||u.height||(o=r.convertURL(c.value(),"src"),l=n.getPrependUrl(r),s=new RegExp("^(?:[a-z]+:)?//","i"),l&&!s.test(o)&&o.substring(0,l.length)!==l&&(o=l+o),c.value(o),d.getImageSize(r.documentBaseURI.toAbsolute(c.value()),function(e){e.width&&e.height&&n.hasDimensions(r)&&(g.find("#width").value(e.width),g.find("#height").value(e.height),b.updateSize(g))}))},onbeforecall:v},a];return n.hasDescription(e)&&i.push({name:"alt",type:"textbox",label:"Image description"}),n.hasImageTitle(e)&&i.push({name:"title",type:"textbox",label:"Image Title"}),n.hasDimensions(e)&&i.push(b.createUi()),n.getClassList(e)&&i.push({name:"class",type:"listbox",label:"Class",values:d.buildListItems(n.getClassList(e),function(t){t.value&&(t.textStyle=function(){return e.formatter.getCssText({inline:"img",classes:[t.value]})})})}),n.hasImageCaption(e)&&i.push({name:"caption",type:"checkbox",label:"Caption"}),i},x={makeTab:function(e,t){return{title:"General",type:"form",items:y(e,t)}},getGeneralItems:y},w=function(){return o.getOrDie("URL")},S=function(e){return w().createObjectURL(e)},U=function(e){w().revokeObjectURL(e)},T=tinymce.util.Tools.resolve("tinymce.ui.Factory"),C=function(){},I=function(e,t){return e?e.replace(/\/$/,"")+"/"+t.replace(/^\//,""):t};function P(e){var n=function(t,n,a,i){var r,l;(r=new function(){return new(o.getOrDie("XMLHttpRequest"))}).open("POST",e.url),r.withCredentials=e.credentials,r.upload.onprogress=function(e){i(e.loaded/e.total*100)},r.onerror=function(){a("Image upload failed due to a XHR Transport error. Code: "+r.status)},r.onload=function(){var t;r.status<200||r.status>=300?a("HTTP Error: "+r.status):(t=JSON.parse(r.responseText))&&"string"==typeof t.location?n(I(e.basePath,t.location)):a("Invalid JSON: "+r.responseText)},(l=new FormData).append("file",t.blob(),t.filename()),r.send(l)};return e=t.extend({credentials:!1,handler:n},e),{upload:function(t){return e.url||e.handler!==n?(a=t,i=e.handler,new s(function(e,t){try{i(a,e,t,C)}catch(n){t(n.message)}})):s.reject("Upload url missing from the settings.");var a,i}}}var L=function(e){return function(t){var a=T.get("Throbber"),i=t.control.rootControl,r=new a(i.getEl()),o=t.control.value(),l=S(o),s=P({url:n.getUploadUrl(e),basePath:n.getUploadBasePath(e),credentials:n.getUploadCredentials(e),handler:n.getUploadHandler(e)}),u=function(){r.hide(),U(l)};return r.show(),d.blobToDataUri(o).then(function(t){var n=e.editorUpload.blobCache.create({blob:o,blobUri:l,name:o.name?o.name.replace(/\.[^\.]+$/,""):null,base64:t.split(",")[1]});return s.upload(n).then(function(e){var t=i.find("#src");return t.value(e),i.find("tabpanel")[0].activateTab(0),t.fire("change"),u(),e})})["catch"](function(t){e.windowManager.alert(t),u()})}},_=".jpg,.jpeg,.png,.gif",N={makeTab:function(e){return{title:"Upload",type:"form",layout:"flex",direction:"column",align:"stretch",padding:"20 20 20 20",items:[{type:"container",layout:"flex",direction:"column",align:"center",spacing:10,items:[{text:"Browse for an image",type:"browsebutton",accept:_,onchange:L(e)},{text:"OR",type:"label"}]},{text:"Drop an image here",type:"dropzone",accept:_,height:100,onchange:L(e)}]}}};function A(e){var a=function(e,t){if(n.hasAdvTab(e)){var a=e.dom,i=t.toJSON(),r=a.parseStyle(i.style);r=d.mergeMargins(r),i.vspace&&(r["margin-top"]=r["margin-bottom"]=d.addPixelSuffix(i.vspace)),i.hspace&&(r["margin-left"]=r["margin-right"]=d.addPixelSuffix(i.hspace)),i.border&&(r["border-width"]=d.addPixelSuffix(i.border)),i.borderStyle&&(r["border-style"]=i.borderStyle),t.find("#style").value(a.serializeStyle(a.parseStyle(a.serializeStyle(r))))}};function i(i){var r,o,l,s,u={},c=e.dom;function m(){var n,i;b.updateSize(r),a(e,r),(u=t.extend(u,r.toJSON())).alt||(u.alt=""),u.title||(u.title=""),""===u.width&&(u.width=null),""===u.height&&(u.height=null),u.style||(u.style=null),u={src:u.src,alt:u.alt,title:u.title,width:u.width,height:u.height,style:u.style,caption:u.caption,"class":u["class"]},e.undoManager.transact(function(){if(u.src){if(""===u.title&&(u.title=null),o?c.setAttribs(o,u):(u.id="__mcenew",e.focus(),e.selection.setContent(c.createHTML("img",u)),o=c.get("__mcenew"),c.setAttrib(o,"id",null)),e.editorUpload.uploadImagesAuto(),!1===u.caption&&c.is(o.parentNode,"figure.image")&&(n=o.parentNode,c.insertAfter(o,n),c.remove(n)),!0!==u.caption)d.waitLoadImage(e,u,o);else if(!c.is(o.parentNode,"figure.image")){i=o,o=o.cloneNode(!0),(n=c.create("figure",{"class":"image"})).appendChild(o),n.appendChild(c.create("figcaption",{contentEditable:!0},"Caption")),n.contentEditable=!1;var t=c.getParent(i,function(t){return e.schema.getTextBlockElements()[t.nodeName]});t?c.split(t,i,n):c.replace(n,i),e.selection.select(n)}}else if(o){var a=c.is(o.parentNode,"figure.image")?o.parentNode:o;c.remove(a),e.focus(),e.nodeChanged(),c.isEmpty(e.getBody())&&(e.setContent(""),e.selection.setCursorLocation())}})}if(o=e.selection.getNode(),(l=c.getParent(o,"figure.image"))&&(o=c.select("img",l)[0]),o&&("IMG"!==o.nodeName||o.getAttribute("data-mce-object")||o.getAttribute("data-mce-placeholder"))&&(o=null),o&&(u={src:c.getAttrib(o,"src"),alt:c.getAttrib(o,"alt"),title:c.getAttrib(o,"title"),"class":c.getAttrib(o,"class"),width:c.getAttrib(o,"width"),height:c.getAttrib(o,"height"),caption:!!l}),i&&(s={type:"listbox",label:"Image list",name:"image-list",values:d.buildListItems(i,function(t){t.value=e.convertURL(t.value||t.url,"src")},[{text:"None",value:""}]),value:u.src&&e.convertURL(u.src,"src"),onselect:function(e){var t=r.find("#alt");(!t.value()||e.lastControl&&t.value()===e.lastControl.text())&&t.value(e.control.text()),r.find("#src").value(e.control.value()).fire("change")},onPostRender:function(){s=this}}),n.hasAdvTab(e)||n.hasUploadUrl(e)||n.hasUploadHandler(e)){var f=[x.makeTab(e,s)];n.hasAdvTab(e)&&(o&&(o.style.marginLeft&&o.style.marginRight&&o.style.marginLeft===o.style.marginRight&&(u.hspace=d.removePixelSuffix(o.style.marginLeft)),o.style.marginTop&&o.style.marginBottom&&o.style.marginTop===o.style.marginBottom&&(u.vspace=d.removePixelSuffix(o.style.marginTop)),o.style.borderWidth&&(u.border=d.removePixelSuffix(o.style.borderWidth)),u.borderStyle=o.style.borderStyle,u.style=e.dom.serializeStyle(e.dom.parseStyle(e.dom.getAttrib(o,"style")))),f.push(g.makeTab(e,a))),(n.hasUploadUrl(e)||n.hasUploadHandler(e))&&f.push(N.makeTab(e)),r=e.windowManager.open({title:"Insert/edit image",data:u,bodyType:"tabpanel",body:f,onSubmit:m})}else r=e.windowManager.open({title:"Insert/edit image",data:u,body:x.getGeneralItems(e,s),onSubmit:m});b.syncSize(r)}return{open:function(){d.createImageList(e,i)}}}var k=function(e){e.addCommand("mceImage",A(e).open)},D=function(e){return function(n){for(var a,i,r=n.length,o=function(t){t.attr("contenteditable",e?"true":null)};r--;)a=n[r],(i=a.attr("class"))&&/\bimage\b/.test(i)&&(a.attr("contenteditable",e?"false":null),t.each(a.getAll("figcaption"),o))}},R=function(e){e.on("preInit",function(){e.parser.addNodeFilter("figure",D(!0)),e.serializer.addNodeFilter("figure",D(!1))})},z=function(e){e.addButton("image",{icon:"image",tooltip:"Insert/edit image",onclick:A(e).open,stateSelector:"img:not([data-mce-object],[data-mce-placeholder]),figure.image"}),e.addMenuItem("image",{icon:"image",text:"Image",onclick:A(e).open,context:"insert",prependToContext:!0})};e.add("image",function(e){R(e),z(e),k(e)})}(); \ No newline at end of file diff --git a/static/tinymce/plugins/imagetools/plugin.min.js b/static/tinymce/plugins/imagetools/plugin.min.js new file mode 100755 index 0000000..39de4a3 --- /dev/null +++ b/static/tinymce/plugins/imagetools/plugin.min.js @@ -0,0 +1 @@ +!function(){"use strict";var t=function(e){var n=e,o=function(){return n};return{get:o,set:function(t){n=t},clone:function(){return t(o())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.util.Tools");function o(t,e){return i(document.createElement("canvas"),t,e)}function r(t){return t.getContext("2d")}function i(t,e,n){return t.width=e,t.height=n,t}var a,u,c,l,s={create:o,clone:function(t){var e;return r(e=o(t.width,t.height)).drawImage(t,0,0),e},resize:i,get2dContext:r,get3dContext:function(t){var e=null;try{e=t.getContext("webgl")||t.getContext("experimental-webgl")}catch(n){}return e||(e=null),e}},f={getWidth:function(t){return t.naturalWidth||t.width},getHeight:function(t){return t.naturalHeight||t.height}},d=window.Promise?window.Promise:function(){var t=function(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],c(t,n(i,this),n(a,this))},e=t.immediateFn||"function"==typeof setImmediate&&setImmediate||function(t){setTimeout(t,1)};function n(t,e){return function(){t.apply(e,arguments)}}var o=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function r(t){var n=this;null!==this._state?e(function(){var e=n._state?t.onFulfilled:t.onRejected;if(null!==e){var o;try{o=e(n._value)}catch(r){return void t.reject(r)}t.resolve(o)}else(n._state?t.resolve:t.reject)(n._value)}):this._deferreds.push(t)}function i(t){try{if(t===this)throw new TypeError("A promise cannot be resolved with itself.");if(t&&("object"==typeof t||"function"==typeof t)){var e=t.then;if("function"==typeof e)return void c(n(e,t),n(i,this),n(a,this))}this._state=!0,this._value=t,u.call(this)}catch(o){a.call(this,o)}}function a(t){this._state=!1,this._value=t,u.call(this)}function u(){for(var t=0,e=this._deferreds.length;tn?t=n:t0?3*e:e)))+n,.6094*(1-n),.082*(1-n),0,0,.3086*(1-n),.6094*(1-n)+n,.082*(1-n),0,0,.3086*(1-n),.6094*(1-n),.082*(1-n)+n,0,0,0,0,0,1,0,0,0,0,0,1])},adjustHue:function(t,e){var n,o,r,i,a;return e=H(e,-180,180)/180*Math.PI,F(t,[(r=.213)+.787*(n=Math.cos(e))+(o=Math.sin(e))*-r,(i=.715)+n*-i+o*-i,(a=.072)+n*-a+.928*o,0,0,r+n*-r+.143*o,i+n*(1-i)+.14*o,a+n*-a+-.283*o,0,0,r+n*-r+-.787*o,i+n*-i+o*i,a+.928*n+o*a,0,0,0,0,0,1,0,0,0,0,0,1])},adjustColors:function(t,e,n,o){return F(t,[e=H(e,0,2),0,0,0,0,0,n=H(n,0,2),0,0,0,0,0,o=H(o,0,2),0,0,0,0,0,1,0,0,0,0,0,1])},adjustSepia:function(t,e){return F(t,P([.393,.769,.189,0,0,.349,.686,.168,0,0,.272,.534,.131,0,0,0,0,0,1,0,0,0,0,0,1],e=H(e,0,1)))},adjustGrayscale:function(t,e){return F(t,P([.33,.34,.33,0,0,.33,.34,.33,0,0,.33,.34,.33,0,0,0,0,0,1,0,0,0,0,0,1],e=H(e,0,1)))}};function q(t,e){return t.toCanvas().then(function(n){return o=n,r=t.getType(),i=e,u=s.get2dContext(o),a=function(t,e){var n,o,r,i,a,u=t.data,c=e[0],l=e[1],s=e[2],f=e[3],d=e[4],h=e[5],p=e[6],m=e[7],g=e[8],v=e[9],y=e[10],b=e[11],w=e[12],x=e[13],R=e[14],I=e[15],T=e[16],k=e[17],C=e[18],B=e[19];for(a=0;an?t=n:t2)&&(i=i<.5?.5:2,u=!0),(a<.5||a>2)&&(a=a<.5?.5:2,u=!0);var c,l,h,p=(c=t,l=i,h=a,new d(function(t){var e=f.getWidth(c),n=f.getHeight(c),o=Math.floor(e*l),r=Math.floor(n*h),i=s.create(o,r),a=s.get2dContext(i);a.drawImage(c,0,0,e,n,0,0,o,r),t(i)}));return u?p.then(function(t){return Jt(t,e,n)}):p}},K={rotate:function(t,e){return t.toCanvas().then(function(n){return o=n,r=t.getType(),i=e,a=s.create(o.width,o.height),u=s.get2dContext(a),c=0,l=0,90!=(i=i<0?360+i:i)&&270!=i||s.resize(a,a.height,a.width),90!=i&&180!=i||(c=a.width),270!=i&&180!=i||(l=a.height),u.translate(c,l),u.rotate(i*Math.PI/180),u.drawImage(o,0,0),L.fromCanvas(a,r);var o,r,i,a,u,c,l})},flip:function(t,e){return t.toCanvas().then(function(n){return o=n,r=t.getType(),i=e,a=s.create(o.width,o.height),u=s.get2dContext(a),"v"==i?(u.scale(1,-1),u.drawImage(o,0,-a.height)):(u.scale(-1,1),u.drawImage(o,-a.width,0)),L.fromCanvas(a,r);var o,r,i,a,u})},crop:function(t,e,n,o,r){return t.toCanvas().then(function(i){return a=i,u=t.getType(),c=e,l=n,f=o,d=r,h=s.create(f,d),s.get2dContext(h).drawImage(a,-c,-l),L.fromCanvas(h,u);var a,u,c,l,f,d,h})},resize:function(t,e,n){return t.toCanvas().then(function(o){return J.scale(o,e,n).then(function(e){return L.fromCanvas(e,t.getType())})})}},Z={invert:function(t){return Y.invert(t)},sharpen:function(t){return Y.sharpen(t)},emboss:function(t){return Y.emboss(t)},brightness:function(t,e){return Y.brightness(t,e)},hue:function(t,e){return Y.hue(t,e)},saturate:function(t,e){return Y.saturate(t,e)},contrast:function(t,e){return Y.contrast(t,e)},grayscale:function(t,e){return Y.grayscale(t,e)},sepia:function(t,e){return Y.sepia(t,e)},colorize:function(t,e,n,o){return Y.colorize(t,e,n,o)},gamma:function(t,e){return Y.gamma(t,e)},exposure:function(t,e){return Y.exposure(t,e)},flip:function(t,e){return K.flip(t,e)},crop:function(t,e,n,o,r){return K.crop(t,e,n,o,r)},resize:function(t,e,n){return K.resize(t,e,n)},rotate:function(t,e){return K.rotate(t,e)}},Q=function(t){return t.toBlob()},tt={blobToImageResult:function(t){return L.fromBlob(t)},fromBlobAndUrlSync:function(t,e){return L.fromBlobAndUrlSync(t,e)},imageToImageResult:function(t){return L.fromImage(t)},imageResultToBlob:function(t,e,n){return e===undefined&&n===undefined?Q(t):t.toAdjustedBlob(e,n)},imageResultToOriginalBlob:Q,imageResultToDataURL:function(t){return t.toDataURL()}},et=function(){return T.getOrDie("URL")},nt={createObjectURL:function(t){return et().createObjectURL(t)},revokeObjectURL:function(t){et().revokeObjectURL(t)}},ot=tinymce.util.Tools.resolve("tinymce.util.Delay"),rt=tinymce.util.Tools.resolve("tinymce.util.Promise"),it=tinymce.util.Tools.resolve("tinymce.util.URI"),at=function(t){return t.getParam("imagetools_toolbar","rotateleft rotateright | flipv fliph | crop editimage imageoptions")},ut=function(t){return t.getParam("imagetools_proxy")},ct=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),lt=tinymce.util.Tools.resolve("tinymce.ui.Factory"),st=tinymce.util.Tools.resolve("tinymce.geom.Rect"),ft=function(t){return new rt(function(e){var n=function(){t.removeEventListener("load",n),e(t)};t.complete?e(t):t.addEventListener("load",n)})},dt=tinymce.util.Tools.resolve("tinymce.dom.DomQuery"),ht=tinymce.util.Tools.resolve("tinymce.util.Observable"),pt=tinymce.util.Tools.resolve("tinymce.util.VK"),mt=0,gt={create:function(t){return new(lt.get("Control").extend({Defaults:{classes:"imagepanel"},selection:function(t){return arguments.length?(this.state.set("rect",t),this):this.state.get("rect")},imageSize:function(){var t=this.state.get("viewRect");return{w:t.w,h:t.h}},toggleCropRect:function(t){this.state.set("cropEnabled",t)},imageSrc:function(t){var e=this,n=new Image;n.src=t,ft(n).then(function(){var t,o,r=e.state.get("viewRect");if((o=e.$el.find("img"))[0])o.replaceWith(n);else{var i=document.createElement("div");i.className="mce-imagepanel-bg",e.getEl().appendChild(i),e.getEl().appendChild(n)}t={x:0,y:0,w:n.naturalWidth,h:n.naturalHeight},e.state.set("viewRect",t),e.state.set("rect",st.inflate(t,-20,-20)),r&&r.w===t.w&&r.h===t.h||e.zoomFit(),e.repaintImage(),e.fire("load")})},zoom:function(t){return arguments.length?(this.state.set("zoom",t),this):this.state.get("zoom")},postRender:function(){return this.imageSrc(this.settings.imageSrc),this._super()},zoomFit:function(){var t,e,n,o,r,i;t=this.$el.find("img"),e=this.getEl().clientWidth,n=this.getEl().clientHeight,o=t[0].naturalWidth,r=t[0].naturalHeight,(i=Math.min((e-10)/o,(n-10)/r))>=1&&(i=1),this.zoom(i)},repaintImage:function(){var t,e,n,o,r,i,a,u,c,l,s;s=this.getEl(),c=this.zoom(),l=this.state.get("rect"),a=this.$el.find("img"),u=this.$el.find(".mce-imagepanel-bg"),r=s.offsetWidth,i=s.offsetHeight,n=a[0].naturalWidth*c,o=a[0].naturalHeight*c,t=Math.max(0,r/2-n/2),e=Math.max(0,i/2-o/2),a.css({left:t,top:e,width:n,height:o}),u.css({left:t,top:e,width:n,height:o}),this.cropRect&&(this.cropRect.setRect({x:l.x*c+t,y:l.y*c+e,w:l.w*c,h:l.h*c}),this.cropRect.setClampRect({x:t,y:e,w:n,h:o}),this.cropRect.setViewPortRect({x:0,y:0,w:r,h:i}))},bindStates:function(){var t=this;function e(e){t.cropRect=function(t,e,o,r,i){var a,u,c,l,s="mce-",f=s+"crid-"+mt++;function d(t,e){return{x:e.x-t.x,y:e.y-t.y,w:e.w,h:e.h}}function h(e,n,r,i){var u,c,l,s,f;u=n.x,c=n.y,l=n.w,s=n.h,u+=r*e.deltaX,c+=i*e.deltaY,(l+=r*e.deltaW)<20&&(l=20),(s+=i*e.deltaH)<20&&(s=20),f=t=st.clamp({x:u,y:c,w:l,h:s},o,"move"===e.name),f=d(o,f),a.fire("updateRect",{rect:f}),g(f)}function p(t){function o(t,e){e.h<0&&(e.h=0),e.w<0&&(e.w=0),dt("#"+f+"-"+t,r).css({left:e.x,top:e.y,width:e.w,height:e.h})}n.each(u,function(e){dt("#"+f+"-"+e.name,r).css({left:t.w*e.xMul+t.x,top:t.h*e.yMul+t.y})}),o("top",{x:e.x,y:e.y,w:e.w,h:t.y-e.y}),o("right",{x:t.x+t.w,y:t.y,w:e.w-t.x-t.w+e.x,h:t.h}),o("bottom",{x:e.x,y:t.y+t.h,w:e.w,h:e.h-t.y-t.h+e.y}),o("left",{x:e.x,y:t.y,w:t.x-e.x,h:t.h}),o("move",t)}function m(e){p(t=e)}function g(t){var e,n;m((e=o,{x:(n=t).x+e.x,y:n.y+e.y,w:n.w,h:n.h}))}return u=[{name:"move",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:0,deltaH:0,label:"Crop Mask"},{name:"nw",xMul:0,yMul:0,deltaX:1,deltaY:1,deltaW:-1,deltaH:-1,label:"Top Left Crop Handle"},{name:"ne",xMul:1,yMul:0,deltaX:0,deltaY:1,deltaW:1,deltaH:-1,label:"Top Right Crop Handle"},{name:"sw",xMul:0,yMul:1,deltaX:1,deltaY:0,deltaW:-1,deltaH:1,label:"Bottom Left Crop Handle"},{name:"se",xMul:1,yMul:1,deltaX:0,deltaY:0,deltaW:1,deltaH:1,label:"Bottom Right Crop Handle"}],l=["top","right","bottom","left"],dt('
    ').appendTo(r),n.each(l,function(t){dt("#"+f,r).append('