From d8e2470ce7b7d54983a499474b197b16fefc8c74 Mon Sep 17 00:00:00 2001 From: x2003bruneau Date: Thu, 13 Jul 2006 15:39:06 +0000 Subject: [PATCH] Use icons to represent actions git-svn-id: svn+ssh://murphy/home/svn/banana/trunk@94 9869982d-c50d-0410-be91-f2a2ec7c7c7b --- banana/misc.inc.php | 92 ++++++++++++++++++----------------- banana/post.inc.php | 56 ++++++++++++++++++--- banana/spool.inc.php | 134 +++++++++++++++++++++++++++++++++++++++++++++------ css/style.css | 6 +++ img/cancel.gif | Bin 0 -> 1069 bytes img/next.gif | Bin 0 -> 1034 bytes img/next_thread.gif | Bin 0 -> 1081 bytes img/post.gif | Bin 0 -> 1339 bytes img/prev.gif | Bin 0 -> 1034 bytes img/prev_thread.gif | Bin 0 -> 1083 bytes img/reply.gif | Bin 0 -> 1342 bytes 11 files changed, 221 insertions(+), 67 deletions(-) create mode 100644 img/cancel.gif create mode 100644 img/next.gif create mode 100644 img/next_thread.gif create mode 100644 img/post.gif create mode 100644 img/prev.gif create mode 100644 img/prev_thread.gif create mode 100644 img/reply.gif diff --git a/banana/misc.inc.php b/banana/misc.inc.php index d956a0f..9a8307f 100644 --- a/banana/misc.inc.php +++ b/banana/misc.inc.php @@ -83,7 +83,7 @@ function makeLink($params) /** Format a link to be use in a link * @ref makeLink */ -function makeHREF($params, $text = null, $popup = null) +function makeHREF($params, $text = null, $popup = null, $class = null) { $link = makeLink($params); if (is_null($text)) { @@ -92,11 +92,14 @@ function makeHREF($params, $text = null, $popup = null) if (!is_null($popup)) { $popup = ' title="' . $popup . '"'; } + if (!is_null($class)) { + $class = ' class="' . $class . '"'; + } $target = null; if (isset($params['action']) && $params['action'] == 'view') { $target = ' target="_blank"'; } - return '' . $text . ''; + return '' . $text . ''; } /** Format tree images links @@ -122,12 +125,22 @@ function makeImg($img, $alt, $height = null, $width = null) $proto = empty($_SERVER['HTTPS']) ? 'http://' : 'https://'; $host = $_SERVER['HTTP_HOST']; - $file = dirname($_SERVER['PHP_SELF']) . '/img/' . $img . '.gif'; + $file = dirname($_SERVER['PHP_SELF']) . '/img/' . $img; $url = $proto . $host . $file; return '' . $alt . ''; } +/** Make a link using an image + */ +function makeImgLink($params, $img, $alt, $height = null, $width = null, $class = null) +{ + return makeHREF($params, + makeImg($img, ' [' . $alt . ']', $height, $width), + $alt, + $class); +} + /******************************************************************************** * HTML STUFF * Taken from php.net @@ -365,53 +378,44 @@ function formatFrom($text) { return preg_replace("/\\\(\(|\))/","\\1",$result); } -function displayshortcuts($first = -1) { +function displayShortcuts($first = -1) +{ global $banana; extract($banana->state); - + $res = '
'; - $res .= '[' . makeHREF(Array(), _b_('Liste des forums')) . '] '; - if (is_null($group)) { - return $res.'[' . makeHREF(Array('subscribe' => 1), _b_('Abonnements')) . ']
'; + $res .= ' Profil : ' . makeHREF(Array('subscribe' => 1), _b_('Abonnements')); + if (function_exists('hook_shortcuts') && $cstm = hook_shortcuts()) { + $res .= ' . ' . $cstm; } - - $res .= '[' . makeHREF(Array('group' => $group), $group) . '] '; - - if (is_null($artid)) { - $res .= '[' . makeHREF(Array('group' => $group, - 'action' => 'new'), - _b_('Nouveau message')) - . '] '; - if (sizeof($banana->spool->overview)>$banana->tmax) { - $res .= '
Page : '; - $n = intval(log(count($banana->spool->overview), 10))+1; - $i = 1; - for ($ndx = 1 ; $ndx <= sizeof($banana->spool->overview) ; $ndx += $banana->tmax) { - if ($first==$ndx) { - $fmt = $i . ' '; - } else { - $fmt = makeHREF(Array('group' => $group, - 'first' => $ndx), - $i, - '%0' . $n . 'u-%0' . $n . 'u') - . ' '; + $res .= '
'; + + $res .= 'Navigation : ' + . (is_null($group) ? 'Les forums' : makeHREF(Array(), _b_('Les forums'))); + + if (!is_null($group)) { + $res .= ' > ' . makeHREF(Array('group' => $group), $group); + if (is_null($artid)) { + if (sizeof($banana->spool->overview)>$banana->tmax) { + $res .= ' > Pages
'; + $n = intval(log(count($banana->spool->overview), 10))+1; + $i = 1; + for ($ndx = 1 ; $ndx <= sizeof($banana->spool->overview) ; $ndx += $banana->tmax) { + if ($first==$ndx) { + $fmt = $i . ' '; + } else { + $fmt = makeHREF(Array('group' => $group, + 'first' => $ndx), + $i, + '%0' . $n . 'u-%0' . $n . 'u') + . ' '; + } + $i++; + $res .= sprintf($fmt, $ndx, min($ndx+$banana->tmax-1,sizeof($banana->spool->overview))); } - $i++; - $res .= sprintf($fmt, $ndx, min($ndx+$banana->tmax-1,sizeof($banana->spool->overview))); } - } - } else { - $res .= '[' . makeHREF(Array('group' => $group, - 'artid' => $artid, - 'action' => 'new'), - _b_('Répondre')) - . '] '; - if ($banana->post && $banana->post->checkcancel()) { - $res .= '[' . makeHREF(Array('group' => $group, - 'artid' => $artid, - 'action' => 'cancel'), - _b_('Annuler ce message')) - . '] '; + } else { + $res .= ' > Message'; } } return $res.''; diff --git a/banana/post.inc.php b/banana/post.inc.php index e02c500..93e36a6 100644 --- a/banana/post.inc.php +++ b/banana/post.inc.php @@ -315,7 +315,32 @@ class BananaPost if (function_exists('hook_checkcancel')) { return hook_checkcancel($this->headers); } - return ($this->headers['from'] == $_SESSION['name']." <".$_SESSION['mail'].">"); + if (!isset($_SESSION)) { + return false; + } + return ($this->headers['from'] == $_SESSION['name'] . ' <' . $_SESSION['mail']. '>'); + } + + /** Make some links to browse the current newsgroup + */ + function _browser() + { + global $banana; + $ret = '
'; + $actions = Array('prevThread' => Array('prev_thread', 'Discussion précédente'), + 'prevPost' => Array('prev', 'Article précédent'), + 'nextPost' => Array('next', 'Article suivant'), + 'nextThread' => Array('next_thread', 'Discussion suivante')); + foreach ($actions as $method=>$params) { + $id = $banana->spool->$method($this->id); + if (!is_null($id)) { + $ret .= makeImgLink(Array('group' => $banana->state['group'], + 'artid' => $id), + $params[0] . '.gif', + $params[1]); + } + } + return $ret . '
'; } /** convert message to html @@ -352,9 +377,28 @@ class BananaPost $res = ''; $res .= ''; - $res .= '
' - . formatdisplayheader('subject', $this->headers['subject']) - . '
'; + . $this->_browser() + . '
' + . makeImgLink(Array('group' => $this->group, + 'action' => 'new'), + 'post.gif', + 'Nouveau message') + . makeImgLink(Array('group' => $banana->state['group'], + 'artid' => $this->id, + 'action' => 'new'), + 'reply.gif', + 'Répondre'); + if ($this->checkCancel()) { + $res .= makeImgLink(Array('group' => $banana->state['group'], + 'artid' => $this->id, + 'action' => 'cancel'), + 'cancel.gif', + 'Annuler'); + } + $res .= '
' + . formatDisplayHeader('subject', $this->headers['subject']) + . '' + . '
'; foreach ($banana->show_hdr as $hdr) { if (isset($this->headers[$hdr])) { @@ -428,10 +472,6 @@ class BananaPost $res .= ''; } - $res .= ''; $ndx = $banana->spool->getndx($this->id); $res .= '
' . _b_('Apercu de ') - . makeHREF(Array('group' => $banana->state['group']), - $banana->state['group']) - . '
' . $banana->spool->to_html($ndx-$banana->tbefore, $ndx+$banana->tafter, $ndx) diff --git a/banana/spool.inc.php b/banana/spool.inc.php index 705f4b0..94897b9 100644 --- a/banana/spool.inc.php +++ b/banana/spool.inc.php @@ -317,16 +317,16 @@ class BananaSpool function _to_html($_id, $_index, $_first=0, $_last=0, $_ref="", $_pfx_node="", $_pfx_end="", $_head=true) { - $spfx_f = makeImg('k1', 'o', 21, 9); - $spfx_n = makeImg('k2', '*', 21, 9); - $spfx_Tnd = makeImg('T-direct', '+', 21, 12); - $spfx_Lnd = makeImg('L-direct', '`', 21, 12); - $spfx_snd = makeImg('s-direct', '-', 21, 5); - $spfx_T = makeImg('T', '+', 21, 12); - $spfx_L = makeImg('L', '`', 21, 12); - $spfx_s = makeImg('s', '-', 21, 5); - $spfx_e = makeImg('e', ' ', 21, 12); - $spfx_I = makeImg('I', '|', 21, 12); + $spfx_f = makeImg('k1.gif', 'o', 21, 9); + $spfx_n = makeImg('k2.gif', '*', 21, 9); + $spfx_Tnd = makeImg('T-direct.gif', '+', 21, 12); + $spfx_Lnd = makeImg('L-direct.gif', '`', 21, 12); + $spfx_snd = makeImg('s-direct.gif', '-', 21, 5); + $spfx_T = makeImg('T.gif', '+', 21, 12); + $spfx_L = makeImg('L.gif', '`', 21, 12); + $spfx_s = makeImg('s.gif', '-', 21, 5); + $spfx_e = makeImg('e.gif', ' ', 21, 12); + $spfx_I = makeImg('I.gif', '|', 21, 12); if ($_index + $this->overview[$_id]->desc < $_first || $_index > $_last) { return; @@ -397,10 +397,22 @@ class BananaSpool { $res = ''; + $new = '
' + . makeImgLink(Array('group' => $this->group, + 'action' => 'new'), + 'post.gif', + 'Nouveau message'); + $new .= '
'; + if (is_null($_ref)) { $res .= ''; $res .= ''; - $res .= ''; + $res .= ''; + } else { + $res .= ''; } $index = 1; @@ -420,10 +432,6 @@ class BananaSpool . $banana->groups->to_html() . ''; } - $res .= ''; - return $res .= '
'._b_('Date').''._b_('Sujet').''._b_('Auteur').'
'. $new . _b_('Auteur').'
' . _b_('Aperçu de ') + . makeHREF(Array('group' => $this->group), + $this->group) + . '
' - . makeHREF(Array('subscribe' => 1), _b_('Gérer mes abonnements')) - . '
'; } @@ -457,6 +465,102 @@ class BananaSpool } return $ndx; } + + /** Return root message of the given thread + * @param id INTEGER id of a message + */ + function root($id) + { + $id_cur = $id; + while (true) { + $id_parent = $this->overview[$id_cur]->parent; + if (is_null($id_parent)) break; + $id_cur = $id_parent; + } + return $id_cur; + } + + /** Returns previous thread root index + * @param id INTEGER message number + */ + function prevThread($id) + { + $root = $this->root($id); + $last = null; + foreach ($this->roots as $i) { + if ($i == $root) { + return $last; + } + $last = $i; + } + return $last; + } + + /** Returns next thread root index + * @param id INTEGER message number + */ + function nextThread($id) + { + $root = $this->root($id); + $ok = false; + foreach ($this->roots as $i) { + if ($ok) { + return $i; + } + if ($i == $root) { + $ok = true; + } + } + return null; + } + + /** Return prev post in the thread + * @param id INTEGER message number + */ + function prevPost($id) + { + $parent = $this->overview[$id]->parent; + if (is_null($parent)) { + return null; + } + $last = $parent; + foreach ($this->overview[$parent]->children as $child) { + if ($child == $id) { + return $last; + } + $last = $child; + } + return null; + } + + /** Return next post in the thread + * @param id INTEGER message number + */ + function nextPost($id) + { + if (count($this->overview[$id]->children) != 0) { + return $this->overview[$id]->children[0]; + } + + $cur = $id; + while (true) { + $parent = $this->overview[$cur]->parent; + if (is_null($parent)) { + return null; + } + $ok = false; + foreach ($this->overview[$parent]->children as $child) { + if ($ok) { + return $child; + } + if ($child == $cur) { + $ok = true; + } + } + $cur = $parent; + } + return null; + } } // vim:set et sw=4 sts=4 ts=4 diff --git a/css/style.css b/css/style.css index a9fd064..8cd185d 100644 --- a/css/style.css +++ b/css/style.css @@ -10,6 +10,12 @@ div.banana_scuts { text-align: left; padding: 0.5em 0em; } +div.banana_scuts .title { + font-weight: bold; +} +div.banana_action { float: right; } +div.banana_menu { float: left; } + /** GROUP LIST **/ diff --git a/img/cancel.gif b/img/cancel.gif new file mode 100644 index 0000000000000000000000000000000000000000..ce4b1fa9ffc4a24b843b1263a94753f5f5058b24 GIT binary patch literal 1069 zcmcJOO=uHA6vzLGwOedjQycpct86ZH524GPWG%t2J!QLzNuf!W&9+7m z%)vr0V!)et@B=-FhWaz}s%I9ZUW*rPVyt623MN3H1>77sZWgTR1;N1}2Yv;H>dICBT z1biXl4dp%ND9?F(g7QT}Gf0d?SuH48!lWarr>B#I>x4V=9^a-s=kXKDOKP63T_wzy zoa}swOe`{qWpfpkB!G$;s-}}5|1H8pGy&vGnlS~OJP7Ps+qTVCfJYC2-ob4f*9YvM z0bY!5+cwX-N%8fpRW6K@M3d$Vi~+kpIL_uEz}x_~>W=g6uH$UoBN`20wWKcUOKvQQ z_Q!$0&Ap%VcK0rU>iq1~{2Mn)ZUU$WJaC5;-OL_fY8kls5jgx9=zb1JWJx^|Wk-1asH+;KBYm)FEw0uzF&e&}YI*gB6Ia@nH-yWfmc1JZAsD)P?j_RE zfql&D<}q`izhhaby-n96*P5I0#^-R`zyT&Jh64=Kai%x5!YuW6wRUw+)Pq;LdjjqK b}A`-8lw`d6tTLIt9F=VQS-F3v(xUvx;|z{n{Inh z5h5J$BGF+jhz%l^4zb6f(;6N&Dv^+wpu-#kA&8Rcy`4gcq>CTCZ+`FlzW4q!-+MDU zb|X9_ap3R)%(zIUT(e82y-~Fj#%|fPgQVsYO-`(Gv8rCSBE`BdQR8AJ7pZ1SR>H6% zdfhi;7Ry#_wa#a1zJy6iR+!WUQrF9NnAF78T~gW&>vg?ktyZjJ#V(d@qhc8qyPlcOV}{X+i$;N6x8$$6>HTwYUYoS(Tp%eU;H1?{f5Bp1lADBe8! zRlek5N(BK=7tMC1T@Er%x_p)KU5#k8Mr15!q!eX35K`llQOXA8 zj6=vnKpolX);l1k@pehKGp#Gq^3;(*UkYa zwhv>o1>pHp;B4S97W4sUrh)3DkAJ;0=HIGu&o1*7ZcCTsEmnnv&w#g^AAR=G6j`WTlZlKBp-HSiu;2c@d6g9+;<>gBuen1c|H&jE+vmX}CoH}OK)}J+U##Dk?7TW4=V!=%W&8Ka5YZG-|?yff9_Fyny zbP&M^A7+6Jir7QMUW(g`Ebw6v$$gMm(8GNUgeXdG=j;|jBtdlGocsCxIlu3{zjLl{ zi1G9VO)%jd=rDN-=|W{7C8rCDC05Fp6h14b@=B(tq^Q4aVkIYE@~35gs>~A8Uo?4& z;~AOH$(C`+lPt68vT2~m=PI$RoXl5pl9DYdY+B9~lw@8>VQtz)$c=I?}+cJuiM?-1L!w{JU^``g=gZTK>W7x+Y>g! z77RG7sRg+NKghB-_SgQr1yUP$+eK^bpZCXzQ6PeV&P<}_sK!ppA&vVf-xYb0v zSTIbOOt^&65ij8k;UiIvbCg3G7bwqjQMy+m?2fD9$v81S5yKOXBskIlDkgHgK$7&U zgu7@1$de3l7`V~_)NJngCKABYb)e0$=W|+smNB5%yXV`vRc(r{bu)3Nmo%CTo$)GA z_g+Z}FnkYq_yIWk3}}7^RrguF!Rg765ELU}8@({z+38s! z!3ViWHT?e;F_I*Q0(fWn1z|E86K#X!enp7j3_mAE1ea|n&YgGJdfe^{RaF;V=?{wo z3(^DL@3OA=YSY=1H~X2zbG@qvFV=7y1GYn#*H*4iRaTEZdCipF>z<|MjnJFL`i&*O z{Y%VhZ+9@qJKF7fXPw#H!ql9YYIHc74MwI_Z*Mr$+0tfhVp0vuokr7X3sbl5ZE9@R TF^*H$EJtJVBF^o literal 0 HcmV?d00001 diff --git a/img/post.gif b/img/post.gif new file mode 100644 index 0000000000000000000000000000000000000000..3aa195e6b4be14d239971f19f45f1d2a8707c771 GIT binary patch literal 1339 zcmd6nU1-x#6o60bwywI)`L{n2JCQBcPP5Hwr&H5)uI=VS9D`M#+I4juY+XpRSzjdT zrg;&A`cV9V`h%+=5)dTdz%YEs!yW>H_F+f`kvs+l5}BjkG|E66zWCsUd-9#1d(OS* zUJ?lPdOM>vPy=7U7#V^0Ch9Sg%c~kMYD8L6R6Vcis-_oIO;C6~rzizIBdVf;R9%o& zJR)QyjT0kTF~fqW@REB33GCo3z8fb;euXD45kGt z6VY{DRZ)IDE2>gn7Zp{IHKibC#Vo}uY%bzWi0O>1>3TY&uvvwma;zB1Nh+Jmi!zd^ zVxAKU1S=7g6yfB2K_k-=$x0+AWhGTmG8)>yrk9TR|B9w>Wfp*bXexdW`TYZd?m!#f z)(&7@j8fFN6>WSX$Gias#|;HFB*V_eW0^ zjS2!-wj=NMQIj!)hfVG>_yR*QD26mRmWYlZMiboh;D8@7kGOi&wUznMg!0n4W=L9#4dmhi)*%XDS+os0qUC9 zY*;0d{)5my@8M8wrM+^_&xwp-I(L0%VW1= zu9Mqp=67Q@$I%n6d#+>EZufi-R_WLhsPmWA29AE1_r2+II5zL!zj;T?-aVGa4o|CN zZUt}ObZ}QMtMP>I)>Y5eTVVmp%QrSu1hF##k6V>o10LMmVP@a(aKZ;>}dJ zK+!8#gitBFVuUo^6)wwpBaqbt*-9pF@QHG}Tu#suP0y?tmdO7a++TM)05{y`_aVQ3 zWY9O*C3JNI&Q(#CC!8cZnNk(9^P$V*eC--)vClq>D5d3rVDQ4uC;PGn+8cP^$@bbg z?vI`Zg#-adBY7L+Hn%g5*xbkXsw%4#6J#tU#3(U!c$Co*Ke0x_^w{7ET;OR1OxOLms z?gE;|fMU+{Orv98?UFV1TYT-;6VTws|SX!1NS}wZO?#1uYe%cezX@( z@8@6LPL{Q<#V<}IBZ{cTqCC4W{;7#6B`u3m%yR#`L5*doD1d)To>h|Zgvt-l{fd#` zq&%(06c0a?l1_T~Zb3L@se0JR9xQ6kmoz!xX;~~UJ-&VXbp74s>Wc%>N6k0GT(aY3 zldtVbwV`9-&56CwIpNmZrPuGWM;5NBU9)|z5%rMPq71|#h!5V&=ly=a_xmQl z-%DsT=o^mOzy_Ouhs`GnVvWwrVr7?%NTrIx7G$BUSsXK&YSW9{@0JL|Jy$h!W4Gc@Ei$ zscX}OX$wqX(bb|%h8>~l%ZF=!*#eXs;6oqIb$Hw#J!TFG0vPPbYftLjgE^-21RiMe(^y0(2e#=9z^j)4?Og}99tS|%BtUuaz_xcqD~jRxM&|k; zDl{4fa{!?JldA4@0hm?*_61e__FPr>Um%Tb04dEZaEn?jiZ%`d{B5s)oSt280@nFC zvH3UNPHP3g9v}gpg#jiT0mkkDJlO&0ehtvN3P7XYPYi?6_xabzi;cbK4wMO0W-?_T-F}6d-=%uww zXB_=Q>&p#8@4W$6XG^e-XlizuJ3JkhU|ZJ-tFzVZF?9!3QIr*4sUk$&JLL+eg2jr~fegFUf literal 0 HcmV?d00001 diff --git a/img/reply.gif b/img/reply.gif new file mode 100644 index 0000000000000000000000000000000000000000..3c156c8032219479fb1b157710ae03b985005e5e GIT binary patch literal 1342 zcmc(fQD_uL7=ZsfQ}>!`5^b!f^|+0-=7dYT7hBn28aKJpT#UAx7_wXYa+kYnE)Xxv z-m2@{YK<;}bc-*GTG-m6tB5QJ76=<@;>gYP0!vt~KI zptW>cRV`Ps_zbIPmMiNmM(yKOr>IkcSy0WkVj`vEdVyvuEjKV6)v!IqXvrq4nJuj; zP(`a|P`a(u3|g^@idEwcn%C)~!LWLURh_mMpn*4-qER4aU}d|YC5x)V2qv#*DBds~ z&2l`u9axTr(q&|uRqdwZ(Y2;ws~H6t!Dh51ttNQIDJV86Ct1ZV$d+!oTGMa4zG-__ zE6{D9)kr_U(y7G%&<*_76$9X5ApB!0pP!wan9NbRVSxBrNf4IfD5Dc~Nkn>*fB!g1 zJOlzZM`@PI4Pl&Rk32i+UmpV68{oSkyw|h+{?W2YL;(R}{m9zC7;y&kLd2t(PfLP? zd|1roTB(8TbNIk7x7vfF;x#MOLa8y(S)v48)Z}g984+; zB65mfM?8cJfJP+JG{9I2V8hzF?sx;>?oEL0d)IZDB)~Qfpt*lt_jsmLl-NsajSu&u zLL-T7ngDq2hcJA+7l60|@I(v4-*1HBlh09%M*w!cd{R8s@kQS85rBW2M?V+s9vuRX z^R!|0-}q6zQvhrM3gEK>0M`vLy$W#kM}Wb5055(Cz@oFC8-Y0e(_bwrR%hMLd}(=U zK`cqt3W+aFer0(@YzU=twPXJ8I;kq7LjlOI2xr8l#hOHpqx)4w0Z#}grK*@Er|RX` zvg9yDz1fMH#XWv-fcQ$`&wX@$^}@yTyLR`|m$!dBarEf)^t;1*ID)%&{Zr!kk!?hO zE|I&HN_EetUY?g{