openrat-cms

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

commit 10390f437985260b4c24c26aa05ab30febc02efa
parent 058bcf586ea300ebbda1695cbf3261f1f210e417
Author: dankert <openrat@jandankert.de>
Date:   Sun,  5 Dec 2021 20:33:24 +0100

Cleanup: Removed unusable properties from class 'Value' and 'BaseObject'.

Diffstat:
Mmodules/cms/action/FileAction.class.php | 1-
Mmodules/cms/action/FolderAction.class.php | 1-
Mmodules/cms/action/ImageAction.class.php | 3+++
Mmodules/cms/action/PageelementAction.class.php | 8++++----
Mmodules/cms/action/SearchAction.class.php | 8++++----
Mmodules/cms/action/element/ElementAdvancedAction.class.php | 2+-
Mmodules/cms/action/file/FileCompressAction.class.php | 4++--
Mmodules/cms/action/file/FileExtractAction.class.php | 9++-------
Mmodules/cms/action/file/FileShowAction.class.php | 2+-
Mmodules/cms/action/file/FileUncompressAction.class.php | 3+--
Mmodules/cms/action/folder/FolderAdvancedAction.class.php | 27+++++++++++++--------------
Mmodules/cms/action/folder/FolderCreatefileAction.class.php | 6+-----
Mmodules/cms/action/folder/FolderCreatefolderAction.class.php | 4----
Mmodules/cms/action/folder/FolderCreateimageAction.class.php | 4----
Mmodules/cms/action/folder/FolderEditAction.class.php | 8++++----
Mmodules/cms/action/folder/FolderOrderAction.class.php | 2+-
Mmodules/cms/action/folder/FolderRootAction.class.php | 2+-
Mmodules/cms/action/folder/FolderShowAction.class.php | 2+-
Mmodules/cms/action/group/GroupRightsAction.class.php | 2+-
Mmodules/cms/action/image/ImageSizeAction.class.php | 8++++----
Mmodules/cms/action/link/LinkShowAction.class.php | 2+-
Mmodules/cms/action/object/ObjectCopyAction.class.php | 29++++++++++++++---------------
Mmodules/cms/action/page/PageAllAction.class.php | 4++--
Mmodules/cms/action/page/PageEditAction.class.php | 2+-
Mmodules/cms/action/page/PageInfoAction.class.php | 1-
Mmodules/cms/action/page/PageShowAction.class.php | 10++++++----
Mmodules/cms/action/pageelement/PageelementLinkAction.class.php | 10+++++-----
Mmodules/cms/action/url/UrlShowAction.class.php | 2+-
Mmodules/cms/action/user/UserRightsAction.class.php | 2+-
Mmodules/cms/generator/PageGenerator.class.php | 2+-
Mmodules/cms/generator/ValueGenerator.class.php | 8++++----
Mmodules/cms/macros/MacroRunner.class.php | 2+-
Mmodules/cms/macros/macro/Album.class.php | 4++--
Mmodules/cms/macros/macro/Atom.class.php | 9++++-----
Mmodules/cms/macros/macro/BlockMenu.class.php | 8+++-----
Mmodules/cms/macros/macro/BreadCrumb.class.php | 7+++----
Mmodules/cms/macros/macro/ClassicMenu.class.php | 1-
Mmodules/cms/macros/macro/CommonMenu.class.php | 12+++++++-----
Mmodules/cms/macros/macro/LanguageLinksForPage.class.php | 3---
Mmodules/cms/macros/macro/Link.class.php | 4++--
Mmodules/cms/macros/macro/ListMenu.class.php | 8+++-----
Mmodules/cms/macros/macro/MainMenu.class.php | 3+--
Mmodules/cms/macros/macro/PagesNavigation.class.php | 2+-
Mmodules/cms/macros/macro/RSSCreate.class.php | 12+++++++-----
Mmodules/cms/macros/macro/SearchIndex.class.php | 2+-
Mmodules/cms/macros/macro/Sitemap.class.php | 7+++----
Mmodules/cms/macros/macro/TagCloud.class.php | 4++--
Mmodules/cms/macros/macro/TagList.class.php | 2+-
Mmodules/cms/macros/macro/TeaserList.class.php | 6+++---
Mmodules/cms/model/BaseObject.class.php | 519+++++++++++++++++++++++++++++++++++++------------------------------------------
Mmodules/cms/model/Content.class.php | 2+-
Mmodules/cms/model/Folder.class.php | 87+++++++++++--------------------------------------------------------------------
Mmodules/cms/model/Page.class.php | 137+++++++++++++++----------------------------------------------------------------
Mmodules/cms/model/Project.class.php | 33++++++++++++++++++++++-----------
Mmodules/cms/model/User.class.php | 217++++++++++++++++++++++++++++++++++++-------------------------------------------
Mmodules/cms/model/Value.class.php | 96++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Mmodules/cms/ui/action/title/TitleHistoryAction.class.php | 9+++++----
Mmodules/cms/ui/action/title/TitleShowAction.class.php | 1-
Mmodules/util/Macro.class.php | 4++++
Mmodules/util/Tree.class.php | 26++++++++++++++------------
Mmodules/wikiparser/renderer/HtmlRenderer.class.php | 7+++----
61 files changed, 607 insertions(+), 805 deletions(-)

