Author: bpoussin Date: 2014-03-09 20:04:26 +0100 (Sun, 09 Mar 2014) New Revision: 371 Url: http://forge.chorem.org/projects/bow/repository/revisions/371 Log: fixes #964: Impossible d'ajouter un bookmark depuis bow.chorem.org fixes #991: Add possibility to add entry directly in url bar fixes jstl problem fixes base64 call problem in jsp Added: trunk/bow-ui/src/main/webapp/WEB-INF/bowutils.tld Modified: trunk/bow-ui/pom.xml trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigOption.java trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/AddOrUpdateAction.java trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/bookmark.jsp trunk/pom.xml Modified: trunk/bow-ui/pom.xml =================================================================== --- trunk/bow-ui/pom.xml 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/bow-ui/pom.xml 2014-03-09 19:04:26 UTC (rev 371) @@ -120,6 +120,11 @@ <!-- runtime dependencies --> <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jstl</artifactId> + </dependency> + + <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <scope>runtime</scope> Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowConfig.java 2014-03-09 19:04:26 UTC (rev 371) @@ -378,6 +378,15 @@ } /** + * le prefix pour indiquer que l'on souhaite faire un add d'une url + * + * @return + */ + public static String getAddPrefix() { + return getAddPrefix(getConfig()); + } + + /** * le prefix pour indiquer que l'on souhaite une recherche sur les alias * prive et une rediection automatique vers cette page * @@ -388,6 +397,15 @@ } /** + * le prefix pour indiquer que l'on souhaite faire un add d'une url + * + * @return + */ + public static String getAddPrefix(ApplicationConfig config) { + return config.getOption(BowConfigOption.OPEN_SEARCH_ADD_PREFIX.key); + } + + /** * le prefix pour indiquer que l'on souhaite une recherche sur le web * via le moteur de recherche configurer * Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigOption.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigOption.java 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowConfigOption.java 2014-03-09 19:04:26 UTC (rev 371) @@ -79,6 +79,10 @@ "bow.prefix.search.alias", _("bow.config.bow.prefix.search.alias.description"), "alias.action?alias={searchTerms}", String.class, false, false), + SAVE_SEARCH_URL( + "bow.prefix.search.add", + _("bow.config.bow.prefix.search.add.description"), + "addUrl.action?nameAndTags={searchTerms}", String.class, false, false), TAG_SUGGESTION_URL( "bow.prefix.suggestion.tag", _("bow.config.sprefix.suggestion.tag.description"), @@ -118,7 +122,11 @@ OPEN_SEARCH_ALIAS_PREFIX( "opensearch.alias.prefix", _("bow.config.opensearch.alias.prefix.description"), - "a", String.class, false, false); + "a", String.class, false, false), + OPEN_SEARCH_ADD_PREFIX( + "opensearch.add.prefix", + _("bow.config.opensearch.add.prefix.description"), + "s", String.class, false, false); public String key; Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowSession.java 2014-03-09 19:04:26 UTC (rev 371) @@ -145,6 +145,12 @@ pAlias.setSearch("search.alias"); pAlias.setSuggestion("suggestion.alias"); + BowSearchPrefixImpl pAdd = new BowSearchPrefixImpl(); + pAdd.setBowUser(userId); + pAdd.setPrefix(BowConfig.getAddPrefix() + prefixSeparator); + pAdd.setSearch("search.add"); + pAdd.setSuggestion("suggestion.add"); + BowSearchPrefixImpl pDefault = new BowSearchPrefixImpl(); pDefault.getWikitty().replaceWith(pWeb.getWikitty(), true); pDefault.setPrefix(""); @@ -153,7 +159,7 @@ pDefaultPrefix.getWikitty().replaceWith(pTag.getWikitty(), true); pDefaultPrefix.setPrefix(prefixSeparator); - proxy.store(pWeb, pTag, pFullText, pAlias, pDefault, pDefaultPrefix); + proxy.store(pWeb, pTag, pFullText, pAlias, pAdd, pDefault, pDefaultPrefix); prefix.add(pWeb); prefix.add(pTag); Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/AddOrUpdateAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/AddOrUpdateAction.java 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/bookmark/AddOrUpdateAction.java 2014-03-09 19:04:26 UTC (rev 371) @@ -262,6 +262,12 @@ BowProxy proxy = getBowProxy(); BowBookmark bookmark = null; + // if we don't have link, link is last entry in nameAndTags + if (StringUtils.isBlank(link)) { + link = StringUtils.substringAfterLast(nameAndTags, "|"); + nameAndTags = StringUtils.substringBeforeLast(nameAndTags, "|"); + } + // gere le cas d'une mise a jour ou d'un ajout via le formulaire if (name == null) { // on est dans le cas ou l'ajout a ete fait par le scriptlet qui @@ -270,6 +276,9 @@ nameAndTags = StringUtils.trimToEmpty(nameAndTags); name = StringUtils.substringBeforeLast(nameAndTags, "|"); tags = StringUtils.substringAfterLast(nameAndTags, "|"); + + // on essai d'afficher l'entree ajoutee + fullTextLine = link; } @@ -340,31 +349,33 @@ // Si l'alias prive souhaite est deja utilise on ne l'accept pas // Si l'alias public souhaite est deja utilise on ne l'accept pas - if (StringUtils.isEmpty(privateAlias)) { + if (StringUtils.isBlank(privateAlias)) { bookmark.setPrivateAlias(""); } else { WikittyQuery privateAliasCriteria = new WikittyQueryMaker().and() .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, privateAlias) .eq(BowBookmark.FQ_FIELD_WIKITTYAUTHORISATION_OWNER, userId) - .end().setLimit(0); + .end().setLimit(1); WikittyQueryResult<String> aliasResult = proxy.findAllByQuery( privateAliasCriteria); - if (aliasResult.getTotalResult() == 0) { + if (aliasResult.getTotalResult() == 0 || + bookmark.getWikittyId().equals(aliasResult.get(0))) { bookmark.setPrivateAlias(privateAlias); } else { addActionMessage(_("bow.alias.already.exists", privateAlias)); } } - if (StringUtils.isEmpty(publicAlias)) { + if (StringUtils.isBlank(publicAlias)) { bookmark.setPublicAlias(""); } else { WikittyQuery publicAliasCriteria = new WikittyQueryMaker() .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, publicAlias) - .end().setLimit(0); + .end().setLimit(1); WikittyQueryResult<String> aliasResult = proxy.findAllByQuery( publicAliasCriteria); - if (aliasResult.getTotalResult() == 0) { + if (aliasResult.getTotalResult() == 0 || + bookmark.getWikittyId().equals(aliasResult.get(0))) { bookmark.setPublicAlias(publicAlias); } else { addActionMessage(_("bow.alias.already.exists", publicAlias)); Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/opensearch/OpenSearchBaseAction.java 2014-03-09 19:04:26 UTC (rev 371) @@ -74,8 +74,8 @@ @Override public String execute() { - System.out.println("######################### OpenSearchBaseAction enter #################" + q); - System.out.println("param:" + ServletActionContext.getRequest().getParameterMap()); + log.debug("######################### OpenSearchBaseAction enter #################" + q); + log.debug("param:" + ServletActionContext.getRequest().getParameterMap()); BowSearchPrefix defaultPrefix = null; BowSearchPrefix foundPrefix = null; Modified: trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties =================================================================== --- trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2014-03-09 19:04:26 UTC (rev 371) @@ -28,6 +28,7 @@ bow.config.application.version.description=application version bow.config.bow.addressFrom.description=mail from address bow.config.bow.admins.description=admins email address list +bow.config.bow.prefix.search.add.description= bow.config.bow.prefix.search.alias.description= bow.config.bow.prefix.search.fulltext.description= bow.config.bow.prefix.suggestion.alias.description= @@ -37,6 +38,7 @@ bow.config.bow.url.description=Web server bow URL bow.config.configFileName.description=bow configuration file bow.config.data.dir.description=bow data directory +bow.config.opensearch.add.prefix.description= bow.config.opensearch.alias.prefix.description=prefix for alias redirection bow.config.opensearch.default.action.description=default action prefix bow.config.opensearch.default.prefix.description=default action to do, if no prefix given Modified: trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties =================================================================== --- trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2014-03-09 19:04:26 UTC (rev 371) @@ -28,6 +28,7 @@ bow.config.application.version.description=Version de l'application bow.config.bow.addressFrom.description=Adresse expediteur des emails bow.config.bow.admins.description=Liste des emails des admins de l'application +bow.config.bow.prefix.search.add.description= bow.config.bow.prefix.search.alias.description= bow.config.bow.prefix.search.fulltext.description= bow.config.bow.prefix.suggestion.alias.description= @@ -37,6 +38,7 @@ bow.config.bow.url.description=Url public du serveur bow bow.config.configFileName.description=Fichier de configuration de bow bow.config.data.dir.description=R\u00E9pertoire de stockage des donn\u00E9es +bow.config.opensearch.add.prefix.description= bow.config.opensearch.alias.prefix.description=Prefix de redirection via l'alias bow.config.opensearch.default.action.description=action par d\u00E9faut bow.config.opensearch.default.prefix.description=Prefix par d\u00E9faut Added: trunk/bow-ui/src/main/webapp/WEB-INF/bowutils.tld =================================================================== --- trunk/bow-ui/src/main/webapp/WEB-INF/bowutils.tld (rev 0) +++ trunk/bow-ui/src/main/webapp/WEB-INF/bowutils.tld 2014-03-09 19:04:26 UTC (rev 371) @@ -0,0 +1,16 @@ +<?xml version="1.0" encoding="UTF-8"?> +<taglib version="2.1" + xmlns="http://java.sun.com/xml/ns/javaee" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"> + + <tlib-version>1.0</tlib-version> + <short-name>bowutils</short-name> + <uri>/WEB-INF/bowutils</uri> + + <function> + <name>base64</name> + <function-class>org.chorem.bow.BowUtils</function-class> + <function-signature>String toBase64(byte[] b)</function-signature> + </function> +</taglib> Property changes on: trunk/bow-ui/src/main/webapp/WEB-INF/bowutils.tld ___________________________________________________________________ Added: svn:mime-type + text/plain Modified: trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/bookmark.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/bookmark.jsp 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/bow-ui/src/main/webapp/WEB-INF/jsp/inc/bookmark.jsp 2014-03-09 19:04:26 UTC (rev 371) @@ -26,9 +26,9 @@ <%@taglib prefix="sj" uri="/struts-jquery-tags" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <%@ taglib uri="http://java.sun.com/jsp/jstl/functions"prefix="fn" %> +<%@taglib uri="/WEB-INF/bowutils" prefix="u" %> -<jsp:useBean id="bowUtils" class="org.chorem.bow.BowUtils"></jsp:useBean> -<div class="bookmark" +<div class="bookmark"bow xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" xmlns:jsp="http://java.sun.com/JSP/Page"> @@ -36,7 +36,7 @@ <span class="left"> <s:set var="favicon" value="#bookmark.favicon"/> <c:if test="${fn:length(favicon) > 0}"> - <img class="favicon" src="data:image/png;base64,${bowUtils.toBase64(favicon)}"/> + <img class="favicon" src="data:image/png;base64,${u:base64(favicon)}"/> </c:if> <c:if test="${fn:length(favicon) <= 0}"> <img src="img/ptit-livre.jpg"/> @@ -98,7 +98,7 @@ <div class="screenshot"> <s:set var="screenshot" value="#bookmark.screenshot"/> <c:if test="${fn:length(screenshot) > 0}"> - <img src="data:image/png;base64,${bowUtils.toBase64(screenshot)}"/> + <img src="data:image/png;base64,${u:base64(screenshot)}"/> </c:if> <c:if test="${fn:length(screenshot) <= 0}"> <img src="img/livreG.jpg"/> Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2014-02-18 10:44:14 UTC (rev 370) +++ trunk/pom.xml 2014-03-09 19:04:26 UTC (rev 371) @@ -132,7 +132,8 @@ <jspApiVersion>2.0</jspApiVersion> <h2Version>1.2.134</h2Version> <crxMavenPluginVersion>1.1.0</crxMavenPluginVersion> - + <jstlVersion>1.2</jstlVersion> + <!-- license to use --> <license.licenseName>agpl_v3</license.licenseName> </properties> @@ -326,8 +327,15 @@ <scope>runtime</scope> </dependency> - </dependencies> + <dependency> + <groupId>javax.servlet</groupId> + <artifactId>jstl</artifactId> + <version>${jstlVersion}</version> + <scope>runtime</scope> + </dependency> + </dependencies> + </dependencyManagement> <build>