Compare commits

...

10 commits

18 changed files with 3157 additions and 382 deletions

View file

@ -46,7 +46,7 @@ Proxy.prototype.main_action = function () {
let content = new java.lang.String(data.content, 'utf-8');
if (!data.type.startsWith('text/')) {
if (data.type && !data.type.startsWith('text/')) {
content = new java.lang.String(content.enbase64());
}
@ -55,10 +55,10 @@ Proxy.prototype.main_action = function () {
} else {
res.contentType = data.type;
if (data.type.startsWith('text/')) {
res.write(java.lang.String(data.content, 'utf-8'));
} else {
if (data.type && !data.type.startsWith('text/')) {
res.writeBinary(data.content);
} else {
res.write(java.lang.String(data.content, 'utf-8'));
}
}
};

16
client/babel.config.json Normal file
View file

@ -0,0 +1,16 @@
{
"sourceMaps": true,
"plugins": [
"@babel/plugin-transform-block-scoping"
],
"presets": [
[
"@babel/preset-env",
{
"targets": "> 0.25%, not dead",
"useBuiltIns": "usage",
"corejs": 3
}
]
]
}

26
client/build.mjs Executable file
View file

@ -0,0 +1,26 @@
#!/usr/bin/env node
import esbuild from 'esbuild';
import babel from 'esbuild-plugin-babel';
esbuild.build({
define: { 'process.env.NODE_ENV': '"production"' },
outdir: 'static/js',
entryPoints: [
'./client/code-mirror.mjs'
],
entryNames: '[dir]/[name]-[hash]',
target: ['es6'],
format: 'esm',
platform: 'browser',
bundle: true,
minify: true,
keepNames: true,
sourcemap: 'linked',
plugins: [
babel({
filter: /\.m?js$/,
configFile: './babel.config.json'
})
]
}).catch(() => process.exit(1));

4
client/code-mirror.mjs Normal file
View file

@ -0,0 +1,4 @@
export { MergeView } from "@codemirror/merge";
export { basicSetup, EditorView } from "codemirror6";
export { Compartment, EditorState } from "@codemirror/state";
export { html } from "@codemirror/lang-html";

View file

@ -136,16 +136,16 @@
(<% param.helmaBuildDate %>)
</dd>
<dt><% gettext "Scripting Engine" %></dt>
<dd><a href="https://github.com/mozilla/rhino"><% param.rhino %></a></dd>
<dd><a href="https://github.com/mozilla/rhino/releases/tag/<% param.rhino | replace \\. _ | replace \\s '' %>_Release"><% param.rhino %></a></dd>
<dt><% gettext "Webserver" %></dt>
<dd><a href="https://github.com/jetty/jetty.project">Jetty <% param.jetty %></a></dd>
<dd><a href="https://github.com/jetty/jetty.project/releases/tag/jetty-<% param.jetty %>">Jetty <% param.jetty %></a></dd>
<dt><% gettext "Servlet Interface" %></dt>
<dd>
<a href="https://docs.oracle.com/javaee/7/api/index.html?javax/servlet/package-summary.html">
Javax <% param.servlet %>
<a href="https://jakarta.ee/specifications/servlet/<% param.servlet %>">
Jakarta <% param.servlet %>
</a>
</dd>
<dt><% gettext "Virtual Machine" %></dt>
<dd><a href="https://openjdk.org">Java <% param.java %></a></dd>
<dd><a href="https://openjdk.org/projects/jdk/<% param.java | replace \\.\\d+\\.\\d+$ '' %>">Java <% param.java %></a></dd>
</dl>
</div>

View file

@ -472,7 +472,7 @@ a {
}
&[href='javascript:'] {
display: none;
visibility: hidden;
}
}

View file

@ -7,97 +7,100 @@
</td>
<td class='uk-text-muted uk-text-right'><% if <% skin.custom %> is true then "<i class='uk-icon-user'></i>" %></td>
<td class='uk-text-right uk-text-nowrap;'>
<a href='javascript:' class='av-clipboard-copy' data-text='<% gettext 'Press CTRL & C to copy to clipboard.' %>' data-value="<% skin.macro %>"><i class='uk-icon-clipboard'></i></a>
<% skin.link compare "<i class='uk-icon-files-o'></i>"%>
<% skin.link reset "<i class='uk-icon-undo'></i>" %>
<a href='javascript:' class='av-clipboard-copy' data-text='<% gettext 'Press CTRL & C to copy to clipboard.' %>' data-value="<% skin.macro %>"><i class='uk-icon-clipboard'></i></a>
<% skin.link edit "<i class='uk-icon-pencil'></i>" %>
</td>
</tr>
<% #edit %>
<form class='uk-form av-skin-editor' method="post" action="<% response.action %>">
<div class='uk-margin-top uk-margin-left uk-margin-right uk-clearfix'>
<h1 class='uk-margin-large-right uk-float-left'><% response.title %></h1>
<span style='line-height: 39px;'>
<span class='uk-article-meta' style='vertical-align: bottom; display: inline-block;'>
<% skin.skin $HopObject#meta %>
</span>
<% if <% skin.name %> is '' then
<% skin.select prototype suffix=<% skin.input name class='uk-width-1-4' %> %>
%>
<button type="submit" name="save" value="1" class='uk-button uk-button-primary uk-margin-large-left'>
<% gettext "Save" %>
</button>
<% skin.link compare <% gettext Compare %> class='uk-button' %>
<a href='<% layout.skins.href all %>' class='uk-button uk-button-link'><% gettext Cancel %></a>
</span>
<% response.message prefix="<div class='uk-alert' data-uk-alert>" suffix=</div> %>
</div>
<% skin.textarea source %>
</form>
<script type='module'>
import {
basicSetup,
Compartment,
EditorView,
EditorState,
MergeView,
html
} from '<% root.static ../../js/code-mirror-DIBXQ677.js %>';
<script>
document.addEventListener("alpine:init", () => {
// Setup skin editor
let mode = 'application/x-helma-skin';
const language = new Compartment();
if (location.href.indexOf('stylesheet') > -1) {
mode = 'text/css';
} else if (location.href.indexOf('javascript') > -1) {
mode = 'text/javascript';
}
CodeMirror.fromTextArea(document.querySelector('#source'), {
autofocus: true,
enterMode: 'keep',
indentUnit: 3,
indentWithTabs: false,
lineNumbers: true,
matchBrackets: true,
mode: mode,
tabMode: 'shift',
tabSize: 3,
viewportMargin: Infinity
});
});
window.view = new MergeView({
parent: document.querySelector('.editor'),
a: {
doc: decodeURIComponent(`<% response.versionA %>`),
extensions: [
basicSetup,
language.of(html())
]
},
b: {
doc: decodeURIComponent(`<% response.versionB %>`),
extensions: [
basicSetup,
language.of(html()),
EditorView.editable.of(false),
EditorState.readOnly.of(true)
]
}
});
</script>
<script>
const setup = () => {
return {
reference: '<% request.reference %>',
<% #compare %>
<form>
<div class='uk-margin-top uk-margin-left uk-clearfix'>
<h1 class='uk-margin-large-right uk-float-left'><% response.title %></h1>
<span style='line-height: 42px;'>
<% skin.link edit <% gettext Edit %> class='uk-button uk-button-primary' %>
<% skin.link reset <% gettext Reset %> class='uk-button' %>
<a href='<% request.http_referer %>' class='uk-button uk-button-link'><% gettext Cancel %></a>
</span>
</div>
<div>
<% response.message prefix="<div class='uk-alert' data-uk-alert>" suffix=</div> %>
<table class='uk-table uk-table-condensed uk-table-striped'>
<thead>
<tr>
<th></th>
<th><% gettext 'Modified skin' %></th>
<th></th>
<th><% gettext 'Original skin' %></th>
</tr>
</thead>
<tbody>
<% response.diff %>
</tbody>
</table>
submit() {
this.$refs.source.innerHTML = view.a.state.doc.toString();
this.$refs.reference.value = this.reference;
this.$refs.form.submit();
}
};
};
</script>
<form class='uk-form' method='post' action='<% response.action %>' @submit='submit()' x-data='setup()' x-ref='form'>
<input x-ref='reference' type='hidden' name='reference' value='<% request.reference %>'>
<textarea x-ref='source' name='source' hidden></textarea>
<div class='sticky'>
<div class='header'>
<h1><% response.title %></h1>
<div class='uk-article-meta metadata'>
<% skin.skin $HopObject#meta %>
</div>
<div class='controls'>
<% if <% skin.name %> is '' then
<% skin.select prototype suffix=<% skin.input name class='uk-width-1-4' %> %>
%>
<div class='uk-button-group compare-buttons'>
<button @click.prevent='submit()' name='compare' class='uk-button'>
<% gettext 'Compare…' %>
</button>
<div data-uk-dropdown='{ mode: "click" }'>
<a href='javascript:' class='uk-button'>
<i class="uk-icon-caret-down"></i>
</a>
<div class='uk-dropdown uk-dropdown-small' name='reference'>
<ul class='uk-nav uk-nav-dropdown uk-nav-side'>
<li class='<% if <% request.reference %> is current then uk-active %>'>
<a href='javascript:' @click.prevent='reference = "current"; submit();'><% gettext Current %></a>
</li>
<li class='<% if <% request.reference %> is original then uk-active %>'>
<a href='javascript:' @click.prevent='reference = "original"; submit();'><% gettext Original %></a>
</li>
</ul>
</div>
</div>
</div>
<button type='submit' name='save' value='1' class='uk-button uk-button-primary'>
<% gettext Save %>
</button>
<a href='<% layout.skins.href all %>' class='uk-button uk-button-link'><% gettext Cancel %></a>
</div>
<% image /smallchaos.gif | link <% site.href %> %>
</div>
<% response.message prefix='<div class="message uk-alert" data-uk-alert>' suffix=</div> %>
<hr/>
</div>
<div class='editor'></div>
</form>
<% #difference %>
<tr>
<td class='uk-text-muted uk-text-right'><% param.leftLineNumber %></td>
<td class='uk-width-1-2 av-overflow <% param.leftStatus prefix='av-line-' %>'>
<div class='av-line'><% param.left %></div>
</td>
<td class='uk-text-muted uk-text-right'><% param.rightLineNumber %></td>
<td class='uk-width-1-2 av-overflow <% param.rightStatus prefix='av-line-' %>'>
<div class='av-line'><% param.right %></div>
</td>
</tr>

View file

@ -23,6 +23,19 @@ markgettext('Skin');
markgettext('skin');
markgettext('a skin // accusative');
/**
* Get the source of a skin in the code directory
* @param {String} prototype
* @param {String} name
* @returns String
*/
Skin.getSourceFromCode = function(prototype, name) {
const file = java.io.File(app.dir, prototype + '/' + prototype + '.skin');
const content = Packages.org.apache.commons.io.FileUtils.readFileToString(file, 'utf-8');
const skin = createSkin(content);
return skin.getSubskin(name).getSource() || '';
}
/**
*
* @param {String} group
@ -150,23 +163,29 @@ Skin.prototype.main_action = function() {
}
Skin.prototype.edit_action = function() {
if (req.postParams.save) {
if (!!req.postParams.save) {
try {
var url = this.href(req.action);
this.update(req.postParams);
res.message = gettext('The changes were saved successfully.');
if (req.postParams.save == 1) {
res.redirect(url);
} else {
res.redirect(res.handlers.layout.skins.href('modified'));
}
res.redirect(url);
} catch (ex) {
res.message = ex;
app.log(ex);
}
}
res.data.action = this.href(req.action);
res.data.title = gettext('Edit {0}.{1}', this.prototype, this.name);
if (!req.postParams.reference) {
req.postParams.reference = 'current';
}
const referenceSource = req.postParams.reference === 'original' ? this.source : this.getSource();
const currentSource = req.data.source || referenceSource;
res.data.versionA = encodeURIComponent(currentSource);
res.data.versionB = encodeURIComponent(referenceSource);
res.data.title = gettext('{0}', this.getTitle());
res.data.header = this.renderSkinAsString('$Skin#header');
res.data.body = this.renderSkinAsString('$Skin#edit');
res.handlers.skins.renderSkin('$Skins#page');
return;
@ -214,61 +233,6 @@ Skin.prototype.reset_action = function() {
return;
}
Skin.prototype.compare_action = function() {
var originalSkin = this.source || String.EMPTY;
var diff = this.getSource().diff(originalSkin);
if (!diff) {
res.message = gettext('No differences were found.');
} else {
res.push();
var param = {}, leftLineNumber = rightLineNumber = 0;
for (let line of diff) {
if (line.deleted) {
param.right = encode(line.value);
param.leftStatus = 'added';
param.rightStatus = '';
for (let i=0; i<line.deleted.length; i++) {
leftLineNumber += 1;
param.leftLineNumber = leftLineNumber;
param.rightLineNumber = '';
param.left = encode(line.deleted[i]);
param.right = '';
this.renderSkin('$Skin#difference', param);
}
}
if (line.inserted) {
param.left = encode(line.value);
param.leftStatus = '';
param.rightStatus = 'removed';
for (let i=0; i<line.inserted.length; i++) {
rightLineNumber += 1;
param.leftLineNumber = '';
param.rightLineNumber = rightLineNumber;
param.left = '';
param.right = encode(line.inserted[i]);
this.renderSkin('$Skin#difference', param);
}
}
if (line.value !== null) {
leftLineNumber += 1;
rightLineNumber += 1;
param.leftLineNumber = leftLineNumber;
param.rightLineNumber = rightLineNumber;
param.leftStatus = param.rightStatus = '';
param.left = encode(line.value);
param.right = param.left;
this.renderSkin('$Skin#difference', param);
}
}
res.data.diff = res.pop();
}
res.data.title = gettext('Compare {0}', this.getTitle());
res.data.body = this.renderSkinAsString('$Skin#compare');
res.handlers.skins.renderSkin('$Skins#page');
return;
}
/**
*
* @return {String}
@ -313,7 +277,7 @@ Skin.prototype.getSource = function() {
if (skin) {
return skin.getSource();
}
return null;
return '';
}
/**

View file

@ -3,40 +3,90 @@
<html <% site.locale prefix='lang=' %>>
<head>
<meta charset='utf-8'>
<meta name='viewport' content='width=device-width, initial-scale=1'>
<title><% response.title %></title>
<link rel='canonical' href='<% href %>'>
<link rel='icon' type='image/x-icon' href='<% image /favicon.png url %>'>
<link rel='shortcut icon' type='image/x-icon' href='<% image /favicon.png url %>'>
<link rel='apple-touch-icon' href='<% image /favicon.png url %>'>
<link rel="stylesheet" type="text/css" href="<% site.href main.css %>">
<link rel='stylesheet' type='text/css' href='<% root.static ../../styles/editor.min.css %>'>
<style type="text/css">
@media (max-width: 1023px) {
.metadata {
display: none;
}
}
@media (max-width: 767px) {
.compare-buttons,
.cm-mergeViewEditor:last-child {
display: none;
}
.cm-mergeViewEditor:first-child {
width: 100%;
}
}
body {
margin: 0;
padding: 0;
background: none;
}
body.safe-page {
margin: 1em;
}
body.create-page .compare-buttons {
display: none;
}
.sticky {
position: sticky;
top: 0;
z-index: 1;
background-color: white;
}
.header {
display: flex;
align-items: center;
margin-block-end: 1em;
padding: 1em 1em 0;
}
.header > h1 {
margin-block-end: 0;
}
.header > *:not(:last-child) {
margin-inline-end: auto;
}
.controls {
flex-shrink: 0;
}
h1, .metadata {
overflow-x: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.metadata {
max-width: 250px;
}
.message {
margin: 1em;
}
hr {
height: 1px;
margin: 0;
padding: 0;
border-block-start: 1px solid #ccc;
}
.editor {
border-block-end: 1px solid #ccc;
}
.cm-helma-macro {
color: #000;
}
.CodeMirror {
height: auto;
border-top: 1px solid #eee;
}
.av-line {
font-family: monospace;
white-space: pre-wrap;
}
.av-line-removed {
background-color: #fff1f0;
}
.av-line-added {
background-color: #f2fae3;
}
</style>
<script src='<% root.static ../../scripts/editor.min.js %>'></script>
<script defer src='<% site.href main.js %>'></script>
</head>
<body>
<span class='uk-margin-right uk-float-right'>
<% image /smallchaos.gif | link <% site.href %> %>
</span>
<body class='<% response.action suffix=-page %>'>
<% response.body %>
</body>
</html>
@ -46,7 +96,7 @@
<% response.title %>
<% skins.link create ' ' class='uk-icon-button uk-icon-plus uk-text-middle' %>
</h1>
<div class='uk-margin-top'>
<div>
<% skins.link main <% gettext Basic %> %>
<% skins.link modified <% gettext Modified %> prefix=" | " %>
<% skins.link all <% gettext All %> prefix=" | " %>

View file

@ -111,6 +111,7 @@ Skins.prototype.create_action = function() {
res.data.action = this.href(req.action);
HopObject.confirmConstructor(Skin);
res.data.body = (new Skin).renderSkinAsString('$Skin#edit');
res.data.action = req.action;
this.renderSkin('$Skins#page');
return;
}
@ -142,6 +143,7 @@ Skins.prototype.safe_action = function() {
res.data.title = gettext('Modified Skins (Safe Mode)');
res.data.list = renderList(this.modified, '$Skin#listItem');
res.data.body = this.renderSkinAsString('$Skins#list');
res.data.action = req.action;
this.renderSkin('$Skins#page');
return;
}

View file

@ -15,7 +15,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.
antville.url = jdbc:h2:./db/antville;ifexists=true;mode=postgresql
antville.url = jdbc:h2:./db/antville;ifexists=true;mode=postgresql;non_keywords=value
antville.driver = org.h2.Driver
antville.user = antville
antville.password = antville

View file

@ -22,8 +22,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Antville-0\n"
"Report-Msgid-Bugs-To: mail@antville.org\n"
"POT-Creation-Date: 2025-05-11 01:00+0200\n"
"PO-Revision-Date: 2025-05-11 01:00+0200\n"
"POT-Creation-Date: 2025-06-01 19:06+0200\n"
"PO-Revision-Date: 2025-06-01 19:06+0200\n"
"Language-Team: The Antville People <mail@antville.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
@ -66,7 +66,7 @@ msgstr ""
#: Members/$Members.skin:92
#: Comments/$Comments.skin:15
#: Polls/$Polls.skin:15
#: Skins/$Skins.skin:76
#: Skins/$Skins.skin:118
#: Membership/Membership.skin:8
#: Admin/$Admin.skin:291
#: Admin/$Admin.skin:175
@ -111,7 +111,7 @@ msgstr ""
msgid "Add Image"
msgstr ""
#: Members/Members.js:352
#: Members/Members.js:368
msgid "Add Member"
msgstr ""
@ -119,7 +119,7 @@ msgstr ""
msgid "Add Poll"
msgstr ""
#: Root/Root.js:181
#: Root/Root.js:182
msgid "Add Site"
msgstr ""
@ -152,7 +152,7 @@ msgstr ""
#: Members/$Members.skin:6
#: Comments/$Comments.skin:7
#: Polls/$Polls.skin:6
#: Skins/$Skins.skin:52
#: Skins/$Skins.skin:94
#: Stories/$Stories.skin:6
#: Images/$Images.skin:7
#: Files/$Files.skin:6
@ -214,7 +214,7 @@ msgstr ""
msgid "Are you sure you want to remove this tag?"
msgstr ""
#: Skins/$Skins.skin:50
#: Skins/$Skins.skin:92
msgid "Basic"
msgstr ""
@ -283,8 +283,7 @@ msgstr ""
#: Image/$Image.skin:90
#: HopObject/$HopObject.skin:22
#: Root/$Root.skin:33
#: Skin/$Skin.skin:72
#: Skin/$Skin.skin:32
#: Skin/$Skin.skin:98
#: ../compat/Layout/$Layout.skin:13
#: ../compat/Site/$Site.skin:10
msgid "Cancel"
@ -350,13 +349,8 @@ msgstr ""
msgid "Commit"
msgstr ""
#: Skin/$Skin.skin:31
msgid "Compare"
msgstr ""
#: Skin/Skin.js:266
#, java-format
msgid "Compare {0}"
#: Skin/$Skin.skin:77
msgid "Compare…"
msgstr ""
#: HopObject/HopObject.js:215
@ -364,11 +358,11 @@ msgid "Confirm Deletion"
msgstr ""
#: Layout/Layout.js:255
#: Skin/Skin.js:209
#: Skin/Skin.js:228
msgid "Confirm Reset"
msgstr ""
#: Site/Site.js:748
#: Site/Site.js:749
msgid "Confirm Unsubscribe"
msgstr ""
@ -398,7 +392,7 @@ msgid "Contributor"
msgstr ""
#: Members/$Members.skin:8
#: Members/Members.js:275
#: Members/Members.js:291
msgid "Contributors"
msgstr ""
@ -474,6 +468,10 @@ msgstr ""
msgid "Created {0}"
msgstr ""
#: Skin/$Skin.skin:86
msgid "Current"
msgstr ""
#: Members/$Members.skin:84
#: Root/Site.skin:27
msgid "Data Privacy Statement"
@ -578,7 +576,6 @@ msgstr ""
#: Poll/$Poll.skin:29
#: Story/Story.skin:24
#: Image/Image.skin:15
#: Skin/$Skin.skin:70
msgid "Edit"
msgstr ""
@ -612,9 +609,9 @@ msgstr ""
msgid "Edit the rules in the <a href=\"{0}Site/robots/edit\">robots.txt</a> skin."
msgstr ""
#: Skin/Skin.js:169
#: Skin/Skin.js:187
#, java-format
msgid "Edit {0}.{1}"
msgid "Edit {0}"
msgstr ""
#: Claustra/$Claustra.skin:11
@ -696,9 +693,9 @@ msgstr ""
msgid "Find"
msgstr ""
#: Members/Members.js:327
#: Site/Site.js:704
#: Site/Site.js:984
#: Members/Members.js:343
#: Site/Site.js:705
#: Site/Site.js:985
#, java-format
msgid "Found more than {0} results. Please try a more specific query."
msgstr ""
@ -711,7 +708,7 @@ msgstr ""
msgid "General"
msgstr ""
#: Members/Members.js:221
#: Members/Members.js:237
#, java-format
msgid "Good bye, {0}! Looking forward to seeing you again!"
msgstr ""
@ -732,7 +729,7 @@ msgstr ""
msgid "Have fun!"
msgstr ""
#: Root/Root.js:317
#: Root/Root.js:318
#: Root/Site.skin:31
msgid "Health"
msgstr ""
@ -845,7 +842,7 @@ msgstr ""
msgid "Interval"
msgstr ""
#: Skins/$Skins.skin:66
#: Skins/$Skins.skin:108
msgid "JavaScript"
msgstr ""
@ -907,7 +904,7 @@ msgstr ""
msgid "Logged in as {0}"
msgstr ""
#: Members/Members.js:213
#: Members/Members.js:229
msgid "Login"
msgstr ""
@ -926,7 +923,7 @@ msgid "Manager"
msgstr ""
#: Members/$Members.skin:9
#: Members/Members.js:266
#: Members/Members.js:282
msgid "Managers"
msgstr ""
@ -970,8 +967,8 @@ msgstr ""
#: Comments/$Comments.skin:16
#: Polls/$Polls.skin:16
#: Skins/$Skins.skin:51
#: Skins/$Skins.skin:77
#: Skins/$Skins.skin:93
#: Skins/$Skins.skin:119
#: Admin/$Admin.skin:223
#: Stories/$Stories.skin:17
#: Images/$Images.skin:21
@ -987,14 +984,10 @@ msgstr ""
msgid "Modified Skins (Safe Mode)"
msgstr ""
#: Skin/$Skin.skin:81
msgid "Modified skin"
msgstr ""
#: Tags/$Tags.skin:17
#: Members/$Members.skin:204
#: Members/$Members.skin:15
#: Skins/$Skins.skin:75
#: Skins/$Skins.skin:117
#: Admin/$Admin.skin:290
#: Admin/$Admin.skin:221
#: Admin/$Admin.skin:245
@ -1011,7 +1004,7 @@ msgstr ""
msgid "Name of the account that triggered the event"
msgstr ""
#: Skins/$Skins.skin:62
#: Skins/$Skins.skin:104
msgid "Navigation"
msgstr ""
@ -1019,10 +1012,6 @@ msgstr ""
msgid "Next page"
msgstr ""
#: Skin/Skin.js:221
msgid "No differences were found."
msgstr ""
#: Site/Site.js:88
msgid "Nobody"
msgstr ""
@ -1079,8 +1068,8 @@ msgstr ""
msgid "Options"
msgstr ""
#: Skin/$Skin.skin:83
msgid "Original skin"
#: Skin/$Skin.skin:89
msgid "Original"
msgstr ""
#: Membership/Membership.js:54
@ -1089,7 +1078,7 @@ msgid "Owner"
msgstr ""
#: Members/$Members.skin:10
#: Members/Members.js:257
#: Members/Members.js:273
msgid "Owners"
msgstr ""
@ -1125,11 +1114,11 @@ msgstr ""
msgid "Pixels"
msgstr ""
#: Members/Members.js:368
#: Members/Members.js:384
msgid "Please accept the data privacy statement."
msgstr ""
#: Members/Members.js:364
#: Members/Members.js:380
msgid "Please accept the terms and conditions."
msgstr ""
@ -1172,8 +1161,8 @@ msgstr ""
msgid "Please enter a new password."
msgstr ""
#: Members/Members.js:321
#: Site/Site.js:971
#: Members/Members.js:337
#: Site/Site.js:972
msgid "Please enter a query in the search form."
msgstr ""
@ -1280,7 +1269,7 @@ msgstr ""
#: Story/$Story.skin:25
#: File/$File.skin:14
#: Image/$Image.skin:19
#: Skin/$Skin.skin:10
#: Skin/$Skin.skin:11
msgid "Press CTRL & C to copy to clipboard."
msgstr ""
@ -1311,7 +1300,7 @@ msgstr ""
msgid "Public"
msgstr ""
#: Root/Root.js:196
#: Root/Root.js:197
#: Root/Site.skin:25
msgid "Public Sites"
msgstr ""
@ -1347,7 +1336,7 @@ msgstr ""
msgid "Referrer Filter"
msgstr ""
#: Site/Site.js:690
#: Site/Site.js:691
#: Site/Site.skin:34
#: Root/Site.skin:37
msgid "Referrers"
@ -1401,7 +1390,6 @@ msgstr ""
#: Admin/$Admin.skin:257
#: Admin/$Admin.skin:164
#: Site/$Site.skin:1125
#: Skin/$Skin.skin:71
msgid "Reset"
msgstr ""
@ -1452,7 +1440,7 @@ msgstr ""
#: Comment/Comment.skin:69
#: File/$File.skin:61
#: Image/$Image.skin:87
#: Skin/$Skin.skin:29
#: Skin/$Skin.skin:96
msgid "Save"
msgstr ""
@ -1464,7 +1452,7 @@ msgstr ""
msgid "Scripting Engine"
msgstr ""
#: Site/Site.js:716
#: Site/Site.js:717
#: Site/Site.skin:41
#: Site/$Site.skin:1123
#: Site/$Site.skin:1223
@ -1558,7 +1546,7 @@ msgstr ""
msgid "Site Creation"
msgstr ""
#: Skins/$Skins.skin:58
#: Skins/$Skins.skin:100
msgid "Site Page"
msgstr ""
@ -1566,7 +1554,7 @@ msgstr ""
msgid "Site Phase-Out"
msgstr ""
#: Site/Site.js:815
#: Site/Site.js:816
msgid "Site is scheduled for import."
msgstr ""
@ -1581,7 +1569,7 @@ msgid "Size"
msgstr ""
#: Skin/Skin.js:22
#: Skin/Skin.js:200
#: Skin/Skin.js:219
msgid "Skin"
msgstr ""
@ -1590,7 +1578,7 @@ msgstr ""
msgid "Skins"
msgstr ""
#: Site/Site.js:847
#: Site/Site.js:848
msgid "Something went wrong."
msgstr ""
@ -1624,7 +1612,7 @@ msgstr ""
msgid "Sorry, this layout is not compatible with Antville."
msgstr ""
#: Members/Members.js:426
#: Members/Members.js:442
msgid "Sorry, your input did not match any registered account."
msgstr ""
@ -1639,7 +1627,7 @@ msgstr ""
msgid "Start"
msgstr ""
#: Skins/$Skins.skin:60
#: Skins/$Skins.skin:102
msgid "Start Page"
msgstr ""
@ -1685,7 +1673,7 @@ msgstr ""
msgid "Story about Terms and Conditions"
msgstr ""
#: Skins/$Skins.skin:64
#: Skins/$Skins.skin:106
msgid "Stylesheet"
msgstr ""
@ -1703,31 +1691,31 @@ msgid "Subscriber"
msgstr ""
#: Members/$Members.skin:7
#: Members/Members.js:284
#: Members/Members.js:300
msgid "Subscribers"
msgstr ""
#: User/$User.skin:27
#: Members/Members.js:305
#: Members/Members.js:321
#: Membership/Membership.skin:10
msgid "Subscriptions"
msgstr ""
#: Members/Members.js:343
#: Members/Members.js:359
#, java-format
msgid "Successfully added {0} to the list of members."
msgstr ""
#: Root/Root.js:168
#: Root/Root.js:169
msgid "Successfully created your site."
msgstr ""
#: Site/Site.js:725
#: Site/Site.js:726
#, java-format
msgid "Successfully subscribed to site {0}."
msgstr ""
#: Site/Site.js:739
#: Site/Site.js:740
#, java-format
msgid "Successfully unsubscribed from site {0}."
msgstr ""
@ -1818,7 +1806,7 @@ msgstr ""
#: Site/Site.js:338
#: File/File.js:204
#: Image/Image.js:203
#: Skin/Skin.js:157
#: Skin/Skin.js:170
msgid "The changes were saved successfully."
msgstr ""
@ -1875,11 +1863,11 @@ msgstr ""
msgid "The poll was updated successfully."
msgstr ""
#: Site/Site.js:780
#: Site/Site.js:781
msgid "The site data will be available for download from here, soon."
msgstr ""
#: Site/Site.js:768
#: Site/Site.js:769
msgid "The site is queued for export."
msgstr ""
@ -1934,7 +1922,7 @@ msgstr ""
msgid "The user {0} has modified your membership of the site {1} at {2}."
msgstr ""
#: Skin/Skin.js:188
#: Skin/Skin.js:207
#, java-format
msgid "The {0} macro is missing. It is essential for accessing the site and must be present in this skin."
msgstr ""
@ -1948,8 +1936,8 @@ msgstr ""
msgid "There is already another job queued for this account: {0}"
msgstr ""
#: Site/Site.js:765
#: Site/Site.js:802
#: Site/Site.js:766
#: Site/Site.js:803
#, java-format
msgid "There is already another job queued for this site: {0}"
msgstr ""
@ -2013,27 +2001,27 @@ msgstr ""
msgid "This site is currently {0}."
msgstr ""
#: Skins/$Skins.skin:67
#: Skins/$Skins.skin:109
msgid "This skin contains additional JavaScript code that will be included in every page."
msgstr ""
#: Skins/$Skins.skin:65
#: Skins/$Skins.skin:107
msgid "This skin contains the Cascading Stylesheet (CSS) definitions, e.g. fonts, font sizes, colors etc. Modifying this skin will affect the general appearance of your site."
msgstr ""
#: Skins/$Skins.skin:59
#: Skins/$Skins.skin:101
msgid "This skin defines the basic structure of your site. Modifying it will affect the general appearance of your site."
msgstr ""
#: Skins/$Skins.skin:63
#: Skins/$Skins.skin:105
msgid "This skin is used to display the navigation links on the page."
msgstr ""
#: Skins/$Skins.skin:61
#: Skins/$Skins.skin:103
msgid "This skin is used to render the start page of your site."
msgstr ""
#: Members/Members.js:428
#: Members/Members.js:444
msgid "This user is already a member of this site."
msgstr ""
@ -2131,12 +2119,12 @@ msgstr ""
msgid "Update"
msgstr ""
#: Members/Members.js:380
#: Members/Members.js:396
msgid "Updated Terms &amp; Conditions"
msgstr ""
#: User/$User.skin:26
#: Members/Members.js:293
#: Members/Members.js:309
msgid "Updates"
msgstr ""
@ -2201,7 +2189,7 @@ msgstr ""
#: User/User.js:327
#: Members/Members.js:204
#: Members/Members.js:374
#: Members/Members.js:390
#, java-format
msgid "Welcome to {0}, {1}. Have fun!"
msgstr ""
@ -2292,12 +2280,12 @@ msgstr ""
msgid "You are about to reset the layout of site {0}."
msgstr ""
#: Skin/Skin.js:427
#: Skin/Skin.js:391
#, java-format
msgid "You are about to reset the skin {0}.{1}."
msgstr ""
#: Site/Site.js:750
#: Site/Site.js:751
#, java-format
msgid "You are about to unsubscribe from the site {0}."
msgstr ""
@ -2352,8 +2340,8 @@ msgstr ""
msgid "You did not vote, yet. You can vote until the poll is closed."
msgstr ""
#: Root/Root.js:429
#: Root/Root.js:438
#: Root/Root.js:447
#: Root/Root.js:456
#, java-format
msgid "You need to wait {0} before you are allowed to create a new site."
msgstr ""
@ -2389,7 +2377,7 @@ msgstr ""
msgid "[{0}] Notification of membership cancellation"
msgstr ""
#: Members/Members.js:342
#: Members/Members.js:358
#: Membership/Membership.js:184
#, java-format
msgid "[{0}] Notification of membership change"
@ -2597,7 +2585,7 @@ msgstr ""
msgid "files"
msgstr ""
#: Site/Site.js:952
#: Site/Site.js:953
msgid "free"
msgstr ""
@ -2806,7 +2794,7 @@ msgstr ""
msgid "updated // has updated"
msgstr ""
#: Site/Site.js:952
#: Site/Site.js:953
msgid "used"
msgstr ""
@ -2908,8 +2896,8 @@ msgstr[1] ""
#: Site/$Site.skin:1321
#: Site/$Site.skin:1331
#: Root/$Root.skin:79
#: Root/Root.js:430
#: Root/Root.js:439
#: Root/Root.js:448
#: Root/Root.js:457
#, java-format
msgid "{0} day"
msgid_plural "{0} days"
@ -3061,7 +3049,7 @@ msgid "{0} was successfully deleted."
msgstr ""
#: Layout/Layout.js:245
#: Skin/Skin.js:200
#: Skin/Skin.js:219
#, java-format
msgid "{0} was successfully reset."
msgstr ""
@ -3080,8 +3068,8 @@ msgid_plural "{0} years ago"
msgstr[0] ""
msgstr[1] ""
#: Root/Root.js:141
#: Root/Root.js:149
#: Root/Root.js:142
#: Root/Root.js:150
#, java-format
msgid "{0} {1} Error"
msgstr ""

View file

@ -18,8 +18,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Antville-1.5\n"
"Report-Msgid-Bugs-To: mail@antville.org\n"
"POT-Creation-Date: 2025-05-11 01:00+0200\n"
"PO-Revision-Date: 2025-05-11 01:03+0200\n"
"POT-Creation-Date: 2025-06-01 19:06+0200\n"
"PO-Revision-Date: 2025-06-01 19:07+0200\n"
"Last-Translator: Tobi Schäfer <interface@p3k.org>\n"
"Language-Team: The Antville People <mail@antville.org>\n"
"Language: de\n"
@ -59,7 +59,7 @@ msgstr "Akzeptieren"
#: User/$User.skin:148 User/User.js:22 Members/$Members.skin:165
#: Members/$Members.skin:48 Members/$Members.skin:225 Members/$Members.skin:92
#: Comments/$Comments.skin:15 Polls/$Polls.skin:15 Skins/$Skins.skin:76
#: Comments/$Comments.skin:15 Polls/$Polls.skin:15 Skins/$Skins.skin:118
#: Membership/Membership.skin:8 Admin/$Admin.skin:291 Admin/$Admin.skin:175
#: Stories/$Stories.skin:16 Images/$Images.skin:20 Files/$Files.skin:16
#: Root/$Root.skin:46
@ -98,7 +98,7 @@ msgstr "Datei hinzufügen"
msgid "Add Image"
msgstr "Bild hinzufügen"
#: Members/Members.js:352
#: Members/Members.js:368
msgid "Add Member"
msgstr "Mitglied hinzufügen"
@ -106,7 +106,7 @@ msgstr "Mitglied hinzufügen"
msgid "Add Poll"
msgstr "Umfrage hinzufügen"
#: Root/Root.js:181
#: Root/Root.js:182
msgid "Add Site"
msgstr "Site hinzufügen"
@ -135,7 +135,7 @@ msgid "Advanced"
msgstr "Erweitert"
#: Members/$Members.skin:6 Comments/$Comments.skin:7 Polls/$Polls.skin:6
#: Skins/$Skins.skin:52 Stories/$Stories.skin:6 Images/$Images.skin:7
#: Skins/$Skins.skin:94 Stories/$Stories.skin:6 Images/$Images.skin:7
#: Files/$Files.skin:6
msgid "All"
msgstr "Alle"
@ -206,7 +206,7 @@ msgstr "Sind Sie sicher, dass Sie fortfahren wollen?"
msgid "Are you sure you want to remove this tag?"
msgstr "Sind Sie sicher, dass Sie das Stichwort {0} entfernen wollen?"
#: Skins/$Skins.skin:50
#: Skins/$Skins.skin:92
msgid "Basic"
msgstr "Grundlegende"
@ -249,7 +249,7 @@ msgstr "Rückruf-Adresse"
#: Site/$Site.skin:1312 Site/$Site.skin:343 Site/$Site.skin:1289
#: Site/$Site.skin:228 Comment/Comment.skin:70 File/$File.skin:64
#: Image/$Image.skin:90 HopObject/$HopObject.skin:22 Root/$Root.skin:33
#: Skin/$Skin.skin:72 Skin/$Skin.skin:32 ../compat/Layout/$Layout.skin:13
#: Skin/$Skin.skin:98 ../compat/Layout/$Layout.skin:13
#: ../compat/Site/$Site.skin:10
msgid "Cancel"
msgstr "Abbrechen"
@ -311,24 +311,19 @@ msgstr "Kommentare zum Beitrag sind {0}"
msgid "Commit"
msgstr "Commit"
#: Skin/$Skin.skin:31
msgid "Compare"
msgstr "Vergleichen"
#: Skin/Skin.js:266
#, java-format
msgid "Compare {0}"
msgstr "Vergleichen {0}"
#: Skin/$Skin.skin:77
msgid "Compare…"
msgstr "Vergleichen…"
#: HopObject/HopObject.js:215
msgid "Confirm Deletion"
msgstr "Löschen bestätigen"
#: Layout/Layout.js:255 Skin/Skin.js:209
#: Layout/Layout.js:255 Skin/Skin.js:228
msgid "Confirm Reset"
msgstr "Zurücksetzen bestätigen"
#: Site/Site.js:748
#: Site/Site.js:749
msgid "Confirm Unsubscribe"
msgstr "Stornierung bestätigen"
@ -354,7 +349,7 @@ msgstr "Beiträge von Mitglied {0}"
msgid "Contributor"
msgstr "Autorin"
#: Members/$Members.skin:8 Members/Members.js:275
#: Members/$Members.skin:8 Members/Members.js:291
msgid "Contributors"
msgstr "Autorinnen"
@ -428,6 +423,10 @@ msgstr "Erstellt am {0}"
msgid "Created {0}"
msgstr "Erstellt {0}"
#: Skin/$Skin.skin:86
msgid "Current"
msgstr "Aktuell"
#: Members/$Members.skin:84 Root/Site.skin:27
msgid "Data Privacy Statement"
msgstr "Datenschutzerklärung"
@ -532,7 +531,6 @@ msgstr ""
"einer Programmiersprache ihrer Wahl."
#: Poll/$Poll.skin:29 Story/Story.skin:24 Image/Image.skin:15
#: Skin/$Skin.skin:70
msgid "Edit"
msgstr "Bearbeiten"
@ -568,10 +566,10 @@ msgstr ""
"Bearbeiten Sie die Regeln im <a href=\"{0}Site/robots/edit\">robots.txt</a>-"
"Skin."
#: Skin/Skin.js:169
#: Skin/Skin.js:187
#, java-format
msgid "Edit {0}.{1}"
msgstr "{0}.{1} bearbeiten"
msgid "Edit {0}"
msgstr "Bearbeiten {0}"
#: Claustra/$Claustra.skin:11
msgid "Enabled"
@ -648,7 +646,7 @@ msgstr "Filtern"
msgid "Find"
msgstr "Finden"
#: Members/Members.js:327 Site/Site.js:704 Site/Site.js:984
#: Members/Members.js:343 Site/Site.js:705 Site/Site.js:985
#, java-format
msgid "Found more than {0} results. Please try a more specific query."
msgstr ""
@ -663,7 +661,7 @@ msgstr "Galerien"
msgid "General"
msgstr "Allgemein"
#: Members/Members.js:221
#: Members/Members.js:237
#, java-format
msgid "Good bye, {0}! Looking forward to seeing you again!"
msgstr "Auf Wiedersehen, {0}! Schauen Sie bald wieder vorbei!"
@ -684,7 +682,7 @@ msgstr "Viel Vergnügen!"
msgid "Have fun!"
msgstr "Viele Späße!"
#: Root/Root.js:317 Root/Site.skin:31
#: Root/Root.js:318 Root/Site.skin:31
msgid "Health"
msgstr "Statusmonitor"
@ -809,7 +807,7 @@ msgstr "Information"
msgid "Interval"
msgstr "Pause"
#: Skins/$Skins.skin:66
#: Skins/$Skins.skin:108
msgid "JavaScript"
msgstr "JavaScript"
@ -863,7 +861,7 @@ msgstr "Protokolleintrag"
msgid "Logged in as {0}"
msgstr "Angemeldet als {0}"
#: Members/Members.js:213
#: Members/Members.js:229
msgid "Login"
msgstr "Anmeldung"
@ -879,7 +877,7 @@ msgstr "Abmelden"
msgid "Manager"
msgstr "Redakteurin"
#: Members/$Members.skin:9 Members/Members.js:266
#: Members/$Members.skin:9 Members/Members.js:282
msgid "Managers"
msgstr "Redakteurinnen"
@ -916,8 +914,8 @@ msgstr "Methode"
msgid "Mode"
msgstr "Modus"
#: Comments/$Comments.skin:16 Polls/$Polls.skin:16 Skins/$Skins.skin:51
#: Skins/$Skins.skin:77 Admin/$Admin.skin:223 Stories/$Stories.skin:17
#: Comments/$Comments.skin:16 Polls/$Polls.skin:16 Skins/$Skins.skin:93
#: Skins/$Skins.skin:119 Admin/$Admin.skin:223 Stories/$Stories.skin:17
#: Images/$Images.skin:21 Files/$Files.skin:17
msgid "Modified"
msgstr "Geändert"
@ -930,12 +928,8 @@ msgstr "Geänderte Skins"
msgid "Modified Skins (Safe Mode)"
msgstr "Geänderte Skins (sicherer Modus)"
#: Skin/$Skin.skin:81
msgid "Modified skin"
msgstr "Geänderter Skin"
#: Tags/$Tags.skin:17 Members/$Members.skin:204 Members/$Members.skin:15
#: Skins/$Skins.skin:75 Admin/$Admin.skin:290 Admin/$Admin.skin:221
#: Skins/$Skins.skin:117 Admin/$Admin.skin:290 Admin/$Admin.skin:221
#: Admin/$Admin.skin:245 Admin/$Admin.skin:267 File/$File.skin:38
#: Image/$Image.skin:55 Claustra/$Claustra.skin:9 Files/$Files.skin:14
#: Root/$Root.skin:6
@ -946,7 +940,7 @@ msgstr "Name"
msgid "Name of the account that triggered the event"
msgstr "Name des Kontos, von welchem das Ereignis ausgelöst wurde"
#: Skins/$Skins.skin:62
#: Skins/$Skins.skin:104
msgid "Navigation"
msgstr "Navigation"
@ -954,10 +948,6 @@ msgstr "Navigation"
msgid "Next page"
msgstr "Nächste Seite"
#: Skin/Skin.js:221
msgid "No differences were found."
msgstr "Es wurden keine Unterschiede gefunden."
#: Site/Site.js:88
msgid "Nobody"
msgstr "Niemand"
@ -1023,15 +1013,15 @@ msgstr "Offen"
msgid "Options"
msgstr "Optionen"
#: Skin/$Skin.skin:83
msgid "Original skin"
msgstr "Ursprünglicher Skin"
#: Skin/$Skin.skin:89
msgid "Original"
msgstr "Original"
#: Membership/Membership.js:54 Site/Site.js:89
msgid "Owner"
msgstr "Besitzerin"
#: Members/$Members.skin:10 Members/Members.js:257
#: Members/$Members.skin:10 Members/Members.js:273
msgid "Owners"
msgstr "Besitzerinnen"
@ -1066,11 +1056,11 @@ msgstr "Internet-Adresse"
msgid "Pixels"
msgstr "Pixel"
#: Members/Members.js:368
#: Members/Members.js:384
msgid "Please accept the data privacy statement."
msgstr "Bitte akzeptieren Sie die Datenschutzerklärung."
#: Members/Members.js:364
#: Members/Members.js:380
msgid "Please accept the terms and conditions."
msgstr "Bitte akzeptieren Sie die Nutzungsbedingungen."
@ -1118,7 +1108,7 @@ msgstr "Bitte geben Sie einen neuen Namen für dieses Stichwort an"
msgid "Please enter a new password."
msgstr "Bitte geben Sie ein neues Kennwort ein."
#: Members/Members.js:321 Site/Site.js:971
#: Members/Members.js:337 Site/Site.js:972
msgid "Please enter a query in the search form."
msgstr "Bitte geben Sie eine Suchanfrage in das Suchformular ein."
@ -1220,7 +1210,7 @@ msgstr "Erstellt von {0} am {1}"
#: Layout/$Layout.skin:99 Poll/$Poll.skin:15 Global/i18n.js:139
#: Story/$Story.skin:25 File/$File.skin:14 Image/$Image.skin:19
#: Skin/$Skin.skin:10
#: Skin/$Skin.skin:11
msgid "Press CTRL & C to copy to clipboard."
msgstr "Drücken Sie CTRL & C, um in die Zwischenablage zu kopieren."
@ -1248,7 +1238,7 @@ msgstr "Fortfahren"
msgid "Public"
msgstr "Öffentlich"
#: Root/Root.js:196 Root/Site.skin:25
#: Root/Root.js:197 Root/Site.skin:25
msgid "Public Sites"
msgstr "Öffentliche Websites"
@ -1280,7 +1270,7 @@ msgstr "Rückverweis"
msgid "Referrer Filter"
msgstr "Rückverweis-Filter"
#: Site/Site.js:690 Site/Site.skin:34 Root/Site.skin:37
#: Site/Site.js:691 Site/Site.skin:34 Root/Site.skin:37
msgid "Referrers"
msgstr "Rückverweise"
@ -1322,7 +1312,7 @@ msgid "Required Account Status"
msgstr "Benötigter Konto-Status"
#: Layout/$Layout.skin:88 Admin/$Admin.skin:211 Admin/$Admin.skin:257
#: Admin/$Admin.skin:164 Site/$Site.skin:1125 Skin/$Skin.skin:71
#: Admin/$Admin.skin:164 Site/$Site.skin:1125
msgid "Reset"
msgstr "Zurücksetzen"
@ -1362,7 +1352,7 @@ msgstr "Laufende Umfragen"
#: User/$User.skin:101 Layout/$Layout.skin:86 Members/$Members.skin:194
#: Poll/$Poll.skin:114 Membership/$Membership.skin:16 Admin/$Admin.skin:137
#: Story/Story.skin:80 Site/$Site.skin:224 Comment/Comment.skin:69
#: File/$File.skin:61 Image/$Image.skin:87 Skin/$Skin.skin:29
#: File/$File.skin:61 Image/$Image.skin:87 Skin/$Skin.skin:96
msgid "Save"
msgstr "Speichern"
@ -1374,7 +1364,7 @@ msgstr "Speichern und starten"
msgid "Scripting Engine"
msgstr "Scripting-Umgebung"
#: Site/Site.js:716 Site/Site.skin:41 Site/$Site.skin:1123 Site/$Site.skin:1223
#: Site/Site.js:717 Site/Site.skin:41 Site/$Site.skin:1123 Site/$Site.skin:1223
#: ../compat/Global/aspects.js:246
msgid "Search"
msgstr "Suche"
@ -1456,7 +1446,7 @@ msgstr "Site"
msgid "Site Creation"
msgstr "Erstellen von Websites"
#: Skins/$Skins.skin:58
#: Skins/$Skins.skin:100
msgid "Site Page"
msgstr "Basis-Seite"
@ -1464,7 +1454,7 @@ msgstr "Basis-Seite"
msgid "Site Phase-Out"
msgstr "Automatisches Löschen von Websites"
#: Site/Site.js:815
#: Site/Site.js:816
msgid "Site is scheduled for import."
msgstr "Die Website ist für den Import eingeplant."
@ -1476,7 +1466,7 @@ msgstr "Sites"
msgid "Size"
msgstr "Größe"
#: Skin/Skin.js:22 Skin/Skin.js:200
#: Skin/Skin.js:22 Skin/Skin.js:219
msgid "Skin"
msgstr "Skin"
@ -1484,7 +1474,7 @@ msgstr "Skin"
msgid "Skins"
msgstr "Skins"
#: Site/Site.js:847
#: Site/Site.js:848
msgid "Something went wrong."
msgstr "Irgendwas ist schiefgelaufen."
@ -1527,7 +1517,7 @@ msgstr ""
msgid "Sorry, this layout is not compatible with Antville."
msgstr "Leider funktioniert das Layout nicht mit dieser Antville-Installation."
#: Members/Members.js:426
#: Members/Members.js:442
msgid "Sorry, your input did not match any registered account."
msgstr "Leider ist unter diesem Namen kein Konto registriert."
@ -1540,7 +1530,7 @@ msgstr "Quelle: {0}"
msgid "Start"
msgstr "Start"
#: Skins/$Skins.skin:60
#: Skins/$Skins.skin:102
msgid "Start Page"
msgstr "Startseite"
@ -1579,7 +1569,7 @@ msgstr "Beitrag über die Datenschutzerklärung"
msgid "Story about Terms and Conditions"
msgstr "Beitrag über die Nutzungsbedingungen"
#: Skins/$Skins.skin:64
#: Skins/$Skins.skin:106
msgid "Stylesheet"
msgstr "Stilvorlagen"
@ -1595,29 +1585,29 @@ msgstr "Abonniert"
msgid "Subscriber"
msgstr "Abonnentin"
#: Members/$Members.skin:7 Members/Members.js:284
#: Members/$Members.skin:7 Members/Members.js:300
msgid "Subscribers"
msgstr "Abonnentinnen"
#: User/$User.skin:27 Members/Members.js:305 Membership/Membership.skin:10
#: User/$User.skin:27 Members/Members.js:321 Membership/Membership.skin:10
msgid "Subscriptions"
msgstr "Abonnements"
#: Members/Members.js:343
#: Members/Members.js:359
#, java-format
msgid "Successfully added {0} to the list of members."
msgstr "{0} wurde erfolgreich zur Liste der Mitglieder hinzugefügt."
#: Root/Root.js:168
#: Root/Root.js:169
msgid "Successfully created your site."
msgstr "Ihr Website wurde erfolgreich erstellt."
#: Site/Site.js:725
#: Site/Site.js:726
#, java-format
msgid "Successfully subscribed to site {0}."
msgstr "Die Website {0} wurde erfolgreich abonniert."
#: Site/Site.js:739
#: Site/Site.js:740
#, java-format
msgid "Successfully unsubscribed from site {0}."
msgstr "Das Abonnement der Website {0} wurde erfolgreich storniert."
@ -1706,7 +1696,7 @@ msgstr ""
"Methode aufgerufen:"
#: User/User.js:523 Skins/Skins.js:99 Membership/Membership.js:159
#: Site/Site.js:338 File/File.js:204 Image/Image.js:203 Skin/Skin.js:157
#: Site/Site.js:338 File/File.js:204 Image/Image.js:203 Skin/Skin.js:170
msgid "The changes were saved successfully."
msgstr "Die Änderungen wurden erfolgreich gespeichert."
@ -1781,11 +1771,11 @@ msgstr "Die Umfrage wurde erfolgreich erstellt."
msgid "The poll was updated successfully."
msgstr "Die Umfrage wurde erfolgreich aktualisiert."
#: Site/Site.js:780
#: Site/Site.js:781
msgid "The site data will be available for download from here, soon."
msgstr "Der Site-Export steht demnächst hier zum Download bereit."
#: Site/Site.js:768
#: Site/Site.js:769
msgid "The site is queued for export."
msgstr "Der Export der Site-Daten wird vorbereitet."
@ -1861,7 +1851,7 @@ msgid "The user {0} has modified your membership of the site {1} at {2}."
msgstr ""
"Ihre Mitgliedschaft bei der Website {1} unter {2} wurde von {0} geändert."
#: Skin/Skin.js:188
#: Skin/Skin.js:207
#, java-format
msgid ""
"The {0} macro is missing. It is essential for accessing the site and must be "
@ -1879,7 +1869,7 @@ msgstr "Es gibt bereits eine Website mit diesem Namen."
msgid "There is already another job queued for this account: {0}"
msgstr "Für dieses Konto wird bereits ein anderer Auftrag berarbeitet: {0}"
#: Site/Site.js:765 Site/Site.js:802
#: Site/Site.js:766 Site/Site.js:803
#, java-format
msgid "There is already another job queued for this site: {0}"
msgstr "Ein anderer Prozess ist für diese Website bereits gereiht: {0}"
@ -1964,7 +1954,7 @@ msgstr "Diese Umfrage wurde {0} von {1} beendet"
msgid "This site is currently {0}."
msgstr "Die Website ist derzeit {0}."
#: Skins/$Skins.skin:67
#: Skins/$Skins.skin:109
msgid ""
"This skin contains additional JavaScript code that will be included in every "
"page."
@ -1972,7 +1962,7 @@ msgstr ""
"Dieser Skin enthält zusätzlichen JavaScript-Code, der in jeder Seite "
"eingebettet wird."
#: Skins/$Skins.skin:65
#: Skins/$Skins.skin:107
msgid ""
"This skin contains the Cascading Stylesheet (CSS) definitions, e.g. fonts, "
"font sizes, colors etc. Modifying this skin will affect the general "
@ -1982,7 +1972,7 @@ msgstr ""
"Farben. Änderungen an diesem Skin beeinflussen das allgemeine "
"Erscheinungsbild Ihrer Website."
#: Skins/$Skins.skin:59
#: Skins/$Skins.skin:101
msgid ""
"This skin defines the basic structure of your site. Modifying it will affect "
"the general appearance of your site."
@ -1990,18 +1980,18 @@ msgstr ""
"Dieser Skin bestimmt die grundlegende Struktur Ihrer Website. Änderungen an "
"diesem Skin beeinflussen das allgemeine Erscheinungsbild Ihrer Website."
#: Skins/$Skins.skin:63
#: Skins/$Skins.skin:105
msgid "This skin is used to display the navigation links on the page."
msgstr ""
"Dieser Skin wird verwendet, um die Navigations-Links auf jeder Seite "
"anzuzeigen."
#: Skins/$Skins.skin:61
#: Skins/$Skins.skin:103
msgid "This skin is used to render the start page of your site."
msgstr ""
"Dieser Skin wird zur Darstellung der Startseite Ihrer Website verwendet."
#: Members/Members.js:428
#: Members/Members.js:444
msgid "This user is already a member of this site."
msgstr "Dieses Konto ist bereits Mitglied der Website."
@ -2095,11 +2085,11 @@ msgstr ""
msgid "Update"
msgstr "Aktualisieren"
#: Members/Members.js:380
#: Members/Members.js:396
msgid "Updated Terms &amp; Conditions"
msgstr "Geänderte Nutzungsbedingungen"
#: User/$User.skin:26 Members/Members.js:293
#: User/$User.skin:26 Members/Members.js:309
msgid "Updates"
msgstr "Letzte Änderungen"
@ -2175,7 +2165,7 @@ msgstr "Willkommen"
msgid "Welcome to {0}, {1}!"
msgstr "Willkommen bei {0}, {1}!"
#: User/User.js:327 Members/Members.js:204 Members/Members.js:374
#: User/User.js:327 Members/Members.js:204 Members/Members.js:390
#, java-format
msgid "Welcome to {0}, {1}. Have fun!"
msgstr "Willkommen bei {0}, {1}. Viel Spaß!"
@ -2279,12 +2269,12 @@ msgstr ""
msgid "You are about to reset the layout of site {0}."
msgstr "Sie sind im Begriff, das Layout der Website {0} zurückzusetzen."
#: Skin/Skin.js:427
#: Skin/Skin.js:391
#, java-format
msgid "You are about to reset the skin {0}.{1}."
msgstr "Sie sind im Begriff, den Skin {0}.{1} zurückzusetzen."
#: Site/Site.js:750
#: Site/Site.js:751
#, java-format
msgid "You are about to unsubscribe from the site {0}."
msgstr "Sie sind im Begriff, das Abonnement der Website {0} zu löschen."
@ -2355,7 +2345,7 @@ msgstr ""
"Sie haben noch nicht abgestimmt. Sie können abstimmen, bis die Umfrage "
"beendet ist."
#: Root/Root.js:429 Root/Root.js:438
#: Root/Root.js:447 Root/Root.js:456
#, java-format
msgid "You need to wait {0} before you are allowed to create a new site."
msgstr "Sie müssen {0} warten, bevor Sie eine neue Website erstellen können."
@ -2391,7 +2381,7 @@ msgstr "[{0}] Nachricht von {1}"
msgid "[{0}] Notification of membership cancellation"
msgstr "[{0}] Benachrichtigung über Beendigung der Mitgliedschaft"
#: Members/Members.js:342 Membership/Membership.js:184
#: Members/Members.js:358 Membership/Membership.js:184
#, java-format
msgid "[{0}] Notification of membership change"
msgstr "[{0}] Benachrichtigung über Änderung der Mitgliedschaft"
@ -2573,7 +2563,7 @@ msgstr "Datei"
msgid "files"
msgstr "Dateien"
#: Site/Site.js:952
#: Site/Site.js:953
msgid "free"
msgstr "frei"
@ -2772,7 +2762,7 @@ msgstr "vertrauenswürdig"
msgid "updated // has updated"
msgstr "aktualisierte"
#: Site/Site.js:952
#: Site/Site.js:953
msgid "used"
msgstr "benutzt"
@ -2866,7 +2856,7 @@ msgstr[0] "{0} Kommentar"
msgstr[1] "{0} Kommentare"
#: Site/$Site.skin:1321 Site/$Site.skin:1331 Root/$Root.skin:79
#: Root/Root.js:430 Root/Root.js:439
#: Root/Root.js:448 Root/Root.js:457
#, java-format
msgid "{0} day"
msgid_plural "{0} days"
@ -3008,7 +2998,7 @@ msgstr[1] "{0} Stimmen"
msgid "{0} was successfully deleted."
msgstr "{0} wurde erfolgreich gelöscht."
#: Layout/Layout.js:245 Skin/Skin.js:200
#: Layout/Layout.js:245 Skin/Skin.js:219
#, java-format
msgid "{0} was successfully reset."
msgstr "{0} wurde erfolgreich zurückgesetzt."
@ -3027,7 +3017,7 @@ msgid_plural "{0} years ago"
msgstr[0] "vor {0} Jahr"
msgstr[1] "vor {0} Jahren"
#: Root/Root.js:141 Root/Root.js:149
#: Root/Root.js:142 Root/Root.js:150
#, java-format
msgid "{0} {1} Error"
msgstr "{0} {1} Fehler"
@ -3056,6 +3046,29 @@ msgstr ""
"{0}Laden Sie das Archiv herunter{1} oder klicken Sie »Exportieren«, um ein "
"neues zu erstellen."
#~ msgid "Compare with…"
#~ msgstr "Vergleich mit…"
#~ msgid "Compare"
#~ msgstr "Vergleichen"
#, java-format
#~ msgid "Compare {0}"
#~ msgstr "Vergleichen {0}"
#, java-format
#~ msgid "Edit {0}.{1}"
#~ msgstr "{0}.{1} bearbeiten"
#~ msgid "Modified skin"
#~ msgstr "Geänderter Skin"
#~ msgid "No differences were found."
#~ msgstr "Es wurden keine Unterschiede gefunden."
#~ msgid "Original skin"
#~ msgstr "Ursprünglicher Skin"
#~ msgid "Robots.txt forbids access to this page."
#~ msgstr "Robots.txt verbietet den Zugang zu dieser Seite."

View file

@ -70,8 +70,7 @@ global.messages['de'] = {
"Comments by {0}": "Kommentare von {0}",
"Comments of the story are {0}": "Kommentare zum Beitrag sind {0}",
"Commit": "Commit",
"Compare": "Vergleichen",
"Compare {0}": "Vergleichen {0}",
"Compare…": "Vergleichen…",
"Confirm Deletion": "Löschen bestätigen",
"Confirm Reset": "Zurücksetzen bestätigen",
"Confirm Unsubscribe": "Stornierung bestätigen",
@ -97,6 +96,7 @@ global.messages['de'] = {
"Created by {0} on {1}.": "Erstellt von {0} am {1}.",
"Created on {0}": "Erstellt am {0}",
"Created {0}": "Erstellt {0}",
"Current": "Aktuell",
"Data Privacy Statement": "Datenschutzerklärung",
"Date": "Datum",
"Date string in Unix timestamp format": "Datum im Unix-Format",
@ -126,7 +126,7 @@ global.messages['de'] = {
"Edit Story": "Beitrag bearbeiten",
"Edit the filter in the site settings.": "Der Filter kann in den Einstellungen bearbeitet werden.",
"Edit the rules in the <a href=\"{0}Site/robots/edit\">robots.txt</a> skin.": "Bearbeiten Sie die Regeln im <a href=\"{0}Site/robots/edit\">robots.txt</a>-Skin.",
"Edit {0}.{1}": "{0}.{1} bearbeiten",
"Edit {0}": "Bearbeiten {0}",
"Enabled": "Aktiviert",
"Enter one filter {0}pattern{1} per line to be applied on every URL in the referrer and backlink lists.": "Geben Sie ein {0}Filter-Schema{1} pro Zeile ein, das für jede Adresse in den Rückverweis-Listen angewendet werden soll.",
"Enter your username and the e-mail address you have used when you registered. You will then receive a confirmation e-mail containing further instructions.": "Bitte geben Sie das Konto und die E-Mail-Adresse an, die Sie bei der Registrierung verwendet haben. Ihnen wird dann eine Nachricht mit weiteren Anleitungen zugestellt.",
@ -199,12 +199,10 @@ global.messages['de'] = {
"Modified": "Geändert",
"Modified Skins": "Geänderte Skins",
"Modified Skins (Safe Mode)": "Geänderte Skins (sicherer Modus)",
"Modified skin": "Geänderter Skin",
"Name": "Name",
"Name of the account that triggered the event": "Name des Kontos, von welchem das Ereignis ausgelöst wurde",
"Navigation": "Navigation",
"Next page": "Nächste Seite",
"No differences were found.": "Es wurden keine Unterschiede gefunden.",
"Nobody": "Niemand",
"None": "Keine",
"Not registered yet?": "Noch nicht registriert?",
@ -218,7 +216,7 @@ global.messages['de'] = {
"Of course, you can now also start to add <a href=\"{0}\">stories</a>, upload some <a href=\"{1}\">images</a> or <a href=\"{2}\">files</a>, create your first <a href=\"{3}\">poll</a> or get a glimpse of Antvilles wonderful customization possibilities; just take a look at the <a href=\"{4}\">layout section</a> where you can modify the appearance of your site according to your needs.": "Selbstverständlich können Sie nun auch anfangen, <a href=\"{0}\">Beträge</a> zu erstellen, <a href=\"{1}\">Bilder</a> oder <a href=\"{2}\">Dateien</a> hochzuladen, Ihre erste <a href=\"{3}\">Umfrage</a> zu starten oder einen Blick auf Antvilles wunderbare Anpassungsmöglichkeiten zu werfen, indem Sie sich den <a href=\"{4}\">Layout-Bereich</a> anschauen, wo Sie das Erscheinungsbild Ihrer Website nach Ihren Wünschen ändern können.",
"Open": "Offen",
"Options": "Optionen",
"Original skin": "Ursprünglicher Skin",
"Original": "Original",
"Owner": "Besitzerin",
"Owners": "Besitzerinnen",
"PLEASE DO NOT REPLY TO THE SENDER ADDRESS OF THIS MESSAGE.": "BITTE VERWENDEN SIE FÜR IHRE ANTWORT NICHT DIE ABSENDE-ADRESSE DIESER NACHRICHT.",

2710
package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -11,7 +11,7 @@
"claustra:add": "tools/claustra/add-claustra.js",
"build": "run-p --continue-on-error --print-label build:*",
"build:main.js": "browserify tools/client/main.js --outfile static/scripts/main.min.js",
"build:editor.js": "browserify tools/client/editor.js --outfile static/scripts/editor.min.js",
"build:editor.js": "client/build.mjs",
"build:gallery.js": "browserify tools/client/gallery.js --outfile static/scripts/gallery.min.js",
"build:main.css": "lessc --clean-css tools/client/main.less static/styles/main.min.css",
"build:editor.css": "lessc --clean-css tools/client/editor.less static/styles/editor.min.css",
@ -31,15 +31,26 @@
"author": "The Antville People",
"license": "Apache-2.0",
"dependencies": {
"@codemirror/lang-html": "6.4.9",
"@codemirror/merge": "6.10.1",
"@codemirror/state": "6.5.2",
"alpinejs": "3.14.9",
"codemirror": "5.65.19",
"codemirror6": "npm:codemirror@6.0.1",
"jquery": "3.7.1",
"jquery-collagePlus": "github:antville/jquery-collagePlus#0.3.4",
"js-md5": "0.8.3",
"uikit": "2.27.4"
},
"devDependencies": {
"@babel/cli": "7.27.2",
"@babel/core": "7.27.4",
"@babel/plugin-transform-block-scoping": "7.27.3",
"@babel/preset-env": "7.27.2",
"browserify": "17.0.1",
"core-js": "3.42.0",
"esbuild": "0.25.5",
"esbuild-plugin-babel": "0.2.3",
"generate-license-file": "4.0.0",
"jsdoc": "4.0.4",
"less": "4.3.0",

View file

@ -11,7 +11,7 @@ clean {
}
dependencies {
implementation 'com.h2database:h2:1.4.200'
implementation 'com.h2database:h2:2.2.220'
}
configurations {
@ -112,9 +112,8 @@ tasks.register('installJars', Copy) {
tasks.register('buildDatabase', JavaExec) {
description 'Builds the H2 SQL database file.'
group 'build'
dependsOn ':assemble'
def inputFile = "$antvilleInstallDir/db/postgre.sql"
def inputFile = "${project.rootDir}/db/postgre.sql"
def outputDir = "$helmaInstallDir/db"
inputs.file inputFile
@ -130,7 +129,7 @@ tasks.register('buildDatabase', JavaExec) {
args = [
'-continueOnError',
'-script', inputFile,
'-url', "jdbc:h2:$outputDir/antville",
'-url', "jdbc:h2:$outputDir/antville;mode=postgresql;non_keywords=value",
'-user', 'antville',
'-password', 'antville'
]
@ -165,7 +164,7 @@ task assembleDist {
tasks.register('runH2Console', JavaExec) {
description 'Runs the H2 SQL database console.'
group 'Help'
dependsOn 'installJars'
dependsOn 'buildDatabase'
def h2Jar = configurations.library.files.find { jar ->
jar.name.startsWith('h2')
@ -178,9 +177,6 @@ tasks.register('runH2Console', JavaExec) {
'-user', 'antville',
'-password', 'antville'
]
// standardOutput = new ByteArrayOutputStream()
// ignoreExitValue true
}
tasks.register('distZip', Zip) {

View file

@ -16,9 +16,9 @@ const init = function() {
if (navItem) navItem.parentElement.classList.add('uk-active');
// Display hidden links triggering JavaScript
// Display hidden links triggering JavaScript, so they are visible only if JavaScript is enabled
document.querySelectorAll('a[href="javascript:"]').forEach(element => {
element.style.display = 'inline-block';
element.style.visibility = 'unset';
});
// Prevent redundant submits of a form