1.20.x layout.admin.inc layout_block_remove_page(Layout $layout, Block $block, $renderer_name)

Menu callback; Remove a block from a layout.

File

modules/layout/layout.admin.inc, line 1700
Admin page callbacks for the Layout module.

Code

function layout_block_remove_page(Layout $layout, Block $block, $renderer_name) {
  if (backdrop_get_token('layout-' . $layout->name) !== $_GET['token']) {
    return MENU_ACCESS_DENIED;
  }

  $commands = array();
  $layout->removeBlock($block->uuid);
  layout_set_layout_tempstore($layout);

  if (backdrop_is_ajax()) {
    $commands[] = ajax_command_remove('#layout-editor-block-' . $block->uuid);
    // If neither a Title block nor a Combo block remains in the layout, add
    // the page title pseudo-region.
    if ($block->module == 'system' && $block->delta == 'page_components' && ($block->childDelta == 'title' || $block->childDelta == 'title_combo')) {
      $render_title_region = TRUE;
      $all_layout_blocks = $layout->content;
      foreach ($all_layout_blocks as $existing_block) {
        if ($existing_block->module == 'system' && $existing_block->delta == 'page_components' && ($existing_block->childDelta == 'title' || $existing_block->childDelta == 'title_combo') && ($existing_block->uuid != $block->uuid)) {
          $render_title_region = FALSE;
          break;
        }
      }
      if ($render_title_region) {
        $renderer = layout_create_renderer($renderer_name, $layout);
        $commands[] = ajax_command_replace('#layout-title-region-empty', $renderer->renderTitleRegion('title'));
      }
    }
    return array(
      '#type' => 'ajax',
      '#commands' => $commands,
    );
  }
  else {
    backdrop_set_message(t('Block "@title" removed.', array('@title' => $block->getAdminTitle())));
    backdrop_goto('admin/structure/layouts/manage/' . $layout->name);
  }
}