File modules/cms/action/page/PageChangetemplateselectelementsAction.class.php
Last commit: Thu Oct 15 01:39:59 2026 +0200 Jan Dankert New: A much better generation of the OpenAPI Interface documents, supports now the UI API Objects.
1 <?php 2 namespace cms\action\page; 3 use cms\action\Action; 4 use cms\action\Method; 5 use cms\action\PageAction; 6 use cms\action\UiInParameter; 7 use cms\model\Element; 8 use cms\model\Permission; 9 use cms\model\Template; 10 use language\Messages; 11 12 class PageChangetemplateselectelementsAction extends PageAction implements Method { 13 14 public function getRequiredPermission(): int { 15 return Permission::ACL_PROP; 16 } 17 18 19 #[UiInParameter('newtemplateid')] 20 public function view() { 21 $newTemplateId = $this->request->getText( 'newtemplateid' ); 22 23 if ( $newTemplateId != 0 ) 24 { 25 $this->setTemplateVar('newtemplateid',$newTemplateId ); 26 27 $oldElements = array(); 28 $oldTemplate = new Template( $this->page->templateid ); 29 $newTemplate = new Template( $newTemplateId ); 30 31 foreach( $oldTemplate->getElementIds() as $elementid ) 32 { 33 $e = new Element( $elementid ); 34 $e->load(); 35 36 if ( !$e->isWritable() ) 37 continue; 38 39 $oldElement = array(); 40 $oldElement['name'] = $e->name.' - '.\cms\base\Language::lang('EL_'.$e->type ); 41 $oldElement['id' ] = $e->elementid; 42 43 $newElements = Array(); 44 $newElements[0] = \cms\base\Language::lang('ELEMENT_DELETE_VALUES'); 45 46 foreach( $newTemplate->getElementIds() as $newelementid ) 47 { 48 $ne = new Element( $newelementid ); 49 $ne->load(); 50 51 // Nur neue Elemente anbieten, deren Typ identisch ist 52 if ( $ne->type == $e->type ) 53 $newElements[$newelementid] = \cms\base\Language::lang('ELEMENT').': '.$ne->name.' - '.\cms\base\Language::lang('EL_'.$e->type ); 54 } 55 $oldElement['newElementsName'] = 'from'.$e->elementid; 56 $oldElement['newElementsList'] = $newElements; 57 $oldElements[$elementid] = $oldElement; 58 } 59 $this->setTemplateVar('elements',$oldElements ); 60 } 61 } 62 63 64 public function post() { 65 $newTemplateId = $this->request->getText('newtemplateid'); 66 $replaceElementMap = Array(); 67 68 $oldTemplate = new Template( $this->page->templateid ); 69 foreach( $oldTemplate->getElementIds() as $elementid ) 70 $replaceElementMap[$elementid] = $this->request->getText('from'.$elementid); 71 72 if ( $newTemplateId != 0 ) 73 { 74 $this->page->replaceTemplate( $newTemplateId,$replaceElementMap ); 75 $this->addNoticeFor( $this->page,Messages::SAVED); 76 } 77 else 78 $this->addWarningFor( $this->page,Messages::NOT_SAVED); 79 } 80 }
Downloadmodules/cms/action/page/PageChangetemplateselectelementsAction.class.php
History Thu, 15 Oct 2026 01:39:59 +0200 Jan Dankert New: A much better generation of the OpenAPI Interface documents, supports now the UI API Objects. Wed, 14 Oct 2026 01:46:43 +0200 Jan Dankert PHP 8: Fix: Method signature must match the interface. Sat, 6 Mar 2021 03:42:38 +0100 Jan Dankert New: Better permission checks. Fri, 26 Feb 2021 01:06:01 +0100 Jan Dankert Refactoring accessing the request parameter values. Thu, 19 Nov 2020 14:49:58 +0100 Jan Dankert Fix: Action::addNotice() is replaced by Action::addNoticeFor() Thu, 19 Nov 2020 12:36:44 +0100 Jan Dankert Fix: nextSubAction() is depracated and should not be used. Tue, 17 Nov 2020 23:51:00 +0100 Jan Dankert Refactoring: Every Actionmethod has now its own class.