From 0c9c7151757a91248274d011f33faf53cdf171b5 Mon Sep 17 00:00:00 2001 From: ultimatemember Date: Tue, 23 Dec 2014 23:40:19 +0200 Subject: [PATCH] Image upload modal, crop feature development --- admin/core/um-admin-metabox.php | 14 +++ assets/css/um-crop.css | 41 ++++++++ assets/css/um-fileupload.css | 40 ++++---- assets/css/um-modal.css | 77 ++++++++++++-- assets/css/um-responsive.css | 77 +++++++++++++- assets/css/um-styles.css | 11 +- assets/img/border-anim-h.gif | Bin 0 -> 219 bytes assets/img/border-anim-v.gif | Bin 0 -> 219 bytes assets/img/border-h.gif | Bin 0 -> 72 bytes assets/img/border-v.gif | Bin 0 -> 72 bytes assets/img/loading.gif | Bin 0 -> 2877 bytes assets/js/um-crop.js | 1 + assets/js/um-fileupload.js | 2 +- assets/js/um-functions.js | 80 +++++++++++++++ assets/js/um-modal.js | 147 ++++++++++++++++++--------- assets/js/um-responsive.js | 22 +++- assets/js/um-scripts.js | 87 ++-------------- core/lib/upload/um-image-upload.php | 5 +- core/um-builtin.php | 2 +- core/um-enqueue.php | 15 +++ core/um-fields.php | 59 ++++++++--- templates/modal/um_dynamic_modal.php | 11 -- templates/modal/um_upload_image.php | 3 + um-config.php | 23 +++++ 24 files changed, 527 insertions(+), 190 deletions(-) create mode 100644 assets/css/um-crop.css create mode 100644 assets/img/border-anim-h.gif create mode 100644 assets/img/border-anim-v.gif create mode 100644 assets/img/border-h.gif create mode 100644 assets/img/border-v.gif create mode 100644 assets/img/loading.gif create mode 100644 assets/js/um-crop.js delete mode 100644 templates/modal/um_dynamic_modal.php create mode 100644 templates/modal/um_upload_image.php diff --git a/admin/core/um-admin-metabox.php b/admin/core/um-admin-metabox.php index 92456cdd..e88abf58 100644 --- a/admin/core/um-admin-metabox.php +++ b/admin/core/um-admin-metabox.php @@ -961,6 +961,20 @@ class UM_Admin_Metabox { break; + case '_crop': + ?> + +

+ +

+ + set_field_type == 'image' ) { diff --git a/assets/css/um-crop.css b/assets/css/um-crop.css new file mode 100644 index 00000000..c5b4fce1 --- /dev/null +++ b/assets/css/um-crop.css @@ -0,0 +1,41 @@ +/* + * imgAreaSelect default style + */ + +.imgareaselect-border1 { + background: url(../img/border-v.gif) repeat-y left top; +} + +.imgareaselect-border2 { + background: url(../img/border-h.gif) repeat-x left top; +} + +.imgareaselect-border3 { + background: url(../img/border-v.gif) repeat-y right top; +} + +.imgareaselect-border4 { + background: url(../img/border-h.gif) repeat-x left bottom; +} + +.imgareaselect-border1, .imgareaselect-border2, +.imgareaselect-border3, .imgareaselect-border4 { + filter: alpha(opacity=50); + opacity: 0.5; +} + +.imgareaselect-handle { + background-color: #fff; + border: solid 1px #000; + filter: alpha(opacity=50); + opacity: 0.5; +} + +.imgareaselect-outer { + background-color: #000; + filter: alpha(opacity=50); + opacity: 0.5; +} + +.imgareaselect-selection { +} \ No newline at end of file diff --git a/assets/css/um-fileupload.css b/assets/css/um-fileupload.css index d2dc306a..2d677d3d 100644 --- a/assets/css/um-fileupload.css +++ b/assets/css/um-fileupload.css @@ -2,48 +2,46 @@ - image preview */ +.um .um-single-image-preview, +.um .um-single-file-preview { + margin-bottom: 20px; +} + .um-single-image-preview, .um-single-file-preview { display: none; width: 100%; - background: #f5f5f5; box-sizing: border-box; - border: 2px dashed #ddd; text-align: center; - margin: 15px 0 0 0; position: relative; + min-height: 40px; } .um-single-image-preview a.cancel, .um-single-file-preview a.cancel { position: absolute; - top: 6px; - right: 6px; + top: -15px; + right: -15px; width: 30px; height: 30px; - line-height: 30px; border-radius: 999px; - background: #f5f5f5; + background: #ddd; cursor: pointer; - opacity: 0.75; transition: 0.2s; text-decoration: none !important; } -.um-single-image-preview a.cancel:hover, -.um-single-file-preview a.cancel:hover -{opacity: 1} .um-single-image-preview a.cancel i, .um-single-file-preview a.cancel i { - font-size: 22px; - color: #424242; - vertical-align: middle; + font-size: 16px; + color: #888; + position: relative; + top: 4px; } .um-single-image-preview img { max-width: 100%; margin: 0 auto !important; - max-height: 250px; padding: 0 !important; display: block !important; } @@ -85,7 +83,6 @@ */ .upload-statusbar { - background: #fff; margin: 20px 0 0 0; } @@ -96,15 +93,15 @@ .upload-progress { position: relative; width: 100%; - background: #fff; box-sizing: border-box; } .upload-bar { width: 0; - height: 12px; + height: 10px; color: #666; - background: #3ba1da; + background: #7ACF58; + border-radius: 3px; } /* @@ -116,11 +113,10 @@ text-align: center; vertical-align:middle; padding: 20px; - background: #f5f5f5; box-sizing: border-box; border: 2px dashed #ddd; + border-radius: 3px; font-size: 18px; - margin: 15px 0 0 0; line-height: 1em; } @@ -167,4 +163,4 @@ background: #44b0ec; } -.um-form input[type="file"]::-webkit-file-upload-button { cursor: pointer } \ No newline at end of file +.um-modal input[type="file"]::-webkit-file-upload-button { cursor: pointer } \ No newline at end of file diff --git a/assets/css/um-modal.css b/assets/css/um-modal.css index 0ae673ac..1bb34bf2 100644 --- a/assets/css/um-modal.css +++ b/assets/css/um-modal.css @@ -16,27 +16,40 @@ - modal */ -.um-modal * {-webkit-font-smoothing: antialiased !important;-moz-osx-font-smoothing: grayscale;} +.um-modal * { + -webkit-font-smoothing: antialiased !important; + -moz-osx-font-smoothing: grayscale !important; +} + +.um-modal-hidden-content { + display: none; +} .um-modal { border-radius: 3px; - background: #fff; position: fixed; - top: 50% !important; - left: 50% !important; + left: 50%; display: none; z-index: 100010; box-sizing: border-box; + bottom: -50px; } .um-modal.normal {width: 500px;margin-left: -250px;} .um-modal.large {width: 730px;margin-left: -365px;} .um-modal.small {width: 400px;margin-left: -200px;} .um-modal-body { - min-height: 100px; - padding: 0 20px; + min-height: 3px; + padding: 20px; box-sizing: border-box; width: 100%; + background: #fff; + border-radius: 0 0 3px 3px; +} + +.um-modal.loading .um-modal-body { + background: #fff url(../img/loading.gif) no-repeat center; + min-height: 150px; } .um-modal div.um { @@ -48,8 +61,56 @@ height: 44px; line-height: 44px; color: #fff; - background: #aaa; + background: #3ba1da; padding: 0 20px; box-sizing: border-box; - font-size: 16px; + font-size: 15px; +} + +.um-modal-footer { + margin-top: 20px; +} + +.um-modal-left { + float: left; +} + +.um-modal-right { + float: right; +} + +.um-modal-btn.disabled, +.um-modal-btn.disabled:hover { + opacity: 0.5; + cursor: default !important; + background: #3ba1da; +} + +.um-modal-btn { + cursor: pointer !important; + line-height: 34px !important; + height: 34px; + display: inline-block; + border-radius: 3px; + padding: 0 20px; + color: #fff; + background: #3ba1da; + vertical-align: middle; + font-size: 14px; + box-sizing: border-box; + transition: 0.2s; + text-decoration: none !important; +} + +.um-modal-btn:hover { + background: #44b0ec; +} + +.um-modal-btn.alt { + color: #666; + background: #eee; +} + +.um-modal-btn.alt:hover { + background: #e5e5e5; } \ No newline at end of file diff --git a/assets/css/um-responsive.css b/assets/css/um-responsive.css index d4e00844..a9240ae3 100644 --- a/assets/css/um-responsive.css +++ b/assets/css/um-responsive.css @@ -1,3 +1,4 @@ +.uimob340-show, .uimob500-show, .uimob800-show, .uimob960-show @@ -5,6 +6,7 @@ display: none; } +div.uimob340 .uimob340-show, div.uimob500 .uimob500-show, div.uimob800 .uimob800-show, div.uimob960 .uimob960-show @@ -12,6 +14,7 @@ div.uimob960 .uimob960-show display: block; } +div.uimob340 .uimob340-hide, div.uimob500 .uimob500-hide, div.uimob800 .uimob800-hide, div.uimob960 .uimob960-hide @@ -19,12 +22,54 @@ div.uimob960 .uimob960-hide display: none; } +/** + for 340px and below +**/ + +/********************************************/ + +.uimob340 .um-half { + float: none; + width: 100%; + margin: 0 0 10px 0; +} + +.uimob340 .um-button.um-btn-auto-width { + min-width: auto; + max-width: auto; + width: 100%; +} + +.um-modal.uimob340 { + width: 100% !important; + margin: 0 !important; + left: 0 !important; +} + +.um-modal.uimob340, +.um-modal.uimob340 .um-modal-body, +.um-modal.uimob340 .um-modal-header { + border-radius: 0; +} + /** for 500px and below **/ /********************************************/ +.um-modal.uimob500 { + width: 100% !important; + margin: 0 !important; + left: 0 !important; +} + +.um-modal.uimob500, +.um-modal.uimob500 .um-modal-body, +.um-modal.uimob500 .um-modal-header { + border-radius: 0; +} + div.uimob500 .um-profile-body { padding-left: 0; padding-right: 0; @@ -247,4 +292,34 @@ div.uimob960 .um-member { width: 48%; } -div.uimob960 .um-gutter-sizer { width: 4% } \ No newline at end of file +div.uimob960 .um-gutter-sizer { width: 4% } + +/************************************************/ + +@media screen and ( max-height: 900px ){ + .um-single-image-preview img {max-height: 500px} +} + +@media screen and ( max-height: 800px ){ + .um-single-image-preview img {max-height: 500px} +} + +@media screen and ( max-height: 700px ){ + .um-single-image-preview img {max-height: 350px} +} + +@media screen and ( max-height: 600px ){ + .um-single-image-preview img {max-height: 300px} +} + +@media screen and ( max-height: 500px ){ + .um-single-image-preview img {max-height: 250px} +} + +@media screen and ( max-height: 400px ){ + .um-single-image-preview img {max-height: 200px} +} + +@media screen and ( max-height: 300px ){ + .um-single-image-preview img {max-height: 150px} +} \ No newline at end of file diff --git a/assets/css/um-styles.css b/assets/css/um-styles.css index f71fe7e5..74670e46 100644 --- a/assets/css/um-styles.css +++ b/assets/css/um-styles.css @@ -8,7 +8,6 @@ box-sizing: border-box; color: #666; font-size: 15px; - overflow: hidden; margin-bottom: 30px !important; -webkit-font-smoothing: antialiased !important; -moz-osx-font-smoothing: grayscale !important; @@ -448,6 +447,7 @@ input[type=submit].um-button:focus { } .um-button { + font-size: 15px; border: none !important; display: block; width: 100%; @@ -468,6 +468,15 @@ input[type=submit].um-button:focus { letter-spacing: 0.5px; } + +.um-button.um-btn-auto-width { + width: auto; + display: inline-block; + padding: 14px 20px !important; + min-width: 200px; + max-width: 450px; +} + a.um-link-alt { line-height: 22px; color: #888 !important; diff --git a/assets/img/border-anim-h.gif b/assets/img/border-anim-h.gif new file mode 100644 index 0000000000000000000000000000000000000000..ec9f5da73bc898de604c0c1b34f57a81440f896b GIT binary patch literal 219 zcmZ?wbhEHbWMg1tSjfQe|Nnmm1_m=TGay6pKewN2NU*bGfUA+70W%{|Lh+xJb5Uwy zNotBhd1gt5LSj~8MNWQVie6@3T0Vo~PZkC)hW`vYK$Q$20~wf@Mf8F|;*4Aj%qZeh a8gPg=vSL-=!WV#5oTUZ3cuOlQgEauT=O=Uk literal 0 HcmV?d00001 diff --git a/assets/img/border-anim-v.gif b/assets/img/border-anim-v.gif new file mode 100644 index 0000000000000000000000000000000000000000..331cc90b0e4e4d0c1e01ead2f9bab6aed61d2e06 GIT binary patch literal 219 zcmZ?wbhEHbWMp7tSjfQe|Nnmm1_m=TGay6pKewN2NU*bGfUA+70W%{|Lh+xJb5Uwy zNotBhd1gt5LSj~8MNWQVie6@3T0Vo~PZkC)hW`vYK$Q$20~wf@Mf8F|;*4Aj%qZeh a8gPg=vSL-=!WV#5oTUZ3cuOlQgEauTp(k_z literal 0 HcmV?d00001 diff --git a/assets/img/border-h.gif b/assets/img/border-h.gif new file mode 100644 index 0000000000000000000000000000000000000000..a2aa5b0d09bf7215199dbf9a291b34b11d0352d4 GIT binary patch literal 72 zcmZ?wbhEHbWMg1tSjfQe|Nnmm1_m=TGay6ppOkY^YGO%hib8p2NrpmVR$@g?eqxGV XW?ou8gAPy~14tJG6LU)|D}yxvaY_|= literal 0 HcmV?d00001 diff --git a/assets/img/border-v.gif b/assets/img/border-v.gif new file mode 100644 index 0000000000000000000000000000000000000000..4bfd55564099537d38d4112f550b8974744de3ca GIT binary patch literal 72 zcmZ?wbhEHbWMp7tSjfQe|Nnmm1_m=TGay6ppOkY^YGO%hib8p2NrpmVR$@g?eqxGV XW?ou8gAPy~14tJG6LU)|D}yxvaW)ls literal 0 HcmV?d00001 diff --git a/assets/img/loading.gif b/assets/img/loading.gif new file mode 100644 index 0000000000000000000000000000000000000000..11858f091779386af8a8390575336a8d4257d311 GIT binary patch literal 2877 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.fromCharCode(c+29):c.toString(36))};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('(m($){18 W=2v.4T,D=2v.4S,F=2v.4R,u=2v.4Q;m V(){C $("<4P/>")};$.N=m(T,c){18 O=$(T),1F,A=V(),1k=V(),I=V().r(V()).r(V()).r(V()),B=V().r(V()).r(V()).r(V()),E=$([]),1K,G,l,17={v:0,l:0},Q,M,1l,1g={v:0,l:0},12=0,1J="1H",2k,2j,1t,1s,S,1B,1A,2o,2n,14,1Q,a,b,j,g,f={a:0,b:0,j:0,g:0,H:0,L:0},2u=R.4O,1M=4N.4M,$p,d,i,o,w,h,2p;m 1n(x){C x+17.v-1g.v};m 1m(y){C y+17.l-1g.l};m 1b(x){C x-17.v+1g.v};m 1a(y){C y-17.l+1g.l};m 1z(3J){C 3J.4L-1g.v};m 1y(3I){C 3I.4K-1g.l};m 13(32){18 1i=32||1t,1h=32||1s;C{a:u(f.a*1i),b:u(f.b*1h),j:u(f.j*1i),g:u(f.g*1h),H:u(f.j*1i)-u(f.a*1i),L:u(f.g*1h)-u(f.b*1h)}};m 23(a,b,j,g,31){18 1i=31||1t,1h=31||1s;f={a:u(a/1i||0),b:u(b/1h||0),j:u(j/1i||0),g:u(g/1h||0)};f.H=f.j-f.a;f.L=f.g-f.b};m 1f(){9(!1F||!O.H()){C}17={v:u(O.2t().v),l:u(O.2t().l)};Q=O.2Y();M=O.3H();17.l+=(O.30()-M)>>1;17.v+=(O.2q()-Q)>>1;1B=u(c.4J/1t)||0;1A=u(c.4I/1s)||0;2o=u(F(c.4H/1t||1<<24,Q));2n=u(F(c.4G/1s||1<<24,M));9($().4F=="1.3.2"&&1J=="21"&&!2u["4E"]){17.l+=D(R.1q.2r,2u.2r);17.v+=D(R.1q.2s,2u.2s)}1g=/1H|4D/.1c(1l.q("1p"))?{v:u(1l.2t().v)-1l.2s(),l:u(1l.2t().l)-1l.2r()}:1J=="21"?{v:$(R).2s(),l:$(R).2r()}:{v:0,l:0};G=1n(0);l=1m(0);9(f.j>Q||f.g>M){1U()}};m 1V(3F){9(!1Q){C}A.q({v:1n(f.a),l:1m(f.b)}).r(1k).H(w=f.H).L(h=f.L);1k.r(I).r(E).q({v:0,l:0});I.H(D(w-I.2q()+I.2Y(),0)).L(D(h-I.30()+I.3H(),0));$(B[0]).q({v:G,l:l,H:f.a,L:M});$(B[1]).q({v:G+f.a,l:l,H:w,L:f.b});$(B[2]).q({v:G+f.j,l:l,H:Q-f.j,L:M});$(B[3]).q({v:G+f.a,l:l+f.g,H:w,L:M-f.g});w-=E.2q();h-=E.30();2O(E.3f){15 8:$(E[4]).q({v:w>>1});$(E[5]).q({v:w,l:h>>1});$(E[6]).q({v:w>>1,l:h});$(E[7]).q({l:h>>1});15 4:E.3G(1,3).q({v:w});E.3G(2,4).q({l:h})}9(3F!==Y){9($.N.2Z!=2R){$(R).U($.N.2z,$.N.2Z)}9(c.1T){$(R)[$.N.2z]($.N.2Z=2R)}}9(1j&&I.2q()-I.2Y()==2){I.q("3E",0);3x(m(){I.q("3E","4C")},0)}};m 22(3D){1f();1V(3D);a=1n(f.a);b=1m(f.b);j=1n(f.j);g=1m(f.g)};m 27(2X,2w){c.1P?2X.4B(c.1P,2w):2X.1r()};m 1d(2W){18 x=1b(1z(2W))-f.a,y=1a(1y(2W))-f.b;9(!2p){1f();2p=11;A.1G("4A",m(){2p=Y})}S="";9(c.2D){9(y<=c.1W){S="n"}X{9(y>=f.L-c.1W){S="s"}}9(x<=c.1W){S+="w"}X{9(x>=f.H-c.1W){S+="e"}}}A.q("2V",S?S+"-19":c.26?"4z":"");9(1K){1K.4y()}};m 2S(4x){$("1q").q("2V","");9(c.4w||f.H*f.L==0){27(A.r(B),m(){$(J).1r()})}$(R).U("P",2l);A.P(1d);c.2f(T,13())};m 2C(1X){9(1X.3z!=1){C Y}1f();9(S){$("1q").q("2V",S+"-19");a=1n(f[/w/.1c(S)?"j":"a"]);b=1m(f[/n/.1c(S)?"g":"b"]);$(R).P(2l).1G("1x",2S);A.U("P",1d)}X{9(c.26){2k=G+f.a-1z(1X);2j=l+f.b-1y(1X);A.U("P",1d);$(R).P(2T).1G("1x",m(){c.2f(T,13());$(R).U("P",2T);A.P(1d)})}X{O.1O(1X)}}C Y};m 1w(3C){9(14){9(3C){j=D(G,F(G+Q,a+W(g-b)*14*(j>a||-1)));g=u(D(l,F(l+M,b+W(j-a)/14*(g>b||-1))));j=u(j)}X{g=D(l,F(l+M,b+W(j-a)/14*(g>b||-1)));j=u(D(G,F(G+Q,a+W(g-b)*14*(j>a||-1))));g=u(g)}}};m 1U(){a=F(a,G+Q);b=F(b,l+M);9(W(j-a)<1B){j=a-1B*(jG+Q){a=G+Q-1B}}}9(W(g-b)<1A){g=b-1A*(gl+M){b=l+M-1A}}}j=D(G,F(j,G+Q));g=D(l,F(g,l+M));1w(W(j-a)2o){j=a-2o*(j2n){g=b-2n*(g=0){E.H(5).L(5)}9(o=c.2K){E.q({2K:o,2H:"3m"})}1R(E,{3n:"2J-28",3l:"2I-28",3o:"1e"})}1t=c.4l/Q||1;1s=c.4k/M||1;9(K.a!=3q){23(K.a,K.b,K.j,K.g);K.2F=!K.1r}9(K.1T){c.1T=$.2c({2b:1,2a:"19"},K.1T)}B.29(c.1S+"-4j");1k.29(c.1S+"-4i");3p(i=0;i++<4;){$(I[i-1]).29(c.1S+"-2J"+i)}1R(1k,{4h:"2I-28",4g:"1e"});1R(I,{3o:"1e",2K:"2J-H"});1R(B,{4f:"2I-28",4e:"1e"});9(o=c.3n){$(I[0]).q({2H:"3m",3k:o})}9(o=c.3l){$(I[1]).q({2H:"4d",3k:o})}A.2G(1k.r(I).r(1K)).2G(E);9(1j){9(o=(B.q("3j")||"").3i(/1e=(\\d+)/)){B.q("1e",o[1]/1Z)}9(o=(I.q("3j")||"").3i(/1e=(\\d+)/)){I.q("1e",o[1]/1Z)}}9(K.1r){27(A.r(B))}X{9(K.2F&&1F){1Q=11;A.r(B).2E(c.1P||0);22()}}14=(d=(c.4c||"").4b(/:/))[0]/d[1];O.r(B).U("1O",2A);9(c.1E||c.1D===Y){A.U("P",1d).U("1O",2C);$(3h).U("19",2B)}X{9(c.1D||c.1E===Y){9(c.2D||c.26){A.P(1d).1O(2C)}$(3h).19(2B)}9(!c.4a){O.r(B).1O(2A)}}c.1D=c.1E=1Y};J.1o=m(){25({1E:11});A.r(B).1o()};J.49=m(){C c};J.33=25;J.48=13;J.47=23;J.46=1N;J.45=22;18 1j=(/44 ([\\w.]+)/i.43(1M)||[])[1],3c=/42/i.1c(1M),3d=/41/i.1c(1M)&&!/3Z/i.1c(1M);$p=O;3g($p.3f){12=D(12,!1L($p.q("z-3e"))?$p.q("z-3e"):12);9($p.q("1p")=="21"){1J="21"}$p=$p.20(":3Y(1q)")}12=c.1I||12;9(1j){O.3X("3W","3V")}$.N.2z=1j||3d?"3U":"3T";9(3c){1K=V().q({H:"1Z%",L:"1Z%",1p:"1H",1I:12+2||2})}A.r(B).q({3b:"3a",1p:1J,3S:"3a",1I:12||"0"});A.q({1I:12+2||2});1k.r(I).q({1p:"1H",36:0});T.35||T.3R=="35"||!O.2y("3Q")?2x():O.1G("3P",2x);9(!1F&&1j&&1j>=7){T.34=T.34}};$.2w.N=m(Z){Z=Z||{};J.3O(m(){9($(J).1C("N")){9(Z.1o){$(J).1C("N").1o();$(J).3N("N")}X{$(J).1C("N").33(Z)}}X{9(!Z.1o){9(Z.1D===1Y&&Z.1E===1Y){Z.1D=11}$(J).1C("N",3M $.N(J,Z))}}});9(Z.3L){C $(J).1C("N")}C J}})(3K);',62,304,'|||||||||if|x1|y1|_7|||_23|y2|||x2||top|function||||css|add|||_4|left|||||_a|_d|return|_2|_e|_3|_10|width|_c|this|_55|height|_13|imgAreaSelect|_8|mousemove|_12|document|_1c|_6|unbind|_5|_1|else|false|_58||true|_16|_2c|_21|case|_50|_11|var|resize|_29|_28|test|_3a|opacity|_30|_15|sy|sx|_35|_b|_14|_27|_26|remove|position|body|hide|_1b|_1a|break|_45|_42|mouseup|evY|evX|_1e|_1d|data|enable|disable|_9|one|absolute|zIndex|_17|_f|isNaN|ua|_4a|mousedown|fadeSpeed|_22|_51|classPrefix|keys|_31|_32|resizeMargin|_40|undefined|100|parent|fixed|_36|_2e||_4f|movable|_38|color|addClass|ctrl|shift|extend|_54|altKey|onSelectEnd|onSelectChange|_49|_4c|_19|_18|_3e|_48|_20|_1f|_25|outerWidth|scrollTop|scrollLeft|offset|_24|Math|fn|_4e|is|keyPress|_4b|_4d|_3f|resizable|fadeIn|show|append|borderStyle|background|border|borderWidth|handles|_53|key|switch|alt|arrows|_34|_3c|_41|_44|cursor|_3b|_39|innerWidth|onKeyPress|outerHeight|_2f|_2d|setOptions|src|complete|fontSize||||hidden|visibility|_56|_57|index|length|while|window|match|filter|borderColor|borderColor2|solid|borderColor1|borderOpacity|for|null|_52|default|originalEvent|ctrlKey|shiftKey|onInit|setTimeout|onSelectStart|which|_47|_46|_43|_37|margin|_33|slice|innerHeight|_2b|_2a|jQuery|instance|new|removeData|each|load|img|readyState|overflow|keypress|keydown|on|unselectable|attr|not|chrome||webkit|opera|exec|msie|update|cancelSelection|setSelection|getSelection|getOptions|persistent|split|aspectRatio|dashed|outerOpacity|outerColor|selectionOpacity|selectionColor|selection|outer|imageHeight|imageWidth|parseInt|handle|corners|in|keyCode|imgareaselect|animated|instanceof|visible|preventDefault|autoHide|_3d|toggle|move|mouseout|fadeOut|auto|relative|getBoundingClientRect|jquery|maxHeight|maxWidth|minHeight|minWidth|pageY|pageX|userAgent|navigator|documentElement|div|round|min|max|abs'.split('|'))) diff --git a/assets/js/um-fileupload.js b/assets/js/um-fileupload.js index 9f02a168..c8b73034 100644 --- a/assets/js/um-fileupload.js +++ b/assets/js/um-fileupload.js @@ -5,4 +5,4 @@ * Copyright (c) 2013 Ravishanker Kusuma * http://hayageek.com/ */ -(function(b){if(b.fn.ajaxForm==undefined){}var a={};a.fileapi=b("").get(0).files!==undefined;a.formdata=window.FormData!==undefined;b.fn.uploadFile=function(t){var r=b.extend({url:"",method:"POST",enctype:"multipart/form-data",formData:null,returnType:null,allowedTypes:"*",fileName:"file",formData:{},dynamicFormData:function(){return{}},maxFileSize:-1,maxFileCount:-1,multiple:true,dragDrop:true,autoSubmit:true,showCancel:true,showAbort:true,showDone:true,showDelete:false,showError:true,showStatusAfterSuccess:true,showStatusAfterError:true,showFileCounter:true,fileCounterStyle:"). ",showProgress:false,onSelect:function(s){return true},onSubmit:function(s,u){},onSuccess:function(u,s,v){},onError:function(v,s,u){},deleteCallback:false,afterUploadAll:false,uploadButtonClass:"upload",dragDropStr:"",abortStr:"Abort",cancelStr:"Cancel",deletelStr:"Delete",doneStr:"Done",multiDragErrorStr:"Multiple File Drag & Drop is not allowed.",extErrorStr:"",sizeErrorStr:"",uploadErrorStr:"Upload is not allowed",maxFileCountErrorStr:""},t);this.fileCounter=1;this.selectedFiles=0;this.fCounter=0;this.sCounter=0;this.tCounter=0;var d="upload-"+(new Date().getTime());this.formGroup=d;this.hide();this.errorLog=b("
");this.after(this.errorLog);this.responses=[];if(!a.formdata){r.dragDrop=false}if(!a.formdata){r.multiple=false}var m=this;var e=b("
"+b(this).html()+"
");b(e).addClass(r.uploadButtonClass);(function k(){if(b.fn.ajaxForm){if(r.dragDrop){var s=b('
');b(m).before(s);b(s).append(e);b(s).prepend(b(r.dragDropStr));f(m,r,s)}else{b(m).before(e)}q(m,d,r,e)}else{window.setTimeout(k,10)}})();this.startUpload=function(){b("."+this.formGroup).each(function(u,s){if(b(this).is("form")){b(this).submit()}})};this.stopUpload=function(){b(".upload-red").each(function(u,s){if(b(this).hasClass(m.formGroup)){b(this).click()}})};this.getResponses=function(){return this.responses};var g=false;function j(){if(r.afterUploadAll&&!g){g=true;(function s(){if(m.sCounter!=0&&(m.sCounter+m.fCounter==m.tCounter)){r.afterUploadAll(m);g=false}else{window.setTimeout(s,100)}})()}}function f(w,u,v){v.on("dragenter",function(s){s.stopPropagation();s.preventDefault();b(this).css("border","3px dashed #ddd")});v.on("dragover",function(s){s.stopPropagation();s.preventDefault()});v.on("drop",function(x){b(this).css("border","3px dashed #ddd");x.preventDefault();w.errorLog.html("");var s=x.originalEvent.dataTransfer.files;if(!u.multiple&&s.length>1){if(u.showError){b("
"+u.multiDragErrorStr+"
").appendTo(w.errorLog)}return}if(u.onSelect(s)==false){return}l(u,w,s)});b(document).on("dragenter",function(s){s.stopPropagation();s.preventDefault()});b(document).on("dragover",function(s){s.stopPropagation();s.preventDefault();v.css("border","3px dashed #ddd")});b(document).on("drop",function(s){s.stopPropagation();s.preventDefault();v.css("border","3px dashed #ddd")})}function i(s){var v="";var u=s/1024;if(parseInt(u)>1024){var w=u/1024;v=w.toFixed(2)+" MB"}else{v=u.toFixed(2)+" KB"}return v}function o(x){var y=[];if(jQuery.type(x)=="string"){y=x.split("&")}else{y=b.param(x).split("&")}var u=y.length;var s=[];var w,v;for(w=0;w"+H.extErrorStr+"").appendTo(B.errorLog)}continue}if(H.maxFileSize!=-1&&u[C].size>H.maxFileSize){if(H.showError){b("
"+H.sizeErrorStr+"
").appendTo(B.errorLog)}continue}if(H.maxFileCount!=-1&&B.selectedFiles>=H.maxFileCount){if(H.showError){b("
"+H.maxFileCountErrorStr+"
").appendTo(B.errorLog)}continue}B.selectedFiles++;var D=H;var w=new FormData();var A=H.fileName.replace("[]","");w.append(A,u[C]);var y=H.formData;if(y){var F=o(y);for(var z=0;z");v.appendTo("body");var x=[];x.push(u[C].name);n(v,D,E,x,B);B.fileCounter++}}function c(w,v,y){var x=v.allowedTypes.toLowerCase().split(",");var u=y.split(".").pop().toLowerCase();if(v.allowedTypes!="*"&&jQuery.inArray(u,x)<0){return false}return true}function h(u,w){if(u.showFileCounter){var v=b(".upload-filename").length;w.fileCounter=v+1;b(".upload-filename").each(function(A,y){var s=b(this).html().split(u.fileCounterStyle);var x=parseInt(s[0])-1;var z=v+u.fileCounterStyle+s[1];b(this).html(z);v--})}}function q(y,B,D,u){var A="ajax-upload-id-"+(new Date().getTime());var w=b("
");var v="";if(D.multiple){if(D.fileName.indexOf("[]")!=D.fileName.length-2){D.fileName+="[]"}v=""}var z=b(v).appendTo(w);z.change(function(){y.errorLog.html("");var K=D.allowedTypes.toLowerCase().split(",");var G=[];if(this.files){for(H=0;H"+D.extErrorStr+"").appendTo(y.errorLog)}return}F.push({name:I,size:"NA"});if(D.onSelect(F)==false){return}}h(D,y);u.unbind("click");w.hide();q(y,B,D,u);w.addClass(B);if(a.fileapi&&a.formdata){w.removeClass(B);var J=this.files;l(D,y,J)}else{var E="";for(var H=0;H"}else{E+=G[H]+"
"}y.fileCounter++}if(D.maxFileCount!=-1&&(y.selectedFiles+G.length)>D.maxFileCount){if(D.showError){b("
"+D.maxFileCountErrorStr+"
").appendTo(y.errorLog)}return}y.selectedFiles+=G.length;var s=new p(y,D);s.filename.html(E);n(w,D,s,G,y)}});w.css({margin:0,padding:0});var C=b(u).width()+10;if(C==10){C=120}var x=u.height()+10;if(x==10){x=35}u.css({position:"relative",overflow:"hidden",cursor:"default"});z.css({position:"absolute",cursor:"pointer",top:"0px",width:'100%',height:'34px',left:"0px","z-index":"100",opacity:"0.0",filter:"alpha(opacity=0)","-ms-filter":"alpha(opacity=0)","-khtml-opacity":"0.0","-moz-opacity":"0.0"});w.appendTo(u)}function p(v,u){this.statusbar=b("
");this.filename=b("
").appendTo(this.statusbar);this.progressDiv=b("
").appendTo(this.statusbar).hide();this.progressbar=b("
").appendTo(this.progressDiv);this.abort=b("
"+u.abortStr+"
").appendTo(this.statusbar).hide();this.cancel=b("
"+u.cancelStr+"
").appendTo(this.statusbar).hide();this.done=b("
"+u.doneStr+"
").appendTo(this.statusbar).hide();this.del=b("
"+u.deletelStr+"
").appendTo(this.statusbar).hide();v.errorLog.after(this.statusbar);return this}function n(z,y,u,w,A){var x=null;var v={cache:false,contentType:false,processData:false,forceSync:false,data:y.formData,formData:y.fileData,dataType:y.returnType,beforeSubmit:function(F,C,E){if(y.onSubmit.call(this,w)!=false){var B=y.dynamicFormData();if(B){var s=o(B);if(s){for(var D=0;D"+y.uploadErrorStr+"
");u.cancel.show();z.remove();u.cancel.click(function(){u.statusbar.remove()});return false},beforeSend:function(B,s){u.progressDiv.show();u.cancel.hide();u.done.hide();if(y.showAbort){u.abort.show();u.abort.click(function(){B.abort();A.selectedFiles-=w.length})}if(!a.formdata){u.progressbar.width("5%")}else{u.progressbar.width("1%")}},uploadProgress:function(E,s,D,C){if(C>98){C=98}var B=C+"%";if(C>1){u.progressbar.width(B)}if(y.showProgress){u.progressbar.html(B);u.progressbar.css("text-align","center")}},success:function(B,s,C){A.responses.push(B);u.progressbar.width("100%");if(y.showProgress){u.progressbar.html("100%");u.progressbar.css("text-align","center")}u.abort.hide();y.onSuccess.call(this,w,B,C);if(y.showStatusAfterSuccess){if(y.showDone){u.done.show();u.done.click(function(){u.statusbar.hide("slow");u.statusbar.remove()})}else{u.done.hide()}if(y.showDelete){u.del.show();u.del.click(function(){u.statusbar.hide().remove();if(y.deleteCallback){y.deleteCallback.call(this,B,u)}A.selectedFiles-=w.length;h(y,A)})}else{u.del.hide()}}else{u.statusbar.hide("slow");u.statusbar.remove()}z.remove();A.sCounter+=w.length},error:function(C,s,B){u.abort.hide();if(C.statusText=="abort"){u.statusbar.hide("slow").remove();h(y,A)}else{y.onError.call(this,w,s,B);if(y.showStatusAfterError){u.progressDiv.hide();u.statusbar.append("ERROR: "+B+"")}else{u.statusbar.hide();u.statusbar.remove()}A.selectedFiles-=w.length}z.remove();A.fCounter+=w.length}};if(y.autoSubmit){z.ajaxSubmit(v)}else{if(y.showCancel){u.cancel.show();u.cancel.click(function(){z.remove();u.statusbar.remove();A.selectedFiles-=w.length;h(y,A)})}z.ajaxForm(v)}}return this}}(jQuery)); \ No newline at end of file +(function(b){if(b.fn.ajaxForm==undefined){}var a={};a.fileapi=b("").get(0).files!==undefined;a.formdata=window.FormData!==undefined;b.fn.uploadFile=function(t){var r=b.extend({url:"",method:"POST",enctype:"multipart/form-data",formData:null,returnType:null,allowedTypes:"*",fileName:"file",formData:{},dynamicFormData:function(){return{}},maxFileSize:-1,maxFileCount:-1,multiple:true,dragDrop:true,autoSubmit:true,showCancel:true,showAbort:true,showDone:true,showDelete:false,showError:true,showStatusAfterSuccess:true,showStatusAfterError:true,showFileCounter:true,fileCounterStyle:"). ",showProgress:false,onSelect:function(s){return true},onSubmit:function(s,u){},onSuccess:function(u,s,v){},onError:function(v,s,u){},deleteCallback:false,afterUploadAll:false,uploadButtonClass:"upload",dragDropStr:"",abortStr:"Abort",cancelStr:"Cancel",deletelStr:"Delete",doneStr:"Done",multiDragErrorStr:"Multiple File Drag & Drop is not allowed.",extErrorStr:"",sizeErrorStr:"",uploadErrorStr:"Upload is not allowed",maxFileCountErrorStr:""},t);this.fileCounter=1;this.selectedFiles=0;this.fCounter=0;this.sCounter=0;this.tCounter=0;var d="upload-"+(new Date().getTime());this.formGroup=d;this.hide();this.errorLog=b("
");this.after(this.errorLog);this.responses=[];if(!a.formdata){r.dragDrop=false}if(!a.formdata){r.multiple=false}var m=this;var e=b("
"+b(this).html()+"
");b(e).addClass(r.uploadButtonClass);(function k(){if(b.fn.ajaxForm){if(r.dragDrop){var s=b('
');b(m).before(s);b(s).append(e);b(s).prepend(b(r.dragDropStr));f(m,r,s)}else{b(m).before(e)}q(m,d,r,e)}else{window.setTimeout(k,10)}})();this.startUpload=function(){b("."+this.formGroup).each(function(u,s){if(b(this).is("form")){b(this).submit()}})};this.stopUpload=function(){b(".upload-red").each(function(u,s){if(b(this).hasClass(m.formGroup)){b(this).click()}})};this.getResponses=function(){return this.responses};var g=false;function j(){if(r.afterUploadAll&&!g){g=true;(function s(){if(m.sCounter!=0&&(m.sCounter+m.fCounter==m.tCounter)){r.afterUploadAll(m);g=false}else{window.setTimeout(s,100)}})()}}function f(w,u,v){v.on("dragenter",function(s){s.stopPropagation();s.preventDefault();b(this).css("border","2px dashed #ddd")});v.on("dragover",function(s){s.stopPropagation();s.preventDefault()});v.on("drop",function(x){b(this).css("border","2px dashed #ddd");x.preventDefault();w.errorLog.html("");var s=x.originalEvent.dataTransfer.files;if(!u.multiple&&s.length>1){if(u.showError){b("
"+u.multiDragErrorStr+"
").appendTo(w.errorLog)}return}if(u.onSelect(s)==false){return}l(u,w,s)});b(document).on("dragenter",function(s){s.stopPropagation();s.preventDefault()});b(document).on("dragover",function(s){s.stopPropagation();s.preventDefault();v.css("border","2px dashed #ddd")});b(document).on("drop",function(s){s.stopPropagation();s.preventDefault();v.css("border","2px dashed #ddd")})}function i(s){var v="";var u=s/1024;if(parseInt(u)>1024){var w=u/1024;v=w.toFixed(2)+" MB"}else{v=u.toFixed(2)+" KB"}return v}function o(x){var y=[];if(jQuery.type(x)=="string"){y=x.split("&")}else{y=b.param(x).split("&")}var u=y.length;var s=[];var w,v;for(w=0;w"+H.extErrorStr+"").appendTo(B.errorLog)}continue}if(H.maxFileSize!=-1&&u[C].size>H.maxFileSize){if(H.showError){b("
"+H.sizeErrorStr+"
").appendTo(B.errorLog)}continue}if(H.maxFileCount!=-1&&B.selectedFiles>=H.maxFileCount){if(H.showError){b("
"+H.maxFileCountErrorStr+"
").appendTo(B.errorLog)}continue}B.selectedFiles++;var D=H;var w=new FormData();var A=H.fileName.replace("[]","");w.append(A,u[C]);var y=H.formData;if(y){var F=o(y);for(var z=0;z");v.appendTo("body");var x=[];x.push(u[C].name);n(v,D,E,x,B);B.fileCounter++}}function c(w,v,y){var x=v.allowedTypes.toLowerCase().split(",");var u=y.split(".").pop().toLowerCase();if(v.allowedTypes!="*"&&jQuery.inArray(u,x)<0){return false}return true}function h(u,w){if(u.showFileCounter){var v=b(".upload-filename").length;w.fileCounter=v+1;b(".upload-filename").each(function(A,y){var s=b(this).html().split(u.fileCounterStyle);var x=parseInt(s[0])-1;var z=v+u.fileCounterStyle+s[1];b(this).html(z);v--})}}function q(y,B,D,u){var A="ajax-upload-id-"+(new Date().getTime());var w=b("
");var v="";if(D.multiple){if(D.fileName.indexOf("[]")!=D.fileName.length-2){D.fileName+="[]"}v=""}var z=b(v).appendTo(w);z.change(function(){y.errorLog.html("");var K=D.allowedTypes.toLowerCase().split(",");var G=[];if(this.files){for(H=0;H"+D.extErrorStr+"").appendTo(y.errorLog)}return}F.push({name:I,size:"NA"});if(D.onSelect(F)==false){return}}h(D,y);u.unbind("click");w.hide();q(y,B,D,u);w.addClass(B);if(a.fileapi&&a.formdata){w.removeClass(B);var J=this.files;l(D,y,J)}else{var E="";for(var H=0;H"}else{E+=G[H]+"
"}y.fileCounter++}if(D.maxFileCount!=-1&&(y.selectedFiles+G.length)>D.maxFileCount){if(D.showError){b("
"+D.maxFileCountErrorStr+"
").appendTo(y.errorLog)}return}y.selectedFiles+=G.length;var s=new p(y,D);s.filename.html(E);n(w,D,s,G,y)}});w.css({margin:0,padding:0});var C=b(u).width()+10;if(C==10){C=120}var x=u.height()+10;if(x==10){x=35}u.css({position:"relative",overflow:"hidden",cursor:"default"});z.css({position:"absolute",cursor:"pointer",top:"0px",width:'100%',height:'34px',left:"0px","z-index":"100",opacity:"0.0",filter:"alpha(opacity=0)","-ms-filter":"alpha(opacity=0)","-khtml-opacity":"0.0","-moz-opacity":"0.0"});w.appendTo(u)}function p(v,u){this.statusbar=b("
");this.filename=b("
").appendTo(this.statusbar);this.progressDiv=b("
").appendTo(this.statusbar).hide();this.progressbar=b("
").appendTo(this.progressDiv);this.abort=b("
"+u.abortStr+"
").appendTo(this.statusbar).hide();this.cancel=b("
"+u.cancelStr+"
").appendTo(this.statusbar).hide();this.done=b("
"+u.doneStr+"
").appendTo(this.statusbar).hide();this.del=b("
"+u.deletelStr+"
").appendTo(this.statusbar).hide();v.errorLog.after(this.statusbar);return this}function n(z,y,u,w,A){var x=null;var v={cache:false,contentType:false,processData:false,forceSync:false,data:y.formData,formData:y.fileData,dataType:y.returnType,beforeSubmit:function(F,C,E){if(y.onSubmit.call(this,w)!=false){var B=y.dynamicFormData();if(B){var s=o(B);if(s){for(var D=0;D"+y.uploadErrorStr+"
");u.cancel.show();z.remove();u.cancel.click(function(){u.statusbar.remove()});return false},beforeSend:function(B,s){u.progressDiv.show();u.cancel.hide();u.done.hide();if(y.showAbort){u.abort.show();u.abort.click(function(){B.abort();A.selectedFiles-=w.length})}if(!a.formdata){u.progressbar.width("5%")}else{u.progressbar.width("1%")}},uploadProgress:function(E,s,D,C){if(C>98){C=98}var B=C+"%";if(C>1){u.progressbar.width(B)}if(y.showProgress){u.progressbar.html(B);u.progressbar.css("text-align","center")}},success:function(B,s,C){A.responses.push(B);u.progressbar.width("100%");if(y.showProgress){u.progressbar.html("100%");u.progressbar.css("text-align","center")}u.abort.hide();y.onSuccess.call(this,w,B,C);if(y.showStatusAfterSuccess){if(y.showDone){u.done.show();u.done.click(function(){u.statusbar.hide("slow");u.statusbar.remove()})}else{u.done.hide()}if(y.showDelete){u.del.show();u.del.click(function(){u.statusbar.hide().remove();if(y.deleteCallback){y.deleteCallback.call(this,B,u)}A.selectedFiles-=w.length;h(y,A)})}else{u.del.hide()}}else{u.statusbar.hide("slow");u.statusbar.remove()}z.remove();A.sCounter+=w.length},error:function(C,s,B){u.abort.hide();if(C.statusText=="abort"){u.statusbar.hide("slow").remove();h(y,A)}else{y.onError.call(this,w,s,B);if(y.showStatusAfterError){u.progressDiv.hide();u.statusbar.append("ERROR: "+B+"")}else{u.statusbar.hide();u.statusbar.remove()}A.selectedFiles-=w.length}z.remove();A.fCounter+=w.length}};if(y.autoSubmit){z.ajaxSubmit(v)}else{if(y.showCancel){u.cancel.show();u.cancel.click(function(){z.remove();u.statusbar.remove();A.selectedFiles-=w.length;h(y,A)})}z.ajaxForm(v)}}return this}}(jQuery)); \ No newline at end of file diff --git a/assets/js/um-functions.js b/assets/js/um-functions.js index e69de29b..cd5ad3a1 100644 --- a/assets/js/um-functions.js +++ b/assets/js/um-functions.js @@ -0,0 +1,80 @@ +function initCrop_UM() { + + jQuery('.um-single-image-preview.crop img').imgAreaSelect({ + handles: true, + }); + +} + +function initImageUpload_UM( trigger ) { + + if (trigger.data('upload_help_text')){ + upload_help_text = '' + trigger.data('upload_help_text') + ''; + } else { + upload_help_text = ''; + } + + if ( trigger.data('icon') ) { + icon = ''; + } else { + icon = ''; + } + + if ( trigger.data('upload_text') ) { + upload_text = '' + trigger.data('upload_text') + ''; + } else { + upload_text = ''; + } + + trigger.uploadFile({ + url: ultimatemember_image_upload_url, + method: "POST", + multiple: false, + formData: {key: trigger.data('key'), set_id: trigger.data('set_id'), set_mode: trigger.data('set_mode') }, + fileName: trigger.data('key'), + allowedTypes: trigger.data('allowed_types'), + maxFileSize: trigger.data('max_size'), + dragDropStr: icon + upload_text + upload_help_text, + sizeErrorStr: trigger.data('max_size_error'), + extErrorStr: trigger.data('extension_error'), + maxFileCountErrorStr: trigger.data('max_files_error'), + maxFileCount: 1, + showDelete: false, + showAbort: false, + showDone: false, + showFileCounter: false, + showStatusAfterSuccess: false, + onSubmit:function(files){ + + trigger.parents('.um-modal-body').find('.um-error-block').remove(); + + }, + onSuccess:function(files,data,xhr){ + + trigger.selectedFiles = 0; + + data = jQuery.parseJSON(data); + if (data.error && data.error != '') { + + trigger.parents('.um-modal-body').append('
'+data.error+'
'); + + } else { + + jQuery.each( data, function(key, value) { + trigger.parents('.um-modal-body').find('.um-single-image-preview img').attr('src', value); + }); + + trigger.parents('.um-modal-body').find('.ajax-upload-dragdrop').fadeOut( function () { + trigger.parents('.um-modal-body').find('.um-single-image-preview').show(); + trigger.parents('.um-modal-body').find('.um-modal-btn.um-finish-upload.disabled').removeClass('disabled'); + um_modal_responsive(); + } ); + + initCrop_UM(); + + } + + } + }); + +} \ No newline at end of file diff --git a/assets/js/um-modal.js b/assets/js/um-modal.js index 860cfc15..bcfb6fba 100644 --- a/assets/js/um-modal.js +++ b/assets/js/um-modal.js @@ -1,66 +1,73 @@ -function um_new_modal( id, ajax, size ){ +function um_new_modal( id, size ){ var modal = jQuery('body').find('.um-modal-overlay'); jQuery('.tipsy').hide(); - - um_remove_modal(); - + jQuery('body,html').css("overflow", "hidden"); jQuery('body').append('
'); + jQuery('#' + id).prependTo('.um-modal'); jQuery('#' + id).show(); jQuery('.um-modal').show(); - + um_modal_size( size ); - if ( ajax == true ) { um_modal_preload(); } + + initImageUpload_UM( jQuery('.um-modal:visible').find('.um-single-image-upload') ); + um_modal_responsive(); } -function um_modal_ajaxcall( act_id, arg1, arg2, arg3 ) { - - if ( arg2 ) { - jQuery('.um-modal-header:visible').html( arg2 ); - } - - jQuery.ajax({ - url: ultimatemember_ajax_url, - type: 'POST', - data: {action: 'ultimatemember_frontend_modal', act_id: act_id, arg1 : arg1, arg2 : arg2, arg3: arg3 }, - complete: function(){ - um_modal_loaded(); - um_modal_responsive(); - }, - success: function(data){ - - jQuery('.um-modal').find('.um-modal-body').html( data ); - - } - }); - return false; -} - function um_modal_responsive() { - var required_margin = jQuery('.um-modal:visible').innerHeight() / 2 + 'px'; - jQuery('.um-modal:visible').css({'margin-top': '-' + required_margin }); + + var modal = jQuery('.um-modal:visible'); + + if ( modal.length ) { + + var window_height_diff = jQuery(window).height() - modal.innerHeight(); + + var half_gap = window_height_diff / 2 + 'px'; + + var element_width = jQuery(window).width(); + + modal.removeClass('uimob340'); + modal.removeClass('uimob500'); + + if ( element_width <= 340 ) { + + modal.addClass('uimob340'); + modal.animate({ 'bottom' : 0 }, 300); + + } else if ( element_width <= 500 ) { + + modal.addClass('uimob500'); + modal.animate({ 'bottom' : 0 }, 300); + + } else if ( element_width <= 800 ) { + + modal.animate({ 'bottom' : half_gap }, 300); + + } else if ( element_width <= 960 ) { + + modal.animate({ 'bottom' : half_gap }, 300); + + } else if ( element_width > 960 ) { + + modal.animate({ 'bottom' : half_gap }, 300); + + } + + } } function um_remove_modal(){ - jQuery('body,html').css("overflow", "inherit"); + jQuery('.um-single-image-preview.crop img').imgAreaSelect({ hide: true }); + jQuery('body,html').css("overflow", "auto"); jQuery('.um-modal div[id^="um_"]').hide().appendTo('body'); jQuery('.um-modal,.um-modal-overlay').remove(); } -function um_modal_preload() { - jQuery('.um-modal:visible').addClass('loading'); - jQuery('.um-modal-body:visible').empty(); -} - -function um_modal_loaded() { - jQuery('.um-modal:visible').removeClass('loading'); -} - function um_modal_size( aclass ) { jQuery('.um-modal:visible').addClass(aclass); } @@ -82,11 +89,55 @@ jQuery(document).ready(function() { um_remove_modal(); }); + /** + disable link event + **/ + jQuery(document).on('click', 'a[data-modal^="um_"], span[data-modal^="um_"], .um-modal a', function(e){ + e.preventDefault(); + return false; + }); + + /** + remove uploaded image + **/ + jQuery(document).on('click', '.um-modal .um-single-image-preview a.cancel', function(e){ + e.preventDefault(); + + var parent = jQuery(this).parents('.um-modal-body'); + + parent.find('.um-single-image-preview').hide(); + + parent.find('.ajax-upload-dragdrop').show(); + + parent.find('.um-modal-btn.um-finish-upload').addClass('disabled'); + + um_modal_responsive(); + + return false; + }); + + /** + finish upload + **/ + jQuery(document).on('click', '.um-finish-upload', function(){ + + var key = jQuery(this).attr('data-key'); + + var src = jQuery(this).parents('.um-modal-body').find('.um-single-image-preview img').attr('src'); + + jQuery('.um-single-image-preview[data-key='+key+']').fadeIn().find('img').attr('src', src); + + um_remove_modal(); + + jQuery('.um-single-image-preview[data-key='+key+']').parents('.um-field').find('.um-btn-auto-width').html('Change/Modify Photo'); + + }); + /** fire new modal **/ - jQuery(document).on('click', 'a[data-modal^="um_"], span[data-modal^="um_"]', function(){ - + jQuery(document).on('click', 'a[data-modal^="um_"], span[data-modal^="um_"]', function(e){ + var modal_id = jQuery(this).attr('data-modal'); if ( jQuery(this).data('modal-size') ) { @@ -95,13 +146,13 @@ jQuery(document).ready(function() { var size = 'normal'; } - if ( jQuery(this).data('dynamic-content') ) { - um_new_modal( modal_id, true, size ); - um_modal_ajaxcall( jQuery(this).data('dynamic-content'), jQuery(this).data('arg1'), jQuery(this).data('arg2'), jQuery(this).data('arg3') ); + if ( jQuery(this).data('modal-copy') ) { + jQuery('#' + modal_id).html( jQuery(this).parents('.um-field').find('.um-modal-hidden-content').html() ); + um_new_modal( modal_id, size ); } else { - um_new_modal( modal_id, false, size ); + um_new_modal( modal_id, size ); } - + }); }); \ No newline at end of file diff --git a/assets/js/um-responsive.js b/assets/js/um-responsive.js index 534b4ecc..f06c4bd1 100644 --- a/assets/js/um-responsive.js +++ b/assets/js/um-responsive.js @@ -1,12 +1,21 @@ function um_responsive(){ - - /* responsive layout */ + jQuery('.um').each(function(){ element_width = jQuery(this).width(); + + if ( element_width <= 340 ) { - if ( element_width <= 500 ) { - + jQuery(this).removeClass('uimob340'); + jQuery(this).removeClass('uimob500'); + jQuery(this).removeClass('uimob800'); + jQuery(this).removeClass('uimob960'); + + jQuery(this).addClass('uimob340'); + + } else if ( element_width <= 500 ) { + + jQuery(this).removeClass('uimob340'); jQuery(this).removeClass('uimob500'); jQuery(this).removeClass('uimob800'); jQuery(this).removeClass('uimob960'); @@ -15,6 +24,7 @@ function um_responsive(){ } else if ( element_width <= 800 ) { + jQuery(this).removeClass('uimob340'); jQuery(this).removeClass('uimob500'); jQuery(this).removeClass('uimob800'); jQuery(this).removeClass('uimob960'); @@ -23,6 +33,7 @@ function um_responsive(){ } else if ( element_width <= 960 ) { + jQuery(this).removeClass('uimob340'); jQuery(this).removeClass('uimob500'); jQuery(this).removeClass('uimob800'); jQuery(this).removeClass('uimob960'); @@ -31,6 +42,7 @@ function um_responsive(){ } else if ( element_width > 960 ) { + jQuery(this).removeClass('uimob340'); jQuery(this).removeClass('uimob500'); jQuery(this).removeClass('uimob800'); jQuery(this).removeClass('uimob960'); @@ -55,6 +67,7 @@ function um_responsive(){ jQuery(window).load(function() { um_responsive(); + um_modal_responsive(); }); @@ -62,5 +75,6 @@ jQuery(window).load(function() { jQuery(window).resize(function() { um_responsive(); + um_modal_responsive(); }); \ No newline at end of file diff --git a/assets/js/um-scripts.js b/assets/js/um-scripts.js index 7c368d5f..581b8bf0 100644 --- a/assets/js/um-scripts.js +++ b/assets/js/um-scripts.js @@ -66,7 +66,7 @@ jQuery(document).ready(function() { hiddenSuffix: '__true' }); - /* Rating field */ + /* rating field */ jQuery('.um-rating').raty({ half: false, starType: 'i', @@ -81,6 +81,7 @@ jQuery(document).ready(function() { } }); + /* rating read-only field */ jQuery('.um-rating-readonly').raty({ half: false, starType: 'i', @@ -91,87 +92,15 @@ jQuery(document).ready(function() { readOnly: true }); - /* Image Upload */ - jQuery(".um-single-image-upload").each(function(){ - - var trigger = jQuery(this); - - if (trigger.data('upload_help_text')){ - upload_help_text = '' + trigger.data('upload_help_text') + ''; - } else { - upload_help_text = ''; - } - - if ( trigger.data('icon') ) { - icon = ''; - } else { - icon = ''; - } - - if ( trigger.data('upload_text') ) { - upload_text = '' + trigger.data('upload_text') + ''; - } else { - upload_text = ''; - } - - trigger.uploadFile({ - url: ultimatemember_image_upload_url, - method: "POST", - multiple: false, - formData: {key: trigger.data('key'), set_id: trigger.data('set_id'), set_mode: trigger.data('set_mode') }, - fileName: trigger.data('key'), - allowedTypes: trigger.data('allowed_types'), - maxFileSize: trigger.data('max_size'), - dragDropStr: icon + upload_text + upload_help_text, - sizeErrorStr: trigger.data('max_size_error'), - extErrorStr: trigger.data('extension_error'), - maxFileCountErrorStr: trigger.data('max_files_error'), - maxFileCount: 1, - showDelete: false, - showAbort: false, - showDone: false, - showFileCounter: false, - showStatusAfterSuccess: false, - onSubmit:function(files){ - - trigger.parents('.um-field').find('.um-error-block').remove(); - - }, - onSuccess:function(files,data,xhr){ - - trigger.selectedFiles = 0; - - data = jQuery.parseJSON(data); - if (data.error && data.error != '') { - - trigger.parents('.um-field').append('
'+data.error+'
'); - - } else { - - trigger.parents('.um-field').find('.ajax-upload-dragdrop').fadeOut( function() { - trigger.parents('.um-field').find('.um-single-image-preview').fadeIn(); - }); - - jQuery.each( data, function(key, value) { - trigger.parents('.um-field').find('.um-single-image-preview img').attr('src', value); - }); - - } - - } - }); - - }); - - /* Remove a single image upload */ - jQuery(document).on('click', '.um-single-image-preview a.cancel', function(e){ + /* remove uploaded image */ + jQuery(document).on('click', '.um .um-single-image-preview a.cancel', function(e){ e.preventDefault(); - var trigger = jQuery(this).parents('.um-field').find('.um-single-image-upload'); + var parent = jQuery(this).parents('.um-field'); - trigger.parents('.um-field').find('.um-single-image-preview').fadeOut(function(){ - trigger.parents('.um-field').find('.ajax-upload-dragdrop').fadeIn(); - }); + parent.find('.um-single-image-preview').hide(); + + parent.find('.um-btn-auto-width').html('Upload'); return false; }); diff --git a/core/lib/upload/um-image-upload.php b/core/lib/upload/um-image-upload.php index 1bc5f72a..b638773a 100644 --- a/core/lib/upload/um-image-upload.php +++ b/core/lib/upload/um-image-upload.php @@ -20,11 +20,12 @@ if(isset($_FILES[$id]['name'])) { $error = $ultimatemember->files->check_image_upload( $temp, $id ); if ( $error ){ + $ret['error'] = $error; + } else { - $ret[] = $ultimatemember->files->new_image_upload_temp( $temp, $file, 35 ); - + $ret[] = $ultimatemember->files->new_image_upload_temp( $temp, $file, um_get_option('image_compression') ); } diff --git a/core/um-builtin.php b/core/um-builtin.php index 2e9db0c3..074a6246 100644 --- a/core/um-builtin.php +++ b/core/um-builtin.php @@ -239,7 +239,7 @@ class UM_Builtin { 'image' => array( 'name' => 'Image Upload', - 'col1' => array('_title','_metakey','_help','_allowed_types','_max_size'), + 'col1' => array('_title','_metakey','_help','_allowed_types','_max_size','_crop'), 'col2' => array('_label','_public','_roles','_upload_text','_upload_help_text','_button_text'), 'col3' => array('_required','_editable','_icon'), 'validate' => array( diff --git a/core/um-enqueue.php b/core/um-enqueue.php index c7c411b1..7b8b767c 100644 --- a/core/um-enqueue.php +++ b/core/um-enqueue.php @@ -149,6 +149,19 @@ class UM_Enqueue { } + /*** + *** @Load crop script + ***/ + function load_imagecrop(){ + + wp_register_script('um_crop', um_url . 'assets/js/um-crop.js' ); + wp_enqueue_script('um_crop'); + + wp_register_style('um_crop', um_url . 'assets/css/um-crop.css' ); + wp_enqueue_style('um_crop'); + + } + /*** *** @Load masonry ***/ @@ -219,6 +232,8 @@ class UM_Enqueue { $this->load_raty(); + $this->load_imagecrop(); + $this->load_masonry(); $this->load_tipsy(); diff --git a/core/um-fields.php b/core/um-fields.php index 05543498..5da36579 100644 --- a/core/um-fields.php +++ b/core/um-fields.php @@ -593,6 +593,8 @@ class UM_Fields { case 'image': + if ( !isset( $array['crop'] ) ) $array['crop'] = 0; + if (!isset($array['invalid_image'])) $array['invalid_image'] = "Please upload a valid image!"; if (!isset($array['allowed_types'])) { $array['allowed_types'] = "gif,jpg,jpeg,png"; @@ -975,19 +977,52 @@ class UM_Fields { $output .= $this->field_label($label, $key, $data); } - $output .= '
'; - - $output .= '
'; - - $output .= '
'.$button_text.'
'; - - $output .= '
'; - - if ( $this->is_error($key) ) { - $output .= $this->field_error( $this->show_error($key) ); - } + if ( $crop ) { + $crop_class = 'crop'; + } else { + $crop_class = ''; + } - $output .= '
'; + $modal_label = ( isset( $data['label'] ) ) ? $data['label'] : __('Upload Photo','ultimatemember'); + + $output .= '
+ +
+ + '. $button_text . ' + +
'; + + /* modal hidden */ + $output .= '
'; + + $output .= '
' . $modal_label . '
'; + + $output .= '
'; + + $output .= '
'; + $output .= '
'.$button_text.'
'; + + $output .= ''; + + $output .= '
'; + + $output .= '
'; + + /* end */ + + if ( $this->is_error($key) ) { + $output .= $this->field_error( $this->show_error($key) ); + } + + $output .= '
'; + break; /* Single File Upload */ diff --git a/templates/modal/um_dynamic_modal.php b/templates/modal/um_dynamic_modal.php deleted file mode 100644 index 2f4cc146..00000000 --- a/templates/modal/um_dynamic_modal.php +++ /dev/null @@ -1,11 +0,0 @@ - \ No newline at end of file diff --git a/templates/modal/um_upload_image.php b/templates/modal/um_upload_image.php new file mode 100644 index 00000000..daa75ed8 --- /dev/null +++ b/templates/modal/um_upload_image.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/um-config.php b/um-config.php index 865c8de9..6e071011 100644 --- a/um-config.php +++ b/um-config.php @@ -736,6 +736,29 @@ $this->sections[] = array( *** @ ***/ +$this->sections[] = array( + + 'icon' => 'um-icon-files', + 'title' => __( 'Image & File Uploads'), + 'fields' => array( + + array( + 'id' => 'image_compression', + 'type' => 'text', + 'title' => __( 'Image Quality' ), + 'desc' => __( 'Quality is used to determine quality of image uploads, and ranges from 0 (worst quality, smaller file) to 100 (best quality, biggest file). The default range is 75.' ), + 'default' => 60, + 'validate' => 'numeric', + ), + + ) + +); + +/*** +*** @ +***/ + $this->sections[] = array( 'icon' => 'um-icon-search',