You are here

scheduler_form_pane.inc in Scheduler 8

Scheduling options for node forms.

This content type contains the publish and unpublish scheduling date fields.

@todo This file was introduced in Scheduler 7.x - is it still usable in 8.x? The Ctools module no longer has a path /plugins/content_types/node_form

File

plugins/content_types/scheduler_form_pane.inc
View source
<?php

/**
 * @file
 * Scheduling options for node forms.
 *
 * This content type contains the publish and unpublish scheduling date fields.
 *
 * @todo This file was introduced in Scheduler 7.x - is it still usable in 8.x?
 * The Ctools module no longer has a path /plugins/content_types/node_form
 */
use Drupal\Core\Form\FormStateInterface;

// phpcs:ignore DrupalPractice.CodeAnalysis.VariableAnalysis.UnusedVariable
$plugin = [
  'single' => TRUE,
  'edit form' => 'scheduler_form_pane_node_form_menu_content_type_edit_form',
  'render callback' => 'scheduler_form_pane_content_type_render',
  'title' => t('Node form scheduler'),
  'icon' => drupal_get_path('module', 'ctools') . '/plugins/content_types/node_form/icon_node_form.png',
  'description' => t('Scheduler date options on the Node form.'),
  'required context' => new ctools_context_required(t('Form'), 'node_form'),
  'category' => t('Form'),
];

/**
 * Content type render callback.
 */
function scheduler_form_pane_content_type_render($subtype, $conf, $panel_args, &$context) {
  $block = new stdClass();
  $block->module = 'node_form';
  $block->title = t('Scheduler options');
  $block->delta = 'scheduler-options';
  if (isset($context->form)) {
    if (isset($context->form['scheduler_settings'])) {

      // Lift the form elements from the original form and make sure it renders.
      $block->content['scheduler_settings'] = $context->form['scheduler_settings'];
      unset($block->content['scheduler_settings']['#pre_render']);
      unset($block->content['scheduler_settings']['#theme_wrappers']);
      $block->content['scheduler_settings']['#type'] = '';

      // Deny access on the original form element rather than removing so that
      // vertical tabs doesn't clone it. I think this is due to references.
      $context->form['scheduler_settings']['#access'] = FALSE;
    }
  }
  else {

    // Display placeholder information.
    $block->content = t('Scheduler options');
  }
  return $block;
}

/**
 * Content type form callback.
 */
function scheduler_form_pane_node_form_menu_content_type_edit_form(array $form, FormStateInterface $form_state) {
  return $form;
}

Functions

Namesort descending Description
scheduler_form_pane_content_type_render Content type render callback.
scheduler_form_pane_node_form_menu_content_type_edit_form Content type form callback.