From 39cf3c2b046b03691937e112268403130508da63 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Sun, 21 Jun 2009 08:52:26 -0700 Subject: [PATCH 01/14] The start of the digibug printing module. The first cut at the administration panels. This is still a work in progress. --- modules/digibug/controllers/admin_digibug.php | 73 +++++++++++++++ modules/digibug/controllers/digibug.php | 51 ++++++++++ modules/digibug/css/digibug.css | 88 ++++++++++++++++++ modules/digibug/css/logo.png | Bin 0 -> 17296 bytes modules/digibug/helpers/digibug_installer.php | 43 +++++++++ modules/digibug/helpers/digibug_menu.php | 42 +++++++++ modules/digibug/helpers/digibug_theme.php | 25 +++++ modules/digibug/module.info | 3 + modules/digibug/views/admin_digibug.html.php | 70 ++++++++++++++ 9 files changed, 395 insertions(+) create mode 100644 modules/digibug/controllers/admin_digibug.php create mode 100644 modules/digibug/controllers/digibug.php create mode 100644 modules/digibug/css/digibug.css create mode 100644 modules/digibug/css/logo.png create mode 100644 modules/digibug/helpers/digibug_installer.php create mode 100644 modules/digibug/helpers/digibug_menu.php create mode 100644 modules/digibug/helpers/digibug_theme.php create mode 100644 modules/digibug/module.info create mode 100644 modules/digibug/views/admin_digibug.html.php diff --git a/modules/digibug/controllers/admin_digibug.php b/modules/digibug/controllers/admin_digibug.php new file mode 100644 index 00000000..86338f6b --- /dev/null +++ b/modules/digibug/controllers/admin_digibug.php @@ -0,0 +1,73 @@ +_get_view(); + } + + public function basic() { + access::verify_csrf(); + + module::set_var("digibug", "mode", "basic"); + message::success(t("Successfully set Digibug mode to basic")); + + url::redirect("admin/digibug"); + } + + public function advanced() { + access::verify_csrf(); + + $form = $this->_get_form(); + if ($form->validate()) { + module::set_var("digibug", "company_id", $form->group->company_id->value); + module::set_var("digibug", "event_id", $form->group->event_id->value); + module::set_var("digibug", "mode", "advanced"); + message::success(t("Successfully set Digibug mode to advanced")); + + url::redirect("admin/digibug"); + } + + print $this->_get_view($form); + } + + private function _get_view($form=null) { + $v = new Admin_View("admin.html"); + $v->content = new View("admin_digibug.html"); + $v->content->mode = module::get_var("digibug", "mode", "basic"); + $v->content->form = empty($form) ? $this->_get_form() : $form; + return $v; + } + + private function _get_form() { + $form = new Forge("admin/digibug/advanced", "", "post", + array("id" => "gAdminForm")); + $group = $form->group("group"); + $group->input("company_id") + ->label(t("Company Id")) + ->rules("required") + ->value(module::get_var("digibug", "company_id", "")); + $group->input("event_id") + ->label(t("Event Id")) + ->rules("required") + ->value(module::get_var("digibug", "event_id", "")); + $group->submit("submit")->value(t("Submit")); + + return $form; + } +} \ No newline at end of file diff --git a/modules/digibug/controllers/digibug.php b/modules/digibug/controllers/digibug.php new file mode 100644 index 00000000..1e968d74 --- /dev/null +++ b/modules/digibug/controllers/digibug.php @@ -0,0 +1,51 @@ +_get_form(); + } + + public function handler() { + access::verify_csrf(); + + $form = $this->_get_form(); + if ($form->validate()) { + // @todo process the admin form + + message::success(t("Digibug Processing Successfully")); + + print json_encode( + array("result" => "success")); + } else { + print json_encode( + array("result" => "error", + "form" => $form->__toString())); + } + } + + private function _get_form() { + $form = new Forge("digibug/handler", "", "post", + array("id" => "gDigibugForm")); + $group = $form->group("group")->label(t("Digibug Handler")); + $group->input("text")->label(t("Text"))->rules("required"); + $group->submit("submit")->value(t("Submit")); + + return $form; + } +} \ No newline at end of file diff --git a/modules/digibug/css/digibug.css b/modules/digibug/css/digibug.css new file mode 100644 index 00000000..f5cd6717 --- /dev/null +++ b/modules/digibug/css/digibug.css @@ -0,0 +1,88 @@ +.gAdminDigibugIntro { + background-image: url(logo.png); + background-repeat: no-repeat; + padding-bottom: 20px; + width: 820px; +} + +.gAdminDigibugIntro p { + font-family: Trebuchet MS,Arial,Verdana,Helvetica,sans-serif; + font-size: 1.3em; + font-weight: bold; + padding-left: 110px; + padding-top: 15px; +} + +.gDigibugTab { + width: 820px; + height: 420px; +} + +.gDigibugTab .gDigibugTitle { + font-family: Georgia; + font-size: 20px; + font-weight: bold; + padding-bottom: 10px; +} + +.gDigibugTab .gDigibugText { + font-size: 12px; + font-weight: bold; + line-height: 17px; + padding-bottom: 15px; +} + +.gDigibugListItems ul { + list-style-type: disc; + padding-left: 20px; + font-size: 12px; + font-weight: bold; + line-height: 15px; +} + +.gDigibugListItems ul li{ + padding-top: 10px; +} + +.gDigibugRounded { + background-color:#5C9CCC; + color: white; + width: 308px; + height: 45px; + text-align: center; + line-height: 15px; + margin-top: 10px; + font-weight: bold; + font-size: 12px; + margin-left: 60px; + margin-right: -50px; + margin-left: 20px; + margin-right: 0px; +} + +.gDigibugRounded a { + color: white !important; + font-weight: bold; + text-decoration: underline; +} + +.gDigibugSignIn { + width: 115px; + float: left; +} + +.gDigibugSignIn a { + color: black; + font-size: 16px; + font-weight: bold; + text-decoration: underline; +} + +.gDigibugAdvancedForm { + float: left; + padding-left: 30px; + width: 180px; +} + + + diff --git a/modules/digibug/css/logo.png b/modules/digibug/css/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5eac2c7d204112ec3cd9967e024a921e3477b31c GIT binary patch literal 17296 zcmd43Wmg>C_XIkFOK>O1KyU~I3+_&ECuneYch}$+ToT;f-GUR`-Q8VoKfk-~yZ;Bc zteNSxpu3Ok+EsP-oF-gBP67pq5D5eVp-4%JDgj4J;7x%51$=_1mA8NcqMf9sBM5|y z`QIBnwd(T%0wJ7vsAxDT{cwfYIoO(*TNy)~-0h4Z#%|^&AduTqlB;G3&4|seZ}b+5 zP`hxiA~Ku^4*Pq|)58A4*NzGOa0(HnqVW2FpqIDv_h*57()Z@|&bQl2-#9;?yf=nX z5Xi^~M6)SD0^)>Vf-aay-#kF*SfHE6_hV#EAGMc3!YW@J2PmT_ zWkDa5`iajV!M7!d?;r%1af#`8no4#>>K}^DA=8q8JStj#{&=b!8ooRMs&7_r>De%Eba!B= zcNCdtYBit7J5nj3n)CG6N7FFs0_)HHrwf)K%+4gCv2|J+nxB@BNdggAU5SR9nNaH7so8GRc6@L=ISiX!PK z@lgi37`WhWslY@uT(qc6&42L`BnjbO-E>rWvO|nk2O=fk3MBgF(?WGpV*3AzC}kxF zHT*2g_>lI%xe5&Yguy~H-7A>5{)LSWh2)Dbg?OY~Oh8bQBG59bRJYG>kler$8wF-r{7)P5 zlHomrmYY{siZ?#gcM`a(^X%BBbQr%7fw*XdE_l0=h>Bdw{AN^Kl8H45C<@mY7bMBSWl7)yx?^l@otYnnwl(WmUKCAbIj9>cA8zRlom%QL!;{0nRN^SeFov_kY=rXm+XD`+;&X&3^ z6MwdYv3(<#wOV0fy6`b3qA}etQv1vD=jI>REh)Ij_e9zBUJ0kp*Ww46BW>x;@vYum zLR$L|KUZC#{^*{sjiz&6A|u;j(N3MSceRpbIBy=i2CBP);2H9IcDyp0xtOv_giaf7 zYSS+3_dy9)Ne>E1YvsW(R;DpRO$k@YKaKfv>_m1#F)PI;*oMJ<=3trJj7)@5wc zuEb|MQAy+B>*57j9>x_--?b!6H!YRZDwfRhqp#&vOW+I23U@8We|=}oe)=ZVCe4q{ z7YTE-uf0d>M}o=*YT|8OuceqHf!9DrClVT!_#3{E%s>2gvRF4Tu$%6m$= z;oNgxI(55ZCf2Ee7prJ{{MNw(yq^(2$QQ}9x$}Z;u}rll*?nz`#uOYaZ>Qnv;BiKh zEwi#&iu&_kIP>^mM!%ZZokOdgj53~OXXD3lkN&fdCq@OYAIwS%t40p1A_-Cxg0p9( zqQ1I6bsTqi3_kKLLak>^kFIz>%ut`Jc!rbch@VdCPV59N?`Vz>GyZTqRv5pwrE4?T zufu({*-)v!-oaEm(;YGC*PiJuG_G%`G&SkU@MI()I3mLyyQTUl5 zT$sLa%X8{(IEGtnFQtZ`l5v+5_vbdMHAZL9c(vA@$fhuj&AbgD*}wTYwTzJ6wMog?1n zs%PZr7|JdusD7BqbJrVj@`I~FAQ^xO=pN)lbZZ~sfdvfBDA%bE_TQGNGgidMiORhN z>A5yvOE`zS(Ow7SnH$QnpQA#u#tK4Xh>V?#gk%nCr9P^wQtG!?b=bz{dX*iR9ECM_ zogF2))s$Kv71=&Y<*8>R&vwjb64OdPSRH%k)7CqOtEzD@X+6$(f75Ah_J)=x#ro8a z;={vbydA?)ogs*G{JZQV&FUjAqai6@_!8FY4tRa5dwOAU3YfZv_f88&h zF&lz%F*?4Ah3KB--qNv=ro|jlY}gx!`t#XpF&UYObK@obq}H{;^;zy*iOpmM>ozOP zLeV(eLr>kkqQjqE9)(R+^?s<{Ry#Q*YH%(hlx2LOQp`0x{wb%AJRfbq|9C>);4mv)v*%8_9T&+^~D8a)%nY2Wrj1g`qF~zxB zRUQ#q9>MT!?#Zsgjg>!k<)2=;itsxfyGAH%KDC~&ThbKY zJ8}NwfO>nsxK-V`xV+pI(Y3;r!>t5!EmbJKBbCtO>1b|_y67y=etkdO86MK++(zqW z*+*U7%;(7G6eon~AmVl8W9fXjw`|uxm~xkiAJeybo%*d4nnwM&P2p8a9r3BxfOwy^ z<@9#BIAQ7Smx;+SoasY+A)|@oJ!YgSt5@AQh`idxh9qn8Fks)hZaCb`eBeueOZvl`z-~XTpt5>eEeM1(`hPkfb3?=bj8D1SH&hy)k{w=k#cv32RYX6l zXOzCJ9=)P@*o`-5t2g?{Pt<vp_# z!GJD~KN4D%<&IX>)tEp`z+e2JHvG^*UUH0N;C8B`f`{h185Mjo0qxC7JaE_b@p>gZ zsHsPNy6Zur&9|-NeKg}QB|4D+3-xn&q*sLv8Kc10tNqeP(I7YM+xypW-Ve5O~D~o?3~RH_DC+qMGw~>?XIGr`~))Z z&bi6o^7Y?}&F#r(?d>~y+JxT)H3d@FedS(B74OcE8>!xY|E3oAJ>VkGeyj|6AKuJn zxw;Reee_|A!+smib;JQ>NIw75Z0zi0F?#(6b`$V8e`tI6kQPX|*W2E^{(yoadA*H? zfzf@uyVvuauJZm?=i_+U+k2ng`asHE-{~W^cCH@aTS*>LlHRKPOP*#s#YpGn@c|jx zBnT#hACCiW-IqPn{oVcV`FhObgow}kSlZ9(^j58^^vaR_fvW7@v61<0)5^+H^`aC3 zy^xf1f#c!M(S!5t*JHc&PQ3HZ+}{FY7o>#AbB&;4K3%^rG1z`5ncy4>PEt^H@oWFn z^V+mfDs(5K2(rgV-xip+*ngcIeVo3li9}nwm!a-|46KIj5Rp;eu@rqtc|e3+(2`&} zKU{qS#k)A;On4t z1exscIl&p=5I=i;R6DRX^cfhJvOEa z-A>&n`ab$nRhSxR3)oh8Ct%d4u74XUc8pD!D<96lr0{6|`+k-FcpH2hrs$vmXtK~R zLJvOZQejAOu_lsCJ8VW!4zM+TCxW^{o1}>_!+ux6!~Pb+V>yhI z5Hkig`0psEK_sEk!j*z4IcSrOq#y9ap|_zELd?4vevnilXmFPi&7tzZeGJqIEbq?h z-L$(x8waQOS@x7~tX*(k5V`5N2|R#&5IdlJLj)m3=w9d!7*G5`SmfAo(M7^HkZ}=h z@iH=9a{Jhu*d9seKkQR@sXrMcTzvo5{vG*?vcp3I6@fw-H5KY0CYF1Z`(3e6@mj&M z$aPZGEE?@Io^`~XICU=lzxD&>8{!)*A|fIaB3hzPL`)ela+KrX@tx4xplc+NpPK_k z`c_|l{L+?zH}Pu@b`OY*9EmRNsvkh9Axzvu+k?`>N{&fRM(!=@6YjvDXOl;p zCu;!1%u`KRO>a+Uk9>)6iG&yw6f7Ft7fccSC&}pKljf)31cz9QIFE!qveR$e-<|}; zWvHZ0CsB-<71@8je6D ze6zR6=qC%wFSB240tH_Rs0uU-Tz_%>8vB)y`pmpO5?~T%WN%7qOkm=!pFdcV!oFvC z+Ut>y(oZ$CH>B46wfin0GjKJ4FYp!SnF^jV6jy>xf;5_kl$x=ScN{WqGG3}}$0)@p zpzYku*wnpZu#&an+_ZlQzQ)+!zP&6S*~ditDG@Q4Qkc3Ar}sgRvSZWh`9f!la({MH zc8{;SbtL9?+jOilY#pYv5sKMACP&pS2E97AL7`^SJa@2XrH8S{IjAyX!-xEc{8Cgd zf){i5(-GBodJpBFqB4~lAq!Otty`E|-CONjT9{?oK_YqLTOkz1e}q^h9F&l#@)>aC zkABY3o7*2M9QIBZGOu*^%G}wU&+MDo;4H~(;6KB>!tWC`sEu+}e$-gu))ZZi>w9a?^Kw!x*gyCSppJo2efy)xjob`o_x!QE=-1NPypM7`Jv*tOW|v^L5N z2a(Rv#LnGoJqFbF2JsM6ah?}D(PAAFm`6MDI z-Y#QSpuT67EUBhCw`?_ka>yINyX(H@#l^@q?H+ukw&%?>&*%Cz+pS{>s%=B7NtdFs zsPTcTo`&Qsl}?xISwnR`2ulbA+-o>JkJ5ssy5?vZT0>1};wv_qy3 zI~%(uJJV6iT)TE@(P_Cvqi&W*eH+WciFg}&s@hy%tHWrh*ck;q_2`zNrkqzb^ zhu#vAyhTfr9P$mj)a~I9RiA9m`>&1 zkIzg$XLzzYTD%{RfejS=Y7= z>k{s=;L0=Qcy-$Lwypg-YyE!h`AvXz{;qYfaT}=rA!GdCzShp^f5tXn^IOdxXJn=) zPCd+8*sh;nm_XjAmf!aR2i@M@9IW)m|L(eK{Gqua-;%T6AJ^a4-e2ZbA{6e)}T|&VOdxg1yD^ZET&(~NbAkVp0`3ZJC6`M>Mn zvJN^eoG!R7*siTt53mea22?}}YUq4Ddx%=Q-c8+E7kb%Z59nm8vah$ir`!aAOpJ~# z47V7b@ihtGkpzbpf-fbGRIP{+PL`H_y<^8|E3>AYBQZHRRM)>TzC(7v3M`G+pSn!P zM;9xCtBY&Xbei85p%-IF_ynA#IzOz}3us(2g$Mo3b{-qcw9+B=QF}I6n;QZoV_;@r zmOu0_&McE2Q^fgz^}&$=y^V$8kf7;+^!3T5^GV*cMnzsKi+Ra`Ms)XWgn3)Ws5Nsn1ocs z=)7Ox*c8Yy>cMpe&f6|cR9@oR^?&d>h8kj$;lKXc@HP8>)8H6# ze6;oQ>&^TyzddCy^vc$0y=L!9t<<+SXD#&R5##Mq@zofPuaZPS{c~%lb|OE7rt=rJ zp6T*4E#K67>7gZ@hp$Kk2&B*{pB0J$LIZ8sWUqojFjCBj?&)iXhWYmmPu?zt;0>g- z1;W%Lq;H-6qo6LYA<&8A?1!dhSUVWd88kd95dxFVmr@v75T&}}DwBkH}sww0*!1cNZfm;ac- zevpI#1tC0uK0%$ibW*RoR)VfN3N^ucHc3=3*lDjgDJ}3bV|B{7GBd<%fu^5;2Po9lt~KqO+UkPhN^$GpU25GtvE}8&BnxCA z{vi68vze!~4aFM%FK613MpA=db|KX`4*Mh!){bTFo2;!B#qad6lA7jUsNU$8Ud)&C zye~4)kMI~1^jNK#AiGV70m4Sa>+UgM7+gTde zU2-d1@v3tjdEwo7TlCxVhF#I+F*3)J$H%_t4h`{H(BH2uSBrfepGjSn;?A7FG+aN_ zUM3hz|53+-t?{d2XUH#^l=c@CMFOI%wcjjSX-(@G^1fir2m z__>f)==#-WxjW)6-NGH0i7izfuJ1ae3Wr@qUSU1a_v0LS<5>nR;1(h3-ZMirNOkwVt?Q-AHUajd_h8DV9Lgh>-??*emMx)C_&$p(m!h=dhf1fq> zu{=hlQvGaoWhSZR%(*A$X(hT@ZFbS*xOR7}l{|?Pqx5TLdMMwsebmQ=EzO^UN1u!T zG5l^)a!)YfAux@O8L-~cg8Xmvp@NG!|id|Z? zXQ}=9Y5ec4RyQgz0nyz2+tMDd73)L-TJ8Ea#o8y*#A_9?Y}}Tp2#sM%X1{N z_$vkn=^++&3YCYdqbqnzL*Bz}L}?(3AqUkz&)Xm+6P4?^sg?0Wy@xhk`@tYSIGR9GnP z>fE+A4m;kk{dBj;DK2SojjkWLsN!4ssqHjNQ&pRnLdxr$et!f^7kV68>e+GD>E1HS7$8u zC6m%S1LyJ_YOCyu%$zl5+l4xUH7eUBcQ4nfuN6v+7HjGMtJm%;ae(nX^0Q@ERqQE4 z8z*`d%=P3mO&ctfD|J_87o1mD2UL?T(g`RI6N+<73tg<*0xdWg$1nSqVBLZWlc`}{ zf4Wgp?Yo>?Fa3oeE>h__uU9WQT{lRAAmX4=#;c z);SKkwy0S!D!a;`PA`n5uhjobU`^LpN!ToR#e-m4dOUBWm7}_y_1&Ia8QW^@&Qhzn ztnzW#ywJtky0#Lp-^uH89N!%KP7ZFvqI)fmHNt-JSYD+DDS)c3?^f1#$3YYOy%VRu zd{GVHHy%M`Aapo|w>Q0GwOF>--g*Au6@}c<2*p1Tp$Si0dm&ZZ3uc*%Wwx zb$#8}vwXPTm#?A06f+wH$bTK}UXRFp#9DAqvurGZKr3MMRW>vCN>9 zP7K4;E}}5OQr(T3zq7(<&XRIR@$q4T`+KUhq-C2t5v%~OIP%(g4a&r8^)g32I`DaQ4 zDhfHOwA64Up5oT?f*L^uigoCyCwK^lo;9UQv`}jIBu-qy+{XrfeLQ^TSPHSR_DW~B zS@T0op}jAz){yodbDOU5^EDntp4FUbFmlvT(rkZXQW9*b?x;j$hK7zNafSw;v}mRXm6Bq7m03S@E`WK1e$QKM0GiqS7S5WO&viD+M-2KVph z=3Ol1i!e<*H9FSA$5}}^{~+7A6GFadqv`66;l6@cA3_vzgQoC-I}`yrbn=%>sBR)3 zWk}0`16}+@f;t8sqf%vN2#@Zjh4Aw6(t2jdr%F`i2@-Q9Su<2M4!nT5QN8=KsuY5j zg8qzgy**|Lb)v8dDt0tLEUJDgd+KPu4JB_)!QY5HMyMie+rRAQc}ih(+q1+Mru zd}||{vdoUoO)U15X0l99xpZ5UGwPpEcyiA?ys*s|9MpbgvXx8)Cyh{=^072?niV?t zkvp`;Zyuny+_?`Gq_$Q!3?VKHFHM*h%F4N&TsFHwoAArEQE#E3VOGYt&Tk5ZdyOn+ z-mcg>Zt5<3oSNTfnPYIkxqel(^UT5cCy(3!FRVp7gHYVDB97#pX+D9&t& z@(hhecU)#RT`a1xGVU0J)6qUeo~QCB!Rz$C^{L;w>6qi3{;U~=$LG3w-LMgSos~wQ zZlYcm`;i0wx5&pgGY4nuZ<~LLS*FdS$Kw2zpkUxqp!|OF=aFuMu5{)hUm)=TL zMk0x~YHXN;%NH%9yYK-_D<$K#r!OsEG5&QpoYI^g2C27wUvox6rzCnavIhnr*pAo;ycrQT%^pysO&mSR6j&ge-Q44B?&v;E`F66SfAFXIUxrVSP zQGcWUolu`p&N0J_OpZyD&#q5fKKl)v-<7W)AHV>MsEC9akNpP}7XTwE6d=9G?Zle2 zq13R)q-AQ$6mgekW{Z~qg{W`&aLQN1{>mgH4J)IHs16|`qeIW7`$AchmIiey2TfEG zQiParB%4Yyw|sv_l4W~--|Fdh%W$fHjn{j+IPz_|>uiV0N`gba&gJFI3Z0)4S8-* zpqmTI+VaPs=f!C>o57yb*zZTD%+C5P_faR0@(=CdodyTv4SUx)#GgkcggqHY_+ggh zrT46JUpwB`;g`$pIT1a`FJozT~+6iCB(@F5k zYc_~{?LV0{RukiQR~zrHY!*05WV8oig-_-BJ1S&?%HkNC`v0F_LC+q)7vwj?g|k(h z>Y1%BuMda3gUvs9Za_vnvv@#iW#{a9a6ftCy2hDA_5+ zhW`GF%cCKP$fGHyjnI**Ei9y!F42+7{2`y2|A(%4T4_2yVR~8_+c-HskAj;1kRW2U z;?FY9?msy;QnK~*<}Up<^8&IB^wKSPG}38#qbmP3r*85mUshH= zo5Q;xKHe(3oPwU9b_!ceF+MR-My#6tus9;VfX4hT(Me3Iei?^Sr<(q5hmDdCI7)v{ z%LAG+HnETv_XxSd55(~-$@@bm?U2Uu3Fs-kd9k!bOZ<<<~W*YaCEB{9W~iR6$B ztQ|i>a)?ks00>W8e9NU70})o#UlIXID2gR1K-zy8#yAgi=Pzyf@1Nin1PebE2&e^} zU6=+lItUs`lp^TUzt|@5s-I*qq$fBHdNl}hI7o1lT;G}OF9N27AYG9(2xBxL5aOp% z*i4&?jetPmhX6v5!~nJhf?xvB1C(CN1vH_;O31|Ex)c(?`1?WV5umWJFi;m4o-oMo zO-V0COhGI_5FMQz1ct%jQlbz%if#5cgW`mM92ivs>Y|%ze?OW0$xw&_#izI-L{Pdh=?t)QX|MRLC{f_YGLoZ+LfIUxryxll=<@Q;(Q zf*?N-5(EY$g!LB#9n_6NB-{D&Aq@!SOo<^Bow&N;rt*VE~w&|8uScDv>bWC zSg4#xEEEKxfG`jZ2whNw+^@)QlqNQ3SqwonuE-At26I#Gn3J6B1E&PtQIQ}vCK3dy z2wm7QcK}gI7>po<7;6Cq^C>J5B<8;XLxu&9jxyPW5w;_41my=!nFu0>hXD~-go|^L z!O)roL6d`#oMA|ErhlS!PX&R{Vd5~6ghBjp!lvxMgCGbM7{cg&2ttA&@_nKs=1YNH z2!ddQA6kq`&IUG@L*Bpd!<>eI7uYZng_tr97fG)sX*dsRI!_#&1~Z;Mo(ycd)>@d}$PmehkMyOj;432xG(gvj=aahstxzFGo zG5FM|CF->qnvU%vzkSvFg1>o%)AXD^BFgrAlm@>1d+c{PnG!q29)ElyyUHABq!(B!$UtGF<+s~r#8e=)aNcj`h1M6fxbljEmNDftu#qp5*0KrM zIvZCPZmg>;%DS7$DLz01-6(sbYBJh>PHrOL^8yOPL-C%_=kHT+n`uS{K4AV_42GGI zw~j=@u|aZ4bQN?2GeLhk!SYBJeNlyS z>9MiTE3Gj>@M(ww&x;O&k5F36bL4+=v8TV(>A7lUt9RobivQ-S^S^PzlB!`z#K2dQ zLLY`zGQwo%j8g{904WjS{1+?;2So#&z~)~f7>-{&G_r9_Z`^NC+ZS zNX|fo?|kl>Y>CP(*qcc^;W1@e&ikkw>8~tUMrMN~iAb4NK%NWpS0sV7w;KtB98jj3 zFlAZ)Xlh}j!-3WFQ#^$V;a@NQ4E)&;LY@|=BrHH}ZiOe=^>mWyPs1E0p-iPpigx?f zM;sjVe@LVJxjH<-w@2Z*{}2RIe+Kz~$q7jeG>X*$$s}PQLWG3SX~@Nd1V8!xgn|_k z`W==C5qYJAl0XlV3z3JAR8etzL@RB!h(N~m(zqKy1^ zLMj?oytPrSmF}unUV?y(2)Eb;E71c3u@m%S2*4dbe4Tn;w|=;-6%$MUnw+MA(BLz!AhlKi92;F~Uie#llIfaXvO zC5BEsZWT#>2V#)2W!Gn9IGafn7*NTdLQg>)VFhrGeSO8*+3NDd4Y9uUJR${Ftwyn; zgSm|mf=J#u3`jU^UxrO~nu#VKwBgc9o1a$Te)obnhQYPp5(6=?wl441S5Q@*W}8So z_Pnr1yt(}L^=~4JVOZzquSe2{#On(K@k1ZK4gX5%Q^i4qMF-iCWk{x?Yus+wtj5P! zXwK$4T#3{N3hBfk_?G@&I!?tKDeu-@>&68C(S{}`18>3oi9wf<#S*r|_LD?MM@NXG z9O{&npsmSGz|RzcUs9qZeSCC;Z}?6b2BR%(CTbw$LpH(NTjn$KS(*tuxm?F{f6Z2?x|)z> zY?mA^FTx_ciHVpGtIo0X+nkm7$jI7K>!z-}a+^!x7PVv1^vOJ112e*guw)P!o=u*T zehhjYJ(Q5TU`sqaOim(J9_9@C2T%*Hr$!q3%p!FVB&ccCX4MBRT}9QIJF|x2olN)T zhyA$oB!S`V?5s_rR6DU+VOid&-fx zhgkQ|=PZ`ll~z{6yYh^B{&Is1Fp95+=Rskcw&I0lPEi6w1*GSXpru0QvzKvFjj4pu z^si_pCo!lTFjN4#AjK6Adti)FG>8la!5^WBEFVI)Lc{p-<9N^6(lOb)dF$A=WAWxR zq^+&(c)oJk>TBt232PjB9u_MT6B9pwM@dP^w-iS1B$EC9r$!Z3K8GDiZEbB`U0tBp zC~(l^av7Y}6%}Xg_iNLdQV5SsoJHhGAj-lV>{YriFc1xDX7R2am2R_3kB%t9jc2X3 z+pD~F#*`FmzN+?u2M=Mp9FdI&;YNqYx6*F#XQLbB8=Lh!O|$7jm0FHZ2vC9>zlSkE zeoLn=ufC7xQ0QPps9m{~Ko;#fqsyCAR%Bb<`+8Wdm)9^YKJO=`e$`tpJ=9Wj5A9fHT2bPir(2${qbD6)+dQ*w)C<7{(e&Ln|~LZ zy;zu-Kn93(>kUo|pw;-PY)giJgM|h|x{Bchi>AqBsN`tCk?Oq#uFxNNn26S|dmC1t zU9#y*D?kz=Qo|jNjb&vewb{6*IQSy@`edb4Oy3d;fQNUquu2h=3*etfZhw9W7RD8eU)>2$voba^T z-k@dfj#G0y}LaKlho5Y7a&K_K46w(Dxpv5RBu%O|6{d9XALn@G!m1R?{;q;L8EAH*(4M8r?d?VQpiJY_K zgMt}00&7!~7zDN=JPjx+`?mT_&&Ib3Px(1=z+m$}oRXsS{M1mF>$?j;W@So&`{rPz zqGI>ViB~iHd@o~i=TuuD9{9M9z|U(GK=PI#@${@V6xEzst9q8j^4i>L7g> z$<)yVOnpsF&A;Cg(0&Ex&-dr^A{2(By+Vc4?oT&|e4ck1yzVRl0-bGbM4&RYQVJ>I zuBw;{SimYb!-xxR zRWx7rc1S`yS>o~4x!1b*=$1ph%5fjfX*U;ht$u#(WlUTfbNwMsi)x1Q|7UM;d0 zm8sp6jp{kTMKhe)=0OI5?2cxNosZ`TqQu1%fxe3p^Jj|w`0>N@{%mYwf|S`HC?#e7 z@p_-f^{ma~_Q-Y3eQghuD_F}E+y3ez<=;+8uI+vpf@TY))fbaDd^#GEsmm9pFPaD&}S`%_P{HegjW76fd zn4tl=?Ix-73Wq8!m8w_Tc08K&g<*KWsjE5<{3Nh#yBr8X`RH=K)(-R;<>S{f-FEKx zt7fqGQ#yf|`dHFL#|5I3_*`NGQ)!Kz^6#Q1l2z_}DyJhN%mj7C+hbdG%#UA>u}IeX z4d{x>M>*1Zvu!M^BKz2fcAxkO?3yV{}!$y~X!KSzBJTqU zFDC=T$wqfzW#@~uaEvbFtowZrfx`|$YnCkoon0a}v1=mQV$-SM+U5Rm1#EEYQu_?q z-+8y^;ZvI8yaB7~Y_8sH_h>|}k{^BY0&hDmO|9)W1{xapS~e3PB^S!1_W~}a@X*M27jv`5o;9&2ko5iXhK&}v{ zv0Khn=(GaVm(F1uO~j=X|0gjq5l|wGPvUImQ+>Z1NqOC3Q&SfKtema3e%iX)9if)b zTKOZDaJt-hf4a=U$=PJTJs>0`M6X^!l+IbBIigmS7q# ztF0-ei+snTwo=q=$E;8b)9+lf*4Fl(rQv?LRuO2LZN2m|cd9jSn}mwb$vKLfH&WIq ztT0`7a&nSDEl)*BS#Lf)Fl{y?FvXn4VVgC5n8EMe(yhPH;r$G}*1WFAfd26iMQhfY z?C$I^=yiDAoh*952=?juJW^6qQ`69xUF{6jFxaj%0lQgzRj?^3C`7002v|+Dn;r69 z&({FsD1#;uucn1R8dwV<&jF_5& zVl-PoZ{GXK6&PMS@b-CqLLp>B0L3RHI4cC9-=D3fvzf;)T4gaCikGUDJF!uuRHX~^{^(@_w6L|uwFt*iC1+R|GA={a_j2VzxqKDdG+rx$13Q3_ zo`3`dWWfudF`E2u$qdZ^Z)R{gdU<;Tl@)+m*E_uRye`GilvPw$0cZdU0POt0CnfcL ze|rU(79IxXClOaXy2Ji>W?2~nS>MTGt+%%~f#H*OfKrRwe9yEhHks!Z+z(28d84zJLF&pfDMBFOd%8 zXdYeKX#0She2Z}7Gj_DSUs0N;%Vk=L@Y_`+p)ox2ZY?=za?%2cftT^#LP|5=0&cC^ zaOL7&LOF4@rjY$QC3UAe5ZIbRfQX0)JW_ag+#J>F@^RgIK_)jYKL49q>dEd39EcEX>UR zb{&9hYBZlV0kX*>UQrbX1duS0EKfbiOl@B;P{ecM5fi5O3sg)yy!opt$_Dzzleh|X znI;~~8OBFA7U<^|IXgHzBDo=omg}@NBc&64e58k`9L7tb{wN=ZuvZYKe$V~Wv%dh0 z84$+)L|Wx6_r267ngfUrun!GzUD4s;noV|Oh9`St>A)2I7LNiXR#{e7*2IL0jDnfD z8kml-qLeP6*V6^E$S5e8e4by)eSlyBq979T!F;`=okB|B?P0sYdN~AO-9}qI9m!)x zUhAbg0BXjjrtq+^z^?qcv1qlSr95Aa*uW6b09mk!cZ5v1P&gnU8RgZ+%tVsR* z&0<2mEHm47sll-}A zX1-#z&U`uu{l6i4-kkuky?D8vIG$W-cBE!zR#cq@(h86&LJWb|8)a2hpovpj6Cc2S z_DABe4gheQ&J`g7?IM`PdJ6|yOj;w|){2I*TTJn`Dfa#qXWmr&*Dx6?_%29V$`PlK zb8&ZvD@?@sKZD@$sl=!INnMxM_svUZ`0?opusm}!Guo{#)<6Ou9v(_bNwxfyl$4wt zSq9V#xJth}0G6MhKb}IT&8@nsswyup4~V1q@5`N`1OOd$^z`&hOr-1TAVe$!0|RZwdB8i~oi0<4)Kp|3kbV4W<#s*BK`Hee@LB-hqi^kJ`|`V8=*!BE z0cM3J9~g7Z@@b>(x(jz^W#`+I;{+eI)D$oofa{0|lTBl@=gu6ACQj#Ztr*z_T2ANp z_HYt)6ElW2X315FH$Kk+trx+OMHyO=H3({j`Px-gR%Xu{G5?JxX^(@DH=x{0;v8+4x1CQ z6TmI@_Vg6Uq~?9hj*Yc@yxIkHpC6b4R#rzqC1`1B+dc1f>n)PNXVbULZA~bKwtn==H}*x;gkIL;{!BF z*7uF6{bqo1reP-hd<2X?3~1y!>Yz zRDr}Udwq39$Z9eQ_&dH{ly=K?z^?%l&<_N{w70jnvfsXa z1aQ{a*l5}{Rc|?8tX$Y}Iq(tS%XAjwVJ+MCU4piQ@P0EkR3N{4f)KX{qP_u_u$jgF zGb7^ndI0VQpv=idK^h>4*KwZnp8)y*=Zt}Y0r1rda7UmP5Q_2?Wx(c z*DwzjmJF*xKs6BN7Bv#x10N0)P(%&VOulUqoMzKu5I9VQ1r6XEj+(KhjhO^?D+naa zRK~sYapl*&Da^9oOfmty;s{U|U_5{f)I}hZieEncivQu(w#am1V?!TMwb#}xDDCy% z)bN4b8{6BTMrtI!9987R;PReo@v(dv5RWF({QkWK;5xFn;O!*=wmxUQE={vRdbEack8+@Lc3;OIcZ2QPE$M zT6c<_;UxNZ;C~)q2rDTo-=5_bDm?ZI%Dr=qa~aBOmN zAV^VCf<$JdIkzwHRQ)PJG!t3!^y}^XtM@Ah-@wk^p3Cu^H83~8!txck6$>jXht1@v$wYgIO=ve+V}VWGsdry3;&n+`1k;u8gX?$ zpSHBL0LL*VpL{Yi>3{t3(EsuRSCqfY&lCFGvdzA><$34_3Rz;EG{O0)t>a({qJ+AC!R_7(8A5T-G@yGywnypNWwG literal 0 HcmV?d00001 diff --git a/modules/digibug/helpers/digibug_installer.php b/modules/digibug/helpers/digibug_installer.php new file mode 100644 index 00000000..90dab990 --- /dev/null +++ b/modules/digibug/helpers/digibug_installer.php @@ -0,0 +1,43 @@ +query("CREATE TABLE {print_proxy} ( + `id` int(9) NOT NULL auto_increment, + `proxy_id` char(55) NOT NULL, + `item_id` int(9), + PRIMARY KEY (`id`)) + ENGINE=InnoDB DEFAULT CHARSET=utf8;"); + + module::set_var("digibug", "basic_company_id", "3153"); + module::set_var("digibug", "basic_event_id", "8491"); + module::set_var("digibug", "mode", "basic"); + + module::set_version("digibug", 1); + } + } + + static function uninstall() { + Database::instance()->query("DROP TABLE IF EXISTS {print_proxy}"); + module::delete("digibug"); + } +} diff --git a/modules/digibug/helpers/digibug_menu.php b/modules/digibug/helpers/digibug_menu.php new file mode 100644 index 00000000..3f41bb16 --- /dev/null +++ b/modules/digibug/helpers/digibug_menu.php @@ -0,0 +1,42 @@ +get("settings_menu") + ->append(Menu::factory("link") + ->id("digibug_menu") + ->label(t("Digibug Administration")) + ->url(url::site("admin/digibug"))); + } + + static function photo($menu, $theme) { + } + + static function site($menu, $theme) { + $item = $theme->item(); + + if ($item && access::can("edit", $item)) { + $options_menu = $menu->get("options_menu") + ->append(Menu::factory("dialog") + ->id("digibug") + ->label(t("Peform Digibug Processing")) + ->url(url::site("digibug/index/$item->id"))); + } + } +} diff --git a/modules/digibug/helpers/digibug_theme.php b/modules/digibug/helpers/digibug_theme.php new file mode 100644 index 00000000..06d656c8 --- /dev/null +++ b/modules/digibug/helpers/digibug_theme.php @@ -0,0 +1,25 @@ +"; + } +} diff --git a/modules/digibug/module.info b/modules/digibug/module.info new file mode 100644 index 00000000..58602c0d --- /dev/null +++ b/modules/digibug/module.info @@ -0,0 +1,3 @@ +name = Digibug +description = Digibug Photo Printing Module +version = 1 diff --git a/modules/digibug/views/admin_digibug.html.php b/modules/digibug/views/admin_digibug.html.php new file mode 100644 index 00000000..33ce5f83 --- /dev/null +++ b/modules/digibug/views/admin_digibug.html.php @@ -0,0 +1,70 @@ + + +
+

+
+

+ +

+
+
+
    +
  • +
  • +
+
+
+ +
+ +
+
+ +
+
+
    +
  • +
  • +
  • +
+
+
+
+ + + + + + +
+
+
+
+ +
+ +
+
+ +
+
+ +
+
+ +

+ +
+
+
+ +
+
+
+
From ee8887045e8f6702b13565173ba80330fcdb4572 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Mon, 22 Jun 2009 05:46:40 -0700 Subject: [PATCH 02/14] Change the quick pan from static to dynamic. This allows modules to add buttons to the quick pane. The quick pane is now divided into 4 sections: left, center, right and additional. Additional items appear in the drop down box. Buttons are not sorted within the groupings. In addition, the quick pane will overflow onto the "additional" dropdown if there is not enough room to display all the buttons. The use case is the digibug printing module needed to add a button to the quick pane, and I don't like putting code into core that says if module is active... That's another one of those code smells :-) --- modules/gallery/controllers/quick.php | 2 + modules/gallery/helpers/gallery_quick.php | 146 ++++++++++++++++++++++ modules/gallery/views/quick_pane.html.php | 103 ++------------- 3 files changed, 160 insertions(+), 91 deletions(-) create mode 100644 modules/gallery/helpers/gallery_quick.php diff --git a/modules/gallery/controllers/quick.php b/modules/gallery/controllers/quick.php index cff6686b..6203728c 100644 --- a/modules/gallery/controllers/quick.php +++ b/modules/gallery/controllers/quick.php @@ -25,6 +25,8 @@ class Quick_Controller extends Controller { } $view = new View("quick_pane.html"); + $view->button_list = + gallery_quick::get_quick_buttons($item, Input::instance()->get("page_type")); $view->item = $item; $view->page_type = Input::instance()->get("page_type"); print $view; diff --git a/modules/gallery/helpers/gallery_quick.php b/modules/gallery/helpers/gallery_quick.php new file mode 100644 index 00000000..19ed23dc --- /dev/null +++ b/modules/gallery/helpers/gallery_quick.php @@ -0,0 +1,146 @@ +name == "gallery") { + continue; + } + $class_name = "{$module->name}_quick"; + if (method_exists($class_name, "buttons")) { + $module_buttons = call_user_func(array($class_name, "buttons"), $item, $page_type); + foreach (array("left", "center", "right", "additional") as $position) { + if (!empty($module_buttons[$position])) { + $buttons[$position] = array_merge($buttons[$position], $module_buttons[$position]); + } + } + } + } + + $sorted_buttons->main = array(); + foreach (array("left", "center", "right") as $position) { + $sorted_buttons->main = array_merge($sorted_buttons->main, $buttons[$position]); + } + + $sorted_buttons->additional = $buttons["additional"]; + $max_display = empty($sorted_buttons->additional) ? 6 : 5; + if (count($sorted_buttons->main) >= $max_display) { + $to_move = array_slice($sorted_buttons->main, 5); + $sorted_buttons->additional = array_merge($to_move, $sorted_buttons->additional); + for ($i = count($sorted_buttons->main); $i >= 5; $i--) { + unset($sorted_buttons->main[$i]); + } + } + + Kohana::log("error", ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); + Kohana::log("error", Kohana::debug($sorted_buttons)); + Kohana::log("error", "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"); + return $sorted_buttons; + } + + static function buttons($item, $page_type) { + $elements = array("left" => array(), "center" => array(), "right" => array(), + "additional" => array()); + switch ($item->type) { + case "movie": + $edit_title = t("Edit this movie"); + $move_title = t("Move this movie to another album"); + $cover_title = t("Choose this movie as the album cover"); + $delete_title = t("Delete this movie"); + break; + case "album": + $edit_title = t("Edit this album"); + $move_title = t("Move this album to another album"); + $cover_title = t("Choose this album as the album cover"); + $delete_title = t("Delete this album"); + break; + default: + $edit_title = t("Edit this photo"); + $move_title = t("Move this photo to another album"); + $cover_title = t("Choose this photo as the album cover"); + $delete_title = t("Delete this photo"); + break; + } + + $csrf = access::csrf_token(); + $elements["left"][] = (object)array( + "title" => $edit_title, + "class" => "gDialogLink gButtonLink", + "icon" => "ui-icon-pencil", + "href" => url::site("quick/form_edit/$item->id?page_type=$page_type")); + if ($item->is_photo() && graphics::can("rotate")) { + $elements["left"][] = + (object)array( + "title" => t("Rotate 90 degrees counter clockwise"), + "class" => "gButtonLink", + "icon" => "ui-icon-rotate-ccw", + "href" => url::site("quick/form_edit/$item->id/ccw?csrf=$csrf&?page_type=$page_type")); + $elements["left"][] = + (object)array( + "title" => t("Rotate 90 degrees clockwise"), + "class" => "gButtonLink", + "icon" => "ui-icon-rotate-cw", + "href" => url::site("quick/form_edit/$item->id/cw?csrf=$csrf&page_type=$page_type")); + } + + // Don't move photos from the photo page; we don't yet have a good way of redirecting after move + if ($page_type == "album") { + $elements["left"][] = (object)array( + "title" => $move_title, + "class" => "gDialogLink gButtonLink", + "icon" => "ui-icon-folder-open", + "href" => url::site("move/browse/$item->id")); + } + + if (access::can("edit", $item->parent())) { + $disabledState = + $item->type == "album" && empty($item->album_cover_item_id) ? " ui-state-disabled" : ""; + $elements["right"][] = (object)array( + "title" => $cover_title, + "class" => "gButtonLink{$disabledState}", + "icon" => "ui-icon-star", + "href" => url::site("quick/make_album_cover/$item->id?csrf=$csrf&page_type=$page_type")); + + $elements["right"][] = (object)array( + "title" => $delete_title, + "class" => "gButtonLink", + "icon" => "ui-icon-trash", + "id" => "gQuickDelete", + "href" => url::site("quick/form_delete/$item->id?csrf=$csrf&page_type=$page_type")); + } + + if ($item->is_album()) { + $elements["additional"][] = (object)array( + "title" => t("Add a photo"), + "class" => "add_item gDialogLink", + "href" => url::site("simple_uploader/app/$item->id")); + $elements["additional"][] = (object)array( + "title" => t("Add an album"), + "class" => "add_album gDialogLink", + "href" => url::site("form/add/albums/$item->id?type=album")); + $elements["additional"][] = (object)array( + "title" => t("Edit permissions"), + "class" => "permissions gDialogLink", + "href" => url::site("permissions/browse/$item->id")); + } + return $elements; + } +} diff --git a/modules/gallery/views/quick_pane.html.php b/modules/gallery/views/quick_pane.html.php index f50e1abe..eabf4a67 100644 --- a/modules/gallery/views/quick_pane.html.php +++ b/modules/gallery/views/quick_pane.html.php @@ -1,85 +1,14 @@ -type == "photo"): ?> - -type == "movie"): ?> - -type == "album"): ?> - - -id?page_type=$page_type") ?>" - title=""> - - +main as $button): ?> + + + title ?> + -is_photo() && graphics::can("rotate")): ?> -id/ccw?csrf=$csrf&page_type=$page_type") ?>" - title=""> - - - - - -id/cw?csrf=$csrf&page_type=$page_type") ?>" - title=""> - - - - - - - - -type == "photo"): ?> - -type == "movie"): ?> - -type == "album"): ?> - - -id") ?>" - title=""> - - - - - - - -parent())): ?> -type == "photo"): ?> - -type == "movie"): ?> - -type == "album"): ?> -album_cover_item_id)): ?> -album_cover_item_id) ? " ui-state-disabled" : "" ?> - - - -id?csrf=$csrf&page_type=$page_type") ?>" - title=""> - - - - - -type == "photo"): ?> - -type == "movie"): ?> - -type == "album"): ?> - - -id?page_type=$page_type") ?>" id="gQuickDelete" title=""> - - - - - - -is_album()): ?> +additional)): ?> "> @@ -87,19 +16,11 @@ From f981484a8051c0d5d05dae55882aefdb7094403a Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Mon, 22 Jun 2009 05:52:47 -0700 Subject: [PATCH 03/14] Add a digibug printing button to the quick pane --- modules/digibug/helpers/digibug_quick.php | 34 +++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 modules/digibug/helpers/digibug_quick.php diff --git a/modules/digibug/helpers/digibug_quick.php b/modules/digibug/helpers/digibug_quick.php new file mode 100644 index 00000000..dce0c519 --- /dev/null +++ b/modules/digibug/helpers/digibug_quick.php @@ -0,0 +1,34 @@ +type == "photo") { + $csrf = access::csrf_token(); + $elements["center"][] = (object)array( + "title" => t("Print photo with Digibug"), + "class" => "gButtonLink", + "icon" => "ui-icon-print", + "href" => url::site("digibug/print/$item->id?csrf=$csrf")); + } + + return $elements; + } +} From 05f8659a7ffa35cb1458c69e4db1196aa384fff0 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Mon, 22 Jun 2009 06:03:55 -0700 Subject: [PATCH 04/14] Fix preamble so tests pass --- modules/digibug/controllers/admin_digibug.php | 3 ++- modules/digibug/controllers/digibug.php | 5 +++-- modules/digibug/helpers/digibug_installer.php | 3 ++- modules/digibug/helpers/digibug_menu.php | 7 ++++--- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/modules/digibug/controllers/admin_digibug.php b/modules/digibug/controllers/admin_digibug.php index 86338f6b..8263fc83 100644 --- a/modules/digibug/controllers/admin_digibug.php +++ b/modules/digibug/controllers/admin_digibug.php @@ -1,4 +1,5 @@ - $form->__toString())); } } - + private function _get_form() { $form = new Forge("digibug/handler", "", "post", array("id" => "gDigibugForm")); diff --git a/modules/digibug/helpers/digibug_installer.php b/modules/digibug/helpers/digibug_installer.php index 90dab990..33b5107b 100644 --- a/modules/digibug/helpers/digibug_installer.php +++ b/modules/digibug/helpers/digibug_installer.php @@ -1,4 +1,5 @@ -label(t("Digibug Administration")) ->url(url::site("admin/digibug"))); } - + static function photo($menu, $theme) { } - + static function site($menu, $theme) { $item = $theme->item(); From 6b552fb07c8a162c9755895c132c6985c9dd1ddc Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Mon, 22 Jun 2009 06:27:31 -0700 Subject: [PATCH 05/14] Remove debugging output that was overlooked --- modules/gallery/helpers/gallery_quick.php | 3 --- 1 file changed, 3 deletions(-) diff --git a/modules/gallery/helpers/gallery_quick.php b/modules/gallery/helpers/gallery_quick.php index 19ed23dc..bb791c33 100644 --- a/modules/gallery/helpers/gallery_quick.php +++ b/modules/gallery/helpers/gallery_quick.php @@ -50,9 +50,6 @@ class gallery_quick_Core { } } - Kohana::log("error", ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); - Kohana::log("error", Kohana::debug($sorted_buttons)); - Kohana::log("error", "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<"); return $sorted_buttons; } From a8a366e3398ef15dcc67f70c25f7a34d99757e12 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Mon, 22 Jun 2009 21:17:37 -0700 Subject: [PATCH 06/14] Remove unsued element --- themes/default/views/album.html.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/themes/default/views/album.html.php b/themes/default/views/album.html.php index 7e6913df..799d94c1 100644 --- a/themes/default/views/album.html.php +++ b/themes/default/views/album.html.php @@ -19,7 +19,7 @@ thumb_img(array("class" => "gThumbnail")) ?> thumb_bottom($child) ?> -

title) ?>

