<?php
/**
 * @file
 * This module creates a Views Slideshow Xtra content type and
 * example slide nodes.
 */

/**
 * Implements hook_init().
 */
function views_slideshow_xtra_example_init () {
  //drupal_add_css(drupal_get_path("module", "views_slideshow_xtra_example")."/views_slideshow_xtra_example.css");
}

/**
 * Implements hook_menu().
 */
function views_slideshow_xtra_example_menu() {
  $items['admin/config/media/views-slideshow-xtra'] = array(
    'title' => 'Views Slideshow Xtra',
    'description' => 'Views Slideshow Xtra Configuration.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('views_slideshow_xtra_example_admin_form'),
    'access arguments' => array('administer site configuration'),
    'type' => MENU_NORMAL_ITEM,
    'weight' => 0,
  );
  return $items;
}

/**
 * Implements hook_help().
 */
function views_slideshow_xtra_example_help($path, $arg) {
  switch ($path) {
    case 'views_slideshow_xtra_example':
      return "<p>" . t("This module provides an example node type and nodes for Views Slideshow Xtra slides.") . "</p>";
  }
}


/**
 * Create three example slide nodes with image and overlay elements.
 */
function views_slideshow_xtra_example_nodes() {
  
  // Slide 1
  $node1 = new stdClass();
  $node1->type = 'vsx_slide';
  node_object_prepare($node1);
  $node1->title    = 'VSX Example Slide 1 ';
  $node1->language = LANGUAGE_NONE;

  // Slide 1 Order
  $node1->vsx_slide_order[$node1->language][0] = '1';
  
  // Slide 1 Image
  $image_directory = drupal_get_path('module', 'views_slideshow_xtra_example') . '/images/';
  $filepath = drupal_realpath($image_directory . 'vsx-slide-four-mile.jpg'); // Create a File object
  $file = (object) array(
            'uid' => 1,
            'uri' => $filepath,
            'filemime' => file_get_mimetype($filepath),
            'status' => 1,
   );
  $file = file_copy($file, 'public://'); // Save the file to the root of the files directory. You can specify a subdirectory, for example, 'public://images' 
  $node1->vsx_slide_image[LANGUAGE_NONE][0] = (array)$file; //associate the file object with the image field:
  node_save($node1);

  // Slide 2
  $node2 = new stdClass();
  $node2->type = 'vsx_slide';
  node_object_prepare($node2);
  $node2->title    = 'VSX Example Slide 2 ';
  $node2->language = LANGUAGE_NONE;

  // Slide 2 Order
  $node2->vsx_slide_order[$node2->language][0] = '2';
  
  // Slide 2 Image
  $image_directory = drupal_get_path('module', 'views_slideshow_xtra_example') . '/images/';
  $filepath = drupal_realpath($image_directory . 'vsx-slide-mount-princeton.jpg'); // Create a File object
  $file = (object) array(
            'uid' => 1,
            'uri' => $filepath,
            'filemime' => file_get_mimetype($filepath),
            'status' => 1,
  );
  $file = file_copy($file, 'public://'); // Save the file to the root of the files directory. You can specify a subdirectory, for example, 'public://images' 
  $node2->vsx_slide_image[LANGUAGE_NONE][0] = (array)$file; //associate the file object with the image field:
  node_save($node2);

  // Slide 3
  $node3 = new stdClass();
  $node3->type = 'vsx_slide';
  node_object_prepare($node3);
  $node3->title    = 'VSX Example Slide 3 ';
  $node3->language = LANGUAGE_NONE;

  // Slide 3 Order
  $node3->vsx_slide_order[$node3->language][0] = '3';
    
  // Slide 3 Image
  $image_directory = drupal_get_path('module', 'views_slideshow_xtra_example') . '/images/';
  $filepath = drupal_realpath($image_directory . 'vsx-slide-mount-yale-treeline.jpg'); // Create a File object
  $file = (object) array(
            'uid' => 1,
            'uri' => $filepath,
            'filemime' => file_get_mimetype($filepath),
            'status' => 1,
   );
  $file = file_copy($file, 'public://'); // Save the file to the root of the files directory. You can specify a subdirectory, for example, 'public://images' 
  $node3->vsx_slide_image[LANGUAGE_NONE][0] = (array)$file; //associate the file object with the image field:
  node_save($node3);
}

