commit 3d48814710c4031b9f7ba3d1f0d99d72a9fea34f
parent 911e3956977611dcb6f83ef04f4c7f03db71c482
Author: Jan Dankert <develop@jandankert.de>
Date: Sun, 15 Nov 2020 00:00:33 +0100
Fix: Editing of names and descriptions for pages and other objects.
Diffstat:
9 files changed, 133 insertions(+), 69 deletions(-)
diff --git a/modules/cms/action/ObjectAction.class.php b/modules/cms/action/ObjectAction.class.php
@@ -2,6 +2,7 @@
namespace cms\action;
+use language\Messages;
use util\ArrayUtils;
use cms\model\Acl;
use cms\model\Project;
@@ -13,6 +14,7 @@ use cms\model\BaseObject;
use cms\model\Language;
use cms\model\File;
use cms\model\Link;
+use util\exception\ValidationException;
use util\Html;
use util\Http;
use util\Session;
@@ -485,7 +487,7 @@ class ObjectAction extends BaseAction
public function propPost()
{
if ( ! $this->hasRequestVar('filename' ) )
- throw new \util\exception\ValidationException('filename');
+ throw new ValidationException('filename');
$this->baseObject->filename = BaseObject::urlify( $this->getRequestVar('filename') );
$this->baseObject->save();
@@ -517,19 +519,16 @@ class ObjectAction extends BaseAction
public function namePost()
{
if ( ! $this->hasRequestVar('name' ) )
- throw new \util\exception\ValidationException('name');
+ throw new ValidationException('name');
$name = $this->baseObject->getNameForLanguage( $this->getRequestId('languageid'));
- $language = new Language( $name->languageid );
- $language->load();
-
- $name->name = $this->getRequestVar( 'name' );
+ $name->name = $this->getRequestVar( 'name' );
$name->description = $this->getRequestVar( 'description' );
$name->save();
- $this->addNotice($this->baseObject->getType(), 0, $this->baseObject->filename, 'SAVED', 'ok');
+ $this->addNoticeFor($this->baseObject, Messages::SAVED);
}
@@ -559,14 +558,12 @@ class ObjectAction extends BaseAction
{
$name = $this->baseObject->getNameForLanguage( $this->getRequestId('languageid') );
- $nameProps = get_object_vars( $name );
+ $nameProps = $name->getProperties();
$language = new Language( $name->languageid );
$language->load();
- $nameProps[ 'languageName' ] = $language->name;
- $this->setTemplateVars($nameProps);
-
-
+ $nameProps[ 'languageName' ] = $language->name;
+ $this->setTemplateVars( $nameProps );
}
@@ -590,7 +587,7 @@ class ObjectAction extends BaseAction
}
catch( \Exception $e )
{
- throw new \util\exception\ValidationException( 'settings' );
+ throw new ValidationException( 'settings' );
}
// Gültigkeitszeiträume speichern.
@@ -640,17 +637,37 @@ class ObjectAction extends BaseAction
$this->setTemplateVar( 'name' , $this->baseObject->getDefaultName()->name );
$this->setTemplateVar( 'description' , $this->baseObject->getDefaultName()->description );
+ $languages = $this->baseObject->getProject()->getLanguages();
+ $languagesVars = array();
+
+ foreach( $languages as $languageId => $languageName )
+ {
+ $name = $this->baseObject->getNameForLanguage( $languageId );
+
+
+ $languagesVar = [
+ 'name' => $name->name,
+ 'description' => $name->description,
+ 'languagename' => $languageName,
+ 'languageid' => $languageId,
+ ];
+
+ $languagesVars[] = $languagesVar;
+ }
+
+ $this->setTemplateVar('languages',$languagesVars );
+
// Read all objects linking to us.
$pages = $this->baseObject->getDependentObjectIds();
$list = array();
- foreach( $pages as $id )
+ foreach( $pages as $languageid )
{
- $o = new BaseObject( $id );
+ $o = new BaseObject( $languageid );
$o->load();
- $list[$id] = array();
- $list[$id]['name'] = $o->filename;
- $list[$id]['type'] = $o->getType();
+ $list[$languageid] = array();
+ $list[$languageid]['name'] = $o->filename;
+ $list[$languageid]['type'] = $o->getType();
}
asort( $list );
@@ -665,4 +682,5 @@ class ObjectAction extends BaseAction
$this->setTemplateVar('settings', ArrayUtils::dryFlattenArray( $totalSettings,$pad ) );
}
+
}
\ No newline at end of file
diff --git a/modules/cms/action/PageAction.class.php b/modules/cms/action/PageAction.class.php
@@ -387,12 +387,13 @@ class PageAction extends ObjectAction
*/
function nameView()
{
- $this->page->load();
+ $languageId = $this->getRequestVar('languageid');
- $this->setTemplateVars( $this->page->getProperties() );
- $this->setTemplateVar( 'languageid', $this->page->languageid );
+ $name = $this->page->getNameForLanguage($languageId);
+
+ $this->setTemplateVars( $name->getProperties() );
- $alias = $this->page->getAliasForLanguage( $this->page->languageid );
+ $alias = $this->page->getAliasForLanguage( $languageId );
$this->setTemplateVar( 'alias_filename', $alias->filename );
$this->setTemplateVar( 'alias_folderid', $alias->parentid );
diff --git a/modules/cms/ui/themes/default/html/views/object/info.php b/modules/cms/ui/themes/default/html/views/object/info.php
@@ -37,6 +37,36 @@
</section>
</div>
</section>
+ <?php foreach((array)$languages as $list_key=>$list_value) { extract($list_value); ?>
+ <section class="<?php echo O::escapeHtml('or-group or-collapsible or-collapsible--is-open or-collapsible--show') ?>"><?php echo O::escapeHtml('') ?>
+ <h2 class="<?php echo O::escapeHtml('or-collapsible-title or-group-title or-collapsible-act-switch') ?>"><?php echo O::escapeHtml('') ?>
+ <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--node-closed or-collapsible--on-closed') ?>"><?php echo O::escapeHtml('') ?>
+ </i>
+ <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--node-open or-collapsible--on-open') ?>"><?php echo O::escapeHtml('') ?>
+ </i>
+ <span><?php echo O::escapeHtml(''.@$languagename.'') ?>
+ </span>
+ </h2>
+ <div class="<?php echo O::escapeHtml('or-collapsible-value or-group-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('name').'') ?>
+ </h3>
+ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
+ <span><?php echo O::escapeHtml(''.@$name.'') ?>
+ </span>
+ <small><?php echo O::escapeHtml(''.@$description.'') ?>
+ </small>
+ <div class="<?php echo O::escapeHtml('or-act-clickable') ?>"><?php echo O::escapeHtml('') ?>
+ <a target="<?php echo O::escapeHtml('_self') ?>" data-type="<?php echo O::escapeHtml('edit') ?>" data-action="<?php echo O::escapeHtml('object') ?>" data-method="<?php echo O::escapeHtml('name') ?>" data-id="<?php echo O::escapeHtml('') ?>" data-extra-languageid="<?php echo O::escapeHtml(''.@$languageid.'') ?>" data-extra="<?php echo O::escapeHtml('{\'languageid\':\''.@$languageid.'\'}') ?>" href="<?php echo O::escapeHtml('#/object') ?>" class="<?php echo O::escapeHtml('or-link or-btn') ?>"><?php echo O::escapeHtml('') ?>
+ <span><?php echo O::escapeHtml(''.@O::lang('edit').'') ?>
+ </span>
+ </a>
+ </div>
+ </div>
+ </section>
+ </div>
+ </section>
+ <?php } ?>
<section class="<?php echo O::escapeHtml('or-group or-collapsible or-collapsible--is-open or-collapsible--show') ?>"><?php echo O::escapeHtml('') ?>
<h2 class="<?php echo O::escapeHtml('or-collapsible-title or-group-title or-collapsible-act-switch') ?>"><?php echo O::escapeHtml('') ?>
<i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--node-closed or-collapsible--on-closed') ?>"><?php echo O::escapeHtml('') ?>
diff --git a/modules/cms/ui/themes/default/html/views/object/info.tpl.src.xml b/modules/cms/ui/themes/default/html/views/object/info.tpl.src.xml
@@ -15,6 +15,22 @@
<text value="${description}"/>
</fieldset>
</group>
+
+ <list list="${languages}" extract="true">
+ <group title="${languagename}">
+ <fieldset label="${message:name}">
+ <text value="${name}"/>
+ <text type="small" value="${description}"/>
+ <part class="act-clickable">
+ <link class="btn" type="edit" action="object" subaction="name" var1="languageid"
+ value1="${languageid}">
+ <text value="${message:edit}"/>
+ </link>
+ </part>
+ </fieldset>
+ </group>
+ </list>
+
<group title="${message:additional_info}">
<fieldset label="${message:full_filename}">
<text value="${full_filename}"/>
diff --git a/modules/cms/ui/themes/default/html/views/object/name.php b/modules/cms/ui/themes/default/html/views/object/name.php
@@ -8,13 +8,9 @@
<input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('subaction') ?>" value="<?php echo O::escapeHtml('name') ?>" /><?php echo O::escapeHtml('') ?>
<input type="<?php echo O::escapeHtml('hidden') ?>" name="<?php echo O::escapeHtml('id') ?>" value="<?php echo O::escapeHtml(''.@$_id.'') ?>" /><?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('') ?>
- <section class="<?php echo O::escapeHtml('or-group or-collapsible or-collapsible--is-open or-collapsible--show') ?>"><?php echo O::escapeHtml('') ?>
+ <section class="<?php echo O::escapeHtml('or-group or-collapsible--is-open or-collapsible--show') ?>"><?php echo O::escapeHtml('') ?>
<h2 class="<?php echo O::escapeHtml('or-collapsible-title or-group-title or-collapsible-act-switch') ?>"><?php echo O::escapeHtml('') ?>
- <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--node-closed or-collapsible--on-closed') ?>"><?php echo O::escapeHtml('') ?>
- </i>
- <i class="<?php echo O::escapeHtml('or-image-icon or-image-icon--node-open or-collapsible--on-open') ?>"><?php echo O::escapeHtml('') ?>
- </i>
- <span><?php echo O::escapeHtml(''.@O::lang('alias').'') ?>
+ <span><?php echo O::escapeHtml(''.@O::lang('language').' '.@$languagename.'') ?>
</span>
</h2>
<div class="<?php echo O::escapeHtml('or-collapsible-value or-group-value') ?>"><?php echo O::escapeHtml('') ?>
@@ -22,18 +18,14 @@
<h3 class="<?php echo O::escapeHtml('or-fieldset-label') ?>"><?php echo O::escapeHtml(''.@O::lang('name').'') ?>
</h3>
<div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
- <label class="<?php echo O::escapeHtml('or-form-row or-form-input') ?>"><?php echo O::escapeHtml('') ?>
- <span class="<?php echo O::escapeHtml('or-form-label') ?>"><?php echo O::escapeHtml('name') ?>
- </span>
- <input name="<?php echo O::escapeHtml('name') ?>" required="<?php echo O::escapeHtml('required') ?>" type="<?php echo O::escapeHtml('text') ?>" maxlength="<?php echo O::escapeHtml('255') ?>" value="<?php echo O::escapeHtml(''.@$name.'') ?>" class="<?php echo O::escapeHtml('or-input') ?>" /><?php echo O::escapeHtml('') ?>
- </label>
+ <input name="<?php echo O::escapeHtml('name') ?>" required="<?php echo O::escapeHtml('required') ?>" type="<?php echo O::escapeHtml('text') ?>" maxlength="<?php echo O::escapeHtml('255') ?>" value="<?php echo O::escapeHtml(''.@$name.'') ?>" class="<?php echo O::escapeHtml('or-input') ?>" /><?php echo O::escapeHtml('') ?>
</div>
</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('description').'') ?>
</h3>
<div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
- <textarea name="<?php echo O::escapeHtml('description') ?>" maxlength="<?php echo O::escapeHtml('255') ?>" class="<?php echo O::escapeHtml('or-input or-description') ?>"><?php echo O::escapeHtml(''.@$description.'') ?>
+ <textarea name="<?php echo O::escapeHtml('description') ?>" maxlength="<?php echo O::escapeHtml('255') ?>" class="<?php echo O::escapeHtml('or-input or-input--description') ?>"><?php echo O::escapeHtml(''.@$description.'') ?>
</textarea>
</div>
</section>
diff --git a/modules/cms/ui/themes/default/html/views/object/name.tpl.src.xml b/modules/cms/ui/themes/default/html/views/object/name.tpl.src.xml
@@ -2,12 +2,12 @@
xsi:schemaLocation="http://www.openrat.de/template ../../../../../../../template_engine/components/template.xsd">
<form label="${message:save}">
<hidden name="languageid"/>
- <group title="${message:alias}" open="true">
+ <group title="${message:language} ${languagename}" collapsible="false">
<fieldset label="${message:name}">
- <input label="name" name="name" maxlength="255" required="true"/>
+ <input name="name" maxlength="255" required="true"/>
</fieldset>
<fieldset label="${message:description}">
- <inputarea name="description" class="description" maxlength="255"/>
+ <inputarea name="description" class="input--description" maxlength="255"/>
</fieldset>
</group>
</form>
diff --git a/modules/cms/ui/themes/default/html/views/page/info.php b/modules/cms/ui/themes/default/html/views/page/info.php
@@ -82,30 +82,30 @@
</span>
</h2>
<div class="<?php echo O::escapeHtml('or-collapsible-value or-group-value') ?>"><?php echo O::escapeHtml('') ?>
- <label class="<?php echo O::escapeHtml('or-form-row') ?>"><?php echo O::escapeHtml('') ?>
- <span class="<?php echo O::escapeHtml('or-form-input') ?>"><?php echo O::escapeHtml('') ?>
- </span>
- <span class="<?php echo O::escapeHtml('or-form-label') ?>"><?php echo O::escapeHtml(''.@O::lang('name').'') ?>
- </span>
- </label>
- <label class="<?php echo O::escapeHtml('or-form-row') ?>"><?php echo O::escapeHtml('') ?>
- <span class="<?php echo O::escapeHtml('or-form-input') ?>"><?php echo O::escapeHtml('') ?>
- </span>
- <span class="<?php echo O::escapeHtml('or-form-label') ?>"><?php echo O::escapeHtml(''.@O::lang('description').'') ?>
- </span>
- </label>
- <label class="<?php echo O::escapeHtml('or-form-row') ?>"><?php echo O::escapeHtml('') ?>
- <span class="<?php echo O::escapeHtml('or-form-input') ?>"><?php echo O::escapeHtml('') ?>
- </span>
- <span class="<?php echo O::escapeHtml('or-form-label') ?>"><?php echo O::escapeHtml(''.@O::lang('alias').'') ?>
- </span>
- </label>
- <div class="<?php echo O::escapeHtml('or-act-clickable') ?>"><?php echo O::escapeHtml('') ?>
- <a target="<?php echo O::escapeHtml('_self') ?>" data-type="<?php echo O::escapeHtml('edit') ?>" data-action="<?php echo O::escapeHtml('page') ?>" data-method="<?php echo O::escapeHtml('name') ?>" data-id="<?php echo O::escapeHtml('') ?>" data-extra-languageid="<?php echo O::escapeHtml(''.@$languageid.'') ?>" data-extra="<?php echo O::escapeHtml('{\'languageid\':\''.@$languageid.'\'}') ?>" href="<?php echo O::escapeHtml('#/page') ?>" class="<?php echo O::escapeHtml('or-link or-btn') ?>"><?php echo O::escapeHtml('') ?>
- <span><?php echo O::escapeHtml(''.@O::lang('edit').'') ?>
+ <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('name').'') ?>
+ </h3>
+ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
+ <span><?php echo O::escapeHtml(''.@$name.'') ?>
</span>
- </a>
- </div>
+ <small><?php echo O::escapeHtml(''.@$description.'') ?>
+ </small>
+ </div>
+ </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('alias').'') ?>
+ </h3>
+ <div class="<?php echo O::escapeHtml('or-fieldset-value') ?>"><?php echo O::escapeHtml('') ?>
+ <span><?php echo O::escapeHtml(''.@$alias.'') ?>
+ </span>
+ <div class="<?php echo O::escapeHtml('or-act-clickable') ?>"><?php echo O::escapeHtml('') ?>
+ <a target="<?php echo O::escapeHtml('_self') ?>" data-type="<?php echo O::escapeHtml('edit') ?>" data-action="<?php echo O::escapeHtml('page') ?>" data-method="<?php echo O::escapeHtml('name') ?>" data-id="<?php echo O::escapeHtml('') ?>" data-extra-languageid="<?php echo O::escapeHtml(''.@$languageid.'') ?>" data-extra="<?php echo O::escapeHtml('{\'languageid\':\''.@$languageid.'\'}') ?>" href="<?php echo O::escapeHtml('#/page') ?>" class="<?php echo O::escapeHtml('or-link or-btn') ?>"><?php echo O::escapeHtml('') ?>
+ <span><?php echo O::escapeHtml(''.@O::lang('edit').'') ?>
+ </span>
+ </a>
+ </div>
+ </div>
+ </section>
</div>
</section>
<?php } ?>
diff --git a/modules/cms/ui/themes/default/html/views/page/info.tpl.src.xml b/modules/cms/ui/themes/default/html/views/page/info.tpl.src.xml
@@ -39,15 +39,19 @@
</group>
<list list="${languages}" extract="true">
<group title="${languagename}">
- <text label="name" value="${name}"/>
- <text label="description" value="${description}"/>
- <text label="alias" value="${alias}"/>
- <part class="act-clickable">
- <link class="btn" type="edit" action="page" subaction="name" var1="languageid"
- value1="${languageid}">
- <text value="${message:edit}"/>
- </link>
- </part>
+ <fieldset label="${message:name}">
+ <text value="${name}"/>
+ <text type="small" value="${description}"/>
+ </fieldset>
+ <fieldset label="${message:alias}">
+ <text value="${alias}"/>
+ <part class="act-clickable">
+ <link class="btn" type="edit" action="page" subaction="name" var1="languageid"
+ value1="${languageid}">
+ <text value="${message:edit}"/>
+ </link>
+ </part>
+ </fieldset>
</group>
</list>
<group title="${message:additional_info}" open="false">
diff --git a/modules/template_engine/components/html/component_text/TextComponent.class.php b/modules/template_engine/components/html/component_text/TextComponent.class.php
@@ -48,6 +48,9 @@ class TextComponent extends HtmlComponent
case 'code':
$tag = 'code';
break;
+ case 'small':
+ $tag = 'small';
+ break;
default:
$tag = 'span';
}