You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by ja...@apache.org on 2008/12/17 22:51:15 UTC
svn commit: r727526 [1/4] - in
/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH: ./ etc/ etc/i18n/templates/
src/com/ecyrd/jspwiki/ src/com/ecyrd/jspwiki/action/
src/com/ecyrd/jspwiki/tags/ src/com/ecyrd/jspwiki/ui/
src/com/ecyrd/jspwiki/ui/stripes/ src/...
Author: jalkanen
Date: Wed Dec 17 13:51:09 2008
New Revision: 727526
URL: http://svn.apache.org/viewvc?rev=727526&view=rev
Log:
Merged with trunk r727303 (ish).
Added:
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/CreateProfile.jsp
- copied unchanged from r727303, incubator/jspwiki/trunk/src/webdocs/CreateProfile.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/CreateProfileContent.jsp
- copied unchanged from r727303, incubator/jspwiki/trunk/src/webdocs/templates/default/CreateProfileContent.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/EditLayout.jsp
- copied unchanged from r727303, incubator/jspwiki/trunk/src/webdocs/templates/default/EditLayout.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/ViewLayout.jsp
- copied unchanged from r727303, incubator/jspwiki/trunk/src/webdocs/templates/default/ViewLayout.jsp
Removed:
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/LostPassword.jsp
Modified:
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/ChangeLog
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/i18n/templates/default.properties
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/web.xml
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/Release.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/AbstractActionBean.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/LoginActionBean.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserPreferencesActionBean.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserProfileActionBean.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/ViewActionBean.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/MessagesTag.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/WikiTagBase.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/TemplateManager.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/stripes/WikiInterceptor.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/LoginForm.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/PageInfo.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/UserPreferences.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/Wiki.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/LoginContent.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/PreferencesContent.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/ProfileTab.jsp
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/SamplePlugin2.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/TranslationsCheck.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/FileUtilTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/PageManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/PropertyReaderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ReferenceManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ReleaseTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/TestEngine.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/TestJDBCDataSource.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/TestJNDIContext.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/TextUtilTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/Util.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/VariableManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/WikiEngineTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/WikiSessionTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/action/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/action/GroupActionBeanTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/action/LoginActionBeanTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/action/RenameActionBeanTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/action/UserPreferencesActionBeanTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/action/UserProfileActionBeanTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/action/ViewActionBeanTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/action/WikiContextFactoryTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/attachment/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/attachment/AttachmentManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/AuthorizationManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/GroupManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/SecurityEventTrap.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/Users.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/acl/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/acl/DefaultAclManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/authorize/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/authorize/GroupTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/authorize/JDBCGroupDatabaseTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/authorize/WebContainerAuthorizerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/login/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/AllPermissionCollectionTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/AllPermissionTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/GroupPermissionTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/PagePermissionTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/permissions/WikiPermissionTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/user/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/user/JDBCUserDatabaseTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/user/UserProfileTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/auth/user/XMLUserDatabaseTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/content/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/content/PageRenamerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/content/WikiNameTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/dav/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/dav/AttachmentDavProviderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/dav/DavPathTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/dav/HTMLPagesDavProviderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/dav/RawPagesDavProviderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/diff/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/diff/ContextualDiffProviderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/filters/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/filters/FilterManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/filters/TestFilter.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/htmltowiki/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/htmltowiki/HtmlStringToWikiTranslatorTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/parser/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/parser/JSPWikiMarkupParserTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/parser/MarkupParserTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/CounterPluginTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/DenouncePluginTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/GroupsTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/InsertPageTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/JavaScriptPlugin.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/PluginManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/ReferringPagesPluginTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/SamplePlugin.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/TableOfContentsTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/plugin/UndefinedPagesPluginTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/providers/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/providers/BasicAttachmentProviderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/providers/CachingProviderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/providers/FileSystemProviderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/providers/RCSFileProviderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/providers/VersioningFileProviderTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/providers/VerySimpleProvider.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/render/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/render/CreoleRendererTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/render/RenderingManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/render/WysiwygEditingRendererTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/rss/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/rss/RSSGeneratorTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/search/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/search/SearchManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/InputValidatorTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/migrator/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/migrator/JSPWikiJspTransformerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/migrator/JspDocumentTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/migrator/JspParserTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/migrator/StripesJspTransformerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/migrator/TagTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/stripes/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/ui/stripes/HandlerInfoTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/url/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/url/DefaultURLConstructorTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/url/ShortURLConstructorTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/url/ShortViewURLConstructorTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/util/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/util/ClassUtilTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/util/CommentedPropertiesTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/util/CryptoUtilTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/util/MailUtilTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/util/PriorityListTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/util/SerializerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/util/TextUtilTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/util/TimedCounterListTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/web/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/workflow/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/workflow/ApprovalWorkflowTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/workflow/FactTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/workflow/OutcomeTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/workflow/SimpleDecisionTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/workflow/TaskTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/workflow/WorkflowManagerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/workflow/WorkflowTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/xmlrpc/AllTests.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/ecyrd/jspwiki/xmlrpc/RPCHandlerTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/com/foo/SamplePlugin3.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/stress/MassiveRepositoryTest.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/stress/StressTestRCSProvider.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/stress/StressTestSpeed.java
incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/stress/StressTestVersioningProvider.java
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/ChangeLog
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/ChangeLog?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/ChangeLog (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/ChangeLog Wed Dec 17 13:51:09 2008
@@ -1,3 +1,46 @@
+2008-12-17 Andrew Jaquith <ajaquith AT apache DOT org>
+
+ * 3.0.0-svn-32
+
+ * Further refinements to Stripes-related JSPs. Refactoring of Login/Profile/View
+ ActionBeans. Introduction of Stripes layout system, which makes templating
+ somewhat easier (but at the moment all Stripes JSPs are hardwired to 'default').
+
+2008-12-11 Harry Metske <me...@apache.org>
+
+ * 3.0.0-svn-31
+
+ * JSPWIKI-451 Fix the copyright templates on all test cases
+
+2008-12-06 Andrew Jaquith <ajaquith AT apache DOT org>
+
+ * 3.0.0-svn-29
+
+ * Lots of work on user preferences/profile JSPs and ActionBeans; LostPassword.jsp
+ has been assimilated into LoginActionBean. <rubs hands gleefully> Muhuhahaha!
+
+2008-12-06 Andrew Jaquith <ajaquith AT apache DOT org>
+
+ * 3.0.0-svn-29
+
+ * Additional improvements, bug fixes to Stripes-related code.
+ Wiki.jsp and PageInfo.jsp completely migrated to Stripes.
+
+ * TemplateManager gains a new (fairly volatile) method that
+ returns a ForwardResolution to content template pages.
+
+ * TabTag gains a much-needed 'titleKey' property, making the
+ need to embed i18n-related scriptlets in JSPs unnecessary.
+ Please use this in preference to the 'title' property.
+
+2008-12-05 Janne Jalkanen <ja...@apache.org>
+
+ * 3.0.0-svn-28
+
+ * Brought in the WikiName class, which should now be used
+ instead of Strings to denote page names internally wherever
+ possible.
+
2008-12-06 Andrew Jaquith <ajaquith AT apache DOT org>
* 3.0.0-svn-27
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/i18n/templates/default.properties
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/i18n/templates/default.properties?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/i18n/templates/default.properties (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/i18n/templates/default.properties Wed Dec 17 13:51:09 2008
@@ -447,6 +447,9 @@
prefs.creationdate=Creation date
prefs.profile.lastmodified=Last modified
+profile.nameCollision=Another user already has a profile with {0} set to {1}
+profile.noPasswordMatch=Passwords must match
+
# Workflow generic messages
workflow.tab=Workflow
workflow.heading=Your Workflow Items
@@ -656,3 +659,71 @@
javascript.prefs.areyousure=Without clicking the Save User Preferences button, \
your changes will be lost. Are you sure you want to exit this page?
+
+###############################################################################
+## Default Resource Bundle file for the Stripes Framework. Values should be
+## placed in here for the following:
+## - Form Field Labels, unless you want users to see a non-localized, non-
+## pretty name from the form field declaration (prettied up a little).
+## - Error messages for:
+## - Standard validation error messages
+## - Converter error messages
+## - Error messages used in your custom ActionBean classes
+###############################################################################
+
+# Resource strings used by the <stripes:errors> tag when there are no nested tags
+stripes.errors.header=<div style="color:#b72222; font-weight: bold">Please fix the following errors:</div><ol>
+stripes.errors.beforeError=<li style="color: #b72222;">
+stripes.errors.afterError=</li>
+stripes.errors.footer=</ol>
+
+# Resource strings used by the <stripes:errors> tag when displaying errors for a
+# specific field (e.g. <stripes:errors field="password"/>). If not supplied the
+# values above will be used instead.
+stripes.fieldErrors.header=
+stripes.fieldErrors.beforeError=<span style="color: #b72222;">
+stripes.fieldErrors.afterError=</span><br />
+stripes.fieldErrors.footer=
+
+# Resource strings used by the stripes:messages tag
+stripes.messages.header=<ul class="messages">
+stripes.messages.beforeMessage=<li>
+stripes.messages.afterMessage=</li>
+stripes.messages.footer=</ul>
+
+# Validation error messages produced by Stripes' built-in converter classes. These
+# are default error messages and can be overridden on per-field and per-form levels.
+# Using the 'invalidNumber' error for a field 'age' of a form posting to
+# '/user/Profile.action', the keys looked for (in order) would be:
+# 1: /user/Profile.action.age.invalidNumber
+# 2: /user/Profile.action.age.errorMessage
+# 3: age.errorMessage
+# 4: /user/Profile.action.invalidNumber
+# 5: converter.number.invalidNumber
+converter.number.invalidNumber=The value ({1}) entered in field {0} must be a valid number
+converter.byte.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3}
+converter.short.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3}
+converter.integer.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3}
+converter.float.outOfRange=The value ({1}) entered in field {0} was out of the range {2} to {3}
+converter.enum.notAnEnumeratedValue=The value "{1}" is not a valid value for field {0}
+converter.date.invalidDate=The value ({1}) entered in field {0} must be a valid date
+converter.email.invalidEmail=The value ({1}) entered is not a valid email address
+converter.creditCard.invalidCreditCard=The value ({1}) entered is not a valid credit card number
+
+# Validation error messages produced by Stripes' annotation based validations. These
+# are default error messages and can be overridden on per-field and per-form levels.
+# Using the 'valueNotPresent' required field error for a field 'username' of a form
+# posting to '/user/Register.action', the keys looked for (in order) would be:
+# 1: /user/Register.action.username.valueNotPresent
+# 2: /user/Register.action.username.errorMessage
+# 3: username.errorMessage
+# 4: /user/Register.action.valueNotPresent
+# 5: validation.required.valueNotPresent
+validation.required.valueNotPresent={0} is a required field
+validation.minlength.valueTooShort={0} must be at least {2} characters long
+validation.maxlength.valueTooLong={0} must be no more than {2} characters long
+validation.minvalue.valueBelowMinimum=The minimum allowed value for {0} is {2}
+validation.maxvalue.valueAboveMaximum=The maximum allowed value for {0} is {2}
+validation.mask.valueDoesNotMatch=<em>{1}</em> is not a valid {0}
+validation.expression.valueFailedExpression=The value supplied ({1}) for field {0} is invalid
+validation.file.postBodyTooBig=Total upload size of {3} KB exceeds the maximum size of {2} KB
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/web.xml
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/web.xml?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/web.xml (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/etc/web.xml Wed Dec 17 13:51:09 2008
@@ -132,6 +132,7 @@
<filter-name>StripesFilter</filter-name>
<url-pattern>*.jsp</url-pattern>
<dispatcher>REQUEST</dispatcher>
+ <dispatcher>FORWARD</dispatcher>
</filter-mapping>
<filter-mapping>
@@ -158,9 +159,9 @@
<listener-class>com.ecyrd.jspwiki.auth.SessionMonitor</listener-class>
</listener>
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
- <!-- Configuration of the Stripes dispatcher Servlet. -->
- <!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
+ <!--
+ Stripes dispatcher Servlet.
+ -->
<servlet>
<servlet-name>StripesDispatcher</servlet-name>
<servlet-class>net.sourceforge.stripes.controller.DispatcherServlet</servlet-class>
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/Release.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/Release.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/Release.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/Release.java Wed Dec 17 13:51:09 2008
@@ -77,7 +77,7 @@
* <p>
* If the build identifier is empty, it is not added.
*/
- public static final String BUILD = "27";
+ public static final String BUILD = "32";
/**
* This is the generic version string you should use
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/AbstractActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/AbstractActionBean.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/AbstractActionBean.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/AbstractActionBean.java Wed Dec 17 13:51:09 2008
@@ -1,9 +1,9 @@
package com.ecyrd.jspwiki.action;
-import com.ecyrd.jspwiki.ui.stripes.WikiActionBeanContext;
-
import net.sourceforge.stripes.action.ActionBeanContext;
+import com.ecyrd.jspwiki.ui.stripes.WikiActionBeanContext;
+
/**
* <p>
* Abstract ActionBean superclass for all wiki actions, such as page actions ({@link com.ecyrd.jspwiki.WikiContext}
@@ -15,7 +15,7 @@
*/
public abstract class AbstractActionBean implements WikiActionBean
{
- private WikiActionBeanContext m_actionBeanContext = null;
+ private WikiActionBeanContext m_context = null;
/**
* Creates a new instance of this class, without a WikiEngine, Request or
@@ -35,7 +35,7 @@
*/
public WikiActionBeanContext getContext()
{
- return m_actionBeanContext;
+ return m_context;
}
/**
@@ -44,7 +44,7 @@
*/
public void setContext( ActionBeanContext context )
{
- m_actionBeanContext = ((WikiActionBeanContext) context);
+ m_context = ((WikiActionBeanContext) context);
}
}
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/LoginActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/LoginActionBean.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/LoginActionBean.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/LoginActionBean.java Wed Dec 17 13:51:09 2008
@@ -1,34 +1,43 @@
package com.ecyrd.jspwiki.action;
import java.security.Principal;
+import java.text.MessageFormat;
import java.util.ResourceBundle;
+import javax.mail.AuthenticationFailedException;
+import javax.mail.SendFailedException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import net.sourceforge.stripes.action.*;
import net.sourceforge.stripes.util.UrlBuilder;
-import net.sourceforge.stripes.validation.SimpleError;
-import net.sourceforge.stripes.validation.Validate;
-import net.sourceforge.stripes.validation.ValidationErrors;
+import net.sourceforge.stripes.validation.*;
+import com.ecyrd.jspwiki.WikiContext;
import com.ecyrd.jspwiki.WikiEngine;
import com.ecyrd.jspwiki.WikiSession;
+import com.ecyrd.jspwiki.auth.NoSuchPrincipalException;
import com.ecyrd.jspwiki.auth.WikiSecurityException;
import com.ecyrd.jspwiki.auth.login.CookieAssertionLoginModule;
import com.ecyrd.jspwiki.auth.login.CookieAuthenticationLoginModule;
import com.ecyrd.jspwiki.auth.permissions.WikiPermission;
+import com.ecyrd.jspwiki.auth.user.UserDatabase;
+import com.ecyrd.jspwiki.auth.user.UserProfile;
import com.ecyrd.jspwiki.log.Logger;
import com.ecyrd.jspwiki.log.LoggerFactory;
import com.ecyrd.jspwiki.ui.stripes.HandlerPermission;
import com.ecyrd.jspwiki.ui.stripes.WikiRequestContext;
+import com.ecyrd.jspwiki.util.MailUtil;
+import com.ecyrd.jspwiki.util.TextUtil;
@UrlBinding( "/Login.action" )
public class LoginActionBean extends AbstractActionBean
{
private static final Logger log = LoggerFactory.getLogger( LoginActionBean.class );
+ private static final String DEFAULT_TAB = "logincontent";
+
/**
* Sets cookies and redirects the user to a wiki page after a successful
* profile creation or login.
@@ -46,7 +55,8 @@
// Set "remember me?" cookie
if( rememberMe )
{
- CookieAuthenticationLoginModule.setLoginCookie( getContext().getEngine(), getContext().getResponse(), principal.getName() );
+ CookieAuthenticationLoginModule.setLoginCookie( getContext().getEngine(), getContext().getResponse(), principal
+ .getName() );
}
UrlBuilder builder = new UrlBuilder( getContext().getLocale(), ViewActionBean.class, false );
@@ -57,20 +67,34 @@
return new RedirectResolution( builder.toString() );
}
+ private String m_email = null;
+
private String m_username = null;
private boolean m_remember = false;
private String m_password;
- private String m_redirect;
+ private String m_redirect = null;
+
+ private String m_tab = DEFAULT_TAB;
+
+ /**
+ * Returns the e-mail address.
+ *
+ * @return the e-mail address
+ */
+ public String getEmail()
+ {
+ return m_email;
+ }
public String getJ_password()
{
return m_password;
}
- public boolean getJ_remember()
+ public boolean getRemember()
{
return m_remember;
}
@@ -80,41 +104,29 @@
return m_username;
}
+ public String getTab()
+ {
+ return m_tab;
+ }
+
public String getRedirect()
{
return m_redirect;
}
- @HandlesEvent( "login" )
- @HandlerPermission( permissionClass = WikiPermission.class, target = "${context.engine.applicationName}", actions = WikiPermission.LOGIN_ACTION )
- public Resolution login()
+ @ValidationMethod( on = "login", when = ValidationState.NO_ERRORS )
+ public void validateCredentials()
{
WikiSession wikiSession = getContext().getWikiSession();
ValidationErrors errors = getContext().getValidationErrors();
ResourceBundle rb = getContext().getBundle( "CoreResources" );
- // If user got here and is already authenticated, it means
- // they just aren't allowed access to what they asked for.
- // Weepy tears and hankies all 'round.
- if( getContext().getWikiSession().isAuthenticated() )
- {
- errors.addGlobalError( new SimpleError( rb.getString( "login.error.noaccess" ) ) );
- return new RedirectResolution( MessageActionBean.class );
- }
-
log.debug( "Attempting to authenticate user " + m_username );
// Log the user in!
- Resolution r = null;
try
{
- if( getContext().getEngine().getAuthenticationManager().login( wikiSession, m_username, m_password ) )
- {
- // Set cookies as needed and redirect
- log.info( "Successfully authenticated user " + m_username + " (custom auth)" );
- r = saveCookiesAndRedirect( m_redirect, m_remember );
- }
- else
+ if( !getContext().getEngine().getAuthenticationManager().login( wikiSession, m_username, m_password ) )
{
log.info( "Failed to authenticate user " + m_username );
errors.addGlobalError( new SimpleError( rb.getString( "login.error.password" ) ) );
@@ -124,15 +136,15 @@
{
errors.addGlobalError( new SimpleError( rb.getString( "login.error" ), e.getMessage() ) );
}
+ }
- // Any errors?
- if( !errors.isEmpty() )
- {
- UrlBuilder builder = new UrlBuilder( getContext().getLocale(), "/Login.jsp", false );
- builder.addParameter( "tab", "logincontent" );
- r = new RedirectResolution( builder.toString() );
- }
-
+ @HandlesEvent( "login" )
+ @HandlerPermission( permissionClass = WikiPermission.class, target = "${context.engine.applicationName}", actions = WikiPermission.LOGIN_ACTION )
+ public Resolution login()
+ {
+ // Set cookies as needed and redirect
+ log.info( "Successfully authenticated user " + m_username + " (custom auth)" );
+ Resolution r = saveCookiesAndRedirect( m_redirect, m_remember );
return r;
}
@@ -145,26 +157,57 @@
HttpServletRequest request = getContext().getRequest();
HttpServletResponse response = getContext().getResponse();
engine.getAuthenticationManager().logout( request );
-
+
// Clear the asserted name cookie
CookieAssertionLoginModule.clearUserCookie( response );
// Delete the authentication cookie
- if ( engine.getAuthenticationManager().allowsCookieAuthentication() )
+ if( engine.getAuthenticationManager().allowsCookieAuthentication() )
{
CookieAuthenticationLoginModule.clearLoginCookie( engine, request, response );
}
-
+
return new RedirectResolution( ViewActionBean.class );
}
+ /**
+ * Sets the e-mail property. Used by the {@link #resetPassword()} event.
+ *
+ * @param email the e-mail address
+ */
+ @Validate( required = true, on = "resetPassword", converter = net.sourceforge.stripes.validation.EmailTypeConverter.class )
+ public void setEmail( String email )
+ {
+ m_email = email;
+ }
+
@Validate( required = true, on = "login", minlength = 1, maxlength = 128 )
public void setJ_password( String password )
{
m_password = password;
}
- public void setJ_remember( boolean remember )
+ /**
+ * Sets the <code>tab</code> parameter for the source page. The value
+ * supplied to this method is also added to the source page resolution
+ * returned by
+ * {@link com.ecyrd.jspwiki.ui.stripes.WikiActionBeanContext#getSourcePageResolution()}.
+ *
+ * @param tab the tab value
+ */
+ @Validate()
+ public void setTab( String tab )
+ {
+ m_tab = tab;
+ Resolution r = getContext().getSourcePageResolution();
+ if( r instanceof OnwardResolution )
+ {
+ ((OnwardResolution) r).addParameter( "tab", tab );
+ }
+ }
+
+ @Validate()
+ public void setRmember( boolean remember )
{
m_remember = remember;
}
@@ -175,6 +218,7 @@
m_username = username;
}
+ @Validate()
public void setRedirect( String redirect )
{
m_redirect = redirect;
@@ -189,17 +233,22 @@
* @return the resolution
*/
@DefaultHandler
+ @DontValidate
@HandlesEvent( "view" )
@HandlerPermission( permissionClass = WikiPermission.class, target = "${context.engine.applicationName}", actions = WikiPermission.LOGIN_ACTION )
@WikiRequestContext( "login" )
public Resolution view()
{
- Resolution r = null;
+ ValidationErrors errors = getContext().getValidationErrors();
+ ResourceBundle rb = getContext().getBundle( "CoreResources" );
+ // If user got here and is already authenticated, it means
+ // they just aren't allowed access to what they asked for.
+ // Weepy tears and hankies all 'round.
if( getContext().getWikiSession().isAuthenticated() )
{
- // Set cookies as needed and redirect
- r = saveCookiesAndRedirect( m_redirect, m_remember );
+ errors.addGlobalError( new SimpleError( rb.getString( "login.error.noaccess" ) ) );
+ return new RedirectResolution( MessageActionBean.class );
}
if( getContext().getEngine().getAuthenticationManager().isContainerAuthenticated() )
@@ -213,7 +262,6 @@
Object seen = session.getAttribute( "_redirect" );
if( seen != null )
{
- ResourceBundle rb = getContext().getBundle( "CoreResources" );
getContext().getValidationErrors().addGlobalError( new SimpleError( rb.getString( "login.error.noaccess" ) ) );
return new RedirectResolution( MessageActionBean.class );
}
@@ -230,6 +278,92 @@
log.info( "Successfully authenticated user " + user.getName() + " (container auth)" );
}
+ // The user hasn't logged in yet, so send them to the login page
+ ForwardResolution r = new ForwardResolution( "/Login.jsp" );
+ r.addParameter( "tab", "logincontent" );
+ return r;
+ }
+
+ /**
+ * Event handler that resets the user's password, based on the e-mail
+ * address returned by {@link #getEmail()}.
+ *
+ * @return always returns <code>null</code>
+ */
+ @HandlesEvent( "resetPassword" )
+ public Resolution resetPassword()
+ {
+ String message = null;
+ ResourceBundle rb = getContext().getBundle( "CoreResources" );
+
+ // Reset pw for account name
+ WikiEngine wiki = getContext().getEngine();
+ WikiSession wikiSession = getContext().getWikiSession();
+ UserDatabase userDatabase = wiki.getUserManager().getUserDatabase();
+ boolean success = false;
+
+ try
+ {
+ // Look up the e-mail supplied by the user
+ UserProfile profile = userDatabase.findByEmail( m_email );
+ String email = profile.getEmail();
+ String randomPassword = TextUtil.generateRandomPassword();
+
+ // Compose the message e-mail body
+ Object[] args = { profile.getLoginName(), randomPassword,
+ wiki.getURLConstructor().makeURL( WikiContext.NONE, "Login.jsp", true, "" ), wiki.getApplicationName() };
+ String mailMessage = MessageFormat.format( rb.getString( "lostpwd.newpassword.email" ), args );
+
+ // Compose the message subject line
+ args = new Object[] { wiki.getApplicationName() };
+ String mailSubject = MessageFormat.format( rb.getString( "lostpwd.newpassword.subject" ), args );
+
+ // Send the message.
+ MailUtil.sendMessage( wiki, email, mailSubject, mailMessage );
+ log.info( "User " + email + " requested and received a new password." );
+
+ // Mail succeeded. Now reset the password.
+ // If this fails, we're kind of screwed, because we already mailed
+ // it.
+ profile.setPassword( randomPassword );
+ userDatabase.save( profile );
+ success = true;
+ }
+ catch( NoSuchPrincipalException e )
+ {
+ Object[] args = { m_email };
+ message = MessageFormat.format( rb.getString( "lostpwd.nouser" ), args );
+ log.info( "Tried to reset password for non-existent user '" + m_email + "'" );
+ }
+ catch( SendFailedException e )
+ {
+ message = rb.getString( "lostpwd.nomail" );
+ log.error( "Tried to reset password and got SendFailedException: " + e );
+ }
+ catch( AuthenticationFailedException e )
+ {
+ message = rb.getString( "lostpwd.nomail" );
+ log.error( "Tried to reset password and got AuthenticationFailedException: " + e );
+ }
+ catch( Exception e )
+ {
+ message = rb.getString( "lostpwd.nomail" );
+ log.error( "Tried to reset password and got another exception: " + e );
+ }
+
+ if( success )
+ {
+ wikiSession.addMessage( "resetpwok", rb.getString( "lostpwd.emailed" ) );
+ getContext().getRequest().setAttribute( "passwordreset", "done" );
+ }
+ else
+ // Error
+ {
+ wikiSession.addMessage( "resetpw", message );
+ }
+
+ ForwardResolution r = new ForwardResolution( "/LoginForm.jsp" );
+ r.addParameter( "tab", "lostpassword" );
return r;
}
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserPreferencesActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserPreferencesActionBean.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserPreferencesActionBean.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserPreferencesActionBean.java Wed Dec 17 13:51:09 2008
@@ -11,8 +11,12 @@
import com.ecyrd.jspwiki.auth.login.CookieAssertionLoginModule;
import com.ecyrd.jspwiki.auth.permissions.WikiPermission;
+import com.ecyrd.jspwiki.log.Logger;
+import com.ecyrd.jspwiki.log.LoggerFactory;
import com.ecyrd.jspwiki.ui.EditorManager;
+import com.ecyrd.jspwiki.ui.TemplateManager;
import com.ecyrd.jspwiki.ui.stripes.HandlerPermission;
+import com.ecyrd.jspwiki.ui.stripes.WikiActionBeanContext;
import com.ecyrd.jspwiki.ui.stripes.WikiRequestContext;
/**
@@ -21,6 +25,8 @@
@UrlBinding( "/UserPreferences.action" )
public class UserPreferencesActionBean extends AbstractActionBean
{
+ private Logger log = LoggerFactory.getLogger( "JSPWiki" );
+
private String m_assertedName = null;
private String m_editor = null;
@@ -62,12 +68,11 @@
*
* @return a redirection to the front page
*/
- @DefaultHandler
@HandlesEvent( "createAssertedName" )
@HandlerPermission( permissionClass = WikiPermission.class, target = "${context.engine.applicationName}", actions = WikiPermission.EDIT_PREFERENCES_ACTION )
- @WikiRequestContext( "prefs" )
public Resolution createAssertedName()
{
+ // FIXME: should reload preferences (see Preferences.reloadPreferences)
if( !getContext().getWikiSession().isAuthenticated() )
{
HttpServletRequest request = getContext().getRequest();
@@ -75,6 +80,13 @@
String assertedName = request.getParameter( "assertedName" );
CookieAssertionLoginModule.setUserCookie( response, assertedName );
}
+ if( m_redirect != null )
+ {
+ RedirectResolution r = new RedirectResolution( ViewActionBean.class );
+ r.addParameter( "page", m_redirect );
+ log.info( "Redirecting user to wiki page " + m_redirect );
+ return r;
+ }
return new RedirectResolution( "/" );
}
@@ -93,7 +105,7 @@
*
* @param name the asserted name
*/
- @Validate( required = true, on = "createAssertedName" )
+ @Validate( required = true, on = "createAssertedName", minlength=1, maxlength=128 )
public void setAssertedName( String name )
{
m_assertedName = name;
@@ -118,7 +130,7 @@
*
* @param editor the editor
*/
- @Validate( required = false )
+ @Validate()
public void setEditor( String editor )
{
m_editor = editor;
@@ -134,7 +146,7 @@
*
* @param url the URL to redirect to
*/
- @Validate( required = false )
+ @Validate()
public void setRedirect( String url )
{
m_redirect = url;
@@ -149,4 +161,21 @@
{
return m_redirect;
}
+
+ /**
+ * Handler for displaying user preferences that simply forwards to the
+ * preferences display JSP <code>PreferencesContent.jsp</code>.
+ *
+ * @return a forward to the content template
+ */
+ @DefaultHandler
+ @HandlesEvent("prefs")
+ @HandlerPermission( permissionClass = WikiPermission.class, target = "${context.engine.applicationName}", actions = WikiPermission.EDIT_PREFERENCES_ACTION )
+ @WikiRequestContext( "prefs" )
+ public Resolution view()
+ {
+ WikiActionBeanContext context = getContext();
+ TemplateManager.addResourceRequest( context, "script", "scripts/jspwiki-prefs.js" );
+ return new ForwardResolution( "/UserPreferences.jsp" );
+ }
}
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserProfileActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserProfileActionBean.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserProfileActionBean.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/UserProfileActionBean.java Wed Dec 17 13:51:09 2008
@@ -54,7 +54,9 @@
/**
* Pre-action that loads the UserProfile before user-supplied parameters are
- * bound to the ActionBean.
+ * bound to the ActionBean. Also stashes the UserProfile as a request-scoped
+ * attribute named <code>profile</code>. This attribute can be used in
+ * JSP EL expressions as <code>$%7Bprofile%7D</code>.
*
* @return <code>null</code>, always
*/
@@ -69,7 +71,11 @@
// Null out the password, so that we don't re-encrypt it by accident
m_profile.setPassword( null );
+
+ // Stash the profile as a request attribute
+ getContext().getRequest().setAttribute( "profile", m_profile );
return null;
+
}
/**
@@ -138,8 +144,8 @@
m_passwordAgain = password;
}
- @ValidateNestedProperties( { @Validate( field = "loginName", maxlength = 100, required = true, on = "save" ),
- @Validate( field = "fullname", maxlength = 100, required = true, on = "save" ),
+ @ValidateNestedProperties( { @Validate( field = "loginName", required = true, minlength = 1, maxlength = 100 ),
+ @Validate( field = "fullname", required = true, minlength = 1, maxlength = 100 ),
@Validate( field = "password", minlength = 8, maxlength = 100 ),
@Validate( field = "email", converter = EmailTypeConverter.class ) } )
public void setProfile( UserProfile profile )
@@ -161,7 +167,7 @@
*
* @param errors the current validation errors for this ActionBean
*/
- @ValidationMethod( on = "save", when = ValidationState.NO_ERRORS )
+ @ValidationMethod( when = ValidationState.NO_ERRORS )
public void validateNoCollision( ValidationErrors errors )
{
WikiEngine engine = getContext().getEngine();
@@ -188,7 +194,7 @@
otherProfile = database.findByLoginName( m_profile.getLoginName() );
if( otherProfile != null && !otherProfile.equals( oldProfile ) )
{
- errors.add( "profile.loginName", new LocalizableError( "nameCollision" ) );
+ errors.add( "profile.loginName", new LocalizableError( "profile.nameCollision" ) );
}
}
catch( NoSuchPrincipalException e )
@@ -199,7 +205,7 @@
otherProfile = database.findByFullName( m_profile.getFullname() );
if( otherProfile != null && !otherProfile.equals( oldProfile ) )
{
- errors.add( "profile.fullname", new LocalizableError( "nameCollision" ) );
+ errors.add( "profile.fullname", new LocalizableError( "profile.nameCollision" ) );
}
}
catch( NoSuchPrincipalException e )
@@ -208,24 +214,12 @@
}
/**
- * After all fields validate correctly, this method validates that the user
- * account is not spam.
- *
- * @param errors the current validation errors for this ActionBean
- */
- @ValidationMethod( on = "save", when = ValidationState.NO_ERRORS )
- public void validateNotSpam( ValidationErrors errors )
- {
- log.info( "Skipped validateNotSpam method because it has not been coded yet..." );
- }
-
- /**
* If the user profile is new, this method verifies that the user has
* supplied matching passwords.
*
* @param errors the current validation errors for this ActionBean
*/
- @ValidationMethod( on = "save", when = ValidationState.ALWAYS )
+ @ValidationMethod( when = ValidationState.ALWAYS )
public void validatePasswords( ValidationErrors errors )
{
// All new profiles must have a supplied password
@@ -233,7 +227,7 @@
{
if( m_profile.getPassword() == null )
{
- errors.add( "profile.password", new LocalizableError( "valueNotPresent" ) );
+ errors.add( "profile.password", new LocalizableError( "validation.required.valueNotPresent" ) );
}
}
@@ -243,22 +237,38 @@
{
if( !m_profile.getPassword().equals( m_passwordAgain ) )
{
- errors.add( "profile.password", new LocalizableError( "noPasswordMatch" ) );
+ errors.add( "profile.password", new LocalizableError( "profile.noPasswordMatch" ) );
}
}
}
/**
- * Default handler that forwards the user back to itself.
+ * Event handler that forwards the user to <code>/CreateProfile.jsp</code>.
+ *
+ * @return the resolution
+ */
+ @HandlesEvent( "create" )
+ @DontValidate
+ public Resolution create()
+ {
+ return new ForwardResolution( "/CreateProfile.jsp" );
+ }
+
+ /**
+ * Default event handler that forwards the user to
+ * <code>/UserPreferences.jsp</code>.
*
* @return the resolution
*/
@HandlesEvent( "view" )
@DefaultHandler
+ @DontValidate
@WikiRequestContext( "profile" )
public Resolution view()
{
- return new ForwardResolution( "/UserPreferences.jsp" );
+ ForwardResolution r = new ForwardResolution( "/UserPreferences.jsp" );
+ r.addParameter( "tab", "profile" );
+ return r;
}
}
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/ViewActionBean.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/ViewActionBean.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/ViewActionBean.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/action/ViewActionBean.java Wed Dec 17 13:51:09 2008
@@ -123,22 +123,23 @@
}
/**
- * Default handler that simply forwards the user back to the display JSP <code>PageContent.jsp</code>.
+ * Default handler that simply forwards the user back to the display JSP <code>/Wiki.jsp</code>.
* Every ActionBean needs a default handler to function properly, so we use
* this (very simple) one.
* @return a forward to the content template
*/
@DefaultHandler
+ @DontValidate
@HandlesEvent("view")
@HandlerPermission(permissionClass=PagePermission.class, target="${page.qualifiedName}", actions=PagePermission.VIEW_ACTION)
@WikiRequestContext("view")
public Resolution view()
{
- return getContext().getEngine().getTemplateManager().getContentPage( this, "ViewTemplate.jsp", "PageContent.jsp" );
+ return new ForwardResolution( "/Wiki.jsp");
}
/**
- * Handler that forwards to the page information display JSP <code>InfoContent.jsp</code>.
+ * Handler that forwards to the page information display JSP <code>/PageInfo.jsp</code>.
* @return a forward to the content template
*/
@HandlesEvent("info")
@@ -146,7 +147,7 @@
@WikiRequestContext("info")
public Resolution info()
{
- return getContext().getEngine().getTemplateManager().getContentPage( this, "ViewTemplate.jsp", "InfoContent.jsp" );
+ return new ForwardResolution( "/PageInfo.jsp");
}
-
+
}
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/MessagesTag.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/MessagesTag.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/MessagesTag.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/MessagesTag.java Wed Dec 17 13:51:09 2008
@@ -107,13 +107,16 @@
List<String> messageStrings = new ArrayList<String>();
// Add all of the Stripes validation errors first (all fields, even global errors)
- ValidationErrors errors = m_wikiActionBean.getContext().getValidationErrors();
- for ( List<ValidationError> fieldErrors : errors.values() )
+ if ( "error".equals( m_div) )
{
- for ( ValidationError error : fieldErrors )
+ ValidationErrors errors = m_wikiActionBean.getContext().getValidationErrors();
+ for ( List<ValidationError> fieldErrors : errors.values() )
{
- String message = error.getMessage( m_wikiActionBean.getContext().getLocale() );
- messageStrings.add( message );
+ for ( ValidationError error : fieldErrors )
+ {
+ String message = error.getMessage( m_wikiActionBean.getContext().getLocale() );
+ messageStrings.add( message );
+ }
}
}
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/WikiTagBase.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/WikiTagBase.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/WikiTagBase.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/tags/WikiTagBase.java Wed Dec 17 13:51:09 2008
@@ -85,7 +85,7 @@
/**
* Initializes the tag, and sets an internal reference to the current WikiActionBean
* by delegating to
- * {@link com.ecyrd.jspwiki.ui.stripes.WikiInterceptor#findActionBean(javax.servlet.ServletRequest)}.
+ * {@link com.ecyrd.jspwiki.ui.stripes.WikiInterceptor#findActionBean(PageContext)}.
* (That method retrieves the WikiActionBean from page scope.).
* If the WikiActionBean is a WikiContext, a specific reference to the WikiContext
* will be set also. Both of these available as protected fields {@link #m_wikiActionBean} and
@@ -100,12 +100,12 @@
try
{
// Retrieve the ActionBean injected by WikiInterceptor
- m_wikiActionBean = WikiInterceptor.findActionBean( this.getPageContext().getRequest() );
+ m_wikiActionBean = WikiInterceptor.findActionBean( this.getPageContext() );
// It's really bad news if the WikiActionBean wasn't injected (or saved as a variable!)
if ( m_wikiActionBean == null )
{
- throw new JspException( "Can't find WikiActionBean in page or request context! (tag=" + this.getClass() + ")" );
+ throw new JspException( "Can't find WikiActionBean in page context! (tag=" + this.getClass() + ")" );
}
// The WikiContext is the ActionBean's ActionBeanContext
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/TemplateManager.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/TemplateManager.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/TemplateManager.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/TemplateManager.java Wed Dec 17 13:51:09 2008
@@ -57,6 +57,36 @@
public class TemplateManager
extends ModuleManager
{
+ /**
+ * Enum that specifies the two types of templates: {@link #VIEW} and {@link #EDIT}.
+ */
+ public enum Template {
+ /** Template used for viewing things. */
+ VIEW("ViewTemplate.jsp"),
+ /** Template used for editing things. */
+ EDIT("EditTemplate.jsp");
+
+ private final String m_template;
+
+ /**
+ * Package-private constructor.
+ * @param template the name of the template
+ */
+ Template( String template )
+ {
+ m_template = template;
+ }
+
+ /**
+ * Returns the JSP for the template.
+ * @return
+ */
+ public String template()
+ {
+ return m_template;
+ }
+ }
+
private static final String SKIN_DIRECTORY = "skins";
/**
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/stripes/WikiInterceptor.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/stripes/WikiInterceptor.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/stripes/WikiInterceptor.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/com/ecyrd/jspwiki/ui/stripes/WikiInterceptor.java Wed Dec 17 13:51:09 2008
@@ -12,7 +12,6 @@
import net.sourceforge.stripes.action.Resolution;
import net.sourceforge.stripes.controller.*;
-import com.ecyrd.jspwiki.WikiContext;
import com.ecyrd.jspwiki.WikiEngine;
import com.ecyrd.jspwiki.WikiSession;
import com.ecyrd.jspwiki.action.LoginActionBean;
@@ -56,8 +55,8 @@
* <p>
* After the intercept method fires, calling classes can obtain the saved
* WikiActionBean by calling
- * {@link WikiInterceptor#findActionBean(javax.servlet.ServletRequest)}.
- * This is the recommended method that JSP scriptlet code should use.
+ * {@link WikiInterceptor#findActionBean(javax.servlet.ServletRequest)}. This
+ * is the recommended method that JSP scriptlet code should use.
* </p>
* <p>
* Because these objects are saved as attributes, they are available to JSPs as
@@ -72,6 +71,7 @@
public class WikiInterceptor implements Interceptor
{
private static final Logger log = LoggerFactory.getLogger( WikiInterceptor.class );
+
/**
* The PageContext attribute name of the WikiActionBean stored by
* WikiInterceptor.
@@ -137,15 +137,21 @@
HttpServletRequest request = actionBeanContext.getRequest();
// Set the WikiSession, if not set yet
- if ( actionBeanContext.getWikiSession() == null )
+ if( actionBeanContext.getWikiSession() == null )
{
WikiEngine engine = actionBeanContext.getEngine();
WikiSession wikiSession = SessionMonitor.getInstance( engine ).find( request.getSession() );
actionBeanContext.setWikiSession( wikiSession );
}
- // Stash the WikiActionBean and WikiPage in the request
- WikiInterceptor.saveActionBean( request, actionBean );
+ // Stash the ActionBean as request attribute, if not saved yet
+ if( request.getAttribute( ATTR_ACTIONBEAN ) == null )
+ {
+ request.setAttribute( ATTR_ACTIONBEAN, actionBean );
+ }
+
+ // Stash the WikiContext, WikiEngine
+ WikiContextFactory.saveContext( request, actionBean.getContext() );
if( log.isDebugEnabled() )
{
@@ -186,6 +192,14 @@
*/
protected Resolution interceptBindingAndValidation( ExecutionContext context ) throws Exception
{
+ // Stash the WikiActionBean as a PageContext attribute
+ WikiActionBean actionBean = (WikiActionBean) context.getActionBean();
+ PageContext pageContext = DispatcherHelper.getPageContext();
+ if( pageContext != null )
+ {
+ pageContext.setAttribute( ATTR_ACTIONBEAN, actionBean );
+ }
+
// Did the handler resolution stage return a Resolution? If so, bail.
Resolution r = context.proceed();
if( r != null )
@@ -193,14 +207,13 @@
return r;
}
- // Get the resolved ActionBean and event handler method
- WikiActionBean actionBean = (WikiActionBean) context.getActionBean();
+ // Get the event handler method
Method handler = context.getHandler();
-
+
// Make sure we set the WikiContext request context, while we're at it
Map<Method, HandlerInfo> eventinfos = HandlerInfo.getHandlerInfoCollection( actionBean.getClass() );
HandlerInfo eventInfo = eventinfos.get( handler );
- if ( eventInfo != null )
+ if( eventInfo != null )
{
String requestContext = eventInfo.getRequestContext();
actionBean.getContext().setRequestContext( requestContext );
@@ -238,34 +251,41 @@
}
/**
- * <p>
- * Saves the supplied WikiActionBean and its associated WikiContext,
- * WikiEngine and WikiSession in
- * request scope. The action bean is saved as an attribute named
- * {@link WikiInterceptor#ATTR_ACTIONBEAN}. The other attributes are saved
- * as described in {@link WikiContextFactory#saveContext(HttpServletRequest, WikiContext)}.
- * </p>
+ * Returns the WikiActionBean associated with the current
+ * {@link javax.servlet.jsp.PageContext}, which may have been previously stashed by
+ * {@link #interceptBindingAndValidation(ExecutionContext)}. Note that each
+ * PageContext can contain its own ActionBean. The ActionBean will be
+ * retrieved from page-scope attribute {@link WikiInterceptor#ATTR_ACTIONBEAN}.
+ * If the WikiActionBean cannot be obtained as a page-scope attribute, the
+ * request scope will be tried also.
*
- * @param request the HTTP request
- * @param actionBean the WikiActionBean to save
+ * @param pageContext the page context
+ * @return the WikiActionBean
+ * @throws IllegalStateException if the WikiActionBean was not found in the
+ * page context or
*/
- public static void saveActionBean( HttpServletRequest request, WikiActionBean actionBean )
+ public static WikiActionBean findActionBean( PageContext pageContext )
{
- // Stash the WikiActionBean
- request.setAttribute( WikiInterceptor.ATTR_ACTIONBEAN, actionBean );
-
- // Stash the other attributes
- WikiContextFactory.saveContext( request, actionBean.getContext() );
+ WikiActionBean bean = (WikiActionBean) pageContext.getAttribute( WikiInterceptor.ATTR_ACTIONBEAN );
+ if( bean == null )
+ {
+ bean = findActionBean( pageContext.getRequest() );
+ if ( bean == null )
+ {
+ log.debug( "WikiActionBean not found under page context attribute '" + WikiInterceptor.ATTR_ACTIONBEAN
+ + "'! Something failed to stash it..." );
+ }
+ }
+ return bean;
}
/**
* Returns the WikiActionBean associated with the current
- * {@link javax.servlet.http.HttpServletRequest}. The ActionBean will be
- * retrieved from attribute {@link WikiInterceptor#ATTR_ACTIONBEAN}.
- * If an ActionBean is not found under this name, the standard Stripes
- * attribute
- * {@link net.sourceforge.stripes.controller.StripesConstants#REQ_ATTR_ACTION_BEAN}
- * will be attempted.
+ * {@link javax.servlet.http.HttpServletRequest}, which was previously
+ * stashed by {@link #interceptActionBeanResolution(ExecutionContext)}.
+ * Only the first ActionBean on a JSP will be stashed as a request-level
+ * attribute. The ActionBean will be retrieved from attribute
+ * {@link WikiInterceptor#ATTR_ACTIONBEAN}.
*
* @param request the HTTP request
* @return the WikiActionBean
@@ -278,13 +298,8 @@
if( bean == null )
{
log.debug( "WikiActionBean not found under request attribute '" + WikiInterceptor.ATTR_ACTIONBEAN
- + "'; trying standard Stripes attribute '" + StripesConstants.REQ_ATTR_ACTION_BEAN + "'." );
- bean = (WikiActionBean) request.getAttribute( StripesConstants.REQ_ATTR_ACTION_BEAN );
- }
-
- if( bean == null )
- {
- throw new IllegalStateException( "WikiActionBean not found in request! Something failed to stash it..." );
+ + "'! Something failed to stash it..." );
+ bean = (WikiActionBean) request.getAttribute( WikiInterceptor.ATTR_ACTIONBEAN );
}
return bean;
}
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/LoginForm.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/LoginForm.jsp?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/LoginForm.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/LoginForm.jsp Wed Dec 17 13:51:09 2008
@@ -1,34 +1,7 @@
-<%@ page import="com.ecyrd.jspwiki.log.Logger" %>
-<%@ page import="com.ecyrd.jspwiki.log.LoggerFactory" %>
-<%@ page import="com.ecyrd.jspwiki.*" %>
-<%@ page import="com.ecyrd.jspwiki.action.*" %>
-<%@ page errorPage="/Error.jsp" %>
-<%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %>
<%@ taglib uri="/WEB-INF/stripes.tld" prefix="stripes" %>
-<stripes:useActionBean beanclass="com.ecyrd.jspwiki.action.LoginActionBean" event="view" executeResolution="true" />
-<%!
- /**
- * This page contains the logic for finding and including
- the correct login form, which is usually loaded from
- the template directory's LoginContent.jsp page.
- It should not be requested directly by users. If
- container-managed authentication is in force, the container
- will prevent direct access to it.
- */
- Logger log = LoggerFactory.getLogger("JSPWiki");
-
-%>
-<%
- WikiEngine wiki = WikiEngine.getInstance( getServletConfig() );
- // Retrieve the Login page context, then go and find the login form
-
- WikiContext wikiContext = WikiContextFactory.findContext( pageContext );
- wikiContext.setVariable( "contentTemplate", "LoginContent.jsp" );
- response.setContentType("text/html; charset="+wiki.getContentEncoding() );
- String contentPage = wiki.getTemplateManager().findJSP( pageContext,
- wikiContext.getTemplate(),
- "ViewTemplate.jsp" );
-
- log.debug("Login template content is: " + contentPage);
-
-%><wiki:Include page="<%=contentPage%>" />
\ No newline at end of file
+<stripes:useActionBean beanclass="com.ecyrd.jspwiki.action.LoginActionBean" event="view" />
+<stripes:layout-render name="/templates/default/ViewLayout.jsp">
+ <stripes:layout-component name="content">
+ <jsp:include page="/templates/default/LoginContent.jsp" />
+ </stripes:layout-component>
+</stripes:layout-render>
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/PageInfo.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/PageInfo.jsp?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/PageInfo.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/PageInfo.jsp Wed Dec 17 13:51:09 2008
@@ -1,2 +1,7 @@
<%@ taglib uri="/WEB-INF/stripes.tld" prefix="stripes" %>
-<stripes:useActionBean beanclass="com.ecyrd.jspwiki.action.ViewActionBean" event="info" executeResolution="true"/>
+<stripes:useActionBean beanclass="com.ecyrd.jspwiki.action.ViewActionBean" event="info" />
+<stripes:layout-render name="/templates/default/ViewLayout.jsp">
+ <stripes:layout-component name="content">
+ <jsp:include page="/templates/default/InfoContent.jsp" />
+ </stripes:layout-component>
+</stripes:layout-render>
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/UserPreferences.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/UserPreferences.jsp?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/UserPreferences.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/UserPreferences.jsp Wed Dec 17 13:51:09 2008
@@ -1,107 +1,7 @@
-<%@ page import="com.ecyrd.jspwiki.log.Logger" %>
-<%@ page import="com.ecyrd.jspwiki.log.LoggerFactory" %>
-<%@ page import="com.ecyrd.jspwiki.VariableManager" %>
-<%@ page import="com.ecyrd.jspwiki.WikiContext" %>
-<%@ page import="com.ecyrd.jspwiki.WikiSession" %>
-<%@ page import="com.ecyrd.jspwiki.WikiEngine" %>
-<%@ page import="com.ecyrd.jspwiki.auth.UserManager" %>
-<%@ page import="com.ecyrd.jspwiki.auth.WikiSecurityException" %>
-<%@ page import="com.ecyrd.jspwiki.auth.login.CookieAssertionLoginModule" %>
-<%@ page import="com.ecyrd.jspwiki.auth.user.DuplicateUserException" %>
-<%@ page import="com.ecyrd.jspwiki.auth.user.UserProfile" %>
-<%@ page import="com.ecyrd.jspwiki.workflow.DecisionRequiredException" %>
-<%@ page import="com.ecyrd.jspwiki.ui.EditorManager" %>
-<%@ page import="com.ecyrd.jspwiki.ui.TemplateManager" %>
-<%@ page import="com.ecyrd.jspwiki.preferences.*" %>
-<%@ page errorPage="/Error.jsp" %>
-<%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %>
<%@ taglib uri="/WEB-INF/stripes.tld" prefix="stripes" %>
-<stripes:useActionBean beanclass="com.ecyrd.jspwiki.action.UserPreferencesActionBean" event="createAssertedName" />
-
-<%!
- Logger log = LoggerFactory.getLogger("JSPWiki");
-%>
-
-<%
- WikiEngine wiki = WikiEngine.getInstance( getServletConfig() );
- // Create wiki context and check for authorization
- WikiContext wikiContext = wiki.createContext( request, WikiContext.PREFS );
-
- // Extract the user profile and action attributes
- UserManager userMgr = wiki.getUserManager();
- WikiSession wikiSession = wikiContext.getWikiSession();
-
-/* FIXME: Obsoslete
- if( request.getParameter(EditorManager.PARA_EDITOR) != null )
- {
- String editor = request.getParameter(EditorManager.PARA_EDITOR);
- session.setAttribute(EditorManager.PARA_EDITOR,editor);
- }
-*/
-
- // Are we saving the profile?
- if( "saveProfile".equals(request.getParameter("action")) )
- {
- UserProfile profile = userMgr.parseProfile( wikiContext );
-
- // Validate the profile
- userMgr.validateProfile( wikiContext, profile );
-
- // If no errors, save the profile now & refresh the principal set!
- if ( wikiSession.getMessages( "profile" ).length == 0 )
- {
- try
- {
- userMgr.setUserProfile( wikiSession, profile );
- CookieAssertionLoginModule.setUserCookie( response, profile.getFullname() );
- }
- catch( DuplicateUserException e )
- {
- // User collision! (full name or wiki name already taken)
- wikiSession.addMessage( "profile", e.getMessage() );
- }
- catch( DecisionRequiredException e )
- {
- String redirect = wiki.getURL(WikiContext.VIEW,"ApprovalRequiredForUserProfiles",null,true);
- response.sendRedirect( redirect );
- return;
- }
- catch( WikiSecurityException e )
- {
- // Something went horribly wrong! Maybe it's an I/O error...
- wikiSession.addMessage( "profile", e.getMessage() );
- }
- }
- if ( wikiSession.getMessages( "profile" ).length == 0 )
- {
- String redirectPage = request.getParameter( "redirect" );
- response.sendRedirect( wiki.getViewURL(redirectPage) );
- return;
- }
- }
- if( "setAssertedName".equals(request.getParameter("action")) )
- {
- Preferences.reloadPreferences(pageContext);
-
- String assertedName = request.getParameter("assertedName");
- CookieAssertionLoginModule.setUserCookie( response, assertedName );
-
- String redirectPage = request.getParameter( "redirect" );
- String viewUrl = ( "UserPreferences".equals( redirectPage ) ) ? "Wiki.jsp" : wiki.getViewURL( redirectPage );
-
- log.info( "Redirecting user to " + viewUrl );
- response.sendRedirect( viewUrl );
- return;
- }
- if( "clearAssertedName".equals(request.getParameter("action")) )
- {
- CookieAssertionLoginModule.clearUserCookie( response );
- response.sendRedirect( wikiContext.getURL(WikiContext.NONE,"Logout.jsp") );
- return;
- }
- response.setContentType("text/html; charset="+wiki.getContentEncoding() );
- String contentPage = wiki.getTemplateManager().findJSP( pageContext,
- wikiContext.getTemplate(),
- "ViewTemplate.jsp" );
-%><wiki:Include page="<%=contentPage%>" />
-
+<stripes:useActionBean beanclass="com.ecyrd.jspwiki.action.UserPreferencesActionBean" event="prefs" />
+<stripes:layout-render name="/templates/default/ViewLayout.jsp">
+ <stripes:layout-component name="content">
+ <jsp:include page="/templates/default/PreferencesContent.jsp" />
+ </stripes:layout-component>
+</stripes:layout-render>
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/Wiki.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/Wiki.jsp?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/Wiki.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/Wiki.jsp Wed Dec 17 13:51:09 2008
@@ -1,2 +1,10 @@
<%@ taglib uri="/WEB-INF/stripes.tld" prefix="stripes" %>
-<stripes:useActionBean beanclass="com.ecyrd.jspwiki.action.ViewActionBean" event="view" executeResolution="true" />
+<stripes:useActionBean beanclass="com.ecyrd.jspwiki.action.ViewActionBean" event="view" />
+<stripes:layout-render name="/templates/default/ViewLayout.jsp">
+ <stripes:layout-component name="content">
+ <jsp:include page="/templates/default/PageContent.jsp" />
+ <!--
+ <wiki:Include page="/templates/default/PageContent.jsp" />
+ -->
+ </stripes:layout-component>
+</stripes:layout-render>
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/LoginContent.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/LoginContent.jsp?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/LoginContent.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/LoginContent.jsp Wed Dec 17 13:51:09 2008
@@ -31,8 +31,9 @@
<%--<wiki:Include page='LoginTab.jsp'/>--%>
<stripes:form action="<%=postURL%>" id="login" class="wikiform" method="post" acceptcharset="UTF-8">
+ <stripes:param name="tab" value="logincontent" />
-<div class="center">
+ <div class="center">
<h3><fmt:message key="login.heading.login"><fmt:param><wiki:Variable var="applicationname" /></fmt:param></fmt:message></h3>
@@ -56,8 +57,8 @@
</tr>
<% if( supportsCookieAuthentication ) { %>
<tr>
- <td><stripes:label for="j_remember" name="login.remember" /></td>
- <td><stripes:checkbox name="j_remember" id="j_remember" /></td>
+ <td><stripes:label for="remember" name="login.remember" /></td>
+ <td><stripes:checkbox name="remember" id="j_remember" /></td>
</tr>
<% } %>
<tr>
@@ -83,7 +84,7 @@
</a>
</div>
-</div>
+ </div>
</stripes:form>
</wiki:Tab>
@@ -92,8 +93,8 @@
<wiki:Tab id="lostpassword" titleKey="login.lostpw.tab">
<div class="center">
-<stripes:form action="/LostPassword.jsp" id="lostpw" class="wikiform" method="post" acceptcharset="UTF-8">
-
+<stripes:form beanclass="com.ecyrd.jspwiki.action.LoginActionBean" id="lostpw" class="wikiform" method="post" acceptcharset="UTF-8">
+ <stripes:param name="tab" value="lostpassword" />
<h3><fmt:message key="login.lostpw.heading" /></h3>
<c:choose>
@@ -119,8 +120,8 @@
</tr>
</c:if>
<tr>
- <td><stripes:label for="name" name="login.lostpw.name" /></td>
- <td><stripes:text size="24" name="name" id="name" /></td>
+ <td><stripes:label for="email" name="login.lostpw.name" /></td>
+ <td><stripes:text size="24" name="email" id="email" /></td>
</tr>
<tr>
<td> </td>
@@ -157,9 +158,7 @@
<%-- Register new user profile --%>
<wiki:Permission permission='editProfile'>
-<wiki:Tab id="profile" titleKey="login.register.tab">
- <wiki:Include page='ProfileTab.jsp' />
-</wiki:Tab>
+<wiki:Tab id="profile" titleKey="login.register.tab" url="CreateProfile.jsp" />
</wiki:Permission>
<wiki:Tab id="loginhelp" titleKey="login.tab.help">
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/PreferencesContent.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/PreferencesContent.jsp?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/PreferencesContent.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/PreferencesContent.jsp Wed Dec 17 13:51:09 2008
@@ -1,14 +1,4 @@
<%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %>
-<%@ page import="com.ecyrd.jspwiki.*" %>
-<%@ page import="com.ecyrd.jspwiki.ui.*" %>
-<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="com.ecyrd.jspwiki.action.WikiContextFactory" %>
-<%
- WikiContext context = WikiContextFactory.findContext( pageContext );
- TemplateManager.addResourceRequest( context, "script", "scripts/jspwiki-prefs.js" );
-%>
-
<wiki:TabbedSection defaultTab="${param.tab}">
<wiki:Tab id="prefs" titleKey="prefs.tab.prefs" accesskey="p">
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/ProfileTab.jsp
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/ProfileTab.jsp?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/ProfileTab.jsp (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/src/webdocs/templates/default/ProfileTab.jsp Wed Dec 17 13:51:09 2008
@@ -1,20 +1,9 @@
<%@ taglib uri="/WEB-INF/jspwiki.tld" prefix="wiki" %>
-<%@ page import="com.ecyrd.jspwiki.*" %>
-<%@ page import="com.ecyrd.jspwiki.auth.*" %>
-<%@ page import="com.ecyrd.jspwiki.auth.user.*" %>
-<%@ page errorPage="/Error.jsp" %>
+<%@ taglib uri="/WEB-INF/stripes.tld" prefix="stripes" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
-<%@ taglib uri="/WEB-INF/stripes.tld" prefix="stripes" %>
<%@ page import="javax.servlet.jsp.jstl.fmt.*" %>
-<%@ page import="com.ecyrd.jspwiki.action.WikiContextFactory" %>
-<%
- /* dateformatting not yet supported by wiki:UserProfile tag - diy */
- WikiContext wikiContext = WikiContextFactory.findContext( pageContext );
- UserManager manager = wikiContext.getEngine().getUserManager();
- UserProfile profile = manager.getUserProfile( wikiContext.getWikiSession() );
-%>
-<stripes:form beanclass="com.ecyrd.jspwiki.action.UserPreferencesActionBean" id="editProfile" class="wikiform" method="post" acceptcharset="UTF-8">
+<stripes:form beanclass="com.ecyrd.jspwiki.action.UserProfileActionBean" id="editProfile" class="wikiform" method="post" acceptcharset="UTF-8">
<stripes:param name="tab" value="profile" />
<h3>
@@ -32,10 +21,11 @@
<!-- Login name -->
<tr>
- <td><stripes:label for="loginname" name="prefs.loginname" /></td>
+ <td><stripes:label for="profile.loginName" name="prefs.loginname" /></td>
<td>
<wiki:UserProfile property="canChangeLoginName">
- <stripes:text name="loginname" id="loginname" size="20"><wiki:UserProfile property="loginname" /></stripes:text>
+ <stripes:text name="profile.loginName" id="loginName" size="20"><wiki:UserProfile property="loginname" /></stripes:text>
+ <stripes:errors field="profile.loginName" />
</wiki:UserProfile>
<wiki:UserProfile property="!canChangeLoginName">
<!-- If user can't change their login name, it's because the container manages the login -->
@@ -53,38 +43,37 @@
<!-- Password; not displayed if container auth used -->
<wiki:UserProfile property="canChangePassword">
<tr>
- <td><stripes:label for="password" name="prefs.password" /></td>
+ <td><stripes:label for="profile.password" name="prefs.password" /></td>
<td>
- <%--FIXME Enter Old PW to validate change flow, not yet treated by JSPWiki
- <label for="password">Old</label>
- <input type="password" name="password0" id="password0" size="20" value="" />
- --%>
- <stripes:password name="password" id="password" size="20" value="" />
+ <stripes:password name="profile.password" id="password" size="20" value="" />
+ <stripes:errors field="profile.password" />
</td>
</tr>
<tr>
<td><stripes:label for="passwordAgain" name="prefs.password2" /></td>
<td>
- <stripes:password name="passwordAgain" id="passwordAgain" size="20" value="" />
- <%-- extra validation ? min size, allowed chars? --%>
+ <stripes:password name="passwordAgain" id="passwordAgain" size="20" value="" />
+ <stripes:errors field="profile.passwordAgain" />
</td>
</tr>
</wiki:UserProfile>
<!-- Full name -->
<tr>
- <td><stripes:label for="fullname" name="prefs.fullname" /></td>
+ <td><stripes:label for="profile.fullname" name="prefs.fullname" /></td>
<td>
- <stripes:text name="fullname" id="fullname" size="20"><wiki:UserProfile property="fullname" /></stripes:text>
+ <stripes:text name="profile.fullname" id="fullname" size="20"><wiki:UserProfile property="fullname" /></stripes:text>
+ <stripes:errors field="profile.fullname" />
<div class="formhelp"><fmt:message key="prefs.fullname.description" /></div>
</td>
</tr>
<!-- E-mail -->
<tr>
- <td><stripes:label for="email" name="prefs.email" /></td>
+ <td><stripes:label for="profile.email" name="prefs.email" /></td>
<td>
- <stripes:text name="email" id="email" size="20"><wiki:UserProfile property="email" /></stripes:text>
+ <stripes:text name="profile.email" id="email" size="20"><wiki:UserProfile property="email" /></stripes:text>
+ <stripes:errors field="profile.email" />
<div class="formhelp"><fmt:message key="prefs.email.description" /></div>
</td>
</tr>
@@ -107,14 +96,14 @@
<td><stripes:label name="prefs.creationdate" /></td>
<td class="formvalue">
<%--<wiki:UserProfile property="created"/>--%>
- <fmt:formatDate value="<%= profile.getCreated() %>" pattern="${prefs.DateFormat}" timeZone="${prefs.TimeZone}" />
+ <fmt:formatDate value="${profile.Created}" pattern="${prefs.DateFormat}" timeZone="${prefs.TimeZone}" />
</td>
</tr>
<tr class="additinfo">
<td><stripes:label name="prefs.profile.lastmodified" /></td>
<td class="formvalue">
<%--<wiki:UserProfile property="modified"/>--%>
- <fmt:formatDate value="<%= profile.getLastModified() %>" pattern="${prefs.DateFormat}" timeZone="${prefs.TimeZone}" />
+ <fmt:formatDate value="${profile.LastModified}" pattern="${prefs.DateFormat}" timeZone="${prefs.TimeZone}" />
</td>
</tr>
</wiki:UserProfile>
@@ -123,10 +112,10 @@
<td> </td>
<td>
<wiki:UserProfile property="exists">
- <stripes:submit name="saveProfile"><fmt:message key="prefs.save.submit" /></stripes:submit>
+ <stripes:submit name="save"><fmt:message key="prefs.save.submit" /></stripes:submit>
</wiki:UserProfile>
<wiki:UserProfile property="new">
- <stripes:submit name="saveProfile"><fmt:message key="prefs.save.submit" /></stripes:submit>
+ <stripes:submit name="save"><fmt:message key="prefs.save.submit" /></stripes:submit>
</wiki:UserProfile>
<wiki:UserCheck status="assertionsAllowed">
Modified: incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/SamplePlugin2.java
URL: http://svn.apache.org/viewvc/incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/SamplePlugin2.java?rev=727526&r1=727525&r2=727526&view=diff
==============================================================================
--- incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/SamplePlugin2.java (original)
+++ incubator/jspwiki/branches/JSPWIKI_JCR_BRANCH/tests/SamplePlugin2.java Wed Dec 17 13:51:09 2008
@@ -1,3 +1,23 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+ */
import java.util.Map;
import org.apache.jspwiki.api.PluginException;