Пример #1
2
 public function __construct(Application $app, $config, Block $b, Page $c, Area $a)
 {
     parent::__construct();
     $p = new \Permissions($b);
     $this->permissions = $p;
     $this->block = $b;
     $this->page = $c;
     $this->area = $a;
     $this->setAttribute('data-block-menu', 'block-menu-b' . $b->getBlockID());
     $this->setAttribute('class', 'ccm-edit-mode-block-menu');
     $btw = $b->getBlockTypeObject();
     $btOriginal = $btw;
     $bID = $b->getBlockID();
     $aID = $a->getAreaID();
     $heightPlus = 20;
     $btHandle = $btw->getBlockTypeHandle();
     $editInline = false;
     if ($btw->supportsInlineEdit()) {
         $editInline = true;
     }
     if ($btw->getBlockTypeHandle() == BLOCK_HANDLE_SCRAPBOOK_PROXY) {
         $_bi = $b->getInstance();
         $_bo = Block::getByID($_bi->getOriginalBlockID());
         $btOriginal = BlockType::getByHandle($_bo->getBlockTypeHandle());
         $btHandle = $btOriginal->getBlockTypeHandle();
         $heightPlus = 80;
         if ($btOriginal->supportsInlineEdit()) {
             $editInline = true;
         }
     }
     $canDesign = $p->canEditBlockDesign() && $config->get('concrete.design.enable_custom') == true;
     $canModifyGroups = $p->canEditBlockPermissions() && $config->get('concrete.permissions.model') != 'simple' && !$a->isGlobalArea();
     $canEditName = $p->canEditBlockName();
     $canEditCacheSettings = $p->canEditBlockCacheSettings();
     $canEditCustomTemplate = $p->canEditBlockCustomTemplate();
     $canScheduleGuestAccess = $config->get('concrete.permissions.model') != 'simple' && $p->canGuestsViewThisBlock() && $p->canScheduleGuestAccess() && !$a->isGlobalArea();
     $canAliasBlockOut = $c->isMasterCollection() && !$a->isGlobalArea();
     if ($canAliasBlockOut) {
         $ct = Type::getByID($c->getPageTypeID());
     }
     $isAlias = $b->isAlias();
     $u = new \User();
     $numChildren = !$isAlias ? $b->getNumChildren() : 0;
     if ($isAlias) {
         $deleteMessage = t('Do you want to delete this block?');
     } elseif ($numChildren) {
         $deleteMessage = t('Do you want to delete this block? This item is an original. If you delete it, you will delete all blocks aliased to it');
     } else {
         $deleteMessage = t('Do you want to delete this block?');
     }
     if ($btOriginal->getBlockTypeHandle() == BLOCK_HANDLE_STACK_PROXY) {
         if (is_object($_bo)) {
             $bi = $_bo->getInstance();
         } else {
             $bi = $b->getInstance();
         }
         $stack = \Stack::getByID($bi->stID);
         if (is_object($stack)) {
             $sp = new \Permissions($stack);
             if ($sp->canWrite()) {
                 $this->addItem(new LinkItem(\URL::to('/dashboard/blocks/stacks', 'view_details', $stack->getCollectionID()), t('Manage Stack Contents')));
             }
         }
     } else {
         if ($p->canEditBlock() && $b->isEditable()) {
             if ($editInline) {
                 if ($b->getBlockTypeHandle() == BLOCK_HANDLE_LAYOUT_PROXY) {
                     $this->addItem(new LinkItem('javascript:void(0)', t('Edit Layout'), ['data-menu-action' => 'edit_inline', 'data-area-enable-grid-container' => $a->isGridContainerEnabled(), 'data-area-grid-maximum-columns' => $a->getAreaGridMaximumColumns()]));
                 } else {
                     $this->addItem(new LinkItem('javascript:void(0)', t('Edit Block'), ['data-menu-action' => 'edit_inline', 'data-area-enable-grid-container' => $a->isGridContainerEnabled(), 'data-area-grid-maximum-columns' => $a->getAreaGridMaximumColumns()]));
                 }
             } else {
                 $this->addItem(new LinkItem('javascript:void(0)', t('Edit Block'), ['data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/edit'), 'dialog-title' => t('Edit %s', t($btOriginal->getBlockTypeName())), 'dialog-width' => $btOriginal->getBlockTypeInterfaceWidth(), 'dialog-height' => $btOriginal->getBlockTypeInterfaceHeight() + $heightPlus]));
             }
         }
     }
     if ($b->getBlockTypeHandle() != BLOCK_HANDLE_LAYOUT_PROXY && $b->getBlockTypeHandle() != BLOCK_HANDLE_PAGE_TYPE_OUTPUT_PROXY) {
         $this->addItem(new LinkItem('javascript:void(0)', t('Copy to Clipboard'), ['data-menu-action' => 'block_scrapbook', 'data-token' => $app->make('token')->generate('tools/clipboard/to')]));
     }
     if ($p->canDeleteBlock()) {
         $this->addItem(new LinkItem('javascript:void(0)', t('Delete'), ['data-menu-action' => 'delete_block', 'data-menu-delete-message' => $deleteMessage]));
     }
     if ($b->getBlockTypeHandle() != BLOCK_HANDLE_LAYOUT_PROXY) {
         if ($canDesign || $canEditCustomTemplate || $canEditName || $canEditCacheSettings) {
             $this->addItem(new DividerItem());
             if ($canDesign || $canEditCustomTemplate) {
                 $this->addItem(new LinkItem('#', t('Design & Custom Template'), ['data-menu-action' => 'block_design']));
             }
             if ($b->getBlockTypeHandle() != BLOCK_HANDLE_PAGE_TYPE_OUTPUT_PROXY && ($canEditName || $canEditCacheSettings)) {
                 $this->addItem(new LinkItem('#', t('Advanced'), ['dialog-title' => t('Advanced Block Settings'), 'data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/cache'), 'dialog-width' => 500, 'dialog-height' => 320]));
             }
         }
     }
     if ($b->getBlockTypeHandle() != BLOCK_HANDLE_PAGE_TYPE_OUTPUT_PROXY && ($canModifyGroups || $canScheduleGuestAccess || $canAliasBlockOut)) {
         $this->addItem(new DividerItem());
         if ($canModifyGroups) {
             $this->addItem(new LinkItem('#', t('Permissions'), ['dialog-title' => t('Block Permissions'), 'data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/permissions/list'), 'dialog-width' => 350, 'dialog-height' => 450]));
         }
         if ($canScheduleGuestAccess) {
             $this->addItem(new LinkItem('#', t('Schedule Guest Access'), ['dialog-title' => t('Schedule Guest Access'), 'data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/permissions/guest_access'), 'dialog-width' => 500, 'dialog-height' => 320]));
         }
         if ($canAliasBlockOut) {
             $this->addItem(new LinkItem('#', t('Setup on Child Pages'), ['dialog-title' => t('Setup on Child Pages'), 'data-menu-action' => 'block_dialog', 'data-menu-href' => \URL::to('/ccm/system/dialogs/block/aliasing'), 'dialog-width' => 500, 'dialog-height' => 'auto']));
         }
     }
 }
