diff options
17 files changed, 112 insertions, 119 deletions
diff --git a/juick-spring-www/src/main/java/com/juick/www/controllers/IndexController.java b/juick-spring-www/src/main/java/com/juick/www/controllers/IndexController.java index 7821a916..4576e9d3 100644 --- a/juick-spring-www/src/main/java/com/juick/www/controllers/IndexController.java +++ b/juick-spring-www/src/main/java/com/juick/www/controllers/IndexController.java @@ -55,12 +55,7 @@ public class IndexController { User visitor = UserUtils.getCurrentUser(); - String title; - if (!visitor.isAnonym()) { - title = "Популярные"; - } else { - title = "Микроблоги Juick: популярные записи"; - } + String title = ""; int before = paramBefore.orElse(0); @@ -95,7 +90,6 @@ public class IndexController { } model.addAttribute("title", title); model.addAttribute("tags", tagService.getPopularTags()); - model.addAttribute("showAdv", true); List<Message> msgs = messagesService.getMessages(mids); List<Integer> blUIDs = userService.checkBL(visitor.getUid(), msgs.stream().map(m -> m.getUser().getUid()).collect(Collectors.toList())); @@ -121,12 +115,12 @@ public class IndexController { @RequestMapping(value = "/login", method = RequestMethod.GET) public String getLoginForm() { - return "layout/login"; + return "views/login"; } @RequestMapping(value = "/login-error", method = RequestMethod.GET) public String getLoginErrorForm(Model model) { model.addAttribute("loginError", true); - return "layout/login"; + return "views/login"; } }
\ No newline at end of file diff --git a/juick-spring-www/src/main/java/com/juick/www/controllers/PMController.java b/juick-spring-www/src/main/java/com/juick/www/controllers/PMController.java index fc5937dd..3228b4c0 100644 --- a/juick-spring-www/src/main/java/com/juick/www/controllers/PMController.java +++ b/juick-spring-www/src/main/java/com/juick/www/controllers/PMController.java @@ -67,7 +67,6 @@ public class PMController { uname = ""; } context.put("title", title); - context.put("visitor", visitor); context.put("msgs", msgs); context.put("tags", tagService.getPopularTags()); context.put("uname", uname); diff --git a/juick-spring-www/src/main/java/com/juick/www/controllers/SettingsController.java b/juick-spring-www/src/main/java/com/juick/www/controllers/SettingsController.java index e7319fb9..65309e4e 100644 --- a/juick-spring-www/src/main/java/com/juick/www/controllers/SettingsController.java +++ b/juick-spring-www/src/main/java/com/juick/www/controllers/SettingsController.java @@ -269,7 +269,6 @@ public class SettingsController { throw new HttpBadRequestException(); } context.put("title", "Настройки"); - context.put("visitor", visitor); context.put("result", result); return "views/settings_result"; } diff --git a/juick-spring-www/src/main/java/com/juick/www/controllers/ShowMessageController.java b/juick-spring-www/src/main/java/com/juick/www/controllers/ShowMessageController.java index df204c5f..62e7293b 100644 --- a/juick-spring-www/src/main/java/com/juick/www/controllers/ShowMessageController.java +++ b/juick-spring-www/src/main/java/com/juick/www/controllers/ShowMessageController.java @@ -92,7 +92,7 @@ public class ShowMessageController { throw new HttpNotFoundException(); } - return "index"; + return "views/index"; } @RequestMapping("/{userName}/friends") @@ -111,7 +111,7 @@ public class ShowMessageController { throw new HttpNotFoundException(); } - return "index"; + return "views/index"; } @RequestMapping("/{userName}/readers") @@ -130,7 +130,7 @@ public class ShowMessageController { throw new HttpNotFoundException(); } - return "index"; + return "views/index"; } @RequestMapping("/{userName}/tags") @@ -149,7 +149,7 @@ public class ShowMessageController { throw new HttpNotFoundException(); } - return "index"; + return "views/index"; } @RequestMapping("/{userName}/{postNumber}") diff --git a/juick-spring-www/src/main/resources/messages.properties b/juick-spring-www/src/main/resources/messages.properties index 42494512..1f594445 100644 --- a/juick-spring-www/src/main/resources/messages.properties +++ b/juick-spring-www/src/main/resources/messages.properties @@ -16,6 +16,10 @@ link.recommended=Рекомендации link.postMessage=Написать сообщение link.logout=Выйти +link.settings.main=Главная +link.settings.password=Пароль +link.settings.about=О пользователе + label.sponsor=Спонсор label.sponsors=Спонсоры label.search=Поиск @@ -23,6 +27,11 @@ label.register=Зарегистрироваться label.username=Имя пользователя label.password=Пароль +postForm.newMessage=Новое сообщение +postForm.imageLink=Ссылка на изображение (JPG/PNG, до 10Мб) +postForm.orImageUpload=или <a href="#">загрузить</a><br/> +postForm.tags=Теги (через пробел) + button.send=Отправить message.loginForSending=Чтобы добавлять сообщения и комментарии, <a href="{0}">представьтесь</a> diff --git a/juick-spring-www/src/main/resources/messages_en.properties b/juick-spring-www/src/main/resources/messages_en.properties index fd1e17e0..a40ac2b2 100644 --- a/juick-spring-www/src/main/resources/messages_en.properties +++ b/juick-spring-www/src/main/resources/messages_en.properties @@ -16,6 +16,10 @@ link.recommended=Recommended link.postMessage=Post link.logout=Logout +link.settings.main=Main +link.settings.password=Password +link.settings.about=About + label.sponsor=Sponsor label.sponsors=Sponsors label.search=Search @@ -23,6 +27,11 @@ label.register=Register label.username=User name label.password=Password +postForm.newMessage=New message +postForm.imageLink=Link to image (JPG/PNG, up to 10 MB) +postForm.orImageUpload=or <a href="#">Upload</a><br/> +postForm.tags=Tags (space separated) + button.send=Send message.loginForSending=<a href="{0}">Login</a> for post messages and comments diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/index.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/index.html deleted file mode 100644 index 7ee2156d..00000000 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/index.html +++ /dev/null @@ -1,21 +0,0 @@ -<!DOCTYPE html> -<html xmlns:th="http://www.thymeleaf.org" - xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" - layout:decorate="~{layout/mainLayout}"> -<head> - <title th:if="${#authorization.expression('hasRole(''ROLE_USER'')')}" th:text="#{title.index.user}">Популярные</title> - <title th:if="${#authorization.expression('hasRole(''ROLE_ANONYM'')')}" th:text="#{title.index.anonym}">Микроблоги Juick: популярные записи</title> -</head> - -<body> -<section layout:fragment="content"> - <p>Главная страница !</p> - <p th:text="${#authorization.expression('hasRole(''ROLE_USER'')')}"></p> - <p th:text="${#authorization.expression('hasRole(''ROLE_ANONYM'')')}"></p> - <p th:text="${#authentication}"></p> -</section> -<aside id="column"> - <p layout:fragment="column"></p> -</aside> -</body> -</html>
\ No newline at end of file diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/mainLayout.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/mainLayout.html index ef9887d2..c07886b6 100644 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/mainLayout.html +++ b/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/mainLayout.html @@ -11,20 +11,19 @@ <script type="text/javascript" src="/scripts.js" th:href="@{/scripts.js}"></script> <title layout:title-pattern="$LAYOUT_TITLE - $CONTENT_TITLE">Juick.com</title> - <link rel="icon" href="//i.juick.com/favicon.png"/> + <link rel="icon" href="//i.juick.com/favicon.png" th:href="@{/favicon.png}"/> <!--[if lt IE 9 & (!IEMobile 7)]> <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script> <![endif]--> </head> <body id="body"> -<div layout:replace="~{views/partial/navigation :: nav}">Navigation block</div> -<section id="content"> - <p layout:fragment="content">Main content</p> -</section> -<aside id="column"> - <p layout:fragment="column">Side column</p> -</aside> - -<footer layout:replace="~{layout/partial/footer :: footer}">Footer</footer> + <div layout:replace="~{layout/partial/navigation}">Navigation block</div> + <section id="content"> + <p layout:fragment="content">Main content</p> + </section> + <aside id="column"> + <p layout:fragment="column">Side column</p> + </aside> + <footer layout:replace="~{layout/partial/footer}">Footer</footer> </body> </html>
\ No newline at end of file diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/partial/footer.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/partial/footer.html index 154e1ccf..1d565db3 100644 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/partial/footer.html +++ b/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/partial/footer.html @@ -1,13 +1,9 @@ -<!DOCTYPE html> -<html xmlns:th="http://www.thymeleaf.org" - xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> - -<body layout:fragment="footer"> +<footer layout:fragment="footer" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <div id="footer"> <div id="footer-right"> <a href="/help/ru/contacts" th:href="@{/help/contacts}" th:text="#{link.contacts}" rel="nofollow">Контакты</a> · - <a href="/help/" th:href="@{/help/}" th:text="#{link.help}" rel="nofollow">Справка</a> · - <a href="/help/ru/adv" th:href="@{/help/adv}" th:text="#{link.adv}" rel="nofollow">Реклама</a> + <a href="/help/" th:href="@{/help/}" th:text="#{link.help}" rel="nofollow">Справка</a> · + <a href="/help/ru/adv" th:href="@{/help/adv}" th:text="#{link.adv}" rel="nofollow">Реклама</a> </div> <div id="footer-social"> <a href="https://twitter.com/Juick" rel="nofollow" class="ico32-twi">Twitter</a> @@ -16,24 +12,26 @@ </div> <div id="footer-left"> <a href="http://juick.com">juick.com</a> © 2008-2017 - <th:block th:if="${showSponsors}"/><br/><span th:text="#{label.sponsors}">Спонсоры:</span><span th:text="${links}"> </span></th:block> + <div th:if="${showSponsors}"> + <span th:text="#{label.sponsors}">Спонсоры:</span> + <span th:text="${links}"> </span> + </div> </div> </div> <script> - (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ - (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), - m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) - })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); - ga('create','UA-385578-4','juick.com'); - ga('require','displayfeatures'); - ga('send','pageview'); + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + ga('create','UA-385578-4','juick.com'); + ga('require','displayfeatures'); + ga('send','pageview'); </script> - <script th:if="${sapeon}"> - var _acic={dataProvider:10}; - (function(){ - var e=document.createElement('script');e.type='text/javascript';e.async=true;e.src='//www2.aci'+'nt.net/aci.js'; - var t=document.getElementsByTagName('script')[0];t.parentNode.insertBefore(e,t); - })(); + <script th:if="${showSape}"> + var _acic={dataProvider:10}; + (function(){ + var e=document.createElement('script');e.type='text/javascript';e.async=true;e.src='//www2.aci'+'nt.net/aci.js'; + var t=document.getElementsByTagName('script')[0];t.parentNode.insertBefore(e,t); + })(); </script> -</body> -</html>
\ No newline at end of file +</footer>
\ No newline at end of file diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/partial/navigation.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/partial/navigation.html index c7cd1c81..2317369c 100644 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/partial/navigation.html +++ b/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/partial/navigation.html @@ -1,43 +1,50 @@ -<!DOCTYPE html> -<html xmlns:th="http://www.thymeleaf.org" - xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> - -<body> -<header layout:fragment="nav"> +<header layout:fragment="nav" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <div id="logo"><a href="/" th:href="@{/}">Juick</a></div> <nav id="global"> <ul> <li><a href="/" th:href="@{/}" th:text="#{link.popular}">Популярные</a></li> - <li><a href="/?show=all" th:href="@{/?show=all}" rel="nofollow" th:text="#{link.allMessages}">Все - сообщения</a></li> - <li><a href="/?show=photos" th:href="@{/?show=photos}" rel="nofollow" th:text="#{link.withPhotos}">Фотографии</a> - </li> + <li><a href="/?show=all" th:href="@{/?show=all}" rel="nofollow" th:text="#{link.allMessages}">Все сообщения</a></li> + <li><a href="/?show=photos" th:href="@{/?show=photos}" rel="nofollow" th:text="#{link.withPhotos}">Фотографии</a></li> </ul> </nav> <div id="search"> <form action="/"> - <input type="text" name="search" class="text" placeholder="Поиск" th:placeholder="#{label.search}" - th:value="${param.search}"/> + <input type="text" name="search" class="text" placeholder="Поиск" + th:placeholder="#{label.search}" th:value="${param.search}"/> </form> </div> <section id="headdiv"> <th:block th:if="${#authorization.expression('hasRole(''ROLE_USER'')')}"> <nav id="user"> <ul> - <li><a href="/?show=my" th:href="@{/?show=my}" th:text="#{link.my}">Моя лента</a></li> - <li><a href="/pm/inbox" th:href="@{/pm/inbox}" th:text="#{link.privateMessages}">Приватные</a></li> - <li><a href="/?show=discuss" th:href="@{/?show=discuss}" th:text="#{link.discuss}">Обсуждения</a> + <li> + <a href="/?show=my" th:href="@{/?show=my}" th:text="#{link.my}">Моя лента</a> </li> - <li><a href="/?show=recommended" th:href="@{/?show=recommended}" th:text="#{link.recommended}">Рекомендации</a> + <li> + <a href="/pm/inbox" th:href="@{/pm/inbox}" th:text="#{link.privateMessages}">Приватные</a> + </li> + <li> + <a href="/?show=discuss" th:href="@{/?show=discuss}" th:text="#{link.discuss}">Обсуждения</a> + </li> + <li> + <a href="/?show=recommended" th:href="@{/?show=recommended}" th:text="#{link.recommended}">Рекомендации</a> </li> </ul> </nav> <nav id="actions"> <ul> - <li><a href="/#post" th:href="@{/#post}" th:text="#{link.postMessage}">Написать</a></li> - <li><a href="/ugnich" th:href="@{/{userName}(userName=${#authentication.name})}" th:text="'@'+${#authentication.name}">@ugnich</a></li> - <li><a href="/settings" th:href="@{/settings}" th:text="#{link.settings}" rel="nofollow">Настройки</a></li> - <li><a href="/logout" th:href="@{/logout}" th:text="#{link.logout}">Выйти</a></li> + <li> + <a href="/#post" th:href="@{/#post}" th:text="#{link.postMessage}">Написать</a> + </li> + <li> + <a href="/ugnich" th:href="@{/{userName}(userName=${#authentication.name})}" th:text="'@'+${#authentication.name}">@ugnich</a> + </li> + <li> + <a href="/settings" th:href="@{/settings}" th:text="#{link.settings}" rel="nofollow">Настройки</a> + </li> + <li> + <a href="/logout" th:href="@{/logout}" th:text="#{link.logout}">Выйти</a> + </li> </ul> </nav> </th:block> @@ -45,6 +52,4 @@ <p>[(#{message.loginForSending(@{/login})})]</p> </th:block> </section> -</header> -</body> -</html> +</header>
\ No newline at end of file diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/error.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/error.html index 60df54a7..98ce70e4 100644 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/error.html +++ b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/error.html @@ -19,7 +19,9 @@ <body th:with="httpStatus=${T(org.springframework.http.HttpStatus).valueOf(#response.status)}"> <h1 th:text="|${httpStatus} - ${httpStatus.reasonPhrase}|">404</h1> + <p th:utext="${errorMessage}">Error java.lang.NullPointerException</p> + <a href="/" th:href="@{/}" th:text="#{link.returnToMain}">Back to Home Page</a> </body> </html>
\ No newline at end of file diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/views/index.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/index.html index 8f667135..6b6f278d 100644 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/views/index.html +++ b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/index.html @@ -3,17 +3,20 @@ xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout" layout:decorate="~{layout/mainLayout}"> <head> - <title th:text="${title}">Main title</title> + <title th:if="${#authorization.expression('hasRole(''ROLE_USER'')')}" th:text="#{title.index.user}">Популярные</title> + <title th:if="${#authorization.expression('hasRole(''ROLE_ANONYM'')')}" th:text="#{title.index.anonym}">Микроблоги Juick: популярные записи</title> </head> <body> <section layout:fragment="content"> - <div th:if="${visitor.getUid() > 0}" th:replace="views/partial/blog_postform" /> + <div th:replace="views/partial/blog_postform"></div> <div th:replace="views/partial/blog_messages"></div> <div th:replace="views/partial/blog_paginator"></div> </section> + <aside id="column"> <p layout:fragment="column" th:replace="views/partial/homecolumn">Main side column</p> </aside> + </body> </html>
\ No newline at end of file diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/login.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/login.html index bcfa318d..2736ca53 100644 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/layout/login.html +++ b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/login.html @@ -13,7 +13,7 @@ html { background: #eeeee5; } body { margin: 100px auto 0 auto; width: 1000px; } a { color: #069; } - ul { float: left; width: 700px; height: 350px; list-style-type: none; background: url(/tagscloud.png) no-repeat; position: relative; } + ul { float: left; width: 700px; height: 350px; list-style-type: none; background: url(/static/tagscloud.png) no-repeat; position: relative; } ul a { position: absolute; display: block; text-indent: 100%; white-space: nowrap; overflow: hidden; } #bottom1 { position: absolute; left: 0px; bottom: 10px; width: 100%; text-align: center; color: #555; } diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/blog_postform.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/blog_postform.html index 804605dd..df2caf7b 100644 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/blog_postform.html +++ b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/blog_postform.html @@ -1,12 +1,14 @@ -<form action="/post" method="post" enctype="multipart/form-data"> - <section id="newmessage"> - <textarea name="body" placeholder="Новое сообщение..."></textarea> - <div> - <input type="text" class="img" name="img" placeholder="Ссылка на изображение (JPG/PNG, до 10Мб)" style="margin-bottom: 8pt"/> или <a - href="#">загрузить</a><br/> +<div th:if="${#authorization.expression('hasRole(''ROLE_USER'')')}" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> + <form action="/post" th:action="@{/post}" method="post" enctype="multipart/form-data"> + <section id="newmessage"> + <textarea name="body" placeholder="Новое сообщение..." th:placeholder="#{postForm.newMessage}"></textarea> + <div> + <input type="text" class="img" name="img" placeholder="Ссылка на изображение (JPG/PNG, до 10Мб)" th:placeholder="#{postForm.imageLink}" style="margin-bottom: 8pt"/> + [(#{postForm.orImageUpload})] - <input type="text" class="tags" name="tags" placeholder="Теги (через пробел)"/><br/> - <input type="submit" class="subm" value="Отправить"/> - </div> - </section> -</form>
\ No newline at end of file + <input type="text" class="tags" name="tags" placeholder="Теги (через пробел)" th:placeholder="#{postForm.tags}"/><br/> + <input type="submit" class="subm" value="Отправить" th:value="#{button.send}"/> + </div> + </section> + </form> +</div>
\ No newline at end of file diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/homecolumn.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/homecolumn.html index 2f0d707c..cbf25c3b 100644 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/homecolumn.html +++ b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/homecolumn.html @@ -1,11 +1,4 @@ -<!DOCTYPE html> -<html xmlns:th="http://www.thymeleaf.org" - xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> - -<body> -<p class="tags"> +<p class="tags" xmlns:th="http://www.thymeleaf.org" xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"> <div th:replace="views/partial/tags">Tags</div> <a href="http://ru.wix.com/" th:if="${showAdv}">конструктор сайтов</a> </p> -</body> -</html> diff --git a/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/settings_tabs.html b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/settings_tabs.html index d7901d5e..253511b5 100644 --- a/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/settings_tabs.html +++ b/juick-spring-www/src/main/webapp/WEB-INF/templates/views/partial/settings_tabs.html @@ -1,5 +1,7 @@ -<div id="pagetabs"><ul> - <li><a href="/settings">Main</a></li> - <li><a href="/settings?page=password">Password</a></li> - <li><a href="/settings?page=about">About</a></li> -</ul></div>
\ No newline at end of file +<div id="pagetabs" xmlns:th="http://www.thymeleaf.org"> + <ul> + <li><a href="/settings" th:href="@{/settings}" th:text="#{link.settings.main}">Main</a></li> + <li><a href="/settings?page=password" th:href="@{/settings?page=password}" th:text="#{link.settings.password}">Password</a></li> + <li><a href="/settings?page=about" th:href="@{/settings?page=about}" th:text="#{link.settings.about}">About</a></li> + </ul> +</div>
\ No newline at end of file diff --git a/juick-spring-www/src/main/webapp/tagscloud.png b/juick-spring-www/src/main/webapp/static/tagscloud.png Binary files differindex 3e1bf169..3e1bf169 100644 --- a/juick-spring-www/src/main/webapp/tagscloud.png +++ b/juick-spring-www/src/main/webapp/static/tagscloud.png |