/**
  * Admin enqueue styles and scripts.
  */
 public function malinky_ajax_pagination_admin_scripts()
 {
     wp_register_style('malinky-ajax-pagination-admin-css', MALINKY_AJAX_PAGINATION_PLUGIN_URL . '/css/style-admin.css', false, NULL);
     wp_enqueue_style('malinky-ajax-pagination-admin-css');
     // Get theme defaults.
     $malinky_ajax_pagination_theme_defaults = malinky_ajax_pagination_theme_defaults();
     wp_register_script('malinky-ajax-pagination-admin-main-js', MALINKY_AJAX_PAGINATION_PLUGIN_URL . '/js/main-admin.js', array('jquery'), NULL, true);
     wp_localize_script('malinky-ajax-pagination-admin-main-js', 'malinkyAjaxPagingThemeDefaults', $malinky_ajax_pagination_theme_defaults);
     wp_enqueue_script('malinky-ajax-pagination-admin-main-js');
     wp_enqueue_media();
     wp_register_script('malinky-ajax-pagination-admin-media-uploader-js', MALINKY_AJAX_PAGINATION_PLUGIN_URL . '/js/media-uploader.js', array('jquery'), NULL, true);
     wp_enqueue_script('malinky-ajax-pagination-admin-media-uploader-js');
 }
 /**
  * Get the default themes names based on the theme type.
  *
  * @return arr
  */
 function malinky_ajax_pagination_theme_default_names()
 {
     $theme_names = malinky_ajax_pagination_theme_defaults();
     return array_combine(array_keys($theme_names), array_keys($theme_names));
 }
 /**
  * Register settings and set up sections and fields. Called from admin_init action.
  *
  * register_setting()
  * add_settings_section()
  * add_settings_field()
  *
  * @return void   
  */
 public function malinky_ajax_pagination_settings_init()
 {
     // Populate defaults.
     $malinky_ajax_pagination_theme_defaults = malinky_ajax_pagination_theme_defaults();
     $total_settings = $this->malinky_ajax_pagination_settings_count_settings();
     for ($x = 1; $x <= $this->malinky_ajax_pagination_settings_new_page_number(); $x++) {
         register_setting('malinky-ajax-pagination-settings-' . $x, '_malinky_ajax_pagination_settings_' . $x);
         /* ------------------------------------------------------------------------ *
          * Sections
          * ------------------------------------------------------------------------ */
         add_settings_section('wrapper_settings', __('Wrapper Settings', 'malinky-ajax-pagination'), array($this, 'malinky_ajax_pagination_settings_wrapper_message'), 'malinky-ajax-pagination-settings-' . $x);
         add_settings_section('pagination_type_settings', __('Pagination Type Settings', 'malinky-ajax-pagination'), array($this, 'malinky_ajax_pagination_settings_pagination_type_message'), 'malinky-ajax-pagination-settings-' . $x);
         add_settings_section('loader_settings', __('Loader Settings', 'malinky-ajax-pagination'), array($this, 'malinky_ajax_pagination_settings_loader_message'), 'malinky-ajax-pagination-settings-' . $x);
         add_settings_section('load_more_button_settings', __('Load More Button Settings', 'malinky-ajax-pagination'), array($this, 'malinky_ajax_pagination_settings_load_more_button_message'), 'malinky-ajax-pagination-settings-' . $x);
         /* ------------------------------------------------------------------------ *
          * Wrapper Settings
          * ------------------------------------------------------------------------ */
         add_settings_field('theme_defaults', __('Theme Defaults', 'malinky-ajax-pagination'), array($this, 'malinky_settings_select_field'), 'malinky-ajax-pagination-settings-' . $x, 'wrapper_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_id' => 'theme_defaults', 'option_default' => 'Twenty Fifteen', 'option_field_type_options' => malinky_ajax_pagination_theme_default_names(), 'option_small' => __('Select from popular themes or overwrite the settings below yourself.', 'malinky-ajax-pagination')));
         add_settings_field('posts_wrapper', __('Posts Selector', 'malinky-ajax-pagination'), array($this, 'malinky_settings_text_field'), 'malinky-ajax-pagination-settings-' . $x, 'wrapper_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_id' => 'posts_wrapper', 'option_default' => $malinky_ajax_pagination_theme_defaults['Twenty Fifteen']['posts_wrapper'], 'option_small' => __('The selector that wraps all of the posts/products.', 'malinky-ajax-pagination')));
         add_settings_field('post_wrapper', __('Post Selector', 'malinky-ajax-pagination'), array($this, 'malinky_settings_text_field'), 'malinky-ajax-pagination-settings-' . $x, 'wrapper_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_id' => 'post_wrapper', 'option_default' => $malinky_ajax_pagination_theme_defaults['Twenty Fifteen']['post_wrapper'], 'option_small' => __('The selector of an individual post/product.', 'malinky-ajax-pagination')));
         add_settings_field('pagination_wrapper', __('Navigation Selector', 'malinky-ajax-pagination'), array($this, 'malinky_settings_text_field'), 'malinky-ajax-pagination-settings-' . $x, 'wrapper_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_id' => 'pagination_wrapper', 'option_default' => $malinky_ajax_pagination_theme_defaults['Twenty Fifteen']['pagination_wrapper'], 'option_small' => __('The selector of the post/product navigation.', 'malinky-ajax-pagination')));
         add_settings_field('next_page_selector', __('Next Selector', 'malinky-ajax-pagination'), array($this, 'malinky_settings_text_field'), 'malinky-ajax-pagination-settings-' . $x, 'wrapper_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_id' => 'next_page_selector', 'option_default' => $malinky_ajax_pagination_theme_defaults['Twenty Fifteen']['next_page_selector'], 'option_small' => __('The selector of the navigation next link.', 'malinky-ajax-pagination')));
         /* ------------------------------------------------------------------------ *
          * Pagination Type Settings
          * ------------------------------------------------------------------------ */
         add_settings_field('paging_type', __('Paging Type', 'malinky-ajax-pagination'), array($this, 'malinky_settings_select_field'), 'malinky-ajax-pagination-settings-' . $x, 'pagination_type_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_array' => $x, 'option_id' => 'paging_type', 'option_default' => 'load-more', 'option_field_type_options' => array('infinite-scroll' => 'Infinite Scroll', 'load-more' => 'Load More Button', 'pagination' => 'Pagination'), 'option_small' => __('Choose a pagination type.', 'malinky-ajax-pagination')));
         add_settings_field('infinite_scroll_buffer', __('Infinite Scroll Buffer (px)', 'malinky-ajax-pagination'), array($this, 'malinky_settings_text_field'), 'malinky-ajax-pagination-settings-' . $x, 'pagination_type_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_id' => 'infinite_scroll_buffer', 'option_default' => '20', 'option_small' => __('The higher the buffer the earlier, during scrolling, additional posts/products will be loaded.<br /><em>Only used when Infinite Scroll is selected as the paging type.</em>', 'malinky-ajax-pagination')));
         /* ------------------------------------------------------------------------ *
          * Loader Settings
          * ------------------------------------------------------------------------ */
         add_settings_field('ajax_loader', __('AJAX Loader', 'malinky-ajax-pagination'), array($this, 'malinky_settings_ajax_loader_field'), 'malinky-ajax-pagination-settings-' . $x, 'loader_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_id' => 'ajax_loader', 'option_default' => 'default', 'option_small' => ''));
         /* ------------------------------------------------------------------------ *
          * Load More Button Settings
          * ------------------------------------------------------------------------ */
         add_settings_field('load_more_button_text', __('Load More Button Text', 'malinky-ajax-pagination'), array($this, 'malinky_settings_text_field'), 'malinky-ajax-pagination-settings-' . $x, 'load_more_button_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_id' => 'load_more_button_text', 'option_default' => 'Load More Posts', 'option_small' => __('Change the button text.', 'malinky-ajax-pagination')));
         add_settings_field('loading_more_posts_text', __('Loading More Posts Text', 'malinky-ajax-pagination'), array($this, 'malinky_settings_text_field'), 'malinky-ajax-pagination-settings-' . $x, 'load_more_button_settings', array('option_name' => '_malinky_ajax_pagination_settings_' . $x, 'option_id' => 'loading_more_posts_text', 'option_default' => 'Loading...', 'option_small' => __('Change the text that is displayed on the button while new posts/products are being loaded.', 'malinky-ajax-pagination')));
     }
 }