Created development theme in ccm-bundle-devel-wildfly

pull/10/head
Jens Pelzetter 2021-11-30 20:42:30 +01:00
parent ae330b71df
commit 23f1fb1992
19 changed files with 477 additions and 6 deletions

View File

@ -208,6 +208,14 @@
<include>assets/</include>
</includes>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-core</artifactId>
<type>jar</type>
<includes>
<include>themes/</include>
</includes>
</overlay>
<overlay>
<groupId>org.libreccm</groupId>
<artifactId>ccm-core</artifactId>

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

View File

@ -0,0 +1,2 @@
example.setting=Properties from the Freemarker theme.

View File

@ -0,0 +1,73 @@
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
header {
padding: 1em 2em;
}
header img {
display: block;
margin-left: auto;
margin-right: auto;
width: 20vw;
max-width: 1020px;
max-height: 566px;
}
main {
max-width: 55em;
margin-left: auto;
margin-right: auto;
padding: 2em 1em;
}
main h1 {
text-align: center;
}
main form.login {
display: flex;
align-items: center;
flex-direction: column;
margin-top: 1em;
}
main form.login .form-row {
display: flex;
align-items: flex-start;
flex-direction: column;
margin-bottom: 0.5em;
}
main form.login button[type=submit] {
display: block;
margin-top: 0.75em;
margin-left: auto;
margin-right: auto;
padding: 0.25em;
}
footer {
background-color: #71ac52;
color: #fff;
padding: 3em 1em;
width: 100vw;
}
footer p {
text-align: center;
}

View File

@ -0,0 +1,19 @@
<footer>
<ul>
<li>
<a href="/impressum">
<!--Impressum-->
${localize("footer.impressum")}
</a>
</li>
<li>
<a href="/privacy">
<!--Privacy-->
${localize("footer.privacy")}
</a>
</li>
<li>
<code>imported</code>
</li>
</ul>
</footer>

View File

@ -0,0 +1,35 @@
<#import "../main.html.ftl" as main>
<@main.ccm_main>
<h1>${LoginMessages['login.title']}</h1>
<#if (loginFailed)>
<div class="alert-error">
${LoginMessages['login.errors.failed']}
</div>
</#if>
<form action="${mvc.uri('LoginController#processLogin')}"
class="login"
method="post">
<div class="form-row">
<label for="login">${LoginMessages['login.screenname.label']}</label>
<input id="login" name="login" required="true" type="text" />
</div>
<div class="form-row">
<label for="password">
${LoginMessages['login.password.label']}
</label>
<input id="password"
name="password"
required="true"
type="password" />
</div>
<input type="hidden"
name="returnUrl"
value="${returnUrl}" />
<button type="submit">
${LoginMessages['login.submit']}
</button>
</form>
</@main.ccm_main>

View File

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<title>Category page</title>
<link rel="stylesheet" href="${getContextPath()}/theming/ccm/style.css" />
</head>
<body>
<main>
<h1>${LoginMessages['login.password_recovered.title']}</h1>
<p>${LoginMessages['login.password_recovered.message']}</p>
</main>
<#include "footer.html.ftl">
</body>
</html>

View File

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html>
<head>
<title>Category page</title>
<link rel="stylesheet" href="${getContextPath()}/theming/ccm/style.css" />
</head>
<body>
<main>
<h1>${LoginMessages['login.recover_password.title']}</h1>
<# if (failedToSendRecoverMessage)>
<div class="alert-error">
${LoginMessages['login.errors.failedToSendRecoverMessage']}
</div>
</#if>
<form action="${mvc.url('LoginController#recoverPassword')}"
method="post">
<label for="email">${LoginMessages['login.email.label']}</label>
<input id="email" name="email" required="true" type="text" />
<button type="submit">
${LoginMessages['login.recover_password.submit']}
</button>
</form>
</main>
<#include "footer.html.ftl">
</body>
</html>

View File

@ -0,0 +1,13 @@
<!DOCTYPE html>
<html>
<head>
<title>Category page</title>
<link rel="stylesheet" href="${themeUrl}/style.css" />
</head>
<body>
<main>
<h1>Logout successful</h1>
<p>Logout successful</p>
</main>
</body>
</html>

View File

@ -0,0 +1,25 @@
<#macro ccm_main scripts=[]>
<html>
<head>
<title>Category page</title>
<link rel="stylesheet" href="${themeUrl}/styles/style.css" />
<#list scripts as script>
<script src="${themeUrl}/${script}" />
</#list>
</head>
<body>
<header>
<a href="https://www.libreccm.org">
<img alt="LibreCCM Logo"
src="${themeUrl}/images/libreccm.png" />
</a>
</header>
<main>
<#nested>
</main>
<footer>
<p>LibreCCM basic theme. The customize create your own theme.</p>
</footer>
</body>
</html>
</#macro>

