/**
  * Add ajax callbacks.
  *
  * @since 3.0.0
  */
 public function add_callbacks()
 {
     $calendars = simcal_get_calendar_types();
     foreach ($calendars as $calendar => $views) {
         foreach ($views as $view) {
             $the_view = simcal_get_calendar_view(0, $calendar . '-' . $view);
             if ($the_view instanceof Calendar_View) {
                 $the_view->add_ajax_actions();
             }
         }
     }
     do_action('simcal_add_ajax_callbacks');
 }
 /**
  * Constructor.
  *
  * @since 3.0.0
  */
 public function __construct()
 {
     $this->id = 'calendars';
     $this->option_group = 'settings';
     $this->label = __('Calendars', 'google-calendar-events');
     //$this->description      = __( 'Manage calendar preferences and calendar types settings and options.', 'google-calendar-events' );
     $calendars = simcal_get_calendar_types();
     $calendar_settings = array();
     if (!empty($calendars) && is_array($calendars)) {
         foreach ($calendars as $calendar => $views) {
             $calendar_type = simcal_get_calendar($calendar);
             if ($calendar_type instanceof Calendar) {
                 $settings = $calendar_type->settings_fields();
                 if (!empty($settings)) {
                     $calendar_settings[$calendar] = $settings;
                 }
             }
         }
     }
     $this->calendar_types = $calendar_settings;
     $this->sections = $this->add_sections();
     $this->fields = $this->add_fields();
 }
    /**
     * Print the meta box settings handle.
     *
     * @since  3.0.0
     * @access  private
     *
     * @param \WP_Post $post
     */
    private static function settings_handle($post)
    {
        $feed_options = $calendar_options = $calendar_views = array();
        $feed_types = simcal_get_feed_types();
        foreach ($feed_types as $feed_type) {
            $feed = simcal_get_feed($feed_type);
            if ($feed instanceof Feed) {
                $feed_options[$feed_type] = $feed->name;
            }
        }
        $calendar_types = simcal_get_calendar_types();
        foreach ($calendar_types as $calendar_type => $views) {
            $calendar = simcal_get_calendar($calendar_type);
            if ($calendar instanceof Calendar) {
                $calendar_options[$calendar_type] = $calendar->name;
                $calendar_views[$calendar_type] = $calendar->views;
            }
        }
        if ($feed_options) {
            if ($feed_types = wp_get_object_terms($post->ID, 'calendar_feed')) {
                $feed_type = sanitize_title(current($feed_types)->name);
            } else {
                $feed_type = apply_filters('simcal_default_feed_type', 'google');
            }
            ?>
			<label for="_feed_type"><span><?php 
            _e('Event Source', 'google-calendar-events');
            ?>
</span>
				<select name="_feed_type" id="_feed_type">
					<optgroup label="<?php 
            _ex('Get events from', 'From which calendar source to load events from', 'google-calendar-events');
            ?>
">
						<?php 
            foreach ($feed_options as $feed => $name) {
                ?>
							<option value="<?php 
                echo $feed;
                ?>
" <?php 
                selected($feed, $feed_type, true);
                ?>
><?php 
                echo $name;
                ?>
</option>
						<?php 
            }
            ?>
					</optgroup>
				</select>
			</label>
			<?php 
        }
        if ($calendar_options) {
            if ($calendar_types = wp_get_object_terms($post->ID, 'calendar_type')) {
                $calendar_type = sanitize_title(current($calendar_types)->name);
            } else {
                $calendar_type = apply_filters('simcal_default_calendar_type', 'default-calendar');
            }
            ?>
			<label for="_calendar_type"><span><?php 
            _e('Calendar', 'google-calendar-events');
            ?>
</span>
				<select name="_calendar_type" id="_calendar_type">
					<optgroup label="<?php 
            _e('Calendar to use', 'google-calendar-events');
            ?>
">
						<?php 
            foreach ($calendar_options as $calendar => $name) {
                ?>
							<option value="<?php 
                echo $calendar;
                ?>
" <?php 
                selected($calendar, $calendar_type, true);
                ?>
><?php 
                echo $name;
                ?>
</option>
						<?php 
            }
            ?>
					</optgroup>
				</select>
			</label>
			<?php 
            if ($calendar_views) {
                $calendar_view = get_post_meta($post->ID, '_calendar_view', true);
                foreach ($calendar_views as $calendar => $views) {
                    $calendar_type_view = isset($calendar_view[$calendar]) ? $calendar_view[$calendar] : '';
                    ?>
					<label for="_calendar_view_<?php 
                    echo $calendar;
                    ?>
"><span><?php 
                    _e('View', 'google-calendar-events');
                    ?>
</span>
						<select name="_calendar_view[<?php 
                    echo $calendar;
                    ?>
]" id="_calendar_view_<?php 
                    echo $calendar;
                    ?>
">
							<optgroup label="<?php 
                    _e('View to display', 'google-calendar-events');
                    ?>
">
								<?php 
                    foreach ($views as $view => $name) {
                        ?>
									<option value="<?php 
                        echo $view;
                        ?>
" <?php 
                        selected($view, $calendar_type_view, true);
                        ?>
><?php 
                        echo $name;
                        ?>
</option>
								<?php 
                    }
                    ?>
							</optgroup>
						</select>
					</label>
					<?php 
                }
            }
        }
    }
 /**
  * Load scripts and styles.
  *
  * @since 3.0.0
  */
 public function load()
 {
     $types = simcal_get_calendar_types();
     foreach ($types as $calendar => $views) {
         foreach ($views as $key => $view) {
             $view = simcal_get_calendar_view(0, $calendar . '-' . $view);
             $scripts[] = $view->scripts($this->min);
             $styles[] = $view->styles($this->min);
         }
     }
     $this->get_widgets_assets();
     $this->scripts = apply_filters('simcal_front_end_scripts', $scripts, $this->min);
     // First check if there is a multi-dimensional array of scripts
     if (isset($this->scripts[0])) {
         foreach ($this->scripts as $script) {
             $this->load_scripts($script);
         }
     } else {
         $this->load_scripts($this->scripts);
     }
     $this->styles = apply_filters('simcal_front_end_styles', $styles, $this->min);
     // First check if there is a multi-dimensional array of styles
     if (isset($this->styles[0])) {
         foreach ($this->styles as $style) {
             $this->load_styles($style);
         }
     } else {
         $this->load_styles($this->styles);
     }
 }