Author: cziegeler
Date: Wed Aug 10 19:09:49 2016
New Revision: 1755802
URL: http://svn.apache.org/viewvc?rev=1755802&view=rev
Log:
Fix ratings handling
Added:
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/css/star-rating.min.css
(with props)
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/js/jquery-3.1.0.min.js
- copied, changed from r1755734,
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/js/jquery-2.2.0.min.js
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/js/star-rating.min.js
(with props)
Removed:
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/js/jquery-2.2.0.min.js
Modified:
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/RatingsService.java
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingPostServlet.java
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingsServiceImpl.java
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/bottom.html.jsp
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/head.html.jsp
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Streamentry/html.jsp
Modified:
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/RatingsService.java
URL:
http://svn.apache.org/viewvc/sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/RatingsService.java?rev=1755802&r1=1755801&r2=1755802&view=diff
==============================================================================
---
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/RatingsService.java
(original)
+++
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/RatingsService.java
Wed Aug 10 19:09:49 2016
@@ -31,7 +31,7 @@ public interface RatingsService {
* the passed in content resource is not part of
* Slingshot.
*/
- String getRatingsResourcePath(final Resource resource);
+ String getRatingsResourcePath(Resource resource);
/**
@@ -41,7 +41,7 @@ public interface RatingsService {
* the passed in content resource is not part of
* Slingshot.
*/
- int getRating(final Resource resource);
+ double getRating(Resource resource);
/**
* Get the rating of a user for a resource.
@@ -51,7 +51,7 @@ public interface RatingsService {
* the passed in content resource is not part of
* Slingshot.
*/
- int getRating(final Resource resource, final String userId);
+ double getRating(Resource resource, String userId);
/**
* Set the rating of a user for a resource.
@@ -61,6 +61,6 @@ public interface RatingsService {
* the passed in content resource is not part of
* Slingshot.
*/
- void setRating(final Resource resource, final String userId, final int
rating)
+ void setRating(Resource resource, String userId, double rating)
throws PersistenceException;
}
Modified:
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingPostServlet.java
URL:
http://svn.apache.org/viewvc/sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingPostServlet.java?rev=1755802&r1=1755801&r2=1755802&view=diff
==============================================================================
---
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingPostServlet.java
(original)
+++
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingPostServlet.java
Wed Aug 10 19:09:49 2016
@@ -75,7 +75,7 @@ public class RatingPostServlet extends S
final Resource reqResource =
resolver.getResource(request.getResource().getPath());
- ratingsService.setRating(reqResource, userId,
Integer.valueOf(rating));
+ ratingsService.setRating(reqResource, userId,
Double.valueOf(rating));
} catch ( final LoginException le ) {
throw new ServletException("Unable to login", le);
Modified:
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingsServiceImpl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingsServiceImpl.java?rev=1755802&r1=1755801&r2=1755802&view=diff
==============================================================================
---
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingsServiceImpl.java
(original)
+++
sling/trunk/samples/slingshot/src/main/java/org/apache/sling/sample/slingshot/ratings/impl/RatingsServiceImpl.java
Wed Aug 10 19:09:49 2016
@@ -59,16 +59,16 @@ public class RatingsServiceImpl implemen
* @see
org.apache.sling.sample.slingshot.ratings.RatingsService#getRating(org.apache.sling.api.resource.Resource)
*/
@Override
- public int getRating(final Resource resource) {
+ public double getRating(final Resource resource) {
final String fullPath = getRatingsResourcePath(resource);
- int rating = 0;
+ float rating = 0;
if ( fullPath != null ) {
final Resource ratingsResource = resource.getChild(fullPath);
if ( ratingsResource != null ) {
int count = 0;
for(final Resource r : ratingsResource.getChildren()) {
final ValueMap vm = r.getValueMap();
- final int current = vm.get(RatingsUtil.PROPERTY_RATING, 0);
+ final double current = vm.get(RatingsUtil.PROPERTY_RATING,
0.0);
rating += current;
count++;
}
@@ -84,14 +84,14 @@ public class RatingsServiceImpl implemen
* @see
org.apache.sling.sample.slingshot.ratings.RatingsService#getRating(org.apache.sling.api.resource.Resource,
java.lang.String)
*/
@Override
- public int getRating(final Resource resource, final String userId) {
+ public double getRating(final Resource resource, final String userId) {
final String fullPath = getRatingsResourcePath(resource);
- int rating = 0;
+ double rating = 0;
final Resource r = resource.getResourceResolver().getResource(fullPath
+ "/" + userId);
if ( r != null ) {
final ValueMap vm = r.getValueMap();
- rating = vm.get(RatingsUtil.PROPERTY_RATING, 0);
+ rating = vm.get(RatingsUtil.PROPERTY_RATING, 0.0);
}
return rating;
}
@@ -100,7 +100,7 @@ public class RatingsServiceImpl implemen
* @see
org.apache.sling.sample.slingshot.ratings.RatingsService#setRating(org.apache.sling.api.resource.Resource,
java.lang.String, int)
*/
@Override
- public void setRating(final Resource resource, final String userId, final
int rating)
+ public void setRating(final Resource resource, final String userId, final
double rating)
throws PersistenceException {
final String ratingsPath = getRatingsResourcePath(resource) ;
@@ -113,12 +113,12 @@ public class RatingsServiceImpl implemen
if ( ratingRsrc == null ) {
props.clear();
props.put(ResourceResolver.PROPERTY_RESOURCE_TYPE,
RatingsUtil.RESOURCETYPE_RATING);
- props.put(RatingsUtil.PROPERTY_RATING, rating);
+ props.put(RatingsUtil.PROPERTY_RATING, String.valueOf(rating));
resource.getResourceResolver().create(ratingsResource, userId,
props);
} else {
final ModifiableValueMap mvm =
ratingRsrc.adaptTo(ModifiableValueMap.class);
- mvm.put(RatingsUtil.PROPERTY_RATING, rating);
+ mvm.put(RatingsUtil.PROPERTY_RATING, String.valueOf(rating));
}
resource.getResourceResolver().commit();
}
Modified:
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/bottom.html.jsp
URL:
http://svn.apache.org/viewvc/sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/bottom.html.jsp?rev=1755802&r1=1755801&r2=1755802&view=diff
==============================================================================
---
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/bottom.html.jsp
(original)
+++
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/bottom.html.jsp
Wed Aug 10 19:09:49 2016
@@ -17,7 +17,8 @@
under the License.
--%><%@page session="false" %><%
%><%@page import="org.apache.sling.sample.slingshot.SlingshotConstants" %><%
-%><script src="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH %>/resources/js/jquery-2.2.0.min.js"></script>
+%><script src="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH %>/resources/js/jquery-3.1.0.min.js"></script>
<script src="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH %>/resources/js/bootstrap.min.js"></script>
<script src="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH
%>/resources/js/ie10-viewport-bug-workaround.js"></script>
+<script src="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH %>/resources/js/star-rating.min.js"></script>
<script src="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH %>/resources/js/slingshot.js"></script>
\ No newline at end of file
Modified:
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/head.html.jsp
URL:
http://svn.apache.org/viewvc/sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/head.html.jsp?rev=1755802&r1=1755801&r2=1755802&view=diff
==============================================================================
---
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/head.html.jsp
(original)
+++
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Component/head.html.jsp
Wed Aug 10 19:09:49 2016
@@ -22,4 +22,5 @@
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH %>/resources/css/bootstrap.min.css"
rel="stylesheet">
<link href="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH
%>/resources/css/ie10-viewport-bug-workaround.css" rel="stylesheet">
+ <link href="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH %>/resources/css/star-rating.min.css"
rel="stylesheet">
<link href="<%= request.getContextPath() %><%=
SlingshotConstants.APP_ROOT_PATH %>/resources/css/slingshot.css"
rel="stylesheet">
Modified:
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Streamentry/html.jsp
URL:
http://svn.apache.org/viewvc/sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Streamentry/html.jsp?rev=1755802&r1=1755801&r2=1755802&view=diff
==============================================================================
---
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Streamentry/html.jsp
(original)
+++
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/libs/slingshot/Streamentry/html.jsp
Wed Aug 10 19:09:49 2016
@@ -55,55 +55,46 @@
<h1><%= ResponseUtil.escapeXml(entry.getTitle()) %></h1>
<div class="row">
<div class="col-xs-12 col-md-8">
- <img class="img-responsive center-block" src="<%=
request.getContextPath() %><%= imagePath %>"/>
+ <img class="img-responsive center-block" src="<%=
request.getContextPath() %><%= imagePath %>"/>
+ <div class="well">
+ <% if ( entry.getLocation() != null ) { %>
+ <p>Location: <%=ResponseUtil.escapeXml(entry.getLocation())%></p>
+ <% } %>
+ <p><%=ResponseUtil.escapeXml(entry.getDescription())%></p>
+ <% if ( slingRequest.getRemoteUser() != null &&
slingRequest.getRemoteUser().equals(SlingshotUtil.getUserId(resource)) ) { %>
+ <button class="ui-button ui-form-button ui-slingshot-clickable"
+ data-link="<%= request.getContextPath()
%><%=resource.getName() %>.edit.html" type="button">Edit</button>
+ <% } %>
+ </div>
</div>
<div class="col-xs-6 col-md-4">
- <div id="rating"
- data-score-hint="Rating: "
- data-show-score="true"
- data-role="rating"
- data-stars="5"
- data-score="<%= ratingsService.getRating(resource) %>"
- data-static="false"
- class="rating large" style="height: auto;">
- <ul><li></li><li></li><li></li><li></li><li></li></ul>
- <span class="score-hint">Rating: <%=
ratingsService.getRating(resource) %></span>
- </div>
- <div class="fg-green rating active" id="own_rating" style="height:
auto;">
- <ul><li title="bad" class="rated"></li><li title="poor"></li><li
title="regular"></li><li title="good"></li><li title="gorgeous"></li></ul><span
class="score-hint">Current score: <%= ratingsService.getRating(resource,
request.getRemoteUser()) %></span>
- </div>
- <script>
- $(function(){
- $("#own_rating").rating({
- static: false,
- score: <%= ratingsService.getRating(resource,
request.getRemoteUser()) %>,
- stars: 5,
- showHint: true,
- showScore: true,
- click: function(value, rating) {
- rating.rate(value);
- $.post( "<%= resource.getName()
%>.ratings", { <%= RatingsUtil.PROPERTY_RATING %> : value }, function( data ) {
- $("#rating").rating("rate",
data.rating);
- }, "json");
- }
- });
- });
- </script>
+ <h2>Rating</h2>
+ <input id="rating" name="rating" type="number" class="rating"
data-howerenabled="false" data-disabled="false" data-show-clear="false"
data-show-caption="false" data-readonly="true" value="<%=
ratingsService.getRating(resource) %>"/>
+ <h2>Your Rating</h2>
+ <input id="own_rating" name="own_rating" type="number"
class="rating" data-show-caption="false" value="<%=
ratingsService.getRating(resource, request.getRemoteUser()) %>"/>
</div>
</div>
- <div class="row">
- <p><%=ResponseUtil.escapeXml(entry.getDescription())%></p>
- <% if ( entry.getLocation() != null ) { %>
- <p>Location</p>
- <p><%=ResponseUtil.escapeXml(entry.getLocation())%></p>
- <% } %>
- <% if ( slingRequest.getRemoteUser() != null &&
slingRequest.getRemoteUser().equals(SlingshotUtil.getUserId(resource)) ) { %>
- <button class="ui-button ui-form-button ui-slingshot-clickable"
- data-link="<%= request.getContextPath()
%><%=resource.getName() %>.edit.html" type="button">Edit</button>
- <% } %>
- </div>
<sling:include resource="<%= resource %>" replaceSelectors="comments"/>
</div>
<sling:include resource="<%= resource %>" replaceSelectors="bottom"/>
+ <script>
+ $(function(){
+ $("#own_rating").on('rating.clear', function(event) {
+ $.post( "<%= resource.getName() %>.ratings", { <%=
RatingsUtil.PROPERTY_RATING %> : 0 }, function( data ) {
+ $("#rating").rating('update', data.rating);
+ }, "json");
+ });
+ $("#own_rating").on('rating.reset', function(event) {
+ $.post( "<%= resource.getName() %>.ratings", { <%=
RatingsUtil.PROPERTY_RATING %> : 0 }, function( data ) {
+ $("#rating").rating('update', data.rating);
+ }, "json");
+ });
+ $("#own_rating").on('rating.change', function(event, value) {
+ $.post( "<%= resource.getName() %>.ratings", { <%=
RatingsUtil.PROPERTY_RATING %> : value }, function( data ) {
+ $("#rating").rating('update', data.rating);
+ }, "json");
+ });
+ });
+ </script>
</body>
</html>
\ No newline at end of file
Added:
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/css/star-rating.min.css
URL:
http://svn.apache.org/viewvc/sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/css/star-rating.min.css?rev=1755802&view=auto
==============================================================================
---
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/css/star-rating.min.css
(added)
+++
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/css/star-rating.min.css
Wed Aug 10 19:09:49 2016
@@ -0,0 +1,10 @@
+/*!
+ * @copyright © Kartik Visweswaran, Krajee.com, 2013 - 2016
+ * @version 4.0.1
+ *
+ * A simple yet powerful JQuery star rating plugin that allows rendering
fractional star ratings and supports
+ * Right to Left (RTL) input.
+ *
+ * For more JQuery/Bootstrap plugins and demos visit http://plugins.krajee.com
+ * For more Yii related demos visit http://demos.krajee.com
+ */.rating-container .caption,.rating-container
.clear-rating,.rating-container
.rating{display:inline-block;vertical-align:middle}.rating-loading{width:25px;height:25px;font-size:0;color:#fff;background:url(../img/loading.gif)
top left no-repeat;border:none}.rating-container
.rating{cursor:default;position:relative;overflow:hidden;white-space:nowrap}.rating-disabled
.rating{cursor:not-allowed}.rating-container
.star{display:inline-block;margin:0 3px;text-align:center}.rating-container
.empty-stars{color:#aaa}.rating-container
.filled-stars{position:absolute;left:0;top:0;margin:auto;color:#fde16d;white-space:nowrap;overflow:hidden;-webkit-text-stroke:1px
#777;text-shadow:1px 1px #999}.rating-rtl{float:right}.rating-animate
.filled-stars{transition:width .25s ease;-o-transition:width .25s
ease;-moz-transition:width .25s ease;-webkit-transition:width .25s
ease}.rating-rtl
.filled-stars{left:auto;right:0;-moz-transform:matrix(-1,0,0,1,0,0)
translate3d(0,0,0);-webkit-transform:matrix(-1
,0,0,1,0,0) translate3d(0,0,0);-o-transform:matrix(-1,0,0,1,0,0)
translate3d(0,0,0);transform:matrix(-1,0,0,1,0,0)
translate3d(0,0,0)}.rating-rtl.is-star
.filled-stars{right:.06em}.rating-rtl.is-heart
.empty-stars{margin-right:.07em}.rating-lg{font-size:3.91em}.rating-md{font-size:3.13em}.rating-sm{font-size:2.5em}.rating-xs{font-size:2em}.rating-xl{font-size:4.89em}.rating-container
.clear-rating{color:#aaa;cursor:not-allowed;font-size:60%;padding-right:5px}.clear-rating-active{cursor:pointer!important}.clear-rating-active:hover{color:#843534}.rating-container
.caption{color:#999;font-size:60%;margin-top:-.6em;margin-left:5px;margin-right:0}.rating-rtl
.caption{margin-right:5px;margin-left:0}@media print{.rating-container
.clear-rating{display:none}}
\ No newline at end of file
Propchange:
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/css/star-rating.min.css
------------------------------------------------------------------------------
svn:eol-style = native
Propchange:
sling/trunk/samples/slingshot/src/main/resources/SLING-INF/content/slingshot/resources/css/star-rating.min.css
------------------------------------------------------------------------------
svn:keywords = Id