diff --git a/modules/cms/action/FileAction.class.php b/modules/cms/action/FileAction.class.php @@ -57,7 +57,6 @@ class FileAction extends ObjectAction public function init() { $file = new File( $this->request->getId() ); - $file->languageid = $this->request->getLanguageId(); $file->load(); $this->setBaseObject( $file ); diff --git a/modules/cms/action/FolderAction.class.php b/modules/cms/action/FolderAction.class.php @@ -51,7 +51,6 @@ class FolderAction extends ObjectAction public function init() { $folder = new Folder( $this->request->getId() ); - $folder->languageid = $this->request->getLanguageId(); // FIXME $folder->load(); $this->lastModified( $folder->lastchangeDate); diff --git a/modules/cms/action/ImageAction.class.php b/modules/cms/action/ImageAction.class.php @@ -14,6 +14,9 @@ use util\Html; */ class ImageAction extends FileAction { + /** + * @var Image + */ protected $image; /** diff --git a/modules/cms/action/PageelementAction.class.php b/modules/cms/action/PageelementAction.class.php @@ -179,7 +179,7 @@ class PageelementAction extends BaseAction $this->setTemplateVar('rootfolderid',$project->getRootObjectId() ); // Ermitteln, welche Objekttypen verlinkt werden d�rfen. - $type = $this->value->element->subtype; + $type = $this->velement->subtype; if ( substr($type,0,5) == 'image' ) $type = 'file'; @@ -212,7 +212,7 @@ class PageelementAction extends BaseAction */ protected function editSelect() { - $this->setTemplateVar( 'items',$this->value->element->getSelectItems() ); + $this->setTemplateVar( 'items',$this->element->getSelectItems() ); $this->setTemplateVar( 'text' ,$this->value->text ); } @@ -280,7 +280,7 @@ class PageelementAction extends BaseAction */ protected function editNumber() { - $this->setTemplateVar('number',$this->value->number / pow(10,$this->value->element->decimals) ); + $this->setTemplateVar('number',$this->value->number / pow(10,$this->element->decimals) ); } @@ -537,7 +537,7 @@ class PageelementAction extends BaseAction if ( $this->request->has('linkobjectid') ) $value->linkToObjectId = $this->request->getText('linkobjectid'); else - $value->number = $this->request->getText('number') * pow(10,$value->element->decimals); + $value->number = $this->request->getText('number') * pow(10,$this->element->decimals); $this->afterSave($value); } diff --git a/modules/cms/action/SearchAction.class.php b/modules/cms/action/SearchAction.class.php @@ -94,7 +94,7 @@ class SearchAction extends BaseAction $userResult = array( 'url' => '', 'type' => 'user', 'id' => $user->userid, - 'name' => $user->name, + 'name' => $user->fullname, 'desc' => $user->desc, 'lastchange_date' => 0 ); $resultList[] = $userResult; @@ -114,7 +114,7 @@ class SearchAction extends BaseAction $userResult = array('url' => '', 'type' => 'user', 'id' => $user->userid, - 'name' => $user->name, + 'name' => $user->fullname, 'desc' => $user->desc, 'lastchange_date' => 0); $resultList[] = $userResult; @@ -166,9 +166,9 @@ class SearchAction extends BaseAction $resultList[] = array( 'id' => $objectid, 'type' => $o->getType(), - 'name' => $o->name, + 'name' => $o->filename, 'lastchange_date' => $o->lastchangeDate, - 'desc' => $o->desc + 'desc' => '' ); } diff --git a/modules/cms/action/element/ElementAdvancedAction.class.php b/modules/cms/action/element/ElementAdvancedAction.class.php @@ -379,7 +379,7 @@ class ElementAdvancedAction extends ElementAction implements Method { $objects[ $id ] = \cms\base\Language::lang( $o->getType() ).': '; - if ( !$o->isRoot ) + if ( !$o->isRoot() ) { $f = new Folder( $o->parentid ); $f->load(); diff --git a/modules/cms/action/file/FileCompressAction.class.php b/modules/cms/action/file/FileCompressAction.class.php @@ -36,11 +36,11 @@ class FileCompressAction extends FileAction implements Method { else { $newFile = new File(); - $newFile->name = $this->file->name; $newFile->parentid = $this->file->parentid; $newFile->value = gzencode( $this->file->loadValue(),1 ); $newFile->parse_filename( $this->file->filename.'.'.$this->file->extension.'.gz',FORCE_GZIP ); $newFile->persist(); + $newFile->copyNamesFrom( $this->file->objectid ); } break; @@ -57,11 +57,11 @@ class FileCompressAction extends FileAction implements Method { else { $newFile = new File(); - $newFile->name = $this->file->name; $newFile->parentid = $this->file->parentid; $newFile->value = bzcompress( $this->file->loadValue() ); $newFile->parse_filename( $this->file->filename.'.'.$this->file->extension.'.bz2' ); $newFile->persist(); + $newFile->copyNamesFrom( $this->file->objectid ); } break; diff --git a/modules/cms/action/file/FileExtractAction.class.php b/modules/cms/action/file/FileExtractAction.class.php @@ -21,7 +21,6 @@ class FileExtractAction extends FileAction implements Method { case 'tar': $folder = new Folder(); $folder->parentid = $this->file->parentid; - $folder->name = $this->file->name; $folder->filename = $this->file->filename; $folder->persist(); @@ -31,7 +30,6 @@ class FileExtractAction extends FileAction implements Method { foreach( $tar->files as $file ) { $newFile = new File(); - $newFile->name = $file['name']; $newFile->parentid = $folder->objectid; $newFile->value = $file['file']; $newFile->parse_filename( $file['name'] ); @@ -49,9 +47,7 @@ class FileExtractAction extends FileAction implements Method { $folder = new Folder(); $folder->parentid = $this->file->parentid; - $folder->name = $this->file->name; $folder->filename = $this->file->filename; - $folder->description = $this->file->fullFilename; $folder->persist(); $zip = new ArchiveUnzip(); @@ -63,13 +59,12 @@ class FileExtractAction extends FileAction implements Method { $newFile = new File(); - $newFile->name = basename($fileName); - $newFile->description = 'Extracted: '.$this->file->fullFilename.' -> '.$fileName; $newFile->parentid = $folder->objectid; $newFile->parse_filename( basename($fileName) ); $newFile->value = $zip->unzip($fileName); $newFile->persist(); + $newFile->copyNamesFrom( $this->file->objectid ); $this->addNoticeFor( $newFile, Messages::ADDED); unset($newFile); @@ -81,7 +76,7 @@ class FileExtractAction extends FileAction implements Method { break; default: - throw new \util\exception\UIException([]'cannot extract file with extension: ' . $this->file->extension); + throw new \util\exception\UIException('cannot extract file with extension: ' . $this->file->extension); } } } diff --git a/modules/cms/action/file/FileShowAction.class.php b/modules/cms/action/file/FileShowAction.class.php @@ -40,7 +40,7 @@ class FileShowAction extends FileAction implements Method { } header('X-File-Id: ' .$this->file->fileid ); - header('X-Id: ' .$this->file->id ); + header('X-Id: ' .$this->file->objectid ); // Angabe Content-Disposition // - Bild soll "inline" gezeigt werden diff --git a/modules/cms/action/file/FileUncompressAction.class.php b/modules/cms/action/file/FileUncompressAction.class.php @@ -35,7 +35,6 @@ class FileUncompressAction extends FileAction implements Method { else { $newFile = new File(); - $newFile->name = $this->file->name; $newFile->parentid = $this->file->parentid; $newFile->value = gzinflate( substr($this->file->loadValue(),10)); $newFile->parse_filename( $this->file->filename ); @@ -55,11 +54,11 @@ class FileUncompressAction extends FileAction implements Method { else { $newFile = new File(); - $newFile->name = $this->file->name; $newFile->parentid = $this->file->parentid; $newFile->value = bzdecompress( $this->file->loadValue() ); $newFile->parse_filename( $this->file->filename ); $newFile->persist(); + $newFile->copyNamesFrom( $this->file->objectid); } break; diff --git a/modules/cms/action/folder/FolderAdvancedAction.class.php b/modules/cms/action/folder/FolderAdvancedAction.class.php @@ -35,9 +35,9 @@ class FolderAdvancedAction extends FolderAction implements Method { { $list[$id]['objectid'] = $id; $list[$id]['id' ] = 'obj'.$id; - $list[$id]['name' ] = $o->name; + $list[$id]['name' ] = $o->getDefaultName()->name; $list[$id]['filename'] = $o->filename; - $list[$id]['desc' ] = $o->desc; + $list[$id]['desc' ] = $o->getDefaultName()->description; if ( $list[$id]['desc'] == '' ) $list[$id]['desc'] = \cms\base\Language::lang('NO_DESCRIPTION_AVAILABLE'); $list[$id]['desc'] = 'ID '.$id.' - '.$list[$id]['desc']; @@ -71,7 +71,7 @@ class FolderAdvancedAction extends FolderAction implements Method { $this->setTemplateVar('folder',$otherfolder); // URLs zum Umsortieren der Eintraege - $this->setTemplateVar('order_url' ,Html::url('folder','order',$this->folder->id) ); + $this->setTemplateVar('order_url' ,Html::url('folder','order',$this->folder->objectid) ); } $actionList = array(); @@ -89,15 +89,15 @@ class FolderAdvancedAction extends FolderAction implements Method { $this->setTemplateVar('defaulttype',$this->request->getAlphanum('type')); $this->setTemplateVar('object' ,$list ); - $this->setTemplateVar('act_objectid',$this->folder->id); + $this->setTemplateVar('act_objectid',$this->folder->objectid); $project = new Project($this->folder->projectid); $rootFolder = new Folder( $project->getRootObjectId() ); $rootFolder->load(); $this->setTemplateVar('properties' ,$this->folder->getProperties() ); - $this->setTemplateVar('rootfolderid' ,$rootFolder->id ); - $this->setTemplateVar('rootfoldername',$rootFolder->name); + $this->setTemplateVar('rootfolderid' ,$rootFolder->objectid ); + $this->setTemplateVar('rootfoldername',$rootFolder->filename ); } @@ -198,7 +198,6 @@ class FolderAdvancedAction extends FolderAction implements Method { // TAR speichern. $tarFile = new File(); - $tarFile->name = \cms\base\Language::lang('ARCHIVE').' '.$this->request->getText('filename'); $tarFile->filename = $this->request->getText('filename'); $tarFile->extension = 'tar'; $tarFile->parentid = $this->folder->objectid; @@ -256,35 +255,35 @@ class FolderAdvancedAction extends FolderAction implements Method { break; case 'file': - $f = new File( $id ); + $f = new File(); $f->load(); $f->filename = ''; - $f->name = \cms\base\Language::lang('COPY_OF').' '.$f->name; $f->parentid = $targetObjectId; $f->persist(); $f->copyValueFromFile( $id ); + $f->copyNamesFrom( $id ); $this->addNoticeFor($o,Messages::COPIED); break; case 'page': - $p = new Page( $id ); + $p = new Page(); $p->load(); $p->filename = ''; - $p->name = \cms\base\Language::lang('COPY_OF').' '.$p->name; $p->parentid = $targetObjectId; $p->persist(); $p->copyValuesFromPage( $id ); + $p->copyNamesFrom( $id ); $this->addNoticeFor($o,Messages::COPIED); break; case 'link': - $l = new Link( $id ); + $l = new Link(); $l->load(); $l->filename = ''; - $l->name = \cms\base\Language::lang('COPY_OF').' '.$l->name; $l->parentid = $targetObjectId; $l->persist(); + $l->copyNamesFrom( $id ); $this->addNoticeFor($o,Messages::COPIED); break; @@ -306,8 +305,8 @@ class FolderAdvancedAction extends FolderAction implements Method { $link->linkedObjectId = $id; $link->isLinkToObject = true; - $link->name = \cms\base\Language::lang('LINK_TO').' '.$o->name; $link->persist(); + $link->copyNamesFrom($o->objectid); $this->addNoticeFor($o,Messages::LINKED); } else diff --git a/modules/cms/action/folder/FolderCreatefileAction.class.php b/modules/cms/action/folder/FolderCreatefileAction.class.php @@ -49,9 +49,7 @@ class FolderCreatefileAction extends FolderAction implements Method { throw new ValidationException( 'url' ); } - $file->desc = $description; $file->filename = BaseObject::urlify( $name ); - $file->name = !empty($name)?$name:basename($url); $file->size = strlen($http->body); $file->value = $http->body; $file->parentid = $this->folder->objectid; @@ -83,9 +81,7 @@ class FolderCreatefileAction extends FolderAction implements Method { //throw new \ValidationException( $upload->parameterName ); } - $file->desc = $description; - $file->filename = BaseObject::urlify( $upload->filename ); - $file->name = !empty($name)?$name:$upload->filename; + $file->filename = BaseObject::urlify( $upload->filename ); $file->extension = $upload->extension; $file->size = $upload->size; $file->parentid = $this->folder->objectid; diff --git a/modules/cms/action/folder/FolderCreatefolderAction.class.php b/modules/cms/action/folder/FolderCreatefolderAction.class.php @@ -15,7 +15,6 @@ class FolderCreatefolderAction extends FolderAction implements Method { public function view() { $this->setTemplateVar('objectid' ,$this->folder->objectid ); - $this->setTemplateVar('languageid',$this->folder->languageid ); } @@ -25,10 +24,7 @@ class FolderCreatefolderAction extends FolderAction implements Method { $f = new Folder(); $f->projectid = $this->folder->projectid; - $f->languageid = $this->folder->languageid; - $f->name = $name; $f->filename = BaseObject::urlify( $name ); - $f->desc = $description; $f->parentid = $this->folder->objectid; $f->persist(); diff --git a/modules/cms/action/folder/FolderCreateimageAction.class.php b/modules/cms/action/folder/FolderCreateimageAction.class.php @@ -49,9 +49,7 @@ class FolderCreateimageAction extends FolderAction implements Method { throw new ValidationException( 'url' ); } - $image->desc = $description; $image->filename = BaseObject::urlify( basename($url) ); - $image->name = !empty($name)?$name:basename($url); $image->size = strlen($http->body); $image->value = $http->body; $image->parentid = $this->folder->objectid; @@ -72,9 +70,7 @@ class FolderCreateimageAction extends FolderAction implements Method { //throw new \ValidationException( $upload->parameterName ); } - $image->desc = $description; $image->filename = BaseObject::urlify( $upload->filename ); - $image->name = !empty($name)?$name:$upload->filename; $image->extension = $upload->extension; $image->size = $upload->size; $image->parentid = $this->folder->objectid; diff --git a/modules/cms/action/folder/FolderEditAction.class.php b/modules/cms/action/folder/FolderEditAction.class.php @@ -10,7 +10,7 @@ use util\Html; class FolderEditAction extends FolderAction implements Method { public function view() { - if ( ! $this->folder->isRoot ) + if ( ! $this->folder->isRoot() ) $this->setTemplateVar('parentid',$this->folder->parentid); $list = array(); @@ -24,9 +24,9 @@ class FolderEditAction extends FolderAction implements Method { if ( $o->hasRight(Permission::ACL_READ) ) { - $list[$id]['name'] = \util\Text::maxLength($o->name, 30); - $list[$id]['filename'] = \util\Text::maxLength($o->filename, 20); - $list[$id]['desc'] = \util\Text::maxLength($o->desc, 30); + $list[$id]['name'] = $o->getDefaultName()->name; + $list[$id]['filename'] = $o->filename; + $list[$id]['desc'] = $o->getDefaultName()->description; if ( $list[$id]['desc'] == '' ) $list[$id]['desc'] = \cms\base\Language::lang('NO_DESCRIPTION_AVAILABLE'); $list[$id]['desc'] = $list[$id]['desc'].' - '.\cms\base\Language::lang('IMAGE').' '.$id; diff --git a/modules/cms/action/folder/FolderOrderAction.class.php b/modules/cms/action/folder/FolderOrderAction.class.php @@ -41,7 +41,7 @@ class FolderOrderAction extends FolderAction implements Method { } $this->setTemplateVar('object' ,$list ); - $this->setTemplateVar('act_objectid',$this->folder->id); + $this->setTemplateVar('act_objectid',$this->folder->objectid); } diff --git a/modules/cms/action/folder/FolderRootAction.class.php b/modules/cms/action/folder/FolderRootAction.class.php @@ -13,7 +13,7 @@ class FolderRootAction extends FolderAction implements Method { $rootFolder = new Folder( $project->getRootObjectId() ); $rootFolder->load(); - $this->setTemplateVar('rootfolderid' ,$rootFolder->id ); + $this->setTemplateVar('rootfolderid' ,$rootFolder->objectid ); $this->setTemplateVar('rootfoldername',$rootFolder->filename ); } diff --git a/modules/cms/action/folder/FolderShowAction.class.php b/modules/cms/action/folder/FolderShowAction.class.php @@ -14,7 +14,7 @@ class FolderShowAction extends FolderAction implements Method { header('Content-Type: text/html' ); header('X-Folder-Id: ' .$this->folder->folderid ); - header('X-Id: ' .$this->folder->id ); + header('X-Id: ' .$this->folder->objectid ); header('Content-Description: '.$this->folder->filename() ); echo '<html><body>'; diff --git a/modules/cms/action/group/GroupRightsAction.class.php b/modules/cms/action/group/GroupRightsAction.class.php @@ -43,7 +43,7 @@ class GroupRightsAction extends GroupAction implements Method { $o = new BaseObject($acl->objectid); $o->objectLoad(); - $right['objectname'] = $o->name; + $right['objectname'] = $o->filename; $right['objectid' ] = $o->objectid; $right['objecttype'] = $o->getType(); diff --git a/modules/cms/action/image/ImageSizeAction.class.php b/modules/cms/action/image/ImageSizeAction.class.php @@ -4,6 +4,7 @@ use cms\action\Action; use cms\action\ImageAction; use cms\action\Method; use cms\model\Image; +use cms\model\Name; use cms\model\Permission; use language\Messages; use util\exception\ValidationException; @@ -67,12 +68,11 @@ class ImageSizeAction extends ImageAction implements Method { if ( $this->request->has('copy') ) { // Datei neu anlegen. - $imageFile = new Image($this->image->objectid); - $imageFile->load(); - $imageFile->name = \cms\base\Language::lang('copy_of').' '.$imageFile->name; - $imageFile->desription = \cms\base\Language::lang('copy_of').' '.$imageFile->description; + $imageFile = new Image(); + $imageFile->filename = $imageFile->filename.'_resized_'.time(); $imageFile->persist(); + $imageFile->copyNamesFrom( $this->image->objectid ); $imageFile->copyValueFromFile( $this->image->objectid ); } else diff --git a/modules/cms/action/link/LinkShowAction.class.php b/modules/cms/action/link/LinkShowAction.class.php @@ -12,7 +12,7 @@ class LinkShowAction extends LinkAction implements Method { header('Content-Type: text/html' ); header('X-Link-Id: ' .$this->link->linkid ); - header('X-Id: ' .$this->link->id ); + header('X-Id: ' .$this->link->objectid ); header('Content-Description: '.$this->link->filename() ); echo '<html><body>'; diff --git a/modules/cms/action/object/ObjectCopyAction.class.php b/modules/cms/action/object/ObjectCopyAction.class.php @@ -4,6 +4,7 @@ use cms\action\Action; use cms\action\Method; use cms\action\ObjectAction; use cms\action\RequestParams; +use cms\model\Name; use cms\model\Permission; use cms\model\BaseObject; use cms\model\File; @@ -94,7 +95,6 @@ class ObjectCopyAction extends ObjectAction implements Method { $link = new Link(); $link->parentid = $oldParentId; - $link->name = \cms\base\Language::lang('LINK_TO').' '.$sourceObject->name; $link->filename = $sourceObject->filename; $link->linkedObjectId = $sourceObjectId; $link->persist(); @@ -103,52 +103,52 @@ class ObjectCopyAction extends ObjectAction implements Method { break; case 'copy': - + + $destObject = null; switch( $sourceObject->getType() ) { case 'folder': - // Ordner zur Zeit nicht kopieren - // Funktion waere zu verwirrend + // this is a little bit too complicated :( $this->addErrorFor($sourceObject,Messages::CANNOT_COPY_FOLDER); - break; + break 2; case 'file': - $f = new File( $sourceObjectId ); - $f->load(); + $f = new File(); $f->filename = ''; - $f->name = \cms\base\Language::lang('COPY_OF').' '.$f->name; $f->parentid = $targetObjectId; $f->persist(); $f->copyValueFromFile( $sourceObjectId ); + $f->copyNamesFrom( $sourceObjectId); - $this->addNoticeFor($sourceObject,Messages::COPIED); + $destObject = $f; break; case 'page': $p = new Page( $sourceObjectId ); $p->load(); $p->filename = ''; - $p->name = \cms\base\Language::lang('COPY_OF').' '.$p->name; $p->parentid = $targetObjectId; $p->persist(); $p->copyValuesFromPage( $sourceObjectId ); - $this->addNoticeFor($sourceObject,Messages::COPIED); + $p->copyNamesFrom( $sourceObjectId ); + $destObject = $p; break; case 'link': $l = new Link( $sourceObjectId ); $l->load(); $l->filename = ''; - $l->name = \cms\base\Language::lang('COPY_OF').' '.$l->name; $l->parentid = $targetObjectId; $l->persist(); - $this->addNoticeFor($sourceObject,Messages::COPIED); + $destObject = $l; break; default: throw new \LogicException('fatal: unknown type while deleting'); } - break; + $this->addNoticeFor($sourceObject,Messages::COPIED); + + break; case 'link': @@ -162,7 +162,6 @@ class ObjectCopyAction extends ObjectAction implements Method { $link = new Link(); $link->parentid = $targetObjectId; - $link->name = \cms\base\Language::lang('LINK_TO').' '.$sourceObject->name; $link->filename = $sourceObject->filename; $link->linkedObjectId = $sourceObjectId; $link->isLinkToObject = true; diff --git a/modules/cms/action/page/PageAllAction.class.php b/modules/cms/action/page/PageAllAction.class.php @@ -232,7 +232,7 @@ class PageAllAction extends PageAction implements Method { break; case Element::ELEMENT_TYPE_NUMBER: - $value->number = $this->request->getText($element->name) * pow(10, $value->element->decimals); + $value->number = $this->request->getText($element->name) * pow(10, $element->decimals); break; default: throw new \LogicException('Unknown element type: ' . $element->getTypeName()); @@ -292,7 +292,7 @@ class PageAllAction extends PageAction implements Method { */ protected function getElements() { - return $this->page->getWritableElements(); + return $this->page->getTemplate()->getWritableElements(); } diff --git a/modules/cms/action/page/PageEditAction.class.php b/modules/cms/action/page/PageEditAction.class.php @@ -28,7 +28,7 @@ class PageEditAction extends PageAction implements Method { } ); $elements = array_map( function( $element ) { - return get_object_vars( $element ) + array('pageelementid'=>$this->page->id.'_'.$element->elementid,'typename'=>$element->getTypeName() ); + return get_object_vars( $element ) + array('pageelementid'=>$this->page->objectid.'_'.$element->elementid,'typename'=>$element->getTypeName() ); }, $elements); $this->setTemplateVar('elements',$elements); diff --git a/modules/cms/action/page/PageInfoAction.class.php b/modules/cms/action/page/PageInfoAction.class.php @@ -35,7 +35,6 @@ class PageInfoAction extends PageAction implements Method { foreach( $languages as $id => $name ) { - $this->page->languageid = $id; $this->page->load(); $languagesVar = $this->page->getProperties(); diff --git a/modules/cms/action/page/PageShowAction.class.php b/modules/cms/action/page/PageShowAction.class.php @@ -20,14 +20,16 @@ class PageShowAction extends PageAction implements Method { $this->page->load(); + + Logger::debug("Preview page: ".$this->page->__toString() ); + + $pageContext = $this->createPageContext( Producer::SCHEME_PREVIEW ); + // HTTP-Header mit Sprachinformation setzen. - $language = new Language( $this->page->languageid); + $language = new Language( $pageContext->languageid); $language->load(); header('Content-Language: '.$language->isoCode); - Logger::debug("Preview page: ".$this->page->__toString() ); - - $pageContext = $this->createPageContext( Producer::SCHEME_PREVIEW); $generator = new PageGenerator( $pageContext ); header('Content-Type: '.$generator->getMimeType().'; charset=UTF-8' ); diff --git a/modules/cms/action/pageelement/PageelementLinkAction.class.php b/modules/cms/action/pageelement/PageelementLinkAction.class.php @@ -25,17 +25,17 @@ class PageelementLinkAction extends PageelementAction implements Method { $value->contentid = $pageContent->contentId; $value->load(); - $this->setTemplateVar('name' ,$this->value->element->name ); - $this->setTemplateVar('desc' ,$this->value->element->desc ); + $this->setTemplateVar('name' ,$this->element->name ); + $this->setTemplateVar('desc' ,$this->element->desc ); $project = new Project($this->page->projectid); $this->setTemplateVar('rootfolderid' ,$project->getRootObjectId() ); // Ermitteln, welche Objekttypen verlinkt werden d�rfen. - if ( empty($this->value->element->subtype) ) + if ( empty($this->element->subtype) ) $types = array('page','file','link'); // Fallback: Alle erlauben :) else - $types = explode(',',$this->value->element->subtype ); + $types = explode(',',$this->element->subtype ); $objects = array(); @@ -56,7 +56,7 @@ class PageelementLinkAction extends PageelementAction implements Method { $objects[ $id ] = \cms\base\Language::lang( $o->getType() ).': '; $objects[ $id ] .= implode( \util\Text::FILE_SEP,$f->parentObjectNames(false,true) ); - $objects[ $id ] .= \util\Text::FILE_SEP.$o->name; + $objects[ $id ] .= \util\Text::FILE_SEP.$o->filename; // } } diff --git a/modules/cms/action/url/UrlShowAction.class.php b/modules/cms/action/url/UrlShowAction.class.php @@ -12,7 +12,7 @@ class UrlShowAction extends UrlAction implements Method { header('Content-Type: text/html' ); header('X-Url-Id: ' .$this->url->urlid ); - header('X-Id: ' .$this->url->id ); + header('X-Id: ' .$this->url->objectid ); header('Content-Description: '.$this->url->filename() ); echo '<html><body>'; diff --git a/modules/cms/action/user/UserRightsAction.class.php b/modules/cms/action/user/UserRightsAction.class.php @@ -46,7 +46,7 @@ class UserRightsAction extends UserAction implements Method { $o = new BaseObject($acl->objectid); $o->objectLoad(); - $right['objectname'] = $o->name; + $right['objectname'] = $o->filename; $right['objectid' ] = $o->objectid; $right['objecttype'] = $o->getType(); diff --git a/modules/cms/generator/PageGenerator.class.php b/modules/cms/generator/PageGenerator.class.php @@ -92,7 +92,7 @@ class PageGenerator extends BaseGenerator // Get a List with ElementId->ElementName $elements = array_map(function($element) { return $element->name; - },$page->getElements() ); + },$page->getTemplate()->getElements() ); $templatemodel = new TemplateModel( $template->templateid, $this->context->modelId ); if ( $this->context->scheme == Producer::SCHEME_PREVIEW ) diff --git a/modules/cms/generator/ValueGenerator.class.php b/modules/cms/generator/ValueGenerator.class.php @@ -347,7 +347,7 @@ class ValueGenerator extends BaseGenerator $objectid = $linkValue->linkToObjectId; if ( intval($objectid) == 0 ) - $objectid = $linkValue->element->defaultObjectId; + $objectid = $element->defaultObjectId; if ( !BaseObject::available( $objectid ) ) break; @@ -868,15 +868,15 @@ class ValueGenerator extends BaseGenerator $inhalt = Project::create( $page->projectid )->load()->name; break; case 'language_id': - $inhalt = $page->languageid; + $inhalt = $pageContext->languageid; break; case 'language_iso': - $language = new Language( $page->languageid ); + $language = new Language( $pageContext->languageid ); $language->load(); $inhalt = $language->isoCode; break; case 'language_name': - $language = new Language( $page->languageid ); + $language = new Language( $pageContext->languageid ); $language->load(); $inhalt = $language->name; break; diff --git a/modules/cms/macros/MacroRunner.class.php b/modules/cms/macros/MacroRunner.class.php @@ -68,7 +68,7 @@ class MacroRunner $value->contentid = $pageContent->contentId; $value->load(); - return $value->getRawValue(); + return $value->getRawValue($element->typeid); }); $parameters = $resolver->resolveVariablesInArray($parameter); diff --git a/modules/cms/macros/macro/Album.class.php b/modules/cms/macros/macro/Album.class.php @@ -75,8 +75,8 @@ class Album extends Macro $file->load(); $file->getImageSize(); - $img = '<img src="'.$this->pathToObject($fileid).'" alt="'.$file->name.'" width="'.$file->width.'" height="'.$file->height.'" />'; - $this->output('<dt>'.$img.'</dt><dd>'.$file->desc.'</dd>'); + $img = '<img src="'.$this->pathToObject($fileid).'" alt="'.$file->getNameForLanguage( $this->pageContext->languageId )->name.'" width="'.$file->width.'" height="'.$file->height.'" />'; + $this->output('<dt>'.$img.'</dt><dd>'.$file->getNameForLanguage( $this->pageContext->languageId )->description.'</dd>'); } diff --git a/modules/cms/macros/macro/Atom.class.php b/modules/cms/macros/macro/Atom.class.php @@ -70,10 +70,10 @@ class Atom extends Macro $folder->load(); if ( $this->feed_title == '' ) - $this->feed_title = $folder->name; + $this->feed_title = $folder->getNameForLanguage( $this->pageContext->languageId )->name; if ( $this->feed_description == '' ) - $this->feed_description = $folder->desc; + $this->feed_description = $folder->getNameForLanguage( $this->pageContext->languageId )->description; $feed['title' ] = $this->feed_title; $feed['description'] = $this->feed_description; @@ -85,7 +85,6 @@ class Atom extends Macro if ( $id == $this->getObjectId() ) continue; $o = new BaseObject( $id ); - $o->languageid = $this->page->languageid; $o->load(); if ( $o->isPage ) // Nur wenn Seite { @@ -93,8 +92,8 @@ class Atom extends Macro $p->load(); $item = array(); - $item['title' ] = $p->name; - $item['description'] = $p->desc; + $item['title' ] = $p->getNameForLanguage( $this->pageContext->languageId )->name; + $item['description'] = $p->getNameForLanguage( $this->pageContext->languageId )->description; $item['date' ] = $p->lastchangeDate; if ( empty($this->feed_url) ) $item['link' ] = $this->pathToObject($id); diff --git a/modules/cms/macros/macro/BlockMenu.class.php b/modules/cms/macros/macro/BlockMenu.class.php @@ -70,7 +70,6 @@ class BlockMenu extends Macro foreach( $folder->getObjectIds() as $id ) { $o = new BaseObject( $id ); - $o->languageid = $this->page->languageid; $o->load(); if ( $o->isFolder ) // Nur wenn Ordner { @@ -88,7 +87,7 @@ class BlockMenu extends Macro <td> <table border="0" cellpadding="3" cellspacing="1" width="100%"> <tr> - <td bgcolor="#cccccc"><span class="title"> '.$o->name.'</span></a> + <td bgcolor="#cccccc"><span class="title"> '.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</span></a> </td> </tr> <tr> @@ -99,7 +98,6 @@ class BlockMenu extends Macro foreach( $f->getObjectIds() as $xid ) { $o = new BaseObject( $xid ); - $o->languageid = $this->page->languageid; $o->load(); // Nur Seiten anzeigen @@ -110,13 +108,13 @@ class BlockMenu extends Macro { // aktuelle Seite $this->output( ' <span class="small">o</span> - <strong class="nav">'.$o->name.'</strong> + <strong class="nav">'.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</strong> <br />' ); } else { $this->output( ' <span class="small">o</span> - <a class="nav" href="'.$this->pathToObject($xid).'">'.$o->name.'</a> + <a class="nav" href="'.$this->pathToObject($xid).'">'.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</a> <br />' ); } //Api::output( '<br/>' ); diff --git a/modules/cms/macros/macro/BreadCrumb.class.php b/modules/cms/macros/macro/BreadCrumb.class.php @@ -78,16 +78,15 @@ class BreadCrumb extends Macro foreach( $parentIds as $oid=>$filename ) { $of = new Folder($oid); - $of->languageid = $this->page->languageid; $of->load(); $pl = $of->getFirstPageOrLink(); $this->output( $this->beforeEntry ); if ( is_object($pl) && $pl->objectid != $this->page->objectid ) - $this->output('<a href="'.$this->pathToObject($pl->objectid).'" class="breadcrumb">'.$of->name.'</a>' ); + $this->output('<a href="'.$this->pathToObject($pl->objectid).'" class="breadcrumb">'.$of->getNameForLanguage( $this->pageContext->languageId )->name.'</a>' ); else - $this->output('<span class="breadcrumb">'.$of->name.'</span>' ); + $this->output('<span class="breadcrumb">'.$of->getNameForLanguage( $this->pageContext->languageId )->name.'</span>' ); if ( is_object($pl) ) $lastoid = $pl->objectid; @@ -96,7 +95,7 @@ class BreadCrumb extends Macro if ( $lastoid != $this->page->objectid ) { $this->output( $this->beforeEntry ); - $this->output('<span class="breadcrumb">'.$this->page->name.'</span>' ); + $this->output('<span class="breadcrumb">'.$this->page->getNameForLanguage( $this->pageContext->languageId )->name.'</span>' ); } } diff --git a/modules/cms/macros/macro/ClassicMenu.class.php b/modules/cms/macros/macro/ClassicMenu.class.php @@ -67,7 +67,6 @@ class ClassicMenu extends Macro /** @var BaseObject $o */ foreach($f->getObjects() as $o ) { - $o->languageid = $this->page->languageid; $o->load(); // Wenn aktuelle Seite, dann markieren, sonst Link diff --git a/modules/cms/macros/macro/CommonMenu.class.php b/modules/cms/macros/macro/CommonMenu.class.php @@ -31,6 +31,7 @@ namespace cms\macros\macro; // Beispiele fuer dynamische Templateelemente // // --------------------------------------------------------------------------- +use cms\model\BaseObject; use cms\model\Folder; use cms\model\Page; use util\Macro; @@ -80,23 +81,24 @@ class CommonMenu extends Macro // Schleife ueber alle Objekte im aktuellen Ordner foreach( $f->getObjectIds() as $id ) { - $o = new Object( $id ); - $o->languageid = $this->page->languageid; + $o = new BaseObject( $id ); $o->load(); // Nur Seiten anzeigen if (!$o->isPage && !$o->isLink ) continue; - + + $name = $o->getNameForLanguage( $this->pageContext->languageId ); + // Wenn aktuelle Seite, dann markieren, sonst Link if ( $this->getObjectId() == $id ) { // aktuelle Seite - $this->output( '<li><strong>'.$o->name.'</strong></li>' ); + $this->output( '<li><strong>'.$name->name.'</strong></li>' ); } else { // Link erzeugen - $this->output( '<li><a href="'.$this->pathToObject($id).'">'.$o->name.'</a></li>' ); + $this->output( '<li><a href="'.$this->pathToObject($id).'">'.$name->name.'</a></li>' ); } } } diff --git a/modules/cms/macros/macro/LanguageLinksForPage.class.php b/modules/cms/macros/macro/LanguageLinksForPage.class.php @@ -44,9 +44,6 @@ class LanguageLinksForPage extends Macro // Build the navigation links to other languages function execute() { - // current language - $languageId = $this->page->languageid; - $project = new Project( $this->page->projectid ); // Schleife ueber alle Inhalte des Root-Ordners echo '<ul>'; diff --git a/modules/cms/macros/macro/Link.class.php b/modules/cms/macros/macro/Link.class.php @@ -50,8 +50,8 @@ class NextPage extends Macro $o = new BaseObject( $this->targetid ); $o->load(); - if ( empty($this->name ) ) $this->name = $o->name; - if ( empty($this->title) ) $this->title = $o->description; + if ( empty($this->name ) ) $this->name = $o->getNameForLanguage( $this->pageContext->languageId )->name; + if ( empty($this->title) ) $this->title = $o->getNameForLanguage( $this->pageContext->languageId )->description; $this->output( '<a href="'.$this->pathToObject($this->targetid).' title="'.$this->title.'" class="'.$this->classes.'">'.$this->name.'</a>' ); } diff --git a/modules/cms/macros/macro/ListMenu.class.php b/modules/cms/macros/macro/ListMenu.class.php @@ -73,7 +73,6 @@ class ListMenu extends Macro foreach( $folder->getObjectIds() as $id ) { $o = new BaseObject( $id ); - $o->languageid = $this->page->languageid; $o->load(); if ( $o->isFolder ) // Nur wenn Ordner { @@ -85,13 +84,12 @@ class ListMenu extends Macro if ( count($f->getLinks())+count($f->getPages()) > 0 ) { - $this->output( '<h1 class="title">'.$o->name.'</h1><ul>'); + $this->output( '<h1 class="title">'.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</h1><ul>'); // Untermenue // Schleife ber alle Objekte im aktuellen Ordner foreach( $f->getObjectIds() as $xid ) { $o = new BaseObject( $xid ); - $o->languageid = $this->page->languageid; $o->load(); // Nur Seiten und Verknuepfungen anzeigen @@ -101,11 +99,11 @@ class ListMenu extends Macro if ( $this->getObjectId() == $xid ) { // aktuelle Seite - $this->output( '<li class="menu">'.$o->name.'</li>' ); + $this->output( '<li class="menu">'.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</li>' ); } else { - $this->output( '<li class="menu"><a class="menu" href="'.$this->pathToObject($xid).'">'.$o->name.'</a></li>' ); + $this->output( '<li class="menu"><a class="menu" href="'.$this->pathToObject($xid).'">'.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</a></li>' ); } } diff --git a/modules/cms/macros/macro/MainMenu.class.php b/modules/cms/macros/macro/MainMenu.class.php @@ -67,7 +67,6 @@ class MainMenu extends Macro foreach( $folder->getObjectIds() as $id ) { $o = new BaseObject( $id ); - $o->languageid = $this->page->languageid; $o->load(); if ( $o->isFolder ) // Nur wenn Ordner { @@ -76,7 +75,7 @@ class MainMenu extends Macro // Ermitteln eines Objektes mit dem Dateinamen index $oid = $f->getObjectIdByFileName('index'); if ( is_numeric($oid) && $oid!=0 ) - $this->output( $this->arrowChar.'<a href="'.$this->pathToObject($oid).'" title="'.$o->desc.'">'.$o->name.'</a>' ); + $this->output( $this->arrowChar.'<a href="'.$this->pathToObject($oid).'" title="'.$o->getNameForLanguage( $this->pageContext->languageId )->description.'">'.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</a>' ); } } } diff --git a/modules/cms/macros/macro/PagesNavigation.class.php b/modules/cms/macros/macro/PagesNavigation.class.php @@ -72,7 +72,7 @@ class PagesNavigation extends Macro if ( $o->isPage || $o->isLink ) { if ( $o->objectid != $this->page->objectid ) - $this->output( '<a href="'.$this->pathToObject($o->objectid).'" title="'.$o->desc.'" class="pagenav">'.$nr.'</a>' ); + $this->output( '<a href="'.$this->pathToObject($o->objectid).'" title="'.$o->getNameForLanguage( $this->pageContext->languageId )->description.'" class="pagenav">'.$nr.'</a>' ); else $this->output( '<strong>'.$nr.'</strong>' ); } diff --git a/modules/cms/macros/macro/RSSCreate.class.php b/modules/cms/macros/macro/RSSCreate.class.php @@ -35,6 +35,7 @@ namespace cms\macros\macro; // // --------------------------------------------------------------------------- use cms\model\Folder; +use cms\model\Page; use util\Macro; @@ -85,10 +86,10 @@ class RSSCreate extends Macro $folder->load(); if ( $this->feed_title == '' ) - $this->feed_title = $folder->name; + $this->feed_title = $folder->getNameForLanguage( $this->pageContext->languageId )->name; if ( $this->feed_description == '' ) - $this->feed_description = $folder->desc; + $this->feed_description = $folder->getNameForLanguage( $this->pageContext->languageId )->description; $feed['title' ] = $this->feed_title; $feed['description'] = $this->feed_description; @@ -101,7 +102,6 @@ class RSSCreate extends Macro if ( $id == $this->getObjectId() ) continue; $o = new Object( $id ); - $o->languageid = $this->page->languageid; $o->load(); if ( $o->isPage ) // Nur wenn Seite { @@ -109,8 +109,10 @@ class RSSCreate extends Macro $p->load(); $item = array(); - $item['title' ] = $p->name; - $item['description'] = $p->desc; + + $name = $p->getNameForLanguage($this->pageContext->languageId); + $item['title' ] = $name->name; + $item['description'] = $name->description; $item['pubDate' ] = $p->lastchangeDate; if ( empty($this->feed_url) ) $item['link' ] = $this->pathToObject($id); diff --git a/modules/cms/macros/macro/SearchIndex.class.php b/modules/cms/macros/macro/SearchIndex.class.php @@ -52,7 +52,7 @@ class SearchIndex extends Macro // Generating all values $values = []; /** @var Element $element */ - foreach($page->getWritableElements() as $element ) { + foreach($page->getTemplate()->getWritableElements() as $element ) { $pageContext = clone $this->pageContext; $pageContext->objectId = $pageObjectId; $valueContext = new ValueContext($pageContext); diff --git a/modules/cms/macros/macro/Sitemap.class.php b/modules/cms/macros/macro/Sitemap.class.php @@ -87,13 +87,12 @@ class Sitemap extends Macro foreach( $f->getObjectIds() as $id ) { $o = new BaseObject( $id ); - $o->languageid = $this->page->languageid; $o->load(); // Ordner if ($o->isFolder ) { - $this->output( '<li><strong>'.$o->name.'</strong><br/>' ); + $this->output( '<li><strong>'.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</strong><br/>' ); $this->output( '<ul>' ); $this->showFolder( $id ); // Rekursiver Aufruf dieser Methode $this->output( '</ul></li>' ); @@ -106,12 +105,12 @@ class Sitemap extends Macro if ( $this->getObjectId() == $id ) { // aktuelle Seite - $this->output( '<li><strong>'.$o->name.'</strong></li>' ); + $this->output( '<li><strong>'.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</strong></li>' ); } else { // Link erzeugen - $this->output( '<li><a href="'.$this->pathToObject($id).'">'.$o->name.'</a></li>' ); + $this->output( '<li><a href="'.$this->pathToObject($id).'">'.$o->getNameForLanguage( $this->pageContext->languageId )->name.'</a></li>' ); } } } diff --git a/modules/cms/macros/macro/TagCloud.class.php b/modules/cms/macros/macro/TagCloud.class.php @@ -47,7 +47,7 @@ class TagCloud extends Macro $f = new Folder( $this->keywordFolderId ); - foreach( $f->getChildObjectIdsByName() as $fid ) + foreach( $f->getChildObjectIdsByName( $this->pageContext->languageId ) as $fid ) { $tf = new Folder($fid); if ( !$tf->isFolder) @@ -61,7 +61,7 @@ class TagCloud extends Macro $target->load(); // Link zum Tag erzeugen - $this->output( '<div class="tag" style="font-size:'.(0.5+(sizeof($tf->getObjectIds())*0.1)).'em"><a href="'.$this->pathToObject($target->objectid).'">'.$tf->name.'</a></div>' ); + $this->output( '<div class="tag" style="font-size:'.(0.5+(sizeof($tf->getObjectIds())*0.1)).'em"><a href="'.$this->pathToObject($target->objectid).'">'.$tf->getNameForLanguage( $this->pageContext->languageId )->name.'</a></div>' ); } } diff --git a/modules/cms/macros/macro/TagList.class.php b/modules/cms/macros/macro/TagList.class.php @@ -50,7 +50,7 @@ class TagList extends Macro $target->load(); // Link erzeugen - $this->output( '<div class="tag"><a href="'.$this->pathToObject($target->objectid).'">'.$f->name.'</a></div>' ); + $this->output( '<div class="tag"><a href="'.$this->pathToObject($target->objectid).'">'.$f->getNameForLanguage( $this->pageContext->languageId )->name.'</a></div>' ); } } diff --git a/modules/cms/macros/macro/TeaserList.class.php b/modules/cms/macros/macro/TeaserList.class.php @@ -72,7 +72,7 @@ class TeaserList extends Macro $p = new Page( $o->objectid ); $p->load(); - $desc = $p->desc; + $desc = $p->getNameForLanguage( $this->pageContext->languageId )->description; if ( !empty($this->teaserElementId) ) { @@ -111,9 +111,9 @@ class TeaserList extends Macro $this->output( '<'.$this->title_html_tag.' class="'.$this->title_css_class.'">'); if ( filter_var($this->linktitle,FILTER_VALIDATE_BOOLEAN)) - $this->output( '<a href="'.$url.'">'.$p->name.'</a>' ); + $this->output( '<a href="'.$url.'">'.$p->getNameForLanguage( $this->pageContext->languageId )->name.'</a>' ); else - $this->output( $p->name ); + $this->output( $p->getNameForLanguage( $this->pageContext->languageId )->name ); $this->output( '</'.$this->title_html_tag.'>' ); $this->output( '<p class="'.$this->description_css_class.'">' ); diff --git a/modules/cms/model/BaseObject.class.php b/modules/cms/model/BaseObject.class.php @@ -40,22 +40,21 @@ class BaseObject extends ModelBase const TYPE_MACRO = 'macro' ; /** eindeutige ID dieses Objektes - * @see #$objectid - * @type Integer - */ - public $id; - - /** eindeutige ID dieses Objektes * @type Integer */ 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 + /** + * Parent-Id. + * + * Object-Id of the folder, which this objects belongs to. + * + * Is 0 in case of the root folder. + * + * @see #isRoot() * @type Integer */ - public $parentid; + public $parentid = null; /** Filename. * @@ -65,26 +64,6 @@ class BaseObject extends ModelBase */ public $filename = ''; - /** Name. - * - * Logical name of this object. - * @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. * @type Integer @@ -118,7 +97,22 @@ class BaseObject extends ModelBase public $publishedDate; + /** + * Valid from. + * + * This is a unix-timestamp. + * + * @var int + */ public $validFromDate; + + /** + * Valid to. + * + * This is a unix-timestamp. + * + * @var int + */ public $validToDate; /** @@ -183,44 +177,19 @@ class BaseObject extends ModelBase */ var $type = null; - /** Kennzeichen ob Objekt den Wurzelordner des Projektes darstellt (parentid ist dann NULL) - * @type Boolean - */ - var $isRoot = false; - - /** Sprach-ID - * @see Language - * @type Integer - * @deprecated - */ - var $languageid; - - /** - * Projektmodell-ID - * @see Projectmodel - * @type Integer - * @deprecated - */ - var $modelid; /** * Projekt-ID * @see Project * @type Integer */ - var $projectid; + public $projectid; - /** - * Dateiname der temporaeren Datei - * @type String - */ - var $tmpfile; - - var $aclMask = null; public $typeid; - var $parentfolders = array(); + private $aclMask = null; + private $parentfolders = array(); /** * @type String @@ -245,7 +214,6 @@ class BaseObject extends ModelBase if ( is_numeric($objectid) ) { $this->objectid = $objectid; - $this->id = $objectid; } } @@ -314,7 +282,7 @@ SQL $sql = Db::sql( <<<SQL SELECT * FROM {{acl}} WHERE objectid={objectid} - AND ( languageid={languageid} OR languageid IS NULL ) + --AND ( languageid={languageid} OR languageid IS NULL ) AND ( type = {user} AND userid={userid} OR type = {group} AND $sqlGroupClause OR type = {all} @@ -323,7 +291,6 @@ SQL SQL ); - $sql->setInt ( 'languageid' ,$this->languageid ); $sql->setInt ( 'objectid' ,$this->objectid ); $sql->setInt ( 'userid' ,$user->userid ); $sql->setInt ( 'user' ,Permission::TYPE_USER ); @@ -387,13 +354,11 @@ SQL */ public function getProperties() { - return Array( 'id' =>$this->objectid, + return [ + 'id' =>$this->objectid, 'objectid' =>$this->objectid, 'parentid' =>$this->parentid, 'filename' =>$this->filename, - 'name' =>$this->name, - 'desc' =>$this->desc, - 'description' =>$this->desc, 'create_date' =>$this->createDate, 'create_user' =>$this->createUser->getProperties(), 'lastchange_date' =>$this->lastchangeDate, @@ -407,14 +372,13 @@ SQL 'isLink' =>$this->isLink, 'isUrl' =>$this->isUrl, 'isPage' =>$this->isPage, - 'isRoot' =>$this->isRoot, - 'languageid' =>$this->languageid, - 'modelid' =>$this->modelid, + 'isRoot' =>$this->isRoot(), 'projectid' =>$this->projectid, 'settings' =>$this->settings, 'valid_from_date' =>$this->validFromDate, 'valid_to_date' =>$this->validToDate, - 'type' =>$this->getType() ); + 'type' =>$this->getType() + ]; } @@ -559,70 +523,38 @@ SQL if ( $filenameConfig->is('edit',true) && $filename != '' && $filename != $this->objectid ) { // do not change the filename here - otherwise there is a danger of filename collisions. - //$filename = self::urlify($filename); - return $filename; } - if ( $this->isFolder ) - { - $filename = $this->objectid; - } - elseif ( isset($this->orderId) && intval($this->orderId ) == 1 && - $filenameConfig->has('default') && - !$filenameConfig->is('edit') ) - { - $filename = $filenameConfig->get('default'); - } - else - { - // Filename is not edited, so we are generating a pleasant filename. - switch( $filenameConfig->get('style','short' ) ) - { - case 'longid': - // Eine etwas laengere ID als Dateinamen benutzen - $filename = base_convert(str_pad($this->objectid,6,'a'),11,10); - break; - - case 'short': - // So kurz wie moeglich: Erhoehen der Basis vom 10 auf 36. - // Beispiele: - // 1 -> 1 - // 10 -> a - $filename = base_convert($this->objectid,10,36); - break; - - case 'md5': - // MD5-Summe als Dateinamen verwenden - // Achtung: Kollisionen sind unwahrscheinlich, aber theoretisch möglich. - $filename = md5(md5($this->objectid)); - break; - - case 'ss': - // Imitieren von "StoryServer" URLs. Wers braucht. - $filename = '0,'. - base_convert(str_pad($this->parentid,3,'a'),11,10). - ','. - base_convert(str_pad($this->objectid,7,'a'),11,10). - ',00'; - break; - - case 'title': - // Achtung: Kollisionen sind möglich. - // COLLISION ALARM! THIS IS NOT A GOOD IDEA! - $filename = self::urlify($this->name); - break; - - case 'id': - default: - // Einfach die Objekt-Id als Dateinamen verwenden. - $filename = $this->objectid; - break; - - } - } + // Filename is not edited, so we are generating a pleasant filename. + switch( $filenameConfig->get('style','short' ) ) + { + case 'longid': + // Eine etwas laengere ID als Dateinamen benutzen + return base_convert(str_pad($this->objectid,6,'a'),11,10); + break; + + case 'longalpha': + // Eine etwas laengere ID als Dateinamen benutzen + return base_convert(str_pad($this->objectid,6,'a'),11,36); + break; + + case 'short': + // As shortly as possible + // Examples: + // 1 -> 1 + // 10 -> a + return base_convert($this->objectid,10,36); + + case 'md5': // Removed, because collisions are possible. + case 'title': // Not possible any more because of the collision danger + case 'ss': // Old storyserver crap (removed) + case 'id': + default: + // Taking the object id as filename. + return $this->objectid; - return $filename; + } } @@ -657,28 +589,27 @@ SQL { $db = \cms\base\DB::get(); - $stmt = $db->sql('SELECT {{object}}.*,' . - ' {{name}}.name,{{name}}.descr,'. - ' lastchangeuser.name as lastchange_username, '. - ' lastchangeuser.fullname as lastchange_userfullname, '. - ' lastchangeuser.mail as lastchange_usermail, '. - ' publisheduser.name as published_username, '. - ' publisheduser.fullname as published_userfullname, '. - ' publisheduser.mail as published_usermail, '. - ' createuser.name as create_username, '. - ' createuser.fullname as create_userfullname, '. - ' createuser.mail as create_usermail '. - ' FROM {{object}}'. - ' LEFT JOIN {{name}} '. - ' ON {{object}}.id={{name}}.objectid AND {{name}}.languageid={languageid} '. - ' LEFT JOIN {{user}} as lastchangeuser '. - ' ON {{object}}.lastchange_userid=lastchangeuser.id '. - ' LEFT JOIN {{user}} as publisheduser '. - ' ON {{object}}.published_userid=publisheduser.id '. - ' LEFT JOIN {{user}} as createuser '. - ' ON {{object}}.create_userid=createuser.id '. - ' WHERE {{object}}.id={objectid}'); - $stmt->setInt('languageid', $this->languageid); + $stmt = $db->sql( <<<SQL + SELECT {{object}}.*, + lastchangeuser.name as lastchange_username, + lastchangeuser.fullname as lastchange_userfullname, + lastchangeuser.mail as lastchange_usermail, + publisheduser.name as published_username, + publisheduser.fullname as published_userfullname, + publisheduser.mail as published_usermail, + createuser.name as create_username, + createuser.fullname as create_userfullname, + createuser.mail as create_usermail + FROM {{object}} + LEFT JOIN {{user}} as lastchangeuser + ON {{object}}.lastchange_userid=lastchangeuser.id + LEFT JOIN {{user}} as publisheduser + ON {{object}}.published_userid=publisheduser.id + LEFT JOIN {{user}} as createuser + ON {{object}}.create_userid=createuser.id + WHERE {{object}}.id={objectid} +SQL + ); $stmt->setInt('objectid' , $this->objectid ); $row = $stmt->getRow(); @@ -711,17 +642,10 @@ SQL $this->filename = $row['filename' ]; $this->projectid = $row['projectid']; - if ( intval($this->parentid) == 0 ) - $this->isRoot = true; - else - $this->isRoot = false; - - $this->name = 'n/a'; - - $this->create_date = $row['create_date']; - $this->create_userid = $row['create_userid']; - $this->lastchange_date = $row['lastchange_date']; - $this->lastchange_userid = $row['lastchange_userid']; + $this->createDate = $row['create_date' ]; + $this->createUser = $row['create_userid' ]; + $this->lastchangeDate = $row['lastchange_date' ]; + $this->lastchangeUser = $row['lastchange_userid']; $this->isFolder = ( $row['typeid'] == self::TYPEID_FOLDER ); $this->isFile = ( $row['typeid'] == self::TYPEID_FILE ); @@ -736,6 +660,15 @@ SQL } + /** + * Is this the root object in a project? + * + * @return bool + */ + public function isRoot() { + return intval($this->parentid) == 0; + } + /** * Setzt die Eigenschaften des Objektes mit einer Datenbank-Ergebniszeile * @@ -751,11 +684,6 @@ SQL $this->filename = $row['filename' ]; $this->orderid = $row['orderid' ]; - if ( intval($this->parentid) == 0 ) - $this->isRoot = true; - else - $this->isRoot = false; - $this->createDate = $row['create_date' ]; $this->lastchangeDate = $row['lastchange_date']; $this->publishedDate = $row['published_date' ]; @@ -804,22 +732,7 @@ SQL $this->isAlias = ( $row['typeid'] == self::TYPEID_ALIAS ); $this->isMacro = ( $row['typeid'] == self::TYPEID_MACRO ); - if ( $this->isRoot ) - { - $this->name = $row['name' ]; - $this->desc = ''; - $this->description = ''; - } - else - { - $this->name = $row['name' ]; - $this->desc = $row['descr']; - $this->description = $row['descr']; - } - $this->settings = $row['settings']; - - $this->checkName(); } @@ -854,9 +767,10 @@ SQL ); - if ( $this->isRoot ) + if ( ! $this->parentid ) $stmt->setNull('parentid'); - else $stmt->setInt ('parentid',$this->parentid ); + else + $stmt->setInt ('parentid',$this->parentid ); $user = \util\Session::getUser(); @@ -948,32 +862,49 @@ SQL { $db = \cms\base\DB::get(); - $sql = $db->sql( 'UPDATE {{element}} '. - ' SET default_objectid=NULL '. - ' WHERE default_objectid={objectid}' ); + $sql = DB::sql( <<<SQL + UPDATE {{element}} + SET default_objectid=NULL + WHERE default_objectid={objectid} +SQL + ); $sql->setInt('objectid',$this->objectid); $sql->execute(); - $sql = $db->sql( 'UPDATE {{value}} '. - ' SET linkobjectid=NULL '. - ' WHERE linkobjectid={objectid}' ); + $sql = $db->sql( <<<'SQL' + UPDATE {{value}} + SET linkobjectid=NULL + WHERE linkobjectid={objectid} +SQL + ); $sql->setInt('objectid',$this->objectid); $sql->execute(); - $sql = $db->sql( 'UPDATE {{link}} '. - ' SET link_objectid=NULL '. - ' WHERE link_objectid={objectid}' ); + $sql = $db->sql( <<<'SQL' + UPDATE {{link}} + SET link_objectid=NULL + WHERE link_objectid={objectid} +SQL + ); $sql->setInt('objectid',$this->objectid); $sql->execute(); // Objekt-Namen l?schen - $sql = $db->sql('DELETE FROM {{name}} WHERE objectid={objectid}'); + $sql = $db->sql(<<<'SQL' + DELETE FROM {{name}} + WHERE objectid={objectid} +SQL +); $sql->setInt('objectid', $this->objectid); $sql->execute(); // Aliases löschen. - $sql = Db::sql('DELETE FROM {{alias}} WHERE objectid={objectid}'); + $sql = Db::sql(<<<'SQL' + DELETE FROM {{alias}} + WHERE objectid={objectid} +SQL +); $sql->setInt('objectid', $this->objectid); $sql->execute(); @@ -981,7 +912,11 @@ SQL $this->deleteAllACLs(); // Objekt l?schen - $sql = $db->sql('DELETE FROM {{object}} WHERE id={objectid}'); + $sql = $db->sql(<<<'SQL' + DELETE FROM {{object}} + WHERE id={objectid} +SQL +); $sql->setInt('objectid', $this->objectid); $sql->execute(); @@ -997,71 +932,100 @@ SQL protected function add() { // Neue Objekt-Id bestimmen - $sql = Db::sql('SELECT MAX(id) FROM {{object}}'); + $sql = Db::sql(<<<'SQL' + SELECT MAX(id) FROM {{object}} +SQL + ); $this->objectid = intval($sql->getOne())+1; $this->checkFilename(); - $sql = Db::sql('INSERT INTO {{object}}'. - ' (id,parentid,projectid,filename,orderid,create_date,create_userid,lastchange_date,lastchange_userid,typeid,settings)'. - ' VALUES( {objectid},{parentid},{projectid},{filename},{orderid},{time},{createuserid},{createtime},{userid},{typeid},\'\' )'); + $sql = Db::sql(<<<SQL + INSERT INTO {{object}} + (id,parentid,projectid,filename,orderid,create_date,create_userid,lastchange_date,lastchange_userid,typeid,settings) + VALUES( {objectid},{parentid},{projectid},{filename},{orderid},{time},{createuserid},{createtime},{userid},{typeid},'' ) +SQL + ); - if ( $this->isRoot ) + $user = \util\Session::getUser(); + $currentUserId = $user ? $user->userid : 0; + + if ( !$this->parentid ) $sql->setNull('parentid'); - else $sql->setInt ('parentid',$this->parentid ); + else + $sql->setInt ('parentid',$this->parentid ); $sql->setInt ('objectid' , $this->objectid ); $sql->setString('filename' , $this->filename ); $sql->setString('projectid', $this->projectid); $sql->setInt ('orderid' , 99999 ); - $sql->setInt ('time' , Startup::now() ); - $user = \util\Session::getUser(); - $sql->setInt ('createuserid' , $user->userid ); - $sql->setInt ('createtime' , Startup::now() ); - $user = \util\Session::getUser(); - $sql->setInt ('userid' , $user->userid ); + $sql->setInt ('time' , Startup::now() ); + + $sql->setInt ('createuserid' , $currentUserId ); + $sql->setInt ('createtime' , Startup::now() ); + $sql->setInt ('userid' , $currentUserId ); $sql->setInt( 'typeid',$this->getTypeid()); $sql->execute(); - // Standard-Rechte fuer dieses neue Objekt setzen. - // Der angemeldete Benutzer erhaelt alle Rechte auf - // das neue Objekt. Legitim, denn er hat es ja angelegt. - //FIXME we shoul delete this. - $permission = new Permission(); - $permission->userid = $user->userid; - $permission->objectid = $this->objectid; - - $permission->read = true; - $permission->write = true; - $permission->prop = true; - $permission->delete = true; - $permission->grant = true; - - $permission->create_file = true; - $permission->create_page = true; - $permission->create_folder = true; - $permission->create_link = true; - - $permission->persist(); - - // Aus dem Eltern-Ordner vererbbare Berechtigungen uebernehmen. - $parent = new BaseObject( $this->parentid ); - foreach( $parent->getAllAclIds() as $aclid ) - { - $permission = new Permission( $aclid ); - $permission->load(); - - if ( $permission->transmit ) // ACL is vererbbar, also kopieren. - { - $permission->aclid = null; - $permission->objectid = $this->objectid; - $permission->persist(); // ... und hinzufuegen. - } - } + $this->grantToActualUser(); // Is this a good idea? don't know ... + $this->inheritPermissions(); } + /** + * Set permissions for the actual user for the just added object. + * + * @return void + */ + private function grantToActualUser() { + + $user = \util\Session::getUser(); + + if ( ! $user ) { // User logged in? + + $permission = new Permission(); + $permission->userid = $user->userid; + $permission->objectid = $this->objectid; + + $permission->read = true; + $permission->write = true; + $permission->prop = true; + $permission->delete = true; + $permission->grant = true; + + $permission->create_file = true; + $permission->create_page = true; + $permission->create_folder = true; + $permission->create_link = true; + + $permission->persist(); + } + } + + + /** + * Inherit permissions from parent folder. + * + * @return void + */ + private function inheritPermissions() { + $parent = new BaseObject( $this->parentid ); + + foreach( $parent->getAllAclIds() as $aclid ) + { + $permission = new Permission( $aclid ); + $permission->load(); + + if ( $permission->transmit ) // ACL is vererbbar, also kopieren. + { + $permission->aclid = null; + $permission->objectid = $this->objectid; + $permission->persist(); // ... und hinzufuegen. + } + } + } + /** * Pruefung auf Gueltigkeit des Dateinamens */ @@ -1070,7 +1034,7 @@ SQL if ( empty($this->filename) ) $this->filename = $this->objectid; - if ( $this->isRoot ) // Beim Root-Ordner ist es egal, es gibt nur einen. + if ( $this->isRoot() ) // Beim Root-Ordner ist es egal, es gibt nur einen. return; if ( !$this->filenameIsUnique( $this->filename ) ) @@ -1107,26 +1071,16 @@ SQL } - /** - * Pruefung auf Gueltigkeit des logischen Namens - */ - function checkName() - { - if ( empty($this->name) ) - $this->name = $this->filename; - - if ( empty($this->name) ) - $this->name = $this->objectid; - } - - function getAllAclIds() { $db = \cms\base\DB::get(); - $sql = $db->sql( 'SELECT id FROM {{acl}} '. - ' WHERE objectid={objectid}'. - ' ORDER BY userid,groupid ASC' ); + $sql = $db->sql( <<<'SQL' + SELECT id FROM {{acl}} + WHERE objectid={objectid} + ORDER BY userid,groupid ASC +SQL + ); $sql->setInt('objectid' ,$this->objectid); return $sql->getCol(); @@ -1364,7 +1318,7 @@ SQL */ public function parentObjectFileNames( $with_root = false, $with_self = false ) { - $foid = $this->id; + $foid = $this->objectid; $idCache = array(); while( intval($foid)!=0 ) @@ -1398,22 +1352,16 @@ SQL public function parentObjectNames( $with_root = false, $with_self = false ) { - $foid = $this->id; + $foid = $this->objectid; $idCache = array(); while( intval($foid)!=0 ) { $sql = Db::sql( <<<SQL - -SELECT {{object}}.parentid,{{object}}.id,{{object}}.filename,{{name}}.name FROM {{object}} - LEFT JOIN {{name}} - ON {{object}}.id = {{name}}.objectid - AND {{name}}.languageid = {languageid} - WHERE {{object}}.id={parentid} - + SELECT {{object}}.parentid,{{object}}.id,{{object}}.filename FROM {{object}} + WHERE {{object}}.id={parentid} SQL ); - $sql->setInt('languageid',$this->languageid); $sql->setInt('parentid' ,$foid ); $row = $sql->getRow(); @@ -1595,13 +1543,13 @@ SQL public function __toString() { - return 'Object-Id '.$this->objectid.' (type='.$this->getType().',filename='.$this->filename.',language='.$this->languageid.', modelid='.$this->modelid.')'; + return 'Object-Id '.$this->objectid.' (type='.$this->getType().',filename='.$this->filename. ')'; } /** * Liefert alle Name-Objekte. - * @return array + * @return Name[] * @throws \util\exception\ObjectNotFoundException */ public function getNames() @@ -1645,7 +1593,12 @@ SQL { $languageId = $this->getProject()->getDefaultLanguageId(); - return $this->getNameForLanguage( $languageId ); + $defaultName = $this->getNameForLanguage( $languageId ); + + if ( ! $defaultName->name ) + $defaultName->name = $this->filename; + + return $defaultName; } @@ -1708,10 +1661,11 @@ SQL * The Alias for this Object or <code>null</code>. * * @return Alias|null + * @deprecated use #getAliasForLanguage */ public function getAlias() { - $alias = $this->getAliasForLanguage( $this->languageid ); + $alias = $this->getAliasForLanguage( $this->getProject()->getDefaultLanguageId() ); if ( !$alias->isPersistent() ) $alias = $this->getAliasForLanguage( null ); @@ -1769,6 +1723,23 @@ SQL return $this->objectid; } + + public function copyNamesFrom($sourceObjectId ) { + + $sourceObject = new BaseObject( $sourceObjectId ); + foreach ( $sourceObject->getNames() as $name ) { + + if ( $name->isPersistent() ) { + + $copiedName = new Name(); + $copiedName->name = $name->name; + $copiedName->description = $name->description; + $copiedName->languageid = $name->languageid; + $copiedName->objectid = $this->objectid; + $copiedName->persist(); + } + } + } } diff --git a/modules/cms/model/Content.class.php b/modules/cms/model/Content.class.php @@ -438,7 +438,7 @@ SQL public function getName() { - return $this->id; + return 'Content#'.$this->id; } diff --git a/modules/cms/model/Folder.class.php b/modules/cms/model/Folder.class.php @@ -142,17 +142,17 @@ class Folder extends BaseObject { $db = \cms\base\DB::get(); - $sql = $db->sql('SELECT {{object}}.*,{{name}}.name,{{name}}.descr'. - ' FROM {{object}}'. - ' LEFT JOIN {{name}} '. - ' ON {{object}}.id={{name}}.objectid AND {{name}}.languageid={languageid} '. - ' WHERE parentid={objectid}'. - ' ORDER BY orderid ASC' ); - $sql->setInt('languageid',$this->languageid ); + $sql = $db->sql( <<<SQL + SELECT {{object}}.* + FROM {{object}} + WHERE parentid={objectid} + ORDER BY orderid ASC +SQL + ); $sql->setInt('objectid' ,$this->objectid ); - - $liste = array(); $res = $sql->getAll(); + + $liste = array(); foreach( $res as $row ) { $o = new BaseObject( $row['id'] ); @@ -179,7 +179,7 @@ class Folder extends BaseObject // Liest alle Objekte in diesem Ordner sortiert nach dem Namen (nicht Dateinamen!) - function getChildObjectIdsByName() + function getChildObjectIdsByName( $languageId ) { $db = \cms\base\DB::get(); @@ -188,7 +188,7 @@ class Folder extends BaseObject ' WHERE parentid={objectid}'. ' ORDER BY {{name}}.name,{{object}}.filename ASC'); $sql->setInt('objectid' , $this->objectid ); - $sql->setInt('languageid', $this->languageid); + $sql->setInt('languageid', $languageId); return( $sql->getCol() ); } @@ -425,63 +425,6 @@ SQL } - /** - * Ermitteln des Dateinamens. - * @return String Dateiname - */ - public function filename() - { - $filenameConfig = Configuration::subset('filename'); - - if ( $filenameConfig->is('edit',true ) ) - { - if ( $this->filename == '' ) - // Filename ist eigentlich ein Pflichtfeld, daher kann dies nahezu nie auftreten. - // Rein technisch kann der Filename aber leer sein. - return $this->objectid; - else - return BaseObject::urlify($this->name); - } - else - { - // Filename is not edited, so we are generating a pleasant filename. - switch( $filenameConfig->get('style','short') ) - { - case 'longid': - // Eine etwas laengere ID als Dateinamen benutzen - return base_convert(str_pad($this->objectid,6,'a'),11,10); - - case 'short': - // So kurz wie moeglich: Erhoehen der Basis vom 10 auf 36. - // Beispiele: - // 1 -> 1 - // 10 -> a - return base_convert($this->objectid,10,36); - - case 'md5': - // MD5-Summe als Dateinamen verwenden - // Achtung: Kollisionen sind unwahrscheinlich, aber theoretisch möglich. - return md5(md5($this->objectid)); - - case 'ss': - // Imitieren von "StoryServer" URLs. Wers braucht. - return $this->objectid; - - case 'title': - // Achtung: Kollisionen sind möglich. - // COLLISION ALARM! THIS IS NOT A GOOD IDEA! - return BaseObject::urlify($this->name); - - case 'id': - default: - // Einfach die Objekt-Id als Dateinamen verwenden. - return $this->objectid; - - } - } - } - - // Ermitteln aller Unterordner @@ -675,15 +618,11 @@ SQL {{object}}.lastchange_date as lastchange_date, {{object}}.filename as filename, {{object}}.typeid as typeid, - {{name}}.name as name, {{user}}.name as username, {{user}}.id as userid, {{user}}.mail as usermail, {{user}}.fullname as userfullname FROM {{object}} - LEFT JOIN {{name}} - ON {{name}}.objectid = {{object}}.id - AND {{name}}.languageid = {languageid} LEFT JOIN {{user}} ON {{user}}.id = {{object}}.lastchange_userid WHERE {{object}}.parentid = {folderid} @@ -693,9 +632,7 @@ SQL // Variablen setzen. $sql->setInt( 'folderid', $this->objectid ); - - $sql->setInt( 'languageid', $this->languageid ); - + return $sql->getAll(); } diff --git a/modules/cms/model/Page.class.php b/modules/cms/model/Page.class.php @@ -18,6 +18,7 @@ namespace cms\model; // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. use cms\base\DB as Db; use cms\generator\PageContext; +use phpseclib\Math\BigInteger; /** @@ -29,81 +30,35 @@ use cms\generator\PageContext; class Page extends BaseObject { - public $pageid; - public $templateid; - /** - * @var Template - */ - public $template; - - public $el = array(); - - /** - * Stellt fest, ob die Editier-Icons angezeigt werden sollen. Dies ist - * nur der Fall, wenn die Seite auch zum Bearbeiten generiert wird. - * Wird die Seite zum Veröffentlichen generiert, muss diese Eigenschaft - * natürlich "false" sein. - * @var boolean + * Page-Id + * + * Hint: This is not the object-id! + * + * @var Integer */ - var $src = ''; - - var $modelid = 0; + public $pageid; /** - * Page context. + * Template-Id. * - * @var PageContext + * The id of the underlying template. Every page must have a template. + * + * @var Integer */ - public $context; + public $templateid; + function __construct( $objectid='' ) { parent::__construct( $objectid ); $this->isPage = true; $this->typeid = BaseObject::TYPEID_PAGE; - - //$this->publisher = new PublishPreview(); - } /** - * Ermitteln der Objekt-ID (Tabelle object) anhand der Seiten-ID (Tablle page) - * - * @deprecated pageid sollte nicht mehr benutzt werden - * @return Integer objectid - */ - function getObjectIdFromPageId( $pageid ) - { - $db = \cms\base\DB::get(); - - $sql = $db->sql( 'SELECT objectid FROM {{page}} '. - ' WHERE id={pageid}' ); - $sql->setInt('pageid',$pageid); - - return $sql->getOne(); - } - - - /** - * Ermitteln der Seiten-ID anhand der Objekt-ID - * - * @deprecated pageid sollte nicht mehr benutzt werden - * @return Integer pageid - */ - public static function getPageIdFromObjectId( $objectid ) - { - $sql = Db::sql( 'SELECT id FROM {{page}} '. - ' WHERE objectid={objectid}' ); - $sql->setInt('objectid',$objectid); - - return $sql->getOne(); - } - - - /** * Ermitteln aller Eigenschaften * * @return array @@ -118,24 +73,9 @@ class Page extends BaseObject /** - * Ermitteln der Ordner, in dem sich die Seite befindet - * @return array - */ - function parentfolder() - { - $folder = new Folder(); - $folder->folderid = $this->parentid; - - return $folder->parentObjectFileNames( false,true ); - } - - - - - /** * Eine Seite hinzufuegen */ - function add() + protected function add() { parent::add(); // Hinzuf?gen von Objekt (dabei wird Objekt-ID ermittelt) @@ -159,7 +99,7 @@ SQL /** * Seite laden */ - function load() + public function load() { $sql = Db::sql( 'SELECT * FROM {{page}} '. ' WHERE objectid={objectid}' ); @@ -172,7 +112,7 @@ SQL $this->pageid = $row['id' ]; $this->templateid = $row['templateid']; - $this->objectLoad(); + parent::load(); } @@ -244,7 +184,7 @@ SQL } - function save() + public function save() { $db = \cms\base\DB::get(); @@ -260,7 +200,7 @@ SQL - function replaceTemplate( $newTemplateId,$replaceElementMap ) + public function replaceTemplate( $newTemplateId,$replaceElementMap ) { $oldTemplateId = $this->templateid; @@ -325,38 +265,17 @@ SQL } - - /** - * Erzeugen der Inhalte zu allen Elementen dieser Seite - * wird von generate() aufgerufen - */ - public function getElements() - { - if ( !isset($this->template) ) - $this->template = new Template( $this->templateid ); - - return $this->template->getElements(); - } - - - /** - * Erzeugen der Inhalte zu allen Elementen dieser Seite - * wird von generate() aufgerufen - * - * @access private - */ - function getWritableElements() - { - if ( !isset($this->template) ) - $this->template = new Template( $this->templateid ); - - return $this->template->getWritableElements(); + * Gets the template. + * + * @return Template + */ + public function getTemplate() { + return new Template( $this->templateid ); } - /** * Ermittelt den Mime-Type zu dieser Seite * @@ -375,12 +294,6 @@ SQL - public function setTimestamp() - { - parent::setTimestamp(); - } - - /** * Returns a page with default values. * @@ -417,7 +330,7 @@ SQL public function __toString() { - return 'Id '.$this->pageid.' (filename='.$this->filename.', templateid='.$this->templateid.')'; + return 'Page#'.$this->pageid.' (filename='.$this->filename.', templateid='.$this->templateid.')'; } diff --git a/modules/cms/model/Project.class.php b/modules/cms/model/Project.class.php @@ -352,12 +352,8 @@ SQL // Haupt-Ordner anlegen $folder = new Folder(); - $folder->isRoot = true; $folder->projectid = $this->projectid; - $folder->languageid = $language->languageid; $folder->filename = $this->name; - $folder->name = $this->name; - $folder->isRoot = true; $folder->persist(); // Template anlegen @@ -366,21 +362,38 @@ SQL $template->name = '#1'; $template->persist(); + $element = new Element(); + $element->templateid = $template->templateid; + $element->typeid = Element::ELEMENT_TYPE_TEXT; + $element->label = 'Text'; + $element->name = 'text'; + $element->persist(); + // Template anlegen $templateModel = $template->loadTemplateModelFor( $model->modelid ); $templateModel->extension = 'html'; - $templateModel->src = '<html><body><h1>Hello world</h1><hr><p>Hello, World.</p></body></html>'; + $templateModel->src = '<html><body><h1>Sample page</h1><hr><p>Text: {{name}</p></body></html>'; $templateModel->persist(); // Beispiel-Seite anlegen $page = new Page(); $page->parentid = $folder->objectid; $page->projectid = $this->projectid; - $page->languageid = $language->languageid; $page->templateid = $template->templateid; - $page->filename = ''; - $page->name = 'OpenRat'; + $page->filename = 'start'; + $page->getDefaultName()->name = 'Sample page'; $page->persist(); + + $pageContent = new PageContent(); + $pageContent->pageId = $page->pageid; + $pageContent->elementId = $element->elementid; + $pageContent->languageid = $language->languageid; + $pageContent->persist(); + + $value = new Value(); + $value->contentid = $pageContent->contentId; + $value->text = 'sample text'; + $value->persist(); } @@ -491,9 +504,7 @@ EOF { $lostAndFoundFolder = new Folder(); $lostAndFoundFolder->projectid = $this->projectid; - $lostAndFoundFolder->languageid = $this->getDefaultLanguageId(); $lostAndFoundFolder->filename = "lostandfound"; - $lostAndFoundFolder->name = 'Lost+found'; $lostAndFoundFolder->parentid = $this->getRootObjectId(); $lostAndFoundFolder->persist(); @@ -980,7 +991,7 @@ SQL $o->load(); $folders[ $id ] = ''; - if ( !$o->isRoot ) + if ( !$o->isRoot() ) { $f = new Folder( $o->parentid ); $f->load(); diff --git a/modules/cms/model/User.class.php b/modules/cms/model/User.class.php @@ -44,34 +44,47 @@ class User extends ModelBase */ const AUTH_TYPE_OIDC = 2; - var $userid = 0; - var $error = ''; - - var $name = ''; - var $fullname = ''; - var $tel; - var $mail; - var $desc; - var $style; - var $isAdmin; - var $rights; - var $loginDate = 0; - - var $language; - var $timezone; - var $passwordExpires; - var $passwordAlgo; - - var $lastLogin; - var $otpSecret; - var $hotp ; - var $hotpCount; - var $totp ; - - - - var $mustChangePassword = false; - var $groups = null; + public $userid = 0; + + /** + * Username. + * This name should not be displayed to other users. + * + * @var string + */ + public $name = ''; + + /** + * natural name of this user. + * + * @var string + */ + public $fullname = ''; + public $tel; + public $mail; + public $desc; + public $style; + public $isAdmin; + public $loginDate = 0; + + /** + * User prefered language. + * + * As ISO string. + * + * @var string + */ + public $language; + + public $timezone; + public $passwordExpires; + public $passwordAlgo; + + public $lastLogin; + public $otpSecret; + public $hotp ; + public $hotpCount; + public $totp ; public $issuer = null; public $type = User::AUTH_TYPE_INTERNAL; @@ -79,6 +92,8 @@ class User extends ModelBase public $passwordFailedCount = 0; public $passwordLockedUntil = 0; + private $groups = null; + // Konstruktor public function __construct( $userid='' ) @@ -95,10 +110,12 @@ class User extends ModelBase */ public static function listAll() { - $sql = Db::sql( 'SELECT id,name '. - ' FROM {{user}}'. - ' ORDER BY name' ); - + $sql = Db::sql( <<<SQL + SELECT id,name + FROM {{user}} + ORDER BY name +SQL + ); return $sql->getAssoc(); } @@ -111,10 +128,12 @@ class User extends ModelBase public static function getAllUsers() { $list = array(); - $sql = Db::sql( 'SELECT * '. - ' FROM {{user}}'. - ' ORDER BY name' ); - + $sql = Db::sql( <<<SQL + SELECT * + FROM {{user}} + ORDER BY name +SQL + ); foreach($sql->getAll() as $row ) { $user = new User(); @@ -159,12 +178,13 @@ SQL /** - * Erzeugt eine WHERE-Bedingung zur Verwendung in einer SQL-Anfrage.<br> - * Es wird eine Oder-Liste mit allen Gruppen-Ids erzeugt. + * Creates an SQL-WHERE-Clause. * - * @return String SQL-WHERE-Bedingung + * A "WHERE IN()" clause is difficult, because groups may be part of another groups. + * + * @return String SQL-WHERE-Clause */ - function getGroupClause() + public function getGroupClause() { $groupIds = $this->getEffectiveGroups(); @@ -195,19 +215,26 @@ SQL { $groupClause = $this->getGroupClause(); $sql = $db->sql(<<<SQL -SELECT DISTINCT {{project}}.id,{{project}}.name - FROM {{object}} - LEFT JOIN {{acl}} ON {{object}}.id = {{acl}}.objectid - LEFT JOIN {{project}} ON {{project}}.id = {{object}}.projectid - WHERE {{object}}.parentid IS NULL AND - {{acl}}.id IS NOT NULL AND - ( {{acl}}.userid={userid} OR - $groupClause OR - ({{acl}}.userid IS NULL AND {{acl}}.groupid IS NULL)) - ORDER BY {{project}}.name + SELECT DISTINCT {{project}}.id,{{project}}.name + FROM {{object}} + LEFT JOIN {{acl}} ON {{object}}.id = {{acl}}.objectid + LEFT JOIN {{project}} ON {{project}}.id = {{object}}.projectid + WHERE {{object}}.parentid IS NULL AND + {{acl}}.id IS NOT NULL AND + ( + {{acl}}.type = {usertype} AND {{acl}}.userid={userid} + OR {{acl}}.type = {grouptype} AND $groupClause + OR ({{acl}}.type = {alltype} + OR ({{acl}}.type = {guesttype} + ) + ORDER BY {{project}}.name SQL ); - $sql->setInt ( 'userid',$this->userid ); + $sql->setInt( 'userid',$this->userid ); + $sql->setInt( 'usertype' ,Permission::TYPE_USER ); + $sql->setInt( 'grouptype',Permission::TYPE_GROUP ); + $sql->setInt( 'alltype' ,Permission::TYPE_AUTH ); + $sql->setInt( 'guesttype',Permission::TYPE_GUEST ); return $sql->getAssoc(); } @@ -867,21 +894,28 @@ SQL * * @return array */ - function getAllAcls() + public function getAllAcls() { + $groupClause = $this->getGroupClause(); - $this->delRights(); - - $group_clause = $this->getGroupClause(); - - $sql = Db::sql( 'SELECT {{acl}}.*,{{object}}.projectid,{{language}}.name AS languagename FROM {{acl}}'. - ' LEFT JOIN {{object}} '. - ' ON {{object}}.id={{acl}}.objectid '. - ' LEFT JOIN {{language}} '. - ' ON {{language}}.id={{acl}}.languageid '. - ' WHERE ( {{acl}}.userid={userid} OR '.$group_clause. - ' OR ({{acl}}.userid IS NULL AND {{acl}}.groupid IS NULL) )'. - ' ORDER BY {{object}}.projectid,{{acl}}.languageid' ); + $sql = Db::sql( <<<SQL + SELECT {{acl}}.*, + {{object}}.projectid, + {{language}}.name AS languagename + FROM {{acl}} + LEFT JOIN {{object}} + ON {{object}}.id={{acl}}.objectid + LEFT JOIN {{language}} + ON {{language}}.id={{acl}}.languageid + WHERE ( + {{acl}}.type = {usertype} AND {{acl}}.userid={userid} + OR {{acl}}.type = {grouptype} AND $groupClause + OR ({{acl}}.type = {alltype} + OR ({{acl}}.type = {guesttype} + ) + ORDER BY {{object}}.projectid,{{acl}}.languageid +SQL + ); $sql->setInt ( 'userid' ,$this->userid ); $aclList = array(); @@ -964,61 +998,6 @@ SQL } - /** - * Entfernt alle Rechte aus diesem Benutzerobjekt. - */ - function delRights() - { - $this->rights = array(); - } - - - /** - * Ueberpruft, ob der Benutzer ein bestimmtes Recht hat - * - * @param $objectid int Objekt-Id zu dem Objekt, dessen Rechte untersucht werden sollen - * @param $type int Typ des Rechts (Lesen,Schreiben,...) als Konstante Acl::ACL_* - */ - public function hasRight( $objectid,$type ) - { - if ( Startup::readonly() && ! $type & Permission::ACL_READ ) - return false; // Nothing is writable in Readonly-Mode. - - if ( $this->isAdmin ) - return true; - - if ( !isset($this->rights[$objectid]) ) - return false; - - return $this->rights[$objectid] & $type; - } - - - /** - * Berechtigung dem Benutzer hinzufuegen. - * - * @param $objectid int Objekt-Id, zu dem eine Berechtigung hinzugefuegt werden soll - * @param $type int Art des Rechtes, welches hinzugefuegt werden soll - */ - function addRight( $objectid,$type ) - { - $securityconfig = Configuration::subset('security'); - - if ( $securityconfig->is('readonly') ) - if ( $type & Permission::ACL_READ ) - $type = Permission::ACL_READ; - else - $type = 0; - - if ( $type & Permission::ACL_PUBLISH && $securityconfig->is('nopublish') ) - $type -= Permission::ACL_PUBLISH; - - - if ( !isset($this->rights[$objectid]) ) - $this->rights[$objectid] = 0; - - $this->rights[$objectid] = $this->rights[$objectid] | $type; - } /** diff --git a/modules/cms/model/Value.class.php b/modules/cms/model/Value.class.php @@ -25,7 +25,7 @@ use util\cache\FileCache; class Value extends ModelBase { /** - * ID dieser Inhaltes + * ID of this value. * @type Integer */ public $valueid=0; @@ -38,60 +38,61 @@ class Value extends ModelBase /** - * Objekt-ID, auf die verlinkt wird + * Linked object-id. * @type Integer */ - var $linkToObjectId=0; + public $linkToObjectId=0; /** - * Text-Inhalt + * textual value * @type String */ - var $text=''; + public $text=''; /** - * Zahl. Auch Flie?kommazahlen werden als Ganzzahl gespeichert + * Number. * @type Integer */ - var $number=0; + public $number=0; /** - * Datum als Unix-Timestamp + * Date. + * + * Saved as unix-timestamp + * * @type Integer */ - var $date=0; - - /** - * Element-Objekt - * @type Element - * @deprecated - */ - var $element; + public $date=0; /** - * file blob + * file blob. + * * @var string */ public $file = null; /** - * TimeStamp der letzten Aenderung + * TimeStamp of last change. * @type Integer */ - var $lastchangeTimeStamp; + public $lastchangeTimeStamp; /** - * Benutzer-ID der letzten Aenderung + * user-Id of the user who created this value. + * * @type Integer */ - var $lastchangeUserId; + public $lastchangeUserId; /** - * Benutzername der letzten Aenderung + * Name of user who created this value. + * + * This attribute is readonly. + * * @type Integer */ - var $lastchangeUserName; + public $lastchangeUserName; /** * Is this content active? @@ -100,13 +101,13 @@ class Value extends ModelBase * * @type Boolean */ - var $active; + public $active; /** * Is this content public available? * @type boolean */ - var $publish = false; + public $publish = false; /** * Format @@ -116,7 +117,7 @@ class Value extends ModelBase public $format = null; /** - * Konstruktor + * Constructor. */ function __construct() { @@ -131,7 +132,10 @@ class Value extends ModelBase public function loadPublished() { $stmt = Db::sql( <<<SQL - SELECT * FROM {{value}} + SELECT *,{{user}}.fullname as lastchange_username + FROM {{value}} + LEFT JOIN {{user}} + ON {{user}}.id = {{value}}.lastchange_userid WHERE contentid = {contentid} AND publish = 1 SQL @@ -144,12 +148,12 @@ SQL private function bindRow( $row ) { - if ( $row ) // Wenn Inhalt gefunden + if ( $row ) // If found { $this->contentid = $row['contentid' ]; - $this->text = $row['text' ]; - $this->file = $row['file' ]; - $this->format = $row['format']; + $this->text = $row['text' ]; + $this->file = $row['file' ]; + $this->format = $row['format' ]; $this->valueid = intval($row['id'] ); $this->linkToObjectId = intval($row['linkobjectid']); $this->number = intval($row['number' ]); @@ -163,8 +167,9 @@ SQL $this->active = ( $row['active' ]=='1' ); $this->publish = ( $row['publish']=='1' ); - $this->lastchangeTimeStamp = intval($row['lastchange_date' ]); - $this->lastchangeUserId = intval($row['lastchange_userid']); + $this->lastchangeTimeStamp = intval($row['lastchange_date' ]); + $this->lastchangeUserId = intval($row['lastchange_userid' ]); + $this->lastchangeUserName = $row['lastchange_username']; } } @@ -175,9 +180,12 @@ SQL public function load() { $stmt = Db::sql( <<<SQL - SELECT * FROM {{value}} - WHERE contentid = {contentid} - AND {{value}}.active = 1 + SELECT *,{{user}}.fullname as lastchange_username + FROM {{value}} + LEFT JOIN {{user}} + ON {{user}}.id = {{value}}.lastchange_userid + WHERE contentid = {contentid} + AND {{value}}.active = 1 SQL ); $stmt->setInt( 'contentid' ,$this->contentid); @@ -192,8 +200,11 @@ SQL function loadWithId( $valueid = null ) { $stmt = Db::sql( <<<SQL - SELECT * FROM {{value}} - WHERE id = {valueid} + SELECT {{value}}.*,{{user}}.fullname as lastchange_username + FROM {{value}} + LEFT JOIN {{user}} + ON {{user}}.id = {{value}}.lastchange_userid + WHERE {{value}}.id = {valueid} SQL ); $stmt->setInt( 'valueid' ,$valueid ); @@ -351,12 +362,13 @@ SQL /** * Ermittelt den unbearbeiteten, "rohen" Inhalt. - * + * + * @param int $elementTypeId * @return mixed Inhalt */ - public function getRawValue() + public function getRawValue($elementTypeId) { - switch( $this->element->typeid ) + switch( $elementTypeId ) { case Element::ELEMENT_TYPE_LINK: return $this->linkToObjectId; @@ -372,7 +384,7 @@ SQL public function getName() { - return $this->element->label; + return "Value#".$this->valueid; } diff --git a/modules/cms/ui/action/title/TitleHistoryAction.class.php b/modules/cms/ui/action/title/TitleHistoryAction.class.php @@ -21,11 +21,12 @@ class TitleHistoryAction extends TitleAction implements Method { $resultList[$objectid] = array(); $resultList[$objectid]['url'] = Html::url($o->getType(),'',$objectid); $resultList[$objectid]['type'] = $o->getType(); - $resultList[$objectid]['name'] = $o->name; + $resultList[$objectid]['name'] = $o->getDefaultName()->name; $resultList[$objectid]['lastchange_date'] = $o->lastchangeDate; - - if ( $o->desc != '' ) - $resultList[$objectid]['desc'] = $o->desc; + + $defaultName = $o->getDefaultName(); + if ( $defaultName->description != '' ) + $resultList[$objectid]['desc'] = $defaultName->description; else $resultList[$objectid]['desc'] = \cms\base\Language::lang('NO_DESCRIPTION_AVAILABLE'); } diff --git a/modules/cms/ui/action/title/TitleShowAction.class.php b/modules/cms/ui/action/title/TitleShowAction.class.php @@ -31,7 +31,6 @@ class TitleShowAction extends TitleAction implements Method { $this->setTemplateVar('dbid' ,$db->id); } - $this->setTemplateVar('username' ,$user->name ); $this->setTemplateVar('userfullname',$user->fullname); // Urls zum Benutzerprofil und zum Abmelden diff --git a/modules/util/Macro.class.php b/modules/util/Macro.class.php @@ -94,6 +94,10 @@ class Macro } + protected function getPageName() { + return $this->getPage()->getNameForLanguage( $this->pageContext->languageId )->name; + } + /** * Holt das aktuelle Objekt. * @return Object diff --git a/modules/util/Tree.class.php b/modules/util/Tree.class.php @@ -437,7 +437,7 @@ class Tree $treeElement = new TreeElement(); $treeElement->id = $id; $treeElement->internalId = $id; - $treeElement->text = $object->name; + $treeElement->text = $object->getDefaultName()->name; if (in_array($object->getType(), array('page', 'folder'))) { $treeElement->type = $object->getType(); $treeElement->internalId = $object->objectid; @@ -446,9 +446,10 @@ class Tree $treeElement->icon = $object->getType(); $treeElement->extraId = array(RequestParams::PARAM_LANGUAGE_ID => $object->getProject()->getDefaultLanguageId()); - $treeElement->description = L::lang('' . $object->getType()); - if ($object->desc != '') - $treeElement->description .= ' - ' . Text::maxLength($object->desc, 25); + $defaultName = $object->getDefaultName(); + + if ($defaultName->description ) + $treeElement->description .= ' - ' . $defaultName->description; else $treeElement->description .= ' - ' . L::lang('NO_DESCRIPTION_AVAILABLE'); @@ -472,8 +473,10 @@ class Tree $treeElement->text = $o->getName(); $treeElement->description = L::lang('' . $o->getType()) . ' ' . $id; - if ($o->desc != '') - $treeElement->description .= ': ' . $o->desc; + $defaultName = $o->getDefaultName(); + + if ($defaultName->description ) + $treeElement->description .= ': ' . $defaultName->description; else $treeElement->description .= ' - ' . L::lang('NO_DESCRIPTION_AVAILABLE'); @@ -536,8 +539,6 @@ class Tree { $f = new Folder($id); $f->load(); - $f->languageid = $f->getProject()->getDefaultLanguageId(); - $f->modelid = $f->getProject()->getDefaultModelId(); /** @var BaseObject $o */ foreach ($f->getObjects() as $o) { @@ -548,12 +549,13 @@ class Tree $treeElement = new TreeElement(); $treeElement->id = $o->objectid; $treeElement->internalId = $o->objectid; - $treeElement->extraId = array(RequestParams::PARAM_LANGUAGE_ID => $f->languageid, RequestParams::PARAM_MODEL_ID => $f->modelid); - $treeElement->text = $o->name; + $treeElement->text = $o->getDefaultName()->name; $treeElement->description = L::lang('' . $o->getType()) . ' ' . $o->objectid; - if ($o->desc != '') - $treeElement->description .= ': ' . $o->desc; + $defaultName = $o->getDefaultName(); + + if ( $defaultName->description ) + $treeElement->description .= ': ' . $defaultName->description; else $treeElement->description .= ' - ' . L::lang('NO_DESCRIPTION_AVAILABLE'); diff --git a/modules/wikiparser/renderer/HtmlRenderer.class.php b/modules/wikiparser/renderer/HtmlRenderer.class.php @@ -112,7 +112,6 @@ class HtmlRenderer case 'rawelement': $tag = ''; - $val = $child->src; break; @@ -251,7 +250,7 @@ class HtmlRenderer if (BaseObject::available($child->objectId)) { $file = new File($child->objectId); $file->load(); - $attr['title'] = $file->description; + $attr['title'] = $file->getDefaultName()->description; unset($file); } break; @@ -271,8 +270,8 @@ class HtmlRenderer $image = new Image($child->objectId); $image->load(); - $attr['alt'] = $image->name; - $attr['title'] = $image->description; + $attr['alt' ] = $image->getDefaultName()->name; + $attr['title'] = $image->getDefaultName()->description; $image->getImageSize(); $attr['width'] = $image->width;