/**
 * Admin form.
 */
function views_slideshow_xtra_example_admin_form() {

  $form = array();

  // Heading
  $form['heading'] = array(
      '#markup' => '<br/><strong>Generate VSX Example Nodes</strong><br/><br/>',
      //'#markup' => '<br/><strong>Generate and Delete VSX Example Nodes</strong><br/><br/>',
  );
  
	// Generate Nodes Button
	$form['generate_nodes'] = array(
  '#type' => 'submit',
  '#value' => t('Generate Example Nodes'),
	);
  
	// Delete Nodes Button
// 	$form['delete_nodes'] = array(
//   '#type' => 'submit',
//   '#value' => t('Delete Example Nodes'),
// 	);

	// Heading
	$form['footer'] = array(
	      '#markup' => '<br/><br/><br/>',
	);
	
	return $form;
}

/**
 * Admin form submit.
 */
function views_slideshow_xtra_example_admin_form_submit($form, &$form_state) {

  if($form_state['clicked_button']['#value'] == $form_state['values']['generate_nodes']) {
    views_slideshow_xtra_example_nodes();
    drupal_set_message(t('Example nodes generated.')); 
  }

//  if($form_state['clicked_button']['#value'] == $form_state['values']['delete_nodes']) {
//    drupal_set_message(t('Not yet implemented.'));
    /*
    $results = db_select('node', 'n')
    ->fields('n', array('nid'))
    ->condition('type', array('views_slideshow_xtra'), 'IN')
    ->execute();
    foreach ($results as $result) {
      $nids[] = $result->nid;
    }

    if (!empty($nids)) {
      foreach($nids as $nid) {
        $node = node_load($nid);
        $vsx_field_values = $node->views_slideshow_xtra['und'];
        $is_example_value = FALSE;
        foreach($vsx_field_values as $value) {
          $json_str = $value['value'];
          $vsx = drupal_json_decode($json_str);
          if(!empty($vsx) && array_key_exists('vsx_example', $vsx)) {
            if($vsx['vsx_example']='true') {
              $is_example_value = TRUE;
            }
          }
        }
        if(!$is_example_value) {
          unset($nids[array_search($nid,$nids)]);
        }
      }
      node_delete_multiple($nids);
    }
    drupal_set_message(t('Deleted %count example nodes.', 
        empty($nids) ? array('%count' => 0) : array('%count' => count($nids))));
    */
//	}
}

/**
 * Implements hook_views_api().
 */
function views_slideshow_xtra_example_views_api() {
  return array('api' => 3.0);
}

/**
 * Implements hook_views_default_views().
 */
