From 6238d6506a16af2985b3e5b6f74ca43c3162d586 Mon Sep 17 00:00:00 2001 From: Pim Snel Date: Fri, 24 Oct 2003 20:33:34 +0000 Subject: [PATCH] starting the port of filemanager to the ui-bo-so infrastructure and to our template class --- filemanager/images/folder-home.gif | Bin 1097 -> 1249 bytes filemanager/images/folder-home.png | Bin 1171 -> 1617 bytes filemanager/images/folder-open.gif | Bin 1111 -> 1225 bytes filemanager/images/folder-open.png | Bin 1198 -> 1542 bytes filemanager/images/folder-up.gif | Bin 1087 -> 772 bytes filemanager/images/folder-up.png | Bin 1171 -> 1128 bytes filemanager/images/folder.gif | Bin 1090 -> 1184 bytes filemanager/images/folder.png | Bin 1181 -> 1373 bytes filemanager/images/locked.gif | Bin 348 -> 606 bytes filemanager/images/locked.png | Bin 460 -> 719 bytes filemanager/inc/class.bofilemanager.inc.php | 353 +++ filemanager/inc/class.uifilemanager.inc.php | 2377 +++++++++++++++++ filemanager/index.php | 1839 ++++++------- .../templates/default/images/folder-home.gif | Bin 0 -> 1249 bytes .../templates/default/images/folder-home.png | Bin 0 -> 1617 bytes .../templates/default/images/folder-open.gif | Bin 0 -> 1225 bytes .../templates/default/images/folder-open.png | Bin 0 -> 1542 bytes .../templates/default/images/folder-up.gif | Bin 0 -> 772 bytes .../templates/default/images/folder-up.png | Bin 0 -> 1128 bytes .../templates/default/images/folder.gif | Bin 1090 -> 1184 bytes .../templates/default/images/folder.png | Bin 1181 -> 1373 bytes .../templates/default/images/locked.gif | Bin 348 -> 606 bytes .../templates/default/images/locked.png | Bin 460 -> 719 bytes .../templates/default/images/navbar.gif | Bin 1431 -> 1625 bytes .../templates/default/images/navbar.png | Bin 1543 -> 2879 bytes 25 files changed, 3664 insertions(+), 905 deletions(-) create mode 100755 filemanager/inc/class.bofilemanager.inc.php create mode 100755 filemanager/inc/class.uifilemanager.inc.php create mode 100755 filemanager/templates/default/images/folder-home.gif create mode 100644 filemanager/templates/default/images/folder-home.png create mode 100755 filemanager/templates/default/images/folder-open.gif create mode 100644 filemanager/templates/default/images/folder-open.png create mode 100755 filemanager/templates/default/images/folder-up.gif create mode 100644 filemanager/templates/default/images/folder-up.png diff --git a/filemanager/images/folder-home.gif b/filemanager/images/folder-home.gif index 8555f88db2082487d3ae70dce5cf1caf3e168b3a..e0b88cb102e7a2cbca0f95151552260b4ecae593 100755 GIT binary patch delta 1248 zcmV<61Rwj!2;m8TM@dFFIbjw6769k?08LL!dpi-Tud&rvLxV;2%w!vX^H&Pn;N!-~#djD2ZcIb} zb{PJyiqpTY+(jp&X+-~fCG+y>Y;J4oQ3B%7#s69W(Q0Atn_90~8Lo?Z#(zqoo2K@5 zJ>B2j=<4UWLjd)lSmrzc^!M|Jf`PP;dH#AC+M##pb|CKI;{Im<{+wFUa%;jY0Ipy$ z=YS;sU;y8LH30vMJ>a~l|4Re^l}VM1lJD{E-E(A?n3ei*9k`c^$Xp1^f>5Gku%1{ITqFm`V0J@ETbNKc8|BgP^oSogx$o*{)x4E|K z@bi+Ck^YrW+1uCU;NJgI0PpPa@ayU7hm4Q^k2ms00Q`D ziT|l#yp?&}av;BSLFU8C;NIf+{{O75tDkLA`K@)MN)+sHO2ns=>(tTtTmyY20{*Ro z+QY1WqGCFoo1g!RHQ>3S-E3Q*p`O&Wo8&qK(@sCSYC6t$c=PJx{*FcUW))poSO0<% z?(psY|NK)_QrUQM>hJR4#L4K^%ej?(+@YiQO910J0@T*i;Nsu-`uFnm@#g5|+}_*d z>Fn$7>fhns?(_Eeqg(%d9sh6@znFaI?eFD(=j8ul0OB|S@$>Nf|NH-!QQO_x|5O0e z)zbf-T;u5L|D<03Zxoc4lllMu($vxB?Cy}1m(67y+~VZ_cN+g&0N&u;>FenKdm6A| zGXG%!;5PvBKLh*y`r_y6>Nf!S_WS>jKkV`J|CUhyQvl^W1=ZKo`TO|u_45D!|NsA! z76KE0A^to=a%Ew3Wn>_CX>@2HRA^-&M@dakEFgDjbZ8)RZ*65DZ)PBAZggdGW@U0^ zZewL2VtF7?X>A}=Ze?r$A^8LW3IP8AEC2ui02Tli06+--0RIUbNbujHf(Qj>DY6WP zEH=Gt*-G|G9ke7D6BI=DPT0LY*_vPoS0cxMp+aB?5mS)x-yJHCGANm$PF;|7Y7(-* zHNw_AMV4M{LhywPnF`6i!MQSu;4D+%OjQAA1kVZ}9vCr_B&kZvfpH?8nc+^|*MU!J z)PNC-g9!($d|8+~#ZAEileBrl1xnEb8oN*}i17gg4?Y|M5R_=E%{yCx5E;Xi?NB>^ zV&WJGCY9(=B&U+HJG?AC`+EU8#IFiN#R<~wphTa(agQB zL&6_xFs@lf&xWp6d1}m?UPDwt4t)4f7;q_5CVRFre?4%qt;mWM1UWTG)$84=PAcB) z(1K%Cw-XW~jL{*G00|_F!O}uAdJu6}ff#-`wjVpU(}ru_*b#%+&9P8~)vz(^eKyQd0Wk$B$2+KD~ec{?)5j2M+9= z(AiQF>roYLTac5P6XkJjPW0`y`9(z~pFe+o@#4j!N008@xpU>pmBWV*x3sjbS+i!| zym`ryK|5;P^YaTne*Ad+_;EL9`^xgNbLY;TIB{a{-o3@eC9BKbb93`PeE1L&5_10h zc|T8=gh1CIH|wgZs)Gj)?%cU^!-fsTC8ev%-LtZ?U%!6+{P}Ye6BBP&`g1hzOiNbDEWrW^z)Zv9YP1u1;KB-2MCa_wU~?BQ4e1+A?FtjEt-5;V|RD=!i5XHyu7AN znZn4(WMgC7+S=ON+nbq{rKzbM6B8R19X%t%PEb%-Ls9_fsu2zpf3h%gG5lxHVE_V9 zo?zhk$MB!?54*yF1I-+QToMio8X8*!{>wT{a5%`s#wEj1Bk)nag+oX!U`4`1rZyfa zvw{YWh0g5!@(wKmhD|P#MsjPHv_;X28wVG+ z_scspaXhprIMF5Q5+Pz(#NsKW>OI4x@KERjVWogYH8T`axu$9fuW8uPwDj$MohX%@ zhnJ3?7B}!b)FJ7-tS8<${lb#K&27H3_4Do>=u}?*{-CAXiVG`~pYzSLsrvTe<>TX@ z57;;CV%gNZ+)U1~nZwZVaaDq%bNf35uNJoR(yrYSrbRp#1?Ra>P?DT((s`+9Kl5Ds zRVsgbmwL}wr|x{GNn`Rd-wun?Pa^Xwk2lVDXcaPD^`7~SpyyPh(pUd}x2#xV6yU&M F4FFZ5niK#4 diff --git a/filemanager/images/folder-home.png b/filemanager/images/folder-home.png index 794e7f2238ca2c768a9fa2a14e01da602109e6b8..3afa8033793bf26a827c15aa228b88a23a902ff2 100644 GIT binary patch literal 1617 zcmV-X2Cn&uP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ>$4Nv%RCwBA{Qv(y10y3N0|+EYF)*m}F)&DRFfiCtz%bvQ!S?zahRn#*3{_tk7#=VX0005RgijJ^C&Rzr3=Gk_3}Nza zK5O08xFWaeF>KRfWUwS;FhBs|H25FTP(CIGR$VpD#`MgH$>0tmxk87>ABYbl1^=CVv~4Bvk;F#P<+!0;DH|NF_n1~iTZ=sqTpE}#Wp z{xLA*s4!$M*JN1728?TDa{vMe#b9Y}2G<0AhJCE;47v<&fpP!g2?N+|e?BmL*?)-P z;W?nwfI%TFz`(!{Of9@X4780QT!q2&h&980NnoOanFSC)C5UAb=QQ z=@_U^=v9%-6*f*5NrrzwKe7S+`r!}5wIkmcm@;}9G*S}58oq!3&2YW3hC%#rAA__G z&^P}WAefbb;mCc4Q?|Pp?0~$V00G1TvmwlY-oP%#@T!@nnA7;d}}Vi20p z${=B522F#%88|sv8T2|j8Lm%}WB9gp5`(JdccAZp;q&)Dg9XQ5U9ml{bYA^qI13O! zaD#(vb^RD5lo=R)GcvqA^OE5?lL3QRT?)hJx3?LNufD_}t)|Vu!OG0=?fE?hroZ1A z6yn1fp6ci`oSWOjpe6Z%fkT0nfra5OXR_7*koF_5&jJJx*kB$O1|cU0YdePjEDZM! zKVbN88o{6w7t3&e_Y#I<6Y?2O0WA^Hv}90H)nE|)`<&s&p$QDCK#wVVB{DphlVP|x ze-4Av-5U&|Hqs1!&Kxf7N47Tr1Q6I@cY6~{Hb!x&+ov8f2&7doi0bNqeZj#iz#yZg z&%p4FiQ&(W8w?DW?lb&h{ly@wsR;~LW`^Iu@D>siVPMJ0W4N_$J;RqHry0zwt#zb? z4{87e5OYIA1H+AFOB0`-zHOk}(!(O6ssc|b%b;AAHN-+IPb$Jc8-St0R&DJ?2L?t8rs@&7q47d z22E%TfB*hv_|M1$#EcA|-+yHI^&6P;m>3y;eEq_}$;HLM$jl6k%U=v2{eS-aVc_84 zU^sa6=>5>Zz&N1GJ_7_0I4FKGFr2@B>(=8BA3ppP5D?%3Df|aaa{vDQW%%~>GsB_Y zd|=wW%fQ9>hvEB&Hw?mV=?o?jISjvldiY-~K=4%Y`}gmk zpMZd$pI;Ej1{(}2jD7;W`uD|k2Ek7c7$gL_8UAp7VtD%HGuWVCzkWd-0KqR_ym$-L z@(pAjKmZ}84~KYsiKQUG%?s7(I*_aB3l5C??V0rnSnTvsyjg8^= zFNne5xB!MT2ty491AqWRHu&GSZ{Oat0X2al0;B@2s0ytILmK_ zk3ymhtgI{yjO^@?ase2@>_9d!Bwxb}0|+2wgBg}BTXqg8X$rL9D>#gS4gu<7_7KvQ z|Mp*iiHVhi;Ty0hz5V3%r=!c3ykz?Sj|plpsM2ITfByVUm{|Y;#E4v(0s$uw3n7>L zEKE#dtqo1fc({24d3bsM@bU6+t=qVM%i7Ac|Sl5fB*vkh~y@@65K`O P00000NkvXXu0mjf7SPcf literal 1171 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 diff --git a/filemanager/images/folder-open.png b/filemanager/images/folder-open.png index 0666ed33d16ef08edbc3b88a13a26653117bda60..33cc0bb90e19ff46ba0d1ab2857700ae5839e969 100644 GIT binary patch literal 1542 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 OJqQvW4r>Y|aQ*|D!8T(6 diff --git a/filemanager/images/folder-up.gif b/filemanager/images/folder-up.gif index 3dc145542924f660f7a615c19d3acd33908115a3..9f0ffdaf05e78e643be385b017913030950497d7 100755 GIT binary patch literal 772 zcmV+f1N;0(Nk%w1VHN-u0LFg+0CfNWasU8u003_Q0CxZYc>n;D057cwQ@R^LvJn80 z0049V0C)fZdjJ@n0*Kp6*z>sZ`{m{L&!psPET0Gfb^tiK49M@E;P%DT^RZ;bC^WeW z!S0jH@}->DVaMp5)$g*`^|xEXApmgz6Pf|7>36v8g^$ls*XpEuaWw z)F`6oXn@8+*XOtT{q?o%f_K_Dg5X1m;!AMCGS}s|`2F&n$r0)J z)%5%7Z`d&hb^tuS4oJ@x33dQ6qX}BmAPRN>HJ%GixENEu8~^|RA^to=a%Ew3Wn>_C zX>@2HRA^-&M@dakEFgDjbZ8)RZ*65DZ)PBAZggdGW@U0^ZewL2VtF7?X>A}=Ze?r$ zA^8LW3IKlqEC2ui02Tli06+)+fPaF6goTEJ0}3=XH8wXXkdZh!Iy*cH1B7mGaGh{* za&vT^aBpsg6$KU-7_F|Y85#?jg9BAoxK~(KS&&*=TwPpSTVAw>1IfyVhXe%%2M7oW z3bV{3Bqb)>Cn%6AE8E*F#{)z~MMjWENRUZNkV-;AOUD3b`1xp%Y5Dm8h6dotqo<(3 zf_d;9WA+C?00GMw3S!W}!2<{pGDeUvfr2$d3^s7+K+?kp5FtpC6tSStf)*}fzJL)a zMGP4+UCd~SsD}?9KOWVL1SH73A+!cCY0|_=iYHK_K$0>A9+i3Z5Pbm?1`HT6W5_@% zGp4LrGv(B*S-X}Bq&6aK*Q#0gXFwf0ck=4pYo`ufLId{j>Ep*wA3l5jN?iOW5CA*b CEku<7 literal 1087 zcmZ?wbhEHb6k!lyc+S9(7-Zw`Y8v6|aDGS5^SJ>x79}5;nfm>3!@pZ|+R7qIN=kqH_|etXwRY{=6DLk2B_(#Y zHkHJBR7KksA>*dX|@$A2@KJsi`S9H&<0vwZFfA@7}$|#U-oD z-E(vEK79DFV#SKZix+EXXc!n6L`O&O+_`hZh7H9frK`%_v$C?EKYxDr?p-r8vk4O> z?B2b5$BrGFHf>tIe0g4eL3(<|qeqYK-@kw3#tjn_lfJ&b&6_u`UcGwJqD5Ibxsj1k zhYugVa^=dUOP7p{jCy){R;^mKWXTe1Yn#T#rY&2x=g6BOV6J_KO-y4!on&o zEv>V&bHRcI3l}b&J$v?~Ns|l>jdF5wX3d&4ZQ3+VO|8Ph!YNax#Ky+8wzl^6_GV^f zX=-Z6#KcBLN6*Nx6BHEIkQDeo3Q$8p@h1x-7sG!B9R?r(UQ|FA0@IMB=? z$R**hprNrv;J>WH1c!r6Y+N!NH3A>yTR4Q&0#+nEWNPD)GAn4{Sm?~oFYnMIVA$ls zDXiwVz+uLsW-d|fh%E&lncR3JjWez|WF)tCNm~@XxN&fCd%wIx6URe~f)iXyu01l2 zlUz;;srk;aX*?8~Afg$(B4lIIQ?6+`QQI0GTw40pUO)aoi=cBkkEBuPsTr2d$MR<> zXIyy(j5y?YtMLu*|35L^ktQ-k#kK fUb8JqKVA9W_@!gML#xo!dp3sxm$0$1FjxZs_wbd* diff --git a/filemanager/images/folder-up.png b/filemanager/images/folder-up.png index f83b23fdf14a6eca4f894feebbe4ddef9da2ac15..8ec228df6ba4867cb2d9fc2f0dcd11067cd6b0c2 100644 GIT binary patch literal 1128 zcmV-u1eg1XP)rNc+{54@fiM&V zSQywDOn9Rh{{H_9R|mpgRt5|VtPCIr27uH71P}{Uy+4C21A`ooG{f`XkHG@ZA3SGB zS8ioc7k9@9TNXx624}$nh9xiZ8IHa`%5dY$bB1f*zA%8yV7Lb~i-BPQKmaj8)f%YE zurj>+^Pb`PFQB5kHz9^fy5o#EHbx$XFwquVl+50}ufaKrn+9 z7}yvXp8k3b#^I9ja6`ZUd&e;CQY75KRnLnUZhqMbX7jK}GEC80hOmtlY8DUx1Q5(% zh9AIye)#(x7&8e#guniM&5(1~is90?%W%D~em-SzIp+g6{PUkzSbYQ#K(H`=@Z#HF zg>OHn+3WpI;eVf5{;g0zjYr{mbBT-iN`GR}vTu&lwnC&if0` z@(ch01T*-;?>7tzA7uW6HG;~7Rqq}${QV0~F${nH{zWkun1UFd0#n7BPfs9X%uqQ< z@&=V73;+QHvuh*B9u}Y>EPtUi5VHdfVFzkrWI~iBpv(jk!-g3iLd^mKfB=HIcmu;P zhJKEli~{^xOc>$C@s}0BX5wTJXJ*Dw^YPk0hM&Lwe*l{W1ONd9F$Gfe6@I(rofMvs#ua_|7L3%)Xp(P!-7zGF*)ItbYO0lyuB$#^eG4Keo z6IGypdH<8)^o~yqKYyYYLI44TSsnuo=L8zAq07mjX&{c*(CZgoGTgZQo#8u@p)i91 z0tkCSpARhQfQ1$pJA;6>1~-F*6fXlC8zfwR{rb!B;@M}0t2e$feEW&Jpa%#b+*MOP uyg>1XW>W=NnkS}e0tg^RT2-b10R{kaI-(Rk&-2y*0000 literal 1171 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqMyzU}gyL332`Z|G&ShX@sxC`B||K zch+v4k*A|BUszal?AY;!hQ`J?yOT5G{+;WZP#Y8MVaUY9QeIy1?c29EZ{8d|dbF{+ zye`H2P=Dx?oz-inX2%EH-#({T(O;0Wk(SEuz`R|#I ze|HxBySHRPPlmmPc3D})-@ku<{rWX=;>6i5G9|8C7` zD~l*8DgE)|M^{(Z+O=y>oH&t`l-SwYR1)h^6>VFPlbI9cacxfY?X~$uMI|3Ue(dh< zUbk-D>({SOo;-Q}{CRhG_Zc&0G&i@bS+i!|ym`ryK|5;P^YaTnfBu}Fp6==CSzca# z;J|^Vrl#E7Tvb)o{{H^Gd-oO>m#i*#&&|#I@ZrOX6)P4mUaX;^VPIeo9UZ-M=gtiq zHWZhXt}1uW%F2HJ{Q2Fxcg@VqCQO*Hd-v`gJ9cc^v}yVB<$3u9>FF7d9zD8$|Ne~| zH%v@S`uh4dZ{ECm_3A~77G>q+Mn*;*K79Dfl`EGnT{1E<>gnlOwQALpB}=TWZ5kV! zwrts=udkn%mnSVPJ%9fEjI1mR3#+uWw9d}X1q&7|T)1%d?AenhO)@kz%E`%@HEY(i zY11?{wF(Ohr%ag=8ynZ!+S=ROo0*lRsi_?k6B`vBJtMzhDN3XE)M-9I+DDh?3y^w370~qEv?T%rv8dymSR4Jrg~n#c}R@Kou1cs*nJvZI+c}~`TE7Hm(mhalCx(xv7Ftq^^C60 z+BLa3Z{Ntu%vE5s&fdLa*UsvSs>FVdQ I&MBb@051=xCjbBd diff --git a/filemanager/images/folder.gif b/filemanager/images/folder.gif index 43fbfb0969bee4679800cdacb5bd9a9dae200ded..bc825c5313bfd2b23977029139254e91b7aa592b 100755 GIT binary patch literal 1184 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 literal 1181 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqMyzU}gyL332`Z|9_Z=ak!URLqW{u ziK&O?<;-r3&X04+&&%JsX~Uwa9qT6K@1K>sYewe8is0G|xBB{q_wV1|y?b}*^sc3y zSv#kuZRm|&+#WrpHhSgc+{OJ_-IdV|4Nc#^ef#m_$D22Au3x{te$~=x?d3g%KIi5n z+*(uk@l^kdWBr%5G_RPLU6kzI(9rn(`}aS8{`~s&>&urfj~_oidE$6Ue#-KizzfqO z&M(Z^GpFF%hN^2DYi2Y=fByXW?c2A{o;};RaowUR?Q`l9yYhpZ$};D+X6&1qIC-nO`FzP zQ;?aN+1}p1V8Oy|+qNxRwrt6gC6gviYOl^uOiWs_V#UIR3;X)|+A4D+A|i{5ikh37 zXU?2CefspCo}SjqTn{68KR^GZq~zM#x(O2|ba!_fDT}+fxW>f9R#jCsH8r(XqU zv$C)5F-Ml}%|@HO8j>b1O?@glHB{i>t63jz?OO8d#Gkff%btm?P;kzUuJ%oF zkE~1&cP#f8y|aApzq7Hmv42@bh1J3oSr05Z8NAGI?F_S8x2rx+3TB#CpS$y}(ssy diff --git a/filemanager/images/locked.gif b/filemanager/images/locked.gif index 3397084cd7c078c7f84f9d7d620f8bf9927c029d..0e04e1d78ad7d628b9e98efebb1302be3b329d9a 100755 GIT binary patch literal 606 zcmZ?wbhEHb6k`x$I2OdPXwjk%A3of@dw1Qsb#LChNl#C&uCD&_`2S+f|4a4%FO>iPus6a* zb7q0_|2@|KmdgBJZ}5MI%m4kp|M$E9-{<`Q*}O z>wM|&Yb<{44ElE>=l`X~|M#ZFwI=kJA;ZR?g5u3Wit+N5b4Hf*S`ufMdVr?Rqg z|DpXsK|y^J`&O-5rSI>rp<|$}t=-pF85$b8Z`Z!I$~Fflhh@u_fgFbc6o0ZXaxvI5 z=r8~Q$WIJxl?Ub*XsC$ruqzn`2Ixp|Eq%<`>7h2oX{pnn1|B{yRTHj>9jXCoy#}QL znv1wxw)b%TI8+dNYKn=djv}{)8neBqs;-{CfnmR)k(jo{uGVIDWUvMRhbNl} diff --git a/filemanager/images/locked.png b/filemanager/images/locked.png index 4b781544fac64ae1e0cf88c9ad4ad0e92c6be031..669dc8d4d42568486259775800381b7b2d68d4f1 100644 GIT binary patch literal 719 zcmV;=0xz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;MM*?KRCwBA{Qv(y11$hR05LJp2mk~S%?t(zAetEr z5I{6D7$AUXW-vei(ad0g0HT?}00BfZg8>4FWP=$Q8NpahO-*F+;>CR*KYo0F@7}%V zK|w+JKyfyhJU{?3fN~xw7z$X|ty{O}&6_v>)6>(BRaaM^`|{<>|CE%JewYG)03yp^ zJv}|g*RNmy*V59O0^|w+u^`aU)yIw<`w3(#fz$v55LsbtU}UU$ec<! zAb?0VcwV{R{-pLQ2ZlEv85r1Dp=pa5=yss{K}PYZFho08b^`Nicse$o72mynDf$7bMZ=arhX4ni6U;rN&?lf}AysQ8K002ovPDHLkV1n0y BC%gav literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^@!3-o*<7!?2sRIE%A+G=b{|7Q>&YW3TTKNAr zkoP|=Ep6GnWto|U>o%P~bLPypb=&UTxnp2rFm2j8TWj0EP|pbyCS1RKoq>ZRK0dy$ zt1mk<8)yO$tV>Lc4Ae+WOa!t&eE0wonHTx|`n+wMwgK7SKYuT*Y+JXiaOKLC(6z#mEsk>s zg#$~vr&~IZ=BkN&8w{j7JY5_^DsGvcspUUtAaML+_pU05w;Qs9ly3Q?iyZaX`#(G_ zYG3_dyPZ!M>Ubyi|C3g;&`tZir&UM%bZDzfr}bf1*KON=yQFWq_BidfoUs2fiO}Tx z;rBAPFWanptBrBO?wG@G?|l!DTTpynoUg=v3BO!LWLJZvfs = CreateObject('phpgwapi.vfs'); + + // This comes from the top of main (pim) // + error_reporting (4); + + /* if (@!is_object($GLOBALS['phpgw']->vfs)) + { + $GLOBALS['phpgw']->vfs = CreateObject ('phpgwapi.vfs'); + } + */ + ### Start Configuration Options ### + ### These are automatically set in phpGW - do not edit ### + + $this->sep = SEP; + $GLOBALS['rootdir'] = $this->vfs->basedir; + $GLOBALS['fakebase'] = $this->vfs->fakebase; + $GLOBALS['appname'] = $GLOBALS['phpgw_info']['flags']['currentapp']; + $GLOBALS['settings'] = $GLOBALS['phpgw_info']['user']['preferences'][$appname]; + + if (stristr ($GLOBALS['rootdir'], PHPGW_SERVER_ROOT)) + { + $GLOBALS['filesdir'] = substr ($GLOBALS['rootdir'], strlen (PHPGW_SERVER_ROOT)); + } + else + { + unset ($GLOBALS['filesdir']); + } + + $GLOBALS['hostname'] = $GLOBALS['phpgw_info']['server']['webserver_url'] . $GLOBALS['filesdir']; + + ### + # Note that $userinfo["username"] is actually the id number, not the login name + ### + + $GLOBALS['userinfo']['username'] = $GLOBALS['phpgw_info']['user']['account_id']; + $GLOBALS['userinfo']['account_lid'] = $GLOBALS['phpgw']->accounts->id2name ($GLOBALS['userinfo']['username']); + $GLOBALS['userinfo']['hdspace'] = 10000000000; + $GLOBALS['homedir'] = $GLOBALS['fakebase'].'/'.$GLOBALS['userinfo']['account_lid']; + + ### End Configuration Options ### + + if (!defined ('NULL')) + { + define ('NULL', ''); + } + + + // FIXME + require (PHPGW_APP_INC . '/db.inc.php'); + + /* Set up any initial db settings */ + db_init (); + //die('hallo?'); + + ### + # Get user settings from database + ### + + /* We have to define these by hand in phpGW, or rely on it's templates */ + + define ('HTML_TABLE_FILES_HEADER_BG_COLOR', ''); + define ('HTML_TABLE_FILES_HEADER_TEXT_COLOR', 'maroon'); + define ('HTML_TABLE_FILES_COLUMN_HEADER_BG_COLOR', '#cccccc'); + define ('HTML_TABLE_FILES_COLUMN_HEADER_TEXT_COLOR', '#000000'); + define ('HTML_TABLE_FILES_BG_COLOR', '#dedede'); + define ('HTML_TABLE_FILES_TEXT_COLOR', 'maroon'); + define ('HTML_TEXT_ERROR_COLOR', 'red'); + define ('HTML_TEXT_NAVIGATION_BACK_TO_USER', lang('Back to file manager')); + + ### + # Need to include this here so they recognize the settings + ### + + // require (PHPGW_APP_INC . '/html.inc.php'); + + ### + # Define the list of file attributes. Format is "internal_name" => "Displayed name" + # This is used both by internally and externally for things like preferences + ### + + $this->file_attributes = Array( + 'name' => lang('File Name'), + 'mime_type' => lang('MIME Type'), + 'size' => lang('Size'), + 'created' => lang('Created'), + 'modified' => lang('Modified'), + 'owner' => lang('Owner'), + 'createdby_id' => lang('Created by'), + 'modifiedby_id' => lang('Created by'), + 'modifiedby_id' => lang('Modified by'), + 'app' => lang('Application'), + 'comment' => lang('Comment'), + 'version' => lang('Version') + ); + + ### + # Calculate and display B or KB + # And yes, that first if is strange, + # but it does do something + ### + + $this->help_info = Array( +array ("up", "The Up button takes you to the directory above the current directory. For example, if you're in /home/jdoe/mydir, the Up button would take you to /home/jdoe."), +array ("directory_name", "The name of the directory you're currently in."), +array ("home", "The Home button takes you to your personal home directory."), +array ("sort_by", "Click on any of the column headers to sort the list by that column."), +array ("filename", "The name of the file or directory."), +array ("mime_type", "The MIME-type of the file. Examples include text/plain, text/html, image/jpeg. The special MIME-type Directory is used for directories."), +array ("size", "The size of the file or directory in the most convenient units: bytes (B), kilobytes (KB), megabytes (MB), gigabytes (GB). Sizes for directories include subfiles and subdirectories."), +array ("created", "When the file or directory was created."), +array ("modified", "When the file or directory was last modified."), +array ("owner", "The owner of the file or directory. This can be a user or group name."), +array ("created_by", "Displays who created the file or directory."), +array ("modified_by", "Displays who last modified the file or directory."), +array ("application", "The application associated with the file or directory. Usually the application used to create it. A blank application field is ok."), +array ("comment", "The comment for the file or directory. Comments can be set when creating the file or directory, and created or edited any time thereafter."), +array ("version", "The current version for the file or directory. Clicking on the version number will display a list of changes made to the file or directory."), +array ("edit", "Edit the text of the selected file(s). You can select more than one file; this is useful when you want to copy part of one file into another. Clicking Preview will show you a preview of the file. Click Save to save your changes."), +array ("rename", "Rename the selected file(s). You can select as many files or directories as you want. You are presented with a text field to enter the new name of each file or directory."), +array ("delete", "Delete the selected file(s). You can select as many files or directories as you want. When deleting directories, the entire directory and all of its contents are deleted. You will not be prompted to make sure you want to delete the file(s); make sure you really want to delete them before clicking Delete."), +array ("edit_comments", "Create a comment for a file or directory, or edit an existing comment. You can select as many files or directories as you want."), +array ("go_to", "The Go to button takes you to the directory selected in the drop down [directory_list|Directory List]."), +array ("copy_to", "This will copy all selected files and directories to the directory selected in the drop down [directory_list|Directory List]."), +array ("move_to", "This will move all selected files and directories to the directory selected in the drop down [directory_list|Directory List]."), +array ("directory_list", "The Directory List contains a list of all directories you have (at least) read access to. Selecting a directory and clicking one of the [go_to|Go to]/[copy_to|Copy to]/[move_to|Move to] buttons will perform the selected action on that directory. For example, if you select \"/home/somegroup/reports\" from the Directory List, and click the \"[copy_to|Copy to]\" button, all selected files and directories will be copied to \"/home/somegroup/reports\"."), +array ("download", "Download the first selected file to your local computer. You can only download one file at a time. Directories cannot be downloaded, only files."), +array ("create_folder", "Creates a directory (folder == directory). The name of the directory is specified in the text box next to the Create Folder button."), +array ("create_file", "Creates a file in the current directory. The name of the file is specified in the text box next to the Create File button. After clicking the Create File button you will be presented with the [edit|Edit] screen, where you may edit the file you just created. If you do not with to make any changes to the file at this time, simply click the Save button and the file will be saved as an empty file."), +array ("command_line", "Enter a Unix-style command line here, which will be executed when the [execute|Execute] button is pressed. If you don't know what this is, you probably should turn the option off in the Preferences."), +array ("execute", "Clicking the Execute button will execute the Unix-style [command_line|command line] specified in the text box above. If you don't know what this is, you probably should turn the option off in the Preferences."), +array ("update", "Sync the database with the filesystem for the current directory. This is useful if you use another interface to access the same files. Any new files or directories in the current directory will be read in, and the attributes for the other files will be updated to reflect any changes to the filesystem. Update is run automatically every few page loads (currently every 20 page loads as of this writing, but that may have changed by now)."), +array ("file_stats", "Various statistics on the number and size of the files in the current directory. In some situations, these reflect different statistics. For example, when in / or the base directory."), +array ("upload_file", "The full path of the local file to upload. You can type it in or use the Browse.. button to select it. The file will be uploaded to the current directory. You cannot upload directories, only files."), +array ("upload_comment", "The inital comment to use for the newly uploaded file. Totally optional and completely arbitrary. You can [edit_comments|create or edit the comment] at any time in the future."), +array ("upload_files", "This will upload the files listed in the input boxes above, and store them in the current directory."), +array ("show_upload_fields", "This setting determines how many [upload_files|upload fields] will be shown at once. You can change the default number that will be shown in the [preferences].") +); + + } + + + function borkb ($size, $enclosed = NULL, $return = 0) + { + if (!$size) + $size = 0; + + if ($enclosed) + { + $left = '('; + $right = ')'; + } + + if ($size < 1024) + $rstring = $left . $size . 'B' . $right; + else + $rstring = $left . round($size/1024) . 'KB' . $right; + + return ($this->eor ($rstring, $return)); + } + + ### + # Check for and return the first unwanted character + ### + + function bad_chars ($string, $all = True, $return = 0) + { + if ($all) + { + if (preg_match("-([\\/<>\'\"\&])-", $string, $badchars)) + $rstring = $badchars[1]; + } + else + { + if (preg_match("-([\\/<>])-", $string, $badchars)) + $rstring = $badchars[1]; + } + + return trim (($this->eor ($rstring, $return))); + } + + ### + # Match character in string using ord (). + ### + + function ord_match ($string, $charnum) + { + for ($i = 0; $i < strlen ($string); $i++) + { + $character = ord (substr ($string, $i, 1)); + + if ($character == $charnum) + { + return True; + } + } + + return False; + } + + ### + # Decide whether to echo or return. Used by HTML functions + ### + + function eor ($rstring, $return) + { + if ($return) + return ($rstring); + else + { + $this->html_text ($rstring . "\n"); + return (0); + } + } + + function html_text ($string, $times = 1, $return = 0, $lang = 0) + { + global $phpgw; + + if ($lang) + $string = $this->translate ($string); + + if ($times == NULL) + $times = 1; + for ($i = 0; $i != $times; $i++) + { + if ($return) + $rstring .= $string; + else + echo $string; + } + if ($return) + return ($rstring); + } + + ### + # URL encode a string + # First check if its a query string, then if its just a URL, then just encodes it all + # Note: this is a hack. It was made to work with form actions, form values, and links only, + # but should be able to handle any normal query string or URL + ### + + function string_encode ($string, $return = False) + { + if (preg_match ("/=(.*)(&|$)/U", $string)) + { + $rstring = $string; + + preg_match_all ("/=(.*)(&|$)/U", $string, $matches, PREG_SET_ORDER); + + reset ($matches); + while (list (,$match_array) = each ($matches)) + { + $var_encoded = rawurlencode (base64_encode ($match_array[1])); + $rstring = str_replace ($match_array[0], '=' . $var_encoded . $match_array[2], $rstring); + } + } + elseif (ereg ('^'.$GLOBALS['hostname'], $string)) + { + $rstring = ereg_replace ('^'.$GLOBALS['hostname'].'/', '', $string); + $rstring = preg_replace ("/(.*)(\/|$)/Ue", "rawurlencode (base64_encode ('\\1')) . '\\2'", $rstring); + $rstring = $GLOBALS['hostname'].'/'.$rstring; + } + else + { + $rstring = rawurlencode ($string); + + /* Terrible hack, decodes all /'s back to normal */ + $rstring = preg_replace ("/%2F/", '/', $rstring); + } + + return ($this->eor ($rstring, $return)); + } + + function string_decode ($string, $return = False) + { + $rstring = rawurldecode ($string); + + return ($this->eor ($rstring, $return)); + } + + ### + # HTML encode a string + # This should be used with anything in an HTML tag that might contain < or > + ### + + function html_encode ($string, $return) + { + $rstring = htmlspecialchars ($string); + + return ($this->eor ($rstring, $return)); + } + + function translate ($text) + { + return ($GLOBALS['phpgw']->lang($text)); + } + + + } + ?> diff --git a/filemanager/inc/class.uifilemanager.inc.php b/filemanager/inc/class.uifilemanager.inc.php new file mode 100755 index 0000000000..68c7d82227 --- /dev/null +++ b/filemanager/inc/class.uifilemanager.inc.php @@ -0,0 +1,2377 @@ + True, + ); + + var $bo; +// var $pref; + var $imgroot; + + function uifilemanager() + { + $this->bo = CreateObject('filemanager.bofilemanager'); + + //FIXME remove this one + $this->imgroot='filemanager/templates/default/'; + + + } + + + function index() + { + global $download,$path,$sortby,$op,$go,$file,$show_upload_boxes; + + ### + # Enable this to display some debugging info + ### + + $phpwh_debug = 0; + + @reset ($GLOBALS['HTTP_POST_VARS']); + while (list ($name,) = @each ($GLOBALS['HTTP_POST_VARS'])) + { + $$name = $GLOBALS['HTTP_POST_VARS'][$name]; + } + + // var_dump($GLOBALS['HTTP_POST_VARS']); + + + @reset ($GLOBALS['HTTP_GET_VARS']); + while (list ($name,) = @each ($GLOBALS['HTTP_GET_VARS'])) + { + $$name = $GLOBALS['HTTP_GET_VARS'][$name]; + } + + $to_decode = array + ( + /* + Decode + 'var' when 'avar' == 'value' + or + 'var' when 'var' is set + */ + 'op' => array ('op' => ''), + 'path' => array ('path' => ''), + 'file' => array ('file' => ''), + 'sortby' => array ('sortby' => ''), + 'fileman' => array ('fileman' => ''), + 'messages' => array ('messages' => ''), + 'help_name' => array ('help_name' => ''), + 'renamefiles' => array ('renamefiles' => ''), + 'comment_files' => array ('comment_files' => ''), + 'show_upload_boxes' => array ('show_upload_boxes' => '') + ); + + // FIXME (pim) decode doesn't work and I don't know where its for + + /* + + reset ($to_decode); + while (list ($var, $conditions) = each ($to_decode)) + { + while (list ($condvar, $condvalue) = each ($conditions)) + { + if (isset ($$condvar) && ($condvar == $var || $$condvar == $condvalue)) + { + if (is_array ($$var)) + { + $temp = array (); + //some fixes in this section were supplied by Michael Totschnig + while (list ($varkey, $varvalue) = each ($$var)) + { + if (is_int ($varkey)) + { + $temp[$varkey] = stripslashes (base64_decode(urldecode(($varvalue)))); + } + else + { + $temp[stripslashes (base64_decode(urldecode(($varkey))))] = $varvalue; + } + } + $$var = $temp; + } + elseif (isset ($$var)) + { + $$var = stripslashes (base64_decode(urldecode ($$var))); + } + } + } + } + + */ + + //FIXME re-enable this here above + + if ($noheader || $nofooter || ($download && (count ($fileman) > 0)) || ($op == 'view' && $file) || ($op == 'history' && $file) || ($op == 'help' && $help_name)) + { + $noheader = True; + $nofooter = True; + } + + $GLOBALS['phpgw_info']['flags'] = array + ( + 'currentapp' => 'filemanager', + 'noheader' => $noheader, + 'nofooter' => $nofooter, + 'noappheader' => False, + 'enable_browser_class' => True + ); + +// var_dump($GLOBALS['phpgw_info']['flags']); + $GLOBALS['phpgw']->common->phpgw_header(); + + + if ($execute && $command_line) + { + if ($result = $this->bo->vfs->command_line (array ('command_line' => stripslashes ($command_line)))) + { + $messages = $this->html_text_bold (lang('Command sucessfully run'),1); + if ($result != 1 && strlen ($result) > 0) + { + $messages .= $this->html_break (2, NULL, 1) . $result; + } + } + else + { + $messages = $GLOBALS['phpgw']->common->error_list (array (lang('Error running command'))); + } + } + + ### + # Page to process users + # Code is fairly hackish at the beginning, but it gets better + # Highly suggest turning wrapping off due to long SQL queries + ### + + ### + # Some hacks to set and display directory paths correctly + ### + + if ($go) + { + $path = $todir; + } + + // var_dump($GLOBALS['phpgw_info']); + // var_dump($GLOBALS['phpgw']); + // die(); + + if (!$path) + { + $path = $this->bo->vfs->pwd (); + + if (!$path || $this->bo->vfs->pwd (array ('full' => False)) == '') + { + $path = $GLOBALS['homedir']; + } + } + + + + $this->bo->vfs->cd (array ('string' => False, 'relatives' => array (RELATIVE_NONE), 'relative' => False)); + $this->bo->vfs->cd (array ('string' => $path, 'relatives' => array (RELATIVE_NONE), 'relative' => False)); + + $pwd = $this->bo->vfs->pwd (); + + if (!$cwd = substr ($path, strlen ($GLOBALS['homedir']) + 1)) + { + $cwd = '/'; + } + else + { + $cwd = substr ($pwd, strrpos ($pwd, '/') + 1); + } + + $disppath = $path; + + /* This just prevents // in some cases */ + if ($path == '/') + $dispsep = ''; + else + $dispsep = '/'; + + if (!($lesspath = substr ($path, 0, strrpos ($path, '/')))) + $lesspath = '/'; + + $now = date ('Y-m-d'); + + if ($phpwh_debug) + { + echo "PHPWebHosting debug:
+ path: $path
+ disppath: $disppath
+ cwd: $cwd
+ lesspath: $lesspath +

