whyis-fediverse 0.4.4__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.
Files changed (33) hide show
  1. whyis_fediverse/static/js/comment.js +15 -14
  2. whyis_fediverse/static/js/discussion.js +5 -3
  3. whyis_fediverse/static/js/new_post.js +40 -35
  4. whyis_fediverse/static/js/post.js +31 -25
  5. whyis_fediverse/static/js/post_view.js +15 -19
  6. whyis_fediverse/static/js/selectable.js +5 -3
  7. whyis_fediverse/static/js/selections.js +5 -3
  8. whyis_fediverse/templates/all_discussion.html +44 -45
  9. whyis_fediverse/templates/discussion.html +44 -45
  10. whyis_fediverse/templates/embed_image.html +1 -1
  11. whyis_fediverse/templates/embed_resource.html +2 -2
  12. whyis_fediverse/templates/image_embed.html +1 -1
  13. whyis_fediverse/templates/object_view.html +7 -5
  14. {whyis_fediverse-0.4.4.dist-info → whyis_fediverse-1.0.0.dist-info}/METADATA +3 -3
  15. whyis_fediverse-1.0.0.dist-info/RECORD +31 -0
  16. {whyis_fediverse-0.4.4.dist-info → whyis_fediverse-1.0.0.dist-info}/WHEEL +1 -1
  17. whyis_fediverse/static/js/#new_post.js# +0 -237
  18. whyis_fediverse/static/js/selectable.js~ +0 -27
  19. whyis_fediverse/static/js/selections.js~ +0 -87
  20. whyis_fediverse/templates/__init__.py +0 -0
  21. whyis_fediverse/templates/all_discussion.html~ +0 -73
  22. whyis_fediverse/templates/embed_image.html~ +0 -1
  23. whyis_fediverse/templates/embed_object.html~ +0 -6
  24. whyis_fediverse/templates/embed_resource.html~ +0 -5
  25. whyis_fediverse/templates/embed_video.html~ +0 -6
  26. whyis_fediverse/templates/image_embed.svg +0 -3
  27. whyis_fediverse/test_example.trig +0 -115
  28. whyis_fediverse/test_example.ttl +0 -115
  29. whyis_fediverse/vocab.ttl +0 -93
  30. whyis_fediverse-0.4.4.dist-info/RECORD +0 -44
  31. {whyis_fediverse-0.4.4.dist-info → whyis_fediverse-1.0.0.dist-info}/entry_points.txt +0 -0
  32. {whyis_fediverse-0.4.4.dist-info → whyis_fediverse-1.0.0.dist-info/licenses}/LICENSE +0 -0
  33. {whyis_fediverse-0.4.4.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
- import {Vue, axios, createApp} from '../../../dist/whyis.js';
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
- <md-content style="margin-top:1.5em; width:100%">
34
- <div class="md-layout" v-if="value.attachment != null && value.attachment.length != 0">
35
- <fedi-selectable class="md-layout-item md-size-30" 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 class="md-layout" v-if="value.context != null && value.context.length != 0">
39
- <fedi-selectable class="md-layout-item md-size-30" 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 style="width:fit-content; margin-top:0.5em; border-radius:1em; padding-left:0.75em; padding-right:0.75em; background-color:lightgray">
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
- style="width:fit-content; margin-top:0.5em; border-radius:1em; padding-left:0.75em; padding-right:0.75em; background-color:lightgray">
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
- </md-content>
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 {Vue, axios, createApp} from '../../../dist/whyis.js';
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
- export default Vue.component('fedi-discussion', {
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 {Vue, axios, createApp} from '../../../dist/whyis.js';
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
- export default Vue.component('fedi-new-post', {
83
+ const component = {
84
84
  name: "fedi-new-post",
85
85
  props:{
86
86
  entity: {
@@ -109,38 +109,41 @@ export default Vue.component('fedi-new-post', {
109
109
  }
110
110
  },
111
111
  template: `
112
- <md-card>
113
- <md-card-content>
114
- <md-field>
115
- <label>What's on your mind?</label>
116
- <md-textarea v-on:keyup.enter.exact="sendPost()"
117
- v-model="post.content"
118
- md-autogrow>
119
- </md-textarea>
120
- <md-button class="md-icon-button" @click="sendPost()">
121
- <md-icon md-size="small">send</md-icon>
122
- </md-button>
123
- </md-field>
124
- <div class="md-layout">
125
- <div class="md-layout-item md-size-20" style="position:relative"
126
- v-for="item in selection"
127
- v-bind:key="item"
128
- v-on:mouseenter="hovers[item] = true"
129
- v-on:mouseleave="hovers[item] = false" >
130
- <div v-html="embeds[item]"></div>
131
- <md-button style="position: absolute; right: 0; top: 0; "
132
- class="md-icon-button md-raised md-mini"
133
- v-on:click="unselect(item)">
134
- <md-icon>delete</md-icon>
135
- </md-button>
136
- </div>
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>
137
124
  </div>
138
- <md-field id="media_upload">
139
- <label>Add media</label>
140
- <md-file name="media_upload" ref="attachments" v-model="attachments" multiple />
141
- </md-field>
142
- </md-card-content>
143
- </md-card>
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>
144
147
  `,
145
148
  watch: {
146
149
  selection: {
@@ -196,7 +199,7 @@ export default Vue.component('fedi-new-post', {
196
199
  this.post.published = now.toISOString();
197
200
  this.post.context = this.selection;
198
201
 
199
- let attachments = this.$refs.attachments.$refs.inputFile.files;
202
+ let attachments = this.$refs.attachments.files;
200
203
  let old_id = this.id;
201
204
  let post = this.post;
202
205
 
@@ -236,4 +239,6 @@ export default Vue.component('fedi-new-post', {
236
239
  },
237
240
  created(){
238
241
  }
239
- })
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
- import {Vue, axios, createApp} from '../../../dist/whyis.js';
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
- <md-card>
32
- <md-card-header>
33
- <md-card-header-text>
34
- <div class="md-subhead">
35
- <a :href="value.attributedTo.view">
36
- <md-avatar class="md-avatar-icon">{{value.attributedTo.name[0]}}</md-avatar>
37
- <strong>{{value.attributedTo.name}}</strong> <small>(@{{value.attributedTo.id.split('/').pop()}})</small>
38
- </a>
39
- <br/>
40
- <small><a :href="value.view">{{published}}</a></small>
41
- </div>
42
- <div class="md-title" v-if="value.name"><a :href="value.id">{{value.name}}</a></div>
43
- </md-card-header-text>
44
- </md-card-header>
45
- <md-card-content v-html="value.content"></md-card-content>
46
- <md-card-media v-if="(value.attachment != null && value.attachment.length != 0) || (value.context != null && value.context.length != 0)">
47
- <fedi-selectable v-bind:uri="a.id" v-for="a in value.attachment" v-bind:key="a.id" v-html="a.embed">
48
- </fedi-selectable>
49
- <fedi-selectable v-bind:uri="a.id" v-for="a in value.context" v-bind:key="a.id" v-html="a.embed">
50
- </fedi-selectable>
51
- </md-card-media>
52
- </md-card>
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 {Vue, axios, createApp} from '../../../dist/whyis.js';
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
- export default Vue.component('fedi-post-view', {
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="md-layout md-gutter">
29
- <div class="md-layout-item md-scrollbar">
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="md-layout-item md-scrollbar">
34
+ <div class="col-12 col-lg-6 overflow-y-auto">
35
35
  <div>
36
- <md-empty-state
37
- v-if="replies == null || replies.length == 0"
38
- md-icon="forum"
39
- md-label="Reply to this thread"
40
- md-description="Reply below to continue this conversation.">
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
- style="width:fit-content;
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 {Vue, axios, createApp} from '../../../dist/whyis.js';
1
+ import {axios, Vue} from '../../../dist/whyis.js';
2
2
 
3
- export default Vue.component('fedi-selectable', {
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 {Vue, axios, createApp} from '../../../dist/whyis.js';
2
+ import {axios, Vue} from '../../../dist/whyis.js';
3
3
 
4
- export default Vue.component('fedi-selection', {
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
- <md-card-header>
23
- <md-card-header-text>
24
- <ul class="nav nav-tabs">
25
- {% for v in this | get_views_list -%}
26
- <li class="nav-item {% if v['view'].value == view %}active{% endif %}">
27
- <a class="nav-link {% if v['view'].value == view %}active{% endif %}"
28
- href="{{url_for('entity.view', uri=this.identifier, view=v['view'])}}">
29
- {{v['label']}}
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;">
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
- </md-card-header-text>
62
- {% if attributes.thumbnail %}<md-card-media md-big >
63
- <img src="{{url_for('entity.view', uri=attributes.thumbnail)}}" alt="{{attributes.label}}"/>
64
- </md-card-media>{% endif %}
65
- </md-card-header>
66
- <md-card-content>
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
- </md-card-content>
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
- <md-card-header>
23
- <md-card-header-text>
24
- <ul class="nav nav-tabs">
25
- {% for v in this | get_views_list -%}
26
- <li class="nav-item {% if v['view'].value == view %}active{% endif %}">
27
- <a class="nav-link {% if v['view'].value == view %}active{% endif %}"
28
- href="{{url_for('entity.view', uri=this.identifier, view=v['view'])}}">
29
- {{v['label']}}
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
- </md-card-header-text>
62
- {% if attributes.thumbnail %}<md-card-media md-big >
63
- <img src="{{url_for('entity.view', uri=attributes.thumbnail)}}" alt="{{attributes.label}}"/>
64
- </md-card-media>{% endif %}
65
- </md-card-header>
66
- <md-card-content>
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
- </md-card-content>
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="md-title">{{g.get_label(this)}}</div>
4
+ <div class="img-fluid" class="fw-semibold">{{g.get_label(this)}}</div>
5
5
  {% endif %}
@@ -1,3 +1,3 @@
1
- <svg xmlns="http://www.w3.org/2000/svg">
1
+ <svg class="img-fluid" xmlns="http://www.w3.org/2000/svg">
2
2
  <image href="{{url_for('entity.view', uri=this.identifier)}}" />
3
3
  </svg>
@@ -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
- <md-card-content>
20
- <div class="md-layout md-gutter">
21
- <div class="md-layout-item">
22
- <fedi-post-view object="{{this.identifier}}"></fedi-post-view>
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
- </md-card-content>
27
+ </div>
26
28
  {% endblock %}
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: whyis-fediverse
3
- Version: 0.4.4
3
+ Version: 1.0.0
4
4
  License-File: LICENSE
5
5
  Requires-Dist: whyis
6
-
6
+ Dynamic: license-file