Compare commits
1 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
c563caef1c |
|
|
@ -0,0 +1,56 @@
|
|||
{
|
||||
templateId: makinghistory-eventfeed
|
||||
templateRole: eventfeed
|
||||
extends: []
|
||||
containedBy: []
|
||||
model: Stream
|
||||
|
||||
label: MakingHistory Event Feed
|
||||
description: View and/or Edit Sources of Events for MakingHistory
|
||||
|
||||
schema: {
|
||||
type: object
|
||||
properties: {
|
||||
icon: {type: "string"}
|
||||
label: {type: "string"}
|
||||
summary: {type: "string"}
|
||||
data: {
|
||||
type: object
|
||||
properties: {
|
||||
searchText: {type: "string"}
|
||||
content: {type: "string"}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
states: {
|
||||
default: {
|
||||
label: "Default State"
|
||||
description: "Event feed templates do not use other states [true?]"
|
||||
}
|
||||
}
|
||||
roles: {}
|
||||
|
||||
bundles: {}
|
||||
|
||||
actions: {
|
||||
create: {
|
||||
roles: ["owner", "mod"]
|
||||
steps: []
|
||||
}
|
||||
edit: {
|
||||
roles: ["owner", "mod"]
|
||||
steps: []
|
||||
}
|
||||
delete: {
|
||||
roles: ["owner", "mod"]
|
||||
steps: []
|
||||
}
|
||||
view: {
|
||||
roles: ["anonymous"]
|
||||
steps: [
|
||||
{do: "view-html"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
{{- $results := .Events.Slice -}}
|
||||
|
||||
<div class="cols-2">
|
||||
|
||||
{{- range $result := $results -}}
|
||||
<div class="card" style="overflow-x:hidden;">
|
||||
<pre>{{- $result | jsonIndent -}}</pre>
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
</div>
|
||||
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<div id="eventfeed" class="fullscreen padding-none">
|
||||
|
||||
<link rel="alternate" type="application/rss+xml" title="RSS Feed" href="/{{.Token}}/feed?{{.QueryString}}">
|
||||
|
||||
<div class="md:flex-row" style="background-color:var(--gray50);">
|
||||
|
||||
<div class="flex-grow margin-horizontal container">
|
||||
<div id="events-list">
|
||||
{{- template "view-events" . -}}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div> <!-- eventfeed -->
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
{{- $folders := .FoldersWithSelection}}
|
||||
{{- $folder := $folders.Selected -}}
|
||||
{{- $filter := .FilteredByFollowing -}}
|
||||
|
||||
{{- $folderID := $folder.FolderID.Hex -}}
|
||||
{{- $followingID := .QueryParam "origin.followingId" -}}
|
||||
|
||||
<div class="page app flex-row">
|
||||
{{- template "sidebar" $folders -}}
|
||||
</div>
|
||||
|
|
@ -0,0 +1,65 @@
|
|||
{{- $folders := .FoldersWithSelection}}
|
||||
{{- $folder := $folders.Selected -}}
|
||||
{{- $filter := .FilteredByFollowing -}}
|
||||
|
||||
{{- $folderID := $folder.FolderID.Hex -}}
|
||||
{{- $followingID := .QueryParam "origin.followingId" -}}
|
||||
|
||||
<div class="page app flex-row" hx-get="{{.URL}}" hx-trigger="refreshPage from:window" script="on load take .selected from .nav-item for #nav-inbox">
|
||||
|
||||
<link rel="stylesheet" href="/.templates/user-inbox/stylesheet">
|
||||
|
||||
<!-- Sidebar Content -->
|
||||
{{- template "sidebar" $folders -}}
|
||||
|
||||
<!-- Main App Content -->
|
||||
<div class="app-content">
|
||||
|
||||
<div class="pos-sticky flex-row" style="padding:8px 0px; top:56px; width:100%; background-color:var(--page-background);z-index:100;">
|
||||
|
||||
{{- if $filter.NotZero -}}
|
||||
{{- $following := .FollowingByToken $followingID -}}
|
||||
<div class="flex-grow-1 margin-top-sm">
|
||||
<div class="bold"><a href="/@me/inbox?folderId={{$folderID}}" hx-get="/@me/inbox?folderId={{$folderID}}">{{icon $folder.Icon}} {{$folder.Label}}</a></div>
|
||||
<div class="flex-row margin-vertical">
|
||||
{{- if ne "" $following.IconURL -}}
|
||||
<div class="margin-top-xs">
|
||||
<img src="{{$following.IconURL}}" class="circle width-48">
|
||||
</div>
|
||||
{{- end -}}
|
||||
|
||||
<div>
|
||||
<h1 class="margin-top-none margin-bottom-sm ellipsis-block">
|
||||
{{$following.Label}}
|
||||
</h1>
|
||||
<div class="margin-none">
|
||||
<a href="{{$following.URL}}" target="_blank" class="text-gray">{{$following.URL}}</a>
|
||||
· {{$following.LastPolled | tinyDate}} ago
|
||||
|
||||
<button class="text-xs" hx-get="/@me/inbox/following-edit?followingId={{$following.FollowingID.Hex}}">Edit Source</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{- else -}}
|
||||
<h1 class="margin-top-sm flex-grow-1">{{icon $folder.Icon}} {{$folder.Label}}</h1>
|
||||
{{- end -}}
|
||||
</div>
|
||||
|
||||
<div class="text-sm nowrap margin-top-sm pos-absolute" style="top:8px; right:8px; z-index:1000;">
|
||||
<button hx-get="/@me/inbox/following-search?folderId={{$folderID}}" class="primary turboclick">{{icon "add"}} Follow</button>
|
||||
{{- if $filter.IsZero -}}
|
||||
<button hx-get="/@me/inbox/filter?folderId={{$folderID}}" class="turboclick">{{icon "filter"}} Filter</button>
|
||||
{{- else -}}
|
||||
<button hx-get="/@me/inbox/filter?folderId={{$folderID}}&followingId={{$followingID}}" class="selected ellipsis turboclick" style="max-width:160px;">{{icon "filter-fill"}} {{$filter.Label}}</button>
|
||||
{{- end -}}
|
||||
<button hx-get="/@me/inbox/folder-edit?folderId={{$folderID}}" class="turboclick">{{icon "settings"}} Folder Settings</button>
|
||||
</div>
|
||||
|
||||
{{- template "list" . -}}
|
||||
|
||||
</div>
|
||||
|
||||
<script src="/.templates/user-inbox/hyperscript" type="text/hyperscript"></script>
|
||||
|
||||
</div>
|
||||
|
|
@ -0,0 +1,93 @@
|
|||
{
|
||||
templateId: events
|
||||
// This role makes the template eligible to be displayed as a UI choice for user inbox
|
||||
templateRole: user-inbox
|
||||
// The model sets which go builder to use with this template
|
||||
model: inbox
|
||||
label: Events
|
||||
description: A simple inbox with a sidebar for folders and several feed layouts
|
||||
icon: inbox
|
||||
// Extends inherits from other templates
|
||||
extends: ["user-inbox"]
|
||||
// A schema sets up the data structure that will be used inside a template
|
||||
// Reflected in mongodb
|
||||
// Based on json, without linking between schemas; all rules must be defined herein
|
||||
schema: {
|
||||
title: Events
|
||||
type: object
|
||||
properties: {
|
||||
feeds: {
|
||||
description: Array of news sources to render on the page
|
||||
type: array
|
||||
items: {
|
||||
type: object
|
||||
properties: {
|
||||
uri: {
|
||||
type: string
|
||||
}
|
||||
name: {
|
||||
type: string
|
||||
}
|
||||
trust-level: {
|
||||
type: string
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
states: {
|
||||
published: {
|
||||
label: Publically viewable events item
|
||||
}
|
||||
for-review: {
|
||||
label: Events item to be reviewed before publishing or not
|
||||
}
|
||||
}
|
||||
roles: {
|
||||
mod: {
|
||||
label: Events Moderator
|
||||
decription: Full control
|
||||
}
|
||||
reader: {
|
||||
label: Events Reader
|
||||
description: Read only
|
||||
}
|
||||
}
|
||||
/*
|
||||
bundles: {
|
||||
stylesheet: {
|
||||
content-type: text/css
|
||||
}
|
||||
hyperscript: {
|
||||
content-type: text/hyperscript
|
||||
}
|
||||
}
|
||||
*/
|
||||
actions: {
|
||||
view: {
|
||||
roles: ["mod"]
|
||||
stateRoles: {
|
||||
published: ["reader"]
|
||||
}
|
||||
steps: [
|
||||
{do: "view-html"}
|
||||
]
|
||||
}
|
||||
inbox: {
|
||||
roles: ["self"]
|
||||
do: "view-html"
|
||||
file: "events"
|
||||
}
|
||||
events: {
|
||||
roles: ["self"]
|
||||
do: "view-html"
|
||||
}
|
||||
/*
|
||||
sidebar-events: {
|
||||
roles: ["self"]
|
||||
do: "view-html"
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue