Compare commits

...
Sign in to create a new pull request.

154 commits

Author SHA1 Message Date
eb3563dff5 fix: remove individuals from robots.txt disallowed 2021-10-04 16:30:03 +02:00
0e9f962a5e fix: do not encode uri # in queiries for POST #2 2021-10-01 12:19:23 +02:00
67bbdfde84 fix: do not encode uri # in queiries for POST 2021-10-01 12:06:59 +02:00
7edbe86c6c fix: always save current search settings 2021-10-01 11:41:31 +02:00
6f7f5e3dd3 fix: use attribute for excerpts names 2021-09-28 22:21:19 +02:00
258590dc24 Revert "fix: new compilation creation path should be relative to current url"
This reverts commit 9c5ea6f397.
2021-09-28 20:46:10 +02:00
9c5ea6f397 fix: new compilation creation path should be relative to current url 2021-09-28 19:22:35 +02:00
1db2abd612 Merge branch 'excludeDocFromSearch' into texts 2021-09-28 18:11:08 +02:00
15f01d5e37 Added buttons to remove document from search results 2021-09-28 18:10:46 +02:00
214c23a3eb Eng language translations 2021-09-28 18:09:19 +02:00
631e9f9b71 fix: for prev commits 2021-09-28 15:38:18 +02:00
daa373fc2e fix: don't hide articles by default 2021-09-28 14:47:39 +02:00
313a15d7b2 fix: don't hide articles by default 2021-09-28 14:41:26 +02:00
d159e91cd1 More progress 2021-07-19 19:24:39 +02:00
fd5b66000f Some progress 2021-07-15 23:01:42 +02:00
166e90dae0 Added script to exclude uri from search 2021-07-15 16:56:48 +02:00
bf1ddd6657 Moved shortconfig from Vitro branch 2021-06-28 20:01:27 +02:00
16ef97f28d Improved iph theme localization 2021-06-28 18:55:40 +02:00
92704df096 Moved localizations to properties 2021-06-28 17:39:15 +02:00
04d60d0aaa Move alphabetical classifier to VIVO branch 2021-06-28 14:41:57 +02:00
6b1d47bdcb Moved templates from Vitro branch 2021-06-28 14:30:08 +02:00
f11a341f75 Added empty template for statistic counters 2021-05-05 13:21:36 +02:00
Svetlana Rastegina
107c6b6d83 Added settings icon image 2021-04-27 16:39:48 +02:00
Svetlana Rastegina
2ebf2b84f4 Modified style modal window and added close button. 2021-04-27 15:33:27 +02:00
96848371e4 Merge branch 'texts' into modalSettings 2021-04-26 12:35:34 +02:00
0db7f7906a Added user modal settings 2021-04-26 12:35:06 +02:00
Svetlana Rastegina
70a561ae84 Fixed metadata font size. 2021-04-19 13:12:03 +02:00
Svetlana Rastegina
06d92d6e8d Modified favicon icon image. 2021-04-19 13:11:59 +02:00
Svetlana Rastegina
dcfb17856b Modified favicon icon image. 2021-04-19 13:11:54 +02:00
d5721d1d48 Differentiated sources and literature lists for excerpts and complex texts 2021-04-15 17:03:10 +02:00
Svetlana Rastegina
8fadf30f2f Added favicon ico image. 2021-04-12 17:16:17 +02:00
9a890d08ee Autoselect hits per page from query 2021-04-07 18:03:03 +02:00
f88d30718c Fix for prev commit 2021-04-01 01:06:36 +02:00
9b3026c485 Fix top background 2021-04-01 00:39:32 +02:00
d75afa6305 Revert "Fix bad background"
This reverts commit 8f543d1e68.
2021-04-01 00:25:47 +02:00
8f543d1e68 Fix bad background 2021-04-01 00:16:40 +02:00
Svetlana Rastegina
f4f837d19d Modified style on no page result. 2021-03-31 15:10:22 +02:00
Svetlana Rastegina
4c1aa596f3 Added image for literature and source items on right content panel. 2021-03-31 00:08:33 +02:00
Svetlana Rastegina
0b461e9605 Fixed literature and source lists on search results page. 2021-03-30 16:26:11 +02:00
Svetlana Rastegina
f38a5a4708 Fixed title rubric class. 2021-03-30 16:25:53 +02:00
d87cf361d7 Added delete button to article page 2021-03-29 18:16:49 +02:00
e201890a1f Fix article delete query 2021-03-26 18:34:08 +01:00
393b805e25 Fix compilation creation 2021-03-26 14:10:53 +01:00
Svetlana Rastegina
fb7bccd853 Fixed copyright information. 2021-03-25 20:14:00 +01:00
Svetlana Rastegina
2577b4c8a8 Added follow button to rubrics page. 2021-03-25 20:13:57 +01:00
Svetlana Rastegina
ef47dfa35f Fixed expand content on Exerpt page. 2021-03-25 10:56:25 +01:00
Svetlana Rastegina
7c53c79909 Added metadata switch button on compilation page. 2021-03-24 20:16:45 +01:00
aad030deb0 Fix for collapsible metadata and doc parts js 2021-03-24 19:41:29 +01:00
Svetlana Rastegina
6597a750e5 Added metadata switch button. 2021-03-24 19:23:10 +01:00
Svetlana Rastegina
7d8c144b0f Fixed sitch metadata image. 2021-03-24 17:27:54 +01:00
Svetlana Rastegina
770d899e05 Fixed metadata name. 2021-03-24 14:45:43 +01:00
Svetlana Rastegina
c43aa646b0 Added metadata switcher. 2021-03-24 14:40:05 +01:00
6ab16d7848 Added collapsible metadata scripts 2021-03-24 11:49:28 +01:00
Svetlana Rastegina
7cc5057409 Modified custom style check button on search page result. 2021-03-24 10:50:01 +01:00
Svetlana Rastegina
3dbce2253c Fixed entity page width size on all resolutions. 2021-03-24 10:49:53 +01:00
Svetlana Rastegina
94ed653519 Fixed margin bottom p. 2021-03-24 10:49:46 +01:00
Svetlana Rastegina
0fdc72ca32 Fixed padding top text exerpts. 2021-03-24 10:49:39 +01:00
Svetlana Rastegina
48445cfd78 Removed double quote. 2021-03-24 10:49:33 +01:00
Svetlana Rastegina
c933019a2f Fixed metadata information on Exerpt page. 2021-03-24 10:49:28 +01:00
Svetlana Rastegina
4969868784 Modified metadata styles on Exerpt page. 2021-03-24 10:49:24 +01:00
Svetlana Rastegina
a55c5ddc59 Modified page result styles. 2021-03-23 00:08:10 +01:00
Svetlana Rastegina
122e1b283f Modified collupsible button paddings on search result page. 2021-03-22 23:49:07 +01:00
Svetlana Rastegina
1343a41eed Modified collupsible button paddings. 2021-03-22 23:49:04 +01:00
Svetlana Rastegina
3d3881592b Removed double quotes. 2021-03-22 23:49:00 +01:00
Svetlana Rastegina
113a0f9165 Modified authors affilation style. 2021-03-22 23:48:56 +01:00
Svetlana Rastegina
f49d468f9d Fixed title article font-size. 2021-03-22 19:21:40 +01:00
634bf28adc Add standard container for search results 2021-03-22 19:18:50 +01:00
Svetlana Rastegina
0d63da02b2 Modified save button style. 2021-03-22 16:27:31 +01:00
36f5c0d023 Collapsible authors in elenph excerpts 2021-03-22 13:21:38 +01:00
Svetlana Rastegina
9714679207 Deleted empty raw. 2021-03-22 13:12:38 +01:00
Svetlana Rastegina
be2b3dd32d Added new class for tool shelf on compilation page. 2021-03-19 14:31:42 +01:00
Svetlana Rastegina
b7b97c9641 Fixed title break on article page. 2021-03-19 14:31:38 +01:00
Svetlana Rastegina
e03c06f2f5 Fixed shelf tools width for article page. 2021-03-19 14:31:34 +01:00
Svetlana Rastegina
46a1622475 Fixed shelf tools for article page. 2021-03-19 14:31:29 +01:00
Svetlana Rastegina
4930f127cc Fixed main navigation link font size. 2021-03-19 14:31:24 +01:00
Svetlana Rastegina
0970c329ba Added download-icon. 2021-03-19 14:31:21 +01:00
Svetlana Rastegina
45e003bf5b Fixed search result headline and download icon. 2021-03-19 14:31:18 +01:00
Svetlana Rastegina
62c0efb9cb Fixed padding for switch document button. 2021-03-19 14:31:12 +01:00
4044f5ec88 Remove sequential duplicates in literature and sources lists 2021-03-18 12:52:17 +01:00
d8b08024e8 Workaround for broken documents 2021-03-18 12:13:59 +01:00
Svetlana Rastegina
7472d834a0 Changed title font size on page rezult. 2021-03-17 12:14:01 +01:00
Svetlana Rastegina
e9b1d7df89 Fixed search button outline style. 2021-03-17 12:13:40 +01:00
Svetlana Rastegina
a1b2148c49 Modified first publication style. 2021-03-17 12:13:15 +01:00
039dcfae2e Switch text and image on collpase/expand document 2021-03-16 15:39:57 +01:00
Svetlana Rastegina
fbb94b2f35 Added new image. 2021-03-15 16:20:45 +01:00
Svetlana Rastegina
2ad91043b2 Added print button to compilation page. 2021-03-15 16:20:42 +01:00
Svetlana Rastegina
9340a3587f Fixed title style. 2021-03-15 15:00:28 +01:00
Svetlana Rastegina
4c2fdc51c2 Fixed authors page width. 2021-03-15 15:00:22 +01:00
Svetlana Rastegina
ee5b41c4f9 Fixed expand article button. 2021-03-15 14:04:11 +01:00
Svetlana Rastegina
397f29b83e Modified print button position. 2021-03-15 14:04:08 +01:00
Svetlana Rastegina
ee82cb0f51 Modified affilations style. 2021-03-15 14:04:03 +01:00
Svetlana Rastegina
d4186f4558 Hid right top buttons.Modified result page style. 2021-03-14 12:39:43 +01:00
Svetlana Rastegina
fec44a297d Removed online css styles. 2021-03-12 11:57:07 +01:00
Svetlana Rastegina
3d4b377430 Fixed metadata styles. 2021-03-12 11:55:50 +01:00
Svetlana Rastegina
e31b92fae2 Fixed expand button style and metadata content style. 2021-03-11 21:32:07 +01:00
Svetlana Rastegina
e76bff1430 Added page result pagination border. 2021-03-11 19:51:38 +01:00
Svetlana Rastegina
7352adc725 Fixed page result pagination styles. 2021-03-11 19:42:11 +01:00
Svetlana Rastegina
844734824a Modified collapse/expande button style and hided right block on result search page. 2021-03-11 19:30:33 +01:00
836fd45f3c Improved collapsible element 2021-03-11 14:46:36 +01:00
Svetlana Rastegina
aaa5b644a6 Added images for buttons. 2021-03-11 14:16:47 +01:00
Svetlana Rastegina
5d884b22fe Fixed padding top on article title. 2021-03-11 13:15:34 +01:00
Svetlana Rastegina
f06e7db358 Added print function in right panel. 2021-03-10 21:03:37 +01:00
Svetlana Rastegina
69e3037351 Modified page pagination style. 2021-03-10 21:03:34 +01:00
975a778b04 Made rubric list collapsible 2021-03-10 19:58:51 +01:00
Svetlana Rastegina
b7d6345338 Added expand and collapse buttons. 2021-03-10 12:43:34 +01:00
e4c4293a35 Added TOC collapse/expand scripts 2021-03-09 15:09:53 +01:00
Svetlana Rastegina
6b2b1be952 Added expand button for articles metadata. 2021-03-09 10:44:29 +01:00
Svetlana Rastegina
f5b8d7d43d Modified right menu styles. 2021-03-09 10:44:24 +01:00
Svetlana Rastegina
30516cbf03 Added new styles for affilations and metadata. 2021-03-09 10:44:13 +01:00
Svetlana Rastegina
3b40cd5d8a Modified a hover style.Fixed icons padding. 2021-03-05 11:56:13 +01:00
Svetlana Rastegina
b620a439ba Added right search panel on Compilations page.Modified title block. 2021-03-05 11:56:08 +01:00
Svetlana Rastegina
899b2e6d17 Fixed right icons padding. 2021-03-05 11:55:56 +01:00
Svetlana Rastegina
9e8ee41438 Added print,save,export PDF buttons. 2021-03-05 11:55:46 +01:00
b49f169474 Open parent document parts when go to part from TOC 2021-03-05 00:04:59 +01:00
43ff4e44a8 Added table of contents js functions 2021-03-04 16:03:05 +01:00
Svetlana Rastegina
8867d26392 Merge branch 'css' into texts 2021-03-03 21:20:26 +01:00
Svetlana Rastegina
954e3ffdab Added button to top. 2021-03-03 21:11:09 +01:00
Svetlana Rastegina
7028373270 Replaced share link image. 2021-03-03 21:10:16 +01:00
6617262a81 Improved document structure 2021-03-03 20:46:02 +01:00
Svetlana Rastegina
7580e40cc4 Added button To top. 2021-03-03 18:43:46 +01:00
bc426ec4a1 Fix for sources and literature output for document parts 2021-03-03 17:48:22 +01:00
4627c9c22c Move authors metadata to macro 2021-03-03 17:26:00 +01:00
4ee8db0022 Get level of excerpts in document 2021-03-03 17:25:29 +01:00
0e1614a31a Refactoring document structure 2021-03-03 16:15:03 +01:00
00c35dbd17 Add closing tag to sep directive 2021-03-03 15:03:30 +01:00
5b77aaf75f Renamed expand switch settings function 2021-03-03 15:01:08 +01:00
d3328ebf96 Fix underline authors' list 2021-03-03 15:00:38 +01:00
88244a461d Improved article delete query 2021-03-03 14:28:07 +01:00
1b04a58afc Split expand switch into two: setttings switch and one-time switch 2021-03-03 13:43:03 +01:00
7556de1437 Moved freemarker templates into theme 2021-03-02 21:15:21 +01:00
7eea134629 Fix authors sign 2021-03-02 15:40:32 +01:00
65be4fce1c Refactoring rubric and rubrics templates 2021-03-02 15:19:25 +01:00
b5ca5b32ed Fixing expand switch 2021-03-02 15:15:47 +01:00
faf9615b15 Refactoring expand scripts 2021-03-02 15:01:26 +01:00
7b92143572 Refactoring expand scripts 2021-03-02 14:56:17 +01:00
7d29e55b40 Cleaning up elenph excerpt template 2021-03-02 14:14:48 +01:00
2330615e77 Fixed text excerpt delete query 2021-03-01 12:30:55 +01:00
Svetlana Rastegina
79be5fbe3c Fixed literature lists image url. 2021-02-28 22:11:24 +01:00
Svetlana Rastegina
6fb235afd4 Fixed literature lists margins. 2021-02-28 21:58:16 +01:00
Svetlana Rastegina
a54c66fecf Merge branch 'texts' of dev.litvinovg.pro:litvinovg/vivo into texts 2021-02-28 21:39:00 +01:00
67c7d2c363 Temporary hack 2021-02-26 22:00:00 +01:00
Svetlana Rastegina
62676eb756 Fixed margin top lists on search result page. 2021-02-26 20:42:17 +01:00
Svetlana Rastegina
f320f1c567 Fixed literature lists on search result page. 2021-02-26 20:26:27 +01:00
b851995e60 Rewrite indexing rules for more generic cases 2021-02-26 17:37:43 +01:00
032667a87e Add excerpts of any complex publication to ALLTEXT field 2021-02-26 16:57:25 +01:00
6e0eb8cb01 Rename prefix 2021-02-26 16:51:46 +01:00
be8ee67e1b Reindex complex publications on excerpt change 2021-02-26 16:50:04 +01:00
Svetlana Rastegina
2ed94eb668 Fixed literature lists on exerpts page. 2021-02-26 13:40:38 +01:00
Svetlana Rastegina
0ad3937fb7 Fixed fonts size. 2021-02-26 12:33:15 +01:00
db8f9bd0fe Hide duplicate search panel on search results page 2021-02-25 17:17:08 +01:00
17d7a8c227 Fixed buttons ids 2021-02-25 16:50:07 +01:00
a134b9f98d Renamed Работы to Источники 2021-02-25 16:13:15 +01:00
5b91f360d7 Show delete button only if it is usable 2021-02-25 15:17:33 +01:00
0c8163070b Fix compilation template 2021-02-25 15:13:32 +01:00
70 changed files with 3435 additions and 801 deletions

View file

