nfp_sites/app/widgets/newsitem.js

51 lines
1.8 KiB
JavaScript
Raw Normal View History

2019-09-14 19:03:38 +00:00
const Fileinfo = require('./fileinfo')
2021-01-04 17:47:59 +00:00
const Newsitem = {
2019-09-14 19:03:38 +00:00
view: function(vnode) {
var pixelRatio = window.devicePixelRatio || 1
2021-01-04 17:47:59 +00:00
var jpegImage = pixelRatio > 1 ? vnode.attrs.media.medium_url : vnode.attrs.media.small_url
var avifImage = pixelRatio > 1 ? vnode.attrs.media.medium_url_avif : vnode.attrs.media.small_url_avif
2019-09-14 19:03:38 +00:00
return m('newsitem', [
m(m.route.Link,
{ href: '/article/' + vnode.attrs.path, class: 'title' },
m('h3', [vnode.attrs.name])
),
m('div.newsitemcontent', [
vnode.attrs.media
? m('a.cover', {
href: '/article/' + vnode.attrs.path,
2021-01-04 17:47:59 +00:00
},
m('picture', [
avifImage ? m('source', {
srcset: avifImage,
type: 'image/avif',
}) : null,
m('img', { alt: 'Image for news item ' + vnode.attrs.name, src: jpegImage })
]))
2019-10-01 03:45:44 +00:00
: null,
m('div.entrycontent', {
class: vnode.attrs.media ? '' : 'extrapadding',
}, [
2019-09-14 19:03:38 +00:00
(vnode.attrs.description
? m('.fr-view', m.trust(vnode.attrs.description))
: null),
(vnode.attrs.files && vnode.attrs.files.length
? vnode.attrs.files.map(function(file) {
return m(Fileinfo, { file: file, trim: true })
2019-09-14 19:03:38 +00:00
})
: null),
m('span.entrymeta', [
'Posted ',
(vnode.attrs.parent ? 'in' : ''),
(vnode.attrs.parent ? m(m.route.Link, { href: '/page/' + vnode.attrs.parent.path }, vnode.attrs.parent.name) : null),
'at ' + (vnode.attrs.published_at.replace('T', ' ').split('.')[0]).substr(0, 16),
2019-10-02 18:47:20 +00:00
' by ' + (vnode.attrs.staff && vnode.attrs.staff.fullname || 'Admin'),
]),
2019-09-14 19:03:38 +00:00
]),
]),
])
},
}
module.exports = Newsitem