tg-prepare 1.1.0__py3-none-any.whl → 2.1.0b2__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.
Potentially problematic release.
This version of tg-prepare might be problematic. Click here for more details.
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b2.dist-info}/METADATA +3 -3
- tg_prepare-2.1.0b2.dist-info/RECORD +78 -0
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b2.dist-info}/WHEEL +1 -1
- tg_prepare-2.1.0b2.dist-info/projects/.secret_key +1 -0
- tgp_backend/__init__.py +3 -4
- tgp_backend/config.py +31 -0
- tgp_backend/directories.py +6 -8
- tgp_backend/nextcloud.py +40 -19
- tgp_backend/project.py +172 -45
- tgp_backend/session_manager.py +47 -0
- tgp_backend/util.py +73 -25
- tgp_ui/app.py +43 -335
- tgp_ui/routes/__init__.py +0 -0
- tgp_ui/routes/collection.py +272 -0
- tgp_ui/routes/data.py +228 -0
- tgp_ui/routes/project.py +102 -0
- tgp_ui/routes/publication.py +129 -0
- tgp_ui/routes/tabs.py +34 -0
- tgp_ui/routes/views.py +62 -0
- tgp_ui/static/css/bootstrap.min.css.map +1 -0
- tgp_ui/static/css/navbar.css +92 -0
- tgp_ui/static/img/favicon.ico +0 -0
- tgp_ui/static/img/textgrid-logo.svg +1 -0
- tgp_ui/static/js/collectionManager.js +60 -0
- tgp_ui/static/js/fileManager.js +186 -0
- tgp_ui/static/js/main.js +32 -485
- tgp_ui/static/js/modalManager.js +105 -0
- tgp_ui/static/js/navbarManager.js +151 -0
- tgp_ui/static/js/projectManager.js +60 -0
- tgp_ui/static/js/require.js +5 -0
- tgp_ui/static/js/sidebarManager.js +32 -0
- tgp_ui/static/js/tabManager.js +79 -0
- tgp_ui/templates/details/empty_container.html +16 -0
- tgp_ui/templates/details/manage_collection.html +205 -0
- tgp_ui/templates/includes/set_session_id_form.html +16 -0
- tgp_ui/templates/includes/upload_form.html +131 -0
- tgp_ui/templates/layout.html +9 -48
- tgp_ui/templates/macros.html +79 -72
- tgp_ui/templates/modal/delete_project.html +25 -0
- tgp_ui/templates/modal/empty_container.html +9 -0
- tgp_ui/templates/modal/file_explorer_content.html +34 -0
- tgp_ui/templates/modal/file_explorer_main.html +22 -0
- tgp_ui/templates/modal/file_explorer_nextcloud.html +27 -0
- tgp_ui/templates/modal/github_modal.html +29 -0
- tgp_ui/templates/modal/nextcloud_login.html +48 -0
- tgp_ui/templates/modal/tei_explorer.html +58 -0
- tgp_ui/templates/modal/xpath_parser.html +52 -0
- tgp_ui/templates/project_main.html +36 -0
- tgp_ui/templates/project_navbar.html +81 -0
- tgp_ui/templates/{projects.html → projects_main.html} +13 -28
- tgp_ui/templates/tab_final_upload.html +29 -0
- tgp_ui/templates/tabs/check_result.html +90 -0
- tgp_ui/templates/tabs/edit_project.html +113 -0
- tgp_ui/templates/tabs/empty_container.html +12 -0
- tgp_ui/templates/tabs/import_data.html +138 -0
- tgp_ui/templates/tabs/manage_collections.html +88 -0
- tgp_ui/templates/tabs/select_directories.html +41 -0
- tgp_ui/templates/tabs/upload.html +42 -0
- tgp_ui/templates/tabs/validate_metadata.html +227 -0
- tg_prepare-1.1.0.dist-info/RECORD +0 -39
- tgp_ui/templates/collection.html +0 -194
- tgp_ui/templates/file_upload.html +0 -24
- tgp_ui/templates/nxc_file_tree.html +0 -33
- tgp_ui/templates/project.html +0 -26
- tgp_ui/templates/storage.html +0 -49
- tgp_ui/templates/tei_explorer.html +0 -48
- tgp_ui/templates/xpath_parser_modal_content.html +0 -37
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b2.dist-info}/entry_points.txt +0 -0
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b2.dist-info}/licenses/LICENSE +0 -0
- {tg_prepare-1.1.0.dist-info → tg_prepare-2.1.0b2.dist-info}/top_level.txt +0 -0
tgp_ui/templates/collection.html
DELETED
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
{% from "macros.html" import multi_input, xpath_or_value_input with context %}
|
|
2
|
-
<div class="row mb-4 text-center">
|
|
3
|
-
<h5>{{ collection.long_title }}</h5>
|
|
4
|
-
</div>
|
|
5
|
-
<form method="POST" class="row collection-form"
|
|
6
|
-
action="{{ url_for('save_collection', projectname=project.name, title=collection_title) }}" method="POST">
|
|
7
|
-
<div class="row mb-1">
|
|
8
|
-
<ul class="nav nav-tabs w-100 align-items-stretch" id="collectionTab{{ collection.short_title }}"
|
|
9
|
-
role="tablist">
|
|
10
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
11
|
-
<button class="nav-link text-dark active w-100 text-primary"
|
|
12
|
-
id="fixedAttributesTab_{{ collection_title }}" data-bs-toggle="tab"
|
|
13
|
-
data-bs-target="#fixedAttributesContent_{{ collection_title }}" type="button" role="tab"
|
|
14
|
-
aria-controls="fixedAttributesContent_{{ collection_title }}" aria-selected="true">
|
|
15
|
-
Project
|
|
16
|
-
</button>
|
|
17
|
-
</li>
|
|
18
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
19
|
-
<button class="nav-link text-dark w-100" id="classificationAttributesTab_{{ collection_title }}"
|
|
20
|
-
data-bs-toggle="tab" data-bs-target="#classificationAttributesContent_{{ collection_title }}"
|
|
21
|
-
type="button" role="tab" aria-controls="classificationAttributesContent_{{ collection_title }}"
|
|
22
|
-
aria-selected="false">
|
|
23
|
-
Classifications
|
|
24
|
-
</button>
|
|
25
|
-
</li>
|
|
26
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
27
|
-
<button class="nav-link text-dark w-100" id="workAttributesTab_{{ collection_title }}"
|
|
28
|
-
data-bs-toggle="tab" data-bs-target="#workAttributesContent_{{ collection_title }}" type="button"
|
|
29
|
-
role="tab" aria-controls="workAttributesContent_{{ collection_title }}" aria-selected="false">
|
|
30
|
-
Work
|
|
31
|
-
</button>
|
|
32
|
-
</li>
|
|
33
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
34
|
-
<button class="nav-link text-dark w-100" id="editionAttributesTab_{{ collection_title }}"
|
|
35
|
-
data-bs-toggle="tab" data-bs-target="#editionAttributesContent_{{ collection_title }}" type="button"
|
|
36
|
-
role="tab" aria-controls="editionAttributesContent_{{ collection_title }}" aria-selected="false">
|
|
37
|
-
Edition
|
|
38
|
-
</button>
|
|
39
|
-
</li>
|
|
40
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
41
|
-
<button class="nav-link text-dark w-100" id="eltecAttributesTab_{{ collection_title }}"
|
|
42
|
-
data-bs-toggle="tab" data-bs-target="#eltecAttributesContent_{{ collection_title }}" type="button"
|
|
43
|
-
role="tab" aria-controls="eltecAttributesContent_{{ collection_title }}" aria-selected="false">
|
|
44
|
-
ELTEC specifications
|
|
45
|
-
</button>
|
|
46
|
-
</li>
|
|
47
|
-
<li class="nav-item col-12 col-lg-2 mb-2 mb-md-0" role="presentation">
|
|
48
|
-
<button class="nav-link text-dark w-100 tei_explorer" id="teiExplorer_{{ collection_title }}"
|
|
49
|
-
data-bs-toggle="tab" data-bs-target="#teiExplorerContent_{{ collection_title }}" type="button"
|
|
50
|
-
role="tab" aria-controls="teiExplorerContent_{{ collection_title }}" aria-selected="false"
|
|
51
|
-
data-url="{{url_for('tei_explorer', projectname=project.name, title=collection_title)}}">
|
|
52
|
-
TEI explorer
|
|
53
|
-
</button>
|
|
54
|
-
</li>
|
|
55
|
-
</ul>
|
|
56
|
-
</div>
|
|
57
|
-
<div class="row my-2">
|
|
58
|
-
<li class="nav-item col-12 col-lg-2 mt-2 mt-md-0" role="presentation">
|
|
59
|
-
<button type="submit" class="btn btn-success w-100">
|
|
60
|
-
<span class="spinner-border spinner-border-sm d-none" role="status" aria-hidden="true"></span>
|
|
61
|
-
<span>Save</span>
|
|
62
|
-
</button>
|
|
63
|
-
</li>
|
|
64
|
-
</div>
|
|
65
|
-
<div class="row tab-content" id="collectionTabContent{{ collection.short_title }}">
|
|
66
|
-
<div class="tab-pane fade show active" id="fixedAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
67
|
-
aria-labelledby="fixedAttributesTab_{{ collection_title }}">
|
|
68
|
-
<div class="col-12">
|
|
69
|
-
<div class="mb-3 row">
|
|
70
|
-
<label class="col-sm-2 col-form-label">Long title</label>
|
|
71
|
-
<div class="col-sm-10">
|
|
72
|
-
<input type="text" class="form-control" name="long_title" value="{{ collection.long_title }}">
|
|
73
|
-
</div>
|
|
74
|
-
</div>
|
|
75
|
-
<div class="mb-3 row">
|
|
76
|
-
<label class="col-sm-2 col-form-label">Short title</label>
|
|
77
|
-
<div class="col-sm-10">
|
|
78
|
-
<input type="text" class="form-control" name="short_title" value="{{ collection.short_title }}">
|
|
79
|
-
</div>
|
|
80
|
-
</div>
|
|
81
|
-
{{ multi_input('rights_holder', 'Rights Holder', collection.rights_holder, version=2) }}
|
|
82
|
-
{{ multi_input('collector', 'Collector', collection.collector, version=2) }}
|
|
83
|
-
</div>
|
|
84
|
-
</div>
|
|
85
|
-
{% set collection_parser = project.get_collection_parser(collection) %}
|
|
86
|
-
<div class="tab-pane fade" id="workAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
87
|
-
aria-labelledby="workAttributesTab_{{ collection_title }}">
|
|
88
|
-
<div class="col-12">
|
|
89
|
-
<div class="mb-3 row">
|
|
90
|
-
<label class="col-sm-12 col-form-label"><b>General</b>
|
|
91
|
-
</label>
|
|
92
|
-
</div>
|
|
93
|
-
{{ xpath_or_value_input('ID', 'work_id',
|
|
94
|
-
collection.work_id, collection_parser) }}
|
|
95
|
-
{{ xpath_or_value_input('Title', 'work_title', collection.work_title, collection_parser) }}
|
|
96
|
-
{{ xpath_or_value_input('Genre', 'genre', collection.genre, collection_parser) }}
|
|
97
|
-
{{ xpath_or_value_input('Place of publication', 'work_publication_place',
|
|
98
|
-
collection.work_publication_place, collection_parser) }}
|
|
99
|
-
|
|
100
|
-
<div class="mb-3 row">
|
|
101
|
-
<label class="col-sm-12 col-form-label"><b>Author</b>
|
|
102
|
-
</label>
|
|
103
|
-
</div>
|
|
104
|
-
{{ xpath_or_value_input('ID', 'author_id', collection.author_id, collection_parser)
|
|
105
|
-
}}
|
|
106
|
-
{{ xpath_or_value_input('Firstname', 'author_firstname', collection.author_firstname, collection_parser)
|
|
107
|
-
}}
|
|
108
|
-
{{ xpath_or_value_input('Lastname', 'author_lastname', collection.author_lastname, collection_parser) }}
|
|
109
|
-
{{ xpath_or_value_input('Fullname', 'author_fullname', collection.author_fullname, collection_parser) }}
|
|
110
|
-
<div class="mb-3 row">
|
|
111
|
-
<label class="col-sm-12 col-form-label"><b>Date of Creation</b>
|
|
112
|
-
</label>
|
|
113
|
-
</div>
|
|
114
|
-
{{ xpath_or_value_input('Date', 'work_publication_date',
|
|
115
|
-
collection.work_publication_date,
|
|
116
|
-
collection_parser) }}
|
|
117
|
-
{{ xpath_or_value_input('notBefore', 'work_publication_notBefore',
|
|
118
|
-
collection.work_publication_notBefore,
|
|
119
|
-
collection_parser) }}
|
|
120
|
-
{{ xpath_or_value_input('notAfter', 'work_publication_notAfter',
|
|
121
|
-
collection.work_publication_notAfter,
|
|
122
|
-
collection_parser) }}
|
|
123
|
-
</div>
|
|
124
|
-
</div>
|
|
125
|
-
<div class="tab-pane fade" id="classificationAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
126
|
-
aria-labelledby="classificationAttributesTab_{{ collection_title }}">
|
|
127
|
-
<div class="col-12">
|
|
128
|
-
{{ multi_input('basic_classifications', 'Basic classification', collection.basic_classifications,
|
|
129
|
-
version=1)
|
|
130
|
-
}}
|
|
131
|
-
{{ multi_input('gnd_subjects', 'GND Subject Areas', collection.gnd_subjects, version=1) }}
|
|
132
|
-
|
|
133
|
-
</div>
|
|
134
|
-
</div>
|
|
135
|
-
<div class="tab-pane fade" id="editionAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
136
|
-
aria-labelledby="editionAttributesTab_{{ collection_title }}">
|
|
137
|
-
<div class="col-12">
|
|
138
|
-
<div class="mb-3 row">
|
|
139
|
-
<label class="col-sm-12 col-form-label"><b>General</b>
|
|
140
|
-
</label>
|
|
141
|
-
</div>
|
|
142
|
-
{{ xpath_or_value_input('Title', 'edition_title', collection.edition_title,
|
|
143
|
-
collection_parser) }}
|
|
144
|
-
{{ xpath_or_value_input('Author ID', 'edition_author', collection.edition_author,
|
|
145
|
-
collection_parser) }}
|
|
146
|
-
{{ xpath_or_value_input('Language', 'language', collection.language, collection_parser) }}
|
|
147
|
-
{{ xpath_or_value_input('Wordcount', 'wordcount', collection.wordcount, collection_parser) }}
|
|
148
|
-
|
|
149
|
-
<div class="mb-3 row">
|
|
150
|
-
<label class="col-sm-12 col-form-label"><i>Publication</i>
|
|
151
|
-
</label>
|
|
152
|
-
</div>
|
|
153
|
-
{{ xpath_or_value_input('Date', 'edition_publication_date',
|
|
154
|
-
collection.edition_publication_date, collection_parser) }}
|
|
155
|
-
{{ xpath_or_value_input('Place', 'edition_publication_place',
|
|
156
|
-
collection.edition_publication_place, collection_parser) }}
|
|
157
|
-
<div class="mb-3 row">
|
|
158
|
-
<label class="col-sm-12 col-form-label"><i>License</i>
|
|
159
|
-
</label>
|
|
160
|
-
</div>
|
|
161
|
-
{{ xpath_or_value_input('Title', 'edition_license_title',
|
|
162
|
-
collection.edition_license_title, collection_parser) }}
|
|
163
|
-
{{ xpath_or_value_input('URL', 'edition_license_url',
|
|
164
|
-
collection.edition_license_url, collection_parser) }}
|
|
165
|
-
|
|
166
|
-
</div>
|
|
167
|
-
</div>
|
|
168
|
-
<div class="tab-pane fade" id="eltecAttributesContent_{{ collection_title }}" role="tabpanel"
|
|
169
|
-
aria-labelledby="eltecAttributesTab_{{ collection_title }}">
|
|
170
|
-
<div class="col-12">
|
|
171
|
-
<div class="mb-3 row">
|
|
172
|
-
<label class="col-sm-12 col-form-label"><b>General</b>
|
|
173
|
-
</label>
|
|
174
|
-
</div>
|
|
175
|
-
{{ xpath_or_value_input('Author gender', 'eltec_author_gender', collection.eltec_author_gender,
|
|
176
|
-
collection_parser) }}
|
|
177
|
-
{{ xpath_or_value_input('Reprint count', 'eltec_reprintCount', collection.eltec_reprintCount,
|
|
178
|
-
collection_parser) }}
|
|
179
|
-
{{ xpath_or_value_input('Author gender', 'eltec_author_gender', collection.eltec_author_gender,
|
|
180
|
-
collection_parser) }}
|
|
181
|
-
{{ xpath_or_value_input('Timeslot', 'eltec_time_slot', collection.eltec_time_slot,
|
|
182
|
-
collection_parser) }}
|
|
183
|
-
{{ xpath_or_value_input('Corpus collection', 'eltec_corpus', collection.eltec_corpus,
|
|
184
|
-
collection_parser) }}
|
|
185
|
-
{{ xpath_or_value_input('Size', 'eltec_size', collection.eltec_size,
|
|
186
|
-
collection_parser) }}
|
|
187
|
-
</div>
|
|
188
|
-
</div>
|
|
189
|
-
|
|
190
|
-
<div class="tab-pane fade tei-explorer-content" id="teiExplorerContent_{{ collection_title }}" role="tabpanel"
|
|
191
|
-
aria-labelledby="teiExplorer_{{ collection_title }}">TEI
|
|
192
|
-
explorer</div>
|
|
193
|
-
</form>
|
|
194
|
-
</div>
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
<form class="row mb-3" action="{{ url_for('upload_files', projectname=project.name) }}" method="POST"
|
|
2
|
-
enctype="multipart/form-data">
|
|
3
|
-
<h5>Upload Files or Folders</h5>
|
|
4
|
-
<div class="col-6">
|
|
5
|
-
<input type="file" class="form-control" name="files" multiple webkitdirectory onchange="this.form.submit()">
|
|
6
|
-
</div>
|
|
7
|
-
</form>
|
|
8
|
-
<form class="row" method="POST" data-url="{{ url_for('clone_git_project', projectname=project.name) }}" method="POST"
|
|
9
|
-
id="cloneFromGit">
|
|
10
|
-
<h5>Upload from git project</h5>
|
|
11
|
-
<i>Please be aware, that this can a take while (depending on the size of the git project)!</i>
|
|
12
|
-
<div class="col-6">
|
|
13
|
-
<input type="text" class="form-control" name="github_repo">
|
|
14
|
-
</div>
|
|
15
|
-
<div class="col-6">
|
|
16
|
-
<button type="submit" class="btn btn-primary">
|
|
17
|
-
<span class="spinner-border spinner-border-sm" style="display:none;" role="status"
|
|
18
|
-
aria-hidden="true"></span>
|
|
19
|
-
<span>Clone</span>
|
|
20
|
-
</button>
|
|
21
|
-
</div>
|
|
22
|
-
</form>
|
|
23
|
-
|
|
24
|
-
<br>
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
{% if item.type == 'folder' %}
|
|
2
|
-
<li class="list-group-item {{ active_class }} folder">
|
|
3
|
-
<div class="d-flex justify-content-between align-items-center">
|
|
4
|
-
<span>
|
|
5
|
-
<a href="#" class="badge text-dark show-files" title="Show files">
|
|
6
|
-
<span class="bi bi-eye-slash-fill"></span>
|
|
7
|
-
</a>
|
|
8
|
-
<span class="bi-folder-fill"></span>
|
|
9
|
-
{{ item.name }}
|
|
10
|
-
<a href="#" class="badge text-dark nxc_select-folder" title="Select folder" data-path="{{ item.path }}">
|
|
11
|
-
<span class="bi bi-circle" data-path="{{ item.path }}"></span>
|
|
12
|
-
</a>
|
|
13
|
-
<span class="spinner-border spinner-border-sm" style="display:none;"></span>
|
|
14
|
-
</span>
|
|
15
|
-
<span>
|
|
16
|
-
<span class="badge bg-primary rounded-pill">{{ item.children.count }}</span>
|
|
17
|
-
</span>
|
|
18
|
-
</div>
|
|
19
|
-
{% for child in item.children.list %}
|
|
20
|
-
{% with item=child %}
|
|
21
|
-
<ul class="list-group list-group-flush">
|
|
22
|
-
{% include 'nxc_file_tree.html' %}
|
|
23
|
-
</ul>
|
|
24
|
-
{% endwith %}
|
|
25
|
-
{% endfor %}
|
|
26
|
-
</li>
|
|
27
|
-
{% else %}
|
|
28
|
-
<li class="list-group-item p-0 ps-3 m-0 small text-muted {{ active_class }} file" style="display: none;">
|
|
29
|
-
<span class="bi-file-earmark-text-fill"></span>
|
|
30
|
-
{{ item.name }}
|
|
31
|
-
</span>
|
|
32
|
-
</li>
|
|
33
|
-
{% endif %}
|
tgp_ui/templates/project.html
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{% extends 'layout.html' %}
|
|
2
|
-
{% block content %}
|
|
3
|
-
<div class="row">
|
|
4
|
-
<div class="tab-content pt-2" id="tab-content">
|
|
5
|
-
<div class="tab-pane {{'active' if tab=='storage' }}" id="tab_storage" role="tabpanel">
|
|
6
|
-
{% include 'storage.html' %}
|
|
7
|
-
</div>
|
|
8
|
-
{% for c in project.collections %}
|
|
9
|
-
{% set collection_config = project.collections[c]['config'] %}
|
|
10
|
-
<div class="tab-pane {{ 'active' if tab==collection_config.short_title }}" id="tab_{{ c }}" role="tabpanel">
|
|
11
|
-
</div>
|
|
12
|
-
{% endfor %}
|
|
13
|
-
<div class="tab-pane {{'active' if tab=='publish' }}" id="tab_publish_{{ project.name }}"
|
|
14
|
-
data-url="{{ url_for('publication', projectname=project.name) }}" role="tabpanel">
|
|
15
|
-
<span class="spinner-border spinner-border-sm" role="status"></span>
|
|
16
|
-
</div>
|
|
17
|
-
</div>
|
|
18
|
-
</div>
|
|
19
|
-
|
|
20
|
-
<div class=" modal fade" id="xpathParserModal" tabindex="-1" aria-labelledby="xpathParserModalLabel" aria-hidden="true">
|
|
21
|
-
</div>
|
|
22
|
-
|
|
23
|
-
<div class="modal fade" id="teiExplorer" tabindex="-1" aria-labelledby="teiExplorerLabel" aria-hidden="true">
|
|
24
|
-
</div>
|
|
25
|
-
|
|
26
|
-
{% endblock %}
|
tgp_ui/templates/storage.html
DELETED
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
{% block content %}
|
|
2
|
-
<div class="row mb-4">
|
|
3
|
-
<ul class="nav nav-pills" id="" role="tablist">
|
|
4
|
-
<li class="nav-item me-2" role="presentation">
|
|
5
|
-
<button class="nav-link" data-bs-toggle="tab" href="#tab_upload" role="tab" aria-controls="tab_upload"
|
|
6
|
-
aria-selected="false">
|
|
7
|
-
<i class="bi bi-upload"></i>
|
|
8
|
-
Upload
|
|
9
|
-
</button>
|
|
10
|
-
</li>
|
|
11
|
-
<li class="nav-item">
|
|
12
|
-
<a class="nav-link" data-bs-toggle="tab" href="#tab_nextcloud" role="tab" aria-controls="tab_nextcloud"
|
|
13
|
-
aria-selected="false" data-url="{{ url_for('nextcloud_tab') }}" data-projectname="{{ project.name }}">
|
|
14
|
-
<i class="bi bi-cloud"></i>
|
|
15
|
-
Nextcloud
|
|
16
|
-
</a>
|
|
17
|
-
</li>
|
|
18
|
-
<li class="nav-item">
|
|
19
|
-
<a class="nav-link" data-bs-toggle="tab" href="#tab_files" role="tab" aria-controls="tab_files"
|
|
20
|
-
aria-selected="false">
|
|
21
|
-
<i class="bi bi-folder2-open"></i>
|
|
22
|
-
Local files
|
|
23
|
-
</a>
|
|
24
|
-
</li>
|
|
25
|
-
</ul>
|
|
26
|
-
</div>
|
|
27
|
-
<div class="row">
|
|
28
|
-
<div class="tab-content pt-2" id="tab-content">
|
|
29
|
-
<div class="tab-pane {{'active' if tab=='upload' }}" id="tab_upload" role="tabpanel">
|
|
30
|
-
{% include 'file_upload.html' %}
|
|
31
|
-
</div>
|
|
32
|
-
<div class="tab-pane {{'active' if tab=='files' }}" id="tab_files" role="tabpanel">
|
|
33
|
-
{% for item in project.list_files_and_folders() %}
|
|
34
|
-
{% include 'file_tree.html' %}
|
|
35
|
-
{% endfor %}
|
|
36
|
-
</div>
|
|
37
|
-
<div class="tab-pane {{'active' if tab=='nextcloud' }}" id="tab_nextcloud" role="tabpanel"
|
|
38
|
-
data-projectname="{{ project.name }}">
|
|
39
|
-
</div>
|
|
40
|
-
</div>
|
|
41
|
-
</div>
|
|
42
|
-
|
|
43
|
-
<div class=" modal fade" id="xpathParserModal" tabindex="-1" aria-labelledby="xpathParserModalLabel" aria-hidden="true">
|
|
44
|
-
</div>
|
|
45
|
-
|
|
46
|
-
<div class="modal fade" id="teiExplorer" tabindex="-1" aria-labelledby="teiExplorerLabel" aria-hidden="true">
|
|
47
|
-
</div>
|
|
48
|
-
|
|
49
|
-
{% endblock %}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
<div class="row mb-3">
|
|
2
|
-
<div class="col-12">
|
|
3
|
-
<div class="input-group">
|
|
4
|
-
<input type="text" class="form-control no-serialization" name="xpath" placeholder="XPath..."
|
|
5
|
-
aria-label="XPath-Ausdruck">
|
|
6
|
-
<button class="btn btn-primary check-xpath" id="button-check-xpath"
|
|
7
|
-
data-url="{{url_for('check_xpath', projectname=project.name, collectionname=collection_title)}}">
|
|
8
|
-
<span class="spinner-border spinner-border-sm d-none" role="status" aria-hidden="true"></span>
|
|
9
|
-
<span class="bi bi-search"></span>
|
|
10
|
-
</button>
|
|
11
|
-
</div>
|
|
12
|
-
</div>
|
|
13
|
-
</div>
|
|
14
|
-
<div class="row mb-3">
|
|
15
|
-
<div class="col-8">
|
|
16
|
-
<div class="row">
|
|
17
|
-
{% for file in file_list %}
|
|
18
|
-
<div class="col-xxl-4 col-lg-6 col-md-12 mb-2">
|
|
19
|
-
<div class="card mb-2">
|
|
20
|
-
<div class="card-body p-2">
|
|
21
|
-
<div class="d-flex justify-content-between align-items-center">
|
|
22
|
-
<div class="btn-group">
|
|
23
|
-
<a href="#" class="btn btn-sm btn-outline-secondary load-tei-content"
|
|
24
|
-
title="Display TEI Header" data-url="{{ url_for('load_tei_content') }}"
|
|
25
|
-
data-path="{{ file['fullpath'] }}" data-type="header" data-heading="TEI Header">
|
|
26
|
-
<span class="bi bi-file-earmark-code"></span>
|
|
27
|
-
</a>
|
|
28
|
-
<a href="#" class="btn btn-sm btn-outline-secondary load-tei-content"
|
|
29
|
-
title="Display TEI Text" data-url="{{ url_for('load_tei_content') }}"
|
|
30
|
-
data-path="{{ file['fullpath'] }}" data-type="text" data-heading="Text">
|
|
31
|
-
<span class="bi bi-file-earmark-text"></span>
|
|
32
|
-
</a>
|
|
33
|
-
</div>
|
|
34
|
-
<span class="ms-2 text-truncate">{{ file.name_stripped }}</span>
|
|
35
|
-
</div>
|
|
36
|
-
<div class="xpath-result mt-2" data-name="{{ file.name }}"></div>
|
|
37
|
-
</div>
|
|
38
|
-
</div>
|
|
39
|
-
</div>
|
|
40
|
-
{% endfor %}
|
|
41
|
-
</div>
|
|
42
|
-
</div>
|
|
43
|
-
<div class="col-4">
|
|
44
|
-
<div class="output card" style="max-height: 800px; overflow-x: auto;">
|
|
45
|
-
<div class="card-body"></div>
|
|
46
|
-
</div>
|
|
47
|
-
</div>
|
|
48
|
-
</div>
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
<div class="modal-dialog modal-xl">
|
|
2
|
-
<div class="modal-content">
|
|
3
|
-
<div class="modal-header">
|
|
4
|
-
<form class="row g-3" id="parseXPath" data-url="{{ request.base_url }}">
|
|
5
|
-
<div class="col-auto">
|
|
6
|
-
<h5 id="xpathParserModalLabel">Parse xpath:</h5>
|
|
7
|
-
</div>
|
|
8
|
-
|
|
9
|
-
<div class="col-auto">
|
|
10
|
-
<input type="text" class="form-control" placeholder="xpath" name="xpath"
|
|
11
|
-
value="{{ request.form.get('xpath') if request.form.get('xpath') }}">
|
|
12
|
-
</div>
|
|
13
|
-
<div class="col-auto">
|
|
14
|
-
<button type="submit" class="btn btn-secondary mb-3">Run</button>
|
|
15
|
-
</div>
|
|
16
|
-
</form>
|
|
17
|
-
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
|
|
18
|
-
</div>
|
|
19
|
-
<div class="modal-body">
|
|
20
|
-
{% set elements = collection_parser.elements %}
|
|
21
|
-
<div class="row">
|
|
22
|
-
{% for element in elements %}
|
|
23
|
-
<div class="col-3 d-flex">
|
|
24
|
-
<span class="p-0 ps-3 m-0 small text-muted">
|
|
25
|
-
<b>{{ element['file']['filename'] }}</b>
|
|
26
|
-
<br>
|
|
27
|
-
{% if request.form.get("xpath") %}
|
|
28
|
-
{{ element['tei_parser'].find(request.form.get("xpath")).text }}
|
|
29
|
-
{% endif %}
|
|
30
|
-
|
|
31
|
-
</span>
|
|
32
|
-
</div>
|
|
33
|
-
{% endfor%}
|
|
34
|
-
</div>
|
|
35
|
-
</div>
|
|
36
|
-
</div>
|
|
37
|
-
</div>
|
|
File without changes
|
|
File without changes
|
|
File without changes
|