This is an automated email from the ASF dual-hosted git repository.
dklco pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-app-cms.git
The following commit(s) were added to refs/heads/master by this push:
new c284dea Fixing the ordering of insights and making the more info
button an icon in the header
c284dea is described below
commit c284deab2dcee8a7fddb790f7fc16ed5df862b72
Author: Dan Klco <[email protected]>
AuthorDate: Thu Oct 18 17:05:14 2018 -0400
Fixing the ordering of insights and making the more info button an icon
in the header
---
.../org/apache/sling/cms/insights/Insight.java | 39 ++++++++--------------
.../cms/core/insights/impl/InsightFactoryImpl.java | 8 ++++-
.../providers/HTMLValdiatorInsightProvider.java | 17 ++++++++--
.../impl/providers/PageSpeedInsightProvider.java | 2 +-
.../components/insights/insight/insight.jsp | 9 ++++-
.../resources/jcr_root/libs/sling-cms/i18n.json | 11 ++++--
6 files changed, 52 insertions(+), 34 deletions(-)
diff --git a/api/src/main/java/org/apache/sling/cms/insights/Insight.java
b/api/src/main/java/org/apache/sling/cms/insights/Insight.java
index 136ff16..b5c9beb 100644
--- a/api/src/main/java/org/apache/sling/cms/insights/Insight.java
+++ b/api/src/main/java/org/apache/sling/cms/insights/Insight.java
@@ -24,9 +24,9 @@ import java.util.List;
/**
* Simple POJO Model for holding an insight provider's results.
*/
-public class Insight implements Comparable<Insight> {
+public class Insight {
- private boolean display = true;
+ private String moreDetailsLink;
private Message primaryMessage;
private InsightProvider provider;
private InsightRequest request;
@@ -46,17 +46,11 @@ public class Insight implements Comparable<Insight> {
scoreDetails.add(message);
}
- @Override
- public int compareTo(Insight o) {
- if (o.scored && !scored) {
- return 1;
- } else if (!o.scored && scored) {
- return -1;
- } else if (o.scored && scored) {
- return (int) (score - o.score);
- } else {
- return provider.getTitle().compareTo(o.getProvider().getTitle());
- }
+ /**
+ * @return the moreDetailsLink
+ */
+ public String getMoreDetailsLink() {
+ return moreDetailsLink;
}
public Message getPrimaryMessage() {
@@ -91,13 +85,6 @@ public class Insight implements Comparable<Insight> {
return scoreDetails;
}
- /**
- * @return the display
- */
- public boolean isDisplay() {
- return display;
- }
-
public boolean isScored() {
return scored;
}
@@ -117,10 +104,10 @@ public class Insight implements Comparable<Insight> {
}
/**
- * @param display the display to set
+ * @param moreDetailsLink the moreDetailsLink to set
*/
- public void setDisplay(boolean display) {
- this.display = display;
+ public void setMoreDetailsLink(String moreDetailsLink) {
+ this.moreDetailsLink = moreDetailsLink;
}
public void setPrimaryMessage(Message primaryMessage) {
@@ -180,9 +167,9 @@ public class Insight implements Comparable<Insight> {
*/
@Override
public String toString() {
- return "Insight [display=" + display + ", primaryMessage=" +
primaryMessage + ", provider=" + provider
- + ", request=" + request + ", score=" + score + ", scored=" +
scored + ", scoreDetails=" + scoreDetails
- + ", skip=" + skip + ", succeeded=" + succeeded + "]";
+ return "Insight [primaryMessage=" + primaryMessage + ", provider=" +
provider + ", request=" + request
+ + ", score=" + score + ", scored=" + scored + ",
scoreDetails=" + scoreDetails + ", skip=" + skip
+ + ", moreDetailsLink=" + moreDetailsLink + ", succeeded=" +
succeeded + "]";
}
}
diff --git
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/InsightFactoryImpl.java
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/InsightFactoryImpl.java
index e0b8573..798b332 100644
---
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/InsightFactoryImpl.java
+++
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/InsightFactoryImpl.java
@@ -20,6 +20,7 @@ package org.apache.sling.cms.core.insights.impl;
import java.util.Collection;
import java.util.Collections;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -106,7 +107,12 @@ public class InsightFactoryImpl implements InsightFactory,
ServiceListener {
private List<Insight> getInsights(InsightRequest request) {
List<Insight> insights = insightProviders.values().stream().filter(ip
-> ip.isEnabled(request))
.map(ip ->
ip.evaluateRequest(request)).collect(Collectors.toList());
- Collections.sort(insights);
+ Collections.sort(insights, new Comparator<Insight>() {
+ @Override
+ public int compare(Insight o1, Insight o2) {
+ return
o1.getProvider().getTitle().compareTo(o2.getProvider().getTitle());
+ }
+ });
return insights;
}
diff --git
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/HTMLValdiatorInsightProvider.java
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/HTMLValdiatorInsightProvider.java
index e849772..1e3be12 100644
---
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/HTMLValdiatorInsightProvider.java
+++
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/HTMLValdiatorInsightProvider.java
@@ -20,6 +20,8 @@ package org.apache.sling.cms.core.insights.impl.providers;
import java.io.StringReader;
import java.net.URLEncoder;
+import java.util.HashSet;
+import java.util.Set;
import javax.json.Json;
import javax.json.JsonArray;
@@ -102,13 +104,24 @@ public class HTMLValdiatorInsightProvider extends
BaseInsightProvider {
JsonArray messages = json.getJsonArray("messages");
int errors = 0;
int warnings = 0;
+ Set<String> msgSet = new HashSet<String>();
for (int i = 0; i < messages.size(); i++) {
JsonObject message = messages.getJsonObject(i);
if ("error".equals(message.getString("type"))) {
errors++;
+ String messageStr = message.getString("message");
+ if (!msgSet.contains(messageStr)) {
+ insight.addMessage(Message.danger(messageStr));
+ msgSet.add(messageStr);
+ }
} else if ("info".equals(message.getString("type")) &&
message.containsKey("subtype")
&& "warning".equals(message.getString("subtype"))) {
warnings++;
+ String messageStr = message.getString("message");
+ if (!msgSet.contains(messageStr)) {
+ insight.addMessage(Message.warn(messageStr));
+ msgSet.add(messageStr);
+ }
}
}
double score = 0.0;
@@ -133,8 +146,8 @@ public class HTMLValdiatorInsightProvider extends
BaseInsightProvider {
score = 1.0;
}
insight.setScore(score);
-
insight.addMessage(Message.defaultMsg("https://validator.w3.org/nu/?doc="
- +
URLEncoder.encode(pageRequest.getPage().getPublishedUrl(),
Charsets.UTF_8.toString())));
+ insight.setMoreDetailsLink("https://validator.w3.org/nu/?doc="
+ +
URLEncoder.encode(pageRequest.getPage().getPublishedUrl(),
Charsets.UTF_8.toString()));
}
return insight;
diff --git
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/PageSpeedInsightProvider.java
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/PageSpeedInsightProvider.java
index 6914cbd..0036907 100644
---
a/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/PageSpeedInsightProvider.java
+++
b/core/src/main/java/org/apache/sling/cms/core/insights/impl/providers/PageSpeedInsightProvider.java
@@ -114,7 +114,7 @@ public class PageSpeedInsightProvider extends
BaseInsightProvider {
} else {
insight.setPrimaryMessage(Message.success(dictionary.get(I18N_KEY_READABILITY_RESULT_SUCCESS)));
}
-
insight.addMessage(Message.defaultMsg(String.format(PAGESPEED_FORMAT,
URLEncoder.encode(publishedUrl, "UTF-8"))));
+ insight.setMoreDetailsLink(String.format(PAGESPEED_FORMAT,
URLEncoder.encode(publishedUrl, "UTF-8")));
log.debug("Response parsed successfully");
diff --git
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/insights/insight/insight.jsp
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/insights/insight/insight.jsp
index f56b343..c19ebc0 100644
---
a/ui/src/main/resources/jcr_root/libs/sling-cms/components/insights/insight/insight.jsp
+++
b/ui/src/main/resources/jcr_root/libs/sling-cms/components/insights/insight/insight.jsp
@@ -22,9 +22,16 @@
<p>
<sling:encode value="${insight.provider.title}" mode="HTML" />
<c:if test="${insight.scored}">
- <fmt:formatNumber type="percent" maxFractionDigits="2"
value="${insight.score}" />
+ <span class="score" data-score="${insight.score}">
+ <fmt:formatNumber type="percent" maxFractionDigits="2"
value="${insight.score}" />
+ </span>
</c:if>
</p>
+ <c:if test="${not empty insight.moreDetailsLink}">
+ <a class="button ${insight.primaryMessage.styleClass}"
href="${insight.moreDetailsLink}" target="_blank">
+ <em class="jam jam-info icon"></em>
+ </a>
+ </c:if>
</div>
<div class="message-body is-hidden" id="${insight.provider.id}-body">
<strong><sling:encode value="${insight.primaryMessage.text}"
mode="HTML" /></strong>
diff --git a/ui/src/main/resources/jcr_root/libs/sling-cms/i18n.json
b/ui/src/main/resources/jcr_root/libs/sling-cms/i18n.json
index b0edf2a..259d75c 100644
--- a/ui/src/main/resources/jcr_root/libs/sling-cms/i18n.json
+++ b/ui/src/main/resources/jcr_root/libs/sling-cms/i18n.json
@@ -10,17 +10,22 @@
],
"jcr:language": "en",
"sling:resourceType": "sling-cms/components/cms/blank",
- "slingcms-htmlvalidator-danger":{
+ "slingcms-insights-moredetails": {
+ "jcr:primaryType": "sling:MessageEntry",
+ "sling:message": "More Details",
+ "sling:key": "slingcms.insights.moredetails"
+ },
+ "slingcms-htmlvalidator-danger": {
"jcr:primaryType": "sling:MessageEntry",
"sling:message": "There were {0} validation errors and {1}
warnings",
"sling:key": "slingcms.htmlvalidator.danger"
},
- "slingcms-htmlvalidator-success":{
+ "slingcms-htmlvalidator-success": {
"jcr:primaryType": "sling:MessageEntry",
"sling:message": "HTML Validation successful!",
"sling:key": "slingcms.htmlvalidator.success"
},
- "slingcms-htmlvalidator-warn":{
+ "slingcms-htmlvalidator-warn": {
"jcr:primaryType": "sling:MessageEntry",
"sling:message": "There were {0} validation warnings",
"sling:key": "slingcms.htmlvalidator.warn"