diff --git a/src/main/java/com/knowledgepixels/nanodash/ViewDisplay.java b/src/main/java/com/knowledgepixels/nanodash/ViewDisplay.java index 03741307..b7035e88 100644 --- a/src/main/java/com/knowledgepixels/nanodash/ViewDisplay.java +++ b/src/main/java/com/knowledgepixels/nanodash/ViewDisplay.java @@ -179,13 +179,15 @@ public boolean appliesToClass(IRI targetClass) { } /** - * Gets the nanopub ID associated with this ViewDisplay. + * Gets the nanopub ID associated with this ViewDisplay * * @return the nanopub ID */ - public String getNanopubId() { - if (nanopub == null) return null; - return nanopub.getUri().stringValue(); + public IRI getNanopubId() { + if (nanopub == null) { + return null; + } + return nanopub.getUri(); } public Integer getPageSize() { diff --git a/src/main/java/com/knowledgepixels/nanodash/component/ItemListElement.html b/src/main/java/com/knowledgepixels/nanodash/component/ItemListElement.html index 5e262519..cc979147 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/ItemListElement.html +++ b/src/main/java/com/knowledgepixels/nanodash/component/ItemListElement.html @@ -12,7 +12,7 @@ link note - ^ + [np] diff --git a/src/main/java/com/knowledgepixels/nanodash/component/ItemListElement.java b/src/main/java/com/knowledgepixels/nanodash/component/ItemListElement.java index 1211cd59..564a4efe 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/ItemListElement.java +++ b/src/main/java/com/knowledgepixels/nanodash/component/ItemListElement.java @@ -1,11 +1,10 @@ package com.knowledgepixels.nanodash.component; import com.knowledgepixels.nanodash.User; -import com.knowledgepixels.nanodash.page.ExplorePage; import com.knowledgepixels.nanodash.page.UserPage; import org.apache.wicket.AttributeModifier; -import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.WebMarkupContainer; +import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.panel.Panel; @@ -53,7 +52,7 @@ public ItemListElement(String markupId, Class pageClass, fina if (sourceNanopublication == null) { add(new Label("np").setVisible(false)); } else { - add(new BookmarkablePageLink<>("np", ExplorePage.class, new PageParameters().add("id", sourceNanopublication.getUri()))); + add(new SourceNanopub("np", sourceNanopublication.getUri())); } } diff --git a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultList.html b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultList.html index d48d2507..0f44bbd1 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultList.html +++ b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultList.html @@ -10,7 +10,7 @@

Query

- ^ + [np]
diff --git a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultList.java b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultList.java index 2fbb0779..32f0b9c9 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultList.java +++ b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultList.java @@ -1,7 +1,6 @@ package com.knowledgepixels.nanodash.component; import com.knowledgepixels.nanodash.*; -import com.knowledgepixels.nanodash.page.ExplorePage; import com.knowledgepixels.nanodash.page.NanodashPage; import com.knowledgepixels.nanodash.page.PublishPage; import com.knowledgepixels.nanodash.template.Template; @@ -49,7 +48,7 @@ public class QueryResultList extends QueryResult { } add(new Label("label", label)); if (viewDisplay.getNanopubId() != null) { - add(new BookmarkablePageLink("np", ExplorePage.class, new PageParameters().set("id", viewDisplay.getNanopubId()))); + add(new SourceNanopub("np", viewDisplay.getNanopubId(), "smallbutton")); } else { add(new Label("np").setVisible(false)); } diff --git a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultNanopubSet.html b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultNanopubSet.html index e4d265dd..9c03d6d5 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultNanopubSet.html +++ b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultNanopubSet.html @@ -19,8 +19,8 @@

[View Title]

- ^ - + [np] +
diff --git a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultNanopubSet.java b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultNanopubSet.java index b6456028..a0d28c96 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultNanopubSet.java +++ b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultNanopubSet.java @@ -56,7 +56,6 @@ public void onClick(AjaxRequestTarget target) { titleLabel = viewDisplay.getView().getTitle(); } add(new Label("title", titleLabel)); - add(AttributeModifier.remove("class")); setOutputMarkupId(true); } @@ -68,7 +67,7 @@ protected void populateComponent() { add(nanopubResults); if (viewDisplay.getNanopubId() != null) { - add(new BookmarkablePageLink("np", ExplorePage.class, new PageParameters().set("id", viewDisplay.getNanopubId()))); + add(new SourceNanopub("np", viewDisplay.getNanopubId())); } else { add(new Label("np").setVisible(false)); } diff --git a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultPlainParagraph.html b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultPlainParagraph.html index 21203a17..ea10c23a 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultPlainParagraph.html +++ b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultPlainParagraph.html @@ -10,7 +10,7 @@

Paragraph

- ^ + [np]
diff --git a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultPlainParagraph.java b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultPlainParagraph.java index 541d708d..2769deaf 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultPlainParagraph.java +++ b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultPlainParagraph.java @@ -7,10 +7,10 @@ import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.markup.html.list.ListItem; import org.apache.wicket.markup.html.list.ListView; +import org.apache.wicket.request.mapper.parameter.PageParameters; import org.nanopub.extra.services.ApiResponse; import org.nanopub.extra.services.ApiResponseEntry; import org.nanopub.extra.services.QueryRef; -import org.apache.wicket.request.mapper.parameter.PageParameters; /** * Component for displaying query results in a list format. @@ -34,7 +34,7 @@ public class QueryResultPlainParagraph extends QueryResult { } add(new Label("label", label)); if (viewDisplay.getNanopubId() != null) { - add(new BookmarkablePageLink("np", ExplorePage.class, new PageParameters().set("id", viewDisplay.getNanopubId()))); + add(new SourceNanopub("np", viewDisplay.getNanopubId(), "smallbutton")); } else { add(new Label("np").setVisible(false)); } diff --git a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultTable.html b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultTable.html index 3467d460..2d42beaf 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultTable.html +++ b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultTable.html @@ -11,7 +11,7 @@

Query

- ^ + [np]
diff --git a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultTable.java b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultTable.java index b6370cac..74ca6410 100644 --- a/src/main/java/com/knowledgepixels/nanodash/component/QueryResultTable.java +++ b/src/main/java/com/knowledgepixels/nanodash/component/QueryResultTable.java @@ -1,14 +1,13 @@ package com.knowledgepixels.nanodash.component; import com.knowledgepixels.nanodash.*; -import com.knowledgepixels.nanodash.page.ExplorePage; import com.knowledgepixels.nanodash.page.NanodashPage; import com.knowledgepixels.nanodash.page.PublishPage; import com.knowledgepixels.nanodash.template.Template; import org.apache.wicket.Component; -import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; +import org.apache.wicket.behavior.AttributeAppender; import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxNavigationToolbar; import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator; import org.apache.wicket.extensions.markup.html.repeater.data.table.*; @@ -56,7 +55,7 @@ public class QueryResultTable extends QueryResult { } add(new Label("label", label)); if (viewDisplay.getNanopubId() != null) { - add(new BookmarkablePageLink("np", ExplorePage.class, new PageParameters().set("id", viewDisplay.getNanopubId()))); + add(new SourceNanopub("np", viewDisplay.getNanopubId(), "smallbutton")); } else { add(new Label("np").setVisible(false)); } diff --git a/src/main/java/com/knowledgepixels/nanodash/component/SourceNanopub.html b/src/main/java/com/knowledgepixels/nanodash/component/SourceNanopub.html new file mode 100644 index 00000000..65fdc291 --- /dev/null +++ b/src/main/java/com/knowledgepixels/nanodash/component/SourceNanopub.html @@ -0,0 +1,8 @@ + + + + + ^ + + + \ No newline at end of file diff --git a/src/main/java/com/knowledgepixels/nanodash/component/SourceNanopub.java b/src/main/java/com/knowledgepixels/nanodash/component/SourceNanopub.java new file mode 100644 index 00000000..03aa32a5 --- /dev/null +++ b/src/main/java/com/knowledgepixels/nanodash/component/SourceNanopub.java @@ -0,0 +1,45 @@ +package com.knowledgepixels.nanodash.component; + +import com.knowledgepixels.nanodash.page.ExplorePage; +import org.apache.wicket.behavior.AttributeAppender; +import org.apache.wicket.markup.html.link.BookmarkablePageLink; +import org.apache.wicket.markup.html.panel.Panel; +import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.eclipse.rdf4j.model.IRI; + +/** + * Component for displaying a link to a source nanopublication. The link navigates to the ExplorePage with the specified nanopublication IRI. + */ +public class SourceNanopub extends Panel { + + private final String ELEMENT_PATH = "np"; + + /** + * Constructor for SourceNanopub. + * + * @param markupId the markup ID + * @param sourceIri the IRI of the source nanopublication + */ + public SourceNanopub(String markupId, IRI sourceIri) { + super(markupId); + PageParameters pageParameters = new PageParameters(); + pageParameters.add("id", sourceIri); + add(new BookmarkablePageLink(ELEMENT_PATH, ExplorePage.class, pageParameters)); + } + + /** + * Constructor for SourceNanopub with additional CSS classes. + * + * @param markupId the markup ID for the component + * @param sourceIriAsString the IRI of the source nanopublication as a string + * @param additionalClasses additional CSS classes to add to the component + */ + public SourceNanopub(String markupId, IRI sourceIriAsString, String... additionalClasses) { + this(markupId, sourceIriAsString); + if (additionalClasses != null && additionalClasses.length > 0) { + String classes = String.join(" ", additionalClasses); + this.get(ELEMENT_PATH).add(new AttributeAppender("class", " " + classes)); + } + } + +} diff --git a/src/main/java/com/knowledgepixels/nanodash/page/HomePage.java b/src/main/java/com/knowledgepixels/nanodash/page/HomePage.java index b0ff936a..31396f44 100644 --- a/src/main/java/com/knowledgepixels/nanodash/page/HomePage.java +++ b/src/main/java/com/knowledgepixels/nanodash/page/HomePage.java @@ -4,6 +4,7 @@ import com.knowledgepixels.nanodash.component.*; import com.knowledgepixels.nanodash.template.Template; import com.knowledgepixels.nanodash.template.TemplateData; +import org.apache.wicket.AttributeModifier; import org.apache.wicket.markup.html.basic.Label; import org.apache.wicket.markup.repeater.Item; import org.apache.wicket.markup.repeater.data.DataView; @@ -78,7 +79,9 @@ public HomePage(final PageParameters parameters) { @Override protected void populateItem(Item item) { item.add(QueryResultNanopubSetBuilder.create("view", rQueryRef, item.getModelObject()) - .build()); + .build() + .add(AttributeModifier.remove("class")) + ); } }); diff --git a/src/main/java/com/knowledgepixels/nanodash/page/MaintainedResourcePage.html b/src/main/java/com/knowledgepixels/nanodash/page/MaintainedResourcePage.html index 6198958f..fcecf386 100644 --- a/src/main/java/com/knowledgepixels/nanodash/page/MaintainedResourcePage.html +++ b/src/main/java/com/knowledgepixels/nanodash/page/MaintainedResourcePage.html @@ -19,7 +19,7 @@

