You can subscribe to this list here.
| 2005 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
(217) |
Nov
(180) |
Dec
(71) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2006 |
Jan
(58) |
Feb
(370) |
Mar
(105) |
Apr
(165) |
May
(93) |
Jun
(37) |
Jul
|
Aug
(21) |
Sep
(131) |
Oct
(40) |
Nov
(113) |
Dec
(401) |
| 2007 |
Jan
(180) |
Feb
(4) |
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(3) |
| 2008 |
Jan
(163) |
Feb
(78) |
Mar
|
Apr
(4) |
May
(28) |
Jun
(2) |
Jul
|
Aug
|
Sep
(96) |
Oct
(189) |
Nov
(413) |
Dec
(121) |
| 2009 |
Jan
(34) |
Feb
(18) |
Mar
(24) |
Apr
(16) |
May
(3) |
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
(13) |
| 2010 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(1) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
| 2011 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
(1) |
Sep
(3) |
Oct
(16) |
Nov
|
Dec
|
| 2012 |
Jan
|
Feb
|
Mar
|
Apr
(5) |
May
(35) |
Jun
|
Jul
(17) |
Aug
(7) |
Sep
|
Oct
(9) |
Nov
|
Dec
|
|
From: <ra...@us...> - 2009-12-21 22:58:56
|
Revision: 2228
http://itracker.svn.sourceforge.net/itracker/?rev=2228&view=rev
Author: ranks
Date: 2009-12-21 22:58:49 +0000 (Mon, 21 Dec 2009)
Log Message:
-----------
css, template fix
Modified Paths:
--------------
itracker-skin/trunk/src/main/resources/META-INF/maven/site.vm
itracker-skin/trunk/src/main/resources/css/maven-theme.css
Modified: itracker-skin/trunk/src/main/resources/META-INF/maven/site.vm
===================================================================
--- itracker-skin/trunk/src/main/resources/META-INF/maven/site.vm 2009-12-21 22:08:27 UTC (rev 2227)
+++ itracker-skin/trunk/src/main/resources/META-INF/maven/site.vm 2009-12-21 22:58:49 UTC (rev 2228)
@@ -11,7 +11,7 @@
#macro ( banner $banner $id )
#if ( $banner )
#if( $banner.href )
- <a href="$banner.href" id="$id" #if( $banner.alt ) title="$banner.alt" #end >
+ <a href="$banner.href" id="$id" alt="$banner.alt" #if( $banner.alt ) title="$banner.alt" #end >
#else
<div id="$id">
#end
@@ -110,9 +110,9 @@
#if ( ! ( $item.img.toLowerCase().startsWith("http") || $item.img.toLowerCase().startsWith("https") ) )
#set ( $src = $PathTool.calculateLink( $item.img, $relativePath ) )
#set ( $src = $src.replaceAll( "\\", "/" ) )
- <img src="$src"/>
+ <img alt="" src="$src"/>
#else
- <img src="$item.img" align="absbottom" style="border-width: 0"/>
+ <img alt="" src="$item.img" style="border-width: 0"/>
#end
#end
#if ( $alignedFileName == $currentItemHref )
@@ -309,7 +309,7 @@
<html xmlns="" rel="nofollow">http://www.w3.org/1999/xhtml">
<head>
<title>$title</title>
- <style type="text/css" media="all">
+ <style type="text/css" media="all">
@import url("$relativePath/Lightbox/css/lightbox.css");
@import url("$relativePath/css/maven-base.css");
@import url("$relativePath/css/maven-theme.css");
@@ -318,11 +318,9 @@
</style>
<!--[if IE]>
<link rel="stylesheet" href="$relativePath/css/ie.css" type="text/css" media="screen" />
-<![endif]-->
-
-
- <script type="text/javascript" src="Lightbox/js/prototype.js"></script>
- <script type="text/javascript" src="Lightbox/js/scriptaculous.js?load=effects,builder"></script>
+<![endif]-->
+ <script type="text/javascript" src="Lightbox/js/prototype.js"></script>
+ <script type="text/javascript" src="Lightbox/js/scriptaculous.js?load=effects,builder"></script>
<script type="text/javascript" src="Lightbox/js/lightbox.js"></script>
@@ -347,20 +345,22 @@
#end
#end
</head>
- <body class="composite" bgcolor="black">
- </div>
+ <body class="composite" bgcolor="black">
<div id="mainContent">
<div id="banner">
+
<div id="banner01">
- </div>
- <div id="banner02">
- </div>
+ </div>
+
+ <div id="banner02">
+
+ </div>
</div>
<div id="breadcrumbs">
#publishDate( "left" $decoration.publishDate $decoration.version )
<div class="bannerRight">#links( $decoration.body.links )#publishDate( "right" $decoration.publishDate $decoration.version )</div>
<div class="clear">
- <hr/>
+ <hr />
</div>
</div>
<div id="leftColumn">
@@ -378,15 +378,21 @@
</div>
</div>
<div class="clear">
- <hr/>
+ <hr />
</div>
<div id="footer">
<div class="xright">©#copyright()#publishDate( "bottom" $decoration.publishDate $decoration.version )</div>
<div class="clear">
- <hr/>
+ <hr />
</div>
</div>
</div> <!-- close #mainContent -->
+ <div id="credit">
+ <a title="R.Ø.S.A." target="_blank" href="http://www.rosa.com">
+
+ <img width="7" height="31" alt="R.Ø.S.A." src="$relativePath/images/rosa.gif" /></a>
+
+ </div>
<!-- We use this to analyze traffic on itracker.org at Google Analytics (re...@ro...) -->
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
@@ -396,10 +402,7 @@
var pageTracker = _gat._getTracker("UA-1042319-2");
pageTracker._trackPageview();
</script>
- <div id="credit">
- <a title="R.Ø.S.A." target="_blank" href="http://www.rosa.com">
- <img width="7" height="31" alt="R.Ø.S.A." src="images/rosa.gif"/>
- </a>
+
<!-- Piwik -->
<script type="text/javascript">var pkBaseURL = (("https:" == document.location.protocol) ? "https://apps.sourceforge.net/piwik/itracker/" : "http://apps.sourceforge.net/piwik/itracker/");document.write(unescape("%3Cscript src='" + pkBaseURL + "piwik.js' type='text/javascript'%3E%3C/script%3E"));
</script>
Modified: itracker-skin/trunk/src/main/resources/css/maven-theme.css
===================================================================
--- itracker-skin/trunk/src/main/resources/css/maven-theme.css 2009-12-21 22:08:27 UTC (rev 2227)
+++ itracker-skin/trunk/src/main/resources/css/maven-theme.css 2009-12-21 22:58:49 UTC (rev 2228)
@@ -106,7 +106,7 @@
@media screen and (-webkit-min-device-pixel-ratio:0) {
#navcolumn {
- background: url(../images/background.png) repeat-x scroll center -180px;
+ /*background: url(../images/background.png) repeat-x scroll center -180px;*/
}
}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2009-12-21 22:08:38
|
Revision: 2227
http://itracker.svn.sourceforge.net/itracker/?rev=2227&view=rev
Author: ranks
Date: 2009-12-21 22:08:27 +0000 (Mon, 21 Dec 2009)
Log Message:
-----------
Removed Paths:
-------------
itracker-skin/trunk/src/main/resources/images/external-classic.png
Deleted: itracker-skin/trunk/src/main/resources/images/external-classic.png
===================================================================
(Binary files differ)
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2009-12-21 21:14:02
|
Revision: 2226
http://itracker.svn.sourceforge.net/itracker/?rev=2226&view=rev
Author: ranks
Date: 2009-12-21 21:13:54 +0000 (Mon, 21 Dec 2009)
Log Message:
-----------
remove wrong file
Removed Paths:
-------------
itracker-skin/trunk/src/main/resources/images/print.css
Deleted: itracker-skin/trunk/src/main/resources/images/print.css
===================================================================
--- itracker-skin/trunk/src/main/resources/images/print.css 2009-12-21 21:11:32 UTC (rev 2225)
+++ itracker-skin/trunk/src/main/resources/images/print.css 2009-12-21 21:13:54 UTC (rev 2226)
@@ -1,8 +0,0 @@
-#banner, #footer, #leftcol, #breadcrumbs, .docs #toc, .docs .courtesylinks, #leftColumn, #navColumn {
- display: none !important;
- color:#000000;
-}
-#bodyColumn, body.docs div.docs {
- margin: 0 !important;
- border: none !important
-}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2009-12-21 21:11:43
|
Revision: 2225
http://itracker.svn.sourceforge.net/itracker/?rev=2225&view=rev
Author: ranks
Date: 2009-12-21 21:11:32 +0000 (Mon, 21 Dec 2009)
Log Message:
-----------
adding missing files
Added Paths:
-----------
itracker-skin/trunk/src/main/resources/css/maven-base.css
Added: itracker-skin/trunk/src/main/resources/css/maven-base.css
===================================================================
--- itracker-skin/trunk/src/main/resources/css/maven-base.css (rev 0)
+++ itracker-skin/trunk/src/main/resources/css/maven-base.css 2009-12-21 21:11:32 UTC (rev 2225)
@@ -0,0 +1,146 @@
+body {
+ margin: 0px;
+ padding: 0px;
+}
+img {
+ border:none;
+}
+table {
+ padding:0px;
+ width: 100%;
+ margin-left: -2px;
+ margin-right: -2px;
+}
+acronym {
+ cursor: help;
+ border-bottom: 1px dotted #feb;
+}
+table.bodyTable th, table.bodyTable td {
+ padding: 2px 4px 2px 4px;
+ vertical-align: top;
+}
+div.clear{
+ clear:both;
+ visibility: hidden;
+}
+div.clear hr{
+ display: none;
+}
+#bannerLeft, #bannerRight {
+ font-size: xx-large;
+ font-weight: bold;
+}
+#bannerLeft img, #bannerRight img {
+ margin: 0px;
+}
+.xleft, #bannerLeft img {
+ float:left;
+ text-shadow: #7CFC00 1px 1px 1px;
+}
+.xright, #bannerRight {
+ float:right;
+ text-shadow: #7CFC00 1px 1px 1px;
+}
+#banner {
+ padding: 0px;
+}
+#banner img {
+ border: none;
+}
+#breadcrumbs {
+ padding: 3px 10px 3px 10px;
+}
+#leftColumn {
+ width: 170px;
+ float:left;
+ overflow: auto;
+}
+#bodyColumn {
+ margin-right: 1.5em;
+ margin-left: 197px;
+}
+#legend {
+ padding: 8px 0 8px 0;
+}
+#navcolumn {
+ padding: 8px 4px 0 8px;
+}
+#navcolumn h5 {
+ margin: 0;
+ padding: 0;
+ font-size: small;
+}
+#navcolumn ul {
+ margin: 0;
+ padding: 0;
+ font-size: small;
+}
+#navcolumn li {
+ list-style-type: none;
+ background-image: none;
+ background-repeat: no-repeat;
+ background-position: 0 0.4em;
+ padding-left: 16px;
+ list-style-position: outside;
+ line-height: 1.2em;
+ font-size: smaller;
+}
+#navcolumn li.expanded {
+ background-image: url(../images/expanded.gif);
+}
+#navcolumn li.collapsed {
+ background-image: url(../images/collapsed.gif);
+}
+#poweredBy {
+ text-align: center;
+}
+#navcolumn img {
+ margin-top: 10px;
+ margin-bottom: 3px;
+}
+#poweredBy img {
+ display:block;
+ margin: 20px 0 20px 17px;
+}
+#search img {
+ margin: 0px;
+ display: block;
+}
+#search #q, #search #btnG {
+ border: 1px solid #999;
+ margin-bottom:10px;
+}
+#search form {
+ margin: 0px;
+}
+#lastPublished {
+ font-size: x-small;
+}
+.navSection {
+ margin-bottom: 2px;
+ padding: 8px;
+}
+.navSectionHead {
+ font-weight: bold;
+ font-size: x-small;
+}
+.section {
+ padding: 4px;
+}
+#footer {
+ padding: 3px 10px 3px 10px;
+ font-size: x-small;
+}
+#breadcrumbs {
+ font-size: x-small;
+ margin: 0pt;
+}
+.source {
+ padding: 12px;
+ margin: 1em 7px 1em 7px;
+}
+.source pre {
+ margin: 0px;
+ padding: 0px;
+}
+
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2009-12-21 19:52:20
|
Revision: 2224
http://itracker.svn.sourceforge.net/itracker/?rev=2224&view=rev
Author: ranks
Date: 2009-12-21 19:52:13 +0000 (Mon, 21 Dec 2009)
Log Message:
-----------
add missing resources
Added Paths:
-----------
itracker-skin/trunk/src/main/resources/images/close.gif
itracker-skin/trunk/src/main/resources/images/collapsed.gif
itracker-skin/trunk/src/main/resources/images/expanded.gif
itracker-skin/trunk/src/main/resources/images/external-classic.png
itracker-skin/trunk/src/main/resources/images/external.png
itracker-skin/trunk/src/main/resources/images/rosa.gif
Added: itracker-skin/trunk/src/main/resources/images/close.gif
===================================================================
(Binary files differ)
Property changes on: itracker-skin/trunk/src/main/resources/images/close.gif
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: itracker-skin/trunk/src/main/resources/images/collapsed.gif
===================================================================
(Binary files differ)
Property changes on: itracker-skin/trunk/src/main/resources/images/collapsed.gif
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: itracker-skin/trunk/src/main/resources/images/expanded.gif
===================================================================
(Binary files differ)
Property changes on: itracker-skin/trunk/src/main/resources/images/expanded.gif
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: itracker-skin/trunk/src/main/resources/images/external-classic.png
===================================================================
(Binary files differ)
Property changes on: itracker-skin/trunk/src/main/resources/images/external-classic.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: itracker-skin/trunk/src/main/resources/images/external.png
===================================================================
(Binary files differ)
Property changes on: itracker-skin/trunk/src/main/resources/images/external.png
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: itracker-skin/trunk/src/main/resources/images/rosa.gif
===================================================================
(Binary files differ)
Property changes on: itracker-skin/trunk/src/main/resources/images/rosa.gif
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2009-12-21 19:39:39
|
Revision: 2223
http://itracker.svn.sourceforge.net/itracker/?rev=2223&view=rev
Author: ranks
Date: 2009-12-21 19:39:26 +0000 (Mon, 21 Dec 2009)
Log Message:
-----------
install instructions
Modified Paths:
--------------
itracker/trunk/src/site/xdoc/install.xml
Modified: itracker/trunk/src/site/xdoc/install.xml
===================================================================
--- itracker/trunk/src/site/xdoc/install.xml 2009-12-21 19:14:31 UTC (rev 2222)
+++ itracker/trunk/src/site/xdoc/install.xml 2009-12-21 19:39:26 UTC (rev 2223)
@@ -19,6 +19,18 @@
</li>
<li>
+ itracker assumes the mail and activation libs are provided
+ in the application class-path either by the JVM or application
+ server. Best practice is to install the required files to the
+ Tomcat lib folder if necessary:
+ <ol><li>download and extract java activation framework available from sun.com</li>
+ <li>copy the jar file <code>activation.jar</code> to the webserver library (eg <code>$TOMCAT6_HOME/lib/</code>)</li>
+ <li>download and extract javamail available from sun.com</li>
+ <li>copy the jar files <code>mail-api.jar</code> and <code>javamail.jar</code> to the webserver library</li>
+ <li>restart Tomcat to apply this changes</li></ol>
+ </li>
+
+ <li>
After installing Tomcat-6 you have to set up an empty MySQL
database for your itracker.
<em><strong>The database must support UTF-8 charset for itracker to function properly.</strong></em>
@@ -30,7 +42,7 @@
<li>
If you have all this requirements resolved, download the binary
- itracker file on Sourceforge. Extract it and copy the
+ itracker file on Sourceforge. Extract it and deploy the
<code>itracker.war</code>
file to
<code>$TOMCAT_HOME/webapps</code>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2009-12-21 19:14:47
|
Revision: 2222
http://itracker.svn.sourceforge.net/itracker/?rev=2222&view=rev
Author: ranks
Date: 2009-12-21 19:14:31 +0000 (Mon, 21 Dec 2009)
Log Message:
-----------
css fixing
Modified Paths:
--------------
itracker-skin/trunk/src/main/resources/css/maven-theme.css
Modified: itracker-skin/trunk/src/main/resources/css/maven-theme.css
===================================================================
--- itracker-skin/trunk/src/main/resources/css/maven-theme.css 2009-07-24 08:35:07 UTC (rev 2221)
+++ itracker-skin/trunk/src/main/resources/css/maven-theme.css 2009-12-21 19:14:31 UTC (rev 2222)
@@ -1241,7 +1241,7 @@
right: 4px;
top: 40px;
text-decoration: none;
- z-index: -1;
+ z-index: 0;
}
body>#credit {
position: fixed;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <ra...@us...> - 2009-07-24 08:35:22
|
Revision: 2221
http://itracker.svn.sourceforge.net/itracker/?rev=2221&view=rev
Author: ranks
Date: 2009-07-24 08:35:07 +0000 (Fri, 24 Jul 2009)
Log Message:
-----------
Fixing problem (Bug:2826450): All Versions are shown in read-mode
Modified Paths:
--------------
itracker/trunk/src/main/webapp/module-projects/view_issue.jsp
Modified: itracker/trunk/src/main/webapp/module-projects/view_issue.jsp
===================================================================
--- itracker/trunk/src/main/webapp/module-projects/view_issue.jsp 2009-05-10 14:07:22 UTC (rev 2220)
+++ itracker/trunk/src/main/webapp/module-projects/view_issue.jsp 2009-07-24 08:35:07 UTC (rev 2221)
@@ -150,7 +150,7 @@
<c:when test="${not empty project.versions}">
<td valign="top" class="editColumnTitle"><it:message key="itracker.web.attr.versions"/>: </td>
<td id="versions" valign="top" class="editColumnText">
- <c:forEach var="version" items="${project.versions}">
+ <c:forEach var="version" items="${issue.versions}">
${version.number} <br/>
</c:forEach>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cli...@us...> - 2009-05-10 14:07:23
|
Revision: 2220
http://itracker.svn.sourceforge.net/itracker/?rev=2220&view=rev
Author: clim1219
Date: 2009-05-10 14:07:22 +0000 (Sun, 10 May 2009)
Log Message:
-----------
Added dependency for JMock. Forgot to added in previous commits.
Signed-off-by: Chris Lim <chr...@gm...>
Modified Paths:
--------------
itracker/branches/spring_refactoring/pom.xml
Modified: itracker/branches/spring_refactoring/pom.xml
===================================================================
--- itracker/branches/spring_refactoring/pom.xml 2009-05-10 14:06:46 UTC (rev 2219)
+++ itracker/branches/spring_refactoring/pom.xml 2009-05-10 14:07:22 UTC (rev 2220)
@@ -418,6 +418,11 @@
<version>2.0</version>
<scope>runtime</scope>
</dependency>
+ <dependency>
+ <groupId>jmock</groupId>
+ <artifactId>jmock</artifactId>
+ <version>1.2.0</version>
+ </dependency>
<dependency>
<groupId>hsqldb</groupId>
<artifactId>hsqldb</artifactId>
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cli...@us...> - 2009-05-10 14:06:47
|
Revision: 2219
http://itracker.svn.sourceforge.net/itracker/?rev=2219&view=rev
Author: clim1219
Date: 2009-05-10 14:06:46 +0000 (Sun, 10 May 2009)
Log Message:
-----------
Converted EditProjectAction to use dependency injection for the services.
The class still needs to be cleaned up.
Signed-off-by: Chris Lim <chr...@gm...>
Modified Paths:
--------------
itracker/branches/spring_refactoring/src/main/java/org/itracker/web/actions/admin/project/EditProjectAction.java
itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/action-context.xml
itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/config/struts-module-admin-config.xml
Added Paths:
-----------
itracker/branches/spring_refactoring/src/test/java/org/itracker/web/actions/admin/project/EditProjectActionTest.java
Modified: itracker/branches/spring_refactoring/src/main/java/org/itracker/web/actions/admin/project/EditProjectAction.java
===================================================================
--- itracker/branches/spring_refactoring/src/main/java/org/itracker/web/actions/admin/project/EditProjectAction.java 2009-05-10 14:04:48 UTC (rev 2218)
+++ itracker/branches/spring_refactoring/src/main/java/org/itracker/web/actions/admin/project/EditProjectAction.java 2009-05-10 14:06:46 UTC (rev 2219)
@@ -47,10 +47,14 @@
import org.itracker.web.actions.base.ItrackerBaseAction;
import org.itracker.web.util.Constants;
import org.itracker.web.util.LoginUtilities;
+import org.itracker.web.forms.ProjectForm;
public class EditProjectAction extends ItrackerBaseAction {
private static final Logger log = Logger.getLogger(EditProjectAction.class);
+ private ProjectService projectService;
+ private UserService userService;
+
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
@@ -71,10 +75,6 @@
Project project = null;
try {
- ProjectService projectService = getITrackerServices()
- .getProjectService();
- UserService userService = getITrackerServices().getUserService();
-
HttpSession session = request.getSession(true);
User user = LoginUtilities.getCurrentUser(request);
@@ -198,4 +198,12 @@
return mapping.findForward("listprojectsadmin");
}
+ public void setProjectService(ProjectService projectService) {
+ this.projectService = projectService;
+ }
+
+ public void setUserService(UserService userService) {
+ this.userService = userService;
+ }
+
}
Modified: itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/action-context.xml
===================================================================
--- itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/action-context.xml 2009-05-10 14:04:48 UTC (rev 2218)
+++ itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/action-context.xml 2009-05-10 14:06:46 UTC (rev 2219)
@@ -10,4 +10,8 @@
class="org.itracker.web.actions.admin.project.EditProjectFormAction"
autowire="byName"/>
+ <bean name="/module-admin/editproject"
+ class="org.itracker.web.actions.admin.project.EditProjectAction"
+ autowire="byName"/>
+
</beans>
Modified: itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/config/struts-module-admin-config.xml
===================================================================
--- itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/config/struts-module-admin-config.xml 2009-05-10 14:04:48 UTC (rev 2218)
+++ itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/config/struts-module-admin-config.xml 2009-05-10 14:06:46 UTC (rev 2219)
@@ -176,8 +176,12 @@
type="org.itracker.web.actions.admin.language.EditLanguageFormAction"
name="languageForm" scope="request"
input="/admin_language/edit_language.jsp" validate="false"></action>
- <action path="/editproject" type="org.itracker.web.actions.admin.project.EditProjectAction"
- name="projectForm" scope="request" input="/admin_project/edit_project.jsp"
+
+ <action path="/editproject"
+ type="org.springframework.web.struts.DelegatingActionProxy"
+ name="projectForm"
+ scope="request"
+ input="/admin_project/edit_project.jsp"
validate="true">
</action>
Added: itracker/branches/spring_refactoring/src/test/java/org/itracker/web/actions/admin/project/EditProjectActionTest.java
===================================================================
--- itracker/branches/spring_refactoring/src/test/java/org/itracker/web/actions/admin/project/EditProjectActionTest.java (rev 0)
+++ itracker/branches/spring_refactoring/src/test/java/org/itracker/web/actions/admin/project/EditProjectActionTest.java 2009-05-10 14:06:46 UTC (rev 2219)
@@ -0,0 +1,97 @@
+package org.itracker.web.actions.admin.project;
+
+import java.io.IOException;
+import javax.servlet.ServletException;
+
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.config.ControllerConfig;
+import org.apache.struts.config.ModuleConfig;
+import org.apache.struts.config.impl.ModuleConfigImpl;
+import org.apache.struts.util.TokenProcessor;
+import org.apache.struts.Globals;
+import org.itracker.model.User;
+import org.itracker.services.ProjectService;
+import org.itracker.services.UserService;
+import org.itracker.web.forms.ProjectForm;
+import org.itracker.web.util.Constants;
+import org.jmock.Mock;
+import org.jmock.MockObjectTestCase;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+public class EditProjectActionTest extends MockObjectTestCase {
+
+ private EditProjectAction action;
+
+ private MockHttpServletRequest request;
+ private MockHttpServletResponse response;
+ private Mock projectService;
+ private Mock userService;
+
+ @Override
+ protected void setUp() throws Exception {
+ request = new MockHttpServletRequest();
+ response = new MockHttpServletResponse();
+
+ User user = new User();
+ user.setSuperUser(true);
+ request.getSession().setAttribute(Constants.USER_KEY, user);
+
+ projectService = new Mock(ProjectService.class);
+ userService = new Mock(UserService.class);
+
+ action = new EditProjectAction();
+ action.setProjectService((ProjectService) projectService.proxy());
+ action.setUserService((UserService) userService.proxy());
+ }
+
+ public void testCreateNewProject() throws IOException, ServletException {
+
+ ActionMapping mapping = new ActionMapping();
+
+ ActionForward errorForward = new ActionForward("error", "/error.do",
+ true);
+ mapping.addForwardConfig(errorForward);
+
+ ActionForward expectedForward = new ActionForward(
+ "listprojectsadmin",
+ "listprojectsadmin",
+ false);
+ mapping.addForwardConfig(expectedForward);
+ mapping.setInput("/admin_project/edit_project.jsp");
+
+ ModuleConfig moduleConfig = new ModuleConfigImpl("/admin_project");
+
+ ControllerConfig controllerConfig = new ControllerConfig();
+ controllerConfig.setInputForward(true);
+ moduleConfig.setControllerConfig(controllerConfig);
+
+ mapping.setModuleConfig(moduleConfig);
+
+ ProjectForm form = new ProjectForm();
+ form.setAction("create");
+ form.setName("Test Project Name");
+ form.setDescription("Test Project Description");
+
+ // TODO: Should be removed once action class is cleaned up.
+ request.setParameter("action", "create");
+
+ projectService.expects(once()).method("setProjectFields")
+ .withAnyArguments()
+ .will(returnValue(false));
+
+ projectService.expects(once()).method("createProject")
+ .withAnyArguments();
+
+ TokenProcessor tokenProcessor = TokenProcessor.getInstance();
+ String token = tokenProcessor.generateToken(request);
+ request.getSession().setAttribute(Globals.TRANSACTION_TOKEN_KEY, token);
+ request.setParameter(org.apache.struts.taglib.html.Constants.TOKEN_KEY, token);
+
+ ActionForward actualForward = action.execute(mapping, form, request, response);
+
+ assertEquals(expectedForward, actualForward);
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <cli...@us...> - 2009-05-10 14:04:53
|
Revision: 2218
http://itracker.svn.sourceforge.net/itracker/?rev=2218&view=rev
Author: clim1219
Date: 2009-05-10 14:04:48 +0000 (Sun, 10 May 2009)
Log Message:
-----------
Initial attempt at introducing dependency injection to the action classes.
There are things that are commented out for now (static calls) as it complicates the injection process. Also some codes are duplicated.
Next task is to move around codes from the controller to the service layer to free up the action classes of the business logic codes.
Signed-off-by: Chris Lim <chr...@gm...>
Modified Paths:
--------------
itracker/branches/spring_refactoring/src/main/java/org/itracker/web/actions/admin/project/EditProjectFormAction.java
itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/config/struts-module-admin-config.xml
Added Paths:
-----------
itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/action-context.xml
itracker/branches/spring_refactoring/src/test/java/org/itracker/web/actions/admin/project/
itracker/branches/spring_refactoring/src/test/java/org/itracker/web/actions/admin/project/EditProjectFormActionTest.java
Modified: itracker/branches/spring_refactoring/src/main/java/org/itracker/web/actions/admin/project/EditProjectFormAction.java
===================================================================
--- itracker/branches/spring_refactoring/src/main/java/org/itracker/web/actions/admin/project/EditProjectFormAction.java 2009-04-25 20:45:26 UTC (rev 2217)
+++ itracker/branches/spring_refactoring/src/main/java/org/itracker/web/actions/admin/project/EditProjectFormAction.java 2009-05-10 14:04:48 UTC (rev 2218)
@@ -22,6 +22,12 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.ArrayList;
+import java.util.TreeSet;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.Locale;
+import java.util.Date;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
@@ -38,18 +44,33 @@
import org.itracker.model.PermissionType;
import org.itracker.model.Project;
import org.itracker.model.User;
+import org.itracker.model.NameValuePair;
+import org.itracker.model.Status;
+import org.itracker.model.ProjectScript;
+import org.itracker.model.Version;
+import org.itracker.model.Component;
import org.itracker.services.ProjectService;
+import org.itracker.services.ITrackerServices;
+import org.itracker.services.UserService;
import org.itracker.services.util.ProjectUtilities;
import org.itracker.services.util.UserUtilities;
+import org.itracker.services.util.IssueUtilities;
+import org.itracker.services.util.CustomFieldUtilities;
import org.itracker.web.actions.base.ItrackerBaseAction;
import org.itracker.web.forms.ProjectForm;
import org.itracker.web.util.Constants;
+import org.itracker.web.util.ServletContextUtils;
+import org.itracker.web.util.RequestHelper;
+import org.itracker.web.util.LoginUtilities;
+import org.itracker.web.ptos.ProjectScriptPTO;
public class EditProjectFormAction extends ItrackerBaseAction {
private static final Logger log = Logger.getLogger(EditProjectFormAction.class);
+ private ProjectService projectService;
+ private UserService userService;
public ActionForward execute(ActionMapping mapping,
ActionForm form,
@@ -60,8 +81,6 @@
ActionMessages errors = new ActionMessages();
try {
- ProjectService projectService = getITrackerServices().getProjectService();
-
HttpSession session = request.getSession(true);
@@ -141,7 +160,13 @@
request.setAttribute("projectForm", projectForm);
session.setAttribute(Constants.PROJECT_KEY, project);
saveToken(request);
- ActionForward af = new EditProjectFormActionUtil().init(mapping, request, projectForm);
+
+ // TODO: Copied methods in EditProjectFormActionUtil instead of
+ // instantiating the class and calling the method. We will end up
+ // with a wasted class anyway. Need to investigate though how we
+ // can streamline the action classes.
+// ActionForward af = new EditProjectFormActionUtil().init(mapping, request, projectForm);
+ ActionForward af = findForward(mapping, request, projectForm);
if (af != null) {
return af;
}
@@ -149,6 +174,7 @@
}
} catch (Exception e) {
+ e.printStackTrace();
log.error("Exception while creating edit project form.", e);
errors.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("itracker.web.error.system"));
}
@@ -161,4 +187,286 @@
}
+ private ActionForward findForward(ActionMapping mapping,
+ HttpServletRequest request,
+ ProjectForm form){
+
+ HttpSession session = request.getSession(true);
+ User user = (User) session.getAttribute(Constants.USER_KEY);
+ Boolean allowPermissionUpdate = userService.allowPermissionUpdates(user, null, UserUtilities.AUTH_TYPE_UNKNOWN, UserUtilities.REQ_SOURCE_WEB);
+
+ final Map<Integer, Set<PermissionType>> permissions = RequestHelper.getUserPermissions(session);
+ Project project = (Project) session.getAttribute(Constants.PROJECT_KEY);
+ boolean isUpdate;
+
+ if (project == null) {
+ log.info("EditProjectAction: Forward: unauthorized");
+ return mapping.findForward("unauthorized");
+ } else {
+ isUpdate = false;
+ if (!project.isNew()) {
+ isUpdate = true;
+ }
+ }
+ request.setAttribute("isUpdate", isUpdate);
+
+ setupTitle(request, form, projectService);
+
+ // TODO: Causes the tests to fail due to a service lookup within ITrackerResources
+ // This must be resolved later on once the service dependency injection
+ // is in place and the test failures are fixed.
+// Locale currentLocale = LoginUtilities.getCurrentLocale(request);
+ Locale currentLocale = Locale.getDefault();
+
+ List<NameValuePair> statuses = new ArrayList<NameValuePair>();
+
+ statuses.add(new NameValuePair(
+ ProjectUtilities.getStatusName(Status.ACTIVE, currentLocale),
+ Integer.toString(Status.ACTIVE.getCode())));
+
+ statuses.add(new NameValuePair(ProjectUtilities.getStatusName(Status.VIEWABLE, currentLocale), Integer.toString(Status.VIEWABLE.getCode())));
+ statuses.add(new NameValuePair(ProjectUtilities.getStatusName(Status.LOCKED, currentLocale), Integer.toString(Status.LOCKED.getCode())));
+ request.setAttribute("statuses", statuses);
+
+ Set<User> owners = new TreeSet<User>(User.NAME_COMPARATOR);
+ if (!project.isNew()) {
+ owners.addAll(userService.getUsersWithProjectPermission(project.getId(), UserUtilities.PERMISSION_VIEW_ALL));
+ } else {
+ owners.addAll(userService.getSuperUsers());
+ }
+ owners.addAll(project.getOwners());
+ request.setAttribute("owners", owners);
+
+ boolean allowPermissionUpdateOption = allowPermissionUpdate == null?false
+ :allowPermissionUpdate && UserUtilities.hasPermission(permissions, new Integer(-1), UserUtilities.PERMISSION_USER_ADMIN);
+ request.setAttribute("allowPermissionUpdateOption", allowPermissionUpdateOption);
+
+ if (project.isNew()) {
+ List<User> users = new ArrayList<User>();
+ List<User> activeUsers = userService.getActiveUsers();
+ Collections.sort(activeUsers, User.NAME_COMPARATOR);
+ for (int i = 0; i < activeUsers.size(); i++) {
+ if (owners.contains(activeUsers.get(i))) {
+ continue;
+ }
+ users.add(activeUsers.get(i));
+ }
+ request.setAttribute("users", users);
+ }
+
+
+
+
+ List<NameValuePair> permissionNames = UserUtilities.getPermissionNames(currentLocale);
+ request.setAttribute("permissions", permissionNames);
+
+ request.setAttribute("optionSupressHistoryHtml", Integer.toString(ProjectUtilities.OPTION_SURPRESS_HISTORY_HTML));
+ request.setAttribute("optionPredefinedResolutions", Integer.toString(ProjectUtilities.OPTION_PREDEFINED_RESOLUTIONS));
+ request.setAttribute("optionAllowAssignToClose", Integer.toString(ProjectUtilities.OPTION_ALLOW_ASSIGN_TO_CLOSE));
+ request.setAttribute("optionAllowSefRegisteredCreate", Integer.toString(ProjectUtilities.OPTION_ALLOW_SELF_REGISTERED_CREATE));
+ request.setAttribute("optionLiteralHistoryHtml", Integer.toString(ProjectUtilities.OPTION_LITERAL_HISTORY_HTML));
+ request.setAttribute("optionNoAttachments", Integer.toString(ProjectUtilities.OPTION_NO_ATTACHMENTS));
+ request.setAttribute("optionAllowSelfRegisteredViewAll", Integer.toString(ProjectUtilities.OPTION_ALLOW_SELF_REGISTERED_VIEW_ALL));
+
+ List<CustomField> customFields = IssueUtilities.getCustomFields();
+
+
+
+ List<CustomFieldInfo> fieldInfos = new ArrayList<CustomFieldInfo>(customFields.size());
+ Iterator<CustomField> fieldsIt = customFields.iterator();
+ CustomField ci;
+ while (fieldsIt.hasNext()) {
+ ci = (CustomField) fieldsIt.next();
+ fieldInfos.add(new CustomFieldInfo( ci.getId(),
+ CustomFieldUtilities.getCustomFieldName(ci.getId(), currentLocale),
+ CustomFieldUtilities.getTypeString(ci.getFieldType(), currentLocale)));
+ }
+
+ request.setAttribute("customFields", fieldInfos);
+
+
+ // setup project-scripts
+
+ List<ProjectScript> scripts = project.getScripts();
+ Collections.sort(scripts, ProjectScript.FIELD_PRIORITY_COMPARATOR);
+
+ Locale locale = currentLocale;
+ Iterator<ProjectScript> it = scripts.iterator();
+
+ List<ProjectScriptPTO> scriptPTOs = new ArrayList<ProjectScriptPTO>(scripts.size());
+ while (it.hasNext()) {
+ ProjectScriptPTO projectScript = new ProjectScriptPTO(it.next(), locale);
+ scriptPTOs.add(projectScript);
+ }
+ request.setAttribute("projectScripts", scriptPTOs);
+
+ List<Version> versions = project.getVersions();
+ Collections.sort(versions, new Version.VersionComparator());
+ List<VersionInfo> vis = new ArrayList<VersionInfo>();
+
+ for (Version v: versions)
+ vis.add(new VersionInfo(v.getId(), v.getNumber(), v.getDescription(), v.getLastModifiedDate(), projectService.countIssuesByVersion(v.getId())));
+ request.setAttribute("versions", vis);
+
+ List<Component> components = project.getComponents();
+ Collections.sort(components);
+ List<ComponentInfo> cis = new ArrayList<ComponentInfo>();
+
+ for (Component c: components)
+ cis.add(new ComponentInfo(c.getId(), c.getName(), c.getDescription(), c.getLastModifiedDate(), projectService.countIssuesByComponent(c.getId())));
+ request.setAttribute("components", cis);
+ return null;
+ }
+
+ public void setupTitle(HttpServletRequest request, ProjectForm form, ProjectService projectService) {
+ String pageTitleKey;
+ String pageTitleArg = "";
+
+ if ("update".equals(((ProjectForm)form).getAction())) {
+ pageTitleKey = "itracker.web.admin.editproject.title.update";
+ if (form instanceof ProjectForm) {
+ Project project = projectService.getProject(((ProjectForm) form).getId());
+ if (null != project) {
+ pageTitleArg = project.getName();
+ }
+ }
+ } else {
+ ((ProjectForm)form).setAction("create");
+ pageTitleKey = "itracker.web.admin.editproject.title.create";
+ }
+ request.setAttribute("pageTitleKey", pageTitleKey);
+ request.setAttribute("pageTitleArg", pageTitleArg);
+ }
+
+ public void setProjectService(ProjectService projectService) {
+ this.projectService = projectService;
+ }
+
+ public void setUserService(UserService userService) {
+ this.userService = userService;
+ }
+
+ public class CustomFieldInfo {
+ private int id;
+ private String name;
+ private String type;
+
+ public CustomFieldInfo(Integer id, String customFieldName, String string) {
+ this.id = id; this.name = customFieldName; this.type = string;
+ }
+
+ public int getId() {
+ return id;
+ }
+ public void setId(int id) {
+ this.id = id;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getType() {
+ return type;
+ }
+ public void setType(String type) {
+ this.type = type;
+ }
+ }
+ public class VersionInfo {
+ private int id;
+ private String number;
+ private String description;
+ private Date lastModifiedDate;
+ private Long countIssuesByVersion;
+
+ public VersionInfo(int id, String number, String description,
+ Date lastModifiedDate, Long countIssuesByVersion) {
+ this.id = id;
+ this.number = number;
+ this.description = description;
+ this.lastModifiedDate = lastModifiedDate;
+ this.countIssuesByVersion = countIssuesByVersion;
+ }
+ public int getId() {
+ return id;
+ }
+ public void setId(int id) {
+ this.id = id;
+ }
+ public String getNumber() {
+ return number;
+ }
+ public void setNumber(String number) {
+ this.number = number;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public Date getDate() {
+ return lastModifiedDate;
+ }
+ public void setDate(Date lastModifiedDate) {
+ this.lastModifiedDate = lastModifiedDate;
+ }
+ public Long getCount() {
+ return countIssuesByVersion;
+ }
+ public void setCount(Long countIssuesByVersion) {
+ this.countIssuesByVersion = countIssuesByVersion;
+ }
+
+ }
+ public class ComponentInfo {
+ private int id;
+ private String name;
+ private String description;
+ private Date lastModifiedDate;
+ private Long countIssuesByComponent;
+
+ public ComponentInfo(Integer id, String name, String description,
+ Date lastModifiedDate, Long countIssuesByComponent) {
+ this.id = id;
+ this.name = name;
+ this.description = description;
+ this.lastModifiedDate = lastModifiedDate;
+ this.countIssuesByComponent = countIssuesByComponent;
+ }
+ public int getId() {
+ return id;
+ }
+ public void setId(int id) {
+ this.id = id;
+ }
+ public String getName() {
+ return name;
+ }
+ public void setName(String name) {
+ this.name = name;
+ }
+ public String getDescription() {
+ return description;
+ }
+ public void setDescription(String description) {
+ this.description = description;
+ }
+ public Date getDate() {
+ return lastModifiedDate;
+ }
+ public void setDate(Date date) {
+ this.lastModifiedDate = date;
+ }
+ public Long getCount() {
+ return countIssuesByComponent;
+ }
+ public void setCount(Long countIssuesByComponent) {
+ this.countIssuesByComponent = countIssuesByComponent;
+ }
+
+ }
+
}
Added: itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/action-context.xml
===================================================================
--- itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/action-context.xml (rev 0)
+++ itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/action-context.xml 2009-05-10 14:04:48 UTC (rev 2218)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:util="http://www.springframework.org/schema/util"
+ xsi:schemaLocation="
+http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+http://www.springframework.org/schema/util " rel="nofollow">http://www.springframework.org/schema/util/spring-util-2.0.xsd">
+
+ <bean name="/module-admin/editprojectform"
+ class="org.itracker.web.actions.admin.project.EditProjectFormAction"
+ autowire="byName"/>
+
+</beans>
Modified: itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/config/struts-module-admin-config.xml
===================================================================
--- itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/config/struts-module-admin-config.xml 2009-04-25 20:45:26 UTC (rev 2217)
+++ itracker/branches/spring_refactoring/src/main/webapp/WEB-INF/config/struts-module-admin-config.xml 2009-05-10 14:04:48 UTC (rev 2218)
@@ -180,11 +180,15 @@
name="projectForm" scope="request" input="/admin_project/edit_project.jsp"
validate="true">
</action>
+
<action path="/editprojectform"
- type="org.itracker.web.actions.admin.project.EditProjectFormAction"
- name="projectForm" scope="request" input="/admin_project/edit_project.jsp"
+ type="org.springframework.web.struts.DelegatingActionProxy"
+ name="projectForm"
+ scope="request"
+ input="/admin_project/edit_project.jsp"
validate="false">
</action>
+
<action path="/editprojectscript"
type="org.itracker.web.actions.admin.project.EditProjectScriptAction"
name="projectScriptForm" scope="request"
@@ -319,6 +323,10 @@
parameter="org.itracker.core.resources.ITracker" null="false" />
+ <plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
+ <set-property property="contextConfigLocation"
+ value="/WEB-INF/action-context.xml"/>
+ </plug-in>
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/config/validator-rules.xml,
Added: itracker/branches/spring_refactoring/src/test/java/org/itracker/web/actions/admin/project/EditProjectFormActionTest.java
===================================================================
--- itracker/branches/spring_refactoring/src/test/java/org/itracker/web/actions/admin/project/EditProjectFormActionTest.java (rev 0)
+++ itracker/branches/spring_refactoring/src/test/java/org/itracker/web/actions/admin/project/EditProjectFormActionTest.java 2009-05-10 14:04:48 UTC (rev 2218)
@@ -0,0 +1,89 @@
+package org.itracker.web.actions.admin.project;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import javax.servlet.ServletException;
+
+import org.apache.struts.action.ActionForward;
+import org.apache.struts.action.ActionMapping;
+import org.apache.struts.config.ControllerConfig;
+import org.apache.struts.config.ModuleConfig;
+import org.apache.struts.config.impl.ModuleConfigImpl;
+import org.itracker.model.User;
+import org.itracker.services.ProjectService;
+import org.itracker.services.UserService;
+import org.itracker.web.forms.ProjectForm;
+import org.itracker.web.util.Constants;
+import org.jmock.Mock;
+import org.jmock.MockObjectTestCase;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+
+public class EditProjectFormActionTest extends MockObjectTestCase {
+
+ private EditProjectFormAction action;
+
+ private MockHttpServletRequest request;
+ private MockHttpServletResponse response;
+ private Mock projectService;
+ private Mock userService;
+
+ @Override
+ protected void setUp() throws Exception {
+ request = new MockHttpServletRequest();
+ response = new MockHttpServletResponse();
+
+ User user = new User();
+ user.setSuperUser(true);
+ request.getSession().setAttribute(Constants.USER_KEY, user);
+
+ projectService = new Mock(ProjectService.class);
+ userService = new Mock(UserService.class);
+
+ action = new EditProjectFormAction();
+ action.setProjectService((ProjectService) projectService.proxy());
+ action.setUserService((UserService) userService.proxy());
+ }
+
+ public void testCreateNewProject() throws IOException, ServletException {
+
+ ActionMapping mapping = new ActionMapping();
+
+ ActionForward errorForward = new ActionForward("error", "/error.do",
+ true);
+ mapping.addForwardConfig(errorForward);
+
+ ActionForward expectedForward = new ActionForward(
+ "/admin_project/edit_project.jsp",
+ "/admin_project/edit_project.jsp",
+ false);
+ mapping.addForwardConfig(expectedForward);
+ mapping.setInput("/admin_project/edit_project.jsp");
+
+ ModuleConfig moduleConfig = new ModuleConfigImpl("/admin_project");
+
+ ControllerConfig controllerConfig = new ControllerConfig();
+ controllerConfig.setInputForward(true);
+ moduleConfig.setControllerConfig(controllerConfig);
+
+ mapping.setModuleConfig(moduleConfig);
+
+ ProjectForm form = new ProjectForm();
+ form.setAction("create");
+
+ userService.expects(once()).method("allowPermissionUpdates")
+ .withAnyArguments()
+ .will(returnValue(true));
+
+ userService.expects(once()).method("getSuperUsers")
+ .will(returnValue(new ArrayList()));
+
+ userService.expects(once()).method("getActiveUsers")
+ .will(returnValue(new ArrayList()));
+
+ ActionForward actualForward = action.execute(mapping, form, request, response);
+
+ assertEquals(expectedForward, actualForward);
+ }
+
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:45:32
|
Revision: 2217
http://itracker.svn.sourceforge.net/itracker/?rev=2217&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:45:26 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/core/resources/ITrackerResources.java
Modified: itracker/trunk/src/main/java/org/itracker/core/resources/ITrackerResources.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/core/resources/ITrackerResources.java 2009-04-25 20:45:06 UTC (rev 2216)
+++ itracker/trunk/src/main/java/org/itracker/core/resources/ITrackerResources.java 2009-04-25 20:45:26 UTC (rev 2217)
@@ -32,7 +32,6 @@
import org.itracker.model.Language;
import org.itracker.persistence.dao.NoSuchEntityException;
import org.itracker.services.exceptions.ITrackerDirtyResourceException;
-import org.itracker.web.util.LoginUtilities;
import org.itracker.web.util.ServletContextUtils;
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:45:11
|
Revision: 2216
http://itracker.svn.sourceforge.net/itracker/?rev=2216&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:45:06 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/web/actions/admin/configuration/OrderCustomFieldValueAction.java
Modified: itracker/trunk/src/main/java/org/itracker/web/actions/admin/configuration/OrderCustomFieldValueAction.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/web/actions/admin/configuration/OrderCustomFieldValueAction.java 2009-04-25 20:44:50 UTC (rev 2215)
+++ itracker/trunk/src/main/java/org/itracker/web/actions/admin/configuration/OrderCustomFieldValueAction.java 2009-04-25 20:45:06 UTC (rev 2216)
@@ -19,7 +19,6 @@
package org.itracker.web.actions.admin.configuration;
import java.io.IOException;
-import java.util.ArrayList;
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:44:55
|
Revision: 2215
http://itracker.svn.sourceforge.net/itracker/?rev=2215&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:44:50 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/web/actions/preferences/EditPreferencesFormAction.java
Modified: itracker/trunk/src/main/java/org/itracker/web/actions/preferences/EditPreferencesFormAction.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/web/actions/preferences/EditPreferencesFormAction.java 2009-04-25 20:44:36 UTC (rev 2214)
+++ itracker/trunk/src/main/java/org/itracker/web/actions/preferences/EditPreferencesFormAction.java 2009-04-25 20:44:50 UTC (rev 2215)
@@ -19,7 +19,6 @@
package org.itracker.web.actions.preferences;
import java.io.IOException;
-import java.util.LinkedHashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:44:41
|
Revision: 2214
http://itracker.svn.sourceforge.net/itracker/?rev=2214&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:44:36 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/web/actions/admin/project/EditProjectFormActionUtil.java
Modified: itracker/trunk/src/main/java/org/itracker/web/actions/admin/project/EditProjectFormActionUtil.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/web/actions/admin/project/EditProjectFormActionUtil.java 2009-04-25 20:44:22 UTC (rev 2213)
+++ itracker/trunk/src/main/java/org/itracker/web/actions/admin/project/EditProjectFormActionUtil.java 2009-04-25 20:44:36 UTC (rev 2214)
@@ -32,7 +32,6 @@
import org.itracker.services.util.IssueUtilities;
import org.itracker.services.util.ProjectUtilities;
import org.itracker.services.util.UserUtilities;
-import org.itracker.services.util.WorkflowUtilities;
import org.itracker.web.forms.ProjectForm;
import org.itracker.web.ptos.ProjectScriptPTO;
import org.itracker.web.util.Constants;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:44:28
|
Revision: 2213
http://itracker.svn.sourceforge.net/itracker/?rev=2213&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:44:22 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
remove unused imports
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/services/util/SystemConfigurationUtilities.java
Modified: itracker/trunk/src/main/java/org/itracker/services/util/SystemConfigurationUtilities.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/services/util/SystemConfigurationUtilities.java 2009-04-25 20:43:05 UTC (rev 2212)
+++ itracker/trunk/src/main/java/org/itracker/services/util/SystemConfigurationUtilities.java 2009-04-25 20:44:22 UTC (rev 2213)
@@ -26,7 +26,6 @@
import org.apache.log4j.Logger;
import org.itracker.core.resources.ITrackerResources;
import org.itracker.model.Configuration;
-import org.itracker.model.Language;
import org.itracker.model.NameValuePair;
import org.itracker.services.ConfigurationService;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:43:13
|
Revision: 2212
http://itracker.svn.sourceforge.net/itracker/?rev=2212&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:43:05 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
updated prototype js to 1.6.0.3, because it shows much less errors & warnings in Eclipse..
Modified Paths:
--------------
itracker/trunk/src/main/webapp/themes/defaulttheme/includes/calendar/javascripts/prototype.js
Modified: itracker/trunk/src/main/webapp/themes/defaulttheme/includes/calendar/javascripts/prototype.js
===================================================================
--- itracker/trunk/src/main/webapp/themes/defaulttheme/includes/calendar/javascripts/prototype.js 2009-04-25 20:40:08 UTC (rev 2211)
+++ itracker/trunk/src/main/webapp/themes/defaulttheme/includes/calendar/javascripts/prototype.js 2009-04-25 20:43:05 UTC (rev 2212)
@@ -1,4184 +1,4320 @@
-/* Prototype JavaScript framework, version 1.6.0
- * (c) 2005-2007 Sam Stephenson
- *
- * Prototype is freely distributable under the terms of an MIT-style license.
- * For details, see the Prototype web site: http://www.prototypejs.org/
- *
- *--------------------------------------------------------------------------*/
-
-var Prototype = {
- Version: '1.6.0',
-
- Browser: {
- IE: !!(window.attachEvent && !window.opera),
- Opera: !!window.opera,
- WebKit: navigator.userAgent.indexOf('AppleWebKit/') > -1,
- Gecko: navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('KHTML') == -1,
- MobileSafari: !!navigator.userAgent.match(/Apple.*Mobile.*Safari/)
- },
-
- BrowserFeatures: {
- XPath: !!document.evaluate,
- ElementExtensions: !!window.HTMLElement,
- SpecificElementExtensions:
- document.createElement('div').__proto__ &&
- document.createElement('div').__proto__ !==
- document.createElement('form').__proto__
- },
-
- ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',
- JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,
-
- emptyFunction: function() { },
- K: function(x) { return x }
-};
-
-if (Prototype.Browser.MobileSafari)
- Prototype.BrowserFeatures.SpecificElementExtensions = false;
-
-if (Prototype.Browser.WebKit)
- Prototype.BrowserFeatures.XPath = false;
-
-/* Based on Alex Arnell's inheritance implementation. */
-var Class = {
- create: function() {
- var parent = null, properties = $A(arguments);
- if (Object.isFunction(properties[0]))
- parent = properties.shift();
-
- function klass() {
- this.initialize.apply(this, arguments);
- }
-
- Object.extend(klass, Class.Methods);
- klass.superclass = parent;
- klass.subclasses = [];
-
- if (parent) {
- var subclass = function() { };
- subclass.prototype = parent.prototype;
- klass.prototype = new subclass;
- parent.subclasses.push(klass);
- }
-
- for (var i = 0; i < properties.length; i++)
- klass.addMethods(properties[i]);
-
- if (!klass.prototype.initialize)
- klass.prototype.initialize = Prototype.emptyFunction;
-
- klass.prototype.constructor = klass;
-
- return klass;
- }
-};
-
-Class.Methods = {
- addMethods: function(source) {
- var ancestor = this.superclass && this.superclass.prototype;
- var properties = Object.keys(source);
-
- if (!Object.keys({ toString: true }).length)
- properties.push("toString", "valueOf");
-
- for (var i = 0, length = properties.length; i < length; i++) {
- var property = properties[i], value = source[property];
- if (ancestor && Object.isFunction(value) &&
- value.argumentNames().first() == "$super") {
- var method = value, value = Object.extend((function(m) {
- return function() { return ancestor[m].apply(this, arguments) };
- })(property).wrap(method), {
- valueOf: function() { return method },
- toString: function() { return method.toString() }
- });
- }
- this.prototype[property] = value;
- }
-
- return this;
- }
-};
-
-var Abstract = { };
-
-Object.extend = function(destination, source) {
- for (var property in source)
- destination[property] = source[property];
- return destination;
-};
-
-Object.extend(Object, {
- inspect: function(object) {
- try {
- if (object === undefined) return 'undefined';
- if (object === null) return 'null';
- return object.inspect ? object.inspect() : object.toString();
- } catch (e) {
- if (e instanceof RangeError) return '...';
- throw e;
- }
- },
-
- toJSON: function(object) {
- var type = typeof object;
- switch (type) {
- case 'undefined':
- case 'function':
- case 'unknown': return;
- case 'boolean': return object.toString();
- }
-
- if (object === null) return 'null';
- if (object.toJSON) return object.toJSON();
- if (Object.isElement(object)) return;
-
- var results = [];
- for (var property in object) {
- var value = Object.toJSON(object[property]);
- if (value !== undefined)
- results.push(property.toJSON() + ': ' + value);
- }
-
- return '{' + results.join(', ') + '}';
- },
-
- toQueryString: function(object) {
- return $H(object).toQueryString();
- },
-
- toHTML: function(object) {
- return object && object.toHTML ? object.toHTML() : String.interpret(object);
- },
-
- keys: function(object) {
- var keys = [];
- for (var property in object)
- keys.push(property);
- return keys;
- },
-
- values: function(object) {
- var values = [];
- for (var property in object)
- values.push(object[property]);
- return values;
- },
-
- clone: function(object) {
- return Object.extend({ }, object);
- },
-
- isElement: function(object) {
- return object && object.nodeType == 1;
- },
-
- isArray: function(object) {
- return object && object.constructor === Array;
- },
-
- isHash: function(object) {
- return object instanceof Hash;
- },
-
- isFunction: function(object) {
- return typeof object == "function";
- },
-
- isString: function(object) {
- return typeof object == "string";
- },
-
- isNumber: function(object) {
- return typeof object == "number";
- },
-
- isUndefined: function(object) {
- return typeof object == "undefined";
- }
-});
-
-Object.extend(Function.prototype, {
- argumentNames: function() {
- var names = this.toString().match(/^[\s\(]*function[^(]*\((.*?)\)/)[1].split(",").invoke("strip");
- return names.length == 1 && !names[0] ? [] : names;
- },
-
- bind: function() {
- if (arguments.length < 2 && arguments[0] === undefined) return this;
- var __method = this, args = $A(arguments), object = args.shift();
- return function() {
- return __method.apply(object, args.concat($A(arguments)));
- }
- },
-
- bindAsEventListener: function() {
- var __method = this, args = $A(arguments), object = args.shift();
- return function(event) {
- return __method.apply(object, [event || window.event].concat(args));
- }
- },
-
- curry: function() {
- if (!arguments.length) return this;
- var __method = this, args = $A(arguments);
- return function() {
- return __method.apply(this, args.concat($A(arguments)));
- }
- },
-
- delay: function() {
- var __method = this, args = $A(arguments), timeout = args.shift() * 1000;
- return window.setTimeout(function() {
- return __method.apply(__method, args);
- }, timeout);
- },
-
- wrap: function(wrapper) {
- var __method = this;
- return function() {
- return wrapper.apply(this, [__method.bind(this)].concat($A(arguments)));
- }
- },
-
- methodize: function() {
- if (this._methodized) return this._methodized;
- var __method = this;
- return this._methodized = function() {
- return __method.apply(null, [this].concat($A(arguments)));
- };
- }
-});
-
-Function.prototype.defer = Function.prototype.delay.curry(0.01);
-
-Date.prototype.toJSON = function() {
- return '"' + this.getUTCFullYear() + '-' +
- (this.getUTCMonth() + 1).toPaddedString(2) + '-' +
- this.getUTCDate().toPaddedString(2) + 'T' +
- this.getUTCHours().toPaddedString(2) + ':' +
- this.getUTCMinutes().toPaddedString(2) + ':' +
- this.getUTCSeconds().toPaddedString(2) + 'Z"';
-};
-
-var Try = {
- these: function() {
- var returnValue;
-
- for (var i = 0, length = arguments.length; i < length; i++) {
- var lambda = arguments[i];
- try {
- returnValue = lambda();
- break;
- } catch (e) { }
- }
-
- return returnValue;
- }
-};
-
-RegExp.prototype.match = RegExp.prototype.test;
-
-RegExp.escape = function(str) {
- return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');
-};
-
-/*--------------------------------------------------------------------------*/
-
-var PeriodicalExecuter = Class.create({
- initialize: function(callback, frequency) {
- this.callback = callback;
- this.frequency = frequency;
- this.currentlyExecuting = false;
-
- this.registerCallback();
- },
-
- registerCallback: function() {
- this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);
- },
-
- execute: function() {
- this.callback(this);
- },
-
- stop: function() {
- if (!this.timer) return;
- clearInterval(this.timer);
- this.timer = null;
- },
-
- onTimerEvent: function() {
- if (!this.currentlyExecuting) {
- try {
- this.currentlyExecuting = true;
- this.execute();
- } finally {
- this.currentlyExecuting = false;
- }
- }
- }
-});
-Object.extend(String, {
- interpret: function(value) {
- return value == null ? '' : String(value);
- },
- specialChar: {
- '\b': '\\b',
- '\t': '\\t',
- '\n': '\\n',
- '\f': '\\f',
- '\r': '\\r',
- '\\': '\\\\'
- }
-});
-
-Object.extend(String.prototype, {
- gsub: function(pattern, replacement) {
- var result = '', source = this, match;
- replacement = arguments.callee.prepareReplacement(replacement);
-
- while (source.length > 0) {
- if (match = source.match(pattern)) {
- result += source.slice(0, match.index);
- result += String.interpret(replacement(match));
- source = source.slice(match.index + match[0].length);
- } else {
- result += source, source = '';
- }
- }
- return result;
- },
-
- sub: function(pattern, replacement, count) {
- replacement = this.gsub.prepareReplacement(replacement);
- count = count === undefined ? 1 : count;
-
- return this.gsub(pattern, function(match) {
- if (--count < 0) return match[0];
- return replacement(match);
- });
- },
-
- scan: function(pattern, iterator) {
- this.gsub(pattern, iterator);
- return String(this);
- },
-
- truncate: function(length, truncation) {
- length = length || 30;
- truncation = truncation === undefined ? '...' : truncation;
- return this.length > length ?
- this.slice(0, length - truncation.length) + truncation : String(this);
- },
-
- strip: function() {
- return this.replace(/^\s+/, '').replace(/\s+$/, '');
- },
-
- stripTags: function() {
- return this.replace(/<\/?[^>]+>/gi, '');
- },
-
- stripScripts: function() {
- return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');
- },
-
- extractScripts: function() {
- var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
- var matchOne = new RegExp(Prototype.ScriptFragment, 'im');
- return (this.match(matchAll) || []).map(function(scriptTag) {
- return (scriptTag.match(matchOne) || ['', ''])[1];
- });
- },
-
- evalScripts: function() {
- return this.extractScripts().map(function(script) { return eval(script) });
- },
-
- escapeHTML: function() {
- var self = arguments.callee;
- self.text.data = this;
- return self.div.innerHTML;
- },
-
- unescapeHTML: function() {
- var div = new Element('div');
- div.innerHTML = this.stripTags();
- return div.childNodes[0] ? (div.childNodes.length > 1 ?
- $A(div.childNodes).inject('', function(memo, node) { return memo+node.nodeValue }) :
- div.childNodes[0].nodeValue) : '';
- },
-
- toQueryParams: function(separator) {
- var match = this.strip().match(/([^?#]*)(#.*)?$/);
- if (!match) return { };
-
- return match[1].split(separator || '&').inject({ }, function(hash, pair) {
- if ((pair = pair.split('='))[0]) {
- var key = decodeURIComponent(pair.shift());
- var value = pair.length > 1 ? pair.join('=') : pair[0];
- if (value != undefined) value = decodeURIComponent(value);
-
- if (key in hash) {
- if (!Object.isArray(hash[key])) hash[key] = [hash[key]];
- hash[key].push(value);
- }
- else hash[key] = value;
- }
- return hash;
- });
- },
-
- toArray: function() {
- return this.split('');
- },
-
- succ: function() {
- return this.slice(0, this.length - 1) +
- String.fromCharCode(this.charCodeAt(this.length - 1) + 1);
- },
-
- times: function(count) {
- return count < 1 ? '' : new Array(count + 1).join(this);
- },
-
- camelize: function() {
- var parts = this.split('-'), len = parts.length;
- if (len == 1) return parts[0];
-
- var camelized = this.charAt(0) == '-'
- ? parts[0].charAt(0).toUpperCase() + parts[0].substring(1)
- : parts[0];
-
- for (var i = 1; i < len; i++)
- camelized += parts[i].charAt(0).toUpperCase() + parts[i].substring(1);
-
- return camelized;
- },
-
- capitalize: function() {
- return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
- },
-
- underscore: function() {
- return this.gsub(/::/, '/').gsub(/([A-Z]+)([A-Z][a-z])/,'#{1}_#{2}').gsub(/([a-z\d])([A-Z])/,'#{1}_#{2}').gsub(/-/,'_').toLowerCase();
- },
-
- dasherize: function() {
- return this.gsub(/_/,'-');
- },
-
- inspect: function(useDoubleQuotes) {
- var escapedString = this.gsub(/[\x00-\x1f\\]/, function(match) {
- var character = String.specialChar[match[0]];
- return character ? character : '\\u00' + match[0].charCodeAt().toPaddedString(2, 16);
- });
- if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';
- return "'" + escapedString.replace(/'/g, '\\\'') + "'";
- },
-
- toJSON: function() {
- return this.inspect(true);
- },
-
- unfilterJSON: function(filter) {
- return this.sub(filter || Prototype.JSONFilter, '#{1}');
- },
-
- isJSON: function() {
- var str = this.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, '');
- return (/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(str);
- },
-
- evalJSON: function(sanitize) {
- var json = this.unfilterJSON();
- try {
- if (!sanitize || json.isJSON()) return eval('(' + json + ')');
- } catch (e) { }
- throw new SyntaxError('Badly formed JSON string: ' + this.inspect());
- },
-
- include: function(pattern) {
- return this.indexOf(pattern) > -1;
- },
-
- startsWith: function(pattern) {
- return this.indexOf(pattern) === 0;
- },
-
- endsWith: function(pattern) {
- var d = this.length - pattern.length;
- return d >= 0 && this.lastIndexOf(pattern) === d;
- },
-
- empty: function() {
- return this == '';
- },
-
- blank: function() {
- return /^\s*$/.test(this);
- },
-
- interpolate: function(object, pattern) {
- return new Template(this, pattern).evaluate(object);
- }
-});
-
-if (Prototype.Browser.WebKit || Prototype.Browser.IE) Object.extend(String.prototype, {
- escapeHTML: function() {
- return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
- },
- unescapeHTML: function() {
- return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
- }
-});
-
-String.prototype.gsub.prepareReplacement = function(replacement) {
- if (Object.isFunction(replacement)) return replacement;
- var template = new Template(replacement);
- return function(match) { return template.evaluate(match) };
-};
-
-String.prototype.parseQuery = String.prototype.toQueryParams;
-
-Object.extend(String.prototype.escapeHTML, {
- div: document.createElement('div'),
- text: document.createTextNode('')
-});
-
-with (String.prototype.escapeHTML) div.appendChild(text);
-
-var Template = Class.create({
- initialize: function(template, pattern) {
- this.template = template.toString();
- this.pattern = pattern || Template.Pattern;
- },
-
- evaluate: function(object) {
- if (Object.isFunction(object.toTemplateReplacements))
- object = object.toTemplateReplacements();
-
- return this.template.gsub(this.pattern, function(match) {
- if (object == null) return '';
-
- var before = match[1] || '';
- if (before == '\\') return match[2];
-
- var ctx = object, expr = match[3];
- var pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/, match = pattern.exec(expr);
- if (match == null) return before;
-
- while (match != null) {
- var comp = match[1].startsWith('[') ? match[2].gsub('\\\\]', ']') : match[1];
- ctx = ctx[comp];
- if (null == ctx || '' == match[3]) break;
- expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);
- match = pattern.exec(expr);
- }
-
- return before + String.interpret(ctx);
- }.bind(this));
- }
-});
-Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;
-
-var $break = { };
-
-var Enumerable = {
- each: function(iterator, context) {
- var index = 0;
- iterator = iterator.bind(context);
- try {
- this._each(function(value) {
- iterator(value, index++);
- });
- } catch (e) {
- if (e != $break) throw e;
- }
- return this;
- },
-
- eachSlice: function(number, iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var index = -number, slices = [], array = this.toArray();
- while ((index += number) < array.length)
- slices.push(array.slice(index, index+number));
- return slices.collect(iterator, context);
- },
-
- all: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var result = true;
- this.each(function(value, index) {
- result = result && !!iterator(value, index);
- if (!result) throw $break;
- });
- return result;
- },
-
- any: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var result = false;
- this.each(function(value, index) {
- if (result = !!iterator(value, index))
- throw $break;
- });
- return result;
- },
-
- collect: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var results = [];
- this.each(function(value, index) {
- results.push(iterator(value, index));
- });
- return results;
- },
-
- detect: function(iterator, context) {
- iterator = iterator.bind(context);
- var result;
- this.each(function(value, index) {
- if (iterator(value, index)) {
- result = value;
- throw $break;
- }
- });
- return result;
- },
-
- findAll: function(iterator, context) {
- iterator = iterator.bind(context);
- var results = [];
- this.each(function(value, index) {
- if (iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- grep: function(filter, iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var results = [];
-
- if (Object.isString(filter))
- filter = new RegExp(filter);
-
- this.each(function(value, index) {
- if (filter.match(value))
- results.push(iterator(value, index));
- });
- return results;
- },
-
- include: function(object) {
- if (Object.isFunction(this.indexOf))
- if (this.indexOf(object) != -1) return true;
-
- var found = false;
- this.each(function(value) {
- if (value == object) {
- found = true;
- throw $break;
- }
- });
- return found;
- },
-
- inGroupsOf: function(number, fillWith) {
- fillWith = fillWith === undefined ? null : fillWith;
- return this.eachSlice(number, function(slice) {
- while(slice.length < number) slice.push(fillWith);
- return slice;
- });
- },
-
- inject: function(memo, iterator, context) {
- iterator = iterator.bind(context);
- this.each(function(value, index) {
- memo = iterator(memo, value, index);
- });
- return memo;
- },
-
- invoke: function(method) {
- var args = $A(arguments).slice(1);
- return this.map(function(value) {
- return value[method].apply(value, args);
- });
- },
-
- max: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var result;
- this.each(function(value, index) {
- value = iterator(value, index);
- if (result == undefined || value >= result)
- result = value;
- });
- return result;
- },
-
- min: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var result;
- this.each(function(value, index) {
- value = iterator(value, index);
- if (result == undefined || value < result)
- result = value;
- });
- return result;
- },
-
- partition: function(iterator, context) {
- iterator = iterator ? iterator.bind(context) : Prototype.K;
- var trues = [], falses = [];
- this.each(function(value, index) {
- (iterator(value, index) ?
- trues : falses).push(value);
- });
- return [trues, falses];
- },
-
- pluck: function(property) {
- var results = [];
- this.each(function(value) {
- results.push(value[property]);
- });
- return results;
- },
-
- reject: function(iterator, context) {
- iterator = iterator.bind(context);
- var results = [];
- this.each(function(value, index) {
- if (!iterator(value, index))
- results.push(value);
- });
- return results;
- },
-
- sortBy: function(iterator, context) {
- iterator = iterator.bind(context);
- return this.map(function(value, index) {
- return {value: value, criteria: iterator(value, index)};
- }).sort(function(left, right) {
- var a = left.criteria, b = right.criteria;
- return a < b ? -1 : a > b ? 1 : 0;
- }).pluck('value');
- },
-
- toArray: function() {
- return this.map();
- },
-
- zip: function() {
- var iterator = Prototype.K, args = $A(arguments);
- if (Object.isFunction(args.last()))
- iterator = args.pop();
-
- var collections = [this].concat(args).map($A);
- return this.map(function(value, index) {
- return iterator(collections.pluck(index));
- });
- },
-
- size: function() {
- return this.toArray().length;
- },
-
- inspect: function() {
- return '#<Enumerable:' + this.toArray().inspect() + '>';
- }
-};
-
-Object.extend(Enumerable, {
- map: Enumerable.collect,
- find: Enumerable.detect,
- select: Enumerable.findAll,
- filter: Enumerable.findAll,
- member: Enumerable.include,
- entries: Enumerable.toArray,
- every: Enumerable.all,
- some: Enumerable.any
-});
-function $A(iterable) {
- if (!iterable) return [];
- if (iterable.toArray) return iterable.toArray();
- var length = iterable.length, results = new Array(length);
- while (length--) results[length] = iterable[length];
- return results;
-}
-
-if (Prototype.Browser.WebKit) {
- function $A(iterable) {
- if (!iterable) return [];
- if (!(Object.isFunction(iterable) && iterable == '[object NodeList]') &&
- iterable.toArray) return iterable.toArray();
- var length = iterable.length, results = new Array(length);
- while (length--) results[length] = iterable[length];
- return results;
- }
-}
-
-Array.from = $A;
-
-Object.extend(Array.prototype, Enumerable);
-
-if (!Array.prototype._reverse) Array.prototype._reverse = Array.prototype.reverse;
-
-Object.extend(Array.prototype, {
- _each: function(iterator) {
- for (var i = 0, length = this.length; i < length; i++)
- iterator(this[i]);
- },
-
- clear: function() {
- this.length = 0;
- return this;
- },
-
- first: function() {
- return this[0];
- },
-
- last: function() {
- return this[this.length - 1];
- },
-
- compact: function() {
- return this.select(function(value) {
- return value != null;
- });
- },
-
- flatten: function() {
- return this.inject([], function(array, value) {
- return array.concat(Object.isArray(value) ?
- value.flatten() : [value]);
- });
- },
-
- without: function() {
- var values = $A(arguments);
- return this.select(function(value) {
- return !values.include(value);
- });
- },
-
- reverse: function(inline) {
- return (inline !== false ? this : this.toArray())._reverse();
- },
-
- reduce: function() {
- return this.length > 1 ? this : this[0];
- },
-
- uniq: function(sorted) {
- return this.inject([], function(array, value, index) {
- if (0 == index || (sorted ? array.last() != value : !array.include(value)))
- array.push(value);
- return array;
- });
- },
-
- intersect: function(array) {
- return this.uniq().findAll(function(item) {
- return array.detect(function(value) { return item === value });
- });
- },
-
- clone: function() {
- return [].concat(this);
- },
-
- size: function() {
- return this.length;
- },
-
- inspect: function() {
- return '[' + this.map(Object.inspect).join(', ') + ']';
- },
-
- toJSON: function() {
- var results = [];
- this.each(function(object) {
- var value = Object.toJSON(object);
- if (value !== undefined) results.push(value);
- });
- return '[' + results.join(', ') + ']';
- }
-});
-
-// use native browser JS 1.6 implementation if available
-if (Object.isFunction(Array.prototype.forEach))
- Array.prototype._each = Array.prototype.forEach;
-
-if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
- i || (i = 0);
- var length = this.length;
- if (i < 0) i = length + i;
- for (; i < length; i++)
- if (this[i] === item) return i;
- return -1;
-};
-
-if (!Array.prototype.lastIndexOf) Array.prototype.lastIndexOf = function(item, i) {
- i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;
- var n = this.slice(0, i).reverse().indexOf(item);
- return (n < 0) ? n : i - n - 1;
-};
-
-Array.prototype.toArray = Array.prototype.clone;
-
-function $w(string) {
- if (!Object.isString(string)) return [];
- string = string.strip();
- return string ? string.split(/\s+/) : [];
-}
-
-if (Prototype.Browser.Opera){
- Array.prototype.concat = function() {
- var array = [];
- for (var i = 0, length = this.length; i < length; i++) array.push(this[i]);
- for (var i = 0, length = arguments.length; i < length; i++) {
- if (Object.isArray(arguments[i])) {
- for (var j = 0, arrayLength = arguments[i].length; j < arrayLength; j++)
- array.push(arguments[i][j]);
- } else {
- array.push(arguments[i]);
- }
- }
- return array;
- };
-}
-Object.extend(Number.prototype, {
- toColorPart: function() {
- return this.toPaddedString(2, 16);
- },
-
- succ: function() {
- return this + 1;
- },
-
- times: function(iterator) {
- $R(0, this, true).each(iterator);
- return this;
- },
-
- toPaddedString: function(length, radix) {
- var string = this.toString(radix || 10);
- return '0'.times(length - string.length) + string;
- },
-
- toJSON: function() {
- return isFinite(this) ? this.toString() : 'null';
- }
-});
-
-$w('abs round ceil floor').each(function(method){
- Number.prototype[method] = Math[method].methodize();
-});
-function $H(object) {
- return new Hash(object);
-};
-
-var Hash = Class.create(Enumerable, (function() {
- if (function() {
- var i = 0, Test = function(value) { this.key = value };
- Test.prototype.key = 'foo';
- for (var property in new Test('bar')) i++;
- return i > 1;
- }()) {
- function each(iterator) {
- var cache = [];
- for (var key in this._object) {
- var value = this._object[key];
- if (cache.include(key)) continue;
- cache.push(key);
- var pair = [key, value];
- pair.key = key;
- pair.value = value;
- iterator(pair);
- }
- }
- } else {
- function each(iterator) {
- for (var key in this._object) {
- var value = this._object[key], pair = [key, value];
- pair.key = key;
- pair.value = value;
- iterator(pair);
- }
- }
- }
-
- function toQueryPair(key, value) {
- if (Object.isUndefined(value)) return key;
- return key + '=' + encodeURIComponent(String.interpret(value));
- }
-
- return {
- initialize: function(object) {
- this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);
- },
-
- _each: each,
-
- set: function(key, value) {
- return this._object[key] = value;
- },
-
- get: function(key) {
- return this._object[key];
- },
-
- unset: function(key) {
- var value = this._object[key];
- delete this._object[key];
- return value;
- },
-
- toObject: function() {
- return Object.clone(this._object);
- },
-
- keys: function() {
- return this.pluck('key');
- },
-
- values: function() {
- return this.pluck('value');
- },
-
- index: function(value) {
- var match = this.detect(function(pair) {
- return pair.value === value;
- });
- return match && match.key;
- },
-
- merge: function(object) {
- return this.clone().update(object);
- },
-
- update: function(object) {
- return new Hash(object).inject(this, function(result, pair) {
- result.set(pair.key, pair.value);
- return result;
- });
- },
-
- toQueryString: function() {
- return this.map(function(pair) {
- var key = encodeURIComponent(pair.key), values = pair.value;
-
- if (values && typeof values == 'object') {
- if (Object.isArray(values))
- return values.map(toQueryPair.curry(key)).join('&');
- }
- return toQueryPair(key, values);
- }).join('&');
- },
-
- inspect: function() {
- return '#<Hash:{' + this.map(function(pair) {
- return pair.map(Object.inspect).join(': ');
- }).join(', ') + '}>';
- },
-
- toJSON: function() {
- return Object.toJSON(this.toObject());
- },
-
- clone: function() {
- return new Hash(this);
- }
- }
-})());
-
-Hash.prototype.toTemplateReplacements = Hash.prototype.toObject;
-Hash.from = $H;
-var ObjectRange = Class.create(Enumerable, {
- initialize: function(start, end, exclusive) {
- this.start = start;
- this.end = end;
- this.exclusive = exclusive;
- },
-
- _each: function(iterator) {
- var value = this.start;
- while (this.include(value)) {
- iterator(value);
- value = value.succ();
- }
- },
-
- include: function(value) {
- if (value < this.start)
- return false;
- if (this.exclusive)
- return value < this.end;
- return value <= this.end;
- }
-});
-
-var $R = function(start, end, exclusive) {
- return new ObjectRange(start, end, exclusive);
-};
-
-var Ajax = {
- getTransport: function() {
- return Try.these(
- function() {return new XMLHttpRequest()},
- function() {return new ActiveXObject('Msxml2.XMLHTTP')},
- function() {return new ActiveXObject('Microsoft.XMLHTTP')}
- ) || false;
- },
-
- activeRequestCount: 0
-};
-
-Ajax.Responders = {
- responders: [],
-
- _each: function(iterator) {
- this.responders._each(iterator);
- },
-
- register: function(responder) {
- if (!this.include(responder))
- this.responders.push(responder);
- },
-
- unregister: function(responder) {
- this.responders = this.responders.without(responder);
- },
-
- dispatch: function(callback, request, transport, json) {
- this.each(function(responder) {
- if (Object.isFunction(responder[callback])) {
- try {
- responder[callback].apply(responder, [request, transport, json]);
- } catch (e) { }
- }
- });
- }
-};
-
-Object.extend(Ajax.Responders, Enumerable);
-
-Ajax.Responders.register({
- onCreate: function() { Ajax.activeRequestCount++ },
- onComplete: function() { Ajax.activeRequestCount-- }
-});
-
-Ajax.Base = Class.create({
- initialize: function(options) {
- this.options = {
- method: 'post',
- asynchronous: true,
- contentType: 'application/x-www-form-urlencoded',
- encoding: 'UTF-8',
- parameters: '',
- evalJSON: true,
- evalJS: true
- };
- Object.extend(this.options, options || { });
-
- this.options.method = this.options.method.toLowerCase();
- if (Object.isString(this.options.parameters))
- this.options.parameters = this.options.parameters.toQueryParams();
- }
-});
-
-Ajax.Request = Class.create(Ajax.Base, {
- _complete: false,
-
- initialize: function($super, url, options) {
- $super(options);
- this.transport = Ajax.getTransport();
- this.request(url);
- },
-
- request: function(url) {
- this.url = url;
- this.method = this.options.method;
- var params = Object.clone(this.options.parameters);
-
- if (!['get', 'post'].include(this.method)) {
- // simulate other verbs over post
- params['_method'] = this.method;
- this.method = 'post';
- }
-
- this.parameters = params;
-
- if (params = Object.toQueryString(params)) {
- // when GET, append parameters to URL
- if (this.method == 'get')
- this.url += (this.url.include('?') ? '&' : '?') + params;
- else if (/Konqueror|Safari|KHTML/.test(navigator.userAgent))
- params += '&_=';
- }
-
- try {
- var response = new Ajax.Response(this);
- if (this.options.onCreate) this.options.onCreate(response);
- Ajax.Responders.dispatch('onCreate', this, response);
-
- this.transport.open(this.method.toUpperCase(), this.url,
- this.options.asynchronous);
-
- if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);
-
- this.transport.
- this.setRequestHeaders();
-
- this.body = this.method == 'post' ? (this.options.postBody || params) : null;
- this.transport.send(this.body);
-
- /* Force Firefox to handle ready state 4 for synchronous requests */
- if (!this.options.asynchronous && this.transport.overrideMimeType)
- this.onStateChange();
-
- }
- catch (e) {
- this.dispatchException(e);
- }
- },
-
- onStateChange: function() {
- var readyState = this.transport.readyState;
- if (readyState > 1 && !((readyState == 4) && this._complete))
- this.respondToReadyState(this.transport.readyState);
- },
-
- setRequestHeaders: function() {
- var headers = {
- 'X-Requested-With': 'XMLHttpRequest',
- 'X-Prototype-Version': Prototype.Version,
- 'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
- };
-
- if (this.method == 'post') {
- headers['Content-type'] = this.options.contentType +
- (this.options.encoding ? '; charset=' + this.options.encoding : '');
-
- /* Force "Connection: close" for older Mozilla browsers to work
- * around a bug where XMLHttpRequest sends an incorrect
- * Content-length header. See Mozilla Bugzilla #246651.
- */
- if (this.transport.overrideMimeType &&
- (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)
- headers['Connection'] = 'close';
- }
-
- // user-defined headers
- if (typeof this.options.requestHeaders == 'object') {
- var extras = this.options.requestHeaders;
-
- if (Object.isFunction(extras.push))
- for (var i = 0, length = extras.length; i < length; i += 2)
- headers[extras[i]] = extras[i+1];
- else
- $H(extras).each(function(pair) { headers[pair.key] = pair.value });
- }
-
- for (var name in headers)
- this.transport.setRequestHeader(name, headers[name]);
- },
-
- success: function() {
- var status = this.getStatus();
- return !status || (status >= 200 && status < 300);
- },
-
- getStatus: function() {
- try {
- return this.transport.status || 0;
- } catch (e) { return 0 }
- },
-
- respondToReadyState: function(readyState) {
- var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);
-
- if (state == 'Complete') {
- try {
- this._complete = true;
- (this.options['on' + response.status]
- || this.options['on' + (this.success() ? 'Success' : 'Failure')]
- || Prototype.emptyFunction)(response, response.headerJSON);
- } catch (e) {
- this.dispatchException(e);
- }
-
- var contentType = response.getHeader('Content-type');
- if (this.options.evalJS == 'force'
- || (this.options.evalJS && contentType
- && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))
- this.evalResponse();
- }
-
- try {
- (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);
- Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);
- } catch (e) {
- this.dispatchException(e);
- }
-
- if (state == 'Complete') {
- // avoid memory leak in MSIE: clean up
- this.transport.
- }
- },
-
- getHeader: function(name) {
- try {
- return this.transport.getResponseHeader(name);
- } catch (e) { return null }
- },
-
- evalResponse: function() {
- try {
- return eval((this.transport.responseText || '').unfilterJSON());
- } catch (e) {
- this.dispatchException(e);
- }
- },
-
- dispatchException: function(exception) {
- (this.options.onException || Prototype.emptyFunction)(this, exception);
- Ajax.Responders.dispatch('onException', this, exception);
- }
-});
-
-Ajax.Request.Events =
- ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];
-
-Ajax.Response = Class.create({
- initialize: function(request){
- this.request = request;
- var transport = this.transport = request.transport,
- readyState = this.readyState = transport.readyState;
-
- if((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {
- this.status = this.getStatus();
- this.statusText = this.getStatusText();
- this.responseText = String.interpret(transport.responseText);
- this.headerJSON = this._getHeaderJSON();
- }
-
- if(readyState == 4) {
- var xml = transport.responseXML;
- this.responseXML = xml === undefined ? null : xml;
- this.responseJSON = this._getResponseJSON();
- }
- },
-
- status: 0,
- statusText: '',
-
- getStatus: Ajax.Request.prototype.getStatus,
-
- getStatusText: function() {
- try {
- return this.transport.statusText || '';
- } catch (e) { return '' }
- },
-
- getHeader: Ajax.Request.prototype.getHeader,
-
- getAllHeaders: function() {
- try {
- return this.getAllResponseHeaders();
- } catch (e) { return null }
- },
-
- getResponseHeader: function(name) {
- return this.transport.getResponseHeader(name);
- },
-
- getAllResponseHeaders: function() {
- return this.transport.getAllResponseHeaders();
- },
-
- _getHeaderJSON: function() {
- var json = this.getHeader('X-JSON');
- if (!json) return null;
- json = decodeURIComponent(escape(json));
- try {
- return json.evalJSON(this.request.options.sanitizeJSON);
- } catch (e) {
- this.request.dispatchException(e);
- }
- },
-
- _getResponseJSON: function() {
- var options = this.request.options;
- if (!options.evalJSON || (options.evalJSON != 'force' &&
- !(this.getHeader('Content-type') || '').include('application/json')))
- return null;
- try {
- return this.transport.responseText.evalJSON(options.sanitizeJSON);
- } catch (e) {
- this.request.dispatchException(e);
- }
- }
-});
-
-Ajax.Updater = Class.create(Ajax.Request, {
- initialize: function($super, container, url, options) {
- this.container = {
- success: (container.success || container),
- failure: (container.failure || (container.success ? null : container))
- };
-
- options = options || { };
- var
- options. param) {
- this.updateContent(response.responseText);
- if (Object.isFunction(onComplete)) onComplete(response, param);
- }).bind(this);
-
- $super(url, options);
- },
-
- updateContent: function(responseText) {
- var receiver = this.container[this.success() ? 'success' : 'failure'],
- options = this.options;
-
- if (!options.evalScripts) responseText = responseText.stripScripts();
-
- if (receiver = $(receiver)) {
- if (options.insertion) {
- if (Object.isString(options.insertion)) {
- var insertion = { }; insertion[options.insertion] = responseText;
- receiver.insert(insertion);
- }
- else options.insertion(receiver, responseText);
- }
- else receiver.update(responseText);
- }
-
- if (this.success()) {
- if (this.onComplete) this.onComplete.bind(this).defer();
- }
- }
-});
-
-Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {
- initialize: function($super, container, url, options) {
- $super(options);
- this.
-
- this.frequency = (this.options.frequency || 2);
- this.decay = (this.options.decay || 1);
-
- this.updater = { };
- this.container = container;
- this.url = url;
-
- this.start();
- },
-
- start: function() {
- this.options.
- this.onTimerEvent();
- },
-
- stop: function() {
- this.updater.options.
- clearTimeout(this.timer);
- (this.onComplete || Prototype.emptyFunction).apply(this, arguments);
- },
-
- updateComplete: function(response) {
- if (this.options.decay) {
- this.decay = (response.responseText == this.lastText ?
- this.decay * this.options.decay : 1);
-
- this.lastText = response.responseText;
- }
- this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);
- },
-
- onTimerEvent: function() {
- this.updater = new Ajax.Updater(this.container, this.url, this.options);
- }
-});
-function $(element) {
- if (arguments.length > 1) {
- for (var i = 0, elements = [], length = arguments.length; i < length; i++)
- elements.push($(arguments[i]));
- return elements;
- }
- if (Object.isString(element))
- element = document.getElementById(element);
- return Element.extend(element);
-}
-
-if (Prototype.BrowserFeatures.XPath) {
- document._getElementsByXPath = function(expression, parentElement) {
- var results = [];
- var query = document.evaluate(expression, $(parentElement) || document,
- null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
- for (var i = 0, length = query.snapshotLength; i < length; i++)
- results.push(Element.extend(query.snapshotItem(i)));
- return results;
- };
-}
-
-/*--------------------------------------------------------------------------*/
-
-if (!window.Node) var Node = { };
-
-if (!Node.ELEMENT_NODE) {
- // DOM level 2 ECMAScript Language Binding
- Object.extend(Node, {
- ELEMENT_NODE: 1,
- ATTRIBUTE_NODE: 2,
- TEXT_NODE: 3,
- CDATA_SECTION_NODE: 4,
- ENTITY_REFERENCE_NODE: 5,
- ENTITY_NODE: 6,
- PROCESSING_INSTRUCTION_NODE: 7,
- COMMENT_NODE: 8,
- DOCUMENT_NODE: 9,
- DOCUMENT_TYPE_NODE: 10,
- DOCUMENT_FRAGMENT_NODE: 11,
- NOTATION_NODE: 12
- });
-}
-
-(function() {
- var element = this.Element;
- this.Element = function(tagName, attributes) {
- attributes = attributes || { };
- tagName = tagName.toLowerCase();
- var cache = Element.cache;
- if (Prototype.Browser.IE && attributes.name) {
- tagName = '<' + tagName + ' name="' + attributes.name + '">';
- delete attributes.name;
- return Element.writeAttribute(document.createElement(tagName), attributes);
- }
- if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));
- return Element.writeAttribute(cache[tagName].cloneNode(false), attributes);
- };
- Object.extend(this.Element, element || { });
-}).call(window);
-
-Element.cache = { };
-
-Element.Methods = {
- visible: function(element) {
- return $(element).style.display != 'none';
- },
-
- toggle: function(element) {
- element = $(element);
- Element[Element.visible(element) ? 'hide' : 'show'](element);
- return element;
- },
-
- hide: function(element) {
- $(element).style.display = 'none';
- return element;
- },
-
- show: function(element) {
- $(element).style.display = '';
- return element;
- },
-
- remove: function(element) {
- element = $(element);
- element.parentNode.removeChild(element);
- return element;
- },
-
- update: function(element, content) {
- element = $(element);
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) return element.update().insert(content);
- content = Object.toHTML(content);
- element.innerHTML = content.stripScripts();
- content.evalScripts.bind(content).defer();
- return element;
- },
-
- replace: function(element, content) {
- element = $(element);
- if (content && content.toElement) content = content.toElement();
- else if (!Object.isElement(content)) {
- content = Object.toHTML(content);
- var range = element.ownerDocument.createRange();
- range.selectNode(element);
- content.evalScripts.bind(content).defer();
- content = range.createContextualFragment(content.stripScripts());
- }
- element.parentNode.replaceChild(content, element);
- return element;
- },
-
- insert: function(element, insertions) {
- element = $(element);
-
- if (Object.isString(insertions) || Object.isNumber(insertions) ||
- Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))
- insertions = {bottom:insertions};
-
- var content, t, range;
-
- for (position in insertions) {
- content = insertions[position];
- position = position.toLowerCase();
- t = Element._insertionTranslations[position];
-
- if (content && content.toElement) content = content.toElement();
- if (Object.isElement(content)) {
- t.insert(element, content);
- continue;
- }
-
- content = Object.toHTML(content);
-
- range = element.ownerDocument.createRange();
- t.initializeRange(element, range);
- t.insert(element, range.createContextualFragment(content.stripScripts()));
-
- content.evalScripts.bind(content).defer();
- }
-
- return element;
- },
-
- wrap: function(element, wrapper, attributes) {
- element = $(element);
- if (Object.isElement(wrapper))
- $(wrapper).writeAttribute(attributes || { });
- else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);
- else wrapper = new Element('div', wrapper);
- if (element.parentNode)
- element.parentNode.replaceChild(wrapper, element);
- wrapper.appendChild(element);
- return wrapper;
- },
-
- inspect: function(element) {
- element = $(element);
- var result = '<' + element.tagName.toLowerCase();
- $H({'id': 'id', 'className': 'class'}).each(function(pair) {
- var property = pair.first(), attribute = pair.last();
- var value = (element[property] || '').toString();
- if (value) result += ' ' + attribute + '=' + value.inspect(true);
- });
- return result + '>';
- },
-
- recursivelyCollect: function(element, property) {
- element = $(element);
- var elements = [];
- while (element = element[property])
- if (element.nodeType == 1)
- elements.push(Element.extend(element));
- return elements;
- },
-
- ancestors: function(element) {
- return $(element).recursivelyCollect('parentNode');
- },
-
- descendants: function(element) {
- return $A($(element).getElementsByTagName('*')).each(Element.extend);
- },
-
- firstDescendant: function(element) {
- element = $(element).firstChild;
- while (element && element.nodeType != 1) element = element.nextSibling;
- return $(element);
- },
-
- immediateDescendants: function(element) {
- if (!(element = $(element).firstChild)) return [];
- while (element && element.nodeType != 1) element = element.nextSibling;
- if (element) return [element].concat($(element).nextSiblings());
- return [];
- },
-
- previousSiblings: function(element) {
- return $(element).recursivelyCollect('previousSibling');
- },
-
- nextSiblings: function(element) {
- return $(element).recursivelyCollect('nextSibling');
- },
-
- siblings: function(element) {
- element = $(element);
- return element.previousSiblings().reverse().concat(element.nextSiblings());
- },
-
- match: function(element, selector) {
- if (Object.isString(selector))
- selector = new Selector(selector);
- return selector.match($(element));
- },
-
- up: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(element.parentNode);
- var ancestors = element.ancestors();
- return expression ? Selector.findElement(ancestors, expression, index) :
- ancestors[index || 0];
- },
-
- down: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return element.firstDescendant();
- var descendants = element.descendants();
- return expression ? Selector.findElement(descendants, expression, index) :
- descendants[index || 0];
- },
-
- previous: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(Selector.handlers.previousElementSibling(element));
- var previousSiblings = element.previousSiblings();
- return expression ? Selector.findElement(previousSiblings, expression, index) :
- previousSiblings[index || 0];
- },
-
- next: function(element, expression, index) {
- element = $(element);
- if (arguments.length == 1) return $(Selector.handlers.nextElementSibling(element));
- var nextSiblings = element.nextSiblings();
- return expression ? Selector.findElement(nextSiblings, expression, index) :
- nextSiblings[index || 0];
- },
-
- select: function() {
- var args = $A(arguments), element = $(args.shift());
- return Selector.findChildElements(element, args);
- },
-
- adjacent: function() {
- var args = $A(arguments), element = $(args.shift());
- return Selector.findChildElements(element.parentNode, args).without(element);
- },
-
- identify: function(element) {
- element = $(element);
- var id = element.readAttribute('id'), self = arguments.callee;
- if (id) return id;
- do { id = 'anonymous_element_' + self.counter++ } while ($(id));
- element.writeAttribute('id', id);
- return id;
- },
-
- readAttribute: function(element, name) {
- element = $(element);
- if (Prototype.Browser.IE) {
- var t = Element._attributeTranslations.read;
- if (t.values[name]) return t.values[name](element, name);
- if (t.names[name]) name = t.names[name];
- if (name.include(':')) {
- return (!element.attributes || !element.attributes[name]) ? null :
- element.attributes[name].value;
- }
- }
- return element.getAttribute(name);
- },
-
- writeAttribute: function(element, name, value) {
- element = $(element);
- var attributes = { }, t = Element._attributeTranslations.write;
-
- if (typeof name == 'object') attributes = name;
- else attributes[name] = value === undefined ? true : value;
-
- for (var attr in attributes) {
- var name = t.names[attr] || attr, value = attributes[attr];
- if (t.values[attr]) name = t.values[attr](element, value);
- if (value === false || value === null)
- element.removeAttribute(name);
- else if (value === true)
- element.setAttribute(name, name);
- else element.setAttribute(name, value);
- }
- return element;
- },
-
- getHeight: function(element) {
- return $(element).getDimensions().height;
- },
-
- getWidth: function(element) {
- return $(element).getDimensions().width;
- },
-
- classNames: function(element) {
- return new Element.ClassNames(element);
- },
-
- hasClassName: function(element, className) {
- if (!(element = $(element))) return;
- var elementClassName = element.className;
- return (elementClassName.length > 0 && (elementClassName == className ||
- new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
- },
-
- addClassName: function(element, className) {
- if (!(element = $(element))) return;
- if (!element.hasClassName(className))
- element.className += (element.className ? ' ' : '') + className;
- return element;
- },
-
- removeClassName: function(element, className) {
- if (!(element = $(element))) return;
- element.className = element.className.replace(
- new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();
- return element;
- },
-
- toggleClassName: function(element, className) {
- if (!(element = $(element))) return;
- return element[element.hasClassName(className) ?
- 'removeClassName' : 'addClassName'](className);
- },
-
- // removes whitespace-only text node children
- cleanWhitespace: function(element) {
- element = $(element);
- var node = element.firstChild;
- while (node) {
- var nextNode = node.nextSibling;
- if (node.nodeType == 3 && !/\S/.test(node.nodeValue))
- element.removeChild(node);
- node = nextNode;
- }
- return element;
- },
-
- empty: function(element) {
- return $(element).innerHTML.blank();
- },
-
- descendantOf: function(element, ancestor) {
- element = $(element), ancestor = $(ancestor);
-
- if (element.compareDocumentPosition)
- return (element.compareDocumentPosition(ancestor) & 8) === 8;
-
- if (element.sourceIndex && !Prototype.Browser.Opera) {
- var e = element.sourceIndex, a = ancestor.sourceIndex,
- nextAncestor = ancestor.nextSibling;
- if (!nextAncestor) {
- do { ancestor = ancestor.parentNode; }
- while (!(nextAncestor = ancestor.nextSibling) && ancestor.parentNode);
- }
- if (nextAncestor) return (e > a && e < nextAncestor.sourceIndex);
- }
-
- while (element = element.parentNode)
- if (element == ancestor) return true;
- return false;
- },
-
- scrollTo: function(element) {
- element = $(element);
- var pos = element.cumulativeOffset();
- window.scrollTo(pos[0], pos[1]);
- return element;
- },
-
- getStyle: function(element, style) {
- element = $(element);
- style = style == 'float' ? 'cssFloat' : style.camelize();
- var value = element.style[style];
- if (!value) {
- var css = document.defaultView.getComputedStyle(element, null);
- value = css ? css[style] : null;
- }
- if (style == 'opacity') return value ? parseFloat(value) : 1.0;
- return value == 'auto' ? null : value;
- },
-
- getOpacity: function(element) {
- return $(element).getStyle('opacity');
- },
-
- setStyle: function(element, styles) {
- element = $(element);
- var elementStyle = element.style, match;
- if (Object.isString(styles)) {
- element.style.cssText += ';' + styles;
- return styles.include('opacity') ?
- element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;
- }
- for (var property in styles)
- if (property == 'opacity') element.setOpacity(styles[property]);
- else
- elementStyle[(property == 'float' || property == 'cssFloat') ?
- (elementStyle.styleFloat === undefined ? 'cssFloat' : 'styleFloat') :
- property] = styles[property];
-
- return element;
- },
-
- setOpacity: function(element, value) {
- element = $(element);
- element.style.opacity = (value == 1 || value === '') ? '' :
- (value < 0.00001) ? 0 : value;
- return element;
- },
-
- getDimensions: function(element) {
- element = $(element);
- var display = $(element).getStyle('display');
- if (display != 'none' && display != null) // Safari bug
- return {width: element.offsetWidth, height: element.offsetHeight};
-
- // All *Width and *Height properties give 0 on elements with display none,
- // so enable the element temporarily
- var els = element.style;
- var originalVisibility = els.visibility;
- var originalPosition = els.position;
- var originalDisplay = els.display;
- els.visibility = 'hidden';
- els.position = 'absolute';
- els.display = 'block';
- var originalWidth = element.clientWidth;
- var originalHeight = element.clientHeight;
- els.display = originalDisplay;
- els.position = originalPosition;
- els.visibility = originalVisibility;
- return {width: originalWidth, height: originalHeight};
- },
-
- makePositioned: function(element) {
- element = $(element);
- var pos = Element.getStyle(element, 'position');
- if (pos == 'static' || !pos) {
- element._madePositioned = true;
- element.style.position = 'relative';
- // Opera returns the offset relative to the positioning context, when an
- // element is position relative but top and left have not been defined
- if (window.opera) {
- element.style.top = 0;
- element.style.left = 0;
- }
- }
- return element;
- },
-
- undoPositioned: function(element) {
- element = $(element);
- if (element._madePositioned) {
- element._madePositioned = undefined;
- element.style.position =
- element.style.top =
- element.style.left =
- element.style.bottom =
- element.style.right = '';
- }
- return element;
- },
-
- makeClipping: function(element) {
- element = $(element);
- if (element._overflow) return element;
- element._overflow = Element.getStyle(element, 'overflow') || 'auto';
- if (element._overflow !== 'hidden')
- element.style.overflow = 'hidden';
- return element;
- },
-
- undoClipping: function(element) {
- element = $(element);
- if (!element._overflow) return element;
- element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;
- element._overflow = null;
- return element;
- },
-
- cumulativeOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- positionedOffset: function(element) {
- var valueT = 0, valueL = 0;
- do {
- valueT += element.offsetTop || 0;
- valueL += element.offsetLeft || 0;
- element = element.offsetParent;
- if (element) {
- if (element.tagName == 'BODY') break;
- var p = Element.getStyle(element, 'position');
- if (p == 'relative' || p == 'absolute') break;
- }
- } while (element);
- return Element._returnOffset(valueL, valueT);
- },
-
- absolutize: function(element) {
- element = $(element);
- if (element.getStyle('position') == 'absolute') return;
- // Position.prepare(); // To be done manually by Scripty when it needs it.
-
- var offsets = element.positionedOffset();
- var top = offsets[1];
- var left = offsets[0];
- var width = element.clientWidth;
- var height = element.clientHeight;
-
- element._originalLeft = left - parseFloat(element.style.left || 0);
- element._originalTop = top - parseFloat(element.style.top || 0);
- element._originalWidth = element.style.width;
- element._originalHeight = element.style.height;
-
- element.style.position = 'absolute';
- element.style.top = top + 'px';
- element.style.left = left + 'px';
- element.style.width = width + 'px';
- element.style.height = height + 'px';
- return element;
- },
-
- relativize: function(element) {
- element = $(element);
- if (element.getStyle('position') == 'relative') return;
- // Position.prepare(); // To be ...
[truncated message content] |
|
From: <Mar...@us...> - 2009-04-25 20:40:15
|
Revision: 2211
http://itracker.svn.sourceforge.net/itracker/?rev=2211&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:40:08 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/test/java/org/itracker/services/util/IssueUtilitiesTest.java
Modified: itracker/trunk/src/test/java/org/itracker/services/util/IssueUtilitiesTest.java
===================================================================
--- itracker/trunk/src/test/java/org/itracker/services/util/IssueUtilitiesTest.java 2009-04-25 20:36:41 UTC (rev 2210)
+++ itracker/trunk/src/test/java/org/itracker/services/util/IssueUtilitiesTest.java 2009-04-25 20:40:08 UTC (rev 2211)
@@ -28,7 +28,6 @@
import org.itracker.model.User;
import org.itracker.model.Version;
import org.itracker.model.CustomField.Type;
-import org.junit.Ignore;
import org.junit.Test;
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:36:47
|
Revision: 2210
http://itracker.svn.sourceforge.net/itracker/?rev=2210&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:36:41 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/test/java/org/itracker/services/util/ProjectUtilitiesTest.java
Modified: itracker/trunk/src/test/java/org/itracker/services/util/ProjectUtilitiesTest.java
===================================================================
--- itracker/trunk/src/test/java/org/itracker/services/util/ProjectUtilitiesTest.java 2009-04-25 20:32:41 UTC (rev 2209)
+++ itracker/trunk/src/test/java/org/itracker/services/util/ProjectUtilitiesTest.java 2009-04-25 20:36:41 UTC (rev 2210)
@@ -19,7 +19,6 @@
import org.itracker.model.Status;
import org.itracker.model.util.PropertiesFileHandler;
import org.itracker.persistence.dao.LanguageDAO;
-import org.junit.Ignore;
import org.junit.Test;
/**
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:32:51
|
Revision: 2209
http://itracker.svn.sourceforge.net/itracker/?rev=2209&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:32:41 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/services/util/HTMLUtilities.java
Modified: itracker/trunk/src/main/java/org/itracker/services/util/HTMLUtilities.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/services/util/HTMLUtilities.java 2009-04-25 20:32:05 UTC (rev 2208)
+++ itracker/trunk/src/main/java/org/itracker/services/util/HTMLUtilities.java 2009-04-25 20:32:41 UTC (rev 2209)
@@ -18,10 +18,6 @@
package org.itracker.services.util;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.StringTokenizer;
-
import org.apache.log4j.Logger;
import org.apache.oro.text.regex.MalformedPatternException;
import org.apache.oro.text.regex.Pattern;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:32:11
|
Revision: 2208
http://itracker.svn.sourceforge.net/itracker/?rev=2208&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:32:05 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/web/actions/admin/user/EditUserAction.java
Modified: itracker/trunk/src/main/java/org/itracker/web/actions/admin/user/EditUserAction.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/web/actions/admin/user/EditUserAction.java 2009-04-25 20:31:50 UTC (rev 2207)
+++ itracker/trunk/src/main/java/org/itracker/web/actions/admin/user/EditUserAction.java 2009-04-25 20:32:05 UTC (rev 2208)
@@ -21,7 +21,6 @@
import java.io.IOException;
import java.util.ArrayList;
import java.util.Date;
-import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
@@ -45,7 +44,6 @@
import org.itracker.services.util.UserUtilities;
import org.itracker.web.actions.base.ItrackerBaseAction;
import org.itracker.web.forms.UserForm;
-import org.itracker.web.util.LoginUtilities;
import org.itracker.web.util.ServletContextUtils;
import org.itracker.web.util.SessionManager;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:31:59
|
Revision: 2207
http://itracker.svn.sourceforge.net/itracker/?rev=2207&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:31:50 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/web/taglib/FormatDateTag.java
Modified: itracker/trunk/src/main/java/org/itracker/web/taglib/FormatDateTag.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/web/taglib/FormatDateTag.java 2009-04-25 20:31:36 UTC (rev 2206)
+++ itracker/trunk/src/main/java/org/itracker/web/taglib/FormatDateTag.java 2009-04-25 20:31:50 UTC (rev 2207)
@@ -23,14 +23,11 @@
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
import org.apache.struts.taglib.TagUtils;
import org.itracker.core.resources.ITrackerResources;
-import org.itracker.services.util.UserUtilities;
-import org.itracker.web.util.Constants;
import org.itracker.web.util.LoginUtilities;
public class FormatDateTag extends TagSupport {
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:31:42
|
Revision: 2206
http://itracker.svn.sourceforge.net/itracker/?rev=2206&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:31:36 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/services/implementations/ConfigurationServiceImpl.java
Modified: itracker/trunk/src/main/java/org/itracker/services/implementations/ConfigurationServiceImpl.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/services/implementations/ConfigurationServiceImpl.java 2009-04-25 20:31:20 UTC (rev 2205)
+++ itracker/trunk/src/main/java/org/itracker/services/implementations/ConfigurationServiceImpl.java 2009-04-25 20:31:36 UTC (rev 2206)
@@ -45,7 +45,6 @@
import org.itracker.model.ProjectScript;
import org.itracker.model.SystemConfiguration;
import org.itracker.model.WorkflowScript;
-import org.itracker.model.util.PropertiesFileHandler;
import org.itracker.persistence.dao.ConfigurationDAO;
import org.itracker.persistence.dao.CustomFieldDAO;
import org.itracker.persistence.dao.CustomFieldValueDAO;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:31:31
|
Revision: 2205
http://itracker.svn.sourceforge.net/itracker/?rev=2205&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:31:20 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/web/actions/admin/language/EditLanguageFormAction.java
Modified: itracker/trunk/src/main/java/org/itracker/web/actions/admin/language/EditLanguageFormAction.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/web/actions/admin/language/EditLanguageFormAction.java 2009-04-25 20:30:46 UTC (rev 2204)
+++ itracker/trunk/src/main/java/org/itracker/web/actions/admin/language/EditLanguageFormAction.java 2009-04-25 20:31:20 UTC (rev 2205)
@@ -25,12 +25,9 @@
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
-import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
import java.util.Properties;
-import java.util.ResourceBundle;
-import java.util.Set;
import java.util.TreeMap;
import javax.servlet.ServletException;
@@ -45,7 +42,6 @@
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.action.ActionMessages;
-import org.itracker.core.resources.ITrackerResourceBundle;
import org.itracker.core.resources.ITrackerResources;
import org.itracker.model.Language;
import org.itracker.model.util.PropertiesFileHandler;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|
|
From: <Mar...@us...> - 2009-04-25 20:30:58
|
Revision: 2204
http://itracker.svn.sourceforge.net/itracker/?rev=2204&view=rev
Author: MarkyGoldstein
Date: 2009-04-25 20:30:46 +0000 (Sat, 25 Apr 2009)
Log Message:
-----------
remove unused imports
Modified Paths:
--------------
itracker/trunk/src/main/java/org/itracker/web/actions/admin/configuration/EditCustomFieldActionUtil.java
Modified: itracker/trunk/src/main/java/org/itracker/web/actions/admin/configuration/EditCustomFieldActionUtil.java
===================================================================
--- itracker/trunk/src/main/java/org/itracker/web/actions/admin/configuration/EditCustomFieldActionUtil.java 2009-04-20 14:01:33 UTC (rev 2203)
+++ itracker/trunk/src/main/java/org/itracker/web/actions/admin/configuration/EditCustomFieldActionUtil.java 2009-04-25 20:30:46 UTC (rev 2204)
@@ -2,19 +2,15 @@
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Dictionary;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Locale;
import java.util.Map;
-import java.util.SortedMap;
-import java.util.TreeMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
-import org.apache.commons.collections.MapUtils;
import org.apache.log4j.Logger;
import org.itracker.core.resources.ITrackerResources;
import org.itracker.model.CustomField;
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|