+ phpGW debug:
+ real getabsolutepath: " . $this->bo->vfs->getabsolutepath (array ('target' => False, 'mask' => False, 'fake' => False)) . "
+ fake getabsolutepath: " . $this->bo->vfs->getabsolutepath (array ('target' => False)) . "
+ appsession: " . $GLOBALS['phpgw']->session->appsession ('vfs','') . "
+ pwd: " . $this->bo->vfs->pwd () . "
"; + } + + ### + # Get their readable groups to be used throughout the script + ### + + $groups = array (); + + $groups = $GLOBALS['phpgw']->accounts->get_list ('groups'); + + $readable_groups = array (); + + while (list ($num, $account) = each ($groups)) + { + if ($this->bo->vfs->acl_check (array ( + 'owner_id' => $account['account_id'], + 'operation' => PHPGW_ACL_READ + )) + ) + { + $readable_groups[$account['account_lid']] = Array('account_id' => $account['account_id'], 'account_name' => $account['account_lid']); + } + } + + $groups_applications = array (); + + while (list ($num, $group_array) = each ($readable_groups)) + { + $group_id = $GLOBALS['phpgw']->accounts->name2id ($group_array['account_name']); + + $applications = CreateObject('phpgwapi.applications', $group_id); + $groups_applications[$group_array['account_name']] = $applications->read_account_specific (); + } + + ### + # We determine if they're in their home directory or a group's directory, + # and set the VFS working_id appropriately + ### + + if ((preg_match ('+^'.$GLOBALS['fakebase'].'\/(.*)(\/|$)+U', $path, $matches)) && $matches[1] != $GLOBALS['userinfo']['account_lid']) + { + $this->bo->vfs->working_id = $GLOBALS['phpgw']->accounts->name2id ($matches[1]); + } + else + { + $this->bo->vfs->working_id = $GLOBALS['userinfo']['username']; + } + + if ($path != $GLOBALS['homedir'] + && $path != $GLOBALS['fakebase'] + && $path != '/' + && !$this->bo->vfs->acl_check (array ( + 'string' => $path, + 'relatives' => array (RELATIVE_NONE), + 'operation' => PHPGW_ACL_READ + )) + ) + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('You do not have access to %1', $path))); + $this->html_break (2); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$GLOBALS['homedir'], lang('Go to your home directory')); + $this->html_page_close (); + } + + $GLOBALS['userinfo']['working_id'] = $this->bo->vfs->working_id; + $GLOBALS['userinfo']['working_lid'] = $GLOBALS['phpgw']->accounts->id2name ($GLOBALS['userinfo']['working_id']); + + ### + # If their home directory doesn't exist, we create it + # Same for group directories + ### + + if (($path == $GLOBALS['homedir']) + && !$this->bo->vfs->file_exists (array ( + 'string' => $GLOBALS['homedir'], + 'relatives' => array (RELATIVE_NONE) + )) +) +{ + $this->bo->vfs->override_acl = 1; + + if (!$this->bo->vfs->mkdir (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE)))) + { + // FIXME (pim) ?? + $p = $this->bo->vfs->path_parts (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE))); + echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not create directory %1', $GLOBALS['homedir'] . ' (' . $p->real_full_path . ')'))); + } + + $this->bo->vfs->override_acl = 0; +} + +### +# Verify path is real +### + +if ($path != $GLOBALS['homedir'] && $path != '/' && $path != $GLOBALS['fakebase']) +{ + if (!$this->bo->vfs->file_exists (array ('string' => $path, 'relatives' => array (RELATIVE_NONE)))) + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Directory %1 does not exist', $path))); + $this->html_break (2); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$GLOBALS['homedir'], lang('Go to your home directory')); + $this->html_break (2); + $this->html_link_back (); + $this->html_page_close (); + } +} + +/* Update if they request it, or one out of 20 page loads */ +srand ((double) microtime() * 1000000); +if ($update || rand (0, 19) == 4) +{ + $this->bo->vfs->update_real (array ('string' => $path, 'relatives' => array (RELATIVE_NONE))); +} + +### +# Check available permissions for $path, so we can disable unusable operations in user interface +### + +if ($this->bo->vfs->acl_check (array ( + 'string' => $path, + 'relatives' => array (RELATIVE_NONE), + 'operation' => PHPGW_ACL_ADD +)) + ) + { + $can_add = True; + } + + ### + # Default is to sort by name + ### + + if (!$sortby) + { + $sortby = 'name'; + } + + ### + # Decide how many upload boxes to show + ### + //var_dump($show_upload_boxes); + //die(); + + if (!$show_upload_boxes || $show_upload_boxes <= 0) + { + if (!$show_upload_boxes = $GLOBALS['settings']['show_upload_boxes']) + { + $show_upload_boxes = 5; + } + } + + ### + # Read in file info from database to use in the rest of the script + # $fakebase is a special directory. In that directory, we list the user's + # home directory and the directories for the groups they're in + ### + + $numoffiles = 0; + if ($path == $GLOBALS['fakebase']) + { + if (!$this->bo->vfs->file_exists (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE)))) + { + $this->bo->vfs->mkdir (array ('string' => $GLOBALS['homedir'], 'relatives' => array (RELATIVE_NONE))); + } + + $ls_array = $this->bo->vfs->ls (array ( + 'string' => $GLOBALS['homedir'], + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => True + ) + ); + $files_array[] = $ls_array[0]; + $numoffiles++; + // $files_array = $ls_array; + // $numoffiles = count($ls_array); + + reset ($readable_groups); + while (list ($num, $group_array) = each ($readable_groups)) + { + ### + # If the group doesn't have access to this app, we don't show it + ### + + if (!$groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) + { + continue; + } + + if (!$this->bo->vfs->file_exists (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array (RELATIVE_NONE) + )) + ) + { + $this->bo->vfs->override_acl = 1; + $this->bo->vfs->mkdir (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array (RELATIVE_NONE) + ) + ); + $this->bo->vfs->override_acl = 0; + + $this->bo->vfs->set_attributes (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array (RELATIVE_NONE), + 'attributes' => array ( + 'owner_id' => $group_array['account_id'], + 'createdby_id' => $group_array['account_id'] + ) + ) + ); + } + + $ls_array = $this->bo->vfs->ls (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => True + ) +); + +$files_array[] = $ls_array[0]; + +$numoffiles++; + } + } + else + { + $ls_array = $this->bo->vfs->ls (array ( + 'string' => $path, + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => False, + 'orderby' => $sortby + ) + ); + + if ($phpwh_debug) + { + echo '# of files found in "'.$path.'" : '.count($ls_array).'
'."\n"; + } + + while (list ($num, $file_array) = each ($ls_array)) + { + $numoffiles++; + $files_array[] = $file_array; + if ($phpwh_debug) + { + echo 'Filename: '.$file_array['name'].'
'."\n"; + } + } + } + + if (!is_array ($files_array)) + { + $files_array = array (); + } + + if ($download) + { + for ($i = 0; $i != $numoffiles; $i++) + { + if (!$fileman[$i]) + { + continue; + } + + $download_browser = CreateObject ('phpgwapi.browser'); + $download_browser->content_header ($fileman[$i]); + echo $this->bo->vfs->read (array ('string' => $fileman[$i])); + $GLOBALS['phpgw']->common->phpgw_exit (); + } + } + + if ($op == 'view' && $file) + { + $ls_array = $this->bo->vfs->ls (array ( + 'string' => $path.'/'.$file, + 'relatives' => array (RELATIVE_ALL), + 'checksubdirs' => False, + 'nofiles' => True + ) + ); + + if ($ls_array[0]['mime_type']) + { + $mime_type = $ls_array[0]['mime_type']; + } + elseif ($GLOBALS['settings']['viewtextplain']) + { + $mime_type = 'text/plain'; + } + + header('Content-type: ' . $mime_type); + echo $this->bo->vfs->read (array ( + 'string' => $path.'/'.$file, + 'relatives' => array (RELATIVE_NONE) + ) + ); + $GLOBALS['phpgw']->common->phpgw_exit (); +} + +if ($op == 'history' && $file) +{ + $journal_array = $this->bo->vfs->get_journal (array ( + 'string' => $file, + 'relatives' => array (RELATIVE_ALL) + ) +); + +if (is_array ($journal_array)) +{ + $this->html_table_begin (); + $this->html_table_row_begin (); + $this->html_table_col_begin (); + $this->html_text_bold (lang('Date')); + $this->html_table_col_end (); + $this->html_table_col_begin (); + $this->html_text_bold (lang('Version')); + $this->html_table_col_end (); + $this->html_table_col_begin (); + $this->html_text_bold (lang('Who')); + $this->html_table_col_end (); + $this->html_table_col_begin (); + $this->html_text_bold (lang('Operation')); + $this->html_table_col_end (); + $this->html_table_row_end (); + + while (list ($num, $journal_entry) = each ($journal_array)) + { + $this->html_table_row_begin (); + $this->html_table_col_begin (); + $this->bo->html_text ($journal_entry['created'] . $this->html_nbsp (3, 1)); + $this->html_table_col_end (); + $this->html_table_col_begin (); + $this->bo->html_text ($journal_entry['version'] . $this->html_nbsp (3, 1)); + $this->html_table_col_end (); + $this->html_table_col_begin (); + $this->bo->html_text ($GLOBALS['phpgw']->accounts->id2name ($journal_entry['owner_id']) . $this->html_nbsp (3, 1)); + $this->html_table_col_end (); + $this->html_table_col_begin (); + $this->bo->html_text ($journal_entry['comment']); + $this->html_table_col_end (); + } + + $this->html_table_end (); + $this->html_page_close (); +} +else +{ + $this->html_text_bold (lang('No version history for this file/directory')); +} + + } + + if ($newfile && $createfile) + { + if ($badchar = $this->bo->bad_chars ($createfile, True, True)) + { + echo $GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('File names cannot contain "%1"',$badchar), 1))); + $this->html_break (2); + $this->html_link_back (); + $this->html_page_close (); + } + + if ($this->bo->vfs->file_exists (array ( + 'string' => $createfile, + 'relatives' => array (RELATIVE_ALL) + )) + ) + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('File %1 already exists. Please edit it or delete it first.', $createfile))); + $this->html_break (2); + $this->html_link_back (); + $this->html_page_close (); + } + + if ($this->bo->vfs->touch (array ( + 'string' => $createfile, + 'relatives' => array (RELATIVE_ALL) + )) + ) + { + $fileman = array (); + $fileman[0] = $createfile; + $edit = 1; + $numoffiles++; + } + else + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('File %1 could not be created.', $createfile))); + } + } + + if ($op == 'help' && $help_name) + { + while (list ($num, $help_array) = each ($help_info)) + { + if ($help_array[0] != $help_name) + continue; + + $help_array[1] = preg_replace ("/\[(.*)\|(.*)\]/Ue", "html_help_link ('\\1', '\\2', False, True)", $help_array[1]); + $help_array[1] = preg_replace ("/\[(.*)\]/Ue", "html_help_link ('\\1', '\\1', False, True)", $help_array[1]); + + $this->html_font_set ('4'); + $title = ereg_replace ('_', ' ', $help_array[0]); + $title = ucwords ($title); + $this->bo->html_text ($title); + $this->html_font_end (); + + $this->html_break (2); + + $this->html_font_set ('2'); + $this->bo->html_text ($help_array[1]); + $this->html_font_end (); + } + + $GLOBALS['phpgw']->common->phpgw_exit (); + } + + ### + # Start Main Page + ### + + $this->html_page_begin (lang('Users').' :: '.$GLOBALS['userinfo']['username']); + $this->html_page_body_begin (HTML_PAGE_BODY_COLOR); + + if ($messages) + { + $this->bo->html_text ($messages); + } + + if (!count ($GLOBALS['settings'])) + { + $GLOBALS[pref] = CreateObject ('phpgwapi.preferences', $GLOBALS['userinfo']['username']); + $GLOBALS[pref]->read_repository (); + $GLOBALS['phpgw']->hooks->single ('add_def_pref', $GLOBALS['appname']); + $GLOBALS[pref]->save_repository (True); + $pref_array = $GLOBALS[pref]->read_repository (); + $GLOBALS['settings'] = $pref_array[$GLOBALS['appname']]; + } + + ### + # Start Main Table + ### + + if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$edit && !$comment_files) + { + $this->html_table_begin ('100%'); + $this->html_table_row_begin (); + $this->html_table_col_begin ('center', NULL, 'top'); + $this->html_align ('center'); + $this->html_form_begin ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$path); + if ($numoffiles || $cwd) + { + while (list ($num, $name) = each ($GLOBALS['settings'])) + { + if ($name) + { + $columns++; + } + } + $columns++; + $this->html_table_begin (); + $this->html_table_row_begin (NULL, NULL, NULL, HTML_TABLE_FILES_HEADER_BG_COLOR); + $this->html_table_col_begin ('center', NULL, NULL, NULL, $columns); + $this->html_table_begin ('100%'); + $this->html_table_row_begin (); + $this->html_table_col_begin ('left'); + + if ($path != '/') + { + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$lesspath, $this->html_image ($this->imgroot.'images/folder-up.png', lang('Up'), 'left', 0, NULL, 1)); + $this->html_help_link ('up'); + } + + $this->html_table_col_end (); + $this->html_table_col_begin ('center'); + + if ($cwd) + { + if ($path == $GLOBALS['homedir']) + { + $this->html_image ($this->imgroot.'images/folder-home.png', lang('Folder'), 'center'); + } + else + { + $this->html_image ($this->imgroot.'images/folder.png', lang('Folder'), 'center'); + } + } + else + { + $this->html_image ($this->imgroot.'images/folder-home.png', lang('Home')); + } + + $this->html_font_set (4, HTML_TABLE_FILES_HEADER_TEXT_COLOR); + $this->html_text_bold ($disppath); + $this->html_font_end (); + $this->html_help_link ('directory_name'); + $this->html_table_col_end (); + $this->html_table_col_begin ('right'); + + if ($path != $GLOBALS['homedir']) + { + $this->html_link ('/index.php'.'menuaction=filemanager.uifilemanager.index&path='.$GLOBALS['homedir'], $this->html_image ($this->imgroot.'images/folder-home.png', lang('Home'), 'right', 0, NULL, 1)); + $this->html_help_link ('home'); + } + + $this->html_table_col_end (); + $this->html_table_row_end (); + $this->html_table_end (); + $this->html_table_col_end (); + $this->html_table_row_end (); + $this->html_table_row_begin (NULL, NULL, NULL, HTML_TABLE_FILES_COLUMN_HEADER_BG_COLOR); + + ### + # Start File Table Column Headers + # Reads values from $file_attributes array and preferences + ### + + $this->html_table_col_begin (); + $this->bo->html_text (lang('Sort by:') . $this->html_nbsp (1, 1), NULL, NULL, 0); + $this->html_help_link ('sort_by'); + $this->html_table_col_end (); + + reset ($this->bo->file_attributes); + while (list ($internal, $displayed) = each ($this->bo->file_attributes)) + { + if ($GLOBALS['settings'][$internal]) + { + $this->html_table_col_begin (); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$path.'&sortby='.$internal, $this->html_text_bold ($displayed, 1, 0)); + $this->html_help_link (strtolower (ereg_replace (' ', '_', $displayed))); + $this->html_table_col_end (); + } + } + + $this->html_table_col_begin (); + $this->html_table_col_end (); + $this->html_table_row_end (); + + if ($GLOBALS['settings']['dotdot'] && $GLOBALS['settings']['name'] && $path != '/') + { + $this->html_table_row_begin (); + $this->html_table_col_begin (); + $this->html_table_col_end (); + + /* We can assume the next column is the name */ + $this->html_table_col_begin (); + $this->html_image ($this->imgroot.'images/folder.png', lang('Folder')); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$lesspath, '..'); + $this->html_table_col_end (); + + if ($GLOBALS['settings']['mime_type']) + { + $this->html_table_col_begin (); + $this->bo->html_text (lang('Directory')); + $this->html_table_col_end (); + } + + $this->html_table_row_end (); + } + + ### + # List all of the files, with their attributes + ### + + reset ($files_array); + for ($i = 0; $i != $numoffiles; $i++) + { + $files = $files_array[$i]; + + if ($rename || $edit_comments) + { + unset ($this_selected); + unset ($renamethis); + unset ($edit_this_comment); + + for ($j = 0; $j != $numoffiles; $j++) + { + if ($fileman[$j] == $files['name']) + { + $this_selected = 1; + break; + } + } + + if ($rename && $this_selected) + { + $renamethis = 1; + } + elseif ($edit_comments && $this_selected) + { + $edit_this_comment = 1; + } + } + + if (!$GLOBALS['settings']['dotfiles'] && ereg ("^\.", $files['name'])) + { + continue; + } + + $this->html_table_row_begin (NULL, NULL, NULL, HTML_TABLE_FILES_BG_COLOR); + + ### + # Checkboxes + ### + + $this->html_table_col_begin ('right'); + + if (!$rename && !$edit_comments && $path != $GLOBALS['fakebase'] && $path != '/') + { + $this->html_form_input ('checkbox', 'fileman['.$i.']', base64_encode ($files['name'])); + } + elseif ($renamethis) + { + $this->html_form_input ('hidden', 'fileman[' . base64_encode ($files['name']) . ']', $files['name'], NULL, NULL, 'checked'); + } + else + { + $this->html_nbsp(); + } + + $this->html_table_col_end (); + + ### + # File name and icon + ### + + if ($GLOBALS['settings']['name']) + { + if ($phpwh_debug) + { + echo 'Setting file name: '.$files['name'].'
'."\n"; + } + + $this->html_table_col_begin (); + + if ($renamethis) + { + if ($files['mime_type'] == 'Directory') + { + $this->html_image ($this->imgroot.'images/folder.png', lang('Folder')); + } + $this->html_form_input ('text', 'renamefiles[' . base64_encode ($files['name']) . ']', $files['name'], 255); + } + else + { + if ($files['mime_type'] == 'Directory') + { + $this->html_image ($this->imgroot.'images/folder.png', lang('Folder')); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$path.$dispsep.$files['name'], $files['name']); + } + else + { + if ($GLOBALS['settings']['viewinnewwin']) + { + $target = '_new'; + } + + if ($GLOBALS['settings']['viewonserver'] && isset ($GLOBALS['filesdir']) && !$files['link_directory']) + { + #FIXME + $clickview = $GLOBALS['filesdir'].$pwd.'/'.$files['name']; + + if ($phpwh_debug) + { + echo 'Setting clickview = '.$clickview.'
'."\n"; + $this->html_link ($clickview, '',$files['name'], 0, 1, 0, ''); + } + } + else + { + #FIXME?? + // $clickview = $GLOBALS['appname'].'/index.php?op=view&file='.$files['name'].'&path='.$path; + $this->html_link ('index.php','menuaction=filemanager.uifilemanager.index&op=view&file='.$files['name'].'&path='.$path, $files['name'], 0, 1, 0, $target); + } + + + #FIXME + //$this->html_link ($clickview, $files['name'], 0, 1, 0, $target); + } + } + + $this->html_table_col_end (); + } + + ### + # MIME type + ### + + if ($GLOBALS['settings']['mime_type']) + { + $this->html_table_col_begin (); + $this->bo->html_text ($files['mime_type']); + $this->html_table_col_end (); + } + + ### + # File size + ### + + if ($GLOBALS['settings']['size']) + { + $this->html_table_col_begin (); + + $size = $this->bo->vfs->get_size (array ( + 'string' => $files['directory'] . '/' . $files['name'], + 'relatives' => array (RELATIVE_NONE) + ) + ); + + $this->bo->borkb ($size); + + $this->html_table_col_end (); + } + + ### + # Date created + ### + if ($GLOBALS['settings']['created']) + { + $this->html_table_col_begin (); + $this->bo->html_text ($files['created']); + $this->html_table_col_end (); + } + + ### + # Date modified + ### + + if ($GLOBALS['settings']['modified']) + { + $this->html_table_col_begin (); + if ($files['modified'] != '0000-00-00') + { + $this->bo->html_text ($files['modified']); + } + $this->html_table_col_end (); + } + + ### + # Owner name + ### + + if ($GLOBALS['settings']['owner']) + { + $this->html_table_col_begin (); + $this->bo->html_text ($GLOBALS['phpgw']->accounts->id2name ($files['owner_id'])); + $this->html_table_col_end (); + } + + ### + # Creator name + ### + + if ($GLOBALS['settings']['createdby_id']) + { + $this->html_table_col_begin (); + if ($files['createdby_id']) + { + $this->bo->html_text ($GLOBALS['phpgw']->accounts->id2name ($files['createdby_id'])); + } + $this->html_table_col_end (); + } + + ### + # Modified by name + ### + + if ($GLOBALS['settings']['modifiedby_id']) + { + $this->html_table_col_begin (); + if ($files['modifiedby_id']) + { + $this->bo->html_text ($GLOBALS['phpgw']->accounts->id2name ($files['modifiedby_id'])); + } + $this->html_table_col_end (); + } + + ### + # Application + ### + + if ($GLOBALS['settings']['app']) + { + $this->html_table_col_begin (); + $this->bo->html_text ($files['app']); + $this->html_table_col_end (); + } + + ### + # Comment + ### + + if ($GLOBALS['settings']['comment']) + { + $this->html_table_col_begin (); + if ($edit_this_comment) + { + $this->html_form_input ('text', 'comment_files[' . base64_encode ($files['name']) . ']', $this->bo->html_encode ($files['comment'], 1), 255); + } + else + { + $this->bo->html_text ($files['comment']); + } + $this->html_table_col_end (); + } + + ### + # Version + ### + + if ($GLOBALS['settings']['version']) + { + $this->html_table_col_begin (); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&op=history&file='.$files['name'].'&path='.$path, $files['version'], NULL, True, NULL, '_new'); + $this->html_table_col_end (); + } + + ### + # Deleteable (currently not used) + ### + + if ($GLOBALS['settings']['deleteable']) + { + if ($files['deleteable'] == 'N') + { + $this->html_table_col_begin (); + $this->html_image ($this->imgroot.'images/locked.png', lang('Locked')); + $this->html_table_col_end (); + } + else + { + $this->html_table_col_begin (); + $this->html_table_col_end (); + } + } + + $this->html_table_row_end (); + + if ($files['mime_type'] == 'Directory') + { + $usedspace += $fileinfo[0]; + } + else + { + $usedspace += $files['size']; + } + } + + $this->html_table_end (); + $this->html_break (2); + + if ($path != '/' && $path != $GLOBALS['fakebase']) + { + if (!$rename && !$edit_comments) + { + $this->html_form_input ('submit', 'edit', lang('Edit')); + $this->html_help_link ('edit'); + $this->html_nbsp (3); + } + + if (!$edit_comments) + { + $this->html_form_input ('submit', 'rename', lang('Rename')); + $this->html_help_link ('rename'); + $this->html_nbsp (3); + } + + if (!$rename && !$edit_comments) + { + $this->html_form_input ('submit', 'delete', lang('Delete')); + $this->html_help_link ('delete'); + $this->html_nbsp (3); + } + + if (!$rename) + { + $this->html_form_input ('submit', 'edit_comments', lang('Edit comments')); + $this->html_help_link ('edit_comments'); + } + } + } + + ### + # Display some inputs and info, but not when renaming or editing comments + ### + + if (!$rename && !$edit_comments) + { + ### + # Begin Copy to/Move to selection + ### + + $this->html_break (1); + $this->html_form_input ('submit', 'go', lang('Go to:')); + $this->html_help_link ('go_to'); + + if ($path != '/' && $path != $GLOBALS['fakebase']) + { + $this->html_form_input ('submit', 'copy', lang('Copy to:')); + $this->html_help_link ('copy_to'); + $this->html_form_input ('submit', 'move', lang('Move to:')); + $this->html_help_link ('move_to'); + } + + $this->html_form_select_begin ('todir'); + + $this->html_break (1); + + ### + # First we get the directories in their home directory + ### + + $dirs = array (); + $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $GLOBALS['userinfo']['account_lid']); + + $ls_array = $this->bo->vfs->ls (array ( + 'string' => $GLOBALS['homedir'], + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => True, + 'mime_type' => 'Directory' + ) + ); + + while (list ($num, $dir) = each ($ls_array)) + { + $dirs[] = $dir; + } + + + ### + # Then we get the directories in their readable groups' home directories + ### + + reset ($readable_groups); + while (list ($num, $group_array) = each ($readable_groups)) + { + ### + # Don't list directories for groups that don't have access + ### + + if (!$groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) + { + continue; + } + + $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $group_array['account_name']); + + // FIXME?? (pim) + $ls_array = $this->bo->vfs->ls (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => True, + 'mime_type' => 'Directory' + ) + ); + while (list ($num, $dir) = each ($ls_array)) + { + $dirs[] = $dir; + } +} + +reset ($dirs); +while (list ($num, $dir) = each ($dirs)) +{ + if (!$dir['directory']) + { + continue; + } + + ### + # So we don't display // + ### + + if ($dir['directory'] != '/') + { + $dir['directory'] .= '/'; + } + + ### + # No point in displaying the current directory, or a directory that doesn't exist + ### + + if ((($dir['directory'] . $dir['name']) != $path) + && $this->bo->vfs->file_exists (array ( + 'string' => $dir['directory'] . $dir['name'], + 'relatives' => array (RELATIVE_NONE) + )) +) +{ + $this->html_form_option ($dir['directory'] . $dir['name'], $dir['directory'] . $dir['name']); +} + } + + $this->html_form_select_end (); + $this->html_help_link ('directory_list'); + + if ($path != '/' && $path != $GLOBALS['fakebase']) + { + $this->html_break (1); + + $this->html_form_input ('submit', 'download', lang('Download')); + $this->html_help_link ('download'); + $this->html_nbsp (3); + + if ($can_add) + { + $this->html_form_input ('text', 'createdir', NULL, 255, 15); + $this->html_form_input ('submit', 'newdir', lang('Create Folder')); + $this->html_help_link ('create_folder'); + } + } + + $this->html_break (1); + $this->html_form_input ('submit', 'update', lang('Update')); + $this->html_help_link ('update'); + + if ($path != '/' && $path != $GLOBALS['fakebase'] && $can_add) + { + $this->html_nbsp (3); + $this->html_form_input ('text', 'createfile', NULL, 255, 15); + $this->html_form_input ('submit', 'newfile', lang('Create File')); + $this->html_help_link ('create_file'); + } + + if ($GLOBALS['settings']['show_command_line']) + { + $this->html_break (2); + $this->html_form_input ('text', 'command_line', NULL, NULL, 50); + $this->html_help_link ('command_line'); + + $this->html_break (1); + $this->html_form_input ('submit', 'execute', lang('Execute')); + $this->html_help_link ('execute'); + } + + $this->html_form_end (); + + $this->html_help_link ('file_stats'); + $this->html_break (1); + $this->html_text_bold (lang('Files').': '); + $this->bo->html_text ($numoffiles); + $this->html_nbsp (3); + + $this->html_text_bold (lang('Used space').': '); + $this->bo->html_text ($this->bo->borkb ($usedspace, NULL, 1)); + $this->html_nbsp (3); + + if ($path == $GLOBALS['homedir'] || $path == $GLOBALS['fakebase']) + { + $this->html_text_bold (lang('Unused space').': '); + $this->bo->html_text ($this->bo->borkb ($GLOBALS['userinfo']['hdspace'] - $usedspace, NULL, 1)); + + $ls_array = $this->bo->vfs->ls (array ( + 'string' => $path, + 'relatives' => array (RELATIVE_NONE) + ) + ); + + $i = count ($ls_array); + + $this->html_break (2); + $this->html_text_bold (lang('Total Files').': '); + $this->bo->html_text ($i); + } + + ### + # Show file upload boxes. Note the last argument to html (). Repeats $show_upload_boxes times + ### + + if ($path != '/' && $path != $GLOBALS['fakebase'] && $can_add) + { + $this->html_break (2); + $this->html_form_begin ('/index.php','menuaction=filemanager.uifilemanager.index&op=upload&path='.$path, 'post', 'multipart/form-data'); + $this->html_table_begin (); + $this->html_table_row_begin ('center'); + $this->html_table_col_begin (); + $this->html_text_bold (lang('File')); + $this->html_help_link ('upload_file'); + $this->html_table_col_end (); + $this->html_table_col_begin (); + $this->html_text_bold (lang('Comment')); + $this->html_help_link ('upload_comment'); + $this->html_table_col_end (); + $this->html_table_row_end (); + + $this->html_table_row_begin (); + $this->html_table_col_begin (); + $this->html_form_input ('hidden', 'show_upload_boxes', base64_encode ($show_upload_boxes)); + $this->html ($this->html_form_input ('file', 'upload_file[]', NULL, 255, NULL, NULL, NULL, 1) . $this->html_break (1, NULL, 1), $show_upload_boxes); + $this->html_table_col_end (); + $this->html_table_col_begin (); + $this->html ($this->html_form_input ('text', 'upload_comment[]', NULL, NULL, NULL, NULL, NULL, 1) . $this->html_break (1, NULL, 1), $show_upload_boxes); + $this->html_table_col_end (); + $this->html_table_row_end (); + $this->html_table_end (); + $this->html_form_input ('submit', 'upload_files', lang('Upload files')); + $this->html_help_link ('upload_files'); + $this->html_break (2); + $this->bo->html_text (lang('Show') . $this->html_nbsp (1, True)); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&show_upload_boxes=5', '5'); + $this->html_nbsp (); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&show_upload_boxes=10', '10'); + $this->html_nbsp (); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&show_upload_boxes=20', '20'); + $this->html_nbsp (); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&show_upload_boxes=50', '50'); + $this->html_nbsp (); + $this->bo->html_text (lang('upload fields')); + $this->html_nbsp (); + $this->html_help_link ('show_upload_fields'); + $this->html_form_end (); + } + } + + $this->html_table_col_end (); + $this->html_table_row_end (); + $this->html_table_end (); + $this->html_page_close (); + } + + ### + # Handle Editing files + ### + + if ($edit) + { + ### + # If $edit is "Edit", we do nothing, and let the for loop take over + ### + + if ($edit_file) + { + $edit_file_content = stripslashes ($edit_file_content); + } + + if ($edit_preview) + { + $content = $edit_file_content; + + $this->html_break (1); + $this->html_text_bold (lang('Preview of %1', $path.'/'.$edit_file)); + $this->html_break (2); + + $this->html_table_begin ('90%'); + $this->html_table_row_begin (); + $this->html_table_col_begin (); + $this->bo->html_text (nl2br ($content)); + $this->html_table_col_end (); + $this->html_table_row_end (); + $this->html_table_end (); + } + elseif ($edit_save) + { + $content = $edit_file_content; + + if ($this->bo->vfs->write (array ( + 'string' => $edit_file, + 'relatives' => array (RELATIVE_ALL), + 'content' => $content + )) + ) + { + $this->html_text_bold (lang('Saved %1', $path.'/'.$edit_file)); + $this->html_break (2); + $this->html_link_back (); + } + else + { + $this->html_text_error (lang('Could not save %1', $path.'/'.$edit_file)); + $this->html_break (2); + $this->html_link_back (); + } + } + + /* This doesn't work just yet + elseif ($edit_save_all) + { + for ($j = 0; $j != $numoffiles; $j++) + { + $fileman[$j]; + + $content = $fileman[$j]; + echo 'fileman['.$j.']: '.$fileman[$j].'
'.$content.'
'; + continue; + + if ($this->bo->vfs->write (array ( + 'string' => $fileman[$j], + 'relatives' => array (RELATIVE_ALL), + 'content' => $content + )) + ) + { + $this->html_text_bold (lang('Saved %1', $path.'/'.$fileman[$j])); + $this->html_break (1); + } + else + { + $this->html_text_error (lang('Could not save %1', $path.'/'.$fileman[$j])); + $this->html_break (1); + } + } + + $this->html_break (1); + } + */ + + ### + # Now we display the edit boxes and forms + ### + + for ($j = 0; $j != $numoffiles; $j++) + { + ### + # If we're in preview or save mode, we only show the file + # being previewed or saved + ### + + if ($edit_file && ($fileman[$j] != $edit_file)) + { + continue; + } + + if ($fileman[$j] && $this->bo->vfs->file_exists (array ( + 'string' => $fileman[$j], + 'relatives' => array (RELATIVE_ALL) + )) + ) + { + if ($edit_file) + { + $content = stripslashes ($edit_file_content); + } + else + { + $content = $this->bo->vfs->read (array ('string' => $fileman[$j])); + } + + $this->html_table_begin ('100%'); + $this->html_form_begin ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$path); + $this->html_form_input ('hidden', 'edit', True); + $this->html_form_input ('hidden', 'edit_file', $fileman[$j]); + + ### + # We need to include all of the fileman entries for each file's form, + # so we loop through again + ### + + for ($i = 0; $i != $numoffiles; $i++) + { + $this->html_form_input ('hidden', 'fileman['.$i.']', base64_encode ($fileman[$i])); + } + + $this->html_table_row_begin (); + $this->html_table_col_begin (); + $this->html_form_textarea ('edit_file_content', 35, 75, $content); + $this->html_table_col_end (); + $this->html_table_col_begin ('center'); + $this->html_form_input ('submit', 'edit_preview', lang('Preview %1', $this->bo->html_encode ($fileman[$j], 1))); + $this->html_break (1); + $this->html_form_input ('submit', 'edit_save', lang('Save %1', $this->bo->html_encode ($fileman[$j], 1))); + // $this->html_break (1); + // $this->html_form_input ('submit', 'edit_save_all', lang('Save all')); + $this->html_table_col_end (); + $this->html_table_row_end (); + $this->html_break (2); + $this->html_form_end (); + $this->html_table_end (); + } +} + } + + ### + # Handle File Uploads + ### + + elseif ($op == 'upload' && $path != '/' && $path != $GLOBALS['fakebase']) + { + for ($i = 0; $i != $show_upload_boxes; $i++) + { + if ($badchar = $this->bo->bad_chars ($_FILES['upload_file']['name'][$i], True, True)) + { + echo $GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('File names cannot contain "%1"', $badchar), 1))); + + continue; + } + + ### + # Check to see if the file exists in the database, and get its info at the same time + ### + + $ls_array = $this->bo->vfs->ls (array ( + 'string' => $path . '/' . $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => True + ) + ); + + $fileinfo = $ls_array[0]; + + if ($fileinfo['name']) + { + if ($fileinfo['mime_type'] == 'Directory') + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Cannot replace %1 because it is a directory', $fileinfo['name']))); + continue; + } + } + + if ($_FILES['upload_file']['size'][$i] > 0) + { + if ($fileinfo['name'] && $fileinfo['deleteable'] != 'N') + { + $this->bo->vfs->set_attributes (array ( + 'string' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_ALL), + 'attributes' => array ( + 'owner_id' => $GLOBALS['userinfo']['username'], + 'modifiedby_id' => $GLOBALS['userinfo']['username'], + 'modified' => $now, + 'size' => $_FILES['upload_file']['size'][$i], + 'mime_type' => $_FILES['upload_file']['type'][$i], + 'deleteable' => 'Y', + 'comment' => stripslashes ($upload_comment[$i]) + ) + ) + ); + + $this->bo->vfs->cp(array ( + 'from' => $_FILES['upload_file']['tmp_name'][$i], + 'to' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) + ) + ); + + $this->html_text_summary(lang('Replaced %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $_FILES['upload_file']['size'][$i]); + } + else + { + $this->bo->vfs->cp (array ( + 'from' => $_FILES['upload_file']['tmp_name'][$i], + 'to' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) + ) + ); + + $this->bo->vfs->set_attributes (array ( + 'string' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_ALL), + 'attributes' => array ( + 'mime_type' => $_FILES['upload_file']['type'][$i], + 'comment' => stripslashes ($upload_comment[$i]) + ) + ) + ); + + $this->html_text_summary(lang('Created %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $_FILES['upload_file']['size'][$i]); + } +} +elseif ($_FILES['upload_file']['name'][$i]) +{ + $this->bo->vfs->touch (array ( + 'string' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_ALL) + ) +); + +$this->bo->vfs->set_attributes (array ( + 'string' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_ALL), + 'attributes' => array ( + 'mime_type' => $_FILES['upload_file']['type'][$i], + 'comment' => $upload_comment[$i] + ) +) + ); + + $this->html_text_summary(lang('Created %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $file_size[$i]); + } + } + + $this->html_break (2); + $this->html_link_back (); + } + + ### + # Handle Editing comments + ### + + elseif ($comment_files) + { + while (list ($file) = each ($comment_files)) + { + if ($badchar = $this->bo->bad_chars ($comment_files[$file], False, True)) + { + echo $GLOBALS['phpgw']->common->error_list (array ($this->html_text_italic ($file, 1) . $this->bo->html_encode (': ' . lang('Comments cannot contain "%1"', $badchar), 1))); + continue; + } + + $this->bo->vfs->set_attributes (array ( + 'string' => $file, + 'relatives' => array (RELATIVE_ALL), + 'attributes' => array ( + 'comment' => stripslashes ($comment_files[$file]) + ) + ) + ); + + $this->html_text_summary (lang('Updated comment for %1', $path.'/'.$file)); + } + + $this->html_break (2); + $this->html_link_back (); + } + + ### + # Handle Renaming Files and Directories + ### + + elseif ($renamefiles) + { + while (list ($from, $to) = each ($renamefiles)) + { + if ($badchar = $this->bo->bad_chars ($to, True, True)) + { + echo $GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('File names cannot contain "%1"', $badchar), 1))); + continue; + } + + if (ereg ("/", $to) || ereg ("\\\\", $to)) + { + echo $GLOBALS['phpgw']->common->error_list (array (lang("File names cannot contain \\ or /"))); + } + elseif (!$this->bo->vfs->mv (array ( + 'from' => $from, + 'to' => $to + )) + ) + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not rename %1 to %2', $disppath.'/'.$from, $disppath.'/'.$to))); + } + else + { + $this->html_text_summary (lang('Renamed %1 to %2', $disppath.'/'.$from, $disppath.'/'.$to)); + } + } + + $this->html_break (2); + $this->html_link_back (); + } + + ### + # Handle Moving Files and Directories + ### + + elseif ($move) + { + while (list ($num, $file) = each ($fileman)) + { + if ($this->bo->vfs->mv (array ( + 'from' => $file, + 'to' => $todir . '/' . $file, + 'relatives' => array (RELATIVE_ALL, RELATIVE_NONE) + )) + ) + { + $moved++; + $this->html_text_summary (lang('Moved %1 to %2', $disppath.'/'.$file, $todir.'/'.$file)); + } + else + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not move %1 to %2', $disppath.'/'.$file, $todir.'/'.$file))); + } + } + + if ($moved) + { + $this->html_break (2); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index?path='.$todir, lang('Go to %1', $todir)); + } + + $this->html_break (2); + $this->html_link_back (); +} + +### +# Handle Copying of Files and Directories +### + +elseif ($copy) +{ + while (list ($num, $file) = each ($fileman)) + { + if ($this->bo->vfs->cp (array ( + 'from' => $file, + 'to' => $todir . '/' . $file, + 'relatives' => array (RELATIVE_ALL, RELATIVE_NONE) + )) + ) + { + $copied++; + $this->html_text_summary (lang('Copied %1 to %2', $disppath.'/'.$file, $todir.'/'.$file)); + } + else + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not copy %1 to %2', $disppath.'/'.$file, $todir.'/'.$file))); + } +} + +if ($copied) +{ + $this->html_break (2); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$todir, lang('Go to %1', $todir)); +} + +$this->html_break (2); +$this->html_link_back (); + } + + ### + # Handle Deleting Files and Directories + ### + + elseif ($delete) + { + for ($i = 0; $i != $numoffiles; $i++) + { + if ($fileman[$i]) + { + if ($this->bo->vfs->delete (array ('string' => $fileman[$i]))) + { + $this->html_text_summary (lang('Deleted %1', $disppath.'/'.$fileman[$i]), $fileinfo['size']); + } + else + { + $GLOBALS['phpgw']->common->error_list (array (lang('Could not delete %1', $disppath.'/'.$fileman[$i]))); + } + } + } + + $this->html_break (2); + $this->html_link_back (); + } + + elseif ($newdir && $createdir) + { + if ($this->bo->badchar = $this->bo->bad_chars ($createdir, True, True)) + { + echo $GLOBALS['phpgw']->common->error_list (array ($this->bo->html_encode (lang('Directory names cannot contain "%1"', $badchar), 1))); + $this->html_break (2); + $this->html_link_back (); + $this->html_page_close (); + } + + if ($createdir[strlen($createdir)-1] == ' ' || $createdir[0] == ' ') + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Cannot create directory because it begins or ends in a space'))); + $this->html_break (2); + $this->html_link_back (); + $this->html_page_close (); + } + + $ls_array = $this->bo->vfs->ls (array ( + 'string' => $path . '/' . $createdir, + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => True + ) + ); + + $fileinfo = $ls_array[0]; + + if ($fileinfo['name']) + { + if ($fileinfo['mime_type'] != 'Directory') + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('%1 already exists as a file', $fileinfo['name']))); + $this->html_break (2); + $this->html_link_back (); + $this->html_page_close (); + } + else + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Directory %1 already exists', $fileinfo['name']))); + $this->html_break (2); + $this->html_link_back (); + $this->html_page_close (); + } + } + else + { + if ($this->bo->vfs->mkdir (array ('string' => $createdir))) + { + $this->html_text_summary (lang('Created directory %1', $disppath.'/'.$createdir)); + $this->html_break (2); + $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$disppath.'/'.$createdir, lang('Go to %1', $disppath.'/'.$createdir)); + } + else + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not create %1', $disppath.'/'.$createdir))); + } + } + + $this->html_break (2); + $this->html_link_back (); + } + + $this->html_page_close (); + } + + function html_form_begin ($action,$args, $method = 'post', $enctype = NULL, $string = HTML_FORM_BEGIN_STRING, $return = 0) + { + $action = $this->bo->string_encode ($action, 1); + $action = SEP . $action; + //FIXME + $text = 'action="'.$this->html_link ($action, $args,NULL, 1, 0, 1).'"'; + + if ($method == NULL) + { + $method = 'post'; + } + $text .= ' method="'.$method.'"'; + + if ($enctype != NULL && $enctype) + { + $text .= ' enctype="'.$enctype.'"'; + } + + $rstring = '

