{hD133x>L_^t#mpsNK5XYnN5yNLLpmR4$zM=A@|BDQ zVkebkKM@Ea+zv-QqO)3;lrOLO9(pLwY-lsmhoc)to~P-M6tJ9blBgYyW z^yDQn4I^eCB#V38T)GaVU zWDLA#|4V>Nt75vhD9LVW&}u7cEgpVpR`=TV ibfdJ=@i2<`l->XgCoK;%(<7J2iDS^wkB2i9tGHHda)|nbI zAZTE@!6)gsH~Gh!Lb OCXwEwqdj$&SD$J30pA05m;h ziZb*4hUF-7#oc{LF@b`f!SA5dg4UVKzb6|CpALs+nNvm;)P6mr?s^%Q=#%xkn_dpl z^UFbi7D)0ix{{r`RZ<(usTm8`P}FH=b_mt7ZX<&VLd99edo2-;Mvkj!ri=79zvtBG zaeY;i>K`+1tr@aDgV1g2T#v|z9js_)fH1F5la*|M$IC{_>X^8E@uej)IpgQjcONF_ zFmkf1QF_C4<+j;kkBsju{L+qq8c8}A7;1++wZLrJQ5Oj%b<{kN|LkjY?fdJeW3S2D zSxl9c8b}!vR~IE}L(|?WK_SC?K0@jK)Q+79NR5klTc$4m{J8oZdO<|$60XDM)#-;^ z6Pi6HGu`bFD%9#{kKH7H>U+D?NVdW0jt2(?Z{ySKbo1;F!0 (LAOh%2~*^hG}Do zW{^$tVd#}c-@!UK;U4Sy$#J1CNpzQo*xclFO`9rCI^pOJ=FygSwN6wZ%oyu}d&Be{ z6>NlvcuxVv;h?ZX;BxH%{&F$`b-%dLbW@1me27W-7X1iHf-WnM{zfF7c9%W pg72#?1@AQddHhYB-uNS1G2{_*e+xSd_Yvdlpe!RQ%yv!4+PLiQ@9QZsD9g zz#uKS@@rdF%%OIg-Y4IsebaY=7^%Si?l)W}c=F!$mc_k6-#*WuWAQy3?#5#x Bg>k>TC8?k6(2Dve1bnuEd;VLYI z$BVVc)9UxkSyxl4Q}vl&g;avg`TwaA`PVK9z?w&w3OIz+_J>IO@weSQ`(eNuMXgif zTkEX%r}B3sP0r1@zVdLF5w3Jnt)Bw5aBF>e5s6EO5u+B(4!)+wXGXg+3zj>cnAvEi z_p7h=oSHh~mNVH6=HVUZ2tA}289XwzSDSx^DR+oBMoT+q`l%6p^_b+h;b+R5^{Zd& zd?CX8Q4$TLsGyX2nOoyk`i~`ho7bO6uI8TJ!;BhwKo8AXx0Pw4*KUw@kw(t2x;(3N zn#cjLk6^_%!N#!J-MV#7CB#*LnNscAQXd|KkWY3nS-A?pNkL5;uNns6v%2Q30^5*q zO0d`O@mX6gl+;#L`-lFg??HA zaI}T~K9huPnXG7@+np)u{3NqU;d)*9*OYKW*u07_mI{ucFfuJ$XA_Dwe5mdgkyA3( zQ98{bDef*g=HWeZDhcbj?lBW#;mqNwq?oML8{<{zy CgbZDEPS5-?QsKq85&Eytj3@_{Z7c+iQF{r1t886eNAOJLKa=% zT5&2&Ye}nJp9?G_VFnO&a593&8b|$Hq(;oq(h-EEgFF2ZssugXrpz*CcB?LAi~yq? z!%@&!(n#OITgGQxmAqMBrvPzEP1_17m>p3@`Ngnt3O)mjeE@$0jlB~21~q27lNh>K zu@eBos=_tQAnGJ4g)eG68FTUccorg5RJe|TRAd1WN2>@L)4qCZvQj==fizNS*1lbg z88YsXuF_n|4nmPd^r!xf=dH62R?AWY4q#9O7l}OdAWU^8*21j*dbq+BH1m6f$PuEh ziH~v9AprB0E}pqkH3$hjlo>0DQsJTwKbJ=RQnBHZAceJ4Er)Vmj3+47f@^*wQ1}@z z_6f`&tlpjiDilPZL&fJF#L&Y`uJ-MK?DBV+iLgs>^wTHv9lK?N8T%GQR70H)2;{Ky zv{nBZEmD=hk5kkQNw+4m?hs)m;JXoJKXVv%>f@b8Ka9MGf>9;mkxzZ4!TBw$t3Dpw zmE>1}Q*zjG>$LgzI$J0CRW84w8Rs5dU|9|}E3VfMzq)Y^Wv#g(CqK6h#-_kAuV$e+ z+43>wJ`?HQl9H1Cq$s|K=wK(?LbvIo28C8Z1RO4clQaMV7$A)#S`%g=Ui&&47O!%* zomH@R)<|G_;3n-J?;Ef>BN@W8kMXhV2k|Zyl<-h$O*D5^8vG>rL^I{Ko_JzLaVd!( za4HA$YeuSfz{qptw5Mao?UPlT#QYBcaR8g+ZY%{q>6g<|lb*zR%g^yL^71z&^?DGa zIN%)=mS+ C WuDZn@Ny>)Pp1EM61rul||&{@xmN?S+FnNoL3y zySDr#Q#gb(Nal5YWnjH6Ke~Uxi`76~?z`Wl%EOkOFiLnJM{WA`_BCAS#7u+DN*?TH zH_d;{n*Tf{{_hjyxhHIRf{I1N#P5QXEMNWZ*IzE-A9SNE#vOzL7Q?s>f7r |gE*^9cCCMeAhmXFGaa>A@gc z)SZosuBkgYX%fKy5W7_7@$vLwi|J39kbK)nw&*SMw&XOjpzQrmig~Ofqa5L-A -6shc!F7YjonDff*iYU-eO@?jEB^b_9pPFZ!!of@(Nps4}0^!c9E~zF< zt~=C^R-jUIzjDcf`pEftqc39H8N@4?H2MUVTg_k;N)&zbHA9FX>Z2yyvN*q2iapU> zKv !f5LTQKTfv9w_n}wMC%U%BPDc@U0%q z>@SftKDxA7q<*9<#_f~km$dvJTQHc`y(tk`Rg2$TxxWIp%!aFT2u=>ZO}+bO%z5p) zy)LJ&OO#pArKv_|gyg-?L7=kG%dWhH=XXuGb{mPvvBb>f(k5m!ds=!yOsHo56IJ-` z@y?5fag~+}YvA71elDX#%bmL#GWF{7@IMv5NEu3dFS<-vK7 Jn1drVDtuPPE>`EEe%vlqIF@Qs$H>z8xS-(E!V_4)gI|2%AG%^c7MLv&h{e;m zC0(J&T)F9q+M7MHESk01L6n-MdXpaeW94qS6A9U0ydG?Eo+_ZYsPgR+!TCEsA6lzj z-axIWC8^{5ef$ =X=CZ_*HL3^SZc6t>P+80twTJ0dlc6VXj+%s^zFT7K@j85?XB$P;Uh3Rgh#DFGXSlk xTq0LaQ6n9IRM zHStK{z 1%v1oHA(h+l5JdGndV+foZ?~%VPEdP^L+K z3R@^7hKv9~1;G~`TYAEWK27rlZ60CQZFBMBiGGwMS8sVyyB_hW^7+EJ%^YLwH` j40Tt$gaAZ zPV;>%zC1U=D4lr_t4t=fd}CG3vsWfk+pRvsGVE@qmCySDDrw=KdWv>!_y~4@6F0d- zwX7yhN$B8+n(08@%tG-SzT3$II;!1|#h_8H9=U{$TW<~9d*g*V-J=#Wpv*O<>KRGo z<5#$C9>enKqP1ySyQ^j0FWkviD0kMKh2BeY95C3}5Sol(=yrEKm`g0m>hVbq99@X! z@^Ndow|iztb|c1FQH!sHzS7{J7PvoRARnRjG*FAcL&mtU_rCs3>t`~KqMjMu6`60V zDWe@LqXSh`nwrw(%@H4T9^Y&AN96uIE8@a#Gz66?A17J9yT34;GK$dfhZ?6%)q{R+ z4k#ailXF;jg^5O9vxJ7xz>?Ex)v_PRK_bre*#wNe%Y@qA^9zneQ|1-9`&PnJ>#J!s zb4}`K)%Cg$dV6+`iR2LcZh}eHSh72YBnN{d)}76XVwM4O2?4apHe+Z}Lx)Lf?v&)l zX@hC%K99azt{~1AoiAFmjh_GLC2w&*wCl5yy=IkxKo ~*4;mRTsuRgHeIoq!=M<7TnU!}b(n~?9qVJ-nr)<3lTFNu zs33%*llw4R0?+A-J>p0jZ9iu!y#71E3FGiect=31$QHR>??b3xm<-JN?tW%XHDyOx zArl$N_bZXE#yFzIFWdHqORvJcp$J@*c#?_X<^vs21K3%*91r|dRtU4sZ$AccMt|2Z zt#Gkay_O+@Tq*JA18oBa9>zXI`{{9$6QV(UumUv8Z5Aq7joCwq0P9&nD<-NKCTaXN zKY(^0V }3JY}B1Flif>?eOm z<{n(<9%t;{aN-o0bkf^LDCU+}ty@b@8*O2n+=Wu;vL9OMpMHUNy!}`|P`@UF2@!jJ z*E+90l%v@_HMVCGOO(Ji_#mvPblxIFBKZpS?SzyMTZ9L5cwy~V)pG@7-ap)fSjYR{ ziAFCjPdyDwA-rq}d)~2nvzy@X-*>tH T&_8HXQ4|L7?>l)(jZ#6< z{3*18&Pt0=FfmF870t`wlF?C65mayz#NFN5p}1Has!dSr5@=FIJL%#eIJC8WuLY5y z{qx>AF12b*lVWnF%e{x+`Oc+R%o%!E&dy1()|Dhk{00?ksY-pIRo}9kKPuFRW_Xt_ z*YEA-d4=361PSRhm 0F~fBw5BT%hyPZI%-J@STb-^?|{Jjx-w7-Ar z6Tp|An>}O1l#vS&;%)L-eQ8hN!lkhU0;^C2@&1h^KuiG>@*JU~4Dr#x6P}xWl5E7T z_}FT_@>e&1$aAv~VnK9ud-0nRIww=p^?}TEU6eepiYSSRSfIlSj`#;RODz+w6mp~M z7L+Nnj{w3*cw}(u&F4RRGS6$Td^dkKMDSQ+atqLmDtrO|PG|rr`cy<}2BoQ9Y{q_7 zvOGJVZuA`^^qMhpI#Yf<^KZgZN%Y5JLZIWKyqv1cz1Z!40f5zN0HE4@zmt%YlOf~L zp=A8qP^vOlZilrU CsvH-AH~=650c4~bP_}n
" + ]; + $rez .= $mod->showModal($arr_error); + + $arr_error2 = [ + 'wnd_id'=>'error2', + 'header'=>'s4Y-${+d(7^zM8U1%SjE#6Hs(#a|wE3z443zZyGJK|RwJE>|ZYS)k z@fn|L#QTbmbpZ0zE84|F?Fg38KNr!A`Y*`R9MQ3BmwKuWY{$oGQ9IU}C@%x!q7T!R gRf%h88rNH$KhUC)kOjcfQUCw|07*qoM6N<$g1-v}PXGV_ literal 0 HcmV?d00001 diff --git a/k2shop/k2shop/app/app/vdocs/img/pdf2.png b/k2shop/k2shop/app/app/vdocs/img/pdf2.png new file mode 100644 index 0000000000000000000000000000000000000000..376c9bb9d32c6e6f3942fa5cf45bcc4689a44f3b GIT binary patch literal 483 zcmV<90UZ8`P) blf7ybVHAd+_k4qf1T{aB z6dBlHS__4g7HPbJV566yVBrl2=_CFWVjo-UZF2`&SqM8b!Bm0}jUnsooMSN?Sl3yx zhzCyda=!QH96sIX^ 0)d)XOWIIJw=0#OrCw$9cV5VndEHA1u z2bw>)HhUW}4TiH9QlDtv$@CaF!_#M3a}SUEQhL c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu` f(~1RD^r68eAMwS&*t9 zlv v ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkcWM*P!X>RUn;cRJSXy|J0XkhN*;%MY#W@O=N z?CN3x)9aF-T$-DjR|3 v4~Pj*wm=R%;iu*SQ+p9GSzp<-rk8<%@tUWLV@SoV zEz|aUA9fHqK6#6) k-!wk*@u18b=*^?rZB;$(7F%{`}zb?q_v1@AsCMcS^P`oVaA^&Hm?=Zd;>r zowo|V(Ad|k{XxO(Ns;B@ZMkRI__d~bS (%89<8CtNg z{yKkKaO-Bz-3L@G7}qASrZ{T8%89%d-fT~JHbGHp?>+U(JMt>ESU|p{AX>r3kSLsK70yF=2JIr0Z-|Lq0#NrJsyFwQxOq*zv z+|0b{ySCFwmuUyto_=(ClMrleR61z8T-c9|Raxolf0IdSg!fFJ*SA5YluJ#B56am@A9Q?|48 sYeR43%O1Bp@%;0`nP1XRw=*y^==rz2dng *v|JJv0uo zzPZ5S_=!`UjT0wssrdElsq*38?&S|_M3^5JWuN47p2IfJYD;tD%$ZvZYCb>G {d2D1)dRn#wnY*Wvtl}odF=O8`|fJ|y?tF$LQ>MPRUeLT*Jt5P xPFUb5!T0Y{+pnY7>(#{KvLuh4IC6l2;kBBN(KYp>{y@($c)I$ztaD0e0szN3djtRg literal 0 HcmV?d00001 diff --git a/k2shop/k2shop/app/app/vdocs/img/txt.png b/k2shop/k2shop/app/app/vdocs/img/txt.png new file mode 100644 index 0000000000000000000000000000000000000000..599b1d1e4181d205fc396297706de5ad6cc7d880 GIT binary patch literal 462 zcmV;<0WtoGP) bkv~sVQ4qz?Iq%+Gc9&%R zLxhIBhf8NAUtnWlXHNn(4Hh=|5hzVi8%_KMehV!vDNV>4r7)2~10vk_W-QpnxLl$I zoa7ew+?n6Zo#EZGd`WN |gOx2)W8MzTW#h+M3*#t7`bGu6NrCPYt%zuItB5t99?=X!LFpGbqa)08cKk24&@$ zuO&*Sd!I)ArN!z!U@H{gHo!(FrCti*8C E@Zy$t+}l{0g4_?vJXe#RK*NNxXbUUmo5GWeGw#;wLr zU%^n$%yu7~934FZ$baQ#ckqX7UroF%Fv08xr1^2dZ!m8|?8y9J;%C$Z0EWv(CC!f? z0;JBl4bDO1=Eck4FtfV2)xUAm-0qVk0KckZW=Z1n-xbu2 bl-+6*K^TUgnIugU?T;q0 zmI^J6v?Q@uiU?YTwjvZg@&W|!z|uSL5){0G3SNLj`saZ{DC&W+rUbMpN=r$$HL(dB zn|9mrV3RfL#slg4p3KZU^F8o>%#4W6E-GA ;P*<#heFhhBT}D>R$<~oCq12hD*FcSH%d;RQZO?eCEnLTGM(q)+$R7gVqu;> zxD3GcM{m%|HH3gC_ebat2YJ4-WdqtGFR$$YFg_H*BLx6=MtiLN+n3A)gOOA8hl2pj zuNG{P?ZAu%KzGnbqOXHMn}?}* 1Ax7 z3xJm&?QtDIfTemL#|FBYjE4b8rVA{rn(dgGjv|F%@8=;a>%~9Ioxpdw5_-+RBL#l1 zWNoX=x817M{L}5`#aPblIO4Vh9vH{G&VIMn$+QVtFX-en-SX#K#D%7N*sQtKCPn=K zfEOR~mj8Gm$JN0zC W6`eU$-XcFK?{gPHjI c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxSU1_g&``n5OwZ87 z)XdCKN5ROz&`93^h|F{iO{`4Ktc=VRpg;*|TTx1yRgjAt)Gi>;Rw<*Tq`*pFzr4I$ zuiRKKzbIYb(9+TpWQLKEE>MMTab;dfVufyAu` f(~1RD^r68eAMwS&*t9 zlv v ztM~P_^2{qPNz6-5^>ndS0-B(gnVDkc FDNW;cRJSXy|Hg>0)l->gHzY>SF2Q zYUE@L)9aF-T$-DjR|3 ryA&s6|>*(wvaTU>CO z2i2Q`%Po#>t~mAT10ACeiddwGh6w>v4~Pj*wm=R%;iu*SQ+p9GSqpC5c!Yt0N!ZiH zF{I+wmTSHl!j2NhK6-jE3vw@QYQNTet2sbZ)NxPCg(kMZ504cDb5vE;^}Cv`1mArW zI$_a+z=O^5fh?}B2fg=%xNv>T67+V=&UO`G@{0JMJYV;4ka@B_TiwjNH{a~Bet*Vq z64&7iYtm2N=+D}km9=%&?Rm%Kz9cEzJ=V4RQ8wrNbKjLAM#uUV1g+e0oiB;$q0zhK z+5QbhJO6CY|Gh+Q`f1m<=^sR*4ZHSQ*|prZ=qr4aC#LYq`0W-^!#495jt!Py9$NZ6 zWQh7G@YYVblWEHXEwKU~<1G8G=ogoMa`R+{JpZTOAX{X l*848-q`m9W-}+yy~r2W#{~J9X)XyB%iP3e_WcgPsrV%)!m}=@42rcb(vFL zpBkCHmU|zXvgOUbM}~eY-m+PlOw8TU^m&)rlO-E6yK;Um$z9ZCy< y$-Rd-sVs zE>hn 5**8LRAKE`f?nPgg&e IbxsLQ03@X!vH$=8 literal 0 HcmV?d00001 diff --git a/k2shop/k2shop/app/app/vdocs/js/vdoc.js b/k2shop/k2shop/app/app/vdocs/js/vdoc.js new file mode 100644 index 0000000..9eb2487 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/js/vdoc.js @@ -0,0 +1,2126 @@ + + +//Вывод истории файла +function actTree(param) { + var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdTree').jqGrid('getRowData', selr); + var treeid = ret.treeid; + var treename = ret.treeename; + var main_folder = $('#m_folder').html(); + if (treeid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + if(param == 'right'){ + + $.ajax({ + url: "/?adm=k2vdocsadmin_main&mode=admin&event=changeRole&temp=ajax", + type: "GET", + data: {treeid:treeid}, + success: function(result){ + $('#table_rights').html(result); + document.getElementById('user_rights').style.display='block'; + //showRightsTable(result, treeid); + }}); + } else if (param == 'del_fold'){ + showWnd(treename); + $('#wnd_caption').text('Видалення каталогу'); + $( "#okwindow" ).click(function() { + $.ajax({ + url: "/?adm=k2vdocsadmin_actfile&mode=admin&event=delFold&temp=ajax", + type: "GET", + data: {treeid:treeid, main_folder:main_folder}, + success: function(result){ + $( "#okwindow" ).unbind('click'); + $('#vdTree').jqGrid().trigger('reloadGrid'); + Expand('gbox_vdTree', treeid); + } + }); + }) + }else { + document.getElementById('moveFold').style.display='block'; + $.ajax({ + url: "/?adm=k2vdocsadmin_main&mode=admin&event=getTree&temp=ajax", + type: "GET", + data: {treeid:treeid, main_folder:main_folder}, + success: function(result){ + $('#move_tree').html(result); + $('#my_folder').text(treeid); + } + }); + + } + } +} + + + +function showRightsTable(is_right, treeid){ + $.ajax({ + url: "/?adm=k2vdocsadmin_main&mode=admin&event=changeRole&temp=ajax", + type: "GET", + data: {treeid:treeid, is_right:is_right}, + success: function(result){ + $('#table_rights').html(result); + document.getElementById('right').style.display='block'; + }}); +} + +//Вывод истории файла +function showHistory() { + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var fileid = ret.fileid; + var selr2 = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret2 = $('#vdTree').jqGrid('getRowData', selr2); + var treeid = ret2.treeid; + if (fileid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=searchMain&temp=ajax', + type: 'GET', + data: {treeid:treeid}, + success: function(result){ + $('#main_folder3').val(result); + //showFile(arg); + } + }); + $.ajax({ + url: "/?adm=k2vdocsadmin_main&mode=admin&event=hist&temp=ajax", + type: "GET", + data: {fileid:fileid}, + success: function(result){ + $('#historys').html(result); + document.getElementById('history').style.display='block'; + }}); + } +} +//////////// + +//показ логу дій по файлу +function getLog() { + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var fileid = ret.fileid; + var selr2 = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret2 = $('#vdTree').jqGrid('getRowData', selr2); + var treeid = ret2.treeid; + if (fileid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=getlogs&temp=ajax', + type: 'GET', + data: {fileid:fileid}, + success: function(result){ + createElementswindow(); + $('#okwindow').hide(); + $('#cancelwindow').hide(); + $('#window').jqxWindow('open'); + $('#wnd_caption span').text('Лог файлу'); + $('#wnd_text').html(result); + $('#window').jqxWindow({height: 200, width: 730}); + } + }); + } +} + +//Проверка статуса файла +function checkStat(param) { + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + ///$('#cb_vdFiles').click(function(){ + $("#vdFiles tr.ui-state-highlight").each(function(){ + //alert($(this).attr('id')); + }); + //}) + var del = ret.del; + var statid = ret.working_user; + var fileid = ret.fileid; + if (fileid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + if ((statid !== '')||((del == '1')&&(param == 'move'))){ + document.getElementById('inwork').style.display='block'; + } else { + if ((del == '1')&&(param == 'del')){ + showModal('rep'); + } else { + showModal(param); + } + } + } +} +/////////// + +// +function getParam(param){ + setTimeout(getParams, 0); + function getParams(){ + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var selr2 = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret2 = $('#vdTree').jqGrid('getRowData', selr2); + var parent = ret2.parent_treeid; + var arr_file = []; + $("#vdFiles tr.ui-state-highlight").each(function(){ + arr_file.push($(this).attr('id')); + }); + //console.log(arr_file); + arr_file = arr_file.toString(); + // var statid = ret.working_user; + // if (statid == ''){ + // document.getElementById('inwork').style.display='block'; + // } else { + if (ret) { + var fileid = ret.fileid; + var treeid = ret2.treeid; + if (param == 'del') { + delFile(arr_file, 1, treeid); + var modal = document.getElementById("del"); + modal.style.display = "none"; + //closeModal(param); + } else if (param == 'rep'){ + delFile(arr_file, 0, treeid); + var modal = document.getElementById("rep"); + modal.style.display = "none"; + //closeModal(param); + }else if (param == 'full_del'){ + fullDelFile(arr_file, treeid); + var modal = document.getElementById("fulldel"); + modal.style.display = "none"; + //closeModal(param); + }else if (param == 'moveFolder'){ + var treeid = $('#my_folder').html(); + var to_treeid = $('#folder2').html(); + console.log(treeid); + console.log(to_treeid); + console.log(parent); + if ((treeid == to_treeid)||(to_treeid == '')){ + //alert('Переміщення не можливе!'); + $('#result').html(result.data); + document.getElementById('error').style.display='block'; + $('#error_ajax').text("Помилка при визначенні батьківського каталогу"); + + } else { + moveFolder(treeid, to_treeid); + } + var modal = document.getElementById("moveFold"); + modal.style.display = "none"; + }else if (param == 'move'){ + var treeid = $('#folder').html(); + moveFile(treeid, arr_file); + var modal = document.getElementById("move"); + modal.style.display = "none"; + } else if ((param == 'rights')) { + var wtree = 0; + var admtree = 0; + var treeid = $('#treeid').val(); + var users = $('#users').val(); + var rtree = $('#check1 input').val(); + if($('#check1 input').val() == 'true'){ + var rtree = 1 + } else { + var rtree = 0; + }; + if($('#check2 input').val() == 'true'){ + var wtree = 1 + } else { + var wtree = 0; + }; + if($('#check3 input').val() == 'true'){ + var admtree = 1 + } else { + var admtree = 0; + }; + setUserRights(users, treeid, rtree, wtree, admtree); + + } + } else { + + } + //} + } +} +///////////// + +//Поное удаление файла +function fullDelFile(arr_file){ + var main_folder = $('#m_folder').html(); + $.ajax({ + url: "/?adm=k2vdocsadmin_upload&mode=admin&event=fullDel&temp=ajax", + type: "GET", + data: {arr_file:arr_file, main_folder:main_folder}, + success: function(result){ + $('#vdFiles').jqGrid().trigger('reloadGrid'); + }}); +} +//////////// + + +function changeStatus(cur_user){ + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var user = ret.working_user; + var admtree = $('#admtree').html(); + var fileid = ret.fileid; + if((user == cur_user)||(admtree == '1')){ + $.ajax({ + url: "/?adm=k2vdocsadmin_actfile&mode=admin&event=changeStatus&temp=ajax", + type: "POST", + data: {fileid:fileid}, + success: function(res){ + $('#vdFiles').jqGrid().trigger('reloadGrid'); + + }}); + } else { + alert('Статус файлу не можливо змінити'); + } + +} + +//Удаление файла +function delFile(arr_file, param, treeid) { + $.ajax({ + url: "/?adm=k2vdocsadmin_actfile&mode=admin&event=del&temp=ajax", + type: "POST", + data: {arr_file:arr_file, act:param, treeid:treeid}, + success: function(res){ + $('#vdFiles').jqGrid().trigger('reloadGrid'); + var result = JSON.parse(res); + if(result.res === false){ + $('#result').html(result.data); + document.getElementById('error').style.display='block'; + $('#error_ajax').text(result.data); + } + }}); +} +//////////// + +//Вывод ajax ошибок +function showAjaxErr(res, check){ + if(res !== check){ + $('#error_ajax').html(res); + } +} + +//Перемещение каталога +//function moveFolder(treeid, to_treeid) { +// $.ajax({ +// url: "/?adm=k2vdocsadmin_actfile&mode=admin&event=moveFolder&temp=ajax", +// type: "POST", +// data: {treeid:treeid, to_treeid:to_treeid}, +// success: function(res){ +// $('#vdTree').jqGrid().trigger('reloadGrid'); +// var result = JSON.parse(res); +// if(result.res === false){ +// $('#result').html(result.data); +// document.getElementById('error').style.display='block'; +// $('#error_ajax').text(result.data + res); +// } +// $('#my_folder').text(); +// $('#folder2').text(); +// Expand(treeid); +// }, +// error: function (res, xhr){ +// $('#error_ajax').html(result); +// } +// }); +//} +/////////// + + + +//Перемещение файла +function moveFile(treeid, arr_file) { + + $.ajax({ + url: "/?adm=k2vdocsadmin_actfile&mode=admin&event=move&temp=ajax", + type: "POST", + data: {treeid:treeid, arr_file:arr_file}, + success: function(res){ + $('#vdFiles').jqGrid().trigger('reloadGrid'); + var result = JSON.parse(res); + if(result.res === false){ + $('#result').html(result.data); + document.getElementById('error').style.display='block'; + $('#error_ajax').text(result.data); + } + }, + error: function (res, xhr){ + $('#error_ajax').html(result); + } + }); +} +/////////// + +//function saveSettings(div){ +// +// var settings = {}; +// +// settings.wnd_width = $(window).width(); +// settings.wnd_height = $(window).height(); +// settings.grid_par = $('#'+div+'').getGridParam(); +// +// var params = JSON.stringify(settings); +// $.ajax({ +// url: "/?adm=k2vdocsadmin_main&mode=admin&event=saveSets&temp=ajax", +// type: "POST", +// data: {div:div, params:params}, +// success: function(res){ +// console.log(res); +// } +// }); +// } + + +function newParam(){ + //var param = $('#vdFiles').setGridParam({colNames:'qqq'}).trigger('reloadGrid'); + var param2 = $('#vdFiles').getGridParam(); + var param = JSON.stringify(param2.colModel); + console.log(param2); + //$('#vdFiles').jqGrid('showCol','fileid'); + } + + + + +function multiSelect(){ + + + $('#vdFiles').setGridParam({ + + + loadComplete: function () { + if ($('#vdFiles_cb').is(':visible')) { + $('#vdFiles').jqGrid('hideCol', 'cb'); + $('#vdFiles').jqGrid('setGridParam', {multiselect: false}); + } else { + $('#vdFiles').jqGrid('showCol', 'cb'); + $('#vdFiles').jqGrid('setGridParam', {multiselect: true}); + } + + } + } + ).trigger('reloadGrid'); + //$('#vdFiles').setGridParam({url:'/?adm=k2vdocsadmin_main&mode=admin&vdTree&grid_id=vdFiles&multi=1'}).trigger('reloadGrid'); + //$('#vdFiles').jqGrid('setGridParam', {multiselect: true}); + //$('#vdFiles').jqGrid().trigger('reloadGrid'); +} + +function hideTree(){ + $('#hidetree').hide(); + $('#showtree').show(); + //var newWidth = $("#vdFiles").closest(".ui-jqgrid").parent().width(); + //$("#vdFiles").jqGrid("setGridWidth", newWidth, true); + $('#vdFiles').setGridParam({url:'/?adm=k2vdocsadmin_main&mode=admin&vdTree&grid_id=vdFiles&allFiles=1'}).trigger('reloadGrid'); + $('.jqx-fill-state-pressed').click(); +} +function showTree(){ + $('#showtree').hide(); + $('#hidetree').show(); + //$('#vdFiles').setGridParam({url:'http://localhost/?adm=k2vdocsadmin_main&mode=admin&vdTree&grid_id=vdFiles'}).trigger('reloadGrid'); + $('.jqx-fill-state-pressed').click(); + $('#vdTree .ui-state-highlight').click(); +} + + +function newMyWindow1() { + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var main_dir = $('#m_folder').text(); + var histid = ret.site_history; + var filename = ret.filename; + var ext = ret.fileext; + var datecreate = ret.datecreate.slice(0, 10); + var date_arr = datecreate.split('.'); + var day = date_arr[0]; + var month = date_arr[1]; + var year = date_arr[2]; + var file_path = "/vdupload/"+main_dir+"/"+year+"/"+month+"/"+day+"/"; + var href = file_path+histid; + var d = document.documentElement, + h = 538, + w = 640, + myWindow = window.open(href, 'myWindow', 'scrollbars=1,height='+Math.min(h, screen.availHeight)+',width='+Math.min(w, screen.availWidth)+',left='+Math.max(0, ((d.clientWidth - w)/2 + window.screenX))+',top='+Math.max(0, ((d.clientHeight - h)/2 + window.screenY))); + + // абзац для Chrome + if (myWindow.screenY >= (screen.availHeight - myWindow.outerHeight)) {myWindow.moveTo(myWindow.screenX, (screen.availHeight - myWindow.outerHeight))}; + if (myWindow.screenX >= (screen.availWidth - myWindow.outerWidth)) {myWindow.moveTo((screen.availWidth - myWindow.outerWidth), myWindow.screenY)}; +} + +function showInBrowser(){ + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var main_dir = $('#m_folder').text(); + var histid = ret.site_history; + var filename = ret.filename; + var ext = ret.fileext; + var datecreate = ret.datecreate.slice(0, 10); + var date_arr = datecreate.split('.'); + var day = date_arr[0]; + var month = date_arr[1]; + var year = date_arr[2]; + var file_path = "/vdupload/"+main_dir+"/"+year+"/"+month+"/"+day+"/"; + if((ext == 'png')||(ext == 'ico')||(ext == 'jpeg')||(ext == 'jpg')||(ext == 'pdf')){ + window.open( + file_path+histid + ); + } else { + alert("Пререгляд в браузері файлу з розширенням " + ext + " неможливе!!!"); + } +} + +//Просмотр/Взять на работу файл +function showFile(act){ + var main_dir = $('#main_folder').val().trim(); + + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var fileid = ret.fileid; + var histid = ret.site_history; + + + if (fileid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + var statid = ret.working_user; + var filename = ret.filename; + var fileext = ret.fileext; + var del = ret.del; + var datecreate = ret.datecreate.slice(0, 10); + var date_arr = datecreate.split('.'); + var day = date_arr[0]; + var month = date_arr[1]; + var year = date_arr[2]; + var file_path = "vdupload/"+main_dir+"/"+year+"/"+month+"/"+day+"/"; + console.log(file_path); + if (((act == 'download')&&(statid !== ''))||(del == '1')){ + document.getElementById('inwork').style.display='block'; + } else { + if (fileid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + + var selr2 = $('#vdHistory').jqGrid('getGridParam','selrow', 'activation'); + var ret2 = $('#vdHistory').jqGrid('getRowData', selr2); + //if (histid==undefined){ + if(ret2.histid){ + var histid = ret2.histid; + } + //} + //alert(histid); + if (act == 'show'){ + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=showFile&temp=ajax', + type: 'GET', + data: {action:'file_show', fileid:fileid, histid:histid, file_path:file_path}, + success: function(result){ +// открывает файл в браузере +// window.open( +// file_path+result, +// '_blank' +// ); + if(result == 1){ + var link = document.createElement('a'); + link.setAttribute('href', '/'+file_path+histid); + + link.setAttribute('download',filename+'.'+fileext); + document.body.appendChild(link); + onload=link.click(); + document.body.removeChild(link); + } else { + document.getElementById('error2').style.display='block'; + } + + //$('#vdFiles').jqGrid().trigger('reloadGrid'); + }, + error: function (){ + document.getElementById('error2').style.display='block'; + } + }); + } + if (act == 'download'){ + if($('#edit_vdFiles').is(":visible")){ + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=downloadFile&temp=ajax', + type: 'GET', + data: {action:'file_show', fileid:fileid, histid:histid, file_path:file_path}, + success: function(result){ + if(result == 1){ + var link = document.createElement('a'); + link.setAttribute('href', '/'+file_path+histid); + link.setAttribute('download',filename+'.'+fileext); + document.body.appendChild(link); + onload=link.click(); + document.body.removeChild(link); + $('#vdFiles').jqGrid().trigger('reloadGrid'); + } else { + document.getElementById('error2').style.display='block'; + } + + }, + error: function (){ + document.getElementById('error2').style.display='block'; + } + }); + } else { + alert('Редагування файлу не можливе'); + } + + + + } + } + } + } +} +/////////// + + +//Возврат файла +function returnFile(){ + setTimeout(getArg, 0); + function getArg(){ + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + if(ret){ + var cur_user = $('#cur_user').html(); + var work_user = ret.working_user; + + if ((work_user !== cur_user)){ + document.getElementById('inwork').style.display='block'; + } else { + if($('#edit_vdFiles').is(":visible")){ + var fileid = ret.fileid; + var datecreate = ret.datecreate; + $('#id_file').val(fileid); + $('#datecreate').val(datecreate); + showModal('add'); + } else { + alert('Редагування файлу не можливе'); + } + } + } + } + +} +////////// + + +function uploadArchFolder(){ + + createElementswindow(); + $('#window').jqxWindow('open'); + $('#okwindow').hide(); + $('#cancelwindow').hide(); + $('#wnd_caption span').text('Завантаження архівом'); + $('#wnd_text').html('
\n\ + \n\ +обробка файлів\n\ + \n\ + '); + + $('#window').jqxWindow({height: 200, width: 330}); + + $('#input_folder_arch').on('change',function(event){ + var i = 0, len = this.files.length, temp = '~', close, img, reader, file, md5_file, text, total_size = 0; + + var main_folder = $('#m_folder').html(); + + $('#result').html(''); + + var arr_ext = getExtArr(); + console.log(arr_ext); + + for ( i=0; i < len; i++ ) { + file = this.files[i]; + arg = file.name.toLowerCase(); + var arr_file = arg.split('.'); + var ext = arr_file[arr_file.length - 1]; + if(ext !== 'zip'){ + alert('Можливо завантажити лише архів!!!'); + } else { + reader = new FileReader(); + reader.onloadend = function (e) { + TransferCompleteCallback(e.target.result); + }; + reader.readAsDataURL(file); + var selr2 = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret2 = $('#vdTree').jqGrid('getRowData', selr2); + var treeid = ret2.treeid; + + formdata.append("treeid", treeid); + //formdata.append("datecreate", datecreate); + //formdata.append("fileid", fileid); + formdata.append("files[]", file); + formdata.append("main_folder", main_folder); + formdata.append("data", result); + } + total_size = total_size + file.size; + } + }) + +} + + +function showWnd(treename, arg){ + setTimeout(getAjaxMainFolderFile, 100); + setTimeout(openImg, 1000); + + function openImg(){ + $('#preview').hide(); + if(arg =='see'){ + + $('#okwindow').hide(); + $('#cancelwindow').hide(); + $('#wnd_text').text(wnd_text); + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var id = ret.fileid; + var filename = ret.filename; + var elem = $('tr#'+id+' .anone1 img'); + var datecreate = $(elem).attr('datecreate'); + //var datecreate = ret.dateupdate;//$(elem).attr('dateupdate'); + var datecreate = datecreate.slice(0, 10); + var date_arr = datecreate.split('-'); + var day = date_arr[2]; + var month = date_arr[1]; + var year = date_arr[0]; + var main_dir = $('#m_folder').html(); + var main_dir = $.trim(main_dir); + console.log(main_dir); + var ext = $(elem).attr('ext'); + //var hist = $(elem).attr('hist'); + var hist = ret.site_history;//$(elem).attr('hist'); + var file_path = '/vdupload/'+main_dir+'/'+year+'/'+month+'/'+day+'/'+hist; + if((ext == 'png')||(ext == 'ico')||(ext == 'jpeg')||(ext == 'jpg')){ + createElementswindow(); + $('#window').jqxWindow('open'); + $('#wnd_caption span').text('Перегляд зображення: '+filename+'.'+ext); + $('#wnd_text').html(''); + $('#img_show').attr('src', file_path); + $('#window').jqxWindow({height: 650, width: 650}); + } else if((ext == 'mp4')||(ext == 'mov')||(ext == 'ogg')||(ext == 'avi')){ + var video = $("video"), + pauseButton = $("#pause"); + pauseButton.bind('click', function() { + if (video.get(0).paused) { + video.get(0).play(); + pauseButton.html("◼"); + } else { + video.get(0).pause(); + pauseButton.html("►"); + } + }); + createElementswindow(); + $('#window').jqxWindow('open'); + $('#wnd_caption span').text('Перегляд відео: '+filename+'.'+ext); + $('#wnd_text').html('
\n\ + \n\ +'); + $('#video_show').attr('src', file_path); + $('#window').jqxWindow({height: 430, width: 630}); + } else if(ext == 'pdf'){ + $.ajax({ + url: "/?adm=k2vdocsadmin_upload&mode=admin&event=ceneratetmp&temp=ajax", + type: "POST", + data: {file_path:file_path, ext:ext, filename:filename}, + success: function(result){ + createElementswindow(); + $('#window').jqxWindow('open'); + $('#wnd_caption span').text('Перегляд файлу: '+filename+'.'+ext); + $('#wnd_text').html('\n\ + \n\ +'); + //$('#video_show').attr('src', "https://view.officeapps.live.com/op/embed.aspx?src=https://pharmway.ua"+file_path); + $('#window').jqxWindow({height: 850, width: 1366}); + maximize(); + } + }); + } else if((ext == 'doc')||(ext == 'docx')||(ext == 'xls')||(ext == 'xlsx')){ + + $.ajax({ + url: "/?adm=k2vdocsadmin_upload&mode=admin&event=ceneratetmp&temp=ajax", + type: "POST", + data: {file_path:file_path, ext:ext, filename:filename}, + success: function(result){ + createElementswindow(); + $('#window').jqxWindow('open'); + $('#wnd_caption span').text('Перегляд файлу: '+filename+'.'+ext); + $('#wnd_text').html('\n\ + \n\ +'); + //$('#video_show').attr('src', "https://view.officeapps.live.com/op/embed.aspx?src=https://pharmway.ua"+file_path); + $('#window').jqxWindow({height: 850, width: 1366}); + + maximize(); + } + }); + } + + } else { + createElementswindow(); + $('#window').jqxWindow('open'); + var wnd_text = treename; + $('#wnd_text').text(wnd_text); + } + } +} + +function maximize(){ + var data = $('#window').attr('style'); + var data2 = $("#wnd_body").attr("style"); + var width = $(window).width(); + var height = $(window).height(); + $("#wnd_body").attr("style", ""); + //$(".btnresize").html(" "); + $("#window").css({"top": "0", "left": "0"}) + //CKEDITOR.config.height = '800px'; + setTimeout(function(){ + $('#window').jqxWindow('resize', width, height); + //$('#window').jqxWindow('resize', width, height); + //$('#cke_full_content').css('height', 500); + //$('.cke_reset').css('height', 400); + //CKEDITOR.config.height = '500px'; + }, 100); +} + +function showLink(treename, arg){ + setTimeout(getAjaxMainFolderFile, 100); + setTimeout(openLInk, 1000); + function openLInk(){ + $('#preview').hide(); + + $('#okwindow').hide(); + $('#cancelwindow').hide(); + $('#wnd_text').text(wnd_text); + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var id = ret.fileid; + var filename = ret.filename; + var elem = $('tr#'+id+' .anone1 img'); + var datecreate = $(elem).attr('datecreate'); + var datecreate = datecreate.slice(0, 10); + var date_arr = datecreate.split('-'); + var day = date_arr[2]; + var month = date_arr[1]; + var year = date_arr[0]; + var main_dir = $('#m_folder').html(); + var main_dir = $.trim(main_dir); + console.log(main_dir); + var ext = $(elem).attr('ext'); + var hist = $(elem).attr('hist'); + var file_path = '/vdupload/'+main_dir+'/'+year+'/'+month+'/'+day+'/'+hist; + window.open('/comp/k2vdoc_share/temp/clear/hist/'+hist+'', '_blank'); + // createElementswindow(); + // $('#window').jqxWindow('open'); + // $('#wnd_caption span').text('Послилання на файл: '+filename+'.'+ext); + // $('#wnd_text').html('Перейти
'); + // $('#window').jqxWindow({height: 150, width: 650}); + + + } +} + + +function markDelFold(){ + var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdTree').jqGrid('getRowData', selr); + var treeid = ret.treeid; + var treename = ret.treename; + var main_folder = $('#m_folder').html(); + showWnd(treename); + $('#wnd_caption').text('Видалення каталогу'); + $( "#okwindow" ).click(function() { + $.ajax({ + url: "/?adm=k2vdocsadmin_actfile&mode=admin&event=delFold&temp=ajax", + type: "GET", + data: {treeid:treeid, main_folder:main_folder}, + success: function(result){ + $( "#okwindow" ).unbind('click'); + $('#vdTree').jqGrid().trigger('reloadGrid'); + Expand('gbox_vdTree', treeid); + } + }); + }) +} + + +function delFold(){ + var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdTree').jqGrid('getRowData', selr); + var treeid = ret.treeid; + var treename = ret.treename; + var main_folder = $('#m_folder').html(); + if (treeid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + showWnd(treename); + $('#wnd_caption span').text('Повне видалення каталогу'); + $('#okwindow').show(); + $('#cancelwindow').show(); + $( "#okwindow" ).click(function() { + $.ajax({ + url: "/?adm=k2vdocsadmin_upload&mode=admin&event=fullDelFold&temp=ajax", + type: "GET", + data: {treeid:treeid, main_folder:main_folder}, + success: function(result){ + $( "#okwindow" ).unbind('click'); + $('#vdTree').jqGrid().trigger('reloadGrid'); + Expand('gbox_vdTree', treeid); + } + }); + }) + } +} + +function archFile(){ + var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdTree').jqGrid('getRowData', selr); + var treeid = ret.treeid; + var treename = ret.treename; + var main_folder = $('#m_folder').html(); + $.ajax({ + url: "/?adm=k2vdocsadmin_upload&mode=admin&event=arch&temp=ajax", + type: "GET", + data: {treeid:treeid, main_folder:main_folder, treename:treename}, + success: function(result){ + var arch_path = '/vdarchive/'+treename+'.zip'; + window.open( + arch_path, + '_blank' + ); + $('#vdTree').jqGrid().trigger('reloadGrid'); + Expand('gbox_vdTree', treeid); + } + }); +} + +function downloadFolder(){ + var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdTree').jqGrid('getRowData', selr); + var treeid = ret.treeid; + var treename = ret.treename; + var main_folder = $('#m_folder').html(); + console.log(main_folder); + $.ajax({ + url: "/?adm=k2vdocsadmin_upload&mode=admin&event=downloadlocal&temp=ajax", + type: "GET", + data: {treeid:treeid, main_folder:main_folder, treename:treename}, + success: function(res){ + var obj = JSON.parse(res); + console.log(obj) + //start_countdown(); + generateResult(obj); + + //clearinterval(); + } + }); +} + +var interval = 0; + +function barAnim(){ + interval += 5; + $('#bar3').val(interval).text('Завантажено ' + interval + '%'); + if ( interval == 25 || interval == 55 || interval == 85 ) { + return setTimeout(barAnim, 1500); + } + if (interval == 100) { + clearinterval(); + } + return interval >= 100 || setTimeout(barAnim, 50); +} + + +function start_countdown(){ + document.getElementById('downloadlocal').style.display='block'; + var progressBar3 = $('#bar3'); + progressBar3.show(); + setTimeout(barAnim, 50); +} + + +function clearinterval (){ + var progressBar3 = $('#bar3'); + progressBar3.hide(); + document.getElementById('downloadlocal').style.display='none'; +} + +async function generateResult(obj) { + const directoryHandle = await window.showDirectoryPicker(); + const newDirectoryHandle = await directoryHandle.getDirectoryHandle(obj.treename, {create: true}); + await start_countdown(); + await createRecurs(obj, newDirectoryHandle); + //await clearinterval(); +} + +function createRecurs(obj, newDirectoryHandle){ + if (obj.files) { + Object.entries(obj.files).forEach(async([key, value]) => { + const newFileHandle = await newDirectoryHandle.getFileHandle(value.filename+'.'+value.fileext, { create: true }); + // const writable = await newFileHandle.createWritable(); + // await writable.write(value.contents); + // await writable.close(); + writeURLToFile(newFileHandle, value.url); + }) + } + if (obj.catalogs) { + Object.entries(obj.catalogs).forEach(async([key, value]) => { + const newDirectoryHandle2 = await newDirectoryHandle.getDirectoryHandle(value.treename, {create: true}); + await createRecurs(value, newDirectoryHandle2); + }) + } +} + +async function writeURLToFile(fileHandle, url) { + // Create a FileSystemWritableFileStream to write to. + const writable = await fileHandle.createWritable(); + // Make an HTTP request for the contents. + const response = await fetch(url); + // Stream the response into the file. + await response.body.pipeTo(writable); + // pipeTo() closes the destination pipe by default, no need to close it. +} + +function showModal(param) { + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var fileid = ret.fileid; + var filename = ret.filename; + var fileext = ret.fileext; + var del = ret.del; + if ((param=='del')||(param=='move')||(param=='rep')){ + + if (fileid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + if(del == 1){ + $('#rep_file').html(filename+'.'+fileext); + document.getElementById(param).style.display='block'; + } else { + $('#del_file').html(filename+'.'+fileext); + document.getElementById(param).style.display='block'; + } + $('#del_file').html(filename+'.'+fileext); + document.getElementById(param).style.display='block'; + if (param=='move') { + var main_folder = $('#m_folder').html(); + $.ajax({ + url: "/?adm=k2vdocsadmin_main&mode=admin&event=getTree&temp=ajax", + type: "GET", + data: {main_folder:main_folder}, + success: function(result){ + $('#move_file').html(result); + } + }); + } + } + }else if((param=='full_del')){ + $('#fulldel_file').html(filename+'.'+fileext); + document.getElementById('fulldel').style.display='block'; + }else if((param=='role')){ + document.getElementById(param).style.display='block'; + }else if((param=='add2')){ + var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdTree').jqGrid('getRowData', selr); + var treeid = ret.treeid; + if (treeid==undefined){ + document.getElementById('undefined').style.display='block'; + } else { + var browser = navigator.userAgent; + if(browser.indexOf('OPR/')+1) { + preUpload(param); + } else if(browser.indexOf('Chrome/')+1){ + preUpload(param); + } else if(browser.indexOf('Firefox/')+1){ + if(browser.substr(-4, 2)<54){ + document.getElementById('browser').style.display='block'; + } else { + preUpload(param); + } + } else if(browser.indexOf('InfoPath.')+1){ + document.getElementById('browser').style.display='block'; + } else { + } + } + + } else { + preUpload(param); + } + } + + function preUpload(param){ + document.getElementById(param).style.display='block'; + console.log(param); + var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdTree').jqGrid('getRowData', selr); + var treeid = ret.treeid; + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=searchMain&temp=ajax', + type: 'GET', + data: {treeid:treeid}, + success: function(result){ + $('#main_folder').val(result); + $('#main_folder2').val(result); + } + }); + } + + +function controlFile(wfile){ + var ids = jQuery('#vdFiles').jqGrid('getDataIDs'); + if (wfile == 0){ + $('span.ui-icon-pencil').hide(); + for (var x = 0; x < ids.length; x++) { + var i = x; + var row = $('#vdFiles').getRowData(ids[x]); + var rowid = ids[x]; + jQuery('tr#'+rowid).addClass('not-editable-row'); + jQuery('tr#'+rowid+' td[aria-describedby$="_act"]').html('-'); + } + } else{ + $('span.ui-icon-pencil').show(); + } +} + +function checkFile(arg){ + var arr_file = arg.split('.'); + var res = 1; + var temp = '~'; + + if(arg.charAt(0)===temp){ + res = 'temp'; + + } else { + var ext = arr_file[arr_file.length - 1]; + + var res = $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=checkFile&temp=ajax', + type: 'GET', + data: {ext:ext}, + dataType: "text", + async: false, + success: function(result){ + result; + }, + error: function(){alert('Problem');} + }).responseText; + + } + return res; +} + +$( document ).ready(function() { + $('td[title="PDF"]').hide(); + $('#files').hide(); + + + +//Загрузка файла + var input = document.getElementById("input_files"); + var formdata = false; + if (window.FormData) { + formdata = new FormData(); + $("#btn_submit").hide(); + $("#loading_spinner").hide(); + } + + + function TransferCompleteCallback(content){ + + } + $('#input_files').on('change',function(event){ + + $('#input_files').prop('disabled',true); + var i = 0, len = this.files.length, temp = '~', close, img, reader, file, md5_file, text, total_size = 0; + var fileid = $('#id_file').val(); + var datecreate = $('#datecreate').val(); + var main_folder = $('#main_folder').val(); + //alert(len); + $('#result').html(''); + + var arr_ext = getExtArr(); + //console.log(arr_ext); + //$("#loading_spinner").show(); + //var folder = $("#typedoc").val(); + //var MD5 = function(s){function L(k,d){return(k<>>(32-d))}function K(G,k){var I,d,F,H,x;F=(G&2147483648);H=(k&2147483648);I=(G&1073741824);d=(k&1073741824);x=(G&1073741823)+(k&1073741823);if(I&d){return(x^2147483648^F^H)}if(I|d){if(x&1073741824){return(x^3221225472^F^H)}else{return(x^1073741824^F^H)}}else{return(x^F^H)}}function r(d,F,k){return(d&F)|((~d)&k)}function q(d,F,k){return(d&k)|(F&(~k))}function p(d,F,k){return(d^F^k)}function n(d,F,k){return(F^(d|(~k)))}function u(G,F,aa,Z,k,H,I){G=K(G,K(K(r(F,aa,Z),k),I));return K(L(G,H),F)}function f(G,F,aa,Z,k,H,I){G=K(G,K(K(q(F,aa,Z),k),I));return K(L(G,H),F)}function D(G,F,aa,Z,k,H,I){G=K(G,K(K(p(F,aa,Z),k),I));return K(L(G,H),F)}function t(G,F,aa,Z,k,H,I){G=K(G,K(K(n(F,aa,Z),k),I));return K(L(G,H),F)}function e(G){var Z;var F=G.length;var x=F+8;var k=(x-(x%64))/64;var I=(k+1)*16;var aa=Array(I-1);var d=0;var H=0;while(H >>29;return aa}function B(x){var k="",F="",G,d;for(d=0;d<=3;d++){G=(x>>>(d*8))&255;F="0"+G.toString(16);k=k+F.substr(F.length-2,2)}return k}function J(k){k=k.replace(/rn/g,"n");var d="";for(var F=0;F 127)&&(x<2048)){d+=String.fromCharCode((x>>6)|192);d+=String.fromCharCode((x&63)|128)}else{d+=String.fromCharCode((x>>12)|224);d+=String.fromCharCode(((x>>6)&63)|128);d+=String.fromCharCode((x&63)|128)}}}return d}var C=Array();var P,h,E,v,g,Y,X,W,V;var S=7,Q=12,N=17,M=22;var A=5,z=9,y=14,w=20;var o=4,m=11,l=16,j=23;var U=6,T=10,R=15,O=21;s=J(s);C=e(s);Y=1732584193;X=4023233417;W=2562383102;V=271733878;for(P=0;P filemaxsize) { + var alowedsize = filemaxsize/1000000; + document.getElementById('add').style.display='none'; + cleanAdd(); + $('#loadFile').hide(); + //progressBar.hide(); + + document.getElementById('error').style.display='block'; + $('#error_ajax').text("Об'єм завантаження перевищує встановлений ліміт - "+alowedsize.toFixed(1)+"Mb!"); + return; + } else if(upload_size > 4){ + //alert("Об'єм завантаження("+upload_size+" Гб) перевищує встановлений ліміт(4 Гб)!!!"); + document.getElementById('add').style.display='none'; + document.getElementById('error').style.display='block'; + $('#error_ajax').text("Об'єм завантаження("+upload_size+" Гб) перевищує встановлений ліміт(4 Гб)!!!"); + cleanAdd(); + $('#loadFile').hide(); + //progressBar.hide(); + return; + } else { + if ( window.FileReader ) { + if(len==1){ + reader = new FileReader(); + reader.onloadend = function (e) { + TransferCompleteCallback(e.target.result); + }; + } + // readFile(file, function(e) { + // }); + // function readFile(file, callback){ + // reader.onload = callback + // //reader.readAsText(file); + // reader.readAsDataURL(file); + // } + + if (formdata && control !== 'temp'&& control !== 'not_ext') { + if(len==1){ + var selr2 = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret2 = $('#vdTree').jqGrid('getRowData', selr2); + var treeid = ret2.treeid; + formdata.append("treeid", treeid); + /*formdata.append("datecreate", datecreate);*/ + formdata.append("fileid", fileid); + formdata.append("files[]", file); + formdata.append("main_folder", main_folder); + formdata.append("data", result); + } + var progressBar = $('#bar'); + $.ajax({ + xhr: function() { + var xhr = new window.XMLHttpRequest(); + progressBar.show(); + $('#loadFile').show(); + //console.log(xhr); + xhr.upload.addEventListener('progress', function(evt){ // добавляем обработчик события progress (onprogress) + if (evt.lengthComputable) { // если известно количество байт + // высчитываем процент загруженного + var percentComplete = Math.ceil(evt.loaded / evt.total * 100); + // устанавливаем значение в атрибут value тега progress + // и это же значение альтернативным текстом для браузеров, не поддерживающих <progress> + progressBar.val(percentComplete).text('Загружено ' + percentComplete + '%'); + $('#loadFile').text('Завантажено ' + (evt.loaded/1000000).toFixed(2) + ' Мб'); + //showBars(); + if (percentComplete == 100){ + $("#loading_spinner").show(); + } + } + }, false); + return xhr; + + }, + url: "/?adm=k2vdocsadmin_upload&mode=admin&event=upload&temp=ajax", + type: "POST", + data: formdata, + processData: false, + contentType: false, // this is important!!! + success: function (res, xhr){ + if(res==0){ + document.getElementById('error').style.display='block'; + progressBar.hide(); + $('#loadFile').hide(); + + $('#id_file').val(); + $('#datecreate').val(); + document.getElementById('add').style.display='none'; + cleanAdd(); + } else { + var result = JSON.parse(res); + $("#loading_spinner").hide(); + $('#input_files').val('').prop('disabled',false); + if(result.res === true){ + var buf = ' '; + for(var x=0; x
'; + $('#result').html('Files uploaded:'+buf); + document.getElementById('success').style.display='block'; + //$('#error_ajax').text(result.data + res); + } else { + $('#result').html(result.data); + document.getElementById('error').style.display='block'; + $('#error_ajax').text(result.data); + } + // reset formdata + formdata = false; + formdata = new FormData(); + //closeModal('add'); + document.getElementById('closeMod').click(); + $('#vdFiles').jqGrid().trigger('reloadGrid'); + $('#result').hide(); + $('#Button4').hide(); + progressBar.hide(); + $('#loadFile').hide(); + + $('#id_file').val(); + $('#datecreate').val(); + + cleanAdd(); + } + + console.log(res); + + }, + error: function (res, exception, jqXHR, textStatus, errorThrown ){ + alert('Exception:'+errorThrown ); + var result = JSON.parse(res); + console.log(result); + document.getElementById('add').style.display='none'; + cleanAdd(); + progressBar.hide(); + $('#loadFile').hide(); + document.getElementById('error').style.display='block'; + $('#error_ajax').text(result.data); + progressBar2.val(''); + if (res.readyState == 0) { + var txt_err = 'net::ERR_CONNECTION_RESET'; + } else if (res.readyState == 4){ + var txt_err = 'HTTP error'; + } else { + var txt_err = 'Код помилки'+res.readyState; + } + + } + + }); + } + } + } + } + return false; + }); + ////////////// + + function getExtArr(){ + var res = $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=getExtArr&temp=ajax', + type: 'GET', + dataType: "text", + async: false, + success: function(result){ + result; + }, + error: function(){alert('Problem');} + }).responseText; + + return res; +} + + + + //Загрузка каталога + $('#input_files2').on('change',function(event){ + + $('#input_files2').prop('disabled',true); + var i = 0, len = this.files.length, temp = '~', img, cont, control, reader, file, total_size = 0; + var fileid = $('#id_file2').val(); + var main_folder = $('#main_folder2').val(); + $('#result2').html(''); + + var arr_ext = getExtArr(); + //console.log(arr_ext); + for ( ; i < len; i++ ) { + file = this.files[i]; + arg = file.name.toLowerCase(); + var arr_file = arg.split('.'); + var ext = arr_file[arr_file.length - 1]; + //console.log(arg); +// if((arr_file[0].indexOf( 'thumbs' ) != -1)==true){ +// i++; +// file = this.files[i]; +// arg = file.name.toLowerCase(); +// var arr_file = arg.split('.'); +// var ext = arr_file[arr_file.length - 1]; +// } + + if((arg.charAt(0)===temp)){ + control = 'temp'; + } else { + if((arr_ext.indexOf( '|'+ext+'|' ) != -1)==true){ + control = 1; + } else { + control = 0; + arr_ext = arr_ext + ext + '|'; + } + } + + if ((control === 'temp')){ + //cleanAdd(); + //document.getElementById('closeMod').click(); + } else if(control == 0){ + var arr_file = file.name.split('.'); + //var ext = arr_file[arr_file.length - 1]; + $('#exte').html(file.name); + //document.getElementById('add').style.display='none'; + //document.getElementById('not_ext').style.display='block'; + //$( "#raz" ).click(function() { + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=insExt&temp=ajax', + type: 'GET', + data: {ext:ext}, + success: function(result){ + arr_ext = arr_ext + ext + '|'; + } + }); + + if ( window.FileReader ) { + reader = new FileReader(); + reader.onloadend = function (e) { + TransferCompleteCallback(e.target.result); + }; + reader.readAsDataURL(file); + } + if (formdata) { + var progressBar2 = $('#bar2'); + progressBar2.show(); + $('#loadFile2').show(); + var selr2 = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret2 = $('#vdTree').jqGrid('getRowData', selr2); + var treeid = ret2.treeid; + var file_path = file['webkitRelativePath']; + formdata.append("treeid", treeid); + formdata.append("fileid", fileid); + formdata.append("files[]", file); + formdata.append("main_folder", main_folder); + formdata.append("file_path[]", file_path); + } + } else { + + if ( window.FileReader ) { + reader = new FileReader(); + reader.onloadend = function (e) { + TransferCompleteCallback(e.target.result); + }; + reader.readAsDataURL(file); + } + if (formdata) { + var progressBar2 = $('#bar2'); + progressBar2.show(); + var selr2 = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret2 = $('#vdTree').jqGrid('getRowData', selr2); + var treeid = ret2.treeid; + var file_path = file['webkitRelativePath']; + formdata.append("treeid", treeid); + formdata.append("fileid", fileid); + formdata.append("files[]", file); + formdata.append("main_folder", main_folder); + formdata.append("file_path[]", file_path); + } +// } else { +// $("#loading_spinner").hide(); +// $('#input_files').val('').prop('disabled',false); +// //alert(file.name+' is not a PDF'); +// } + } + total_size = total_size + file.size; + } + // + startUpload2(treeid); + + function startUpload2(treeid){ + var upload_size; + + upload_size = (total_size/1000000000).toFixed(2); + console.log(upload_size); + var filemaxsize = +$("#filemaxsize").val(); + if (total_size > filemaxsize) { + var alowedsize = filemaxsize/1000000; + document.getElementById('add2').style.display='none'; + cleanAdd(); + $('#loadFile2').hide(); + //progressBar2.hide(); + document.getElementById('error').style.display='block'; + $('#error_ajax').text("Об'єм завантаження перевищує встановлений ліміт - "+alowedsize.toFixed(1)+"Mb!"); + return; + } else if(upload_size > 4){ + document.getElementById('add2').style.display='none'; + //alert("Об'єм завантаження("+upload_size+" Гб) перевищує встановлений ліміт(4 Гб)!!!"); + document.getElementById('add').style.display='none'; + document.getElementById('error').style.display='block'; + $('#error_ajax').text("Об'єм завантаження("+upload_size+" Гб) перевищує встановлений ліміт(4 Гб)!!!"); + cleanAdd(); + $('#loadFile2').hide(); + //progressBar2.hide(); + return; + } else { + if (formdata) { + $.ajax({ + xhr: function() { + var xhr = new window.XMLHttpRequest(); + console.log(xhr); + + xhr.upload.addEventListener('progress', function(evt){ // добавляем обработчик события progress (onprogress) + if (evt.lengthComputable) { // если известно количество байт + // высчитываем процент загруженного + var percentComplete = Math.ceil(evt.loaded / evt.total * 100); + // устанавливаем значение в атрибут value тега progress + // и это же значение альтернативным текстом для браузеров, не поддерживающих <progress> + progressBar2.val(percentComplete).text('Завантажено ' + percentComplete + '%'); + $('#loadFile2').text('Завантажено ' + (evt.loaded/1000000).toFixed(2) + ' Мб' ); + + if (percentComplete == 100){ + $("#loading_spinner2").show(); + } + //showBars(); + } + }, false); + return xhr; + + }, + url: "/?adm=k2vdocsadmin_upload&mode=admin&event=uploadFolder&temp=ajax", + type: "POST", + data: formdata, + processData: false, + contentType: false, // this is important!!! + success: function (res){ + if(res==0){ + document.getElementById('error').style.display='block'; + progressBar.hide(); + $('#loadFile2').hide(); + + $('#id_file').val(); + $('#datecreate').val(); + document.getElementById('add2').style.display='none'; + cleanAdd(); + } else { + + /*try{ */ + + console.log(res); + var result = JSON.parse(res); + /*} catch (e) { + + $('#error_title').text('Ошибка обработки Ajax-запроса!'); + + $('#result').html('Не получается декодировать JSON'); + $('#error_ajax').text('Не получается декодировать JSON'); + + document.getElementById('error').style.display='block'; + + return; + } */ + + + $("#loading_spinner2").hide(); + $('#input_files2').val('').prop('disabled',false); + if(result.res === true){ + var buf = ''+result.data[x]+''; + } + buf += ' '; + for(var x=0; x
'; + $('#result').html('Files uploaded:'+buf); + document.getElementById('success').style.display='block'; + } else { + + + /*err_dialog('mytitle', 'My Message...');*/ + + $('#error_title').text('Ошибка загрузки каталога!'); + + $('#result').html(result.data); + $('#error_ajax').text(result.data); + + document.getElementById('error').style.display='block'; + } + // reset formdata + formdata = false; + formdata = new FormData(); + //closeModal('add2'); + $('#vdFiles').jqGrid().trigger('reloadGrid'); + $('#vdTree').jqGrid().trigger('reloadGrid', [{current:true}]); + Expand('gbox_vdTree', treeid); + $('#result2').hide(); + document.getElementById('add2').style.display='none'; + $('#Button4').hide(); + progressBar2.hide(); + $('#loadFile2').hide(); + progressBar2.val(''); + $('#add2_form')[0].reset(); + cleanAdd(); + } + }, + error: function (res, xhr){ + document.getElementById('add2').style.display='none'; + console.log(res); + console.log(xhr); + cleanAdd(); + progressBar2.hide(); + $('#loadFile2').hide(); + + if (res.readyState == 0) { + var txt_err = 'net::ERR_CONNECTION_RESET'; + } else if (res.readyState == 4){ + var txt_err = 'HTTP error'; + } else { + var txt_err = 'Код помилки'+res.readyState; + } + + $('#errcode').text(txt_err); + progressBar2.val(''); + document.getElementById('error').style.display='block'; + } + }); + } + } + } + return false; + }); + +}); + +function getFileW(){ + var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdTree').jqGrid('getRowData', selr); + var treeid = ret.treeid; + if (treeid !== undefined){ + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=getFolderRight&temp=ajax', + type: 'GET', + data: {treeid:treeid}, + success: function(result){ + if(result){ + var rights = JSON.parse(result); + $('#wfile').text(rights['wfile']); + $('#admtree').text(rights['admtree']); + var admtree = rights['admtree']; + var wtree = rights['wtree']; + var wfile = rights['wfile']; +// var roleid = $('#cur_roleid').text(); +// //var rmyfile = rights['rmyfile']; +// if((roleid !== '-1')&&(rmyfile == 1)){ +// var cur_user = $('#cur_user').text(); +// showMyFile(cur_user); +// } + editProp(wfile); + if (admtree == 1){ + $('#add_vdTree').show(); + $('#moves_fold').show(); + $('#adds2').show(); + $('#rights').show(); + $('#dels_fold').show(); + } else { + $('#add_vdTree').hide(); + $('#moves_fold').hide(); + $('#adds2').hide(); + $('#rights').hide(); + $('#dels_fold').hide(); + } + if (wtree == 1){ + $('#edit_vdTree').show(); + $('#add_vdTree').show(); + $('#dels_fold').show(); + } else { + $('#edit_vdTree').hide(); + $('#add_vdTree').hide(); + $('#dels_fold').hide(); + } + if (wfile == 1){ + $('#edit_vdFiles').show(); + $('#add_vdFiles').show(); + $('#adds').show(); + $('#dels').show(); + $('#moves').show(); + } else { + $('#edit_vdFiles').hide(); + $('#add_vdFiles').hide(); + $('#adds').hide(); + $('#dels').hide(); + $('#moves').hide(); + } + + } + }, + error: function(){alert('Помилка отримання прав');} + }); + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=searchMain&temp=ajax', + type: 'GET', + data: {treeid:treeid}, + success: function(result){ + $('#m_folder').text(result); + } + }); + + } + $('#vdTree tr').unbind('click'); +} + +function showMyFile(cur_user){ + + var ids = jQuery('#vdFiles').jqGrid('getDataIDs'); + for (var x = 0; x < ids.length; x++) { + var i = x; + var row = $('#vdFiles').getRowData(ids[x]); + var rowid = ids[x]; + if (row.usercreate !== cur_user) + { + //jQuery('#vdFiles tr.jqgrow:eq('+i+')').css('background','inherit').css({'background-color':'#ef7f7f'}); + jQuery('#vdFiles tr.jqgrow:eq('+i+')').css({display:"none"}); + } + } +} + +function hideDels(){ + var ids = jQuery('#vdFiles').jqGrid('getDataIDs'); + + for (var x = 0; x < ids.length; x++) { + var i = x; + var row = $('#vdFiles').getRowData(ids[x]); + var rowid = ids[x]; + if (row.del == '1') + { + + jQuery('#vdFiles tr.jqgrow:eq('+i+')').fadeOut(); + } + } + $('#hideDels').hide(); + $('#showDels').show(); + +} + +function showDels(){ + var ids = jQuery('#vdFiles').jqGrid('getDataIDs'); + + for (var x = 0; x < ids.length; x++) { + var i = x; + var row = $('#vdFiles').getRowData(ids[x]); + var rowid = ids[x]; + if (row.del == '1') + { + + jQuery('#vdFiles tr.jqgrow:eq('+i+')').fadeIn(); + } + } + $('#showDels').hide(); + $('#hideDels').show(); + +} + +function editProp(arg){ + + var wfile = arg; + //var wfile = $('#wfile').html(); + var ids = jQuery('#vdFiles').jqGrid('getDataIDs'); + for (var x = 0; x < ids.length; x++) { + var i = x; + var row = $('#vdFiles').getRowData(ids[x]); + var rowid = ids[x]; + + if (wfile == 0){ + jQuery('tr#'+rowid).addClass('not-editable-row'); + jQuery('tr#'+rowid+' td[aria-describedby$=\'_act\']').html('-'); + } + + } +} +function clickArrow(div, item){ + var elem = '#'+div+' '+'#'+item+' div.tree-plus'; + console.log(elem); + $(elem).trigger("click"); +} + +function clickRow(div, arg){ + var elem = '#'+div+' '+'#'+arg; + $(elem).trigger("click"); + //$(elem).hide(); +} + + +function hoverRow(div, arg){ + var elem = '#'+div+' '+'#'+arg; + $(elem).addClass("ui-state-hover"); + //$(elem).hide(); +} + + +function Expand(div, treeid) { + + if (treeid !== undefined){ + var elem = '#'+div; + var count = 0; + //$(elem).hide(); + $.ajax({ + url: '/?adm=k2vdocsadmin_main&mode=admin&event=folderPath&temp=ajax', + type: 'GET', + data: {treeid:treeid}, + success: function(result){ + var res = JSON.parse(result); + var arr = res.reverse(); + arr.forEach(function(item, i, arr){ + count = i*2000+2000; + setTimeout(clickArrow, count, div, item); + + }); + setTimeout(hoverRow, count+3000, div, treeid); + + //console.log(arr);// 50793ed7e6114d1eb5fa9b4dd3208fb9 + } + }); + } + +} + + +//funcion testExpand(){ + // var grid = $("#vdTree"); + + // reset default values of filters +// var filters = grid[0].p.postData; +// console.log(filters); +// for(var i in filters.rules) +// { +// var f = filters.rules[i].field; +// var d = filters.rules[i].data; +// $('input[id="gs_'+f+'"]').val(d); +// } +// +// $.extend(grid[0].p.postData,{filters:JSON.stringify({"groupOp":"AND","rules":[{"field":"size_file","op":"cn","data":"25"}]})}); +// grid.trigger("reloadGrid",[{page:1}]); +// record.expanded = 'true'; + //var rows = $("#vdTree").jqGrid('getRootNodes'); +// var ids = $('#vdTree').jqGrid('getDataIDs'); +// $("#vdTree").jqGrid('expandNode', ids[3]); +// ids[3] = true; +// $('#c8c2b9e35aeca85dd4ecba836dfeecba div.tree-plus').trigger("click"); +// $('#e7f12d3bd65ef4b2b2605730f7967c9b div.tree-plus').trigger("click"); + //collapseRow + // jQuery(”#grid_id”).expandNode(rowid); + //$("#vdTree").jqGrid('expandNode', ids['c8c2b9e35aeca85dd4ecba836dfeecba']); +// //$('#e7f12d3bd65ef4b2b2605730f7967c9b div.tree-plus').click(); +// $("#vdTree").jqGrid('expandNode'); +// $("#vdTree").jqGrid('expandRow'); + +// $("#vdTree").jqGrid('expandNode', ids[1]); +// $("#vdTree").jqGrid('expandRow', ids[1]); + //for (var i = 0; i < ids.length; i++){ + //var row = $('#vdTree').getRowData(ids[i]); + //var rowid = ids[i]; + //var childRows = $("#vdTree").jqGrid('getNodeChildren', rows[i]); + //$("#vdTree").expandNode(ids[1]); + //$("#vdTree").expandRow(record.treeid); +// $("#vdTree").jqGrid('expandRow', rows[i]); +// for (var j = 0; j < childRows.length; j++) { +// $("#vdTree").jqGrid('expandNode', childRows[j]); +// $("#vdTree").jqGrid('expandRow', childRows[j]); +// } + // } +//} + +function rowProp(){ + var wfile = $('#wfile').html(); + var ids = jQuery('#vdFiles').jqGrid('getDataIDs'); + for (var x = 0; x < ids.length; x++) { + var i = x; + var row = $('#vdFiles').getRowData(ids[x]); + var rowid = ids[x]; +// if (wfile !== '1'){ +// jQuery('tr#'+rowid).addClass('not-editable-row'); +// jQuery('tr#'+rowid+' td[aria-describedby$=\'_act\']').html('-'); +// } + if (row.working_user !== '') + { + jQuery('#vdFiles tr.jqgrow:eq('+i+')').css('background','inherit').css({'background-color':'#f5bc6b'}); + jQuery('tr#'+rowid).addClass('not-editable-row'); + jQuery('tr#'+rowid+' td[aria-describedby$=\'_act\']').html('-'); + } + if (row.del == '1') + { + jQuery('#vdFiles tr.jqgrow:eq('+i+')').css('background','inherit').css({'background-color':'#ef7f7f'}); + jQuery('#vdFiles tr.jqgrow:eq('+i+')').fadeOut(); + } + } + + + $('.anone1 img').hover(function(){ + var hist = $(this).attr('hist'); + var ext = $(this).attr('ext'); + + if((ext == 'png')||(ext == 'ico')||(ext == 'jpeg')||(ext == 'jpg')){ + var datecreate = $(this).attr('datecreate'); + var datecreate = datecreate.slice(0, 10); + var date_arr = datecreate.split('-'); + var day = date_arr[2]; + var month = date_arr[1]; + var year = date_arr[0]; + var main_dir = $('#m_folder').html(); + var main_dir = $.trim(main_dir); + var file_path = '/vdupload/'+main_dir+'/'+year+'/'+month+'/'+day+'/'+hist; + $('#img_preview').attr('src', file_path); + $('#preview').show(); + } + }) + + + $('.anone1').mouseout(function() { + $('#preview').hide(); + }) +} + +function treeOnload(div, treeid){ + //console.log(div); + var elem = '#'+div; + //$(elem).hide(); + Expand(div, treeid); + //$(elem).show(); + console.log(elem); + var grid = $("#vdTree"); + var filters = grid[0].p; + //filters.caption = 'vxcv'; + $.extend(filters.caption, 'qwqw'); + //console.log(filters); +} +//Функция при загрузке таблицы + function do_onload(){ +// $('#vdTree tr').click(function() { +// setTimeout(getFileW, 0); +// }) + if ( $("#vdTree tr").hasClass("ui-state-highlight") ) { + getFileW(); + } + + //setTimeout(rowProp, 1000, wfile); + rowProp(wfile); + $('[data-toggle="popover"]').popover(); + } + + ///////////// + + function cleanAdd(){ + $('#add_form')[0].reset(); + $('#input_files').prop('disabled',false); + $('#add2_form')[0].reset(); + $('#input_files2').prop('disabled',false); + } + ///////////// + function getMainFold(arg){ + + setTimeout(getAjaxMainFolder, 1000); + function getAjaxMainFolder(){ + //var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + //var ret = $('#vdTree').jqGrid('getRowData', selr); + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var treeid = ret.treeid; + + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=searchMain&temp=ajax', + type: 'GET', + data: {treeid:treeid}, + success: function(result){ + console.log(result); + $('#main_folder').val(result); + showFile(arg); + } + }); + } + + } + function getAjaxMainFolderFile(){ + + var selr = $('#vdFiles').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdFiles').jqGrid('getRowData', selr); + var treeid = ret.treeid; + console.log(treeid); + $.ajax({ + url: '/?adm=k2vdocsadmin_actfile&mode=admin&event=searchMain&temp=ajax', + type: 'GET', + data: {treeid:treeid}, + success: function(result){ + console.log(result); + //$('#main_folder').val(result); + $('#m_folder').text(result); + } + }); + } + + $( document ).ready(function() { + $('#hideDels').hide(); + //$('#vdFiles').jqGrid('hideCol',["show_file"]); + $('#bar').hide(); + $('#bar2').hide(); + + + //rowProp(0); + +// $('#vdTree td').hover(function(){ +// $('#vdTree td.ui-state-hover').each(function(){ +// console.log($(this).attr('title')); +// }); +// }) +// +// $('.lock').hover(function() { +// alert(123); +// }); + + + + }); + + +function showLinkModal() { + $("#loading_spinner3").hide(); + $('#linkmodal').click(); +} + +function addLinkFile(){ + var linkfile = $('#linkfile').val(); + var filename_h = $('#filename_h').val(); + var selr = $('#vdTree').jqGrid('getGridParam','selrow', 'activation'); + var ret = $('#vdTree').jqGrid('getRowData', selr); + var treeid = ret.treeid; + $("#loading_spinner3").show(); + $.ajax({ + url: '/?adm=k2vdocsadmin_upload&mode=admin&event=addlinkfile&temp=ajax', + type: 'POST', + data: {linkfile:linkfile, treeid:treeid, main_folder:treeid, filename_h:filename_h}, + success: function(result){ + $("#loading_spinner3").hide(); + $('#vdFiles').jqGrid().trigger('reloadGrid'); + $('#linkclose').click(); + } + }); + console.log(linkfile); +} \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdoc.php b/k2shop/k2shop/app/app/vdocs/k2vdoc.php new file mode 100644 index 0000000..063a97e --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdoc.php @@ -0,0 +1,1297 @@ +Зберегти'; + public $show_btn = ''; + public $work_btn = ''; + + public $save_icon = ''; + public $show_icon = ''; + public $work_icon = ''; + + public $status_work = '8ff312671784c5b37ea1c83bb3d18e89'; //Статус документу - в роботі + + + // Инициализация + function init_obj(){ + global $k2; + $k2->site->addCSS('vdoc.css','/k2shop/k2shop/app/app/vdocs/css/vdoc.css'); + $k2->site->addJSEnd('vdoc.js','/k2shop/k2shop/app/app/vdocs/js/vdoc.js'); + } + + + + function getMainWindow() + { + global $k2; + $rez = ''; + + $this->save_icon = str_replace('{lnSave}', $this->Translate("{lnSave}"), $this->save_icon); + $this->show_icon = str_replace('{lnLook}', $this->Translate("{lnLook}"), $this->show_icon); + $this->work_icon = str_replace('{lnWork}', $this->Translate("{lnWork}"), $this->work_icon); + + $user = $k2->auth->login; + $cur_role = $k2->auth->roleid; + if (($cur_role == '-1')){ + $tree_r = ''; + $file_r = ''; + $myfile_r = ""; + $popup_r = 'false'; + $com_right = true; + $full_del = [ + 'caption' => '', + 'title' => $this->Translate("{lnFullFileDeletion}"), + 'id' => 'full_del', + 'icon' => 'ui-icon-circle-close', + 'action' => 'checkStat(\'full_del\')' + ]; + + } else { + $tree_r = "and (SELECT vdTreeRight(t.treeid, '$cur_role', 20)=1)"; + $file_r = "and (SELECT vdFileRight(f.treeid, '$cur_role', 20)=1)"; + $myfile_r = "and (IF ((SELECT vdMyFileRight(f.treeid, '$cur_role', 20)=1), f.usercreate = '$user', f.usercreate <> '' ))"; + $com_right = false; + $popup_r = 'false'; + $full_del = ''; + } + + if($k2->get('allFiles')==1){ + $where = ''; + } else { + $where = " WHERE (f.treeid='{masterid}') $file_r $myfile_r"; + } + + if($k2->get('multi')==1){ + $multi = true; + } else { + $multi = false; + } + + $and = ""; + $sql = "select fileid, f.treeid, ordnum, f.typefileid, filename, fileext, statid, docn, docdate, + typedocid, kodf, sumdoc, comment_file, usercreate, + datecreate, userupdate, dateupdate, size_file, + site_history, working_user, date_working, f.del, t.icontypefile + + from vdFiles f + + left join vdTypeFile t + on f.typefileid = t.typefileid + "; + + + $params=[ + 'name'=>'VDoc', + + 'tree'=>[ + 'select' => "select t.treeid, t.treename, t.parent_treeid, + (select count(*) from vdTree tc where tc.parent_treeid=t.treeid) as ccount, + (select count(treeid) from vdTreeRight tr where tr.treeid=t.treeid) as rcount, + if(exists(select r.tree_rightid from vdTreeRight r where r.treeid=t.treeid), ''+result.data[x]+''; + } + buf += ' ', '') as r + from vdTree t where (1=1) $tree_r + ", + 'id' => 'treeid', + 'name' => 'treename', + 'parentid' => 'parent_treeid', + + 'tablename' => 'vdTree', + 'caption' => $this->Translate("{lnCategory}"), + 'onRightClickRow'=>'contMenu(rowid)', + 'sortname' => 'treename', + 'sortorder' => 'asc', + //'grid_onload' => 'treeOnload(\'gbox_vdTree\')', + 'fields' => [['field' => 'ccount', + 'caption' => 'К', + 'width' => '50', + 'hidden' => true, + 'readonly' => true, + 'align' => 'right' + ], + ['field' => 'rcount', + 'caption' => 'RC', + 'width' => '50', + 'hidden' => true, + 'readonly' => true, + 'align' => 'right' + ]], + 'addtool_button' => [ +// [ +// 'caption' => '', +// 'title' => $this->Translate("{lnFullDirectoryDeletion}"), +// 'id' => 'full_delfold', +// 'icon' => 'ui-icon-circle-close', +// 'action' => 'delFold()' +// ], +// [ +// 'caption' => '', +// 'title' => $this->Translate("{lnDirectoryDeletion}"), +// 'id' => 'dels_fold', +// 'icon' => 'ui-icon-minus', +// 'action' => 'actTree(\'del_fold\')' +// //'action' => 'markDelFold()' +// ], + [ + 'caption' => '', + 'title' => $this->Translate("{lnMoveFolder}"), + 'id' => 'moves_fold', + 'icon' => 'ui-icon-shuffle', + 'action' => 'actTree(\'moveFolder\')' + ], + [ + 'caption' => '', + 'title' => $this->Translate("{lnRecursiveAddFolder}"), + 'id' => 'adds2', + 'icon' => 'ui-icon-folder-collapsed', + 'action' => 'cleanAdd();showModal(\'add2\')' + //'action' => "createElements();$('#add2').jqxWindow('open');" + ], + [ + 'caption' => '', + 'title' => $this->Translate("{lnSetRightsBranch}"), + 'id' => 'rights', + 'icon' => 'ui-icon-key', + 'action' => 'actTree(\'right\')' + ] + ], + 'popup_menu'=> [ + 'items'=>[[ + 'command'=>'look_all', + 'name'=>$this->Translate("{lnLookAll}"), + 'icon'=>'fa-search', + 'callback'=>'alert(2)', + 'disabled'=>'true' + ], + + [ + 'command'=>'sep', + ], + [ + 'command'=>'add_fold', + 'name'=>$this->Translate("{lnUploadFolder}"), + 'icon'=>'fa-folder-open', + 'callback'=>'cleanAdd();showModal(\'add2\')', + 'disabled'=>$popup_r + ], +// [ +// 'command'=>'add_arch', +// 'name'=>'Завантажити архівом каталог', +// 'icon'=>'fa-upload', +// 'callback'=>'uploadArchFolder()', +// 'disabled'=>'false' +// ], + [ + 'command'=>'add', + 'name'=>$this->Translate("{lnAddRecord}"), + 'icon'=>'add', + 'callback'=>'$("#add_vdTree").click();', + 'disabled'=>$popup_r + ], + [ + 'command'=>'edit', + 'name'=>$this->Translate("{lnEdit}"), + 'icon'=>'edit', + 'callback'=>'$("#edit_vdTree").click();', + 'disabled'=>$popup_r + ], +// [ +// 'command'=>'del', +// 'name'=>$this->Translate("{lnEdit}"), +// 'icon'=>'delete', +// 'callback'=>'$("#del_vdTree").click();', +// 'disabled'=>$popup_r +// ], + [ + 'command'=>'move', + 'name'=>$this->Translate("{lnMove}"), + 'icon'=>'fa-exchange', + 'callback'=>'actTree(\'moveFolder\')', + 'disabled'=>$popup_r + ], + [ + 'command'=>'arch', + 'name'=>$this->Translate("{lnDownloadArchive}"), + 'icon'=>'fa-archive', + 'callback'=>'archFile()', + 'disabled'=>$popup_r + ], + [ + 'command'=>'downloadlocal', + 'name'=>'Скачати каталог', + 'icon'=>'fa-download', + 'callback'=>'downloadFolder()', + 'disabled'=>$popup_r + ], + [ + 'command'=>'sep', + ], + [ + 'command'=>'rights', + 'name'=>$this->Translate("{lnRights}"), + 'icon'=>'fa-key', + 'callback'=>'actTree(\'right\')', + 'disabled'=>$popup_r + ] + + ] + ] + ], + + + 'bootom_buttons'=>$this->addButtons(), + + 'table'=>[ + 'select' => $sql, + + 'table' => "vdFiles", + + 'rows'=>30, + // 'height'=>350, + 'typeid'=>1, + 'sortname' => 'ordnum', + 'sortorder' => 'desc', + 'caption' => $this->Translate("{lnFiles}"), + 'multiselect' => $multi, + //'onRightClickRow'=>'contMenu(rowid)', + // 'height'=>'1073', + 'is_add' => $com_right, + 'is_del' => $com_right, + 'is_edit' => true, + 'resizable' => false, + 'where'=> $where, + 'getmaster' => true, // Указывает, что есть master-таблица + 'masterid' => 'treeid', + 'footer' => true, + 'grid_onload' => 'do_onload();', + 'sum' => ['docdate'=>'count', 'size_file' => 'sum', 'sumdoc' => 'sum'], + //Группировка колонок +// "groupHeaders" => [ +// [ +// "startColumnName"=>'show_file', // Колонка, с которой стартует группировка +// "numberOfColumns"=>2, // Кол-во колонок в группе +// "titleText"=>'Дії з файлами' // Заголовок группы +// ] +// ], + //Поля, котрорые не скрываются в форме при добавлении и редактировании + //"readonly_form" => ['statid', 'docn'], + + 'fields' => [['field' => 'fileid', + 'caption' => $this->Translate("{lnFilesId}"), + 'width' => '120', + 'hidden' => true, + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'show_file', + 'caption' => 'П', + 'width' => '30', + 'hidden' => false, + 'readonly' => true, + 'sortable' => false, + 'search' => false, + 'align' => 'center', + 'resizable' => false, + 'type_field' => 'condition', + 'cond' => [ + 'url1' => '', + 'class'=>'anone', + 'caption1' => $this->show_icon, + 'exp' => '($row["ordnum"]!==0)', + 'target1'=>'_self', + ] + ], + + ['field' => 'get_file', + 'caption' => 'Р/З', + 'width' => '30', + 'hidden' => false, + 'readonly' => true, + 'align' => 'center', + 'sortable' => false, + 'search' => false, + 'type_field' => 'condition', + 'resizable' => false, + 'fixed' => true, + 'cond' => [ + 'exp' => '($row["statid"]=="'.$this->status_work.'" and $row["working_user"]=="'.$user.'")', + 'class'=>'anone', + 'url1' => '', + 'caption1' => $this->save_icon, + 'target1'=>'_self', + //'class2'=>'anone', + 'url2' => '', + 'caption2' => $this->work_icon, + 'target2'=>'_self', + ] + ], + + ['field' => 'icontypefile', + 'caption' => 'Тип
файлу', + 'width' => '50', + 'readonly' => true, + 'sortable' => true, + 'search' => false, + 'align' => 'center', + 'type_field' => 'condition', + 'resizable' => false, + 'cond' => [ + 'exp' => '(false)', + 'class'=>'anone1', + 'caption2' => '', + 'url2' => '', + 'target2'=>'_self' + ] + ], + ['field' => 'linkfile', + 'caption' => 'Поширити', + 'width' => '70', + 'readonly' => true, + 'sortable' => true, + 'search' => false, + 'align' => 'center', + 'type_field' => 'condition', + 'resizable' => false, + 'cond' => [ + 'exp' => '(false)', + 'class'=>'anone1', + 'caption2' => '', + 'url2' => '', + 'target2'=>'_self' + ] + ], + + + ['field' => 'site_history', + 'caption' => 'Історія', + 'width' => '75', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'statid', + 'caption' => 'Статус', + 'width' => '120', + 'readonly' => false, + 'hidden' => true, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select statid as k, statname as v from vdStat order by ord_stat" + ], + + ['field' => 'docn', + 'caption' => '№
документу', + 'width' => '80', + 'readonly' => false, + 'align' => 'right', + 'hidden' => true, + //'formoptions' => ["rowpos"=>"2", "colpos"=>"2"], + //'viewform' => true, + //'hidedlg' => true, + ], + // ['field' => 'filename_h', + // 'caption' => 'Назва', + // 'width' => '225', + // 'hidden' => false, + // 'readonly' => false, + // 'align' => 'left' + // ], + ['field' => 'filename', + 'caption' => 'Фізична
назва', + 'width' => '225', + 'hidden' => false, + 'readonly' => false, + 'align' => 'left' + ], + ['field' => 'docdate', + 'caption' => 'Дата
документу', + 'width' => '75', + 'hidden' => false, + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'date', + 'hidden' => true, + //'viewform'=>false, + //'hidedlg' => false, + ], + + ['field' => 'size_file', + 'caption' => 'Розмір
файлу, кб', + 'width' => '80', + 'hidden' => false, + 'readonly' => true, + 'type_field' => 'number', + 'align' => 'right', + ], + + ['field' => 'typedocid', + 'caption' => 'Тип
документу', + 'width' => '60', + 'readonly' => false, + 'align' => 'left', + 'hidden' => true, + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select typedocid as k, short_name as v from vdTypeDoc", + + ], + + ['field' => 'sumdoc', + 'caption' => 'Сума
документа', + 'width' => '100', + 'readonly' => false, + 'hidden' => true, + 'align' => 'right', + 'view' => true, + //'formoptions' => ["rowpos"=>"2", "colpos"=>"1"] + //'def_value' => 0 + ], + + ['field' => 'kodf', + 'caption' => 'Контрагент', + 'width' => '70', + 'readonly' => false, + 'align' => 'left', + 'hidden' => true, + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select kodf as k, namefirm as v from vdFirm" + ], + + ['field' => 'comment_file', + 'caption' => 'Примітки', + 'width' => '85', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left', + //'formoptions' => ["rowpos"=>"2", "colpos"=>"3"] + ], + + ['field' => 'ordnum', + 'caption' => 'Сортування', + 'width' => '75', + 'hidden' => true, + 'readonly' => false, + 'align' => 'right' + ], + + ['field' => 'usercreate', + 'caption' => 'Створив', + 'width' => '95', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'datecreate', + 'caption' => 'Час
створення', + 'width' => '95', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'userupdate', + 'caption' => 'Змінив', + 'width' => '75', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'dateupdate', + 'caption' => 'Час змін', + 'width' => '95', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + + ['field' => 'fileext', + 'caption' => 'Розширення
файлу', + 'width' => '75', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'working_user', + 'caption' => 'Зараз
працює', + 'width' => '85', + 'hidden' => false, + 'readonly' => true, + 'align' => 'left' + ], + + ['field' => 'date_working', + 'caption' => 'Дата взяття
в роботу', + 'width' => '75', + 'hidden' => false, + 'readonly' => true, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '75', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left', + 'def_value' => 0 + ] + + ], + 'addtool_button' => [ + + [ + 'caption' => '', + 'title' => 'Показати видалені', + 'id' => 'showDels', + 'icon' => 'ui-icon-suitcase', + 'action' => 'showDels()' + ], + [ + 'caption' => '', + 'title' => 'Сховати видалені', + 'id' => 'hideDels', + 'icon' => 'ui-icon-suitcase', + 'action' => 'hideDels()' + ], + // [ + // 'caption' => '', + // 'title' => 'Повне видалення файлу', + // 'id' => 'full_del', + // 'icon' => 'ui-icon-circle-close', + // 'action' => 'checkStat(\'full_del\')' + // ], + // [ + // 'caption' => '', + // 'title' => 'Історія', + // 'id' => 'hist', + // 'icon' => 'ui-icon-clock', + // 'action' => 'showHistory()' + // ], + // [ + // 'caption' => '', + // 'title' => 'Перемістити файл в іншу гілку', + // 'id' => 'moves', + // 'icon' => 'ui-icon-shuffle', + // 'action' => 'checkStat(\'move\')' + // ], + // [ + // 'caption' => '', + // 'title' => 'Видалити файл', + // 'id' => 'dels', + // 'icon' => 'ui-icon-minus', + // 'action' => 'checkStat(\'del\')' + // ], + // [ + // 'caption' => '', + // 'title' => 'Додати файл link', + // 'id' => 'addslink', + // 'icon' => 'ui-icon-link', + // 'action' => 'cleanAdd();showLinkModal()', + // ], + // [ + // 'caption' => '', + // 'title' => 'Додати новий файл', + // 'id' => 'adds', + // 'icon' => 'ui-icon-arrowthickstop-1-s', + // 'action' => 'cleanAdd();showModal(\'add\')', + // ], + + +// [ +// 'caption' => '', +// 'title' => 'Багатосекційний вибір', +// 'id' => 'multi', +// 'icon' => 'ui-icon-check', +// 'action' => 'multiSelect();' +// ], + [ + 'caption' => '', + 'title' => 'Сховати дерево', + 'id' => 'hidetree', + 'icon' => 'ui-icon-arrowstop-1-w', + 'action' => 'hideTree();' + ], + [ + 'caption' => '', + 'title' => 'Показати дерево', + 'id' => 'showtree', + 'icon' => 'ui-icon-arrowstop-1-e', + 'action' => 'showTree();' + ], + [ + 'caption' => '', + 'title' => 'Меню', + 'id' => 'qwert', + 'icon' => 'ui-icon-grip-dotted-vertical', + 'action' => '' + ] + + ], + 'popup_menu'=> [ + 'items'=>[ + [ + 'command'=>'add', + 'name'=>'Додати', + 'icon'=>'fa-download', + 'callback'=>'cleanAdd();showModal(\'add\')', + 'disabled'=>$popup_r + ], + [ + 'command'=>'del', + 'name'=>'Видалити', + 'icon'=>'fa-minus', + 'callback'=>'checkStat(\'del\')', + 'disabled'=>$popup_r + ], + + [ + 'command'=>'move', + 'name'=>'Перемістити', + 'icon'=>'fa-exchange', + 'callback'=>'checkStat(\'move\')', + 'disabled'=>$popup_r + ], + [ + 'command'=>'edit', + 'name'=>'Редагувати', + 'icon'=>'edit', + 'callback'=>'alert(3)', + 'disabled'=>$popup_r + ], + [ + 'command'=>'sep', + ], + [ + 'command'=>'hist', + 'name'=>'Історія', + 'icon'=>'fa-clock-o', + 'callback'=>'showHistory()', + 'disabled'=>'false' + ], + [ + 'command'=>'status', + 'name'=>'Зняти з роботи', + 'icon'=>'fa-undo', + 'callback'=>'changeStatus("'.$user.'")', + 'disabled'=>'false' + ], + [ + 'command'=>'sep', + ], + [ + 'command'=>'logs', + 'name'=>'Лог файлу', + 'icon'=>'fa-book', + 'callback'=>'getLog()', + 'disabled'=>'false' + ], +// [ +// 'command'=>'showBrows', +// 'name'=>'Продивитись в браузері', +// 'icon'=>'fa-windows', +// 'disabled'=>'false' +// ], + ] + ] + ] + ]; + + $report = $k2->ins_comp('k2tree_frame'); + + $rez = $report->getTreeTable($params); + + + return $rez; + + } + + + + + function addButtons(){ + + global $k2; + + $rez = ""; + $prg = $k2->ins_comp2('k2progress_bar', $this); + $arr_prg = [ + 'prg_id'=>'bar', + 'hint'=>'Процес завантаження', + ]; + $bar = $prg->progress($arr_prg); + $arr_prg2 = [ + 'prg_id'=>'bar2', + 'title'=>'Процес завантаження', + ]; + + $bar2 = $prg->progress($arr_prg2); + + $arr_prg3 = [ + 'prg_id'=>'bar3', + 'title'=>'Процес завантаження', + ]; + + $bar3 = $prg->progress($arr_prg3); + + $selects=$k2->ins_comp2('k2select2', $this); + $typedoc=$selects->sel( + ['name' => 'typedoc', + 'sql' => "select typedocid as k, typedocname as v from vdTypeDoc", + 'search_input' => 1, + 'value'=>'' + ] + ); + $folder=$selects->sel( + ['name' => 'folder', + 'sql' => "select treeid as k, treename as v from vdTree where parent_treeid <>'' ", + 'search_input' => 1, + 'value'=>'' + ] + ); + + $users=$selects->sel( + ['name' => 'users', + 'sql' => "select user_id as k, login as v from k2users", + 'search_input' => 1, + 'value'=>'', + 'additems'=>array('-1'=>'# - Для всіх') + ] + ); + + $mod = $k2->ins_comp2('k2window', $this); + $arr_add = [ + 'wnd_id'=>'add', + 'header'=>'', + 'wnd_body'=>" + Додати файл
+" + ]; + $rez .= $mod->showModal($arr_add); + $arr_add2 = [ + 'wnd_id'=>'add2', + 'header'=>'
+ ".$bar." +
+ +обробка файлів+ +', + 'wnd_body'=>" Додати каталог
+ ++ " + ]; + $rez .= $mod->showModal($arr_add2); + $arr_del = [ + 'wnd_id'=>'del', + 'header'=>'
+ ".$bar2." +
+ +
+обробка файлів+ +', + 'wnd_body'=>" Видалити
" + ]; + $rez .= $mod->showModal($arr_del); + + $arr_fulldel = [ + 'wnd_id'=>'fulldel', + 'header'=>'', + 'wnd_body'=>" Видалити
" + ]; + $rez .= $mod->showModal($arr_fulldel); + +// $arr_fulldel_fold = [ +// 'wnd_id'=>'fulldel_fold', +// 'header'=>'', +// 'wnd_body'=>" Видалити
" +// ]; +// $rez .= $mod->showModal($arr_fulldel_fold); + + $arr_rep = [ + 'wnd_id'=>'rep', + 'header'=>'', + 'wnd_body'=>" Відновити
" + ]; + $rez .= $mod->showModal($arr_rep); + + + $arr_rep = [ + 'wnd_id'=>'downloadlocal', + 'header'=>'', + 'wnd_body'=>" Скачування каталогу
" + ]; + $rez .= $mod->showModal($arr_rep); + + $arr_move = [ + 'wnd_id'=>'move', + 'header'=>'
".$bar3."+ ', + 'wnd_body'=>"Перемістити файл
++" + ]; + + $rez .= $mod->showModal($arr_move); + + $arr_moveFold = [ + 'wnd_id'=>'moveFold', + 'header'=>'Виберіть папку
+ + +
+ ++ ', + 'wnd_body'=>"Перемістити каталог
++" + ]; + + $rez .= $mod->showModal($arr_moveFold); + $arr_info = [ + 'wnd_id'=>'undefined', + 'header'=>'Виберіть папку
+ + + +
+ +', + 'wnd_body'=>" Увага!
" + ]; + $rez .= $mod->showModal($arr_info); + $arr_success = [ + 'wnd_id'=>'success', + 'header'=>'Ви не вибрали жодного пункту.
', + 'wnd_body'=>" Увага!
" + ]; + $rez .= $mod->showModal($arr_success); + $arr_okhist = [ + 'wnd_id'=>'okhist', + 'header'=>'Завантаження успішно завершилось
', + 'wnd_body'=>" Увага!
" + ]; + $rez .= $mod->showModal($arr_okhist); + $arr_error = [ + 'wnd_id'=>'error', + 'header'=>'Ви впевнені, що бажаєте відновити історію?
+ + +', + 'wnd_body'=>"
Помилка завантаження!Завантаження не відбулося!', + 'wnd_body'=>" Увага!
" + ]; + $rez .= $mod->showModal($arr_error2); + $arr_temp = [ + 'wnd_id'=>'temp_file', + 'header'=>'Поточний файл на сервері відсутній!
', + 'wnd_body'=>" Увага!
" + ]; + $rez .= $mod->showModal($arr_temp); + $arr_ext = [ + 'wnd_id'=>'not_ext', + 'header'=>'Тимчасові файли не завантажуються!!!
', + 'wnd_body'=>" Увага!
++Розширення файлу не існує в довіднику!!!
+
+Все одно завантажити файл?
+ + +
+ " + ]; + $rez .= $mod->showModal($arr_ext); + $arr_info = [ + 'wnd_id'=>'inwork', + 'header'=>'', + 'wnd_body'=>" Увага!
" + ]; + $rez .= $mod->showModal($arr_info); + $arr_brows = [ + 'wnd_id'=>'browser', + 'header'=>'Дії з файлом заборонені
', + 'wnd_body'=>" Увага!
" + ]; + $rez .= $mod->showModal($arr_brows); + + $arr_hist = [ + 'wnd_id'=>'history', + 'header'=>'Нажаль Ваш броузер не підтримує завантаження каталогів!
', + 'caption'=>'Історія', + 'width'=>'650', + 'wnd_body'=>' Історія файлу
+ + +
' + ]; + $rez .= $mod->showModal($arr_hist); + + $arr_rights = [ + 'wnd_id'=>'user_rights', + 'header'=>'', + 'caption'=>'Права', + 'width'=>'890', + 'wnd_body'=>' Встановити права
', + + ]; + $rez .= $mod->showModal($arr_rights); + + + $rez = str_replace('{typedoc}', $typedoc, $rez); + $rez = str_replace('{folder}', $folder, $rez); + $rez = str_replace('{users}', $users, $rez); + + + + + return $rez; + + } + + + function getVDoc() { + global $k2; + + $rez = ''; + $rez .= ' '; + $rez .= ''; + $rez .= ''; + $rez .= ''; + $rez .= ''; + $rez .= ''; + $rez .= ''; + //$rez .= ''; + //$rez .= ''; + //$rez .= ''; + $rez .= ''.$k2->auth->login.''; + $rez .= ''.$k2->auth->roleid.''; + $rez .= ''; + $rez .= ' - {lnDelFiles}'; + $rez .= ' - {lnWorkFiles}'; + $rez .= ''; + $rez .= ''; + $rez .= $this->getMainWindow(); + $rez .= ""; + $jqx = $k2->ins_comp2('k2window', $this); + $arr_win = [ + 'wnd_id'=>'window', + 'is_modal'=>true, + 'height'=>130, + 'width'=>330, + 'wnd_body'=>" ++ + ++ " + ]; + $rez .= $jqx->showWindow($arr_win); + + $rez = str_replace('{lnDelFiles}', $this->Translate("{lnDelFiles}"), $rez); + $rez = str_replace('{lnWorkFiles}', $this->Translate("{lnWorkFiles}"), $rez); + $upload = $k2->ins_comp('k2upload'); + $maxsize = $upload->file_upload_max_size(); + $rez = str_replace('{filemaxsize}', $maxsize, $rez); + $rez .= $this->showLinkModal(); + $rez .= $this->contMenu(); + + + $rez .= $this->fileSysApi(); + return $rez; + } + + + function showLinkModal(){ + $rez = ' + ++'; + return $rez; + } + + + function iniMenu($arr = []){ + global $k2; + $rez = ''; + + $popup_menu = $k2->ins_comp2('k2popup_menu', $this); + + //$arr['selector'] = '#'.$this->sets['table'].' tr.ui-row-ltr'; + $arr['selector'] = '.context-menu-one'; + + + + //Добавление кнопок по умолчанию + $add_arr = [ + [ + 'command'=>'sep', + ], + [ + 'command'=>'look_sql', + 'name'=>'{lnLookSql}', + 'icon'=>'fa-database', + 'callback'=>'alert("tttt");console.log("")', + 'disabled'=>'false' + ], + + ]; + + + foreach ($add_arr as $value) { + // if (isset($this->sets['popup_menu'])){ + // array_push($arr['items'], $value); + // } else { + // if(!isset($arr['items'])){ + // $arr['items'] = []; + // } + array_push($arr['items'], $value); + //} + } + + + + $rez .= $popup_menu->showContMenu($arr); + return $rez; + + } + + function contMenu() + { + global $k2; + $rez .= ' + + '; + return $rez; + } + + function fileSysApi() + { + $rez .= ' + ++ + +++ + +'; + + // $rez .= ' + // + // '; + //return $rez; + } + + function content(){ + global $k2; + // $rez .= ''; +// $rez .= ''; +// $rez .= ' + +// +// +// '; + + $rez = $this->getVDoc(); + $rez .= $this->contMenu(); + +// $rez .= ' +// + +// +// +// +// +// '; + return $rez; + } + + + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdoc_share.php b/k2shop/k2shop/app/app/vdocs/k2vdoc_share.php new file mode 100644 index 0000000..6658b0a --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdoc_share.php @@ -0,0 +1,361 @@ +hist = $k2->get('hist'); + $r = $k2->sql->sel('SELECT * FROM vdFiles WHERE (site_history=:site_history)', ['site_history'=>$this->hist]); + $this->treeid = $r['data'][0]['treeid']; + $this->filename = $r['data'][0]['filename']; + $this->filename_h = $r['data'][0]['filename_h']; + $this->ext = $r['data'][0]['fileext']; + $this->datecreate = $r['data'][0]['datecreate']; + $this->getMainFolder($r['data'][0]['treeid']); + $this->reqursCheckRole($this->treeid); + } + + + function renderJS(){ + global $k2; + ob_start(); + ?> + + + '; + echo $sourse.'
'; + if ($ext == 'mp4') { + //echo $ext.'
'; + shell_exec('ffmpeg -i '.$sourse.' '.$output.' '); + } else { + // shell_exec('ffmpeg -i '.$sourse.' -c:v copy -c:a copy -y '.$output.''); + // shell_exec('ffmpeg -i '.$output.' '.$output.' '); + } + return $output; + } + + function generateTmpFile($sourse) + { + global $k2; + $file = $sourse; + $filename = 'tmp'; + $ext = 'mp4'; + $current = file_get_contents(substr($file,1)); + + file_put_contents('public/tmp/'.date('H_i_s_').$filename.'.'.$ext, $current); + $rez = 'public/tmp/'.date('H_i_s_').$filename.'.'.$ext; + return trim($rez); + } + function getShare($auth = 1) + { + global $k2; + $ext = $this->ext; + + $rez = ''; + + $rez = str_replace('{date_path}', $date_path, $rez); + $rez = str_replace('{hist}', $this->hist, $rez); + $rez = str_replace('{vdupload}', $this->main_folder, $rez); + // $rez .= ' + // + // '; + } else { + $rez .= ''; + $is_right = $this->getRights(); + //print_r($is_right); + if ($is_right || $auth == 0) { + $filename = $this->filename; + + $datecreate = new DateTime($this->datecreate); + $date_path = $datecreate->format('Y/m/d'); + + if ($this->filename_h !== '') { + $filename = $this->filename; + } + if(($ext == 'png')||($ext == 'ico')||($ext == 'jpeg')||($ext == 'jpg')){ + $rez .= '+' ; + } else if(($ext == 'mp4')||($ext == 'mov')||($ext == 'ogg')||($ext == 'avi')){ + $rez .= '
+ +'; + + // $path = '/vdupload/'.$this->main_folder.'/'.$date_path.'/'.$this->hist.''; + // //$filename = $this->updateVideo('111', '222', $ext); + // $source = $this->generateTmpFile($path); + // $output = 'public/tmp/'.date('H_i_s_').'tmp2.mp4'; + // $filename = $this->updateVideo($source, $output, $ext); + // echo $output; + // $rez .= '+ // + //'; + } else { + + // $rez .= '+ // + // '; + // $rez .= ''; + } + + + + + + $rez .= '+++ + + + +++ Назва: '.$filename.'.'.$ext.' +
+Дата: '.$datecreate->format('d.m.Y').'
+ +'; + } + $rez .= ''; + return $rez; + } + + + function getRights() + { + global $k2; + $rez = 0; + // echo $this->cur_right['roleid'].'Вам не надано прав на перегляд даного файлу
'; + // echo $k2->auth->roleid; + if ($k2->auth->roleid == '-1'){ + $rez = 1; + } else { + //$r = $k2->sql->sel('SELECT rtree FROM vdTreeRight WHERE treeid=:treeid AND roleid=:roleid', ['treeid'=>$this->treeid, 'roleid'=>$k2->auth->roleid]); + //$rez = $r['data'][0]['rtree']; + if ($this->cur_right['roleid'] == $k2->auth->roleid || $this->cur_right['roleid'] == 1000000) { + $rez = $this->cur_right['rtree']; + } + + } + + return $rez; + } + + + function showAuthForm() + { + global $k2; + $rez = ''; + return $rez; + } + + function reqursCheckRole($treeid) + { + global $k2; + $rez = ''; + $sql = "SELECT parent_treeid FROM vdTree WHERE treeid = '$treeid' limit 1"; + foreach ($k2->db->query($sql) as $row) { + $parent_treeid = $row['parent_treeid']; + //echo $parent_treeid.''; + $rez .= ' +Для перегляду файлу, авторизуйтесь
+ +
'; + $is_right = $this->checkRight($treeid); + } + if ($is_right == 1) { + return $is_right; + } + if ($parent_treeid !== '' && $is_right == 0){ + $this->reqursCheckRole($parent_treeid); + } else { + return $is_right; + } + } + + + function checkRight($treeid) + { + global $k2; + $rez = 0; + if ($k2->auth->roleid) { + $sql = "SELECT * FROM vdTreeRight WHERE treeid = '$treeid' AND (roleid = '".$k2->auth->roleid."' OR roleid = '1000000')"; + } else { + $sql = "SELECT * FROM vdTreeRight WHERE treeid = '$treeid' AND roleid = '1000001'"; + } + + foreach ($k2->db->query($sql) as $row) { + if (isset($row['tree_rightid']) || isset($row['rfile'])){ + $this->cur_right = $row; + $rez = 1; + } + } + return $rez; + } + + function getMainFolder($treeid) + { + global $k2; + $r = $k2->sql->sel('SELECT parent_treeid FROM vdTree WHERE treeid=:treeid', ['treeid'=>$treeid]); + if ($r['data'][0]['parent_treeid'] !== '') { + $this->getMainFolder($r['data'][0]['parent_treeid']); + } else { + $this->main_folder = $treeid; + } + + } + + function pageRoute() + { + global $k2; + if ($this->cur_right) { + + if (($this->cur_right['roleid'] == '1000001' || $this->cur_right['roleid'] == '1000000') && ($this->cur_right['rtree'] == 1 || $this->cur_right['rfile'] == 1)) { + + $rez = $this->getShare(0); + } else { + if ($k2->auth->isAuth()) { + $rez = $this->getShare(1); + } else { + + //print_r($this->cur_right['roleid']); + $rez = $this->showAuthForm(); + } + } + } else { + + if ($k2->auth->isAuth()) { + $rez = $this->getShare(1); + } else { + $rez = $this->showAuthForm(); + } + } + //print_r($this->cur_right); + $rez .= $this->renderJS(); + return $rez; + } + + + function content(){ + global $k2; + $rez = $this->pageRoute(); + return $rez; + } +} \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin.php new file mode 100644 index 0000000..75eee32 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin.php @@ -0,0 +1,113 @@ + [ + 'parent' => "root", + 'name' => "k2vdocsadmin", + 'caption' => 'VDOC', + 'iconclass'=> "fa fa-cubes" + ],//Иконка для категории меню админки + + 'elements' => [ + + [ 'name' => "k2vdocsadmin_main", + 'caption' => "Vdoc", + 'url' => "?adm=k2vdocsadmin_main", + 'command' => ['',''], + 'iconclass'=> "fa fa-cube" + ], + + + [ 'name' => "k2vdocsadmin_typecat", + 'caption' => $this->Translate("{lnCatTypeFile}"), + 'url' => "?adm=k2vdocsadmin_typecat", + 'command' => ['',''], + 'iconclass'=> "fa fa-file-archive-o" + ], + + [ 'name' => "k2vdocsadmin_typedoc", + 'caption' => $this->Translate("{lnCatTypeDoc}"), + 'url' => "?adm=k2vdocsadmin_typedoc", + 'command' => ['',''], + 'iconclass'=> "fa fa-file-word-o" + ], + + [ 'name' => "k2vdocsadmin_types", + 'caption' => $this->Translate("{lnFileTypes}"), + 'url' => "?adm=k2vdocsadmin_types", + 'command' => ['',''], + 'iconclass'=> "fa fa-file-excel-o" + ], + + [ 'name' => "k2vdocsadmin_ext", + 'caption' => $this->Translate("{lnExtension}"), + 'url' => "?adm=k2vdocsadmin_ext", + 'command' => ['',''], + 'iconclass'=> "fa fa-file-code-o" + ], + + [ 'name' => "k2vdocsadmin_tabu", + 'caption' => $this->Translate("{lnProhibitedFiles}"), + 'url' => "?adm=k2vdocsadmin_tabu", + 'command' => ['',''], + 'iconclass'=> "fa fa-file-code-o" + ], + + [ 'name' => "k2vdocsadmin_status", + 'caption' => $this->Translate("{lnStatusDocuments}"), + 'url' => "?adm=k2vdocsadmin_status", + 'command' => ['',''], + 'iconclass'=> "fa fa-check-square-o" + ], + [ 'name' => "k2vdocsadmin_treeright", + 'caption' => $this->Translate("{lnRights}"), + 'url' => "?adm=k2vdocsadmin_treeright", + 'command' => ['',''], + 'iconclass'=> "fa fa-key" + ] + + + ] + ] + ]; + + return $arr; + } + + // Обработка команд + function admCommands($comm){ + + global $k2; + $rez=false; + + $s=$k2->getComp($comm); + if ($s[0]<>'k2vdocsadmin'){ + return; + } + + $comp=$k2->ins_comp($s[0], $s[1], true); + if ($comp<>'') + echo $comp->content(); + + return $rez; + + } + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_actfile.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_actfile.php new file mode 100644 index 0000000..d4a8a5d --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_actfile.php @@ -0,0 +1,645 @@ +post('treeid'); + $arr_right = $this->getFolderRight('',$treeid); + + // Обработка результата функции проверки прав + if (trim($arr_right['err'])<>''){ + return $this->vdoc_err('Помилка отримання прав. (delFile 0) '.$arr_right['err']); + }else{ + $arr_right = $arr_right['rez']; + } + + if(($arr_right['wfile'] == 0)||($arr_right['rfile'] == 0)){ + return $this->vdoc_err('У Вас не вистачає прав для видалення файлу'); + } + + $arr_file = explode(",", $arr_file); + foreach ($arr_file as $value) { + if(isset($value)){ + $err = $k2->sql->upd( + "UPDATE vdFiles + SET + del=:del + WHERE fileid = :fileid ", + ['fileid'=>$value, + 'del' => $act + ] + ); + + + if($err['err']!==''){ + $k2->log->err('Помилка видалення/відновлення файлу (delFile 1): '.$err['err']); + $rez['err'] = $err['err']; + return $rez; + } + } else { + $k2->log->err('Порожній fileid (delFile 2): '.$err['err']); + $rez['err'] = $err['err']; + return $rez; + } + $k2->log->mess('Видалення/відновлення файлу: '.$value); + } + return $rez; + } + + + function delFold($treeid) + { + global $k2; + $rez = ''; + + $arr_right = $this->getFolderRight('',$treeid); + + // Обработка результата функции проверки прав + if (trim($arr_right['err'])<>''){ + return $this->vdoc_err('Помилка отримання прав. (delFold 0) '.$arr_right['err']); + }else{ + $arr_right = $arr_right['rez']; + } + + if(($arr_right['wtree'] == 0)||($arr_right['rtree'] == 0)){ + return $this->vdoc_err('У Вас не вистачає прав для видалення каталогу'); + } + + $err = $k2->sql->upd( + "UPDATE vdTree + SET + del=:del + WHERE treeid = :treeid ", + ['treeid'=>$treeid, + 'del' => 1 + ] + ); + + + if($err['err']!==''){ + $k2->log->err('Помилка видалення каталогу (delFile 1): '.$err['err']); + $rez['err'] = $err['err']; + return $rez; + } + + $k2->log->mess('Видалення каталогу: '.$value); + + return $rez; + } + + + /** + * Зняття захвату файлу + * @global type $k2 + * @param type $fileid + * @return type + */ + function changeStatus($fileid) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + if(isset($fileid)){ + $err = $k2->sql->upd( + "UPDATE vdFiles + SET + working_user=:working_user, + statid=:statid + WHERE fileid = :fileid ", + ['fileid'=>$fileid, + 'statid' => $this->status_draft, + 'working_user' => '' + ] + ); + + + if($err['err']!==''){ + $k2->log->err('Помилка зняття захвату файлу (changeStatus 1): '.$err['err']); + $rez['err'] = $err['err']; + return $rez; + } + } else { + $k2->log->err('Порожній fileid (changeStatus 2): '.$err['err']); + $rez['err'] = $err['err']; + return $rez; + } + $k2->log->mess('Зняття захвату файлу: '.$fileid); + + return $rez; + } + + + /** + * Проверка пользователя + * @global type $k2 + * @return int + */ + function checkStatus() { + global $k2; + + $rez = ''; + $cur_user = $k2->auth->login; + $user = $k2->get('user'); + + if($cur_user == $user){ + $rez = 1; + } + + return $rez; + } + + /** + * + * @global type $k2 + * @param type $arg + * @return type + */ + function showFile($arg){ + global $k2; + $rez = ''; + $user = $k2->auth->login; + $fileid = $k2->get('fileid'); + $histid = $k2->get('histid'); + $file_path = $k2->get('file_path'); + + + if($k2->get('histid')!==''){ + //$rez = $histid; + } else { + $sql = "SELECT histid FROM vdHistory WHERE fileid = '$fileid' order by datecreate"; + foreach ($k2->db->query($sql) as $value) { + $histid = $value['histid']; + } + } + + $filename = $file_path.$histid; + + if (file_exists($filename)) { + if($arg == 'download'){ + $dateWork = date("Y-m-d H:m:s"); + $err2 = $k2->sql->upd( + "UPDATE vdFiles SET" + . " statid='$this->status_work'," + . " working_user='$user'," + . " date_working=now()" + . " WHERE fileid = :fileid;", ['fileid'=>$fileid] + ); + if($err2['err']!==''){ + $rez['err'] = $err2['err']; + return $rez; + } + //var_dump($err2); + } + $rez = 1; + } else { + echo "Файл $filename не существует"; + $rez = 0; + } + + + + return $rez; + } + + /** + * Ошибка в лог + * @global type $k2 + * @param type $mess + * @return type + */ + function vdoc_err($mess) + { + global $k2; + $k2->log->err($mess, false); + return json_encode(array('res'=>FALSE,'data'=>$mess)); +// global $k2; +// $k2->log->err($mess, false); +// return; + } + + /** + * Получение прав через хранимую процедуру + * @global type $k2 + * @param type $treeid + * @return int + */ + function getFolderRight($resp='', $treeid) + { + global $k2; + $rez = ['rez'=>[], 'err'=>'']; + + if (($treeid == '')||($treeid == null)){ + $rez['err']='Порожній treeid. (getFolderRight 1)'; + $this->vdoc_err($rez['err']); + return 0; + } + + $cur_role = $k2->auth->roleid; + if (($cur_role == '')||($cur_role == null)||(!$k2->auth->isAuth())){ + $rez['err']='Порожній roleid. (getFolderRight 2)'; + $this->vdoc_err($rez['err']); + return 0; + } + + + + $sql = "call vdTreeRights('$treeid', '$cur_role', 20)"; + $arr_r = $k2->sql->runProc($sql); + + + + $rez['rez'] = $arr_r['data'][0]; + if (($arr_r['err']!=='')||($rez['rez']==null)){ + $rez = $this->setRights(0); + } + if ($cur_role == '-1'){ + $rez = $this->setRights(1); + } + if($resp == 'ajax'){ + return json_encode($rez['rez']); + } else { + return $rez; + } + + } + + /** + * Установка прав + * @param type $arg + * @return type + */ + function setRights($arg) + { + $rez = ['rez'=>[], 'err'=>'']; + $rez['rez']['rtree'] = $arg; + $rez['rez']['wtree'] = $arg; + $rez['rez']['admtree'] = $arg; + $rez['rez']['rfile'] = $arg; + $rez['rez']['wfile'] = $arg; + + return $rez; + } + + /** + * Перемещение файла + * @global type $k2 + * @global type $vdocs + * @return type + */ + function moveFile($treeid, $arr_file) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + + $arr_right = $this->getFolderRight('', $treeid); + // Обработка результата функции проверки прав + if (trim($arr_right['err'])<>''){ + return $this->vdoc_err('Помилка отримання прав. (moveFile 0) '.$arr_right['err']); + }else{ + $arr_right = $arr_right['rez']; + } + + if(($arr_right['wtree'] == 0)||($arr_right['rtree'] == 0)||($arr_right['wfile'] == 0)){ + return $this->vdoc_err('У Вас не вистачає прав для переміщення файлу'); + } + + $arr_file = explode(",", $arr_file); + + foreach ($arr_file as $value) { + if(isset($value)){ + $err = $k2->sql->upd( + "UPDATE vdFiles SET" + . " treeid=:treeid" + . " WHERE fileid=:fileid;", + [ + 'fileid'=>$value, + 'treeid'=>$treeid + ] + ); + + if($err['err']!==''){ + $k2->log->err('Помилка переміщення файлу (moveFile): '.$err['err']); + $rez['err'] = $err['err']; + return $rez; + } + + } + } + + return $rez; + } + + /** + * Перемещение каталога + * @global type $k2 + * @global type $vdocs + * @return type + */ + function moveFolder($treeid, $to_treeid) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $arr_right = $this->getFolderRight('', $treeid); + // Обработка результата функции проверки прав + if (trim($arr_right['err'])<>''){ + return $this->vdoc_err('Помилка отримання прав. (uploadFile 0) '.$arr_right['err']); + }else{ + $arr_right = $arr_right['rez']; + } + + if(($arr_right['wtree'] == 0)||($arr_right['rtree'] == 0)){ + return $this->vdoc_err('У Вас не вистачає прав для переміщення каталогу'); + } + if(isset($treeid)){ + $err = $k2->sql->upd( + "UPDATE vdTree SET" + . " parent_treeid=:parent_treeid" + . " WHERE treeid=:treeid;", + [ + 'treeid'=>$treeid, + 'parent_treeid'=>$to_treeid + ] + ); + if($err['err']!==''){ + $k2->log->err('Помилка переміщення каталогу (moveFolder): '.$err['err']); + $rez['err'] = $err['err']; + return $rez; + } + + } + return $rez; + } + + function checkExt($ext) + { + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>''];; + + $exten = $this->selExt($ext); + if (trim($exten['err'])<>''){ + $rez['err']=$exten['err']; + return $rez; + } + + if ($exten['rez'] == 0) { + $err=$this->insExt($ext); + + if (trim($err['err'])<>''){ + return $this->vdoc_err('Помилка вставки розширення. (uploadFolder 6) '.$err['err']); + } + } + + $rez = $rez['rez']; + return $rez; + } + + function selExt($ext) + { + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>''];; + $r=$k2->sql->sel( + 'SELECT count(extid) AS cnt FROM vdExt' + . ' WHERE (ext=:ext)', + ['ext'=>$ext]); + + if (trim($r['err'])<>''){ + $rez['err']=$r['err']; + }else{ + $rez['rez']=$r['data'][0]['cnt']; + } + + return $rez; + } + + function insExt($ext) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + $err = $k2->sql->ins_arr( + ['table' => 'vdExt', + 'fields' => [ + 'extid'=>'{id}', + 'typefileid'=>$this->typefileid, + 'ext'=>$ext + ] + ] + ); + if($err['err']!==''){ + $rez['err'] = $err['err']; + return $rez; + } + + return $rez; + } + + /** + * Рекурсивная функция по поиску главного каталога + * @global type $k2 + * @param type $treeid + */ + function reqsearch($treeid) + { + global $k2; + + try { + $sql = "SELECT parent_treeid FROM vdTree WHERE treeid = '$treeid' limit 1"; + foreach ($k2->db->query($sql) as $row) { + $parent_treeid=$row['parent_treeid']; + } + } catch (PDOException $e) { + echo "Помилка вибірки каталогу: $sql\n"; + echo $e->getMessage(); + } + + if ($parent_treeid !== ''){ + $this->reqsearch($parent_treeid); + } else { + echo $treeid; + } + } + + + /** + * Вызов функции поиска главного каталога + * @global type $k2 + * @return type + */ + function searchMainFolder($treeid='') + { + global $k2; + $rez = ''; + $treeid = $k2->get('treeid'); + $rez = trim($this->reqsearch($treeid)); + return $rez; + } + + + function getRight($treeid) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $r=$k2->sql->sel('SELECT treeid, username, roleid, rtee, wtree, admtree, rfile, wfile FROM vdFiles WHERE (treeid=:treeid)', ['treeid'=>$treeid]); + + + if(count($r['data'])==0){ + $rez['err']='Error. Права не знайдено'; + return $rez; + } + + $rez['rez'] = $r['data'][0]; + + return $rez; + } + + /** + * Тип файла на основании расширения + * @global type $k2 + * @param type $ext + * @return type + */ + function getExt($ext='') { + global $k2; + if($ext == ''){ + $ext = $k2->get('ext'); + } + $rez = ''; + + try { + $sql = 'SELECT typefileid FROM vdExt WHERE ext = "'.$ext.'" '; + foreach ($k2->db->query($sql) as $value) { + $rez = $value['typefileid']; + } + } catch (PDOException $e) { + echo "Помилка виборки типу файлу: $sql\n"; + echo $e->getMessage(); + } + + if($rez == ''){$rez=0;} + return $rez; + } + + /** + * Получение массива расширений + * @global type $k2 + * @return type + */ + function getExtArr() + { + global $k2; + + try { + $sql = "SELECT ext FROM vdExt"; + $data_arr = []; + $data_str = ''; + foreach ($k2->db->query($sql) as $row) { + //array_push($data_arr, $row); + $data_str .= '|'.$row['ext']; + } + $data_str .= '|'; + } catch (PDOException $e) { + echo "Помилка виборки розширень: $sql\n"; + echo $e->getMessage(); + } + + //return json_encode($data_arr); + return $data_str; + } + + + + function content(){ + global $k2; + $event = $k2->get('event'); + + switch ($event) + { + case "getRight": + $treeid = $k2->post('treeid'); + $rez = $this->getRight($treeid); + break; + case "del": + $arr_file = $k2->post('arr_file'); + $act = $k2->post('act'); + $rez = $this->delFile($arr_file, $act); + break; + case "delFold": + $treeid = $k2->get('treeid'); + $rez = $this->delFold($treeid); + break; + case "move": + $treeid = $k2->post('treeid'); + $arr_file = $k2->post('arr_file'); + $rez = $this->moveFile($treeid, $arr_file); + break; + case "moveFolder": + $to_treeid = $k2->post('to_treeid'); + $treeid = $k2->post('treeid'); + $rez = $this->moveFolder($treeid, $to_treeid); + break; + case "showFile": + $rez = $this->showFile('show'); + break; + case "downloadFile": + $rez = $this->showFile('download'); + break; + case "check": + $rez = $this->checkStatus(); + break; + case "changeStatus": + $fileid = $k2->post('fileid'); + $rez = $this->changeStatus($fileid); + break; + case "searchMain": + $rez = $this->searchMainFolder(); + break; + case "checkFile": + $rez = $this->getExt(); + break; + case "getExtArr": + $rez = $this->getExtArr(); + break; + case "insExt": + $ext = $k2->get('ext'); + $rez = $this->checkExt($ext); + break; + case "getFolderRight": + $treeid = $k2->get('treeid');; + $rez = $this->getFolderRight('ajax', $treeid); + break; + default: + $rez = ''; + } + + return $rez; + } +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_ext.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_ext.php new file mode 100644 index 0000000..7c07989 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_ext.php @@ -0,0 +1,89 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select extid, typefileid, ext, del from vdExt", + 'table' => "vdExt", + 'typeid'=>1, + 'sortname' => 'ext', + 'sortorder' => 'asc', + 'caption' => 'Розширення', + /*'width' => '700',*/ + /*'is_edit' => true, + 'is_clone'=> false,*/ + + 'fields' => [ + ['field' => 'extid', + 'caption' => 'ID Розширення', + 'width' => '120', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + + ['field' => 'typefileid', + 'caption' => 'ID типу файлу', + 'width' => '200', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select typefileid as k, nametypefile as v from vdTypeFile" + ], + + ['field' => 'ext', + 'caption' => 'Розширення', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '75', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'checkbox', + 'hidden'=>true + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + + // $rez .= ' + // + // '; + return $rez; + } + + + + // Возвращаем контент + function content(){ + $rez=$this->showAdminDesign(); + return $rez; + } + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_history.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_history.php new file mode 100644 index 0000000..1fd89d6 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_history.php @@ -0,0 +1,87 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select h.histid, h.fileid, h.ordnum, h.datecreate, h.usercreate, f.filename + from vdHistory h + + LEFT JOIN vdFiles f + ON h.fileid=f.fileid", + + 'table' => "vdHistory", + 'typeid'=>1, + 'sortname' => 'ordnum', + 'sortorder' => 'desc', + 'caption' => 'Історія', + /*'is_edit' => false,*/ + 'fields' => [ + ['field' => 'histid', + 'caption' => 'ID Історіі', + 'width' => '80', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + + ['field' => 'filename', + 'caption' => 'Файл', // ВМЕСТО ЭТОГО ДОЛЖНО БЫТЬ НАЗВАНИЕ ФАЙЛА, ПОЛУЧЕННОЕ ИЗ ЗАПРОСА МОЕДИНЕНИЕМ + 'width' => '300', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'ordnum', + 'caption' => 'Сортировка', + 'width' => '80', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'datecreate', + 'caption' => 'Дата створення', + 'width' => '150', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'datetime' + ], + + ['field' => 'usercreate', + 'caption' => 'Користувач', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showAdminDesign(); + return $rez; + } + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_main.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_main.php new file mode 100644 index 0000000..b2641c5 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_main.php @@ -0,0 +1,840 @@ +Продивитись'; + public $rethist_btn = ''; + + + public $show_icon = ''; + public $rethist_icon = ''; + + + + + + + function getRights($treeid) + { + global $k2; + $rez = ['rez'=>[], 'err'=>'']; + + + $r=$k2->sql->sel( + 'SELECT treeid, roleid, rtree, wtree, admtree, rfile, wfile FROM vdTreeRight' + . ' WHERE treeid=:treeid ', + ['treeid'=>$treeid]); + + + if (trim($r['err'])<>''){ + $rez['err']='Ошибка в getRights:'.$r['err']; + return $rez; + }else{ + foreach ($r['data'] as $value) { + array_push($rez['rez'], $value); + } + } + + return json_encode($rez['rez']); + } +//*************Права на каталоги*********************** +// /** +// * Проверка существования прав на папку +// * @global type $k2 +// * @param type $users +// * @param type $treeid +// * @return type +// */ +// function checkUserRights($arr_rights) +// { +// global $k2; +// $rez = ''; +// $AND = ''; +// +// $AND = "AND roleid = '".$arr_rights['roleid']."'"; +// $sql = "SELECT tree_rightid FROM vdTreeRight WHERE treeid = '".$arr_rights['treeid']."' $AND "; +// foreach ($k2->db->query($sql) as $row) { +// $tree_rightid=$row['tree_rightid']; +// $rez = $tree_rightid; +// } +// +// return $rez; +// } +// +// /** +// * Обновление прав +// * @global type $k2 +// * @param type $check_rights +// * @param type $users +// * @param type $treeid +// * @param type $rtree +// * @param type $wtree +// * @param type $admtree +// * @return type +// */ +// function updateRights($arr_rights) +// { +// global $k2; +// $rez = ''; +// $sql = "UPDATE vdTreeRight SET rtree='".$arr_rights['rtree']."', wtree='".$arr_rights['wtree']."', +// admtree='".$arr_rights['admtree']."', rfile='".$arr_rights['rfile']."', wfile='".$arr_rights['wfile']."' +// WHERE tree_rightid ='".$arr_rights['check_rights']."' "; +// $err=$k2->sql->runSQL($sql); +// +// return $err; +// } +// +// /** +// * Вставка прав +// * @global type $k2 +// * @param type $users +// * @param type $treeid +// * @param type $rtree +// * @param type $wtree +// * @param type $admtree +// * @return type +// */ +// function insertRights($arr_rights) +// { +// global $k2; +// $md5_right = $k2->sys->getGUID(); +// $sql = "INSERT INTO vdTreeRight (tree_rightid, treeid, roleid, rtree, wtree, admtree, rfile, wfile) +// VALUES ('$md5_right', '".$arr_rights['treeid']."', '".$arr_rights['roleid']."', +// '".$arr_rights['rtree']."', '".$arr_rights['wtree']."', '".$arr_rights['admtree']."', +// '".$arr_rights['rfile']."', '".$arr_rights['wfile']."' +// )"; +// $err=$k2->sql->runSQL($sql); +// +// return $err; +// } +// +// /** +// * Рекурсивная установка прав +// * @global type $k2 +// * @param type $users +// * @param type $treeid +// * @param type $rtree +// * @param type $wtree +// * @param type $admtree +// * @return string +// */ +// function recursiveRight($arr_rights) +// { +// global $k2; +// $rez = ''; +// +// +// +// $sql = "SELECT treeid FROM vdTree WHERE parent_treeid = '".$arr_rights['treeid']."' "; +// foreach ($k2->db->query($sql) as $row) { +// $arr_rights['treeid']=$row['treeid']; +// $arr_rights['check_rights'] = $this->checkUserRights($arr_rights); +// if ($arr_rights['check_rights'] != ''){ +// $this->updateRights($arr_rights); +// } else { +// $this->insertRights($arr_rights); +// } +// $this->recursiveRight($arr_rights); +// } +// +// +// return $rez; +// } +// +// function setRights() +// { +// global $k2; +// $rez = ''; +// $arr_rights = []; +// $arr_rights['treeid'] = $k2->post('treeid'); +// $arr_rights['roleid'] = $k2->post('roleid'); +// $arr_rights['rtree'] = $k2->post('rtree'); +// $arr_rights['wtree'] = $k2->post('wtree'); +// $arr_rights['rfile'] = $k2->post('rfile'); +// $arr_rights['admtree'] = $k2->post('admtree'); +// $arr_rights['wfile'] = $k2->post('wfile'); +// $rez = $this->recursiveRight($arr_rights); +// return $rez; +// } +//***************************************************** + + + + + + + /** + * Таблица истории + * @global type $k2 + */ + function addHistory() + { + global $k2; + + $rez=''; + + + $WHERE = ''; + + if(isset($_GET['fileid'])){ + $fileid = $_GET['fileid']; + $WHERE = "WHERE h.fileid = '$fileid' "; + } + $grid2 = $k2->ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "SELECT h.histid, h.fileid, h.ordnum, h.datecreate, h.usercreate, f.filename, h.md5_file + + FROM vdHistory h + + LEFT JOIN vdFiles f + ON h.fileid=f.fileid + + $WHERE + ", + + 'table' => "vdHistory", + 'typeid'=>1, + 'sortname' => 'ordnum', + 'height' => 350, + 'sortorder' => 'desc', + 'caption' => 'Історія', + 'is_edit' => false, + 'fields' => [ + ['field' => 'histid', + 'caption' => 'ID Історіі', + 'width' => '80', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + ['field' => 'show_file', + 'caption' => 'П', + 'width' => '30', + 'hidden' => false, + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'url1' => '', + 'class'=>'anone', + 'caption1' => $this->show_icon, + 'exp' => '($row["ordnum"]!==0)', + 'target1'=>'_self', + ] + ], + ['field' => 'return_hist', + 'caption' => 'В', + 'width' => '30', + 'hidden' => false, + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'condition', + 'cond' => [ + 'url1' => '', + 'class'=>'anone', + 'caption1' => $this->rethist_icon, + 'exp' => '($row["ordnum"]!==0)', + 'target1'=>'_self', + ] + ], + ['field' => 'filename', + 'caption' => 'Файл', + 'width' => '180', + 'readonly' => false, + 'align' => 'left' + ], + ['field' => 'md5_file', + 'caption' => 'MD5', + 'width' => '150', + 'hidden' => true, + 'readonly' => true, + 'align' => 'left' + ], + ['field' => 'fileid', + 'caption' => 'ID Файл', + 'width' => '150', + 'readonly' => false, + 'align' => 'left', + 'hidden'=> true + ], + + ['field' => 'ordnum', + 'caption' => 'Сортировка', + 'width' => '80', + 'readonly' => false, + 'align' => 'left' + ], + ['field' => 'datecreate', + 'caption' => 'Дата створення', + 'width' => '130', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'datetime' + ], + ['field' => 'usercreate', + 'caption' => 'Користувач', + 'width' => '130', + 'readonly' => false, + 'align' => 'left' + ], + + ], + + ]; + + + $rez .= $grid2->simpleTable($arr); + $rez .= " "; + return $rez; + } + + + function checkRight($treeid) + { + global $k2; + $rez = ''; + + $sql = "SELECT tree_rightid FROM vdTreeRight WHERE treeid = '$treeid' "; + foreach ($k2->db->query($sql) as $row) { + + if (isset($row['tree_rightid'])){ + $tree_rightid = $row['tree_rightid']; + } + $rez = $tree_rightid; + } + + return $rez; + } + + /** + * + * @global type $k2 + * @param type $treeid + */ + function reqursCheckRole($treeid) + { + global $k2; + $rez = ''; + $sql = "SELECT parent_treeid FROM vdTree WHERE treeid = '$treeid' limit 1"; + foreach ($k2->db->query($sql) as $row) { + $parent_treeid=$row['parent_treeid']; + if ($parent_treeid == ''){ + $is_right = '1'; + } else { + $is_right = $this->checkRight($parent_treeid); + } + } + if ($parent_treeid !== '' && $is_right !== ''){ + $this->reqursCheckRole($parent_treeid); + } else { + echo $is_right; + } + } + + /** + * + * @global type $k2 + * @return type + */ + function checkRole() + { + global $k2; + $rez=''; + $treeid = $k2->get('treeid'); + $is_right = $this->reqursCheckRole($treeid); + return $is_right; + } + + + /** + * Таблица прав + * @global type $k2 + */ + function changeRole($treeid) + { + global $k2; + + $rez=''; + $is_add = true; + $is_edit = true; + + if(!$k2->get('grid_id')){ + $path = $this->folderPathName($treeid); + } + + + + $cur_role = $k2->auth->roleid; + if($cur_role !== '-1'){ + $is_add = false; + $is_edit = false; + + } + $WHERE = ''; + + if(isset($treeid)){ + + $WHERE = "WHERE treeid = '$treeid' "; + } + $grid2 = $k2->ins_comp2('k2phpgrid', $this); + + $arr = ['select' => "select tree_rightid, treeid, username, roleid, rtree, wtree, admtree, rfile, wfile, rmyfile, comment_right from vdTreeRight $WHERE", + 'table' => "vdTreeRight", + 'divtable' => "vdTreeRight12", + 'typeid'=>1, + 'sortname' => 'tree_rightid', + 'sortorder' => 'asc', + 'height'=>650, + 'caption' => 'Права', + //'grid_onload' => 'do_onload()', + 'is_add'=> $is_add, + 'is_edit' => $is_edit, + 'footer' => false, + 'fields' => [['field' => 'tree_rightid', + 'caption' => 'ID прав', + 'width' => '120', + 'hidden' => true, + 'readonly' => true, + 'align' => 'center' + ], + + ['field' => 'treeid', + 'caption' => 'Папка', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'hidden' => true, + 'def_value'=>$treeid, +// 'type_field' => 'DropDown', +// 'multy' => false, +// 'def_value'=>$treeid, +// 'sql' => "select treeid as k, treename as v from vdTree" + ], + +// ['field' => 'username', +// 'caption' => 'Користувач', +// 'width' => '150', +// 'hidden' => true, +// 'readonly' => false, +// 'align' => 'left', +//// 'type_field' => 'DropDown', +//// 'multy' => false, +//// 'sql' => "select user_id as k, login as v from k2users " +// ], + + ['field' => 'roleid', + 'caption' => 'Користувач', + 'width' => '165', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select r.roleid as k, r.rolename as v + from k2roles r + " + ], + + ['field' => 'rtree', + 'caption' => 'Читати
папку', + 'width' => '65', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + + ['field' => 'wtree', + 'caption' => 'Писати
папку', + 'width' => '65', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + + ['field' => 'admtree', + 'caption' => 'Адмініструвати
папку', + 'width' => '100', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + + ['field' => 'wfile', + 'caption' => 'Писати
файл', + 'width' => '65', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + ['field' => 'rfile', + 'caption' => 'Читати
файл', + 'width' => '75', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + ['field' => 'rmyfile', + 'caption' => 'Тільки
свої файли', + 'width' => '75', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + + ['field' => 'comment_right', + 'caption' => 'Примітки', + 'width' => '100', + 'readonly' => false, + 'align' => 'left' + ], + + ] + ]; + + $rez .= $grid2->simpleTable($arr); + $rez .= ""; + + return $rez; + } + + + function getTree($treeid, $mainfolder) + { + global $k2; + + $rez=''; + $cur_role = $k2->auth->roleid; + if (($cur_role == '-1')){ + $tree_r = ''; + }else{ + $tree_r = "and (SELECT vdTreeRight(t.treeid, '$cur_role', 20)=1)"; + } + $params=[ + 'name'=>'VDoc', + + 'tree'=>[ + 'select' => "select t.treeid, t.treename, t.parent_treeid, + (select count(*) from vdTree tc where tc.parent_treeid=t.treeid) as ccount, + + if(exists(select r.tree_rightid from vdTreeRight r where r.treeid=t.treeid), '', '') as r + from vdTree t where (1=1) $tree_r + ", + 'id' => 'treeid', + 'name' => 'treename', + 'parentid' => 'parent_treeid', + 'tablename' => 'vdTree', + 'divtable' => 'vdTreew'.$treeid, + 'caption' => 'Категорії', + 'is_add'=>false, + 'height'=> '350', + 'sortname' => 'treename', + //'grid_onload' => 'treeOnload(\'gbox_vdTreew'.$treeid.'\', \''.$treeid.'\')', + 'sortorder' => 'asc', + 'fields' => [ + ['field' => 'treeid', + 'caption' => 'ID', + 'width' => '120', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + ['field' => 'treename', + 'caption' => 'Категорії', + 'width' => '400', + 'readonly' => false, + 'align' => 'left', + 'autowidth'=>true + ], + ['field' => 'parent_treeid', + 'caption' => 'ID попереднього елементу', + 'width' => '150', + 'readonly' => false, + 'align' => 'left', + 'hidden'=>true + ], + ], + + ], + ]; + $report = $k2->ins_comp('k2tree_frame'); + $rez .=$report->tree($params); + $div_close = 'vdTreew'.$treeid.'_pager'; + //$showtr = 'vdTreew'.$treeid.' tr#'.$mainfolder.''; + + $rez .= ""; + + + return $rez; + } + + /** + * Рекурсивная функция по поиску пути каталога + * @global type $k2 + * @param type $treeid + */ + function folderPath($treeid, $folder_path = []) + { + global $k2; + + //$folder_path = []; + + $r=$k2->sql->sel('SELECT parent_treeid FROM vdTree WHERE (treeid=:treeid)', ['treeid'=>$treeid]); + + $parent_treeid = $r['data'][0]['parent_treeid']; + + if ($parent_treeid !== ''){ + array_push($folder_path, $parent_treeid); + $this->folderPath($parent_treeid, $folder_path); + } else { + echo json_encode($folder_path); + } + + } + + + /** + * Рекурсивная функция по поиску пути названий каталога + * @global type $k2 + * @param type $treeid + */ + function folderPathName($treeid, $arr_name = []) + { + global $k2; + + $r=$k2->sql->sel('SELECT parent_treeid, treename FROM vdTree WHERE (treeid=:treeid)', ['treeid'=>$treeid]); + + $parent_treeid = $r['data'][0]['parent_treeid']; + $treename = $r['data'][0]['treename']; + + if ($parent_treeid !== null){ + array_push($arr_name, $treename); + $this->folderPathName($parent_treeid, $arr_name); + } else { + $arr_name = array_reverse($arr_name); + $path = ''; + foreach ($arr_name as $value) { + $path .= $value.' / '; + } + $path .='
'; + echo $path; + } + + } + + + /** + * Подключение vdoc + * @global type $k2 + * @return type + */ + function vdocview(){ + global $k2; + + $rez = ''; + $vdoc = $k2->ins_comp('k2vdoc'); + + $rez .= $vdoc->getVDoc(); + + return $rez; + } + + + function content(){ + global $k2; + + if(!$k2->auth->isAuth()){ + die('Access is denied (Auth)'); + } + + $event = $k2->get('event'); + + switch ($event) + { + + case "rights": + $treeid = $k2->get('treeid'); + $rez=$this->getRights($treeid); + break; + case "hist": + $rez=$this->addHistory(); + break; + case "getTree": + $treeid = $k2->get('treeid'); + $mainfolder = $k2->get('main_folder'); + $rez=$this->getTree($treeid, $mainfolder); + break; + case "changeRole": + $treeid = $k2->get('treeid'); + $rez=$this->changeRole($treeid); + break; + case "checkRole": + $rez=$this->checkRole(); + break; + case "folderPath": + $treeid = $k2->get('treeid'); + $rez=$this->folderPath($treeid); + break; + default: + $rez = $this->vdocview(); + + } + + return $rez; + } + + + +} \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_proj.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_proj.php new file mode 100644 index 0000000..10301bf --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_proj.php @@ -0,0 +1,69 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select projid, projname, proj_comment from vdProj", + 'table' => "vdProj", + 'typeid'=>1, + 'sortname' => 'projid', + 'sortorder' => 'asc', + 'caption' => 'Проекти', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'projid', + 'caption' => 'ID Проекту', + 'width' => '120', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + + ['field' => 'projname', + 'caption' => 'Назва проекту', + 'width' => '250', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'proj_comment', + 'caption' => 'Примітки', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showAdminDesign(); + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_status.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_status.php new file mode 100644 index 0000000..88f4f3b --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_status.php @@ -0,0 +1,89 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select statid, statname, statcomment, del, ord_stat from vdStat", + 'table' => "vdStat", + 'typeid'=>1, + 'sortname' => 'statname', + 'sortorder' => 'asc', + 'caption' => 'Статуси документів', + /*'is_edit' => true, + 'is_clone'=> false,*/ + 'fields' => [ + ['field' => 'statid', + 'caption' => 'ID Статусу', + 'width' => '120', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + + ['field' => 'statname', + 'caption' => 'Назва статусу', + 'width' => '250', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'ord_stat', + 'caption' => 'Сортировка', + 'width' => '100', + 'readonly' => false, + 'align' => 'left' + ], + + + ['field' => 'statcomment', + 'caption' => 'Примітки', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '75', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'checkbox', + 'hidden'=>true + ], + + ] + ]; + + $rez .= $grid->simpleTable($arr); + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showAdminDesign(); + return $rez; + } + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_tabu.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_tabu.php new file mode 100644 index 0000000..f793226 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_tabu.php @@ -0,0 +1,89 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select tabuid, tabuname, del from vdTabuFiles", + 'table' => "vdTabuFiles", + 'typeid'=>1, + 'sortname' => 'tabuid', + 'sortorder' => 'asc', + 'caption' => 'Заборонені файли', + /*'is_edit' => true,*/ + 'fields' => [ + ['field' => 'tabuid', + 'caption' => 'ID ', + 'width' => '120', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + + ['field' => 'tabuname', + 'caption' => 'Назва', + 'width' => '250', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '80', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'checkbox', + 'def_value' => '0', + ] + ] + ]; + + $rez .= $grid->simpleTable($arr); + return $rez; + } + + +// function rights() +// { +// global $k2; +// $rez = ''; +// +// +// $sql = "call vdTreeRights('30720d13939210efeb56ee29469c269a', 'adfb6c02c24f7e34f61fc5c22ec77961', 5, @rtree, @wtree, @admtree, @rfile, @wfile)"; +// $qwer = $k2->sql->runProc($sql); +// +// $sql2 = "SELECT vdFileRight('1fc496477c8814e66ef7a45271f2414e', 'c15d569b6d17436eb6c360aaf110eed1', 5)"; +// $qwer2 = $k2->sql->runFunc($sql2); +// +// +// print_r($qwer2['data']); +// +// return $rez; +// } + + // Возвращаем контент + function content(){ + //$rez = $this->rights(); + $rez .= $this->showTabuFiles(); + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_treeright.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_treeright.php new file mode 100644 index 0000000..0ea8137 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_treeright.php @@ -0,0 +1,156 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select tree_rightid, r.treeid, (SELECT vdFolderPath(r.treeid)) as treename, username, roleid, rtree, wtree, admtree, rfile, wfile, rmyfile, comment_right from vdTreeRight r + left join + vdTree t + on t.treeid = r.treeid", + 'table' => "vdTreeRight", + 'typeid'=>1, + 'sortname' => 'tree_rightid', + //'multiselect' => true, + 'autowidth' => false, + 'rownumbers' => true, + 'sortorder' => 'asc', + 'caption' => 'Права', + /*'is_edit' => true,*/ + 'footer' => true, + 'fields' => [ + ['field' => 'tree_rightid', + 'caption' => 'ID прав', + 'width' => '120', + 'readonly' => true, + 'hidden' => true, + 'align' => 'center' + ], + + ['field' => 'username', + 'caption' => 'Користувач', + 'width' => '100', + 'readonly' => false, + 'hidden' => true, + 'align' => 'left', +// 'type_field' => 'DropDown', +// 'multy' => false, +// 'sql' => "select user_id as k, login as v from k2users" + ], + ['field' => 'roleid', + 'caption' => 'Роль', + 'width' => '200', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => 'select roleid as k, rolename as v + from k2roles + order by rolename' + ], + ['field' => 'treename', + 'caption' => 'Папка', + 'width' => '520', + 'readonly' => true, + 'align' => 'left', +// 'type_field' => 'DropDown', +// 'multy' => false, +// 'sql' => "select t.treeid as k, t.treename as v from vdTree t limit 150 " + ], + ['field' => 'rtree', + 'caption' => 'Читати
дерево', + 'width' => '60', + 'readonly' => false, + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + ['field' => 'wtree', + 'caption' => 'Писати
дерево', + 'width' => '60', + 'readonly' => false, + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + ['field' => 'admtree', + 'caption' => 'Адмін.
дерево', + 'width' => '60', + 'readonly' => false, + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + ['field' => 'wfile', + 'caption' => 'Писати
файл', + 'width' => '60', + 'readonly' => false, + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + ['field' => 'rfile', + 'caption' => 'Читати
файл', + 'width' => '60', + 'readonly' => false, + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + ['field' => 'rmyfile', + 'caption' => 'Тільки
свої файли', + 'width' => '60', + 'readonly' => false, + 'type_field' => 'checkbox', + 'def_value' => 1, + 'align' => 'center' + ], + + ['field' => 'comment_right', + 'caption' => 'Примітки', + 'width' => '300', + 'hidden' => true, + 'readonly' => false, + 'align' => 'left' + ] + + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + // Возвращаем контент + function content(){ + global $k2; + if(!$k2->auth->isSuperAdmin()){ + die('Access is denied (Auth)'); + } + $rez=$this->showAdminDesign(); + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_typecat.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_typecat.php new file mode 100644 index 0000000..618e3d3 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_typecat.php @@ -0,0 +1,76 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select cattpid, cattypename, del from vdCategorTypeFile", + 'table' => "vdCategorTypeFile", + 'typeid'=>1, + 'sortname' => 'cattpid', + 'sortorder' => 'asc', + 'rows'=>10, + //'height' => 100, + 'caption' => 'Категорії типів файлів', + /*'is_edit' => true, + 'is_clone'=>false,*/ + 'fields' => [ + ['field' => 'cattpid', + 'caption' => 'ID категорії типу файлів', + 'width' => '120', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + + ['field' => 'cattypename', + 'caption' => 'Назва категорії типу файлів', + 'width' => '300', + 'readonly' => false, + 'align' => 'left' + ], + + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '75', + 'readonly' => false, + 'align' => 'center', + 'type_field' => 'checkbox', + 'hidden'=>true + ] + + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showAdminDesign(); + return $rez; + } + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_typedoc.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_typedoc.php new file mode 100644 index 0000000..fdccc82 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_typedoc.php @@ -0,0 +1,90 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select typedocid, typedocname, short_name, comment_typedoc, del from vdTypeDoc", + 'table' => "vdTypeDoc", + 'typeid'=>1, + 'sortname' => 'typedocid', + 'sortorder' => 'asc', + 'caption' => 'Типи документів', + /*'autowidth' => false, + 'autoresize' => true, + 'is_edit' => true, + 'is_clone'=> false,*/ + 'fields' => [ + ['field' => 'typedocid', + 'caption' => 'ID типу документа', + 'width' => '220', + 'readonly' => true, + 'align' => 'left', + 'hidden'=>true + ], + + ['field' => 'typedocname', + 'caption' => 'Назва типу документа', + 'width' => '350', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'short_name', + 'caption' => 'Скорочена
назва', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'comment_typedoc', + 'caption' => 'Примітка', + 'width' => '150', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '75', + 'readonly' => true, + 'align' => 'center', + 'type_field' => 'checkbox', + 'hidden'=>true + ] + + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showAdminDesign(); + return $rez; + } + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_types.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_types.php new file mode 100644 index 0000000..afeae5d --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_types.php @@ -0,0 +1,99 @@ +ins_comp2('k2phpgrid', $this); + + $arr = [ + 'select' => "select typefileid, nametypefile, cattpid, icontypefile, del from vdTypeFile", + 'table' => "vdTypeFile", + 'typeid'=>1, + 'sortname' => 'typefileid', + 'sortorder' => 'asc', + 'caption' => 'Типи файлів', + /*'is_edit' => true, + 'is_clone'=> false,*/ + 'fields' => [ + ['field' => 'typefileid', + 'caption' => 'ID типу файлів', + 'width' => '120', + 'readonly' => true, + 'align' => 'center', + 'hidden'=>true + ], + + ['field' => 'nametypefile', + 'caption' => 'Назва типу файлів', + 'width' => '200', + 'readonly' => false, + 'align' => 'left' + ], + + ['field' => 'icontypefile', + 'caption' => 'Іконка', + 'width' => '70', + 'readonly' => false, + 'align' => 'center', + 'type_field' => 'image', + 'params' => [ + 'align'=>'center' + /*'height'=>100, + 'width'=>200*/ + ], + 'align' => 'left' + ], + + ['field' => 'cattpid', + 'caption' => 'Категорія типу файлів', + 'width' => '300', + 'readonly' => false, + 'align' => 'left', + 'type_field' => 'DropDown', + 'multy' => false, + 'sql' => "select cattpid as k, cattypename as v from vdCategorTypeFile" + ], + + ['field' => 'del', + 'caption' => 'Видалення', + 'width' => '75', + 'readonly' => false, + 'align' => 'center', + 'type_field' => 'checkbox', + 'hidden'=>true + ], + + ] + ]; + + $rez .= $grid->simpleTable($arr); + + return $rez; + } + + // Возвращаем контент + function content(){ + $rez=$this->showAdminDesign(); + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_upload.php b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_upload.php new file mode 100644 index 0000000..09f27e3 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/k2vdocsadmin_upload.php @@ -0,0 +1,1672 @@ +'', 'err'=>'']; + + if (trim($k2->get('main_folder'))<>'') { + $rez['rez'] = $k2->get('main_folder'); + } else { + $rez['rez'] = $k2->post('main_folder'); + } + + if (trim($rez['rez'])==''){ + $rez['err']='Корневий каталог не може бути порожнім! (folderProj)'; + $k2->log->err($rez['err']); + } + + return $rez; + } + + /** + * Получение информации о файле + * @global type $k2 + * @param type $fileid + * @return type + */ + function fileInfo($fileid) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $r=$k2->sql->sel('SELECT treeid, datecreate FROM vdFiles WHERE (fileid=:fileid)', ['fileid'=>$fileid]); + + + if(count($r['data'])==0){ + $rez['err']='Error. Файл не знайдено '; + return $rez; + } + + $rez['rez'] = $r['data'][0]; + + return $rez; + } + + + /** + * Получение информации о истории файла + * @global type $k2 + * @param type $fileid + * @return type + */ + function fileHistInfo($fileid) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $r=$k2->sql->sel('SELECT histid, datecreate FROM vdHistory WHERE (fileid=:fileid)', ['fileid'=>$fileid]); + + + if(count($r['data'])==0){ + $rez['err']='Error. Файл не знайдено '; + return $rez; + } + + $rez['rez'] = $r['data']; + + return $rez; + } + + + /** + * + * @global type $k2 + * @return string + */ + function changeHistory() + { + global $k2; + $rez = ''; + $fileid = $k2->get('fileid'); + $histid = $k2->get('histid'); + $md5_file = $k2->get('md5_file'); + $md5_hist = $this->getID(); + + + $sql = "INSERT INTO vdHistory + (histid, fileid, datecreate, usercreate, md5_file) + VALUES ('$md5_hist', '$fileid', now(), '".$k2->auth->login."', '$md5_file') "; + + try { + $k2->db->exec($sql); + }catch (Exception $e) { + return "Помилка: $fileid. ".$e->getMessage()."\n"; + } + $sql2 = "UPDATE vdFiles SET dateupdate = now(), site_history = '$md5_hist' WHERE fileid ='$fileid'"; + try { + $k2->db->exec($sql2); + }catch (Exception $e) { + return "Помилка: $fileid. ".$e->getMessage()."\n"; + } + + $arr_file = $this->fileInfo($fileid); + + $datecreate = $arr_file['rez']['datecreate']; + + $path = $this->getPath($datecreate); + + if (trim($path['err'])<>''){ + $rez['err']=$path['err']; + return $rez; + } + + $old_file = $path['rez'].'/'.$histid; + $new_file = $path['rez'].'/'.$md5_hist; + + if (copy($old_file, $new_file)) { + $mess = 'Успішно змінено історю файлу '.$fileid; + $k2->log->mess($mess); + }else{ + $mess = 'Невдалося змінити історю файлу '.$fileid; + $k2->log->err($mess); + return $mess; + } + + + return $rez; + } + + /** + * Формирование пути на основании даты создания + * @global type $k2 + * @param type $datecreate + * @return string + */ + function getPath($datecreate) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $date = substr($datecreate, 0, 10); + $arr_date = explode('-', $date); + + // Проверка формата даты + if (count($arr_date)<>3){ + $rez['err']='Не вірний формат дати (getPath 1): '.$date; + $k2->log->err($rez['err']); + return $rez; + } + + // Получение корневого каталога + $main_folder = $this->folderProj(); + if (trim($main_folder['err'])<>''){ + $rez['err']=trim($main_folder['err']); + $k2->log->err('Помилка (getPath 2).'.$rez['err']); + return $rez; + } + + $year = $arr_date[0]; + $month = $arr_date[1]; + $day = $arr_date[2]; + + $rez['rez'] = nslashe($k2->rootdir.'/'.'vdupload'.'/'.trim($main_folder['rez']).'/'.$year.'/'.$month.'/'.$day); + return $rez; + } + + + // Сообщение на экран + function vdoc_err($mess) + { + global $k2; + $k2->log->err($mess, false); + return json_encode(array('res'=>FALSE,'data'=>$mess)); + } + + + function vdoc_mess($mess) + { + global $k2; + $k2->log->mess($mess); + return json_enscode(array('res'=>TRUE,'data'=>$mess)); + } + + + /** + * Парсинг загружаемого файла + * @param type $i + * @return type + */ + function parseFile($i) + { + global $k2; + $rez = ['rez'=>[], 'err'=>'']; + + //$file_date = []; + + $md5_hist = $this->getID(); + $md5_fileid = $this->getID(); + $treeid = $k2->post('treeid'); + if (trim($treeid)==''){ + $rez['err']='Error. TreeID is null! '; + return $rez; + } + if(isset($_FILES)){ + $ext = $k2->sys->getExt($_FILES["files"]["name"][$i]); + $ext = strtolower($ext); + $file = $k2->sys->getFilename($_FILES["files"]["name"][$i])/*.'.'.$ext*/; + $file = str_replace('.'.$ext, '', $_FILES["files"]["name"][$i]); + $size_file = $_FILES["files"]["size"][$i]/1024; + $md5_file = md5_file($_FILES['files']['tmp_name'][$i]); + + $rez['rez']['begin_name'] = $_FILES["files"]["name"][$i]; + $rez['rez']['name'] = $file; + $rez['rez']['ext'] = $ext; + $rez['rez']['size_file'] = $size_file; + $rez['rez']['md5_file'] = $md5_file; + $rez['rez']['treeid'] = $treeid; + $rez['rez']['md5_hist'] = $md5_hist; + $rez['rez']['md5_fileid'] = $md5_fileid; + } else { + $rez['err']='Error. Файл не отримано!'; + return $rez; + } + + return $rez; + } + + /** + * Возврат записи истории файла + * @global type $k2 + * @param type $fileid + * @param type $md5_file + * @param type $size_file + * @return type + */ + function updateFile($fileid, $file_date) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + //вставка в таблицу истории + $rez=$this->addHistory($fileid, $file_date['md5_file'], $file_date['md5_hist']); + + $err = $k2->sql->upd( + "UPDATE vdFiles + SET + statid=:statid, + size_file=:size_file, + working_user=:working_user, + userupdate=:userupdate, + site_history =:site_history, + dateupdate = :dateupdate + WHERE fileid = :fileid ", + + ['fileid'=>$fileid, + 'statid' => $this->status_draft, + 'size_file' => $file_date['size_file'], + 'working_user' => '', + 'userupdate' => '{login}', + 'site_history' => $file_date['md5_hist'], + 'dateupdate' => '{now}'] + + ); + + + if($err['err']!==''){ + $k2->log->err('Помилка вставки в історію (updateFile 2): '.$err['err']); + $rez['err'] = $err['err']; + return $rez; + } + + return $rez; + } + + /** + * Тип файла на основании расширения + * @global type $k2 + * @param type $ext + * @return type + */ + function getExt($ext='') + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; + $r=$k2->sql->sel('SELECT typefileid FROM vdExt WHERE (ext=:ext)', ['ext'=>$ext]); + + if(count($r['data'])<>0){ + $arr_file = $r['data'][0]; + $rez['rez'] = $arr_file['typefileid']; + } + + + if(trim($rez['rez']) == ''){ + $rez['rez']=null; + } + + return $rez; + } + + /** + * Вставка в историю + * @global type $k2 + * @param type $fileid + * @param type $md5 + * @param type $histid + * @return type + */ + function addHistory($fileid, $md5='', $histid=''){ + global $k2; + + if (trim($histid)==''){ + $histid=$this->getID(); + } + + //вставка в таблицу истории + $rez = $k2->sql->ins_arr( + ['table' => 'vdHistory', + 'fields' => [ + 'histid'=>$histid, + 'fileid'=>$fileid, + 'datecreate'=>'{now}', + 'usercreate'=>'{login}', + 'md5_file'=>$md5 + ] + ] + ); + + if($rez['err']!==''){ + $err = $this->delFile($fileid); + $rez['err'] = $rez['err']; + return $rez; + } + + return $rez; + + } + + /** + * Получение прав через хранимую процедуру + * @global type $k2 + * @param type $treeid + * @return int + */ + function getFolderRight($treeid) + { + global $k2; + $rez = ['rez'=>[], 'err'=>'']; + + if (($treeid == '')||($treeid == null)){ + $rez['err']='Порожній treeid. (getFolderRight 1)'; + $this->vdoc_err($rez['err']); + return 0; + } + + $cur_role = $k2->auth->roleid; + if (($cur_role == '')||($cur_role == null)||(!$k2->auth->isAuth())){ + $rez['err']='Порожній roleid. (getFolderRight 2)'; + $this->vdoc_err($rez['err']); + return 0; + } + + + + $sql = "call vdTreeRights('$treeid', '$cur_role', 20)"; + $arr_r = $k2->sql->runProc($sql); + + + + $rez['rez'] = $arr_r['data'][0]; + if (($arr_r['err']!=='')||($rez['rez']==null)){ + $rez = $this->setRights(0); + } + if ($cur_role == '-1'){ + $rez = $this->setRights(1); + } + + return $rez; + + + } + + /** + * Установка прав + * @param type $arg + * @return type + */ + function setRights($arg) + { + $rez = ['rez'=>[], 'err'=>'']; + $rez['rez']['rtree'] = $arg; + $rez['rez']['wtree'] = $arg; + $rez['rez']['admtree'] = $arg; + $rez['rez']['rfile'] = $arg; + $rez['rez']['wfile'] = $arg; + + return $rez; + } + + /** + * Вставка нового файла + * @global type $k2 + * @return type + */ + function insertNewFile($file_date) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $md5_fileid = $file_date['md5_fileid']; + $histid = $file_date['md5_hist']; + //$file_date['md5_fileid'] = $md5_fileid; + $typefileid = $this->getExt($file_date['ext']); + + if($typefileid['err']!==''){ + $rez['err'] = $typefileid['err']; + return $rez; + } + $filename = ''; + if($file_date['name']){ + $filename = $file_date['name']; + } + $filename_h = $filename; + if ($file_date['filename_h']) { + $filename_h = $file_date['filename_h']; + } + + //вставка в таблицу файлов + $err = $k2->sql->ins_arr( + ['table' => 'vdFiles', + 'fields' => [ + 'fileid'=>$md5_fileid, + 'treeid'=>$file_date['treeid'], + //'filename_h'=>$filename_h, + 'filename'=>$filename, + 'fileext'=>$file_date['ext'], + 'size_file'=>$file_date['size_file'], + 'datecreate'=>'{now}', + 'dateupdate'=>'{now}', + 'usercreate'=>'{login}', + 'userupdate'=>'{login}', + 'statid'=>$this->status_draft, + //'site_history'=>$histid, + 'typefileid'=>$typefileid['rez'], + 'md5_file'=>$file_date['md5_file'] + ] + ] + ); + + if($err['err']!==''){ + $rez['err'] = $err['err']; + return $rez; + } + + + + //вставка в таблицу истории + $rez = $this->addHistory($md5_fileid, $file_date['md5_file'], $histid); + + if($rez['count']==1){ + //вставка hash истории в таблицу файлов + $rez = $this->insFileHist($md5_fileid, $histid); + } + + return $rez; + } + + /** + * Запись истории в таблице файлов + * @param type $md5_fileid + * @param type $histid + * @return type + */ + function insFileHist($md5_fileid, $histid) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + $err = $k2->sql->upd( + "UPDATE vdFiles + SET + site_history =:site_history + WHERE fileid =:fileid ", + [ + 'site_history' => $histid, + 'fileid'=>$md5_fileid + ] + ); + if($err['err']!==''){ + $k2->log->err('Помилка вставки історії (insFileHist1): '.$err['err']); + $rez['err'] = $err['err']; + return $rez; + } + + return $rez; + } + + + /** + * Запуск загрузки файла + * @global type $k2 + * @param type $i + * @param type $path + * @return string + */ + function doUpload($i, $path, $file_date) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $new_file=$path.'/'.$file_date['md5_hist']; + + //print_r($_FILES); + + $uploadComplete = move_uploaded_file($_FILES["files"]["tmp_name"][$i], $new_file); + + if($uploadComplete) { + $rez['rez'] = 'Файл успішно завантажено'; + $k2->log->mess($rez['rez'], false); + } else { + $rez['err'] = 'Завантажити файл не вдалось (doUpload): '.$new_file; + $del = $this->delHist($file_date['md5_fileid']); + $del2 = $this->delFile($file_date['md5_fileid']); + $k2->log->err($rez['err']); + } + + return $rez; + } + + + + + /** + * Загрузка файла + * @global type $k2 + */ + function uploadFile() + { + global $k2; + $res = []; + $i = 0; + $treeid = $k2->post('treeid'); + $arr_right = $this->getFolderRight($treeid); + // Обработка результата функции проверки прав + if (trim($arr_right['err'])<>''){ + return $this->vdoc_err('Помилка отримання прав. (uploadFile 0) '.$arr_right['err']); + }else{ + $arr_right = $arr_right['rez']; + } + + if($arr_right['wfile'] == 0){ + return $this->vdoc_err('У Вас не вистачає прав для завантаження файлу'); + } + + error_reporting (0); + + + foreach ($_FILES["files"]["error"] as $key => $error) + { + //$i=$key; // Временно закрыл... + $file_date = $this->parseFile($i); + + // Обработка результата функции + if (trim($file_date['err'])<>''){ + return $this->vdoc_err('Помилка парсінгу файлів. (uploadFile 1) '.$file_date['err']); + }else{ + $file_date=$file_date['rez']; + } + + $check_file = $this->checkFile($file_date); + if (trim($check_file['err'])<>''){ + $rez['err']=$check_file['err']; + return $rez; + } + $fileid = $k2->post('fileid'); + + + if ($check_file['rez'] == 0) { + + if ($error == UPLOAD_ERR_OK) { + $md5_fileid = $this->getID(); + + + if($fileid==''){ + + $upd=$this->insertNewFile($file_date); + $datecreate = date("Y-m-d H:m:s"); + + }else { + $md5_hist = $this->getID(); + $file_date['md5_fileid'] = $fileid; + $file_date['md5_hist'] = $md5_hist; + + $upd=$this->updateFile($fileid, $file_date); + + $date_file = $this->fileInfo($fileid); + if (trim($date_file['err'])<>''){ + return $this->vdoc_err('Помилка отримання інформації про файл. (uploadFile 3) '.$date_file['err']); + } + + $datecreate = $date_file['rez']['datecreate']; + + } + + // Внесение в историю + if (trim($upd['err'])<>''){ + return $this->vdoc_err('Помилка внесення в історію. (uploadFile 2) '.$upd['err']); + } + + + $path = $this->getPath($datecreate); + if (trim($path['err'])<>''){ + $del = $this->delHist($file_date['md5_fileid']); + $del2 = $this->delFile($file_date['md5_fileid']); + return $this->vdoc_err('Помилка при отриманні шляху. (uploadFile 4) '.$path['err']); + } + + if (!$k2->sys->forceDir($path['rez'])){ + $del = $this->delHist($file_date['md5_fileid']); + $del2 = $this->delFile($file_date['md5_fileid']); + return $this->vdoc_err('Не вдалось створити рекурсивно каталог (uploadFile 5): '.$path['rez']); + } + + + $upl=$this->doUpload($i, $path['rez'], $file_date); + if (trim($upl['err'])<>''){ + return $this->vdoc_err('Помилка завантаження файлу. (uploadFile 6) '.$upl['err']); + } + + } + else + { + return $this->vdoc_err('Помилка при завантаженні файлу: '.$file_date['name'].'.'.$file_date['ext'].'-'.$error.' beginFileName='.$file_date['begin_name']); + } + } elseif($check_file['rez'] == 2) { + $k2->log->mess('Тимчасовий файл не завантажено: '.$file_date['name'].'.'.$file_date['ext'].'-'.$error.' beginFileName='.$file_date['begin_name'], $isshow=false); + } else { + $k2->log->mess('Такий файл вже існує: '.$file_date['name'].'.'.$file_date['ext'].'-'.$error.' beginFileName='.$file_date['begin_name'], $isshow=false); + } + + $k2->log->mess('Вдале завантаження файлу: '.$file_date['name'].'.'.$file_date['ext'].'-'.$error.' beginFileName='.$file_date['begin_name'], $isshow=false); + + + $i++; + } + + return json_encode(['res'=>TRUE,'data'=>$res]); + + } + + /** + * Проверка на наличие папки + * @global type $k2 + * @param type $treename + * @param type $parent_treeid + * @return type + */ + function checkFolder($treename, $parent_treeid="") + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + $r=$k2->sql->sel( + 'SELECT count(treeid) AS cnt FROM vdTree' + . ' WHERE (treename=:treename) AND (parent_treeid=:parent_treeid)', + ['treename'=>$treename, 'parent_treeid'=>$parent_treeid]); + + if (trim($r['err'])<>''){ + $rez['err']=$r['err']; + }else{ + $rez['rez']=$r['data'][0]['cnt']; + } + + return $rez; + } + + function insFolder($i) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $file_path = explode("/", $_POST['file_path'][$i]); + $end_path = array_pop($file_path); + + $treeid = $k2->post('treeid'); + if (trim($treeid)==''){ + $rez['err']='Error. TreeID is null (insFolder 1): '; + $k2->log->err($rez['err'], false); + return $rez; + } + + $main_folder = $k2->post('main_folder'); + if (trim($main_folder)==''){ + $rez['err']='Error. Головна папка не знайдена (insFolder 1). '; + $k2->log->err($rez['err'], false); + return $rez; + } + + + if (count($file_path)==0){ + $rez['err']="Путь к файлу не может быть пустым (insFolder 1.2). FilePath=".$_POST['file_path'][$i].' file='.$_FILES["files"]["name"][$i]/*.' var_dump: '.$k2->dump($_POST)*/; + return $rez; + } + + + foreach ($file_path as $value) { + + //проверяка на наличие папки с таким названием + $new_fold = $this->checkFolder($value, $treeid); + if (trim($new_fold['err'])<>''){ + $rez['err']='Помилка в checkFolder (insFolder 2). '.$new_fold['err']; + $k2->log->err($rez['err'], false); + return $rez; + } + + if ($new_fold['rez'] == 0) { + $md5_treeid = $this->getID(); + $err = $k2->sql->ins_arr( + ['table' => 'vdTree', + 'fields' => [ + 'treeid'=>$md5_treeid, + 'parent_treeid'=>$treeid, + 'datecreate'=>'{now}', + 'usercreate'=>'{login}', + 'dateupdate'=>'{now}', + 'userupdate'=>'{login}', + 'treename'=>$value + ] + ] + ); + + if (trim($err['err'])<>''){ + $rez['err']='Помилка вставки гілки (insFolder 3). '.$err['err']; + $k2->log->err($rez['err'], false); + return $rez; + } + + } + + $parent_treeid=$treeid; + $treeid = $this->getTreeid($value, $parent_treeid); + + if (trim($treeid['err'])<>''){ + $rez['err']=$treeid['err']; + return $rez; + } + $treeid = $treeid['rez']; + + $rez['rez'] = $treeid; + + if (trim($rez['rez'])==''){ + $rez['err']="Пустой TreeID (insFolder 4). FolderName=$value, ParentID=$parent_treeid "; + return $rez; + } + + } + return $rez; + } + + /** + * Получение TreeId + * @global type $k2 + * @param type $treeid + * @param type $parent_treeid + * @return type + */ + function getTreeid($treename, $parent_treeid="") + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $val=['treename'=>$treename, 'parent_treeid'=>$parent_treeid]; + $r=$k2->sql->sel( + 'SELECT treeid FROM vdTree' + . ' WHERE (treename=:treename) AND (parent_treeid=:parent_treeid) limit 1', + $val); + + + if (trim($r['err'])<>''){ + $rez['err']='Помилка в getTreeid:'.$r['err']; + return $rez; + }else{ + if (count($r['data'])==0){ + $rez['err']='Помилка пошуку элемента TreeID (getTreeid 1): '.$k2->dump($val); + $k2->log->err($rez['err'], false); + + }else{ + $rez['rez']=$r['data'][0]['treeid']; + } + } + + + if (trim($rez['rez'])==''){ + $rez['err']='Пустий TreeID (getTreeid 2):'.$k2->dump($val).' return SQL: '.$k2->dump($r); + return $rez; + } + + return $rez; + } + + /** + * Получение массива запрещений + * @global type $k2 + * @return type + */ + function getTabuFile() + { + global $k2; + $rez = $rez = ['rez'=>[], 'err'=>'']; + + $r=$k2->sql->sel( + 'SELECT tabuname FROM vdTabuFiles' + . ' WHERE (del=:del)', + ['del'=>0]); + + if (trim($r['err'])<>''){ + $rez['err']=$r['err']; + }else{ + foreach ($r['data'] as $value) { + array_push($rez['rez'], $value['tabuname']); + } + } + + + return $rez; + } + + /** + * Удаление истории файла + * @global type $k2 + * @param type $file_date + * @return string + */ + function delHist($fileid) + { + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>'']; + if($fileid !== ''){ + $err = $k2->sql->del("DELETE FROM vdHistory WHERE fileid = :fileid;", ['fileid'=>$fileid] ); + if (trim($err['err'])<>''){ + $rez['err']='Помилка видалення історії файлу (delHist 1). '.$err['err']; + $k2->log->err($rez['err'], false); + return $rez; + } + } + return $rez; + } + + + /** + * Удаление записи файла + * @global type $k2 + * @param type $file_date + * @return string + */ + function delFile($fileid) + { + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>'']; + if($fileid !== ''){ + $err = $k2->sql->del("DELETE FROM vdFiles WHERE fileid = :fileid;", ['fileid'=>$fileid] ); + if (trim($err['err'])<>''){ + $rez['err']='Помилка видалення файлу (delFile 1). '.$err['err']; + $k2->log->err($rez['err'], false); + return $rez; + } + } + + return $rez; + } + + /** + * Проверка файла + * @global type $k2 + * @param type $file_date + * @return type + */ + function checkFile($file_date) + { + global $k2; + $rez = $rez = ['rez'=>'', 'err'=>'']; + + $tabu = $this->getTabuFile(); + if (trim($tabu['err'])<>''){ + return $this->vdoc_err('Помилка отримання масиву виключень.'.$tabu['err']); + } + if (in_array($file_date['name'].'.'.$file_date['ext'], $tabu['rez'])) { + $rez['rez'] = 2; + } else { + $r=$k2->sql->sel( + 'SELECT count(fileid) AS cnt FROM vdFiles' + . ' WHERE (treeid=:treeid) AND (md5_file=:md5_file) AND (filename=:filename) AND (statid<>:statid)', + ['treeid'=>$file_date['treeid'], 'md5_file'=>$file_date['md5_file'], 'filename'=>$file_date['name'], 'statid'=>$this->status_work]); + + if (trim($r['err'])<>''){ + $rez['err']=$r['err']; + }else{ + $rez['rez']=$r['data'][0]['cnt']; + } + } + + return $rez; + } + + /** + * + * @global type $k2 + * @param type $file + * @return string + */ + function fizDelFile($file) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + if(file_exists($file)){ + $del = unlink($file); + if($del == true){ + $rez['rez'] = true; + } else { + $rez['err'] = 'Невдале видалення файлу: '.$file; + } + } + return $rez; + } + + + + /** + * Удаление каталога + * @global type $k2 + * @param type $treeid + * @return string + */ + function delFolder($treeid) + { + global $k2; + $rez = ['rez'=>[], 'err'=>'']; + if($treeid !== ''){ + $err = $k2->sql->del("DELETE FROM vdTree WHERE treeid = :treeid;", ['treeid'=>$treeid] ); + if (trim($err['err'])<>''){ + $rez['err']='Помилка видалення каталогу (delFolder 1). '.$err['err']; + $k2->log->err($rez['err'], false); + return $rez; + } + } + + return $rez; + } + + /** + * Удаление дочерних каталогов + * @global type $k2 + * @param type $treeid + * @param type $arr_treeid + * @return type + */ + function delAllChild($treeid, $arr_treeid) + { + global $k2; + $rez = ['rez'=>[], 'err'=>'']; + + + + $r=$k2->sql->sel('SELECT treeid FROM vdTree WHERE (parent_treeid=:treeid)', ['treeid'=>$treeid]); + + foreach ($r['data'] as $res) { + + $files = $this->getArrFileid($res['treeid']); + foreach ($files['rez'] as $value) { + $this->fullDel($value); + } + + array_push($arr_treeid, $treeid); + + $this->getAllChild($res['treeid'], $arr_treeid); + + foreach ($arr_treeid as $res){ + $this->delFolder($res['treeid']); + } + } + + return $arr_treeid; + } + + /** + * Полное удаление каталога + * @global type $k2 + * @param type $treeid + * @return string + */ + function fullDelFold($treeid) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $arr_treeid = []; + + $all_child = $this->getAllChild($treeid, $arr_child = []); + + $arr_file = $this->getArrFileid($treeid); + foreach ($arr_file['rez'] as $value) { + $this->fullDel($value); + } + + $this->delFolder($treeid); + + return $rez; + } + + + /** + * Полное удаление файла + * @global type $k2 + * @param type $arr_file + * @return string + */ + function fullDel($arr_file) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $arr_file = explode(",", $arr_file); + foreach ($arr_file as $value) { + + $hist_info = $this->fileHistInfo($value); + if (trim($hist_info['err'])<>''){ + return $this->vdoc_err('Помилка отримання інформації про файл. (fullDel 1) '.$hist_info['err']); + } + foreach ($hist_info['rez'] as $val) { + $datecreate = $val['datecreate']; + $path = $this->getPath($datecreate); + if (trim($path['err'])<>''){ + return $this->vdoc_err('Помилка отримання шляху. (fullDel 2) '.$path['err']); + } + $histid = $val['histid']; + $file = $path['rez'].'/'.$histid; + $del = $this->fizDelFile($file); + if (trim($del['err'])<>''){ + return $this->vdoc_err('Помилка видалення файлу. (fullDel 3) '.$del['err']); + } + } + + $this->delHist($value); + $this->delFile($value); + + + } + return $rez; + } + + + /** + * Получение массива файлов + * @global type $k2 + * @param type $treeid + * @return string + */ + function getArrFileid($treeid, $arg='') + { + global $k2; + $rez = ['rez'=>[], 'err'=>'']; + + $r=$k2->sql->sel('SELECT fileid, filename, fileext, site_history, datecreate FROM vdFiles WHERE (treeid=:treeid)', ['treeid'=>$treeid]); + + + if(count($r['data'])==0){ + $rez['err']='Error. Файл не знайдено '; + $k2->log->err($rez['err'], false); + return $rez; + } else { + if($arg == ''){ + foreach ($r['data'] as $value) { + array_push($rez['rez'], $value['fileid']); + } + } else { + foreach ($r['data'] as $value) { + array_push($rez['rez'], $value); + } + } + } + + return $rez; + } + + + /** + * Получение массива папок + * @global type $k2 + * @param type $treeid + * @return string + */ + function getArrFolder($treeid) + { + global $k2; + $rez = ['rez'=>[], 'err'=>'']; + + $r=$k2->sql->sel('SELECT treeid, treename FROM vdTree WHERE (parent_treeid=:parent_treeid)', ['parent_treeid'=>$treeid]); + + + if(count($r['data'])==0){ + $rez['err']='Error. Каталог не знайдено '; + $k2->log->err($rez['err'], false); + return $rez; + } else { + + foreach ($r['data'] as $value) { + array_push($rez['rez'], $value); + } + + } + + return $rez; + } + + + /** + * Рекурсивное архивирование каталога + * @param type $source + * @param type $destination + * @return boolean + */ + function zipFolder($source, $destination) + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; +// if (!extension_loaded('zip') || !file_exists($source)) { +// return false; +// } + if (preg_match("/[а-я]+/i", $source)) { + // $source = iconv('windows-1251', 'UTF-8', $source); + } + + $k2->sys->forceDir($destination); + + $zip = new ZipArchive(); + if (!$zip->open($destination, ZIPARCHIVE::CREATE)) { + + $rez['err']='Не вдалося створити архівний каталог! (zipFolder)'; + $k2->log->err($rez['err']); + + return $rez; + } + + $source = str_replace('\\', '/', $source); + + if (is_dir($source) === true){ + $files = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($source), RecursiveIteratorIterator::SELF_FIRST); + + foreach ($files as $file){ + $file = str_replace('\\', '/', $file); + + + if( in_array(substr($file, strrpos($file, '/')+1), array('.', '..')) ) + continue; + + //$file = realpath($file); + $file = str_replace('\\', '/', $file); + + if (is_dir($file) === true){ + + $zip->addEmptyDir(str_replace($source . '/', '', $file . '/')); + }else if (is_file($file) === true){ + + $zip->addFromString(str_replace($source . '/', '', $file), file_get_contents($file)); + } + } + }else if (is_file($source) === true){ + $zip->addFromString(basename($source), file_get_contents($source)); + } + + $zip->close(); + + $rez['rez']="Створено архівний каталог: $destination!"; + $k2->log->mess($rez['rez']); + + return $rez; + } + + /** + * Создание файла в каталоге перед архивированием + * @global type $k2 + * @param type $arr_file + * @param type $file_path + * @return string + */ + function createFile($arr_file, $file_path) + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; + + $datecreate = $arr_file['datecreate']; + + $path = $this->getPath($datecreate); + + $file = $path['rez'].'/'.$arr_file['site_history']; + + try { + $file_data = file_get_contents($file); + } catch(Exception $e) { + $rez['err']="Не вдалося прочитати файл $file ".$e->getMessage()." "; + $k2->log->err($rez['err']); + return $rez; + } + + $file_name = $k2->rootdir.'/'.$file_path.'/'.$arr_file['filename'].'.'.$arr_file['fileext']; + + try { + file_put_contents ($file_name, $file_data); + } catch(Exception $e) { + $rez['err']="Не вдалося записати файл $file_name ".$e->getMessage()." "; + $k2->log->err($rez['err']); + return $rez; + } + + + return $rez; + } + + /** + * Формирование каталога для последующего архивирования + * @global type $k2 + * @param type $treeid + * @param type $treename + * @param type $path + * @return string + */ + function createFolder($treeid, $treename, $path = '') + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; + + if($path == ''){ + $file_path = 'vdtemp/'.$treename; + $source = $file_path; + $destination = 'vdarchive/'.$treename.'.zip'; + } else { + $file_path = $path; + } + + if (preg_match("/[а-я]+/i", $treename)) { + // $file_path = iconv('UTF-8', 'windows-1251', $file_path); + } + + $k2->sys->forceDir($file_path); + + $arr_file = $this->getArrFileid($treeid, 'arch'); + + foreach ($arr_file['rez'] as $value) { + $create_file = $this->createFile($value, $file_path); + if($create_file['err'] !== ''){ + $rez['err'] = "Не вдалося створити файл $file_path! (createFolder1)"; + $k2->log->err($rez['err']); + return $rez; + } + } + + $arr_folder = $this->getArrFolder($treeid); + + foreach ($arr_folder['rez'] as $val) { + $new_path = $file_path.'/'.$val['treename']; + $create_folder = $this->createFolder($val['treeid'], $val['treename'], $new_path); + if($create_folder['err'] !== ''){ + $rez['err'] = "Не вдалося створити каталог $new_path! (createFolder2)"; + $k2->log->err($rez['err']); + return $rez; + } + } + + + return $rez; + } + + /** + * Создание файла в каталоге перед архивированием + * @global type $k2 + * @param type $arr_file + * @param type $file_path + * @return string + */ + function createFile2($arr_file, $file_path) + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; + + $datecreate = $arr_file['datecreate']; + + $path = $this->getPath($datecreate); + + $file = $path['rez'].'/'.$arr_file['site_history']; + + try { + $file_data = file_get_contents($file); + } catch(Exception $e) { + $rez['err']="Не вдалося прочитати файл $file ".$e->getMessage()." "; + $k2->log->err($rez['err']); + return $rez; + } + + $file_name = $k2->rootdir.'/'.$file_path.'/'.$arr_file['filename'].'.'.$arr_file['fileext']; + + try { + file_put_contents ($file_name, $file_data); + } catch(Exception $e) { + $rez['err']="Не вдалося записати файл $file_name ".$e->getMessage()." "; + $k2->log->err($rez['err']); + return $rez; + } + + + return $rez; + } + + /** + * Старт загрузки архива + * @global type $k2 + * @param type $treeid + * @param type $treename + * @return string + */ + function downloadZip($treeid, $treename) + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; + + $create_folder = $this->createFolder($treeid, $treename); + if($create_folder['err'] !== ''){ + $rez['err'] = "Не вдалося створити каталог $treename! (downloadZip1)"; + $k2->log->err($rez['err']); + return $rez; + } + + $source = 'vdtemp/'.$treename; +// if (preg_match("/[а-я]+/i", $source)) { +// $file_path = iconv('UTF-8', 'windows-1251', $file_path); +// } + $destination = 'vdarchive/'.$treename.'.zip'; + + $zip_folder = $this->zipFolder($source, $destination); + if($zip_folder['err'] !== ''){ + $rez['err'] = "Не вдалося створити архівний каталог $destination! (downloadZip2)"; + $k2->log->err($rez['err']); + return $rez; + } + + return $rez; + } + + /** + * розархивирование + * @global type $k2 + * @param type $treeid + * @return string + */ + function unZip($treeid) + { + global $k2; + + $rez = ['rez'=>'', 'err'=>'']; + + $zip = new ZipArchive; + $res = $zip->open('sc.zip'); + if ($res === TRUE) { + $zip->extractTo('sc/'); + $zip->close(); + echo 'ok'; + } else { + echo 'failed'; + } + + + return $rez; + } + + + /** + * Загрузка каталогов + * @global type $k2 + */ + function uploadFolder() + { + global $k2; + $res = []; + $i = 0; + $pr_trid = []; + $treeid = $k2->post('treeid'); + $arr_right = $this->getFolderRight($treeid); + // Обработка результата функции проверки прав + if (trim($arr_right['err'])<>''){ + return $this->vdoc_err('Помилка отримання прав. (uploadFile 0) '.$arr_right['err']); + }else{ + $arr_right = $arr_right['rez']; + } + + if(($arr_right['wtree'] == 0)){ + return $this->vdoc_err('У Вас не вистачає прав для завантаження каталогу'); + } + + error_reporting (0); + + if (!isset($_FILES["files"])){ + return $this->vdoc_err('Не вірний список файлів. (uploadFolder 0) '); + } + + + foreach ($_FILES["files"]["error"] as $key => $error) + { + + $file_path = $_POST['file_path'][$i]; + $k2->log->mess('Файл №'.$i.' зашел. Путь - '.$file_path.' Ключ->ошибка '.$key.'=>'.$error.'', false); + + $file_date = $this->parseFile($i); + // Обработка результата функции + if (trim($file_date['err'])<>''){ + return $this->vdoc_err('Помилка парсінгу файлів. (uploadFolder 1.0) '.$file_date['err']); + }else{ + $file_date=$file_date['rez']; + } + + + if ($error == UPLOAD_ERR_OK) { + + + $pr_trid[$i] = $this->insFolder($i); + if (trim($pr_trid[$i]['err'])<>''){ + return $this->vdoc_err('Помилка вставки каталога. (uploadFolder 1) '.$pr_trid[$i]['err']); + } + + + $file_date['treeid'] = $pr_trid[$i]['rez']; + + if (trim($file_date['treeid'])==''){ + return $this->vdoc_err('ID гілки не може бути !!! (uploadFolder 1.1) '); + } + + + $check_file = $this->checkFile($file_date); + if (trim($check_file['err'])<>''){ + $rez['err']=$check_file['err']; + return $rez; + } + + if ($check_file['rez'] == 0) { + + $err=$this->insertNewFile($file_date); + + //return $this->vdoc_err('Тест загрузки каталога... '); + + if (trim($err['err'])<>''){ + $del = $this->delHist($file_date['md5_fileid']); + $del2 = $this->delFile($file_date['md5_fileid']); + return $this->vdoc_err('Помилка вставки файла. (uploadFolder 2) '.$file_date['name'].'.'.$file_date['ext'].' Text Error: '.$err['err'].' beginFileName='.$file_date['begin_name']); + } + + $datecreate = date("Y-m-d H:m:s"); + + $path = $this->getPath($datecreate); + if (trim($path['err'])<>''){ + $del = $this->delHist($file_date['md5_fileid']); + $del2 = $this->delFile($file_date['md5_fileid']); + return $this->vdoc_err('Помилка отримання шляху. (uploadFolder 3) '.$err['err']); + } + + if (!$k2->sys->forceDir($path['rez'])){ + $del = $this->delHist($file_date['md5_fileid']); + $del2 = $this->delFile($file_date['md5_fileid']); + return $this->vdoc_err('Не вдалось створити рекурсивно каталог (uploadFolder 4): '.$path['rez']); + } + + //$this->doUpload($i, $path, $file_date); + + $upl=$this->doUpload($i, $path['rez'], $file_date); + if (trim($upl['err'])<>''){ + return $this->vdoc_err('Помилка завантаження фвйлу. (uploadFolder 5) '.$upl['err']); + } + } elseif ($check_file['rez'] == 2) { + $k2->log->mess('Тимчасовий файл не завантажено: '.$file_date['name'].'.'.$file_date['ext'].'-'.$error.' beginFileName='.$file_date['begin_name'], $isshow=false); + } else { + $k2->log->mess('Такий файл вже існує: '.$file_date['name'].'.'.$file_date['ext'].'-'.$error.' beginFileName='.$file_date['begin_name'], $isshow=false); + } + + } + else + { + return $this->vdoc_err('Помилка при завантаженні файлу: '.$file_date['name'].'.'.$file_date['ext'].'-'.$error.' beginFileName='.$file_date['begin_name']); + + } + $k2->log->mess('Вдале завантаження файлу: '.$file_date['name'].'.'.$file_date['ext'].'-'.$error.' beginFileName='.$file_date['begin_name'], $isshow=false); + $i++; + + } + + + return json_encode(array('res'=>TRUE,'data'=>$res, )); + + + } + + function addLinkFile() + { + global $k2, $root; + $path_file = $k2->post('linkfile'); + + $file = nslashe(getParentDir($root).'/ftp/'.$path_file); + $file_date = []; + + if (file_exists($file)) { + // print_r($k2->post('linkfile')); + // $newfile = 'public/example.txt'; + // if (!copy($file, $newfile)) { + // echo "не удалось скопировать $file...\n"; + // } + + $path_parts = pathinfo($file); + //print_r($path_parts); + + //echo 'Розмір файлу ' . $newfile . ': ' . filesize($newfile) . ' байтів'; + + $md5_hist = $this->getID(); + $md5_fileid = $this->getID(); + $md5_file = md5_file($file); + + $file_date['treeid'] = $k2->post('treeid'); + //$file_date['filename_h'] = $k2->post('filename_h'); + $file_date['begin_name'] = $path_parts['filename'].'.'.$path_parts['extension']; + $file_date['name'] = $path_parts['filename']; + $file_date['ext'] = $path_parts['extension']; + $file_date['size_file'] = filesize($file)/1000; + $file_date['md5_file'] = $md5_file; + $file_date['md5_hist'] = $md5_hist; + $file_date['md5_fileid'] = $md5_fileid; + //print_r($file_date); + + $upd=$this->insertNewFile($file_date); + $datecreate = date("Y-m-d H:m:s"); + + $path = $this->getPath($datecreate); + if (trim($path['err'])<>''){ + $del = $this->delHist($file_date['md5_fileid']); + $del2 = $this->delFile($file_date['md5_fileid']); + return $this->vdoc_err('Помилка при отриманні шляху. (uploadFile 4) '.$path['err']); + } + + if (!$k2->sys->forceDir($path['rez'])){ + $del = $this->delHist($file_date['md5_fileid']); + $del2 = $this->delFile($file_date['md5_fileid']); + return $this->vdoc_err('Не вдалось створити рекурсивно каталог (uploadFile 5): '.$path['rez']); + } + + + $upl=$this->doUploadLink($i, $path['rez'], $file_date, $file); + if (trim($upl['err'])<>''){ + return $this->vdoc_err('Помилка завантаження файлу. (uploadFile 6) '.$upl['err']); + } + } + return $rez; + } + + function doUploadLink($i, $path, $file_date, $file) + { + global $k2; + $rez = ['rez'=>'', 'err'=>'']; + + $new_file=$path.'/'.$file_date['md5_hist']; + + //print_r($_FILES); + + $uploadComplete = copy($file, $new_file); + + if($uploadComplete) { + $rez['rez'] = 'Файл успішно завантажено'; + $k2->log->mess($rez['rez'], false); + } else { + $rez['err'] = 'Завантажити файл не вдалось (doUpload): '.$new_file; + $del = $this->delHist($file_date['md5_fileid']); + $del2 = $this->delFile($file_date['md5_fileid']); + $k2->log->err($rez['err']); + } + + return $rez; + } + + function generateTmpFile() + { + global $k2; + $file = $k2->post('file_path'); + //echo (substr($file,1)); + $filename = $k2->post('filename'); + $ext = $k2->post('ext'); + $current = file_get_contents(substr($file,1)); + + file_put_contents('public/tmp/'.$filename.'.'.$ext, $current); + $rez = 'public/tmp/'.$filename.'.'.$ext; + return trim($rez); + } + + function content(){ + global $k2; + $rez = ''; + + $event = $k2->get('event'); + + switch ($event) + { + case "upload": + $rez=$this->uploadFile(); + break; + case "uploadFolder": + $rez=$this->uploadFolder(); + break; + case "changeHistory": + $rez=$this->changeHistory(); + break; + case "fullDel": + $arr_file = $k2->get('arr_file'); + $rez=$this->fullDel($arr_file); + break; + case "fullDelFold": + $treeid = $k2->get('treeid'); + $rez=$this->fullDelFold($treeid); + break; + case "arch": + $treeid = $k2->get('treeid'); + $treename = $k2->get('treename'); + $rez=$this->downloadZip($treeid, $treename); + break; + case "unzip": + $treeid = $k2->get('treeid'); + $rez = $this->unZip($treeid); + break; + case "addlinkfile": + $rez = $this->addLinkFile(); + break; + case "ceneratetmp": + $rez=$this->generateTmpFile(); + break; + default: + $rez = ''; + } + + return $rez; + } + + +} diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin/en.csv new file mode 100644 index 0000000..f1ab1e9 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin/en.csv @@ -0,0 +1,8 @@ +name|value +lnCatTypeFile| Cat. of file types +lnCatTypeDoc| Cat. of document types +lnFileTypes| File Types +lnExtension| Extensions +lnProhibitedFiles| Prohibited files +lnStatusDocuments| Status of documents +lnRights| Rights \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin/ru.csv new file mode 100644 index 0000000..e962741 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin/ru.csv @@ -0,0 +1,8 @@ +name|value +lnCatTypeFile| Кат. типов файлов +lnCatTypeDoc| Кат. типов документов +lnFileTypes| Типы файлов +lnExtension| Расширение +lnProhibitedFiles| Запрещенные файлы +lnStatusDocuments| Статусы документов +lnRights| Права \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin/ua.csv new file mode 100644 index 0000000..b8d4b22 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin/ua.csv @@ -0,0 +1,8 @@ +name|value +lnCatTypeFile| Кат. типів файлів +lnCatTypeDoc| Кат. типів документів +lnFileTypes| Типи файлів +lnExtension| Розширення +lnProhibitedFiles| Заборонені файли +lnStatusDocuments| Статуси документів +lnRights| Права \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_actfile/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_actfile/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_actfile/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_actfile/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_actfile/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_actfile/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_actfile/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_actfile/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_actfile/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_ext/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_ext/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_ext/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_ext/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_ext/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_ext/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_ext/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_ext/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_ext/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_history/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_history/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_history/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_history/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_history/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_history/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_history/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_history/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_history/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_main/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_main/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_main/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_main/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_main/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_main/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_main/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_main/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_main/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_proj/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_proj/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_proj/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_proj/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_proj/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_proj/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_proj/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_proj/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_proj/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_status/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_status/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_status/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_status/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_status/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_status/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_status/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_status/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_status/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_tabu/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_tabu/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_tabu/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_tabu/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_tabu/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_tabu/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_tabu/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_tabu/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_tabu/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_treeright/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_treeright/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_treeright/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_treeright/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_treeright/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_treeright/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_treeright/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_treeright/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_treeright/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_type/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_type/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_type/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_type/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_type/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_type/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_type/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_type/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_type/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typecat/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typecat/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typecat/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typecat/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typecat/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typecat/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typecat/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typecat/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typecat/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typedoc/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typedoc/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typedoc/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typedoc/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typedoc/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typedoc/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typedoc/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typedoc/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_typedoc/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_upload/en.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_upload/en.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_upload/en.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_upload/ru.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_upload/ru.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_upload/ru.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_upload/ua.csv b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_upload/ua.csv new file mode 100644 index 0000000..143a878 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/k2vdocsadmin/lng/k2vdocsadmin_upload/ua.csv @@ -0,0 +1 @@ +name|value \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/lng/k2vdoc/en.csv b/k2shop/k2shop/app/app/vdocs/lng/k2vdoc/en.csv new file mode 100644 index 0000000..15d1c92 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/lng/k2vdoc/en.csv @@ -0,0 +1,23 @@ +name|value +lnFullFileDeletion| Complete file deletion +lnCategory| Categories +lnFullDirectoryDeletion| Complete directory removal +lnDirectoryDeletion| Deleting a directory +lnMoveFolder| Move the branch +lnRecursiveAddFolder| Recursive adding a directory to a branch +lnSetRightsBranch| Establishing rights to a branch +lnLookAll| Look at all +lnUploadFolder| Upload the folder +lnAddRecord| Add a record +lnEdit| Edit +lnDelete| Delete +lnMove| Move +lnRights| Rights +lnDownloadArchive| Download archive +lnSave| Save +lnLook| Look +lnWork| Get into the job +lnFiles| Files +lnFilesId| Files ID +lnDelFiles| Deleted files +lnWorkFiles| Files in the work diff --git a/k2shop/k2shop/app/app/vdocs/lng/k2vdoc/ru.csv b/k2shop/k2shop/app/app/vdocs/lng/k2vdoc/ru.csv new file mode 100644 index 0000000..c0db8df --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/lng/k2vdoc/ru.csv @@ -0,0 +1,23 @@ +name|value +lnFullFileDeletion| Полное удаление файла +lnCategory| Категории +lnFullDirectoryDeletion| Полное удаление каталога +lnDirectoryDeletion| Удаление каталога +lnMoveFolder| Переместить ветвь +lnRecursiveAddFolder| Рекурсивное добавление каталога в ветвь +lnSetRightsBranch| Установление прав на ветку +lnLookAll| Просмотреть все +lnUploadFolder| Загрузить каталог +lnAddRecord| Добавить запись +lnEdit| Редактировать +lnDelete| Удалить +lnMove| Переместить +lnRights| Права +lnDownloadArchive| Скачать архивом +lnSave| Сохранить +lnLook| Просмотреть +lnWork| Взять в работу +lnFiles| Файлы +lnFilesId| ID файлу +lnDelFiles| Удаленные файлы +lnWorkFiles| Файлы в работе \ No newline at end of file diff --git a/k2shop/k2shop/app/app/vdocs/lng/k2vdoc/ua.csv b/k2shop/k2shop/app/app/vdocs/lng/k2vdoc/ua.csv new file mode 100644 index 0000000..6aeed29 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/lng/k2vdoc/ua.csv @@ -0,0 +1,23 @@ +name|value +lnFullFileDeletion| Повне видалення файлу +lnCategory| Категорії +lnFullDirectoryDeletion| Повне видалення каталогу +lnDirectoryDeletion| Видалення каталогу +lnMoveFolder| Перемістити гілку +lnRecursiveAddFolder| Рекурсивне додавання каталогу в гілку +lnSetRightsBranch| Встановлення прав на гілку +lnLookAll| Продивитись все +lnUploadFolder| Завантажити каталог +lnAddRecord| Додати запис +lnEdit| Редагувати +lnDelete| Видалити +lnMove| Перемістити +lnRights| Права +lnDownloadArchive| Скачати архівом +lnSave| Зберегти +lnLook| Продивитись +lnWork| Взяти в роботу +lnFiles| Файли +lnFilesId| ID файлу +lnDelFiles| Видалені файли +lnWorkFiles| Файли в роботі diff --git a/k2shop/k2shop/app/app/vdocs/res/info.yml b/k2shop/k2shop/app/app/vdocs/res/info.yml new file mode 100644 index 0000000..fbdc326 --- /dev/null +++ b/k2shop/k2shop/app/app/vdocs/res/info.yml @@ -0,0 +1,6 @@ +comp_name: "vdocs" +version: 1.1.1.1 +short_descr: +description: +comment: +cena: