From d3fb010a8fd2862ed6619b9cbdefb22aa9bace9c Mon Sep 17 00:00:00 2001 From: "Michael D. Reiley" Date: Tue, 20 Sep 2011 12:49:07 -0700 Subject: [PATCH] New "Categories" theme, modifications for support. --- inc/config.php | 11 ++ inc/functions.php | 10 ++ templates/themes/categories/info.php | 30 ++++++ templates/themes/categories/theme.php | 144 ++++++++++++++++++++++++++ templates/themes/categories/thumb.png | Bin 0 -> 8442 bytes 5 files changed, 195 insertions(+) create mode 100644 templates/themes/categories/info.php create mode 100644 templates/themes/categories/theme.php create mode 100644 templates/themes/categories/thumb.png diff --git a/inc/config.php b/inc/config.php index 0a8b982d..1b36f210 100644 --- a/inc/config.php +++ b/inc/config.php @@ -710,6 +710,17 @@ // 'status' => 'http://status.example.org/' //); + // Categories + // Required for the Categories theme. Array of the names of board groups in order, from $config['boards']. + //$config['categories'] = Array('groupname', 'name', 'anothername', 'kangaroos'); + + // Custom_categories + // Optional for the Categories theme. Array of name => (title, url) groups for categories with non-board links. + //$config['custom_categories'] = Array( 'Links' => + // Array('Tinyboard' => 'http://tinyboard.org', + // 'AnotherName' => 'url') + //); + // Set custom locations for stylesheets, scripts and maybe a banner. // This can be good for load balancing across multiple servers or hostnames. // $config['url_stylesheet'] = 'http://static.example.org/style.css'; // main/base stylesheet diff --git a/inc/functions.php b/inc/functions.php index a5c8a518..7ba2278b 100644 --- a/inc/functions.php +++ b/inc/functions.php @@ -228,6 +228,16 @@ } else return false; } + function boardTitle($uri) { + $query = prepare("SELECT `title` FROM `boards` WHERE `uri` = :uri LIMIT 1"); + $query->bindValue(':uri', $uri); + $query->execute() or error(db_error($query)); + + if($title = $query->fetch()) { + return $title['title']; + } else return false; + } + function purge($uri) { global $config, $debug; if(preg_match($config['url_match'], $config['root'])) { diff --git a/templates/themes/categories/info.php b/templates/themes/categories/info.php new file mode 100644 index 00000000..d0cedb13 --- /dev/null +++ b/templates/themes/categories/info.php @@ -0,0 +1,30 @@ + 'Title', + 'name' => 'title', + 'type' => 'text' + ); + + $theme['config'][] = Array( + 'title' => 'Slogan', + 'name' => 'subtitle', + 'type' => 'text' + ); + + // Unique function name for building everything + $theme['build_function'] = 'categories_build'; +?> diff --git a/templates/themes/categories/theme.php b/templates/themes/categories/theme.php new file mode 100644 index 00000000..c126f8da --- /dev/null +++ b/templates/themes/categories/theme.php @@ -0,0 +1,144 @@ +' + . '' + . '' + . '' + . '' . $settings['title'] . '' + . '' + // Sidebar + . '' + // Main + . '' + // Finish page + . ''; + } + + // Build news page + public static function news($settings) { + global $config; + + // HTML5 + $body = '' + . '' + . '' + . 'News' + . ''; + + $body .= '

' . $settings['title'] . '

' + . '
' . ($settings['subtitle'] ? utf8tohtml($settings['subtitle']) : '') . '
'; + + $query = query("SELECT * FROM `news` ORDER BY `time` DESC") or error(db_error()); + if($query->rowCount() == 0) { + $body .= '

(No news to show.)

'; + } else { + // List news + while($news = $query->fetch()) { + $body .= '
' . + '

' . + ($news['subject'] ? + $news['subject'] + : + 'no subject' + ) . + ' — by ' . + $news['name'] . + ' at ' . + date($config['post_date'], $news['time']) . + '

' . $news['body'] . '

'; + } + } + + // Finish page + $body .= ''; + + return $body; + } + + // Build sidebar + public static function sidebar($settings) { + global $config, $board; + + $body = '' + . '' + . '' + . '' + . '' + . '' . $settings['title'] . '' + . ''; + + $body .= '
' . $settings['title'] . '
'; + + for($cat = 0; $cat < count($config['categories']); $cat++) { + $body .= '
' . $config['categories'][$cat] . '
'; + } + + foreach($config['custom_categories'] as $name => &$group) { + $body .= '
' . $name . '
'; + } + + // Finish page + $body .= ''; + + return $body; + } + }; + +?> diff --git a/templates/themes/categories/thumb.png b/templates/themes/categories/thumb.png new file mode 100644 index 0000000000000000000000000000000000000000..4326ee35b6487df7a7b4da57bfc1c01b6620eec8 GIT binary patch literal 8442 zcmeAS@N?(olHy`uVBq!ia0y~yU}ykg4mJh`hQoG=rx_R+7>k44ofy`glX=O&z`&N| z?e4!MP|ku_QG`p**uBL&4qCHz2%`Pn>~4fx*+oF{I+w+qs!JDK|^+ z*MHx)Htua`%0wNr>1mr!-kTn|B+_J(+ood^We;we%es;GiL;P|hn<8U!|mY*Ul zd_wFUyb_J}M^1Dd`Ji-knojP|Z|5q)`sL|j;b4wN zhAm?9KhCyZc;htv!j5&_@2fc+-v@t5f4G>X;aY;n#vpp=>vboiNYAZn1U6Yev_86tHF3d2A-SVz zEOK-H?{GfOd?8~kgRhdDdp7&hE7QbYoNm{w%4U4`ua2FerJ=-clKhk%o{i!eN!t!| zde-<0S9Ja9@Jv-rsMr;fRCAMc!al1D+nqR&}^%{pZNyYm-+o2?a^ z>Cqst!fo$z-}_I$=SnYPkbTL1?Dn0QrZz>5wJvjNZQMjM*w|Fx`i19av$pA;Sf;u( zsAWojleMqWyG2Tqw_dH>wDS;imMh1_?~MDVo8G;X@NoWr}2epQBM#2#M9B`0~MLc9b8 z6{a3AsPI3M`-`Vc$5rQw#@>bsjak1LD(*9Um{lRID7^ny_Lcu1R?ql2;hgpL!t?P9 zKVOr+v3wb)_&cS^%o$e??l0#re7rj(FGl&Zu>H-_3uUtySR~j&v;y-Nnbe(+(z(xH zek0TOjA;LoE#{3%OWyf@$$Pr_EYmNw2eq>q4lB&6ZoXRo|1?W}opACit#e;QUhn_* zp5xl>8|rPIcEzn%|9_E}{Iz|*)90o67b;%Pp5a`1C;gw;xq=*T>DdYfIY&3gZ`k&8 z*Ax!L3tkJ$)|NGjyxIA!;AM#j(@xd}?ALbP_?{Ji@ACdGgJb6kABES=y|n+=@ru*F zS@A!)!fqXsn19sH*6q)!P!6S}ep}AQelF!Vo&5`?Qzhi?%CdJ%aht)l#f{_OsYgt` z+x)W@9Jt{jCR)0leXiQlqVC3;UlUg@NbJxJU0?1~X8!NOcgB6{ya~H+Fmr0{|M{9l zlzFv5hhYKJA*)kb38LI5D%h0gFZ{SwfAWtz&ky<~^!F#KJl7_%RhU=k|h7-=)EZTl6_Q9g9zth~e zL_%?LrCZ&{=>hZHKNZKjNOi4{zkNn+{OYi80SZswWh{QN zx#7F#Uy--l@2Qmi(`iw=RvuHEmIxxXtxSMnZ3&&`-r>s+@lsrbz^2^NF}TB z%tJDo5B8SHRzG8Ms^)l@z_n1&Nw`hUo7>!Oiu(I~$Lp^DHu-QdbeUS+PcDUyc(E5A z4?Q-D-W6?lr}|BR>Hj<5GZ!awI4hV{g;u208&=Z)bbnDP#Iw{QF@>&kMzD@Atdz^)j*^E__6wz-qS zA}7(dajM0os{S^?FP9ItGc(+k>{4e5pI@@0T>U_i$~Mle%a#TA?fB)?v_k9>AIn@X zk4k4@*I83rKP%!W3t0{uBoHQ?s_`9(SH_;8an|zGuq4_Yyoin$}JJ zxxv9tBuhuVZ?S_%^6h)C@5&u;{K>FydF97)+eHBn+GS-6x@ zaLKL{j8npnUuQSaov|=qVc3QG_4Mc&!{ zS*hG>wN2Tx$guGLZC&XGhE;5WVTN;=ww{WWv36Shu&kc)2y}GiBFPe@db+H=(fFGGV|T0%^EIJVhg^7 z1l2Z3IYbpa)ZD$C&$KP`ofoV3O;gU>1p?LU-kvwJiC2Ewm-Ap=3oeerh^m_#u*BnLlfdk>V$stKm(Ok3Ro2~jN5#{;SAI)G$>38hM=s;(jJK&<(>=ucWDm!=YIq{*B`_7)vN*jL&)D^d;{4<$b z);mLX@lCzOOPu%aJeK@?exe>vr&E7QQN#9ozl`=xOwLLXy51QWwYO9L*vgQsA4iRM z_)Xe${f_fu`vrwNx8Jzv#9{ST&CtA2plSQQ-)!HXg-K{GiCk$Su;2An z%B|s7Nd3+@ZThnrv+Vi>Cipx*$@_~X(7|r{Q4zI$VskXoc9iE&4Y2O%JG!xK&6{>5 zpEv)mScffnbJa+$MS{)8=Qe-swad@z#FjdJQBF~BwYaWb{C~mLD-V?S{%3#3ToSm$ zR#@xH$!EnD(>kZzl{%oo@sauHjUOCmtC~GB|F|`OabR0pYJNvsRjcb;=g)V^ua6%5 z#juR^{QtKW)4t}tPyerQjPb~{#cHY7xpS{-v82r@QM&f^j6~y}Os3^Gif}sj1%_3EMpjAFSQ<_MXa27YoDL#n1iT zb1~=oO$+PVxzqL8^XWgneD?nyv~QM1(3RJ`j|$s0g7(fi@UHs(IdPc;$Bq|nddt(7 z|2S;_qj=I!>os@g9-k|d{P5Z87XeATB=`NEJ3WIX(#Wm1_0#J;_wowsRL(w`dcNT8 z>HP=SPCD87QCQ`znbL=dDDflgv2P4iVrMLfTN$+TTQ1MtWl{VUKVRz$rm+1~xBvUN zU6f(c+pfELBBwU$?wMNp?{xkjzWKkdq|TB~os%-B_4aBLr}^jq|KQ(T^4*Nvbn^6n zkEHi}3tw+o`c8)Vu;i_&TDdWGPg?uGJ1CTi)Ri1wyL(N8g@n|CYWX~y)589CZpu?c z*gyX$Yub2_=l}cd|JdjMe&jE>&1{44VTr)G43jTp8&*Fv(ckyQH>i1X&9gh4R$fNs zk9F0$ozKM0JJ`oLO>A1>Wab{e^p4{)R&&KRMli{`-HD7*Pj(cyq{q_=k$fO%rzhG z?N$(1)h^Y8h$+5S8C-uK6<;@ivj{yXVkS9JZnzinOS_4CP#h52jW zPrkgIuhPiljo+CTi6g>%)1;4!FqzA#f3Tg^%he^Zw%17gn48A*Y#+bgg{C4?oHSiu zU17?c7PaKU7jOP=R~f4Ef6S|~ zI`-%j+v}|zEh|^7UAsuPz4N7KQReibwN88Q9g*}2)|+bZ=%uduhl42xcDr-%7sVfV zl+-dIu>RWj%M8(1d>mAGrWi<`jB0UgnSAD(({@JbrxOe=q_73W7B6HqbhbBHvHANw z{uNJ|FEJcya5?wl{Ex#<2ct#&o%Lofc>HroFkh64grr~j_I}-S#jme%iO<{TbxLG+ z7Q5C|tCb;1;;C1vcK`Z*@I}AHg{BF4OE%j-{Jp7Ru6HoU!9z8jNrvZF=igftxT>Ih z>pA|~Z-uwMs->qN|8Z;jzn&aB&nxc|j{7Xy=AUP9{Pg-ePd=Ryn0n!<~OVEb)XSneYWzLf`Ug1FikmYPgt+*l!VeXGQ| z=N->4ExD|@WQxYxlO6BgpY>V3E#tvD&ifxXyUFPArdaFTogORIz%FEbG-=-Zn&)hN zxtq3ZYt+V_0jl zHtqhMH;Wm|Hk+(3@@mQfwOIOE~d)up`I5zrU zc)nQp{^dVE-(MBH!J)vhcWwJ?Hf{56>#N`Qe*OD`F=6_0ogKB+6Sv752FbXzJiK=8 zP78ktq;zbaDPW@qDO(7 zq(|zFNWNv|4U10aeUaO?`R8tH)0piOo-KTEKQMROOs#wQ{7;{4eHZ#S*Io>pqF&sz0~Y>C$XbK&#;hU6I>i5Ie_Z+siFJ~GTjpz2229EF_ZnPwc! z&a<{yi6;3?`ug=Y%Z?Vuxh`i8ZrS9LINK#_M%7cfsADIWe%fNio3v47>nYheM_3ld zD{|a^a@jd#mTu8ZrbXdN{}(bZxb;DkZ|Tpy|G!2bVLv7*)3q@sEBK6riPG%zVr*4w z{@+QK=8ZRy2-v`24^jTABS_AtK6^pd-}+vWQ&j8clQ6g@7ed)fH|lk;LP3n zR-b<&=J$UJnNCeB+Hm67ujq)4i8X@D_x!SQ-s#9w-EnjC{HOf?--Q2s^t^tad43)D z;jTpQ-p6SMOFcK=eemU_|E3L9lS7ow_e$^Ye=IV?;;TuoTj$qXY)fC+cxw0ct@?BJ z?Q5IgPyEXm%LEusq&?DE7dB&W38%G~bHpT{u%P((bdBkjoBB$YnDk9`n*8Xv{eSO> zusM%*u+KYw;KJiQA6^<)cqQG=Omkm$@XVv~X@*-5uRQ6$U~5v*qhOu2`T;Ul{(9Dp z$*P%UtLB{OpXmGS=8AO*NgsYJo$sJMee?2pM>jmGn9J6eD&#${VL{*H6v;Ebk7uZz zdy+2THLzqy*&zBJ-(V9 z%i>+s;jmzfTbJjQE(_b=EP*10MbGYty}oE$&m^=!G}u_Y?4|lzr)6n+U+1N6Nly}; zy!`yvG8tJ0hAnN6GN#@BzUs``vzs^W=$Wc5u$gsL;L=-RHvirn*IY7J`Rcus2CV06 zuBkq&(_e7c|7(=|pg2^H0)?YIz zjlL(6x_mZY`lnpla(k`&uj9Oj6}tGm*En3ry0$yy?3NF=bq#cNE;EPh>28rtWXK7c>Gt(7=gY`#2R0lDTk(1ERtBlVJ|B(*`!8;76q%(EVzJFt z&-%oH3mnrlCFf^8wlce9kh%4?MPG9m*I|Phvu3d@-1tV~dD{60yVTqxeHzMwKTiE0 z`C88Q(7TE+Wt)$)zkF1E({Ammdwton9Zm4fA_ z@FoZQE&P`^PEd}!uxaW3NtVsa=XD3(?TDDctvSyma<}}2P8H+LYTNT#G)!i0SrQfQ z<9mC}J?sI`}H6B~|;^CVqxJ(-vL6 z_CxT<TpfT|a2P z;AW1TMX{NVW7>^Z$Mxmd8r)nzPOrb?{M?P-bCq1V zTd-38lFq8#7kHD_b>|-E+oO4;?)>HHwG0W?P1@&ooOr)5CvK1XZv-J9c>O9Wdg0biF%i`nXZXPITW6Z^ywlr0L(W%7^We>H<2^r*>DJgMWPLMe>OMnKdg0}afT-1h60%BfD(1}X`fgQ|As{w= z-MoWa=IWOJJ~MOjivY!*I=+7wE+3d1l3Ac|^wsU}CsTu`oC>{DGV4{<%$vr+SIq7$ zxz$jS846si62F_u2}!7zJNjDK=$?w6YDuv#?9Ae6&_!9_gklW z&XikL2R7*+zr@1u)NAg{;Kg@lL?1R2aa`_f^U$a~y>oKk+u&$?9wH9*y%DnoRhk>y|q9w{`PPZUi*PRCpj!SkHeKpDEUixo^ zY`OY{?=^DOZ+Jd;i*_BBT#{IF`@m9R4@Hi{42KPN^NRi|`onM`%Oo-`>gl(+p>e-n z$rpay+5hp={Mz=@;prc(qx_{RG zcgX&*=iKi)<@>J>^yNLOwe(^5Vep&z%aXg9hCw>txSRN;8SKvdW3Zm>!Nuq(!01?i zgk{_e}$c9LsW3;bIBKj89#kg!SfH_SN8 zeJfir@0`MPktyaPQBB#0FU5Fl{+eMcxI{ol@6Ph5w+WGIkA;K(I!$uci0-oEF$~96tbJ)rFKb%ZORpIgnxf$zaVwwOW%?6%2rK* z42d_s|L$jD`1XzchRy5a2D?}n^j}g>u;*-gXZx$DgK@*lx$kqnTv-zu8Mn6J{V&*{494)pzFa5~_&v@`kkoH??G^S5}Y1p6Elp0TVmxm=;kK&ClstE-mi zds*xIZzZmMtjW3kuK!Ko;zsMGaVv$&b+1_qZd({25uucnS2y*~1BLAD)Ge8x&S|gz z{8IiekNLjOQeO`&GMI8~g4*N9%6})?W;HIDn`CYFa?0tyKTWM<<=5X`cKKVzb+Z-b zQG2T1=B~QRHq%FDy>QXzU%9isie0Um?D5t2(8TKuc}53cxy^mpXtAr@B4ot^13OM9 z1Cu$&^S2q?Q8B;2&$BQ~DpTTxg3?2)zk#-|7&5}MJu-{FZj9v7TycH&lAz8y!5922 z3@lrsawmCC*ROw?D#Z81SdV-AyN~Cxj_m)_y1)7UMfZK)W$|)s47@)dGC4C#dTnhu z7{jzyIZbbla_EW&?O)XY@0i`N;O?_~o1T5S!qJxas9J7Wa&m-Pw)g8N?ra=Uavzs8 zFSxC;>N01?(KU6aXFO(T@Z0UVGw|pFhs9CHjADdZb>=+}j*5Bq?2%TXroxK{u4*@H zCRJ~LW>NZ4X!)^Ef8RcKpUbAU*|J0;AWr*YUiFk~ueU_&>ZrRdSQx3L$U8Y|saNIR zCUKS>h10iQ{kpHzf=}vzfv(X`o*)jB2_B9&zE!E$dgL5;ZDl-J)2Jd)srWHvQpl~B z>;FAIz+^UUnxqC_as5sovphwe*`H2Xov(Z4*^+YKxPj%a&7nZ+kX`vq-x3+ij86VJ zd%ML;xK+{1+i$MbMcco-u1kiz{~40?nPKg}C-Rl@2YQd66lW{s5xAtl#k5D^Ru;>h z^9*vy3>myLOJwAmxu5$@_EeXU))pvE<}gWI@oV)T3uXt7h-h77%fKf~?SBR5-O&>) zomKPrX|~SVwVR?=eRY4kBfDYYLz&l4xtLoWKQU`wyJqH*9&EBox2JC6{g2lfu2!{2 zEp429N}-cut81cx`|5{+<@@iSOW5Tv%5ThjMd}h~yGBp)%t-+^pRi9-nXLDDd)~)$ zXDiS7iFZ!$xM(X9<$Bkm;ip{g<1Lq_T)WnBsA0u^-xmc;4jeZ$uAfMoyyx$?*r=^) z-@SP4zMee&D8Y8(dqaG=1z0R9b3qp`xz*uzTiSH>GzIe0FV-%Dt64zr;=9 z*KLOWPW}s@uiWlcyI=ED>d;nCuA`TVI)g6<$5bcxaf_=7CeGd(H214l`~LsN^N+vC zXR%e&VaWK+b-Hkaaz|4`+x^6Z9UYn0XZ*wsm%7Y0bUQwIiIMM~Y3_Smg|}>CU|{eB ztp(UG{~&|efn(>^>Ge59J&$f^I5|kPXe>3*mA;|#?MBSoyX&{*+HK))NW8FK$?gq< u0MoVWVJ}PUe$2~r;+S