Bow-commits
Threads by month
- ----- 2026 -----
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
April 2011
- 5 participants
- 42 discussions
r251 - in trunk/bow-ui/src/main: java/org/chorem/bow java/org/chorem/bow/action resources resources/i18n webapp/img webapp/js webapp/jsp webapp/jsp/inc xmi
by bpoussin@users.chorem.org April 21, 2011
by bpoussin@users.chorem.org April 21, 2011
April 21, 2011
Author: bpoussin
Date: 2011-04-21 11:42:50 +0200 (Thu, 21 Apr 2011)
New Revision: 251
Url: http://chorem.org/repositories/revision/bow/251
Log:
Evolution #271: Add information in preference page and move some menu item too
- l'ajout/modification d'un item ce fait via une popup
Added:
trunk/bow-ui/src/main/webapp/img/add.png
trunk/bow-ui/src/main/webapp/jsp/editBookmark.jsp
trunk/bow-ui/src/main/webapp/jsp/inc/popupAddUrl.jsp
trunk/bow-ui/src/main/webapp/jsp/inc/popupPublicAlias.jsp
Removed:
trunk/bow-ui/src/main/java/org/chorem/bow/action/EditBookmarkAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/ModifyBookmarkAction.java
Modified:
trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/AddUrlAction.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.xml
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/BookmarkUtils.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-04-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-04-21 09:42:50 UTC (rev 251)
@@ -125,7 +125,7 @@
String link = getUrlFromHtml(html);
String tags = getTagsFromHtml(html);
Date date = getDateFromHtml(html);
- BowBookmark bookmark = createBookmark(link, name, tags, user, null, date);
+ BowBookmark bookmark = createBookmark(link, name, tags, user, null, null, date);
return bookmark;
}
@@ -280,12 +280,12 @@
* @param name of bookmark
* @param tags of bookmark
* @param user creating bookmark
- * @param alias of bookmark
+ * @param privateAlias of bookmark
* @param date of creation
* @return bookMarl created
*/
public static BowBookmark createBookmark(String url, String name, String tags,
- BowUser user, String alias, Date date) {
+ BowUser user, String privateAlias, String publicAlias, Date date) {
BowBookmark bookmark = new BowBookmarkImpl();
if (name != null) {
@@ -306,12 +306,18 @@
date = new Date();
}
bookmark.setCreationDate(date); // set the date
- if (alias != null) {
- alias = alias.trim();
- bookmark.setPrivateAlias(alias);
+ if (privateAlias != null) {
+ privateAlias = privateAlias.trim();
+ bookmark.setPrivateAlias(privateAlias);
} else {
bookmark.setPrivateAlias("");
}
+ if (publicAlias != null) {
+ publicAlias = publicAlias.trim();
+ bookmark.setPublicAlias(publicAlias);
+ } else {
+ bookmark.setPublicAlias("");
+ }
return bookmark;
}
@@ -323,7 +329,7 @@
}
public static void updateBookmark(BowBookmark bookmark, String name,
- String link, String tags, String alias) {
+ String link, String tags, String privateAlias, String publicAlias) {
if (name != null) {
name = name.trim();
bookmark.setDescription(name);
@@ -331,10 +337,14 @@
addUrlToBookmark(link, bookmark);
bookmark.clearLabels();
addTagsToBookmark(tags, bookmark);
- if (alias != null) {
- alias = alias.trim();
- bookmark.setPrivateAlias(alias);
+ if (privateAlias != null) {
+ privateAlias = privateAlias.trim();
+ bookmark.setPrivateAlias(privateAlias);
}
+ if (publicAlias != null) {
+ publicAlias = publicAlias.trim();
+ bookmark.setPublicAlias(publicAlias);
+ }
}
public static String getBookmarkTagsString(BowBookmark bookmark) {
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-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/AddUrlAction.java 2011-04-21 09:42:50 UTC (rev 251)
@@ -31,10 +31,12 @@
import static org.nuiton.i18n.I18n.n_;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.search.Criteria;
+import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Search;
/**
- * Ajoute un bookmark, soit par le formulaire, soit par un appel javascript
+ * Ajoute ou modifie un bookmark, soit par le formulaire,
+ * soit par un appel javascript
*
* @author poussin
*/
@@ -42,15 +44,25 @@
private static final long serialVersionUID = 3389170166034184139L;
+ protected String bookmarkId;
protected String link;
protected String name;
- protected String alias;
+ protected String privateAlias;
+ protected String publicAlias;
protected String tags;
protected String nameAndTags;
protected String redirectTo;
protected String searchLine;
- protected String fullTextLine;
+ protected String fullTextLine;
+
+ public String getBookmarkId() {
+ return bookmarkId;
+ }
+ public void setBookmarkId(String bookmarkId) {
+ this.bookmarkId = bookmarkId;
+ }
+
/**
* @return the link
*/
@@ -80,19 +92,27 @@
}
/**
- * @return the alias
+ * @return the privateAlias
*/
- public String getAlias() {
- return alias;
+ public String getPrivateAlias() {
+ return privateAlias;
}
/**
- * @param alias the alias to set
+ * @param privateAlias the privateAlias to set
*/
- public void setAlias(String alias) {
- this.alias = alias;
+ public void setPrivateAlias(String alias) {
+ this.privateAlias = alias;
}
+ public String getPublicAlias() {
+ return publicAlias;
+ }
+
+ public void setPublicAlias(String publicAlias) {
+ this.publicAlias = publicAlias;
+ }
+
/**
* @return the tags
*/
@@ -160,27 +180,68 @@
try {
WikittyProxy proxy = getBowProxy();
BowBookmark bookmark = null;
+ BowBookmark bookmarkToModify = null;
BowUser user = getBowSession().getUser();
+ String userId = user.getWikittyId();
+ if (bookmarkId != null && !StringUtils.isEmpty(bookmarkId)) {
+ bookmarkToModify = proxy.restore(BowBookmark.class, bookmarkId);
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("Change old wikitty: " + bookmarkToModify);
+ }
+
+ // gere le cas d'une mise a jour ou d'un ajout via le formulaire
if (name != null) {
- if (alias != null && !alias.isEmpty()) {
- Criteria criteria = Search.query().eq(
- BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, alias).criteria();
-
- if (proxy.findByCriteria(BowBookmark.class, criteria) != null) {
- alias = "";
+ // 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
+ Criteria privateAliasCriteria = null;
+ Criteria publicAliasCriteria = null;
+ if (privateAlias != null && !privateAlias.isEmpty()) {
+ privateAliasCriteria = Search.query()
+ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, privateAlias)
+ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, userId)
+ .criteria().setEndIndex(0);
+ }
+ if (publicAlias != null && !publicAlias.isEmpty()) {
+ publicAliasCriteria = Search.query()
+ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_PUBLICALIAS, publicAlias)
+ .criteria().setEndIndex(0);
+ }
+ PagedResult<String>[] aliasResult = proxy.findAllIdByCriteria(
+ privateAliasCriteria, publicAliasCriteria);
+
+ if (aliasResult[0] != null && aliasResult[0].getNumFound() > 0) {
+ if (bookmarkToModify == null) {
+ privateAlias = "";
+ } else {
+ privateAlias = bookmarkToModify.getPrivateAlias();
}
}
- bookmark = BookmarkUtils.createBookmark(link, name, tags, user, alias, null);
+ if (aliasResult[1] != null && aliasResult[1].getNumFound() > 0) {
+ if (bookmarkToModify == null) {
+ publicAlias = "";
+ } else {
+ publicAlias = bookmarkToModify.getPublicAlias();
+ }
+ }
+
+ if (bookmarkToModify == null) {
+ bookmark = BookmarkUtils.createBookmark(
+ link, name, tags, user, privateAlias, publicAlias, null);
+ } else {
+ BookmarkUtils.updateBookmark(
+ bookmarkToModify, name, link, tags, privateAlias, publicAlias);
+ }
} else { //This part is for the bookmark addition by script
if (nameAndTags != null) {
bookmark = BookmarkUtils.createBookmark(link, nameAndTags, user);
}
}
- // si on a reussi a creer le bookmark
+ // si on a reussi a creer le bookmark, on regarde s'il ne faut pas
+ // le fusionner avec un deja existant
if (bookmark != null && !bookmark.getDescription().isEmpty()
&& !bookmark.getBowUser().isEmpty()) {
- String userId = user.getWikittyId();
// looking for already bookmark with same url, to fusion them
String link = bookmark.getLink();
@@ -192,7 +253,7 @@
proxy.findByCriteria(BowBookmark.class, criteria);
if(oldBookmark != null) {
// fusionne les descriptions et les tags
- // par contre on prend le dernier alias prive choisi par
+ // par contre on prend le dernier privateAlias prive choisi par
// l'utilisateur s'il y en a un
String description = oldBookmark.getDescription();
if (!StringUtils.isEmpty(bookmark.getDescription())) {
@@ -212,7 +273,10 @@
bookmark = oldBookmark;
}
- proxy.store(bookmark); //Stores the bookmark if everything is ok
+ }
+
+ if (bookmark != null || bookmarkToModify != null) {
+ proxy.store(bookmark, bookmarkToModify); //Stores the bookmark if everything is ok
addActionMessage(getText(n_("bow.bookmark.add.successful")));
if (log.isDebugEnabled()) {
log.debug("Adding URL");
Deleted: trunk/bow-ui/src/main/java/org/chorem/bow/action/EditBookmarkAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/EditBookmarkAction.java 2011-04-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/EditBookmarkAction.java 2011-04-21 09:42:50 UTC (rev 251)
@@ -1,127 +0,0 @@
-/*
- * #%L
- * bow
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2010 - 2011 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * 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%
- */
-package org.chorem.bow.action;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.struts2.interceptor.ServletRequestAware;
-import org.chorem.bow.BowBookmark;
-import org.chorem.bow.BookmarkUtils;
-import org.chorem.bow.BowConfig;
-import org.chorem.bow.BowInit;
-import org.chorem.bow.BowPreference;
-import org.chorem.bow.BowSearch;
-import org.nuiton.wikitty.WikittyProxy;
-
-/**
- * Prepare les données pour la modification d'un bookmark
- * TODO poussin 20110211 peut-etre le remplacer par une popup JS d'edition ?
- *
- * @author poussin
- */
-public class EditBookmarkAction extends BowBaseAction implements ServletRequestAware {
- private static final long serialVersionUID = 2706590901233864637L;
- protected String bookmarkId;
- protected String searchLine;
- protected String fullTextLine;
- protected HttpServletRequest request;
-
- /**
- * @return the bookmarkId
- */
- public String getBookmarkId() {
- return bookmarkId;
- }
-
- /**
- * @param bookmarkId the bookmarkId to set
- */
- public void setBookmarkId(String bookmarkId) {
- this.bookmarkId = bookmarkId;
- }
-
- /**
- * @return the searchLine
- */
- public String getSearchLine() {
- return searchLine;
- }
-
- /**
- * @param searchLine the searchLine to set
- */
- public void setSearchLine(String searchLine) {
- this.searchLine = searchLine;
- }
-
- /**
- * @return the fullTextLine
- */
- public String getFullTextLine() {
- return fullTextLine;
- }
-
- /**
- * @param fullTextLine the fullTextLine to set
- */
- public void setFullTextLine(String fullTextLine) {
- this.fullTextLine = fullTextLine;
- }
-
- @Override
- public void setServletRequest(HttpServletRequest request) {
- this.request = request;
- }
-
- public String execute() {
- String result;
-
- if (bookmarkId != null && !bookmarkId.isEmpty()) {
- WikittyProxy proxy = getBowProxy();
- BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId);
-
- if (bookmark != null) {
- request.setAttribute("link", bookmark.getLink());
- request.setAttribute("name", bookmark.getDescription());
- request.setAttribute("alias", bookmark.getPrivateAlias());
- request.setAttribute("tags", BookmarkUtils.getBookmarkTagsString(bookmark));
- String servletName = BowConfig.getInstance().getServletBow();
- request.setAttribute("formAction",
- "/" + servletName + "/modifyBookmark.action"
- + "?bookmarkId=" + bookmarkId
- + "&searchLine=" + searchLine
- + "&fullTextLine=" + fullTextLine);
- }
- }
- BowPreference user = getBowSession().getPreference();
- if (searchLine == null || searchLine.equals("")) {
- BowInit.initHomePage(request, user);
- result = "home";
- } else {
- BowSearch.search(request, user);
- result = "search";
- }
- return result;
- }
-}
\ No newline at end of file
Deleted: trunk/bow-ui/src/main/java/org/chorem/bow/action/ModifyBookmarkAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/ModifyBookmarkAction.java 2011-04-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/ModifyBookmarkAction.java 2011-04-21 09:42:50 UTC (rev 251)
@@ -1,174 +0,0 @@
-/*
- * #%L
- * bow
- *
- * $Id$
- * $HeadURL$
- * %%
- * Copyright (C) 2010 - 2011 CodeLutin
- * %%
- * This program is free software: you can redistribute it and/or modify
- * 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%
- */
-package org.chorem.bow.action;
-
-import org.chorem.bow.BowBookmark;
-import org.chorem.bow.BookmarkUtils;
-import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.search.Search;
-
-import static org.nuiton.i18n.I18n.n_;
-
-/**
- * Modifie une entree du bookmark
- *
- * @author poussin
- */
-public class ModifyBookmarkAction extends BowBaseAction {
- private static final long serialVersionUID = 8197008295267924063L;
- protected String link;
- protected String name;
- protected String alias;
- protected String tags;
- protected String bookmarkId;
- protected String searchLine;
- protected String fullTextLine;
-
- /**
- * @return the link
- */
- public String getLink() {
- return link;
- }
-
- /**
- * @param url the link to set
- */
- public void setLink(String link) {
- this.link = link;
- }
-
- /**
- * @return the name
- */
- public String getName() {
- return name;
- }
-
- /**
- * @param name the name to set
- */
- public void setName(String name) {
- this.name = name;
- }
-
- /**
- * @return the alias
- */
- public String getAlias() {
- return alias;
- }
-
- /**
- * @param alias the alias to set
- */
- public void setAlias(String alias) {
- this.alias = alias;
- }
-
- /**
- * @return the tags
- */
- public String getTags() {
- return tags;
- }
-
- /**
- * @param tags the tags to set
- */
- public void setTags(String tags) {
- this.tags = tags;
- }
-
- /**
- * @return the bookmarkId
- */
- public String getBookmarkId() {
- return bookmarkId;
- }
-
- /**
- * @param bookmarkId the bookmarkId to set
- */
- public void setBookmarkId(String bookmarkId) {
- this.bookmarkId = bookmarkId;
- }
-
- /**
- * @return the searchLine
- */
- public String getSearchLine() {
- return searchLine;
- }
-
- /**
- * @param searchLine the searchLine to set
- */
- public void setSearchLine(String searchLine) {
- this.searchLine = searchLine;
- }
-
- /**
- * @return the fullTextLine
- */
- public String getFullTextLine() {
- return fullTextLine;
- }
-
- /**
- * @param fullTextLine the fullTextLine to set
- */
- public void setFullTextLine(String fullTextLine) {
- this.fullTextLine = fullTextLine;
- }
-
- /**
- * Modifies a bookmark
- */
- public String execute() {
- try {
- WikittyProxy proxy = getBowProxy();
- BowBookmark bookmark = proxy.restore(BowBookmark.class, bookmarkId);
-
- if (bookmark != null) {
- if (alias != null && !alias.isEmpty()) {
- Criteria criteria = Search.query().eq(
- BowBookmark.FQ_FIELD_BOWBOOKMARK_PRIVATEALIAS, alias).criteria();
-
- if (proxy.findByCriteria(BowBookmark.class, criteria) != null) {
- alias = bookmark.getPrivateAlias();
- }
- }
- BookmarkUtils.updateBookmark(bookmark, name, link, tags, alias);
- proxy.store(bookmark);
- addActionMessage(getText(n_("bow.bookmark.update.successful")));
- }
- } catch (Exception e) {
- addActionError(getText(n_("bow.error.internal")));
- log.error(e.getMessage(), e);
- }
- return SUCCESS;
- }
-}
\ No newline at end of file
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-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2011-04-21 09:42:50 UTC (rev 251)
@@ -8,12 +8,12 @@
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
+bow.bookmark.edit=
bow.bookmark.import.delete.successful=The imported bookmarks were deleted successfully
bow.bookmark.import.successful=The bookmarks were imported successfully
bow.bookmark.remove.successful=The bookmark was removed successfully
@@ -92,6 +92,7 @@
bow.register.submit=Register
bow.register.title=Register
bow.requiredstring=${getText(fieldKey)} is required
+bow.rightMenu.addUrl.link=Add entry
bow.rightMenu.admin=Admin
bow.rightMenu.bookmark.addModify=Add / Modify
bow.rightMenu.bookmark.alias=ALIAS
@@ -131,3 +132,8 @@
bow.search.submit=Search
bow.search.title=Search
bow.token.generate.successful=The token has been regenerated successfully
+popup.addurl.alias.private=private alias
+popup.addurl.alias.public=public alias
+popup.addurl.link=url
+popup.addurl.name=description
+popup.addurl.tags=tags
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-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2011-04-21 09:42:50 UTC (rev 251)
@@ -13,6 +13,7 @@
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
+bow.bookmark.edit=
bow.bookmark.import.delete.successful=Les marque-pages import\u00E9s ont \u00E9t\u00E9 supprim\u00E9s avec succ\u00E8s
bow.bookmark.import.successful=Les marque-pages ont \u00E9t\u00E9 import\u00E9s avec succ\u00E8s
bow.bookmark.remove.successful=Le marque-page a \u00E9t\u00E9 supprim\u00E9 avec succ\u00E8s
@@ -91,6 +92,7 @@
bow.register.submit=S''enregistrer
bow.register.title=S''enregistrer
bow.requiredstring=${getText(fieldKey)} est obligatoire
+bow.rightMenu.addUrl.link=Ajouter une entr\u00E9e
bow.rightMenu.admin=Admin
bow.rightMenu.bookmark.addModify=Ajouter / Modifier
bow.rightMenu.bookmark.alias=ALIAS
@@ -130,3 +132,8 @@
bow.search.submit=Rechercher
bow.search.title=Recherche
bow.token.generate.successful=Le token a \u00E9t\u00E9 reg\u00E9n\u00E9r\u00E9 avec succ\u00E8s
+popup.addurl.alias.private=alias priv\u00E9
+popup.addurl.alias.public=alias public
+popup.addurl.link=url
+popup.addurl.name=description
+popup.addurl.tags=tags
Modified: trunk/bow-ui/src/main/resources/struts.xml
===================================================================
--- trunk/bow-ui/src/main/resources/struts.xml 2011-04-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/resources/struts.xml 2011-04-21 09:42:50 UTC (rev 251)
@@ -121,13 +121,6 @@
<param name="contentDisposition">attachment;filename="bookmarks.html"</param>
</result>
</action>
- <action name="modifyBookmark" class="org.chorem.bow.action.ModifyBookmarkAction">
- <interceptor-ref name="store">
- <param name="operationMode">STORE</param>
- </interceptor-ref>
- <interceptor-ref name="loginStack"/>
- <result type="redirectAction">home</result>
- </action>
<action name="removeBookmark" class="org.chorem.bow.action.RemoveBookmarkAction">
<interceptor-ref name="store">
<param name="operationMode">STORE</param>
@@ -135,11 +128,6 @@
<interceptor-ref name="loginStack"/>
<result type="redirect">${redirectTo}</result>
</action>
- <action name="editBookmark" class="org.chorem.bow.action.EditBookmarkAction">
- <interceptor-ref name="loginStack"/>
- <result name="home" type="redirectAction">home</result>
- <result name="search">/jsp/search.jsp</result>
- </action>
<action name="deleteImport" class="org.chorem.bow.action.DeleteImportAction">
<interceptor-ref name="store">
<param name="operationMode">STORE</param>
Added: trunk/bow-ui/src/main/webapp/img/add.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/img/add.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Modified: trunk/bow-ui/src/main/webapp/js/bookmark.js
===================================================================
--- trunk/bow-ui/src/main/webapp/js/bookmark.js 2011-04-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/webapp/js/bookmark.js 2011-04-21 09:42:50 UTC (rev 251)
@@ -31,9 +31,3 @@
window.location = goTo;
}
}
-
-function openPublicAliasForm(bookmarkId) {
- $("#publicAliasFormBookmarkId")[0].value = bookmarkId;
- $("#setPublicAliasPopup").dialog("open");
- return false;
-}
\ No newline at end of file
Copied: trunk/bow-ui/src/main/webapp/jsp/editBookmark.jsp (from rev 247, trunk/bow-ui/src/main/webapp/jsp/admin.jsp)
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/editBookmark.jsp (rev 0)
+++ trunk/bow-ui/src/main/webapp/jsp/editBookmark.jsp 2011-04-21 09:42:50 UTC (rev 251)
@@ -0,0 +1,61 @@
+<!--
+ #%L
+ bow
+
+ $Id$
+ $HeadURL$
+ %%
+ Copyright (C) 2010 CodeLutin
+ %%
+ This program is free software: you can redistribute it and/or modify
+ 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%
+ -->
+<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@taglib prefix="s" uri="/struts-tags"%>
+<%@page import="org.chorem.bow.BowBookmark"%>
+
+<%
+BowBookmark bookmark = null;
+%>
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+ xmlns:jsp="http://java.sun.com/JSP/Page"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <head>
+ <s:url var="css" value="/css/bookmark.css" />
+ <link href="${css}" rel="stylesheet" type="text/css" />
+ <s:head />
+ </head>
+ <body>
+ <div id="content">
+ <div class="menu clearfix">
+ <h2><s:text name="bow.bookmark.edit" /></h2>
+ </div>
+ <div class="formFrame fond">
+ <s:form id="popupAddUrlForm" action="addUrl" method="post">
+ <p>
+ <input type="hidden" id="popupAddUrlFormBookmarkId" name="bookmarkId" value="<%=bookmark.getWikittyId()%>"/>
+ <s:hidden name="searchLine" value="%{searchLine}" />
+ <s:hidden name="fullTextLine" value="%{fullTextLine}" />
+ <s:textfield key="popup.addurl.link" id="popupAddUrlFormLink" name="link" labelSeparator="" /><br />
+ <s:textarea key="popup.addurl.name" id="popupAddUrlFormName" name="name" labelSeparator="" /><br />
+ <s:textfield key="popup.addurl.alias.private" id="popupAddUrlFormPrivateAlias" name="privateAlias" labelSeparator="" /><br />
+ <s:textfield key="popup.addurl.alias.public" id="popupAddUrlFormPublicAlias" name="publicAlias" labelSeparator="" /><br />
+ <s:textfield key="popup.addurl.tags" id="popupAddUrlFormTags" name="tags" labelSeparator="" /><br />
+ </p>
+ </s:form>
+ </div>
+ </div>
+ </body>
+</html>
Modified: trunk/bow-ui/src/main/webapp/jsp/home.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/home.jsp 2011-04-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/webapp/jsp/home.jsp 2011-04-21 09:42:50 UTC (rev 251)
@@ -93,35 +93,8 @@
<% } %>
</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>
+ <s:include value="inc/popupPublicAlias.jsp" />
+ <s:include value="inc/popupAddUrl.jsp" />
</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-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-21 09:42:50 UTC (rev 251)
@@ -25,6 +25,7 @@
<%@taglib prefix="s" uri="/struts-tags" %>
<%@page import="org.chorem.bow.BowBookmark" %>
<%@page import="org.chorem.bow.BowUtils"%>
+<%@page import="org.apache.commons.lang.StringEscapeUtils"%>
<div class="bookmark"
xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
@@ -102,8 +103,14 @@
<s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
<s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
<s:param name="fullTextLine"><s:property value="%{#fullTextLine}" /></s:param>
- </s:url>
+ </s:url>
+<!--
<s:a cssClass="edit" href="%{editBookmark}" onclick="return modify('%{#bookmarkDescription}', '%{#bookmarkAlias}', '%{@org.chorem.bow.BookmarkUtils@getBookmarkTagsString(#request.bookmark)}', '%{#bookmarkLink}', '%{editBookmarkModify}', '%{#wikittyId}');"></s:a>
+-->
+ <s:a cssClass="edit" href="http://linuxfr.org"
+ onclick="return openPopupAddUrl('%{#wikittyId}', '%{#bookmarkLink}', '<%=StringEscapeUtils.escapeJavaScript(bookmark.getDescription())%>', '%{#bookmarkAlias}', '%{#publicAliasUrl}', '%{@org.chorem.bow.BookmarkUtils@getBookmarkTagsString(#request.bookmark)}');">
+
+ </s:a>
<s:url var="removeBookmark" action="removeBookmark" escapeAmp="true">
<s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
<s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
Added: trunk/bow-ui/src/main/webapp/jsp/inc/popupAddUrl.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/inc/popupAddUrl.jsp (rev 0)
+++ trunk/bow-ui/src/main/webapp/jsp/inc/popupAddUrl.jsp 2011-04-21 09:42:50 UTC (rev 251)
@@ -0,0 +1,58 @@
+<%--
+ Document : popupAddUrl
+ Created on : 20 avr. 2011, 17:03:37
+ Author : poussin
+--%>
+
+<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<script>
+ function openPopupAddUrl(bookmarkId, link, name, privateAlias, publicAlias, tags) {
+ $("#popupAddUrlFormBookmarkId")[0].value = bookmarkId;
+ $("#popupAddUrlFormLink")[0].value = link;
+ $("#popupAddUrlFormName")[0].value = name;
+ $("#popupAddUrlFormPrivateAlias")[0].value = privateAlias;
+ $("#popupAddUrlFormPublicAlias")[0].value = publicAlias;
+ $("#popupAddUrlFormTags")[0].value = tags;
+
+ $("#addUrlPopup").dialog("open");
+ return false;
+ }
+
+ $(function() {
+ $( "#addUrlPopup" ).dialog({
+ autoOpen: false,
+ width: 400,
+ modal: true,
+ buttons: {
+ "Validate": function() {
+ $("#popupAddUrlForm").submit();
+ $( this ).dialog( "close" );
+ },
+ Cancel: function() {
+ $( this ).dialog( "close" );
+ }
+ },
+ close: function() {
+ //allFields.val( "" ).removeClass( "ui-state-error" );
+ }
+ });
+ });
+</script>
+
+<div xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+ id="addUrlPopup" title="Add or modify URL">
+ <s:form id="popupAddUrlForm" action="addUrl" method="post">
+ <p>
+ <s:hidden id="popupAddUrlFormBookmarkId" name="bookmarkId" />
+ <s:hidden name="searchLine" value="%{searchLine}" />
+ <s:hidden name="fullTextLine" value="%{fullTextLine}" />
+ <s:textfield key="popup.addurl.link" id="popupAddUrlFormLink" name="link" labelSeparator=" " /><br />
+ <s:textarea key="popup.addurl.name" id="popupAddUrlFormName" name="name" labelSeparator=" " /><br />
+ <s:textfield key="popup.addurl.alias.private" id="popupAddUrlFormPrivateAlias" name="privateAlias" labelSeparator=" " /><br />
+ <s:textfield key="popup.addurl.alias.public" id="popupAddUrlFormPublicAlias" name="publicAlias" labelSeparator=" " /><br />
+ <s:textfield key="popup.addurl.tags" id="popupAddUrlFormTags" name="tags" labelSeparator=" " /><br />
+ </p>
+ </s:form>
+</div>
Added: trunk/bow-ui/src/main/webapp/jsp/inc/popupPublicAlias.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/inc/popupPublicAlias.jsp (rev 0)
+++ trunk/bow-ui/src/main/webapp/jsp/inc/popupPublicAlias.jsp 2011-04-21 09:42:50 UTC (rev 251)
@@ -0,0 +1,45 @@
+<%--
+ Document : popupPublicAlias
+ Created on : 20 avr. 2011, 17:03:37
+ Author : poussin
+--%>
+
+<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
+<%@taglib prefix="s" uri="/struts-tags" %>
+
+<script>
+ function openPublicAliasForm(bookmarkId) {
+ $("#publicAliasFormBookmarkId")[0].value = bookmarkId;
+ $("#setPublicAliasPopup").dialog("open");
+ return false;
+ }
+
+ $(function() {
+ $( "#setPublicAliasPopup" ).dialog({
+ autoOpen: false,
+ height: 100,
+ width: 200,
+ modal: true,
+ buttons: {
+ "Validate": function() {
+ $("#setPublicAliasForm").submit();
+ $( this ).dialog( "close" );
+ },
+ Cancel: function() {
+ $( this ).dialog( "close" );
+ }
+ },
+ close: function() {
+ //allFields.val( "" ).removeClass( "ui-state-error" );
+ }
+ });
+ });
+</script>
+
+<div xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+ 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>
Modified: trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp 2011-04-20 14:55:48 UTC (rev 250)
+++ trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp 2011-04-21 09:42:50 UTC (rev 251)
@@ -50,6 +50,12 @@
<li><s:a action="admin"><s:text name="bow.rightMenu.admin" /></s:a></li>
</s:if>
<li><s:a action="preferences"><s:text name="bow.preferences.title" /></s:a></li>
+ <li>
+ <s:a href="http://linuxfr.org"
+ onclick="return openPopupAddUrl('', '', '', '', '', '');">
+ <s:text name="bow.rightMenu.addUrl.link" />
+ </s:a>
+ </li>
</ul>
<div class="recherche">
<s:form action="search">
@@ -67,20 +73,6 @@
</div>
</s:form>
</div>
- <div id="add" class="clearfix">
- <h2><s:text name="bow.rightMenu.bookmark.addModify" /></h2>
- <s:form id="bookmarkForm" action="%{#request.formAction}">
- <p>
- <s:textfield key="bow.rightMenu.bookmark.link" name="link" value="%{#request.link}" labelSeparator="" /><br />
- <s:textfield key="bow.rightMenu.bookmark.alias" name="alias" value="%{#request.alias}" labelSeparator="" /><br />
- <s:textfield key="bow.rightMenu.bookmark.name" name="name" value="%{#request.name}" labelSeparator="" /><br />
- <s:textfield key="bow.rightMenu.bookmark.tags" name="tags" value="%{#request.tags}" labelSeparator="" /><br /><br />
- <s:hidden name="searchLine" value="%{searchLine}" />
- <s:hidden name="fullTextLine" value="%{fullTextLine}" />
- <s:submit key="bow.rightMenu.bookmark.submit" name="submit" />
- </p>
- </s:form>
- </div>
<!--div id="nuage"-->
<s:if test="%{searchLine != null}">
<jsp:include page="tagsCloud.jsp" flush="true">
Modified: trunk/bow-ui/src/main/xmi/bow.zargo
===================================================================
(Binary files differ)
1
0
r250 - in trunk/bow-ui/src/main/webapp: WEB-INF/decorators css css/images jsp
by bpoussin@users.chorem.org April 20, 2011
by bpoussin@users.chorem.org April 20, 2011
April 20, 2011
Author: bpoussin
Date: 2011-04-20 16:55:48 +0200 (Wed, 20 Apr 2011)
New Revision: 250
Url: http://chorem.org/repositories/revision/bow/250
Log:
- ajout du style pour jquery et des images associ?\195?\169es
Added:
trunk/bow-ui/src/main/webapp/css/images/
trunk/bow-ui/src/main/webapp/css/images/ui-bg_flat_0_aaaaaa_40x100.png
trunk/bow-ui/src/main/webapp/css/images/ui-bg_flat_75_dbdbdb_40x100.png
trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_55_fbf9ee_1x400.png
trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_65_ffffff_1x400.png
trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_75_dadada_1x400.png
trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_75_e6e6e6_1x400.png
trunk/bow-ui/src/main/webapp/css/images/ui-bg_highlight-soft_75_bf8a9c_1x100.png
trunk/bow-ui/src/main/webapp/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png
trunk/bow-ui/src/main/webapp/css/images/ui-icons_222222_256x240.png
trunk/bow-ui/src/main/webapp/css/images/ui-icons_2e83ff_256x240.png
trunk/bow-ui/src/main/webapp/css/images/ui-icons_454545_256x240.png
trunk/bow-ui/src/main/webapp/css/images/ui-icons_888888_256x240.png
trunk/bow-ui/src/main/webapp/css/images/ui-icons_cd0a0a_256x240.png
trunk/bow-ui/src/main/webapp/css/jquery-ui-1.8.11.custom.bow.css
Modified:
trunk/bow-ui/src/main/webapp/WEB-INF/decorators/main.jsp
trunk/bow-ui/src/main/webapp/jsp/home.jsp
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-20 13:56:27 UTC (rev 249)
+++ trunk/bow-ui/src/main/webapp/WEB-INF/decorators/main.jsp 2011-04-20 14:55:48 UTC (rev 250)
@@ -29,47 +29,48 @@
<%@taglib prefix="decorator" uri="http://www.opensymphony.com/sitemesh/decorator" %>
<%@taglib prefix="page" uri="http://www.opensymphony.com/sitemesh/page" %>
<%@taglib prefix="s" uri="/struts-tags" %>
+
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
xmlns:jsp="http://java.sun.com/JSP/Page"
xmlns:decorator="http://www.opensymphony.com/sitemesh/decorator">
- <head>
- <title>Bow : <decorator:title default="Bow" /></title>
- <decorator:head />
- <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
- <meta name="description" content="Bookmarks on the web" />
- <s:url var="temporaryXml" action="temporaryXml" />
- <s:url var="permanentXml" action="permanentXml" />
- <s:url var="favicon" value="/img/favicon.png" />
- <link rel="icon" type="image/png" href="${favicon}" />
- <s:if test="%{#session.BowSession.user != null}">
- <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">
- <div id="wrap">
- <div id="page">
- <%@include file="/jsp/inc/header.jsp" %>
- <div id="main">
- <%@include file="/jsp/inc/errorFrame.jsp" %>
- <decorator:body />
- </div>
+ <head>
+ <title>Bow : <decorator:title default="Bow" /></title>
+ <decorator:head />
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
+ <meta name="description" content="Bookmarks on the web" />
+ <s:url var="temporaryXml" action="temporaryXml" />
+ <s:url var="permanentXml" action="permanentXml" />
+ <s:url var="favicon" value="/img/favicon.png" />
+ <link rel="icon" type="image/png" href="${favicon}" />
<s:if test="%{#session.BowSession.user != null}">
- <jsp:include page="/jsp/inc/rightMenu.jsp" />
+ <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>
- </div>
- </div>
- <%@include file="/jsp/inc/footer.jsp" %>
- </body>
+ <s:url var="jqueryUiCSS" value="/css/jquery-ui-1.8.11.custom.bow.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">
+ <div id="wrap">
+ <div id="page">
+ <%@include file="/jsp/inc/header.jsp" %>
+ <div id="main">
+ <%@include file="/jsp/inc/errorFrame.jsp" %>
+ <decorator:body />
+ </div>
+ <s:if test="%{#session.BowSession.user != null}">
+ <jsp:include page="/jsp/inc/rightMenu.jsp" />
+ </s:if>
+ </div>
+ </div>
+ <%@include file="/jsp/inc/footer.jsp" %>
+ </body>
</html>
Added: trunk/bow-ui/src/main/webapp/css/images/ui-bg_flat_0_aaaaaa_40x100.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-bg_flat_0_aaaaaa_40x100.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-bg_flat_75_dbdbdb_40x100.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-bg_flat_75_dbdbdb_40x100.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_55_fbf9ee_1x400.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_55_fbf9ee_1x400.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_65_ffffff_1x400.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_65_ffffff_1x400.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_75_dadada_1x400.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_75_dadada_1x400.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_75_e6e6e6_1x400.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-bg_glass_75_e6e6e6_1x400.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-bg_highlight-soft_75_bf8a9c_1x100.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-bg_highlight-soft_75_bf8a9c_1x100.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-bg_inset-soft_95_fef1ec_1x100.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-icons_222222_256x240.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-icons_222222_256x240.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-icons_2e83ff_256x240.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-icons_2e83ff_256x240.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-icons_454545_256x240.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-icons_454545_256x240.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-icons_888888_256x240.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-icons_888888_256x240.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/images/ui-icons_cd0a0a_256x240.png
===================================================================
(Binary files differ)
Property changes on: trunk/bow-ui/src/main/webapp/css/images/ui-icons_cd0a0a_256x240.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: trunk/bow-ui/src/main/webapp/css/jquery-ui-1.8.11.custom.bow.css
===================================================================
--- trunk/bow-ui/src/main/webapp/css/jquery-ui-1.8.11.custom.bow.css (rev 0)
+++ trunk/bow-ui/src/main/webapp/css/jquery-ui-1.8.11.custom.bow.css 2011-04-20 14:55:48 UTC (rev 250)
@@ -0,0 +1,573 @@
+/*
+ * jQuery UI CSS Framework 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ */
+
+/* Layout helpers
+----------------------------------*/
+.ui-helper-hidden { display: none; }
+.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
+.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
+.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
+.ui-helper-clearfix { display: inline-block; }
+/* required comment for clearfix to work in Opera \*/
+* html .ui-helper-clearfix { height:1%; }
+.ui-helper-clearfix { display:block; }
+/* end clearfix */
+.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
+
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-disabled { cursor: default !important; }
+
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Overlays */
+.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
+
+
+/*
+ * jQuery UI CSS Framework 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Theming/API
+ *
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana,Arial,sans-serif&fwDefau…
+ */
+
+
+/* Component containers
+----------------------------------*/
+.ui-widget { font-family: Verdana,Arial,sans-serif; font-size: 1.1em; }
+.ui-widget .ui-widget { font-size: 1em; }
+.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif; font-size: 1em; }
+.ui-widget-content { border: 1px solid #aaaaaa; background: #dbdbdb url(images/ui-bg_flat_75_dbdbdb_40x100.png) 50% 50% repeat-x; color: #222222; }
+.ui-widget-content a { color: #222222; }
+.ui-widget-header { border: 1px solid #aaaaaa; background: #bf8a9c url(images/ui-bg_highlight-soft_75_bf8a9c_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header a { color: #222222; }
+
+/* Interaction states
+----------------------------------*/
+.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3; background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #555555; }
+.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555; text-decoration: none; }
+.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999; background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-hover a, .ui-state-hover a:hover { color: #212121; text-decoration: none; }
+.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa; background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; font-weight: normal; color: #212121; }
+.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121; text-decoration: none; }
+.ui-widget :active { outline: none; }
+
+/* Interaction Cues
+----------------------------------*/
+.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1; background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; color: #363636; }
+.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636; }
+.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a; background: #fef1ec url(images/ui-bg_inset-soft_95_fef1ec_1x100.png) 50% bottom repeat-x; color: #cd0a0a; }
+.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a; }
+.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a; }
+.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
+.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
+.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
+
+/* Icons
+----------------------------------*/
+
+/* states and images */
+.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png); }
+.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png); }
+.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
+.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png); }
+.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png); }
+
+/* positioning */
+.ui-icon-carat-1-n { background-position: 0 0; }
+.ui-icon-carat-1-ne { background-position: -16px 0; }
+.ui-icon-carat-1-e { background-position: -32px 0; }
+.ui-icon-carat-1-se { background-position: -48px 0; }
+.ui-icon-carat-1-s { background-position: -64px 0; }
+.ui-icon-carat-1-sw { background-position: -80px 0; }
+.ui-icon-carat-1-w { background-position: -96px 0; }
+.ui-icon-carat-1-nw { background-position: -112px 0; }
+.ui-icon-carat-2-n-s { background-position: -128px 0; }
+.ui-icon-carat-2-e-w { background-position: -144px 0; }
+.ui-icon-triangle-1-n { background-position: 0 -16px; }
+.ui-icon-triangle-1-ne { background-position: -16px -16px; }
+.ui-icon-triangle-1-e { background-position: -32px -16px; }
+.ui-icon-triangle-1-se { background-position: -48px -16px; }
+.ui-icon-triangle-1-s { background-position: -64px -16px; }
+.ui-icon-triangle-1-sw { background-position: -80px -16px; }
+.ui-icon-triangle-1-w { background-position: -96px -16px; }
+.ui-icon-triangle-1-nw { background-position: -112px -16px; }
+.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
+.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
+.ui-icon-arrow-1-n { background-position: 0 -32px; }
+.ui-icon-arrow-1-ne { background-position: -16px -32px; }
+.ui-icon-arrow-1-e { background-position: -32px -32px; }
+.ui-icon-arrow-1-se { background-position: -48px -32px; }
+.ui-icon-arrow-1-s { background-position: -64px -32px; }
+.ui-icon-arrow-1-sw { background-position: -80px -32px; }
+.ui-icon-arrow-1-w { background-position: -96px -32px; }
+.ui-icon-arrow-1-nw { background-position: -112px -32px; }
+.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
+.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
+.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
+.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
+.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
+.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
+.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
+.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
+.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
+.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
+.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
+.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
+.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
+.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
+.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
+.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
+.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
+.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
+.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
+.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
+.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
+.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
+.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
+.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
+.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
+.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
+.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
+.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
+.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
+.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
+.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
+.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
+.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
+.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
+.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
+.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
+.ui-icon-arrow-4 { background-position: 0 -80px; }
+.ui-icon-arrow-4-diag { background-position: -16px -80px; }
+.ui-icon-extlink { background-position: -32px -80px; }
+.ui-icon-newwin { background-position: -48px -80px; }
+.ui-icon-refresh { background-position: -64px -80px; }
+.ui-icon-shuffle { background-position: -80px -80px; }
+.ui-icon-transfer-e-w { background-position: -96px -80px; }
+.ui-icon-transferthick-e-w { background-position: -112px -80px; }
+.ui-icon-folder-collapsed { background-position: 0 -96px; }
+.ui-icon-folder-open { background-position: -16px -96px; }
+.ui-icon-document { background-position: -32px -96px; }
+.ui-icon-document-b { background-position: -48px -96px; }
+.ui-icon-note { background-position: -64px -96px; }
+.ui-icon-mail-closed { background-position: -80px -96px; }
+.ui-icon-mail-open { background-position: -96px -96px; }
+.ui-icon-suitcase { background-position: -112px -96px; }
+.ui-icon-comment { background-position: -128px -96px; }
+.ui-icon-person { background-position: -144px -96px; }
+.ui-icon-print { background-position: -160px -96px; }
+.ui-icon-trash { background-position: -176px -96px; }
+.ui-icon-locked { background-position: -192px -96px; }
+.ui-icon-unlocked { background-position: -208px -96px; }
+.ui-icon-bookmark { background-position: -224px -96px; }
+.ui-icon-tag { background-position: -240px -96px; }
+.ui-icon-home { background-position: 0 -112px; }
+.ui-icon-flag { background-position: -16px -112px; }
+.ui-icon-calendar { background-position: -32px -112px; }
+.ui-icon-cart { background-position: -48px -112px; }
+.ui-icon-pencil { background-position: -64px -112px; }
+.ui-icon-clock { background-position: -80px -112px; }
+.ui-icon-disk { background-position: -96px -112px; }
+.ui-icon-calculator { background-position: -112px -112px; }
+.ui-icon-zoomin { background-position: -128px -112px; }
+.ui-icon-zoomout { background-position: -144px -112px; }
+.ui-icon-search { background-position: -160px -112px; }
+.ui-icon-wrench { background-position: -176px -112px; }
+.ui-icon-gear { background-position: -192px -112px; }
+.ui-icon-heart { background-position: -208px -112px; }
+.ui-icon-star { background-position: -224px -112px; }
+.ui-icon-link { background-position: -240px -112px; }
+.ui-icon-cancel { background-position: 0 -128px; }
+.ui-icon-plus { background-position: -16px -128px; }
+.ui-icon-plusthick { background-position: -32px -128px; }
+.ui-icon-minus { background-position: -48px -128px; }
+.ui-icon-minusthick { background-position: -64px -128px; }
+.ui-icon-close { background-position: -80px -128px; }
+.ui-icon-closethick { background-position: -96px -128px; }
+.ui-icon-key { background-position: -112px -128px; }
+.ui-icon-lightbulb { background-position: -128px -128px; }
+.ui-icon-scissors { background-position: -144px -128px; }
+.ui-icon-clipboard { background-position: -160px -128px; }
+.ui-icon-copy { background-position: -176px -128px; }
+.ui-icon-contact { background-position: -192px -128px; }
+.ui-icon-image { background-position: -208px -128px; }
+.ui-icon-video { background-position: -224px -128px; }
+.ui-icon-script { background-position: -240px -128px; }
+.ui-icon-alert { background-position: 0 -144px; }
+.ui-icon-info { background-position: -16px -144px; }
+.ui-icon-notice { background-position: -32px -144px; }
+.ui-icon-help { background-position: -48px -144px; }
+.ui-icon-check { background-position: -64px -144px; }
+.ui-icon-bullet { background-position: -80px -144px; }
+.ui-icon-radio-off { background-position: -96px -144px; }
+.ui-icon-radio-on { background-position: -112px -144px; }
+.ui-icon-pin-w { background-position: -128px -144px; }
+.ui-icon-pin-s { background-position: -144px -144px; }
+.ui-icon-play { background-position: 0 -160px; }
+.ui-icon-pause { background-position: -16px -160px; }
+.ui-icon-seek-next { background-position: -32px -160px; }
+.ui-icon-seek-prev { background-position: -48px -160px; }
+.ui-icon-seek-end { background-position: -64px -160px; }
+.ui-icon-seek-start { background-position: -80px -160px; }
+/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
+.ui-icon-seek-first { background-position: -80px -160px; }
+.ui-icon-stop { background-position: -96px -160px; }
+.ui-icon-eject { background-position: -112px -160px; }
+.ui-icon-volume-off { background-position: -128px -160px; }
+.ui-icon-volume-on { background-position: -144px -160px; }
+.ui-icon-power { background-position: 0 -176px; }
+.ui-icon-signal-diag { background-position: -16px -176px; }
+.ui-icon-signal { background-position: -32px -176px; }
+.ui-icon-battery-0 { background-position: -48px -176px; }
+.ui-icon-battery-1 { background-position: -64px -176px; }
+.ui-icon-battery-2 { background-position: -80px -176px; }
+.ui-icon-battery-3 { background-position: -96px -176px; }
+.ui-icon-circle-plus { background-position: 0 -192px; }
+.ui-icon-circle-minus { background-position: -16px -192px; }
+.ui-icon-circle-close { background-position: -32px -192px; }
+.ui-icon-circle-triangle-e { background-position: -48px -192px; }
+.ui-icon-circle-triangle-s { background-position: -64px -192px; }
+.ui-icon-circle-triangle-w { background-position: -80px -192px; }
+.ui-icon-circle-triangle-n { background-position: -96px -192px; }
+.ui-icon-circle-arrow-e { background-position: -112px -192px; }
+.ui-icon-circle-arrow-s { background-position: -128px -192px; }
+.ui-icon-circle-arrow-w { background-position: -144px -192px; }
+.ui-icon-circle-arrow-n { background-position: -160px -192px; }
+.ui-icon-circle-zoomin { background-position: -176px -192px; }
+.ui-icon-circle-zoomout { background-position: -192px -192px; }
+.ui-icon-circle-check { background-position: -208px -192px; }
+.ui-icon-circlesmall-plus { background-position: 0 -208px; }
+.ui-icon-circlesmall-minus { background-position: -16px -208px; }
+.ui-icon-circlesmall-close { background-position: -32px -208px; }
+.ui-icon-squaresmall-plus { background-position: -48px -208px; }
+.ui-icon-squaresmall-minus { background-position: -64px -208px; }
+.ui-icon-squaresmall-close { background-position: -80px -208px; }
+.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
+.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
+.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
+.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
+.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
+.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
+
+
+/* Misc visuals
+----------------------------------*/
+
+/* Corner radius */
+.ui-corner-tl { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; }
+.ui-corner-tr { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bl { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-br { -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-top { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; }
+.ui-corner-bottom { -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-right { -moz-border-radius-topright: 4px; -webkit-border-top-right-radius: 4px; border-top-right-radius: 4px; -moz-border-radius-bottomright: 4px; -webkit-border-bottom-right-radius: 4px; border-bottom-right-radius: 4px; }
+.ui-corner-left { -moz-border-radius-topleft: 4px; -webkit-border-top-left-radius: 4px; border-top-left-radius: 4px; -moz-border-radius-bottomleft: 4px; -webkit-border-bottom-left-radius: 4px; border-bottom-left-radius: 4px; }
+.ui-corner-all { -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; }
+
+/* Overlays */
+.ui-widget-overlay { background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); }
+.ui-widget-shadow { margin: -8px 0 0 -8px; padding: 8px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .30;filter:Alpha(Opacity=30); -moz-border-radius: 8px; -webkit-border-radius: 8px; border-radius: 8px; }/*
+ * jQuery UI Resizable 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Resizable#theming
+ */
+.ui-resizable { position: relative;}
+.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;}
+.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
+.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
+.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
+.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
+.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
+.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
+.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
+.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
+.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
+ * jQuery UI Selectable 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Selectable#theming
+ */
+.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
+/*
+ * jQuery UI Accordion 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Accordion#theming
+ */
+/* IE/Win - Fix animation bug - #4615 */
+.ui-accordion { width: 100%; }
+.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
+.ui-accordion .ui-accordion-li-fix { display: inline; }
+.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
+.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
+.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
+.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
+.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
+.ui-accordion .ui-accordion-content-active { display: block; }
+/*
+ * jQuery UI Autocomplete 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Autocomplete#theming
+ */
+.ui-autocomplete { position: absolute; cursor: default; }
+
+/* workarounds */
+* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
+
+/*
+ * jQuery UI Menu 1.8.11
+ *
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Menu#theming
+ */
+.ui-menu {
+ list-style:none;
+ padding: 2px;
+ margin: 0;
+ display:block;
+ float: left;
+}
+.ui-menu .ui-menu {
+ margin-top: -3px;
+}
+.ui-menu .ui-menu-item {
+ margin:0;
+ padding: 0;
+ zoom: 1;
+ float: left;
+ clear: left;
+ width: 100%;
+}
+.ui-menu .ui-menu-item a {
+ text-decoration:none;
+ display:block;
+ padding:.2em .4em;
+ line-height:1.5;
+ zoom:1;
+}
+.ui-menu .ui-menu-item a.ui-state-hover,
+.ui-menu .ui-menu-item a.ui-state-active {
+ font-weight: normal;
+ margin: -1px;
+}
+/*
+ * jQuery UI Button 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button#theming
+ */
+.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
+.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
+button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
+.ui-button-icons-only { width: 3.4em; }
+button.ui-button-icons-only { width: 3.7em; }
+
+/*button text element */
+.ui-button .ui-button-text { display: block; line-height: 1.4; }
+.ui-button-text-only .ui-button-text { padding: .4em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
+.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* no icon support for input elements, provide padding by default */
+input.ui-button { padding: .4em 1em; }
+
+/*button icon element(s) */
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+
+/*button sets*/
+.ui-buttonset { margin-right: 7px; }
+.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
+
+/* workarounds */
+button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
+/*
+ * jQuery UI Dialog 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog#theming
+ */
+.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
+.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
+.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
+.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
+.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
+.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
+.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
+.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
+.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
+.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
+.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
+.ui-draggable .ui-dialog-titlebar { cursor: move; }
+/*
+ * jQuery UI Slider 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Slider#theming
+ */
+.ui-slider { position: relative; text-align: left; }
+.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
+.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
+
+.ui-slider-horizontal { height: .8em; }
+.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
+.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
+.ui-slider-horizontal .ui-slider-range-min { left: 0; }
+.ui-slider-horizontal .ui-slider-range-max { right: 0; }
+
+.ui-slider-vertical { width: .8em; height: 100px; }
+.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
+.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
+.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
+.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
+ * jQuery UI Tabs 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Tabs#theming
+ */
+.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
+.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
+.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
+.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
+.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
+.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
+.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
+.ui-tabs .ui-tabs-hide { display: none !important; }
+/*
+ * jQuery UI Datepicker 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Datepicker#theming
+ */
+.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
+.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
+.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
+.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
+.ui-datepicker .ui-datepicker-prev { left:2px; }
+.ui-datepicker .ui-datepicker-next { right:2px; }
+.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
+.ui-datepicker .ui-datepicker-next-hover { right:1px; }
+.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
+.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
+.ui-datepicker select.ui-datepicker-month,
+.ui-datepicker select.ui-datepicker-year { width: 49%;}
+.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
+.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
+.ui-datepicker td { border: 0; padding: 1px; }
+.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
+.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
+
+/* with multiple calendars */
+.ui-datepicker.ui-datepicker-multi { width:auto; }
+.ui-datepicker-multi .ui-datepicker-group { float:left; }
+.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
+.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
+.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
+.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
+.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
+.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
+.ui-datepicker-row-break { clear:both; width:100%; }
+
+/* RTL support */
+.ui-datepicker-rtl { direction: rtl; }
+.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group { float:right; }
+.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+
+/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
+.ui-datepicker-cover {
+ display: none; /*sorry for IE5*/
+ display/**/: block; /*sorry for IE5*/
+ position: absolute; /*must have*/
+ z-index: -1; /*must have*/
+ filter: mask(); /*must have*/
+ top: -4px; /*must have*/
+ left: -4px; /*must have*/
+ width: 200px; /*must have*/
+ height: 200px; /*must have*/
+}/*
+ * jQuery UI Progressbar 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Progressbar#theming
+ */
+.ui-progressbar { height:2em; text-align: left; }
+.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ 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-20 13:56:27 UTC (rev 249)
+++ trunk/bow-ui/src/main/webapp/jsp/home.jsp 2011-04-20 14:55:48 UTC (rev 250)
@@ -116,7 +116,7 @@
});
});
</script>
- <div id="setPublicAliasPopup" class="fond" title="Enter the public alias">
+ <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" />
1
0
r249 - in trunk/bow-ui/src/main: java/org/chorem/bow java/org/chorem/bow/action webapp/css webapp/jsp webapp/jsp/inc
by bpoussin@users.chorem.org April 20, 2011
by bpoussin@users.chorem.org April 20, 2011
April 20, 2011
Author: bpoussin
Date: 2011-04-20 15:56:27 +0200 (Wed, 20 Apr 2011)
New Revision: 249
Url: http://chorem.org/repositories/revision/bow/249
Log:
- centralisation du rendu des dates par BowUtils.formatDate
- ajout d'un fond aux popups javascript d'ajout d'alias public
Modified:
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/webapp/css/global.css
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/search.jsp
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-20 13:36:20 UTC (rev 248)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BowUtils.java 2011-04-20 13:56:27 UTC (rev 249)
@@ -23,52 +23,27 @@
*/
package org.chorem.bow;
-import org.apache.commons.lang.time.DateUtils;
+import java.util.Date;
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.DateFormatUtils;
public class BowUtils {
- public static String BOW_DATE_PATTERN = "dd/MM/yyyy HH:mm:ss";
-
+ final static public String BOW_DATE_SHORT_PATTERN = "yyyy/MM/dd";
+
private BowUtils() {
}
- /**
- * Convert bow formated date to date object
- *
- * @param dateAsString bow formated date
- * @return Date parsed
- * @throws ParseException if error occured on parsing date
- */
- static public Date parseDate(String dateAsString) throws ParseException {
- return DateUtils.parseDate(dateAsString, new String[]{BOW_DATE_PATTERN});
+ static public String formatDate(Date date) {
+ String result = DateFormatUtils.format(date, BOW_DATE_SHORT_PATTERN);
+ return result;
}
-
/**
- * Convert date to bow format
- *
- * @param date date to format
- * @return formated date
- * @throws ParseException if error occured on parsing date
- */
- static public String formatDate(Date date) throws ParseException {
- if (date == null) {
- return null;
- }
- SimpleDateFormat format = new SimpleDateFormat(BOW_DATE_PATTERN);
- return format.format(date);
- }
-
-
- /**
* Generates a random token
*
* @return the generated token
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-20 13:36:20 UTC (rev 248)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/AddUrlAction.java 2011-04-20 13:56:27 UTC (rev 249)
@@ -24,7 +24,6 @@
package org.chorem.bow.action;
import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.time.DateFormatUtils;
import org.chorem.bow.BookmarkUtils;
import org.chorem.bow.BowBookmark;
import org.chorem.bow.BowUser;
@@ -43,8 +42,6 @@
private static final long serialVersionUID = 3389170166034184139L;
- final static private String DATE_FORMAT = "yyyy/MM/dd";
-
protected String link;
protected String name;
protected String alias;
@@ -200,8 +197,8 @@
String description = oldBookmark.getDescription();
if (!StringUtils.isEmpty(bookmark.getDescription())) {
description += "\n";
- description += DateFormatUtils.format(
- bookmark.getCreationDate(), DATE_FORMAT) + ": ";
+ description += BowUtils.formatDate(
+ bookmark.getCreationDate()) + ": ";
description += bookmark.getDescription();
}
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-20 13:36:20 UTC (rev 248)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/AliasAction.java 2011-04-20 13:56:27 UTC (rev 249)
@@ -41,7 +41,9 @@
@Override
public String execute() throws Exception {
- log.debug("Redirect alias " + alias);
+ if (log.isDebugEnabled()) {
+ log.debug("Redirect alias " + alias);
+ }
String result = SUCCESS;
try {
if (!StringUtils.isEmpty(alias)) {
Modified: trunk/bow-ui/src/main/webapp/css/global.css
===================================================================
--- trunk/bow-ui/src/main/webapp/css/global.css 2011-04-20 13:36:20 UTC (rev 248)
+++ trunk/bow-ui/src/main/webapp/css/global.css 2011-04-20 13:56:27 UTC (rev 249)
@@ -140,4 +140,6 @@
-webkit-border-radius: 0.5em;
-moz-border-radius: 0.5em;
+
+ padding:10px;
}
\ 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-20 13:36:20 UTC (rev 248)
+++ trunk/bow-ui/src/main/webapp/jsp/home.jsp 2011-04-20 13:56:27 UTC (rev 249)
@@ -28,7 +28,6 @@
<%@page import="org.chorem.bow.BowBookmark" %>
<%@page import="org.chorem.bow.BowPreference" %>
<%@page import="java.util.List" %>
-<%@page import="java.text.SimpleDateFormat" %>
<%
BowSession bowSession = BowSession.getBowSession(session);
BookmarkActions bookmarkActions = (BookmarkActions) request.getAttribute("bookmarkActions");
@@ -52,13 +51,11 @@
<%
int nbBookmarks = preference.getBookmarks();
- SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
List<BowBookmark> bookmarkList = bookmarkActions.getBookmarks();
if (!bookmarkList.isEmpty()) {
int count = 0;
for (BowBookmark bookmark : bookmarkList) {
request.setAttribute("bookmark", bookmark);
- request.setAttribute("sdf", sdf);
%>
<s:include value="inc/bookmark.jsp" />
<%
@@ -83,7 +80,6 @@
int count = 0;
for (BowBookmark bookmark : lastBookmarks) {
request.setAttribute("bookmark", bookmark);
- request.setAttribute("sdf", sdf);
%>
<s:include value="inc/bookmark.jsp" />
<%
@@ -120,7 +116,7 @@
});
});
</script>
- <div id="setPublicAliasPopup" title="Enter the public alias">
+ <div id="setPublicAliasPopup" class="fond" 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" />
Modified: trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-20 13:36:20 UTC (rev 248)
+++ trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-20 13:56:27 UTC (rev 249)
@@ -24,6 +24,8 @@
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib prefix="s" uri="/struts-tags" %>
<%@page import="org.chorem.bow.BowBookmark" %>
+<%@page import="org.chorem.bow.BowUtils"%>
+
<div class="bookmark"
xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
xmlns:jsp="http://java.sun.com/JSP/Page">
@@ -51,10 +53,9 @@
<s:set var="aliasServlet" value="%{@org.chorem.bow.BowConfig@getInstance().getServletAliasUrl()}" />
<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())}" />
<div class="bookmarkhead">
- <p class="date">(<s:property value="%{date}" />)</p>
+ <p class="date"><%=BowUtils.formatDate(bookmark.getCreationDate())%></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>
Modified: trunk/bow-ui/src/main/webapp/jsp/search.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/search.jsp 2011-04-20 13:36:20 UTC (rev 248)
+++ trunk/bow-ui/src/main/webapp/jsp/search.jsp 2011-04-20 13:56:27 UTC (rev 249)
@@ -80,10 +80,8 @@
List<BowBookmark> bookmarkList = bookmarkActions.getBookmarks();
if (!bookmarkList.isEmpty()) {
- SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
for (BowBookmark bookmark : bookmarkList) {
request.setAttribute("bookmark", bookmark);
- request.setAttribute("sdf", sdf);
%>
<jsp:include page="inc/bookmark.jsp" flush="true">
<jsp:param name="searchLine" value="%{#searchLine}" />
1
0
Author: bpoussin
Date: 2011-04-20 15:36:20 +0200 (Wed, 20 Apr 2011)
New Revision: 248
Url: http://chorem.org/repositories/revision/bow/248
Log:
suppression des tabulations et reformatage
Modified:
trunk/bow-ui/src/main/webapp/jsp/search.jsp
Modified: trunk/bow-ui/src/main/webapp/jsp/search.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/search.jsp 2011-04-20 13:25:07 UTC (rev 247)
+++ trunk/bow-ui/src/main/webapp/jsp/search.jsp 2011-04-20 13:36:20 UTC (rev 248)
@@ -31,71 +31,71 @@
BookmarkActions bookmarkActions = (BookmarkActions) request.getAttribute("bookmarkActions");
if (bookmarkActions != null) {
- %>
+%>
- <html xmlns="http://www.w3.org/1999/xhtml"
- xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
- xmlns:jsp="http://java.sun.com/JSP/Page">
-
- <s:set var="searchLine" value="%{#request.bookmarkActions.getSearchLine()}" />
- <s:set var="fullText" value="%{#request.bookmarkActions.getFullTextLine()}" />
-
- <head>
- <title><s:text name="bow.search.title" /></title>
- <s:url var="css" value="/css/bookmark.css" />
- <link href="${css}" rel="stylesheet" type="text/css" />
- <s:head />
- </head>
- <body>
- <div class="menu clearfix">
- <h2><s:text name="bow.search.title" /></h2>
- <s:form action="order">
- <p>
- <label for="type"><s:text name="bow.search.orderby" /></label>
- <select id="type" name="type">
- <option value="ascName"><s:text name="bow.search.ascname" /></option>
- <option value="descName"><s:text name="bow.search.descname" /></option>
- <option value="ascClick"><s:text name="bow.search.ascclick" /></option>
- <option value="descClick"><s:text name="bow.search.descclick" /></option>
- <option value="ascDate"><s:text name="bow.search.ascdate" /></option>
- <option value="descDate"><s:text name="bow.search.descdate" /></option>
- </select>
- <s:submit key="bow.search.submit" name="submit" />
- <s:set name="bookmarksToDelete" value="%{#request.bookmarkActions.getBookmarks().size()}" />
- <s:if test="%{#bookmarksToDelete > 0}">
- <s:url var="deleteSearchResults" action="deleteSearchResults" escapeAmp="false">
- <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
- <s:param name="fullTextLine"><s:property value="%{#fullText}" /></s:param>
- </s:url>
- <s:a id="deleteSearchResultsButton" href="" onclick="deleteConfirmation('%{deleteSearchResults}', %{#bookmarksToDelete}); return(false);"></s:a>
- </s:if>
- <s:hidden name="searchLine" value="%{#searchLine}" />
- <s:hidden name="fullTextLine" value="%{#fullText}" />
- </p>
- </s:form>
- </div>
- <div class="content">
- <%
- List<BowBookmark> bookmarkList = bookmarkActions.getBookmarks();
-
- if (!bookmarkList.isEmpty()) {
- SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
- for (BowBookmark bookmark : bookmarkList) {
- request.setAttribute("bookmark", bookmark);
- request.setAttribute("sdf", sdf);
- %>
- <jsp:include page="inc/bookmark.jsp" flush="true">
- <jsp:param name="searchLine" value="%{#searchLine}" />
- <jsp:param name="fullTextLine" value="%{#fullText}" />
- </jsp:include>
- <%
- }
- }
- else { %>
- <p class="nobookmarks"><s:text name="bow.bookmarks.noBookmarks" /></p>
- <% } %>
- </div>
- </body>
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+ xmlns:jsp="http://java.sun.com/JSP/Page">
+
+ <s:set var="searchLine" value="%{#request.bookmarkActions.getSearchLine()}" />
+ <s:set var="fullText" value="%{#request.bookmarkActions.getFullTextLine()}" />
+
+ <head>
+ <title><s:text name="bow.search.title" /></title>
+ <s:url var="css" value="/css/bookmark.css" />
+ <link href="${css}" rel="stylesheet" type="text/css" />
+ <s:head />
+ </head>
+ <body>
+ <div class="menu clearfix">
+ <h2><s:text name="bow.search.title" /></h2>
+ <s:form action="order">
+ <p>
+ <label for="type"><s:text name="bow.search.orderby" /></label>
+ <select id="type" name="type">
+ <option value="ascName"><s:text name="bow.search.ascname" /></option>
+ <option value="descName"><s:text name="bow.search.descname" /></option>
+ <option value="ascClick"><s:text name="bow.search.ascclick" /></option>
+ <option value="descClick"><s:text name="bow.search.descclick" /></option>
+ <option value="ascDate"><s:text name="bow.search.ascdate" /></option>
+ <option value="descDate"><s:text name="bow.search.descdate" /></option>
+ </select>
+ <s:submit key="bow.search.submit" name="submit" />
+ <s:set name="bookmarksToDelete" value="%{#request.bookmarkActions.getBookmarks().size()}" />
+ <s:if test="%{#bookmarksToDelete > 0}">
+ <s:url var="deleteSearchResults" action="deleteSearchResults" escapeAmp="false">
+ <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
+ <s:param name="fullTextLine"><s:property value="%{#fullText}" /></s:param>
+ </s:url>
+ <s:a id="deleteSearchResultsButton" href="" onclick="deleteConfirmation('%{deleteSearchResults}', %{#bookmarksToDelete}); return(false);"></s:a>
+ </s:if>
+ <s:hidden name="searchLine" value="%{#searchLine}" />
+ <s:hidden name="fullTextLine" value="%{#fullText}" />
+ </p>
+ </s:form>
+ </div>
+ <div class="content">
+ <%
+ List<BowBookmark> bookmarkList = bookmarkActions.getBookmarks();
+
+ if (!bookmarkList.isEmpty()) {
+ SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+ for (BowBookmark bookmark : bookmarkList) {
+ request.setAttribute("bookmark", bookmark);
+ request.setAttribute("sdf", sdf);
+ %>
+ <jsp:include page="inc/bookmark.jsp" flush="true">
+ <jsp:param name="searchLine" value="%{#searchLine}" />
+ <jsp:param name="fullTextLine" value="%{#fullText}" />
+ </jsp:include>
+ <%
+ }
+ } else { %>
+ <p class="nobookmarks"><s:text name="bow.bookmarks.noBookmarks" /></p>
+ <%
+ } %>
+ </div>
+ </body>
</html>
<% } %>
1
0
Author: bpoussin
Date: 2011-04-20 15:25:07 +0200 (Wed, 20 Apr 2011)
New Revision: 247
Url: http://chorem.org/repositories/revision/bow/247
Log:
suppression des tabulations et reformatage
Modified:
trunk/bow-ui/src/main/webapp/jsp/home.jsp
Modified: trunk/bow-ui/src/main/webapp/jsp/home.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/home.jsp 2011-04-20 13:15:52 UTC (rev 246)
+++ trunk/bow-ui/src/main/webapp/jsp/home.jsp 2011-04-20 13:25:07 UTC (rev 247)
@@ -35,99 +35,97 @@
BowPreference preference = bowSession.getPreference();
if (bookmarkActions != null) {
- %>
- <html xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
- xmlns:jsp="http://java.sun.com/JSP/Page">
- <head>
- <title><s:text name="bow.home.title" /></title>
- <s:url var="css" value="/css/bookmark.css" />
- <link href="${css}" rel="stylesheet" type="text/css" />
- <s:head />
- </head>
- <body>
- <div class="menu clearfix">
- <h2><s:text name="bow.home.mostUsedBookmarks" /></h2>
- </div>
- <div class="content">
- <%
- int nbBookmarks = preference.getBookmarks();
-
- SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
- List<BowBookmark> bookmarkList = bookmarkActions.getBookmarks();
- if (!bookmarkList.isEmpty()) {
- int count = 0;
- for (BowBookmark bookmark : bookmarkList) {
- request.setAttribute("bookmark", bookmark);
- request.setAttribute("sdf", sdf);
- %>
- <s:include value="inc/bookmark.jsp" />
- <%
- ++count;
- if (count >= nbBookmarks) {
- break;
- }
- }
- }
- else { %>
- <p class="nobookmarks"><s:text name="bow.bookmarks.noBookmarks" /></p>
- <% } %>
- </div>
-
- <div class="menu clearfix">
- <h2><s:text name="bow.home.latestBookmarks" /></h2>
- </div>
- <div class="content">
- <%
- List<BowBookmark> lastBookmarks = bookmarkActions.getLastBookmarks();
-
- if (!lastBookmarks.isEmpty()) {
- int count = 0;
- for (BowBookmark bookmark : lastBookmarks) {
- request.setAttribute("bookmark", bookmark);
- request.setAttribute("sdf", sdf);
- %>
- <s:include value="inc/bookmark.jsp" />
- <%
- ++count;
- if (count >= nbBookmarks) {
- break;
- }
- }
- }
- else { %>
- <p class="nobookmarks"><s:text name="bow.bookmarks.noBookmarks" /></p>
- <% } %>
- </div>
+%>
+<html xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
+ xmlns:jsp="http://java.sun.com/JSP/Page">
+ <head>
+ <title><s:text name="bow.home.title" /></title>
+ <s:url var="css" value="/css/bookmark.css" />
+ <link href="${css}" rel="stylesheet" type="text/css" />
+ <s:head />
+ </head>
+ <body>
+ <div class="menu clearfix">
+ <h2><s:text name="bow.home.mostUsedBookmarks" /></h2>
+ </div>
+ <div class="content">
+ <%
+ int nbBookmarks = preference.getBookmarks();
+
+ SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
+ List<BowBookmark> bookmarkList = bookmarkActions.getBookmarks();
+ if (!bookmarkList.isEmpty()) {
+ int count = 0;
+ for (BowBookmark bookmark : bookmarkList) {
+ request.setAttribute("bookmark", bookmark);
+ request.setAttribute("sdf", sdf);
+ %>
+ <s:include value="inc/bookmark.jsp" />
+ <%
+ ++count;
+ if (count >= nbBookmarks) {
+ break;
+ }
+ }
+ } else { %>
+ <p class="nobookmarks"><s:text name="bow.bookmarks.noBookmarks" /></p>
+ <% } %>
+ </div>
+
+ <div class="menu clearfix">
+ <h2><s:text name="bow.home.latestBookmarks" /></h2>
+ </div>
+ <div class="content">
+ <%
+ List<BowBookmark> lastBookmarks = bookmarkActions.getLastBookmarks();
- <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" );
- }
+ if (!lastBookmarks.isEmpty()) {
+ int count = 0;
+ for (BowBookmark bookmark : lastBookmarks) {
+ request.setAttribute("bookmark", bookmark);
+ request.setAttribute("sdf", sdf);
+ %>
+ <s:include value="inc/bookmark.jsp" />
+ <%
+ ++count;
+ if (count >= nbBookmarks) {
+ break;
+ }
+ }
+ } else { %>
+ <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" );
},
- close: function() {
- //allFields.val( "" ).removeClass( "ui-state-error" );
+ 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>
+ });
+ </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>
<% } %>
1
0
April 20, 2011
Author: bpoussin
Date: 2011-04-20 15:15:52 +0200 (Wed, 20 Apr 2011)
New Revision: 246
Url: http://chorem.org/repositories/revision/bow/246
Log:
suppression des tabulations
Modified:
trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp
Modified: trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-19 17:51:16 UTC (rev 245)
+++ trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-20 13:15:52 UTC (rev 246)
@@ -58,10 +58,13 @@
<s:a cssClass="alias" href="%{#aliasServlet + #wikittyId}.action" title="%{#bookmarkLink}" onclick="window.open(this.href); return false;">
a:<s:property value="%{#privateAlias}" />
</s:a>
-<!-- <s:a cssClass="alias" href="%{#aliasServlet + #wikittyId}.action" title="%{#bookmarkLink}" onclick="window.open(this.href); return false;">
+<%--
+ // Pour l'instant on affiche pas l'alias automatique, car il est trop long
+ // et on peut recuperer son url en allant sur l'alias privé
+ <s:a cssClass="alias" href="%{#aliasServlet + #wikittyId}.action" title="%{#bookmarkLink}" onclick="window.open(this.href); return false;">
<s:property value="%{#wikittyId}" />
</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}" />
@@ -90,20 +93,20 @@
</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>
- <s:param name="fullTextLine"><s:property value="%{#fullTextLine}" /></s:param>
+ <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
+ <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
+ <s:param name="fullTextLine"><s:property value="%{#fullTextLine}" /></s:param>
</s:url>
<s:url var="editBookmark" action="modifyBookmark" escapeAmp="true">
- <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
- <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
- <s:param name="fullTextLine"><s:property value="%{#fullTextLine}" /></s:param>
+ <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
+ <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
+ <s:param name="fullTextLine"><s:property value="%{#fullTextLine}" /></s:param>
</s:url>
<s:a cssClass="edit" href="%{editBookmark}" onclick="return modify('%{#bookmarkDescription}', '%{#bookmarkAlias}', '%{@org.chorem.bow.BookmarkUtils@getBookmarkTagsString(#request.bookmark)}', '%{#bookmarkLink}', '%{editBookmarkModify}', '%{#wikittyId}');"></s:a>
<s:url var="removeBookmark" action="removeBookmark" escapeAmp="true">
- <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
- <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
- <s:param name="fullTextLine"><s:property value="%{#fullTextLine}" /></s:param>
+ <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
+ <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
+ <s:param name="fullTextLine"><s:property value="%{#fullTextLine}" /></s:param>
</s:url>
<s:a cssClass="supprim" href="%{removeBookmark}"></s:a>
</div>
@@ -113,37 +116,37 @@
<div class="description">
<h3><s:text name="bow.bookmark.description" /> :</h3>
<p>
- <s:url var="redirectTo" action="redirectToUrl">
- <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
- </s:url>
- <s:a title="%{#bookmarkLink}" href="%{redirectTo}"
- onclick="window.open(this.href); return false;">
- <%=bookmarkDescription%>
- </s:a>
+ <s:url var="redirectTo" action="redirectToUrl">
+ <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
+ </s:url>
+ <s:a title="%{#bookmarkLink}" href="%{redirectTo}"
+ onclick="window.open(this.href); return false;">
+ <%=bookmarkDescription%>
+ </s:a>
</p>
<p class="tags">
<strong><s:text name="bow.bookmark.tags" /> :</strong>
<s:iterator value="#request.bookmark.labels">
- <s:url var="deleteTag" action="deleteTag">
- <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
- <s:param name="deleteTag"><s:property /></s:param>
- <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
- <s:param name="fullTextLine"><s:property value="%{#fullTextLine}" /></s:param>
- </s:url>
- <s:if test="%{!(formBookmarkId == null || !formBookmarkId.equals(wikittyId))}">
- <s:a cssStyle="text-decoration:none;" href="%{deleteTag}">
- <img style="border:none;" src="img/delete.png" alt="Delete tag" title="Delete" />
- </s:a>
- </s:if>
- <s:else>
- <s:a name="%{#wikittyId}" cssStyle="display:none; text-decoration:none;" href="%{#deleteTag}">
- <img style="border:none;" src="img/delete.png" alt="Delete tag" title="Delete" />
- </s:a>
- </s:else>
- <s:url var="search" action="search">
- <s:param name="searchLine"><s:property /></s:param>
- </s:url>
- <s:a href="%{search}" cssStyle="text-decoration:none"><s:property /></s:a>
+ <s:url var="deleteTag" action="deleteTag">
+ <s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
+ <s:param name="deleteTag"><s:property /></s:param>
+ <s:param name="searchLine"><s:property value="%{#searchLine}" /></s:param>
+ <s:param name="fullTextLine"><s:property value="%{#fullTextLine}" /></s:param>
+ </s:url>
+ <s:if test="%{!(formBookmarkId == null || !formBookmarkId.equals(wikittyId))}">
+ <s:a cssStyle="text-decoration:none;" href="%{deleteTag}">
+ <img style="border:none;" src="img/delete.png" alt="Delete tag" title="Delete" />
+ </s:a>
+ </s:if>
+ <s:else>
+ <s:a name="%{#wikittyId}" cssStyle="display:none; text-decoration:none;" href="%{#deleteTag}">
+ <img style="border:none;" src="img/delete.png" alt="Delete tag" title="Delete" />
+ </s:a>
+ </s:else>
+ <s:url var="search" action="search">
+ <s:param name="searchLine"><s:property /></s:param>
+ </s:url>
+ <s:a href="%{search}" cssStyle="text-decoration:none"><s:property /></s:a>
</s:iterator>
</p>
</div>
1
0
April 19, 2011
Author: bpoussin
Date: 2011-04-19 19:51:16 +0200 (Tue, 19 Apr 2011)
New Revision: 245
Url: http://chorem.org/repositories/revision/bow/245
Log:
reorganisation du menu de droite en deplacant des choses dans preferences
(un peu de style a refaire)
Modified:
trunk/bow-ui/src/main/webapp/css/bookmark.css
trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp
trunk/bow-ui/src/main/webapp/jsp/preferences.jsp
Modified: trunk/bow-ui/src/main/webapp/css/bookmark.css
===================================================================
--- trunk/bow-ui/src/main/webapp/css/bookmark.css 2011-04-19 17:34:39 UTC (rev 244)
+++ trunk/bow-ui/src/main/webapp/css/bookmark.css 2011-04-19 17:51:16 UTC (rev 245)
@@ -370,12 +370,12 @@
.formFrame{
min-width:400px;
- min-height: 315px;
+/* min-height: 315px; */
position:relative;
margin-top:20px;
margin-bottom:20px;
margin-right:100px;
- margin-left:100px;
+ margin-left:40px;
padding-top:10px;
padding-bottom:10px;
padding-left:40px;
Modified: trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp 2011-04-19 17:34:39 UTC (rev 244)
+++ trunk/bow-ui/src/main/webapp/jsp/inc/rightMenu.jsp 2011-04-19 17:51:16 UTC (rev 245)
@@ -34,9 +34,9 @@
<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">
<s:form action="logout">
- <div class="input">
- <s:submit key="bow.rightMenu.logout" name="submit" />
- </div>
+ <div class="input">
+ <s:submit key="bow.rightMenu.logout" name="submit" />
+ </div>
</s:form>
<a href="http://maven-site.chorem.org/bow/" class="help" onclick="window.open(this.href); return false;"><s:text name="bow.rightMenu.help" /></a>
</div>
@@ -47,27 +47,30 @@
<div id="colonneD">
<ul class="droite">
<s:if test="#session.BowSession.isAdmin()">
- <li><s:a action="admin"><s:text name="bow.rightMenu.admin" /></s:a></li>
- </s:if>
+ <li><s:a action="admin"><s:text name="bow.rightMenu.admin" /></s:a></li>
+ </s:if>
<li><s:a action="preferences"><s:text name="bow.preferences.title" /></s:a></li>
- <s:set var="permanentToken" value="#session.BowSession.getPermanentToken()" />
- <s:set var="temporaryToken" value="#session.BowSession.getTemporaryToken()" />
- <li><a title="%{getText('bow.rightMenu.bookmark.temporaryLinkDescription')}" href="javascript:var%20url=location.href;var%20nameAndTags=prompt('Entrez%20le%20nom%20du%20lien%20et%20la%20liste%20des%20tags%20sous%20la%20forme:%20name|tag1%20tag2%20tag3',%20document.title+'|');if%20(nameAndTags!=(document.title+'|')){var%20link='<%=bowUrl%>addUrl.action?token=${temporaryToken}&url='+encodeURIComponent(url)+'&nameAndTags='+encodeURIComponent(nameAndTags);var%20script=document.createElement('script');script.src=link;script.type='text/javascript';document.body.appendChild(script);}void(0);"><s:text name="bow.rightMenu.bookmark.temporaryLink" /></a></li>
- <li><a title="%{getText('bow.rightMenu.bookmark.permanentLinkDescription')}" href="javascript:var%20url=location.href;var%20nameAndTags=prompt('Entrez%20le%20nom%20du%20lien%20et%20la%20liste%20des%20tags%20sous%20la%20forme:%20name|tag1%20tag2%20tag3',%20document.title+'|');if%20(nameAndTags!=(document.title+'|')){var%20link='<%=bowUrl%>addUrl.action?token=${permanentToken}&url='+encodeURIComponent(url)+'&nameAndTags='+encodeURIComponent(nameAndTags);var%20script=document.createElement('script');script.src=link;script.type='text/javascript';document.body.appendChild(script);}void(0);"><s:text name="bow.rightMenu.bookmark.permanentLink" /></a></li>
</ul>
- <div id="extensions">
- <h2><s:text name="bow.rightMenu.extensions" /></h2>
- <ul class="droite">
- <li><a href="extensions/bow4chromium.crx"><img src="img/chromium.png" alt="Chromium" class="extensionIcon" />
- <s:text name="bow.rightMenu.chromiumExtension" /></a></li>
- <li><strong><s:text name="bow.rightMenu.token.permanent" /> :</strong><br /><s:property value="%{#session.BowSession.getPermanentToken()}" /></li>
- <li><strong><s:text name="bow.rightMenu.token.temporary" /> :</strong><br /><s:property value="%{#session.BowSession.getTemporaryToken()}" /></li>
- </ul>
+ <div class="recherche">
+ <s:form action="search">
+ <div class="input">
+ <s:textfield key="bow.rightMenu.search" name="searchLine" labelSeparator="" />
+ <s:submit key="bow.rightMenu.find.submit" name="submit" />
+ </div>
+ </s:form>
</div>
+ <div class="recherche">
+ <s:form action="fullText">
+ <div class="input">
+ <s:textfield key="bow.rightMenu.fullTextSearch" name="fullTextLine" labelSeparator="" />
+ <s:submit key="bow.rightMenu.find.submit" name="submit" />
+ </div>
+ </s:form>
+ </div>
<div id="add" class="clearfix">
<h2><s:text name="bow.rightMenu.bookmark.addModify" /></h2>
<s:form id="bookmarkForm" action="%{#request.formAction}">
- <p>
+ <p>
<s:textfield key="bow.rightMenu.bookmark.link" name="link" value="%{#request.link}" labelSeparator="" /><br />
<s:textfield key="bow.rightMenu.bookmark.alias" name="alias" value="%{#request.alias}" labelSeparator="" /><br />
<s:textfield key="bow.rightMenu.bookmark.name" name="name" value="%{#request.name}" labelSeparator="" /><br />
@@ -88,24 +91,8 @@
<jsp:include page="tagsCloud.jsp" flush="true" />
</s:else>
<!--/div-->
- <div class="recherche">
- <s:form action="search">
- <div class="input">
- <s:textfield key="bow.rightMenu.search" name="searchLine" labelSeparator="" />
- <s:submit key="bow.rightMenu.find.submit" name="submit" />
- </div>
- </s:form>
- </div>
- <div class="recherche">
- <s:form action="fullText">
- <div class="input">
- <s:textfield key="bow.rightMenu.fullTextSearch" name="fullTextLine" labelSeparator="" />
- <s:submit key="bow.rightMenu.find.submit" name="submit" />
- </div>
- </s:form>
- </div>
<div class="colonnebas">
- <img src="img/piedmenu.jpg" width="401" height="77" alt="Pied de menu" />
+ <img src="img/piedmenu.jpg" width="401" height="77" alt="Pied de menu" />
</div>
</div>
</div>
Modified: trunk/bow-ui/src/main/webapp/jsp/preferences.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/preferences.jsp 2011-04-19 17:34:39 UTC (rev 244)
+++ trunk/bow-ui/src/main/webapp/jsp/preferences.jsp 2011-04-19 17:51:16 UTC (rev 245)
@@ -1,3 +1,4 @@
+<%@page import="org.chorem.bow.BowConfig"%>
<%@page import="org.nuiton.wikitty.search.FacetTopic"%>
<%@page import="org.chorem.bow.action.PreferencesAction"%>
<!--
@@ -28,6 +29,7 @@
<%
PreferencesAction action = PreferencesAction.getAction();
+String bowUrl = BowConfig.getInstance().getBowUrl();
%>
<html xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
@@ -44,6 +46,45 @@
<h2><s:text name="bow.preferences.title"/></h2>
</div>
<s:actionerror/>
+
+ <div class="formFrame fond">
+ <s:set var="permanentToken" value="#session.BowSession.getPermanentToken()" />
+ <s:set var="temporaryToken" value="#session.BowSession.getTemporaryToken()" />
+ <ul>
+ <li>
+ <a title="%{getText('bow.rightMenu.bookmark.temporaryLinkDescription')}"
+ href="javascript:var%20url=location.href;var%20nameAndTags=prompt('Entrez%20le%20nom%20du%20lien%20et%20la%20liste%20des%20tags%20sous%20la%20forme:%20name|tag1%20tag2%20tag3',%20document.title+'|');if%20(nameAndTags!=(document.title+'|')){var%20link='<%=bowUrl%>addUrl.action?token=${temporaryToken}&url='+encodeURIComponent(url)+'&nameAndTags='+encodeURIComponent(nameAndTags);var%20script=document.createElement('script');script.src=link;script.type='text/javascript';document.body.appendChild(script);}void(0);">
+ <s:text name="bow.rightMenu.bookmark.temporaryLink" />
+ </a>
+ </li>
+ <li>
+ <a title="%{getText('bow.rightMenu.bookmark.permanentLinkDescription')}"
+ href="javascript:var%20url=location.href;var%20nameAndTags=prompt('Entrez%20le%20nom%20du%20lien%20et%20la%20liste%20des%20tags%20sous%20la%20forme:%20name|tag1%20tag2%20tag3',%20document.title+'|');if%20(nameAndTags!=(document.title+'|')){var%20link='<%=bowUrl%>addUrl.action?token=${permanentToken}&url='+encodeURIComponent(url)+'&nameAndTags='+encodeURIComponent(nameAndTags);var%20script=document.createElement('script');script.src=link;script.type='text/javascript';document.body.appendChild(script);}void(0);">
+ <s:text name="bow.rightMenu.bookmark.permanentLink" />
+ </a>
+ </li>
+ <li>
+ <a href="extensions/bow4chromium.crx">
+ <img src="img/chromium.png" alt="Chromium" class="extensionIcon" />
+ <s:text name="bow.rightMenu.chromiumExtension" />
+ </a>
+ </li>
+ <li>
+ <strong><s:text name="bow.rightMenu.token.permanent"/> :</strong>
+ <s:property value="%{#permanentToken}"/>
+ </li>
+ <li>
+ <strong><s:text name="bow.rightMenu.token.temporary"/> :</strong>
+ <s:property value="%{#temporaryToken}"/>
+ </li>
+ </ul>
+
+ <s:url var="regenPermToken" action="regenPermToken"/>
+ <s:a href="%{regenPermToken}" id="regenPermToken">
+ <s:text name="bow.preferences.regenPermToken"/>
+ </s:a>
+ </div>
+
<s:form action="preferences">
<div class="formFrame fond">
<h3><s:text name="bow.preferences.userInfo"/></h3>
@@ -59,26 +100,6 @@
name="confirmNewPassword" labelposition="top"/><br/>
<s:submit key="bow.preferences.submit" name="submit"/><br/>
</p>
-
- <br/>
- <br/>
- <br/>
- <br/>
- <ul>
- <li>
- <strong><s:text name="bow.rightMenu.token.permanent"/> :</strong>
- <s:property value="%{#session.BowSession.getPermanentToken()}"/>
- </li>
- <li>
- <strong><s:text name="bow.rightMenu.token.temporary"/> :</strong>
- <s:property value="%{#session.BowSession.getTemporaryToken()}"/>
- </li>
- </ul>
-
- <s:url var="regenPermToken" action="regenPermToken"/>
- <s:a href="%{regenPermToken}" id="regenPermToken">
- <s:text name="bow.preferences.regenPermToken"/>
- </s:a>
</div>
<div class="formFrame fond">
<h3><s:text name="bow.preferences.siteLook"/></h3>
1
0
r244 - in trunk: . bow-ui bow-ui/src/main/java/org/chorem/bow/action bow-ui/src/main/resources bow-ui/src/main/resources/i18n bow-ui/src/main/webapp/css bow-ui/src/main/webapp/jsp
by bpoussin@users.chorem.org April 19, 2011
by bpoussin@users.chorem.org April 19, 2011
April 19, 2011
Author: bpoussin
Date: 2011-04-19 19:34:39 +0200 (Tue, 19 Apr 2011)
New Revision: 244
Url: http://chorem.org/repositories/revision/bow/244
Log:
Evolution #217: Administrate all tags
- replace all tab with space in css
- use css to add background in preference and login page (before image is used)
- use Wikitty 3.1 snapshot with new indexation multivalued field and without -impl module suffix
Modified:
trunk/bow-ui/pom.xml
trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java
trunk/bow-ui/src/main/java/org/chorem/bow/action/PreferencesAction.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.xml
trunk/bow-ui/src/main/webapp/css/bookmark.css
trunk/bow-ui/src/main/webapp/css/connexion.css
trunk/bow-ui/src/main/webapp/css/global.css
trunk/bow-ui/src/main/webapp/jsp/admin.jsp
trunk/bow-ui/src/main/webapp/jsp/forgotPassword.jsp
trunk/bow-ui/src/main/webapp/jsp/login.jsp
trunk/bow-ui/src/main/webapp/jsp/preferences.jsp
trunk/bow-ui/src/main/webapp/jsp/register.jsp
trunk/pom.xml
Modified: trunk/bow-ui/pom.xml
===================================================================
--- trunk/bow-ui/pom.xml 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/pom.xml 2011-04-19 17:34:39 UTC (rev 244)
@@ -110,13 +110,13 @@
<dependency>
<groupId>org.nuiton.wikitty</groupId>
- <artifactId>wikitty-jdbc-impl</artifactId>
+ <artifactId>wikitty-jdbc</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.nuiton.wikitty</groupId>
- <artifactId>wikitty-solr-impl</artifactId>
+ <artifactId>wikitty-solr</artifactId>
<scope>runtime</scope>
</dependency>
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/BowBaseAction.java 2011-04-19 17:34:39 UTC (rev 244)
@@ -46,6 +46,8 @@
protected static final Log log = LogFactory.getLog(BowBaseAction.class);
+ final static protected String CONTEXT_ACTION_KEY = "action";
+
public static final String UNTRANSLATED_MARKER = "???";
protected Map<String, Object> session;
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/action/PreferencesAction.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/PreferencesAction.java 2011-04-19 17:34:39 UTC (rev 244)
@@ -23,17 +23,33 @@
*/
package org.chorem.bow.action;
-import java.util.Date;
+import org.chorem.bow.BookmarkUtils;
+import org.chorem.bow.BowBookmark;
+import org.chorem.bow.BowInit;
+import org.chorem.bow.BowPreference;
+import org.chorem.bow.BowProxy;
+import org.chorem.bow.BowUser;
+import com.opensymphony.xwork2.ActionContext;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Set;
+import java.util.TreeSet;
import javax.servlet.http.HttpServletRequest;
+import org.apache.commons.lang.StringUtils;
import org.apache.struts2.interceptor.ServletRequestAware;
-import org.chorem.bow.*;
import org.nuiton.util.StringUtil;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.entities.Wikitty;
+import org.nuiton.wikitty.entities.WikittyLabel;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.FacetTopic;
+import org.nuiton.wikitty.search.FacetTopicNameComparator;
+import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Search;
import static org.nuiton.i18n.I18n.n_;
@@ -45,6 +61,10 @@
*/
public class PreferencesAction extends BowBaseAction implements ServletRequestAware {
private static final long serialVersionUID = -58341106356599721L;
+
+ static public PreferencesAction getAction() {
+ return (PreferencesAction)ActionContext.getContext().get(CONTEXT_ACTION_KEY);
+ }
protected String colors;
protected String tagsNb;
protected String bookmarksHomePage;
@@ -58,7 +78,36 @@
protected Map<String, Integer> bookmarksImportDate;
protected HttpServletRequest request;
+ protected Set<FacetTopic> labels;
+ protected String[] selectedLabels;
+ protected String rename;
+ protected String delete;
+ protected String newLabel;
+
+ public String getNewLabel() {
+ return newLabel;
+ }
+
+ public void setNewLabel(String newLabel) {
+ this.newLabel = newLabel;
+ }
+ public void setRename(String rename) {
+ this.rename = rename;
+ }
+
+ public String getRename() {
+ return rename;
+ }
+
+ public void setDelete(String delete) {
+ this.delete = delete;
+ }
+
+ public String getDelete() {
+ return delete;
+ }
+
/**
* @return the colors
*/
@@ -213,6 +262,18 @@
this.bookmarksImportDate = bookmarksImportDate;
}
+ public Set<FacetTopic> getLabels() {
+ return labels;
+ }
+
+ public String[] getSelectedLabels() {
+ return selectedLabels;
+ }
+
+ public void setSelectedLabels(String[] selectedLabels) {
+ this.selectedLabels = selectedLabels;
+ }
+
@Override
public void setServletRequest(HttpServletRequest request) {
this.request = request;
@@ -253,6 +314,79 @@
}
/**
+ * Charge dans la variable labels tous les labels de l'utilisateur
+ * @param proxy
+ */
+ protected void loadLabels(WikittyProxy proxy) {
+ BowUser user = getBowSession().getUser();
+ String userId = user.getWikittyId();
+
+ Criteria c = Search.query()
+ .exteq(BowBookmark.EXT_WIKITTYLABEL)
+ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, userId)
+ .criteria().setEndIndex(0)
+ .addFacetField(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
+ PagedResult<Wikitty> result = proxy.findAllByCriteria(c);
+ List<FacetTopic> topics = result.getTopic(
+ BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS);
+ labels = new TreeSet<FacetTopic>(new FacetTopicNameComparator(true));
+ labels.addAll(topics);
+ }
+
+ /**
+ * Fait les modification demandé par l'utilisateur dans l'interface de
+ * preference: renome ou supprime des labels. Si l'utilisateur demande le
+ * remplacement de label on indiquant pas de nouveau label, alors la chaine
+ * vide est utilisee.
+ *
+ * @return
+ */
+ public String adminlabels() {
+ String result = SUCCESS;
+ try {
+ if (log.isDebugEnabled()) {
+ log.debug("Selected labels: " + Arrays.toString(selectedLabels));
+ log.debug("action delete: " + delete + " rename: " + rename);
+ }
+
+ List<String> selectedLabelsList = Arrays.asList(selectedLabels);
+ boolean isRename = !StringUtils.isEmpty(rename);
+
+ BowProxy proxy = getBowProxy();
+ BowUser user = getBowSession().getUser();
+ String userId = user.getWikittyId();
+
+ Criteria c = Search.query()
+ .in(BowBookmark.FQ_FIELD_WIKITTYLABEL_LABELS, selectedLabelsList)
+ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, userId)
+ .criteria();
+ PagedResult<WikittyLabel> searchResult =
+ proxy.findAllByCriteria(WikittyLabel.class, c);
+
+ List<WikittyLabel> toStore = new ArrayList<WikittyLabel>();
+ for (WikittyLabel label : searchResult) {
+ toStore.add(label);
+ Set<String> l = label.getLabels();
+ if (l != null) {
+ // on fait une copie, car l retourne est non modifiable
+ l = new HashSet<String>(l);
+ l.removeAll(selectedLabelsList);
+ if (isRename) {
+ l.add(newLabel);
+ }
+ label.setLabels(l);
+ }
+ }
+ proxy.store(toStore);
+ } catch (Exception eee) {
+ addActionError(getText(n_("bow.error.internal")));
+ log.error(eee.getMessage(), eee);
+ }
+ return result;
+
+ }
+
+ /**
* Changes the user preferences
*/
public String execute() {
@@ -263,6 +397,7 @@
// BowPreference extends BowUser, donc on l'utilise pour tout
BowPreference preference = getBowSession().getPreference();
+ loadLabels(proxy);
Map<String,Integer> bookmarksByImportDate = BookmarkUtils.getBookmarksByImportDate(request, preference);
if (log.isDebugEnabled()) {
@@ -302,7 +437,7 @@
setTagsNb(String.valueOf(preference.getTags()));
setBookmarksHomePage(String.valueOf(preference.getBookmarks()));
setSearchEngineUrlSuggestions(preference.getSearchEngineUrlSuggestions());
- setSearchEngineUrlResults(preference.getSearchEngineUrlResults());
+ setSearchEngineUrlResults(preference.getSearchEngineUrlResults());
}
// retrieve last reference
preference = getBowSession().getPreference();
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-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/resources/i18n/bow-ui_en_GB.properties 2011-04-19 17:34:39 UTC (rev 244)
@@ -67,6 +67,10 @@
bow.preferences.import.submit=Import
bow.preferences.importExport=Import / Export
bow.preferences.importedBookmarks=Imported bookmarks
+bow.preferences.labels=Labels administration
+bow.preferences.labels.delete.submit=Delete
+bow.preferences.labels.name.field=new name
+bow.preferences.labels.rename.submit=Rename
bow.preferences.newPassword=New password
bow.preferences.noImportedBookmarks=No imported bookmarks
bow.preferences.regenPermToken=Regenerate permanent token
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-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/resources/i18n/bow-ui_fr_FR.properties 2011-04-19 17:34:39 UTC (rev 244)
@@ -8,7 +8,6 @@
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
@@ -67,6 +66,10 @@
bow.preferences.import.submit=Importer
bow.preferences.importExport=Import / Export
bow.preferences.importedBookmarks=Marque-pages import\u00E9s
+bow.preferences.labels=Gestion des labels
+bow.preferences.labels.delete.submit=Supprimer
+bow.preferences.labels.name.field=Nouveau nom
+bow.preferences.labels.rename.submit=Renomer
bow.preferences.newPassword=Nouveau mot de passe
bow.preferences.noImportedBookmarks=Aucun marque-page import\u00E9
bow.preferences.regenPermToken=Reg\u00E9n\u00E9rer le token permanent
Modified: trunk/bow-ui/src/main/resources/struts.xml
===================================================================
--- trunk/bow-ui/src/main/resources/struts.xml 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/resources/struts.xml 2011-04-19 17:34:39 UTC (rev 244)
@@ -241,6 +241,11 @@
<action name="*Xml">
<result>/jsp/{1}Xml.jsp</result>
</action>
+
+ <action name="adminlabels" class="org.chorem.bow.action.PreferencesAction" method="adminlabels">
+ <result type="redirectAction">preferences</result>
+ </action>
+
<action name="preferences" class="org.chorem.bow.action.PreferencesAction">
<interceptor-ref name="store">
<param name="operationMode">STORE</param>
Modified: trunk/bow-ui/src/main/webapp/css/bookmark.css
===================================================================
--- trunk/bow-ui/src/main/webapp/css/bookmark.css 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/webapp/css/bookmark.css 2011-04-19 17:34:39 UTC (rev 244)
@@ -21,60 +21,60 @@
* 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%
- */
+*/
#page{
- background-color:#9EDCF8;
- float:left;
- left:77%;
- position:relative;
- width:100%;
- margin-bottom:50px;
+ background-color:#9EDCF8;
+ float:left;
+ left:77%;
+ position:relative;
+ width:100%;
+ margin-bottom:50px;
}
#header{
- background:#fff url('../img/fondhead.jpg') repeat-x 0 0;
- float:left;
- position:absolute;
- right:85%;
- top:0;
- height:100px;
- width:100%;
+ background:#fff url('../img/fondhead.jpg') repeat-x 0 0;
+ float:left;
+ position:absolute;
+ right:85%;
+ top:0;
+ height:100px;
+ width:100%;
}
#header a.logo{
- background:transparent url('../img/logobow.jpg') repeat scroll 0 0;
- display:block;
- height:100px;
- text-indent:-99999px;
- width:290px;
- float:left;
- left:8%;
- position:relative;
+ background:transparent url('../img/logobow.jpg') repeat scroll 0 0;
+ display:block;
+ height:100px;
+ text-indent:-99999px;
+ width:290px;
+ float:left;
+ left:8%;
+ position:relative;
}
#main{
- margin-top:120px;
- float:left;
+ margin-top:120px;
+ float:left;
position:relative;
- right:69%;
- width:59%;
- clear:both;
+ right:69%;
+ width:59%;
+ clear:both;
}
.content{
width:100%;
float:left;
- background-color:#fff;
- margin-bottom: 25px;
+ background-color:#fff;
+ margin-bottom: 25px;
}
#side {
- clear:right;
- float:right;
- position:relative;
- right:73%;
- width:27%;
+ clear:right;
+ float:right;
+ position:relative;
+ right:73%;
+ width:27%;
}
.bookmark{
@@ -84,18 +84,18 @@
}
.bookmark .bookmarkhead{
- width:100%;
- height:32px;
- background-color:#bf8a9c;
- border-bottom:2px solid #9EDCF8;
- position:relative;
- clear:both;
+ width:100%;
+ height:32px;
+ background-color:#bf8a9c;
+ border-bottom:2px solid #9EDCF8;
+ position:relative;
+ clear:both;
}
.bookmark .bookmarkcontenu{
- clear:both;
- padding-top:5px;
- padding-right: 152px;
+ clear:both;
+ padding-top:5px;
+ padding-right: 152px;
}
.bookmark .bookmarkhead .date{
@@ -107,42 +107,42 @@
.bookmark .bookmarkhead .edit{
background:url('../img/edit.jpg') no-repeat;
- width:31px;
- height:32px;
- position:absolute;
- top:0;
- right:32px;
+ width:31px;
+ height:32px;
+ position:absolute;
+ top:0;
+ right:32px;
}
.bookmark .bookmarkhead .supprim{
background:url('../img/croix.jpg') no-repeat;
- width:31px;
- height:32px;
- position:absolute;
- top:0;
- right:0;
+ width:31px;
+ height:32px;
+ position:absolute;
+ top:0;
+ right:0;
}
.bookmark .bookmarkhead a{
- color:#FFF;
- font-weight:bold;
- font-size:14px;
- line-height:32px;
- padding-left:40px;
- background:url('../img/ptit_livre.jpg') no-repeat;
- height:32px;
- display:block;
- text-decoration:none;
- float:left;
- margin-right:3%;
- margin-left:3%;
+ color:#FFF;
+ font-weight:bold;
+ font-size:14px;
+ line-height:32px;
+ padding-left:40px;
+ background:url('../img/ptit_livre.jpg') no-repeat;
+ height:32px;
+ display:block;
+ text-decoration:none;
+ float:left;
+ margin-right:3%;
+ margin-left:3%;
}
.bookmark .bookmarkhead .alias{
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{
@@ -181,67 +181,67 @@
}
.bookmark .click{
- background:transparent url('../img/click.jpg') no-repeat scroll 0 0;
- float:right;
- height:27px;
- margin:10px -25px 5px 5px;
- padding-top:31px;
- position:relative;
- right:-120px;
- width:31px;
- text-align:center;
+ background:transparent url('../img/click.jpg') no-repeat scroll 0 0;
+ float:right;
+ height:27px;
+ margin:10px -25px 5px 5px;
+ padding-top:31px;
+ position:relative;
+ right:-120px;
+ width:31px;
+ text-align:center;
}
.nobookmarks{
- font-size: large;
- padding-left: 5px;
+ font-size: large;
+ padding-left: 5px;
}
#logoutDiv{
- float:right;
- position:relative;
- right:67%;
- width:33%;
- background:#BF8A9C url('../img/moyen-livre.jpg') no-repeat scroll 7% 44%;
- height:100px;
+ float:right;
+ position:relative;
+ right:67%;
+ width:33%;
+ background:#BF8A9C url('../img/moyen-livre.jpg') no-repeat scroll 7% 44%;
+ height:100px;
}
#logoutDiv a.help{
- background:transparent url('../img/aide.jpg') no-repeat scroll 0 0;
- display:block;
- height:34px;
- text-indent:-99999px;
- width:34px;
- margin-left:15%;
- margin-top:12%;
- float:left;
+ background:transparent url('../img/aide.jpg') no-repeat scroll 0 0;
+ display:block;
+ height:34px;
+ text-indent:-99999px;
+ width:34px;
+ margin-left:15%;
+ margin-top:12%;
+ float:left;
}
#logoutDiv form input{
- background:transparent url('../img/fondbouton.jpg') repeat-x scroll 0 0;
- border:medium none;
- color:#9C7186;
- font-size:12px;
- font-weight:bold;
- height:27px;
- line-height:27px;
- display:block;
- text-decoration:none;
- text-align:center;
- width:72px;
- float:left;
- margin-left:25%;
- margin-top:6%;
+ background:transparent url('../img/fondbouton.jpg') repeat-x scroll 0 0;
+ border:medium none;
+ color:#9C7186;
+ font-size:12px;
+ font-weight:bold;
+ height:27px;
+ line-height:27px;
+ display:block;
+ text-decoration:none;
+ text-align:center;
+ width:72px;
+ float:left;
+ margin-left:25%;
+ margin-top:6%;
}
#side #colonneD{
- font-size:14px;
- color:#9edcf8;
+ font-size:14px;
+ color:#9edcf8;
}
#colonneD{
- overflow-x:auto;
- background-color:#804561;
+ overflow-x:auto;
+ background-color:#804561;
}
#colonneD a{
@@ -299,13 +299,13 @@
}
#colonneD h2{
- color:#9edcf8;
- font-size:140%;
- font-weight:normal;
+ color:#9edcf8;
+ font-size:140%;
+ font-weight:normal;
}
#colonneD #add{
- height:auto;
+ height:auto;
}
#colonneD #add form{
@@ -320,65 +320,66 @@
height:22px;
width:50%;
border:none;
- height:28px;
- padding-left:4px;
+ height:28px;
+ padding-left:4px;
}
#colonneD #add form label{
- display:inline-block;
- padding-right:9%;
- text-align:right;
- width:45px;
+ display:inline-block;
+ padding-right:9%;
+ text-align:right;
+ width:45px;
}
#colonneD form input[type="submit"]{
- background:transparent url('../img/fondbouton.jpg') repeat-x scroll 0 0;
- border:medium none;
- color:#9C7186;
- display:block;
- float:right;
- font-size:12px;
- font-weight:bold;
- height:28px;
- line-height:28px;
- position:relative;
- right:20%;
- text-align:center;
- text-decoration:none;
- width:25%;
+ background:transparent url('../img/fondbouton.jpg') repeat-x scroll 0 0;
+ border:medium none;
+ color:#9C7186;
+ display:block;
+ float:right;
+ font-size:12px;
+ font-weight:bold;
+ height:28px;
+ line-height:28px;
+ position:relative;
+ right:20%;
+ text-align:center;
+ text-decoration:none;
+ width:25%;
}
#colonneD #nuage{
- padding-right:80px;
+ padding-right:80px;
min-height:100px;
text-align:justify;
}
.colonnebas img{
- width:86%;
- height:auto;
- display:block;
- position:relative;
+ width:86%;
+ height:auto;
+ display:block;
+ position:relative;
}
#import .input input{
- width:90%;
- margin-bottom:10px;
+ width:90%;
+ margin-bottom:10px;
}
+
+
.formFrame{
- width:400px;
- height:315px;
- background:url('../img/fondconnexion.jpg') no-repeat;
+ min-width:400px;
+ min-height: 315px;
position:relative;
margin-top:20px;
- margin-bottom:20px;
- margin-right:100px;
- margin-left:100px;
- padding-top:10px;
- padding-bottom:10px;
- padding-left:40px;
- padding-right:70px;
+ margin-bottom:20px;
+ margin-right:100px;
+ margin-left:100px;
+ padding-top:10px;
+ padding-bottom:10px;
+ padding-left:40px;
+ padding-right:70px;
}
.formFrame h1{
@@ -401,7 +402,6 @@
}
.formFrame input[type="submit"]{
- float:left;
margin-top:20px;
background:url('../img/fdboutonV.jpg') repeat-x;
height:31px;
@@ -414,7 +414,7 @@
}
.formFrame p a{
- position:absolute;
+ position:absolute;
color:#804561;
left:75px;
font-weight:bold;
@@ -424,84 +424,84 @@
.formFrame #homePage,
.formFrame #regenPermToken{
- bottom:50px;
- left:185px;
- font-size:10px;
+ bottom:50px;
+ left:185px;
+ font-size:10px;
}
.formFrame p input, td input{
- margin-bottom:2px;
+ margin-bottom:2px;
}
.deleteImport{
- width:100%;
- height:32px;
- border:1px solid black;
- margin-bottom:4px;
- padding-top:10px;
- padding-left:15px;
+ width:100%;
+ height:32px;
+ border:1px solid black;
+ margin-bottom:4px;
+ padding-top:10px;
+ padding-left:15px;
}
.deleteImportPink{
- background-color:#BF8A9C;
+ background-color:#BF8A9C;
}
.deleteImportWhite{
- background-color:white;
- margin-left:30px;
+ background-color:white;
+ margin-left:30px;
}
.deleteImport span{
- color:blue;
- font-size:large;
+ color:blue;
+ font-size:large;
}
.deleteImport .deleteImportButton{
background:url('../img/croixtr.png') no-repeat;
- width:31px;
- height:32px;
- float:right;
- margin-right:15px;
- position:relative;
- top:-5px;
+ width:31px;
+ height:32px;
+ float:right;
+ margin-right:15px;
+ position:relative;
+ top:-5px;
}
#deleteSearchResultsButton{
- background:url('../img/croixtr.png') no-repeat;
- width:31px;
- height:32px;
- float:right;
- margin-left:25px;
- margin-right:11px;
+ background:url('../img/croixtr.png') no-repeat;
+ width:31px;
+ height:32px;
+ float:right;
+ margin-left:25px;
+ margin-right:11px;
}
.input label{
- color:#9edcf8;
- font-size:20px;
- font-weight:normal;
- font-style:normal;
- float:left;
- margin-bottom:20px;
- width:100%;
+ color:#9edcf8;
+ font-size:20px;
+ font-weight:normal;
+ font-style:normal;
+ float:left;
+ margin-bottom:20px;
+ width:100%;
}
#bookmarkForm label{
- margin-top:12px;
- font-style:normal;
+ margin-top:12px;
+ font-style:normal;
}
#add h2{
- margin-bottom:20px;
+ margin-bottom:20px;
}
#adminActions li{
- list-style-type:none;
+ list-style-type:none;
padding-bottom:15px;
}
#adminActions li a{
- text-decoration:none;
+ text-decoration:none;
color:#804561;
font-size:11px;
font-weight:bold;
-}
\ No newline at end of file
+}
Modified: trunk/bow-ui/src/main/webapp/css/connexion.css
===================================================================
--- trunk/bow-ui/src/main/webapp/css/connexion.css 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/webapp/css/connexion.css 2011-04-19 17:34:39 UTC (rev 244)
@@ -24,7 +24,7 @@
*/
#header{
- background:#FFFFFF url('../img/fondhead.jpg') repeat-x;
+ background:#FFFFFF url('../img/fondhead.jpg') repeat-x;
width:100%;
float:left;
height:100px;
@@ -34,13 +34,13 @@
}
#header a.logo{
- background:transparent url('../img/logobow.jpg') repeat scroll 0 0;
- display:block;
- height:100px;
- text-indent:-99999px;
- width:290px;
- float:left;
- position:relative;
+ background:transparent url('../img/logobow.jpg') repeat scroll 0 0;
+ display:block;
+ height:100px;
+ text-indent:-99999px;
+ width:290px;
+ float:left;
+ position:relative;
}
#main{
@@ -51,7 +51,7 @@
}
#main .menu{
- margin-top: 25px;
+ margin-top: 25px;
}
#page{
@@ -70,7 +70,7 @@
#formFrame{
width:225px;
height:315px;
- background:url('../img/fondconnexion.jpg') no-repeat;
+/* background:url('../img/fondconnexion.jpg') no-repeat; */
position:relative;
margin:100px auto;
padding:10px 70px;
@@ -96,7 +96,7 @@
}
#formFrame a{
- position: absolute;
+ position: absolute;
color:#804561;
left:75px;
font-weight:bold;
@@ -114,9 +114,9 @@
}
#formFrame #homePage{
- bottom: 50px;
- left: 200px;
- font-size: 10px;
+ bottom: 50px;
+ left: 200px;
+ font-size: 10px;
}
input[type="submit"]{
@@ -133,15 +133,15 @@
}
#formFrame input[type="submit"]{
- position:absolute;
- bottom:40px;
- right:30px;
+ position:absolute;
+ bottom:40px;
+ right:30px;
}
#forgotPassword{
- margin-top:30px;
+ margin-top:30px;
}
#register{
- margin-top:20px;
+ margin-top:20px;
}
\ No newline at end of file
Modified: trunk/bow-ui/src/main/webapp/css/global.css
===================================================================
--- trunk/bow-ui/src/main/webapp/css/global.css 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/webapp/css/global.css 2011-04-19 17:34:39 UTC (rev 244)
@@ -8,7 +8,7 @@
* %%
* Copyright (C) 2010 CodeLutin
* %%
- * This program is free software: you can redistribute it and/or modify
+* This program is free software: you can redistribute it and/or modify
* 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.
@@ -21,7 +21,7 @@
* 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%
- */
+*/
*{
padding:0;
@@ -47,51 +47,51 @@
}
#wrap{
- clear:both;
- float:left;
- overflow-x:hidden;
- overflow-y:visible;
- position:relative;
- width:100%;
- background-color:#9EDCF8;
+ clear:both;
+ float:left;
+ overflow-x:hidden;
+ overflow-y:visible;
+ position:relative;
+ width:100%;
+ background-color:#9EDCF8;
}
#main .menu{
- width:90%;
- height:35px;
- background:#804561 url('../img/pointemenu.jpg') no-repeat right;
- margin-bottom:15px;
- padding:0 40px;
- line-height:35px;
- clear:both;
+ width:90%;
+ height:35px;
+ background:#804561 url('../img/pointemenu.jpg') no-repeat right;
+ margin-bottom:15px;
+ padding:0 40px;
+ line-height:35px;
+ clear:both;
}
#main div[class="menu clearfix"] h2{
- color:#9edcf8;
- font-size:18px;
- font-weight:normal;
- float:left;
+ color:#9edcf8;
+ font-size:18px;
+ font-weight:normal;
+ float:left;
}
#main .menu form{
- float:right;
- color:#9edcf8;
- font-size:12px;
+ float:right;
+ color:#9edcf8;
+ font-size:12px;
}
#import .input input{
- width:90%;
- margin-bottom:10px;
+ width:90%;
+ margin-bottom:10px;
}
.error{
- float:left;
- color:red;
- font-size:medium;
- background-color:white;
- overflow:auto;
- margin-bottom:25px;
- padding:4px;
+ float:left;
+ color:red;
+ font-size:medium;
+ background-color:white;
+ overflow:auto;
+ margin-bottom:25px;
+ padding:4px;
}
#footer{
@@ -100,7 +100,7 @@
}
#footer a{
- color:#bf8a9c;
+ color:#bf8a9c;
}
#footer p{
@@ -131,4 +131,13 @@
#actionmessageHeader ul, #actionerrorHeader ul{
list-style-type:none;
+}
+
+.fond {
+ -ms-filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#dbdbdb');
+ background-image: -moz-linear-gradient(top, #fff, #dbdbdb);
+ background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#dbdbdb));
+
+ -webkit-border-radius: 0.5em;
+ -moz-border-radius: 0.5em;
}
\ No newline at end of file
Modified: trunk/bow-ui/src/main/webapp/jsp/admin.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/admin.jsp 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/webapp/jsp/admin.jsp 2011-04-19 17:34:39 UTC (rev 244)
@@ -37,7 +37,7 @@
<div class="menu clearfix">
<h2><s:text name="bow.admin.panel" /></h2>
</div>
- <div class="formFrame">
+ <div class="formFrame fond">
<br /><br />
<s:if test="#session.BowSession.isAdmin()">
Modified: trunk/bow-ui/src/main/webapp/jsp/forgotPassword.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/forgotPassword.jsp 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/webapp/jsp/forgotPassword.jsp 2011-04-19 17:34:39 UTC (rev 244)
@@ -35,7 +35,7 @@
</head>
<body>
<div id="content">
- <div id="formFrame">
+ <div id="formFrame fond">
<h1><s:text name="bow.forgotpwd.title" /></h1>
<s:form action="forgotPassword">
<p>
Modified: trunk/bow-ui/src/main/webapp/jsp/login.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/login.jsp 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/webapp/jsp/login.jsp 2011-04-19 17:34:39 UTC (rev 244)
@@ -34,7 +34,7 @@
</head>
<body>
<div id="content">
- <div id="formFrame">
+ <div id="formFrame" class="fond">
<h1><s:text name="bow.login.title" /></h1>
<s:actionerror />
<s:form action="login">
Modified: trunk/bow-ui/src/main/webapp/jsp/preferences.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/preferences.jsp 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/webapp/jsp/preferences.jsp 2011-04-19 17:34:39 UTC (rev 244)
@@ -1,3 +1,5 @@
+<%@page import="org.nuiton.wikitty.search.FacetTopic"%>
+<%@page import="org.chorem.bow.action.PreferencesAction"%>
<!--
#%L
bow
@@ -24,6 +26,10 @@
<%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<%@taglib prefix="s" uri="/struts-tags" %>
+<%
+PreferencesAction action = PreferencesAction.getAction();
+%>
+
<html xmlns:s="http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
xmlns:jsp="http://java.sun.com/JSP/Page">
<head>
@@ -39,7 +45,7 @@
</div>
<s:actionerror/>
<s:form action="preferences">
- <div class="formFrame">
+ <div class="formFrame fond">
<h3><s:text name="bow.preferences.userInfo"/></h3>
<p>
@@ -74,7 +80,7 @@
<s:text name="bow.preferences.regenPermToken"/>
</s:a>
</div>
- <div class="formFrame">
+ <div class="formFrame fond">
<h3><s:text name="bow.preferences.siteLook"/></h3>
<p>
@@ -97,7 +103,31 @@
</div>
</s:form>
- <div class="formFrame">
+ <div class="formFrame fond">
+ <h3><s:text name="bow.preferences.labels"/></h3>
+ <s:form action="adminlabels" method="post">
+ <ul>
+ <% for (FacetTopic topic : action.getLabels()) { %>
+ <div>
+ <%-- impossible de mettre un <s:checkbox, a priori erreur soit
+ disant que la tld ne permet pas d'expression :(. Comme
+ ca marche tres bien en HTML pure, vive le HTML :) --%>
+ <input type="checkbox" name="selectedLabels"
+ value="<%=topic.getTopicName()%>">
+ <%=topic.getTopicName()%>(<%=topic.getCount()%>)
+ </input>
+ </div>
+ <% } %>
+ <div>
+ <s:textfield name="newLabel" key="bow.preferences.labels.name.field" />
+ <s:submit name="rename" key="bow.preferences.labels.rename.submit" />
+ <s:submit name="delete" key="bow.preferences.labels.delete.submit" />
+ </div>
+ </ul>
+ </s:form>
+ </div>
+
+ <div class="formFrame fond">
<s:a action="exportBookmarks"><s:text name="bow.preferences.export.bookmarks"/></s:a>
<br/>
Modified: trunk/bow-ui/src/main/webapp/jsp/register.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/register.jsp 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/bow-ui/src/main/webapp/jsp/register.jsp 2011-04-19 17:34:39 UTC (rev 244)
@@ -29,25 +29,25 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<title><s:text name="bow.register.title" /></title>
- <s:url var="css" value="/css/connexion.css" />
+ <s:url var="css" value="/css/connexion.css" />
<link href="${css}" rel="stylesheet" type="text/css" />
<s:head />
</head>
<body>
- <div id="content">
- <div id="formFrame">
- <h1><s:text name="bow.register.title" /></h1>
- <s:form action="register">
- <s:actionerror />
- <p>
- <s:textfield key="bow.login.email" name="email" labelposition="top" labelSeparator=" :" />
- <s:password key="bow.login.password" name="password" labelposition="top" labelSeparator=" :" />
- <s:password key="bow.login.repeatPassword" name="repeatPassword" labelposition="top" labelSeparator=" :" />
- <s:submit key="bow.register.submit" name="submit" />
- </p>
- </s:form>
- <s:a action="login_input" id="loginLink"><s:text name="bow.login.title" /></s:a>
- </div>
- </div>
+ <div id="content">
+ <div id="formFrame" class="fond">
+ <h1><s:text name="bow.register.title" /></h1>
+ <s:form action="register">
+ <s:actionerror />
+ <p>
+ <s:textfield key="bow.login.email" name="email" labelposition="top" labelSeparator=" :" />
+ <s:password key="bow.login.password" name="password" labelposition="top" labelSeparator=" :" />
+ <s:password key="bow.login.repeatPassword" name="repeatPassword" labelposition="top" labelSeparator=" :" />
+ <s:submit key="bow.register.submit" name="submit" />
+ </p>
+ </s:form>
+ <s:a action="login_input" id="loginLink"><s:text name="bow.login.title" /></s:a>
+ </div>
+ </div>
</body>
</html>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-04-19 06:36:50 UTC (rev 243)
+++ trunk/pom.xml 2011-04-19 17:34:39 UTC (rev 244)
@@ -52,7 +52,7 @@
<eugenePluginVersion>2.3.2</eugenePluginVersion>
<nuitonUtilsVersion>2.1.1</nuitonUtilsVersion>
<nuitonI18nVersion>2.3.1</nuitonI18nVersion>
- <wikittyVersion>3.0.5</wikittyVersion>
+ <wikittyVersion>3.1-SNAPSHOT</wikittyVersion>
<slf4jVersion>1.6.1</slf4jVersion>
<struts2Version>2.1.8.1</struts2Version>
<xWorkCoreVersion>2.1.6</xWorkCoreVersion>
@@ -128,14 +128,14 @@
<dependency>
<groupId>org.nuiton.wikitty</groupId>
- <artifactId>wikitty-jdbc-impl</artifactId>
+ <artifactId>wikitty-jdbc</artifactId>
<version>${wikittyVersion}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.nuiton.wikitty</groupId>
- <artifactId>wikitty-solr-impl</artifactId>
+ <artifactId>wikitty-solr</artifactId>
<version>${wikittyVersion}</version>
</dependency>
1
0
Author: kmorin
Date: 2011-04-19 08:36:50 +0200 (Tue, 19 Apr 2011)
New Revision: 243
Url: http://chorem.org/repositories/revision/bow/243
Log:
add jquery
Added:
trunk/bow-ui/src/main/webapp/js/jquery-1.5.2.min.js
trunk/bow-ui/src/main/webapp/js/jquery-ui-1.8.11.custom.min.js
Added: trunk/bow-ui/src/main/webapp/js/jquery-1.5.2.min.js
===================================================================
--- trunk/bow-ui/src/main/webapp/js/jquery-1.5.2.min.js (rev 0)
+++ trunk/bow-ui/src/main/webapp/js/jquery-1.5.2.min.js 2011-04-19 06:36:50 UTC (rev 243)
@@ -0,0 +1,16 @@
+/*!
+ * jQuery JavaScript Library v1.5.2
+ * http://jquery.com/
+ *
+ * Copyright 2011, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2011, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Thu Mar 31 15:28:23 2011 -0400
+ */
+(function(a,b){function ci(a){return d.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cf(a){if(!b_[a]){var b=d("<"+a+">").appendTo("body"),c=b.css("display");b.remove();if(c==="none"||c==="")c="block";b_[a]=c}return b_[a]}function ce(a,b){var c={};d.each(cd.concat.apply([],cd.slice(0,b)),function(){c[this]=a});return c}function b$(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function bZ(){try{return new a.XMLHttpRequest}catch(b){}}function bY(){d(a).unload(function(){for(var a in bW)bW[a](0,1)})}function bS(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var e=a.dataTypes,f={},g,h,i=e.length,j,k=e[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h==="string"&&(f[h.toLowerCase()]=a.converters[h]);l=k,k=e[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=f[m]||f["* "+k];if(!n){p=b;for(o in f){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=f[j[1]+" "+k];if(p){o=f[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&d.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function bR(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function bQ(a,b,c,e){if(d.isArray(b)&&b.length)d.each(b,function(b,f){c||bs.test(a)?e(a,f):bQ(a+"["+(typeof f==="object"||d.isArray(f)?b:"")+"]",f,c,e)});else if(c||b==null||typeof b!=="object")e(a,b);else if(d.isArray(b)||d.isEmptyObject(b))e(a,"");else for(var f in b)bQ(a+"["+f+"]",b[f],c,e)}function bP(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bJ,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l==="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=bP(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=bP(a,c,d,e,"*",g));return l}function bO(a){return function(b,c){typeof b!=="string"&&(c=b,b="*");if(d.isFunction(c)){var e=b.toLowerCase().split(bD),f=0,g=e.length,h,i,j;for(;f<g;f++)h=e[f],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bq(a,b,c){var e=b==="width"?bk:bl,f=b==="width"?a.offsetWidth:a.offsetHeight;if(c==="border")return f;d.each(e,function(){c||(f-=parseFloat(d.css(a,"padding"+this))||0),c==="margin"?f+=parseFloat(d.css(a,"margin"+this))||0:f-=parseFloat(d.css(a,"border"+this+"Width"))||0});return f}function bc(a,b){b.src?d.ajax({url:b.src,async:!1,dataType:"script"}):d.globalEval(b.text||b.textContent||b.innerHTML||""),b.parentNode&&b.parentNode.removeChild(b)}function bb(a){return"getElementsByTagName"in a?a.getElementsByTagName("*"):"querySelectorAll"in a?a.querySelectorAll("*"):[]}function ba(a,b){if(b.nodeType===1){var c=b.nodeName.toLowerCase();b.clearAttributes(),b.mergeAttributes(a);if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(d.expando)}}function _(a,b){if(b.nodeType===1&&d.hasData(a)){var c=d.expando,e=d.data(a),f=d.data(b,e);if(e=e[c]){var g=e.events;f=f[c]=d.extend({},e);if(g){delete f.handle,f.events={};for(var h in g)for(var i=0,j=g[h].length;i<j;i++)d.event.add(b,h+(g[h][i].namespace?".":"")+g[h][i].namespace,g[h][i],g[h][i].data)}}}}function $(a,b){return d.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Q(a,b,c){if(d.isFunction(b))return d.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return d.grep(a,function(a,d){return a===b===c});if(typeof b==="string"){var e=d.grep(a,function(a){return a.nodeType===1});if(L.test(b))return d.filter(b,e,!c);b=d.filter(b,e)}return d.grep(a,function(a,e){return d.inArray(a,b)>=0===c})}function P(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function H(a,b){return(a&&a!=="*"?a+".":"")+b.replace(t,"`").replace(u,"&")}function G(a){var b,c,e,f,g,h,i,j,k,l,m,n,o,p=[],q=[],s=d._data(this,"events");if(a.liveFired!==this&&s&&s.live&&!a.target.disabled&&(!a.button||a.type!=="click")){a.namespace&&(n=new RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)")),a.liveFired=this;var t=s.live.slice(0);for(i=0;i<t.length;i++)g=t[i],g.origType.replace(r,"")===a.type?q.push(g.selector):t.splice(i--,1);f=d(a.target).closest(q,a.currentTarget);for(j=0,k=f.length;j<k;j++){m=f[j];for(i=0;i<t.length;i++){g=t[i];if(m.selector===g.selector&&(!n||n.test(g.namespace))&&!m.elem.disabled){h=m.elem,e=null;if(g.preType==="mouseenter"||g.preType==="mouseleave")a.type=g.preType,e=d(a.relatedTarget).closest(g.selector)[0];(!e||e!==h)&&p.push({elem:h,handleObj:g,level:m.level})}}}for(j=0,k=p.length;j<k;j++){f=p[j];if(c&&f.level>c)break;a.currentTarget=f.elem,a.data=f.handleObj.data,a.handleObj=f.handleObj,o=f.handleObj.origHandler.apply(f.elem,arguments);if(o===!1||a.isPropagationStopped()){c=f.level,o===!1&&(b=!1);if(a.isImmediatePropagationStopped())break}}return b}}function E(a,c,e){var f=d.extend({},e[0]);f.type=a,f.originalEvent={},f.liveFired=b,d.event.handle.call(c,f),f.isDefaultPrevented()&&e[0].preventDefault()}function y(){return!0}function x(){return!1}function i(a){for(var b in a)if(b!=="toJSON")return!1;return!0}function h(a,c,e){if(e===b&&a.nodeType===1){e=a.getAttribute("data-"+c);if(typeof e==="string"){try{e=e==="true"?!0:e==="false"?!1:e==="null"?null:d.isNaN(e)?g.test(e)?d.parseJSON(e):e:parseFloat(e)}catch(f){}d.data(a,c,e)}else e=b}return e}var c=a.document,d=function(){function G(){if(!d.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(G,1);return}d.ready()}}var d=function(a,b){return new d.fn.init(a,b,g)},e=a.jQuery,f=a.$,g,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,i=/\S/,j=/^\s+/,k=/\s+$/,l=/\d/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=navigator.userAgent,w,x,y,z=Object.prototype.toString,A=Object.prototype.hasOwnProperty,B=Array.prototype.push,C=Array.prototype.slice,D=String.prototype.trim,E=Array.prototype.indexOf,F={};d.fn=d.prototype={constructor:d,init:function(a,e,f){var g,i,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!e&&c.body){this.context=c,this[0]=c.body,this.selector="body",this.length=1;return this}if(typeof a==="string"){g=h.exec(a);if(!g||!g[1]&&e)return!e||e.jquery?(e||f).find(a):this.constructor(e).find(a);if(g[1]){e=e instanceof d?e[0]:e,k=e?e.ownerDocument||e:c,j=m.exec(a),j?d.isPlainObject(e)?(a=[c.createElement(j[1])],d.fn.attr.call(a,e,!0)):a=[k.createElement(j[1])]:(j=d.buildFragment([g[1]],[k]),a=(j.cacheable?d.clone(j.fragment):j.fragment).childNodes);return d.merge(this,a)}i=c.getElementById(g[2]);if(i&&i.parentNode){if(i.id!==g[2])return f.find(a);this.length=1,this[0]=i}this.context=c,this.selector=a;return this}if(d.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return d.makeArray(a,this)},selector:"",jquery:"1.5.2",length:0,size:function(){return this.length},toArray:function(){return C.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var e=this.constructor();d.isArray(a)?B.apply(e,a):d.merge(e,a),e.prevObject=this,e.context=this.context,b==="find"?e.selector=this.selector+(this.selector?" ":"")+c:b&&(e.selector=this.selector+"."+b+"("+c+")");return e},each:function(a,b){return d.each(this,a,b)},ready:function(a){d.bindReady(),x.done(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(C.apply(this,arguments),"slice",C.call(arguments).join(","))},map:function(a){return this.pushStack(d.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:B,sort:[].sort,splice:[].splice},d.fn.init.prototype=d.fn,d.extend=d.fn.extend=function(){var a,c,e,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i==="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!=="object"&&!d.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){e=i[c],f=a[c];if(i===f)continue;l&&f&&(d.isPlainObject(f)||(g=d.isArray(f)))?(g?(g=!1,h=e&&d.isArray(e)?e:[]):h=e&&d.isPlainObject(e)?e:{},i[c]=d.extend(l,h,f)):f!==b&&(i[c]=f)}return i},d.extend({noConflict:function(b){a.$=f,b&&(a.jQuery=e);return d},isReady:!1,readyWait:1,ready:function(a){a===!0&&d.readyWait--;if(!d.readyWait||a!==!0&&!d.isReady){if(!c.body)return setTimeout(d.ready,1);d.isReady=!0;if(a!==!0&&--d.readyWait>0)return;x.resolveWith(c,[d]),d.fn.trigger&&d(c).trigger("ready").unbind("ready")}},bindReady:function(){if(!x){x=d._Deferred();if(c.readyState==="complete")return setTimeout(d.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",y,!1),a.addEventListener("load",d.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",y),a.attachEvent("onload",d.ready);var b=!1;try{b=a.frameElement==null}catch(e){}c.documentElement.doScroll&&b&&G()}}},isFunction:function(a){return d.type(a)==="function"},isArray:Array.isArray||function(a){return d.type(a)==="array"},isWindow:function(a){return a&&typeof a==="object"&&"setInterval"in a},isNaN:function(a){return a==null||!l.test(a)||isNaN(a)},type:function(a){return a==null?String(a):F[z.call(a)]||"object"},isPlainObject:function(a){if(!a||d.type(a)!=="object"||a.nodeType||d.isWindow(a))return!1;if(a.constructor&&!A.call(a,"constructor")&&!A.call(a.constructor.prototype,"isPrototypeOf"))return!1;var c;for(c in a){}return c===b||A.call(a,c)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw a},parseJSON:function(b){if(typeof b!=="string"||!b)return null;b=d.trim(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return a.JSON&&a.JSON.parse?a.JSON.parse(b):(new Function("return "+b))();d.error("Invalid JSON: "+b)},parseXML:function(b,c,e){a.DOMParser?(e=new DOMParser,c=e.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b)),e=c.documentElement,(!e||!e.nodeName||e.nodeName==="parsererror")&&d.error("Invalid XML: "+b);return c},noop:function(){},globalEval:function(a){if(a&&i.test(a)){var b=c.head||c.getElementsByTagName("head")[0]||c.documentElement,e=c.createElement("script");d.support.scriptEval()?e.appendChild(c.createTextNode(a)):e.text=a,b.insertBefore(e,b.firstChild),b.removeChild(e)}},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,e){var f,g=0,h=a.length,i=h===b||d.isFunction(a);if(e){if(i){for(f in a)if(c.apply(a[f],e)===!1)break}else for(;g<h;)if(c.apply(a[g++],e)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(var j=a[0];g<h&&c.call(j,g,j)!==!1;j=a[++g]){}return a},trim:D?function(a){return a==null?"":D.call(a)}:function(a){return a==null?"":(a+"").replace(j,"").replace(k,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var e=d.type(a);a.length==null||e==="string"||e==="function"||e==="regexp"||d.isWindow(a)?B.call(c,a):d.merge(c,a)}return c},inArray:function(a,b){if(b.indexOf)return b.indexOf(a);for(var c=0,d=b.length;c<d;c++)if(b[c]===a)return c;return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length==="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,b,c){var d=[],e;for(var f=0,g=a.length;f<g;f++)e=b(a[f],f,c),e!=null&&(d[d.length]=e);return d.concat.apply([],d)},guid:1,proxy:function(a,c,e){arguments.length===2&&(typeof c==="string"?(e=a,a=e[c],c=b):c&&!d.isFunction(c)&&(e=c,c=b)),!c&&a&&(c=function(){return a.apply(e||this,arguments)}),a&&(c.guid=a.guid=a.guid||c.guid||d.guid++);return c},access:function(a,c,e,f,g,h){var i=a.length;if(typeof c==="object"){for(var j in c)d.access(a,j,c[j],f,g,e);return a}if(e!==b){f=!h&&f&&d.isFunction(e);for(var k=0;k<i;k++)g(a[k],c,f?e.call(a[k],k,g(a[k],c)):e,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}d.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.subclass=this.subclass,a.fn.init=function b(b,c){c&&c instanceof d&&!(c instanceof a)&&(c=a(c));return d.fn.init.call(this,b,c,e)},a.fn.init.prototype=a.fn;var e=a(c);return a},browser:{}}),d.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){F["[object "+b+"]"]=b.toLowerCase()}),w=d.uaMatch(v),w.browser&&(d.browser[w.browser]=!0,d.browser.version=w.version),d.browser.webkit&&(d.browser.safari=!0),E&&(d.inArray=function(a,b){return E.call(b,a)}),i.test(" ")&&(j=/^[\s\xA0]+/,k=/[\s\xA0]+$/),g=d(c),c.addEventListener?y=function(){c.removeEventListener("DOMContentLoaded",y,!1),d.ready()}:c.attachEvent&&(y=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",y),d.ready())});return d}(),e="then done fail isResolved isRejected promise".split(" "),f=[].slice;d.extend({_Deferred:function(){var a=[],b,c,e,f={done:function(){if(!e){var c=arguments,g,h,i,j,k;b&&(k=b,b=0);for(g=0,h=c.length;g<h;g++)i=c[g],j=d.type(i),j==="array"?f.done.apply(f,i):j==="function"&&a.push(i);k&&f.resolveWith(k[0],k[1])}return this},resolveWith:function(d,f){if(!e&&!b&&!c){f=f||[],c=1;try{while(a[0])a.shift().apply(d,f)}finally{b=[d,f],c=0}}return this},resolve:function(){f.resolveWith(this,arguments);return this},isResolved:function(){return c||b},cancel:function(){e=1,a=[];return this}};return f},Deferred:function(a){var b=d._Deferred(),c=d._Deferred(),f;d.extend(b,{then:function(a,c){b.done(a).fail(c);return this},fail:c.done,rejectWith:c.resolveWith,reject:c.resolve,isRejected:c.isResolved,promise:function(a){if(a==null){if(f)return f;f=a={}}var c=e.length;while(c--)a[e[c]]=b[e[c]];return a}}),b.done(c.cancel).fail(b.cancel),delete b.cancel,a&&a.call(b,b);return b},when:function(a){function i(a){return function(c){b[a]=arguments.length>1?f.call(arguments,0):c,--g||h.resolveWith(h,f.call(b,0))}}var b=arguments,c=0,e=b.length,g=e,h=e<=1&&a&&d.isFunction(a.promise)?a:d.Deferred();if(e>1){for(;c<e;c++)b[c]&&d.isFunction(b[c].promise)?b[c].promise().then(i(c),h.reject):--g;g||h.resolveWith(h,b)}else h!==a&&h.resolveWith(h,e?[a]:[]);return h.promise()}}),function(){d.support={};var b=c.createElement("div");b.style.display="none",b.innerHTML=" <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";var e=b.getElementsByTagName("*"),f=b.getElementsByTagName("a")[0],g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=b.getElementsByTagName("input")[0];if(e&&e.length&&f){d.support={leadingWhitespace:b.firstChild.nodeType===3,tbody:!b.getElementsByTagName("tbody").length,htmlSerialize:!!b.getElementsByTagName("link").length,style:/red/.test(f.getAttribute("style")),hrefNormalized:f.getAttribute("href")==="/a",opacity:/^0.55$/.test(f.style.opacity),cssFloat:!!f.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,deleteExpando:!0,optDisabled:!1,checkClone:!1,noCloneEvent:!0,noCloneChecked:!0,boxModel:null,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableHiddenOffsets:!0,reliableMarginRight:!0},i.checked=!0,d.support.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,d.support.optDisabled=!h.disabled;var j=null;d.support.scriptEval=function(){if(j===null){var b=c.documentElement,e=c.createElement("script"),f="script"+d.now();try{e.appendChild(c.createTextNode("window."+f+"=1;"))}catch(g){}b.insertBefore(e,b.firstChild),a[f]?(j=!0,delete a[f]):j=!1,b.removeChild(e)}return j};try{delete b.test}catch(k){d.support.deleteExpando=!1}!b.addEventListener&&b.attachEvent&&b.fireEvent&&(b.attachEvent("onclick",function l(){d.support.noCloneEvent=!1,b.detachEvent("onclick",l)}),b.cloneNode(!0).fireEvent("onclick")),b=c.createElement("div"),b.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";var m=c.createDocumentFragment();m.appendChild(b.firstChild),d.support.checkClone=m.cloneNode(!0).cloneNode(!0).lastChild.checked,d(function(){var a=c.createElement("div"),b=c.getElementsByTagName("body")[0];if(b){a.style.width=a.style.paddingLeft="1px",b.appendChild(a),d.boxModel=d.support.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,d.support.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="<div style='width:4px;'></div>",d.support.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";var e=a.getElementsByTagName("td");d.support.reliableHiddenOffsets=e[0].offsetHeight===0,e[0].style.display="",e[1].style.display="none",d.support.reliableHiddenOffsets=d.support.reliableHiddenOffsets&&e[0].offsetHeight===0,a.innerHTML="",c.defaultView&&c.defaultView.getComputedStyle&&(a.style.width="1px",a.style.marginRight="0",d.support.reliableMarginRight=(parseInt(c.defaultView.getComputedStyle(a,null).marginRight,10)||0)===0),b.removeChild(a).style.display="none",a=e=null}});var n=function(a){var b=c.createElement("div");a="on"+a;if(!b.attachEvent)return!0;var d=a in b;d||(b.setAttribute(a,"return;"),d=typeof b[a]==="function");return d};d.support.submitBubbles=n("submit"),d.support.changeBubbles=n("change"),b=e=f=null}}();var g=/^(?:\{.*\}|\[.*\])$/;d.extend({cache:{},uuid:0,expando:"jQuery"+(d.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?d.cache[a[d.expando]]:a[d.expando];return!!a&&!i(a)},data:function(a,c,e,f){if(d.acceptData(a)){var g=d.expando,h=typeof c==="string",i,j=a.nodeType,k=j?d.cache:a,l=j?a[d.expando]:a[d.expando]&&d.expando;if((!l||f&&l&&!k[l][g])&&h&&e===b)return;l||(j?a[d.expando]=l=++d.uuid:l=d.expando),k[l]||(k[l]={},j||(k[l].toJSON=d.noop));if(typeof c==="object"||typeof c==="function")f?k[l][g]=d.extend(k[l][g],c):k[l]=d.extend(k[l],c);i=k[l],f&&(i[g]||(i[g]={}),i=i[g]),e!==b&&(i[c]=e);if(c==="events"&&!i[c])return i[g]&&i[g].events;return h?i[c]:i}},removeData:function(b,c,e){if(d.acceptData(b)){var f=d.expando,g=b.nodeType,h=g?d.cache:b,j=g?b[d.expando]:d.expando;if(!h[j])return;if(c){var k=e?h[j][f]:h[j];if(k){delete k[c];if(!i(k))return}}if(e){delete h[j][f];if(!i(h[j]))return}var l=h[j][f];d.support.deleteExpando||h!=a?delete h[j]:h[j]=null,l?(h[j]={},g||(h[j].toJSON=d.noop),h[j][f]=l):g&&(d.support.deleteExpando?delete b[d.expando]:b.removeAttribute?b.removeAttribute(d.expando):b[d.expando]=null)}},_data:function(a,b,c){return d.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=d.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),d.fn.extend({data:function(a,c){var e=null;if(typeof a==="undefined"){if(this.length){e=d.data(this[0]);if(this[0].nodeType===1){var f=this[0].attributes,g;for(var i=0,j=f.length;i<j;i++)g=f[i].name,g.indexOf("data-")===0&&(g=g.substr(5),h(this[0],g,e[g]))}}return e}if(typeof a==="object")return this.each(function(){d.data(this,a)});var k=a.split(".");k[1]=k[1]?"."+k[1]:"";if(c===b){e=this.triggerHandler("getData"+k[1]+"!",[k[0]]),e===b&&this.length&&(e=d.data(this[0],a),e=h(this[0],a,e));return e===b&&k[1]?this.data(k[0]):e}return this.each(function(){var b=d(this),e=[k[0],c];b.triggerHandler("setData"+k[1]+"!",e),d.data(this,a,c),b.triggerHandler("changeData"+k[1]+"!",e)})},removeData:function(a){return this.each(function(){d.removeData(this,a)})}}),d.extend({queue:function(a,b,c){if(a){b=(b||"fx")+"queue";var e=d._data(a,b);if(!c)return e||[];!e||d.isArray(c)?e=d._data(a,b,d.makeArray(c)):e.push(c);return e}},dequeue:function(a,b){b=b||"fx";var c=d.queue(a,b),e=c.shift();e==="inprogress"&&(e=c.shift()),e&&(b==="fx"&&c.unshift("inprogress"),e.call(a,function(){d.dequeue(a,b)})),c.length||d.removeData(a,b+"queue",!0)}}),d.fn.extend({queue:function(a,c){typeof a!=="string"&&(c=a,a="fx");if(c===b)return d.queue(this[0],a);return this.each(function(b){var e=d.queue(this,a,c);a==="fx"&&e[0]!=="inprogress"&&d.dequeue(this,a)})},dequeue:function(a){return this.each(function(){d.dequeue(this,a)})},delay:function(a,b){a=d.fx?d.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(){var c=this;setTimeout(function(){d.dequeue(c,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var j=/[\n\t\r]/g,k=/\s+/,l=/\r/g,m=/^(?:href|src|style)$/,n=/^(?:button|input)$/i,o=/^(?:button|input|object|select|textarea)$/i,p=/^a(?:rea)?$/i,q=/^(?:radio|checkbox)$/i;d.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"},d.fn.extend({attr:function(a,b){return d.access(this,a,b,!0,d.attr)},removeAttr:function(a,b){return this.each(function(){d.attr(this,a,""),this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.addClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"){var b=(a||"").split(k);for(var c=0,e=this.length;c<e;c++){var f=this[c];if(f.nodeType===1)if(f.className){var g=" "+f.className+" ",h=f.className;for(var i=0,j=b.length;i<j;i++)g.indexOf(" "+b[i]+" ")<0&&(h+=" "+b[i]);f.className=d.trim(h)}else f.className=a}}return this},removeClass:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.removeClass(a.call(this,b,c.attr("class")))});if(a&&typeof a==="string"||a===b){var c=(a||"").split(k);for(var e=0,f=this.length;e<f;e++){var g=this[e];if(g.nodeType===1&&g.className)if(a){var h=(" "+g.className+" ").replace(j," ");for(var i=0,l=c.length;i<l;i++)h=h.replace(" "+c[i]+" "," ");g.className=d.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,e=typeof b==="boolean";if(d.isFunction(a))return this.each(function(c){var e=d(this);e.toggleClass(a.call(this,c,e.attr("class"),b),b)});return this.each(function(){if(c==="string"){var f,g=0,h=d(this),i=b,j=a.split(k);while(f=j[g++])i=e?i:!h.hasClass(f),h[i?"addClass":"removeClass"](f)}else if(c==="undefined"||c==="boolean")this.className&&d._data(this,"__className__",this.className),this.className=this.className||a===!1?"":d._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ";for(var c=0,d=this.length;c<d;c++)if((" "+this[c].className+" ").replace(j," ").indexOf(b)>-1)return!0;return!1},val:function(a){if(!arguments.length){var c=this[0];if(c){if(d.nodeName(c,"option")){var e=c.attributes.value;return!e||e.specified?c.value:c.text}if(d.nodeName(c,"select")){var f=c.selectedIndex,g=[],h=c.options,i=c.type==="select-one";if(f<0)return null;for(var j=i?f:0,k=i?f+1:h.length;j<k;j++){var m=h[j];if(m.selected&&(d.support.optDisabled?!m.disabled:m.getAttribute("disabled")===null)&&(!m.parentNode.disabled||!d.nodeName(m.parentNode,"optgroup"))){a=d(m).val();if(i)return a;g.push(a)}}if(i&&!g.length&&h.length)return d(h[f]).val();return g}if(q.test(c.type)&&!d.support.checkOn)return c.getAttribute("value")===null?"on":c.value;return(c.value||"").replace(l,"")}return b}var n=d.isFunction(a);return this.each(function(b){var c=d(this),e=a;if(this.nodeType===1){n&&(e=a.call(this,b,c.val())),e==null?e="":typeof e==="number"?e+="":d.isArray(e)&&(e=d.map(e,function(a){return a==null?"":a+""}));if(d.isArray(e)&&q.test(this.type))this.checked=d.inArray(c.val(),e)>=0;else if(d.nodeName(this,"select")){var f=d.makeArray(e);d("option",this).each(function(){this.selected=d.inArray(d(this).val(),f)>=0}),f.length||(this.selectedIndex=-1)}else this.value=e}})}}),d.extend({attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,e,f){if(!a||a.nodeType===3||a.nodeType===8||a.nodeType===2)return b;if(f&&c in d.attrFn)return d(a)[c](e);var g=a.nodeType!==1||!d.isXMLDoc(a),h=e!==b;c=g&&d.props[c]||c;if(a.nodeType===1){var i=m.test(c);if(c==="selected"&&!d.support.optSelected){var j=a.parentNode;j&&(j.selectedIndex,j.parentNode&&j.parentNode.selectedIndex)}if((c in a||a[c]!==b)&&g&&!i){h&&(c==="type"&&n.test(a.nodeName)&&a.parentNode&&d.error("type property can't be changed"),e===null?a.nodeType===1&&a.removeAttribute(c):a[c]=e);if(d.nodeName(a,"form")&&a.getAttributeNode(c))return a.getAttributeNode(c).nodeValue;if(c==="tabIndex"){var k=a.getAttributeNode("tabIndex");return k&&k.specified?k.value:o.test(a.nodeName)||p.test(a.nodeName)&&a.href?0:b}return a[c]}if(!d.support.style&&g&&c==="style"){h&&(a.style.cssText=""+e);return a.style.cssText}h&&a.setAttribute(c,""+e);if(!a.attributes[c]&&(a.hasAttribute&&!a.hasAttribute(c)))return b;var l=!d.support.hrefNormalized&&g&&i?a.getAttribute(c,2):a.getAttribute(c);return l===null?b:l}h&&(a[c]=e);return a[c]}});var r=/\.(.*)$/,s=/^(?:textarea|input|select)$/i,t=/\./g,u=/ /g,v=/[^\w\s.|`]/g,w=function(a){return a.replace(v,"\\$&")};d.event={add:function(c,e,f,g){if(c.nodeType!==3&&c.nodeType!==8){try{d.isWindow(c)&&(c!==a&&!c.frameElement)&&(c=a)}catch(h){}if(f===!1)f=x;else if(!f)return;var i,j;f.handler&&(i=f,f=i.handler),f.guid||(f.guid=d.guid++);var k=d._data(c);if(!k)return;var l=k.events,m=k.handle;l||(k.events=l={}),m||(k.handle=m=function(a){return typeof d!=="undefined"&&d.event.triggered!==a.type?d.event.handle.apply(m.elem,arguments):b}),m.elem=c,e=e.split(" ");var n,o=0,p;while(n=e[o++]){j=i?d.extend({},i):{handler:f,data:g},n.indexOf(".")>-1?(p=n.split("."),n=p.shift(),j.namespace=p.slice(0).sort().join(".")):(p=[],j.namespace=""),j.type=n,j.guid||(j.guid=f.guid);var q=l[n],r=d.event.special[n]||{};if(!q){q=l[n]=[];if(!r.setup||r.setup.call(c,g,p,m)===!1)c.addEventListener?c.addEventListener(n,m,!1):c.attachEvent&&c.attachEvent("on"+n,m)}r.add&&(r.add.call(c,j),j.handler.guid||(j.handler.guid=f.guid)),q.push(j),d.event.global[n]=!0}c=null}},global:{},remove:function(a,c,e,f){if(a.nodeType!==3&&a.nodeType!==8){e===!1&&(e=x);var g,h,i,j,k=0,l,m,n,o,p,q,r,s=d.hasData(a)&&d._data(a),t=s&&s.events;if(!s||!t)return;c&&c.type&&(e=c.handler,c=c.type);if(!c||typeof c==="string"&&c.charAt(0)==="."){c=c||"";for(h in t)d.event.remove(a,h+c);return}c=c.split(" ");while(h=c[k++]){r=h,q=null,l=h.indexOf(".")<0,m=[],l||(m=h.split("."),h=m.shift(),n=new RegExp("(^|\\.)"+d.map(m.slice(0).sort(),w).join("\\.(?:.*\\.)?")+"(\\.|$)")),p=t[h];if(!p)continue;if(!e){for(j=0;j<p.length;j++){q=p[j];if(l||n.test(q.namespace))d.event.remove(a,r,q.handler,j),p.splice(j--,1)}continue}o=d.event.special[h]||{};for(j=f||0;j<p.length;j++){q=p[j];if(e.guid===q.guid){if(l||n.test(q.namespace))f==null&&p.splice(j--,1),o.remove&&o.remove.call(a,q);if(f!=null)break}}if(p.length===0||f!=null&&p.length===1)(!o.teardown||o.teardown.call(a,m)===!1)&&d.removeEvent(a,h,s.handle),g=null,delete t[h]}if(d.isEmptyObject(t)){var u=s.handle;u&&(u.elem=null),delete s.events,delete s.handle,d.isEmptyObject(s)&&d.removeData(a,b,!0)}}},trigger:function(a,c,e){var f=a.type||a,g=arguments[3];if(!g){a=typeof a==="object"?a[d.expando]?a:d.extend(d.Event(f),a):d.Event(f),f.indexOf("!")>=0&&(a.type=f=f.slice(0,-1),a.exclusive=!0),e||(a.stopPropagation(),d.event.global[f]&&d.each(d.cache,function(){var b=d.expando,e=this[b];e&&e.events&&e.events[f]&&d.event.trigger(a,c,e.handle.elem)}));if(!e||e.nodeType===3||e.nodeType===8)return b;a.result=b,a.target=e,c=d.makeArray(c),c.unshift(a)}a.currentTarget=e;var h=d._data(e,"handle");h&&h.apply(e,c);var i=e.parentNode||e.ownerDocument;try{e&&e.nodeName&&d.noData[e.nodeName.toLowerCase()]||e["on"+f]&&e["on"+f].apply(e,c)===!1&&(a.result=!1,a.preventDefault())}catch(j){}if(!a.isPropagationStopped()&&i)d.event.trigger(a,c,i,!0);else if(!a.isDefaultPrevented()){var k,l=a.target,m=f.replace(r,""),n=d.nodeName(l,"a")&&m==="click",o=d.event.special[m]||{};if((!o._default||o._default.call(e,a)===!1)&&!n&&!(l&&l.nodeName&&d.noData[l.nodeName.toLowerCase()])){try{l[m]&&(k=l["on"+m],k&&(l["on"+m]=null),d.event.triggered=a.type,l[m]())}catch(p){}k&&(l["on"+m]=k),d.event.triggered=b}}},handle:function(c){var e,f,g,h,i,j=[],k=d.makeArray(arguments);c=k[0]=d.event.fix(c||a.event),c.currentTarget=this,e=c.type.indexOf(".")<0&&!c.exclusive,e||(g=c.type.split("."),c.type=g.shift(),j=g.slice(0).sort(),h=new RegExp("(^|\\.)"+j.join("\\.(?:.*\\.)?")+"(\\.|$)")),c.namespace=c.namespace||j.join("."),i=d._data(this,"events"),f=(i||{})[c.type];if(i&&f){f=f.slice(0);for(var l=0,m=f.length;l<m;l++){var n=f[l];if(e||h.test(n.namespace)){c.handler=n.handler,c.data=n.data,c.handleObj=n;var o=n.handler.apply(this,k);o!==b&&(c.result=o,o===!1&&(c.preventDefault(),c.stopPropagation()));if(c.isImmediatePropagationStopped())break}}}return c.result},props:"altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),fix:function(a){if(a[d.expando])return a;var e=a;a=d.Event(e);for(var f=this.props.length,g;f;)g=this.props[--f],a[g]=e[g];a.target||(a.target=a.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),!a.relatedTarget&&a.fromElement&&(a.relatedTarget=a.fromElement===a.target?a.toElement:a.fromElement);if(a.pageX==null&&a.clientX!=null){var h=c.documentElement,i=c.body;a.pageX=a.clientX+(h&&h.scrollLeft||i&&i.scrollLeft||0)-(h&&h.clientLeft||i&&i.clientLeft||0),a.pageY=a.clientY+(h&&h.scrollTop||i&&i.scrollTop||0)-(h&&h.clientTop||i&&i.clientTop||0)}a.which==null&&(a.charCode!=null||a.keyCode!=null)&&(a.which=a.charCode!=null?a.charCode:a.keyCode),!a.metaKey&&a.ctrlKey&&(a.metaKey=a.ctrlKey),!a.which&&a.button!==b&&(a.which=a.button&1?1:a.button&2?3:a.button&4?2:0);return a},guid:1e8,proxy:d.proxy,special:{ready:{setup:d.bindReady,teardown:d.noop},live:{add:function(a){d.event.add(this,H(a.origType,a.selector),d.extend({},a,{handler:G,guid:a.handler.guid}))},remove:function(a){d.event.remove(this,H(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,c){d.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}}},d.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},d.Event=function(a){if(!this.preventDefault)return new d.Event(a);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?y:x):this.type=a,this.timeStamp=d.now(),this[d.expando]=!0},d.Event.prototype={preventDefault:function(){this.isDefaultPrevented=y;var a=this.originalEvent;a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=y;var a=this.originalEvent;a&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=y,this.stopPropagation()},isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x};var z=function(a){var b=a.relatedTarget;try{if(b&&b!==c&&!b.parentNode)return;while(b&&b!==this)b=b.parentNode;b!==this&&(a.type=a.data,d.event.handle.apply(this,arguments))}catch(e){}},A=function(a){a.type=a.data,d.event.handle.apply(this,arguments)};d.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){d.event.special[a]={setup:function(c){d.event.add(this,b,c&&c.selector?A:z,a)},teardown:function(a){d.event.remove(this,b,a&&a.selector?A:z)}}}),d.support.submitBubbles||(d.event.special.submit={setup:function(a,b){if(this.nodeName&&this.nodeName.toLowerCase()!=="form")d.event.add(this,"click.specialSubmit",function(a){var b=a.target,c=b.type;(c==="submit"||c==="image")&&d(b).closest("form").length&&E("submit",this,arguments)}),d.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,c=b.type;(c==="text"||c==="password")&&d(b).closest("form").length&&a.keyCode===13&&E("submit",this,arguments)});else return!1},teardown:function(a){d.event.remove(this,".specialSubmit")}});if(!d.support.changeBubbles){var B,C=function(a){var b=a.type,c=a.value;b==="radio"||b==="checkbox"?c=a.checked:b==="select-multiple"?c=a.selectedIndex>-1?d.map(a.options,function(a){return a.selected}).join("-"):"":a.nodeName.toLowerCase()==="select"&&(c=a.selectedIndex);return c},D=function D(a){var c=a.target,e,f;if(s.test(c.nodeName)&&!c.readOnly){e=d._data(c,"_change_data"),f=C(c),(a.type!=="focusout"||c.type!=="radio")&&d._data(c,"_change_data",f);if(e===b||f===e)return;if(e!=null||f)a.type="change",a.liveFired=b,d.event.trigger(a,arguments[1],c)}};d.event.special.change={filters:{focusout:D,beforedeactivate:D,click:function(a){var b=a.target,c=b.type;(c==="radio"||c==="checkbox"||b.nodeName.toLowerCase()==="select")&&D.call(this,a)},keydown:function(a){var b=a.target,c=b.type;(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(c==="checkbox"||c==="radio")||c==="select-multiple")&&D.call(this,a)},beforeactivate:function(a){var b=a.target;d._data(b,"_change_data",C(b))}},setup:function(a,b){if(this.type==="file")return!1;for(var c in B)d.event.add(this,c+".specialChange",B[c]);return s.test(this.nodeName)},teardown:function(a){d.event.remove(this,".specialChange");return s.test(this.nodeName)}},B=d.event.special.change.filters,B.focus=B.beforeactivate}c.addEventListener&&d.each({focus:"focusin",blur:"focusout"},function(a,b){function f(a){var c=d.event.fix(a);c.type=b,c.originalEvent={},d.event.trigger(c,null,c.target),c.isDefaultPrevented()&&a.preventDefault()}var e=0;d.event.special[b]={setup:function(){e++===0&&c.addEventListener(a,f,!0)},teardown:function(){--e===0&&c.removeEventListener(a,f,!0)}}}),d.each(["bind","one"],function(a,c){d.fn[c]=function(a,e,f){if(typeof a==="object"){for(var g in a)this[c](g,e,a[g],f);return this}if(d.isFunction(e)||e===!1)f=e,e=b;var h=c==="one"?d.proxy(f,function(a){d(this).unbind(a,h);return f.apply(this,arguments)}):f;if(a==="unload"&&c!=="one")this.one(a,e,f);else for(var i=0,j=this.length;i<j;i++)d.event.add(this[i],a,h,e);return this}}),d.fn.extend({unbind:function(a,b){if(typeof a!=="object"||a.preventDefault)for(var e=0,f=this.length;e<f;e++)d.event.remove(this[e],a,b);else for(var c in a)this.unbind(c,a[c]);return this},delegate:function(a,b,c,d){return this.live(b,c,d,a)},undelegate:function(a,b,c){return arguments.length===0?this.unbind("live"):this.die(b,null,c,a)},trigger:function(a,b){return this.each(function(){d.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var c=d.Event(a);c.preventDefault(),c.stopPropagation(),d.event.trigger(c,b,this[0]);return c.result}},toggle:function(a){var b=arguments,c=1;while(c<b.length)d.proxy(a,b[c++]);return this.click(d.proxy(a,function(e){var f=(d._data(this,"lastToggle"+a.guid)||0)%c;d._data(this,"lastToggle"+a.guid,f+1),e.preventDefault();return b[f].apply(this,arguments)||!1}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var F={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};d.each(["live","die"],function(a,c){d.fn[c]=function(a,e,f,g){var h,i=0,j,k,l,m=g||this.selector,n=g?this:d(this.context);if(typeof a==="object"&&!a.preventDefault){for(var o in a)n[c](o,e,a[o],m);return this}d.isFunction(e)&&(f=e,e=b),a=(a||"").split(" ");while((h=a[i++])!=null){j=r.exec(h),k="",j&&(k=j[0],h=h.replace(r,""));if(h==="hover"){a.push("mouseenter"+k,"mouseleave"+k);continue}l=h,h==="focus"||h==="blur"?(a.push(F[h]+k),h=h+k):h=(F[h]||h)+k;if(c==="live")for(var p=0,q=n.length;p<q;p++)d.event.add(n[p],"live."+H(h,m),{data:e,selector:m,handler:f,origType:h,origHandler:f,preType:l});else n.unbind("live."+H(h,m),f)}return this}}),d.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "),function(a,b){d.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.bind(b,a,c):this.trigger(b)},d.attrFn&&(d.attrFn[b]=!0)}),function(){function u(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}if(i.nodeType===1){f||(i.sizcache=c,i.sizset=g);if(typeof b!=="string"){if(i===b){j=!0;break}}else if(k.filter(b,[i]).length>0){j=i;break}}i=i[a]}d[g]=j}}}function t(a,b,c,d,e,f){for(var g=0,h=d.length;g<h;g++){var i=d[g];if(i){var j=!1;i=i[a];while(i){if(i.sizcache===c){j=d[i.sizset];break}i.nodeType===1&&!f&&(i.sizcache=c,i.sizset=g);if(i.nodeName.toLowerCase()===b){j=i;break}i=i[a]}d[g]=j}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,g=!1,h=!0,i=/\\/g,j=/\W/;[0,0].sort(function(){h=!1;return 0});var k=function(b,d,e,g){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!=="string")return e;var i,j,n,o,q,r,s,t,u=!0,w=k.isXML(d),x=[],y=b;do{a.exec(""),i=a.exec(y);if(i){y=i[3],x.push(i[1]);if(i[2]){o=i[3];break}}}while(i);if(x.length>1&&m.exec(b))if(x.length===2&&l.relative[x[0]])j=v(x[0]+x[1],d);else{j=l.relative[x[0]]?[d]:k(x.shift(),d);while(x.length)b=x.shift(),l.relative[b]&&(b+=x.shift()),j=v(b,j)}else{!g&&x.length>1&&d.nodeType===9&&!w&&l.match.ID.test(x[0])&&!l.match.ID.test(x[x.length-1])&&(q=k.find(x.shift(),d,w),d=q.expr?k.filter(q.expr,q.set)[0]:q.set[0]);if(d){q=g?{expr:x.pop(),set:p(g)}:k.find(x.pop(),x.length===1&&(x[0]==="~"||x[0]==="+")&&d.parentNode?d.parentNode:d,w),j=q.expr?k.filter(q.expr,q.set):q.set,x.length>0?n=p(j):u=!1;while(x.length)r=x.pop(),s=r,l.relative[r]?s=x.pop():r="",s==null&&(s=d),l.relative[r](n,s,w)}else n=x=[]}n||(n=j),n||k.error(r||b);if(f.call(n)==="[object Array]")if(u)if(d&&d.nodeType===1)for(t=0;n[t]!=null;t++)n[t]&&(n[t]===!0||n[t].nodeType===1&&k.contains(d,n[t]))&&e.push(j[t]);else for(t=0;n[t]!=null;t++)n[t]&&n[t].nodeType===1&&e.push(j[t]);else e.push.apply(e,n);else p(n,e);o&&(k(o,h,e,g),k.uniqueSort(e));return e};k.uniqueSort=function(a){if(r){g=h,a.sort(r);if(g)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},k.matches=function(a,b){return k(a,null,null,b)},k.matchesSelector=function(a,b){return k(b,null,null,[a]).length>0},k.find=function(a,b,c){var d;if(!a)return[];for(var e=0,f=l.order.length;e<f;e++){var g,h=l.order[e];if(g=l.leftMatch[h].exec(a)){var j=g[1];g.splice(1,1);if(j.substr(j.length-1)!=="\\"){g[1]=(g[1]||"").replace(i,""),d=l.find[h](g,b,c);if(d!=null){a=a.replace(l.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!=="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},k.filter=function(a,c,d,e){var f,g,h=a,i=[],j=c,m=c&&c[0]&&k.isXML(c[0]);while(a&&c.length){for(var n in l.filter)if((f=l.leftMatch[n].exec(a))!=null&&f[2]){var o,p,q=l.filter[n],r=f[1];g=!1,f.splice(1,1);if(r.substr(r.length-1)==="\\")continue;j===i&&(i=[]);if(l.preFilter[n]){f=l.preFilter[n](f,j,d,i,e,m);if(f){if(f===!0)continue}else g=o=!0}if(f)for(var s=0;(p=j[s])!=null;s++)if(p){o=q(p,f,s,j);var t=e^!!o;d&&o!=null?t?g=!0:j[s]=!1:t&&(i.push(p),g=!0)}if(o!==b){d||(j=i),a=a.replace(l.match[n],"");if(!g)return[];break}}if(a===h)if(g==null)k.error(a);else break;h=a}return j},k.error=function(a){throw"Syntax error, unrecognized expression: "+a};var l=k.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b==="string",d=c&&!j.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1){}a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&k.filter(b,a,!0)},">":function(a,b){var c,d=typeof b==="string",e=0,f=a.length;if(d&&!j.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d&&k.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=u;typeof b==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=u;typeof b==="string"&&!j.test(b)&&(b=b.toLowerCase(),d=b,g=t),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!=="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!=="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!=="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(i,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(i,"")},TAG:function(a,b){return a[1].replace(i,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||k.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&k.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(i,"");!f&&l.attrMap[g]&&(a[1]=l.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(i,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=k(b[3],null,null,c);else{var g=k.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(l.match.POS.test(b[0])||l.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!k(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return"text"===c&&(b===c||b===null)},radio:function(a){return"radio"===a.type},checkbox:function(a){return"checkbox"===a.type},file:function(a){return"file"===a.type},password:function(a){return"password"===a.type},submit:function(a){return"submit"===a.type},image:function(a){return"image"===a.type},reset:function(a){return"reset"===a.type},button:function(a){return"button"===a.type||a.nodeName.toLowerCase()==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=l.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||k.getText([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}k.error(e)},CHILD:function(a,b){var c=b[1],d=a;switch(c){case"only":case"first":while(d=d.previousSibling)if(d.nodeType===1)return!1;if(c==="first")return!0;d=a;case"last":while(d=d.nextSibling)if(d.nodeType===1)return!1;return!0;case"nth":var e=b[2],f=b[3];if(e===1&&f===0)return!0;var g=b[0],h=a.parentNode;if(h&&(h.sizcache!==g||!a.nodeIndex)){var i=0;for(d=h.firstChild;d;d=d.nextSibling)d.nodeType===1&&(d.nodeIndex=++i);h.sizcache=g}var j=a.nodeIndex-f;return e===0?j===0:j%e===0&&j/e>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=l.attrHandle[c]?l.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=l.setFilters[e];if(f)return f(a,c,b,d)}}},m=l.match.POS,n=function(a,b){return"\\"+(b-0+1)};for(var o in l.match)l.match[o]=new RegExp(l.match[o].source+/(?![^\[]*\])(?![^\(]*\))/.source),l.leftMatch[o]=new RegExp(/(^(?:.|\r|\n)*?)/.source+l.match[o].source.replace(/\\(\d+)/g,n));var p=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(q){p=function(a,b){var c=0,d=b||[];if(f.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length==="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var r,s;c.documentElement.compareDocumentPosition?r=function(a,b){if(a===b){g=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(r=function(a,b){var c,d,e=[],f=[],h=a.parentNode,i=b.parentNode,j=h;if(a===b){g=!0;return 0}if(h===i)return s(a,b);if(!h)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return s(e[k],f[k]);return k===c?s(a,f[k],-1):s(e[k],b,1)},s=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),k.getText=function(a){var b="",c;for(var d=0;a[d];d++)c=a[d],c.nodeType===3||c.nodeType===4?b+=c.nodeValue:c.nodeType!==8&&(b+=k.getText(c.childNodes));return b},function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(l.find.ID=function(a,c,d){if(typeof c.getElementById!=="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!=="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},l.filter.ID=function(a,b){var c=typeof a.getAttributeNode!=="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(l.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!=="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(l.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=k,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){k=function(b,e,f,g){e=e||c;if(!g&&!k.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return p(e.getElementsByTagName(b),f);if(h[2]&&l.find.CLASS&&e.getElementsByClassName)return p(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return p([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return p([],f);if(i.id===h[3])return p([i],f)}try{return p(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var m=e,n=e.getAttribute("id"),o=n||d,q=e.parentNode,r=/^\s*[+~]/.test(b);n?o=o.replace(/'/g,"\\$&"):e.setAttribute("id",o),r&&q&&(e=e.parentNode);try{if(!r||q)return p(e.querySelectorAll("[id='"+o+"'] "+b),f)}catch(s){}finally{n||m.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)k[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}k.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!k.isXML(a))try{if(e||!l.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return k(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;l.order.splice(1,0,"CLASS"),l.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!=="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?k.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?k.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:k.contains=function(){return!1},k.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var v=function(a,b){var c,d=[],e="",f=b.nodeType?[b]:b;while(c=l.match.PSEUDO.exec(a))e+=c[0],a=a.replace(l.match.PSEUDO,"");a=l.relative[a]?a+"*":a;for(var g=0,h=f.length;g<h;g++)k(a,f[g],d);return k.filter(e,d)};d.find=k,d.expr=k.selectors,d.expr[":"]=d.expr.filters,d.unique=k.uniqueSort,d.text=k.getText,d.isXMLDoc=k.isXML,d.contains=k.contains}();var I=/Until$/,J=/^(?:parents|prevUntil|prevAll)/,K=/,/,L=/^.[^:#\[\.,]*$/,M=Array.prototype.slice,N=d.expr.match.POS,O={children:!0,contents:!0,next:!0,prev:!0};d.fn.extend({find:function(a){var b=this.pushStack("","find",a),c=0;for(var e=0,f=this.length;e<f;e++){c=b.length,d.find(a,this[e],b);if(e>0)for(var g=c;g<b.length;g++)for(var h=0;h<c;h++)if(b[h]===b[g]){b.splice(g--,1);break}}return b},has:function(a){var b=d(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(d.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(Q(this,a,!1),"not",a)},filter:function(a){return this.pushStack(Q(this,a,!0),"filter",a)},is:function(a){return!!a&&d.filter(a,this).length>0},closest:function(a,b){var c=[],e,f,g=this[0];if(d.isArray(a)){var h,i,j={},k=1;if(g&&a.length){for(e=0,f=a.length;e<f;e++)i=a[e],j[i]||(j[i]=d.expr.match.POS.test(i)?d(i,b||this.context):i);while(g&&g.ownerDocument&&g!==b){for(i in j)h=j[i],(h.jquery?h.index(g)>-1:d(g).is(h))&&c.push({selector:i,elem:g,level:k});g=g.parentNode,k++}}return c}var l=N.test(a)?d(a,b||this.context):null;for(e=0,f=this.length;e<f;e++){g=this[e];while(g){if(l?l.index(g)>-1:d.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b)break}}c=c.length>1?d.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a||typeof a==="string")return d.inArray(this[0],a?d(a):this.parent().children());return d.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a==="string"?d(a,b):d.makeArray(a),e=d.merge(this.get(),c);return this.pushStack(P(c[0])||P(e[0])?e:d.unique(e))},andSelf:function(){return this.add(this.prevObject)}}),d.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return d.dir(a,"parentNode")},parentsUntil:function(a,b,c){return d.dir(a,"parentNode",c)},next:function(a){return d.nth(a,2,"nextSibling")},prev:function(a){return d.nth(a,2,"previousSibling")},nextAll:function(a){return d.dir(a,"nextSibling")},prevAll:function(a){return d.dir(a,"previousSibling")},nextUntil:function(a,b,c){return d.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return d.dir(a,"previousSibling",c)},siblings:function(a){return d.sibling(a.parentNode.firstChild,a)},children:function(a){return d.sibling(a.firstChild)},contents:function(a){return d.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:d.makeArray(a.childNodes)}},function(a,b){d.fn[a]=function(c,e){var f=d.map(this,b,c),g=M.call(arguments);I.test(a)||(e=c),e&&typeof e==="string"&&(f=d.filter(e,f)),f=this.length>1&&!O[a]?d.unique(f):f,(this.length>1||K.test(e))&&J.test(a)&&(f=f.reverse());return this.pushStack(f,a,g.join(","))}}),d.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?d.find.matchesSelector(b[0],a)?[b[0]]:[]:d.find.matches(a,b)},dir:function(a,c,e){var f=[],g=a[c];while(g&&g.nodeType!==9&&(e===b||g.nodeType!==1||!d(g).is(e)))g.nodeType===1&&f.push(g),g=g[c];return f},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var R=/ jQuery\d+="(?:\d+|null)"/g,S=/^\s+/,T=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,U=/<([\w:]+)/,V=/<tbody/i,W=/<|&#?\w+;/,X=/<(?:script|object|embed|option|style)/i,Y=/checked\s*(?:[^=]|=\s*.checked.)/i,Z={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]};Z.optgroup=Z.option,Z.tbody=Z.tfoot=Z.colgroup=Z.caption=Z.thead,Z.th=Z.td,d.support.htmlSerialize||(Z._default=[1,"div<div>","</div>"]),d.fn.extend({text:function(a){if(d.isFunction(a))return this.each(function(b){var c=d(this);c.text(a.call(this,b,c.text()))});if(typeof a!=="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return d.text(this)},wrapAll:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapAll(a.call(this,b))});if(this[0]){var b=d(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(d.isFunction(a))return this.each(function(b){d(this).wrapInner(a.call(this,b))});return this.each(function(){var b=d(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){d(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){d.nodeName(this,"body")||d(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=d(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,d(arguments[0]).toArray());return a}},remove:function(a,b){for(var c=0,e;(e=this[c])!=null;c++)if(!a||d.filter(a,[e]).length)!b&&e.nodeType===1&&(d.cleanData(e.getElementsByTagName("*")),d.cleanData([e])),e.parentNode&&e.parentNode.removeChild(e);return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&d.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return d.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(R,""):null;if(typeof a!=="string"||X.test(a)||!d.support.leadingWhitespace&&S.test(a)||Z[(U.exec(a)||["",""])[1].toLowerCase()])d.isFunction(a)?this.each(function(b){var c=d(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);else{a=a.replace(T,"<$1></$2>");try{for(var c=0,e=this.length;c<e;c++)this[c].nodeType===1&&(d.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(f){this.empty().append(a)}}return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(d.isFunction(a))return this.each(function(b){var c=d(this),e=c.html();c.replaceWith(a.call(this,b,e))});typeof a!=="string"&&(a=d(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;d(this).remove(),b?d(b).before(a):d(c).append(a)})}return this.length?this.pushStack(d(d.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,e){var f,g,h,i,j=a[0],k=[];if(!d.support.checkClone&&arguments.length===3&&typeof j==="string"&&Y.test(j))return this.each(function(){d(this).domManip(a,c,e,!0)});if(d.isFunction(j))return this.each(function(f){var g=d(this);a[0]=j.call(this,f,c?g.html():b),g.domManip(a,c,e)});if(this[0]){i=j&&j.parentNode,d.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?f={fragment:i}:f=d.buildFragment(a,this,k),h=f.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&d.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)e.call(c?$(this[l],g):this[l],f.cacheable||m>1&&l<n?d.clone(h,!0,!0):h)}k.length&&d.each(k,bc)}return this}}),d.buildFragment=function(a,b,e){var f,g,h,i=b&&b[0]?b[0].ownerDocument||b[0]:c;a.length===1&&typeof a[0]==="string"&&a[0].length<512&&i===c&&a[0].charAt(0)==="<"&&!X.test(a[0])&&(d.support.checkClone||!Y.test(a[0]))&&(g=!0,h=d.fragments[a[0]],h&&(h!==1&&(f=h))),f||(f=i.createDocumentFragment(),d.clean(a,i,f,e)),g&&(d.fragments[a[0]]=h?f:1);return{fragment:f,cacheable:g}},d.fragments={},d.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){d.fn[a]=function(c){var e=[],f=d(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&f.length===1){f[b](this[0]);return this}for(var h=0,i=f.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();d(f[h])[b](j),e=e.concat(j)}return this.pushStack(e,a,f.selector)}}),d.extend({clone:function(a,b,c){var e=a.cloneNode(!0),f,g,h;if((!d.support.noCloneEvent||!d.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!d.isXMLDoc(a)){ba(a,e),f=bb(a),g=bb(e);for(h=0;f[h];++h)ba(f[h],g[h])}if(b){_(a,e);if(c){f=bb(a),g=bb(e);for(h=0;f[h];++h)_(f[h],g[h])}}return e},clean:function(a,b,e,f){b=b||c,typeof b.createElement==="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var g=[];for(var h=0,i;(i=a[h])!=null;h++){typeof i==="number"&&(i+="");if(!i)continue;if(typeof i!=="string"||W.test(i)){if(typeof i==="string"){i=i.replace(T,"<$1></$2>");var j=(U.exec(i)||["",""])[1].toLowerCase(),k=Z[j]||Z._default,l=k[0],m=b.createElement("div");m.innerHTML=k[1]+i+k[2];while(l--)m=m.lastChild;if(!d.support.tbody){var n=V.test(i),o=j==="table"&&!n?m.firstChild&&m.firstChild.childNodes:k[1]==="<table>"&&!n?m.childNodes:[];for(var p=o.length-1;p>=0;--p)d.nodeName(o[p],"tbody")&&!o[p].childNodes.length&&o[p].parentNode.removeChild(o[p])}!d.support.leadingWhitespace&&S.test(i)&&m.insertBefore(b.createTextNode(S.exec(i)[0]),m.firstChild),i=m.childNodes}}else i=b.createTextNode(i);i.nodeType?g.push(i):g=d.merge(g,i)}if(e)for(h=0;g[h];h++)!f||!d.nodeName(g[h],"script")||g[h].type&&g[h].type.toLowerCase()!=="text/javascript"?(g[h].nodeType===1&&g.splice.apply(g,[h+1,0].concat(d.makeArray(g[h].getElementsByTagName("script")))),e.appendChild(g[h])):f.push(g[h].parentNode?g[h].parentNode.removeChild(g[h]):g[h]);return g},cleanData:function(a){var b,c,e=d.cache,f=d.expando,g=d.event.special,h=d.support.deleteExpando;for(var i=0,j;(j=a[i])!=null;i++){if(j.nodeName&&d.noData[j.nodeName.toLowerCase()])continue;c=j[d.expando];if(c){b=e[c]&&e[c][f];if(b&&b.events){for(var k in b.events)g[k]?d.event.remove(j,k):d.removeEvent(j,k,b.handle);b.handle&&(b.handle.elem=null)}h?delete j[d.expando]:j.removeAttribute&&j.removeAttribute(d.expando),delete e[c]}}}});var bd=/alpha\([^)]*\)/i,be=/opacity=([^)]*)/,bf=/-([a-z])/ig,bg=/([A-Z]|^ms)/g,bh=/^-?\d+(?:px)?$/i,bi=/^-?\d/,bj={position:"absolute",visibility:"hidden",display:"block"},bk=["Left","Right"],bl=["Top","Bottom"],bm,bn,bo,bp=function(a,b){return b.toUpperCase()};d.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return d.access(this,a,c,!0,function(a,c,e){return e!==b?d.style(a,c,e):d.css(a,c)})},d.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bm(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{zIndex:!0,fontWeight:!0,opacity:!0,zoom:!0,lineHeight:!0},cssProps:{"float":d.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,e,f){if(a&&a.nodeType!==3&&a.nodeType!==8&&a.style){var g,h=d.camelCase(c),i=a.style,j=d.cssHooks[h];c=d.cssProps[h]||h;if(e===b){if(j&&"get"in j&&(g=j.get(a,!1,f))!==b)return g;return i[c]}if(typeof e==="number"&&isNaN(e)||e==null)return;typeof e==="number"&&!d.cssNumber[h]&&(e+="px");if(!j||!("set"in j)||(e=j.set(a,e))!==b)try{i[c]=e}catch(k){}}},css:function(a,c,e){var f,g=d.camelCase(c),h=d.cssHooks[g];c=d.cssProps[g]||g;if(h&&"get"in h&&(f=h.get(a,!0,e))!==b)return f;if(bm)return bm(a,c,g)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]},camelCase:function(a){return a.replace(bf,bp)}}),d.curCSS=d.css,d.each(["height","width"],function(a,b){d.cssHooks[b]={get:function(a,c,e){var f;if(c){a.offsetWidth!==0?f=bq(a,b,e):d.swap(a,bj,function(){f=bq(a,b,e)});if(f<=0){f=bm(a,b,b),f==="0px"&&bo&&(f=bo(a,b,b));if(f!=null)return f===""||f==="auto"?"0px":f}if(f<0||f==null){f=a.style[b];return f===""||f==="auto"?"0px":f}return typeof f==="string"?f:f+"px"}},set:function(a,b){if(!bh.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),d.support.opacity||(d.cssHooks.opacity={get:function(a,b){return be.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style;c.zoom=1;var e=d.isNaN(b)?"":"alpha(opacity="+b*100+")",f=c.filter||"";c.filter=bd.test(f)?f.replace(bd,e):c.filter+" "+e}}),d(function(){d.support.reliableMarginRight||(d.cssHooks.marginRight={get:function(a,b){var c;d.swap(a,{display:"inline-block"},function(){b?c=bm(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bn=function(a,c,e){var f,g,h;e=e.replace(bg,"-$1").toLowerCase();if(!(g=a.ownerDocument.defaultView))return b;if(h=g.getComputedStyle(a,null))f=h.getPropertyValue(e),f===""&&!d.contains(a.ownerDocument.documentElement,a)&&(f=d.style(a,e));return f}),c.documentElement.currentStyle&&(bo=function(a,b){var c,d=a.currentStyle&&a.currentStyle[b],e=a.runtimeStyle&&a.runtimeStyle[b],f=a.style;!bh.test(d)&&bi.test(d)&&(c=f.left,e&&(a.runtimeStyle.left=a.currentStyle.left),f.left=b==="fontSize"?"1em":d||0,d=f.pixelLeft+"px",f.left=c,e&&(a.runtimeStyle.left=e));return d===""?"auto":d}),bm=bn||bo,d.expr&&d.expr.filters&&(d.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!d.support.reliableHiddenOffsets&&(a.style.display||d.css(a,"display"))==="none"},d.expr.filters.visible=function(a){return!d.expr.filters.hidden(a)});var br=/%20/g,bs=/\[\]$/,bt=/\r?\n/g,bu=/#.*$/,bv=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bw=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bx=/^(?:about|app|app\-storage|.+\-extension|file|widget):$/,by=/^(?:GET|HEAD)$/,bz=/^\/\//,bA=/\?/,bB=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bC=/^(?:select|textarea)/i,bD=/\s+/,bE=/([?&])_=[^&]*/,bF=/(^|\-)([a-z])/g,bG=function(a,b,c){return b+c.toUpperCase()},bH=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bI=d.fn.load,bJ={},bK={},bL,bM;try{bL=c.location.href}catch(bN){bL=c.createElement("a"),bL.href="",bL=bL.href}bM=bH.exec(bL.toLowerCase())||[],d.fn.extend({load:function(a,c,e){if(typeof a!=="string"&&bI)return bI.apply(this,arguments);if(!this.length)return this;var f=a.indexOf(" ");if(f>=0){var g=a.slice(f,a.length);a=a.slice(0,f)}var h="GET";c&&(d.isFunction(c)?(e=c,c=b):typeof c==="object"&&(c=d.param(c,d.ajaxSettings.traditional),h="POST"));var i=this;d.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?d("<div>").append(c.replace(bB,"")).find(g):c)),e&&i.each(e,[c,b,a])}});return this},serialize:function(){return d.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?d.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bC.test(this.nodeName)||bw.test(this.type))}).map(function(a,b){var c=d(this).val();return c==null?null:d.isArray(c)?d.map(c,function(a,c){return{name:b.name,value:a.replace(bt,"\r\n")}}):{name:b.name,value:c.replace(bt,"\r\n")}}).get()}}),d.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){d.fn[b]=function(a){return this.bind(b,a)}}),d.each(["get","post"],function(a,c){d[c]=function(a,e,f,g){d.isFunction(e)&&(g=g||f,f=e,e=b);return d.ajax({type:c,url:a,data:e,success:f,dataType:g})}}),d.extend({getScript:function(a,c){return d.get(a,b,c,"script")},getJSON:function(a,b,c){return d.get(a,b,c,"json")},ajaxSetup:function(a,b){b?d.extend(!0,a,d.ajaxSettings,b):(b=a,a=d.extend(!0,d.ajaxSettings,b));for(var c in {context:1,url:1})c in b?a[c]=b[c]:c in d.ajaxSettings&&(a[c]=d.ajaxSettings[c]);return a},ajaxSettings:{url:bL,isLocal:bx.test(bM[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":"*/*"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":d.parseJSON,"text xml":d.parseXML}},ajaxPrefilter:bO(bJ),ajaxTransport:bO(bK),ajax:function(a,c){function v(a,c,l,n){if(r!==2){r=2,p&&clearTimeout(p),o=b,m=n||"",u.readyState=a?4:0;var q,t,v,w=l?bR(e,u,l):b,x,y;if(a>=200&&a<300||a===304){if(e.ifModified){if(x=u.getResponseHeader("Last-Modified"))d.lastModified[k]=x;if(y=u.getResponseHeader("Etag"))d.etag[k]=y}if(a===304)c="notmodified",q=!0;else try{t=bS(e,w),c="success",q=!0}catch(z){c="parsererror",v=z}}else{v=c;if(!c||a)c="error",a<0&&(a=0)}u.status=a,u.statusText=c,q?h.resolveWith(f,[t,c,u]):h.rejectWith(f,[u,c,v]),u.statusCode(j),j=b,s&&g.trigger("ajax"+(q?"Success":"Error"),[u,e,q?t:v]),i.resolveWith(f,[u,c]),s&&(g.trigger("ajaxComplete",[u,e]),--d.active||d.event.trigger("ajaxStop"))}}typeof a==="object"&&(c=a,a=b),c=c||{};var e=d.ajaxSetup({},c),f=e.context||e,g=f!==e&&(f.nodeType||f instanceof d)?d(f):d.event,h=d.Deferred(),i=d._Deferred(),j=e.statusCode||{},k,l={},m,n,o,p,q,r=0,s,t,u={readyState:0,setRequestHeader:function(a,b){r||(l[a.toLowerCase().replace(bF,bG)]=b);return this},getAllResponseHeaders:function(){return r===2?m:null},getResponseHeader:function(a){var c;if(r===2){if(!n){n={};while(c=bv.exec(m))n[c[1].toLowerCase()]=c[2]}c=n[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){r||(e.mimeType=a);return this},abort:function(a){a=a||"abort",o&&o.abort(a),v(0,a);return this}};h.promise(u),u.success=u.done,u.error=u.fail,u.complete=i.done,u.statusCode=function(a){if(a){var b;if(r<2)for(b in a)j[b]=[j[b],a[b]];else b=a[u.status],u.then(b,b)}return this},e.url=((a||e.url)+"").replace(bu,"").replace(bz,bM[1]+"//"),e.dataTypes=d.trim(e.dataType||"*").toLowerCase().split(bD),e.crossDomain==null&&(q=bH.exec(e.url.toLowerCase()),e.crossDomain=q&&(q[1]!=bM[1]||q[2]!=bM[2]||(q[3]||(q[1]==="http:"?80:443))!=(bM[3]||(bM[1]==="http:"?80:443)))),e.data&&e.processData&&typeof e.data!=="string"&&(e.data=d.param(e.data,e.traditional)),bP(bJ,e,c,u);if(r===2)return!1;s=e.global,e.type=e.type.toUpperCase(),e.hasContent=!by.test(e.type),s&&d.active++===0&&d.event.trigger("ajaxStart");if(!e.hasContent){e.data&&(e.url+=(bA.test(e.url)?"&":"?")+e.data),k=e.url;if(e.cache===!1){var w=d.now(),x=e.url.replace(bE,"$1_="+w);e.url=x+(x===e.url?(bA.test(e.url)?"&":"?")+"_="+w:"")}}if(e.data&&e.hasContent&&e.contentType!==!1||c.contentType)l["Content-Type"]=e.contentType;e.ifModified&&(k=k||e.url,d.lastModified[k]&&(l["If-Modified-Since"]=d.lastModified[k]),d.etag[k]&&(l["If-None-Match"]=d.etag[k])),l.Accept=e.dataTypes[0]&&e.accepts[e.dataTypes[0]]?e.accepts[e.dataTypes[0]]+(e.dataTypes[0]!=="*"?", */*; q=0.01":""):e.accepts["*"];for(t in e.headers)u.setRequestHeader(t,e.headers[t]);if(e.beforeSend&&(e.beforeSend.call(f,u,e)===!1||r===2)){u.abort();return!1}for(t in {success:1,error:1,complete:1})u[t](e[t]);o=bP(bK,e,c,u);if(o){u.readyState=1,s&&g.trigger("ajaxSend",[u,e]),e.async&&e.timeout>0&&(p=setTimeout(function(){u.abort("timeout")},e.timeout));try{r=1,o.send(l,v)}catch(y){status<2?v(-1,y):d.error(y)}}else v(-1,"No Transport");return u},param:function(a,c){var e=[],f=function(a,b){b=d.isFunction(b)?b():b,e[e.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=d.ajaxSettings.traditional);if(d.isArray(a)||a.jquery&&!d.isPlainObject(a))d.each(a,function(){f(this.name,this.value)});else for(var g in a)bQ(g,a[g],c,f);return e.join("&").replace(br,"+")}}),d.extend({active:0,lastModified:{},etag:{}});var bT=d.now(),bU=/(\=)\?(&|$)|\?\?/i;d.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return d.expando+"_"+bT++}}),d.ajaxPrefilter("json jsonp",function(b,c,e){var f=typeof b.data==="string";if(b.dataTypes[0]==="jsonp"||c.jsonpCallback||c.jsonp!=null||b.jsonp!==!1&&(bU.test(b.url)||f&&bU.test(b.data))){var g,h=b.jsonpCallback=d.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2",m=function(){a[h]=i,g&&d.isFunction(i)&&a[h](g[0])};b.jsonp!==!1&&(j=j.replace(bU,l),b.url===j&&(f&&(k=k.replace(bU,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},e.then(m,m),b.converters["script json"]=function(){g||d.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),d.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){d.globalEval(a);return a}}}),d.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),d.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var bV=d.now(),bW,bX;d.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&bZ()||b$()}:bZ,bX=d.ajaxSettings.xhr(),d.support.ajax=!!bX,d.support.cors=bX&&"withCredentials"in bX,bX=b,d.support.ajax&&d.ajaxTransport(function(a){if(!a.crossDomain||d.support.cors){var c;return{send:function(e,f){var g=a.xhr(),h,i;a.username?g.open(a.type,a.url,a.async,a.username,a.password):g.open(a.type,a.url,a.async);if(a.xhrFields)for(i in a.xhrFields)g[i]=a.xhrFields[i];a.mimeType&&g.overrideMimeType&&g.overrideMimeType(a.mimeType),!a.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(i in e)g.setRequestHeader(i,e[i])}catch(j){}g.send(a.hasContent&&a.data||null),c=function(e,i){var j,k,l,m,n;try{if(c&&(i||g.readyState===4)){c=b,h&&(g.onreadystatechange=d.noop,delete bW[h]);if(i)g.readyState!==4&&g.abort();else{j=g.status,l=g.getAllResponseHeaders(),m={},n=g.responseXML,n&&n.documentElement&&(m.xml=n),m.text=g.responseText;try{k=g.statusText}catch(o){k=""}j||!a.isLocal||a.crossDomain?j===1223&&(j=204):j=m.text?200:404}}}catch(p){i||f(-1,p)}m&&f(j,k,m,l)},a.async&&g.readyState!==4?(bW||(bW={},bY()),h=bV++,g.onreadystatechange=bW[h]=c):c()},abort:function(){c&&c(0,1)}}}});var b_={},ca=/^(?:toggle|show|hide)$/,cb=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cc,cd=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];d.fn.extend({show:function(a,b,c){var e,f;if(a||a===0)return this.animate(ce("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)e=this[g],f=e.style.display,!d._data(e,"olddisplay")&&f==="none"&&(f=e.style.display=""),f===""&&d.css(e,"display")==="none"&&d._data(e,"olddisplay",cf(e.nodeName));for(g=0;g<h;g++){e=this[g],f=e.style.display;if(f===""||f==="none")e.style.display=d._data(e,"olddisplay")||""}return this},hide:function(a,b,c){if(a||a===0)return this.animate(ce("hide",3),a,b,c);for(var e=0,f=this.length;e<f;e++){var g=d.css(this[e],"display");g!=="none"&&!d._data(this[e],"olddisplay")&&d._data(this[e],"olddisplay",g)}for(e=0;e<f;e++)this[e].style.display="none";return this},_toggle:d.fn.toggle,toggle:function(a,b,c){var e=typeof a==="boolean";d.isFunction(a)&&d.isFunction(b)?this._toggle.apply(this,arguments):a==null||e?this.each(function(){var b=e?a:d(this).is(":hidden");d(this)[b?"show":"hide"]()}):this.animate(ce("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,e){var f=d.speed(b,c,e);if(d.isEmptyObject(a))return this.each(f.complete);return this[f.queue===!1?"each":"queue"](function(){var b=d.extend({},f),c,e=this.nodeType===1,g=e&&d(this).is(":hidden"),h=this;for(c in a){var i=d.camelCase(c);c!==i&&(a[i]=a[c],delete a[c],c=i);if(a[c]==="hide"&&g||a[c]==="show"&&!g)return b.complete.call(this);if(e&&(c==="height"||c==="width")){b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(d.css(this,"display")==="inline"&&d.css(this,"float")==="none")if(d.support.inlineBlockNeedsLayout){var j=cf(this.nodeName);j==="inline"?this.style.display="inline-block":(this.style.display="inline",this.style.zoom=1)}else this.style.display="inline-block"}d.isArray(a[c])&&((b.specialEasing=b.specialEasing||{})[c]=a[c][1],a[c]=a[c][0])}b.overflow!=null&&(this.style.overflow="hidden"),b.curAnim=d.extend({},a),d.each(a,function(c,e){var f=new d.fx(h,b,c);if(ca.test(e))f[e==="toggle"?g?"show":"hide":e](a);else{var i=cb.exec(e),j=f.cur();if(i){var k=parseFloat(i[2]),l=i[3]||(d.cssNumber[c]?"":"px");l!=="px"&&(d.style(h,c,(k||1)+l),j=(k||1)/f.cur()*j,d.style(h,c,j+l)),i[1]&&(k=(i[1]==="-="?-1:1)*k+j),f.custom(j,k,l)}else f.custom(j,e,"")}});return!0})},stop:function(a,b){var c=d.timers;a&&this.queue([]),this.each(function(){for(var a=c.length-1;a>=0;a--)c[a].elem===this&&(b&&c[a](!0),c.splice(a,1))}),b||this.dequeue();return this}}),d.each({slideDown:ce("show",1),slideUp:ce("hide",1),slideToggle:ce("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){d.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),d.extend({speed:function(a,b,c){var e=a&&typeof a==="object"?d.extend({},a):{complete:c||!c&&b||d.isFunction(a)&&a,duration:a,easing:c&&b||b&&!d.isFunction(b)&&b};e.duration=d.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in d.fx.speeds?d.fx.speeds[e.duration]:d.fx.speeds._default,e.old=e.complete,e.complete=function(){e.queue!==!1&&d(this).dequeue(),d.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig||(b.orig={})}}),d.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(d.fx.step[this.prop]||d.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=d.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,b,c){function g(a){return e.step(a)}var e=this,f=d.fx;this.startTime=d.now(),this.start=a,this.end=b,this.unit=c||this.unit||(d.cssNumber[this.prop]?"":"px"),this.now=this.start,this.pos=this.state=0,g.elem=this.elem,g()&&d.timers.push(g)&&!cc&&(cc=setInterval(f.tick,f.interval))},show:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.show=!0,this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),d(this.elem).show()},hide:function(){this.options.orig[this.prop]=d.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b=d.now(),c=!0;if(a||b>=this.options.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),this.options.curAnim[this.prop]=!0;for(var e in this.options.curAnim)this.options.curAnim[e]!==!0&&(c=!1);if(c){if(this.options.overflow!=null&&!d.support.shrinkWrapBlocks){var f=this.elem,g=this.options;d.each(["","X","Y"],function(a,b){f.style["overflow"+b]=g.overflow[a]})}this.options.hide&&d(this.elem).hide();if(this.options.hide||this.options.show)for(var h in this.options.curAnim)d.style(this.elem,h,this.options.orig[h]);this.options.complete.call(this.elem)}return!1}var i=b-this.startTime;this.state=i/this.options.duration;var j=this.options.specialEasing&&this.options.specialEasing[this.prop],k=this.options.easing||(d.easing.swing?"swing":"linear");this.pos=d.easing[j||k](this.state,i,0,1,this.options.duration),this.now=this.start+(this.end-this.start)*this.pos,this.update();return!0}},d.extend(d.fx,{tick:function(){var a=d.timers;for(var b=0;b<a.length;b++)a[b]()||a.splice(b--,1);a.length||d.fx.stop()},interval:13,stop:function(){clearInterval(cc),cc=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){d.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=(a.prop==="width"||a.prop==="height"?Math.max(0,a.now):a.now)+a.unit:a.elem[a.prop]=a.now}}}),d.expr&&d.expr.filters&&(d.expr.filters.animated=function(a){return d.grep(d.timers,function(b){return a===b.elem}).length});var cg=/^t(?:able|d|h)$/i,ch=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?d.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,g=f.documentElement;if(!c||!d.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=f.body,i=ci(f),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||d.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||d.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:d.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){d.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return d.offset.bodyOffset(b);d.offset.initialize();var c,e=b.offsetParent,f=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(d.offset.supportsFixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===e&&(l+=b.offsetTop,m+=b.offsetLeft,d.offset.doesNotAddBorder&&(!d.offset.doesAddBorderForTableAndCells||!cg.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),f=e,e=b.offsetParent),d.offset.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;d.offset.supportsFixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},d.offset={initialize:function(){var a=c.body,b=c.createElement("div"),e,f,g,h,i=parseFloat(d.css(a,"marginTop"))||0,j="<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";d.extend(b.style,{position:"absolute",top:0,left:0,margin:0,border:0,width:"1px",height:"1px",visibility:"hidden"}),b.innerHTML=j,a.insertBefore(b,a.firstChild),e=b.firstChild,f=e.firstChild,h=e.nextSibling.firstChild.firstChild,this.doesNotAddBorder=f.offsetTop!==5,this.doesAddBorderForTableAndCells=h.offsetTop===5,f.style.position="fixed",f.style.top="20px",this.supportsFixedPosition=f.offsetTop===20||f.offsetTop===15,f.style.position=f.style.top="",e.style.overflow="hidden",e.style.position="relative",this.subtractsBorderForOverflowNotVisible=f.offsetTop===-5,this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==i,a.removeChild(b),d.offset.initialize=d.noop},bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;d.offset.initialize(),d.offset.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(d.css(a,"marginTop"))||0,c+=parseFloat(d.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var e=d.css(a,"position");e==="static"&&(a.style.position="relative");var f=d(a),g=f.offset(),h=d.css(a,"top"),i=d.css(a,"left"),j=(e==="absolute"||e==="fixed")&&d.inArray("auto",[h,i])>-1,k={},l={},m,n;j&&(l=f.position()),m=j?l.top:parseInt(h,10)||0,n=j?l.left:parseInt(i,10)||0,d.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):f.css(k)}},d.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),e=ch.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(d.css(a,"marginTop"))||0,c.left-=parseFloat(d.css(a,"marginLeft"))||0,e.top+=parseFloat(d.css(b[0],"borderTopWidth"))||0,e.left+=parseFloat(d.css(b[0],"borderLeftWidth"))||0;return{top:c.top-e.top,left:c.left-e.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&(!ch.test(a.nodeName)&&d.css(a,"position")==="static"))a=a.offsetParent;return a})}}),d.each(["Left","Top"],function(a,c){var e="scroll"+c;d.fn[e]=function(c){var f=this[0],g;if(!f)return null;if(c!==b)return this.each(function(){g=ci(this),g?g.scrollTo(a?d(g).scrollLeft():c,a?c:d(g).scrollTop()):this[e]=c});g=ci(f);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:d.support.boxModel&&g.document.documentElement[e]||g.document.body[e]:f[e]}}),d.each(["Height","Width"],function(a,c){var e=c.toLowerCase();d.fn["inner"+c]=function(){return this[0]?parseFloat(d.css(this[0],e,"padding")):null},d.fn["outer"+c]=function(a){return this[0]?parseFloat(d.css(this[0],e,a?"margin":"border")):null},d.fn[e]=function(a){var f=this[0];if(!f)return a==null?null:this;if(d.isFunction(a))return this.each(function(b){var c=d(this);c[e](a.call(this,b,c[e]()))});if(d.isWindow(f)){var g=f.document.documentElement["client"+c];return f.document.compatMode==="CSS1Compat"&&g||f.document.body["client"+c]||g}if(f.nodeType===9)return Math.max(f.documentElement["client"+c],f.body["scroll"+c],f.documentElement["scroll"+c],f.body["offset"+c],f.documentElement["offset"+c]);if(a===b){var h=d.css(f,e),i=parseFloat(h);return d.isNaN(i)?h:i}return this.css(e,typeof a==="string"?a:a+"px")}}),a.jQuery=a.$=d})(window);
\ No newline at end of file
Added: trunk/bow-ui/src/main/webapp/js/jquery-ui-1.8.11.custom.min.js
===================================================================
--- trunk/bow-ui/src/main/webapp/js/jquery-ui-1.8.11.custom.min.js (rev 0)
+++ trunk/bow-ui/src/main/webapp/js/jquery-ui-1.8.11.custom.min.js 2011-04-19 06:36:50 UTC (rev 243)
@@ -0,0 +1,114 @@
+/*!
+ * jQuery UI 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI
+ */
+(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.11",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,
+NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this,
+"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position");
+if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"),10);if(!isNaN(b)&&b!==0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind((c.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f,
+"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c(this).css(h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c(this).css(h,
+d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}});
+c(function(){var a=document.body,b=a.appendChild(b=document.createElement("div"));c.extend(b.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.offsetHeight===100;c.support.selectstart="onselectstart"in b;a.removeChild(b).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&
+b[e][1].apply(a.element,d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery);
+;/*!
+ * jQuery UI Widget 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Widget
+ */
+(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h,
+a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.charAt(0)==="_")return h;
+e?this.each(function(){var g=b.data(this,a),i=g&&b.isFunction(g[d])?g[d].apply(g,f):g;if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,
+this._getCreateOptions(),a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._trigger("create");this._init()},_getCreateOptions:function(){return b.metadata&&b.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled ui-state-disabled")},
+widget:function(){return this.element},option:function(a,c){var d=a;if(arguments.length===0)return b.extend({},this.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}this._setOptions(d);return this},_setOptions:function(a){var c=this;b.each(a,function(d,e){c._setOption(d,e)});return this},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},
+enable:function(){return this._setOption("disabled",false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery);
+;/*
+ * jQuery UI Position 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Position
+ */
+(function(c){c.ui=c.ui||{};var n=/left|center|right/,o=/top|center|bottom/,t=c.fn.position,u=c.fn.offset;c.fn.position=function(b){if(!b||!b.of)return t.apply(this,arguments);b=c.extend({},b);var a=c(b.of),d=a[0],g=(b.collision||"flip").split(" "),e=b.offset?b.offset.split(" "):[0,0],h,k,j;if(d.nodeType===9){h=a.width();k=a.height();j={top:0,left:0}}else if(d.setTimeout){h=a.width();k=a.height();j={top:a.scrollTop(),left:a.scrollLeft()}}else if(d.preventDefault){b.at="left top";h=k=0;j={top:b.of.pageY,
+left:b.of.pageX}}else{h=a.outerWidth();k=a.outerHeight();j=a.offset()}c.each(["my","at"],function(){var f=(b[this]||"").split(" ");if(f.length===1)f=n.test(f[0])?f.concat(["center"]):o.test(f[0])?["center"].concat(f):["center","center"];f[0]=n.test(f[0])?f[0]:"center";f[1]=o.test(f[1])?f[1]:"center";b[this]=f});if(g.length===1)g[1]=g[0];e[0]=parseInt(e[0],10)||0;if(e.length===1)e[1]=e[0];e[1]=parseInt(e[1],10)||0;if(b.at[0]==="right")j.left+=h;else if(b.at[0]==="center")j.left+=h/2;if(b.at[1]==="bottom")j.top+=
+k;else if(b.at[1]==="center")j.top+=k/2;j.left+=e[0];j.top+=e[1];return this.each(function(){var f=c(this),l=f.outerWidth(),m=f.outerHeight(),p=parseInt(c.curCSS(this,"marginLeft",true))||0,q=parseInt(c.curCSS(this,"marginTop",true))||0,v=l+p+(parseInt(c.curCSS(this,"marginRight",true))||0),w=m+q+(parseInt(c.curCSS(this,"marginBottom",true))||0),i=c.extend({},j),r;if(b.my[0]==="right")i.left-=l;else if(b.my[0]==="center")i.left-=l/2;if(b.my[1]==="bottom")i.top-=m;else if(b.my[1]==="center")i.top-=
+m/2;i.left=Math.round(i.left);i.top=Math.round(i.top);r={left:i.left-p,top:i.top-q};c.each(["left","top"],function(s,x){c.ui.position[g[s]]&&c.ui.position[g[s]][x](i,{targetWidth:h,targetHeight:k,elemWidth:l,elemHeight:m,collisionPosition:r,collisionWidth:v,collisionHeight:w,offset:e,my:b.my,at:b.at})});c.fn.bgiframe&&f.bgiframe();f.offset(c.extend(i,{using:b.using}))})};c.ui.position={fit:{left:function(b,a){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();b.left=
+d>0?b.left-d:Math.max(b.left-a.collisionPosition.left,b.left)},top:function(b,a){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();b.top=d>0?b.top-d:Math.max(b.top-a.collisionPosition.top,b.top)}},flip:{left:function(b,a){if(a.at[0]!=="center"){var d=c(window);d=a.collisionPosition.left+a.collisionWidth-d.width()-d.scrollLeft();var g=a.my[0]==="left"?-a.elemWidth:a.my[0]==="right"?a.elemWidth:0,e=a.at[0]==="left"?a.targetWidth:-a.targetWidth,h=-2*a.offset[0];b.left+=
+a.collisionPosition.left<0?g+e+h:d>0?g+e+h:0}},top:function(b,a){if(a.at[1]!=="center"){var d=c(window);d=a.collisionPosition.top+a.collisionHeight-d.height()-d.scrollTop();var g=a.my[1]==="top"?-a.elemHeight:a.my[1]==="bottom"?a.elemHeight:0,e=a.at[1]==="top"?a.targetHeight:-a.targetHeight,h=-2*a.offset[1];b.top+=a.collisionPosition.top<0?g+e+h:d>0?g+e+h:0}}}};if(!c.offset.setOffset){c.offset.setOffset=function(b,a){if(/static/.test(c.curCSS(b,"position")))b.style.position="relative";var d=c(b),
+g=d.offset(),e=parseInt(c.curCSS(b,"top",true),10)||0,h=parseInt(c.curCSS(b,"left",true),10)||0;g={top:a.top-g.top+e,left:a.left-g.left+h};"using"in a?a.using.call(b,g):d.css(g)};c.fn.offset=function(b){var a=this[0];if(!a||!a.ownerDocument)return null;if(b)return this.each(function(){c.offset.setOffset(this,b)});return u.call(this)}}})(jQuery);
+;/*
+ * jQuery UI Button 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Button
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ */
+(function(a){var g,i=function(b){a(":ui-button",b.target.form).each(function(){var c=a(this).data("button");setTimeout(function(){c.refresh()},1)})},h=function(b){var c=b.name,d=b.form,f=a([]);if(c)f=d?a(d).find("[name='"+c+"']"):a("[name='"+c+"']",b.ownerDocument).filter(function(){return!this.form});return f};a.widget("ui.button",{options:{disabled:null,text:true,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset.button").bind("reset.button",
+i);if(typeof this.options.disabled!=="boolean")this.options.disabled=this.element.attr("disabled");this._determineButtonType();this.hasTitle=!!this.buttonElement.attr("title");var b=this,c=this.options,d=this.type==="checkbox"||this.type==="radio",f="ui-state-hover"+(!d?" ui-state-active":"");if(c.label===null)c.label=this.buttonElement.html();if(this.element.is(":disabled"))c.disabled=true;this.buttonElement.addClass("ui-button ui-widget ui-state-default ui-corner-all").attr("role","button").bind("mouseenter.button",
+function(){if(!c.disabled){a(this).addClass("ui-state-hover");this===g&&a(this).addClass("ui-state-active")}}).bind("mouseleave.button",function(){c.disabled||a(this).removeClass(f)}).bind("focus.button",function(){a(this).addClass("ui-state-focus")}).bind("blur.button",function(){a(this).removeClass("ui-state-focus")});d&&this.element.bind("change.button",function(){b.refresh()});if(this.type==="checkbox")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).toggleClass("ui-state-active");
+b.buttonElement.attr("aria-pressed",b.element[0].checked)});else if(this.type==="radio")this.buttonElement.bind("click.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");b.buttonElement.attr("aria-pressed",true);var e=b.element[0];h(e).not(e).map(function(){return a(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed",false)});else{this.buttonElement.bind("mousedown.button",function(){if(c.disabled)return false;a(this).addClass("ui-state-active");
+g=this;a(document).one("mouseup",function(){g=null})}).bind("mouseup.button",function(){if(c.disabled)return false;a(this).removeClass("ui-state-active")}).bind("keydown.button",function(e){if(c.disabled)return false;if(e.keyCode==a.ui.keyCode.SPACE||e.keyCode==a.ui.keyCode.ENTER)a(this).addClass("ui-state-active")}).bind("keyup.button",function(){a(this).removeClass("ui-state-active")});this.buttonElement.is("a")&&this.buttonElement.keyup(function(e){e.keyCode===a.ui.keyCode.SPACE&&a(this).click()})}this._setOption("disabled",
+c.disabled)},_determineButtonType:function(){this.type=this.element.is(":checkbox")?"checkbox":this.element.is(":radio")?"radio":this.element.is("input")?"input":"button";if(this.type==="checkbox"||this.type==="radio"){var b=this.element.parents().filter(":last"),c="label[for="+this.element.attr("id")+"]";this.buttonElement=b.find(c);if(!this.buttonElement.length){b=b.length?b.siblings():this.element.siblings();this.buttonElement=b.filter(c);if(!this.buttonElement.length)this.buttonElement=b.find(c)}this.element.addClass("ui-helper-hidden-accessible");
+(b=this.element.is(":checked"))&&this.buttonElement.addClass("ui-state-active");this.buttonElement.attr("aria-pressed",b)}else this.buttonElement=this.element},widget:function(){return this.buttonElement},destroy:function(){this.element.removeClass("ui-helper-hidden-accessible");this.buttonElement.removeClass("ui-button ui-widget ui-state-default ui-corner-all ui-state-hover ui-state-active ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only").removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html());
+this.hasTitle||this.buttonElement.removeAttr("title");a.Widget.prototype.destroy.call(this)},_setOption:function(b,c){a.Widget.prototype._setOption.apply(this,arguments);if(b==="disabled")c?this.element.attr("disabled",true):this.element.removeAttr("disabled");this._resetButton()},refresh:function(){var b=this.element.is(":disabled");b!==this.options.disabled&&this._setOption("disabled",b);if(this.type==="radio")h(this.element[0]).each(function(){a(this).is(":checked")?a(this).button("widget").addClass("ui-state-active").attr("aria-pressed",
+true):a(this).button("widget").removeClass("ui-state-active").attr("aria-pressed",false)});else if(this.type==="checkbox")this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed",true):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed",false)},_resetButton:function(){if(this.type==="input")this.options.label&&this.element.val(this.options.label);else{var b=this.buttonElement.removeClass("ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only"),
+c=a("<span></span>").addClass("ui-button-text").html(this.options.label).appendTo(b.empty()).text(),d=this.options.icons,f=d.primary&&d.secondary,e=[];if(d.primary||d.secondary){if(this.options.text)e.push("ui-button-text-icon"+(f?"s":d.primary?"-primary":"-secondary"));d.primary&&b.prepend("<span class='ui-button-icon-primary ui-icon "+d.primary+"'></span>");d.secondary&&b.append("<span class='ui-button-icon-secondary ui-icon "+d.secondary+"'></span>");if(!this.options.text){e.push(f?"ui-button-icons-only":
+"ui-button-icon-only");this.hasTitle||b.attr("title",c)}}else e.push("ui-button-text-only");b.addClass(e.join(" "))}}});a.widget("ui.buttonset",{options:{items:":button, :submit, :reset, :checkbox, :radio, a, :data(button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(b,c){b==="disabled"&&this.buttons.button("option",b,c);a.Widget.prototype._setOption.apply(this,arguments)},refresh:function(){this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass("ui-corner-left").end().filter(":last").addClass("ui-corner-right").end().end()},
+destroy:function(){this.element.removeClass("ui-buttonset");this.buttons.map(function(){return a(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy");a.Widget.prototype.destroy.call(this)}})})(jQuery);
+;/*
+ * jQuery UI Dialog 1.8.11
+ *
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * http://docs.jquery.com/UI/Dialog
+ *
+ * Depends:
+ * jquery.ui.core.js
+ * jquery.ui.widget.js
+ * jquery.ui.button.js
+ * jquery.ui.draggable.js
+ * jquery.ui.mouse.js
+ * jquery.ui.position.js
+ * jquery.ui.resizable.js
+ */
+(function(c,j){var k={buttons:true,height:true,maxHeight:true,maxWidth:true,minHeight:true,minWidth:true,width:true},l={maxHeight:true,maxWidth:true,minHeight:true,minWidth:true};c.widget("ui.dialog",{options:{autoOpen:true,buttons:{},closeOnEscape:true,closeText:"close",dialogClass:"",draggable:true,hide:null,height:"auto",maxHeight:false,maxWidth:false,minHeight:150,minWidth:150,modal:false,position:{my:"center",at:"center",collision:"fit",using:function(a){var b=c(this).css(a).offset().top;b<0&&
+c(this).css("top",a.top-b)}},resizable:true,show:null,stack:true,title:"",width:300,zIndex:1E3},_create:function(){this.originalTitle=this.element.attr("title");if(typeof this.originalTitle!=="string")this.originalTitle="";this.options.title=this.options.title||this.originalTitle;var a=this,b=a.options,d=b.title||" ",e=c.ui.dialog.getTitleId(a.element),g=(a.uiDialog=c("<div></div>")).appendTo(document.body).hide().addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b.dialogClass).css({zIndex:b.zIndex}).attr("tabIndex",
+-1).css("outline",0).keydown(function(i){if(b.closeOnEscape&&i.keyCode&&i.keyCode===c.ui.keyCode.ESCAPE){a.close(i);i.preventDefault()}}).attr({role:"dialog","aria-labelledby":e}).mousedown(function(i){a.moveToTop(false,i)});a.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(g);var f=(a.uiDialogTitlebar=c("<div></div>")).addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(g),h=c('<a href="#"></a>').addClass("ui-dialog-titlebar-close ui-corner-all").attr("role",
+"button").hover(function(){h.addClass("ui-state-hover")},function(){h.removeClass("ui-state-hover")}).focus(function(){h.addClass("ui-state-focus")}).blur(function(){h.removeClass("ui-state-focus")}).click(function(i){a.close(i);return false}).appendTo(f);(a.uiDialogTitlebarCloseText=c("<span></span>")).addClass("ui-icon ui-icon-closethick").text(b.closeText).appendTo(h);c("<span></span>").addClass("ui-dialog-title").attr("id",e).html(d).prependTo(f);if(c.isFunction(b.beforeclose)&&!c.isFunction(b.beforeClose))b.beforeClose=
+b.beforeclose;f.find("*").add(f).disableSelection();b.draggable&&c.fn.draggable&&a._makeDraggable();b.resizable&&c.fn.resizable&&a._makeResizable();a._createButtons(b.buttons);a._isOpen=false;c.fn.bgiframe&&g.bgiframe()},_init:function(){this.options.autoOpen&&this.open()},destroy:function(){var a=this;a.overlay&&a.overlay.destroy();a.uiDialog.hide();a.element.unbind(".dialog").removeData("dialog").removeClass("ui-dialog-content ui-widget-content").hide().appendTo("body");a.uiDialog.remove();a.originalTitle&&
+a.element.attr("title",a.originalTitle);return a},widget:function(){return this.uiDialog},close:function(a){var b=this,d,e;if(false!==b._trigger("beforeClose",a)){b.overlay&&b.overlay.destroy();b.uiDialog.unbind("keypress.ui-dialog");b._isOpen=false;if(b.options.hide)b.uiDialog.hide(b.options.hide,function(){b._trigger("close",a)});else{b.uiDialog.hide();b._trigger("close",a)}c.ui.dialog.overlay.resize();if(b.options.modal){d=0;c(".ui-dialog").each(function(){if(this!==b.uiDialog[0]){e=c(this).css("z-index");
+isNaN(e)||(d=Math.max(d,e))}});c.ui.dialog.maxZ=d}return b}},isOpen:function(){return this._isOpen},moveToTop:function(a,b){var d=this,e=d.options;if(e.modal&&!a||!e.stack&&!e.modal)return d._trigger("focus",b);if(e.zIndex>c.ui.dialog.maxZ)c.ui.dialog.maxZ=e.zIndex;if(d.overlay){c.ui.dialog.maxZ+=1;d.overlay.$el.css("z-index",c.ui.dialog.overlay.maxZ=c.ui.dialog.maxZ)}a={scrollTop:d.element.attr("scrollTop"),scrollLeft:d.element.attr("scrollLeft")};c.ui.dialog.maxZ+=1;d.uiDialog.css("z-index",c.ui.dialog.maxZ);
+d.element.attr(a);d._trigger("focus",b);return d},open:function(){if(!this._isOpen){var a=this,b=a.options,d=a.uiDialog;a.overlay=b.modal?new c.ui.dialog.overlay(a):null;a._size();a._position(b.position);d.show(b.show);a.moveToTop(true);b.modal&&d.bind("keypress.ui-dialog",function(e){if(e.keyCode===c.ui.keyCode.TAB){var g=c(":tabbable",this),f=g.filter(":first");g=g.filter(":last");if(e.target===g[0]&&!e.shiftKey){f.focus(1);return false}else if(e.target===f[0]&&e.shiftKey){g.focus(1);return false}}});
+c(a.element.find(":tabbable").get().concat(d.find(".ui-dialog-buttonpane :tabbable").get().concat(d.get()))).eq(0).focus();a._isOpen=true;a._trigger("open");return a}},_createButtons:function(a){var b=this,d=false,e=c("<div></div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),g=c("<div></div>").addClass("ui-dialog-buttonset").appendTo(e);b.uiDialog.find(".ui-dialog-buttonpane").remove();typeof a==="object"&&a!==null&&c.each(a,function(){return!(d=true)});if(d){c.each(a,function(f,
+h){h=c.isFunction(h)?{click:h,text:f}:h;f=c('<button type="button"></button>').attr(h,true).unbind("click").click(function(){h.click.apply(b.element[0],arguments)}).appendTo(g);c.fn.button&&f.button()});e.appendTo(b.uiDialog)}},_makeDraggable:function(){function a(f){return{position:f.position,offset:f.offset}}var b=this,d=b.options,e=c(document),g;b.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(f,h){g=
+d.height==="auto"?"auto":c(this).height();c(this).height(c(this).height()).addClass("ui-dialog-dragging");b._trigger("dragStart",f,a(h))},drag:function(f,h){b._trigger("drag",f,a(h))},stop:function(f,h){d.position=[h.position.left-e.scrollLeft(),h.position.top-e.scrollTop()];c(this).removeClass("ui-dialog-dragging").height(g);b._trigger("dragStop",f,a(h));c.ui.dialog.overlay.resize()}})},_makeResizable:function(a){function b(f){return{originalPosition:f.originalPosition,originalSize:f.originalSize,
+position:f.position,size:f.size}}a=a===j?this.options.resizable:a;var d=this,e=d.options,g=d.uiDialog.css("position");a=typeof a==="string"?a:"n,e,s,w,se,sw,ne,nw";d.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:d.element,maxWidth:e.maxWidth,maxHeight:e.maxHeight,minWidth:e.minWidth,minHeight:d._minHeight(),handles:a,start:function(f,h){c(this).addClass("ui-dialog-resizing");d._trigger("resizeStart",f,b(h))},resize:function(f,h){d._trigger("resize",f,b(h))},stop:function(f,
+h){c(this).removeClass("ui-dialog-resizing");e.height=c(this).height();e.width=c(this).width();d._trigger("resizeStop",f,b(h));c.ui.dialog.overlay.resize()}}).css("position",g).find(".ui-resizable-se").addClass("ui-icon ui-icon-grip-diagonal-se")},_minHeight:function(){var a=this.options;return a.height==="auto"?a.minHeight:Math.min(a.minHeight,a.height)},_position:function(a){var b=[],d=[0,0],e;if(a){if(typeof a==="string"||typeof a==="object"&&"0"in a){b=a.split?a.split(" "):[a[0],a[1]];if(b.length===
+1)b[1]=b[0];c.each(["left","top"],function(g,f){if(+b[g]===b[g]){d[g]=b[g];b[g]=f}});a={my:b.join(" "),at:b.join(" "),offset:d.join(" ")}}a=c.extend({},c.ui.dialog.prototype.options.position,a)}else a=c.ui.dialog.prototype.options.position;(e=this.uiDialog.is(":visible"))||this.uiDialog.show();this.uiDialog.css({top:0,left:0}).position(c.extend({of:window},a));e||this.uiDialog.hide()},_setOptions:function(a){var b=this,d={},e=false;c.each(a,function(g,f){b._setOption(g,f);if(g in k)e=true;if(g in
+l)d[g]=f});e&&this._size();this.uiDialog.is(":data(resizable)")&&this.uiDialog.resizable("option",d)},_setOption:function(a,b){var d=this,e=d.uiDialog;switch(a){case "beforeclose":a="beforeClose";break;case "buttons":d._createButtons(b);break;case "closeText":d.uiDialogTitlebarCloseText.text(""+b);break;case "dialogClass":e.removeClass(d.options.dialogClass).addClass("ui-dialog ui-widget ui-widget-content ui-corner-all "+b);break;case "disabled":b?e.addClass("ui-dialog-disabled"):e.removeClass("ui-dialog-disabled");
+break;case "draggable":var g=e.is(":data(draggable)");g&&!b&&e.draggable("destroy");!g&&b&&d._makeDraggable();break;case "position":d._position(b);break;case "resizable":(g=e.is(":data(resizable)"))&&!b&&e.resizable("destroy");g&&typeof b==="string"&&e.resizable("option","handles",b);!g&&b!==false&&d._makeResizable(b);break;case "title":c(".ui-dialog-title",d.uiDialogTitlebar).html(""+(b||" "));break}c.Widget.prototype._setOption.apply(d,arguments)},_size:function(){var a=this.options,b,d,e=
+this.uiDialog.is(":visible");this.element.show().css({width:"auto",minHeight:0,height:0});if(a.minWidth>a.width)a.width=a.minWidth;b=this.uiDialog.css({height:"auto",width:a.width}).height();d=Math.max(0,a.minHeight-b);if(a.height==="auto")if(c.support.minHeight)this.element.css({minHeight:d,height:"auto"});else{this.uiDialog.show();a=this.element.css("height","auto").height();e||this.uiDialog.hide();this.element.height(Math.max(a,d))}else this.element.height(Math.max(a.height-b,0));this.uiDialog.is(":data(resizable)")&&
+this.uiDialog.resizable("option","minHeight",this._minHeight())}});c.extend(c.ui.dialog,{version:"1.8.11",uuid:0,maxZ:0,getTitleId:function(a){a=a.attr("id");if(!a){this.uuid+=1;a=this.uuid}return"ui-dialog-title-"+a},overlay:function(a){this.$el=c.ui.dialog.overlay.create(a)}});c.extend(c.ui.dialog.overlay,{instances:[],oldInstances:[],maxZ:0,events:c.map("focus,mousedown,mouseup,keydown,keypress,click".split(","),function(a){return a+".dialog-overlay"}).join(" "),create:function(a){if(this.instances.length===
+0){setTimeout(function(){c.ui.dialog.overlay.instances.length&&c(document).bind(c.ui.dialog.overlay.events,function(d){if(c(d.target).zIndex()<c.ui.dialog.overlay.maxZ)return false})},1);c(document).bind("keydown.dialog-overlay",function(d){if(a.options.closeOnEscape&&d.keyCode&&d.keyCode===c.ui.keyCode.ESCAPE){a.close(d);d.preventDefault()}});c(window).bind("resize.dialog-overlay",c.ui.dialog.overlay.resize)}var b=(this.oldInstances.pop()||c("<div></div>").addClass("ui-widget-overlay")).appendTo(document.body).css({width:this.width(),
+height:this.height()});c.fn.bgiframe&&b.bgiframe();this.instances.push(b);return b},destroy:function(a){var b=c.inArray(a,this.instances);b!=-1&&this.oldInstances.push(this.instances.splice(b,1)[0]);this.instances.length===0&&c([document,window]).unbind(".dialog-overlay");a.remove();var d=0;c.each(this.instances,function(){d=Math.max(d,this.css("z-index"))});this.maxZ=d},height:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollHeight,document.body.scrollHeight);
+b=Math.max(document.documentElement.offsetHeight,document.body.offsetHeight);return a<b?c(window).height()+"px":a+"px"}else return c(document).height()+"px"},width:function(){var a,b;if(c.browser.msie&&c.browser.version<7){a=Math.max(document.documentElement.scrollWidth,document.body.scrollWidth);b=Math.max(document.documentElement.offsetWidth,document.body.offsetWidth);return a<b?c(window).width()+"px":a+"px"}else return c(document).width()+"px"},resize:function(){var a=c([]);c.each(c.ui.dialog.overlay.instances,
+function(){a=a.add(this)});a.css({width:0,height:0}).css({width:c.ui.dialog.overlay.width(),height:c.ui.dialog.overlay.height()})}});c.extend(c.ui.dialog.overlay.prototype,{destroy:function(){c.ui.dialog.overlay.destroy(this.$el)}})})(jQuery);
+;
\ No newline at end of file
1
0
r242 - in trunk/bow-ui/src/main: java/org/chorem/bow java/org/chorem/bow/action resources resources/i18n webapp/WEB-INF/decorators webapp/js webapp/jsp webapp/jsp/inc xmi
by kmorin@users.chorem.org April 19, 2011
by kmorin@users.chorem.org April 19, 2011
April 19, 2011
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)
1
0
April 16, 2011
Author: bpoussin
Date: 2011-04-16 18:49:55 +0200 (Sat, 16 Apr 2011)
New Revision: 241
Url: http://chorem.org/repositories/revision/bow/241
Log:
Evolution #278: Twice the same bookmark
la description se presente bien (conversion \n -> <br/>)
Modified:
trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp
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:36:48 UTC (rev 240)
+++ trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-16 16:49:55 UTC (rev 241)
@@ -29,6 +29,16 @@
xmlns:jsp="http://java.sun.com/JSP/Page">
<s:if test="%{#request.bookmark != null}">
+ <%
+ BowBookmark bookmark = (BowBookmark)request.getAttribute("bookmark");
+ String bookmarkDescription = bookmark.getDescription();
+ if (bookmarkDescription == null) {
+ bookmarkDescription = "";
+ } else {
+ bookmarkDescription = bookmarkDescription.replaceAll("\n", "<br/>");
+ }
+ %>
+
<s:set var="searchLine" value="%{#request.searchLine}" />
<s:set var="fullTextLine" value="%{#request.fullTextLine}" />
<s:set var="wikittyId" value="%{#request.bookmark.getWikittyId()}" />
@@ -84,7 +94,7 @@
</s:url>
<s:a title="%{#bookmarkLink}" href="%{redirectTo}"
onclick="window.open(this.href); return false;">
- <s:property value="%{#bookmarkDescription}" />
+ <%=bookmarkDescription%>
</s:a>
</p>
<p class="tags">
1
0
April 16, 2011
Author: bpoussin
Date: 2011-04-16 18:36:48 +0200 (Sat, 16 Apr 2011)
New Revision: 240
Url: http://chorem.org/repositories/revision/bow/240
Log:
Evolution #278: Twice the same bookmark
Il reste a bien presenter la description (conversion \n -> <br/>)
Modified:
trunk/bow-ui/src/main/java/org/chorem/bow/action/AddUrlAction.java
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:36:05 UTC (rev 239)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/action/AddUrlAction.java 2011-04-16 16:36:48 UTC (rev 240)
@@ -23,6 +23,8 @@
*/
package org.chorem.bow.action;
+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;
@@ -41,6 +43,9 @@
public class AddUrlAction extends BowBaseAction {
private static final long serialVersionUID = 3389170166034184139L;
+
+ final static private String DATE_FORMAT = "yyyy/MM/dd";
+
protected String link;
protected String name;
protected String alias;
@@ -176,7 +181,41 @@
bookmark = BookmarkUtils.createBookmark(link, nameAndTags, user);
}
}
- if (bookmark != null && !bookmark.getDescription().isEmpty() && !bookmark.getBowUser().isEmpty()) {
+ // si on a reussi a creer le bookmark
+ if (bookmark != null && !bookmark.getDescription().isEmpty()
+ && !bookmark.getBowUser().isEmpty()) {
+ String userId = user.getWikittyId();
+
+ // looking for already bookmark with same url, to fusion them
+ String link = bookmark.getLink();
+ Criteria criteria = Search.query()
+ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_LINK, link)
+ .eq(BowBookmark.FQ_FIELD_BOWBOOKMARK_BOWUSER, userId)
+ .criteria();
+ BowBookmark oldBookmark =
+ proxy.findByCriteria(BowBookmark.class, criteria);
+ if(oldBookmark != null) {
+ // fusionne les descriptions et les tags
+ // par contre on prend le dernier alias prive choisi par
+ // l'utilisateur s'il y en a un
+ String description = oldBookmark.getDescription();
+ if (!StringUtils.isEmpty(bookmark.getDescription())) {
+ description += "\n";
+ description += DateFormatUtils.format(
+ bookmark.getCreationDate(), DATE_FORMAT) + ": ";
+ description += bookmark.getDescription();
+ }
+
+ oldBookmark.setDescription(description);
+ oldBookmark.addAllLabels(bookmark.getLabels());
+ String privateAlias = bookmark.getPrivateAlias();
+ if (!StringUtils.isEmpty(privateAlias)) {
+ oldBookmark.setPrivateAlias(privateAlias);
+ }
+
+ bookmark = oldBookmark;
+ }
+
proxy.store(bookmark); //Stores the bookmark if everything is ok
addActionMessage(getText(n_("bow.bookmark.add.successful")));
if (log.isDebugEnabled()) {
1
0
r239 - in trunk/bow-ui/src/main: java/org/chorem/bow webapp/jsp/inc
by bpoussin@users.chorem.org April 16, 2011
by bpoussin@users.chorem.org April 16, 2011
April 16, 2011
Author: bpoussin
Date: 2011-04-16 18:36:05 +0200 (Sat, 16 Apr 2011)
New Revision: 239
Url: http://chorem.org/repositories/revision/bow/239
Log:
Evolution #278: Twice the same bookmark
Il reste a bien presenter la description (conversion \n -> <br/>)
Modified:
trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java
trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp
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 14:56:46 UTC (rev 238)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/AliasServlet.java 2011-04-16 16:36:05 UTC (rev 239)
@@ -38,7 +38,7 @@
* TODO poussin 20110216 a revoir avec le ticket http://www.chorem.org/issues/show/295
*
* @author bbrossaud
- * @deprecated transformed to struts action
+ * @deprecated transformed to struts action since 0.5
*/
@Deprecated
public class AliasServlet extends HttpServlet {
Modified: trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp
===================================================================
--- trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-16 14:56:46 UTC (rev 238)
+++ trunk/bow-ui/src/main/webapp/jsp/inc/bookmark.jsp 2011-04-16 16:36:05 UTC (rev 239)
@@ -82,7 +82,10 @@
<s:url var="redirectTo" action="redirectToUrl">
<s:param name="bookmarkId"><s:property value="%{#wikittyId}" /></s:param>
</s:url>
- <s:a title="%{#bookmarkLink}" href="%{redirectTo}" onclick="window.open(this.href); return false;"><s:property value="%{#bookmarkDescription}" /></s:a>
+ <s:a title="%{#bookmarkLink}" href="%{redirectTo}"
+ onclick="window.open(this.href); return false;">
+ <s:property value="%{#bookmarkDescription}" />
+ </s:a>
</p>
<p class="tags">
<strong><s:text name="bow.bookmark.tags" /> :</strong>
1
0
r238 - in trunk/bow-ui/src/main: java/org/chorem/bow java/org/chorem/bow/action resources webapp/WEB-INF webapp/css webapp/jsp/inc xmi
by bpoussin@users.chorem.org April 16, 2011
by bpoussin@users.chorem.org April 16, 2011
April 16, 2011
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)
1
0
April 16, 2011
Author: kmorin
Date: 2011-04-16 14:37:04 +0200 (Sat, 16 Apr 2011)
New Revision: 237
Url: http://chorem.org/repositories/revision/bow/237
Log:
do not set alias by default
Modified:
trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java
Modified: trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java
===================================================================
--- trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-04-16 10:06:43 UTC (rev 236)
+++ trunk/bow-ui/src/main/java/org/chorem/bow/BookmarkUtils.java 2011-04-16 12:37:04 UTC (rev 237)
@@ -227,7 +227,6 @@
if (!name.isEmpty()) {
name = name.trim();
bookmark.setDescription(name); // set the description (website name)
- bookmark.setPrivateAlias(name);
}
}
String tags = nameAndTags;
1
0
Author: kmorin
Date: 2011-04-16 12:06:43 +0200 (Sat, 16 Apr 2011)
New Revision: 236
Url: http://chorem.org/repositories/revision/bow/236
Log:
use release versions for wikitty and nuiton-utils
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-04-11 08:47:11 UTC (rev 235)
+++ trunk/pom.xml 2011-04-16 10:06:43 UTC (rev 236)
@@ -50,9 +50,9 @@
<projectId>bow</projectId>
<eugenePluginVersion>2.3.2</eugenePluginVersion>
- <nuitonUtilsVersion>2.1-SNAPSHOT</nuitonUtilsVersion>
+ <nuitonUtilsVersion>2.1.1</nuitonUtilsVersion>
<nuitonI18nVersion>2.3.1</nuitonI18nVersion>
- <wikittyVersion>3.0.5-SNAPSHOT</wikittyVersion>
+ <wikittyVersion>3.0.5</wikittyVersion>
<slf4jVersion>1.6.1</slf4jVersion>
<struts2Version>2.1.8.1</struts2Version>
<xWorkCoreVersion>2.1.6</xWorkCoreVersion>
1
0
Author: tchemit
Date: 2011-04-11 10:47:11 +0200 (Mon, 11 Apr 2011)
New Revision: 235
Url: http://chorem.org/repositories/revision/bow/235
Log:
Update mavenpom4redmine to 2.5.3.
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2011-03-17 16:47:05 UTC (rev 234)
+++ trunk/pom.xml 2011-04-11 08:47:11 UTC (rev 235)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom4redmine</artifactId>
- <version>2.5.2</version>
+ <version>2.5.3</version>
</parent>
<groupId>org.chorem</groupId>
1
0