function views_slideshow_xtra_example_views_default_views () {
 	
$view = new view;
$view->name = 'views_slideshow_xtra_example';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'Views Slideshow Xtra Example';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'Views Slideshow Xtra Example';
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['query_comment'] = FALSE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['style_plugin'] = 'slideshow';
$handler->display->display_options['style_options']['slideshow_type'] = 'views_slideshow_cycle';
$handler->display->display_options['style_options']['slideshow_skin'] = 'default';
$handler->display->display_options['style_options']['skin_info'] = array(
  'class' => 'default',
  'name' => 'Default',
  'module' => 'views_slideshow',
  'path' => '',
  'stylesheets' => array(),
);
$handler->display->display_options['style_options']['widgets']['top']['views_slideshow_pager']['weight'] = '1';
$handler->display->display_options['style_options']['widgets']['top']['views_slideshow_pager']['type'] = 'views_slideshow_pager_fields';
$handler->display->display_options['style_options']['widgets']['top']['views_slideshow_pager']['views_slideshow_pager_fields_fields'] = array(
  'vsx_slide_image' => 0,
);
$handler->display->display_options['style_options']['widgets']['top']['views_slideshow_controls']['weight'] = '1';
$handler->display->display_options['style_options']['widgets']['top']['views_slideshow_controls']['type'] = 'views_slideshow_controls_text';
$handler->display->display_options['style_options']['widgets']['top']['views_slideshow_slide_counter']['weight'] = '1';
$handler->display->display_options['style_options']['widgets']['top']['views_slideshow_xtra_overlay']['enable'] = 1;
$handler->display->display_options['style_options']['widgets']['top']['views_slideshow_xtra_overlay']['weight'] = '1';
$handler->display->display_options['style_options']['widgets']['bottom']['views_slideshow_pager']['weight'] = '1';
$handler->display->display_options['style_options']['widgets']['bottom']['views_slideshow_pager']['type'] = 'views_slideshow_pager_fields';
$handler->display->display_options['style_options']['widgets']['bottom']['views_slideshow_pager']['views_slideshow_pager_fields_fields'] = array(
  'vsx_slide_image' => 0,
);
$handler->display->display_options['style_options']['widgets']['bottom']['views_slideshow_controls']['weight'] = '1';
$handler->display->display_options['style_options']['widgets']['bottom']['views_slideshow_controls']['type'] = 'views_slideshow_controls_text';
$handler->display->display_options['style_options']['widgets']['bottom']['views_slideshow_slide_counter']['weight'] = '1';
$handler->display->display_options['style_options']['widgets']['bottom']['views_slideshow_xtra_overlay']['weight'] = '1';
$handler->display->display_options['style_options']['views_slideshow_cycle']['timeout'] = '5000';
$handler->display->display_options['style_options']['views_slideshow_cycle']['speed'] = '700';
$handler->display->display_options['style_options']['views_slideshow_cycle']['delay'] = '0';
$handler->display->display_options['style_options']['views_slideshow_cycle']['start_paused'] = 0;
$handler->display->display_options['style_options']['views_slideshow_cycle']['remember_slide_days'] = '1';
$handler->display->display_options['style_options']['views_slideshow_cycle']['items_per_slide'] = '1';
$handler->display->display_options['style_options']['views_slideshow_cycle']['wait_for_image_load_timeout'] = '3000';
$handler->display->display_options['style_options']['views_slideshow_cycle']['cleartype'] = 0;
$handler->display->display_options['style_options']['views_slideshow_cycle']['cleartypenobg'] = 0;
$handler->display->display_options['row_plugin'] = 'fields';
/* Field: Content: Slide Image */
$handler->display->display_options['fields']['vsx_slide_image']['id'] = 'vsx_slide_image';
$handler->display->display_options['fields']['vsx_slide_image']['table'] = 'field_data_vsx_slide_image';
$handler->display->display_options['fields']['vsx_slide_image']['field'] = 'vsx_slide_image';
$handler->display->display_options['fields']['vsx_slide_image']['label'] = '';
$handler->display->display_options['fields']['vsx_slide_image']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['external'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['trim'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['alter']['html'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['vsx_slide_image']['element_default_classes'] = 1;
$handler->display->display_options['fields']['vsx_slide_image']['hide_empty'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['empty_zero'] = 0;
$handler->display->display_options['fields']['vsx_slide_image']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['vsx_slide_image']['click_sort_column'] = 'fid';
$handler->display->display_options['fields']['vsx_slide_image']['settings'] = array(
  'image_style' => 'large',
  'image_link' => '',
);
$handler->display->display_options['fields']['vsx_slide_image']['field_api_classes'] = 0;
/* Sort criterion: Content: Slide Order (vsx_slide_order) */
$handler->display->display_options['sorts']['vsx_slide_order_value']['id'] = 'vsx_slide_order_value';
$handler->display->display_options['sorts']['vsx_slide_order_value']['table'] = 'field_data_vsx_slide_order';
$handler->display->display_options['sorts']['vsx_slide_order_value']['field'] = 'vsx_slide_order_value';
/* Filter criterion: Content: Published */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filter criterion: Content: Type */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
  'vsx_slide' => 'vsx_slide',
);

/* Display: Slideshow */
$handler = $view->new_display('page', 'Slideshow', 'page');
$handler->display->display_options['path'] = 'vsx-example';

/* Display: Edit Link Overlay */
$handler = $view->new_display('attachment', 'Edit Link Overlay', 'attachment_1');
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'overlay';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Field: Node: Edit link */
$handler->display->display_options['fields']['edit_node']['id'] = 'edit_node';
$handler->display->display_options['fields']['edit_node']['table'] = 'views_entity_node';
$handler->display->display_options['fields']['edit_node']['field'] = 'edit_node';
$handler->display->display_options['fields']['edit_node']['label'] = '';
$handler->display->display_options['fields']['edit_node']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['edit_node']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['edit_node']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['edit_node']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['edit_node']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['edit_node']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['edit_node']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['edit_node']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['edit_node']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['edit_node']['alter']['trim'] = 0;
$handler->display->display_options['fields']['edit_node']['alter']['html'] = 0;
$handler->display->display_options['fields']['edit_node']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['edit_node']['element_default_classes'] = 1;
$handler->display->display_options['fields']['edit_node']['hide_empty'] = 0;
$handler->display->display_options['fields']['edit_node']['empty_zero'] = 0;
$handler->display->display_options['fields']['edit_node']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['edit_node']['text'] = 'Edit Slide Content';
$handler->display->display_options['displays'] = array(
  'page' => 'page',
  'default' => 0,
);
$handler->display->display_options['attachment_position'] = 'after';

/* Display: Title Overlay */
$handler = $view->new_display('attachment', 'Title Overlay', 'attachment_2');
$handler->display->display_options['display_description'] = 'Title Overlay';
$handler->display->display_options['pager']['type'] = 'none';
$handler->display->display_options['pager']['options']['offset'] = '0';
$handler->display->display_options['defaults']['style_plugin'] = FALSE;
$handler->display->display_options['style_plugin'] = 'overlay';
$handler->display->display_options['style_options']['overlay_delay'] = '850';
$handler->display->display_options['style_options']['overlay_fade_in'] = '1000';
$handler->display->display_options['style_options']['overlay_fade_out'] = '1000';
$handler->display->display_options['style_options']['overlay_fade_out_delay'] = '3000';
$handler->display->display_options['defaults']['style_options'] = FALSE;
$handler->display->display_options['defaults']['row_plugin'] = FALSE;
$handler->display->display_options['row_plugin'] = 'fields';
$handler->display->display_options['defaults']['row_options'] = FALSE;
$handler->display->display_options['defaults']['fields'] = FALSE;
/* Field: Content: Title */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
$handler->display->display_options['fields']['title']['label'] = '';
$handler->display->display_options['fields']['title']['alter']['alter_text'] = 0;
$handler->display->display_options['fields']['title']['alter']['make_link'] = 0;
$handler->display->display_options['fields']['title']['alter']['absolute'] = 0;
$handler->display->display_options['fields']['title']['alter']['external'] = 0;
$handler->display->display_options['fields']['title']['alter']['replace_spaces'] = 0;
$handler->display->display_options['fields']['title']['alter']['trim_whitespace'] = 0;
$handler->display->display_options['fields']['title']['alter']['nl2br'] = 0;
$handler->display->display_options['fields']['title']['alter']['word_boundary'] = 1;
$handler->display->display_options['fields']['title']['alter']['ellipsis'] = 1;
$handler->display->display_options['fields']['title']['alter']['strip_tags'] = 0;
$handler->display->display_options['fields']['title']['alter']['trim'] = 0;
$handler->display->display_options['fields']['title']['alter']['html'] = 0;
$handler->display->display_options['fields']['title']['element_label_colon'] = FALSE;
$handler->display->display_options['fields']['title']['element_default_classes'] = 1;
$handler->display->display_options['fields']['title']['hide_empty'] = 0;
$handler->display->display_options['fields']['title']['empty_zero'] = 0;
$handler->display->display_options['fields']['title']['hide_alter_empty'] = 1;
$handler->display->display_options['fields']['title']['link_to_node'] = 0;
$handler->display->display_options['displays'] = array(
  'page' => 'page',
  'default' => 0,
);
$handler->display->display_options['attachment_position'] = 'after';

// Paste the Views Export above.
  
  // Wrap and return default view.
  $views[$view->name] = $view;
  return $views;
}

