public function insertBlockAction()
	{
		$this->isPostRequest();
		$this->checkLock();

		$pageRequest = $this->createPageRequest();

		$blockComponentName = $this->getRequestParameter('type');

		// Generate block according the page localization type provided
		$block = Block::factory($this->getPageLocalization());
		$block->setComponentName($blockComponentName);

		$class = $block->getComponentClass();

		$blockConfiguration = $this->getBlockCollection()
				->getConfiguration($class);

		// logic/code issue
		if (! $blockConfiguration->isInsertable()) {
			throw new CmsException(null, 'This block cannot be added.');
		}

		// deny adding if block is defined as unique
		// and page block set already contains it.
		if ($blockConfiguration->isUnique()) {

			foreach ($pageRequest->getBlockSet() as $existingBlock) {

				if ($existingBlock->getComponentClass() === $class) {
					throw new CmsException(
							null,
							sprinf(
									'Only one instance of "%s" block can be added on the page.',
									$blockConfiguration->getTitle()
							)
					);
				}
			}
		}

		$placeHolderName = $this->getRequestParameter('placeholder_id');

		$placeHolder = $pageRequest->getPlaceHolderSet()
				->getFinalPlaceHolders()
				->offsetGet($placeHolderName);

		if ($placeHolder === null) {
			throw new \InvalidArgumentException(sprintf(
					'Missing placeholder [%s] in place holder set.',
					$placeHolderName
			));
		}

		$insertBeforeTargetId = $this->getRequestInput()->get('reference_id');

		if (! empty($insertBeforeTargetId)) {

			$insertBeforeTarget = null;
			
			foreach ($placeHolder->getBlocks() as $existingBlock) {
				if ($existingBlock->getId() === $insertBeforeTargetId) {
					$insertBeforeTarget = $existingBlock;
					break;
				}
			}

			if ($insertBeforeTarget === null) {
				throw new \InvalidArgumentException(sprintf(
						'Blocks collection item [%s] not found.',
						$insertBeforeTargetId
				));
			}

			$placeHolder->addBlockBefore($insertBeforeTarget, $block);

		} else {
			$placeHolder->addBlockLast($block);
		}

		$entityManager = $this->getEntityManager();

		$entityManager->persist($block);

		$entityManager->flush();

		return new SupraJsonResponse($this->getBlockData($block, true));
	}
public function insertBlockAction()
	{
		$this->isPostRequest();
		$this->checkLock();

		$pageRequest = $this->createPageRequest();

		$blockComponentName = $this->getRequestParameter('type');

		// Generate block according the page localization type provided
		$block = Block::factory($this->getPageLocalization());
		$block->setComponentName($blockComponentName);

		$class = $block->getComponentClass();

		$blockConfiguration = $this->getBlockCollection()
				->getConfiguration($class);

		// logic/code issue
		if (! $blockConfiguration->isInsertable()) {
			throw new CmsException(null, 'This block cannot be added.');
		}

		// deny adding if block is defined as unique
		// and page block set already contains it.
		if ($blockConfiguration->isUnique()) {

			foreach ($pageRequest->getBlockSet() as $existingBlock) {

				if ($existingBlock->getComponentClass() === $class) {
					throw new CmsException(
							null,
							sprinf(
									'Only one instance of "%s" block can be added on the page.',
									$blockConfiguration->getTitle()
							)
					);
				}
			}
		}

		$placeHolderName = $this->getRequestParameter('placeholder_id');

		$placeHolder = $pageRequest->getPlaceHolderSet()
				->getFinalPlaceHolders()
				->offsetGet($placeHolderName);

		if ($placeHolder === null) {
			throw new \InvalidArgumentException(sprintf(
					'Missing placeholder [%s] in place holder set.',
					$placeHolderName
			));
		}

		$insertBeforeTargetId = $this->getRequestInput()->get('reference_id');

		if (! empty($insertBeforeTargetId)) {

			$insertBeforeTarget = null;
			
			foreach ($placeHolder->getBlocks() as $existingBlock) {
				if ($existingBlock->getId() === $insertBeforeTargetId) {
					$insertBeforeTarget = $existingBlock;
					break;
				}
			}

			if ($insertBeforeTarget === null) {
				throw new \InvalidArgumentException(sprintf(
						'Blocks collection item [%s] not found.',
						$insertBeforeTargetId
				));
			}

			$placeHolder->addBlockBefore($insertBeforeTarget, $block);

		} else {
			$placeHolder->addBlockLast($block);
		}

		$entityManager = $this->getEntityManager();

		$entityManager->persist($block);

		$entityManager->flush();

		return new SupraJsonResponse($this->getBlockData($block, true));
	}
public function insertBlockAction ( ) { $ this -> isPostRequest ( ) ; $ this -> checkLock ( ) ; $ pageRequest = $ this -> createPageRequest ( ) ; $ blockComponentName = $ this -> getRequestParameter ( 'type' ) ; // Generate block according the page localization type provided $ block = Block :: factory ( $ this -> getPageLocalization ( ) ) ; $ block -> setComponentName ( $ blockComponentName ) ; $ class = $ block -> getComponentClass ( ) ; $ blockConfiguration = $ this -> getBlockCollection ( ) -> getConfiguration ( $ class ) ; // logic/code issue if ( ! $ blockConfiguration -> isInsertable ( ) ) { throw new CmsException ( null , 'This block cannot be added.' ) ; } // deny adding if block is defined as unique // and page block set already contains it. if ( $ blockConfiguration -> isUnique ( ) ) { foreach ( $ pageRequest -> getBlockSet ( ) as $ existingBlock ) { if ( $ existingBlock -> getComponentClass ( ) === $ class ) { throw new CmsException ( null , sprinf ( 'Only one instance of "%s" block can be added on the page.' , $ blockConfiguration -> getTitle ( ) ) ) ; } } } $ placeHolderName = $ this -> getRequestParameter ( 'placeholder_id' ) ; $ placeHolder = $ pageRequest -> getPlaceHolderSet ( ) -> getFinalPlaceHolders ( ) -> offsetGet ( $ placeHolderName ) ; if ( $ placeHolder === null ) { throw new \ InvalidArgumentException ( sprintf ( 'Missing placeholder [%s] in place holder set.' , $ placeHolderName ) ) ; } $ insertBeforeTargetId = $ this -> getRequestInput ( ) -> get ( 'reference_id' ) ; if ( ! empty ( $ insertBeforeTargetId ) ) { $ insertBeforeTarget = null ; foreach ( $ placeHolder -> getBlocks ( ) as $ existingBlock ) { if ( $ existingBlock -> getId ( ) === $ insertBeforeTargetId ) { $ insertBeforeTarget = $ existingBlock ; break ; } } if ( $ insertBeforeTarget === null ) { throw new \ InvalidArgumentException ( sprintf ( 'Blocks collection item [%s] not found.' , $ insertBeforeTargetId ) ) ; } $ placeHolder -> addBlockBefore ( $ insertBeforeTarget , $ block ) ; } else { $ placeHolder -> addBlockLast ( $ block ) ; } $ entityManager = $ this -> getEntityManager ( ) ; $ entityManager -> persist ( $ block ) ; $ entityManager -> flush ( ) ; return new SupraJsonResponse ( $ this -> getBlockData ( $ block , true ) ) ; }
Handles new block insertion request.
Handles new block insertion request .