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:
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