commit 01d570e9b4c3b13da27e863fad35077d5ea9085f
parent 782c49174161598efcee4f38c719a82914b953b3
Author: Jan Dankert <develop@jandankert.de>
Date: Tue, 20 Oct 2020 22:10:15 +0200
New form layout.
Diffstat:
5 files changed, 75 insertions(+), 189 deletions(-)
diff --git a/modules/cms/action/LoginAction.class.php b/modules/cms/action/LoginAction.class.php
@@ -327,11 +327,6 @@ class LoginAction extends BaseAction
}
- $this->setTemplateVar('objectid' ,$this->getRequestVar('objectid' ,RequestParams::FILTER_NUMBER) );
- $this->setTemplateVar('projectid' ,$this->getRequestVar('projectid' ,RequestParams::FILTER_NUMBER) );
- $this->setTemplateVar('modelid' ,$this->getRequestVar('modelid' ,RequestParams::FILTER_NUMBER) );
- $this->setTemplateVar('languageid',$this->getRequestVar('languageid',RequestParams::FILTER_NUMBER) );
-
$this->setTemplateVar('register' ,$conf['login' ]['register' ]);
$this->setTemplateVar('send_password',$conf['login' ]['send_password']);
diff --git a/modules/cms/ui/themes/default/html/views/login/login.php b/modules/cms/ui/themes/default/html/views/login/login.php
@@ -36,14 +36,10 @@
</div>
<?php } ?>
<?php $if1=(!O::config('login','nologin')); if($if1) { ?>
- <div class="<?php echo O::escapeHtml('or-line') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <label class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <span><?php echo O::escapeHtml(''.@O::lang('USER_USERNAME').'') ?>
- </span>
- </label>
- </div>
- <div class="<?php echo O::escapeHtml('or-value') ?>"><?php echo O::escapeHtml('') ?>
+ <section class="<?php echo O::escapeHtml('or-fieldset') ?>"><?php echo O::escapeHtml('') ?>
+ <h3 class="<?php echo O::escapeHtml('or-fieldset-label') ?>"><?php echo O::escapeHtml(''.@O::lang('USER_USERNAME').'') ?>
+ </h3>
+ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
<?php $if1=!(isset($force_username)); if($if1) { ?>
<input name="<?php echo O::escapeHtml('login_name') ?>" required="<?php echo O::escapeHtml('required') ?>" placeholder="<?php echo O::escapeHtml(''.@O::lang('USER_USERNAME').'') ?>" autofocus="<?php echo O::escapeHtml('autofocus') ?>" type="<?php echo O::escapeHtml('text') ?>" maxlength="<?php echo O::escapeHtml('128') ?>" value="<?php echo O::escapeHtml(''.@$login_name.'') ?>" class="<?php echo O::escapeHtml('or-name or-input') ?>" /><?php echo O::escapeHtml('') ?>
<?php } ?>
@@ -53,29 +49,19 @@
</span>
<?php } ?>
</div>
- </div>
- <div class="<?php echo O::escapeHtml('or-line') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <label class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <span><?php echo O::escapeHtml(''.@O::lang('USER_PASSWORD').'') ?>
- </span>
- </label>
- </div>
- <div class="<?php echo O::escapeHtml('or-value') ?>"><?php echo O::escapeHtml('') ?>
- <input type="<?php echo O::escapeHtml('password') ?>" name="<?php echo O::escapeHtml('login_password') ?>" size="<?php echo O::escapeHtml('20') ?>" maxlength="<?php echo O::escapeHtml('256') ?>" value="<?php echo O::escapeHtml(''.@$login_password.'') ?>" class="<?php echo O::escapeHtml('or-name or-input') ?>" /><?php echo O::escapeHtml('') ?>
- </div>
- </div>
- <div class="<?php echo O::escapeHtml('or-line') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- </div>
- <div class="<?php echo O::escapeHtml('or-value') ?>"><?php echo O::escapeHtml('') ?>
- <input type="<?php echo O::escapeHtml('checkbox') ?>" name="<?php echo O::escapeHtml('remember') ?>" value="<?php echo O::escapeHtml('1') ?>" <?php if(@$remember){ ?>checked="<?php echo O::escapeHtml('checked') ?>"<?php } ?> class="<?php echo O::escapeHtml('or-form-checkbox') ?>" /><?php echo O::escapeHtml('') ?>
- <label class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <span><?php echo O::escapeHtml(''.@O::lang('REMEMBER_ME').'') ?>
+ </section>
+ <section class="<?php echo O::escapeHtml('or-fieldset') ?>"><?php echo O::escapeHtml('') ?>
+ <h3 class="<?php echo O::escapeHtml('or-fieldset-label') ?>"><?php echo O::escapeHtml(''.@O::lang('USER_PASSWORD').'') ?>
+ </h3>
+ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
+ <input type="<?php echo O::escapeHtml('password') ?>" name="<?php echo O::escapeHtml('login_password') ?>" size="<?php echo O::escapeHtml('20') ?>" maxlength="<?php echo O::escapeHtml('256') ?>" required="<?php echo O::escapeHtml('required') ?>" placeholder="<?php echo O::escapeHtml(''.@O::lang('USER_PASSWORD').'') ?>" value="<?php echo O::escapeHtml(''.@$login_password.'') ?>" class="<?php echo O::escapeHtml('or-name or-input') ?>" /><?php echo O::escapeHtml('') ?>
+ <label><?php echo O::escapeHtml('') ?>
+ <input type="<?php echo O::escapeHtml('checkbox') ?>" name="<?php echo O::escapeHtml('remember') ?>" value="<?php echo O::escapeHtml('1') ?>" <?php if(@$remember){ ?>checked="<?php echo O::escapeHtml('checked') ?>"<?php } ?> class="<?php echo O::escapeHtml('or-form-checkbox') ?>" /><?php echo O::escapeHtml('') ?>
+ <span class="<?php echo O::escapeHtml('or-form-label') ?>"><?php echo O::escapeHtml(''.@O::lang('REMEMBER_ME').'') ?>
</span>
</label>
</div>
- </div>
+ </section>
<?php } ?>
<section class="<?php echo O::escapeHtml('or-group or-collapsible or-collapsible--is-closed') ?>"><?php echo O::escapeHtml('') ?>
<h2 class="<?php echo O::escapeHtml('or-collapsible-title or-group-title or-collapsible-act-switch') ?>"><?php echo O::escapeHtml(''.@O::lang('USER_NEW_PASSWORD').'') ?>
@@ -85,28 +71,14 @@
</i>
</h2>
<div class="<?php echo O::escapeHtml('or-collapsible-value or-group-value') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-line') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <label class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <span><?php echo O::escapeHtml(''.@O::lang('USER_NEW_PASSWORD').'') ?>
- </span>
- </label>
- </div>
- <div class="<?php echo O::escapeHtml('or-value') ?>"><?php echo O::escapeHtml('') ?>
- <input type="<?php echo O::escapeHtml('password') ?>" name="<?php echo O::escapeHtml('password1') ?>" size="<?php echo O::escapeHtml('25') ?>" maxlength="<?php echo O::escapeHtml('256') ?>" value="<?php echo O::escapeHtml(''.@$password1.'') ?>" class="<?php echo O::escapeHtml('or- or-input') ?>" /><?php echo O::escapeHtml('') ?>
- </div>
- </div>
- <div class="<?php echo O::escapeHtml('or-line') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <label class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <span><?php echo O::escapeHtml(''.@O::lang('USER_NEW_PASSWORD_REPEAT').'') ?>
- </span>
- </label>
- </div>
- <div class="<?php echo O::escapeHtml('or-value') ?>"><?php echo O::escapeHtml('') ?>
- <input type="<?php echo O::escapeHtml('password') ?>" name="<?php echo O::escapeHtml('password2') ?>" size="<?php echo O::escapeHtml('25') ?>" maxlength="<?php echo O::escapeHtml('256') ?>" value="<?php echo O::escapeHtml(''.@$password2.'') ?>" class="<?php echo O::escapeHtml('or- or-input') ?>" /><?php echo O::escapeHtml('') ?>
+ <section class="<?php echo O::escapeHtml('or-fieldset') ?>"><?php echo O::escapeHtml('') ?>
+ <h3 class="<?php echo O::escapeHtml('or-fieldset-label') ?>"><?php echo O::escapeHtml(''.@O::lang('USER_NEW_PASSWORD').'') ?>
+ </h3>
+ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
+ <input type="<?php echo O::escapeHtml('password') ?>" name="<?php echo O::escapeHtml('password1') ?>" size="<?php echo O::escapeHtml('25') ?>" maxlength="<?php echo O::escapeHtml('256') ?>" placeholder="<?php echo O::escapeHtml(''.@O::lang('USER_NEW_PASSWORD').'') ?>" minlength="<?php echo O::escapeHtml(''.O::config('security','password','min_length').'') ?>" value="<?php echo O::escapeHtml(''.@$password1.'') ?>" class="<?php echo O::escapeHtml('or- or-input') ?>" /><?php echo O::escapeHtml('') ?>
+ <input type="<?php echo O::escapeHtml('password') ?>" name="<?php echo O::escapeHtml('password2') ?>" size="<?php echo O::escapeHtml('25') ?>" maxlength="<?php echo O::escapeHtml('256') ?>" placeholder="<?php echo O::escapeHtml(''.@O::lang('USER_NEW_PASSWORD_REPEAT').'') ?>" minlength="<?php echo O::escapeHtml(''.O::config('security','password','min_length').'') ?>" value="<?php echo O::escapeHtml(''.@$password2.'') ?>" class="<?php echo O::escapeHtml('or- or-input') ?>" /><?php echo O::escapeHtml('') ?>
</div>
- </div>
+ </section>
</div>
</section>
<section class="<?php echo O::escapeHtml('or-group or-collapsible or-collapsible--is-closed') ?>"><?php echo O::escapeHtml('') ?>
@@ -117,17 +89,13 @@
</i>
</h2>
<div class="<?php echo O::escapeHtml('or-collapsible-value or-group-value') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-line') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <label class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <span><?php echo O::escapeHtml(''.@O::lang('USER_TOKEN').'') ?>
- </span>
- </label>
- </div>
- <div class="<?php echo O::escapeHtml('or-value') ?>"><?php echo O::escapeHtml('') ?>
+ <section class="<?php echo O::escapeHtml('or-fieldset') ?>"><?php echo O::escapeHtml('') ?>
+ <h3 class="<?php echo O::escapeHtml('or-fieldset-label') ?>"><?php echo O::escapeHtml(''.@O::lang('USER_TOKEN').'') ?>
+ </h3>
+ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
<input name="<?php echo O::escapeHtml('user_token') ?>" type="<?php echo O::escapeHtml('text') ?>" maxlength="<?php echo O::escapeHtml('30') ?>" value="<?php echo O::escapeHtml('') ?>" class="<?php echo O::escapeHtml('or-input') ?>" /><?php echo O::escapeHtml('') ?>
</div>
- </div>
+ </section>
</div>
</section>
<?php $if1=(intval(1)<count($dbids)); if($if1) { ?>
@@ -141,14 +109,10 @@
</i>
</h2>
<div class="<?php echo O::escapeHtml('or-collapsible-value or-group-value') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-line') ?>"><?php echo O::escapeHtml('') ?>
- <div class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <label class="<?php echo O::escapeHtml('or-label') ?>"><?php echo O::escapeHtml('') ?>
- <span><?php echo O::escapeHtml(''.@O::lang('DATABASE').'') ?>
- </span>
- </label>
- </div>
- <div class="<?php echo O::escapeHtml('or-value') ?>"><?php echo O::escapeHtml('') ?>
+ <section class="<?php echo O::escapeHtml('or-fieldset') ?>"><?php echo O::escapeHtml('') ?>
+ <h3 class="<?php echo O::escapeHtml('or-fieldset-label') ?>"><?php echo O::escapeHtml(''.@O::lang('DATABASE').'') ?>
+ </h3>
+ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
<select name="<?php echo O::escapeHtml('dbid') ?>" size="<?php echo O::escapeHtml('1') ?>" class="<?php echo O::escapeHtml('or-input') ?>"><?php echo O::escapeHtml('') ?>
<?php foreach($dbids as $_key=>$_value) { ?>
<option value="<?php echo O::escapeHtml(''.@$_key.'') ?>" <?php if($_key==$dbid){ ?>selected="<?php echo O::escapeHtml('selected') ?>"<?php } ?>><?php echo O::escapeHtml(''.@$_value.'') ?>
@@ -156,17 +120,13 @@
<?php } ?>
</select>
</div>
- </div>
+ </section>
</div>
</section>
<?php } ?>
<?php if(!$if1) { ?>
<input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('dbid') ?>" value="<?php echo O::escapeHtml(''.@$dbid.'') ?>" /><?php echo O::escapeHtml('') ?>
<?php } ?>
- <input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('objectid') ?>" value="<?php echo O::escapeHtml(''.@$objectid.'') ?>" /><?php echo O::escapeHtml('') ?>
- <input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('modelid') ?>" value="<?php echo O::escapeHtml(''.@$modelid.'') ?>" /><?php echo O::escapeHtml('') ?>
- <input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('projectid') ?>" value="<?php echo O::escapeHtml(''.@$projectid.'') ?>" /><?php echo O::escapeHtml('') ?>
- <input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('languageid') ?>" value="<?php echo O::escapeHtml(''.@$languageid.'') ?>" /><?php echo O::escapeHtml('') ?>
</div>
<div class="<?php echo O::escapeHtml('or-form-actionbar') ?>"><?php echo O::escapeHtml('') ?>
<div class="<?php echo O::escapeHtml('or-btn or-btn--primary or-act-form-save') ?>"><?php echo O::escapeHtml('') ?>
diff --git a/modules/cms/ui/themes/default/html/views/login/login.tpl.src.xml b/modules/cms/ui/themes/default/html/views/login/login.tpl.src.xml
@@ -1,7 +1,7 @@
<output xmlns="http://www.openrat.de/template" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.openrat.de/template ../../../../../../../template_engine/components/template.xsd">
- <form cancel="false" label="${message:menu_login}" visible="true" action="login" subaction="login" afterSuccess="reloadAll">
+ <form cancel="false" label="${message:menu_login}" action="login" subaction="login" afterSuccess="reloadAll">
<if true="${config:login/logo/enabled}">
<if not="not" empty="${config:login/logo/url}">
<link url="${config:login/logo/url}" target="_top">
@@ -32,132 +32,50 @@
<if false="${config:login/nologin}">
- <part class="line">
- <part class="label">
- <label for="login_name">
- <text value="${message:USER_USERNAME}"></text>
- </label>
- </part>
- <part class="value">
- <if not="true" present="force_username">
- <input type="text" name="login_name" class="name" value=""
- hint="${message:USER_USERNAME}" size="20" maxlength="128" focus="true" required="true"></input>
- </if>
- <else>
- <hidden name="login_name"></hidden>
- <text value="${force_username}"></text>
- </else>
- </part>
- </part>
- <part class="line">
- <part class="label">
- <label for="login_password">
- <text value="${message:USER_PASSWORD}"></text>
- </label>
- </part>
- <part class="value">
- <password name="login_password" class="name" default=""
- size="20"></password>
- </part>
- </part>
-
-
-
-
-
-
-
- <part class="line">
- <part class="label">
- </part>
- <part class="value">
- <checkbox name="remember" default="false"></checkbox>
- <label for="remember">
- <text value="${message:REMEMBER_ME}"></text>
- </label>
- </part>
- </part>
-
+ <fieldset label="${message:USER_USERNAME}">
+ <if not="true" present="force_username">
+ <input type="text" name="login_name" class="name" value=""
+ hint="${message:USER_USERNAME}" size="20" maxlength="128" focus="true" required="true"/>
+ </if>
+ <else>
+ <hidden name="login_name"/>
+ <text value="${force_username}"/>
+ </else>
+ </fieldset>
+ <fieldset label="${message:USER_PASSWORD}">
+ <password name="login_password" class="name" default=""
+ size="20" hint="${message:USER_PASSWORD}" required="true" />
+ <checkbox name="remember" default="false" label="${message:REMEMBER_ME}"/>
+ </fieldset>
</if>
- <!-- <if true="property:mustChangePassword"> -->
<group title="${message:USER_NEW_PASSWORD}" open="false" show="false">
- <part class="line">
- <part class="label">
- <label for="password1">
- <text value="${message:USER_NEW_PASSWORD}"></text>
- </label>
- </part>
- <part class="value">
- <password name="password1" default="" size="25"></password>
- </part>
- </part>
- <part class="line">
- <part class="label">
- <label for="password2">
- <text value="${message:USER_NEW_PASSWORD_REPEAT}"></text>
- </label>
- </part>
- <part class="value">
- <password name="password2" default="" size="25"></password>
- </part>
- </part>
+ <fieldset label="${message:USER_NEW_PASSWORD}">
+ <password name="password1" default="" size="25" minlength="${config:security/password/min_length}" hint="${message:USER_NEW_PASSWORD}" />
+ <password name="password2" default="" size="25" minlength="${config:security/password/min_length}" hint="${message:USER_NEW_PASSWORD_REPEAT}" />
+ </fieldset>
</group>
<group title="${message:USER_TOKEN}" open="false" show="false">
- <part class="line">
- <part class="label">
- <label for="user_token">
- <text value="${message:USER_TOKEN}"></text>
- </label>
- </part>
- <part class="value">
- <input name="user_token" default="" size="25" maxlength="30" />
- </part>
- </part>
+ <fieldset label="${message:USER_TOKEN}">
+ <input name="user_token" default="" size="25" maxlength="30" />
+ </fieldset>
</group>
- <!-- </if> -->
-
- <!--
- <link type="view" class="action" action="login" subaction="password">
- <text value="${message:menu_password}"></text> </link>
- -->
-
- <!--
- <link type="view" class="action" action="login" subaction="register">
- <text value="${message:menu_register}"></text> </link> <newline></newline>
- <newline />
- -->
<if value="${dbids}" greaterthan="1">
- <!-- Mehr als 1 Datenbank zur Auswahl. Auswahlfeld anzeigen. -->
+ <!-- More than 1 database available. -->
<group title="${message:DATABASE}" icon="database" open="true">
- <part class="line">
- <part class="label">
- <label for="dbid">
- <text value="${message:DATABASE}"></text>
- </label>
- </part>
- <part class="value">
- <selectbox name="dbid" list="dbids"></selectbox>
- </part>
- </part>
+ <fieldset label="${message:DATABASE}">
+ <selectbox name="dbid" list="dbids"></selectbox>
+ </fieldset>
</group>
</if>
<else>
- <!-- Nur 1 Datenbank zur Auswahl. Kein Auswahlfeld notwendig. -->
+ <!-- Only 1 database is available. No input necessary. -->
<hidden name="dbid"></hidden>
</else>
-
- <hidden name="objectid"></hidden>
- <hidden name="modelid"></hidden>
- <hidden name="projectid"></hidden>
- <hidden name="languageid"></hidden>
</form>
- <!--
- <newline /> <newline /> <link url="${config:login/gpl/url}"
- type="external" class="copyright"> <text value="${message:GPL}"></text> </link>
- -->
+
</output>
\ No newline at end of file
diff --git a/modules/template_engine/components/html/component_password/PasswordComponent.class.php b/modules/template_engine/components/html/component_password/PasswordComponent.class.php
@@ -17,18 +17,28 @@ class PasswordComponent extends FieldComponent
public $maxlength = 256;
+ public $minlength;
+ public $required = false;
+ public $hint;
+
public function createElement()
{
$input = (new CMSElement('input'))->addAttribute('type','password');
$input->addAttribute('name',$this->name);
- /*echo ' id="<?php echo REQUEST_ID ?>_' . $this->htmlvalue($this->name) . '"';
- */
$input->addAttribute('size',$this->size);
$input->addAttribute('maxlength',$this->maxlength);
$input->addStyleClass($this->class);
+ if ( $this->required )
+ $input->addAttribute( 'required','required');
+
+ if ( $this->hint )
+ $input->addAttribute( 'placeholder',$this->hint );
+
+ if ( $this->minlength )
+ $input->addAttribute('minlength',$this->minlength);
if ($this->default)
$input->addAttribute('value',$this->default);
diff --git a/modules/template_engine/components/template.xsd b/modules/template_engine/components/template.xsd
@@ -1142,6 +1142,9 @@
<xsd:attribute name="default" type="xsd:string"/>
<xsd:attribute name="size" type="xsd:int"/>
<xsd:attribute name="maxlength" type="xsd:int"/>
+ <xsd:attribute name="minlength" type="xsd:string"/>
+ <xsd:attribute name="required" type="xsd:boolean"/>
+ <xsd:attribute name="hint" type="xsd:string"/>
<xsd:attribute name="prefix" type="xsd:string"/>
<xsd:attribute name="name" type="xsd:string"/>
<xsd:attribute name="readonly" type="xsd:boolean"/>