whyis-fediverse 0.4.3__py3-none-any.whl → 1.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- whyis_fediverse/static/js/comment.js +15 -14
- whyis_fediverse/static/js/discussion.js +5 -3
- whyis_fediverse/static/js/new_post.js +41 -34
- whyis_fediverse/static/js/post.js +31 -25
- whyis_fediverse/static/js/post_view.js +15 -19
- whyis_fediverse/static/js/selectable.js +5 -3
- whyis_fediverse/static/js/selections.js +5 -3
- whyis_fediverse/templates/all_discussion.html +44 -45
- whyis_fediverse/templates/discussion.html +44 -45
- whyis_fediverse/templates/embed_image.html +1 -1
- whyis_fediverse/templates/embed_resource.html +2 -2
- whyis_fediverse/templates/image_embed.html +1 -1
- whyis_fediverse/templates/object_view.html +7 -5
- {whyis_fediverse-0.4.3.dist-info → whyis_fediverse-1.0.0.dist-info}/METADATA +3 -3
- whyis_fediverse-1.0.0.dist-info/RECORD +31 -0
- {whyis_fediverse-0.4.3.dist-info → whyis_fediverse-1.0.0.dist-info}/WHEEL +1 -1
- whyis_fediverse/static/js/#new_post.js# +0 -237
- whyis_fediverse/static/js/selectable.js~ +0 -27
- whyis_fediverse/static/js/selections.js~ +0 -87
- whyis_fediverse/templates/__init__.py +0 -0
- whyis_fediverse/templates/all_discussion.html~ +0 -73
- whyis_fediverse/templates/embed_image.html~ +0 -1
- whyis_fediverse/templates/embed_object.html~ +0 -6
- whyis_fediverse/templates/embed_resource.html~ +0 -5
- whyis_fediverse/templates/embed_video.html~ +0 -6
- whyis_fediverse/templates/image_embed.svg +0 -3
- whyis_fediverse/test_example.trig +0 -115
- whyis_fediverse/test_example.ttl +0 -115
- whyis_fediverse/vocab.ttl +0 -93
- whyis_fediverse-0.4.3.dist-info/RECORD +0 -44
- {whyis_fediverse-0.4.3.dist-info → whyis_fediverse-1.0.0.dist-info}/entry_points.txt +0 -0
- {whyis_fediverse-0.4.3.dist-info → whyis_fediverse-1.0.0.dist-info/licenses}/LICENSE +0 -0
- {whyis_fediverse-0.4.3.dist-info → whyis_fediverse-1.0.0.dist-info}/top_level.txt +0 -0
|
@@ -3,10 +3,9 @@ import relativeTime from '//unpkg.com/dayjs@1.11.13/esm/plugin/relativeTime';
|
|
|
3
3
|
dayjs.extend(relativeTime);
|
|
4
4
|
|
|
5
5
|
import selectable from './selectable.js';
|
|
6
|
+
import {axios, Vue} from '../../../dist/whyis.js';
|
|
6
7
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export default Vue.component('fedi-comment', {
|
|
8
|
+
const component = {
|
|
10
9
|
name: "fedi-comment",
|
|
11
10
|
props:{
|
|
12
11
|
value: {
|
|
@@ -30,18 +29,18 @@ export default Vue.component('fedi-comment', {
|
|
|
30
29
|
typing_template: `
|
|
31
30
|
`,
|
|
32
31
|
template: `
|
|
33
|
-
<
|
|
34
|
-
<div v-if="value.attachment != null && value.attachment.length != 0">
|
|
35
|
-
<fedi-selectable v-bind:uri="a.id" v-for="a in value.attachment" v-bind:key="a.id" v-html="a.embed">
|
|
32
|
+
<div class="mt-3 w-100">
|
|
33
|
+
<div class="row g-2" v-if="value.attachment != null && value.attachment.length != 0">
|
|
34
|
+
<fedi-selectable class="col-12 col-md-4" v-bind:uri="a.id" v-for="a in value.attachment" v-bind:key="a.id" v-html="a.embed">
|
|
36
35
|
</fedi-selectable>
|
|
37
36
|
</div>
|
|
38
|
-
<div v-if="value.context != null && value.context.length != 0">
|
|
39
|
-
<fedi-selectable v-bind:uri="a.id" v-for="a in value.context" v-bind:key="a.id" v-html="a.embed">
|
|
37
|
+
<div class="row g-2" v-if="value.context != null && value.context.length != 0">
|
|
38
|
+
<fedi-selectable class="col-12 col-md-4" v-bind:uri="a.id" v-for="a in value.context" v-bind:key="a.id" v-html="a.embed">
|
|
40
39
|
</fedi-selectable>
|
|
41
40
|
</div>
|
|
42
|
-
<div
|
|
41
|
+
<div class="d-inline-block bg-light rounded-pill px-3 py-2 mt-2">
|
|
43
42
|
<small>
|
|
44
|
-
<a :href="value.attributedTo.view">
|
|
43
|
+
<a :href="value.attributedTo.view" class="text-decoration-none">
|
|
45
44
|
<strong>{{value.attributedTo.name}}</strong>
|
|
46
45
|
(@{{value.attributedTo.id.split('/').pop()}})
|
|
47
46
|
{{published}}
|
|
@@ -51,16 +50,16 @@ export default Vue.component('fedi-comment', {
|
|
|
51
50
|
</div>
|
|
52
51
|
<div v-for="agent in value.typing"
|
|
53
52
|
v-bind:key="agent.id"
|
|
54
|
-
|
|
53
|
+
class="d-inline-block bg-light rounded-pill px-3 py-2 mt-2">
|
|
55
54
|
<small>
|
|
56
|
-
<a :href="agent.view">
|
|
55
|
+
<a :href="agent.view" class="text-decoration-none">
|
|
57
56
|
<strong>{{agent.name}}</strong>
|
|
58
57
|
(@{{agent.id.split('/').pop()}})
|
|
59
58
|
<spinner :loading="true" text=''/>
|
|
60
59
|
</a>
|
|
61
60
|
</small>
|
|
62
61
|
</div>
|
|
63
|
-
</
|
|
62
|
+
</div>
|
|
64
63
|
`,
|
|
65
64
|
watch: {
|
|
66
65
|
},
|
|
@@ -106,4 +105,6 @@ export default Vue.component('fedi-comment', {
|
|
|
106
105
|
},
|
|
107
106
|
created(){
|
|
108
107
|
}
|
|
109
|
-
}
|
|
108
|
+
};
|
|
109
|
+
|
|
110
|
+
export default Vue.component('fedi-comment', component);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {axios, Vue} from '../../../dist/whyis.js';
|
|
2
2
|
import post from './post.js';
|
|
3
3
|
import newPost from './new_post.js';
|
|
4
4
|
import selections from './selections.js';
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
const component = {
|
|
7
7
|
name: "fedi-discussion",
|
|
8
8
|
props:{
|
|
9
9
|
entity: {
|
|
@@ -90,4 +90,6 @@ export default Vue.component('fedi-discussion', {
|
|
|
90
90
|
},
|
|
91
91
|
created(){
|
|
92
92
|
}
|
|
93
|
-
}
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
export default Vue.component('fedi-discussion', component);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {axios, Vue} from '../../../dist/whyis.js';
|
|
2
2
|
|
|
3
3
|
import post from './selections.js';
|
|
4
4
|
|
|
@@ -80,7 +80,7 @@ async function uploadFiles(fileList, uri){
|
|
|
80
80
|
return distrLDs;
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
const component = {
|
|
84
84
|
name: "fedi-new-post",
|
|
85
85
|
props:{
|
|
86
86
|
entity: {
|
|
@@ -109,36 +109,41 @@ export default Vue.component('fedi-new-post', {
|
|
|
109
109
|
}
|
|
110
110
|
},
|
|
111
111
|
template: `
|
|
112
|
-
<
|
|
113
|
-
<
|
|
114
|
-
<
|
|
115
|
-
<label>What's on your mind?</label>
|
|
116
|
-
<
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
<
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
112
|
+
<div class="card mb-3">
|
|
113
|
+
<div class="card-body">
|
|
114
|
+
<div class="mb-3">
|
|
115
|
+
<label class="form-label">What's on your mind?</label>
|
|
116
|
+
<div class="d-flex align-items-start gap-2">
|
|
117
|
+
<textarea class="form-control flex-grow-1"
|
|
118
|
+
rows="3"
|
|
119
|
+
v-on:keyup.enter.exact="sendPost()"
|
|
120
|
+
v-model="post.content"></textarea>
|
|
121
|
+
<button type="button" class="btn btn-primary btn-sm mt-1" @click="sendPost()">
|
|
122
|
+
<i class="bi bi-send"></i>
|
|
123
|
+
</button>
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
<div class="row g-2 mb-3">
|
|
127
|
+
<div class="col-6 col-md-3 position-relative"
|
|
128
|
+
v-for="item in selection"
|
|
129
|
+
v-bind:key="item"
|
|
130
|
+
v-on:mouseenter="hovers[item] = true"
|
|
131
|
+
v-on:mouseleave="hovers[item] = false" >
|
|
132
|
+
<div v-html="embeds[item]"></div>
|
|
133
|
+
<button type="button"
|
|
134
|
+
class="btn btn-danger btn-sm position-absolute top-0 end-0"
|
|
135
|
+
v-on:click="unselect(item)">
|
|
136
|
+
<i class="bi bi-trash"></i>
|
|
137
|
+
</button>
|
|
138
|
+
</div>
|
|
139
|
+
</div>
|
|
140
|
+
<div class="mb-3" id="media_upload">
|
|
141
|
+
<label class="form-label">Add media</label>
|
|
142
|
+
<input class="form-control" type="file" name="media_upload" ref="attachments" multiple
|
|
143
|
+
@change="attachments = $event.target.files"/>
|
|
144
|
+
</div>
|
|
145
|
+
</div>
|
|
146
|
+
</div>
|
|
142
147
|
`,
|
|
143
148
|
watch: {
|
|
144
149
|
selection: {
|
|
@@ -194,7 +199,7 @@ export default Vue.component('fedi-new-post', {
|
|
|
194
199
|
this.post.published = now.toISOString();
|
|
195
200
|
this.post.context = this.selection;
|
|
196
201
|
|
|
197
|
-
let attachments = this.$refs.attachments
|
|
202
|
+
let attachments = this.$refs.attachments.files;
|
|
198
203
|
let old_id = this.id;
|
|
199
204
|
let post = this.post;
|
|
200
205
|
|
|
@@ -234,4 +239,6 @@ export default Vue.component('fedi-new-post', {
|
|
|
234
239
|
},
|
|
235
240
|
created(){
|
|
236
241
|
}
|
|
237
|
-
}
|
|
242
|
+
};
|
|
243
|
+
|
|
244
|
+
export default Vue.component('fedi-new-post', component);
|
|
@@ -4,9 +4,9 @@ dayjs.extend(relativeTime);
|
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
import selectable from './selectable.js';
|
|
7
|
+
import {axios, Vue} from '../../../dist/whyis.js';
|
|
7
8
|
|
|
8
|
-
|
|
9
|
-
export default Vue.component('fedi-post', {
|
|
9
|
+
const component = {
|
|
10
10
|
name: "fedi-post",
|
|
11
11
|
props:{
|
|
12
12
|
value: {
|
|
@@ -28,28 +28,32 @@ export default Vue.component('fedi-post', {
|
|
|
28
28
|
}
|
|
29
29
|
},
|
|
30
30
|
template: `
|
|
31
|
-
<
|
|
32
|
-
<
|
|
33
|
-
<
|
|
34
|
-
<
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
</
|
|
39
|
-
<
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
<
|
|
43
|
-
</
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
<
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
<
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
31
|
+
<div class="card mb-3">
|
|
32
|
+
<div class="card-header">
|
|
33
|
+
<div class="small text-muted">
|
|
34
|
+
<a :href="value.attributedTo.view" class="text-decoration-none">
|
|
35
|
+
<span class="rounded-circle bg-secondary text-white d-inline-flex align-items-center justify-content-center me-2"
|
|
36
|
+
style="width:32px; height:32px;">
|
|
37
|
+
{{value.attributedTo.name[0]}}
|
|
38
|
+
</span>
|
|
39
|
+
<strong>{{value.attributedTo.name}}</strong> <small>(@{{value.attributedTo.id.split('/').pop()}})</small>
|
|
40
|
+
</a>
|
|
41
|
+
<br/>
|
|
42
|
+
<small><a :href="value.view" class="text-decoration-none">{{published}}</a></small>
|
|
43
|
+
</div>
|
|
44
|
+
<div class="fw-semibold mt-2" v-if="value.name"><a :href="value.id" class="text-decoration-none">{{value.name}}</a></div>
|
|
45
|
+
</div>
|
|
46
|
+
<div class="card-body" v-html="value.content"></div>
|
|
47
|
+
<div class="card-body pt-0"
|
|
48
|
+
v-if="(value.attachment != null && value.attachment.length != 0) || (value.context != null && value.context.length != 0)">
|
|
49
|
+
<div class="d-flex flex-wrap gap-2">
|
|
50
|
+
<fedi-selectable v-bind:uri="a.id" v-for="a in value.attachment" v-bind:key="a.id" v-html="a.embed">
|
|
51
|
+
</fedi-selectable>
|
|
52
|
+
<fedi-selectable v-bind:uri="a.id" v-for="a in value.context" v-bind:key="a.id" v-html="a.embed">
|
|
53
|
+
</fedi-selectable>
|
|
54
|
+
</div>
|
|
55
|
+
</div>
|
|
56
|
+
</div>
|
|
53
57
|
`,
|
|
54
58
|
watch: {
|
|
55
59
|
},
|
|
@@ -95,4 +99,6 @@ export default Vue.component('fedi-post', {
|
|
|
95
99
|
},
|
|
96
100
|
created(){
|
|
97
101
|
}
|
|
98
|
-
}
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
export default Vue.component('fedi-post', component);
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {axios, Vue} from '../../../dist/whyis.js';
|
|
2
2
|
import post from './post.js';
|
|
3
3
|
import comment from './comment.js';
|
|
4
4
|
import newPost from './new_post.js';
|
|
5
5
|
import selections from './selections.js';
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
const component = {
|
|
8
8
|
name: "fedi-post-view",
|
|
9
9
|
props:{
|
|
10
10
|
object: {
|
|
@@ -25,20 +25,19 @@ export default Vue.component('fedi-post-view', {
|
|
|
25
25
|
template: `
|
|
26
26
|
<fedi-selection>
|
|
27
27
|
<spinner :loading="loading" text='Loading...' v-if="loading"/>
|
|
28
|
-
<div v-else class="
|
|
29
|
-
<div class="
|
|
28
|
+
<div v-else class="row g-3">
|
|
29
|
+
<div class="col-12 col-lg-6 overflow-y-auto">
|
|
30
30
|
<fedi-post v-if="post != null"
|
|
31
31
|
v-bind:value="post">
|
|
32
32
|
</fedi-post>
|
|
33
33
|
</div>
|
|
34
|
-
<div class="
|
|
34
|
+
<div class="col-12 col-lg-6 overflow-y-auto">
|
|
35
35
|
<div>
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
</md-empty-state>
|
|
36
|
+
<div v-if="replies == null || replies.length == 0" class="border rounded p-4 text-center text-muted">
|
|
37
|
+
<i class="bi bi-chat-dots fs-1 mb-2 d-block"></i>
|
|
38
|
+
<div class="fw-semibold">Reply to this thread</div>
|
|
39
|
+
<div>Reply below to continue this conversation.</div>
|
|
40
|
+
</div>
|
|
42
41
|
<div v-else>
|
|
43
42
|
<fedi-comment v-if="replyData[reply]"
|
|
44
43
|
v-for="reply in replies"
|
|
@@ -49,14 +48,9 @@ export default Vue.component('fedi-post-view', {
|
|
|
49
48
|
</div>
|
|
50
49
|
<div v-for="agent in post.typing"
|
|
51
50
|
v-bind:key="agent.id"
|
|
52
|
-
|
|
53
|
-
margin-top:0.5em;
|
|
54
|
-
border-radius:1em;
|
|
55
|
-
padding-left:0.75em;
|
|
56
|
-
padding-right:0.75em;
|
|
57
|
-
background-color:lightgray">
|
|
51
|
+
class="d-inline-block bg-light rounded-pill px-3 py-2 mt-2">
|
|
58
52
|
<small>
|
|
59
|
-
<a :href="agent.view">
|
|
53
|
+
<a :href="agent.view" class="text-decoration-none">
|
|
60
54
|
<strong>{{agent.name}}</strong>
|
|
61
55
|
(@{{agent.id.split('/').pop()}})
|
|
62
56
|
<spinner :loading="true" text=''/>
|
|
@@ -130,4 +124,6 @@ export default Vue.component('fedi-post-view', {
|
|
|
130
124
|
async unmounted() {
|
|
131
125
|
window.removeEventListener("scroll", this.scrollBottom)
|
|
132
126
|
}
|
|
133
|
-
}
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
export default Vue.component('fedi-post-view', component);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {axios, Vue} from '../../../dist/whyis.js';
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const component = {
|
|
4
4
|
name: "fedi-selectable",
|
|
5
5
|
props : {
|
|
6
6
|
"uri": String
|
|
@@ -38,4 +38,6 @@ export default Vue.component('fedi-selectable', {
|
|
|
38
38
|
}
|
|
39
39
|
},
|
|
40
40
|
},
|
|
41
|
-
}
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
export default Vue.component('fedi-selectable', component);
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import dayjs from '//unpkg.com/dayjs@1.11.13/esm';
|
|
2
|
-
import {
|
|
2
|
+
import {axios, Vue} from '../../../dist/whyis.js';
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
const component = {
|
|
5
5
|
name: "fedi-selection",
|
|
6
6
|
data() {
|
|
7
7
|
return {
|
|
@@ -29,4 +29,6 @@ export default Vue.component('fedi-selection', {
|
|
|
29
29
|
this.selected.length = 0
|
|
30
30
|
}
|
|
31
31
|
},
|
|
32
|
-
}
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
export default Vue.component('fedi-selection', component);
|
|
@@ -19,55 +19,54 @@
|
|
|
19
19
|
{% block content %}
|
|
20
20
|
{% set attributes = this | include("attributes") | fromjson %}
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
22
|
+
<ul class="nav nav-tabs card-header-tabs">
|
|
23
|
+
{% for v in this | get_views_list -%}
|
|
24
|
+
<li class="nav-item {% if v['view'].value == view %}active{% endif %}">
|
|
25
|
+
<a class="nav-link {% if v['view'].value == view %}active{% endif %}"
|
|
26
|
+
href="{{url_for('entity.view', uri=this.identifier, view=v['view'])}}">
|
|
27
|
+
{{v['label']}}
|
|
28
|
+
</a>
|
|
29
|
+
</li>
|
|
30
|
+
{%- endfor %}
|
|
31
|
+
{% if this.description().value(ns.whyis.hasFileID) %}
|
|
32
|
+
<li class="nav-item">
|
|
33
|
+
<a class="nav-link"
|
|
34
|
+
href="{{url_for('entity.view',uri=this.identifier)}}">
|
|
35
|
+
Download
|
|
36
|
+
</a>
|
|
37
|
+
</li>
|
|
38
|
+
{% endif %}
|
|
39
|
+
<li class="nav-item">
|
|
40
|
+
{{ vue_upload_button_tab_modal(this) }}
|
|
41
|
+
</li>
|
|
42
|
+
{% if not this.identifier.startswith(ns.local) %}
|
|
43
|
+
<li class="nav-item">
|
|
44
|
+
<a class="nav-link" href="{{this.identifier}}"
|
|
45
|
+
aria-label="Visit Page" title="Visit Page">
|
|
46
|
+
Visit
|
|
47
|
+
</a>
|
|
48
|
+
</li>
|
|
49
|
+
{% endif %}
|
|
50
|
+
</ul>
|
|
51
|
+
<div class="card mb-3">
|
|
52
|
+
{% if attributes.thumbnail %}<img class="card-img-top" src="{{url_for('entity.view', uri=attributes.thumbnail)}}" alt="{{attributes.label}}"/>
|
|
53
|
+
{% endif %}
|
|
54
|
+
<div class="card-header">
|
|
55
|
+
<div class="row g-2 align-items-center mt-2">
|
|
56
|
+
<div class="col">
|
|
57
|
+
<div class="fs-5 fw-semibold">{{attributes.label}}</div>
|
|
58
|
+
{% if attributes.type | length > 0 %}<div class="text-muted small">
|
|
57
59
|
{% for type in attributes.type %}{{type.label}}{% if not loop.last %}, {% endif %} {% endfor %}
|
|
58
60
|
</div>{% endif %}
|
|
59
61
|
</div>
|
|
60
62
|
</div>
|
|
61
|
-
</
|
|
62
|
-
|
|
63
|
-
<
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
<div class="md-layout md-gutter">
|
|
68
|
-
<div class="md-layout-item">
|
|
69
|
-
<fedi-discussion></fedi-discussion>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="card-body">
|
|
65
|
+
<div class="row g-3">
|
|
66
|
+
<div class="col-12">
|
|
67
|
+
<fedi-discussion></fedi-discussion>
|
|
68
|
+
</div>
|
|
70
69
|
</div>
|
|
71
70
|
</div>
|
|
72
|
-
</
|
|
71
|
+
</div>
|
|
73
72
|
{% endblock %}
|
|
@@ -18,56 +18,55 @@
|
|
|
18
18
|
{% endblock %}
|
|
19
19
|
{% block content %}
|
|
20
20
|
{% set attributes = this | include("attributes") | fromjson %}
|
|
21
|
+
<ul class="nav nav-tabs card-header-tabs">
|
|
22
|
+
{% for v in this | get_views_list -%}
|
|
23
|
+
<li class="nav-item {% if v['view'].value == view %}active{% endif %}">
|
|
24
|
+
<a class="nav-link {% if v['view'].value == view %}active{% endif %}"
|
|
25
|
+
href="{{url_for('entity.view', uri=this.identifier, view=v['view'])}}">
|
|
26
|
+
{{v['label']}}
|
|
27
|
+
</a>
|
|
28
|
+
</li>
|
|
29
|
+
{%- endfor %}
|
|
30
|
+
{% if this.description().value(ns.whyis.hasFileID) %}
|
|
31
|
+
<li class="nav-item">
|
|
32
|
+
<a class="nav-link"
|
|
33
|
+
href="{{url_for('entity.view',uri=this.identifier)}}">
|
|
34
|
+
Download
|
|
35
|
+
</a>
|
|
36
|
+
</li>
|
|
37
|
+
{% endif %}
|
|
38
|
+
<li class="nav-item">
|
|
39
|
+
{{ vue_upload_button_tab_modal(this) }}
|
|
40
|
+
</li>
|
|
41
|
+
{% if not this.identifier.startswith(ns.local) %}
|
|
42
|
+
<li class="nav-item">
|
|
43
|
+
<a class="nav-link" href="{{this.identifier}}"
|
|
44
|
+
aria-label="Visit Page" title="Visit Page">
|
|
45
|
+
Visit
|
|
46
|
+
</a>
|
|
47
|
+
</li>
|
|
48
|
+
{% endif %}
|
|
49
|
+
</ul>
|
|
21
50
|
|
|
22
|
-
<
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
</a>
|
|
31
|
-
</li>
|
|
32
|
-
{%- endfor %}
|
|
33
|
-
{% if this.description().value(ns.whyis.hasFileID) %}
|
|
34
|
-
<li class="nav-item">
|
|
35
|
-
<a class="nav-link"
|
|
36
|
-
href="{{url_for('entity.view',uri=this.identifier)}}">
|
|
37
|
-
Download
|
|
38
|
-
</a>
|
|
39
|
-
</li>
|
|
40
|
-
{% endif %}
|
|
41
|
-
<li class="nav-item">
|
|
42
|
-
{{ vue_upload_button_tab_modal(this) }}
|
|
43
|
-
</li>
|
|
44
|
-
{% if not this.identifier.startswith(ns.local) %}
|
|
45
|
-
<li class="nav-item">
|
|
46
|
-
<a class="nav-link" href="{{this.identifier}}"
|
|
47
|
-
aria-label="Visit Page" title="Visit Page">
|
|
48
|
-
Visit
|
|
49
|
-
</a>
|
|
50
|
-
</li>
|
|
51
|
-
{% endif %}
|
|
52
|
-
</ul>
|
|
53
|
-
<div class="md-layout md-gutter md-alignment-center-left" style = "margin-top: 6px;">
|
|
54
|
-
<div class = "md-layout-item">
|
|
55
|
-
<div class="md-title">{{attributes.label}}</div>
|
|
56
|
-
{% if attributes.type | length > 0 %}<div class="md-subhead" style="max-width: fit-content;">
|
|
51
|
+
<div class="card mb-3">
|
|
52
|
+
{% if attributes.thumbnail %}<img class="card-img-top" src="{{url_for('entity.view', uri=attributes.thumbnail)}}" alt="{{attributes.label}}"/>
|
|
53
|
+
{% endif %}
|
|
54
|
+
<div class="card-header">
|
|
55
|
+
<div class="row g-2 align-items-center mt-2">
|
|
56
|
+
<div class="col">
|
|
57
|
+
<div class="fs-5 fw-semibold">{{attributes.label}}</div>
|
|
58
|
+
{% if attributes.type | length > 0 %}<div class="text-muted small">
|
|
57
59
|
{% for type in attributes.type %}{{type.label}}{% if not loop.last %}, {% endif %} {% endfor %}
|
|
58
60
|
</div>{% endif %}
|
|
59
61
|
</div>
|
|
60
62
|
</div>
|
|
61
|
-
</
|
|
62
|
-
|
|
63
|
-
<
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
<div class="md-layout md-gutter">
|
|
68
|
-
<div class="md-layout-item">
|
|
69
|
-
<fedi-discussion entity="{{this.identifier}}"></fedi-discussion>
|
|
63
|
+
</div>
|
|
64
|
+
<div class="card-body">
|
|
65
|
+
<div class="row g-3">
|
|
66
|
+
<div class="col-12">
|
|
67
|
+
<fedi-discussion entity="{{this.identifier}}"></fedi-discussion>
|
|
68
|
+
</div>
|
|
70
69
|
</div>
|
|
71
70
|
</div>
|
|
72
|
-
</
|
|
71
|
+
</div>
|
|
73
72
|
{% endblock %}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
<img src="{{url_for('entity.view', uri=this.identifier)}}", alt="{{g.get_label(this)}}">
|
|
1
|
+
<img class="img-fluid" src="{{url_for('entity.view', uri=this.identifier)}}", alt="{{g.get_label(this)}}">
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{% if this.value(ns.foaf.depiction) %}
|
|
2
|
-
<img src="{{url_for('entity.view', uri=this.value(ns.foaf.depiction).identifier)}}", alt="{{g.get_label(this)}}">
|
|
2
|
+
<img class="img-fluid" src="{{url_for('entity.view', uri=this.value(ns.foaf.depiction).identifier)}}", alt="{{g.get_label(this)}}">
|
|
3
3
|
{% else %}
|
|
4
|
-
<div class="
|
|
4
|
+
<div class="img-fluid" class="fw-semibold">{{g.get_label(this)}}</div>
|
|
5
5
|
{% endif %}
|
|
@@ -16,11 +16,13 @@
|
|
|
16
16
|
<script type="module" src="{{url_for('static',filename='plugins/fediverse/js/post_view.js')}}"></script>
|
|
17
17
|
{% endblock %}
|
|
18
18
|
{% block content %}
|
|
19
|
-
<
|
|
20
|
-
<div class="
|
|
21
|
-
<div class="
|
|
22
|
-
<
|
|
19
|
+
<div class="card mb-3">
|
|
20
|
+
<div class="card-body">
|
|
21
|
+
<div class="row g-3">
|
|
22
|
+
<div class="col-12">
|
|
23
|
+
<fedi-post-view object="{{this.identifier}}"></fedi-post-view>
|
|
24
|
+
</div>
|
|
23
25
|
</div>
|
|
24
26
|
</div>
|
|
25
|
-
</
|
|
27
|
+
</div>
|
|
26
28
|
{% endblock %}
|