}
function title() {
- return $this->attachment->getTitle();
+ return $this->attachment->getTitle() ?: _('Untitled attachment');
}
function linkTitle() {
}
function linkAttr() {
- return array('class' => 'attachment',
+ return array(
+ 'class' => 'u-url',
'href' => $this->attachment->getAttachmentUrl(),
- 'id' => 'attachment-' . $this->attachment->getID(),
'title' => $this->linkTitle());
}
- function showLink() {
- $this->out->elementStart('a', $this->linkAttr());
- $this->out->element('span', null, $this->linkTitle());
- $this->showRepresentation();
- $this->out->elementEnd('a');
- }
-
function showNoticeAttachment()
{
- $this->showLink();
+ $this->showRepresentation();
}
function showRepresentation() {
$enclosure = $this->attachment->getEnclosure();
if (Event::handle('StartShowAttachmentRepresentation', array($this->out, $this->attachment))) {
+
+ $this->out->elementStart('label');
+ $this->out->element('a', $this->linkAttr(), $this->title());
+ $this->out->elementEnd('label');
+
if (!empty($enclosure->mimetype)) {
// First, prepare a thumbnail if it exists.
$thumb = null;
if ($thumb instanceof File_thumbnail) {
$this->out->element('img', $thumb->getHtmlAttrs(['class'=>'u-photo', 'alt' => '']));
} else {
- $this->out->element('img', array('class'=>'u-photo', 'src' => $this->attachment->getUrl(), 'alt' => $this->attachment->getTitle()));
+ try {
+ // getUrl(true) because we don't want to hotlink, could be made configurable
+ $this->out->element('img', ['class'=>'u-photo', 'src'=>$this->attachment->getUrl(true), 'alt' => $this->attachment->getTitle()]);
+ } catch (FileNotStoredLocallyException $e) {
+ $url = $e->file->getUrl(false);
+ $this->out->element('a', ['href'=>$url, 'rel'=>'external'], $url);
+ }
}
unset($thumb); // there's no need carrying this along after this
break;
default:
unset($thumb); // there's no need carrying this along
- switch ($this->attachment->mimetype) {
+ switch (common_bare_mime($this->attachment->mimetype)) {
case 'text/plain':
$this->element('div', ['class'=>'e-content plaintext'], file_get_contents($this->attachment->getPath()));
break;