View File

@ -0,0 +1,5 @@
label.critical=Critical
label.error=Error
label.ok=OK
label.warning=Warning

View File

@ -0,0 +1,3 @@
footer.impressum=Impressum
footer.privacy=Privacy

View File

@ -0,0 +1,95 @@
{
"files": [
{
"name": "images",
"isDirectory": true,
"files": [
{
"name": "libreccm.png",
"isDirectory": false,
"mimeType": "image/png"
}
]
},
{
"name": "settings.properties",
"isDirectory": false,
"mimeType": "text/plain"
},
{
"name": "styles",
"isDirectory": true,
"files": [
{
"name": "style.css",
"isDirectory": false,
"mimeType": "text/css"
}
]
},
{
"name": "templates",
"isDirectory": true,
"files": [
{
"name": "login",
"isDirectory": true,
"files": [
{
"name": "login-form.html.ftl",
"isDirectory": false,
"mimeType": "text/plain"
},
{
"name": "login-password-recovered.html.ftl",
"isDirectory": false,
"mimeType": "text/plain"
}, {
"name": "login-recover-password.html.ftl",
"isDirectory": false,
"mimeType": "text/plain"
}
]
},
{
"name": "logout",
"isDirectory": true,
"files": [
{
"name": "loggedout.html.ftl",
"isDirectory": false,
"mimeText": "text/plain"
}
]
}
]
},
{
"name": "texts",
"isDirectory": true,
"files": [
{
"name": "labels.properties",
"isDirectory": false,
"mimeType": "text/plain"
}
]
},
{
"name": "theme-bundle.properties",
"isDirectory": false,
"mimeType": "text/plain"
},
{
"name": "theme-index.json",
"isDirectory": false,
"mimeType": "application/json"
},
{
"name": "theme.json",
"isDirectory": false,
"mimeType": "application/json"
}
]
}

View File

@ -0,0 +1,144 @@
{
"name": "librecms-devel",
"type": "freemarker",
"default-template": "templates/default.html.ftl",
"mvc-templates": {
"default": {
"description": {
"values": {
"value": [
{
"lang": "en",
"value": "Default Template"
}
]
}
},
"name": "Default Template",
"path": "templates/default.html.ftl",
"title": {
"values": {
"value": [
{
"lang": "en",
"value": "Default Template"
}
]
}
}
},
"login-form": {
"description": {
"values": {
"value": [
{
"lang": "en",
"value": "Login Form"
}
]
}
},
"name": "Login Form",
"path": "templates/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": "templates/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": "templates/login/login-password-recovered.html.ftl",
"title": {
"values": {
"value": [
{
"lang": "en",
"value": "Password recovered"
}
]
}
}
},
"loggedout": {
"description": {
"values": {
"value": [
{
"lang": "en",
"value": "Logout successful"
}
]
}
},
"name": "loggedout",
"path": "templates/logout/loggedout.html.ftl",
"title": {
"values": {
"value": [
{
"lang": "en",
"value": "Logout succesful"
}
]
}
}
}
},
"views": {
"default": {
"default": "default",
"@default": "default"
},
"login": {
"loginForm": "login-form",
"passwordRecovered": "login-password-recovered",
"recoverPassword": "login-recover-password"
},
"logout": {
"loggedout": "loggedout"
}
}
}

View File

@ -72,7 +72,9 @@ public class PageManager {
category.getObjectId())));
if (forCategory.getParentCategory() == null) {
return new Page();
final Page defaultPage = new Page();
defaultPage.setDisplayName("@default");
return defaultPage;
} else {
return findPageForCategory(forCategory.getParentCategory());
}

View File

@ -163,6 +163,7 @@ import javax.ws.rs.core.UriInfo;
*/
@Controller
@RequestScoped
@Path("/")
public class PagesController {
@Inject

View File

@ -109,8 +109,10 @@ public class ThemesMvc {
viewTemplateName = views.get(view);
} else {
final Map<String, String> defaultAppViews = manifest
.getViewsOfApplication(application);
if (defaultAppViews.containsKey("default")) {
.getViewsOfApplication("default");
if (defaultAppViews.containsKey(view)) {
viewTemplateName = defaultAppViews.get(view);
} else if(defaultAppViews.containsKey("default")) {
viewTemplateName = defaultAppViews.get("default");
} else {
throw new WebApplicationException(

View File

@ -17,7 +17,7 @@
}
},
"name": "Category Page",
"path": "categoryPage.html.ftl",
"path": "category-page.html.ftl",
"title": {
"values": {
"value": [
@ -128,7 +128,8 @@
},
"views": {
"default": {
"default": "category-page"
"default": "category-page",
"@default": "category-page"
},
"login": {
"loginForm": "login-form",