Author: kmorin Date: 2011-04-19 08:36:19 +0200 (Tue, 19 Apr 2011) New Revision: 242 Url: http://chorem.org/repositories/revision/bow/242 Log: Evolution #295 Change alias behaviour: - delete BowAlias class from model - enable the user to set and remove a public alias (3rd kind of alias) to the bookmark TODO: style, cause the popup to enter the alias is not that good Modified: trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java trunk/bow-ui/src/main/java/org/chorem/bow/BowInit.java trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java trunk/bow-ui/src/main/java/org/chorem/bow/BowUtils.java trunk/bow-ui/src/main/java/org/chorem/bow/action/AddUrlAction.java trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.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/resources/struts.properties trunk/bow-ui/src/main/resources/struts.xml trunk/bow-ui/src/main/webapp/WEB-INF/decorators/main.jsp trunk/bow-ui/src/main/webapp/js/bookmark.js trunk/bow-ui/src/main/webapp/jsp/home.jsp trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.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 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java 2011-04-19 06:36:19 UTC (rev 242) @@ -23,17 +23,15 @@ */ package org.chorem.bow; -import java.io.IOException; +import org.apache.commons.lang.StringUtils; +import org.nuiton.wikitty.WikittyProxy; + import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import java.io.IOException; -import org.apache.commons.lang.StringUtils; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.search.Search; - /** * TODO poussin 20110216 a revoir avec le ticket http://www.chorem.org/issues/show/295 * @@ -72,7 +70,7 @@ BowSession session = BowSession.getBowSession(request); WikittyProxy proxy = session.getProxy(); - Criteria criteria = Search.query().eq( + /*Criteria criteria = Search.query().eq( BowAlias.FQ_FIELD_BOWALIAS_ALIAS, alias).criteria(); BowAlias bowAlias = proxy.findByCriteria(BowAlias.class, criteria); @@ -91,7 +89,7 @@ response.sendRedirect(redirect); } else { response.sendRedirect(bowServletUrl); - } + }*/ } else { response.sendRedirect(bowServletUrl); } Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowInit.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowInit.java 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowInit.java 2011-04-19 06:36:19 UTC (rev 242) @@ -23,16 +23,17 @@ */ package org.chorem.bow; -import java.util.List; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.PagedResult; import javax.servlet.http.HttpServletRequest; +import java.util.List; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.search.PagedResult; -import org.nuiton.wikitty.WikittyProxy; - public class BowInit { + protected static final int MAX_ELEMENT_NUMBER = 10; + // static public void checkAdmin(Map<String, Object> session, String login) { // String[] admins = BowConfig.getInstance().getAdmins(); // @@ -106,11 +107,11 @@ if (criteria != null) { Criteria sortCriteria = criteria.addSortDescending(BowBookmark.FQ_FIELD_BOWBOOKMARK_CLICK) - .setEndIndex(10); //TODO: remove hardcoded value + .setEndIndex(MAX_ELEMENT_NUMBER); PagedResult<BowBookmark> result = proxy.findAllByCriteria(BowBookmark.class, sortCriteria); //Selects all bookmarks by user sortCriteria = criteria.addSortDescending(BowBookmark.FQ_FIELD_BOWBOOKMARK_CREATIONDATE) - .setEndIndex(10); //TODO: remove hardcoded value + .setEndIndex(MAX_ELEMENT_NUMBER); List<BowBookmark> lastBookmarks = proxy.findAllByCriteria(BowBookmark.class, sortCriteria).getAll(); BookmarkActions bookmarkActions = @@ -118,8 +119,8 @@ bookmarkActions.setTagSearch(null); List<BowBookmark> bookList = bookmarkActions.getBookmarks(); - if (bookList.size() > 10) { //TODO: remove hardcoded value - bookList = bookmarkActions.getBookmarks().subList(0, 10); //TODO: remove hardcoded value + if (bookList.size() > MAX_ELEMENT_NUMBER) { + bookList = bookmarkActions.getBookmarks().subList(0, MAX_ELEMENT_NUMBER); bookmarkActions.setBookmarks(bookList); } if (lastBookmarks != null) { Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowProxy.java 2011-04-19 06:36:19 UTC (rev 242) @@ -23,14 +23,15 @@ */ package org.chorem.bow; -import java.util.ArrayList; -import java.util.List; import org.nuiton.util.ApplicationConfig; -import org.nuiton.wikitty.entities.WikittyExtension; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.WikittyService; import org.nuiton.wikitty.WikittyServiceFactory; +import org.nuiton.wikitty.entities.WikittyExtension; +import java.util.ArrayList; +import java.util.List; + /** * Proxy pour utiliser les wikitty convenablement initialise. * @@ -76,7 +77,6 @@ List<WikittyExtension> extensions = new ArrayList<WikittyExtension>(); extensions.addAll(BowPreferenceImpl.extensions); // inherit BowUSer, WikittyUser extensions.addAll(BowImportImpl.extensions); // inherit BowBookmark, WikittyLabel - extensions.addAll(BowAliasImpl.extensions); ws = WikittyServiceFactory.buildWikittyService(config); ws.storeExtension(null, extensions); Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BowUtils.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/BowUtils.java 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/java/org/chorem/bow/BowUtils.java 2011-04-19 06:36:19 UTC (rev 242) @@ -23,17 +23,17 @@ */ package org.chorem.bow; +import org.apache.commons.lang.time.DateUtils; +import org.nuiton.util.StringUtil; +import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Criteria; +import org.nuiton.wikitty.search.Search; + import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.UUID; -import org.apache.commons.lang.time.DateUtils; -import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.search.Criteria; -import org.nuiton.wikitty.WikittyProxy; -import org.nuiton.wikitty.search.Search; - public class BowUtils { public static String BOW_DATE_PATTERN = "dd/MM/yyyy HH:mm:ss"; @@ -90,7 +90,7 @@ static public String redirectTo(String searchLine, String fullTextLine) { String result = "home.action"; - if (!searchLine.equals("") || !fullTextLine.equals("")) { + if (!"".equals(searchLine) || !"".equals(fullTextLine)) { result = "search.action?searchLine=" + searchLine + "&fullTextLine=" + fullTextLine; } return result; Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/AddUrlAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/AddUrlAction.java 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/AddUrlAction.java 2011-04-19 06:36:19 UTC (rev 242) @@ -25,16 +25,15 @@ import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.time.DateFormatUtils; -import org.chorem.bow.BowBookmark; import org.chorem.bow.BookmarkUtils; -import org.chorem.bow.BowUtils; +import org.chorem.bow.BowBookmark; import org.chorem.bow.BowUser; -import org.nuiton.wikitty.search.Criteria; +import org.chorem.bow.BowUtils; +import static org.nuiton.i18n.I18n.n_; import org.nuiton.wikitty.WikittyProxy; +import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.Search; -import static org.nuiton.i18n.I18n.n_; - /** * Ajoute un bookmark, soit par le formulaire, soit par un appel javascript * @@ -70,14 +69,14 @@ } /** - * @return the name + * @return the description */ public String getName() { return name; } /** - * @param name the name to set + * @param name the description to set */ public void setName(String name) { this.name = name; Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java =================================================================== --- trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java 2011-04-19 06:36:19 UTC (rev 242) @@ -1,19 +1,16 @@ 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 static org.nuiton.i18n.I18n.n_; import org.nuiton.wikitty.WikittyProxy; import org.nuiton.wikitty.search.Criteria; import org.nuiton.wikitty.search.Search; /** + * Handles only public aliases. Private aliases are handled by open search. * * @author poussin * @version $Revision$ @@ -28,6 +25,7 @@ protected String redirectTo = "/"; protected String alias; + protected String bookmarkId; public String getRedirectTo() { return redirectTo; @@ -37,36 +35,103 @@ this.alias = alias; } + public void setBookmarkId(String bookmarkId) { + this.bookmarkId = bookmarkId; + } + @Override public String execute() throws Exception { + log.debug("Redirect alias " + alias); + String result = SUCCESS; try { if (!StringUtils.isEmpty(alias)) { WikittyProxy proxy = getBowProxy(); Criteria criteria = Search.query().eq( - BowAlias.FQ_FIELD_BOWALIAS_ALIAS, alias).criteria(); + BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, alias).criteria(); - BowAlias bowAlias = proxy.findByCriteria(BowAlias.class, criteria); - String bookmarkId; - if (bowAlias == null) { - bookmarkId = alias; - } else { - bookmarkId = bowAlias.getBowBookmark(); + BowBookmark bookmark = proxy.findByCriteria(BowBookmark.class, criteria); + if (bookmark == null) { + bookmark = proxy.restore(BowBookmark.class, alias); } - BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId); if (bookmark != null) { redirectTo = bookmark.getLink(); int clicks = bookmark.getClick() + 1; bookmark.setClick(clicks); proxy.store(bookmark); + } else { + log.debug(getText(n_("bow.alias.bookmarkId.unknown"), new String[]{alias})); + addActionError(getText(n_("bow.alias.bookmarkId.unknown"), new String[]{alias})); + log.debug("No bookmark with alias or id " + alias); + result = ERROR; } } } catch (Exception eee) { addActionError(getText(n_("bow.error.internal"))); log.error(eee.getMessage(), eee); + result = ERROR; } - - return SUCCESS; + return result; } + public String create() throws Exception { + String result = SUCCESS; + try { + if (!StringUtils.isEmpty(alias)) { + WikittyProxy proxy = getBowProxy(); + + Criteria criteria = Search.query().eq( + BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, alias).criteria(); + + BowBookmark bookmark = proxy.findByCriteria(BowBookmark.class, criteria); + if (bookmark != null) { + addActionError(getText(n_("bow.alias.already.exists"), new String[]{alias})); + log.error("A bookmark already exists with alias " + alias); + result = ERROR; + + } else { + bookmark = proxy.restore(BowBookmark.class, bookmarkId); + if (bookmark != null) { + bookmark.setPublicAlias(alias); + proxy.store(bookmark); + } else { + addActionError(getText(n_("bow.alias.bookmarkId.unknown"), new String[]{bookmarkId})); + log.debug("No bookmark with id " + bookmarkId); + result = ERROR; + } + } + } + } catch (Exception eee) { + addActionError(getText(n_("bow.error.internal"))); + log.error(eee.getMessage(), eee); + result = ERROR; + } + + return result; + } + + public String delete() throws Exception { + log.debug("delete alias for id " + bookmarkId); + String result = SUCCESS; + try { + WikittyProxy proxy = getBowProxy(); + + BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId); + if (bookmark != null) { + bookmark.setPublicAlias(null); + proxy.store(bookmark); + } else { + addActionError(getText(n_("bow.alias.bookmarkId.unknown"), new String[]{bookmarkId})); + log.error("No bookmark with id " + bookmarkId); + result = ERROR; + } + } catch (Exception eee) { + addActionError(getText(n_("bow.error.internal"))); + log.error(eee.getMessage(), eee); + result = ERROR; + } + + return result; + } + } 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 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2011-04-19 06:36:19 UTC (rev 242) @@ -1,3 +1,4 @@ +alias= bow.action.locale.english=English bow.action.locale.french=Fran\u00E7ais bow.admin.dataMigration=Migrate all data from 0.4 to 0.5 @@ -7,6 +8,9 @@ bow.admin.home=Return to the home page bow.admin.panel=Admin panel bow.admin.reIndexationDone=Data reindexed successfully +bow.alias.alread.exists= +bow.alias.already.exists=The alias {0} already exists +bow.alias.bookmarkId.unknown=There is no bookmark with id {0} bow.bookmark.add.successful=Bookmark successfully added bow.bookmark.badFileFormat=Bad bookmarks file format \: unsuccessful import (expected Netscape-like bookmarks file) bow.bookmark.description=Description 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 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2011-04-19 06:36:19 UTC (rev 242) @@ -1,3 +1,4 @@ +alias= bow.action.locale.english=English bow.action.locale.french=Fran\u00E7ais bow.admin.dataMigration=Migrer toutes les donn\u00E9es de la version 0.4 \u00E0 0.5 @@ -7,6 +8,9 @@ bow.admin.home=Retour sur la page d''accueil bow.admin.panel=Panneau d''administration bow.admin.reIndexationDone=Les donn\u00E9es ont bien \u00E9t\u00E9 r\u00E9index\u00E9es +bow.alias.alread.exists= +bow.alias.already.exists=L''alias {0} existe d\u00E9j\u00E0 +bow.alias.bookmarkId.unknown=Il n''y a pas de marque-page correspondant \u00E0 l''identifiant {0} bow.bookmark.add.successful=Marque-page ajout\u00E9 avec succ\u00E8s bow.bookmark.badFileFormat=Mauvais format de fichier de favoris \: import impossible (le format de type Netscape n'est pas support\u00E9) bow.bookmark.description=Description Modified: trunk/bow-ui/src/main/resources/struts.properties =================================================================== --- trunk/bow-ui/src/main/resources/struts.properties 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/resources/struts.properties 2011-04-19 06:36:19 UTC (rev 242) @@ -40,8 +40,6 @@ # 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 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/resources/struts.xml 2011-04-19 06:36:19 UTC (rev 242) @@ -30,14 +30,19 @@ <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> + <result name="success" type="redirect">${redirectTo}</result> + <result name="error" type="redirectAction">home</result> </action> - </package> + <action name="*Alias" class="org.chorem.bow.action.AliasAction" method="{1}"> + <result name="success" type="redirectAction">home</result> + <result name="error" type="redirectAction">home</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/decorators/main.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/WEB-INF/decorators/main.jsp 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/webapp/WEB-INF/decorators/main.jsp 2011-04-19 06:36:19 UTC (rev 242) @@ -46,9 +46,15 @@ <link rel="search" type="application/opensearchdescription+xml" title="Bow (temporary)" href="${temporaryXml}" /> <link rel="search" type="application/opensearchdescription+xml" title="Bow (permanent)" href="${permanentXml}" /> </s:if> + <s:url var="jqueryUiCSS" value="/css/flick/jquery-ui-1.8.11.custom.css" /> <s:url var="globalCSS" value="/css/global.css" /> + <link href="${jqueryUiCSS}" rel="stylesheet" type="text/css" media="all" /> <link href="${globalCSS}" rel="stylesheet" type="text/css" media="all" /> + <s:url var="jqueryJS" value="/js/jquery-1.5.2.min.js" /> + <s:url var="jqueryUiJS" value="/js/jquery-ui-1.8.11.custom.min.js" /> <s:url var="bookmarkJS" value="/js/bookmark.js" /> + <script type="text/javascript" src="${jqueryJS}"></script> + <script type="text/javascript" src="${jqueryUiJS}"></script> <script type="text/javascript" src="${bookmarkJS}"></script> </head> <body id="page-home"> Modified: trunk/bow-ui/src/main/webapp/js/bookmark.js =================================================================== --- trunk/bow-ui/src/main/webapp/js/bookmark.js 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/webapp/js/bookmark.js 2011-04-19 06:36:19 UTC (rev 242) @@ -1,15 +1,17 @@ function modify(name, alias, tags, link, action, id) { - var form = document.getElementById("bookmarkForm"); - form.elements["link"].value = link; - form.elements["name"].value = name; - form.elements["tags"].value = tags; - form.elements["alias"].value = alias; + var form = $("#bookmarkForm")[0]; + form.link.value = link; + form.name.value = name; + form.tags.value = tags; + form.alias.value = alias; form.action = action; + var tab = document.getElementsByName(id); - for (var count = 0; count < tab.length; ++count) { + for (var count = 0; count < tab.length; count++) { tab[count].style.display = 'inline'; } return false; + } function deleteConfirmation(goTo, bookmarksNb, importDate) { @@ -29,3 +31,9 @@ window.location = goTo; } } + +function openPublicAliasForm(bookmarkId) { + $("#publicAliasFormBookmarkId")[0].value = bookmarkId; + $("#setPublicAliasPopup").dialog("open"); + return false; +} \ No newline at end of file Modified: trunk/bow-ui/src/main/webapp/jsp/home.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/home.jsp 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/webapp/jsp/home.jsp 2011-04-19 06:36:19 UTC (rev 242) @@ -98,6 +98,36 @@ <p class="nobookmarks"><s:text name="bow.bookmarks.noBookmarks" /></p> <% } %> </div> + + <script> + $(function() { + $( "#setPublicAliasPopup" ).dialog({ + autoOpen: false, + height: 100, + width: 200, + modal: true, + buttons: { + "Validate": function() { + var bValid = true; + $("#setPublicAliasForm").submit(); + $( this ).dialog( "close" ); + }, + Cancel: function() { + $( this ).dialog( "close" ); + } + }, + close: function() { + //allFields.val( "" ).removeClass( "ui-state-error" ); + } + }); + }); + </script> + <div id="setPublicAliasPopup" title="Enter the public alias"> + <s:form id="setPublicAliasForm" action="createAlias"> + <s:textfield key="bow.rightMenu.bookmark.alias" name="alias" class="text ui-widget-content ui-corner-all" /> + <s:hidden id="publicAliasFormBookmarkId" name="bookmarkId" /> + </s:form> + </div> </body> </html> <% } %> Modified: trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-19 06:36:19 UTC (rev 242) @@ -49,7 +49,7 @@ <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="publicAliasUrl" value="%{#request.bookmark.getPublicAlias()}" /> <s:set var="aliasUrl" value="%{@org.chorem.bow.BowConfig@getInstance().getServletAliasUrl() + #bookmarkAlias}" /> <s:set var="date" value="%{#request.sdf.format(#request.bookmark.getCreationDate())}" /> @@ -62,9 +62,33 @@ <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:if test="%{#publicAliasUrl != null}"> + <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="deleteAlias" action="deleteAlias"> + <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param> + </s:url> + <s:if test="%{!(formBookmarkId == null || !formBookmarkId.equals(wikittyId))}"> + <s:a cssStyle="text-decoration:none;" href="%{#deleteAlias}"> + <img style="border:none;" src="img/delete.png" alt="Delete alias" title="Delete" /> + </s:a> + </s:if> + <s:else> + <s:a name="%{#wikittyId}" cssStyle="display:none; text-decoration:none;" href="%{#deleteAlias}"> + <img style="border:none;" src="img/delete.png" alt="Delete alias" title="Delete" /> + </s:a> + </s:else> + </s:if> + <s:else> + <s:url var="addAlias" action="createAlias"> + <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param> + <s:param name="alias">irock</s:param> + </s:url> + <s:a cssClass="addAlias" onclick="return openPublicAliasForm('%{#wikittyId}')"> + <img style="border:none;" src="img/add.png" alt="Set alias" title="Set alias" /> + </s:a> + </s:else> <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/webapp/jsp/inc/rightMenu.jsp =================================================================== --- trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp 2011-04-16 16:49:55 UTC (rev 241) +++ trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp 2011-04-19 06:36:19 UTC (rev 242) @@ -1,7 +1,7 @@ <!-- #%L bow - + $Id$ $HeadURL$ %% @@ -11,12 +11,12 @@ it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. - + This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. - + You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. #L% @@ -27,8 +27,9 @@ <% String bowUrl = BowConfig.getInstance().getBowUrl(); -if (request.getAttribute("formAction") == null) +if (request.getAttribute("formAction") == null) { request.setAttribute("formAction", "addUrl"); +} %> <div id="logoutDiv" xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" xmlns:jsp="http://java.sun.com/JSP/Page"> Modified: trunk/bow-ui/src/main/xmi/bow.zargo =================================================================== (Binary files differ)