<?php
/**
 * FooGallery - {name}
 *
 * {desc}
 *
 * Plugin Name: FooGallery - {name}
 * Description: {desc}
 * Version:     1.0.0
 * Author:      {author}
 * Author URI:  {author_link}
 * License:     GPL-2.0+
 * License URI: http://www.gnu.org/licenses/gpl-2.0.txt
 */

if ( !class_exists( '{package}' ) ) {

	define('{constant}_FILE', __FILE__ );
	define('{constant}_URL', plugin_dir_url( __FILE__ ));
	define('{constant}_VERSION', '1.0.0');
	define('{constant}_PATH', plugin_dir_path( __FILE__ ));
	define('{constant}_SLUG', 'foogallery-{slug}');

	class {package} {
		/**
		 * Wire up everything we need to run the extension
		 */
		function __construct() {
			add_filter( 'foogallery_gallery_templates', array( $this, 'add_template' ) );
			add_filter( 'foogallery_gallery_templates_files', array( $this, 'register_myself' ) );
			add_filter( 'foogallery_located_template-{slug}', array( $this, 'enqueue_dependencies' ) );
			add_filter( 'foogallery_template_js_ver-{slug}', array( $this, 'override_version' ) );
			add_filter( 'foogallery_template_css_ver-{slug}', array( $this, 'override_version' ) );
			add_filter( 'foogallery_gallery_template_arguments-{slug}', array( $this, 'build_gallery_template_arguments' ) );
		}

		/**
		 * Register myself so that all associated JS and CSS files can be found and automatically included
		 * @param $extensions
		 *
		 * @return array
		 */
		function register_myself( $extensions ) {
			$extensions[] = __FILE__;
			return $extensions;
		}

		/**
		 * Override the asset version number when enqueueing extension assets
		 */
		function override_version( $version ) {
			return {constant}_VERSION;
		}

		/**
		 * Enqueue any script or stylesheet file dependencies that your gallery template relies on
		 */
		function enqueue_dependencies() {
			//wp_enqueue_script(
			//	'{slug}-dependency',
			//	{constant}_URL . 'js/{slug}-dependency.js',
			//	array(),
			//	{constant}_VERSION
			//);

			wp_enqueue_script(
				'{slug}',
				{constant}_URL . 'js/{slug}.js',
				array(), //array('{slug}-dependency'),
				{constant}_VERSION
			);

			foogallery_enqueue_style(
				'scattered-polaroids-gallery',
				{constant}_URL . 'css/photostack.css',
				array(), //include any CSS dependencies here
				{constant}_VERSION
			);
		}

		/**
		 * Add our gallery template to the list of templates available for every gallery
		 * @param $gallery_templates
		 *
		 * @return array
		 */
		function add_template( $gallery_templates ) {

			$gallery_templates[] = array(
				'slug'            => '{slug}',
				'name'            => __( '{name}', '{plugin_slug}'),
				'preview_support' => true,
				'preview_css'     => {constant}_URL . 'css/gallery-{slug}.css',
				'admin_js'	      => {constant}_URL . 'js/admin-gallery-{slug}.js',
				'fields'	      => array(
					array(
						'id'      => 'thumbnail_dimensions',
						'title'   => __('Thumbnail Size', '{plugin_slug}'),
						'desc'    => __('Choose the size of your thumbs.', '{plugin_slug}'),
						'type'    => 'thumb_size',
						'default' => array(
							'width' => get_option( 'thumbnail_size_w' ),
							'height' => get_option( 'thumbnail_size_h' ),
							'crop' => true
						)
					),
					array(
						'id'      => 'thumbnail_link',
						'title'   => __('Thumbnail Link', '{plugin_slug}'),
						'default' => 'image' ,
						'type'    => 'thumb_link',
						'spacer'  => '<span class="spacer"></span>',
						'desc'	  => __('You can choose to either link each thumbnail to the full size image or to the image\'s attachment page.', '{plugin_slug}')
					),
					array(
						'id'      => 'lightbox',
						'title'   => __('Lightbox', '{plugin_slug}'),
						'desc'    => __('Choose which lightbox you want to use in the gallery.', '{plugin_slug}'),
						'type'    => 'lightbox'
					),
					array(
						'id'      => 'alignment',
						'title'   => __('Gallery Alignment', '{plugin_slug}'),
						'desc'    => __('The horizontal alignment of the thumbnails inside the gallery.', '{plugin_slug}'),
						'default' => 'alignment-center',
						'type'    => 'select',
						'choices' => array(
							'alignment-left' => __( 'Left', '{plugin_slug}' ),
							'alignment-center' => __( 'Center', '{plugin_slug}' ),
							'alignment-right' => __( 'Right', '{plugin_slug}' )
						)
					)
					//available field types available : html, checkbox, select, radio, textarea, text, checkboxlist, icon
					//an example of a icon field used in the default gallery template
					//array(
					//	'id'      => 'border-style',
					//	'title'   => __('Border Style', '{plugin_slug}'),
					//	'desc'    => __('The border style for each thumbnail in the gallery.', '{plugin_slug}'),
					//	'type'    => 'icon',
					//	'default' => 'border-style-square-white',
					//	'choices' => array(
					//		'border-style-square-white' => array('label' => 'Square white border with shadow', 'img' => {constant}_URL . 'assets/border-style-icon-square-white.png'),
					//		'border-style-circle-white' => array('label' => 'Circular white border with shadow', 'img' => {constant}_URL . 'assets/border-style-icon-circle-white.png'),
					//		'border-style-square-black' => array('label' => 'Square Black', 'img' => {constant}_URL . 'assets/border-style-icon-square-black.png'),
					//		'border-style-circle-black' => array('label' => 'Circular Black', 'img' => {constant}_URL . 'assets/border-style-icon-circle-black.png'),
					//		'border-style-inset' => array('label' => 'Square Inset', 'img' => {constant}_URL . 'assets/border-style-icon-square-inset.png'),
					//		'border-style-rounded' => array('label' => 'Plain Rounded', 'img' => {constant}_URL . 'assets/border-style-icon-plain-rounded.png'),
					//		'' => array('label' => 'Plain', 'img' => {constant}_URL . 'assets/border-style-icon-none.png'),
					//	)
					//),
				)
			);

			return $gallery_templates;
		}

		/**
		 * Build up the arguments needed for rendering the gallery template
		 *
		 * @param $args
		 * @return array
		 */
		function build_gallery_template_arguments( $args ) {
			$args = foogallery_gallery_template_setting( 'thumbnail_dimensions', array() );
			$args['crop'] = '1'; //we now force thumbs to be cropped
			$args['link'] = foogallery_gallery_template_setting( 'thumbnail_link', 'image' );

			return $args;
		}
	}
}

new {package}();