openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

commit 8430e6fd36d8ec139c78ae25d5a3efb33224a22d
parent 38b38164323f0089f639e1de498411131b51b3b2
Author: Jan Dankert <devnull@localhost>
Date:   Wed, 28 Nov 2018 22:46:04 +0100

Beim Anlegen von Objekten eine schöne Slug-URL erzeugen.

Diffstat:
modules/cms-core/action/FolderAction.class.php | 38++++++++++++++++++++------------------
modules/cms-core/model/BaseObject.class.php | 68++++++++++++++++++++++++++++++++++++++++++++++++++------------------
modules/cms-core/model/Folder.class.php | 11+++++------
modules/cms-ui/themes/default/html/views/folder/createfile.php | 2+-
modules/cms-ui/themes/default/html/views/page/prop.php | 32--------------------------------
5 files changed, 76 insertions(+), 75 deletions(-)

diff --git a/modules/cms-core/action/FolderAction.class.php b/modules/cms-core/action/FolderAction.class.php @@ -71,6 +71,8 @@ class FolderAction extends ObjectAction $f->parentid = $this->folder->objectid; $f->add(); + $f->setNameForAllLanguages( $name,$description ); + $this->addNotice('folder',$f->name,'ADDED','ok'); // Die neue Folder-Id (wichtig für API-Aufrufe). @@ -113,7 +115,7 @@ class FolderAction extends ObjectAction } $file->desc = $description; - $file->filename = basename($url); + $file->filename = BaseObject::urlify( $name ); $file->name = !empty($name)?$name:basename($url); $file->size = strlen($http->body); $file->value = $http->body; @@ -126,7 +128,7 @@ class FolderAction extends ObjectAction if ( $upload->isValid() ) { $file->desc = $description; - $file->filename = $upload->filename; + $file->filename = BaseObject::urlify( $upload->filename ); $file->name = !empty($name)?$name:$upload->filename; $file->extension = $upload->extension; $file->size = $upload->size; @@ -156,6 +158,8 @@ class FolderAction extends ObjectAction } $file->add(); // Datei hinzufuegen + $file->setNameForAllLanguages( $name,$description ); + $this->addNotice('file',$file->name,'ADDED','ok'); $this->setTemplateVar('objectid',$file->objectid); @@ -190,7 +194,7 @@ class FolderAction extends ObjectAction } $image->desc = $description; - $image->filename = basename($url); + $image->filename = BaseObject::urlify( basename($url) ); $image->name = !empty($name)?$name:basename($url); $image->size = strlen($http->body); $image->value = $http->body; @@ -203,7 +207,7 @@ class FolderAction extends ObjectAction if ( $upload->isValid() ) { $image->desc = $description; - $image->filename = $upload->filename; + $image->filename = BaseObject::urlify( $upload->filename ); $image->name = !empty($name)?$name:$upload->filename; $image->extension = $upload->extension; $image->size = $upload->size; @@ -216,9 +220,7 @@ class FolderAction extends ObjectAction { if ( $this->hasRequestVar('name') ) { - $image->name = $this->getRequestVar('name'); - $image->desc = $this->getRequestVar('description'); - $image->filename = $this->getRequestVar('filename', OR_FILTER_FILENAME); + $image->filename = BaseObject::urlify( $name ); $image->parentid = $this->folder->objectid; } else @@ -233,6 +235,7 @@ class FolderAction extends ObjectAction $image->add(); // Datei hinzufuegen $this->addNotice('file',$image->name,'ADDED','ok'); + $image->setNameForAllLanguages( $name,$description ); $this->setTemplateVar('objectid',$image->objectid); $this->folder->setTimestamp(); @@ -266,7 +269,7 @@ class FolderAction extends ObjectAction } $text->desc = $description; - $text->filename = basename($url); + $text->filename = BaseObject::urlify( basename($url) ); $text->name = !empty($name)?$name:basename($url); $text->size = strlen($http->body); $text->value = $http->body; @@ -280,7 +283,7 @@ class FolderAction extends ObjectAction if ( $upload->isValid() ) { $text->desc = $description; - $text->filename = $upload->filename; + $text->filename = BaseObject::urlify( $upload->filename ); $text->name = !empty($name)?$name:$upload->filename; $text->extension = $upload->extension; $text->size = $upload->size; @@ -295,7 +298,7 @@ class FolderAction extends ObjectAction { $text->name = $this->getRequestVar('name'); $text->desc = $this->getRequestVar('description'); - $text->filename = $this->getRequestVar('filename', OR_FILTER_FILENAME); + $text->filename = BaseObject::urlify( $name ); $text->parentid = $this->folder->objectid; } else @@ -309,6 +312,7 @@ class FolderAction extends ObjectAction } $text->add(); // Datei hinzufuegen + $text->setNameForAllLanguages( $name,$description ); $this->addNotice('file',$text->name,'ADDED','ok'); $this->setTemplateVar('objectid',$text->objectid); @@ -320,21 +324,19 @@ class FolderAction extends ObjectAction public function createlinkPost() { $name = $this->getRequestVar('name' ); - $filename = $this->getRequestVar('filename' ); $description = $this->getRequestVar('description'); if ( !empty($name) ) { $link = new Link(); - $link->filename = $filename; - $link->name = $name; - $link->desc = $description; + $link->filename = BaseObject::urlify( $name ); $link->parentid = $this->folder->objectid; $link->linkedObjectId = $this->getRequestVar('targetobjectid'); $link->projectid = $this->folder->projectid; $link->add(); + $link->setNameForAllLanguages( $name,$description ); $this->addNotice('link',$link->name,'ADDED','ok'); $this->setTemplateVar('objectid',$link->objectid); @@ -358,15 +360,14 @@ class FolderAction extends ObjectAction if ( !empty($name) ) { $url = new Url(); - $url->filename = $filename; - $url->name = $name; - $url->desc = $description; + $url->filename = BaseObject::urlify( $name ); $url->parentid = $this->folder->objectid; $url->projectid = $this->folder->projectid; $url->url = $this->getRequestVar('url'); $url->add(); + $url->setNameForAllLanguages( $name,$description ); $this->addNotice('url',$url->name,'ADDED','ok'); $this->setTemplateVar('objectid',$url->objectid); @@ -395,13 +396,14 @@ class FolderAction extends ObjectAction $page = new Page(); $page->name = $name; $page->desc = $description; - $page->filename = $filename; + $page->filename = BaseObject::urlify( $name ); $page->templateid = $this->getRequestVar('templateid'); $page->parentid = $this->folder->objectid; $page->projectid = $this->folder->projectid; $page->add(); + $page->setNameForAllLanguages( $name,$description ); $this->addNotice('page',$page->name,'ADDED','ok'); $this->setTemplateVar('objectid',$page->objectid); diff --git a/modules/cms-core/model/BaseObject.class.php b/modules/cms-core/model/BaseObject.class.php @@ -30,37 +30,44 @@ namespace cms\model { * @see #$objectid * @type Integer */ - var $id; + public $id; /** eindeutige ID dieses Objektes * @type Integer */ - var $objectid; + public $objectid; /** Objekt-ID des Ordners, in dem sich dieses Objekt befindet * Kann "null" oder "0" sein, wenn es sich um den Wurzelordner des Projektes handelt * @see #$isRoot * @type Integer */ - var $parentid; + public $parentid; /** Physikalischer Dateiname des Objektes (bei Links nicht gef?llt) * <em>enth?lt nicht die Dateinamen-Erweiterung</em> * @type String */ - var $filename = ''; + public $filename = ''; /** Logischer (sprachabhaengiger) Name des Objektes * (wird in Tabelle <code>name</code> abgelegt) * @type String + * @deprecated use modelclass Name instead */ var $name = ''; /** Logische (sprachabhaengige) Beschreibung des Objektes * (wird in Tabelle <code>name</code> abgelegt) * @type String + * @deprecated use modelclass Name instead */ var $description = 'none'; + + /** + * @var string + * @deprecated + */ var $desc = ''; /** Zeitpunkt der Erstellung. Die Variable beinhaltet den Unix-Timestamp. @@ -955,28 +962,28 @@ SQL if ( empty($this->filename) ) $this->filename = $this->objectid; -// $this->filename = trim(strtolower($this->filename)); - -// $this->filename = $this->goodFilename( $this->filename); - - if ( $this->isRoot ) + if ( $this->isRoot ) // Beim Root-Ordner ist es egal, es gibt nur einen. return; if ( !$this->filenameIsUnique( $this->filename ) ) { -// $this->filename = $this->objectid; -// -// if ( !$this->filenameIsUnique( $this->filename ) ) - $this->filename = $this->filename.'.'.md5(microtime()); + // Append some string to filename. + $this->filename = $this->filename.'-'.base_convert(time(), 10, 36); } } + /** + * Stellt fest, dass der Dateiname im aktuellen Ordner kein weiteres Mal vorkommt. + * Dies muss vor dem Speichern geprüft werden, ansonsten erfolgt eine Index-Verletzung + * und der Datensatz kann nicht gespeichert werde. + * + * @param $filename + * @return bool + */ private function filenameIsUnique( $filename ) { - $db = db_connection(); - - $sql = $db->sql( <<<SQL + $sql = db()->sql( <<<SQL SELECT COUNT(*) FROM {{object}} WHERE parentid={parentid} AND filename={filename} AND NOT id = {objectid} @@ -1436,9 +1443,34 @@ SQL return $names; } + + + /** + * Speichert Namen und Beschreibung für alle Sprachen. Das ist bei der Neuanlage von Objekten ganz praktisch. + * + * @param $nam + * @param $description + */ + public function setNameForAllLanguages($nam, $description) + { + foreach( $this->getProject()->getLanguages() as $languageId=>$languageName ) + { + $name = new Name(); + $name->objectid = $this->objectid; + $name->languageid = $languageId; + $name->load(); + + $name->name = $nam; + $name->description = $description; + + $name->save(); + } + + } + } -}?>- \ No newline at end of file +}+ \ No newline at end of file diff --git a/modules/cms-core/model/Folder.class.php b/modules/cms-core/model/Folder.class.php @@ -27,13 +27,11 @@ namespace cms\model; */ class Folder extends BaseObject { - var $folderid; - var $projectid; + public $folderid; + var $subfolders = array(); var $filenames = true; - var $name = ''; - var $filename = ''; - var $desc = ''; + /** * @var \Publish */ @@ -750,7 +748,8 @@ SQL return $sql->getAll(); } - + + } diff --git a/modules/cms-ui/themes/default/html/views/folder/createfile.php b/modules/cms-ui/themes/default/html/views/folder/createfile.php @@ -13,7 +13,7 @@ </label> </div> <div class="input"> - <input size="40" id="req1543349803731534526_file" type="file" maxlength="<?php echo $maxlength ?>" name="file" class="upload" multiple="multiple" /> + <input size="40" id="req154344041025418490_file" type="file" maxlength="<?php echo $maxlength ?>" name="file" class="upload" multiple="multiple" /> </div> </div> diff --git a/modules/cms-ui/themes/default/html/views/page/prop.php b/modules/cms-ui/themes/default/html/views/page/prop.php @@ -39,37 +39,5 @@ </div> </div> - - <fieldset class="toggle-open-close<?php echo '1'?" open":" closed" ?><?php echo '1'?" show":"" ?>"><legend class="on-click-open-close"><div class="arrow arrow-right on-closed"></div><div class="arrow arrow-down on-open"></div><?php echo lang('validity') ?></legend><div> - <div class="line"> - <div class="label"> - <label for="<?php echo REQUEST_ID ?>_validity_from_date" class="label"> - <span class="text"><?php echo nl2br(encodeHtml(htmlentities(lang(''.'from'.'')))); ?></span> - - </label> - </div> - <div class="input"> - <div class="inputholder"><input id="<?php echo REQUEST_ID ?>_valid_from_date" name="<?php if ('') echo ''.'_' ?>valid_from_date<?php if ('') echo '_disabled' ?>" type="date" maxlength="256" class="" value="<?php echo Text::encodeHtml(@$valid_from_date) ?>" /><?php if ('') { ?><input type="hidden" name="valid_from_date" value="<?php $valid_from_date ?>"/><?php } ?></div> - - <div class="inputholder"><input id="<?php echo REQUEST_ID ?>_valid_from_time" name="<?php if ('') echo ''.'_' ?>valid_from_time<?php if ('') echo '_disabled' ?>" type="time" maxlength="256" class="" value="<?php echo Text::encodeHtml(@$valid_from_time) ?>" /><?php if ('') { ?><input type="hidden" name="valid_from_time" value="<?php $valid_from_time ?>"/><?php } ?></div> - - </div> - </div> - <div class="line"> - <div class="label"> - <label for="<?php echo REQUEST_ID ?>_validity_until_date" class="label"> - <span class="text"><?php echo nl2br(encodeHtml(htmlentities(lang(''.'until'.'')))); ?></span> - - </label> - </div> - <div class="input"> - <div class="inputholder"><input id="<?php echo REQUEST_ID ?>_valid_until_date" name="<?php if ('') echo ''.'_' ?>valid_until_date<?php if ('') echo '_disabled' ?>" type="date" maxlength="256" class="" value="<?php echo Text::encodeHtml(@$valid_until_date) ?>" /><?php if ('') { ?><input type="hidden" name="valid_until_date" value="<?php $valid_until_date ?>"/><?php } ?></div> - - <div class="inputholder"><input id="<?php echo REQUEST_ID ?>_valid_until_time" name="<?php if ('') echo ''.'_' ?>valid_until_time<?php if ('') echo '_disabled' ?>" type="time" maxlength="256" class="" value="<?php echo Text::encodeHtml(@$valid_until_time) ?>" /><?php if ('') { ?><input type="hidden" name="valid_until_time" value="<?php $valid_until_time ?>"/><?php } ?></div> - - </div> - </div> - </div></fieldset> - <div class="or-form-actionbar"><input type="submit" class="or-form-btn or-form-btn--primary" value="OK" /></div></form> \ No newline at end of file