Пример #2
0
 public function delete()
 {
     $db = Loader::db();
     $blocks = $this->getAreaBlocksArray();
     foreach ($blocks as $b) {
         $bp = new \Permissions($b);
         if ($bp->canDeleteBlock()) {
             $b->deleteBlock();
         }
     }
     $db->Execute('delete from Areas where arID = ?', array($this->arID));
 }
Пример #3
0
							<a href="javascript:void(0)" onclick="GlobalScrapbook.toggleRename(<?=intval($b->bID) ?>)"><?=t('Rename')?></a>
							&nbsp;|&nbsp; 
							<a href="javascript:void(0)" onclick="GlobalScrapbook.editBlockTemplate(<?=intval($b->bID) ?>)" ><?=t('Custom Template')?></a> 
							&nbsp;|&nbsp; 
							<? if (ENABLE_CUSTOM_DESIGN == true) { ?>
							<a href="javascript:void(0)" onclick="GlobalScrapbook.editBlockDesign(<?=intval($b->bID) ?>)" ><?=t('Design')?></a> 
							&nbsp;|&nbsp; 
							<? } ?>
							<a href="javascript:void(0)" onclick="GlobalScrapbook.editBlock(<?=intval($b->bID) ?>,<?=$bt->getBlockTypeInterfaceWidth()?> , <?=$bt->getBlockTypeInterfaceHeight()?> )" ><?=t('Edit')?></a> 
							&nbsp;|&nbsp; 
							
							<? } ?>
							
							<? if (PERMISSIONS_MODEL != 'simple' && $bp->canAdmin()) { ?>
								<a href="javascript:void(0)" onclick="GlobalScrapbook.editBlockPermissions(<?=$b->getBlockID()?>)" ><?=t('Permissions')?></a> 
								<? if ($bp->canDeleteBlock()) { ?>
									&nbsp;|&nbsp;
								<? } ?>
							<? } ?>
							
							<? if ($bp->canDeleteBlock()) { ?>
							<a href="<?php echo $this->action('deleteBlock', Loader::helper('text')->entities($scrapbookName), 0, intval($b->bID), $valt->generate('delete_scrapbook_block'))?>" onclick="return GlobalScrapbook.confirmDelete()">
								<?=t('Delete')?>
							</a> 
							
							<? } ?>
						</div>  
						<div id="ccm-block-type-inner<?=intval($b->bID)?>" class="ccm-block-type-inner">
							<div class="ccm-block-type-inner-icon ccm-scrapbook-item-handle" style="background: url(<?=$btIcon?>) no-repeat center left;">
							<img src="<?=ASSETS_URL_IMAGES?>/spacer.gif" width="16" height="16" />
							</div>
Пример #4
0
							<?php 
            }
            ?>
							
							<?php 
            if (PERMISSIONS_MODEL != 'simple' && $bp->canEditBlockPermissions()) {
                ?>
								<a href="javascript:void(0)" onclick="GlobalScrapbook.editBlockPermissions(<?php 
                echo $b->getBlockID();
                ?>
)" ><?php 
                echo t('Permissions');
                ?>
