- <?php
- * @file
- * Admin page callbacks for the Block module.
- */
-
- * Page callback; Display a list of all custom blocks.
- */
- function block_admin_list() {
- $custom_blocks_info = block_block_info();
-
- $help_text = array(
- '#theme' => 'help',
- '#markup' => t('These blocks are available to be placed in any layout in the <a href="@link">Layouts</a> page.', array('@link' => url('admin/structure/layouts'))),
- );
-
- $header = array(
- t('Block'),
- array('data' => t('Description'), 'class' => array('priority-low')),
- t('Operations'),
- );
-
- $rows = array();
- foreach ($custom_blocks_info as $delta => $block_info) {
- $block = block_custom_block_load($delta);
- $row = array();
- $row[] = theme('label_machine_name__block', array(
- 'label' => $block_info['info'],
- 'machine_name' => $delta,
- ));
- $row[] = filter_xss($block_info['description']);
- $links = array();
- $links['configure'] = array(
- 'title' => t('Configure'),
- 'href' => 'admin/structure/block/manage/' . $delta . '/configure',
- );
- $links['delete'] = array(
- 'title' => t('Delete'),
- 'href' => 'admin/structure/block/manage/' . $delta . '/delete',
- );
- if (module_exists('locale') && $block['default_langcode'] != LANGUAGE_NONE) {
- $links['translate'] = array(
- 'title' => t('Translate'),
- 'href' => 'admin/structure/block/manage/' . $delta . '/translation',
- );
- }
- if (module_exists('config') && user_access('synchronize configuration')) {
- $links['export'] = array(
- 'title' => t('Export'),
- 'href' => 'admin/config/development/configuration/single/export',
- 'query' => array(
- 'group' => 'Custom Blocks',
- 'name' => 'block.custom.' . $delta,
- ),
- );
- }
- $operations = array(
- '#type' => 'operations',
- '#links' => $links,
- );
- $row[] = array('data' => $operations);
-
- $rows[] = $row;
- }
-
- $block_admin_list = array(
- '#theme' => 'table__block_admin_list',
- '#header' => $header,
- '#rows' => $rows,
- '#empty' => t('No custom blocks have been created yet.'),
- );
-
- return array('help_text' => $help_text, 'block_admin_list' => $block_admin_list);
- }
-
- * Form constructor for the block configuration form.
- *
- * Also used by block_add_block_form() for adding a new custom block.
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- * @param $delta
- * Unique ID of the block within the context of $module.
- *
- * @see block_menu()
- * @see block_admin_configure_validate()
- * @see block_admin_configure_submit()
- * @ingroup forms
- */
- function block_admin_configure($form, &$form_state, $delta = NULL) {
- if ($delta) {
- $langcode = isset($form['langcode']) ? $form['langcode']['#value'] : NULL;
- $custom_block = block_custom_block_load($delta, $langcode);
- if ($langcode) {
- $custom_block['langcode'] = $langcode;
- }
-
- if (!$custom_block) {
- backdrop_not_found();
- exit();
- }
- }
- else {
- $custom_block = array(
- 'info' => '',
- 'title' => '',
- 'body' => array('value' => '', 'format' => NULL),
- 'default_langcode' => LANGUAGE_NONE,
- );
- }
- if ($custom_block['info']) {
- backdrop_set_title(t("'%name' block", array('%name' => $custom_block['info'])), PASS_THROUGH);
- }
- else {
- backdrop_set_title(t('Add custom block'));
- }
-
-
- if (isset($form['langcode'])) {
- $language = $language = language_load($form['langcode']['#value']);
- backdrop_set_title(t("Translate '%name' block to %language", array('%name' => $custom_block['info'], '%language' => $language->name)), PASS_THROUGH);
- }
-
-
- $form += block_custom_block_form($custom_block, TRUE);
-
-
- if (isset($_GET['destination'])) {
- $path = $_GET['destination'];
- }
- elseif (isset($_SERVER['HTTP_REFERER'])) {
- $path = $_SERVER['HTTP_REFERER'];
- }
- elseif (user_access('administer blocks')) {
- $path = 'admin/structure/block';
- }
- else {
- $path = '<front>';
- }
- $options = backdrop_parse_url($path);
- $options['attributes']['class'][] = 'form-cancel';
- $form['actions'] = array('#type' => 'actions');
- $form['actions']['submit'] = array(
- '#type' => 'submit',
- '#value' => t('Save block'),
- );
- if ($delta) {
- $form['actions']['delete'] = array(
- '#type' => 'link',
- '#title' => t('Delete'),
- '#href' => 'admin/structure/block/manage/' . $delta . '/delete',
- '#attributes' => array('class' => array('button', 'button-secondary', 'form-delete')),
- );
- }
- $form['actions']['cancel'] = array(
- '#type' => 'link',
- '#title' => t('Cancel'),
- '#href' => $options['path'],
- '#options' => $options,
- '#weight' => 1,
- );
-
- return $form;
- }
-
- * Form validation handler for block_admin_configure().
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- *
- * @see block_admin_configure()
- * @see block_admin_configure_submit()
- */
- function block_admin_configure_validate($form, &$form_state) {
- $blocks = block_block_info();
- foreach ($blocks as $delta => $block) {
- if ($delta != $form_state['values']['delta'] && $block['info'] == $form_state['values']['info']) {
- form_set_error('info', t('Ensure that each block description is unique.'));
- return;
- }
- }
- }
-
- * Form submission handler for block_admin_configure().
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- *
- * @see block_admin_configure()
- * @see block_admin_configure_validate()
- */
- function block_admin_configure_submit($form, &$form_state) {
- block_custom_block_save($form_state['values'], $form_state['values']['delta']);
- backdrop_set_message(t('The block configuration has been saved.'));
- $form_state['redirect'] = 'admin/structure/block';
- }
-
- * Form constructor for the add block form.
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- *
- * @see block_menu()
- * @see block_add_block_form_validate()
- * @see block_add_block_form_submit()
- * @ingroup forms
- */
- function block_add_block_form($form, &$form_state) {
- return block_admin_configure($form, $form_state);
- }
-
- * Form validation handler for block_add_block_form().
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- *
- * @see block_add_block_form()
- * @see block_add_block_form_submit()
- */
- function block_add_block_form_validate($form, &$form_state) {
- return block_admin_configure_validate($form, $form_state);
- }
-
- * Form submission handler for block_add_block_form().
- *
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- *
- * Saves the new custom block.
- *
- * @see block_add_block_form()
- * @see block_add_block_form_validate()
- */
- function block_add_block_form_submit($form, &$form_state) {
- block_custom_block_save($form_state['values'], $form_state['values']['delta']);
- backdrop_set_message(t('The block has been created.'));
- $form_state['redirect'] = 'admin/structure/block';
- }
-
- * Form constructor for the custom block deletion form.
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- * @param $delta
- * The unique ID of the block within the context of $module.
- *
- * @see block_menu()
- * @see block_custom_block_delete_submit()
- */
- function block_custom_block_delete($form, &$form_state, $delta) {
- $custom_block = block_custom_block_load($delta);
- $form['info'] = array('#type' => 'hidden', '#value' => $custom_block['info']);
- $form['delta'] = array('#type' => 'hidden', '#value' => $delta);
-
- return confirm_form($form, t('Are you sure you want to delete the block %name?', array('%name' => $custom_block['info'])), 'admin/structure/block', '', t('Delete'), t('Cancel'));
- }
-
- * Form submission handler for block_custom_block_delete().
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- *
- * @see block_custom_block_delete()
- */
- function block_custom_block_delete_submit($form, &$form_state) {
- config('block.custom.' . $form_state['values']['delta'])->delete();
- backdrop_set_message(t('The block %name has been removed.', array('%name' => $form_state['values']['info'])));
- $form_state['redirect'] = 'admin/structure/block';
- }
-
-
- * Form constructor for the block translation list form.
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- * @param $delta
- * Unique ID of the block within the context of $module.
- * @ingroup forms
- */
- function block_custom_block_translate_list($form, &$form_state, $delta) {
- $custom_block = block_custom_block_load($delta);
-
- $language_list = language_list();
-
- $header = array(
- t('Language'),
- t('Title'),
- t('Status'),
- t('Operations'),
- );
-
- $rows = array();
-
- foreach ($language_list as $langcode => $item) {
- $row = array();
- $links = array();
-
-
- if (isset($custom_block['default_langcode']) && ($langcode == $custom_block['default_langcode'])) {
- $row[] = t($item->name) . ' ' . t('(source)');
- $row[] = isset($custom_block['title']) ? check_plain($custom_block['title']) : t('N/A');
- $row[] = t('Source');
- $links['edit'] = array(
- 'title' => t('EDIT'),
- 'href' => 'admin/structure/block/manage/' . $delta . '/translate/' . $langcode,
- );
- }
- else {
- $row[] = t($item->name);
- $row[] = isset($custom_block['translations'][$langcode]['title']) ? check_plain($custom_block['translations'][$langcode]['title']) : t('N/A');
- $row[] = isset($custom_block['translations'][$langcode]) ? t('Translated') : t('Not Translated');
- $links['edit'] = array(
- 'title' => isset($custom_block['translations'][$langcode]) ? t('EDIT') : t('ADD TRANSLATION'),
- 'href' => 'admin/structure/block/manage/' . $delta . '/translate/' . $langcode,
- );
- }
-
- $operations = array(
- '#type' => 'operations',
- '#links' => $links,
- );
- $row[] = array('data' => $operations);
- $rows[] = $row;
- }
-
- if ($custom_block['info']) {
- backdrop_set_title(t("Translate '%name' block", array('%name' => $custom_block['info'])), PASS_THROUGH);
- }
-
- return array(
- '#theme' => 'table__block_admin_list',
- '#rows' => $rows,
- '#header' => $header,
- '#empty' => t('No languages found to translate to.'),
- );
- }
-
- * Menu access callback for translating a single block.
- */
- function block_custom_block_translate_access($delta, $langcode = NULL) {
-
- $block = block_custom_block_load($delta);
- if (!$block || $block['default_langcode'] === LANGUAGE_NONE) {
- return FALSE;
- }
-
- $enabled_languages = language_list(TRUE);
- if ($langcode && !isset($enabled_languages[$langcode])) {
- return FALSE;
- }
- return user_access('administer blocks');
- }
-
- * Menu callback function for translating a single block.
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- * @param string $delta
- * The unique machine name of that block.
- * @param string $langcode
- * The language code value to translate to.
- *
- * @return array
- * The configuration form.
- */
- function block_custom_block_translate($form, &$form_state, $delta, $langcode) {
- $form['langcode'] = array('#type' => 'hidden', '#value' => $langcode);
-
- return block_admin_configure($form, $form_state, $delta);
- }
-
- * Form validation handler for block_custom_block_translate().
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- *
- * @see block_custom_block_translate()
- * @see block_custom_block_translate_submit()
- */
- function block_custom_block_translate_validate($form, &$form_state) {
- return block_admin_configure_validate($form, $form_state);
- }
-
- * Form submission handler for block_custom_block_translate().
- *
- * Saves the new custom block.
- *
- * @param array $form
- * An associative array containing the structure of a portion of the form.
- * @param array $form_state
- * A keyed array containing the current state of the form.
- *
- * @see block_custom_block_translate()
- * @see block_custom_block_translate_validate()
- */
- function block_custom_block_translate_submit($form, &$form_state) {
- $langcode = NULL;
- $delta = $form_state['values']['delta'];
- if (isset($form_state['values']['langcode'])) {
- $langcode = $form_state['values']['langcode'];
- }
- block_custom_block_save($form_state['values'], $form_state['values']['delta'], $langcode);
- backdrop_set_message(t('The block translation has been saved.'));
- $form_state['redirect'] = 'admin/structure/block/manage/' . $delta . '/translation';
- }