'; + return ($this->bo->eor ($rstring, $return)); + } + + function html_form_input ($type = NULL, $name = NULL, $value = NULL, $maxlength = NULL, $size = NULL, $checked = NULL, $string = HTML_FORM_INPUT_STRING, $return = 0) + { + $text = ' '; + if ($type != NULL && $type) + { + if ($type == 'checkbox') + { + $value = $this->bo->string_encode ($value, 1); + } + $text .= 'type="'.$type.'" '; + } + if ($name != NULL && $name) + { + $text .= 'name="'.$name.'" '; + } + if ($value != NULL && $value) + { + $text .= 'value="'.$value.'" '; + } + if (is_int ($maxlength) && $maxlength >= 0) + { + $text .= 'maxlength="'.$maxlength.'" '; + } + if (is_int ($size) && $size >= 0) + { + $text .= 'size="'.$size.'" '; + } + if ($checked != NULL && $checked) + { + $text .= 'checked '; + } + + $rstring = ''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_form_textarea ($name = NULL, $rows = NULL, $cols = NULL, $value = NULL, $string = HTML_FORM_TEXTAREA_STRING, $return = 0) + { + $text =' '; + if ($name != NULL && $name) + { + $text .= 'name="'.$name.'" '; + } + if (is_int ($rows) && $rows >= 0) + { + $text .= 'rows="'.$rows.'" '; + } + if (is_int ($cols) && $cols >= 0) + { + $text .= 'cols="'.$cols.'" '; + } + $rstring = ''.$value.''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_form_select_begin ($name = NULL, $return = 0) + { + $text = ' '; + if ($name != NULL && $name) + { + $text .= 'name="'.$name.'" '; + } + $rstring = ''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_form_select_end ($return = 0) + { + $rstring = ''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_form_option ($value = NULL, $displayed = NULL, $selected = NULL, $return = 0) + { + $text = ' '; + if ($value != NULL && $value) + { + $text .= ' value="'.$value.'" '; + } + if ($selected != NULL && $selected) + { + $text .= ' selected'; + } + $rstring = ''.$displayed.''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_form_end ($return = 0) + { + $rstring = ''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_nbsp ($times = 1, $return = 0) + { + if ($times == NULL) + { + $times = 1; + } + for ($i = 0; $i != $times; $i++) + { + if ($return) + { + $rstring .= ' '; + } + else + { + echo ' '; + } + } + if ($return) + { + return ($rstring); + } + } + + function html ($string, $times = 1, $return = 0) + { + for ($i = 0; $i != $times; $i++) + { + if ($return) + { + $rstring .= $string; + } + else + { + echo $string; + } + } + if ($return) + { + return ($rstring); + } + } + + function html_break ($break, $string = '', $return = 0) + { + switch($break) + { + case 1: + $break_str = '
'; + break; + case 2: + $break_str = '

