openrat-cms

OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs

commit 58627da3cc701ce9f9e9b7426664ebdde44a863d
parent 46ce16dd1faaeb4a7b4608db2ccc1ffd4a358c56
Author: Jan Dankert <develop@jandankert.de>
Date:   Wed, 23 Sep 2020 01:04:05 +0200

Cleanup of deprecated methods and deprecated class attributes.

Diffstat:
modules/cms/action/PageAction.class.php | 47+++++++++++++----------------------------------
modules/cms/action/PageelementAction.class.php | 123++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
modules/cms/action/TemplateAction.class.php | 85+++++++++++++++++++++++++++++++++----------------------------------------------
modules/cms/action/TemplatelistAction.class.php | 40+++++++++++++++++++++-------------------
modules/cms/generator/PageContext.class.php | 4++--
modules/cms/generator/PageGenerator.class.php | 36++++++++++++++++--------------------
modules/cms/generator/Producer.class.php | 2--
modules/cms/generator/ValueContext.class.php | 4----
modules/cms/generator/ValueGenerator.class.php | 12++++++------
modules/cms/generator/link/PreviewLink.class.php | 23++++++++++++++++-------
modules/cms/generator/link/PublicLink.class.php | 109++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-----------------
modules/cms/macros/macro/LanguageLinksForPage.class.php | 12++++++++----
modules/cms/model/Element.class.php | 8+++-----
modules/cms/model/File.class.php | 46----------------------------------------------
modules/cms/model/Folder.class.php | 57---------------------------------------------------------
modules/cms/model/Page.class.php | 246++++---------------------------------------------------------------------------
modules/cms/model/Project.class.php | 10++++++----
modules/cms/model/Template.class.php | 105+++++++++----------------------------------------------------------------------
modules/cms/model/TemplateModel.class.php | 20++++++++++----------
modules/cms/model/Value.class.php | 2+-
modules/cms/ui/themes/default/html/views/pageelement/advanced.php | 2+-
modules/cms/ui/themes/default/html/views/pageelement/advanced.tpl.src.xml | 4++--
modules/cms/ui/themes/default/html/views/pageelement/edit.php | 2+-
modules/cms/ui/themes/default/html/views/pageelement/edit.tpl.src.xml | 2+-
modules/cms/ui/themes/default/html/views/template/show.php | 2++
modules/cms/ui/themes/default/html/views/template/show.tpl.src.xml | 5+++++
modules/util/Tree.class.php | 11++++-------
27 files changed, 359 insertions(+), 660 deletions(-)