Resource ABC

-

https://... ^

+

https://... [np]

Namespace:

diff --git a/src/main/java/com/knowledgepixels/nanodash/page/MaintainedResourcePage.java b/src/main/java/com/knowledgepixels/nanodash/page/MaintainedResourcePage.java index 0422003d..2ede6082 100644 --- a/src/main/java/com/knowledgepixels/nanodash/page/MaintainedResourcePage.java +++ b/src/main/java/com/knowledgepixels/nanodash/page/MaintainedResourcePage.java @@ -4,10 +4,7 @@ import com.knowledgepixels.nanodash.NanodashPageRef; import com.knowledgepixels.nanodash.ResourceWithProfile; import com.knowledgepixels.nanodash.Space; -import com.knowledgepixels.nanodash.component.ButtonList; -import com.knowledgepixels.nanodash.component.JustPublishedMessagePanel; -import com.knowledgepixels.nanodash.component.TitleBar; -import com.knowledgepixels.nanodash.component.ViewList; +import com.knowledgepixels.nanodash.component.*; import org.apache.wicket.Component; import org.apache.wicket.extensions.ajax.markup.html.AjaxLazyLoadPanel; import org.apache.wicket.markup.html.basic.Label; @@ -15,6 +12,7 @@ import org.apache.wicket.markup.html.link.BookmarkablePageLink; import org.apache.wicket.model.Model; import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.eclipse.rdf4j.model.util.Values; import java.util.ArrayList; import java.util.List; @@ -61,7 +59,7 @@ public MaintainedResourcePage(final PageParameters parameters) { add(new Label("pagetitle", resource.getLabel() + " (resource) | nanodash")); add(new Label("resourcename", resource.getLabel())); add(new BookmarkablePageLink("id", ExplorePage.class, parameters.set("label", resource.getLabel())).setBody(Model.of(resource.getId()))); - add(new BookmarkablePageLink("np", ExplorePage.class, new PageParameters().set("id", resource.getNanopubId()))); + add(new SourceNanopub("np", Values.iri(resource.getNanopubId()))); String namespaceUri = resource.getNamespace() == null ? "" : resource.getNamespace(); add(new BookmarkablePageLink("namespace", ExplorePage.class, new PageParameters().set("id", namespaceUri)).setBody(Model.of(namespaceUri))); diff --git a/src/main/java/com/knowledgepixels/nanodash/page/ResourcePartPage.html b/src/main/java/com/knowledgepixels/nanodash/page/ResourcePartPage.html index 41125c5f..35c326b9 100644 --- a/src/main/java/com/knowledgepixels/nanodash/page/ResourcePartPage.html +++ b/src/main/java/com/knowledgepixels/nanodash/page/ResourcePartPage.html @@ -18,7 +18,7 @@

ABC

-

https://... ^

+

https://... [np]

Description...

diff --git a/src/main/java/com/knowledgepixels/nanodash/page/ResourcePartPage.java b/src/main/java/com/knowledgepixels/nanodash/page/ResourcePartPage.java index 15f41a20..a3587429 100644 --- a/src/main/java/com/knowledgepixels/nanodash/page/ResourcePartPage.java +++ b/src/main/java/com/knowledgepixels/nanodash/page/ResourcePartPage.java @@ -2,6 +2,7 @@ import com.knowledgepixels.nanodash.*; import com.knowledgepixels.nanodash.component.ButtonList; +import com.knowledgepixels.nanodash.component.SourceNanopub; import com.knowledgepixels.nanodash.component.TitleBar; import com.knowledgepixels.nanodash.component.ViewList; import org.apache.wicket.Component; @@ -13,6 +14,7 @@ import org.apache.wicket.request.mapper.parameter.PageParameters; import org.eclipse.rdf4j.model.IRI; import org.eclipse.rdf4j.model.Statement; +import org.eclipse.rdf4j.model.util.Values; import org.eclipse.rdf4j.model.vocabulary.DCTERMS; import org.eclipse.rdf4j.model.vocabulary.RDF; import org.eclipse.rdf4j.model.vocabulary.RDFS; @@ -136,7 +138,7 @@ public ResourcePartPage(final PageParameters parameters) { add(new Label("pagetitle", label + " (resource part) | nanodash")); add(new Label("name", label)); add(new BookmarkablePageLink("id", ExplorePage.class, parameters.set("label", label)).setBody(Model.of(id))); - add(new BookmarkablePageLink("np", ExplorePage.class, new PageParameters().set("id", nanopubId == null ? id : nanopubId))); + add(new SourceNanopub("np", nanopubId == null ? Values.iri(id) : Values.iri(nanopubId))); // TODO Improve this code, e.g. make Space a subclass of MaintainedResource or otherwise refactor: // we now use the ProfileResource abstraction, but the code still has to be imprved diff --git a/src/main/java/com/knowledgepixels/nanodash/page/SpacePage.html b/src/main/java/com/knowledgepixels/nanodash/page/SpacePage.html index 2ab9d7b9..39263fc7 100644 --- a/src/main/java/com/knowledgepixels/nanodash/page/SpacePage.html +++ b/src/main/java/com/knowledgepixels/nanodash/page/SpacePage.html @@ -20,7 +20,7 @@

Space ABC

Space type

-

https://... ^

+

https://...[np]

...
diff --git a/src/main/java/com/knowledgepixels/nanodash/page/SpacePage.java b/src/main/java/com/knowledgepixels/nanodash/page/SpacePage.java index 5c023dc5..da67e4e1 100644 --- a/src/main/java/com/knowledgepixels/nanodash/page/SpacePage.java +++ b/src/main/java/com/knowledgepixels/nanodash/page/SpacePage.java @@ -83,7 +83,7 @@ public SpacePage(final PageParameters parameters) throws FailedApiCallException add(new Label("spacename", space.getLabel())); add(new Label("spacetype", space.getTypeLabel())); add(new BookmarkablePageLink("id", ExplorePage.class, parameters.set("label", space.getLabel())).setBody(Model.of(space.getId()))); - add(new BookmarkablePageLink("np", ExplorePage.class, new PageParameters().set("id", np.getUri()))); + add(new SourceNanopub("np", np.getUri())); add(new ItemListPanel( "altids",