diff --git a/ccm-core/src/main/java/com/arsdigita/ui/login/LoginConstants.java b/ccm-core/src/main/java/com/arsdigita/ui/login/LoginConstants.java index 8c179c2d5..cf2b69679 100644 --- a/ccm-core/src/main/java/com/arsdigita/ui/login/LoginConstants.java +++ b/ccm-core/src/main/java/com/arsdigita/ui/login/LoginConstants.java @@ -30,6 +30,9 @@ public interface LoginConstants { public static final String LOGIN_BUNDLE = "com.arsdigita.ui.login.LoginResources"; + + public static final String LOGIN_UI_BUNDLE + = "org.libreccm.ui.LoginBundle"; public static final GlobalizedMessage SUBMIT = LoginHelper.getMessage( "login.submit"); diff --git a/ccm-core/src/main/java/org/libreccm/mvc/freemarker/MvcFreemarkerConfigurationProducer.java b/ccm-core/src/main/java/org/libreccm/mvc/freemarker/MvcFreemarkerConfigurationProducer.java index a209a462a..2282db361 100644 --- a/ccm-core/src/main/java/org/libreccm/mvc/freemarker/MvcFreemarkerConfigurationProducer.java +++ b/ccm-core/src/main/java/org/libreccm/mvc/freemarker/MvcFreemarkerConfigurationProducer.java @@ -29,6 +29,7 @@ import org.eclipse.krazo.ext.freemarker.DefaultConfigurationProducer; import org.libreccm.theming.Themes; import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.inject.Alternative; import javax.enterprise.inject.Specializes; import javax.inject.Inject; import javax.servlet.ServletContext; @@ -41,6 +42,8 @@ import javax.ws.rs.Produces; * @author Jens Pelzetter */ @ApplicationScoped +@Alternative +@Specializes public class MvcFreemarkerConfigurationProducer extends DefaultConfigurationProducer { @@ -52,6 +55,7 @@ public class MvcFreemarkerConfigurationProducer @Produces @ViewEngineConfig + @Alternative @Specializes @Override public Configuration getConfiguration() { diff --git a/ccm-core/src/main/java/org/libreccm/theming/manifest/ThemeManifest.java b/ccm-core/src/main/java/org/libreccm/theming/manifest/ThemeManifest.java index e70d61884..4c91258b4 100644 --- a/ccm-core/src/main/java/org/libreccm/theming/manifest/ThemeManifest.java +++ b/ccm-core/src/main/java/org/libreccm/theming/manifest/ThemeManifest.java @@ -91,8 +91,7 @@ public class ThemeManifest implements Serializable { @XmlElement(name = "default-template", namespace = THEMES_XML_NS) private String defaultTemplate; - @XmlElementWrapper(name = "mvcTemplates", namespace = THEMES_XML_NS) - @XmlElement(name = "template", namespace = THEME_MANIFEST_XML) + @XmlElement(name = "mvc-templates", namespace = THEMES_XML_NS) private Map> mvcTemplates; public ThemeManifest() { diff --git a/ccm-core/src/main/java/org/libreccm/theming/mvc/ThemesMvc.java b/ccm-core/src/main/java/org/libreccm/theming/mvc/ThemesMvc.java index 862da79bd..24620dd21 100644 --- a/ccm-core/src/main/java/org/libreccm/theming/mvc/ThemesMvc.java +++ b/ccm-core/src/main/java/org/libreccm/theming/mvc/ThemesMvc.java @@ -96,7 +96,7 @@ public class ThemesMvc { return String.format( "@themes/%s/%s/%s", - theme, + themeInfo.getName(), Objects.toString(themeVersion), themeTemplate.getPath() ); diff --git a/ccm-core/src/main/java/org/libreccm/ui/login/LoginMessages.java b/ccm-core/src/main/java/org/libreccm/ui/login/LoginMessages.java index 0c8a3e7d3..5ae2a2795 100644 --- a/ccm-core/src/main/java/org/libreccm/ui/login/LoginMessages.java +++ b/ccm-core/src/main/java/org/libreccm/ui/login/LoginMessages.java @@ -60,7 +60,7 @@ public class LoginMessages extends AbstractMap{ @PostConstruct private void init() { messages = ResourceBundle.getBundle( - LoginConstants.LOGIN_BUNDLE, + LoginConstants.LOGIN_UI_BUNDLE, globalizationHelper.getNegotiatedLocale() ); } diff --git a/ccm-core/src/main/resources/META-INF/beans.xml b/ccm-core/src/main/resources/META-INF/beans.xml index 295fa9e6c..bade5d06d 100644 --- a/ccm-core/src/main/resources/META-INF/beans.xml +++ b/ccm-core/src/main/resources/META-INF/beans.xml @@ -5,6 +5,10 @@ http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" bean-discovery-mode="all"> + + org.libreccm.mvc.freemarker.MvcFreemarkerConfigurationProducer + + org.libreccm.security.AuthorizationInterceptor diff --git a/ccm-core/src/main/resources/org/libreccm/ui/LoginBundle.properties b/ccm-core/src/main/resources/org/libreccm/ui/LoginBundle.properties new file mode 100644 index 000000000..8959c3abb --- /dev/null +++ b/ccm-core/src/main/resources/org/libreccm/ui/LoginBundle.properties @@ -0,0 +1,14 @@ + +login.submit=Login +login.primaryEmail=Email Address +login.screenname.label=User name +login.password.label=Password +login.screenname.help=Your user name +login.password.help=Your password +login.errors.failed=Login failed. Wrong username or password. +login.errors.failedToSendRecoverMessage=Failed to send password recover message. +login.title=Login +login.recover_password.title=Recover password +login.recover_password.submit=Recover password +login.password_recovered.title=Recover mail send +login.password_recovered.message=An email with instructions how to reset your password has been sent. diff --git a/ccm-core/src/main/resources/org/libreccm/ui/LoginBundle_de.properties b/ccm-core/src/main/resources/org/libreccm/ui/LoginBundle_de.properties new file mode 100644 index 000000000..6956e262f --- /dev/null +++ b/ccm-core/src/main/resources/org/libreccm/ui/LoginBundle_de.properties @@ -0,0 +1,14 @@ + +login.submit=Anmelden +login.primaryEmail=E-Mail-Addresse +login.screenname.label=Benutzername +login.password.label=Passwort +login.screenname.help=Ihr Benutzername +login.password.help=Ihr Passwort +login.errors.failed=Anmeldung fehlgeschlagen. Falscher Benutzername oder falsches Passwort. +login.errors.failedToSendRecoverMessage=Senden der Wiederherstellungsmail fehlgeschlagen. +login.title=Login +login.recover_password.title=Passwort zur\u00fccksetzen +login.recover_password.submit=Passwort zur\u00fccksetzen +login.password_recovered.title=Mail gesendet +login.password_recovered.message=Eine E-Mail mit Anweisungen zum Zur\u00fccksetzen Ihres Passworts wurde an Ihre E-Mail-Adresse geschickt. diff --git a/ccm-core/src/main/resources/themes/ccm-freemarker/login/login-form.html.ftl b/ccm-core/src/main/resources/themes/ccm-freemarker/login/login-form.html.ftl new file mode 100644 index 000000000..ff42eb3c3 --- /dev/null +++ b/ccm-core/src/main/resources/themes/ccm-freemarker/login/login-form.html.ftl @@ -0,0 +1,35 @@ + + + + Category page + + + +
+

${LoginMessages['login.title']}

+ <# if (loginFailed)> +
+ ${LoginMessages['login.errors.failed']} +
+ +
+ + + + + + + +
+
+ <#include "footer.html.ftl"> + + diff --git a/ccm-core/src/main/resources/themes/ccm-freemarker/login/login-password-recovered.html.ftl b/ccm-core/src/main/resources/themes/ccm-freemarker/login/login-password-recovered.html.ftl new file mode 100644 index 000000000..ccee63371 --- /dev/null +++ b/ccm-core/src/main/resources/themes/ccm-freemarker/login/login-password-recovered.html.ftl @@ -0,0 +1,15 @@ + + + + Category page + + + +
+

${LoginMessages['login.password_recovered.title']}

+

${LoginMessages['login.password_recovered.message']}

+
+ <#include "footer.html.ftl"> + + + diff --git a/ccm-core/src/main/resources/themes/ccm-freemarker/login/login-recover-password.html.ftl b/ccm-core/src/main/resources/themes/ccm-freemarker/login/login-recover-password.html.ftl new file mode 100644 index 000000000..b39124964 --- /dev/null +++ b/ccm-core/src/main/resources/themes/ccm-freemarker/login/login-recover-password.html.ftl @@ -0,0 +1,27 @@ + + + + Category page + + + +
+

${LoginMessages['login.recover_password.title']}

+ <# if (failedToSendRecoverMessage)> +
+ ${LoginMessages['login.errors.failedToSendRecoverMessage']} +
+ +
+ + + + +
+
+ <#include "footer.html.ftl"> + + diff --git a/ccm-core/src/main/resources/themes/ccm-freemarker/theme.json b/ccm-core/src/main/resources/themes/ccm-freemarker/theme.json index b3e021ea8..a71f3595d 100644 --- a/ccm-core/src/main/resources/themes/ccm-freemarker/theme.json +++ b/ccm-core/src/main/resources/themes/ccm-freemarker/theme.json @@ -1,6 +1,84 @@ { "name": "ccm-freemarker", "type": "freemarker", - - "default-template": "category-page.html.ftl" + + "default-template": "category-page.html.ftl", + + "mvc-templates": { + "applications": { + "login-form": { + "description": { + "values": { + "value": [ + { + "lang": "en", + "value": "Login Form" + } + ] + } + }, + "name": "Login Form", + "path": "login/login-form.html.ftl", + "title": { + "values": { + "value": [ + { + "lang": "en", + "value": "Login Form" + } + ] + } + } + }, + "login-recover-password": { + "description": { + "values": { + "value": [ + { + "lang": "en", + "value": "Recover lost passwords" + } + ] + } + }, + "name": "login-recover-password", + "path": "login/login-recover-password.html.ftl", + "title": { + "values": { + "value": [ + { + "lang": "en", + "value": "Recover password" + } + ] + } + } + }, + "login-password-recovered": { + "description": { + "values": { + "value": [ + { + "lang": "en", + "value": "Password recovered" + } + ] + } + }, + "name": "login-password-recovered", + "path": "login/login-password-recovered.html.ftl", + "title": { + "values": { + "value": [ + { + "lang": "en", + "value": "Password recovered" + } + ] + } + } + } + } + } } +