You are here

function rotating_banner_block_configure in Rotating Banner 7.2

Same name and namespace in other branches
  1. 7 rotating_banner.module \rotating_banner_block_configure()

Implements hook_block_configure().

File

./rotating_banner.module, line 192

Code

function rotating_banner_block_configure($delta) {
  $rbid = $delta;
  $banner = rotating_banner_load($rbid);
  $defaults = rotating_banner_defaults();
  $settings = array_merge($defaults, $banner->settings);
  if (isset($banner->settings['cycle'])) {
    $settings['cycle'] = array_merge($defaults['cycle'], $banner->settings['cycle']);
  }
  $form = array();
  $path = drupal_get_path('module', 'rotating_banner');
  $form['#attached'] = array();
  $form['#attached']['js'] = array();
  $form['#attached']['js'][] = $path . '/includes/jquery.easing.js';
  $form['#attached']['js'][] = $path . '/includes/jquery.cycle.js';

  // Add sweet effects
  $form['#attached']['libraries'] = array();
  $form['#attached']['libraries'][] = 'effects';
  $form['rotating_banner'] = array(
    '#tree' => TRUE,
  );
  $rb_form =& $form['rotating_banner'];
  $rb_form['#attached']['css'][] = drupal_get_path('module', 'rotating_banner') . '/rotating_banner.admin.css';
  $rb_form['#attached']['js'][] = drupal_get_path('module', 'rotating_banner') . '/rotating_banner.admin.js';
  $options = array();
  $i = 0;
  $slides = RotatingBannerSlide::getByRotatingBanner($rbid);
  $rb_form['slides'] = array(
    '#type' => 'fieldset',
    '#title' => t('Banner images'),
    '#collapsible' => TRUE,
  );
  $rb_form['slides']['slide_table'] = array(
    '#theme' => 'rotating_banner_settings_form_slides',
  );
  $rb_form['slides']['slide_table']['weight'] = array(
    '#tree' => TRUE,
  );
  foreach ($slides as $slide) {
    $media = file_load($slide->fid);
    $preview = file_view_file($media, 'media_preview');
    $i++;
    $rb_form['slides']['slide_table']['weight'][$slide->sid] = array(
      '#type' => 'weight',
      '#default_value' => $slide->weight,
      '#attributes' => array(
        'class' => array(
          'rb-slide-weight',
        ),
      ),
    );
    $rb_form['slides']['slide_table']['link'][$slide->sid] = array(
      '#markup' => url($slide->link, array(
        'absolute' => TRUE,
      )),
    );
    $rb_form['slides']['slide_table']['background'][$slide->sid] = $preview;
  }
  $rb_form['slides']['add'] = array(
    '#markup' => l(t('Add a new slide to this banner'), 'admin/structure/rotating_banner/' . $rbid . '/slide/add'),
  );
  $rb_form['banner_settings'] = array(
    '#type' => 'fieldset',
    '#title' => t('Banner settings'),
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
  );
  $rb_form['banner_settings']['fluid'] = array(
    '#type' => 'radios',
    '#title' => t('Banner size'),
    '#options' => array(
      '1' => 'The banner will shrink to fit the page.',
      '0' => 'The banner will not shrink to fit the page and you have the option to specify the width and/or height.',
    ),
    '#default_value' => $settings['fluid'],
  );
  $rb_form['banner_settings']['width'] = array(
    '#type' => 'textfield',
    '#title' => t('Width'),
    '#attributes' => array(
      'class' => array(
        'rb-dimension-settings',
      ),
    ),
    '#size' => 5,
    '#field_suffix' => ' ' . t('pixels'),
    '#default_value' => $settings['width'],
  );
  $rb_form['banner_settings']['height'] = array(
    '#type' => 'textfield',
    '#title' => t('Height'),
    '#size' => 5,
    '#attributes' => array(
      'class' => array(
        'rb-dimension-settings',
      ),
    ),
    '#field_suffix' => ' ' . t('pixels'),
    '#default_value' => $settings['height'],
  );
  $rb_form['banner_settings']['cycle'] = array();
  $relative_path = str_replace(DRUPAL_ROOT, '', drupal_get_path('module', 'rotating_banner'));
  $demo_image1 = theme('image', array(
    'path' => $relative_path . '/images/demo-slide-1.jpg',
  ));
  $demo_image2 = theme('image', array(
    'path' => $relative_path . '/images/demo-slide-2.jpg',
  ));
  $rb_form['banner_settings']['cycle']['fx'] = array(
    '#type' => 'select',
    '#title' => 'Transition type',
    '#suffix' => '<div id="rb-settings-effect-preview">' . $demo_image1 . $demo_image2 . '</div>',
    '#options' => array(
      'fade' => t('Fade'),
      'blindX' => t('BlindX'),
      'blindY' => t('BlindY'),
      'blindZ' => t('BlindZ'),
      'cover' => t('Cover'),
      'scrollUp' => t('ScrollUp'),
      'scrollDown' => t('ScrollDown'),
      'scrollLeft' => t('ScrollLeft'),
      'scrollRight' => t('ScrollRight'),
      'scrollHorz' => t('ScrollHorz'),
      'scrollVert' => t('ScrollVert'),
      'toss' => t('Toss'),
      'uncover' => t('Uncover'),
    ),
    '#default_value' => $settings['cycle']['fx'],
  );
  $rb_form['banner_settings']['cycle']['auto_slide'] = array(
    '#id' => 'auto-transition-selector',
    // Keeps it from going in the cycle settings
    '#type' => 'checkbox',
    '#title' => t('Automatically change slides'),
  );
  $rb_form['banner_settings']['cycle']['timeout'] = array(
    '#title' => t('Delay between slides in milliseconds.'),
    '#type' => 'textfield',
    '#description' => t('Leave blank to disable automatic transition.'),
    '#default_value' => $settings['cycle']['timeout'],
  );
  $rb_form['banner_settings']['controls'] = array(
    '#type' => 'select',
    '#title' => t('Type of control to switch between slides'),
    '#options' => array(
      'none' => t('None'),
      'buttons' => t('Buttons'),
      'numbers' => t('Numbers'),
      'prev_next' => t('Prev / Next'),
    ),
    '#default_value' => $settings['controls'],
  );
  return $form;
}