Author: bpoussin Date: 2011-04-16 16:56:46 +0200 (Sat, 16 Apr 2011) New Revision: 238 Url: http://chorem.org/repositories/revision/bow/238 Log: Evolution #295: Change alias behaviour (debut, alias 1, 2 et 3 pris en charge mais pas manque page de creation de d'alias public) Added: trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java Modified: trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java trunk/bow-ui/src/main/resources/bow.properties trunk/bow-ui/src/main/resources/log4j.properties trunk/bow-ui/src/main/resources/struts.properties trunk/bow-ui/src/main/resources/struts.xml trunk/bow-ui/src/main/webapp/WEB-INF/web.xml trunk/bow-ui/src/main/webapp/css/bookmark.css trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp trunk/bow-ui/src/main/xmi/bow.zargo Modified: trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java 2011-04-16 12:37:04 UTC (rev 237) +++ trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java 2011-04-16 14:56:46 UTC (rev 238) @@ -38,7 +38,9 @@ * TODO poussin 20110216 a revoir avec le ticket http://www.chorem.org/issues/show/295 * * @author bbrossaud + * @deprecated transformed to struts action */ +@Deprecated public class AliasServlet extends HttpServlet { private static final long serialVersionUID = 1L; @@ -69,9 +71,18 @@ alias = alias.substring(1); BowSession session = BowSession.getBowSession(request); WikittyProxy proxy = session.getProxy(); + Criteria criteria = Search.query().eq( - BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, alias).criteria(); - BowBookmark bookmark = proxy.findByCriteria(BowBookmark.class, criteria); + BowAlias.FQ_FIELD_BOWALIAS_ALIAS, alias).criteria(); + + BowAlias bowAlias = proxy.findByCriteria(BowAlias.class, criteria); + String bookmarkId; + if (bowAlias == null) { + bookmarkId = alias; + } else { + bookmarkId = bowAlias.getBowBookmark(); + } + BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId); if (bookmark != null) { String redirect = bookmark.getLink(); int clicks = bookmark.getClick() + 1; Added: trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java (rev 0) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java 2011-04-16 14:56:46 UTC (rev 238) @@ -0,0 +1,72 @@ +package org.chorem.bow.action; + +import static org.nuiton.i18n.I18n.n_; + +import javax.servlet.http.HttpServletRequest; +import org.apache.commons.lang.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.apache.struts2.interceptor.ServletRequestAware; +import org.chorem.bow.BowAlias; +import org.chorem.bow.BowBookmark; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.Search; + +/** + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class AliasAction extends BowBaseAction { + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(AliasAction.class); + + protected String redirectTo = "/"; + protected String alias; + + public String getRedirectTo() { + return redirectTo; + } + + public void setAlias(String alias) { + this.alias = alias; + } + + @Override + public String execute() throws Exception { + try { + if (!StringUtils.isEmpty(alias)) { + WikittyProxy proxy = getBowProxy(); + + Criteria criteria = Search.query().eq( + BowAlias.FQ_FIELD_BOWALIAS_ALIAS, alias).criteria(); + + BowAlias bowAlias = proxy.findByCriteria(BowAlias.class, criteria); + String bookmarkId; + if (bowAlias == null) { + bookmarkId = alias; + } else { + bookmarkId = bowAlias.getBowBookmark(); + } + BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId); + if (bookmark != null) { + redirectTo = bookmark.getLink(); + int clicks = bookmark.getClick() + 1; + bookmark.setClick(clicks); + proxy.store(bookmark); + } + } + } catch (Exception eee) { + addActionError(getText(n_("bow.error.internal"))); + log.error(eee.getMessage(), eee); + } + + return SUCCESS; + } + +} Modified: trunk/bow-ui/src/main/resources/bow.properties =================================================================== --- trunk/bow-ui/src/main/resources/bow.properties 2011-04-16 12:37:04 UTC (rev 237) +++ trunk/bow-ui/src/main/resources/bow.properties 2011-04-16 14:56:46 UTC (rev 238) @@ -22,8 +22,8 @@ # #L% ### application.version=${project.version} -bow.url=http://localhost:8080/bow/ -alias.url=http://localhost:8080/bow/ +bow.url=http://localhost:8080/ +alias.url=http://localhost:8080/ servlet.bow=bow servlet.alias=alias bow.smtpServer=smtp Modified: trunk/bow-ui/src/main/resources/log4j.properties =================================================================== --- trunk/bow-ui/src/main/resources/log4j.properties 2011-04-16 12:37:04 UTC (rev 237) +++ trunk/bow-ui/src/main/resources/log4j.properties 2011-04-16 14:56:46 UTC (rev 238) @@ -31,4 +31,5 @@ # package level log4j.logger.org.chorem.bow=DEBUG -#log4j.logger.org.nuiton.util.TimeLog=WARN \ No newline at end of file +#log4j.logger.org.nuiton.util.TimeLog=WARN +log4j.logger.org.apache.struts2.dispatcher.mapper=DEBUG Modified: trunk/bow-ui/src/main/resources/struts.properties =================================================================== --- trunk/bow-ui/src/main/resources/struts.properties 2011-04-16 12:37:04 UTC (rev 237) +++ trunk/bow-ui/src/main/resources/struts.properties 2011-04-16 14:56:46 UTC (rev 238) @@ -39,7 +39,9 @@ # struts.custom.properties=application,com/webwork/extension/custom +#struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper struts.mapper.class=org.apache.struts2.dispatcher.mapper.DefaultActionMapper +struts.mapper.composite=org.apache.struts2.dispatcher.mapper.DefaultActionMapper,org.apache.struts2.dispatcher.mapper.RestfulActionMapper struts.action.extension=action Modified: trunk/bow-ui/src/main/resources/struts.xml =================================================================== --- trunk/bow-ui/src/main/resources/struts.xml 2011-04-16 12:37:04 UTC (rev 237) +++ trunk/bow-ui/src/main/resources/struts.xml 2011-04-16 14:56:46 UTC (rev 238) @@ -29,6 +29,15 @@ <struts> <constant name="struts.devMode" value="true"/> <constant name="struts.ognl.allowStaticMethodAccess" value="true"/> + <constant name="struts.enable.SlashesInActionNames" value="true"/> + + <!-- <default-action-ref name="" />--><!-- TODO: action à lancer quand une action n'existe pas --> + <package name="alias" extends="struts-default"> + <action name="alias/*" class="org.chorem.bow.action.AliasAction"> + <param name="alias">{1}</param> + <result type="redirect">${redirectTo}</result> + </action> + </package> <!-- <default-action-ref name="" />--><!-- TODO: action à lancer quand une action n'existe pas --> <package name="login" extends="struts-default"> Modified: trunk/bow-ui/src/main/webapp/WEB-INF/web.xml =================================================================== --- trunk/bow-ui/src/main/webapp/WEB-INF/web.xml 2011-04-16 12:37:04 UTC (rev 237) +++ trunk/bow-ui/src/main/webapp/WEB-INF/web.xml 2011-04-16 14:56:46 UTC (rev 238) @@ -72,7 +72,7 @@ <servlet-class>org.apache.struts2.views.JspSupportServlet</servlet-class> <load-on-startup>5</load-on-startup> </servlet> - + <!-- Welcome file lists --> <welcome-file-list> <welcome-file>index.jsp</welcome-file> Modified: trunk/bow-ui/src/main/webapp/css/bookmark.css =================================================================== --- trunk/bow-ui/src/main/webapp/css/bookmark.css 2011-04-16 12:37:04 UTC (rev 237) +++ trunk/bow-ui/src/main/webapp/css/bookmark.css 2011-04-16 14:56:46 UTC (rev 238) @@ -142,7 +142,7 @@ float:left; margin-right:15px; display:block; - background:url('../img/ptit-livre.jpg') no-repeat; +/* background:url('../img/ptit-livre.jpg') no-repeat; */ } .bookmark .screenshot{ Modified: trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-16 12:37:04 UTC (rev 237) +++ trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-16 14:56:46 UTC (rev 238) @@ -37,14 +37,24 @@ <s:set var="bookmarkDescription" value="%{#request.bookmark.getDescription()}" /> <s:set var="bookmarkClicks" value="%{#request.bookmark.getClick()}" /> <s:set var="formBookmarkId" value="%{#request.formBookmarkId}" /> + <s:set var="privateAlias" value="%{#bookmarkAlias}" /> + <s:set var="aliasServlet" value="%{@org.chorem.bow.BowConfig@getInstance().getServletAliasUrl()}" /> + <s:set var="publicAliasUrl" value="%{#publicAlias}" /> <s:set var="aliasUrl" value="%{@org.chorem.bow.BowConfig@getInstance().getServletAliasUrl() + #bookmarkAlias}" /> <s:set var="date" value="%{#request.sdf.format(#request.bookmark.getCreationDate())}" /> <div class="bookmarkhead"> - <s:a cssClass="alias" href="%{#aliasUrl}" title="%{#bookmarkLink}" onclick="window.open(this.href); return false;"> - <s:property value="%{#bookmarkAlias}" /> + <p class="date">(<s:property value="%{date}" />)</p> + <s:a cssClass="alias" href="%{#aliasServlet + #wikittyId}.action" title="%{#bookmarkLink}" onclick="window.open(this.href); return false;"> + a:<s:property value="%{#privateAlias}" /> </s:a> - <p class="date">(<s:property value="%{date}" />)</p> +<!-- <s:a cssClass="alias" href="%{#aliasServlet + #wikittyId}.action" title="%{#bookmarkLink}" onclick="window.open(this.href); return false;"> + <s:property value="%{#wikittyId}" /> + </s:a> +--> + <s:a cssClass="alias" href="%{#aliasServlet + #publicAliasUrl}.action" title="%{#bookmarkLink}" onclick="window.open(this.href); return false;"> + <s:property value="%{#publicAliasUrl}" /> + </s:a> <s:url var="editBookmarkModify" action="modifyBookmark" escapeAmp="false"> <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param> <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param> Modified: trunk/bow-ui/src/main/xmi/bow.zargo =================================================================== (Binary files differ)