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 @@
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 @@
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 @@
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 @@
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