From 39079f8c76a5df1c92874f288446fc1c39bbcad6 Mon Sep 17 00:00:00 2001 From: Simon Panay Date: Wed, 26 Nov 2014 16:30:47 +0100 Subject: [PATCH] add ability to upload non-image files --- ckeditor/static/ckeditor/file-icons/doc.png | Bin 0 -> 2066 bytes ckeditor/static/ckeditor/file-icons/file.png | Bin 0 -> 1270 bytes ckeditor/static/ckeditor/file-icons/pdf.png | Bin 0 -> 1929 bytes ckeditor/static/ckeditor/file-icons/ppt.png | Bin 0 -> 1766 bytes ckeditor/static/ckeditor/file-icons/swf.png | Bin 0 -> 1970 bytes ckeditor/static/ckeditor/file-icons/txt.png | Bin 0 -> 1898 bytes ckeditor/static/ckeditor/file-icons/xls.png | Bin 0 -> 1659 bytes ckeditor/templates/browse.html | 14 +++++++---- ckeditor/utils.py | 23 +++++++++++++++++++ ckeditor/views.py | 19 +++++++++------ 10 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 ckeditor/static/ckeditor/file-icons/doc.png create mode 100644 ckeditor/static/ckeditor/file-icons/file.png create mode 100644 ckeditor/static/ckeditor/file-icons/pdf.png create mode 100644 ckeditor/static/ckeditor/file-icons/ppt.png create mode 100644 ckeditor/static/ckeditor/file-icons/swf.png create mode 100644 ckeditor/static/ckeditor/file-icons/txt.png create mode 100644 ckeditor/static/ckeditor/file-icons/xls.png diff --git a/ckeditor/static/ckeditor/file-icons/doc.png b/ckeditor/static/ckeditor/file-icons/doc.png new file mode 100644 index 0000000000000000000000000000000000000000..a4e3fd721001a563a9003e9a6ed8c6dcca70ed64 GIT binary patch literal 2066 zcmV+t2<`WYP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipV- z3KAzq#V6wc00)vuL_t(o!|j({Y#dh=$A5R`&X;$+yLP;5*N)S~c9S-4RRoHtDn6>x zR3pHE zT`6_R8)>bn`~Feewm*N>RagD%9XTHx8~b3Xr{^DDHp}HWH%*h%r%o|DJIl6h+onv@ z{LskANbT*`7;k-`l!`D-(lkXWb;%=161ENwvZYw$(4j*k3kwU?>FMc5FU$G4Fka4R zA0TFE#}0Px+{x6`6tBMe>H|lP9MR=+`OBB&+*o(aWsfw~fXU8XyC{`PD5W@h^eE%w zL{Cr8!}6jrpM_FN z$;t9G-96nbFD{em%;0$*K@cEidwCQ^luEtCaZIC8M+iaC2i_@^!N9(sdFVZvKU}~ejXtNVHmP!&mP9d#|gtG&1T4s9XmLA z@)TWNU1TyH%*@O%IJk`yC#LA?>c;nd1_lQ3To+-Qn5N0d$Ov&9^EQ!hSg}|nm&@Zg z4j}03y8_2?@Vqt>eSIZN)5b6)S6@Af>)I5HMO@coZ0vRN`2uclKc`NW85p>dD2mW% zF7nOQc{Nh z`udR4pkA*7CRbe1PqW!1o6Ta|HkC@1QmGfMFH-0FoMfxl>$t9iQVI2X9ouf#ZLLxfLR`5KRm6a8QVWL#Bp3L&U(Q78t!Q#RKXwBBa zZM5Q;m6b&bg)P*oYs}BhaeU(6+q-l#cPM>CVc^QCgXO2Rlz{%-p48tIa6Bf@b zaLqN>ptZh`WX8wGM|1hYQ7I)_YoxT8pPxrciBc)HZ4*T;^7%Z~>Ka{LT{N3bY}>|h z99C9W@m!B2i7^bbjic7o>vg)jyNTnNY&M71>4mU+o*PMNV44PoAuvsd;|R+#NRpT! zXdr|FQj#Rb_p8)uRirc!0-9k!yc7`CRv9?yBTt0!6Ce`X1TDRANM*e31fl>2p z{7ITbGv(>)w{PE$Fa&6bEy?Qg5^>ZdZpGM+#Y(-7iennS&%#`dG)d_#773a)Dl1Ev zhGa{j!19?TY{$j~R+bj2`T>K3Tgm0}D3v0f-hV)!sR}F!N^4Y_wzd2$!5{?EFgB%N z0SMCsrAX6sga3tSmx>VU0urUr=Y@Ro_B&9jy|-L$z#}hObUJ5Sp%5C)_Ccf}@Ent@ zXCZ_@YfTU(G{OW0WIaj7k?V8yFeZ#r6p-t%@a*;+z-j=$yt|3#xzy{8wgA}%bUKiC zHB!Vpc=s+AfBh+{zx_1Ff3cSb?iePDLNc}@jU(>;$N=Rh?;?EmUhcVZfTYzVV=ICn zIT+`zQj~f3VDt@4tb4w+!*cAH0l8H4AGYhPbdl z)#-+2$hT6u*5Las4vjDJ%CRN(?CR#B`>y4C`(Nkl_g%;DUY_Q;S7rft=A~)A@!9Km z{Mj+~-7>`IzI%`tUz;P>VPP63QVK4+hcirpV@WJiU-V+iUFkOXohhivq2EXtS;2}@YN+gbJGw%|MMh;oWoE5besqF z?qaRcq8hZg|IVHK?2nUl!q_3`3xlrc!U=hcSkL zjBC-AwJ{7qoG2>w7L6!I2*H+4hpf9%YRe75<9AiL@e_9v1OY+_WJ`e`y-5WE({ky` zyXT$OZ*BCO(st>x-A(399M{8fz4hd+Md$1hfkMz|G-x)P?QAb*;Ne?iY*V8&G^2Q( z*~Gi}Qy8V-H#L5(PAhJ0u4-#bZ{$zTEv}_;vJTn1VOm41AdchqACBHc&zGyg@an3M wU-#Gh^!LJ)Qkx??F)^VRmzLgh=l@sx52VyH?YNP(BLDyZ07*qoM6N<$f*_g%y8r+H literal 0 HcmV?d00001 diff --git a/ckeditor/static/ckeditor/file-icons/file.png b/ckeditor/static/ckeditor/file-icons/file.png new file mode 100644 index 0000000000000000000000000000000000000000..c7c72cb2ccb0c786bfffa051877b49c2ba9401b6 GIT binary patch literal 1270 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 P00000NkvXXu0mjf^5Lvo literal 0 HcmV?d00001 diff --git a/ckeditor/static/ckeditor/file-icons/ppt.png b/ckeditor/static/ckeditor/file-icons/ppt.png new file mode 100644 index 0000000000000000000000000000000000000000..0cd574b15ed23fd492c9419b3328b60dca6e3871 GIT binary patch literal 1766 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipV- z3KAu#%SO)t00w4BL_t(o!|j(_Y#dh^$A4$e%t30u>chkr09Ml!uZib!p}LQtZS@vx(!) z&0c%GyPlbI;b9zSecPlcz)O#GG}4)w?|;7U{J;PA9r$Q`H2#M}thG2YGIBBK=;$`a z+_NETE%Vjtu}pr4n6TUFW5gkM{NT z&9(Z+S-D`036T=5HO82Go=Pbm+_sI*Vv*CQPxqC}<=KlDFaEq0xZ5g>*4oxVb3KGi zBOCz^SO@w(`3PZb7#kg8a&q$E;NalFd_I4$r>EzacMto}(2nBf&BLDOuLCZ?%OX-P zsx(YE{ugv(9#x-3Ym2{S2PU(Las4r7rb-xN2!eqA{(hvCy?uRs7uF4XlkcmiBN4fF z;&Ugc{PtEGB!I^T)s`PA!m1_lP0nwpvzA0MA+ zMYtWsVsY5@yyc!d9=K`r-=8P<;G;CIz0cgxG2&36tc$h+r65)s6^6tM4K{xB6hr4q zI94G5r4-g$dU|>&6bdh`30^1`hh4V`TsYW#0KeHy+pYu5o;gBPxsH|@lolv$ld0}J zFDTKhj6Aj?0_HOoP2?{T?eR~`Vkfnk!l0o^vz0U zNRP$`gA^*`bag+(r3>c)2!ep#-d?tD-MTio5%vz-g$K23E(*F%du}JWT#k+)z)Pht#7q()IgEpX*MH!9O4%%p9ZHa30 z)INO(o7sr1lve=*#Bq$)W{J!# z6rq$_WiyJR9aU3rz%d@ky zY~Q{et)rx>{r}7Ctf?OthPqjVPF|WUI zj6Hk4h?Ej*lFVrj0@~Vg%*|C1LLmO|+UvGMm(hzsP+FsvTGA~?IHWUave_)oUBbSi zFCdB{v^8MCvk@1lz+=5;$6+nC0G>IkStqG~|>dwKlb-@)Da z3}(KJ)3%xD*z-`kiT9PCA%tA|zj0_gVg>k;ZGERhTDzIhNs27|dJl~klkmy@Cm^h1 zXG_$-y9NEut9V~Ngf5+-@%;{LbrSW~Vd_6DB2vLU@xp2K(%bza=@&+m9bf(j2!RN? zNbmb8a@W_;?;nR$J0jZ&UKUb$M6LkNy4r=dcPggadTTyv_zm>n(^#2GNCuGUAo|^t z=<8#M>;u@i{voakO@vz;GyzcquVAMJArmCu`&n#MB|h;jM6eB!>r7ZJoP--Pz1}^f zNr>)3IMVItb0;CHL8cuX7a>!a58i}o8Ij)vZt9LC`&snBQOvFL2$^bqOKH*y*R?U| zD(RKo{E2TMWeTJRMu4<%;W$iaT$usWbQy6By!CQ&EN%)+w8mlAkOFG88Vd^x3Cx@< z^4G$*QFvf2I$A(1Rjd0qJR9NbD%H7pqBz1@yZV4iQ@4Vv<*OAHD;(k6-&?7TQE{Af zNNce@oS*KkS7xZrS8<&C3%*kO*9`91*qFV3 literal 0 HcmV?d00001 diff --git a/ckeditor/static/ckeditor/file-icons/swf.png b/ckeditor/static/ckeditor/file-icons/swf.png new file mode 100644 index 0000000000000000000000000000000000000000..4f28e9443a3ad7564d0e1dd2bc0cff5b3ec795db GIT binary patch literal 1970 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 literal 0 HcmV?d00001 diff --git a/ckeditor/static/ckeditor/file-icons/xls.png b/ckeditor/static/ckeditor/file-icons/xls.png new file mode 100644 index 0000000000000000000000000000000000000000..26335f6879fc87ae5fa8567dc351667e0ea80136 GIT binary patch literal 1659 zcmV->288*EP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipV- z3KIqsw+8$G00sL=L_t(o!|j$!Y+P3v$A9PCbMN&$GM>aU6W1k)-*GT%fEJ;$sKf#Z z3GtA4R0xR$LJBm3MG?CqArKoLMFJ6Z!Gf>|m3VE~P^4A}2q-Cv+}f7yOgxQid;IG7 zG4Hwep2Ol!$DVk`aUu$ve$uCV?$J5t|Gm!teDJQkEB`|gohD~yW^%pB4v-j^li3Y;5echXS9OnfYKQmHKxi9_K;8Ez4s0%{N(ETH@^4vsufs9v>YY-8*WJ zymvxtUB|Krf&i`cvDNo|-gD**ed#pUuU{WsTU*=B<#NAxAn=1>d=L!{@E9H%Vtjm@ zY&Oe{8#kVrnwm0;i;G`B7PxEy^S~Me2Cx`Ef1XSxgVvhq>1k$XXRpl9&zo#EJA5q9 z!2kv!Kq(8`Q8T@%c+7Fnx@IEZ1 z!ilgbK}t-sD4Wym>5~F5l*?u2=H_r+7o`-w?=v?yM>3i0436FpyHbkTnHfsOJyMwr zwOWl>EXHhu4f=X}k7T^)i4!DGouXc^Bc;Ru%C>1V8VD)ql5^eWd7)6?_QC=^ zkqGr#jm+uOoQTJ%RjUjQ4|fc^Wm&8)FH@^l3AAP@m*e!nK(~N9>;4oFjN{f&QF}j z^Slr|z)WZTJT3|&42!Fq{B3D!pE!g-2+@R<4-H;54MzM^ym#^fjYhNJR)Yf1?fepC z^k7E;Ua=XQ82IG_;|fRxc2Cn74PFfzWe^s)aj@*eQPR8oDfazl8bfgD3OfXr@qG;h zfBnKWe*dW#U}v2_e)!*w(&>jt0o=3as3KYpS=R9Q9d*H5i-Ai8Vo#<9%Fj@E@&UL&v0g(mp<_W z&RzR5@9!I7W$O*-Inh1$foY|*a}t%qYq@`LE&B@Q(o0;+zQX3_ZLn+_frqdC)^*BP zcL2Eh(Qh+V$bktuv(B-5I3YmVyt=sn5Pn66rBYEXzeV5G&ohyHlsCTkD?V`Maqt^m z0fPf?MrUxp0d9ilpS;9lzkP=1pS%Qa0)hsC(QH(AVRr>en}DXUyUZicWhi@fE>C_E zw8#D0Gw25HRWO%drtDXF{q;Xk_N$o7FN0Sn;Y9f1hrfdP&Rxv2uX6h2Syff`00njasMRopFb6jPo5?Iv!}qXHfy5?oCxB_7eNQ%e>53h z#csXbfj&^xjR(4Ncva+W>l^LkXb*6YXYs^=pE~GzhX$pL7Emsisnu#B_!%q3kCK;g zg^f0ba--U`@Zs648^aZX62-j|4X=SQ<}g_o^KbR$)>e0X&;PF)V9+#7faiJPQ*F%Q zoUfM(BU?M$6ida{bNEh(*1GdEH9tRZHa0ikaq$1E{0C`3Sru{}42u8&002ovPDHLk FV1n#s6XyT` literal 0 HcmV?d00001 diff --git a/ckeditor/templates/browse.html b/ckeditor/templates/browse.html index e30517b..b478c27 100644 --- a/ckeditor/templates/browse.html +++ b/ckeditor/templates/browse.html @@ -13,6 +13,11 @@ +
@@ -35,11 +40,10 @@
    {% for file in files %}
  • - - {% if file.is_image %} - - {% else %} - {{ file.thumb }} + + + {% if file.visible_filename %} + {{ file.visible_filename }} {% endif %}
    diff --git a/ckeditor/utils.py b/ckeditor/utils.py index c37361a..5fb965e 100644 --- a/ckeditor/utils.py +++ b/ckeditor/utils.py @@ -1,12 +1,26 @@ import mimetypes import os.path import random +import re import string +from django.conf import settings from django.core.files.storage import default_storage from django.template.defaultfilters import slugify +# Non-image file icons, matched from top to bottom +fileicons_path = '{}/file-icons/'.format(getattr(settings, 'CKEDITOR_FILEICONS_PATH', '/static/ckeditor')) +CKEDITOR_FILEICONS = getattr(settings, 'CKEDITOR_FILEICONS', [ + ('\.pdf$', fileicons_path + 'pdf.png'), + ('\.doc$|\.docx$|\.odt$', fileicons_path + 'doc.png'), + ('\.txt$', fileicons_path + 'txt.png'), + ('\.ppt$', fileicons_path + 'ppt.png'), + ('\.xls$', fileicons_path + 'xls.png'), + ('.*', fileicons_path + 'file.png'), # Default +]) + + class NotAnImageException(Exception): pass @@ -27,6 +41,15 @@ def get_random_string(): return ''.join(random.sample(string.ascii_lowercase*6, 6)) +def get_icon_filename(file_name): + """ + Return the path to a file icon that matches the file name. + """ + for regex, iconpath in CKEDITOR_FILEICONS: + if re.search(regex, file_name, re.I): + return iconpath + + def get_thumb_filename(file_name): """ Generate thumb filename by adding _thumb to end of diff --git a/ckeditor/views.py b/ckeditor/views.py index 7c283c4..19c1e95 100644 --- a/ckeditor/views.py +++ b/ckeditor/views.py @@ -1,5 +1,6 @@ from datetime import datetime import os +import sys from django.conf import settings from django.core.files.storage import default_storage @@ -48,11 +49,7 @@ class ImageUploadView(generic.View): try: backend.image_verify(upload) except utils.NotAnImageException: - return HttpResponse(""" - """.format(request.GET['CKEditorFuncNum'])) + pass # Open output file in which to store upload. upload_filename = get_upload_filename(upload.name, request.user) @@ -120,13 +117,21 @@ def get_files_browse_urls(user=None): for filename in get_image_files(user=user): src = utils.get_media_url(filename) if getattr(settings, 'CKEDITOR_IMAGE_BACKEND', None): - thumb = utils.get_media_url(utils.get_thumb_filename(filename)) + if is_image(src): + thumb = utils.get_media_url(utils.get_thumb_filename(filename)) + visible_filename = None + else: + thumb = utils.get_icon_filename(filename) + visible_filename = os.path.split(filename)[1] + if len(visible_filename) > 20: + visible_filename = visible_filename[0:19] + '...' else: thumb = src files.append({ 'thumb': thumb, 'src': src, - 'is_image': is_image(src) + 'is_image': is_image(src), + 'visible_filename': visible_filename, }) return files