*/
public function makeLink(array $params, &$smarty = null)
{
- $catch = array('text', 'popup', 'class', 'accesskey');
+ $catch = array('text', 'popup', 'class', 'accesskey', 'style');
foreach ($catch as $key) {
${$key} = isset($params[$key]) ? $params[$key] : null;
unset($params[$key]);
if (!is_null($class)) {
$class = ' class="' . $class . '"';
}
+ if (!is_null($style)) {
+ $style = ' style="' . $style . '"';
+ }
if (!is_null($accesskey)) {
$accesskey = ' accesskey="' . $accesskey . '"';
}
return '<a href="' . banana_entities($link) . '"'
- . $popup . $class . $accesskey
+ . $popup . $class . $style . $accesskey
. '>' . $text . '</a>';
}
require_once dirname(__FILE__) . '/banana.inc.php';
-define('BANANA_SPOOL_VERSION', '0.5');
+define('BANANA_SPOOL_VERSION', '0.6');
/** Class spoolhead
* class used in thread overviews
public $subject;
/** author */
public $from;
+ public $color;
/** reference of parent */
public $parent = null;
/** paren is direct */
$this->date = $message['date'];
$this->subject = $message['subject'];
$this->from = $message['from'];
+ $this->color = sprintf('#%06x', abs(crc32($this->from) % 0xffffff));
$this->desc = 1;
$this->isread = true;
$this->descunread = 0;
return $res;
}
+
+ public function _buildTree($id, BananaSpoolHead &$head, $current) {
+ $style = 'color:' . $head->color . '; text-decoration: none';
+ $prof = 1;
+ if ($id == $current) {
+ $text = "<strong style=\"$style\">0</strong>";
+ } else {
+ $text = Banana::$page->makeLink(Array('group' => $this->group, 'artid' => $id,
+ 'text' => 'o', 'popup' => $head->from,
+ 'style' => $style));
+ }
+ $array = array($text);
+ foreach ($head->children as $key=>&$child) {
+ list($tpr, $tree) = $this->_buildTree($child, $this->overview[$child], $current);
+ $last = $key == count($head->children) - 1;
+ foreach ($tree as $kt=>&$line) {
+ if ($kt == 0 && $key == 0) {
+ $array[0] .= '--' . $line;
+ } else if ($kt == 0 && $last) {
+ $array[] = ' !-' . $line;
+ } else if ($kt == 0) {
+ $array[] = ' |-' . $line;
+ } else if ($last) {
+ $array[] = ' ' . $line;
+ } else {
+ $array[] = ' | ' . $line;
+ }
+ }
+ if ($tpr > $prof) {
+ $prof = $tpr + 1;
+ }
+ }
+ return array($prof, $array);
+ }
+
+ /** build the spool tree associated with the given message
+ */
+ public function buildTree($id) {
+ $pos = $id;
+ $overview =& $this->overview[$id];
+ while (!is_null($overview->parent)) {
+ $pos = $overview->parent;
+ $overview =& $this->overview[$pos];
+ }
+ list($prof, $tree) = $this->_buildTree($pos, $overview, $id);
+ return implode("\n", $tree);
+ }
+
/** computes linear post index
* @param $_id INTEGER MSGNUM of post
* @return INTEGER linear index of post