You are here

function gallery_assist_assignments_form_submit in Gallery Assist 7

Process GA content types specific settings form submissions.

File

./gallery_assist.admin.inc, line 191
GA module administration forms.

Code

function gallery_assist_assignments_form_submit($form, &$form_state) {

  //        if (!preg_match('/^rgb/', $form_state['values']['thm_border_color'], $match)
  //            || !preg_match('/^#/', $form_state['values']['thm_border_color'], $match)) {
  //          form_set_error('thm_border_color', 'Please');
  //        }
  $settings = variable_get("gallery_assist_{$form_state['values']['type']}_data", array());
  $new = array();
  $i = 0;
  foreach ($form_state['values'] as $k => $v) {
    if (array_key_exists($k, $settings)) {
      $new[$k] = $v;
      $i++;
    }
  }
  variable_set("gallery_assist_{$form_state['values']['type']}_data", $new);
  drupal_set_message('The new configuration was successfully saved. ' . $i . ' items has ben changed');

  // Save assignment css file.
  $type = $form_state['values']['type'];

  //  $settings['thm_border'] = 1;
  //  $settings['thm_border_color'] = '#000';
  //  $settings['thm_margin'] = 10;
  //  $settings['thm_padding'] = 20;
  //  $settings['page_container_float'] = 'none';
  //  $settings['icon_image_style'] = $form_state['values']['icon_image_style'];
  //  $settings['thumbnail_image_style'] = $form_state['values']['thumbnail_image_style'];
  //  $settings['preview_image_style'] = $form_state['values']['preview_image_style'];
  $thm = array(
    'style' => image_style_load($settings['thumbnail_image_style']),
  );
  $end = end($thm['style']['effects']);
  $thm['width'] = $end['data']['width'];
  $thm['height'] = $end['data']['height'];
  $settings['thumbnail_size'] = $thm['width'] >= $thm['height'] ? $thm['width'] : $thm['height'];
  $rows = ceil($settings['teaser_items_per_row'] * $settings['teaser_rows_per_page'] / $settings['teaser_items_per_row']);
  $ct_width = ($settings['thm_border'] + $settings['thm_margin'] + $settings['thm_padding']) * 2 * 3 + $thm['width'] * $settings['teaser_items_per_row'];
  $ct_height = ($settings['thm_border'] + $settings['thm_margin'] + $settings['thm_padding']) * 2 * 3 + $thm['width'] * $settings['page_items_per_row'];
  $settings['ga_container_width'] = $ct_width;
  $rows = ceil($settings['page_items_per_row'] * $settings['page_rows_per_page'] / $settings['page_items_per_row']);
  $cp_width = ($settings['thm_border'] + $settings['thm_margin'] + $settings['thm_padding']) * 2 * 3 + $thm['width'] * $settings['page_items_per_row'];
  $cp_height = ($settings['thm_border'] + $settings['thm_margin'] + $settings['thm_padding']) * 2 * 3 + $thm['width'] * $rows;
  $classes = array(
    'container_class' => '.gallery-container.' . $type,
  );

  // Create or replace the css file.
  $css_path = variable_get('gallery_assist_directory', FALSE) . '/css';
  $destination = $css_path . '/' . $type . '.gallery_assist.css';

  // Float.
  // Teaser view.
  $settings['float_margin_value'] = '10px;';
  if ($settings['teaser_container_float'] != 'none') {
    $settings['t_float'] = "float:{$settings['teaser_container_float']};";
    if ($settings['teaser_container_float'] == 'right') {
      $settings['t_float_margin'] = 'margin-left:';
    }
    if ($settings['teaser_container_float'] == 'left') {
      $settings['t_float_margin'] = 'margin-right:';
    }
    $settings['t_float_margin'] .= 0;

    //$settings['float_margin_value'];
  }

  // Page view.
  if ($settings['page_container_float'] != 'none') {
    if ($settings['ga_page_float'] == 'right') {
      $settings['p_float_margin'] = 'margin-left:';
    }
    if ($settings['page_container_float'] == 'left') {
      $settings['p_float_margin'] = 'margin-right:';
    }
    $settings['p_float'] = "float:{$settings['page_container_float']};";
    $settings['p_float'] .= $settings['p_float_margin'] . $settings['float_margin_value'];
  }
  $css = array();
  $css[] = '/* CSS file for the content type ' . $type . ' assignment. */';
  $css[] = $classes['container_class'] . '.teaser {
    width:' . $ct_width . 'px;
    height:' . $ct_height . 'px;
    border:5px solid red;
    }';
  $css[] = $classes['container_class'] . '.full {
    ' . (isset($settings['p_float']) && $settings['p_float'] ? $settings['p_float'] : '') . 'width:' . $cp_width . 'px;
    height:' . $cp_height . 'px;
    border:5px solid green;
  }';
  $css[] = $classes['container_class'] . ' .ga-image-box{
    float:left;
    width:' . $thm['width'] . 'px;
    height:' . $thm['height'] . 'px;
    border:' . $settings['thm_border'] . 'px solid ' . $settings['thm_border_color'] . ';
    margin:' . $settings['thm_margin'] . 'px;
    padding:' . $settings['thm_padding'] . 'px;
    text-align:center;
  }';
  $css[] = '.gallery-assist-pager-top, .gallery-assist-pager-bottom {
    /*padding:0 ' . $settings['thm_padding'] . 'px;*/
    width:' . ($cp_width + ($settings['thm_padding'] + $settings['thm_margin'] + 5) / 2) . 'px;
  }';
  $css[] = '';
  $data = implode("\n", $css);
  file_prepare_directory($css_path, 1);
  file_save_data($data, $destination, FILE_EXISTS_REPLACE);
  drupal_set_message(t('A CSS file for the content type @assignment has been created.', array(
    '@assignment' => node_type_get_name($type),
  )));
}