+

title) ?>

From 58d5624e401f1c369cbbf913008775bc5a165570 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Mon, 22 Jun 2009 21:51:22 -0700 Subject: [PATCH 07/14] This commit moves a little further along the path: 1) moves the print button from the quick pane to thumb_bottom 2) Creates an entry into the proxy table --- modules/digibug/controllers/digibug.php | 64 +++++++++++++------ modules/digibug/css/digibug.css | 3 + modules/digibug/helpers/digibug.php | 57 +++++++++++++++++ modules/digibug/helpers/digibug_installer.php | 6 +- modules/digibug/helpers/digibug_theme.php | 23 +++++++ modules/digibug/js/digibug.js | 24 +++++++ .../digibug_quick.php => models/proxy.php} | 16 +---- 7 files changed, 155 insertions(+), 38 deletions(-) create mode 100644 modules/digibug/helpers/digibug.php create mode 100644 modules/digibug/js/digibug.js rename modules/digibug/{helpers/digibug_quick.php => models/proxy.php} (65%) diff --git a/modules/digibug/controllers/digibug.php b/modules/digibug/controllers/digibug.php index f2f3d6cd..f90b88e2 100644 --- a/modules/digibug/controllers/digibug.php +++ b/modules/digibug/controllers/digibug.php @@ -18,35 +18,57 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class Digibug_Controller extends Controller { - public function index() { - print $this->_get_form(); - } - - public function handler() { + public function print_photo($id) { access::verify_csrf(); - $form = $this->_get_form(); - if ($form->validate()) { - // @todo process the admin form + $item = ORM::factory("item", $id); - message::success(t("Digibug Processing Successfully")); + $proxy = ORM::factory("proxy"); + $proxy->uuid = digibug::uuid(); + $proxy->item_id = $item->id; + $proxy->save(); - print json_encode( - array("result" => "success")); + $url = url::abs_site("digibug/print_proxy/{$proxy->uuid}"); + if (module::get_var("digibug", "mode", "basic")) { + $company_id = module::get_var("digibug", "basic_company_id"); + $event_id = module::get_var("digibug", "basic_event_id"); } else { - print json_encode( - array("result" => "error", - "form" => $form->__toString())); + $company_id = module::get_var("digibug", "company_id"); + $event_id = module::get_var("digibug", "event_id"); } + $digibug_parms = array( + "digibug_api_version" => "100", + "company_id" => $company_id, + "event_id" => $event_id, + "cmd" => "adding", + "return_url" => url::abs_site($this->input->get("return")), + "num_images" => "1", + "image_1" => $url, + "thumb_1" => "$url/thumb", + "image_height_1" => $item->height, + "image_width_1" => $item->width, + "thumb_height_1" => $item->thumb_height, + "thumb_width_1" => $item->thumb_width, + "title" => $item->title); + + Kohana::log("error", Kohana::debug($digibug_parms)); + + message::success( + t("Photo '%title' was submitted for printing.", array("title" => $item->title))); + print json_encode(array("result" => "success", "reload" => 1)); } - private function _get_form() { - $form = new Forge("digibug/handler", "", "post", - array("id" => "gDigibugForm")); - $group = $form->group("group")->label(t("Digibug Handler")); - $group->input("text")->label(t("Text"))->rules("required"); - $group->submit("submit")->value(t("Submit")); + public function print_proxy($id, $thumb=null) { - return $form; + // We don't need to save the session for this request + Session::abort_save(); + + // Dump out the image + header("Content-Type: $item->mime_type"); + Kohana::close_buffers(false); + $fd = fopen($file, "rb"); + fpassthru($fd); + fclose($fd); } + } \ No newline at end of file diff --git a/modules/digibug/css/digibug.css b/modules/digibug/css/digibug.css index f5cd6717..a09e4551 100644 --- a/modules/digibug/css/digibug.css +++ b/modules/digibug/css/digibug.css @@ -84,5 +84,8 @@ width: 180px; } +.gDigibugPrintButton { + float: left; +} diff --git a/modules/digibug/helpers/digibug.php b/modules/digibug/helpers/digibug.php new file mode 100644 index 00000000..46c9d945 --- /dev/null +++ b/modules/digibug/helpers/digibug.php @@ -0,0 +1,57 @@ +> 4; + $time_hi_and_version = $time_hi_and_version | 0x4000; + + /** + * Set the two most significant bits (bits 6 and 7) of the + * clock_seq_hi_and_reserved to zero and one, respectively. + */ + $clock_seq_hi_and_reserved = hexdec ( $clock_seq_hi_and_reserved ); + $clock_seq_hi_and_reserved = $clock_seq_hi_and_reserved >> 2; + $clock_seq_hi_and_reserved = $clock_seq_hi_and_reserved | 0x8000; + + return sprintf ('%08s-%04s-%04x-%04x-%012s', + $time_low, $time_mid, $time_hi_and_version, $clock_seq_hi_and_reserved, $node); + } +} diff --git a/modules/digibug/helpers/digibug_installer.php b/modules/digibug/helpers/digibug_installer.php index 33b5107b..73645eb7 100644 --- a/modules/digibug/helpers/digibug_installer.php +++ b/modules/digibug/helpers/digibug_installer.php @@ -22,9 +22,9 @@ class digibug_installer { $version = module::get_version("digibug"); if ($version == 0) { Database::instance() - ->query("CREATE TABLE {print_proxy} ( + ->query("CREATE TABLE {proxies} ( `id` int(9) NOT NULL auto_increment, - `proxy_id` char(55) NOT NULL, + `uuid` char(32) NOT NULL, `item_id` int(9), PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); @@ -38,7 +38,7 @@ class digibug_installer { } static function uninstall() { - Database::instance()->query("DROP TABLE IF EXISTS {print_proxy}"); + Database::instance()->query("DROP TABLE IF EXISTS {proxys}"); module::delete("digibug"); } } diff --git a/modules/digibug/helpers/digibug_theme.php b/modules/digibug/helpers/digibug_theme.php index 06d656c8..2e44b115 100644 --- a/modules/digibug/helpers/digibug_theme.php +++ b/modules/digibug/helpers/digibug_theme.php @@ -18,8 +18,31 @@ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ class digibug_theme_Core { + static function head($theme) { + $head[] = ""; + $head[] = html::script("modules/digibug/js/digibug.js");; + return implode("\n", $head); + } + static function admin_head($theme) { return ""; } + + static function thumb_bottom($theme, $child) { + if ($theme->page_type() == "album" && $child->type == "photo") { + $csrf = access::csrf_token(); + $return = "album/{$child->parent()->id}"; + $href = url::site("digibug/print_photo/$child->id?csrf={$csrf}&return=$return"); + $title = t("Print photo with Digibug"); + return ""; + } + return ""; + } } diff --git a/modules/digibug/js/digibug.js b/modules/digibug/js/digibug.js new file mode 100644 index 00000000..f30678c0 --- /dev/null +++ b/modules/digibug/js/digibug.js @@ -0,0 +1,24 @@ +$(document).ready(function() { + $(".gDigibugPrintButton a").click(function(e) { + e.preventDefault(); + queue_print(e); + }); +}); + +function queue_print(e) { + var parent = e.currentTarget.parentNode; + $(parent).addClass("gLoadingLarge"); + $.ajax({ + type: "GET", + url: e.currentTarget.href, + dataType: "json", + success: function(data) { + $(parent).removeClass("gLoadingLarge"); + if (data.location) { + window.location = data.location; + } else if (data.reload) { + window.location.reload(); + } + } + }); +}; diff --git a/modules/digibug/helpers/digibug_quick.php b/modules/digibug/models/proxy.php similarity index 65% rename from modules/digibug/helpers/digibug_quick.php rename to modules/digibug/models/proxy.php index dce0c519..ce10c592 100644 --- a/modules/digibug/helpers/digibug_quick.php +++ b/modules/digibug/models/proxy.php @@ -17,18 +17,6 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ -class digibug_quick_Core { - static function buttons($item, $page_type) { - $elements["center"] = array(); - if (access::can("view", $item) && $item->type == "photo") { - $csrf = access::csrf_token(); - $elements["center"][] = (object)array( - "title" => t("Print photo with Digibug"), - "class" => "gButtonLink", - "icon" => "ui-icon-print", - "href" => url::site("digibug/print/$item->id?csrf=$csrf")); - } - - return $elements; - } +class Proxy_Model extends ORM { + protected $has_one = array("item"); } From 3824f2b52fed7bbbd3e1c91eafff9df21be6c765 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Tue, 23 Jun 2009 05:26:44 -0700 Subject: [PATCH 08/14] Extract the html for the Print button on the album page into a seperate view --- modules/digibug/views/digibug_album.html.php | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 modules/digibug/views/digibug_album.html.php diff --git a/modules/digibug/views/digibug_album.html.php b/modules/digibug/views/digibug_album.html.php new file mode 100644 index 00000000..0f1537e9 --- /dev/null +++ b/modules/digibug/views/digibug_album.html.php @@ -0,0 +1,8 @@ + + \ No newline at end of file From 8f443cef3e304c12f9e3555332880395051e7e3d Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Tue, 23 Jun 2009 06:06:33 -0700 Subject: [PATCH 09/14] This change implements the print_proxy method. This method allows a 1 time security bypass for the remote print processor to retrieve the fullsize image. --- modules/digibug/controllers/digibug.php | 25 ++++++++++++++++++++--- modules/digibug/helpers/digibug_theme.php | 15 +++++--------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/modules/digibug/controllers/digibug.php b/modules/digibug/controllers/digibug.php index f90b88e2..b0807aa5 100644 --- a/modules/digibug/controllers/digibug.php +++ b/modules/digibug/controllers/digibug.php @@ -51,24 +51,43 @@ class Digibug_Controller extends Controller { "thumb_width_1" => $item->thumb_width, "title" => $item->title); - Kohana::log("error", Kohana::debug($digibug_parms)); - message::success( t("Photo '%title' was submitted for printing.", array("title" => $item->title))); print json_encode(array("result" => "success", "reload" => 1)); } public function print_proxy($id, $thumb=null) { + $proxy = ORM::factory("proxy") + ->where("uuid", $id) + ->find(); + + if (!$proxy->loaded) { + Kohana::show_404(); + } + + if (!$proxy->item->loaded) { + Kohana::show_404(); + } + + $file = empty($thumb) ? $proxy->item->file_path() : $proxy->item->thumb_path(); + if (!file_exists($file)) { + kohana::show_404(); + } // We don't need to save the session for this request Session::abort_save(); // Dump out the image - header("Content-Type: $item->mime_type"); + header("Content-Type: $proxy->item->mime_type"); Kohana::close_buffers(false); $fd = fopen($file, "rb"); fpassthru($fd); fclose($fd); + + // If the request was for the image and not the thumb, then delete the proxy. + if (empty($thumb)) { + $proxy->delete(); + } } } \ No newline at end of file diff --git a/modules/digibug/helpers/digibug_theme.php b/modules/digibug/helpers/digibug_theme.php index 2e44b115..0fe2ce2e 100644 --- a/modules/digibug/helpers/digibug_theme.php +++ b/modules/digibug/helpers/digibug_theme.php @@ -32,16 +32,11 @@ class digibug_theme_Core { static function thumb_bottom($theme, $child) { if ($theme->page_type() == "album" && $child->type == "photo") { - $csrf = access::csrf_token(); - $return = "album/{$child->parent()->id}"; - $href = url::site("digibug/print_photo/$child->id?csrf={$csrf}&return=$return"); - $title = t("Print photo with Digibug"); - return ""; + $v = new View("digibug_album.html"); + $v->id = $child->id; + $v->return = "album/{$child->parent()->id}"; + $v->title = t("Print photo with Digibug"); + return $v->render(); } return ""; } From e44053f692109069977c097ecd24c45ab8e2f228 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Tue, 23 Jun 2009 21:42:25 -0700 Subject: [PATCH 10/14] Cache the page_type in pane() instead of looking it up twice. --- modules/gallery/controllers/quick.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/gallery/controllers/quick.php b/modules/gallery/controllers/quick.php index 6203728c..e89d9701 100644 --- a/modules/gallery/controllers/quick.php +++ b/modules/gallery/controllers/quick.php @@ -25,10 +25,10 @@ class Quick_Controller extends Controller { } $view = new View("quick_pane.html"); - $view->button_list = - gallery_quick::get_quick_buttons($item, Input::instance()->get("page_type")); + $page_type = Input::instance()->get("page_type"); + $view->button_list = gallery_quick::get_quick_buttons($item, $page_type); $view->item = $item; - $view->page_type = Input::instance()->get("page_type"); + $view->page_type = $page_type; print $view; } From 231ad4f32950f42c76c16ab453246bedea8abf2c Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Tue, 23 Jun 2009 22:13:28 -0700 Subject: [PATCH 11/14] This implements the Digibug printing. When a a print request is made the digibug shopping cart is opened in a new window. When the cart is emptied, the window is closed. Users can close the window by pressing the continue shopping button --- modules/digibug/controllers/digibug.php | 12 +++-- modules/digibug/helpers/digibug_installer.php | 2 +- modules/digibug/helpers/digibug_theme.php | 1 - modules/digibug/js/digibug.js | 52 +++++++++++++------ modules/digibug/views/digibug_album.html.php | 2 +- modules/digibug/views/digibug_form.html.php | 16 ++++++ 6 files changed, 62 insertions(+), 23 deletions(-) create mode 100644 modules/digibug/views/digibug_form.html.php diff --git a/modules/digibug/controllers/digibug.php b/modules/digibug/controllers/digibug.php index b0807aa5..609da875 100644 --- a/modules/digibug/controllers/digibug.php +++ b/modules/digibug/controllers/digibug.php @@ -36,12 +36,13 @@ class Digibug_Controller extends Controller { $company_id = module::get_var("digibug", "company_id"); $event_id = module::get_var("digibug", "event_id"); } - $digibug_parms = array( + $v = new View("digibug_form.html"); + $v->order_parms = array( "digibug_api_version" => "100", "company_id" => $company_id, "event_id" => $event_id, "cmd" => "adding", - "return_url" => url::abs_site($this->input->get("return")), + "return_url" => url::abs_site("digibug/close_window"), "num_images" => "1", "image_1" => $url, "thumb_1" => "$url/thumb", @@ -51,9 +52,7 @@ class Digibug_Controller extends Controller { "thumb_width_1" => $item->thumb_width, "title" => $item->title); - message::success( - t("Photo '%title' was submitted for printing.", array("title" => $item->title))); - print json_encode(array("result" => "success", "reload" => 1)); + print $v; } public function print_proxy($id, $thumb=null) { @@ -90,4 +89,7 @@ class Digibug_Controller extends Controller { } } + public function close_window() { + print ""; + } } \ No newline at end of file diff --git a/modules/digibug/helpers/digibug_installer.php b/modules/digibug/helpers/digibug_installer.php index 73645eb7..0476e2cc 100644 --- a/modules/digibug/helpers/digibug_installer.php +++ b/modules/digibug/helpers/digibug_installer.php @@ -24,7 +24,7 @@ class digibug_installer { Database::instance() ->query("CREATE TABLE {proxies} ( `id` int(9) NOT NULL auto_increment, - `uuid` char(32) NOT NULL, + `uuid` char(36) NOT NULL, `item_id` int(9), PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); diff --git a/modules/digibug/helpers/digibug_theme.php b/modules/digibug/helpers/digibug_theme.php index 0fe2ce2e..e52fcc7f 100644 --- a/modules/digibug/helpers/digibug_theme.php +++ b/modules/digibug/helpers/digibug_theme.php @@ -34,7 +34,6 @@ class digibug_theme_Core { if ($theme->page_type() == "album" && $child->type == "photo") { $v = new View("digibug_album.html"); $v->id = $child->id; - $v->return = "album/{$child->parent()->id}"; $v->title = t("Print photo with Digibug"); return $v->render(); } diff --git a/modules/digibug/js/digibug.js b/modules/digibug/js/digibug.js index f30678c0..e9e8933e 100644 --- a/modules/digibug/js/digibug.js +++ b/modules/digibug/js/digibug.js @@ -5,20 +5,42 @@ $(document).ready(function() { }); }); +function popUp(url, options) { + options = $.extend({ + /* default options */ + width: 400, + height: 400, + target: 'dbPopWin', + scrollbars: 'yes', + resizable: 'no', + menuBar: 'no', + addressBar: 'yes'}, options); + + /* center the window by default. */ + if (!options.winY) { + options.winY = screen.height / 2 - options.height / 2; + }; + if (!options.winX) { + options.winX = screen.width / 2 - options.width / 2; + }; + + open( + url, + options['target'], + 'width= ' + options.width + + ',height=' + options.height + + ',top=' + options.winY + + ',left=' + options.winX + + ',scrollbars=' + options.scrollbars + + ',resizable=' + options.resizable + + ',menubar=' + options.menuBar + + ',location=' + options.addressBar + ); + + return false; + +} + function queue_print(e) { - var parent = e.currentTarget.parentNode; - $(parent).addClass("gLoadingLarge"); - $.ajax({ - type: "GET", - url: e.currentTarget.href, - dataType: "json", - success: function(data) { - $(parent).removeClass("gLoadingLarge"); - if (data.location) { - window.location = data.location; - } else if (data.reload) { - window.location.reload(); - } - } - }); + return popUp(e.currentTarget.href, { width: 800, height: 600 } ); }; diff --git a/modules/digibug/views/digibug_album.html.php b/modules/digibug/views/digibug_album.html.php index 0f1537e9..c3337324 100644 --- a/modules/digibug/views/digibug_album.html.php +++ b/modules/digibug/views/digibug_album.html.php @@ -1,7 +1,7 @@
" + href="" title=""> diff --git a/modules/digibug/views/digibug_form.html.php b/modules/digibug/views/digibug_form.html.php new file mode 100644 index 00000000..c2cd889e --- /dev/null +++ b/modules/digibug/views/digibug_form.html.php @@ -0,0 +1,16 @@ + + + + + + + + + + + + \ No newline at end of file From 0062f8a24a62fe8f5abdffcea8c35382afa32244 Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Wed, 24 Jun 2009 05:47:58 -0700 Subject: [PATCH 12/14] Add a timestamp column to the proxies table. --- modules/digibug/helpers/digibug_installer.php | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/digibug/helpers/digibug_installer.php b/modules/digibug/helpers/digibug_installer.php index 0476e2cc..baff2075 100644 --- a/modules/digibug/helpers/digibug_installer.php +++ b/modules/digibug/helpers/digibug_installer.php @@ -23,9 +23,10 @@ class digibug_installer { if ($version == 0) { Database::instance() ->query("CREATE TABLE {proxies} ( - `id` int(9) NOT NULL auto_increment, + `id` int(9) NOT NULL AUTO_INCREMENT, `uuid` char(36) NOT NULL, - `item_id` int(9), + `request_date` TIMESTAMP NOT NULL DEFAULT current_timestamp, + `item_id` int(9) NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;"); @@ -38,7 +39,7 @@ class digibug_installer { } static function uninstall() { - Database::instance()->query("DROP TABLE IF EXISTS {proxys}"); + Database::instance()->query("DROP TABLE IF EXISTS {proxies}"); module::delete("digibug"); } } From 0735cfb30cc018387ae664374fc65bffdecf0907 Mon Sep 17 00:00:00 2001 From: Bharat Mediratta Date: Wed, 24 Jun 2009 11:06:36 -0700 Subject: [PATCH 13/14] "the the" -> "the" --- installer/web.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/installer/web.php b/installer/web.php index 61f26f7d..78784539 100644 --- a/installer/web.php +++ b/installer/web.php @@ -81,7 +81,7 @@ function oops($error) { function check_environment() { if (!function_exists("mysql_query") && !function_exists("mysqli_set_charset")) { - $errors[] = "Gallery 3 requires a MySQL database, but PHP doesn't have either the the MySQL or the MySQLi extension."; + $errors[] = "Gallery 3 requires a MySQL database, but PHP doesn't have either the MySQL or the MySQLi extension."; } if (!@preg_match("/^.$/u", utf8_encode("\xF1"))) { From 40e27e128e34601380079a02dca9346aed54c3bf Mon Sep 17 00:00:00 2001 From: Tim Almdal Date: Wed, 24 Jun 2009 13:11:53 -0700 Subject: [PATCH 14/14] Create a maintenance task that allows the administrator to remove any proxy requests that are still active after 10 days. Digibug requires that the image be available for 5 days, so we'll give them an extra 5 days. Also correct a few issues with the protocol. --- modules/digibug/controllers/digibug.php | 4 +- modules/digibug/helpers/digibug_task.php | 68 ++++++++++++++++++++++++ 2 files changed, 70 insertions(+), 2 deletions(-) create mode 100644 modules/digibug/helpers/digibug_task.php diff --git a/modules/digibug/controllers/digibug.php b/modules/digibug/controllers/digibug.php index 609da875..3a427149 100644 --- a/modules/digibug/controllers/digibug.php +++ b/modules/digibug/controllers/digibug.php @@ -41,7 +41,7 @@ class Digibug_Controller extends Controller { "digibug_api_version" => "100", "company_id" => $company_id, "event_id" => $event_id, - "cmd" => "adding", + "cmd" => "addimg", "return_url" => url::abs_site("digibug/close_window"), "num_images" => "1", "image_1" => $url, @@ -50,7 +50,7 @@ class Digibug_Controller extends Controller { "image_width_1" => $item->width, "thumb_height_1" => $item->thumb_height, "thumb_width_1" => $item->thumb_width, - "title" => $item->title); + "title_1" => $item->title); print $v; } diff --git a/modules/digibug/helpers/digibug_task.php b/modules/digibug/helpers/digibug_task.php new file mode 100644 index 00000000..98f79731 --- /dev/null +++ b/modules/digibug/helpers/digibug_task.php @@ -0,0 +1,68 @@ +query( + "SELECT count(*) as print_requests + FROM {proxies} + WHERE `request_date` <= (CURDATE() - INTERVAL 10 DAY)")->current()->print_requests; + + return array(Task_Definition::factory() + ->callback("digibug_task::remove_expired") + ->name(t("Remove Digibug print requests")) + ->description($expired_request_count + ? t2("1 Digibug print request has expired", + "%count Digibug print requests have expired", + $expired_request_count) + : t("All print requests are current")) + ->severity($expired_request_count ? log::WARNING : log::SUCCESS)); + } + + static function remove_expired($task) { + $completed = $task->get("completed", 0); + $expired = ORM::factory("proxy") + ->where("request_date <= (CURDATE() - INTERVAL 10 DAY)") + ->find_all(); + $remaining = $expired->count(); + + $start = microtime(true); + foreach ($expired as $proxy) { + if (microtime(true) - $start > 1.5) { + break; + } + $proxy->delete(); + $completed++; + $remaining--; + } + + if ($completed + $remaining > 0) { + $task->percent_complete = (int)(100 * $completed / ($completed + $remaining)); + } else { + $task->percent_complete = 100; + } + + $task->set("completed", $completed); + if ($remaining == 0) { + $task->done = true; + $task->state = "success"; + } + } +}