openrat-cms

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

PageChangetemplateselectelementsAction.class.php (2248B)


      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 }