</a> 
								<?php 
                if ($bp->canDeleteBlock()) {
                    ?>
									&nbsp;|&nbsp;
								<?php 
                }
                ?>
							<?php 
            }
            ?>
							
							<?php 
            if ($bp->canDeleteBlock()) {
                ?>
							<a href="<?php 
                echo $this->action('deleteBlock', Loader::helper('text')->entities($scrapbookName), 0, intval($b->bID), $valt->generate('delete_scrapbook_block'));
                ?>
Пример #5
0
 case 'ajax_do_arrange':
     /* called via ajax */
     if ($cp->canWrite()) {
         $nvc = $c->getVersionToModify();
         $nvc->processArrangement($_POST['area']);
     }
     exit;
     break;
 case 'remove':
     $a = Area::get($c, $_REQUEST['arHandle']);
     if (is_object($a)) {
         $b = Block::getByID($_REQUEST['bID'], $c, $a);
         $p = new Permissions($b);
         // might be block-level, or it might be area level
         // we're removing a particular block of content
         if ($p->canDeleteBlock()) {
             $nvc = $c->getVersionToModify();
             $b->loadNewCollection($nvc);
             $b->deleteBlock();
             $nvc->rescanDisplayOrder($_REQUEST['arHandle']);
             if (isset($_POST['isAjax'])) {
                 exit;
             }
             header('Location: ' . BASE_URL . DIR_REL . '/' . DISPATCHER_FILENAME . '?cID=' . $_GET['cID'] . '&mode=edit' . $step);
             exit;
         }
     }
     break;
 case 'update_block_css':
     $a = Area::get($c, $_REQUEST['arHandle']);
     if (is_object($a)) {
Пример #6
0
	function display(&$c, $alternateBlockArray = null) {

		if(!intval($c->cID)){
			//Invalid Collection
			return false;
		}
		
		$currentPage = Page::getCurrentPage();
		$ourArea = Area::getOrCreate($c, $this->arHandle);
		if (count($this->customTemplateArray) > 0) {
			$ourArea->customTemplateArray = $this->customTemplateArray;
		}
		if (count($this->attributes) > 0) {
			$ourArea->attributes = $this->attributes;
		}
		if ($this->maximumBlocks > -1) {
			$ourArea->maximumBlocks = $this->maximumBlocks;
		}
		$ap = new Permissions($ourArea);
		$blocksToDisplay = ($alternateBlockArray) ? $alternateBlockArray : $ourArea->getAreaBlocksArray($c, $ap);
		$this->totalBlocks = $ourArea->getTotalBlocksInArea();
		$u = new User();
		
		$bv = new BlockView();
		
		// now, we iterate through these block groups (which are actually arrays of block objects), and display them on the page
		
		if (($this->showControls) && ($c->isEditMode() && ($ap->canAddBlocks() || $u->isSuperUser()))) {
			$bv->renderElement('block_area_header', array('a' => $ourArea));	
		}

		$bv->renderElement('block_area_header_view', array('a' => $ourArea));	

		//display layouts tied to this area 
		//Might need to move this to a better position  
		$areaLayouts = $this->getAreaLayouts($c);
		if(is_array($areaLayouts) && count($areaLayouts)){ 
			foreach($areaLayouts as $layout){
				$layout->display($c,$this);  
			}
			if($this->showControls && ($c->isArrangeMode() || $c->isEditMode())) {
				echo '<div class="ccm-layouts-block-arrange-placeholder ccm-block-arrange"></div>';
			}
		}


		foreach ($blocksToDisplay as $b) {
			$bv = new BlockView();
			$bv->setAreaObject($ourArea); 
			
			// this is useful for rendering areas from one page
			// onto the next and including interactive elements
			if ($currentPage->getCollectionID() != $c->getCollectionID()) {
				$b->setBlockActionCollectionID($c->getCollectionID());
			}
			$p = new Permissions($b);
			if (($p->canWrite() || $p->canDeleteBlock()) && $c->isEditMode() && $this->showControls) {
				$includeEditStrip = true;
			}

			if ($p->canRead()) {
				if (!$c->isEditMode()) {
					echo $this->enclosingStart;
				}
				if ($includeEditStrip) {
					$bv->renderElement('block_controls', array(
						'a' => $ourArea,
						'b' => $b,
						'p' => $p
					));
					$bv->renderElement('block_header', array(
						'a' => $ourArea,
						'b' => $b,
						'p' => $p
					));
				}

				$bv->render($b);
				if ($includeEditStrip) {
					$bv->renderElement('block_footer');
				}
				if (!$c->isEditMode()) {
					echo $this->enclosingEnd;
				}
			}
		}

		$bv->renderElement('block_area_footer_view', array('a' => $ourArea));	

		if (($this->showControls) && ($c->isEditMode() && ($ap->canAddBlocks() || $u->isSuperUser()))) {
			$bv->renderElement('block_area_footer', array('a' => $ourArea));	
		}
	}