'; + break; + case 5: + $break_str = '


'; + break; + } + return ($this->bo->eor ($break_str . $string, $return)); + } + + function html_page_begin ($title = NULL, $return = 0) + { + // $rstring = HTML_PAGE_BEGIN_BEFORE_TITLE . $title . HTML_PAGE_BEGIN_AFTER_TITLE; + return ($this->bo->eor ($rstring, $return)); + } + + function html_page_body_begin ($bgcolor = HTML_PAGE_BODY_COLOR, $background = NULL, $text = NULL, $link = NULL, $vlink = NULL, $alink = NULL, $string = HTML_PAGE_BODY_STRING, $return = 0) + { + $text_out = ' '; + if ($bgcolor != NULL && $bgcolor) + { + $text_out .= 'bgcolor="'.$bgcolor.'" '; + } + if ($background != NULL && $background) + { + $text_out .= 'background="'.$background.'" '; + } + if ($text != NULL && $text) + { + $text_out .= 'text="'.$text.'" '; + } + if ($link != NULL && $link) + { + $text_out .= 'link="'.$link.'" '; + } + if ($vlink != NULL && $vlink) + { + $text_out .= 'vlink="'.$vlink.'" '; + } + if ($alink != NULL && $alink) + { + $text_out .= 'alink="'.$alink.'" '; + } + // $rstring = ''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_page_body_end ($return = 0) + { + // $rstring = ''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_page_end ($return = 0) + { + // $rstring = ''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_page_close () + { + // html_page_body_end (); + // html_page_end (); + $GLOBALS['phpgw']->common->phpgw_footer (); + $GLOBALS['phpgw']->common->phpgw_exit (); + } + function html_text_bold ($text = NULL, $return = 0, $lang = 0) + { + if ($lang) + { + $text = $this->bo->translate ($text); + } + $rstring = ''.$text.''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_text_underline ($text = NULL, $return = 0, $lang = 0) + { + if ($lang) + { + $text = $this->bo->translate ($text); + } + $rstring = ''.$text.''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_text_italic ($text = NULL, $return = 0, $lang = 0) + { + if ($lang) + { + $text = $this->bo->translate ($text); + } + $rstring = ''.$text.''; + return ($this->bo->eor ($rstring, $return)); + } + + function html_text_summary ($text = NULL, $size = NULL, $return = 0, $lang = 0) + { + if ($lang) + { + $text = $this->bo->translate ($text); + } + $rstring = $this->html_break (1, NULL, $return); + $rstring .= $this->html_text_bold ($text, $return); + $rstring .= $this->html_nbsp (3, $return); + if ($size != NULL && $size >= 0) + $rstring .= $this->bo->borkb ($size, 1, $return); + + $rstring = $this->bo->html_encode ($rstring, 1); + + if ($return) + { + return ($rstring); + } + } + + function html_text_summary_error ($text = NULL, $text2 = NULL, $size = NULL, $return = 0, $lang = 0) + { + if ($lang) + { + $text = $this->bo->translate ($lang); + } + $rstring = $this->html_text_error ($text, 1, $return); + + if (($text2 != NULL && $text2) || ($size != NULL && $size)) + { + $rstring .= $this->html_nbsp (3, $return); + } + if ($text2 != NULL && $text2) + { + $rstring .= $this->html_text_error ($text2, NULL, $return); + } + if ($size != NULL && $size >= 0) + { + $rstring .= $this->bo->borkb ($size, 1, $return); + } + + if ($return) + { + return ($rstring); + } + } + + function html_font_set ($size = NULL, $color = NULL, $family = NULL, $return = 0) + { + if ($size != NULL && $size) + $size = "size=$size"; + if ($color != NULL && $color) + $color = "color=$color"; + if ($family != NULL && $family) + $family = "family=$family"; + + $rstring = ""; + return ($this->bo->eor ($rstring, $return)); + } + + function html_font_end ($return = 0) + { + $rstring = ""; + return ($this->bo->eor ($rstring, $return)); + } + + function html_text_error ($errorwas = NULL, $break = 1, $return = 0) + { + if ($break) + $rstring .= $this->html_break (1, NULL, 1); + + $rstring .= $this->html_font_set (NULL, HTML_TEXT_ERROR_COLOR, NULL, 1); + $rstring .= $this->html_text_bold ($this->html_text_italic ($errorwas, 1), 1); + $rstring .= $this->html_font_end (1); + return ($this->bo->eor ($rstring, $return)); + } + + function html_page_error ($errorwas = NULL, $title = "Error", $return = 0) + { + $rstring = $this->html_page_begin ($title, $return); + $rstring .= $this->html_page_body_begin (HTML_PAGE_BODY_COLOR, $return); + $rstring .= $this->html_break (2, NULL, $return); + $rstring .= $this->html_text_error ($errorwas, $return); + $rstring .= $this->html_page_body_end ($return); + $rstring .= $this->html_page_end ($return); + if (!$return) + $this->html_page_close (); + else + return ($rstring); + } + + function html_link ($href = NULL, $args = NULL ,$text = NULL, $return = 0, $encode = 1, $linkonly = 0, $target = NULL) + { + if ($encode) + $href = $this->bo->string_encode ($href, 1); + + //echo $encode; + + ### + # This decodes / back to normal + ### + $href = preg_replace ("/%2F/", "/", $href); + $text = trim ($text); + + /* Auto-detect and don't disturb absolute links */ + if (!preg_match ("|^http(.{0,1})://|", $href)) + { + //Only add an extra / if there isn't already one there + + // die(SEP); + if (!($href[0] == SEP)) + { + $href = SEP . $href; + } + + /* $phpgw->link requires that the extra vars be passed separately */ + // $link_parts = explode ("?", $href); + $address = $GLOBALS['phpgw']->link ($href, $args); + } + else + { + $address = $href; + } + + /* If $linkonly is set, don't add any HTML */ + if ($linkonly) + { + $rstring = $address; + } + else + { + if ($target) + { + $target = 'target='.$target; + } + + $rstring = ''.$text.''; + } + + return ($this->bo->eor ($rstring, $return)); + } + + function html_link_back ($return = 0) + { + global $path; + + $rstring .= $this->html_link ('/index.php','menuaction=filemanager.uifilemanager.index&path='.$path, HTML_TEXT_NAVIGATION_BACK_TO_USER, 1); + + return ($this->bo->eor ($rstring, $return)); + } + + function html_table_begin ($width = NULL, $border = NULL, $cellspacing = NULL, $cellpadding = NULL, $rules = NULL, $string = HTML_TABLE_BEGIN_STRING, $return = 0) + { + if ($width != NULL && $width) + $width = "width=$width"; + if (is_int ($border) && $border >= 0) + $border = "border=$border"; + if (is_int ($cellspacing) && $cellspacing >= 0) + $cellspacing = "cellspacing=$cellspacing"; + if (is_int ($cellpadding) && $cellpadding >= 0) + $cellpadding = "cellpadding=$cellpadding"; + if ($rules != NULL && $rules) + $rules = "rules=$rules"; + + $rstring = ""; + return ($this->bo->eor ($rstring, $return)); + } + + function html_link_email ($address = NULL, $text = NULL, $return = 0, $encode = 1) + { + if ($encode) + $href = $this->bo->string_encode ($href, 1); + + $rstring = "$text"; + return ($this->bo->eor ($rstring, $return)); + } + + function html_table_end ($return = 0) + { + $rstring = "
"; + return ($this->bo->eor ($rstring, $return)); + } + + function html_table_row_begin ($align = NULL, $halign = NULL, $valign = NULL, $bgcolor = NULL, $string = HTML_TABLE_ROW_BEGIN_STRING, $return = 0) + { + if ($align != NULL && $align) + $align = "align=$align"; + if ($halign != NULL && $halign) + $halign = "halign=$halign"; + if ($valign != NULL && $valign) + $valign = "valign=$valign"; + if ($bgcolor != NULL && $bgcolor) + $bgcolor = "bgcolor=$bgcolor"; + $rstring = ""; + return ($this->bo->eor ($rstring, $return)); + } + + function html_table_row_end ($return = 0) + { + $rstring = ""; + return ($this->bo->eor ($rstring, $return)); + } + + function html_table_col_begin ($align = NULL, $halign = NULL, $valign = NULL, $rowspan = NULL, $colspan = NULL, $string = HTML_TABLE_COL_BEGIN_STRING, $return = 0) + { + if ($align != NULL && $align) + $align = "align=$align"; + if ($halign != NULL && $halign) + $halign = "halign=$halign"; + if ($valign != NULL && $valign) + $valign = "valign=$valign"; + if (is_int ($rowspan) && $rowspan >= 0) + $rowspan = "rowspan=$rowspan"; + if (is_int ($colspan) && $colspan >= 0) + $colspan = "colspan=$colspan"; + + $rstring = ""; + return ($this->bo->eor ($rstring, $return)); + } + + function html_table_col_end ($return = 0) + { + $rstring = ""; + return ($this->bo->eor ($rstring, $return)); + } + + + function html_text_header ($size = 1, $string = NULL, $return = 0, $lang = 0) + { + $rstring = "$string"; + return ($this->bo->eor ($rstring, $return)); + } + + function html_align ($align = NULL, $string = HTML_ALIGN_MAIN_STRING, $return = 0) + { + $rstring = "

"; + return ($this->bo->eor ($rstring, $return)); + } + + function html_image ($src = NULL, $alt = NULL, $align = NULL, $border = NULL, $string = HTML_IMAGE_MAIN_STRING, $return = 0) + { + if ($src != NULL && $src) + $src = "src=$src"; + if ($alt != NULL && $alt) + $alt = "alt=\"$alt\""; + if ($align != NULL && $align) + $align = "align=$align"; + if (is_int ($border) && $border >= 0) + $border = "border=$border"; + $rstring = ""; + return ($this->bo->eor ($rstring, $return)); + } + + function html_help_link ($help_name = NULL, $text = "[?]", $target = "_new", $return = 0) + { + global $settings; + global $appname; + + if (!$settings["show_help"]) + { + return 0; + } + + $rstring = $this->html_link ('index.php','menuaction=filemanager.uifilemanager.index&op=help&help_name=$help_name', $text, True, 1, 0, $target); + + return ($this->bo->eor ($rstring, $return)); + } + + + } + diff --git a/filemanager/index.php b/filemanager/index.php index c1f31e932a..307dd654ac 100755 --- a/filemanager/index.php +++ b/filemanager/index.php @@ -1,172 +1,198 @@ array ('op' => ''), - 'path' => array ('path' => ''), - 'file' => array ('file' => ''), - 'sortby' => array ('sortby' => ''), - 'fileman' => array ('fileman' => ''), - 'messages' => array ('messages' => ''), - 'help_name' => array ('help_name' => ''), - 'renamefiles' => array ('renamefiles' => ''), - 'comment_files' => array ('comment_files' => ''), - 'show_upload_boxes' => array ('show_upload_boxes' => '') -); -reset ($to_decode); -while (list ($var, $conditions) = each ($to_decode)) -{ - while (list ($condvar, $condvalue) = each ($conditions)) + eGroupWare - http://www.egroupware.org + + */ + + $Experiment_New_Code=false; + + if($Experiment_New_Code) + { + $phpgw_flags = Array( + 'currentapp' => 'filemanager', + 'noheader' => True, + 'nonavbar' => True, + 'noappheader' => True, + 'noappfooter' => True, + 'nofooter' => True + ); + + $GLOBALS['phpgw_info']['flags'] = $phpgw_flags; + + include('../header.inc.php'); + + Header('Location: '.$GLOBALS['phpgw']->link('/index.php','menuaction=filemanager.uifilemanager.index')); + $GLOBALS['phpgw']->common->phpgw_exit(); + } + + ### + # DEV NOTE: + # + # index.php is depreciated by the inc/class.xxphpwebhosting.inc.php files. + # index.php is still used in the 0.9.14 release, but all future changes should be + # made to the inc/class.xxphpwebhosting.inc.php files (3-tiered). This includes using templates. + ### + + ### + # Enable this to display some debugging info + ### + + $phpwh_debug = 0; + + @reset ($GLOBALS['HTTP_POST_VARS']); + while (list ($name,) = @each ($GLOBALS['HTTP_POST_VARS'])) { - if (isset ($$condvar) && ($condvar == $var || $$condvar == $condvalue)) + $$name = $GLOBALS['HTTP_POST_VARS'][$name]; + } + + @reset ($GLOBALS['HTTP_GET_VARS']); + while (list ($name,) = @each ($GLOBALS['HTTP_GET_VARS'])) + { + $$name = $GLOBALS['HTTP_GET_VARS'][$name]; + } + + $to_decode = array + ( + /* + Decode + 'var' when 'avar' == 'value' + or + 'var' when 'var' is set + */ + 'op' => array ('op' => ''), + 'path' => array ('path' => ''), + 'file' => array ('file' => ''), + 'sortby' => array ('sortby' => ''), + 'fileman' => array ('fileman' => ''), + 'messages' => array ('messages' => ''), + 'help_name' => array ('help_name' => ''), + 'renamefiles' => array ('renamefiles' => ''), + 'comment_files' => array ('comment_files' => ''), + 'show_upload_boxes' => array ('show_upload_boxes' => '') + ); + + reset ($to_decode); + while (list ($var, $conditions) = each ($to_decode)) + { + while (list ($condvar, $condvalue) = each ($conditions)) { - if (is_array ($$var)) + if (isset ($$condvar) && ($condvar == $var || $$condvar == $condvalue)) { - $temp = array (); - //some fixes in this section were supplied by Michael Totschnig - while (list ($varkey, $varvalue) = each ($$var)) + if (is_array ($$var)) { - if (is_int ($varkey)) + $temp = array (); + //some fixes in this section were supplied by Michael Totschnig + while (list ($varkey, $varvalue) = each ($$var)) { - $temp[$varkey] = stripslashes (base64_decode(urldecode(($varvalue)))); - } - else - { - $temp[stripslashes (base64_decode(urldecode(($varkey))))] = $varvalue; + if (is_int ($varkey)) + { + $temp[$varkey] = stripslashes (base64_decode(urldecode(($varvalue)))); + } + else + { + $temp[stripslashes (base64_decode(urldecode(($varkey))))] = $varvalue; + } } + $$var = $temp; + } + elseif (isset ($$var)) + { + $$var = stripslashes (base64_decode(urldecode ($$var))); } - $$var = $temp; - } - elseif (isset ($$var)) - { - $$var = stripslashes (base64_decode(urldecode ($$var))); } } } -} -if ($noheader || $nofooter || ($download && (count ($fileman) > 0)) || ($op == 'view' && $file) || ($op == 'history' && $file) || ($op == 'help' && $help_name)) -{ - $noheader = True; - $nofooter = True; -} - -$GLOBALS['phpgw_info']['flags'] = array -( - 'currentapp' => 'filemanager', - 'noheader' => $noheader, - 'nofooter' => $nofooter, - 'noappheader' => False, - 'enable_vfs_class' => True, - 'enable_browser_class' => True -); - -include ('../header.inc.php'); - -if ($execute && $command_line) -{ - if ($result = $GLOBALS['phpgw']->vfs->command_line (array ('command_line' => stripslashes ($command_line)))) + if ($noheader || $nofooter || ($download && (count ($fileman) > 0)) || ($op == 'view' && $file) || ($op == 'history' && $file) || ($op == 'help' && $help_name)) { - $messages = html_text_bold (lang('Command sucessfully run'),1); - if ($result != 1 && strlen ($result) > 0) + $noheader = True; + $nofooter = True; + } + + $GLOBALS['phpgw_info']['flags'] = array + ( + 'currentapp' => 'filemanager', + 'noheader' => $noheader, + 'nofooter' => $nofooter, + 'noappheader' => False, + 'enable_vfs_class' => True, + 'enable_browser_class' => True + ); + + include ('../header.inc.php'); + + if ($execute && $command_line) + { + if ($result = $GLOBALS['phpgw']->vfs->command_line (array ('command_line' => stripslashes ($command_line)))) { - $messages .= html_break (2, NULL, 1) . $result; + $messages = html_text_bold (lang('Command sucessfully run'),1); + if ($result != 1 && strlen ($result) > 0) + { + $messages .= html_break (2, NULL, 1) . $result; + } } + else + { + $messages = $GLOBALS['phpgw']->common->error_list (array (lang('Error running command'))); + } + } + + ### + # Page to process users + # Code is fairly hackish at the beginning, but it gets better + # Highly suggest turning wrapping off due to long SQL queries + ### + + ### + # Some hacks to set and display directory paths correctly + ### + + if ($go) + { + $path = $todir; + } + + if (!$path) + { + $path = $GLOBALS['phpgw']->vfs->pwd (); + + if (!$path || $GLOBALS['phpgw']->vfs->pwd (array ('full' => False)) == '') + { + $path = $GLOBALS['homedir']; + } + } + + $GLOBALS['phpgw']->vfs->cd (array ('string' => False, 'relatives' => array (RELATIVE_NONE), 'relative' => False)); + $GLOBALS['phpgw']->vfs->cd (array ('string' => $path, 'relatives' => array (RELATIVE_NONE), 'relative' => False)); + + $pwd = $GLOBALS['phpgw']->vfs->pwd (); + + if (!$cwd = substr ($path, strlen ($GLOBALS['homedir']) + 1)) + { + $cwd = '/'; } else { - $messages = $GLOBALS['phpgw']->common->error_list (array (lang('Error running command'))); + $cwd = substr ($pwd, strrpos ($pwd, '/') + 1); } -} -### -# Page to process users -# Code is fairly hackish at the beginning, but it gets better -# Highly suggest turning wrapping off due to long SQL queries -### + $disppath = $path; -### -# Some hacks to set and display directory paths correctly -### - -if ($go) -{ - $path = $todir; -} - -if (!$path) -{ - $path = $GLOBALS['phpgw']->vfs->pwd (); - - if (!$path || $GLOBALS['phpgw']->vfs->pwd (array ('full' => False)) == '') - { - $path = $GLOBALS['homedir']; - } -} - -$GLOBALS['phpgw']->vfs->cd (array ('string' => False, 'relatives' => array (RELATIVE_NONE), 'relative' => False)); -$GLOBALS['phpgw']->vfs->cd (array ('string' => $path, 'relatives' => array (RELATIVE_NONE), 'relative' => False)); - -$pwd = $GLOBALS['phpgw']->vfs->pwd (); - -if (!$cwd = substr ($path, strlen ($GLOBALS['homedir']) + 1)) -{ - $cwd = '/'; -} -else -{ - $cwd = substr ($pwd, strrpos ($pwd, '/') + 1); -} - -$disppath = $path; - -/* This just prevents // in some cases */ -if ($path == '/') + /* This just prevents // in some cases */ + if ($path == '/') $dispsep = ''; -else + else $dispsep = '/'; -if (!($lesspath = substr ($path, 0, strrpos ($path, '/')))) + if (!($lesspath = substr ($path, 0, strrpos ($path, '/')))) $lesspath = '/'; -$now = date ('Y-m-d'); + $now = date ('Y-m-d'); -if ($phpwh_debug) -{ - echo "PHPWebHosting debug:
+ if ($phpwh_debug) + { + echo "PHPWebHosting debug:
path: $path
disppath: $disppath
cwd: $cwd
@@ -177,21 +203,21 @@ if ($phpwh_debug) fake getabsolutepath: " . $GLOBALS['phpgw']->vfs->getabsolutepath (array ('target' => False)) . "
appsession: " . $GLOBALS['phpgw']->session->appsession ('vfs','') . "
pwd: " . $GLOBALS['phpgw']->vfs->pwd () . "
"; -} + } -### -# Get their readable groups to be used throughout the script -### + ### + # Get their readable groups to be used throughout the script + ### -$groups = array (); + $groups = array (); -$groups = $GLOBALS['phpgw']->accounts->get_list ('groups'); + $groups = $GLOBALS['phpgw']->accounts->get_list ('groups'); -$readable_groups = array (); + $readable_groups = array (); -while (list ($num, $account) = each ($groups)) -{ - if ($GLOBALS['phpgw']->vfs->acl_check (array ( + while (list ($num, $account) = each ($groups)) + { + if ($GLOBALS['phpgw']->vfs->acl_check (array ( 'owner_id' => $account['account_id'], 'operation' => PHPGW_ACL_READ )) @@ -226,13 +252,13 @@ else } if ($path != $GLOBALS['homedir'] - && $path != $GLOBALS['fakebase'] - && $path != '/' - && !$GLOBALS['phpgw']->vfs->acl_check (array ( - 'string' => $path, - 'relatives' => array (RELATIVE_NONE), - 'operation' => PHPGW_ACL_READ - )) +&& $path != $GLOBALS['fakebase'] +&& $path != '/' +&& !$GLOBALS['phpgw']->vfs->acl_check (array ( + 'string' => $path, + 'relatives' => array (RELATIVE_NONE), + 'operation' => PHPGW_ACL_READ +)) ) { echo $GLOBALS['phpgw']->common->error_list (array (lang('You do not have access to %1', $path))); @@ -250,10 +276,10 @@ $GLOBALS['userinfo']['working_lid'] = $GLOBALS['phpgw']->accounts->id2name ($GLO ### if (($path == $GLOBALS['homedir']) - && !$GLOBALS['phpgw']->vfs->file_exists (array ( - 'string' => $GLOBALS['homedir'], - 'relatives' => array (RELATIVE_NONE) - )) +&& !$GLOBALS['phpgw']->vfs->file_exists (array ( + 'string' => $GLOBALS['homedir'], + 'relatives' => array (RELATIVE_NONE) +)) ) { $GLOBALS['phpgw']->vfs->override_acl = 1; @@ -296,10 +322,10 @@ if ($update || rand (0, 19) == 4) ### if ($GLOBALS['phpgw']->vfs->acl_check (array ( - 'string' => $path, - 'relatives' => array (RELATIVE_NONE), - 'operation' => PHPGW_ACL_ADD - )) + 'string' => $path, + 'relatives' => array (RELATIVE_NONE), + 'operation' => PHPGW_ACL_ADD +)) ) { $can_add = True; @@ -342,93 +368,93 @@ if ($path == $GLOBALS['fakebase']) } $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( - 'string' => $GLOBALS['homedir'], + 'string' => $GLOBALS['homedir'], + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => True + ) +); +$files_array[] = $ls_array[0]; +$numoffiles++; +// $files_array = $ls_array; +// $numoffiles = count($ls_array); + +reset ($readable_groups); +while (list ($num, $group_array) = each ($readable_groups)) +{ + ### + # If the group doesn't have access to this app, we don't show it + ### + + if (!$groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) + { + continue; + } + + if (!$GLOBALS['phpgw']->vfs->file_exists (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array (RELATIVE_NONE) + )) +) +{ + $GLOBALS['phpgw']->vfs->override_acl = 1; + $GLOBALS['phpgw']->vfs->mkdir (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array (RELATIVE_NONE) + ) +); +$GLOBALS['phpgw']->vfs->override_acl = 0; + +$GLOBALS['phpgw']->vfs->set_attributes (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array (RELATIVE_NONE), + 'attributes' => array ( + 'owner_id' => $group_array['account_id'], + 'createdby_id' => $group_array['account_id'] + ) +) + ); + } + + $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], 'relatives' => array (RELATIVE_NONE), 'checksubdirs' => False, 'nofiles' => True ) ); + $files_array[] = $ls_array[0]; + $numoffiles++; -// $files_array = $ls_array; -// $numoffiles = count($ls_array); - - reset ($readable_groups); - while (list ($num, $group_array) = each ($readable_groups)) - { - ### - # If the group doesn't have access to this app, we don't show it - ### - - if (!$groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) - { - continue; - } - - if (!$GLOBALS['phpgw']->vfs->file_exists (array ( - 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], - 'relatives' => array (RELATIVE_NONE) - )) - ) - { - $GLOBALS['phpgw']->vfs->override_acl = 1; - $GLOBALS['phpgw']->vfs->mkdir (array ( - 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], - 'relatives' => array (RELATIVE_NONE) - ) - ); - $GLOBALS['phpgw']->vfs->override_acl = 0; - - $GLOBALS['phpgw']->vfs->set_attributes (array ( - 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], - 'relatives' => array (RELATIVE_NONE), - 'attributes' => array ( - 'owner_id' => $group_array['account_id'], - 'createdby_id' => $group_array['account_id'] - ) - ) - ); - } - - $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( - 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], - 'relatives' => array (RELATIVE_NONE), - 'checksubdirs' => False, - 'nofiles' => True - ) - ); - - $files_array[] = $ls_array[0]; - - $numoffiles++; - } +} } else { $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( - 'string' => $path, - 'relatives' => array (RELATIVE_NONE), - 'checksubdirs' => False, - 'nofiles' => False, - 'orderby' => $sortby - ) - ); + 'string' => $path, + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => False, + 'orderby' => $sortby + ) +); +if ($phpwh_debug) +{ + echo '# of files found in "'.$path.'" : '.count($ls_array).'
'."\n"; +} + +while (list ($num, $file_array) = each ($ls_array)) +{ + $numoffiles++; + $files_array[] = $file_array; if ($phpwh_debug) { - echo '# of files found in "'.$path.'" : '.count($ls_array).'
'."\n"; - } - - while (list ($num, $file_array) = each ($ls_array)) - { - $numoffiles++; - $files_array[] = $file_array; - if ($phpwh_debug) - { - echo 'Filename: '.$file_array['name'].'
'."\n"; - } + echo 'Filename: '.$file_array['name'].'
'."\n"; } } +} if (!is_array ($files_array)) { @@ -454,27 +480,27 @@ if ($download) if ($op == 'view' && $file) { $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( - 'string' => $path.'/'.$file, - 'relatives' => array (RELATIVE_ALL), - 'checksubdirs' => False, - 'nofiles' => True - ) - ); + 'string' => $path.'/'.$file, + 'relatives' => array (RELATIVE_ALL), + 'checksubdirs' => False, + 'nofiles' => True + ) +); - if ($ls_array[0]['mime_type']) - { - $mime_type = $ls_array[0]['mime_type']; - } - elseif ($GLOBALS['settings']['viewtextplain']) - { - $mime_type = 'text/plain'; - } +if ($ls_array[0]['mime_type']) +{ + $mime_type = $ls_array[0]['mime_type']; +} +elseif ($GLOBALS['settings']['viewtextplain']) +{ + $mime_type = 'text/plain'; +} - header('Content-type: ' . $mime_type); - echo $GLOBALS['phpgw']->vfs->read (array ( - 'string' => $path.'/'.$file, - 'relatives' => array (RELATIVE_NONE) - ) +header('Content-type: ' . $mime_type); +echo $GLOBALS['phpgw']->vfs->read (array ( + 'string' => $path.'/'.$file, + 'relatives' => array (RELATIVE_NONE) +) ); $GLOBALS['phpgw']->common->phpgw_exit (); } @@ -482,54 +508,54 @@ if ($op == 'view' && $file) if ($op == 'history' && $file) { $journal_array = $GLOBALS['phpgw']->vfs->get_journal (array ( - 'string' => $file, - 'relatives' => array (RELATIVE_ALL) - ) - ); + 'string' => $file, + 'relatives' => array (RELATIVE_ALL) + ) +); - if (is_array ($journal_array)) +if (is_array ($journal_array)) +{ + html_table_begin (); + html_table_row_begin (); + html_table_col_begin (); + html_text_bold (lang('Date')); + html_table_col_end (); + html_table_col_begin (); + html_text_bold (lang('Version')); + html_table_col_end (); + html_table_col_begin (); + html_text_bold (lang('Who')); + html_table_col_end (); + html_table_col_begin (); + html_text_bold (lang('Operation')); + html_table_col_end (); + html_table_row_end (); + + while (list ($num, $journal_entry) = each ($journal_array)) { - html_table_begin (); html_table_row_begin (); html_table_col_begin (); - html_text_bold (lang('Date')); + html_text ($journal_entry['created'] . html_nbsp (3, 1)); html_table_col_end (); html_table_col_begin (); - html_text_bold (lang('Version')); + html_text ($journal_entry['version'] . html_nbsp (3, 1)); html_table_col_end (); html_table_col_begin (); - html_text_bold (lang('Who')); + html_text ($GLOBALS['phpgw']->accounts->id2name ($journal_entry['owner_id']) . html_nbsp (3, 1)); html_table_col_end (); html_table_col_begin (); - html_text_bold (lang('Operation')); + html_text ($journal_entry['comment']); html_table_col_end (); - html_table_row_end (); - - while (list ($num, $journal_entry) = each ($journal_array)) - { - html_table_row_begin (); - html_table_col_begin (); - html_text ($journal_entry['created'] . html_nbsp (3, 1)); - html_table_col_end (); - html_table_col_begin (); - html_text ($journal_entry['version'] . html_nbsp (3, 1)); - html_table_col_end (); - html_table_col_begin (); - html_text ($GLOBALS['phpgw']->accounts->id2name ($journal_entry['owner_id']) . html_nbsp (3, 1)); - html_table_col_end (); - html_table_col_begin (); - html_text ($journal_entry['comment']); - html_table_col_end (); - } - - html_table_end (); - html_page_close (); - } - else - { - html_text_bold (lang('No version history for this file/directory')); } + html_table_end (); + html_page_close (); +} +else +{ + html_text_bold (lang('No version history for this file/directory')); +} + } if ($newfile && $createfile) @@ -543,21 +569,21 @@ if ($newfile && $createfile) } if ($GLOBALS['phpgw']->vfs->file_exists (array ( - 'string' => $createfile, - 'relatives' => array (RELATIVE_ALL) - )) - ) - { - echo $GLOBALS['phpgw']->common->error_list (array (lang('File %1 already exists. Please edit it or delete it first.', $createfile))); - html_break (2); - html_link_back (); - html_page_close (); - } + 'string' => $createfile, + 'relatives' => array (RELATIVE_ALL) + )) +) +{ + echo $GLOBALS['phpgw']->common->error_list (array (lang('File %1 already exists. Please edit it or delete it first.', $createfile))); + html_break (2); + html_link_back (); + html_page_close (); +} - if ($GLOBALS['phpgw']->vfs->touch (array ( - 'string' => $createfile, - 'relatives' => array (RELATIVE_ALL) - )) +if ($GLOBALS['phpgw']->vfs->touch (array ( + 'string' => $createfile, + 'relatives' => array (RELATIVE_ALL) +)) ) { $fileman = array (); @@ -576,7 +602,7 @@ if ($op == 'help' && $help_name) while (list ($num, $help_array) = each ($help_info)) { if ($help_array[0] != $help_name) - continue; + continue; $help_array[1] = preg_replace ("/\[(.*)\|(.*)\]/Ue", "html_help_link ('\\1', '\\2', False, True)", $help_array[1]); $help_array[1] = preg_replace ("/\[(.*)\]/Ue", "html_help_link ('\\1', '\\1', False, True)", $help_array[1]); @@ -646,42 +672,42 @@ if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$ed html_table_begin ('100%'); html_table_row_begin (); html_table_col_begin ('left'); - + if ($path != '/') { - html_link ($GLOBALS['appname'].'/index.php?path='.$lesspath, html_image ('images/folder-up.gif', lang('Up'), 'left', 0, NULL, 1)); + html_link ($GLOBALS['appname'].'/index.php?path='.$lesspath, html_image ('images/folder-up.png', lang('Up'), 'left', 0, NULL, 1)); html_help_link ('up'); } - + html_table_col_end (); html_table_col_begin ('center'); - + if ($cwd) { if ($path == $GLOBALS['homedir']) { - html_image ('images/folder-home.gif', lang('Folder'), 'center'); + html_image ('images/folder-home.png', lang('Folder'), 'center'); } else { - html_image ('images/folder.gif', lang('Folder'), 'center'); + html_image ('images/folder.png', lang('Folder'), 'center'); } } else { - html_image ('images/folder-home.gif', lang('Home')); + html_image ('images/folder-home.png', lang('Home')); } - + html_font_set (4, HTML_TABLE_FILES_HEADER_TEXT_COLOR); html_text_bold ($disppath); html_font_end (); html_help_link ('directory_name'); html_table_col_end (); html_table_col_begin ('right'); - + if ($path != $GLOBALS['homedir']) { - html_link ($GLOBALS['appname'].'/index.php?path='.$GLOBALS['homedir'], html_image ('images/folder-home.gif', lang('Home'), 'right', 0, NULL, 1)); + html_link ($GLOBALS['appname'].'/index.php?path='.$GLOBALS['homedir'], html_image ('images/folder-home.png', lang('Home'), 'right', 0, NULL, 1)); html_help_link ('home'); } @@ -691,7 +717,7 @@ if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$ed html_table_col_end (); html_table_row_end (); html_table_row_begin (NULL, NULL, NULL, HTML_TABLE_FILES_COLUMN_HEADER_BG_COLOR); - + ### # Start File Table Column Headers # Reads values from $file_attributes array and preferences @@ -726,7 +752,7 @@ if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$ed /* We can assume the next column is the name */ html_table_col_begin (); - html_image ('images/folder.gif', lang('Folder')); + html_image ('images/folder.png', lang('Folder')); html_link ($GLOBALS['appname'].'/index.php?path='.$lesspath, '..'); html_table_col_end (); @@ -819,7 +845,7 @@ if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$ed { if ($files['mime_type'] == 'Directory') { - html_image ('images/folder.gif', lang('Folder')); + html_image ('images/folder.png', lang('Folder')); } html_form_input ('text', 'renamefiles[' . base64_encode ($files['name']) . ']', $files['name'], 255); } @@ -827,7 +853,7 @@ if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$ed { if ($files['mime_type'] == 'Directory') { - html_image ('images/folder.gif', lang('Folder')); + html_image ('images/folder.png', lang('Folder')); html_link ($GLOBALS['appname'].'/index.php?path='.$path.$dispsep.$files['name'], $files['name']); } else @@ -878,260 +904,260 @@ if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$ed html_table_col_begin (); $size = $GLOBALS['phpgw']->vfs->get_size (array ( - 'string' => $files['directory'] . '/' . $files['name'], - 'relatives' => array (RELATIVE_NONE) - ) - ); + 'string' => $files['directory'] . '/' . $files['name'], + 'relatives' => array (RELATIVE_NONE) + ) + ); - borkb ($size); + borkb ($size); - html_table_col_end (); - } + html_table_col_end (); + } - ### - # Date created - ### - if ($GLOBALS['settings']['created']) + ### + # Date created + ### + if ($GLOBALS['settings']['created']) + { + html_table_col_begin (); + html_text ($files['created']); + html_table_col_end (); + } + + ### + # Date modified + ### + + if ($GLOBALS['settings']['modified']) + { + html_table_col_begin (); + if ($files['modified'] != '0000-00-00') { - html_table_col_begin (); - html_text ($files['created']); - html_table_col_end (); + html_text ($files['modified']); } + html_table_col_end (); + } - ### - # Date modified - ### + ### + # Owner name + ### - if ($GLOBALS['settings']['modified']) + if ($GLOBALS['settings']['owner']) + { + html_table_col_begin (); + html_text ($GLOBALS['phpgw']->accounts->id2name ($files['owner_id'])); + html_table_col_end (); + } + + ### + # Creator name + ### + + if ($GLOBALS['settings']['createdby_id']) + { + html_table_col_begin (); + if ($files['createdby_id']) { - html_table_col_begin (); - if ($files['modified'] != '0000-00-00') - { - html_text ($files['modified']); - } - html_table_col_end (); + html_text ($GLOBALS['phpgw']->accounts->id2name ($files['createdby_id'])); } + html_table_col_end (); + } - ### - # Owner name - ### + ### + # Modified by name + ### - if ($GLOBALS['settings']['owner']) + if ($GLOBALS['settings']['modifiedby_id']) + { + html_table_col_begin (); + if ($files['modifiedby_id']) { - html_table_col_begin (); - html_text ($GLOBALS['phpgw']->accounts->id2name ($files['owner_id'])); - html_table_col_end (); + html_text ($GLOBALS['phpgw']->accounts->id2name ($files['modifiedby_id'])); } + html_table_col_end (); + } - ### - # Creator name - ### + ### + # Application + ### - if ($GLOBALS['settings']['createdby_id']) + if ($GLOBALS['settings']['app']) + { + html_table_col_begin (); + html_text ($files['app']); + html_table_col_end (); + } + + ### + # Comment + ### + + if ($GLOBALS['settings']['comment']) + { + html_table_col_begin (); + if ($edit_this_comment) { - html_table_col_begin (); - if ($files['createdby_id']) - { - html_text ($GLOBALS['phpgw']->accounts->id2name ($files['createdby_id'])); - } - html_table_col_end (); - } - - ### - # Modified by name - ### - - if ($GLOBALS['settings']['modifiedby_id']) - { - html_table_col_begin (); - if ($files['modifiedby_id']) - { - html_text ($GLOBALS['phpgw']->accounts->id2name ($files['modifiedby_id'])); - } - html_table_col_end (); - } - - ### - # Application - ### - - if ($GLOBALS['settings']['app']) - { - html_table_col_begin (); - html_text ($files['app']); - html_table_col_end (); - } - - ### - # Comment - ### - - if ($GLOBALS['settings']['comment']) - { - html_table_col_begin (); - if ($edit_this_comment) - { - html_form_input ('text', 'comment_files[' . base64_encode ($files['name']) . ']', html_encode ($files['comment'], 1), 255); - } - else - { - html_text ($files['comment']); - } - html_table_col_end (); - } - - ### - # Version - ### - - if ($GLOBALS['settings']['version']) - { - html_table_col_begin (); - html_link ($GLOBALS['appname'].'/index.php?op=history&file='.$files['name'].'&path='.$path, $files['version'], NULL, True, NULL, '_new'); - html_table_col_end (); - } - - ### - # Deleteable (currently not used) - ### - - if ($GLOBALS['settings']['deleteable']) - { - if ($files['deleteable'] == 'N') - { - html_table_col_begin (); - html_image ('images/locked.gif', lang('Locked')); - html_table_col_end (); - } - else - { - html_table_col_begin (); - html_table_col_end (); - } - } - - html_table_row_end (); - - if ($files['mime_type'] == 'Directory') - { - $usedspace += $fileinfo[0]; + html_form_input ('text', 'comment_files[' . base64_encode ($files['name']) . ']', html_encode ($files['comment'], 1), 255); } else { - $usedspace += $files['size']; + html_text ($files['comment']); + } + html_table_col_end (); + } + + ### + # Version + ### + + if ($GLOBALS['settings']['version']) + { + html_table_col_begin (); + html_link ($GLOBALS['appname'].'/index.php?op=history&file='.$files['name'].'&path='.$path, $files['version'], NULL, True, NULL, '_new'); + html_table_col_end (); + } + + ### + # Deleteable (currently not used) + ### + + if ($GLOBALS['settings']['deleteable']) + { + if ($files['deleteable'] == 'N') + { + html_table_col_begin (); + html_image ('images/locked.png', lang('Locked')); + html_table_col_end (); + } + else + { + html_table_col_begin (); + html_table_col_end (); } } - html_table_end (); - html_break (2); + html_table_row_end (); - if ($path != '/' && $path != $GLOBALS['fakebase']) + if ($files['mime_type'] == 'Directory') { - if (!$rename && !$edit_comments) - { - html_form_input ('submit', 'edit', lang('Edit')); - html_help_link ('edit'); - html_nbsp (3); - } - - if (!$edit_comments) - { - html_form_input ('submit', 'rename', lang('Rename')); - html_help_link ('rename'); - html_nbsp (3); - } - - if (!$rename && !$edit_comments) - { - html_form_input ('submit', 'delete', lang('Delete')); - html_help_link ('delete'); - html_nbsp (3); - } - - if (!$rename) - { - html_form_input ('submit', 'edit_comments', lang('Edit comments')); - html_help_link ('edit_comments'); - } + $usedspace += $fileinfo[0]; + } + else + { + $usedspace += $files['size']; } } - ### - # Display some inputs and info, but not when renaming or editing comments - ### + html_table_end (); + html_break (2); - if (!$rename && !$edit_comments) + if ($path != '/' && $path != $GLOBALS['fakebase']) { - ### - # Begin Copy to/Move to selection - ### - - html_break (1); - html_form_input ('submit', 'go', lang('Go to:')); - html_help_link ('go_to'); - - if ($path != '/' && $path != $GLOBALS['fakebase']) + if (!$rename && !$edit_comments) { - html_form_input ('submit', 'copy', lang('Copy to:')); - html_help_link ('copy_to'); - html_form_input ('submit', 'move', lang('Move to:')); - html_help_link ('move_to'); + html_form_input ('submit', 'edit', lang('Edit')); + html_help_link ('edit'); + html_nbsp (3); } - html_form_select_begin ('todir'); - - html_break (1); - - ### - # First we get the directories in their home directory - ### - - $dirs = array (); - $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $GLOBALS['userinfo']['account_lid']); - - $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( - 'string' => $GLOBALS['homedir'], - 'relatives' => array (RELATIVE_NONE), - 'checksubdirs' => True, - 'mime_type' => 'Directory' - ) - ); - - while (list ($num, $dir) = each ($ls_array)) + if (!$edit_comments) { - $dirs[] = $dir; + html_form_input ('submit', 'rename', lang('Rename')); + html_help_link ('rename'); + html_nbsp (3); } - - ### - # Then we get the directories in their readable groups' home directories - ### - - reset ($readable_groups); - while (list ($num, $group_array) = each ($readable_groups)) + if (!$rename && !$edit_comments) { - ### - # Don't list directories for groups that don't have access - ### + html_form_input ('submit', 'delete', lang('Delete')); + html_help_link ('delete'); + html_nbsp (3); + } - if (!$groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) - { - continue; - } + if (!$rename) + { + html_form_input ('submit', 'edit_comments', lang('Edit comments')); + html_help_link ('edit_comments'); + } + } +} - $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $group_array['account_name']); +### +# Display some inputs and info, but not when renaming or editing comments +### - $ls_array = $phpgw->vfs->ls (array ( - 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], - 'relatives' => array (RELATIVE_NONE), - 'checksubdirs' => True, - 'mime_type' => 'Directory' - ) - ); - while (list ($num, $dir) = each ($ls_array)) - { - $dirs[] = $dir; - } +if (!$rename && !$edit_comments) +{ + ### + # Begin Copy to/Move to selection + ### + + html_break (1); + html_form_input ('submit', 'go', lang('Go to:')); + html_help_link ('go_to'); + + if ($path != '/' && $path != $GLOBALS['fakebase']) + { + html_form_input ('submit', 'copy', lang('Copy to:')); + html_help_link ('copy_to'); + html_form_input ('submit', 'move', lang('Move to:')); + html_help_link ('move_to'); + } + + html_form_select_begin ('todir'); + + html_break (1); + + ### + # First we get the directories in their home directory + ### + + $dirs = array (); + $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $GLOBALS['userinfo']['account_lid']); + + $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( + 'string' => $GLOBALS['homedir'], + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => True, + 'mime_type' => 'Directory' + ) +); + +while (list ($num, $dir) = each ($ls_array)) +{ + $dirs[] = $dir; +} + + +### +# Then we get the directories in their readable groups' home directories +### + +reset ($readable_groups); +while (list ($num, $group_array) = each ($readable_groups)) +{ + ### + # Don't list directories for groups that don't have access + ### + + if (!$groups_applications[$group_array['account_name']][$GLOBALS['appname']]['enabled']) + { + continue; + } + + $dirs[] = array ('directory' => $GLOBALS['fakebase'], 'name' => $group_array['account_name']); + + $ls_array = $phpgw->vfs->ls (array ( + 'string' => $GLOBALS['fakebase'].'/'.$group_array['account_name'], + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => True, + 'mime_type' => 'Directory' + ) +); +while (list ($num, $dir) = each ($ls_array)) +{ + $dirs[] = $dir; +} } reset ($dirs); @@ -1141,7 +1167,7 @@ if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$ed { continue; } - + ### # So we don't display // ### @@ -1154,137 +1180,137 @@ if (!$op && !$delete && !$createdir && !$renamefiles && !$move && !$copy && !$ed ### # No point in displaying the current directory, or a directory that doesn't exist ### - + if ((($dir['directory'] . $dir['name']) != $path) - && $GLOBALS['phpgw']->vfs->file_exists (array ( - 'string' => $dir['directory'] . $dir['name'], - 'relatives' => array (RELATIVE_NONE) - )) - ) - { - html_form_option ($dir['directory'] . $dir['name'], $dir['directory'] . $dir['name']); - } - } - - html_form_select_end (); - html_help_link ('directory_list'); - - if ($path != '/' && $path != $GLOBALS['fakebase']) + && $GLOBALS['phpgw']->vfs->file_exists (array ( + 'string' => $dir['directory'] . $dir['name'], + 'relatives' => array (RELATIVE_NONE) + )) + ) { - html_break (1); - - html_form_input ('submit', 'download', lang('Download')); - html_help_link ('download'); - html_nbsp (3); - - if ($can_add) - { - html_form_input ('text', 'createdir', NULL, 255, 15); - html_form_input ('submit', 'newdir', lang('Create Folder')); - html_help_link ('create_folder'); - } + html_form_option ($dir['directory'] . $dir['name'], $dir['directory'] . $dir['name']); } + } + html_form_select_end (); + html_help_link ('directory_list'); + + if ($path != '/' && $path != $GLOBALS['fakebase']) + { html_break (1); - html_form_input ('submit', 'update', lang('Update')); - html_help_link ('update'); - if ($path != '/' && $path != $GLOBALS['fakebase'] && $can_add) - { - html_nbsp (3); - html_form_input ('text', 'createfile', NULL, 255, 15); - html_form_input ('submit', 'newfile', lang('Create File')); - html_help_link ('create_file'); - } - - if ($GLOBALS['settings']['show_command_line']) - { - html_break (2); - html_form_input ('text', 'command_line', NULL, NULL, 50); - html_help_link ('command_line'); - - html_break (1); - html_form_input ('submit', 'execute', lang('Execute')); - html_help_link ('execute'); - } - - html_form_end (); - - html_help_link ('file_stats'); - html_break (1); - html_text_bold (lang('Files').': '); - html_text ($numoffiles); + html_form_input ('submit', 'download', lang('Download')); + html_help_link ('download'); html_nbsp (3); - html_text_bold (lang('Used space').': '); - html_text (borkb ($usedspace, NULL, 1)); + if ($can_add) + { + html_form_input ('text', 'createdir', NULL, 255, 15); + html_form_input ('submit', 'newdir', lang('Create Folder')); + html_help_link ('create_folder'); + } + } + + html_break (1); + html_form_input ('submit', 'update', lang('Update')); + html_help_link ('update'); + + if ($path != '/' && $path != $GLOBALS['fakebase'] && $can_add) + { html_nbsp (3); - - if ($path == $GLOBALS['homedir'] || $path == $GLOBALS['fakebase']) - { - html_text_bold (lang('Unused space').': '); - html_text (borkb ($GLOBALS['userinfo']['hdspace'] - $usedspace, NULL, 1)); + html_form_input ('text', 'createfile', NULL, 255, 15); + html_form_input ('submit', 'newfile', lang('Create File')); + html_help_link ('create_file'); + } - $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( - 'string' => $path, - 'relatives' => array (RELATIVE_NONE) - ) - ); + if ($GLOBALS['settings']['show_command_line']) + { + html_break (2); + html_form_input ('text', 'command_line', NULL, NULL, 50); + html_help_link ('command_line'); - $i = count ($ls_array); + html_break (1); + html_form_input ('submit', 'execute', lang('Execute')); + html_help_link ('execute'); + } - html_break (2); - html_text_bold (lang('Total Files').': '); - html_text ($i); - } - - ### - # Show file upload boxes. Note the last argument to html (). Repeats $show_upload_boxes times - ### + html_form_end (); - if ($path != '/' && $path != $GLOBALS['fakebase'] && $can_add) - { - html_break (2); - html_form_begin ($GLOBALS['appname'].'/index.php?op=upload&path='.$path, 'post', 'multipart/form-data'); - html_table_begin (); - html_table_row_begin ('center'); - html_table_col_begin (); - html_text_bold (lang('File')); - html_help_link ('upload_file'); - html_table_col_end (); - html_table_col_begin (); - html_text_bold (lang('Comment')); - html_help_link ('upload_comment'); - html_table_col_end (); - html_table_row_end (); + html_help_link ('file_stats'); + html_break (1); + html_text_bold (lang('Files').': '); + html_text ($numoffiles); + html_nbsp (3); - html_table_row_begin (); - html_table_col_begin (); - html_form_input ('hidden', 'show_upload_boxes', base64_encode ($show_upload_boxes)); - html (html_form_input ('file', 'upload_file[]', NULL, 255, NULL, NULL, NULL, 1) . html_break (1, NULL, 1), $show_upload_boxes); - html_table_col_end (); - html_table_col_begin (); - html (html_form_input ('text', 'upload_comment[]', NULL, NULL, NULL, NULL, NULL, 1) . html_break (1, NULL, 1), $show_upload_boxes); - html_table_col_end (); - html_table_row_end (); - html_table_end (); - html_form_input ('submit', 'upload_files', lang('Upload files')); - html_help_link ('upload_files'); - html_break (2); - html_text (lang('Show') . html_nbsp (1, True)); - html_link ($GLOBALS['appname'].'/index.php?show_upload_boxes=5', '5'); - html_nbsp (); - html_link ($GLOBALS['appname'].'/index.php?show_upload_boxes=10', '10'); - html_nbsp (); - html_link ($GLOBALS['appname'].'/index.php?show_upload_boxes=20', '20'); - html_nbsp (); - html_link ($GLOBALS['appname'].'/index.php?show_upload_boxes=50', '50'); - html_nbsp (); - html_text (lang('upload fields')); - html_nbsp (); - html_help_link ('show_upload_fields'); - html_form_end (); - } + html_text_bold (lang('Used space').': '); + html_text (borkb ($usedspace, NULL, 1)); + html_nbsp (3); + + if ($path == $GLOBALS['homedir'] || $path == $GLOBALS['fakebase']) + { + html_text_bold (lang('Unused space').': '); + html_text (borkb ($GLOBALS['userinfo']['hdspace'] - $usedspace, NULL, 1)); + + $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( + 'string' => $path, + 'relatives' => array (RELATIVE_NONE) + ) + ); + + $i = count ($ls_array); + + html_break (2); + html_text_bold (lang('Total Files').': '); + html_text ($i); +} + +### +# Show file upload boxes. Note the last argument to html (). Repeats $show_upload_boxes times +### + +if ($path != '/' && $path != $GLOBALS['fakebase'] && $can_add) +{ + html_break (2); + html_form_begin ($GLOBALS['appname'].'/index.php?op=upload&path='.$path, 'post', 'multipart/form-data'); + html_table_begin (); + html_table_row_begin ('center'); + html_table_col_begin (); + html_text_bold (lang('File')); + html_help_link ('upload_file'); + html_table_col_end (); + html_table_col_begin (); + html_text_bold (lang('Comment')); + html_help_link ('upload_comment'); + html_table_col_end (); + html_table_row_end (); + + html_table_row_begin (); + html_table_col_begin (); + html_form_input ('hidden', 'show_upload_boxes', base64_encode ($show_upload_boxes)); + html (html_form_input ('file', 'upload_file[]', NULL, 255, NULL, NULL, NULL, 1) . html_break (1, NULL, 1), $show_upload_boxes); + html_table_col_end (); + html_table_col_begin (); + html (html_form_input ('text', 'upload_comment[]', NULL, NULL, NULL, NULL, NULL, 1) . html_break (1, NULL, 1), $show_upload_boxes); + html_table_col_end (); + html_table_row_end (); + html_table_end (); + html_form_input ('submit', 'upload_files', lang('Upload files')); + html_help_link ('upload_files'); + html_break (2); + html_text (lang('Show') . html_nbsp (1, True)); + html_link ($GLOBALS['appname'].'/index.php?show_upload_boxes=5', '5'); + html_nbsp (); + html_link ($GLOBALS['appname'].'/index.php?show_upload_boxes=10', '10'); + html_nbsp (); + html_link ($GLOBALS['appname'].'/index.php?show_upload_boxes=20', '20'); + html_nbsp (); + html_link ($GLOBALS['appname'].'/index.php?show_upload_boxes=50', '50'); + html_nbsp (); + html_text (lang('upload fields')); + html_nbsp (); + html_help_link ('show_upload_fields'); + html_form_end (); +} } html_table_col_end (); @@ -1329,55 +1355,55 @@ if ($edit) $content = $edit_file_content; if ($GLOBALS['phpgw']->vfs->write (array ( - 'string' => $edit_file, - 'relatives' => array (RELATIVE_ALL), - 'content' => $content - )) - ) - { - html_text_bold (lang('Saved %1', $path.'/'.$edit_file)); - html_break (2); - html_link_back (); - } - else - { - html_text_error (lang('Could not save %1', $path.'/'.$edit_file)); - html_break (2); - html_link_back (); - } + 'string' => $edit_file, + 'relatives' => array (RELATIVE_ALL), + 'content' => $content + )) + ) + { + html_text_bold (lang('Saved %1', $path.'/'.$edit_file)); + html_break (2); + html_link_back (); } + else + { + html_text_error (lang('Could not save %1', $path.'/'.$edit_file)); + html_break (2); + html_link_back (); + } +} /* This doesn't work just yet - elseif ($edit_save_all) +elseif ($edit_save_all) +{ + for ($j = 0; $j != $numoffiles; $j++) { - for ($j = 0; $j != $numoffiles; $j++) - { - $fileman[$j]; + $fileman[$j]; - $content = $fileman[$j]; - echo 'fileman['.$j.']: '.$fileman[$j].'
'.$content.'
'; - continue; - - if ($GLOBALS['phpgw']->vfs->write (array ( - 'string' => $fileman[$j], - 'relatives' => array (RELATIVE_ALL), - 'content' => $content - )) - ) - { - html_text_bold (lang('Saved %1', $path.'/'.$fileman[$j])); - html_break (1); - } - else - { - html_text_error (lang('Could not save %1', $path.'/'.$fileman[$j])); - html_break (1); - } - } + $content = $fileman[$j]; + echo 'fileman['.$j.']: '.$fileman[$j].'
'.$content.'
'; + continue; + if ($GLOBALS['phpgw']->vfs->write (array ( + 'string' => $fileman[$j], + 'relatives' => array (RELATIVE_ALL), + 'content' => $content + )) + ) + { + html_text_bold (lang('Saved %1', $path.'/'.$fileman[$j])); html_break (1); } -*/ + else + { + html_text_error (lang('Could not save %1', $path.'/'.$fileman[$j])); + html_break (1); + } +} + +html_break (1); + } + */ ### # Now we display the edit boxes and forms @@ -1396,53 +1422,53 @@ if ($edit) } if ($fileman[$j] && $GLOBALS['phpgw']->vfs->file_exists (array ( - 'string' => $fileman[$j], - 'relatives' => array (RELATIVE_ALL) - )) - ) + 'string' => $fileman[$j], + 'relatives' => array (RELATIVE_ALL) + )) + ) + { + if ($edit_file) { - if ($edit_file) - { - $content = stripslashes ($edit_file_content); - } - else - { - $content = $GLOBALS['phpgw']->vfs->read (array ('string' => $fileman[$j])); - } - - html_table_begin ('100%'); - html_form_begin ($GLOBALS['appname'].'/index.php?path='.$path); - html_form_input ('hidden', 'edit', True); - html_form_input ('hidden', 'edit_file', $fileman[$j]); - - ### - # We need to include all of the fileman entries for each file's form, - # so we loop through again - ### - - for ($i = 0; $i != $numoffiles; $i++) - { - html_form_input ('hidden', 'fileman['.$i.']', base64_encode ($fileman[$i])); - } - - html_table_row_begin (); - html_table_col_begin (); - html_form_textarea ('edit_file_content', 35, 75, $content); - html_table_col_end (); - html_table_col_begin ('center'); - html_form_input ('submit', 'edit_preview', lang('Preview %1', html_encode ($fileman[$j], 1))); - html_break (1); - html_form_input ('submit', 'edit_save', lang('Save %1', html_encode ($fileman[$j], 1))); -// html_break (1); -// html_form_input ('submit', 'edit_save_all', lang('Save all')); - html_table_col_end (); - html_table_row_end (); - html_break (2); - html_form_end (); - html_table_end (); + $content = stripslashes ($edit_file_content); } + else + { + $content = $GLOBALS['phpgw']->vfs->read (array ('string' => $fileman[$j])); + } + + html_table_begin ('100%'); + html_form_begin ($GLOBALS['appname'].'/index.php?path='.$path); + html_form_input ('hidden', 'edit', True); + html_form_input ('hidden', 'edit_file', $fileman[$j]); + + ### + # We need to include all of the fileman entries for each file's form, + # so we loop through again + ### + + for ($i = 0; $i != $numoffiles; $i++) + { + html_form_input ('hidden', 'fileman['.$i.']', base64_encode ($fileman[$i])); + } + + html_table_row_begin (); + html_table_col_begin (); + html_form_textarea ('edit_file_content', 35, 75, $content); + html_table_col_end (); + html_table_col_begin ('center'); + html_form_input ('submit', 'edit_preview', lang('Preview %1', html_encode ($fileman[$j], 1))); + html_break (1); + html_form_input ('submit', 'edit_save', lang('Save %1', html_encode ($fileman[$j], 1))); + // html_break (1); + // html_form_input ('submit', 'edit_save_all', lang('Save all')); + html_table_col_end (); + html_table_row_end (); + html_break (2); + html_form_end (); + html_table_end (); } } +} ### # Handle File Uploads @@ -1464,69 +1490,69 @@ elseif ($op == 'upload' && $path != '/' && $path != $GLOBALS['fakebase']) ### $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( - 'string' => $path . '/' . $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_NONE), - 'checksubdirs' => False, - 'nofiles' => True + 'string' => $path . '/' . $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => True + ) + ); + + $fileinfo = $ls_array[0]; + + if ($fileinfo['name']) + { + if ($fileinfo['mime_type'] == 'Directory') + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Cannot replace %1 because it is a directory', $fileinfo['name']))); + continue; + } + } + + if ($_FILES['upload_file']['size'][$i] > 0) + { + if ($fileinfo['name'] && $fileinfo['deleteable'] != 'N') + { + $GLOBALS['phpgw']->vfs->set_attributes (array ( + 'string' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_ALL), + 'attributes' => array ( + 'owner_id' => $GLOBALS['userinfo']['username'], + 'modifiedby_id' => $GLOBALS['userinfo']['username'], + 'modified' => $now, + 'size' => $_FILES['upload_file']['size'][$i], + 'mime_type' => $_FILES['upload_file']['type'][$i], + 'deleteable' => 'Y', + 'comment' => stripslashes ($upload_comment[$i]) + ) ) ); - $fileinfo = $ls_array[0]; + $GLOBALS['phpgw']->vfs->cp(array ( + 'from' => $_FILES['upload_file']['tmp_name'][$i], + 'to' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) + ) + ); - if ($fileinfo['name']) - { - if ($fileinfo['mime_type'] == 'Directory') - { - echo $GLOBALS['phpgw']->common->error_list (array (lang('Cannot replace %1 because it is a directory', $fileinfo['name']))); - continue; - } - } + html_text_summary(lang('Replaced %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $_FILES['upload_file']['size'][$i]); +} +else +{ + $GLOBALS['phpgw']->vfs->cp (array ( + 'from' => $_FILES['upload_file']['tmp_name'][$i], + 'to' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) + ) +); - if ($_FILES['upload_file']['size'][$i] > 0) - { - if ($fileinfo['name'] && $fileinfo['deleteable'] != 'N') - { - $GLOBALS['phpgw']->vfs->set_attributes (array ( - 'string' => $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_ALL), - 'attributes' => array ( - 'owner_id' => $GLOBALS['userinfo']['username'], - 'modifiedby_id' => $GLOBALS['userinfo']['username'], - 'modified' => $now, - 'size' => $_FILES['upload_file']['size'][$i], - 'mime_type' => $_FILES['upload_file']['type'][$i], - 'deleteable' => 'Y', - 'comment' => stripslashes ($upload_comment[$i]) - ) - ) - ); - - $GLOBALS['phpgw']->vfs->cp(array ( - 'from' => $_FILES['upload_file']['tmp_name'][$i], - 'to' => $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) - ) - ); - - html_text_summary(lang('Replaced %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $_FILES['upload_file']['size'][$i]); - } - else - { - $GLOBALS['phpgw']->vfs->cp (array ( - 'from' => $_FILES['upload_file']['tmp_name'][$i], - 'to' => $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_NONE|VFS_REAL, RELATIVE_ALL) - ) - ); - - $GLOBALS['phpgw']->vfs->set_attributes (array ( - 'string' => $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_ALL), - 'attributes' => array ( - 'mime_type' => $_FILES['upload_file']['type'][$i], - 'comment' => stripslashes ($upload_comment[$i]) - ) - ) +$GLOBALS['phpgw']->vfs->set_attributes (array ( + 'string' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_ALL), + 'attributes' => array ( + 'mime_type' => $_FILES['upload_file']['type'][$i], + 'comment' => stripslashes ($upload_comment[$i]) + ) +) ); html_text_summary(lang('Created %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $_FILES['upload_file']['size'][$i]); @@ -1535,23 +1561,23 @@ elseif ($op == 'upload' && $path != '/' && $path != $GLOBALS['fakebase']) elseif ($_FILES['upload_file']['name'][$i]) { $GLOBALS['phpgw']->vfs->touch (array ( - 'string' => $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_ALL) - ) - ); + 'string' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_ALL) + ) + ); - $GLOBALS['phpgw']->vfs->set_attributes (array ( - 'string' => $_FILES['upload_file']['name'][$i], - 'relatives' => array (RELATIVE_ALL), - 'attributes' => array ( - 'mime_type' => $_FILES['upload_file']['type'][$i], - 'comment' => $upload_comment[$i] - ) - ) - ); + $GLOBALS['phpgw']->vfs->set_attributes (array ( + 'string' => $_FILES['upload_file']['name'][$i], + 'relatives' => array (RELATIVE_ALL), + 'attributes' => array ( + 'mime_type' => $_FILES['upload_file']['type'][$i], + 'comment' => $upload_comment[$i] + ) + ) + ); - html_text_summary(lang('Created %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $file_size[$i]); - } + html_text_summary(lang('Created %1', $disppath.'/'.$_FILES['upload_file']['name'][$i]), $file_size[$i]); +} } html_break (2); @@ -1573,19 +1599,19 @@ elseif ($comment_files) } $GLOBALS['phpgw']->vfs->set_attributes (array ( - 'string' => $file, - 'relatives' => array (RELATIVE_ALL), - 'attributes' => array ( - 'comment' => stripslashes ($comment_files[$file]) - ) + 'string' => $file, + 'relatives' => array (RELATIVE_ALL), + 'attributes' => array ( + 'comment' => stripslashes ($comment_files[$file]) ) - ); + ) + ); - html_text_summary (lang('Updated comment for %1', $path.'/'.$file)); - } + html_text_summary (lang('Updated comment for %1', $path.'/'.$file)); +} - html_break (2); - html_link_back (); +html_break (2); +html_link_back (); } ### @@ -1607,21 +1633,21 @@ elseif ($renamefiles) echo $GLOBALS['phpgw']->common->error_list (array (lang("File names cannot contain \\ or /"))); } elseif (!$GLOBALS['phpgw']->vfs->mv (array ( - 'from' => $from, - 'to' => $to - )) - ) - { - echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not rename %1 to %2', $disppath.'/'.$from, $disppath.'/'.$to))); - } - else - { - html_text_summary (lang('Renamed %1 to %2', $disppath.'/'.$from, $disppath.'/'.$to)); - } + 'from' => $from, + 'to' => $to + )) + ) + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not rename %1 to %2', $disppath.'/'.$from, $disppath.'/'.$to))); } + else + { + html_text_summary (lang('Renamed %1 to %2', $disppath.'/'.$from, $disppath.'/'.$to)); + } +} - html_break (2); - html_link_back (); +html_break (2); +html_link_back (); } ### @@ -1633,29 +1659,29 @@ elseif ($move) while (list ($num, $file) = each ($fileman)) { if ($GLOBALS['phpgw']->vfs->mv (array ( - 'from' => $file, - 'to' => $todir . '/' . $file, - 'relatives' => array (RELATIVE_ALL, RELATIVE_NONE) - )) - ) - { - $moved++; - html_text_summary (lang('Moved %1 to %2', $disppath.'/'.$file, $todir.'/'.$file)); - } - else - { - echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not move %1 to %2', $disppath.'/'.$file, $todir.'/'.$file))); - } - } - - if ($moved) + 'from' => $file, + 'to' => $todir . '/' . $file, + 'relatives' => array (RELATIVE_ALL, RELATIVE_NONE) + )) + ) { - html_break (2); - html_link ($GLOBALS['appname'].'/index.php?path='.$todir, lang('Go to %1', $todir)); + $moved++; + html_text_summary (lang('Moved %1 to %2', $disppath.'/'.$file, $todir.'/'.$file)); } + else + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not move %1 to %2', $disppath.'/'.$file, $todir.'/'.$file))); + } +} +if ($moved) +{ html_break (2); - html_link_back (); + html_link ($GLOBALS['appname'].'/index.php?path='.$todir, lang('Go to %1', $todir)); +} + +html_break (2); +html_link_back (); } ### @@ -1667,29 +1693,29 @@ elseif ($copy) while (list ($num, $file) = each ($fileman)) { if ($GLOBALS['phpgw']->vfs->cp (array ( - 'from' => $file, - 'to' => $todir . '/' . $file, - 'relatives' => array (RELATIVE_ALL, RELATIVE_NONE) - )) - ) - { - $copied++; - html_text_summary (lang('Copied %1 to %2', $disppath.'/'.$file, $todir.'/'.$file)); - } - else - { - echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not copy %1 to %2', $disppath.'/'.$file, $todir.'/'.$file))); - } - } - - if ($copied) + 'from' => $file, + 'to' => $todir . '/' . $file, + 'relatives' => array (RELATIVE_ALL, RELATIVE_NONE) + )) + ) { - html_break (2); - html_link ($GLOBALS['appname'].'/index.php?path='.$todir, lang('Go to %1', $todir)); + $copied++; + html_text_summary (lang('Copied %1 to %2', $disppath.'/'.$file, $todir.'/'.$file)); } + else + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not copy %1 to %2', $disppath.'/'.$file, $todir.'/'.$file))); + } +} +if ($copied) +{ html_break (2); - html_link_back (); + html_link ($GLOBALS['appname'].'/index.php?path='.$todir, lang('Go to %1', $todir)); +} + +html_break (2); +html_link_back (); } ### @@ -1726,7 +1752,7 @@ elseif ($newdir && $createdir) html_link_back (); html_page_close (); } - + if ($createdir[strlen($createdir)-1] == ' ' || $createdir[0] == ' ') { echo $GLOBALS['phpgw']->common->error_list (array (lang('Cannot create directory because it begins or ends in a space'))); @@ -1736,50 +1762,53 @@ elseif ($newdir && $createdir) } $ls_array = $GLOBALS['phpgw']->vfs->ls (array ( - 'string' => $path . '/' . $createdir, - 'relatives' => array (RELATIVE_NONE), - 'checksubdirs' => False, - 'nofiles' => True - ) - ); + 'string' => $path . '/' . $createdir, + 'relatives' => array (RELATIVE_NONE), + 'checksubdirs' => False, + 'nofiles' => True + ) +); - $fileinfo = $ls_array[0]; +$fileinfo = $ls_array[0]; - if ($fileinfo['name']) +if ($fileinfo['name']) +{ + if ($fileinfo['mime_type'] != 'Directory') { - if ($fileinfo['mime_type'] != 'Directory') - { - echo $GLOBALS['phpgw']->common->error_list (array (lang('%1 already exists as a file', $fileinfo['name']))); - html_break (2); - html_link_back (); - html_page_close (); - } - else - { - echo $GLOBALS['phpgw']->common->error_list (array (lang('Directory %1 already exists', $fileinfo['name']))); - html_break (2); - html_link_back (); - html_page_close (); - } + echo $GLOBALS['phpgw']->common->error_list (array (lang('%1 already exists as a file', $fileinfo['name']))); + html_break (2); + html_link_back (); + html_page_close (); } else { - if ($GLOBALS['phpgw']->vfs->mkdir (array ('string' => $createdir))) - { - html_text_summary (lang('Created directory %1', $disppath.'/'.$createdir)); - html_break (2); - html_link ($GLOBALS['appname'].'/index.php?path='.$disppath.'/'.$createdir, lang('Go to %1', $disppath.'/'.$createdir)); - } - else - { - echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not create %1', $disppath.'/'.$createdir))); - } + echo $GLOBALS['phpgw']->common->error_list (array (lang('Directory %1 already exists', $fileinfo['name']))); + html_break (2); + html_link_back (); + html_page_close (); } +} +else +{ + if ($GLOBALS['phpgw']->vfs->mkdir (array ('string' => $createdir))) + { + html_text_summary (lang('Created directory %1', $disppath.'/'.$createdir)); + html_break (2); + html_link ($GLOBALS['appname'].'/index.php?path='.$disppath.'/'.$createdir, lang('Go to %1', $disppath.'/'.$createdir)); + } + else + { + echo $GLOBALS['phpgw']->common->error_list (array (lang('Could not create %1', $disppath.'/'.$createdir))); + } +} - html_break (2); - html_link_back (); +html_break (2); +html_link_back (); } html_page_close (); + + + ?> diff --git a/filemanager/templates/default/images/folder-home.gif b/filemanager/templates/default/images/folder-home.gif new file mode 100755 index 0000000000000000000000000000000000000000..9641d91eb624dd58ee17e096ab95bb92a7f52af3 GIT binary patch literal 1249 zcmV<71RncGNk%w1VHN-u0O$AsO;1dFI}xg{vDH^YgGM~JZ9CD^(9?Dvqik2iMF4++ ze&V^Cr&|6NAla}X>O6b$prbR!@WE=BW4cp-3#>mBY7y@ogL;rRd{;rDC zzpmUxC!=XZ|9d6#^66}DYwJ-0;?TwaS^&{%VeXq+uUQ$ci+aX?N}-#k_I5qp-`wcx z=ea`w^`KbhJOK3f^M`_gw2yiIdKucGcjrFk z-!%aLi#_1HssBp@|CLFVjFRv1?%i`_mY9|LaUHmqi^yCE%Ys0%rl#>d0kU#b-`wHR zXcp4Iwf?Va(zT&mU0UPi;s2^{wV8#YGAo500RCg#t$JPI=IM)#ipo#}{-RvzHUPSfbNKc8|BgP^oSogx$o*{)x4E|K@bi+Ck^YrW z+1uCU;NJgI0PpPa@ayU7hm4Q^k2ms00Q`DiT|l#yp?&} zav;BSLFU8C;NIf+{{O75tDkLA`K@)MN)+sHO2ns=>(tTtTmyY20{*Ro+QY1(Vmh6h zpZ|(A;JKmQY+Ik9p47FQ`S0xs`p~p`-Up0OL6V)YjAB;@|lC_ww}d=IG_z-rMBq?Cb98-{Icw z^Y-|oTmO9>|8Nz*n0)8$@8##@|6%~*I05nV@cjS#|CdqQ-P-?D0Mpgd|DIgq=K~fuwgR)VF2Ja0P;Tr z`~CXj=j!S=0QvU&|BpZH@$~_CX>@2HRA^-&M@dakEFgDjbZ8)RZ*65DZ)PBAZggdG zW@U0^ZewL2VtF7?X>A}=Ze?r$A^8LW3IP8AEC2ui02Tli06+--0RIUbNbujHf(Qj> zDY6WPEH=Gt*-G|G9ke7D6BI=DPT0LY*_vPoS0cxuLSP6HQ;_iA9V(A9D4C&7U66HZ z60*QG!qz)QmR@W^@P!MR4avU2xiX62EK}f2RRL!N&kZ0R7%`G0sY=U%aUz|W;ZEJx zflq4GfDwy>2?wlvS(rP;O~C?_w0Xh>O3?%wyHG8N@c{%6J{$rNlxVBXJ6nMe8N-zA zP&;Dc7zii`NJt=O3{K2(;^csq6Tl1@AXMh8z(+NhxGpG5p0*n_g9J(8TF$muz^T#9 zy{<#TA8RnKSw_!>u2y+!%$r_AR6!1W_)r*dDN`nUwlaS`aIvk(iWLMoHAvO#-KtJ1 z-t5qVV^y~k5+aPzA&>wGB#gn*LNj_0ae)|qIOBsc3{;Q?LA5m2#s}} zCm=%%I0d0#%N~dvQ%C{fgcAl4;t*m$N^cY-fGxrxVucwZ(4qk?pNLZkN{0a8+7MNk L(#0$-1q1*)PN<%? literal 0 HcmV?d00001 diff --git a/filemanager/templates/default/images/folder-home.png b/filemanager/templates/default/images/folder-home.png new file mode 100644 index 0000000000000000000000000000000000000000..3afa8033793bf26a827c15aa228b88a23a902ff2 GIT binary patch literal 1617 zcmV-X2Cn&uP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ>$4Nv%RCwBA{Qv(y10y3N0|+EYF)*m}F)&DRFfiCtz%bvQ!S?zahRn#*3{_tk7#=VX0005RgijJ^C&Rzr3=Gk_3}Nza zK5O08xFWaeF>KRfWUwS;FhBs|H25FTP(CIGR$VpD#`MgH$>0tmxk87>ABYbl1^=CVv~4Bvk;F#P<+!0;DH|NF_n1~iTZ=sqTpE}#Wp z{xLA*s4!$M*JN1728?TDa{vMe#b9Y}2G<0AhJCE;47v<&fpP!g2?N+|e?BmL*?)-P z;W?nwfI%TFz`(!{Of9@X4780QT!q2&h&980NnoOanFSC)C5UAb=QQ z=@_U^=v9%-6*f*5NrrzwKe7S+`r!}5wIkmcm@;}9G*S}58oq!3&2YW3hC%#rAA__G z&^P}WAefbb;mCc4Q?|Pp?0~$V00G1TvmwlY-oP%#@T!@nnA7;d}}Vi20p z${=B522F#%88|sv8T2|j8Lm%}WB9gp5`(JdccAZp;q&)Dg9XQ5U9ml{bYA^qI13O! zaD#(vb^RD5lo=R)GcvqA^OE5?lL3QRT?)hJx3?LNufD_}t)|Vu!OG0=?fE?hroZ1A z6yn1fp6ci`oSWOjpe6Z%fkT0nfra5OXR_7*koF_5&jJJx*kB$O1|cU0YdePjEDZM! zKVbN88o{6w7t3&e_Y#I<6Y?2O0WA^Hv}90H)nE|)`<&s&p$QDCK#wVVB{DphlVP|x ze-4Av-5U&|Hqs1!&Kxf7N47Tr1Q6I@cY6~{Hb!x&+ov8f2&7doi0bNqeZj#iz#yZg z&%p4FiQ&(W8w?DW?lb&h{ly@wsR;~LW`^Iu@D>siVPMJ0W4N_$J;RqHry0zwt#zb? z4{87e5OYIA1H+AFOB0`-zHOk}(!(O6ssc|b%b;AAHN-+IPb$Jc8-St0R&DJ?2L?t8rs@&7q47d z22E%TfB*hv_|M1$#EcA|-+yHI^&6P;m>3y;eEq_}$;HLM$jl6k%U=v2{eS-aVc_84 zU^sa6=>5>Zz&N1GJ_7_0I4FKGFr2@B>(=8BA3ppP5D?%3Df|aaa{vDQW%%~>GsB_Y zd|=wW%fQ9>hvEB&Hw?mV=?o?jISjvldiY-~K=4%Y`}gmk zpMZd$pI;Ej1{(}2jD7;W`uD|k2Ek7c7$gL_8UAp7VtD%HGuWVCzkWd-0KqR_ym$-L z@(pAjKmZ}84~KYsiKQUG%?s7(I*_aB3l5C??V0rnSnTvsyjg8^= zFNne5xB!MT2ty491AqWRHu&GSZ{Oat0X2al0;B@2s0ytILmK_ zk3ymhtgI{yjO^@?ase2@>_9d!Bwxb}0|+2wgBg}BTXqg8X$rL9D>#gS4gu<7_7KvQ z|Mp*iiHVhi;Ty0hz5V3%r=!c3ykz?Sj|plpsM2ITfByVUm{|Y;#E4v(0s$uw3n7>L zEKE#dtqo1fc({24d3bsM@bU6+t=qVM%i7Ac|Sl5fB*vkh~y@@65K`O P00000NkvXXu0mjf7SPcf literal 0 HcmV?d00001 diff --git a/filemanager/templates/default/images/folder-open.gif b/filemanager/templates/default/images/folder-open.gif new file mode 100755 index 0000000000000000000000000000000000000000..d732f9a98359e38e77944fe003800ed0a246c1b7 GIT binary patch literal 1225 zcmYk5eK^zy0LOoX)#*fG%B_BO)xwF0DYZGQJEsq+(FO@t-KEMr-&{FPx|hZaxNqbjQt>^VCmjYEGZ{UcjQ)1 z>!x9tMcXLOKS6;Sw>ptg1%U$JT?J1LuQaR?fO!z)*C0dQ64vuBs!%-%pu>PigSgWR zRXao#NH0ZNDL92#e+up*xW;4kL9C2~W60EkeP7 z_tjf@3=kIO&XE`116^ZyqJ><8>`Ew~Ax;Hu5&XpPI1ZN>kh>@C0u2_P`US2-{$Z`w zjOcq^7@0w{9_Jb$YlNZ&!g53w!#fS`30S+|xFX~&&DZcTXXu3Z<)iu+d!iNlPFA)X zAgxF304jPRzK_J4;GBV9Ha4chjX%3G+_+-<1eG>ab?;@GK7R9Z|sz$5| zyMBdF7IsTe(Ks_c`gU|=T(28dUhi1%mrD@Li+2q*eJGpnE(7??~-t0pYDYuF;qAQVlw+zMeCGAhxcMfJmBFLoZ4+g92J*;CZ?;&_gRpap0A zf$lN99>EUY6~};c>NXUY>1LQ?-~>Oo-CMH74O{E+^S)7+N8Bq}|`5g=H^JpX>m zf8iW~MGWpuGMz97Rr@<7KJ6Bz7EPP3EpTv&X^?IZmXMXl`s)i_Mm%d2GxiXrT?0Ydt*hW|=aycw3AJ9zP^YkmkL_5dEeiJaSo(RN#Gbe@Iy25n zzB$Fv+sHg-W3}xk#@0+*=bsh9QkO_|mUB_bPT69!5LT&XDb1~-Bgu089bKuVd$n=G z(!)I1i|*aFPe}Law96?;bGU`_b_0~O$_ Ar~m)} literal 0 HcmV?d00001 diff --git a/filemanager/templates/default/images/folder-open.png b/filemanager/templates/default/images/folder-open.png new file mode 100644 index 0000000000000000000000000000000000000000..33cc0bb90e19ff46ba0d1ab2857700ae5839e969 GIT binary patch literal 1542 zcmV+h2Ko7kP)z@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ>d`Uz>RCwBAWB>vok7*1Xf|3k8N*)YMOzaGgHy1E` zy)cP^+q|2BTPcX)`}+qBzdk%>`1kuS0|TP~!|(4u7#RL@N$6;bx4*o$^zrNKbLto* z8blagRK5io_a9^?Kmf5Y5Doq_{015P@2`l0f^4j}i*l}{s+8i!RexW~D;ugavB?{s zTF2$b!0_!FNHstJVKw;wzrQH_zkmKR{QSYlE-fh*7vy76s-z*Vdj1gu!`-vr8H{!G z#4jFU(m8qZ#VZB|Q4I!$hhT#N0*D34G=|@Q{xke#V3hyMF2)BGx%~IQL(eEY}6uO`ZoA8f{u|I?|CtF7Tr&2LumgXWsN#gXo+5ez&G3`ed2?f>+H!AO>! z;mjQthKtu37+4q?7`PRrw7x#L`;386R2mY(3=9AP1U8sUK*Bjc$*C{Fkx`G0iGkty z7X}9YNliT;-!uGCm1khN@R)(&1<-?%>7KVSgJ$cle` zc=r!bg%r>@W{_I}0tjRGwdXSD%5JzB4e$i83&J8Hjxq1G6l9dMv2?FsOfB*tYGyG)w`}r5h z<$pk_i4o$J-$2dZfT`*qP`515lH1Kq<2^6o!q!~*5Neg4kC$uGvkz$hsV z3K)<$KmalEIkX!K3kh(6RWTw`0vphP_dwUHi7_y|`vEZwH7MX<%jMtfP;b=Xy8{M z>nzaQ|AE0GC&|EY`YABXe;}oCpez3a`G0==Wcc;#Kf~9r3=A@&e;6v_zA&_xFf+Ki zI=cXsi2(!%q1iYj-?(66PZ#a~_yxfBb@HMsPX><#15YfWi`#T0D*Z zFl2dr2PVP4K%cNN{QUZxVab}i3=<~JI?V8GO&L(@34j1%h6de_2k+R$QsP}~?!RDQ z-~|T5J75re0A`f;K>8EV^>2Z}B+JjhQ0D!cA<6kSPz@u{H_Qx2&b(tNsax}EC&-`cL^4tPcY>3Y!fB?ck9MbM-jjR9vzxx5zz{hX@|My8)3Je_SQfPUA7XSnh zR%c5)&Dg!`D#Fl3n_v7FR7uzdlrtyR5P$%}fdmY_%kO+Wd++~$=a~8T7#I{lvCTt@ s2>=0v8*!VZGKzUj1+vu1(GCz`0QNvWeZ$n;D057cwQ@R^LvJn80 z0049V0C)fZdjJ@n0*Kp6*z>sZ`{m{L&!psPET0Gfb^tiK49M@E;P%DT^RZ;bC^WeW z!S0jH@}->DVaMp5)$g*`^|xEXApmgz6Pf|7>36v8g^$ls*XpEuaWw z)F`6oXn@8+*XOtT{q?o%f_K_Dg5X1m;!AMCGS}s|`2F&n$r0)J z)%5%7Z`d&hb^tuS4oJ@x33dQ6qX}BmAPRN>HJ%GixENEu8~^|RA^to=a%Ew3Wn>_C zX>@2HRA^-&M@dakEFgDjbZ8)RZ*65DZ)PBAZggdGW@U0^ZewL2VtF7?X>A}=Ze?r$ zA^8LW3IKlqEC2ui02Tli06+)+fPaF6goTEJ0}3=XH8wXXkdZh!Iy*cH1B7mGaGh{* za&vT^aBpsg6$KU-7_F|Y85#?jg9BAoxK~(KS&&*=TwPpSTVAw>1IfyVhXe%%2M7oW z3bV{3Bqb)>Cn%6AE8E*F#{)z~MMjWENRUZNkV-;AOUD3b`1xp%Y5Dm8h6dotqo<(3 zf_d;9WA+C?00GMw3S!W}!2<{pGDeUvfr2$d3^s7+K+?kp5FtpC6tSStf)*}fzJL)a zMGP4+UCd~SsD}?9KOWVL1SH73A+!cCY0|_=iYHK_K$0>A9+i3Z5Pbm?1`HT6W5_@% zGp4LrGv(B*S-X}Eq&6aK*Q#0gXFwf0ck=4pYo`ufLId{j>Ep*wA3l5jN?iOW5CA*i CaYUN{ literal 0 HcmV?d00001 diff --git a/filemanager/templates/default/images/folder-up.png b/filemanager/templates/default/images/folder-up.png new file mode 100644 index 0000000000000000000000000000000000000000..8ec228df6ba4867cb2d9fc2f0dcd11067cd6b0c2 GIT binary patch literal 1128 zcmV-u1eg1XP)rNc+{54@fiM&V zSQywDOn9Rh{{H_9R|mpgRt5|VtPCIr27uH71P}{Uy+4C21A`ooG{f`XkHG@ZA3SGB zS8ioc7k9@9TNXx624}$nh9xiZ8IHa`%5dY$bB1f*zA%8yV7Lb~i-BPQKmaj8)f%YE zurj>+^Pb`PFQB5kHz9^fy5o#EHbx$XFwquVl+50}ufaKrn+9 z7}yvXp8k3b#^I9ja6`ZUd&e;CQY75KRnLnUZhqMbX7jK}GEC80hOmtlY8DUx1Q5(% zh9AIye)#(x7&8e#guniM&5(1~is90?%W%D~em-SzIp+g6{PUkzSbYQ#K(H`=@Z#HF zg>OHn+3WpI;eVf5{;g0zjYr{mbBT-iN`GR}vTu&lwnC&if0` z@(ch01T*-;?>7tzA7uW6HG;~7Rqq}${QV0~F${nH{zWkun1UFd0#n7BPfs9X%uqQ< z@&=V73;+QHvuh*B9u}Y>EPtUi5VHdfVFzkrWI~iBpv(jk!-g3iLd^mKfB=HIcmu;P zhJKEli~{^xOc>$C@s}0BX5wTJXJ*Dw^YPk0hM&Lwe*l{W1ONd9F$Gfe6@I(rofMvs#ua_|7L3%)Xp(P!-7zGF*)ItbYO0lyuB$#^eG4Keo z6IGypdH<8)^o~yqKYyYYLI44TSsnuo=L8zAq07mjX&{c*(CZgoGTgZQo#8u@p)i91 z0tkCSpARhQfQ1$pJA;6>1~-F*6fXlC8zfwR{rb!B;@M}0t2e$feEW&Jpa%#b+*MOP uyg>1XW>W=NnkS}e0tg^RT2-b10R{kaI-(Rk&-2y*0000 literal 0 HcmV?d00001 diff --git a/filemanager/templates/default/images/folder.gif b/filemanager/templates/default/images/folder.gif index 89d4c1f1938af2206da1d06ab88059c58d56f9f6..d656958e0dc82c591f0df4755354de43c3f7084e 100755 GIT binary patch literal 1184 zcmc(e>rYb$07owmu@E5|Q5)i;AVx$MUrb>*V^&Zw5NkUZOg2TK9XNrBO;jKPrLqD( zXpsstB((#Wot12E)iZ)DPjo1R4iXsYZD>%G*)i z1Ze|g3dE+*`tAp(5F`Z$kXxslb3*YHLvPVJiuwUm^gz-H$sI@G z3e7{1X>hp{Wo-~EA!$Hv1y&z&whiKu9==;rO(v6l&eE)P_UcK6mX!8TrL9y!BQm8( z65+FC6gT0$4WVp_NF?eTwfBspLx*ZL1WKe|$G4YoK!6xNPF9d42^VlMr$^PHagk)> z0IC0o)?rAxaHavgN*pRhLOwDiFweR`Q51>OvavmU^~@YbU%jtrpH>c1nsHRAk)r_T zCmg$k7Y34YIp^nHmz3|~PPX<>!e~YPZ??iFYmJ)9ZbWh=cv3tWb2;tv7K{C+#`66I zt=fR@mndp=p1m=jBBg#EwA*dAnHd}DbPnm^x8X=;#pvxZ2)iIs+NP(iRLY(B~MO({T zRJE1&L>^bq^R3<Qy15MRpb}A zPk7*uAi;%z$RIO~9UNC4a_}zSn{$(p`DDD-J$k;LRU4fU5OeE_g5$@irYRh-`vmJjg2%`_=^%X7I$oq?aH$^+KV|eT1aO2}`!?ajd U__KKCMS<5rk4YgsJ&CA)0Lee?iU0rr delta 871 zcmV-t1DO1v3Bm|}M@dFFIbjq46aeP{07pD4R!B2fN;ZIST(gm7!k%oKfm?50L~m|y zwX(3Hm58p8Z@-#tx|nH^cvF37Mt^^R@9*#3-QA^^ilvEaxs_(Hja#FKTauzJ?9e3*b+^YioV?d|5~ z=CQG^qLhc6eqoAlQ-XGBorP$=m1UWAOn!cT=;-Ly*44$s!mz8So|lrHoST)9ikN?B zeO*3#dwlMH?(XvP^5^I0;o;%i+uPRG*3He$#l^+HzrVP+xTU3}l7x3~RXuokdFkot z;^N}Y&d$ch#>2zIz`(${xw)sOr;>$vZ&f{Yb#~s~-q_gK)6>(;%*?vFy0^Etv9YnA zpP!9^b#7EVZ*OtZ($ciFw6L(Ss;a7*nwpD#a&1$8J6~U5va+(v%gf2h$-ch6t*x!8 zsi~u*qn4JIiF|NrX=#UthoGRLwzjsWrlzE%q>_@7hkI{fVPdGLsG*^uj*gCod2Lu& zS#ol6gM)*anVFZDmyC>zg?VjAG9OM(Phw(YeSLnAkdTXui!vh@L_|egTwQv4dV+$2 zg?MZpC>#?71O);D1V2AOQ&UuCTTxp?Fd`Tb9~&4U84{C`0(_I80&SC^0t$a2`2+z9 z0RI3i000006aW+e00{m7{|N*TK!Cu52ooM0K%jtu0}3PlLy$nh0tO8nJdlVGLIep3 zCQztg;R1#X8a71a(80q85Ftd2AW_1^2^1+*BwWFwg^L$3V#t_5qlS$eIC3O}(4mC~ z9XojR@bLpk5FtZ|BrKxi=?;G*FpeNeqGSn^CQcGQffD6|lqpoISh<2FixOoF7j+}&Z)HJ38xo#ahcktxVlW-58D}DTk z`IF@hpg@8K5h9(ikfB3-vLFJTND-VxjA$!t^kk4CM~WW7!2>Ch@Q62(CQ+(X36G^q xnDk`gC{WWTPMsDYdCLBY`$15lM2#Y)rz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ=(@8`@RCwBA{Qv(y11$hR0O3NcE-o$+Vq#*NKsF;t zfJ4F2Tq9xYd$Y=piq<(*5V0iuT*Y_KDzkay;>D%|aPquA;vAe8;;m?OB$mRe95Q>Z0*w}=DK`>iL zNJs$0Km34!;RVo87NGS%elalo{RJ|afq{pUnN>xelUGfgSMc-&!T%owyj2+fz537a z<@RluSpWgVgluqPVq$`_va&pgeH|Ej_ueot2y#LU1tp$;e}RSr4gUR;f#DC3{o=!4 zhCi%=LJY4J`F)etw42BGcLTNZfb;_d5IiV=;VF9a=FKzm^73-mUokM81$s=HpMl}! zdj^J&Ux0@FhPamD8v_F~&>|LKxU4(!nc?UoUIsT428LDD4FCTyGB7qTzIv*)I4&O` zfS8fOHYYMNGUWRoU=ZA8U{IH0VEFWvf#J({h>QRIff@{SEh|vhTcB&VU0`64mt&&9w9GR#R|O#1MB9zlQr0tW>rC#QH>Sy>*4{pssp21%exIe@Bu0uB1}8{+MM z(4hDaj6^n|t~0lPFz^U)Fs!I$V2}|)1n0bcpMLLMGj$C>05L&bn=B(EBmMv1FQDc> z3_pP`{PhQ7=-#92|fmf2d|jG zVf^L;P!kZp2PV6(z)1W8G}y)HA45qHB0+&Xl-;)P>a}$R`5;3e~d1A&IU`wWf1ACO2?1$w5){iBK5|EU!h<-*h(4n5hs0Iii fMp{*-009O7=B4KCwp@#S00000NkvXXu0mjff8dI~ literal 1181 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc3?z4jzqMyzU}gyL332`Z|9_Z=ak!URLqW{u ziK&O?<;-r3&X04+&&%JsX~Uwa9qT6K@1K>sYewe8is0G|xBB{q_wV1|y?b}*^sc3y zSv#kuZRm|&+#WrpHhSgc+{OJ_-IdV|4Nc#^ef#m_$D22Au3x{te$~=x?d3g%KIi5n z+*(uk@l^kdWBr%5G_RPLU6kzI(9rn(`}aS8{`~s&>&urfj~_oidE$6Ue#-KizzfqO z&M(Z^GpFF%hN^2DYi2Y=fByXW?c2A{o;};RaowUR?Q`l9yYhpZ$};D+X6&1qIC-nO`FzP zQ;?aN+1}p1V8Oy|+qNxRwrt6gC6gviYOl^uOiWs_V#UIR3;X)|+A4D+A|i{5ikh37 zXU?2CefspCo}SjqTn{68KR^GZq~zM#x(O2|ba!_fDT}+fxW>f9R#jCsH8r(XqU zv$C)5F-Ml}%|@HO8j>b1O?@glHB{i>t63jz?OO8d#Gkff%btm?P;kzUuJ%oF zkE~1&cP#f8y|aApzq7Hmv42@bh1J3oSr05Z8NAGI?F_S8x2rx+3TB#CpS$y}(ssy diff --git a/filemanager/templates/default/images/locked.gif b/filemanager/templates/default/images/locked.gif index aa4cbbe65b70252cd9f8e7d22963c30f24e8d66a..97bf068cdb466fd9bffaf9149233b2c5fde419bf 100755 GIT binary patch literal 606 zcmZ?wbhEHb6k`x$I2OdPXwjk%A3of@dw1Qsb#LChNl#C&uCD&_`2S+f|4a4%FO>iPus6a* zb7q0_|2@|KmdgBJZ}5MI%m4kp|M$E9-{<`Q*}O z>wM|&Yb<{44ElE>=l`X~|M#ZFwI=kJA;ZR?g5u3Wit+N5b4Hf*S`ufMdVr?Rqg z|DpXsK|y^J`&O-5rSI>rp<|$}t=-pF85$b8Z`Z!I$~Fflhh@u_fgFbc6o0ZXaxvI5 z=r8~Q$WIJxl?Ub*XsC$ruqzn`2IxreE`7|{>7h2oX{pnn1|B{yRTHj>9jXCoy#}QL znv1wxw)b%TI8+dNYKn=djv}{)8neBqs;-{CfnmR)k(jo{uGVIDWUvMRh;Ew< diff --git a/filemanager/templates/default/images/locked.png b/filemanager/templates/default/images/locked.png index 4b781544fac64ae1e0cf88c9ad4ad0e92c6be031..669dc8d4d42568486259775800381b7b2d68d4f1 100644 GIT binary patch literal 719 zcmV;=0xz@;j(q!3lK=n!AY({UO#lFTB>(_`g8%^e{{R4h=>PzA zFaQARU;qF*m;eA5Z<1fdMgRZ;MM*?KRCwBA{Qv(y11$hR05LJp2mk~S%?t(zAetEr z5I{6D7$AUXW-vei(ad0g0HT?}00BfZg8>4FWP=$Q8NpahO-*F+;>CR*KYo0F@7}%V zK|w+JKyfyhJU{?3fN~xw7z$X|ty{O}&6_v>)6>(BRaaM^`|{<>|CE%JewYG)03yp^ zJv}|g*RNmy*V59O0^|w+u^`aU)yIw<`w3(#fz$v55LsbtU}UU$ec<! zAb?0VcwV{R{-pLQ2ZlEv85r1Dp=pa5=yss{K}PYZFho08b^`Nicse$o72mynDf$7bMZ=arhX4ni6U;rN&?lf}AysQ8K002ovPDHLkV1n0y BC%gav literal 460 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^@!3-o*<7!?2sRIE%A+G=b{|7Q>&YW3TTKNAr zkoP|=Ep6GnWto|U>o%P~bLPypb=&UTxnp2rFm2j8TWj0EP|pbyCS1RKoq>ZRK0dy$ zt1mk<8)yO$tV>Lc4Ae+WOa!t&eE0wonHTx|`n+wMwgK7SKYuT*Y+JXiaOKLC(6z#mEsk>s zg#$~vr&~IZ=BkN&8w{j7JY5_^DsGvcspUUtAaML+_pU05w;Qs9ly3Q?iyZaX`#(G_ zYG3_dyPZ!M>Ubyi|C3g;&`tZir&UM%bZDzfr}bf1*KON=yQFWq_BidfoUs2fiO}Tx z;rBAPFWanptBrBO?wG@G?|l!DTTpynoUg=v3BO!LWLJZd2-zX~XIn$rI%a>mK_{Qxz>QlIA`fB!;O ziNVFyCS=8Dv-Z5{{*}Y=M_-;5K#k$$^&)%DIFjba%I5+r+VJx4WOl53x907)zMq|NXwj=!D7t06V@w zU!$I_&6TCZs?Yz+=l?51fL5jdd8_4hvi@{{r5$$G1$h4eH;`DP?3uy+8!&urd%3CL z|G?n>H;mu_G0fN7>u-R!ovhLyJ%2V(j!}c#Oq~Dt{{Kpo>1w$2m8i|1&iqks&NGPq z@&ErlS*jLL+;OVu06d~tYnR#e|5%CC<>v4yPr!?_?|#7k)BXMxQmh z+wsQl{S`23h{yR>VupWuyrhNaHhsOdEQ}alx3>%M~n81$Nxrs%|?^qDNK}gfwNGL;NkiHiN5lj zq|%MT_2%pQ0VZoeT9Xkj)fQ5@=lK36Ov~Kh@DMrP5jx|H<_CX>@2HRA^-&M@dakEFgDjbZ8)RZ*65DZ)PBAZggdG zW@U0^ZewL2VtF7?X>A}=Ze?r$A^8LW3IP8AEC2ui03ZM$000R70RIUbNU)&6XU_~O zT&QqQs7XiuN#ek;V!=>ff|=;$4Nydj71<5q1IvVyL6ZcP$N^HJDr1CJz*3^e-yv(! zN^G-8!5G0CXh^Z)^Gna49SKB@3IsIrLnnkZv4cIBc=C=X zLVzNN9PjM%&NAr)C(tl41Xj%wWPsp+4}|c6&Kwm8u|On|q!QvTBzWRU7*W(WP%D{j z5km^q97f0vkGPV}KKr;pgfvOKgM}x{NFanOJP-r~G*B#&1Q*G{h>RNF^kaqqj(Bol z5+Y{F%?U;nqzn{fEW(8WFA|W!9IjM>!JuIfmdo~?j_RRJ#!FKM;&v-BXc(`v_MP*7NIdk%85ur zM-hs|gTWBr2q3@^n8d>hNNwCef_s`Upn*UNeBg!~C!7!qCL^@;k1F7-as>(omElV< XzLep$Kwaoj$kc1cE%)4V2Lu2+yJkKB literal 1431 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 Q*#&%l^xOYvAN}(G0XoHNM*si- literal 1543 zcmW+!4NwzD6h2N#<%B>_J@vqYo^3{MG-5^~6Kp6EqC_X9!9jkMpD1BO4Hz&`egXtU zWh&J;Qk%Bai4rP0QKEtd2#SJ=8Z_0QRFS3_B>YID20^&==+5kW-+SM;yKi^jk!ayY zF9?MI0Pu?16d|I#|LmMM2LRlXb1lCCz#JfY%ht%S({`wyPEl;FgR=At*r3HvXs?^t z7#03yvms33F$EeikJf3n&>3*7{MRlPx}FAd5~}Pb97JilP75>NpipUK5)3h;1V|(8 zxF{h*z~zB3p=rEpvk&7kU2Kw6tklwRUXuoc4e*%L34$1hFOrC5`RHr`)BQM#$F8mJ zLugEk)rvFuo^*6U*CI)!K0z$2s?ky!gP{|{nU>x@F%0=YNRY4)1Znf=0TaDAU#e!n z7=kiWvdS4a+R$#M^n_FkK}$#yFQ`y4rCJA%u_7c+-)WJ`D=1bFD^XPIkj|wj!H2mS z_s!4VJDpv6jD?^QnNr`_2*C^|Ny_t;UC(Ux@o}!WN?NH!tSFPoJ$=DI?O^OQZP3kR zC^a~~h6-PCaSUZpfCkbp8QOj57$H!y2)I&JvjS!dWv3|W6Yr~&^*7-w2!&aEu|iql zu;5}0LlCwH4W@$_gAh~H7QQf~#?H&ACfEX=cHEZ{4#QulHF^Oz0R(+eLLgOEvSSZd zX$%O?F}G5u8r}t9@jPCj_nCa6cEyA+$BnvHii)xb2F7MS2vDvFc=MDpe%yHp)x2odrfMv1Bnrny!CC6~Bp$nuTI7`IjOA!;=)7P)4RJV3@V=NKIV3T}& z0fR4;s(BI>fpEsSIE=BhjU5_&yTjpNiw;spfFSbRI&{r~t`{jLV71l;q^5%F=-J-4a%oG(CXDT+3vg zN!mEutN$xDWbWISCd~mh$kI}C(sl)izYj=F6X%^R*+ePkrbqG9DGwFKkH%2dq(()A zZ_Vr7nNm_B^I0?haAvNt6lxd*j@13_>4|H3l>wz)Crmy+{}b9*wxTA+?yB1hHu%{_ zT&{y|?k(kkWc7C*sV$)&q4sDmZ$R}}eW5g_ywo#z>4%}OC%-LOIpNVZm^t~dWPV)X zCs*-7Ky~BtaL>9p-{l^D6L~N6xO+QuGNgl>a%Zu3!<}Fsx8UQUO&6c4KYV<-C%*=e zx79ot4dQz>zivr9@X@(^>4K}LO7kwA(>r#hy-p4Zo94NSk9ckiDTZG?*tsqy_vU0( z&z~1vGYvkb-;v3@Tg|!dS>%QJzC~}18^^sLh>AWpp7VZSEFLnK*^1ie%b?OzJ#pG@ ze|Gouo!UVE*6_l*^J;sKXZGdR(GX$D>qu^LvpimRr@w&vR*`Z;m$A3inU%DCZuSR@ zD}Y;Oi}>t(M|#`dC+ZVF_>K8%mTa0UUlkej$a*wV0e?C(!^S#Z8Pi&tt(B2v$CC>a z*@^4@#F<3O$>L!oXFTOrcyiO!RLPvUfr6&ON%_ja!1u53o!H^qFch|UD0QFgMtJE= zk-&{TLyQCm2RBt^dc0KDx7A*3@_uv1c&y^~twU))%DbQTmJfuzbzdzAOPadYv~Sh0 z^WwTXBJ;f>b)<43kdZGuZ`oZRwsuE+;{LO@_9Wgb3#@(NSd-rGIJzxz*V@eFm^NpY zc)GZ(W^dVo?pFh!HoptsS@zK5%hk1tQT5QU?=tKC0?xs{fx&I73-taP-n+{KsQ*t_ z4!I%{uU^Ljnfs&li>5Ej^~WFQ47}Oy3XT7FPIP~+W4Uf7TNQj-1}MOJWrMXrbyU*< MQIWz39WO=s9|tXo@Bjb+