diff --git a/modules/cms/action/PageAction.class.php b/modules/cms/action/PageAction.class.php @@ -97,9 +97,6 @@ class PageAction extends ObjectAction */ function formPost() { - $this->page->public = true; - $this->page->simple = true; - foreach( $this->page->getElements() as $elementid=>$name ) { if ( $this->hasRequestVar('saveid'.$elementid) ) @@ -345,7 +342,6 @@ class PageAction extends ObjectAction //$this->page->publisher = new PublishPublic( $this->page->projectid ); $this->page->load(); - $this->page->full_filename(); if ( $this->page->filename == $this->page->objectid ) $this->page->filename = ''; @@ -378,13 +374,15 @@ class PageAction extends ObjectAction if ( $this->userIsProjectAdmin() ) { $this->setTemplateVar('templateid',$this->page->templateid); - $this->setTemplateVar('modelid',$this->page->modelid); } $template = new Template( $this->page->templateid ); $template->load(); $this->setTemplateVar('template_name',$template->name ); - $this->setTemplateVar('tmp_filename' ,$this->page->getCache()->getFilename() ); + + $generator = new PageGenerator( $this->createPageContext( Producer::SCHEME_PUBLIC) ); + + $this->setTemplateVar('tmp_filename' ,$generator->getPublicFilename() ); } @@ -552,10 +550,6 @@ class PageAction extends ObjectAction { global $conf_php; - $this->page->public = false; - $this->page->simple = true; - $this->page->generate_elements(); - $list = array(); foreach( $this->page->values as $id=>$value ) @@ -650,7 +644,7 @@ class PageAction extends ObjectAction { $this->setModelAndLanguage(); - $this->setTemplateVar('preview_url',Html::url('page','show',$this->page->objectid,array(REQ_PARAM_LANGUAGE_ID=>$this->page->languageid,REQ_PARAM_MODEL_ID=>$this->page->modelid) ) ); + $this->setTemplateVar('preview_url',Html::url('page','show',$this->page->objectid,array(REQ_PARAM_LANGUAGE_ID=>$this->page->getProject()->getDefaultLanguageId(),REQ_PARAM_MODEL_ID=>$this->page->getProject()->getDefaultModelId()) ) ); } @@ -666,19 +660,9 @@ class PageAction extends ObjectAction $pageSettingsConfig = new Config( $this->page->getTotalSettings() ); header('Content-Security-Policy: '.$pageSettingsConfig->get('content-security-policy','') ); - // Seite definieren - if ( $this->hasRequestVar('withIcons') ) - $this->page->icons = true; - - //$publisher = new PublishPreview(); - - //$this->page->publisher = $publisher; - $this->page->load(); - //$this->page->generate(); $project = $this->page->getProject(); - $this->page->modelid = $project->getDefaultModelId(); // FIXME header('Content-Type: '.$this->page->mimeType().'; charset=UTF-8' ); @@ -689,18 +673,14 @@ class PageAction extends ObjectAction Logger::debug("Preview page: ".$this->page->__toString() ); + $pageContext = $this->createPageContext( Producer::SCHEME_PREVIEW); + $generator = new PageGenerator( $pageContext ); - //$producer = new Producer(); - //$producer->languages[] = $this->getRequestVar( REQ_PARAM_LANGUAGE_ID ); - //$producer->models[] = $this->getRequestVar( REQ_PARAM_MODEL_ID ); - //$producer->languages[] = $project->getDefaultLanguageId(); - //producer->models[] = $project->getDefaultModelId(); - - //$producer->generate( $this->page,Producer::SCHEME_PREVIEW ); - $generator = new PageGenerator( $this->createPageContext( Producer::SCHEME_PREVIEW) ); + $templateModel = $this->page->template->loadTemplateModelFor( $pageContext->modelId ); + $templateModel->load(); // Executing PHP in Pages. - if ( ( config('publish','enable_php_in_page_content')=='auto' && $this->page->template->extension == 'php') || + if ( ( config('publish','enable_php_in_page_content')=='auto' && $templateModel->extension == 'php') || config('publish','enable_php_in_page_content')===true ) { ob_start(); @@ -741,7 +721,6 @@ class PageAction extends ObjectAction */ function changetemplateView() { - $this->page->public = true; $this->page->load(); @@ -749,7 +728,7 @@ class PageAction extends ObjectAction if ( $this->userIsAdmin() ) { - $this->setTemplateVar('template_url',Html::url('main','template',$this->page->templateid,array(REQ_PARAM_MODEL_ID=>$this->page->modelid))); + $this->setTemplateVar('template_url',Html::url('template','show',$this->page->templateid)); } $template = new Template( $this->page->templateid ); @@ -845,10 +824,10 @@ class PageAction extends ObjectAction protected function setModelAndLanguage() { $this->setTemplateVar('languages' ,$this->page->getProject()->getLanguages()); - $this->setTemplateVar('languageid',$this->page->languageid ); + $this->setTemplateVar('languageid',$this->page->getProject()->getDefaultLanguageId() ); $this->setTemplateVar('models' ,$this->page->getProject()->getModels() ); - $this->setTemplateVar('modelid' ,$this->page->modelid ); + $this->setTemplateVar('modelid' ,$this->page->getProject()->getDefaultModelId() ); } diff --git a/modules/cms/action/PageelementAction.class.php b/modules/cms/action/PageelementAction.class.php @@ -3,7 +3,9 @@ namespace cms\action; use cms\generator\PageContext; +use cms\generator\PageGenerator; use cms\generator\Producer; +use cms\generator\Publisher; use cms\generator\ValueContext; use cms\generator\ValueGenerator; use cms\model\Acl; @@ -17,8 +19,11 @@ use cms\model\Folder; use cms\model\BaseObject; use cms\generator\PublishEdit; use cms\generator\PublishPreview; +use language\Messages; +use util\exception\SecurityException; use util\Html; use LogicException; +use util\Session; use util\Transformer; use util\Text; use util\exception\ValidationException; @@ -244,17 +249,17 @@ class PageelementAction extends BaseAction foreach ( $this->page->getProject()->getLanguages() as $languageId=>$languageName ) { - $this->value->languageid = $languageId; - $this->value->load(); + $value = clone $this->value; // do not overwrite the value + $value->languageid = $languageId; + $value->load(); $languages[$languageId] = array( 'languageid' => $languageId, 'languagename' => $languageName, - 'value' => $this->value->text, - 'text' => $this->value->text, - 'number' => $this->value->number, - 'date' => $this->value->date, - 'linkObjectId' => $this->value->linkToObjectId, + 'text' => $this->calculateValue( $value ), + 'number' => $value->number, + 'date' => $value->date, + 'linkObjectId' => $value->linkToObjectId, ); } @@ -275,6 +280,7 @@ class PageelementAction extends BaseAction $this->value->pageid = $this->page->pageid; $this->value->page = $this->page; $this->value->element = &$this->element; + $this->value->elementid = $this->element->elementid; $this->value->element->load(); $this->setTemplateVar('name' ,$this->value->element->label ); @@ -292,8 +298,7 @@ class PageelementAction extends BaseAction $languages[$languageId] = array( 'languageid' => $languageId, 'languagename' => $languageName, - 'value' => $this->value->text, - 'text' => $this->value->text, + 'text' => $this->calculateValue( $this->value ), 'number' => $this->value->number, 'date' => $this->value->date, 'linkObjectId' => $this->value->linkToObjectId, @@ -934,14 +939,13 @@ class PageelementAction extends BaseAction $value->save(); } - $this->addNotice('pageelement',$value->element->name,'SAVED',OR_NOTICE_OK); + $this->addNotice('pageelement',$value->element->label,'SAVED',OR_NOTICE_OK); $this->page->setTimestamp(); // "Letzte Aenderung" setzen // Falls ausgewaehlt die Seite sofort veroeffentlichen if ( $value->page->hasRight( Acl::ACL_PUBLISH ) && $this->hasRequestVar('publish') ) { - $this->page->publish(); - $this->addNotice('pageelement',$value->element->name,'PUBLISHED',OR_NOTICE_OK); + $this->publishPage(); } } @@ -1241,9 +1245,15 @@ class PageelementAction extends BaseAction private function linkifyOIDs( $text ) { + $pageContext = new PageContext( $this->page->objectid, Producer::SCHEME_PREVIEW ); + $pageContext->modelId = 0; + $pageContext->languageId = $this->value->languageid; + + $linkFormat = $pageContext->getLinkScheme(); + foreach( Text::parseOID($text) as $oid=>$t ) { - $url = $this->page->path_to_object($oid); + $url = $linkFormat->linkToObject($this->page, new BaseObject($oid) ); foreach( $t as $match) $text = str_replace($match,$url,$text); } @@ -1301,20 +1311,81 @@ class PageelementAction extends BaseAction function pubPost() { if ( !$this->page->hasRight( Acl::ACL_PUBLISH ) ) - throw new \util\exception\SecurityException( 'no right for publish' ); - - $this->page->public = true; - $this->page->publish(); - $this->page->publisher->close(); - - $this->addNotice( 'page', - $this->page->fullFilename, - 'PUBLISHED', - OR_NOTICE_OK, - array(), - $this->page->publisher->log ); + throw new SecurityException( 'no right for publish' ); + + $this->publishPage(); + } + + + private function publishPage() { + + $project = $this->page->getProject(); + + // Nothing is written to the session from this point. so we should free the session. + Session::close(); + + $publisher = new Publisher( $project->projectid ); + + foreach( $project->getModelIds() as $modelId ) { + + $pageContext = new PageContext( $this->page->objectid, Producer::SCHEME_PUBLIC ); + $pageContext->modelId = $modelId; + $pageContext->languageId = $this->value->languageid; + + $pageGenerator = new PageGenerator( $pageContext ); + + $publisher->publish( $pageGenerator->getCache()->load()->getFilename(),$pageGenerator->getPublicFilename(), $this->page->lastchangeDate ); + } + + + $this->addNoticeFor( $this->value,'PUBLISHED',array(), + implode("\n",$publisher->publishedObjects) ); + + } + + + + /** + * Textual representation of a value. + * + * @param Value $value + * @return string + */ + private function calculateValue(Value $value) + { + switch( $value->element->typeid ) { + case Element::ELEMENT_TYPE_DATE: + if ( ! $value->date ) + return ''; + + return date( lang(Messages::DATE_FORMAT), $value->date ); + + case Element::ELEMENT_TYPE_TEXT: + case Element::ELEMENT_TYPE_LONGTEXT: + case Element::ELEMENT_TYPE_SELECT: + return $value->text; + + case Element::ELEMENT_TYPE_LINK: + + if ( ! $value->linkToObjectId ) + return ''; + + $linkObject = new BaseObject( $value->linkToObjectId ); + $linkObject->load(); + $name = $linkObject->getNameForLanguage( $value->languageid )->name; + + if ( empty( $name )) + $name = $linkObject->filename(); + + return $name; + + case Element::ELEMENT_TYPE_NUMBER: + return $value->number; + + default: + return ''; + } } - } ?> \ No newline at end of file diff --git a/modules/cms/action/TemplateAction.class.php b/modules/cms/action/TemplateAction.class.php @@ -12,6 +12,8 @@ use cms\model\Page; use cms\model\TemplateModel; use cms\generator\PublishPublic; +use language\Messages; +use util\exception\ValidationException; use util\Session; use util\Html; use util\Text; @@ -64,11 +66,9 @@ class TemplateAction extends BaseAction { $this->template = new Template( $this->getRequestId() ); - $this->template->modelid = $this->request->getModelId(); $this->template->load(); $this->setTemplateVar( 'templateid',$this->template->templateid ); - $this->setTemplateVar( 'modelid' ,$this->template->modelid ); if ( intval($this->getRequestVar('elementid')) != 0 ) { @@ -105,10 +105,7 @@ class TemplateAction extends BaseAction $templatemodel->src = $newSource; - if ( !$templatemodel->isPersistent() ) - $templatemodel->add(); - else - $templatemodel->save(); + $templatemodel->save(); $this->addNotice('template',$this->template->name,'SAVED',OR_NOTICE_OK); } @@ -118,38 +115,24 @@ class TemplateAction extends BaseAction function srcelementPost() { - $text = $this->template->src; + $tplModel = $this->template->loadTemplateModelFor( $this->request->getRequestVar(REQ_PARAM_MODEL_ID)); + + $elementToAdd = new Element( $this->getRequestVar('elementid') ); + $elementToAdd->load(); switch( $this->getRequestVar('type') ) { case 'addelement': - $text .= "\n".'{{'.$this->getRequestVar('elementid').'}}'; - break; - - case 'addicon': - $text .= "\n".'{{->'.$this->getRequestVar('writable_elementid').'}}'; - break; - - case 'addifempty': - $text .= "\n".'{{IFEMPTY:'.$this->getRequestVar('writable_elementid').':BEGIN}} {{IFEMPTY:'.$this->getRequestVar('writable_elementid').':END}}'; - break; - - case 'addifnotempty': - $text .= "\n".'{{IFNOTEMPTY:'.$this->getRequestVar('writable_elementid').':BEGIN}} {{IFNOTEMPTY:'.$this->getRequestVar('writable_elementid').':END}}'; + $tplModel->src .= "\n".'{{'.$elementToAdd->name.'}}'; break; default: - $this->addValidationError('type'); - $this->callSubAction('srcelement'); - return; + throw new ValidationException('type'); } - $this->template->src = $text; + $tplModel->save(); - $this->template->save(); - $this->template->load(); - - $this->addNotice('template',$this->template->name,'SAVED',OR_NOTICE_OK); + $this->addNoticeFor($this->template,Messages::SAVED); } @@ -249,10 +232,7 @@ class TemplateAction extends BaseAction $templatemodel->extension = $extensions[ $modelId ]; - if ( !$templatemodel->isPersistent() ) - $templatemodel->add(); - else - $templatemodel->save(); + $templatemodel->save(); } $this->addNotice('template',$this->template->name,'SAVED','ok'); @@ -304,10 +284,10 @@ class TemplateAction extends BaseAction foreach( $modelIds as $modelId ) { $template = new Template( $this->template->templateid ); - $template->modelid = $modelId; - $template->load(); - $template->src .= "\n".'{{'.$newElement->elementid.'}}'; - $template->save(); + $templateModel = $template->loadTemplateModelFor( $modelId ); + $templateModel->load(); + $templateModel->src .= "\n".'{{'.$newElement->name.'}}'; + $templateModel->save(); } } @@ -322,9 +302,9 @@ class TemplateAction extends BaseAction */ function propView() { - $this->setTemplateVar('name' ,$this->template->name ); - $this->setTemplateVar('extension',$this->template->extension ); - $this->setTemplateVar('mime_type',$this->template->mimeType() ); + $this->setTemplateVar('name' , $this->template->name ); + $this->setTemplateVar('extension','' ); + $this->setTemplateVar('mime_type','' ); } @@ -365,12 +345,13 @@ class TemplateAction extends BaseAction $this->setTemplateVar('models',$project->getModels() ); - if ( ! $this->template->modelid ) - $this->template->modelid = $project->getDefaultModelId(); + $modelId = $this->request->getRequestVar(REQ_PARAM_MODEL_ID); + if ( ! $modelId ) + $modelId = Project::create( $this->template->projectid )->getDefaultModelId(); - $this->setTemplateVar('modelid' ,$this->template->modelid ); + $this->setTemplateVar('modelid' ,$modelId); - $this->setTemplateVar('preview_url',Html::url('template','show',$this->template->templateid,array('target'=>'none','modelid'=>$this->template->modelid ) ) ); + $this->setTemplateVar('preview_url',Html::url('template','show',$this->template->templateid,array('target'=>'none','modelid'=>$modelId ) ) ); } @@ -381,15 +362,21 @@ class TemplateAction extends BaseAction */ function showView() { - header('Content-Type: '.$this->template->mimeType().'; charset=UTF-8' ); - $text = $this->template->src; + $modelId = $this->request->getRequestVar(REQ_PARAM_MODEL_ID); + if ( ! $modelId ) + $modelId = Project::create( $this->template->projectid )->getDefaultModelId(); + + $templatemodel = new TemplateModel($this->template->templateid, $modelId); + $templatemodel->load(); + + header('Content-Type: '.$templatemodel->mimeType().'; charset=UTF-8' ); + $text = $templatemodel->src; foreach( $this->template->getElementIds() as $elid ) { $element = new Element( $elid ); $element->load(); - $url = Html::url( 'element','edit',$this->template->templateid,array('elementid'=>$elid)); - + $text = str_replace('{{'.$elid.'}}',$element->name, $text ); $text = str_replace('{{->'.$elid.'}}','', @@ -408,9 +395,7 @@ class TemplateAction extends BaseAction unset( $element ); } - echo $text; - - exit(); + $this->setTemplateVar('text',$text); } diff --git a/modules/cms/action/TemplatelistAction.class.php b/modules/cms/action/TemplatelistAction.class.php @@ -5,6 +5,8 @@ namespace cms\action; use cms\model\Element; use cms\model\Project; use cms\model\Template; +use cms\model\TemplateModel; +use util\exception\ValidationException; use util\Session; // OpenRat Content Management System @@ -107,7 +109,7 @@ class TemplatelistAction extends BaseAction - function addPost() + public function addPost() { // Hinzufuegen eines Templates if ( $this->getRequestVar('name') == '' ) @@ -161,19 +163,19 @@ class TemplatelistAction extends BaseAction foreach( $project->getModelIds() as $modelid ) { // Template laden - $copy_template->modelid = $modelid; $copy_template->load(); - - $template->modelid = $modelid; - $src = $copy_template->src; - + + $copyTemplateModel = $copy_template->loadTemplateModelFor( $modelid ); + $src = $copyTemplateModel->src; + // Elemente im Quelltext an die geänderten Element-Idn anpassen. foreach( $elementMapping as $oldId=>$newId) $src = str_replace('{{'.$oldId.'}}','{{'.$newId.'}}',$src); - $template->src = $src; - $template->extension = $copy_template->extension; - $template->save(); + $newTemplateModel = $template->loadTemplateModelFor( $modelid ); + $newTemplateModel->src = $src; + $newTemplateModel->extension = $copyTemplateModel->extension; + $newTemplateModel->save(); } $this->addNotice('template',$copy_template->name,'COPIED','ok'); @@ -188,6 +190,9 @@ class TemplatelistAction extends BaseAction $template->add( $this->getRequestVar('name') ); + $templateModel = $template->loadTemplateModelFor( $this->project->getDefaultModelId() ); + + // FIXME $example = parse_ini_file('examples/templates/'.$this->getRequestVar('example'),true); foreach( $example as $exampleKey=>$exampleElement ) @@ -209,31 +214,28 @@ class TemplatelistAction extends BaseAction $element->defaultText = str_replace(';',"\n",$element->defaultText); $element->save(); -// Html::debug($element,"Element"); } } -// Html::debug($template,"Template"); $template->name = $this->getRequestVar('name'); - $template->src = str_replace(';',"\n",$template->src); + $templateModel->src = str_replace(';',"\n",$templateModel->src); foreach( $template->getElementNames() as $elid=>$elname ) { - $template->src = str_replace('{{'.$elname.'}}' ,'{{'.$elid.'}}' ,$template->src ); - $template->src = str_replace('{{->'.$elname.'}}','{{->'.$elid.'}}',$template->src ); + $templateModel->src = str_replace('{{'.$elname.'}}' ,'{{'.$elid.'}}' ,$templateModel->src ); + $templateModel->src = str_replace('{{->'.$elname.'}}','{{->'.$elid.'}}',$templateModel->src ); } $template->save(); + $templateModel->save(); + $this->addNotice('template',$template->name,'ADDED','ok'); break; + default: - $this->addValidationError('type'); - $this->callSubAction('add'); - return; + throw new ValidationException('type'); } - - $this->setTemplateVar('tree_refresh',true); } diff --git a/modules/cms/generator/PageContext.class.php b/modules/cms/generator/PageContext.class.php @@ -62,9 +62,9 @@ class PageContext extends BaseContext switch( $this->scheme ) { case Producer::SCHEME_PREVIEW: - return new PreviewLink(); + return new PreviewLink( $this ); case Producer::SCHEME_PUBLIC: - return new PublicLink(); + return new PublicLink( $this ); default: return null; } diff --git a/modules/cms/generator/PageGenerator.class.php b/modules/cms/generator/PageGenerator.class.php @@ -85,9 +85,7 @@ class PageGenerator extends BaseGenerator $page->load(); $template = new Template( $page->templateid ); - $template->modelid = $this->context->modelId; $template->load(); - $this->ext = $template->extension; $values = $this->generatePageElements( $page ); @@ -223,33 +221,31 @@ class PageGenerator extends BaseGenerator $withLanguage = count($allLanguages) > 1 || config('publish','filename_language') == 'always'; $withModel = count($allModels ) > 1 || config('publish','filename_type' ) == 'always'; - if ( !$withLanguage || $project->content_negotiation && config('publish','negotiation','page_negotiate_language' ) ) - { - $format = str_replace('{language}' ,'',$format ); - $format = str_replace('{language_sep}','',$format ); - } - else - { + $languagePart = ''; + $typePart = ''; + + if ( $withLanguage ) { $l = new Language( $this->context->languageId ); $l->load(); - $format = str_replace('{language}' ,$l->isoCode ,$format ); - $format = str_replace('{language_sep}',config('publish','language_sep'),$format ); - } - if ( !$withModel || $project->content_negotiation && config('publish','negotiation','page_negotiate_type' ) ) - { - $format = str_replace('{type}' ,'',$format ); - $format = str_replace('{type_sep}','',$format ); + $languagePart = $l->isoCode; } - else - { + + if ( $withModel ) { $templateModel = new TemplateModel( $page->templateid, $this->context->modelId ); $templateModel->load(); - $format = str_replace('{type}' ,$templateModel->extension ,$format ); - $format = str_replace('{type_sep}',config('publish','type_sep'),$format ); + $typePart = $templateModel->extension; } + $languageSep = $languagePart?config('publish','language_sep') :''; + $typeSep = $typePart ?config('publish','type_sep' ) :''; + + $format = str_replace('{language}' ,$languagePart ,$format ); + $format = str_replace('{language_sep}',$languageSep ,$format ); + $format = str_replace('{type}' ,$typePart ,$format ); + $format = str_replace('{type_sep}' ,$typeSep ,$format ); + return $page->path().'/'.$format; } } \ No newline at end of file diff --git a/modules/cms/generator/Producer.class.php b/modules/cms/generator/Producer.class.php @@ -3,8 +3,6 @@ namespace cms\generator; -use cms\generator\link\PreviewLink; -use cms\generator\link\PublicLink; use cms\model\BaseObject; use cms\model\File; use cms\model\Page; diff --git a/modules/cms/generator/ValueContext.class.php b/modules/cms/generator/ValueContext.class.php @@ -4,10 +4,6 @@ namespace cms\generator; - -use cms\generator\link\PreviewLink; -use cms\generator\link\PublicLink; - /** * The page context, necessary for generating and publishing a page. */ diff --git a/modules/cms/generator/ValueGenerator.class.php b/modules/cms/generator/ValueGenerator.class.php @@ -158,7 +158,8 @@ class ValueGenerator extends BaseGenerator break; case 'ssi': - $inhalt .= '<!--#include virtual="'.$page->path_to_object($oid).'" -->'; + $linkScheme = $pageContext->getLinkScheme(); + $inhalt .= '<!--#include virtual="'.$linkScheme->linkToObject( $page,new BaseObject($oid)).'" -->'; break; default: @@ -176,7 +177,6 @@ class ValueGenerator extends BaseGenerator if ( false&&$value->publisher->isSimplePreview() ) { $p = new Page( $objectid ); - $p->context = $page->context; $p->load(); $inhalt = $p->filename; unset( $p ); @@ -198,7 +198,8 @@ class ValueGenerator extends BaseGenerator break; case 'ssi': - $inhalt = '<!--#include virtual="'.$page->path_to_object($objectid).'" -->'; + $linkScheme = $pageContext->getLinkScheme(); + $inhalt = '<!--#include virtual="'.$linkScheme->linkToObject( $page,new BaseObject($objectid)).'" -->'; break; default: @@ -285,7 +286,6 @@ class ValueGenerator extends BaseGenerator break; $linkedPage = new Page( $linkValue->linkToObjectId ); - $linkedPage->context = $page->context; $linkedPage->load(); $linkedPageTemplate = new Template( $linkedPage->templateid ); @@ -856,7 +856,7 @@ class ValueGenerator extends BaseGenerator $inhalt = $page->getNameForLanguage( $pageContext->languageId )->description; break; case 'page_fullfilename': - $inhalt = $page->full_filename(); + $inhalt = $this->getPublicFilename(); break; case 'page_filename': $inhalt = $page->filename(); @@ -1002,7 +1002,7 @@ class ValueGenerator extends BaseGenerator - if ( $page->icons && $element->withIcon && $page->isHtml() ) + if ( $this->context->pageContext->scheme == Producer::SCHEME_PREVIEW && $element->withIcon && $page->isHtml() ) { // Anklickbaren Link voranstellen. $iconLink = '<a href="javascript:parent.openNewAction(\''.$element->name.'\',\'pageelement\',\''.$page->objectid.'_'.$element->elementid.'\');" title="'.$element->desc.'"><img src="'.OR_THEMES_DIR.$conf['interface']['theme'].'/images/icon_el_'.$element->type.IMG_ICON_EXT.'" border="0" align="left"></a>'; diff --git a/modules/cms/generator/link/PreviewLink.class.php b/modules/cms/generator/link/PreviewLink.class.php @@ -2,6 +2,7 @@ namespace cms\generator\link; +use cms\generator\PageContext; use cms\model\Alias; use cms\model\BaseObject; use cms\model\Link; @@ -17,7 +18,19 @@ use util\exception\GeneratorException; class PreviewLink implements LinkFormat { - /** + private $pageContext; + + /** + * PublicLink constructor. + * @param $pageContext PageContext + */ + public function __construct($pageContext) + { + $this->pageContext = $pageContext; + } + + + /** * @param $from \cms\model\BaseObject * @param $to \cms\model\BaseObject */ @@ -26,12 +39,8 @@ class PreviewLink implements LinkFormat $param = array( 'oid' => '__OID__'.$to->objectid.'__', - REQ_PARAM_MODEL_ID => $from->modelid , - REQ_PARAM_LANGUAGE_ID => $from->languageid ); - - if ( $from->icons ) - $param['withIcons'] = '1'; - + REQ_PARAM_MODEL_ID => $this->pageContext->modelId , + REQ_PARAM_LANGUAGE_ID => $this->pageContext->languageId ); // Interne Verlinkungen in der Seitenvorschau switch( $to->typeid ) diff --git a/modules/cms/generator/link/PublicLink.class.php b/modules/cms/generator/link/PublicLink.class.php @@ -2,12 +2,15 @@ namespace cms\generator\link; +use cms\generator\PageContext; use cms\model\BaseObject; use cms\model\File; use cms\model\Folder; +use cms\model\Language; use cms\model\Link; use cms\model\Page; use cms\model\Project; +use cms\model\TemplateModel; use cms\model\Url; use cms\generator\target\Dav; use cms\generator\target\Fax; @@ -37,8 +40,22 @@ class PublicLink implements LinkFormat const MAX_RECURSIVE_COUNT = 10; + /** + * @var PageContext + */ + private $pageContext; - /** + /** + * PublicLink constructor. + * @param $pageContext PageContext + */ + public function __construct($pageContext) + { + $this->pageContext = $pageContext; + } + + + /** * @param $from \cms\model\BaseObject * @param $to \cms\model\BaseObject */ @@ -62,38 +79,84 @@ class PublicLink implements LinkFormat $to->objectLoad(); } - switch( $to->typeid ) - { - case BaseObject::TYPEID_FILE: - case BaseObject::TYPEID_IMAGE: - case BaseObject::TYPEID_TEXT: + switch( $to->typeid ) { + case BaseObject::TYPEID_FILE: + case BaseObject::TYPEID_IMAGE: + case BaseObject::TYPEID_TEXT: - $f = new File( $to->objectid ); + $f = new File($to->objectid); - $p = Project::create( $to->projectid )->load(); - $f->content_negotiation = $p->content_negotiation; + $f->load(); + $filename = $f->filename(); - $f->load(); - $filename = $f->filename(); - break; + if ( $fromProject->publishFileExtension && ! $fromProject->content_negotiation ) + // Add file extension + $filename .= '.'.$f->extension; + + break; + + case BaseObject::TYPEID_PAGE: + + if ($fromProject->cut_index && $to->filename == config('publish', 'default')) { + $filename = ''; // Link auf Index-Datei, der Dateiname bleibt leer. + } else { + + $page = new Page($to->objectid); + $page->load(); + + $parentFolder = new Folder($page->parentid); + $parentFolder->load(); + + $format = config('publish', 'format'); + $format = str_replace('{filename}', $page->filename(), $format); + + $allLanguages = $fromProject->getLanguageIds(); + $allModels = $fromProject->getModelIds(); + + $withLanguage = + !$fromProject->content_negotiation && + $fromProject->publishPageExtension && + (count($allLanguages) > 1 || config('publish', 'filename_language') == 'always'); + + $withModel = + ! $fromProject->content_negotiation && + ! $fromProject->publishPageExtension && + (count($allModels) > 1 || config('publish', 'filename_type') == 'always'); + + $languagePart = ''; + $typePart = ''; + + if ($withLanguage ) { + $l = new Language($this->pageContext->languageId); + $l->load(); + $languagePart = $l->isoCode; + } + + if ( $withModel ) { + $templateModel = new TemplateModel( $page->templateid, $this->pageContext->modelId ); + $templateModel->load(); + + $typePart = $templateModel->extension; + } + + $languageSep = $languagePart?config('publish','language_sep') :''; + $typeSep = $typePart ?config('publish','type_sep' ) :''; + + $format = str_replace('{language}' ,$languagePart ,$format ); + $format = str_replace('{language_sep}',$languageSep ,$format ); + $format = str_replace('{type}' ,$typePart ,$format ); + $format = str_replace('{type_sep}' ,$typeSep ,$format ); + + $filename = $format; + } - case BaseObject::TYPEID_PAGE: - - $p = new Page( $to->objectid ); - $p->languageid = $from->languageid; - $p->modelid = $from->modelid; - $p->cut_index = $from->cut_index; - $p->content_negotiation = $from->content_negotiation; - $p->withLanguage = $from->withLanguage; - $p->withModel = $from->withModel; - $p->load(); - $filename = $p->getFilename(); break; case BaseObject::TYPEID_URL: $url = new Url( $to->objectid ); $url->load(); return $url->url; + default: throw new \LogicException("Could not build a link to the unknown Type ".$to->typeid.':'.$to->getType() ); } diff --git a/modules/cms/macros/macro/LanguageLinksForPage.class.php b/modules/cms/macros/macro/LanguageLinksForPage.class.php @@ -21,6 +21,8 @@ namespace cms\macros\macro; // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. // --------------------------------------------------------------------------- +use cms\generator\PageContext; +use cms\generator\Producer; use cms\model\Language; use cms\model\Page; use cms\model\Project; @@ -56,15 +58,17 @@ class LanguageLinksForPage extends Macro $targetPage = new Page( $this->page->objectid ); $targetPage->publisher = $this->page->publisher; - $targetPage->languageid = $lid; - $targetPage->modelid = $this->page->modelid; $targetPage->load(); - $link = $this->page->publisher->linkToObject( $this->page, $targetPage ); + $myPageContext = clone $this->pageContext; + $myPageContext->languageId = $lid; + + $linkScheme = $myPageContext->getLinkScheme(); + + $link = $linkScheme->linkToObject( $this->getPage(), $targetPage ); echo '<li><a hreflang="'.$language->isoCode.'" href="'.$link.'">'.strtolower($language->isoCode).'</a></li>'; } - $this->page->languageid = $languageId; echo '</ul>'; } } diff --git a/modules/cms/model/Element.class.php b/modules/cms/model/Element.class.php @@ -572,9 +572,7 @@ SQL public function getName() { - return $this->name; + return $this->label; } -} - -?>- \ No newline at end of file +}+ \ No newline at end of file diff --git a/modules/cms/model/File.class.php b/modules/cms/model/File.class.php @@ -47,9 +47,6 @@ class File extends BaseObject var $tmpfile; - var $content_negotiation = false; - - /** * Um Probleme mit BLOB-Feldern und Datenbank-Besonderheiten zu vermeiden, @@ -86,49 +83,6 @@ class File extends BaseObject }, $this->lastchangeDate ); } - /** - * Ermitteln des Dateinamens dieser Datei - * - * @return String Kompletter Dateiname, z.B. '/pfad/datei.jpeg' - */ - function full_filename() - { - if ( !empty($this->fullFilename) ) - return $this->fullFilename; - - $filename = parent::full_filename(); - - if ( $this->content_negotiation && config('publish','negotiation','file_negotiate_type' ) ) - { - // Link auf Datei: Extension bleibt aufgrund Content-Negotiation leer - } - else - { - // Nein, wurde bereits in filename() ergänzt. - //if ( !empty($this->extension) ) - // $filename .= '.'.$this->extension; - } - - $this->fullFilename = $filename; - return $filename; - } - - - - /** - * Ermitteln des Dateinamens dieser Datei (ohne Pfadangabe) - * - * @return String Kompletter Dateiname, z.B. '/pfad/datei.jpeg' - */ - public function filename() - { - if ( $this->extension ) - return parent::filename().'.'.$this->extension; - else - return parent::filename(); - - } - /** diff --git a/modules/cms/model/Folder.class.php b/modules/cms/model/Folder.class.php @@ -207,63 +207,6 @@ class Folder extends BaseObject } - public function publish( $withPages,$withFiles,$subdirs = false ) - { - set_time_limit(300); - - foreach( $this->getObjectIds() as $oid ) - { - try { - $o = new BaseObject($oid); - $o->objectLoadRaw(); - - if ($o->isPage && $withPages) { - $p = new Page($oid); - $p->load(); - $p->publisher = &$this->publisher; - $p->publish(); - } - - if ($o->isFile && $withFiles) { - $f = new File($oid); - $f->load(); - $f->publisher = &$this->publisher; - $f->publish(); - } - - if ($o->isImage && $withFiles) { - $f = new Image($oid); - $f->load(); - $f->publisher = &$this->publisher; - $f->publish(); - } - - if ($o->isText && $withFiles) { - $f = new Text($oid); - $f->load(); - $f->publisher = &$this->publisher; - $f->publish(); - } - - if ($o->isFolder && $subdirs) { - $f = new Folder($oid); - $f->load(); - $f->publisher = &$this->publisher; - $f->publish($withPages, $withFiles, true); - } - } - catch( Exception $e) - { - // Maybe it is possible to start on with the next one? - // But we have to throw an exception here to inform the UI... - - // Lets wrap it. - throw new \LogicException("Could not publish ".$o->__toString().": ".$e->getMessage(),$e->getCode(),$e); - } - } - } - - function getObjectIdByFileName( $filename ) { $db = db_connection(); diff --git a/modules/cms/model/Page.class.php b/modules/cms/model/Page.class.php @@ -35,27 +35,15 @@ use util\cache\FileCache; class Page extends BaseObject { - var $enclosingObjectId = -1; //Id der Seite in die diese Seite im Rahmen der Generierung eingefügt wird - //Wichtig für include-Values - var $pageid; - var $templateid; + public $pageid; + public $templateid; /** * @var Template */ - var $template; + public $template; - /** - * @deprecated - */ - var $simple = false; - - /** - * @deprecated replaced by publish->isPublic() - */ - var $public = false; - - var $el = array(); + public $el = array(); /** * Stellt fest, ob die Editier-Icons angezeigt werden sollen. Dies ist @@ -64,32 +52,9 @@ class Page extends BaseObject * natürlich "false" sein. * @var boolean */ - var $icons = false; var $src = ''; - var $edit = false; - - var $content_negotiation = false; - var $cut_index = false; - var $default_language = false; -// var $withLanguage = false; - var $withLanguage = true; - var $withModel = true; -// var $withModel = false; - var $link = false; - var $fullFilename = ''; - - var $log_filenames = array(); - var $modelid = 0; - /** - * @var Value[] - */ - public $values; - - /** - * Inhalt der Seite. - */ - public $value; + var $modelid = 0; /** * Page context. @@ -109,21 +74,6 @@ class Page extends BaseObject } - /** - * @return FileCache - */ - public function getCache() { - $cacheKey = array('db'=>db()->id, - 'page' =>$this->objectid, - 'language' =>$this->languageid, - 'model' =>$this->modelid, - 'publish' => \util\ClassUtils::getSimpleClassName($this->publisher) ); - - return new FileCache( $cacheKey,function() { - return $this->generateValue(); - }, $this->lastchangeDate ); - - } /** * Ermitteln der Objekt-ID (Tabelle object) anhand der Seiten-ID (Tablle page) @@ -162,12 +112,12 @@ class Page extends BaseObject /** * Ermitteln aller Eigenschaften * - * @return Array + * @return array */ function getProperties() { return array_merge( parent::getProperties(), - array('full_filename'=>$this->realFilename(), + array('full_filename'=>'', 'pageid' =>$this->pageid, 'templateid' =>$this->templateid, 'mime_type' =>$this->mimeType() ) ); @@ -190,34 +140,6 @@ class Page extends BaseObject /** - * Ermittelt den Pfad zu einem beliebigen Objekt - * - * @param Integer Objekt-ID des Zielobjektes - * @return String Relative Link-angabe, Beispiel: '../../pfad/datei.jpeg' - */ - public function path_to_object( $objectid ) - { - if ( ! BaseObject::available( $objectid) ) - return 'about:blank'; - - $from = new Page($this->context->sourceObjectId); - $from->load(); - - $to = new BaseObject($objectid); - $toAlias = $to->getAlias(); - if ( $toAlias ) - $to = $toAlias; // Alias exists. - $to->load(); - - $inhalt = $this->publisher->linkToObject( $from, $to ); - - return $inhalt; - } - - - - - /** * Eine Seite hinzufuegen */ function add() @@ -381,93 +303,6 @@ SQL } - - /** - * Ermitteln des Dateinamens dieser Seite. - * - * Wenn '$this->content_negotiation' auf 'true' steht, wird der Dateiname ggf. gekürzt, - * so wie er für HTML-Links verwendet wird. Sonst wird immer der echte Dateiname - * ermittelt. - * - * @return String Kompletter Dateiname, z.B. '/pfad/seite.en.html' - */ - function full_filename() - { - $filename = $this->path().'/'.$this->getFilename(); - - $this->fullFilename = $filename; - return $filename; - } - - - /** - * Ermitteln des Dateinamens dieser Seite. - * - * Wenn '$this->content_negotiation' auf 'true' steht, wird der Dateiname ggf. gekürzt, - * so wie er für HTML-Links verwendet wird. Sonst wird immer der echte Dateiname - * ermittelt. - * - * @return String Kompletter Dateiname, z.B. '/pfad/seite.en.html' - */ - function getFilename() - { - return self::filename(); - } - - - - /** - * Ermitteln des Dateinamens dieser Seite. - * - * Wenn '$this->content_negotiation' auf 'true' steht, wird der Dateiname ggf. gekürzt, - * so wie er für HTML-Links verwendet wird. Sonst wird immer der echte Dateiname - * ermittelt. - * - * @return String Kompletter Dateiname, z.B. '/pfad/seite.en.html' - * @deprecated use pagecontext - */ - function filename() - { - if ( $this->cut_index && $this->filename == config('publish','default') ) - { - return ''; // Link auf Index-Datei, der Dateiname bleibt leer. - } - else - { - $format = config('publish','format'); - $format = str_replace('{filename}',parent::filename(),$format ); - - if ( !$this->withLanguage || $this->content_negotiation && config('publish','negotiation','page_negotiate_language' ) ) - { - $format = str_replace('{language}' ,'',$format ); - $format = str_replace('{language_sep}','',$format ); - } - else - { - $l = new Language( $this->languageid ); - $l->load(); - $format = str_replace('{language}' ,$l->isoCode ,$format ); - $format = str_replace('{language_sep}',config('publish','language_sep'),$format ); - } - - if ( !$this->withModel || $this->content_negotiation && config('publish','negotiation','page_negotiate_type' ) ) - { - $format = str_replace('{type}' ,'',$format ); - $format = str_replace('{type_sep}','',$format ); - } - else - { - $t = new Template( $this->templateid ); - $t->modelid = $this->modelid; - $t->load(); - $format = str_replace('{type}' ,$t->extension ,$format ); - $format = str_replace('{type_sep}',config('publish','type_sep'),$format ); - } - return $format; - } - } - - /** @@ -513,50 +348,6 @@ SQL - /** - * Generieren dieser Seite in Dateisystem und/oder auf FTP-Server - * @deprecated - */ - public function publish() - { - $project = Project::create( $this->projectid ); - - $allLanguages = $project->getLanguageIds(); - $allModels = $project->getModelIds(); - - // Schleife ueber alle Sprachvarianten - foreach( $allLanguages as $languageid ) - { - $this->languageid = $languageid; - $this->withLanguage = count($allLanguages) > 1 || config('publish','filename_language') == 'always'; - $this->withModel = count($allModels ) > 1 || config('publish','filename_type' ) == 'always'; - - // Schleife ueber alle Projektvarianten - foreach( $allModels as $projectmodelid ) - { - $this->modelid = $projectmodelid; - - $this->load(); - $this->getCache()->load(); - - // Vorlage ermitteln. - $t = new Template( $this->templateid ); - $t->modelid = $this->modelid; - $t->load(); - - // Nur wenn eine Datei-Endung vorliegt wird die Seite veroeffentlicht - if ( !empty($t->extension) ) - { - $this->publisher->copy( $this->getCache()->getFilename(),$this->full_filename() ); - $this->publisher->publishedObjects[] = $this->getProperties(); - } - } - } - - parent::setPublishedTimestamp(); - - } - /** * Ermittelt den Mime-Type zu dieser Seite @@ -565,14 +356,10 @@ SQL */ function mimeType() { - if ( ! is_object($this->template) ) - { - $this->template = new Template( $this->templateid ); - $this->template->modelid = $this->modelid; - $this->template->load(); - } + $templateModel = new TemplateModel( $this->templateid,$this->getProject()->getDefaultModelId() ); + $templateModel->load(); - $this->mime_type = $this->template->mimeType(); + $this->mime_type = $templateModel->mimeType(); return( $this->mime_type ); } @@ -585,17 +372,6 @@ SQL } - /** - * Ermittelt den Dateinamen dieser Seite, so wie sie auch im Dateisystem steht. - */ - function realFilename() - { - $project = new Project( $this->projectid ); - $this->withLanguage = config('publish','filename_language') == 'always' || count($project->getLanguageIds()) > 1; - $this->withModel = config('publish','filename_type' ) == 'always' || count($project->getModelIds() ) > 1; - - return $this->full_filename(); - } /** @@ -609,6 +385,6 @@ SQL public function __toString() { - return 'Id '.$this->pageid.' (filename='.$this->filename.',language='.$this->languageid.', modelid='.$this->modelid.', templateid='.$this->templateid.')'; + return 'Id '.$this->pageid.' (filename='.$this->filename.', templateid='.$this->templateid.')'; } } diff --git a/modules/cms/model/Project.class.php b/modules/cms/model/Project.class.php @@ -366,13 +366,15 @@ SQL $template = new Template(); $template->projectid = $this->projectid; $template->name = ''; - $template->modelid = $model->modelid; - $template->languageid = $language->languageid; - $template->extension = 'html'; - $template->src = '<html><body><h1>Hello world</h1><hr><p>Hello, World.</p></body></html>'; $template->add(); $template->save(); + // 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->save(); + // Beispiel-Seite anlegen $page = new Page(); $page->parentid = $folder->objectid; diff --git a/modules/cms/model/Template.class.php b/modules/cms/model/Template.class.php @@ -16,6 +16,8 @@ namespace cms\model; // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +use cms\base\DB; +use language\Messages; /** @@ -45,27 +47,7 @@ class Template extends ModelBase */ var $name = 'unnamed'; - /** - * ID der Projektvariante - * @deprecated Zugriff über TemplateModel - * @type Integer - */ - var $modelid = 0; - /** - * Dateierweiterung dieses Templates (abh?ngig von der Projektvariante) - * @deprecated Zugriff über TemplateModel - * @type String - */ - var $extension=''; - - /** - * Inhalt des Templates (abh?ngig von der Projektvariante) - * @deprecated Zugriff über TemplateModel - * @type String - */ - var $src=''; - // Konstruktor function __construct( $templateid='' ) { @@ -89,65 +71,31 @@ class Template extends ModelBase $this->name = $row['name' ]; $this->projectid = $row['projectid']; + } + - $templateModel = new TemplateModel( $this->templateid, $this->modelid ); + public function loadTemplateModelFor( $modelid ) { + + $templateModel = new TemplateModel( $this->templateid, $modelid ); $templateModel->load(); - $this->extension = $templateModel->extension; - $this->src = $templateModel->src; + return $templateModel; } - /** * Abspeichern des Templates in der Datenbank */ function save() { if ( $this->name == "" ) - $this->name = lang('TEMPLATE').' #'.$this->templateid; - - $db = db_connection(); + $this->name = lang(Messages::TEMPLATE).' #'.$this->templateid; - $stmt = $db->sql( 'UPDATE {{template}}'. + $stmt = Db::sql( 'UPDATE {{template}}'. ' SET name={name}'. ' WHERE id={templateid}' ); $stmt->setString( 'name' ,$this->name ); $stmt->setInt ( 'templateid',$this->templateid ); $stmt->query(); - - $stmt = $db->sql( 'SELECT COUNT(*) FROM {{templatemodel}}'. - ' WHERE templateid={templateid}'. - ' AND projectmodelid={modelid}' ); - $stmt->setInt ( 'templateid' ,$this->templateid ); - $stmt->setInt ( 'modelid' ,$this->modelid ); - - if ( intval($stmt->getOne()) > 0 ) - { - // Vorlagen-Quelltext existiert für diese Varianten schon. - $stmt = $db->sql( 'UPDATE {{templatemodel}}'. - ' SET extension={extension},'. - ' text={src} '. - ' WHERE templateid={templateid}'. - ' AND projectmodelid={modelid}' ); - } - else - { - // Vorlagen-Quelltext wird für diese Varianten neu angelegt. - $stmt = $db->sql('SELECT MAX(id) FROM {{templatemodel}}'); - $nextid = intval($stmt->getOne())+1; - - $stmt = $db->sql( 'INSERT INTO {{templatemodel}}'. - ' (id,templateid,projectmodelid,extension,text) '. - ' VALUES ({id},{templateid},{modelid},{extension},{src}) '); - $stmt->setInt ( 'id',$nextid ); - } - - $stmt->setString( 'extension' ,$this->extension ); - $stmt->setString( 'src' ,$this->src ); - $stmt->setInt ( 'templateid' ,$this->templateid ); - $stmt->setInt ( 'modelid' ,$this->modelid ); - - $stmt->query(); } @@ -359,38 +307,9 @@ SQL } - /** - * Ermittelt den Mime-Type zu diesem Template. - * - * Es wird die Extension des Templates betrachtet und dann mit Hilfe der - * Konfigurationsdatei 'mime-types.ini' der Mime-Type bestimmt. - * - * @return String Mime-Type - */ - function mimeType() - { - global $conf; - $mime_types = $conf['mime-types']; - - // Nur den letzten Teil der Extension auswerten: - // Aus 'mobile.html' wird nur 'html' verwendet. - $parts = explode('.',$this->extension); - $extension = strtolower(array_pop($parts)); - - if ( !empty($mime_types[$extension]) ) - $this->mime_type = $mime_types[$extension]; - else - // Wenn kein Mime-Type gefunden, dann Standardwert setzen - $this->mime_type = 'application/octet-stream'; - - return( $this->mime_type ); - } - public function getName() { return $this->name; } -} - -?>- \ No newline at end of file +}+ \ No newline at end of file diff --git a/modules/cms/model/TemplateModel.class.php b/modules/cms/model/TemplateModel.class.php @@ -2,6 +2,8 @@ namespace cms\model; +use cms\base\DB; + /** * Templatemodell. Enthält den Template-Sourcecode und die Extension. * @@ -83,12 +85,13 @@ class TemplateModel extends ModelBase /** * Abspeichern des Templates in der Datenbank */ - function save() + public function save() { - $db = db_connection(); + if ( ! $this->isPersistent() ) + $this->add(); // Vorlagen-Quelltext existiert für diese Varianten schon. - $stmt = $db->sql( 'UPDATE {{templatemodel}}'. + $stmt = Db::sql( 'UPDATE {{templatemodel}}'. ' SET extension={extension},'. ' text={src} '. ' WHERE id={id}' ); @@ -105,21 +108,18 @@ class TemplateModel extends ModelBase /** * Abspeichern des Templates in der Datenbank */ - function add() + protected function add() { - $db = db_connection(); - // Vorlagen-Quelltext wird neu angelegt. - $stmt = $db->sql('SELECT MAX(id) FROM {{templatemodel}}'); + $stmt = Db::sql('SELECT MAX(id) FROM {{templatemodel}}'); $nextid = intval($stmt->getOne())+1; $stmt = $db->sql( 'INSERT INTO {{templatemodel}}'. - ' (id,templateid,projectmodelid,extension,text) '. - ' VALUES ({id},{templateid},{modelid},{extension},{src}) '); + ' (id,templateid,projectmodelid,extension) '. + ' VALUES ({id},{templateid},{modelid},{extension}) '); $stmt->setInt ( 'id',$nextid ); $stmt->setString( 'extension' ,$this->extension ); - $stmt->setString( 'src' ,$this->src ); $stmt->setInt ( 'templateid' ,$this->templateid ); $stmt->setInt ( 'modelid' ,$this->modelid ); diff --git a/modules/cms/model/Value.class.php b/modules/cms/model/Value.class.php @@ -699,7 +699,7 @@ SQL public function getName() { - return ''; + return $this->element->label; } diff --git a/modules/cms/ui/themes/default/html/views/pageelement/advanced.php b/modules/cms/ui/themes/default/html/views/pageelement/advanced.php @@ -25,7 +25,7 @@ <span><?php echo escapeHtml(''.@$languagename.'') ?> </span> </td> - <td class="<?php echo escapeHtml('clickable') ?>"><?php echo escapeHtml('') ?> + <td title="<?php echo escapeHtml(''.@$text.'') ?>" class="<?php echo escapeHtml('clickable') ?>"><?php echo escapeHtml('') ?> <a target="<?php echo escapeHtml('_self') ?>" data-type="<?php echo escapeHtml('edit') ?>" data-action="<?php echo escapeHtml('pageelement') ?>" data-method="<?php echo escapeHtml('value') ?>" data-id="<?php echo escapeHtml('') ?>" data-extra="<?php echo escapeHtml('{\'languageid\':\''.@$languageid.'\'}') ?>" href="<?php echo escapeHtml('/#/pageelement/') ?>"><?php echo escapeHtml('') ?> <?php $if1=($date); if($if1) { ?> <?php include_once( 'modules/template_engine/components/html/date/component-date.php'); { component_date($date); ?> diff --git a/modules/cms/ui/themes/default/html/views/pageelement/advanced.tpl.src.xml b/modules/cms/ui/themes/default/html/views/pageelement/advanced.tpl.src.xml @@ -19,13 +19,13 @@ <column> <text value="${languagename}" /> </column> - <column class="clickable"> + <column class="clickable" title="${text}"> <link subaction="value" var1="languageid" value1="${languageid}" type="edit" action="pageelement"> <if true="${date}"> <date date="${date}" /> </if> <if true="${text}"> - <text value="${text}" maxlength="30" escape="true" /> + <text value="${text}" escape="true" /> </if> </link> </column> diff --git a/modules/cms/ui/themes/default/html/views/pageelement/edit.php b/modules/cms/ui/themes/default/html/views/pageelement/edit.php @@ -21,7 +21,7 @@ <span><?php echo escapeHtml(''.@$languagename.'') ?> </span> </td> - <td title="<?php echo escapeHtml(''.@$value.'') ?>"><?php echo escapeHtml('') ?> + <td title="<?php echo escapeHtml(''.@$text.'') ?>"><?php echo escapeHtml('') ?> <a target="<?php echo escapeHtml('_self') ?>" data-type="<?php echo escapeHtml('edit') ?>" data-action="<?php echo escapeHtml('pageelement') ?>" data-method="<?php echo escapeHtml('value') ?>" data-id="<?php echo escapeHtml('') ?>" data-extra="<?php echo escapeHtml('{\'languageid\':\''.@$languageid.'\'}') ?>" href="<?php echo escapeHtml('/#/pageelement/') ?>"><?php echo escapeHtml('') ?> <span><?php echo escapeHtml(''.@$text.'') ?> </span> diff --git a/modules/cms/ui/themes/default/html/views/pageelement/edit.tpl.src.xml b/modules/cms/ui/themes/default/html/views/pageelement/edit.tpl.src.xml @@ -16,7 +16,7 @@ <column> <text value="${languagename}" /> </column> - <column title="${value}"> + <column title="${text}"> <link subaction="value" var1="languageid" value1="${languageid}" type="edit" action="pageelement"> <text value="${text}" maxlength="120" escape="true" /> </link> diff --git a/modules/cms/ui/themes/default/html/views/template/show.php b/modules/cms/ui/themes/default/html/views/template/show.php @@ -0,0 +1 @@ +<?php if (!defined('OR_TITLE')) exit(); ?><?php echo ''.@$text.'' ?>+ \ No newline at end of file diff --git a/modules/cms/ui/themes/default/html/views/template/show.tpl.src.xml b/modules/cms/ui/themes/default/html/views/template/show.tpl.src.xml @@ -0,0 +1,4 @@ +<text xmlns="http://www.openrat.de/template" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.openrat.de/template ../../../../../../../template_engine/components/template.xsd" + value="${text}" escape="false" type="none" />+ \ No newline at end of file diff --git a/modules/util/Tree.class.php b/modules/util/Tree.class.php @@ -14,6 +14,7 @@ use cms\model\Project; use cms\model\Group; use cms\model\Folder; use cms\model\Value; +use language\Messages; use util\exception\SecurityException; use util\Session; use util\Text; @@ -316,8 +317,6 @@ class Tree public function page($id) { $page = new Page($id); - $page->languageid = $_REQUEST[REQ_PARAM_LANGUAGE_ID]; - $page->modelid = $_REQUEST[REQ_PARAM_MODEL_ID]; $page->load(); @@ -335,7 +334,7 @@ class Tree $treeElement->action = 'pageelement'; $treeElement->type = 'pageelement'; $treeElement->icon = 'el_' . $element->getTypeName(); - $treeElement->extraId = array('elementid' => $elementid, REQ_PARAM_LANGUAGE_ID => $page->languageid, REQ_PARAM_MODEL_ID => $page->modelid); + $treeElement->extraId = array('elementid' => $elementid); $treeElement->description = lang('EL_' . $element->getTypeName()); @@ -357,8 +356,6 @@ class Tree list($pageid, $elementid) = $ids; $page = new Page($pageid); - $page->languageid = $_REQUEST[REQ_PARAM_LANGUAGE_ID]; - $page->modelid = $_REQUEST[REQ_PARAM_MODEL_ID]; $page->load(); @@ -379,7 +376,7 @@ class Tree $treeElement->action = $o->getType(); $treeElement->id = $o->objectid; $treeElement->internalId = $o->objectid; - $treeElement->extraId = array(REQ_PARAM_LANGUAGE_ID => $page->languageid, REQ_PARAM_MODEL_ID => $page->modelid); + $treeElement->extraId = array(); $treeElement->text = $o->getName(); $treeElement->description = lang('' . $o->getType()) . ' ' . $o->objectid; @@ -556,7 +553,7 @@ class Tree $treeElement->internalId = $id; $treeElement->extraId = array(REQ_PARAM_LANGUAGE_ID => $_REQUEST[REQ_PARAM_LANGUAGE_ID], REQ_PARAM_MODEL_ID => $_REQUEST[REQ_PARAM_MODEL_ID]); $treeElement->type = 'template'; - $treeElement->description = $t->name . ' (' . lang('TEMPLATE') . ' ' . $id . '): ' . htmlentities(Text::maxLength($t->src, 40)); + $treeElement->description = $t->name . ' (' . lang(Messages::TEMPLATE) . ' ' . $id . ')'; $this->addTreeElement($treeElement); } }