From 1273e8f4cccadd228840231435919cd2539c2994 Mon Sep 17 00:00:00 2001 From: x2003bruneau Date: Sat, 27 Jan 2007 21:43:14 +0000 Subject: [PATCH] Can choose the part of the message to display git-svn-id: svn+ssh://murphy/home/svn/banana/trunk@180 9869982d-c50d-0410-be91-f2a2ec7c7c7b --- banana/banana.inc.php.in | 22 +++++++++++++++++--- banana/message.inc.php | 7 ++++--- banana/mimepart.inc.php | 37 +++++++++++++++++++++++++++++++++ banana/templates/banana-message.inc.tpl | 12 +++++++++++ 4 files changed, 72 insertions(+), 6 deletions(-) diff --git a/banana/banana.inc.php.in b/banana/banana.inc.php.in index 6bb7103..1c52fc5 100644 --- a/banana/banana.inc.php.in +++ b/banana/banana.inc.php.in @@ -7,6 +7,8 @@ * Copyright: See COPYING files that comes with this distribution ********************************************************************************/ +require_once dirname(__FILE__) . '/text.func.inc.php'; + class Banana { @@ -24,6 +26,7 @@ class Banana 'autoup' => 1); static public $boxpattern; static public $withtabs = true; + static public $mimeparts = array(); ### Spool ### static public $spool_max = 3000; @@ -42,7 +45,8 @@ class Banana ### Message display ### static public $msgshow_headers = array('from', 'newsgroups', 'followup-to', 'to', 'cc', 'reply-to', 'organization', 'date', 'references', 'in-reply-to'); - static public $msgshow_mimeparts = array('multipart/report', 'multipart/mixed', 'text/html', 'text/plain', 'text/enriched', 'text', 'message'); + static public $msgshow_mimeparts = array('multipart/report', 'multipart/mixed', + 'text/html', 'text/plain', 'text/enriched', 'text', 'message'); static public $msgshow_xface = true; static public $msgshow_wrap = 78; static public $msgshow_externalimages = false; @@ -136,7 +140,6 @@ class Banana */ public function __construct($params = null, $protocole = 'NNTP', $pageclass = 'BananaPage') { - Banana::load('text.func'); if (is_null($params)) { $this->params = $_GET; } else { @@ -156,6 +159,17 @@ class Banana Banana::load('page'); } Banana::$page = new $pageclass; + + $types = array('multipart/report' => _b_('Rapport d\'erreur'), + 'multipart/mixed' => _b_('Composition'), + 'text/html' => _b_('Texte formaté'), + 'text/plain' => _b_('Texte brut'), + 'text/enriched' => _b_('Texte enrichi'), + 'text' => _b_('Texte'), + 'message/rfc822' => _b_('Mail'), + 'message' => _b_('Message'), + 'source' => _b_('Source')); + Banana::$mimeparts = array_merge($types, Banana::$mimeparts); } /** Fill state vars (Banana::$group, Banana::$artid, Banana::$action, Banana;:$part, Banana::$first) @@ -331,7 +345,8 @@ class Banana } exit; } elseif ($partid == 'text') { - Banana::$page->assign('body', $msg->getFormattedBody()); + $partid = null; + Banana::$page->assign('body', $msg->getFormattedBody($partid)); } elseif ($partid == 'source') { $text = Banana::$protocole->getMessageSource($artid); if (!is_utf8($text)) { @@ -351,6 +366,7 @@ class Banana } Banana::$page->assign_by_ref('message', $msg); Banana::$page->assign('headers', Banana::$msgshow_headers); + Banana::$page->assign('type', $partid); return true; } diff --git a/banana/message.inc.php b/banana/message.inc.php index b3dbc8b..01686a1 100644 --- a/banana/message.inc.php +++ b/banana/message.inc.php @@ -228,11 +228,11 @@ final class BananaMessage extends BananaMimePart exit; } - public function getFormattedBody($type = null) + public function getFormattedBody(&$reqtype = null) { $types = Banana::$msgshow_mimeparts; - if (!is_null($type)) { - array_unshift($types, $type); + if (!is_null($reqtype)) { + array_unshift($types, $reqtype); } foreach ($types as $type) { @list($type, $subtype) = explode('/', $type); @@ -240,6 +240,7 @@ final class BananaMessage extends BananaMimePart if (empty($parts)) { continue; } + $reqtype = implode('/', $parts[0]->getType()); return $parts[0]->toHtml(); } return null; diff --git a/banana/mimepart.inc.php b/banana/mimepart.inc.php index 3f543bc..cf1e94a 100644 --- a/banana/mimepart.inc.php +++ b/banana/mimepart.inc.php @@ -544,6 +544,43 @@ class BananaMimePart return array(); } + public function getAlternatives() + { + $types =& Banana::$msgshow_mimeparts; + $names =& Banana::$mimeparts; + $source = null; + if (in_array('source', $types)) { + $source = @$names['source'] ? $names['source'] : 'source'; + } + if (!$this->isType('multipart', 'alternative') && !$this->isType('multipart', 'related')) { + if ($source) { + $parts = array($this); + } else { + return array(); + } + } else { + $parts =& $this->multipart; + } + $alt = array(); + foreach ($parts as &$part) { + list($type, $subtype) = $part->getType(); + $ct = $type . '/' . $subtype; + if (in_array($ct, $types) || in_array($type, $types)) { + if (isset($names[$ct])) { + $alt[$ct] = $names[$ct]; + } elseif (isset($names[$type])) { + $alt[$ct] = $names[$type]; + } else { + $alt[$ct] = $ct; + } + } + } + if ($source) { + $alt['source'] = $source; + } + return $alt; + } + public function getPartById($id) { if ($this->id == $id) { diff --git a/banana/templates/banana-message.inc.tpl b/banana/templates/banana-message.inc.tpl index 2924c6c..f7672b7 100644 --- a/banana/templates/banana-message.inc.tpl +++ b/banana/templates/banana-message.inc.tpl @@ -51,6 +51,18 @@ {/if} + {assign var=alter value=$message->getAlternatives()} + {if $alter|@count} + + {"Versions"|b} + + {foreach from=$alter key=ctype item=text name=alter} + {if $type eq $ctype}{$text}{else}{link group=$group artid=$artid part=$ctype text=$text}{/if} + {if !$smarty.foreach.alter.last} • {/if} + {/foreach} + + + {/if} {$body} -- 2.1.4