File modules/cms/action/page/PageChangetemplateselectelementsAction.class.php

Last commit: Sat Mar 6 03:42:38 2021 +0100	Jan Dankert	New: Better permission checks.
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\model\Element; 7 use cms\model\Permission; 8 use cms\model\Template; 9 use language\Messages; 10 11 class PageChangetemplateselectelementsAction extends PageAction implements Method { 12 13 public function getRequiredPermission() { 14 return Permission::ACL_PROP; 15 } 16 17 18 public function view() { 19 $newTemplateId = $this->request->getText( 'newtemplateid' ); 20 21 if ( $newTemplateId != 0 ) 22 { 23 $this->setTemplateVar('newtemplateid',$newTemplateId ); 24 25 $oldElements = array(); 26 $oldTemplate = new Template( $this->page->templateid ); 27 $newTemplate = new Template( $newTemplateId ); 28 29 foreach( $oldTemplate->getElementIds() as $elementid ) 30 { 31 $e = new Element( $elementid ); 32 $e->load(); 33 34 if ( !$e->isWritable() ) 35 continue; 36 37 $oldElement = array(); 38 $oldElement['name'] = $e->name.' - '.\cms\base\Language::lang('EL_'.$e->type ); 39 $oldElement['id' ] = $e->elementid; 40 41 $newElements = Array(); 42 $newElements[0] = \cms\base\Language::lang('ELEMENT_DELETE_VALUES'); 43 44 foreach( $newTemplate->getElementIds() as $newelementid ) 45 { 46 $ne = new Element( $newelementid ); 47 $ne->load(); 48 49 // Nur neue Elemente anbieten, deren Typ identisch ist 50 if ( $ne->type == $e->type ) 51 $newElements[$newelementid] = \cms\base\Language::lang('ELEMENT').': '.$ne->name.' - '.\cms\base\Language::lang('EL_'.$e->type ); 52 } 53 $oldElement['newElementsName'] = 'from'.$e->elementid; 54 $oldElement['newElementsList'] = $newElements; 55 $oldElements[$elementid] = $oldElement; 56 } 57 $this->setTemplateVar('elements',$oldElements ); 58 } 59 } 60 61 62 public function post() { 63 $newTemplateId = $this->request->getText('newtemplateid'); 64 $replaceElementMap = Array(); 65 66 $oldTemplate = new Template( $this->page->templateid ); 67 foreach( $oldTemplate->getElementIds() as $elementid ) 68 $replaceElementMap[$elementid] = $this->request->getText('from'.$elementid); 69 70 if ( $newTemplateId != 0 ) 71 { 72 $this->page->replaceTemplate( $newTemplateId,$replaceElementMap ); 73 $this->addNoticeFor( $this->page,Messages::SAVED); 74 } 75 else 76 $this->addWarningFor( $this->page,Messages::NOT_SAVED); 77 } 78 }
Download modules/cms/action/page/PageChangetemplateselectelementsAction.class.php
History 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.