@ -1,46 +1,73 @@
@prefix : <http://vitro.mannlib.cornell.edu/ns/vitro/ApplicationSetup#> .
@prefix searchIndex: <java:edu.cornell.mannlib.vitro.webapp.searchindex#> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
:vivodocumentModifier_excerptsInArticles
:vivodocumentModifier_excerptsInComplexPublications
a <java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.SelectQueryDocumentModifier> ,
<java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.DocumentModifier> ;
rdfs:label "Elenph article excerpts" ;
rdfs:label "Populate complex publications with excerpts" ;
:hasTargetField "ALLTEXT" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?value
WHERE {
?uri rdf:type ts_:elenphArticle .
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
VALUES ?property { ts_:works ts_:bibliography ts_:htmlExcerpt ts_:keywords }
?elenphExcerpt ?property ?value .
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?excerpt .
VALUES ?property { ts:works ts:bibliography ts:htmlExcerpt ts:keywords }
?excerpt ?property ?value .
}
""" .
:vivodocumentModifier_PopulateText
:vivoUriFinder_excerptsInComplexPublications
a searchIndex:indexing.IndexingUriFinder ,
searchIndex:indexing.SelectQueryUriFinder ;
rdfs:label "When excerpts change" ;
:hasSelectQuery """
PREFIX ts: <https://litvinovg.pro/text_structures#>
SELECT ?uri
WHERE {
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?subject .
}
""" .
:vivoUriFinder_onRubricsAssign
a searchIndex:indexing.IndexingUriFinder ,
searchIndex:indexing.SelectQueryUriFinder ;
rdfs:label "When rubric was assigned" ;
:hasSelectQuery """
PREFIX ts: <https://litvinovg.pro/text_structures#>
SELECT ?uri
WHERE {
?subject a ts:textExcerpt .
VALUES ?uri { ?subject }
}
""" .
:vivodocumentModifier_PopulateTextWithHTMLContentsOfExcerpts
a <java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.SelectQueryDocumentModifier> ,
<java:edu.cornell.mannlib.vitro.webapp.searchindex.documentBuilding.DocumentModifier> ;
rdfs:label "Html text to text field" ;
:hasTargetField "text" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?htmlExcerpt
WHERE {
{
?uri rdf:type ts_:textExcerpt .
?uri ts_:htmlExcerpt ?htmlExcerpt .
?uri rdf:type ts:textExcerpt .
?uri ts:htmlExcerpt ?htmlExcerpt .
}
UNION
{
?uri rdf:type ts_:publication .
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?artExcerpt .
?artExcerpt ts_:htmlExcerpt ?htmlExcerpt .
?uri rdf:type ts:complexPublication .
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?excerpt .
?excerpt ts:htmlExcerpt ?htmlExcerpt .
}
}
""" .
@ -52,22 +79,22 @@
:hasTargetField "rubrics" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX pr: <https://iph.ras.ru/relationships#>
SELECT DISTINCT ?rubric
WHERE {
{
?uri rdf:type ts_:elenphExcerpt .
?uri rdf:type ts:textExcerpt .
?uri pr:belongsTo ?assignedRubric .
?assignedRubric (pr:hasParent)* ?rubric .
}
UNION
{
?uri rdf:type ts_:elenphArticle .
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?artExcerpt .
?artExcerpt pr:belongsTo ?assignedRubric .
?uri rdf:type ts:complexPublication .
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?excerpt .
?excerpt pr:belongsTo ?assignedRubric .
?assignedRubric (pr:hasParent)* ?rubric .
}
}
@ -95,20 +122,20 @@
:hasTargetField "keywords" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?keywords
WHERE {
{
?uri rdf:type ts_:elenphArticle .
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:keywords ?keywords .
?uri rdf:type ts:elenphArticle .
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?elenphExcerpt .
?elenphExcerpt ts:keywords ?keywords .
}
UNION
{
?uri rdf:type ts_:elenphExcerpt .
?uri ts_:keywords ?keywords .
?uri rdf:type ts:elenphExcerpt .
?uri ts:keywords ?keywords .
}
}
""" .
@ -120,20 +147,20 @@
:hasTargetField "bibliography" ;
:hasSelectQuery """
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX ts: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?bibliography
WHERE {
{
?uri rdf:type ts_:elenphArticle .
?uri ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:bibliography ?bibliography .
?uri rdf:type ts:elenphArticle .
?uri ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)+/ts:hasText ?elenphExcerpt .
?elenphExcerpt ts:bibliography ?bibliography .
}
UNION
{
?uri rdf:type ts_:elenphExcerpt .
?uri ts_:bibliography ?bibliography .
?uri rdf:type ts:elenphExcerpt .
?uri ts:bibliography ?bibliography .
}
}
""" .

View file

@ -45,7 +45,7 @@ display:getCompilationExcerptPathsDataGetter
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
SELECT (GROUP_CONCAT(substr(concat("000",str(?outline)),strlen(str(?outline))); SEPARATOR = ".") AS ?path ) ?tocElement ?elenphExcerpt
SELECT (GROUP_CONCAT(substr(concat("000",str(?outline)),strlen(str(?outline))); SEPARATOR = ".") AS ?path ) (COUNT(?outline) AS ?level) ?tocElement ?elenphExcerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc ts_:hasTOCItem/(ts_:pointsTo/ts_:hasTOCItem)* ?tmpTOCItem .
@ -74,11 +74,11 @@ display:getCompilationBibliographyDataGetter
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?bibliography ?elenphExcerpt
SELECT DISTINCT ?bibliography ?excerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:bibliography ?bibliography .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?excerpt .
?excerpt ts_:bibliography ?bibliography .
} ORDER BY ?bibliography
""" .
@ -90,11 +90,11 @@ display:getCompilationWorksDataGetter
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?works ?elenphExcerpt
SELECT DISTINCT ?works ?excerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:works ?works .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?excerpt .
?excerpt ts_:works ?works .
} ORDER BY ?works
""" .

View file

@ -14,8 +14,10 @@
""" .
<https://litvinovg.pro/text_structures#elenphArticle> display:hasDeleteQuery """
PREFIX ts: <https://litvinovg.pro/text_structures#>
DESCRIBE ?individualURI ?tocElement ?tocItem ?toc ?excerpt
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
DESCRIBE ?individualURI ?tocElement ?tocItem ?toc ?excerpt ?author ?organization
WHERE {
?individualURI rdf:type ts:elenphArticle .
OPTIONAL {
?individualURI ts:hasTOC ?toc .
?toc (ts:hasTOCItem/ts:pointsTo)* ?tocElement .
@ -23,7 +25,13 @@
?tocElement ts:hasTOCItem ?tocItem .
}
OPTIONAL {
?tocElement ts_:hasText ?excerpt .
?tocElement ts:hasText ?excerpt .
OPTIONAL {
?excerpt ts:hasAuthor ?author .
OPTIONAL {
?author ts:affiliatedWith ?organization .
}
}
}
}
}
@ -35,6 +43,6 @@
WHERE
{
?tocElement ts:hasText ?individualURI .
NOT EXISTS {?tocElement ts:hasTOCItem ?tocItem }
FILTER NOT EXISTS {?tocElement ts:hasTOCItem ?tocItem }
}
""" .

View file

@ -45,7 +45,7 @@ display:getArticleExcerptPathsDataGetter
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
SELECT (GROUP_CONCAT(substr(concat("000",str(?outline)),strlen(str(?outline))); SEPARATOR = ".") AS ?path ) ?tocElement ?elenphExcerpt
SELECT (GROUP_CONCAT(substr(concat("000",str(?outline)),strlen(str(?outline))); SEPARATOR = ".") AS ?path ) (COUNT(?outline) AS ?level) ?tocElement ?elenphExcerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc ts_:hasTOCItem/(ts_:pointsTo/ts_:hasTOCItem)* ?tmpTOCItem .
@ -61,7 +61,6 @@ display:getArticleExcerptPathsDataGetter
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+ ?tocElement .
?tocElement rdf:type ts_:TOCLevel .
?individualURI rdf:type ts_:elenphArticle .
}
}
} GROUP BY ?tocElement ?elenphExcerpt ORDER BY ?path
@ -75,11 +74,11 @@ display:getArticleBibliographyDataGetter
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?bibliography ?elenphExcerpt
SELECT DISTINCT ?bibliography ?excerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:bibliography ?bibliography .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?excerpt .
?excerpt ts_:bibliography ?bibliography .
} ORDER BY ?bibliography
""" .
@ -91,11 +90,11 @@ display:getArticleWorksDataGetter
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
SELECT DISTINCT ?works ?elenphExcerpt
SELECT DISTINCT ?works ?excerpt
WHERE {
?individualURI ts_:hasTOC ?toc .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?elenphExcerpt .
?elenphExcerpt ts_:works ?works .
?toc (ts_:hasTOCItem/ts_:pointsTo)+/ts_:hasText ?excerpt .
?excerpt ts_:works ?works .
} ORDER BY ?works
""" .

View file

@ -0,0 +1,27 @@
@prefix ts_: <https://litvinovg.pro/text_structures#> .
@prefix display: <http://vitro.mannlib.cornell.edu/ontologies/display/1.1#> .
@prefix mydomain: <http://vivo.mydomain.edu/individual/> .
ts_:elenphExcerpt display:hasCustomView mydomain:elenphExcerptShortView .
mydomain:elenphExcerptShortView
a display:customViewForIndividual ;
display:appliesToContext "SEARCH" ;
display:hasTemplate "elenphExcerptShortView.ftl" ;
display:hasDataGetter mydomain:elenphExcerptShortViewDataGetter .
mydomain:elenphExcerptShortViewDataGetter
a <java:edu.cornell.mannlib.vitro.webapp.utils.dataGetter.SparqlQueryDataGetter>;
display:saveToVar "excerptInfo";
display:query
"""
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX vivo: <http://vivoweb.org/ontology/core#>
PREFIX rdf: <http://www.w3.org/1999/02/22-rdf-syntax-ns#>
PREFIX ts_: <https://litvinovg.pro/text_structures#>
SELECT ?property ?value
WHERE {
?individualUri ?property ?value .
?individualUri rdf:type ts_:elenphExcerpt .
}
""" .

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View file

@ -22,4 +22,3 @@ Disallow: /vis/ # VIVO addition
Disallow: /visualizationAjax/ # VIVO addition
Disallow: /visualizationData/ # VIVO addition
Disallow: /qrcode # VIVO addition
Disallow: /individual # VIVO addition

View file

@ -0,0 +1,49 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#-- Template for browsing individuals in class groups for menupages -->
<#import "lib-string.ftl" as str>
<noscript>
<p style="padding: 20px 20px 20px 20px;background-color:#f8ffb7">${i18n().browse_page_javascript_one} <a href="${urls.base}/browse" title="${i18n().index_page}">${i18n().index_page}</a> ${i18n().browse_page_javascript_two}</p>
</noscript>
<section id="noJavascriptContainer" class="hidden">
<section id="browse-by" role="region">
<nav role="navigation">
<ul id="browse-classes">
<#list vClassGroup?sort_by("displayRank") as vClass>
<#------------------------------------------------------------
Need to replace vClassCamel with full URL that allows function
to degrade gracefully in absence of JavaScript. Something
similar to what Brian had setup with widget-browse.ftl
------------------------------------------------------------->
<#assign vClassCamel = str.camelCase(vClass.name) />
<#-- Only display vClasses with individuals -->
<#if (vClass.entityCount > 0)>
<li id="${vClassCamel}"><a href="#${vClassCamel}" title="${i18n().browse_all_in_class}" data-uri="${vClass.URI}">${vClass.name} <span class="count-classes">(${vClass.entityCount})</span></a></li>
</#if>
</#list>
</ul>
<nav id="alpha-browse-container" role="navigation">
<h3 class="selected-class"></h3>
<#assign alphabet = ["А", "Б", "В", "Г", "Д", "Е", "Ё" "Ж", "З", "И", "Й", "К", "Л", "М", "Н", "О", "П", "Р", "С", "Т", "У", "Ф", "Х", "Ц", "Ч", "Ш", "Щ", "Э", "Ю", "Я" ] />
<ul id="alpha-browse-individuals">
<li><a href="#" class="selected" data-alpha="all" title="${i18n().select_all}">${i18n().all}</a></li>
<#list alphabet as letter>
<li><a href="#" data-alpha="${letter?lower_case}" title="${i18n().browse_all_starts_with(letter)}">${letter}</a></li>
</#list>
</ul>
</nav>
</nav>
<section id="individuals-in-class" role="region">
<ul role="list">
<#-- Will be populated dynamically via AJAX request -->
</ul>
</section>
</section>
</section>
<script type="text/javascript">
$('section#noJavascriptContainer').removeClass('hidden');
</script>

View file

@ -4,8 +4,10 @@
<#import "lib-vivo-properties.ftl" as p>
<div class="searchResult">
<a href="${individual.profileUrl}" title="${i18n().individual_name}">${individual.name}</a>
<@p.displayTitle individual />
<p class="snippet">${individual.snippet}</p>
</div>

View file

@ -0,0 +1,16 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#-- Template for displaying search error message -->
<#if title??>
<div class="errorPageTitle">
<h2>${title?html}</h2>
</div>
</#if>
<div id="nomatchingTitle">
<p>
${message?html}
</p>
</div>
<#include "searchSelector.ftl">
<#include "search-help.ftl" >

View file

@ -0,0 +1,49 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#if origination?has_content && origination == "helpLink">
<div id="searchTipsTitleH2">
<h2>Search Tips</h2>
</div>
<span id="searchHelp">
<a href="#" onClick="history.back();return false;" title="back to results">Back to results</a>
</span>
<#else>
<div id="searchTipsTitleH3">
<h3>Search Tips</h3>
</div>
</#if>
<ul class="searchTips">
<li>Keep it simple! Use short, single terms unless your searches are returning too many results.</li>
<li>Use quotes to search for an entire phrase -- e.g., "<i>protein folding</i>".</li>
<li>Except for boolean operators, searches are <strong>not</strong> case-sensitive, so "Geneva" and "geneva" are equivalent</li>
<li>If you are unsure of the correct spelling, put ~ at the end of your search term -- e.g., <i>cabage~</i> finds <i>cabbage</i>, <i>steven~</i> finds <i>Stephen</i> and <i>Stefan</i> (as well as other similar names).</li>
</ul>
<div id="advancedTipsWrapper">
<h4><a id="advTipsLink" href="#">Advanced Tips</a></h4>
</div>
<ul id="advanced" class="searchTips" style="visibility:hidden">
<li>When you enter more than one term, search will return results containing all of them unless you add the Boolean "OR" -- e.g., <i>chicken</i> OR <i>egg</i>.</li>
<li>NOT" can help limit searches -- e.g., <i>climate</i> NOT <i>change</i>.</li>
<li>Phrase searches may be combined with Boolean operators -- e.g. "<i>climate change</i>" OR "<i>global warming</i>".</li>
<li>Close word variations will also be found -- e.g., <i>sequence</i> matches <i>sequences</i> and <i>sequencing</i>.</li>
<li>Use the wildcard * character to match an even wider variation -- e.g., <i>nano*</i> will match both <i>nanotechnology</i> and <i>nanofabrication</i>.</li>
<li>Search uses shortened versions of words -- e.g., a search for <i>cogniti*</i> finds nothing, while <i>cognit*</i> finds both <i>cognitive</i> and <i>cognition</i>.</li>
</ul>
<a id="closeLink" href="#" style="visibility:hidden;font-size:.825em;padding-left:8px">Close</a>
${stylesheets.add('<link rel="stylesheet" href="${urls.base}/css/search.css" />')}
<script type="text/javascript">
$(document).ready(function(){
$('a#advTipsLink').click(function() {
$('ul#advanced').css("visibility","visible");
$('a#closeLink').css("visibility","visible");
$('a#closeLink').click(function() {
$('ul#advanced').css("visibility","hidden");
$('a#closeLink').css("visibility","hidden");
return false;
});
return false;
});
});
</script>

View file

@ -0,0 +1,252 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#-- Template for displaying paged search results -->
<h2 class="searchResultsHeader">
<#include "searchSelector.ftl">
<#escape x as x?html>
<div id='searchQueryResults'> ${i18n().search_results_for} '${querytext}'</div>
<div id='limitedToClassGroup'> <#if classGroupName?has_content>${i18n().limited_to_type} '${classGroupName}'</#if> </div>
<div id='limitedToType'> <#if typeName?has_content>${i18n().limited_to_type} '${typeName}'</#if> </div>
</#escape>
<script type="text/javascript">
var url = window.location.toString();
if (url.indexOf("?") == -1){
var queryText = 'querytext=${querytext}';
} else {
var urlArray = url.split("?");
var queryText = urlArray[1];
}
var urlsBase = '${urls.base}';
</script>
<img id="downloadIcon" src="images/download-icon.png" alt="${i18n().download_results}" title="${i18n().download_results}" />
<#-- <span id="downloadResults" style="float:left"></span> -->
</h2>
<span id="searchHelp"><a href="${urls.base}/searchHelp" title="${i18n().search_help}">${i18n().not_expected_results}</a></span>
<div class="contentsBrowseGroup">
<#-- Refinement links -->
<#if classGroupLinks?has_content && classGroupLinks?size gt 1>
<div class="searchTOC">
<h4>${i18n().display_only}</h4>
<ul>
<#list classGroupLinks as link>
<li><a href="${link.url}" title="${i18n().class_group_link}">${link.text}</a><span>(${link.count})</span></li>
</#list>
</ul>
</div>
</#if>
<#if classLinks?has_content && classLinks?size gt 1 >
<div class="searchTOC">
<#if classGroupName?has_content>
<h4>${i18n().limit} ${classGroupName} ${i18n().to}</h4>
<#else>
<h4>${i18n().limit_to}</h4>
</#if>
<ul>
<#list classLinks as link>
<li><a href="${link.url}" title="${i18n().class_link}">${link.text}</a><span>(${link.count})</span></li>
</#list>
</ul>
</div>
</#if>
<div class="virtualArticleSwitch">
<label class="switch">${i18n().show_virtual_article}
<input id="virtualArticleCheck" type="checkbox" checked="false" onclick="showVirtualArticles();">
</label>
<#if user.loggedIn>
<button onclick="createNewCompilation()">${i18n().create_compilation_button}</button>
</#if>
</div>
<#-- Search results -->
<ul class="searchhits">
<#list individuals as individual>
<li>
<@shortView uri=individual.uri viewContext="search" />
</li>
</#list>
</ul>
<#-- Paging controls -->
<#if (pagingLinks?size > 0)>
<div class="searchpages">
${i18n().pages}:
<#if prevPage??><a class="prev" href="${prevPage}" title="${i18n().previous}">${i18n().previous}</a></#if>
<#list pagingLinks as link>
<#if link.url??>
<a href="${link.url}" title="${i18n().page_link}">${link.text}</a>
<#else>
<span>${link.text}</span> <#-- no link if current page -->
</#if>
</#list>
<#if nextPage??><a class="next" href="${nextPage}" title="${i18n().next_capitalized}">${i18n().next_capitalized}</a></#if>
</div>
</#if>
<br />
<#-- VIVO OpenSocial Extension by UCSF -->
<#if openSocial??>
<#if openSocial.visible>
<h3>OpenSocial</h3>
<script type="text/javascript" language="javascript">
// find the 'Search' gadget(s).
var searchGadgets = my.findGadgetsAttachingTo("gadgets-search");
var keyword = '${querytext}';
// add params to these gadgets
if (keyword) {
for (var i = 0; i < searchGadgets.length; i++) {
var searchGadget = searchGadgets[i];
searchGadget.additionalParams = searchGadget.additionalParams || {};
searchGadget.additionalParams["keyword"] = keyword;
}
}
else { // remove these gadgets
my.removeGadgets(searchGadgets);
}
</script>
<div id="gadgets-search" class="gadgets-gadget-parent" style="display:inline-block"></div>
</#if>
</#if>
</div> <!-- end contentsBrowseGroup -->
<script>
document.addEventListener('DOMContentLoaded', createVirtualCompilation(), false);
$('input[type=checkbox]').removeAttr('checked');
function showVirtualArticles(){
var checkBox = document.getElementById("virtualArticleCheck");
if (checkBox.checked == true){
$('.searchResult').hide();
$('.virtualArticlePart').show();
} else {
$('.searchResult').show();
$('.virtualArticlePart').hide();
}
}
function createNewCompilation() {
var excerpts = $('.compilationDraftExcerpt').toArray();
if (excerpts.length == 0){
alert("${i18n().create_compilation_no_excerpts}");
return;
}
var compilationName = window.prompt("${i18n().create_compilation_enter_name_notification}");
if (!compilationName){
alert("${i18n().create_compilation_no_name_entered_error}");
return;
}
var iframe = document.createElement("iframe");
var excerptsCounter = $('.compilationDraftExcerpt').length;
iframe.setAttribute("src", "${urls.base}/editRequestDispatch?typeOfNew=https%3A%2F%2Flitvinovg.pro%2Ftext_structures%23compilation&editForm=edu.cornell.mannlib.vitro.webapp.edit.n3editing.configuration.generators.CompilationGenerator&excerptsCount=" + excerptsCounter);
iframe.style.width = "1px";
iframe.style.height = "1px";
iframe.id="newCompilationIframe";
//iframe.style.display="none";
document.body.appendChild(iframe);
$('#newCompilationIframe').on('load', function(){
fillOutForm(compilationName);
});
}
function fillOutForm(compilationName){
var iframeDoc = document.getElementById('newCompilationIframe').contentWindow.document;
var rules = $('#builder').queryBuilder('getRules', { get_flags: true });
var query = format_query_string(rules, "", false);
iframeDoc.getElementById('queryBuilderRules').value = JSON.stringify(rules);
iframeDoc.getElementById('rawQueryString').value = query;
iframeDoc.getElementById('newCompilationLabel').value = compilationName;
var excerpts = $('.compilationDraftExcerpt').toArray();
for (i = 0;i < excerpts.length;i++){
var excerptUri = excerpts[i].getAttribute('partUri');
var excerptName = excerpts[i].getAttribute('partName');
var number = i + 1;
iframeDoc.getElementById("tocLevel" + number + "Name").value = excerptName + " (" + compilationName + ")";
iframeDoc.getElementById("tocItem" + number + "Name").value = excerptName + " (" + compilationName + ")";
iframeDoc.getElementById("excerpt" + number).value = excerptUri;
}
$('#newCompilationIframe').off('load');
iframeDoc.getElementById('submit').click();
$('#newCompilationIframe').on('load', function(){
redirectToNewCompilation();
});
}
function redirectToNewCompilation(){
var newURL = document.getElementById('newCompilationIframe').contentWindow.location.href;
window.open(newURL,"_self");
}
function createVirtualCompilation(){
let workSet = new Set();
let biblioSet = new Set();
var workDivs = $('.virtualArticleWork');
var biblioDivs = $('.virtualArticleBibliography');
biblioDivs.each(function() {
biblioSet.add($(this).html());
});
workDivs.each(function() {
workSet.add($(this).html());
});
var workArr = Array.from(workSet);
workArr.sort();
var biblioArr = Array.from(biblioSet);
biblioArr.sort();
if (workArr.length > 0 ) {
$('<div class="virtualWorks virtualArticlePart"><button type="button" style="border:none;width: 100%; text-align:left;" class="collapsible">${i18n().sources_excerpt_button_text}</button><div class="virtualWorks"></div></div>').insertAfter($('.virtualArticlePart').last());
for (let value of workArr){
$('.virtualWorks').last().append( '<div class="work"><p>' + value + '</p></div>' );
}
}
if (biblioArr.length > 0 ) {
$('<div class="virtualBibliography virtualArticlePart"><button type="button" style="border:none;width: 100%; text-align:left;" class="collapsible">${i18n().literature_excerpt_button_text}</button><div class="virtualBibliography"></div></div>').insertAfter($('.virtualArticlePart').last());
for (let value of biblioArr){
$('.virtualBibliography').last().append( '<div class="bibliography"><p>' + value + '</p></div>' );
}
}
$('.virtualWorks').hide();
$('.virtualBibliography').hide();
$('.virtualArticlePart').hide();
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
createRemoveButtons();
}
</script>
${stylesheets.add('<link rel="stylesheet" href="//code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" />',
'<link rel="stylesheet" href="${urls.base}/css/search.css" />',
'<link rel="stylesheet" type="text/css" href="${urls.base}/css/jquery_plugins/qtip/jquery.qtip.min.css" />')}
${headScripts.add('<script src="//code.jquery.com/ui/1.10.3/jquery-ui.js"></script>',
'<script type="text/javascript" src="${urls.base}/js/jquery_plugins/qtip/jquery.qtip.min.js"></script>',
'<script type="text/javascript" src="${urls.base}/js/tiny_mce/tiny_mce.js"></script>'
)}
${scripts.add('<script type="text/javascript" src="${urls.base}/js/searchDownload.js"></script>')}

View file

@ -1,42 +0,0 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#--
This version of individual--foaf-person.ftl is a "router" template. The original VIVO
version of this template now resides in the /themes/wilma/templates directory.
This version of the template is used when the profile page types feature is enabled.
This template serves to "rout" the user to the correct template based (1) the
profile page type of the foaf person being displayed or (2) the targeted view that
the user wants to see. For example, when a user is routed to a quick view template,
the user has the option of displaying the full view. If the user chooses that option,
the targetedView variable gets set.
This template could also be used to load just the "individual--foaf-person-2column.ftl"
without enabling profile page types. "individual--foaf-person-2column.ftl" is a slightly
different design than the "individual--foaf-person.ftl" template in the themes/wilma
directory.
-->
<#include "individual-setup.ftl">
${scripts.add('<script async type="text/javascript" src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>')}
${scripts.add('<script async type="text/javascript" src="//cdn.plu.mx/widget-popup.js"></script>')}
<#assign selectedTemplate = "elenphExcerpt-internal.ftl" >
<#if profilePageTypesEnabled >
<#assign profilePageType = profileType >
<#-- targetedView takes precedence over the profilePageType. -->
<#if targetedView?has_content>
<#if targetedView != "standardView">
<#assign selectedTemplate = "individual--foaf-person-quickview.ftl" >
</#if>
<#elseif profilePageType == "quickView" >
<#assign selectedTemplate = "individual--foaf-person-quickview.ftl" >
</#if>
</#if>
<#include selectedTemplate >

View file

@ -1,38 +0,0 @@
<#macro showRubrics>
<#assign currentRubrics = propertyGroups.pullProperty("https://iph.ras.ru/relationships#belongsTo")!>
<#if currentRubrics?? && currentRubrics?has_content>
<div class="label">Относится к рубрикам: <@p.addLink currentRubrics editable /> <@p.verboseDisplay currentRubrics /></div>
<#if rubrics?? && rubrics?has_content>
<#list rubrics as rubric>
<li role="listitem" style="list-style:none;">
<a href="${urls.base}/individual?uri=${rubric.rubricID?url}"">${rubric.rubricName}</a>
</li>
</#list>
</#if>
<br/>
</#if>
</#macro>
<#macro showIssue>
<#assign issue = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#issue")!>
<#if issue.statements?has_content && issue.type == "data">
<div class="issue" style="list-style:none;">
<div class="label">Входит в выпуск</div>
<@p.dataPropertyList issue editable />
</div>
</#if>
</#macro>
<#macro showYear>
<#assign year = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#year")!>
<#if year.statements?has_content && year.type == "data">
<div class="year" style="list-style:none;">
<div class="label">Год</div>
<@p.dataPropertyList year editable />
</div>
</#if>
</#macro>
<#macro showWorks works >
</#macro>

File diff suppressed because it is too large Load diff

View file

@ -87,7 +87,6 @@ button.btn.btn-xs.btn-danger {
/*box-shadow: 0px 0px 0px #000000;*/
border-left: 1px solid #ead6a2 !important;
font-family: Roboto;
}
.query-builder .btn-success.active, .query-builder .btn-success.focus,

View file

@ -1,32 +1,32 @@
menu_contactus = Contact Us
menu_welcomestart = Welcome
menu_copyright = copyright
menu_support = Support
menu_logout = Log out
menu_contactus = Контакты
menu_welcomestart = Добро пожаловать
menu_copyright = права
menu_support = Поддержка
menu_logout = Выйти
menu_loginfull = Log in to manage this site
menu_login = Log in
menu_version = Version
menu_about = About
menu_termuse = Terms of Use
menu_powered = Powered by
menu_login = Войти
menu_version = Версия
menu_about = О нас
menu_termuse = Правила использования
menu_powered = Сделано с помощью
intro_title = Welcome to VIVO
intro_title = Добро пожаловать в VIVO
intro_para1 = VIVO is a research-focused discovery tool that enables collaboration among scholars of all disciplines.
intro_para2 = Browse or search information on people, departments, courses, grants, and publications.
intro_searchvivo = Search VIVO
intro_filtersearch = Filter search
intro_searchvivo = Поиск VIVO
intro_filtersearch = Ограничить поиск
identity_title = VIVO | connect share discover
identity_title = VIVO | соединяй делись познавай
identity_index = Index
identity_edit = Edit Page
identity_admin = Site Admin
identity_myprofile = My profile
identity_myaccount = My account
identity_user = user
identity_edit = Редактировать страницу
identity_admin = Админка
identity_myprofile = Мой профиль
identity_myaccount = Моя учётная запись
identity_user = пользователь
collection_capitalized = Collection
place_of_grant = Place of grant
email_address = Email Address
collection_capitalized = Коллекция
place_of_grant = Место получения гранта
email_address = email адрес
#
# menupage templates ( /templates/freemarker/body/menupage )
@ -41,69 +41,126 @@ grants_two = This technique could be used to define pages without menu items, th
grants_text_three = This would create a page that would use about.ftl as the body. The page would be \
accessed via /about and would override all servlet mappings in web.xml.
address_street_one = address street one
address_street_two = address street two
address_street_three = address street three
address_label = address label
address_street_one = первая строка адреса
address_street_two = вторая строка адреса
address_street_three = третья строка адреса
address_label = подпись адреса
loading_website_image = Loading website image
loading_website_image = Загрузка изображения сайта
researchers_in = researchers in
view = view
grant_type = grant Type
researchers_in = исследователь в
view = вид
grant_type = тип гранта
grant_entry_for = grant entry for
regions = regions
grant_date = grant Date
map_states_string = states.
map_state_string = state.
regions = регионы
grant_date = дата получения гранта
map_states_string = штатов.
map_state_string = штат.
unable_to_handle_grant_editing = This form is unable to handle the editing of this grant because it is associated with multiple grant individuals.
unable_to_handle_position_editing = This form is unable to handle the editing of this position because it is associated with multiple Position individuals.
currently_no_papers_for = Currently there are no {0} papers for
change_selection = change selection
change_selection = Изменить выделенное
view_all_departments = view all academic departments
first_name = First name
last_name = Last name
first_grant = First Grant
last_grant = Last Grant
first_name = Имя
last_name = Фамилия
first_grant = Первый грант
last_grant = Последний грант
currently_no_researchers = There are currently no researchers with a defined geographic focus.
reviewer_role = Reviewer Role
vivo_profile = VIVO profile
loading_data = loading data
reviewer_role = Роль рецензента
vivo_profile = профиль VIVO
loading_data = данные загружаются
select_award = Selected Award
grants_in_vivo = grants in VIVO
service_provider_role = Service Provider Role
view_all_faculty = view all faculty
no_grants_for = Currently there are no grants for
grants_in_vivo = гранты в VIVO
service_provider_role = Роль предоставителя услуг
view_all_faculty = просмотреть весь факультет
no_grants_for = В данный момент грантов нет грантов для
statewide_locations = state-wide locations.
faculty_who_are_members_of_org = Here are the faculty in the {0} department who are members of this organization.
indiv_foafperson_for = for
indiv_foafperson_return = return to
no_departments_found = No academic departments found.
leadership_role = Leadership Role
countries = countries
first_publication = First publication
last_publication = Last publication
research_area = individuals in the department with this research area
password = password
limit_search = limit search
placeholder_image = placeholder image
view_all_members_of_org = View all the members of this organization.
display_more = more
create_entry = Create Entry
attendee_capitalized = Attendee
no_faculty_found = No faculty members found.
create_capitalized = Create
to = to
enter_new_role_value = Please enter a new value in the Role field.
countries_and_regions = countries and regions.
province_or_region = Province or Region
full_name = Full name
researchers = researchers
years_participation_in = Years of Participation in
return_to_grant = Return to grant
profile_capitalized = Profile
organizer_role = Organizer Role
faculty_memberships = Faculty Memberships
edit_mailing_address = Edit Mailing Address
add_capitalized = Add
indiv_foafperson_for = к
indiv_foafperson_return = вернуться к
no_departments_found = Университетских департаментов не найдено.
leadership_role = Управляющая роль
countries = страны
first_publication = Первая публикация
last_publication = Последняя публикация
research_area = сотрудников департамента спецализирующихся на данной области исследования
password = пароль
limit_search = ограничить поиск
placeholder_image = Изображение-заполнитель
view_all_members_of_org = Просмотреть всех участников данной организации.
display_more = больше
create_entry = Создать запись
attendee_capitalized = Посетитель
no_faculty_found = Членов факультета найдено не было.
create_capitalized = Создать
to = к
enter_new_role_value = Введеите новое значение в поле Роль.
countries_and_regions = страны и регионы.
province_or_region = Провинция или регион
full_name = Полное имя
researchers = исследователи
years_participation_in = Годы участия в
return_to_grant = Вернуться к гранту
profile_capitalized = Профиль
organizer_role = Роль организатора
faculty_memberships = Членство в факультете
edit_mailing_address = Изменить email адрес
add_capitalized = Добавить
#Design labels
scroll_to_top_label = Наверх
toc_label = Содержание
collapse_something = Свернуть
expand_something = Раскрыть
user_settings_label = Выберите настройки:
user_settings_always_open_full_doc = Всегда раскрывать документ при открытии
user_settings_always_open_metadata = Всегда раскрывать метаданные при открытии
expand_doc_switch = Раскрыть документ
collapse_doc_switch = Свернуть документ
expand_metadata_switch = Раскрыть метаданные
collapse_metadata_switch = Свернуть метаданные
literature_excerpt_button_text = Литература
literature_all_button_text = Сводная литература
sources_excerpt_button_text = Источники
sources_all_button_text = Сводные источники
extended_search_label = Расширенный поиск
metadata_label = Метаданные
metadata_query = Поисковый запрос
metadata_relates_to_rubrics = Относится к рубрикам:
metadata_relates_to_issue = Входит в выпуск
metadata_year = Год
metadata_to_rubric = перейти в рубрику
metadata_firstPublication = Первая публикация
metadata_authors = Авторы:
metadata_keywords = Ключевые слова:
metadata_html_text = Текст:
metadata_org_address = Адрес организации:
metadata_in_articles = В составе статей:
#Philosophical classifier
rubricator_parent_rubric = Родительская рубрика:
rubricator_rubric_order = Порядок рубрики
rubricator_subrubrics = Подрубрики
rubricator_articles_in_subrubrics = Статьи в подрубриках
rubricator_excerpts_in_subrubrics = Отрывки в подрубриках
rubricator_articles_in_rubric = Статьи в данной рубрике
rubricator_excerpts_in_rubric = Отрывки в данной рубрике
#Extended search form
extended_search_example = Пример заполнения
extended_search_results_on_page = Результатов на страницу
extended_search_clean = Очистить
extended_search_execute_search = Поиск
open_standard_search_form = Стандартная форма поиска
#Virtual articles creation
show_virtual_article = Показать виртуальную статью
create_compilation_button = Сохранить
create_compilation_no_excerpts = Отрывков не найдено
create_compilation_enter_name_notification = Введите название подобрки
create_compilation_no_name_entered_error = Для создания подоборки необходимо ввести её название

View file

@ -0,0 +1,115 @@
menu_contactus = Contact Us
menu_welcomestart = Welcome
menu_copyright = copyright
menu_support = Support
menu_logout = Log out
menu_loginfull = Log in to manage this site
menu_login = Log in
menu_version = Version
menu_about = About
menu_termuse = Terms of Use
menu_powered = Powered by
intro_title = Welcome to VIVO
intro_para1 = VIVO is a research-focused discovery tool that enables collaboration among scholars of all disciplines.
intro_para2 = Browse or search information on people, departments, courses, grants, and publications.
intro_searchvivo = Search VIVO
intro_filtersearch = Filter search
identity_title = VIVO | connect share discover
identity_index = Index
identity_edit = Edit Page
identity_admin = Site Admin
identity_myprofile = My profile
identity_myaccount = My account
identity_user = user
collection_capitalized = Collection
place_of_grant = Place of grant
email_address = Email Address
#
# menupage templates ( /templates/freemarker/body/menupage )
#
grants_text_one = This body is from the the template file \
vivo/productMods/templates/freemarker/body/menupage/grants.ftl. \
In the display model, the grants page has a display:requiresBodyTemplate \
property that defines that the grants page overrides the default template. \
The default template for these pages is at /vitro/webapp/web/templates/freemarker/body/menupage/menupage.ftl
grants_two = This technique could be used to define pages without menu items, that get \
their content from a freemarker template. An example would be the about page.
grants_text_three = This would create a page that would use about.ftl as the body. The page would be \
accessed via /about and would override all servlet mappings in web.xml.
address_street_one = address street one
address_street_two = address street two
address_street_three = address street three
address_label = address label
loading_website_image = Loading website image
researchers_in = researchers in
view = view
grant_type = grant Type
grant_entry_for = grant entry for
regions = regions
grant_date = grant Date
map_states_string = states.
map_state_string = state.
unable_to_handle_grant_editing = This form is unable to handle the editing of this grant because it is associated with multiple grant individuals.
unable_to_handle_position_editing = This form is unable to handle the editing of this position because it is associated with multiple Position individuals.
currently_no_papers_for = Currently there are no {0} papers for
change_selection = change selection
view_all_departments = view all academic departments
first_name = First name
last_name = Last name
first_grant = First Grant
last_grant = Last Grant
currently_no_researchers = There are currently no researchers with a defined geographic focus.
reviewer_role = Reviewer Role
vivo_profile = VIVO profile
loading_data = loading data
select_award = Selected Award
grants_in_vivo = grants in VIVO
service_provider_role = Service Provider Role
view_all_faculty = view all faculty
no_grants_for = Currently there are no grants for
statewide_locations = state-wide locations.
faculty_who_are_members_of_org = Here are the faculty in the {0} department who are members of this organization.
indiv_foafperson_for = for
indiv_foafperson_return = return to
no_departments_found = No academic departments found.
leadership_role = Leadership Role
countries = countries
first_publication = First publication
last_publication = Last publication
research_area = individuals in the department with this research area
password = password
limit_search = limit search
placeholder_image = placeholder image
view_all_members_of_org = View all the members of this organization.
display_more = more
create_entry = Create Entry
attendee_capitalized = Attendee
no_faculty_found = No faculty members found.
create_capitalized = Create
to = to
enter_new_role_value = Please enter a new value in the Role field.
countries_and_regions = countries and regions.
province_or_region = Province or Region
full_name = Full name
researchers = researchers
years_participation_in = Years of Participation in
return_to_grant = Return to grant
profile_capitalized = Profile
organizer_role = Organizer Role
faculty_memberships = Faculty Memberships
edit_mailing_address = Edit Mailing Address
add_capitalized = Add
literature_excerpt_button_text = Bibliography
literature_all_button_text = All bibliorgraphy
sources_excerpt_button_text = Sources
sources_all_button_text = All sources
remove_doc_from_search_results = Remove from search results

View file

@ -106,4 +106,4 @@ organizer_role = Organizer Role
faculty_memberships = Faculty Memberships
edit_mailing_address = Edit Mailing Address
add_capitalized = Add
remove_doc_from_search_results=Удалить из результатов поиска

View file

@ -0,0 +1,6 @@
<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 8.21428H20" stroke="#8B4513"/>
<path d="M0 10.3571H20" stroke="#8B4513"/>
<path d="M6.09782 16.2857L9.64279 12.1923L13.1878 16.2857H6.09782Z" fill="#8B4513" stroke="#8B4513"/>
<path d="M6.09782 2.28571L9.64279 6.37909L13.1878 2.28571H6.09782Z" fill="#8B4513" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 393 B

View file

@ -0,0 +1,6 @@
<svg width="20" height="18" viewBox="0 0 20 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0 7.5H20" stroke="#8B4513"/>
<path d="M0 9.64285H20" stroke="#8B4513"/>
<path d="M6.09782 4.85714L9.64279 0.763763L13.1878 4.85714H6.09782Z" fill="#8B4513" stroke="#8B4513"/>
<path d="M6.09782 12.2857L9.64279 16.3791L13.1878 12.2857H6.09782Z" fill="#8B4513" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 390 B

View file

@ -0,0 +1,3 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 1L6.5 7.23624L11.9007 1H1.09926Z" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 172 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 318 B

View file

@ -0,0 +1,3 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 1L6.5 7.23624L11.9007 1H1.09926Z" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 172 B

View file

@ -0,0 +1,3 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 1L6.5 7.23624L11.9007 1H1.09926Z" fill="#8B4513" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 187 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 B

After

Width:  |  Height:  |  Size: 126 B

View file

@ -0,0 +1,61 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="5.7735262"
height="10"
viewBox="0 0 5.7735262 9.9999996"
fill="none"
version="1.1"
id="svg4"
sodipodi:docname="arrow-right.svg"
inkscape:version="1.0 (4035a4f, 2020-05-01)">
<metadata
id="metadata10">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs8" />
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="994"
id="namedview6"
showgrid="false"
inkscape:zoom="26.25"
inkscape:cx="3.61814"
inkscape:cy="6.3770448"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="svg4" />
<path
d="M 0.38490149,9.1574888 5.1855781,4.9999822 0.38490149,0.84250696 Z"
fill="#8b4513"
stroke="#8b4513"
id="path2"
inkscape:export-xdpi="300"
inkscape:export-ydpi="300"
style="stroke-width:0.769803" />
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,3 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 7L6.5 0.763763L11.9007 7H1.09926Z" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 173 B

View file

@ -0,0 +1,3 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 7L6.5 0.763763L11.9007 7H1.09926Z" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 173 B

View file

@ -0,0 +1,3 @@
<svg width="13" height="8" viewBox="0 0 13 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.09926 7L6.5 0.763763L11.9007 7H1.09926Z" fill="#8B4513" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 188 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 294 B

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 281 B

After

Width:  |  Height:  |  Size: 94 B

View file

@ -0,0 +1,3 @@
<svg width="16" height="12" viewBox="0 0 16 12" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M2 5L7.5 10.5L14 2" stroke="#8B4513" stroke-width="2.5" stroke-linecap="square" stroke-linejoin="round"/>
</svg>

After

Width:  |  Height:  |  Size: 218 B

View file

@ -0,0 +1,3 @@
<svg width="7" height="7" viewBox="0 0 7 7" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="3.5" cy="3.5" r="3" fill="#F6F6F6" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 165 B

View file

@ -0,0 +1,79 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="download-icon.svg"
inkscape:version="1.0 (4035a4f, 2020-05-01)"
id="svg8"
version="1.1"
viewBox="0 0 7.9375008 7.9375008"
height="7.9375005mm"
width="7.9375005mm">
<defs
id="defs2" />
<sodipodi:namedview
inkscape:guide-bbox="true"
showguides="true"
inkscape:snap-global="true"
inkscape:window-maximized="1"
inkscape:window-y="24"
inkscape:window-x="0"
inkscape:window-height="994"
inkscape:window-width="1920"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="mm"
inkscape:cy="7.9763814"
inkscape:cx="33.471871"
inkscape:zoom="7.9195959"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base">
<sodipodi:guide
id="guide947"
orientation="1,0"
position="15.213542,-3.8742594" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-25.897388,-204.35973)"
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<circle
style="fill:#8b4513;fill-opacity:1;stroke:#8b4513;stroke-width:0.187897;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path907-0"
cx="29.866138"
cy="208.32848"
r="3.8748016" />
<path
sodipodi:nodetypes="cccccccc"
id="path847"
d="m 28.816703,205.08758 h 2.032528 v 2.51321 h 0.965451 l -1.956309,2.2502 -2.091166,-2.40532 h 1.032785 z"
style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.0762951px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path945"
d="m 27.287496,209.99817 0.127737,0.46383 h 4.95888 l 0.127738,-0.3881"
style="fill:none;stroke:#ffffff;stroke-width:0.57;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -0,0 +1,3 @@
<svg width="200" height="32" viewBox="0 0 200 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1 31L13.9836 1H199V31" stroke="#8B4513"/>
</svg>

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 665 B

View file

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:version="1.0 (4035a4f, 2020-05-01)"
height="30.000002"
width="30"
sodipodi:docname="exportPdf.svg"
version="1.1"
viewBox="0 0 30 30.000002"
id="Layer_1"
data-name="Layer 1">
<metadata
id="metadata19">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
inkscape:current-layer="Layer_1"
inkscape:window-maximized="1"
inkscape:window-y="24"
inkscape:window-x="0"
inkscape:cy="20.288771"
inkscape:cx="13.261527"
inkscape:zoom="9.2807765"
showgrid="false"
id="namedview17"
inkscape:window-height="994"
inkscape:window-width="1920"
inkscape:pageshadow="2"
inkscape:pageopacity="0"
guidetolerance="10"
gridtolerance="10"
objecttolerance="10"
borderopacity="1"
bordercolor="#666666"
pagecolor="#ffffff" />
<defs
id="defs4">
<style
id="style2">.cls-1{fill:none;stroke:#078cd6;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}</style>
<style
id="style879">.cls-1{fill:none;stroke:#078cd6;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}.cls-2{fill:#078cd6;}</style>
</defs>
<rect
y="0"
x="0"
height="30.000002"
width="30"
id="rect844"
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.31713;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1" />
<path
style="fill:#8b4513;fill-opacity:1;fill-rule:evenodd;stroke:#8b4513;stroke-width:0.477;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="m 19.029941,11.978389 v -2.8599261 0 L 13.31009,2.4453032 H 2.8263273 c -1.054445,0 -1.90924435,0.8563933 -1.90924435,1.9136048 v 21.912121 c 0,1.056855 0.84932735,1.913605 1.90416325,1.913605 H 17.125783 c 1.051643,0 1.904158,-0.856273 1.904158,-1.897842 V 24.3714 h 7.619952 c 1.583093,0 2.866446,-1.279592 2.866446,-2.858769 v -6.675474 c 0,-1.578854 -1.27361,-2.858768 -2.866446,-2.858768 z M 18.076632,24.3714 v 1.91291 c 0,0.522844 -0.426786,0.947015 -0.95327,0.947015 H 2.8236581 c -0.5197915,0 -0.9532704,-0.424871 -0.9532704,-0.948977 V 4.3475893 c 0,-0.5149715 0.4249277,-0.9489776 0.9490949,-0.9489776 h 9.5372984 v 4.7609001 c 0,1.0670992 0.852735,1.9122592 1.904634,1.9122592 h 3.815217 v 1.906618 h -7.619938 c -1.5830923,0 -2.8664553,1.279592 -2.8664553,2.858768 v 6.675474 c 0,1.578855 1.2736202,2.858769 2.8664553,2.858769 z M 13.31009,3.875266 v 4.2815136 c 0,0.5311235 0.429618,0.9616833 0.9502,0.9616833 h 3.530312 z m -2.865102,9.056432 c -1.0501363,0 -1.9014408,0.858145 -1.9014408,1.899006 v 6.68838 c 0,1.048793 0.860218,1.899007 1.9014408,1.899007 H 26.6616 c 1.050136,0 1.901431,-0.858145 1.901431,-1.899007 v -6.68838 c 0,-1.048793 -0.860209,-1.899006 -1.901431,-1.899006 z M 22.84318,17.69824 v -1.906617 h 3.813234 v -0.953308 h -4.766543 v 6.673159 h 0.953309 v -2.859925 h 2.859925 V 17.69824 Z M 10.450164,16.744932 v 4.766542 h 0.953309 v -2.859925 h 1.901965 c 1.05557,0 1.911269,-0.846281 1.911269,-1.906617 0,-1.052996 -0.852163,-1.906617 -1.911269,-1.906617 h -2.855274 z m 0.953309,-0.953309 v 1.906617 h 1.907618 c 0.52595,0 0.952307,-0.42314 0.952307,-0.953308 0,-0.526498 -0.421991,-0.953309 -0.952307,-0.953309 z m 4.766542,-0.953308 v 6.673159 h 2.855274 c 1.05557,0 1.911274,-0.84516 1.911274,-1.91226 v -2.84864 c 0,-1.056111 -0.852168,-1.912259 -1.911274,-1.912259 z m 0.953309,0.953308 v 4.766543 h 1.907618 c 0.52595,0 0.952307,-0.423 0.952307,-0.953126 v -2.860292 c 0,-0.526396 -0.421991,-0.953125 -0.952307,-0.953125 z"
id="document-file-pdf" />
</svg>

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 886 B

View file

@ -0,0 +1,108 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
data-name="Layer 1"
id="Layer_1"
viewBox="0 0 27.650404 25"
version="1.1"
sodipodi:docname="print.svg"
width="27.650404"
height="25"
inkscape:version="1.0 (4035a4f, 2020-05-01)">
<metadata
id="metadata19">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="994"
id="namedview17"
showgrid="false"
inkscape:zoom="13.125"
inkscape:cx="12.832916"
inkscape:cy="18.850271"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<defs
id="defs4">
<style
id="style2">.cls-1{fill:none;stroke:#078cd6;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}</style>
<style
id="style879">.cls-1{fill:none;stroke:#078cd6;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}.cls-2{fill:#078cd6;}</style>
</defs>
<rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.09761;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="rect844"
width="24.999998"
height="25"
x="-0.42861053"
y="-1.4384998" />
<g
style="fill:none;fill-opacity:1;stroke:#8b4513;stroke-width:2.16261;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(0.53008093,0,0,0.53008093,-3.1373873,-4.7276301)"
id="g909">
<path
style="fill:none;fill-opacity:1;stroke:#8b4513;stroke-width:2.16261;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
class="cls-1"
d="M 16,46 H 11 A 4,4 0 0 1 7,42 V 24 a 4,4 0 0 1 4,-4 h 42 a 4,4 0 0 1 4,4 v 18 a 4,4 0 0 1 -4,4 h -5"
id="path885" />
<line
style="fill:none;fill-opacity:1;stroke:#8b4513;stroke-width:2.16261;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
class="cls-1"
x1="15"
x2="49"
y1="41"
y2="41"
id="line887" />
<path
style="fill:none;fill-opacity:1;stroke:#8b4513;stroke-width:2.16261;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
class="cls-1"
d="m 20,41 h 24 v 12 a 2,2 0 0 1 -2,2 H 22 a 2,2 0 0 1 -2,-2 z"
id="path889" />
<circle
style="fill:none;fill-opacity:1;stroke:#8b4513;stroke-width:2.16261;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
class="cls-2"
cx="45.5"
cy="29.5"
r="2"
id="circle891" />
<path
style="fill:none;fill-opacity:1;stroke:#8b4513;stroke-width:2.16261;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
class="cls-1"
d="m 39,10 v 4 a 2,2 0 0 0 2,2 h 4.06 L 39.77,10 H 21 a 2,2 0 0 0 -2,2 v 7"
id="path893" />
<line
style="fill:none;fill-opacity:1;stroke:#8b4513;stroke-width:2.16261;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
class="cls-1"
x1="26"
x2="38"
y1="45"
y2="45"
id="line895" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
data-name="Layer 1"
id="Layer_1"
viewBox="0 0 30 30.000002"
version="1.1"
sodipodi:docname="save.svg"
width="30"
height="30.000002"
inkscape:version="1.0 (4035a4f, 2020-05-01)">
<metadata
id="metadata19">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
inkscape:document-rotation="0"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="994"
id="namedview17"
showgrid="false"
inkscape:zoom="13.125"
inkscape:cx="13.261527"
inkscape:cy="20.288771"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1" />
<defs
id="defs4">
<style
id="style2">.cls-1{fill:none;stroke:#078cd6;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}</style>
<style
id="style879">.cls-1{fill:none;stroke:#078cd6;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}.cls-2{fill:#078cd6;}</style>
</defs>
<g
id="g859"
transform="matrix(1.2842715,0,0,1.2842715,-4.8150373,-3.5364063)"
style="stroke:#8b4513;stroke-width:0.93438187;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1">
<path
style="stroke:#8b4513;stroke-width:0.93438187;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path8"
d="M 20.768612,24.539185 H 7.3302333 A 1.7917839,1.7917839 0 0 1 5.5384493,22.747401 V 6.6213458 a 1.7917839,1.7917839 0 0 1 1.791784,-1.791784 H 23.456288 a 1.7917839,1.7917839 0 0 1 1.791784,1.791784 V 20.059725 Z"
class="cls-1" />
<rect
style="stroke:#8b4513;stroke-width:0.93438187;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect10"
y="4.8295612"
x="9.5699596"
width="11.646596"
height="11.198649"
class="cls-1" />
<rect
style="stroke:#8b4513;stroke-width:0.93438187;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect12"
y="21.403564"
x="11.80969"
width="7.1671357"
height="3.1356218"
class="cls-1" />
<line
style="stroke:#8b4513;stroke-width:0.93438187;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="line14"
y2="24.539188"
y1="21.403564"
x2="17.185043"
x1="17.185043"
class="cls-1" />
</g>
<rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.31713;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="rect844"
width="30"
height="30.000002"
x="0"
y="0" />
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View file

@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
data-name="Layer 1"
id="Layer_1"
viewBox="0 0 30 30.000002"
version="1.1"
sodipodi:docname="settings.svg"
width="30"
height="30.000002"
inkscape:version="1.0 (4035a4f, 2020-05-01)">
<metadata
id="metadata19">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<sodipodi:namedview
inkscape:guide-bbox="true"
showguides="true"
inkscape:document-rotation="0"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1920"
inkscape:window-height="994"
id="namedview17"
showgrid="false"
inkscape:zoom="13.125"
inkscape:cx="15.771404"
inkscape:cy="17.140427"
inkscape:window-x="0"
inkscape:window-y="24"
inkscape:window-maximized="1"
inkscape:current-layer="Layer_1">
<sodipodi:guide
id="guide903"
orientation="1,0"
position="28.631436,15.572509" />
</sodipodi:namedview>
<defs
id="defs4">
<style
id="style2">.cls-1{fill:none;stroke:#078cd6;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}</style>
<style
id="style879">.cls-1{fill:none;stroke:#078cd6;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;}.cls-2{fill:#078cd6;}</style>
</defs>
<rect
style="fill:none;fill-opacity:1;stroke:none;stroke-width:1.31713;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
id="rect844"
width="30"
height="30.000002"
x="0"
y="2" />
<rect
style="fill:#8b4513;fill-opacity:1;stroke:none;stroke-width:0.433367;stroke-linecap:round;stroke-linejoin:round"
id="rect839-9"
width="27.259666"
height="2"
x="1.3717704"
y="21.941746" />
<circle
r="3.0169961"
cy="22.709797"
cx="20.447834"
id="path871-6-8"
style="fill:#ffffff;fill-opacity:1;stroke:#8b4513;stroke-width:1.03267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="13.560791"
x="1.392127"
height="2"
width="27.259666"
id="rect839-9-9"
style="fill:#8b4513;fill-opacity:1;stroke:none;stroke-width:0.433367;stroke-linecap:round;stroke-linejoin:round" />
<rect
style="fill:#8b4513;fill-opacity:1;stroke:none;stroke-width:0.433367;stroke-linecap:round;stroke-linejoin:round"
id="rect839-9-9-0"
width="27.259666"
height="2"
x="1.3717698"
y="5.9417448" />
<circle
style="fill:#ffffff;fill-opacity:1;stroke:#8b4513;stroke-width:1.03267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="path871-6-8-3"
cx="8.6420794"
cy="14.481617"
r="3.0169961" />
<circle
r="3.0169961"
cy="7.061132"
cx="20.396233"
id="path871-6-8-3-3"
style="fill:#ffffff;fill-opacity:1;stroke:#8b4513;stroke-width:1.03267;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 191 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 452 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 459 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 917 B

View file

@ -0,0 +1,123 @@
document.addEventListener('DOMContentLoaded', addCollapsibleOnClick(), false);
document.addEventListener('DOMContentLoaded', applyExpandSettings(), false);
document.addEventListener('DOMContentLoaded', hideUserSettingsModal(), false);
function showUserSettingsModal() {
var modalElement = document.getElementById("userSettingsModal");
if (modalElement != null) {
modalElement.style.display = 'block';
}
}
function hideUserSettingsModal() {
window.onclick = function(event) {
var modalElement = document.getElementById("userSettingsModal");
var closeElement = document.getElementById("closeModalWindow");
if (event.target == modalElement || event.target == closeElement) {
modalElement.style.display = 'none';
}
}
}
function addCollapsibleOnClick() {
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
var collapsibleLink = coll[i].querySelector('.collapsibleLink');
if (collapsibleLink === null) {
collapseNextElementOnClick(coll[i]);
} else {
expandableNextOuterElementOnClick(collapsibleLink);
}
}
}
function expandableNextOuterElementOnClick(element) {
element.addEventListener("click", function() {
this.parentElement.classList.toggle("expanded");
this.parentElement.classList.toggle("collapsed");
var content = this.parentElement.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
function collapseNextElementOnClick(element) {
element.addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
function applyExpandSettings() {
applyDocumentExpandSettings('switchExpand', 'expandCB', 'expandSettingsCB', '.autoExpand');
applyDocumentExpandSettings('metadataExpandSetting', 'metadataExpandCB', 'metadataExpandSettingCB', '.autoMetadataExpand');
}
function applyDocumentExpandSettings(settingName, buttonId, settingButtonId, targetElementsClass) {
if (localStorage.getItem(settingName) === true || localStorage.getItem(settingName) === 'true') {
var expandSwitchCB = document.getElementById(buttonId);
if (expandSwitchCB != null) {
expandSwitchCB.checked = true;
}
var expandSwitchSettingsCB = document.getElementById(settingButtonId);
if (expandSwitchSettingsCB != null) {
expandSwitchSettingsCB.checked = true;
}
$(targetElementsClass).show();
showDocumentCollapseButton(buttonId);
} else {
$(targetElementsClass).hide();
showDocumentExpandButton(buttonId);
}
}
function switchExpand(inputID, elementsClass) {
var checkBox = document.getElementById(inputID);
if (checkBox.checked == true) {
$(elementsClass).show();
showDocumentCollapseButton(inputID);
} else {
$(elementsClass).hide();
showDocumentExpandButton(inputID);
}
}
function showDocumentCollapseButton(inputID) {
var inputElement = document.getElementById(inputID);
if (inputElement === null) {
return;
}
var collapseTextControl = inputElement.parentElement.querySelector('.collapseTextControl');
collapseTextControl.style.display = "inline";
var expandTextControl = inputElement.parentElement.querySelector('.expandTextControl');
expandTextControl.style.display = "none";
}
function showDocumentExpandButton(inputID) {
var inputElement = document.getElementById(inputID);
if (inputElement === null) {
return;
}
var collapseTextControl = inputElement.parentElement.querySelector('.collapseTextControl');
collapseTextControl.style.display = "none";
var expandTextControl = inputElement.parentElement.querySelector('.expandTextControl');
expandTextControl.style.display = "inline";
}
function switchExpandSettings(checkboxID, settingName) {
var checkBox = document.getElementById(checkboxID);
if (checkBox.checked == true) {
localStorage.setItem(settingName, true);
} else {
localStorage.setItem(settingName, false);
}
}

View file

@ -0,0 +1,178 @@
document.addEventListener('DOMContentLoaded', createTOC(), false);
function createTOC(){
var complexDocElement = document.getElementById("complexDocument");
var tocElement = document.getElementById("tocPlaceHolder");
if (complexDocElement === null || tocElement === null){
console.log("no complex document or no placeholder");
return;
}
addItemsToTOC(complexDocElement,tocElement);
collapseAllTOCElements("tocPlaceHolder");
//show created TOC
tocElement.style.display = "block";
}
function addItemsToTOC(docPart, tocElement){
var docPartChilds = docPart.childNodes;
for (var i = 0; i < docPartChilds.length; i++){
var docPartChild = docPartChilds[i];
if ( docPartChild.nodeType === Node.ELEMENT_NODE && docPartChild.classList.contains("documentPart")){
var tocElementChild = createTOCItem(docPartChild, tocElement);
addItemsToTOC(docPartChild,tocElementChild);
addElementControls(tocElementChild);
}
}
}
function addElementControls(tocElement){
var nameContainer = tocElement.querySelector('.tocElementName');
if (nameContainer === null){
console.log("no nameContainer found");
return;
}
if (tocElement.id === null){
console.log("no tocElement id found");
return;
}
var elementChild = tocElement.querySelector('.tocElement');
if (elementChild === null){
var leafImage = document.createElement("img");
leafImage.className = "tocElementLeafImage";
leafImage.src = urlsBase + "/themes/iph/images/circle-item.svg";
nameContainer.prepend(leafImage);
} else {
var switchImage = document.createElement("img");
switchImage.onclick = function() {switchTOCElement(tocElement.id);};
switchImage.className = "tocElementSwitchImage";
nameContainer.prepend(switchImage);
}
}
function switchTOCElement(id){
var tocElement = document.getElementById(id);
var elementChild = tocElement.querySelector('.tocElement');
if (elementChild.style.display === "none"){
expandTOCElementChilds(id);
setCollapseImageToElement(id);
} else {
collapseTOCElementDescendants(id);
setExpandImageToElement(id);
}
}
function setCollapseImageToElement(id){
var tocElement = document.getElementById(id);
var nameContainer = tocElement.querySelector('.tocElementName');
if (nameContainer === null){
console.log("no nameContainer found");
return;
}
$.extend(this, urlsBase);
var imgElement = nameContainer.querySelector('.tocElementSwitchImage');
if (imgElement != null){
imgElement.src = urlsBase + "/themes/iph/images/arrow-top-small.svg";
}
}
function setExpandImageToElement(id){
var tocElement = document.getElementById(id);
var nameContainer = tocElement.querySelector('.tocElementName');
if (nameContainer === null){
console.log("no nameContainer found");
return;
}
$.extend(this, urlsBase);
var imgElement = nameContainer.querySelector('.tocElementSwitchImage');
if (imgElement != null){
imgElement.src = urlsBase + "/themes/iph/images/arrow-down-small.svg";
}
}
function expandTOCElementChilds(id){
var tocElement = document.getElementById(id);
var elementChilds = tocElement.querySelectorAll(':scope > .tocElement');
for (let i = 0; i < elementChilds.length; i++) {
elementChilds[i].style.display = "block";
setExpandImageToElement(elementChilds[i].id);
}
}
function expandTOCElementDescendants(id){
var tocElement = document.getElementById(id);
var elementChilds = tocElement.querySelectorAll('.tocElement');
for (let i = 0; i < elementChilds.length; i++) {
elementChilds[i].style.display = "block";
setExpandImageToElement(elementChilds[i].id);
}
}
function collapseAllTOCElements(placeHolderId){
var tocRoot = document.getElementById(placeHolderId);
var elementChilds = tocRoot.querySelectorAll('.tocElement');
for (let i = 0; i < elementChilds.length; i++) {
collapseTOCElementDescendants(elementChilds[i].id);
setExpandImageToElement(elementChilds[i].id);
}
}
function expandAllTOCElements(placeHolderId){
var tocRoot = document.getElementById(placeHolderId);
var elementChilds = tocRoot.querySelectorAll('.tocElement');
for (let i = 0; i < elementChilds.length; i++) {
expandTOCElementDescendants(elementChilds[i].id);
setCollapseImageToElement(elementChilds[i].id);
}
}
function collapseTOCElementDescendants(id){
var tocElement = document.getElementById(id);
var elementChilds = tocElement.querySelectorAll('.tocElement');
for (let i = 0; i < elementChilds.length; i++) {
elementChilds[i].style.display = "none";
setCollapseImageToElement(elementChilds[i].id);
}
}
function createTOCItem(docPart, tocElement){
var newTOCElement = document.createElement("div");
var newTOCElementName = document.createElement("div");
var anchor = docPart.getAttribute('id');
var tocElementID = "toc-" + anchor;
newTOCElement.id = tocElementID;
var docPartButton = docPart.previousElementSibling;
var itemName = docPartButton.textContent;
var link = document.createElement("a");
link.setAttribute("href", "javascript:goToDocumentPart(\"" + anchor + "\");" );
link.innerText = itemName;
newTOCElement.appendChild(newTOCElementName);
newTOCElementName.appendChild(link);
newTOCElement.className = "tocElement";
newTOCElementName.className = "tocElementName";
tocElement.appendChild(newTOCElement);
return newTOCElement;
}
function goToDocumentPart(targetId){
if (targetId ===""){
return;
}
var targetNode = document.getElementById(targetId);
if (targetNode === null){
console.log("document has no target node to go to")
return;
}
showParents(targetNode);
document.getElementById(targetId).scrollIntoView();
}
function showParents(targetNode){
if (targetNode != null && "complexDocument" !== targetNode.id){
if (targetNode.style.display === "none") {
targetNode.style.display = "block";
}
showParents(targetNode.parentElement);
}
}

View file

@ -8,6 +8,8 @@
${scripts.add('<script async type="text/javascript" src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>')}
${scripts.add('<script async type="text/javascript" src="//cdn.plu.mx/widget-popup.js"></script>')}
${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph/js/print.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/collapsible_elements.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/toc.js"></script>')}
<#import "individual-qrCodeGenerator.ftl" as qr>
<#import "lib-vivo-properties.ftl" as vp>
<#include "text-lib.ftl">
@ -32,6 +34,8 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<section id="individual-info" ${infoClass!} role="region" style="width: 100%;">
<#include "individual-adminPanel.ftl">
<header>
<div id="articleHeaderWrapper">
<div id="articleTitleWrapper">
<#if relatedSubject??>
<h2>${relatedSubject.relatingPredicateDomainPublic} ${i18n().for} ${relatedSubject.name}</h2>
<p><a href="${relatedSubject.url}" title="${i18n().return_to(relatedSubject.name)}">&larr; ${i18n().return_to(relatedSubject.name)}</a></p>
@ -39,7 +43,9 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<h1 itemprop="name" class="vcard foaf-person fn" <#if !editable>style="float:left;border-right:1px solid #A6B1B0;"</#if>>
<#-- Label -->
<@p.label individual editable labelCount localesCount/>
<#if editable>
<@p.deleteIndividualLink individual />
</#if>
</h1>
<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes -->
<#assign title = propertyGroups.pullProperty("http://purl.obolibrary.org/obo/ARG_2000028","http://www.w3.org/2006/vcard/ns#Title")!>
@ -64,19 +70,32 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<@p.mostSpecificTypesPerson individual editable/>
</#if>
</#if>
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess>style="top:5px"</#if>>
<#include "individual-iconControls.ftl">
</div>
<div class="articleToolsContainer">
<div class="metadataSwitch">
<@expandMetadataSwitch />
</div>
<div class="toolsWrapper">
<div class="articleButtons">
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess></#if>>
<#include "individual-iconControls-iph.ftl">
</span>
<#if editable && profilePageTypesEnabled >
<#include "individual-profilePageTypes.ftl">
</#if>
<@userSettingsModal />
<button id="print"><img onclick="javascript:printPageContent();" src="${urls.base}/themes/iph/images/print.svg"></button>
</div>
<@expandSwitch />
</div>
</div>
</header>
<!-- Positions -->
<#include "individual-positions.ftl">
<!-- Overview -->
<#if !editable>
<p></p>
</#if>
<#include "individual-overview.ftl">
@ -107,149 +126,37 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<#list rawQuery.statements as statement>
<#assign rawQueryString = statement.value!>
</#list>
<#if queryBuilderRulesString?? && rawQueryString??>
<form action="${urls.base}/customsearch" method="post">
<input type="hidden" id="queryBuilderRules" name="queryBuilderRules" value='${queryBuilderRulesString}' />
<input type="hidden" id="querytext" name="querytext" value='${rawQueryString}' />
<input type="submit" id="submit" value="Поисковый запрос"/>
<input type="submit" id="submit" value="${i18n().metadata_query}"/>
</form>
</#if>
<div class="expandSwitch">
<label class="switch">Раскрыть статью
<input id="expandlCB" type="checkbox" onclick="switchExpand();">
</label>
</#if>
<div class="metaDataName collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_label}</div>
</div>
<div id="TOC"></div>
<div class="autoMetadataExpand" style="display:none;">
<#assign firstPub = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#firstPublication")!>
<#if firstPub.statements?has_content && firstPub.type == "data">
<div class="firstPub" style="list-style:none;">
<div class="label">Первая публикация статьи
<div class="label">${i18n().metadata_firstPublication}
</div>
<@p.dataPropertyList firstPub editable />
</div>
</#if>
<#if authors??>
<#list authors as author>
<div class="affiliations" >
<b><#if author.authorFamily??>${author.authorFamily}&nbsp;</#if><#if author.authorGivenName??>${author.authorGivenName}</#if></b>
<#if author.orgName??>
<br><span style="color:rgba(0,0,0,0.54);">${author.orgName}</span>
</#if>
<#if author.orgAddress??>
<br>
<span style="color:rgba(0,0,0,0.54);">Адрес организации: <#if author.orgPostalCode??>${author.orgPostalCode},&nbsp;</#if>${author.orgAddress}&nbsp;</span>
</#if>
<@authors_metadata />
</div>
</#list>
</#if>
<@showRubrics />
<div class="articleParts" style="display:block;">
<#list paths as order>
<#-- ${order.path} -->
<#list excerpts as excerptProperties>
<#if order.elenphExcerpt?has_content && excerptProperties.elenphExcerpt == order.elenphExcerpt>
<#assign excerptText = excerptProperties.htmlContent >
<#assign excerptTextName = excerptProperties.htmlLabel >
<#assign worksCounter = excerptProperties.worksCounter >
<#assign bibliographyCounter = excerptProperties.bibliographyCounter >
</#if>
</#list>
<div class = "articleExcerpt">
<#if excerptText?? && excerptTextName?? && excerptTextName?has_content && excerptText?has_content>
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible">${excerptTextName}</button>
<div class="htmlExcerpt" style="list-style:none; display:none;">
${excerptText}
<#if works?? && works?has_content && worksCounter?number &gt; 0 >
<div>
<button type="button" class="collapsible" style="background-color:white;border:none;padding: 18px;width: 100%;text-align:left;">Работы</button>
<div class="works" style="display:none;">
<#list works as work>
<#if work.elenphExcerpt == order.elenphExcerpt >
<div class="work" style="list-style:none;">
<p> ${work.works} </p>
</div>
</#if>
</#list>
</div>
</div>
</#if>
<#if bibliography?? && bibliography?has_content && bibliographyCounter?number &gt; 0>
<div>
<button type="button" class="collapsible" style="background-color:white;border:none;padding: 18px;width: 100%; text-align: left;">Литература</button>
<div class="bibliography" style="display:none;">
<#list bibliography as one_bibliography>
<#if one_bibliography.elenphExcerpt == order.elenphExcerpt >
<div class="bibliography_entry" style="list-style:none;">
<p> ${one_bibliography.bibliography} </p>
</div>
</#if>
</#list>
</div>
</div>
</#if>
</div>
</#if>
</div> <#-- articleExcerpt -->
</#list>
<#if works?? && works?has_content>
<div>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Работы</button>
<div class="works" style="display:none;">
<#list works as work>
<div class="work" style="list-style:none;">
<p> ${work.works} </p>
</div>
</#list>
</div>
</div>
</#if>
<#if bibliography?? && bibliography?has_content>
<div>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%; text-align: left;">Литература</button>
<div class="bibliography" style="display:none;">
<#list bibliography as one_bibliography>
<div class="bibliography_entry" style="list-style:none;">
<p> ${one_bibliography.bibliography} </p>
</div>
</#list>
</div>
</div>
</#if>
<@documentRubrics />
</div>
<#if authors??>
<#list authors as author>
<div class="authors" style="display:block;float:right; margin:15px;">
<#if author.authorFamily??>${author.authorFamily}</#if>&nbsp;<#if author.authorInitials??>${author.authorInitials}</#if>
</div>
</#list>
</#if>
<@arrangeDocumentParts />
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
<@authors_underline />
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
</script>
<#-- <@dumpAll /> -->
<#assign selectedTemplate = "individual--foaf-person-2column.ftl" >
@ -277,24 +184,6 @@ for (i = 0; i < coll.length; i++) {
</span>
</#if>
<script>
console.log(localStorage.getItem('switchExpand'));
if (localStorage.getItem('switchExpand') === true || localStorage.getItem('switchExpand') === 'true') {
console.log("show html excerpts");
$('.htmlExcerpt').show();
}
function switchExpand(){
var checkBox = document.getElementById("expandlCB");
if (checkBox.checked == true){
$('.htmlExcerpt').show();
localStorage.setItem('switchExpand',true);
} else {
$('.htmlExcerpt').hide();
localStorage.setItem('switchExpand',false);
}
}
</script>
<#if !editable>
<script>
var title = $('div#titleContainer').width();

View file

@ -8,8 +8,12 @@
${scripts.add('<script async type="text/javascript" src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>')}
${scripts.add('<script async type="text/javascript" src="//cdn.plu.mx/widget-popup.js"></script>')}
${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph/js/print.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/collapsible_elements.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/toc.js"></script>')}
<#import "individual-qrCodeGenerator.ftl" as qr>
<#import "lib-vivo-properties.ftl" as vp>
<#include "text-lib.ftl">
<#--Number of labels present-->
<#if !labelCount??>
<#assign labelCount = 0 >
@ -30,13 +34,18 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<section id="individual-info" ${infoClass!} role="region" style="width: 100%;">
<#include "individual-adminPanel.ftl">
<header>
<div id="articleHeaderWrapper">
<div id="articleTitleWrapper">
<#if relatedSubject??>
<h2>${relatedSubject.relatingPredicateDomainPublic} ${i18n().for} ${relatedSubject.name}</h2>
<p><a href="${relatedSubject.url}" title="${i18n().return_to(relatedSubject.name)}">&larr; ${i18n().return_to(relatedSubject.name)}</a></p>
<#else>
<h1 itemprop="name" class="vcard foaf-person fn" <#if !editable>style="float:left;border-right:1px solid #A6B1B0;"</#if>>
<h1 itemprop="name" class="vcard foaf-person fn" <#if !editable>style="border-right:1px solid #A6B1B0;"</#if>>
<#-- Label -->
<@p.label individual editable labelCount localesCount/>
<#if editable>
<@p.deleteIndividualLink individual />
</#if>
</h1>
<#-- Display preferredTitle if it exists; otherwise mostSpecificTypes -->
<#assign title = propertyGroups.pullProperty("http://purl.obolibrary.org/obo/ARG_2000028","http://www.w3.org/2006/vcard/ns#Title")!>
@ -61,19 +70,33 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<@p.mostSpecificTypesPerson individual editable/>
</#if>
</#if>
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess>style="top:5px"</#if>>
<#include "individual-iconControls.ftl">
</div>
<div class="articleToolsContainer">
<div class="metadataSwitch">
<@expandMetadataSwitch />
</div>
<div class="toolsWrapper">
<div class="articleButtons">
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess></#if>>
<#include "individual-iconControls-iph.ftl">
</span>
<#if editable && profilePageTypesEnabled >
<#include "individual-profilePageTypes.ftl">
</#if>
<@userSettingsModal />
<button id="print"><img onclick="javascript:printPageContent();" src="${urls.base}/themes/iph/images/print.svg"></button>
</div>
<@expandSwitch />
</div>
</div>
</header>
<!-- Positions -->
<#include "individual-positions.ftl">
<!-- Overview -->
<#if !editable>
<p></p>
</#if>
<#include "individual-overview.ftl">
@ -93,163 +116,24 @@ ${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/firstName")!>
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/lastName")!>
</#if>
<div class="expandSwitch">
<label class="switch">Раскрыть статью
<input id="expandlCB" type="checkbox" onclick="switchExpand();">
</label>
<div class="metaDataName collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_label}</div>
</div>
<div class="autoMetadataExpand" style="display:none;">
<#assign firstPub = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#firstPublication")!>
<#if firstPub.statements?has_content && firstPub.type == "data">
<div class="firstPub" style="list-style:none;">
<div class="label">Первая публикация статьи
<div class="label">${i18n().metadata_firstPublication}
</div>
<@p.dataPropertyList firstPub editable />
</div>
</#if>
<#--
<#assign issue = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#issue")!>
<#if issue.statements?has_content && issue.type == "data">
<div class="issue" style="list-style:none;">
<div class="label">Выпуск</div>
<@p.dataPropertyList issue editable />
<@authors_metadata />
<@documentRubrics />
</div>
</#if>
<@arrangeDocumentParts />
<#assign year = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#year")!>
<#if year.statements?has_content && year.type == "data">
<div class="year" style="list-style:none;">
<div class="label">Год</div>
<@p.dataPropertyList year editable />
</div>
</#if>
-->
<#if authors??>
<#list authors as author>
<div class="affiliations" >
<b><#if author.authorFamily??>${author.authorFamily}&nbsp;</#if><#if author.authorGivenName??>${author.authorGivenName}</#if></b>
<#if author.orgName??>
<br><span style="color:rgba(0,0,0,0.54);">${author.orgName}</span>
</#if>
<#if author.orgAddress??>
<br>
<span style="color:rgba(0,0,0,0.54);">Адрес организации: <#if author.orgPostalCode??>${author.orgPostalCode},&nbsp;</#if>${author.orgAddress}&nbsp;</span>
</#if>
</div>
</#list>
</#if>
<#assign articleRubrics = propertyGroups.pullProperty("https://iph.ras.ru/relationships#belongsTo")!>
<#if articleRubrics?? && articleRubrics?has_content>
<div class="label">Относится к рубрикам: <@p.addLink articleRubrics editable /> <@p.verboseDisplay articleRubrics /></div>
<#if rubrics?? && rubrics?has_content>
<#list rubrics as rubric>
<li role="listitem" style="list-style:none;">
<a href="${urls.base}/individual?uri=${rubric.rubricID?url}"">${rubric.rubricName}</a>
</li>
</#list>
</#if>
<br/>
</#if>
<div class="articleParts" style="display:block;">
<#list paths as order>
<div class = "articleExcerpt">
<#-- ${order.path} -->
<#list excerpts as excerptProperties>
<#if order.elenphExcerpt?has_content && excerptProperties.elenphExcerpt == order.elenphExcerpt>
<#assign excerptText = excerptProperties.htmlContent >
<#assign excerptTextName = excerptProperties.htmlLabel >
<#assign worksCounter = excerptProperties.worksCounter >
<#assign bibliographyCounter = excerptProperties.bibliographyCounter >
</#if>
</#list>
<#if excerptText?? && excerptTextName?? && excerptTextName?has_content && excerptText?has_content>
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible">${excerptTextName}</button>
<div class="htmlExcerpt" style="list-style:none; display:none;">
${excerptText}
<#if works?? && works?has_content && worksCounter?number &gt; 0 >
<button type="button" class="collapsible" style="background-color:white;border:none;padding: 18px;width: 100%;text-align:left; background-image: url(${urls.base}/themes/iph/images/book_icon.png); background-repeat: no-repeat; background-position: left center;">Работы</button>
<div class="works" style="display:none;">
<#list works as work>
<#if work.elenphExcerpt == order.elenphExcerpt >
<div class="work" style="display:list-item;list-style-image:url(${urls.base}/themes/iph/images/bullet_icon.png); font-style: italic; font-family: PT Serif;">
<p> ${work.works} </p>
</div>
</#if>
</#list>
</div>
</#if>
<#if bibliography?? && bibliography?has_content && bibliographyCounter?number &gt; 0>
<button type="button" class="collapsible" style="background-color:white;border:none;padding: 18px;width: 100%; text-align: left; background-image: url(${urls.base}/themes/iph/images/book_icon.png); background-repeat: no-repeat; background-position: left center;">Литература</button>
<div class="bibliography" style="display:none;">
<#list bibliography as one_bibliography>
<#if one_bibliography.elenphExcerpt == order.elenphExcerpt >
<div class="bibliography_entry" style="display:list-item;list-style-image:url(${urls.base}/themes/iph/images/bullet_icon.png); font-style: italic; font-family: PT Serif;">
<p> ${one_bibliography.bibliography} </p>
</div>
</#if>
</#list>
</div>
</#if>
</div>
</#if>
</div> <#-- articleExcerpt -->
</#list>
</div>
<#if works?? && works?has_content>
<button type="button" class="collapsible" style="border: none; color: #8B4513; padding: 18px;width: 100%;text-align:left; background-color: #ffffff; background-image: url(${urls.base}/themes/iph/images/book_icon.png); background-repeat: no-repeat; background-position: left center;">Работы</button>
<div class="works" style="display:block;">
<#list works as work>
<div class="work" style="display:list-item;list-style-image:url(${urls.base}/themes/iph/images/bullet_icon.png); font-style: italic; font-family: PT Serif;">
<p> ${work.works} </p>
</div>
</#list>
</div>
</#if>
<#if bibliography?? && bibliography?has_content>
<button type="button" class="collapsible" style="border:none; color: #8B4513; padding: 18px;width: 100%; text-align: left; background-color: #ffffff; background-image: url(${urls.base}/themes/iph/images/book_icon.png); background-repeat: no-repeat; background-position: left center;">Литература</button>
<div class="bibliography" style="display:block;">
<#list bibliography as one_bibliography>
<div class="bibliography_entry" style="display:list-item;list-style-image:url(${urls.base}/themes/iph/images/bullet_icon.png); font-style: italic; font-family: PT Serif;">
<p> ${one_bibliography.bibliography} </p>
</div>
</#list>
</div>
</#if>
<#if authors??>
<#list authors as author>
<div class="authors" style="display:block;">
<#if author.authorFamily??>${author.authorFamily}</#if>&nbsp;<#if author.authorInitials??>${author.authorInitials}</#if>
</div>
</#list>
</#if>
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
</script>
<#-- <@dumpAll /> -->
<@authors_underline />
<#assign selectedTemplate = "individual--foaf-person-2column.ftl" >
@ -276,24 +160,6 @@ for (i = 0; i < coll.length; i++) {
</span>
</#if>
<script>
console.log(localStorage.getItem('switchExpand'));
if (localStorage.getItem('switchExpand') === true || localStorage.getItem('switchExpand') === 'true') {
console.log("show html excerpts");
$('.htmlExcerpt').show();
}
function switchExpand(){
var checkBox = document.getElementById("expandlCB");
if (checkBox.checked == true){
$('.htmlExcerpt').show();
localStorage.setItem('switchExpand',true);
} else {
$('.htmlExcerpt').hide();
localStorage.setItem('switchExpand',false);
}
}
</script>
<#if !editable>
<script>
var title = $('div#titleContainer').width();

View file

@ -1,12 +1,23 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#include "individual-setup.ftl">
${scripts.add('<script async type="text/javascript" src="https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js"></script>')}
${scripts.add('<script async type="text/javascript" src="//cdn.plu.mx/widget-popup.js"></script>')}
${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph/js/print.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/collapsible_elements.js"></script>')}
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/toc.js"></script>')}
<#-- Individual profile page template for foaf:Person individuals -->
<!--[if IE 7]>
<link rel="stylesheet" href="${urls.base}/css/individual/ie7-standard-view.css" />
<![endif]-->
<#-- <#include "individual-setup.ftl"> -->
<#import "individual-qrCodeGenerator.ftl" as qr>
<#import "lib-vivo-properties.ftl" as vp>
<#include "text-lib.ftl">
<#--Number of labels present-->
<#if !labelCount??>
<#assign labelCount = 0 >
@ -27,6 +38,8 @@
<section id="individual-info" ${infoClass!} role="region" style="width: 100%;">
<#include "individual-adminPanel.ftl">
<header>
<div id="articleHeaderWrapper">
<div id="articleTitleWrapper">
<#if relatedSubject??>
<h2>${relatedSubject.relatingPredicateDomainPublic} ${i18n().for} ${relatedSubject.name}</h2>
<p><a href="${relatedSubject.url}" title="${i18n().return_to(relatedSubject.name)}">&larr; ${i18n().return_to(relatedSubject.name)}</a></p>
@ -58,19 +71,30 @@
<@p.mostSpecificTypesPerson individual editable/>
</#if>
</#if>
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess>style="top:5px"</#if>>
<#include "individual-iconControls.ftl">
</div>
<div class="articleToolsContainer">
<div class="metadataSwitch">
<@expandMetadataSwitch />
</div>
<div class="toolsWrapper">
<div class="articleButtons">
<span id="iconControlsRightSide" class="<#if editable>iconControlsEditable<#else>iconControlsNotEditable</#if>" <#if !user.hasSiteAdminAccess></#if>>
<#include "individual-iconControls-iph.ftl">
</span>
<#if editable && profilePageTypesEnabled >
<#include "individual-profilePageTypes.ftl">
</#if>
<@userSettingsModal />
<button id="print"><img onclick="javascript:printPageContent();" src="${urls.base}/themes/iph/images/print.svg"></button>
</div>
</div>
</div>
</header>
<!-- Positions -->
<#include "individual-positions.ftl">
<!-- Overview -->
<#if !editable>
<p></p>
</#if>
<#include "individual-overview.ftl">
@ -90,40 +114,43 @@
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/firstName")!>
<#assign skipThis = propertyGroups.pullProperty("http://xmlns.com/foaf/0.1/lastName")!>
</#if>
<#if !editable>
<#if authors??>
<#list authors as author>
<div class="affiliations" >
<b><#if author.authorFamily??>${author.authorFamily}&nbsp;</#if><#if author.authorGivenName??>${author.authorGivenName}</#if></b>
<#if author.orgName??>
<br><span style="color:rgba(0,0,0,0.54);">${author.orgName}</span>
</#if>
<#if author.orgAddress??>
<br>
<span style="color:rgba(0,0,0,0.54);">Адрес организации: <#if author.orgPostalCode??>${author.orgPostalCode},&nbsp;</#if>${author.orgAddress}&nbsp;</span>
</#if>
<div class="metaDataName collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_label}</div>
</div>
</#list>
</#if>
<div class="autoMetadataExpand" style="display:none;">
<#if !editable>
<@authors_metadata />
<#else>
<#assign pubAuthors = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#hasAuthor")!>
<#if pubAuthors?has_content>
<div class="label">Авторы: <@p.addLink pubAuthors editable /> <@p.verboseDisplay pubAuthors /> </div>
<div class="
<#if pubAuthors.statements?has_content >
collapsible collapsed
<#else>
nonePubAuthors
</#if>
">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_authors} <@p.addLink pubAuthors editable /> <@p.verboseDisplay pubAuthors /></div>
</div>
<div class="expandedAuthors autoMetadataExpand" style="display:none;">
<#if pubAuthors.statements?has_content >
<div class="pubAuthors" style="list-style:none;">
<@p.objectProperty pubAuthors editable />
</div>
</#if>
</div>
</#if>
</#if>
<#if articles?has_content>
<div class="label">В составе статей: </div>
<div>
<div class="collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_in_articles}</div>
</div>
<div class="expandedArticles autoMetadataExpand" style="display:none;">
<#list articles as article>
<#if article?has_content >
<div style="list-style:none;border:none;width: 100%;text-align:left;" class="article">
<a href="${urls.base}/individual?uri=${article.articleUri?url}"">${article.articleName}</a>
<div class="articleList" style="list-style:none;">
<a href="${urls.base}/individual?uri=${article.articleUri?url}">${article.articleName}</a>
</div>
</#if>
</#list>
@ -132,22 +159,32 @@
<#assign rubrics = propertyGroups.pullProperty("https://iph.ras.ru/relationships#belongsTo")!>
<#if rubrics?has_content>
<div class="label">Относится к: <@p.addLink rubrics editable /> <@p.verboseDisplay rubrics /> </div>
<div class="collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_relates_to_rubrics} <@p.addLink rubrics editable /> <@p.verboseDisplay rubrics /></div>
</div>
<div class="expandedRubrics autoMetadataExpand" style="display:none;">
<#if rubrics.statements?has_content >
<div class="rubrics" style="list-style:none;">
<div class="rubricsList" style="list-style:none;">
<@p.objectProperty rubrics editable />
</div>
</#if>
</#if>
<#assign keywords = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#keywords")!>
<#if keywords?has_content >
<div class="label">Ключевые слова: <@p.addLink keywords editable /> <@p.verboseDisplay keywords /> </div>
<#if keywords.statements?has_content && keywords.type == "data">
<div class="keywords" style="list-style:none;">
<@p.dataPropertyList keywords editable />
</div>
</#if>
<#assign keywords = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#keywords")!>
<#if keywords?has_content >
<div class="collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_keywords} <@p.addLink keywords editable /> <@p.verboseDisplay keywords /></div>
</div>
<div class="expandedKeywords autoMetadataExpand" style="display:none;">
<div class="wrapperExpandedKeywords">
<#if keywords.statements?has_content && keywords.type == "data">
<@p.dataPropertyList keywords editable />
</#if>
</div>
</div>
</#if>
</div>
<#assign htmlExcerpt = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#htmlExcerpt")!>
<#if htmlExcerpt?has_content >
<#if htmlExcerpt.statements?has_content && htmlExcerpt.type == "data">
@ -156,24 +193,22 @@
<#-- object property -->
</div>
<#else>
<div class="label">Текст отрывка: <@p.addLink htmlExcerpt editable /> <@p.verboseDisplay htmlExcerpt /> </div>
<div class="label">${i18n().metadata_html_text} <@p.addLink htmlExcerpt editable /> <@p.verboseDisplay htmlExcerpt /> </div>
</#if>
</#if>
<#assign works = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#works")!>
<#if works.statements?has_content || editable >
<br/>
<div class="works" style="list-style:none;">
<h2 class="label">Работы: <@p.addLink works editable /> <@p.verboseDisplay works /></h2>
<h2 class="label">${i18n().sources_excerpt_button_text} <@p.addLink works editable /> <@p.verboseDisplay works /></h2>
<@p.dataPropertyList works editable />
</div>
</#if>
<#assign biblio= propertyGroups.pullProperty("https://litvinovg.pro/text_structures#bibliography")!>
<#if biblio.statements?has_content || editable >
<br/>
<div class="biblio" style="list-style:none;">
<h2 class="label">Литература: <@p.addLink biblio editable /> <@p.verboseDisplay biblio /></h2>
<h2 class="label">${i18n().literature_excerpt_button_text} <@p.addLink biblio editable /> <@p.verboseDisplay biblio /></h2>
<@p.dataPropertyList biblio editable />
</div>
</#if>

View file

@ -4,7 +4,6 @@
<#import "lib-vivo-properties.ftl" as p>
<#-- <@dumpAll /> -->
<div class="virtualArticlePart" partUri="${individual.uri}" style="display:none;">
<#list excerptInfo as excerptProperties>
<#if excerptProperties.property == "https://litvinovg.pro/text_structures#htmlExcerpt">
<#assign excerptText = excerptProperties.value >
@ -17,7 +16,8 @@
</#if>
</#list>
<#if excerptText?? && excerptTextName?? && excerptTextName?has_content && excerptText?has_content>
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible">${excerptTextName}</button>
<div class="virtualArticlePart compilationDraftExcerpt" partUri="${individual.uri}" partName="${excerptTextName}" style="display:none;">
<button type="button" style="border:none;width: 100%; text-align:left;" class="collapsible">${excerptTextName}</button>
<div class="htmlExcerpt" style="list-style:none; display:none;">
${excerptText}
<#if excerptAuthor?? && excerptAuthor?has_content>
@ -38,10 +38,10 @@
</div>
</#if>
</div>
</#if>
<div class="excerptSearchResult">
<div class="searchResult">
<a href="${individual.profileUrl}" title="${i18n().individual_name}">${individual.name}</a>
<@p.displayTitle individual />
<p class="snippet">${individual.snippet}</p>

View file

@ -5,16 +5,16 @@
<#if !issueName??>
<#assign issueName = article.issue>
<#assign divOpened = true >
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible">${issueName}</button>
<div clas="issue" style="list-style:none; display:none; padding: 18px;">
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible active">${issueName}</button>
<div class="issue" style="list-style:none; padding: 18px;">
<p><a href="${urls.base}/individual?uri=${article.uri?url}">${article.name}</a></p>
<#elseif issueName == article.issue>
<p><a href="${urls.base}/individual?uri=${article.uri?url}">${article.name}</a></p>
<#else>
<#assign issueName = article.issue>
</div>
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible">${issueName}</button>
<div clas="issue" style="list-style:none; display:none;padding: 18px;">
<button type="button" style="border:none;padding: 18px;width: 100%; text-align:left;" class="collapsible active">${issueName}</button>
<div class="issue" style="list-style:none; padding: 18px;">
<p><a href="${urls.base}/individual?uri=${article.uri?url}">${article.name}</a></p>
</#if>
</#list>
@ -38,4 +38,8 @@ for (i = 0; i < coll.length; i++) {
}
});
}
var issueContents = document.getElementsByClassName("issue");
for (i = 0; i < issueContents.length; i++) {
issueContents[i].style.display = "none";
}
</script>

View file

@ -13,26 +13,35 @@
<#else>
${copyright.text}
</#if>
| <a class="terms" href="${urls.termsOfUse}" title="${i18n().menu_termuse}">${i18n().menu_termuse}</a></small> |
<a rel="license" href="http://creativecommons.org/licenses/by-nc-nd/4.0/"><img alt="Creative Commons" style="border-width:0;" src="https://i.creativecommons.org/l/by-nc-nd/4.0/80x15.png" /></a></small>
</#if>
${i18n().menu_powered} <a class="powered-by-vivo" href="http://vivoweb.org" target="_blank" title="${i18n().menu_powered} VIVO"><strong>VIVO</strong></a>
<a class="powered-by-vivo" href="http://vivoweb.org" target="_blank" title="${i18n().menu_powered} VIVO">Powered by <strong>VIVO</strong></a>
<#if user.hasRevisionInfoAccess>
| ${i18n().menu_version} <a href="${version.moreInfoUrl}" title="${i18n().menu_version}">${version.label}</a>
${i18n().menu_version} <a href="${version.moreInfoUrl}" title="${i18n().menu_version}">${version.label}</a>
</#if>
</p>
<nav role="navigation">
<#-- <nav role="navigation">
<ul id="footer-nav" role="list">
<li role="listitem"><a href="${urls.about}" title="${i18n().menu_about}">${i18n().menu_about}</a></li>
<#if urls.contact??>
<li role="listitem"><a href="${urls.about}" title="${i18n().menu_about}">${i18n().menu_about}</a></li>-->
<#-- <#if urls.contact??>
<li role="listitem"><a href="${urls.contact}" title="${i18n().menu_contactus}">${i18n().menu_contactus}</a></li>
</#if>
<li role="listitem"><a href="http://www.vivoweb.org/support" target="blank" title="${i18n().menu_support}">${i18n().menu_support}</a></li>
<li role="listitem"><a href="http://www.vivoweb.org/support" target="blank" title="${i18n().menu_support}">${i18n().menu_support}</a></li> -->
</ul>
</nav>
<button id="scrollToTopBtn">${i18n().scroll_to_top_label}</button>
<script>
var scrollToTopBtn = document.getElementById("scrollToTopBtn");
var rootElement = document.documentElement;
function scrollToTop() {
rootElement.scrollTo({
top: 0,
behavior: "smooth"
});
}
scrollToTopBtn.addEventListener("click", scrollToTop)
</script>
</div>
</footer>

View file

@ -36,3 +36,4 @@ an individual profile page. -->
${headContent!}
<link rel="shortcut icon" type="image/x-icon" href="${urls.base}/favicon.ico">
<#include "statistic_counters.ftl">

View file

@ -1,7 +1,7 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<header id="branding" role="banner">
<div id="topArea">
<h1 class="vivo-logo"><a title="${i18n().identity_title}" href="${urls.home}"><span class="displace">${siteName}</span></a></h1>
<#-- Since we are using a graphic text for the tagline, we won't render ${siteTagline}
<#if siteTagline?has_content>
@ -50,4 +50,5 @@
</ul>
</nav>
</div>
</header>

View file

@ -44,7 +44,7 @@
<!-- Contact Info -->
<div id="individual-tools-people">
<span id="iconControlsLeftSide">
<img id="uriIcon" title="${individual.uri}" src="${urls.images}/individual/uriIcon.gif" alt="${i18n().uri_icon}"/>
<img id="uriIcon" title="${individual.uri}" src="${urls.base}/themes/iph/images/uricon-icon.png" alt="${i18n().uri_icon}"/>
<#if checkNamesResult?has_content >
<img id="qrIcon" src="${urls.images}/individual/qr_icon.png" alt="${i18n().qr_icon}" />
<span id="qrCodeImage" class="hidden">${qrCodeLinkedImage!}

View file

@ -0,0 +1,28 @@
<#-- $This file is distributed under the terms of the license in LICENSE$ -->
<#-- Icon controls displayed in upper-right corner -->
<img id="uriIcon" title="${individual.uri}" src="${urls.base}/themes/iph/images/share-icon.png" alt="${i18n().share_the_uri}"/>
<#if checkNamesResult?has_content >
<img id="qrIcon" src="${urls.images}/individual/qr-code-icon.png" alt="${i18n().qr_icon}" />
<span id="qrCodeImage" class="hidden">${qrCodeLinkedImage!}
<a class="qrCloseLink" href="#" title="${i18n().qr_code}">${i18n().close_capitalized}</a>
</span>
</#if>
<#--
Some contact information is displayed on the profile page by default; e.g., phone numbes and
email addresses. If an institution has an additional location for contact info, such as a
university directory, a third "contact" icon is available that can be used to direct users to
that directory. The <a> tag below shows an example using Cornell University's directory.
<#assign netid = individual.selfEditingId()!>
<#if netid?has_content>
<a href="http://www.cornell.edu/search/?tab=people&netid=${netid}" title="Cornell University directory entry for ${netid}" target="_blank">
<img src="${urls.images}/individual/contact-info-icon.png" title="view additional contact information" alt="contact info" />
</a>
</#if>
-->

View file

@ -7,19 +7,17 @@
<head>
<#include "head.ftl">
</head>
<script>var urlsBase = "${urls.base}";</script>
<body class="${bodyClasses!}" onload="${bodyOnload!}">
<#include "identity.ftl">
<#include "menu.ftl">
<div id="articleWrapper">
<#if currentServlet = "individual" && currentServlet != "display">
<div id="searchRightpanel">
<#include "customsearchpanel.ftl" >
</div>
<#if currentServlet = "individual"||currentServlet = "display"||currentServlet = "entity">
<#include "rightPanel.ftl">
</#if>
<#include "contentWrapper.ftl">
<#if currentServlet != "individual" && currentServlet != "login" && currentServlet != "display">
<#if currentServlet != "individual" && currentServlet != "login" && currentServlet != "display" && currentServlet != "customsearch" && currentServlet != "entity">
<section id="search-home" role="region">
<h3><span class="search-filter-selected">filteredSearch</span></h3>

View file

@ -1,36 +1,29 @@
<div id="querybuilder-container" style="display:none;">
<div id="CounterSearchWrapper">
<div id="builder">
<div id="SearchTitle">Параметры поиска</div>
<div id="SearchTitle">${i18n().extended_search_label}</div>
</div>
<div class="btn-group-bottom">
<div id="settingsButtons">
<div id="OuterWrapperButtons">
<div id="wrapperButtons">
<button id="btn-set" class="btn btn-success set-json" data-target="basic">Пример заполнения</button>
<button id="btn-reset-button" class="btn btn-warning reset" data-target="basic">Очистить</button>
<button id="btn-set" class="btn btn-success set-json" data-target="basic">${i18n().extended_search_example}</button>
<button id="btn-reset-button" class="btn btn-warning reset" data-target="basic">${i18n().extended_search_clean}</button>
<!-- <button id="btn-get" class="btn btn-primary parse-json" data-target="basic">Get rules</button> -->
<div id="SelectResults">
<label style="display:inline;" for="hitsPerPage">Результатов на страницу</label>
<select name="hitsPerPage" id="hitsPerPageSelect">
<option value="20" selected="selected">20</option>
<option value="40">40</option>
<option value="60">60</option>
<option value="80">80</option>
<option value="100">100</option>
</select>
<label style="display:inline;" for="hitsPerPage">${i18n().extended_search_results_on_page}</label>
<@selectHitsPerPage/>
</div>
</div>
</div>
<button id="btn-search-expand" class="btn btn-warning reset" data-target="basic">Поиск</button>
<button id="btn-search-expand" class="btn btn-warning reset" data-target="basic">${i18n().extended_search_execute_search}</button>
</div>
</div>
</div>
<div id="backgroundForm">
<button id="btn-get-standard-searchform" class="btn btn-warning reset" data-target="basic">Стандартная форма поиска</button>
<button id="btn-get-standard-searchform" class="btn btn-warning reset" data-target="basic">${i18n().open_standard_search_form}</button>
</div>
</div>
<script src="themes/iph/js/query-builder.standalone.min.js"></script>
<script src="themes/iph/js/query-builder.ru.js"></script>
<script>
@ -123,7 +116,7 @@
rules: rules_start
});
$('#btn-reset').on('click', function() {
$('#btn-reset-button').on('click', function() {
$('#builder').queryBuilder('reset');
});
@ -138,24 +131,13 @@
});
//$('#btn-get').on('click', function() {
// var result = $('#builder').queryBuilder('getRules');
//
// if (!$.isEmptyObject(result)) {
// alert(JSON.stringify(result, null, 2));
// }
//
// });
$('#btn-search').on('click', function() {
var json_result = $('#builder').queryBuilder('getRules');
$('#btn-search-expand').on('click', function() {
var json_result = $('#builder').queryBuilder('getRules', { get_flags: true });
var query_string = format_query_string(json_result,"");
var hits = $("#hitsPerPageSelect :selected");
if (!$.isEmptyObject(query_string)) {
<#if !queryBuilderRules??>
localStorage.setItem('queryBuilderForm',JSON.stringify(json_result));
localStorage.setItem('queryBuilderFormSaved',true);
</#if>
var queryURL = "${urls.base}/customsearch?querytext=" + query_string;
if (hits !== null){
queryURL = queryURL.concat("&hitsPerPage=",hits.text());
@ -168,29 +150,90 @@
//}
});
function format_query_string(json_query, string_query){
function format_query_string(json_query, string_query, htmlEncode = true){
if ('condition' in json_query && 'rules' in json_query ){
if (json_query.rules.length > 1 ) {
string_query +=" ( ";
var i;
for (i = 0; i < json_query.rules.length; i++) {
string_query = format_query_string(json_query.rules[i], string_query);
string_query = format_query_string(json_query.rules[i], string_query, htmlEncode);
if (i + 1 < json_query.rules.length){
string_query += " " + json_query.condition + " ";
}
}
string_query +=" ) ";
} else {
string_query = format_query_string(json_query.rules[0], string_query);
string_query = format_query_string(json_query.rules[0], string_query, htmlEncode);
}
} else if ( 'field' in json_query && 'value' in json_query ){
if ('operator' in json_query && json_query.operator.startsWith("not_")){
string_query += "NOT ";
}
string_query += json_query.field + ":" + json_query.value.toString().replace(/[']+/g,'').replace(/#/g,'%23') ;
if (json_query.hasOwnProperty('data') && json_query.data.hasOwnProperty('value')){
var value = "\"" + json_query.data.value.toString()+ "\"";
} else {
var value = json_query.value.toString();
}
if (htmlEncode){
string_query += json_query.field + ":" + value.replace(/[']+/g,'').replace(/#/g,'%23') ;
} else {
string_query += json_query.field + ":" + value.replace(/[']+/g,'');
}
}
return string_query;
}
function excludeDocByURI(name, uri){
var allRules = $('#builder').queryBuilder('getRules', { get_flags: true });
var excludeRuleString = '{ "id": "URI", "field": "URI", "type": "string", "flags":{}, "input": "text", "operator": "not_contains", "data":{} }';
var excludeRule = JSON.parse(excludeRuleString);
excludeRule.data.value = uri;
excludeRule.flags.value_readonly = true;
excludeRule.flags.filter_readonly = true;
excludeRule.flags.operator_readonly = true;
excludeRule.value = name;
if (allRules !== null){
if (allRules.condition === "AND"){
allRules.rules.push(excludeRule);
} else {
var outerRulesString = '{ "condition": "AND", "rules": [] }';
var outerRules = JSON.parse(outerRulesString);
outerRules.rules.push(allRules);
outerRules.rules.push(excludeRule);
allRules = outerRules;
}
$('#builder').queryBuilder('setRules', allRules);
var elements = document.querySelectorAll('[parturi="' + uri + '"]');
var i;
for (i = 0; i < elements.length; i++) {
elements[i].parentElement.remove();
}
}
}
function createRemoveButtons(){
$('.compilationDraftExcerpt').each(function(index){ createRemoveButton(this)});
}
function createRemoveButton(element){
var uri = element.getAttribute('parturi');
var button = element.querySelector('button');
var name = button.textContent;
var a = document.createElement('a');
a.setAttribute('href',"javascript:excludeDocByURI(\'" + escapeQutes(name) + "\',\'" + escapeQutes(uri) + "\');");
a.setAttribute('class',"removeDocFromSearch");
a.textContent = "${i18n().remove_doc_from_search_results}" ;
button.appendChild(a);
}
function escapeQutes(input) {
return input
.replace(/"/g, "&quot;")
.replace(/'/g, "&#039;")
}
</script>
<#macro freeField field >
{
@ -227,3 +270,19 @@
operators: ['contains', 'not_contains']
},
</#macro>
<#macro selectHitsPerPage>
<#if !hitsPerPage?? >
<#assign hitsPerPage = 20 >
</#if>
<#assign hitsValues= [20,40,60,80,100]>
<select name="hitsPerPage" id="hitsPerPageSelect">
<option value="${hitsPerPage}" selected="selected">${hitsPerPage}</option>
<#list hitsValues as hppValue>
<#if hppValue != hitsPerPage>
<option value="${hppValue}">${hppValue}</option>
</#if>
</#list>
</select>
</#macro>

View file

@ -0,0 +1,17 @@
<div id="searchRightpanel">
<div id="articleIconsWrapper">
</div>
<#include "customsearchpanel.ftl" >
<div id="tocPlaceHolder" style="display:none;">
<div id="tocName">${i18n().toc_label}</div>
<div id="wrapperTocButtons">
<div id="tocExpandAll" onclick="javascript:expandAllTOCElements('tocPlaceHolder');">${i18n().expand_something}
<img id="tocExpandImageAll" onclick="javascript:expandAllTOCElements('tocPlaceHolder');" src="${urls.base}/themes/iph/images/all-toc-expand.svg"/>
</div>
<div id="tocCollapseAll" onclick="javascript:collapseAllTOCElements('tocPlaceHolder');">${i18n().collapse_something}
<img id="tocCollapseImageAll" onclick="javascript:collapseAllTOCElements('tocPlaceHolder');" src="${urls.base}/themes/iph/images/all-toc-collapse.svg"/>
</div>
</div>
</div>
</div>

View file

@ -1,16 +1,20 @@
<#import "lib-vivo-properties.ftl" as vp>
<#include "individual-setup.ftl">
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/collapsible_elements.js"></script>')}
${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph/js/print.js"></script>')}
<section id="individual-intro" class="vcard person" role="region">
<span itemscope itemtype="http://schema.org/Person">
<section id="individual-info" ${infoClass!} role="region" style="width: 100%;">
<#include "individual-adminPanel.ftl">
<header>
<div id="articleTitleWrapper">
<#if relatedSubject??>
<h2>${relatedSubject.relatingPredicateDomainPublic} ${i18n().for} ${relatedSubject.name}</h2>
<p><a href="${relatedSubject.url}" title="${i18n().return_to(relatedSubject.name)}">&larr; ${i18n().return_to(relatedSubject.name)}</a></p>
<#else>
<h1 itemprop="name" class="vcard foaf-person fn" <#if !editable>style="float:left;width:100%;border-right:1px solid #A6B1B0;"</#if>>
<h1 itemprop="name" class="vcard foaf-person fn" <#if !editable>style="width:100%;border-right:1px solid #A6B1B0;"</#if>>
<@p.label individual editable labelCount localesCount/>
</h1>
</#if>
@ -18,6 +22,7 @@
<#if editable && profilePageTypesEnabled >
<#include "individual-profilePageTypes.ftl">
</#if>
</div>
</header>
</section>
</span>
@ -25,7 +30,7 @@
<#assign parent = propertyGroups.pullProperty("https://iph.ras.ru/relationships#hasParent")!>
<#if parent?has_content>
<div class="label">Родительская рубрика<#if !parent.statements?has_content> <@p.addLink parent editable /></#if> <@p.verboseDisplay parent /></div>
<div class="label">${i18n().rubricator_parent_rubric}<#if !parent.statements?has_content> <@p.addLink parent editable /></#if> <@p.verboseDisplay parent /></div>
<#if parent.statements?has_content >
<div style="list-style:none;" class="parentRubric">
<@p.objectProperty parent editable />
@ -36,7 +41,7 @@
<#assign order = propertyGroups.pullProperty("https://iph.ras.ru/relationships#rubricOrder")!>
<#if order?has_content>
<div class="label">Порядок рубрики<#if !order.statements?has_content> <@p.addLink order editable /></#if> <@p.verboseDisplay order /></div>
<div class="label">${i18n().rubricator_rubric_order}<#if !order.statements?has_content> <@p.addLink order editable /></#if> <@p.verboseDisplay order /></div>
<#if order.statements?has_content >
<div style="list-style:none;" class="rubricOrder">
<@p.dataPropertyList order editable />
@ -46,11 +51,11 @@
</#if>
<#if childRubrics?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Подрубрики</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_subrubrics}</button>
<div style="display:none;">
<#list childRubrics as childRubric>
<#if childRubric?has_content >
<div style="list-style:none;border:none;padding: 18px;width: 100%;text-align:left;" class="childRubric">
<div class="childRubric">
<a href="${urls.base}/individual?uri=${childRubric.rubricID?url}"">${childRubric.rubricName}</a>
</div>
</#if>
@ -59,11 +64,11 @@
</#if>
<#if childArticles?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Статьи в подрубриках</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_articles_in_subrubrics}</button>
<div style="display:none;">
<#list childArticles as childArticle>
<#if childArticle?has_content >
<div style="list-style:none;border:none;padding: 18px;width: 100%;text-align:left;" class="childArticle">
<div class="childArticle">
<a href="${urls.base}/individual?uri=${childArticle.childArticleID?url}"">${childArticle.childArticleName}</a>
</div>
</#if>
@ -72,11 +77,11 @@
</#if>
<#if childExcerpts?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Отрывки в подрубриках</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_excerpts_in_subrubrics}</button>
<div style="display:none;">
<#list childExcerpts as childExcerpt>
<#if childExcerpt?has_content >
<div style="list-style:none;border:none;padding: 18px;width: 100%;text-align:left;" class="childExcerpt">
<div class="childExcerpt">
<a href="${urls.base}/individual?uri=${childExcerpt.childExcerptID?url}"">${childExcerpt.childExcerptName}</a>
</div>
</#if>
@ -85,7 +90,7 @@
</#if>
<#if articles?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Статьи в данной рубрике</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_articles_in_rubric}</button>
<div class="articles" style="display:none;">
<#list articles as article>
<#if article?has_content >
@ -98,7 +103,7 @@
</#if>
<#if excerpts?has_content>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">Отрывки в данной рубрике</button>
<button type="button" class="collapsible" style="border:none;padding: 18px;width: 100%;text-align:left;">${i18n().rubricator_excerpts_in_rubric}</button>
<div style="display:none;" class="excerpts">
<#list excerpts as excerpt>
<#if excerpt?has_content >
@ -109,23 +114,3 @@
</#list>
</div>
</#if>
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
} else {
content.style.display = "block";
}
});
}
</script>

View file

@ -1,8 +1,15 @@
${scripts.add('<script type="text/javascript" src="${urls.base}/themes/iph/js/collapsible_elements.js"></script>')}
${scripts.add('<script async type="text/javascript" src="${urls.base}/themes/iph/js/print.js"></script>')}
<#list rubrics as rubric>
<#if !rubric.parentUri??>
<#assign childs = rubric.childs?number>
<button type="button" style="border:none;padding: 15px;text-align:left; width:100%;" class="collapsible">
<@openButton childs=childs/><a style="padding-left:15px;" href="individual?uri=${rubric.uri?url}">${rubric.name}</a></button>
<@openButton childs=childs/><a style="padding-left:15px;">${rubric.name}</a>
<div id="rubricFollow">
<a href="individual?uri=${rubric.uri?url}">${i18n().metadata_to_rubric}</a>
</div>
</button>
<div class="rubricContents" style="display:none;">
<#if (childs &gt; 0) >
<@nestedRubrics allrubrics=rubrics parentUri=rubric.uri deep=10 level=1 />
@ -13,24 +20,6 @@
</#list>
<script>
var coll = document.getElementsByClassName("collapsible");
var i;
for (i = 0; i < coll.length; i++) {
coll[i].addEventListener("click", function() {
this.classList.toggle("active");
var content = this.nextElementSibling;
if (content.style.display === "block") {
content.style.display = "none";
$(this).children('.collapsibleSign').text('+');
} else {
content.style.display = "block";
$(this).children('.collapsibleSign').text('');
}
});
}
</script>
<#macro openButton childs>
<#if childs &gt; 0>
<div class="collapsibleSign" style="display:inline-block;width:10px;">+</div>
@ -45,7 +34,11 @@
<#if innerRubric.parentUri?? && innerRubric.parentUri == parentUri>
<#assign childs = innerRubric.childs?number>
<#assign count = count + 1 >
<button type="button" style="border:none;padding: 15px 0px 15px ${15+15*level}px;width: 100%; text-align:left;" class="collapsible"><@openButton childs=childs /><a style="padding-left:15px;" href="individual?uri=${innerRubric.uri?url}">${innerRubric.name}</a></button>
<button type="button" style="border:none;padding: 15px 0px 15px ${15+15*level}px;width: 100%; text-align:left;" class="collapsible"><@openButton childs=childs /><a style="padding-left:15px;">${innerRubric.name}</a>
<div id="rubricFollow">
<a href="individual?uri=${innerRubric.uri?url}">${i18n().metadata_to_rubric}</a>
</div>
</button>
<div class="rubricContents" style="display:none;">
<#if (deep &gt; 1) && (childs &gt; 0)>
<@nestedRubrics allrubrics=rubrics parentUri=innerRubric.uri deep=deep-1 level=level+1 />

View file

@ -1,6 +1,6 @@
<div id="simple-search-container">
<#include "customSearchForm.ftl">
<button id="switch-to-extended-searchform">Расширенный поиск</button>
<button id="switch-to-extended-searchform">${i18n().extended_search_label}</button>
</div>
<#include "queryBuilder.ftl">

View file

@ -0,0 +1,254 @@
<#macro showRubrics>
<#assign currentRubrics = propertyGroups.pullProperty("https://iph.ras.ru/relationships#belongsTo")!>
<#if currentRubrics?? && currentRubrics?has_content>
<div class="label collapsible">${i18n().metadata_relates_to_rubrics} <@p.addLink currentRubrics editable /> <@p.verboseDisplay currentRubrics /></div>
<#if rubrics?? && rubrics?has_content>
<#list rubrics as rubric>
<li role="listitem" style="list-style:none;">
<a href="${urls.base}/individual?uri=${rubric.rubricID?url}">${rubric.rubricName}</a>
</li>
</#list>
</#if>
<br/>
</#if>
</#macro>
<#macro showIssue>
<#assign issue = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#issue")!>
<#if issue.statements?has_content && issue.type == "data">
<div class="issue" style="list-style:none;">
<div class="label">${i18n().metadata_relates_to_issue}</div>
<@p.dataPropertyList issue editable />
</div>
</#if>
</#macro>
<#macro showYear>
<#assign year = propertyGroups.pullProperty("https://litvinovg.pro/text_structures#year")!>
<#if year.statements?has_content && year.type == "data">
<div class="year" style="list-style:none;">
<div class="label">${i18n().metadata_year}</div>
<@p.dataPropertyList year editable />
</div>
</#if>
</#macro>
<#macro documentRubrics >
<#assign docRubrics = propertyGroups.pullProperty("https://iph.ras.ru/relationships#belongsTo")!>
<#if ( docRubrics?? && docRubrics?has_content ) || (rubrics?? && rubrics?has_content)>
<div class="<#if rubrics?? && rubrics?has_content>collapsible collapsed</#if>" ><div class="collapsibleLink" style="display:inline;">${i18n().metadata_relates_to_rubrics}</div>
<#if docRubrics?? && docRubrics?has_content >
<@p.addLink docRubrics editable /> <@p.verboseDisplay docRubrics /><br/>
</#if>
</div>
</#if>
<#if rubrics?? && rubrics?has_content>
<div class="expandedContent autoMetadataExpand" style="display:none;">
<#list rubrics as rubric>
<li role="listitem" style="list-style:none;">
<a href="${urls.base}/individual?uri=${rubric.rubricID?url}"">${rubric.rubricName}</a>
</li>
</#list>
</div>
</#if>
</#macro>
<#macro arrangeDocumentParts >
<div id="complexDocument" class="complexDocument articleParts" style="display:block;">
<#assign lastLevel = 0 >
<#list paths as order>
<#-- ${order.path} -->
<#list excerpts as excerptProperties>
<#if order.elenphExcerpt?has_content && excerptProperties.elenphExcerpt == order.elenphExcerpt>
<#assign excerptText = excerptProperties.htmlContent >
<#assign excerptTextName = excerptProperties.htmlLabel >
<#assign worksCounter = excerptProperties.worksCounter >
<#assign bibliographyCounter = excerptProperties.bibliographyCounter >
</#if>
</#list>
<@startDocumentPart order.level?number order.path lastLevel/>
<#if excerptText?? && excerptTextName?? && excerptTextName?has_content && excerptText?has_content>
<div class="htmlExcerpt" style="list-style:none;">
${excerptText}
</div>
<@arrangeSources works worksCounter?number order.path order.elenphExcerpt />
<@arrangeLiterature bibliography bibliographyCounter?number order.path order.elenphExcerpt />
</#if>
<#assign lastLevel = order.level?number >
</#list>
<@endDocumentPart lastLevel />
<@arrangeSources works works?size "anchor-all-sources" />
<@arrangeLiterature bibliography bibliography?size "anchor-all-literature" />
</div>
</#macro>
<#macro startDocumentPart newLevel path lastLevel=0 >
<#assign depth = newLevel - lastLevel >
<#if depth == 0>
<@closeDocPart 1 />
<@openDocPart 1 path />
<#elseif depth &gt; 0>
<@openDocPart depth path />
<#else >
<@closeDocPart -depth+1 />
<@openDocPart 1 path />
</#if>
</#macro>
<#macro endDocumentPart lastLevel newLevel=0>
<#assign depth = lastLevel - newLevel >
<#if depth &gt; 0>
<@closeDocPart depth />
</#if>
</#macro>
<#macro closeDocPart count>
<#list 1..count as x>
</div>
</#list>
</#macro>
<#macro openDocPart count path >
<#if excerptTextName??>
<#assign buttonText = excerptTextName >
<#else>
<#assign buttonText = "No text" >
</#if>
<#list 1..count as x>
<button type="button" style="border:none;width: 100%; text-align:left;" class="collapsible">${buttonText}</button>
<div class="documentPart autoExpand articleExcerpt" id="anchor-${path}" style="display:block;">
</#list>
</#macro>
<#macro arrangeSources sources counter identifier filter="none">
<#if sources?? && sources?has_content && counter &gt; 0>
<@compress single_line=true>
<button type="button" class="collapsible" style="border: none; color: #8B4513;width: 100%;text-align:left; background-color: #ffffff; background-image: url(${urls.base}/themes/iph/images/book_icon.png); background-repeat: no-repeat; background-position: left center;">
<#if filter="none">
${i18n().sources_all_button_text}
<#else>
${i18n().sources_excerpt_button_text}
</#if>
</button>
</@compress>
<div class="autoExpand documentPart works" id="anchor-${identifier}-sources" style="display:block;">
<#assign lastSource = ""/>
<#list sources as source>
<#if filter == "none" && lastSource != source.works || source.excerpt == filter >
<#assign lastSource = source.works/>
<div class="work" style="display:list-item;list-style-image:url(${urls.base}/themes/iph/images/bullet_icon.png); font-style: italic; font-family: PT Serif;">
<p> ${source.works} </p>
</div>
</#if>
</#list>
</div>
</#if>
</#macro>
<#macro arrangeLiterature literature counter identifier filter="none">
<#if literature?? && literature?has_content && counter &gt; 0>
<@compress single_line=true>
<button type="button" class="collapsible" style="border:none; color: #8B4513;width: 100%; text-align: left; background-color: #ffffff; background-image: url(${urls.base}/themes/iph/images/book_icon.png); background-repeat: no-repeat; background-position: left center;">
<#if filter="none">
${i18n().literature_all_button_text}
<#else>
${i18n().literature_excerpt_button_text}
</#if>
</button>
</@compress>
<div class="autoExpand documentPart bibliography" id="anchor-${identifier}-literature" style="display:block;">
<#assign lastLiterature = ""/>
<#list literature as literatureItem>
<#if filter == "none" && lastLiterature != literatureItem.bibliography || literatureItem.excerpt == filter >
<#assign lastLiterature = literatureItem.bibliography/>
<div class="bibliography_entry" style="display:list-item;list-style-image:url(${urls.base}/themes/iph/images/bullet_icon.png); font-style: italic; font-family: PT Serif;">
<p> ${literatureItem.bibliography} </p>
</div>
</#if>
</#list>
</div>
</#if>
</#macro>
<#macro authors_metadata>
<#if authors?? && authors?has_content>
<div class="collapsible collapsed">
<div class="collapsibleLink" style="display:inline;">${i18n().metadata_authors}</div>
</div>
<div class="expandedAuthors autoMetadataExpand" style="display:none;">
<#list authors as author>
<div class="affilation">
<b><#if author.authorFamily??>${author.authorFamily}&nbsp;</#if><#if author.authorGivenName??>${author.authorGivenName}</#if></b>
<#if author.orgName??>
<span class="authorOrgName">${author.orgName}</span>
</#if>
<#if author.orgAddress??>
<br>
<span class="authorOrgAdress">${i18n().metadata_org_address}<#if author.orgPostalCode??>${author.orgPostalCode},&nbsp;</#if>${author.orgAddress}&nbsp;</span>
<br>
</#if>
</div>
</#list>
</div>
</#if>
</#macro>
<#macro authors_underline>
<#if authors?? && authors?has_content>
<div class="authors" style="display:block;float:right; margin:15px;">
<#list authors as author>
<#if author.authorFamily??>${author.authorFamily?trim}<#if author.authorInitials??>&nbsp;${author.authorInitials?trim}</#if></#if><#sep>, </#sep>
</#list>
</div>
</#if>
</#macro>
<#macro expandMetadataSwitch>
<div class="expandSwitch">
<label class="switch">
<div class="expandTextControl">${i18n().expand_metadata_switch}<img src="${urls.base}/themes/iph/images/arrow-down.svg"/></div>
<div class="collapseTextControl">${i18n().collapse_metadata_switch}<img src="${urls.base}/themes/iph/images/arrow-top.svg"/></div>
<input id="metadataExpandCB" type="checkbox" onclick="switchExpand('metadataExpandCB','.autoMetadataExpand');">
</label>
</div>
</#macro>
<#macro expandSwitch>
<div class="expandSwitch">
<label class="switch">
<div class="expandTextControl">${i18n().expand_doc_switch}<img src="${urls.base}/themes/iph/images/arrow-down.svg"/></div>
<div class="collapseTextControl">${i18n().collapse_doc_switch}<img src="${urls.base}/themes/iph/images/arrow-top.svg"/></div>
<input id="expandCB" type="checkbox" onclick="switchExpand('expandCB','.autoExpand');">
</label>
</div>
</#macro>
<#macro userSettingsModal>
<button id="userViewSettings">
<img onclick="javascript:showUserSettingsModal();" src="${urls.base}/themes/iph/images/settings.svg">
</button>
<div id="userSettingsModal" class="modal" style="display:none;">
<div class="modal-content">
<div class="modalWrapper">
<div id="titleSettings">${i18n().user_settings_label}</div>
<span id="closeModalWindow">&times;</span>
</div>
<label>
<div>${i18n().user_settings_always_open_full_doc}</div>
<input id="expandSettingsCB" type="checkbox" onclick="switchExpandSettings('expandSettingsCB','switchExpand');">
</label>
<label>
<div>${i18n().user_settings_always_open_metadata}</div>
<input id="metadataExpandSettingsCB" type="checkbox" onclick="switchExpandSettings('metadataExpandSettingsCB','metadataExpandSetting');">
</label>
</div>
</div>
</#macro>