openrat-cms

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

commit ac40092f45820cb1f60f507a12ed29f36f4320ee
parent d2efb1a339c86b93a0d1a9765d6a305c3202a7f4
Author: Jan Dankert <develop@jandankert.de>
Date:   Sat, 27 Feb 2021 02:40:09 +0100

Fix: Use the sourceObjectId from the pageContext for links.

Diffstat:
Mmodules/cms/action/PageAction.class.php | 1-
Mmodules/cms/action/page/PagePubAction.class.php | 1+
Mmodules/cms/generator/ValueGenerator.class.php | 11+++++++----
Mmodules/cms/generator/link/PublicLink.class.php | 9+++++++++
Mmodules/util/Transformer.class.php | 5++++-
5 files changed, 21 insertions(+), 6 deletions(-)

diff --git a/modules/cms/action/PageAction.class.php b/modules/cms/action/PageAction.class.php @@ -105,7 +105,6 @@ class PageAction extends ObjectAction protected function createPageContext( $scheme ) { $context = new PageContext( $this->page->objectid,$scheme ); - $context->sourceObjectId = $this->page->objectid; if ( $this->request->hasLanguageId()) $context->languageId = $this->request->getLanguageId(); diff --git a/modules/cms/action/page/PagePubAction.class.php b/modules/cms/action/page/PagePubAction.class.php @@ -18,6 +18,7 @@ class PagePubAction extends PageAction implements Method { } public function post() { + if ( !$this->page->hasRight( Permission::ACL_PUBLISH ) ) throw new \util\exception\SecurityException( 'no right for publish' ); diff --git a/modules/cms/generator/ValueGenerator.class.php b/modules/cms/generator/ValueGenerator.class.php @@ -260,11 +260,12 @@ class ValueGenerator extends BaseGenerator } else { - $linkScheme = $pageContext->getLinkScheme(); - $target = new BaseObject( $objectid ); + $sourcePage = new Page( $pageContext->sourceObjectId ); // the source page + $target = new BaseObject( $objectid ); $target->load(); - $inhalt = $linkScheme->linkToObject( $page, $target ); + $linkScheme = $pageContext->getLinkScheme(); + $inhalt = $linkScheme->linkToObject( $sourcePage, $target ); } break; @@ -677,7 +678,9 @@ class ValueGenerator extends BaseGenerator $linkFormat = $pageContext->getLinkScheme(); $target = new BaseObject($oid); $target->load(); - $url = $linkFormat->linkToObject($page,$target); + + $sourcePage = new Page( $pageContext->sourceObjectId ); + $url = $linkFormat->linkToObject($sourcePage,$target); foreach( $t as $match ) $inhalt = str_replace($match,$url,$inhalt); diff --git a/modules/cms/generator/link/PublicLink.class.php b/modules/cms/generator/link/PublicLink.class.php @@ -11,6 +11,7 @@ use cms\model\Language; use cms\model\Link; use cms\model\Page; use cms\model\Project; +use cms\model\Template; use cms\model\TemplateModel; use cms\model\Url; use cms\generator\target\Dav; @@ -107,6 +108,14 @@ class PublicLink implements LinkFormat $page = new Page($to->objectid); $page->load(); + $template = new Template( $page->templateid ); + $template->load(); + + if ( ! $template->publish ) { + // fixme: target page is not publishable - what to do here? + return ''; + } + $parentFolder = new Folder($page->parentid); $parentFolder->load(); diff --git a/modules/util/Transformer.class.php b/modules/util/Transformer.class.php @@ -3,6 +3,7 @@ namespace util; use cms\model\BaseObject; +use cms\model\Page; use cms\model\Url as MUrl; use \util\exception\ObjectNotFoundException; use wikiparser\model\DocumentElement; @@ -80,7 +81,9 @@ class Transformer $linkFormat = $this->pageContext->getLinkScheme(); $target = new BaseObject($objectId); $target->load(); - $targetPath = $linkFormat->linkToObject( $this->page, $target ); + + $sourcePage = new Page( $this->pageContext->sourceObjectId ); + $targetPath = $linkFormat->linkToObject( $sourcePage, $target ); // Hack: Sonderzeichen muessen in URLs maskiert werden, aber nur bei URLs die aus Link-Objekten kommen, bei allem // anderen (insbesondere Preview-Links zu andereen Seiten) darf die Umsetzung nicht erfolgen.