django-spire 0.17.6__py3-none-any.whl → 0.17.8__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.
- django_spire/consts.py +1 -1
- django_spire/core/templates/django_spire/dropdown/element/dropdown_link_element.html +5 -2
- django_spire/knowledge/collection/models.py +1 -1
- django_spire/knowledge/collection/tests/test_urls/test_page_urls.py +1 -11
- django_spire/knowledge/collection/urls/page_urls.py +0 -2
- django_spire/knowledge/collection/views/form_views.py +1 -1
- django_spire/knowledge/collection/views/page_views.py +1 -53
- django_spire/knowledge/entry/version/views/form_views.py +1 -8
- django_spire/knowledge/entry/version/views/page_views.py +7 -9
- django_spire/knowledge/entry/views/form_views.py +3 -11
- django_spire/knowledge/entry/views/page_views.py +1 -4
- django_spire/knowledge/entry/views/template_views.py +1 -18
- django_spire/knowledge/templates/django_spire/knowledge/collection/component/x_collection_navigation.html +20 -12
- django_spire/knowledge/templates/django_spire/knowledge/collection/page/form_page.html +2 -2
- django_spire/knowledge/templates/django_spire/knowledge/entry/file/page/list_page.html +1 -1
- django_spire/knowledge/templates/django_spire/knowledge/entry/page/form_page.html +2 -2
- django_spire/knowledge/templates/django_spire/knowledge/entry/page/import_form_page.html +2 -2
- django_spire/knowledge/templates/django_spire/knowledge/entry/version/page/detail_page.html +2 -2
- django_spire/knowledge/templates/django_spire/knowledge/entry/version/page/form_page.html +1 -1
- django_spire/knowledge/templates/django_spire/knowledge/{collection → navigation}/card/navigation_card.html +1 -1
- django_spire/knowledge/templates/django_spire/knowledge/{collection/navigation/navigation.html → navigation/content/navigation_content.html} +60 -54
- django_spire/knowledge/templates/django_spire/knowledge/navigation/item/collection/collection_item.html +29 -0
- django_spire/knowledge/templates/django_spire/knowledge/navigation/item/collection/dropdown/navigation_ellipsis_dropdown.html +15 -0
- django_spire/knowledge/templates/django_spire/knowledge/navigation/item/entry/dropdown/navigation_ellipsis_dropdown.html +12 -0
- django_spire/knowledge/templates/django_spire/knowledge/navigation/item/entry/entry_item.html +18 -0
- django_spire/knowledge/templates/django_spire/knowledge/navigation/page/full_page.html +84 -0
- django_spire/knowledge/templates/django_spire/knowledge/page/home_page.html +11 -0
- django_spire/knowledge/urls/__init__.py +1 -0
- django_spire/knowledge/urls/page_urls.py +10 -0
- django_spire/knowledge/views/__init__.py +0 -0
- django_spire/knowledge/views/page_views.py +24 -0
- {django_spire-0.17.6.dist-info → django_spire-0.17.8.dist-info}/METADATA +1 -1
- {django_spire-0.17.6.dist-info → django_spire-0.17.8.dist-info}/RECORD +36 -36
- django_spire/knowledge/templates/django_spire/knowledge/collection/card/collection_card.html +0 -50
- django_spire/knowledge/templates/django_spire/knowledge/collection/card/context_menu_card.html +0 -39
- django_spire/knowledge/templates/django_spire/knowledge/collection/navigation/content/navigation_content.html +0 -64
- django_spire/knowledge/templates/django_spire/knowledge/collection/navigation/item/collection_item.html +0 -24
- django_spire/knowledge/templates/django_spire/knowledge/collection/page/detail_page.html +0 -9
- django_spire/knowledge/templates/django_spire/knowledge/collection/page/list_page.html +0 -23
- django_spire/knowledge/templates/django_spire/knowledge/entry/card/context_menu_card.html +0 -39
- django_spire/knowledge/templates/django_spire/knowledge/entry/navigation/item/navigation_item.html +0 -8
- django_spire/knowledge/templates/django_spire/knowledge/page/full_page.html +0 -66
- {django_spire-0.17.6.dist-info → django_spire-0.17.8.dist-info}/WHEEL +0 -0
- {django_spire-0.17.6.dist-info → django_spire-0.17.8.dist-info}/licenses/LICENSE.md +0 -0
- {django_spire-0.17.6.dist-info → django_spire-0.17.8.dist-info}/top_level.txt +0 -0
django_spire/consts.py
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{# Background colours must be applied outside 'a' tag #}
|
|
2
2
|
<div class="bg-app-layer-one bg-app-layer-three-hover dropdown-item">
|
|
3
3
|
<a
|
|
4
|
-
class="fs
|
|
4
|
+
class="fs-7 p-0 cursor-pointer text-decoration-none text-app-default-text-color"
|
|
5
5
|
{% if link_url %}href="{{ link_url }}"{% endif %}
|
|
6
6
|
{% if x_link_url %}
|
|
7
7
|
x-show="{{ x_link_url }} ? true : false"
|
|
@@ -13,7 +13,10 @@
|
|
|
13
13
|
}"
|
|
14
14
|
>
|
|
15
15
|
{% block link_content %}
|
|
16
|
-
<div class="px-3 py-
|
|
16
|
+
<div class="px-3 py-2 text-nowrap {{ link_css }}">
|
|
17
|
+
{% if link_icon %}
|
|
18
|
+
<i class="{{ link_icon }} pe-1"></i>
|
|
19
|
+
{% endif %}
|
|
17
20
|
{% if link_text %}
|
|
18
21
|
{{ link_text }}
|
|
19
22
|
{% elif x_link_text %}
|
|
@@ -35,7 +35,7 @@ class Collection(HistoryModelMixin, OrderingModelMixin):
|
|
|
35
35
|
db_table = 'django_spire_knowledge_collection'
|
|
36
36
|
permissions = [
|
|
37
37
|
('can_access_all_collections', 'Can Access All Collections'),
|
|
38
|
-
('can_change_collection_groups', 'Can Change Collection Groups')
|
|
38
|
+
('can_change_collection_groups', 'Can Change Collection Groups'),
|
|
39
39
|
]
|
|
40
40
|
|
|
41
41
|
|
|
@@ -21,19 +21,9 @@ class CollectionPageUrlsTests(BaseTestCase):
|
|
|
21
21
|
|
|
22
22
|
self.assertEqual(response.status_code, 200)
|
|
23
23
|
|
|
24
|
-
def test_detail_view_url_path(self):
|
|
25
|
-
response = self.client.get(
|
|
26
|
-
reverse(
|
|
27
|
-
'django_spire:knowledge:collection:page:detail',
|
|
28
|
-
kwargs={'pk': self.test_collection.pk}
|
|
29
|
-
)
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
self.assertEqual(response.status_code, 200)
|
|
33
|
-
|
|
34
24
|
def test_list_view_url_path(self):
|
|
35
25
|
response = self.client.get(
|
|
36
|
-
reverse('django_spire:knowledge:
|
|
26
|
+
reverse('django_spire:knowledge:page:home')
|
|
37
27
|
)
|
|
38
28
|
|
|
39
29
|
self.assertEqual(response.status_code, 200)
|
|
@@ -20,58 +20,6 @@ def delete_view(request: WSGIRequest, pk: int) -> TemplateResponse:
|
|
|
20
20
|
delete_func=collection.services.processor.set_deleted,
|
|
21
21
|
return_url=request.GET.get(
|
|
22
22
|
'return_url',
|
|
23
|
-
reverse('django_spire:knowledge:
|
|
23
|
+
reverse('django_spire:knowledge:page:home')
|
|
24
24
|
)
|
|
25
25
|
)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
@AppAuthController('knowledge').permission_required('can_view')
|
|
29
|
-
def detail_view(request: WSGIRequest, pk: int) -> TemplateResponse:
|
|
30
|
-
collection = get_object_or_404(Collection, pk=pk)
|
|
31
|
-
|
|
32
|
-
def breadcrumbs_func(breadcrumbs):
|
|
33
|
-
breadcrumbs.add_breadcrumb(name='Knowledge')
|
|
34
|
-
breadcrumbs.add_breadcrumb(
|
|
35
|
-
name='Collections',
|
|
36
|
-
href=reverse('django_spire:knowledge:collection:page:list')
|
|
37
|
-
)
|
|
38
|
-
|
|
39
|
-
if collection.parent_id is not None:
|
|
40
|
-
parent = collection.parent
|
|
41
|
-
breadcrumbs.add_breadcrumb(
|
|
42
|
-
name=parent.name,
|
|
43
|
-
href=reverse(
|
|
44
|
-
viewname='django_spire:knowledge:collection:page:detail',
|
|
45
|
-
kwargs={'pk': parent.pk}
|
|
46
|
-
)
|
|
47
|
-
)
|
|
48
|
-
|
|
49
|
-
breadcrumbs.add_breadcrumb(name=collection.name)
|
|
50
|
-
|
|
51
|
-
return portal_views.detail_view(
|
|
52
|
-
request,
|
|
53
|
-
obj=collection,
|
|
54
|
-
breadcrumbs_func=breadcrumbs_func,
|
|
55
|
-
context_data={
|
|
56
|
-
'collection': collection,
|
|
57
|
-
'current_entries': (
|
|
58
|
-
collection.entries
|
|
59
|
-
.active()
|
|
60
|
-
.has_current_version()
|
|
61
|
-
.user_has_access(user=request.user)
|
|
62
|
-
.select_related('current_version__author')
|
|
63
|
-
.order_by('order')
|
|
64
|
-
)
|
|
65
|
-
},
|
|
66
|
-
template='django_spire/knowledge/collection/page/detail_page.html'
|
|
67
|
-
)
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
@AppAuthController('knowledge').permission_required('can_view')
|
|
71
|
-
def list_view(request: WSGIRequest) -> TemplateResponse:
|
|
72
|
-
return portal_views.list_view(
|
|
73
|
-
request,
|
|
74
|
-
model=Collection,
|
|
75
|
-
context_data={},
|
|
76
|
-
template='django_spire/knowledge/collection/page/list_page.html'
|
|
77
|
-
)
|
|
@@ -34,14 +34,7 @@ def update_form_view(request: WSGIRequest, pk: int) -> TemplateResponse:
|
|
|
34
34
|
breadcrumbs.add_breadcrumb(name='Knowledge')
|
|
35
35
|
breadcrumbs.add_breadcrumb(
|
|
36
36
|
name='Collections',
|
|
37
|
-
href=reverse('django_spire:knowledge:
|
|
38
|
-
)
|
|
39
|
-
breadcrumbs.add_breadcrumb(
|
|
40
|
-
name=entry.collection.name,
|
|
41
|
-
href=reverse(
|
|
42
|
-
'django_spire:knowledge:collection:page:detail',
|
|
43
|
-
kwargs={'pk': entry.collection_id}
|
|
44
|
-
)
|
|
37
|
+
href=reverse('django_spire:knowledge:page:home')
|
|
45
38
|
)
|
|
46
39
|
breadcrumbs.add_breadcrumb(
|
|
47
40
|
name=f'View {entry.name}',
|
|
@@ -17,19 +17,17 @@ def detail_view(request: WSGIRequest, pk: int) -> TemplateResponse:
|
|
|
17
17
|
version_blocks = current_version.blocks.active().order_by('order')
|
|
18
18
|
|
|
19
19
|
def breadcrumbs_func(breadcrumbs):
|
|
20
|
-
breadcrumbs.add_breadcrumb(name='Knowledge')
|
|
21
20
|
breadcrumbs.add_breadcrumb(
|
|
22
|
-
name='
|
|
23
|
-
href=reverse('django_spire:knowledge:
|
|
21
|
+
name='Knowledge',
|
|
22
|
+
href=reverse('django_spire:knowledge:page:home')
|
|
24
23
|
)
|
|
24
|
+
collection = entry.collection
|
|
25
25
|
breadcrumbs.add_breadcrumb(
|
|
26
|
-
name=
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
)
|
|
26
|
+
name=f'{collection.name}'
|
|
27
|
+
)
|
|
28
|
+
breadcrumbs.add_breadcrumb(
|
|
29
|
+
name=f'{entry.name}',
|
|
31
30
|
)
|
|
32
|
-
breadcrumbs.add_breadcrumb(name=f'View {entry.name}')
|
|
33
31
|
|
|
34
32
|
return portal_views.detail_view(
|
|
35
33
|
request,
|
|
@@ -33,12 +33,12 @@ def form_view(
|
|
|
33
33
|
|
|
34
34
|
if form.is_valid():
|
|
35
35
|
form.cleaned_data['collection'] = collection
|
|
36
|
-
|
|
36
|
+
entry, _ = entry.services.save_model_obj(author=request.user, **form.cleaned_data)
|
|
37
37
|
|
|
38
38
|
return HttpResponseRedirect(
|
|
39
39
|
reverse(
|
|
40
|
-
'django_spire:knowledge:
|
|
41
|
-
kwargs={'pk':
|
|
40
|
+
'django_spire:knowledge:entry:version:page:detail',
|
|
41
|
+
kwargs={'pk': entry.pk}
|
|
42
42
|
)
|
|
43
43
|
)
|
|
44
44
|
|
|
@@ -105,14 +105,6 @@ def import_form_view(
|
|
|
105
105
|
show_form_errors(request, file_form)
|
|
106
106
|
|
|
107
107
|
breadcrumbs = Breadcrumbs()
|
|
108
|
-
if collection_pk != 0:
|
|
109
|
-
breadcrumbs.add_breadcrumb(
|
|
110
|
-
name=Collection.objects.get(pk=collection_pk).name,
|
|
111
|
-
href=reverse(
|
|
112
|
-
'django_spire:knowledge:collection:page:detail',
|
|
113
|
-
kwargs={'pk': collection_pk}
|
|
114
|
-
)
|
|
115
|
-
)
|
|
116
108
|
breadcrumbs.add_breadcrumb(name='Import Files')
|
|
117
109
|
supported_file_types = [
|
|
118
110
|
'.' + file_type for file_type in list(FILE_TYPE_CONVERTER_MAP.keys())
|
|
@@ -18,9 +18,6 @@ def delete_view(request: WSGIRequest, pk: int) -> TemplateResponse:
|
|
|
18
18
|
delete_func=entry.services.processor.set_deleted,
|
|
19
19
|
return_url=request.GET.get(
|
|
20
20
|
'return_url',
|
|
21
|
-
reverse(
|
|
22
|
-
'django_spire:knowledge:collection:page:detail',
|
|
23
|
-
kwargs={'pk': entry.collection.pk}
|
|
24
|
-
)
|
|
21
|
+
reverse('django_spire:knowledge:page:home')
|
|
25
22
|
)
|
|
26
23
|
)
|
|
@@ -18,26 +18,9 @@ def file_list_view(request: WSGIRequest, collection_pk: int = 0) -> TemplateResp
|
|
|
18
18
|
|
|
19
19
|
breadcrumbs.add_breadcrumb(
|
|
20
20
|
name='Collections',
|
|
21
|
-
href=reverse('django_spire:knowledge:
|
|
21
|
+
href=reverse('django_spire:knowledge:page:home')
|
|
22
22
|
)
|
|
23
23
|
|
|
24
|
-
if collection.parent_id is not None:
|
|
25
|
-
parent = collection.parent
|
|
26
|
-
breadcrumbs.add_breadcrumb(
|
|
27
|
-
name=parent.name,
|
|
28
|
-
href=reverse(
|
|
29
|
-
viewname='django_spire:knowledge:collection:page:detail',
|
|
30
|
-
kwargs={'pk': parent.pk}
|
|
31
|
-
)
|
|
32
|
-
)
|
|
33
|
-
|
|
34
|
-
breadcrumbs.add_breadcrumb(
|
|
35
|
-
name=collection.name,
|
|
36
|
-
href=reverse(
|
|
37
|
-
viewname='django_spire:knowledge:collection:page:detail',
|
|
38
|
-
kwargs={'pk': collection.pk}
|
|
39
|
-
)
|
|
40
|
-
)
|
|
41
24
|
breadcrumbs.add_breadcrumb(name='Importing Files')
|
|
42
25
|
|
|
43
26
|
return TemplateResponse(
|
|
@@ -1,33 +1,41 @@
|
|
|
1
1
|
<template x-component="collection-navigation">
|
|
2
2
|
<div
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
{% if AuthController.knowledge.can_change %}
|
|
4
|
+
x-sort="await move_collection({collection: $item, order: $position, new_parent: data.id})"
|
|
5
|
+
x-sort:group="collection"
|
|
6
|
+
{% endif %}
|
|
5
7
|
>
|
|
6
8
|
<template x-for="collection in data.items" :key="collection.id">
|
|
7
9
|
<div
|
|
8
|
-
|
|
10
|
+
{% if AuthController.knowledge.can_change %}
|
|
11
|
+
x-sort:item="collection"
|
|
12
|
+
@dragstart="toggle_dragging(true)"
|
|
13
|
+
@dragend="toggle_dragging(false)"
|
|
14
|
+
{% endif %}
|
|
9
15
|
:id="collection.name"
|
|
10
16
|
class="my-1 ms-4 collection"
|
|
11
|
-
@dragstart="toggle_dragging(true)"
|
|
12
|
-
@dragend="toggle_dragging(false)"
|
|
13
17
|
>
|
|
14
|
-
{% include 'django_spire/knowledge/
|
|
18
|
+
{% include 'django_spire/knowledge/navigation/item/collection/collection_item.html' %}
|
|
15
19
|
<div x-show="collection.show_details" class="my-1">
|
|
16
20
|
<x-collection-navigation :data="{items: collection.children, id: collection.id}"></x-collection-navigation>
|
|
17
21
|
<div class="ms-4">
|
|
18
22
|
<div
|
|
19
|
-
|
|
20
|
-
|
|
23
|
+
{% if AuthController.knowledge.can_change %}
|
|
24
|
+
x-sort="await move_entry({entry: $item, collection: collection, order: $position})"
|
|
25
|
+
x-sort:group="entry"
|
|
26
|
+
{% endif %}
|
|
21
27
|
>
|
|
22
28
|
<template x-for="entry in collection.entries" :key="entry.version_id">
|
|
23
29
|
<div
|
|
24
30
|
class="entry"
|
|
25
|
-
|
|
31
|
+
{% if AuthController.knowledge.can_change %}
|
|
32
|
+
x-sort:item="collection"
|
|
33
|
+
@dragstart="toggle_dragging(true)"
|
|
34
|
+
@dragend="toggle_dragging(false)"
|
|
35
|
+
{% endif %}
|
|
26
36
|
:id="entry.name"
|
|
27
|
-
@dragstart="toggle_dragging(true)"
|
|
28
|
-
@dragend="toggle_dragging(false)"
|
|
29
37
|
>
|
|
30
|
-
{% include
|
|
38
|
+
{% include 'django_spire/knowledge/navigation/item/entry/entry_item.html' %}
|
|
31
39
|
</div>
|
|
32
40
|
</template>
|
|
33
41
|
</div>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{% extends 'django_spire/page/full_page.html' %}
|
|
1
|
+
{% extends 'django_spire/knowledge/navigation/page/full_page.html' %}
|
|
2
2
|
|
|
3
|
-
{% block
|
|
3
|
+
{% block knowledge_full_page_content %}
|
|
4
4
|
<div class="row">
|
|
5
5
|
<div class="col-12">
|
|
6
6
|
{% include 'django_spire/knowledge/collection/card/form_card.html' %}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{% extends 'django_spire/page/full_page.html' %}
|
|
1
|
+
{% extends 'django_spire/knowledge/navigation/page/full_page.html' %}
|
|
2
2
|
|
|
3
|
-
{% block
|
|
3
|
+
{% block knowledge_full_page_content %}
|
|
4
4
|
<div class="row">
|
|
5
5
|
<div class="col-12">
|
|
6
6
|
{% include 'django_spire/knowledge/entry/card/form_card.html' %}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
{% extends 'django_spire/page/full_page.html' %}
|
|
1
|
+
{% extends 'django_spire/knowledge/navigation/page/full_page.html' %}
|
|
2
2
|
|
|
3
|
-
{% block
|
|
3
|
+
{% block knowledge_full_page_content %}
|
|
4
4
|
<div class="row">
|
|
5
5
|
<div class="col-12">
|
|
6
6
|
{% include 'django_spire/knowledge/entry/container/import_form_container.html' %}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
{% extends 'django_spire/knowledge/page/full_page.html' %}
|
|
1
|
+
{% extends 'django_spire/knowledge/navigation/page/full_page.html' %}
|
|
2
2
|
|
|
3
3
|
{% block knowledge_full_page_content %}
|
|
4
4
|
<div class="row justify-content-center ps-3">
|
|
5
|
-
<div class="col-12 col-xl-8">
|
|
5
|
+
<div class="col-12 col-xl-8'">
|
|
6
6
|
{% include 'django_spire/knowledge/entry/version/container/detail_container.html' %}
|
|
7
7
|
</div>
|
|
8
8
|
</div>
|
|
@@ -2,9 +2,6 @@
|
|
|
2
2
|
x-data="{
|
|
3
3
|
user_search: '',
|
|
4
4
|
found_items: new Map(),
|
|
5
|
-
show_context_menu: false,
|
|
6
|
-
x: 0,
|
|
7
|
-
y: 0,
|
|
8
5
|
focused_object: {},
|
|
9
6
|
focused_type: '',
|
|
10
7
|
title: '',
|
|
@@ -83,57 +80,66 @@
|
|
|
83
80
|
this.found_items = item_map
|
|
84
81
|
}
|
|
85
82
|
},
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
show_menu({event, type, object}) {
|
|
89
|
-
this.x = event.pageX
|
|
90
|
-
this.y = event.pageY
|
|
91
|
-
this.focused_type = type
|
|
92
|
-
this.focused_object = object
|
|
93
|
-
this.title = this.focused_object.name
|
|
94
|
-
this.show_context_menu = true
|
|
95
|
-
},
|
|
96
|
-
hide_menu() {
|
|
97
|
-
this.show_context_menu = false
|
|
98
|
-
this.focused_object = {}
|
|
99
|
-
},
|
|
100
|
-
|
|
101
|
-
{% if AuthController.knowledge.can_view %}
|
|
102
|
-
view_entry() {
|
|
103
|
-
window.location.href = this.focused_object.view_url
|
|
104
|
-
},
|
|
105
|
-
{% endif %}
|
|
106
|
-
|
|
107
|
-
{% if AuthController.knowledge.can_change %}
|
|
108
|
-
edit_collection() {
|
|
109
|
-
window.location.href = this.focused_object.edit_url
|
|
110
|
-
},
|
|
111
|
-
edit_entry() {
|
|
112
|
-
window.location.href = this.focused_object.edit_url
|
|
113
|
-
},
|
|
114
|
-
edit_entry_version() {
|
|
115
|
-
window.location.href = this.focused_object.edit_version_url
|
|
116
|
-
},
|
|
117
|
-
{% endif %}
|
|
118
|
-
|
|
119
|
-
{% if AuthController.knowledge.can_delete %}
|
|
120
|
-
delete_entry() {
|
|
121
|
-
window.location.href = this.focused_object.delete_url
|
|
122
|
-
},
|
|
123
|
-
delete_collection() {
|
|
124
|
-
window.location.href = this.focused_object.delete_url
|
|
125
|
-
},
|
|
126
|
-
{% endif %}
|
|
127
|
-
|
|
128
|
-
{% if AuthController.knowledge.can_add %}
|
|
129
|
-
import_entry() {
|
|
130
|
-
window.location.href = this.focused_object.import_entry_url
|
|
131
|
-
},
|
|
132
|
-
add_entry() {
|
|
133
|
-
window.location.href = this.focused_object.create_entry_url
|
|
134
|
-
},
|
|
135
|
-
{% endif %}
|
|
136
83
|
}"
|
|
137
84
|
>
|
|
138
|
-
|
|
85
|
+
<div class="container-fluid">
|
|
86
|
+
<div class="row align-items-center border-bottom mx-1 pb-2">
|
|
87
|
+
<div class="col px-0 text-uppercase pb-2 d-flex align-items-center">
|
|
88
|
+
Collections
|
|
89
|
+
</div>
|
|
90
|
+
<div class="col-auto px-0 pb-2">
|
|
91
|
+
{% if AuthController.knowledge.can_add %}
|
|
92
|
+
{% url 'django_spire:knowledge:collection:form:create' as create_url %}
|
|
93
|
+
{% include 'django_spire/button/primary_button.html' with button_text='Add' button_href=create_url button_icon="bi bi-plus" %}
|
|
94
|
+
{% endif %}
|
|
95
|
+
</div>
|
|
96
|
+
<div class="col-12 px-0">
|
|
97
|
+
<input
|
|
98
|
+
class="rounded-2 p-1 form-control"
|
|
99
|
+
type="text"
|
|
100
|
+
placeholder="Search ..."
|
|
101
|
+
x-model="user_search"
|
|
102
|
+
@input.debounce.300ms="search"
|
|
103
|
+
>
|
|
104
|
+
</div>
|
|
105
|
+
</div>
|
|
106
|
+
</div>
|
|
107
|
+
<div
|
|
108
|
+
class="user-select-none pe-3"
|
|
109
|
+
x-sort:config="{
|
|
110
|
+
handle: '[x-sort\\:handle]',
|
|
111
|
+
distance: 20,
|
|
112
|
+
swapThreshold: 0.01
|
|
113
|
+
}"
|
|
114
|
+
>
|
|
115
|
+
{% include 'django_spire/knowledge/collection/component/x_collection_navigation.html' %}
|
|
116
|
+
|
|
117
|
+
<div class="navigation-items">
|
|
118
|
+
<x-collection-navigation :data="{items: manager.collection_map, id: null}"></x-collection-navigation>
|
|
119
|
+
</div>
|
|
120
|
+
<div class="search-items">
|
|
121
|
+
<template x-for="(item, index) in Array.from(found_items.values())" :key="index">
|
|
122
|
+
<div>
|
|
123
|
+
<template x-if="item?.constructor.name === 'Collection'">
|
|
124
|
+
<div
|
|
125
|
+
x-data="{
|
|
126
|
+
collection: item
|
|
127
|
+
}"
|
|
128
|
+
>
|
|
129
|
+
{% include 'django_spire/knowledge/navigation/item/collection/collection_item.html' with hide_chevron=True %}
|
|
130
|
+
</div>
|
|
131
|
+
</template>
|
|
132
|
+
<template x-if="item?.constructor.name === 'Entry'">
|
|
133
|
+
<div
|
|
134
|
+
x-data="{
|
|
135
|
+
entry: item
|
|
136
|
+
}"
|
|
137
|
+
>
|
|
138
|
+
{% include 'django_spire/knowledge/navigation/item/entry/entry_item.html' %}
|
|
139
|
+
</div>
|
|
140
|
+
</template>
|
|
141
|
+
</div>
|
|
142
|
+
</template>
|
|
143
|
+
</div>
|
|
144
|
+
</div>
|
|
139
145
|
</div>
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<div class="knowledge-nav-item cursor-pointer row">
|
|
2
|
+
<div
|
|
3
|
+
class="col text-start"
|
|
4
|
+
{% if AuthController.knowledge.can_view %}
|
|
5
|
+
@click="collection.toggle_show_details({value: !collection.show_details})"
|
|
6
|
+
{% endif %}
|
|
7
|
+
>
|
|
8
|
+
<i
|
|
9
|
+
:class="collection.show_details ? 'bi bi-chevron-down' : 'bi bi-chevron-right'"
|
|
10
|
+
{% if hide_chevron %}
|
|
11
|
+
style="visibility: hidden"
|
|
12
|
+
{% else %}
|
|
13
|
+
:style="{visibility: (collection.has_child_collections() || collection.has_entries()) ? 'visible' : 'hidden'}"
|
|
14
|
+
{% endif %}
|
|
15
|
+
></i>
|
|
16
|
+
<i class="bi bi-folder2 fs-5"></i>
|
|
17
|
+
<span
|
|
18
|
+
:class="collection.id === {{ collection.pk|default:0 }} ? 'text-app-accent' : ''"
|
|
19
|
+
x-text="collection.name"
|
|
20
|
+
></span>
|
|
21
|
+
</div>
|
|
22
|
+
{% if AuthController.knowledge.can_view %}
|
|
23
|
+
<div class="col-auto">
|
|
24
|
+
<div class="d-flex h-100 justify-content-center align-items-center">
|
|
25
|
+
{% include 'django_spire/knowledge/navigation/item/collection/dropdown/navigation_ellipsis_dropdown.html' %}
|
|
26
|
+
</div>
|
|
27
|
+
</div>
|
|
28
|
+
{% endif %}
|
|
29
|
+
</div>
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{% extends 'django_spire/dropdown/ellipsis_dropdown.html' %}
|
|
2
|
+
|
|
3
|
+
{% block dropdown_content %}
|
|
4
|
+
{% if AuthController.knowledge.can_change %}
|
|
5
|
+
{% include 'django_spire/dropdown/element/dropdown_link_element.html' with x_link_url='collection.edit_url' link_icon='bi bi-pencil' link_text='Edit Collection' %}
|
|
6
|
+
{% endif %}
|
|
7
|
+
{% if AuthController.knowledge.can_add %}
|
|
8
|
+
{% include 'django_spire/dropdown/element/dropdown_link_element.html' with x_link_url='collection.create_entry_url' link_icon='bi bi-plus' link_text='Add Entry' %}
|
|
9
|
+
{% include 'django_spire/dropdown/element/dropdown_link_element.html' with x_link_url='collection.import_entry_url' link_icon='bi bi-upload' link_text='Import Entry' %}
|
|
10
|
+
{% endif %}
|
|
11
|
+
{% if AuthController.knowledge.can_delete %}
|
|
12
|
+
{% include 'django_spire/dropdown/element/dropdown_link_element.html' with x_link_url='collection.delete_url' link_icon='bi bi-trash3' link_text='Delete Collection' link_css='text-app-danger' %}
|
|
13
|
+
{% endif %}
|
|
14
|
+
{% endblock %}
|
|
15
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{% extends 'django_spire/dropdown/ellipsis_dropdown.html' %}
|
|
2
|
+
|
|
3
|
+
{% block dropdown_content %}
|
|
4
|
+
{% if AuthController.knowledge.can_change %}
|
|
5
|
+
{% include 'django_spire/dropdown/element/dropdown_link_element.html' with x_link_url='entry.edit_url' link_icon='bi bi-input-cursor-text' link_text='Rename' %}
|
|
6
|
+
{% include 'django_spire/dropdown/element/dropdown_link_element.html' with x_link_url='entry.edit_version_url' link_icon='bi bi-pencil' link_text='Edit' %}
|
|
7
|
+
{% endif %}
|
|
8
|
+
{% if AuthController.knowledge.can_delete %}
|
|
9
|
+
{% include 'django_spire/dropdown/element/dropdown_link_element.html' with x_link_url='entry.delete_url' link_icon='bi bi-trash3' link_text='Delete' link_css='text-app-danger' %}
|
|
10
|
+
{% endif %}
|
|
11
|
+
{% endblock %}
|
|
12
|
+
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
<div class="row ms-4 knowledge-nav-item cursor-pointer">
|
|
2
|
+
<a
|
|
3
|
+
class="col text-decoration-none text-app-default-text-color"
|
|
4
|
+
{% if AuthController.knowledge.can_view %}
|
|
5
|
+
:href="'{% url "django_spire:knowledge:entry:version:page:detail" pk=0 %}'.replace(0, entry.version_id)"
|
|
6
|
+
{% endif %}
|
|
7
|
+
>
|
|
8
|
+
<i class="bi bi-file-earmark-text"></i>
|
|
9
|
+
<span class="fw-normal" x-text="entry.name"></span>
|
|
10
|
+
</a>
|
|
11
|
+
{% if AuthController.knowledge.can_view %}
|
|
12
|
+
<div class="col-auto">
|
|
13
|
+
<div class="d-flex h-100 justify-content-center align-items-center">
|
|
14
|
+
{% include 'django_spire/knowledge/navigation/item/entry/dropdown/navigation_ellipsis_dropdown.html' %}
|
|
15
|
+
</div>
|
|
16
|
+
</div>
|
|
17
|
+
{% endif %}
|
|
18
|
+
</div>
|