Version Description
- Initial release.
Download this release
Release Info
Developer | Cryout Creations |
Plugin | Serious Slider |
Version | 0.5 |
Comparing to | |
See all releases |
Version 0.5
- cryout-serious-slider.php +633 -0
- demo/demo-content.php +93 -0
- demo/sample-slide-1.jpg +0 -0
- demo/sample-slide-2.jpg +0 -0
- demo/sample-slide-3.jpg +0 -0
- inc/right-column.php +16 -0
- inc/settings.php +106 -0
- inc/shortcodes.php +162 -0
- inc/slider.php +0 -0
- inc/taxmeta.php +109 -0
- inc/widgets.php +51 -0
- languages/default.mo +0 -0
- languages/default.po +401 -0
- readme.txt +48 -0
- resources/backend.css +129 -0
- resources/backend.js +0 -0
- resources/fonts/serioussliderglyphs.eot +0 -0
- resources/fonts/serioussliderglyphs.svg +22 -0
- resources/fonts/serioussliderglyphs.ttf +0 -0
- resources/fonts/serioussliderglyphs.woff +0 -0
- resources/images/serious-slider-editor-icon.png +0 -0
- resources/images/serious-slider-header.png +0 -0
- resources/images/serious-slider-icon.png +0 -0
- resources/jquery.mobile.custom.js +864 -0
- resources/jquery.mobile.custom.min.js +3 -0
- resources/mce-button.css +8 -0
- resources/mce-button.js +137 -0
- resources/slider.js +332 -0
- resources/style.css +752 -0
cryout-serious-slider.php
ADDED
@@ -0,0 +1,633 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
/*
|
3 |
+
Plugin Name: Cryout Serious Slider
|
4 |
+
Plugin URI: http://www.cryoutcreations.eu/serious-slider
|
5 |
+
Description: Responsive slider, built on Bootstrap Carousel, uses core WordPress functionality, easy to use, seriously.
|
6 |
+
Version: 0.5
|
7 |
+
Author: Cryout Creations
|
8 |
+
Author URI: http://www.cryoutcreations.eu
|
9 |
+
License: GPLv3
|
10 |
+
License URI: http://www.gnu.org/licenses/gpl.html
|
11 |
+
*/
|
12 |
+
|
13 |
+
class Cryout_Serious_Slider {
|
14 |
+
|
15 |
+
public $version = "0.5";
|
16 |
+
public $options = array();
|
17 |
+
public $shortcode_tag = 'serious-slider';
|
18 |
+
|
19 |
+
public $slug = 'cryout-serious-slider';
|
20 |
+
public $posttype = 'cryout_serious_slide';
|
21 |
+
public $taxonomy = 'cryout_serious_slider_category';
|
22 |
+
private $title = '';
|
23 |
+
private $thepage = '';
|
24 |
+
private $aboutpage = '';
|
25 |
+
public $defaults = array(
|
26 |
+
'cryout_serious_slider_sort' => 'date', // date, order
|
27 |
+
'cryout_serious_slider_sizing' => 0, // 1 = force slider size
|
28 |
+
'cryout_serious_slider_width' => '1920', // px
|
29 |
+
'cryout_serious_slider_height' => '700', // px
|
30 |
+
'cryout_serious_slider_theme' => 'light', // light, dark, blank, bootstrap
|
31 |
+
'cryout_serious_slider_textsize' => '1.0', // em
|
32 |
+
'cryout_serious_slider_overlay' => 1, // 1 = autohide, 2 = visible
|
33 |
+
'cryout_serious_slider_animation' => 'slide', // fade, slide, overslide, underslide, parallax, hflip, vflip
|
34 |
+
'cryout_serious_slider_hover' => 'hover', // hover, false
|
35 |
+
'cryout_serious_slider_delay' => 5000, // ms
|
36 |
+
'cryout_serious_slider_transition' => 1000 // ms
|
37 |
+
);
|
38 |
+
|
39 |
+
public function __construct(){
|
40 |
+
require_once( plugin_dir_path( __FILE__ ) . 'inc/shortcodes.php' );
|
41 |
+
require_once( plugin_dir_path( __FILE__ ) . 'inc/widgets.php' );
|
42 |
+
add_action( 'init', array( $this, 'register' ) );
|
43 |
+
add_action( 'init', array( $this, 'register_post_types' ) );
|
44 |
+
add_action( 'init', array( $this, 'register_taxonomies' ), 0 );
|
45 |
+
} // __construct()
|
46 |
+
|
47 |
+
|
48 |
+
/**********************
|
49 |
+
* main class registration function
|
50 |
+
***********************/
|
51 |
+
public function register(){
|
52 |
+
|
53 |
+
$this->title = __( 'Serious Slider', 'cryout-serious-slider' );
|
54 |
+
$this->aboutpage = 'edit.php?post_type=' . $this->posttype . '&page=' . $this->slug . '-about';
|
55 |
+
|
56 |
+
//$this->options = $this->get_settings();
|
57 |
+
|
58 |
+
if (! is_admin() ) {
|
59 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_styles' ) );
|
60 |
+
add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
|
61 |
+
} // if (! is_admin())
|
62 |
+
|
63 |
+
if (is_admin() ) {
|
64 |
+
|
65 |
+
//add_action( 'admin_init', array( $this, 'register_settings' ) );
|
66 |
+
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), array( $this, 'actions_links' ), -10 );
|
67 |
+
add_filter( 'plugin_row_meta', array( $this, 'meta_links' ), 10, 2 );
|
68 |
+
add_action( 'admin_menu', array( $this, 'settings_menu' ) );
|
69 |
+
|
70 |
+
// slides list page columns customizations
|
71 |
+
add_filter( 'manage_edit-'.$this->posttype.'_columns', array($this, 'columns_edit' ) );
|
72 |
+
add_action( 'manage_'.$this->posttype.'_posts_custom_column', array($this, 'columns_content'), 10, 2 );
|
73 |
+
add_filter( 'manage_edit-'.$this->posttype.'_sortable_columns', array($this, 'order_column_register_sortable') );
|
74 |
+
//add_action( 'admin_head-edit.php', array($this, 'custom_list_css') );
|
75 |
+
//add_action( 'admin_head-edit-tags.php', array($this, 'custom_list_css') );
|
76 |
+
//add_action( 'admin_head-post-new.php', array($this, 'custom_list_css') );
|
77 |
+
add_action( 'restrict_manage_posts', array($this, 'add_taxonomy_filters') );
|
78 |
+
add_action( 'save_post', array($this, 'metabox_save') );
|
79 |
+
|
80 |
+
// shortcode button
|
81 |
+
add_action( 'admin_head', array( $this, 'admin_head') );
|
82 |
+
add_action( 'admin_enqueue_scripts', array($this , 'admin_enqueue_scripts' ) );
|
83 |
+
|
84 |
+
$localized_mce_strings = array(
|
85 |
+
'text_retrieving_sliders' => __('Retrieving sliders...', 'cryout-serious-slider'),
|
86 |
+
'text_retrieving_sliders_error' => __('Error retrieving sliders', 'cryout-serious-slider'),
|
87 |
+
'text_serious_slider' => __('Cryout Serious Slider', 'cryout-serious-slider'),
|
88 |
+
'text_serious_slider_tooltip' => __('Serious Slider', 'cryout-serious-slider'),
|
89 |
+
'text_insert_slider' => __('Insert Slider', 'cryout-serious-slider'),
|
90 |
+
'text_cancel' => __('Cancel', 'cryout-serious-slider'),
|
91 |
+
'text_select_slider' => __('Select Slider', 'cryout-serious-slider'),
|
92 |
+
'text_add_slider' => __('Add Slider', 'cryout-serious-slider'),
|
93 |
+
);
|
94 |
+
|
95 |
+
// ajax handling for slider parameters in shortcode button generator
|
96 |
+
wp_enqueue_script( 'cryout-serious-slider-ajax', plugins_url( 'resources/backend.js', __FILE__ ), NULL, $this->version );
|
97 |
+
wp_localize_script( 'cryout-serious-slider-ajax', 'cryout_serious_slider_ajax', array( 'ajaxurl' => admin_url( 'admin-ajax.php' ) ) );
|
98 |
+
wp_localize_script( 'cryout-serious-slider-ajax', 'CRYOUT_MCE_LOCALIZED', $localized_mce_strings );
|
99 |
+
add_action( 'wp_ajax_cryout_serious_slider_ajax', array( $this, 'get_sliders_json' ) ); // auth users
|
100 |
+
add_action( 'wp_ajax_nopriv_cryout_serious_slider_ajax', array( $this, 'get_sliders_json' ) ); // no auth users
|
101 |
+
|
102 |
+
} // if (is_admin())
|
103 |
+
|
104 |
+
add_action( 'plugins_loaded', array( $this, 'load_textdomain') );
|
105 |
+
|
106 |
+
} // register()
|
107 |
+
|
108 |
+
|
109 |
+
/**********************
|
110 |
+
* translation domain
|
111 |
+
***********************/
|
112 |
+
function load_textdomain() {
|
113 |
+
load_plugin_textdomain( 'cryout-seriou-slider', false, plugin_basename( dirname( __FILE__ ) ) . '/languages' );
|
114 |
+
}
|
115 |
+
|
116 |
+
|
117 |
+
/**********************
|
118 |
+
* enqueues
|
119 |
+
***********************/
|
120 |
+
public function enqueue_scripts() {
|
121 |
+
wp_enqueue_script( 'cryout-serious-slider-jquerymobile', plugins_url( 'resources/jquery.mobile.custom.min.js', __FILE__ ), array('jquery'), $this->version );
|
122 |
+
wp_enqueue_script( 'cryout-serious-slider-script', plugins_url( 'resources/slider.js', __FILE__ ), NULL, $this->version );
|
123 |
+
} // enqueue_scripts()
|
124 |
+
|
125 |
+
public function enqueue_styles() {
|
126 |
+
wp_enqueue_style( 'cryout-serious-slider-style', plugins_url( 'resources/style.css', __FILE__ ), NULL, $this->version );
|
127 |
+
} // enqueue_styles()
|
128 |
+
|
129 |
+
|
130 |
+
/**********************
|
131 |
+
* settings
|
132 |
+
***********************/
|
133 |
+
/* // register plugin settings
|
134 |
+
public function register_settings() {
|
135 |
+
register_setting( 'cryout_serious_slider_group', 'cryout_serious_slider' );
|
136 |
+
} // register_settings()*/
|
137 |
+
|
138 |
+
// register settings page to dashboard menu
|
139 |
+
public function settings_menu() {
|
140 |
+
$this->thepage = add_submenu_page( 'edit.php?post_type='.$this->posttype, __('About', 'cryout-serious-slider'), __('About', 'cryout-serious-slider'), 'manage_options', $this->slug . '-about', array( $this, 'settings_page' ) );
|
141 |
+
} // settings_menu()
|
142 |
+
|
143 |
+
public function settings_page() {
|
144 |
+
if (!empty($_GET['add_sample_content']))
|
145 |
+
include_once( plugin_dir_path( __FILE__ ) . 'demo/demo-content.php' );
|
146 |
+
require_once( plugin_dir_path( __FILE__ ) . 'inc/settings.php' );
|
147 |
+
} // settings_page()
|
148 |
+
|
149 |
+
// add plugin actions links
|
150 |
+
public function actions_links( $links ) {
|
151 |
+
array_unshift( $links, '<a href="' . $this->aboutpage . '">' . __( 'About Plugin', 'shortcodes-ultimate' ) . '</a>' );
|
152 |
+
return $links;
|
153 |
+
}
|
154 |
+
|
155 |
+
// add plugin meta links
|
156 |
+
public function meta_links( $links, $file ) {
|
157 |
+
// Check plugin
|
158 |
+
if ( $file === plugin_basename( __FILE__ ) ) {
|
159 |
+
unset( $links[2] );
|
160 |
+
$links[] = '<a href="http://www.cryoutcreations.eu/cryout-serious-slider/" target="_blank">' . __( 'Plugin homepage', 'cryout-serious-slider' ) . '</a>';
|
161 |
+
$links[] = '<a href="http://www.cryoutcreations.eu/forum/" target="_blank">' . __( 'Support forum', 'cryout-serious-slider' ) . '</a>';
|
162 |
+
$links[] = '<a href="http://wordpress.org/plugins/cryout-serious-slider/changelog/" target="_blank">' . __( 'Changelog', 'cryout-serious-slider' ) . '</a>';
|
163 |
+
}
|
164 |
+
return $links;
|
165 |
+
}
|
166 |
+
|
167 |
+
/* settings handlers */
|
168 |
+
/* public function get_settings() {
|
169 |
+
$options = get_option('cryout_serious_slider');
|
170 |
+
$options = array_merge($this->defaults,(array)$options);
|
171 |
+
$this->options = $options;
|
172 |
+
return $options;
|
173 |
+
} // get_settings()
|
174 |
+
|
175 |
+
public function save_settings() {
|
176 |
+
if ( isset( $_POST['settings_submit'] ) && check_admin_referer( 'cryout_serious_slider', '_wpnonce' ) ):
|
177 |
+
$saved_options = $_POST['cryout_serious_slider'];
|
178 |
+
|
179 |
+
foreach ($saved_options as $option => $value):
|
180 |
+
$saved_options[$option] = wp_kses_data($value);
|
181 |
+
endforeach;
|
182 |
+
|
183 |
+
update_option( 'cryout_serious_slider', $saved_options );
|
184 |
+
wp_redirect( 'edit.php?post_type='.$this->posttype.'&page='.$this->slug.'-settings'.'&updated=true' );
|
185 |
+
endif;
|
186 |
+
} // save_settings() */
|
187 |
+
|
188 |
+
|
189 |
+
/**********************
|
190 |
+
* helpers
|
191 |
+
***********************/
|
192 |
+
public function get_slider_meta($sid, $term) {
|
193 |
+
// ???????????????????????
|
194 |
+
} // get_slider_meta
|
195 |
+
|
196 |
+
/* return taxonomy id for slide id */
|
197 |
+
public function get_slide_slider( $slide_ID, $taxonomy = '') {
|
198 |
+
if (empty($taxonomy)) $taxonomy = $this->taxonomy;
|
199 |
+
$tax = wp_get_object_terms( $slide_ID, $taxonomy );
|
200 |
+
if (!empty($tax))
|
201 |
+
return $tax[0]->term_id;
|
202 |
+
else
|
203 |
+
return 0;
|
204 |
+
} // get_slide_slider()
|
205 |
+
|
206 |
+
/* return sliders list for mce insert window */
|
207 |
+
public function get_sliders_json() {
|
208 |
+
$sliders = $this->get_sliders();
|
209 |
+
echo json_encode($sliders);
|
210 |
+
wp_die();
|
211 |
+
} // get_sliders_json()
|
212 |
+
|
213 |
+
public function get_sliders() {
|
214 |
+
$data = get_terms( $this->taxonomy, array( 'hide_empty' => false ) );
|
215 |
+
|
216 |
+
$sliders = array();
|
217 |
+
foreach ($data as $slider) {
|
218 |
+
$sliders[] = array('text'=>$slider->name, 'value'=>$slider->term_id);
|
219 |
+
}
|
220 |
+
return $sliders;
|
221 |
+
} // get_sliders()
|
222 |
+
|
223 |
+
/* customize taxonomy selection box in add slide window */
|
224 |
+
function custom_category_picker( $post, $box ) {
|
225 |
+
$defaults = array( 'taxonomy' => 'category' );
|
226 |
+
if ( ! isset( $box['args'] ) || ! is_array( $box['args'] ) ) {
|
227 |
+
$args = array();
|
228 |
+
} else {
|
229 |
+
$args = $box['args'];
|
230 |
+
}
|
231 |
+
$r = wp_parse_args( $args, $defaults );
|
232 |
+
$tax_name = esc_attr( $r['taxonomy'] );
|
233 |
+
$taxonomy = get_taxonomy( $r['taxonomy'] );
|
234 |
+
?>
|
235 |
+
<div id="taxonomy-<?php echo $tax_name; ?>" class="categorydiv">
|
236 |
+
<?php
|
237 |
+
$name = ( $tax_name == 'category' ) ? 'post_category' : 'tax_input[' . $tax_name . ']';
|
238 |
+
?>
|
239 |
+
<ul id="<?php echo $tax_name; ?>_selector" data-wp-lists="list:<?php echo $tax_name; ?>" class="form-no-clear">
|
240 |
+
<?php
|
241 |
+
$cat_dropdown_args = array(
|
242 |
+
'taxonomy' => $tax_name,
|
243 |
+
'hide_empty' => 0,
|
244 |
+
'name' => 'tax_input[' . $tax_name . ']',
|
245 |
+
'orderby' => 'name',
|
246 |
+
'selected' => $this->get_slide_slider( $post->ID ),
|
247 |
+
'hierarchical' => 0,
|
248 |
+
'show_option_none' => '— ' . $taxonomy->labels->all_items . ' —',
|
249 |
+
);
|
250 |
+
|
251 |
+
wp_dropdown_categories( $cat_dropdown_args );
|
252 |
+
?>
|
253 |
+
</ul>
|
254 |
+
<a class="taxonomy-add-new" href="edit-tags.php?taxonomy=<?php echo $this->taxonomy ?>&post_type=<?php echo $this->posttype; ?>" id=""><?php _e(
|
255 |
+
'Define Sliders', 'cryout-serious-slider') ?></a>
|
256 |
+
</div>
|
257 |
+
<?php
|
258 |
+
} // slide_custom_category()
|
259 |
+
|
260 |
+
|
261 |
+
/**********************
|
262 |
+
* custom post types
|
263 |
+
***********************/
|
264 |
+
public function register_post_types() {
|
265 |
+
|
266 |
+
/* Set up arguments for the custom post type. */
|
267 |
+
$args = array(
|
268 |
+
'public' => false,
|
269 |
+
'show_ui' => true,
|
270 |
+
'show_admin_column' => true,
|
271 |
+
'query_var' => true,
|
272 |
+
'description' => __( 'Description.', 'cryout-serious-slider' ),
|
273 |
+
'show_in_nav_menus' => false,
|
274 |
+
'menu_position' => 21,
|
275 |
+
'menu_icon' => plugins_url('/resources/images/serious-slider-icon.png',__FILE__),
|
276 |
+
'capability_type' => 'post',
|
277 |
+
'supports' => array(
|
278 |
+
'title',
|
279 |
+
'editor',
|
280 |
+
//'excerpt',
|
281 |
+
'thumbnail',
|
282 |
+
'page-attributes',
|
283 |
+
),
|
284 |
+
'labels' => array(
|
285 |
+
'name' => _x( 'Slides', 'post type general name', 'cryout-serious-slider' ),
|
286 |
+
'singular_name' => _x( 'Slide', 'post type singular name', 'cryout-serious-slider' ),
|
287 |
+
'menu_name' => _x( 'Serious Slider', 'admin menu', 'cryout-serious-slider' ),
|
288 |
+
'name_admin_bar' => _x( 'Slide', 'add new on admin bar', 'cryout-serious-slider' ),
|
289 |
+
'add_new' => _x( 'Add New Slide', 'and new in menu', 'cryout-serious-slider' ),
|
290 |
+
'add_new_item' => __( 'Add New Slide', 'cryout-serious-slider' ),
|
291 |
+
'new_item' => __( 'New Slide', 'cryout-serious-slider' ),
|
292 |
+
'edit_item' => __( 'Edit Slide', 'cryout-serious-slider' ),
|
293 |
+
'view_item' => __( 'View Slide', 'cryout-serious-slider' ),
|
294 |
+
'all_items' => __( 'All Slides', 'cryout-serious-slider' ),
|
295 |
+
'search_items' => __( 'Search Slide', 'cryout-serious-slider' ),
|
296 |
+
'parent_item_colon' => __( 'Parent Slides:', 'cryout-serious-slider' ),
|
297 |
+
'not_found' => __( 'No slides found.', 'cryout-serious-slider' ),
|
298 |
+
'not_found_in_trash' => __( 'No slides found in Trash.', 'cryout-serious-slider' )
|
299 |
+
),
|
300 |
+
'taxonomies' => array(
|
301 |
+
$this->taxonomy,
|
302 |
+
),
|
303 |
+
'register_meta_box_cb' => array( $this, 'metabox_register' ),
|
304 |
+
);
|
305 |
+
|
306 |
+
/* Register the post type. */
|
307 |
+
register_post_type( 'cryout_serious_slide', $args );
|
308 |
+
|
309 |
+
} // register_post_types()
|
310 |
+
|
311 |
+
/* Set up custom taxonomies for the custom post type */
|
312 |
+
public function register_taxonomies() {
|
313 |
+
|
314 |
+
$cat_args = array(
|
315 |
+
'public' => false,
|
316 |
+
'hierarchical' => true,
|
317 |
+
'labels' => array(
|
318 |
+
'name' => _x( 'Sliders', 'taxonomy general name', 'cryout-serious-slider' ),
|
319 |
+
'singular_name' => _x( 'Slider', 'taxonomy singular name', 'cryout-serious-slider' ),
|
320 |
+
'search_items' => __( 'Search Sliders', 'cryout-serious-slider' ),
|
321 |
+
'all_items' => __( 'All Sliders', 'cryout-serious-slider' ),
|
322 |
+
'parent_item' => __( 'Parent Slider', 'cryout-serious-slider' ),
|
323 |
+
'parent_item_colon' => __( 'Parent Slider:', 'cryout-serious-slider' ),
|
324 |
+
'edit_item' => __( 'Edit Slider', 'cryout-serious-slider' ),
|
325 |
+
'update_item' => __( 'Update Slider', 'cryout-serious-slider' ),
|
326 |
+
'add_new_item' => __( 'Add New Slider', 'cryout-serious-slider' ),
|
327 |
+
'new_item_name' => __( 'New Slider', 'cryout-serious-slider' ),
|
328 |
+
'menu_name' => __( 'Define Sliders', 'cryout-serious-slider' ),
|
329 |
+
),
|
330 |
+
'show_ui' => true,
|
331 |
+
'show_admin_column' => true,
|
332 |
+
'query_var' => true,
|
333 |
+
|
334 |
+
'meta_box_cb' => array( $this, 'custom_category_picker' ), // customize taxonomy box selector
|
335 |
+
);
|
336 |
+
|
337 |
+
register_taxonomy( $this->taxonomy, array( $this->posttype ), $cat_args );
|
338 |
+
add_action( $this->taxonomy . '_add_form_fields', array($this, 'metatax_main_add'), 10, 2 );
|
339 |
+
add_action( $this->taxonomy . '_edit_form_fields', array($this, 'metatax_main_edit'), 10, 2 );
|
340 |
+
add_action( $this->taxonomy . '_edit_form', array($this, 'right_column'), 10, 2 ); // _pre_edit_form // _edit_form
|
341 |
+
|
342 |
+
add_action( 'edited_' . $this->taxonomy, array($this, 'save_taxonomy_custom_meta'), 10, 2 );
|
343 |
+
add_action( 'create_' . $this->taxonomy, array($this, 'save_taxonomy_custom_meta'), 10, 2 );
|
344 |
+
add_action( 'delete_' . $this->taxonomy, array($this, 'delete_taxonomy_custom_meta'), 10, 2 );
|
345 |
+
|
346 |
+
} // register_taxonomies()
|
347 |
+
|
348 |
+
|
349 |
+
/**********************
|
350 |
+
* dashboard layout customization
|
351 |
+
***********************/
|
352 |
+
public function columns_edit( $columns ) {
|
353 |
+
|
354 |
+
$columns = array(
|
355 |
+
'cb' => '<input type="checkbox" />',
|
356 |
+
'title' => __( 'Title', 'cryout-serious-slider' ),
|
357 |
+
$this->taxonomy => __( 'Slider', 'cryout-serious-slider' ),
|
358 |
+
'featured_image' => __( 'Featured Image', 'cryout-serious-slider' ),
|
359 |
+
'date' => __( 'Date', 'cryout-serious-slider' ),
|
360 |
+
'menu_order' => __( 'Order', 'cryout-serious-slider' ),
|
361 |
+
);
|
362 |
+
return $columns;
|
363 |
+
} // columns_edit()
|
364 |
+
|
365 |
+
// Show the featured image & taxonomy in posts list
|
366 |
+
public function columns_content($column_name, $post_ID) {
|
367 |
+
global $post;
|
368 |
+
|
369 |
+
switch ($column_name) {
|
370 |
+
case 'featured_image':
|
371 |
+
|
372 |
+
$featured_image = wp_get_attachment_image_src( get_post_thumbnail_id( $post_ID ), 'medium' );
|
373 |
+
$featured_image = $featured_image[0];
|
374 |
+
if ($featured_image) {
|
375 |
+
echo '<img style="max-width: 100%;" src="' . $featured_image . '" />';
|
376 |
+
} else {
|
377 |
+
_e('No featured image set.', 'cryout-serious-slider');
|
378 |
+
}
|
379 |
+
|
380 |
+
break;
|
381 |
+
|
382 |
+
case $this->taxonomy:
|
383 |
+
|
384 |
+
$terms = get_the_terms( $post->ID, $this->taxonomy );
|
385 |
+
if ( !empty( $terms ) ) {
|
386 |
+
|
387 |
+
$out = array();
|
388 |
+
foreach ( $terms as $term ) {
|
389 |
+
$out[] = sprintf( '<a href="%1$s">%2$s</a><div class="row-actions"><span class="edit"><a href="%3$s">%4$s</a></span></div>',
|
390 |
+
esc_url( add_query_arg( array( 'post_type' => $post->post_type, $this->taxonomy => $term->slug ), 'edit.php' ) ),
|
391 |
+
esc_html( sanitize_term_field( 'name', $term->name, $term->term_id, $this->taxonomy, 'display' ) ),
|
392 |
+
esc_url( add_query_arg( array( 'action' => 'edit', 'taxonomy' => $this->taxonomy, 'tag_ID' => $term->term_id, 'post_type' => $post->post_type ), 'edit-tags.php' ) ),
|
393 |
+
__('Edit slider', 'cryout-serious-slider')
|
394 |
+
);
|
395 |
+
|
396 |
+
}
|
397 |
+
echo join( ', ', $out );
|
398 |
+
|
399 |
+
}
|
400 |
+
|
401 |
+
else {
|
402 |
+
_e( 'No Slider', 'cryout-serious-slider' );
|
403 |
+
}
|
404 |
+
|
405 |
+
break;
|
406 |
+
|
407 |
+
case 'menu_order':
|
408 |
+
|
409 |
+
$order = $post->menu_order;
|
410 |
+
echo $order;
|
411 |
+
|
412 |
+
break;
|
413 |
+
}
|
414 |
+
} // columns_content()
|
415 |
+
|
416 |
+
/* Add sort by columns support */
|
417 |
+
public function order_column_register_sortable($columns){
|
418 |
+
$columns['menu_order'] = 'menu_order';
|
419 |
+
$columns[$this->taxonomy] = $this->taxonomy;
|
420 |
+
return $columns;
|
421 |
+
} // order_column_register_sortable()
|
422 |
+
|
423 |
+
/*
|
424 |
+
public function custom_list_css() {
|
425 |
+
|
426 |
+
} // custom_list_css() */
|
427 |
+
|
428 |
+
function add_taxonomy_filters() {
|
429 |
+
global $typenow;
|
430 |
+
|
431 |
+
$taxonomies = array( $this->taxonomy );
|
432 |
+
|
433 |
+
// must set this to the post type you want the filter(s) displayed on
|
434 |
+
if( $typenow == $this->posttype ){
|
435 |
+
|
436 |
+
foreach ($taxonomies as $tax_slug) {
|
437 |
+
$tax_obj = get_taxonomy($tax_slug);
|
438 |
+
$tax_name = $tax_obj->labels->name;
|
439 |
+
$terms = get_terms($tax_slug);
|
440 |
+
if (!empty($_GET[$tax_slug])) $filtered_tax = sanitize_text_field($_GET[$tax_slug]); else $filtered_tax = '';
|
441 |
+
if(count($terms) > 0) {
|
442 |
+
echo "<select name='$tax_slug' id='filter_$tax_slug' class='postform'>";
|
443 |
+
printf( "<option value=''>%s</option>", sprintf( _x('All %s', 'all terms', 'cryout-serious-slider'), $tax_name ) );
|
444 |
+
foreach ($terms as $term) {
|
445 |
+
echo '<option value='. $term->slug, $filtered_tax == $term->slug ? ' selected="selected"' : '','>' . $term->name .' (' . $term->count .')</option>';
|
446 |
+
}
|
447 |
+
echo "</select>";
|
448 |
+
}
|
449 |
+
}
|
450 |
+
}
|
451 |
+
} // add_taxonomy_filters()
|
452 |
+
|
453 |
+
// add right column content (with shortcode hint) on edit slider page */
|
454 |
+
function right_column( $tag, $taxonomy ) {
|
455 |
+
$term_ID = $tag->term_id;
|
456 |
+
include_once( plugin_dir_path( __FILE__ ) . 'inc/right-column.php' );
|
457 |
+
} // right_column()
|
458 |
+
|
459 |
+
/*public function custom_js() {
|
460 |
+
global $post_type;
|
461 |
+
|
462 |
+
if( $this->posttype == $post_type ) { ?>
|
463 |
+
<script type="text/javascript">
|
464 |
+
var html = '<div id="<?php echo $this->taxonomy ?>-definesliders">\
|
465 |
+
<a class="hide-if-no-js taxonomy-add-new" href="edit-tags.php?taxonomy=<?php echo $this->taxonomy ?>&post_type=<?php echo $this->posttype; ?>" id="">Define Sliders</a>\
|
466 |
+
</div>';
|
467 |
+
jQuery(document).ready( function() {
|
468 |
+
jQuery('#<?php echo $this->taxonomy ?>-adder').after(html);
|
469 |
+
});
|
470 |
+
</script> <?php
|
471 |
+
}
|
472 |
+
} // custom_js()*/
|
473 |
+
|
474 |
+
|
475 |
+
/**********************
|
476 |
+
* slide meta
|
477 |
+
***********************/
|
478 |
+
/* Custom post types metaboxes */
|
479 |
+
function metabox_register() {
|
480 |
+
add_meta_box('serious_slider_metaboxes', __( 'Slide Link', 'cryout-serious-slider' ), array($this, 'metabox_main'), $this->posttype, 'normal', 'high');
|
481 |
+
} // metabox_register()
|
482 |
+
|
483 |
+
function metabox_main() {
|
484 |
+
|
485 |
+
global $post;
|
486 |
+
$values = get_post_custom( $post->ID );
|
487 |
+
$text = isset( $values['cryout_serious_slider_link'] ) ? $values['cryout_serious_slider_link'][0] : '';
|
488 |
+
$check = isset( $values['cryout_serious_slider_target'] ) ? esc_attr( $values['cryout_serious_slider_target'][0] ) : '';
|
489 |
+
|
490 |
+
wp_nonce_field( 'cryout_serious_slider_meta_nonce', 'cryout_serious_slider_meta_nonce' ); ?>
|
491 |
+
|
492 |
+
<p>
|
493 |
+
<label for="cryout_serious_slider_link"><?php _e('Link URL', 'cryout-serious-slider') ?></label>
|
494 |
+
<input type="text" size="40" name="cryout_serious_slider_link" id="cryout_serious_slider_link" value="<?php echo $text; ?>" />
|
495 |
+
<span> </span>
|
496 |
+
<input type="checkbox" id="cryout_serious_slider_target" name="cryout_serious_slider_target" <?php checked( $check ); ?> />
|
497 |
+
<label for="cryout_serious_slider_target"><?php _e('Open In New Window', 'cryout-serious-slider') ?></label>
|
498 |
+
<br><em><?php _e('Leave empty to disable link.', 'cryout-serious-slider') ?></em></p>
|
499 |
+
<?php
|
500 |
+
|
501 |
+
} // metabox_main()
|
502 |
+
|
503 |
+
function metabox_save( $post_id ) {
|
504 |
+
|
505 |
+
if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) return;
|
506 |
+
if( !isset( $_POST['cryout_serious_slider_meta_nonce'] ) || !wp_verify_nonce( $_POST['cryout_serious_slider_meta_nonce'], 'cryout_serious_slider_meta_nonce' ) ) return;
|
507 |
+
if( !current_user_can( 'edit_post' ) ) return;
|
508 |
+
$allowed = '';
|
509 |
+
|
510 |
+
if( isset( $_POST['cryout_serious_slider_link'] ) )
|
511 |
+
update_post_meta( $post_id, 'cryout_serious_slider_link', esc_url_raw( $_POST['cryout_serious_slider_link'], $allowed ) );
|
512 |
+
$chk = isset( $_POST['cryout_serious_slider_target'] );
|
513 |
+
update_post_meta( $post_id, 'cryout_serious_slider_target', $chk );
|
514 |
+
|
515 |
+
} // metabox_save()
|
516 |
+
|
517 |
+
|
518 |
+
/**********************
|
519 |
+
* slider/taxonomy meta
|
520 |
+
***********************/
|
521 |
+
public function metatax_main_add() {
|
522 |
+
|
523 |
+
$the_meta = $this->defaults;
|
524 |
+
require_once( plugin_dir_path( __FILE__ ) . 'inc/taxmeta.php' );
|
525 |
+
|
526 |
+
} // metabox_main_add()
|
527 |
+
|
528 |
+
public function metatax_main_edit($term) {
|
529 |
+
|
530 |
+
$tid = $term->term_id;
|
531 |
+
$the_meta = get_option( "cryout_serious_slider_${tid}_meta" );
|
532 |
+
if ( empty($the_meta) ) $the_meta = $this->defaults; ?>
|
533 |
+
<tr class="form-field">
|
534 |
+
<td colspan="2">
|
535 |
+
<?php require_once( plugin_dir_path( __FILE__ ) . 'inc/taxmeta.php' );?>
|
536 |
+
</td>
|
537 |
+
</tr><?php
|
538 |
+
|
539 |
+
} // metatax_main_edit()
|
540 |
+
|
541 |
+
function save_taxonomy_custom_meta( $tid ) {
|
542 |
+
if ( isset( $_POST['term_meta'] ) ) {
|
543 |
+
$term_meta = get_option( "cryout_serious_slider_${tid}_meta" );
|
544 |
+
$cat_keys = array_keys( $_POST['term_meta'] );
|
545 |
+
foreach ( $cat_keys as $key ) {
|
546 |
+
if ( isset ( $_POST['term_meta'][$key] ) ) {
|
547 |
+
$term_meta[$key] = sanitize_text_field($_POST['term_meta'][$key]);
|
548 |
+
}
|
549 |
+
}
|
550 |
+
// Save the option array.
|
551 |
+
update_option( "cryout_serious_slider_${tid}_meta", $term_meta );
|
552 |
+
}
|
553 |
+
} // save_taxonomy_custom_meta()
|
554 |
+
|
555 |
+
function delete_taxonomy_custom_meta( $term_id ) {
|
556 |
+
delete_option( "cryout_serious_slider_${term_id}_meta" );
|
557 |
+
} // delete_taxonomy_custom_meta()
|
558 |
+
|
559 |
+
|
560 |
+
/**********************
|
561 |
+
* mce extension
|
562 |
+
***********************/
|
563 |
+
function admin_head() {
|
564 |
+
global $post_type;
|
565 |
+
|
566 |
+
// don't allow slider shortcode inside slide posts
|
567 |
+
if( $this->posttype != $post_type ) {
|
568 |
+
// check user permissions
|
569 |
+
if ( !current_user_can( 'edit_posts' ) && !current_user_can( 'edit_pages' ) ) {
|
570 |
+
return;
|
571 |
+
}
|
572 |
+
|
573 |
+
// check if WYSIWYG is enabled
|
574 |
+
if ( 'true' == get_user_option( 'rich_editing' ) ) {
|
575 |
+
add_filter( 'mce_external_plugins', array( $this ,'register_mce_external_plugins' ) );
|
576 |
+
add_filter( 'mce_buttons', array( $this, 'regiter_mce_buttons' ) );
|
577 |
+
}
|
578 |
+
}
|
579 |
+
} // admin_head()
|
580 |
+
|
581 |
+
function register_mce_external_plugins( $plugin_array ) {
|
582 |
+
$plugin_array[$this->shortcode_tag] = plugins_url( 'resources/mce-button.js' , __FILE__ );
|
583 |
+
return $plugin_array;
|
584 |
+
} // register_mce_external_plugins()
|
585 |
+
|
586 |
+
function regiter_mce_buttons( $buttons ) {
|
587 |
+
array_push( $buttons, $this->shortcode_tag );
|
588 |
+
return $buttons;
|
589 |
+
} // regiter_mce_buttons()
|
590 |
+
|
591 |
+
function admin_enqueue_scripts($hook){
|
592 |
+
global $post_type;
|
593 |
+
wp_enqueue_style('serious-slider-shortcode', plugins_url( 'resources/mce-button.css' , __FILE__ ) );
|
594 |
+
if( ($hook == $this->thepage) || ( $this->posttype == $post_type ) )
|
595 |
+
wp_enqueue_style('serious-slider-admincss', plugins_url( 'resources/backend.css' , __FILE__ ) );
|
596 |
+
} // admin_enqueue_scripts()
|
597 |
+
|
598 |
+
|
599 |
+
/**********************
|
600 |
+
* form helpers
|
601 |
+
***********************/
|
602 |
+
function inputfield( $id, $current, $title='', $desc='', $class='', $extra='', $extra2='' ) {
|
603 |
+
/* wordpress/wp-admin/js/tags.js empties all text input elements with
|
604 |
+
$('input[type="text"]:visible, textarea:visible', form).val('');
|
605 |
+
as of 4.4.2; using type="number" as workaround */
|
606 |
+
?>
|
607 |
+
<tr><th scope="row"><?php echo $title ?></th>
|
608 |
+
<td><input id="<?php echo $id ?>" name="<?php echo $id ?>" class="<?php echo $class ?>" type="number" value="<?php echo $current ?>" <?php echo $extra2 ?>> <?php echo $extra ?>
|
609 |
+
<p class="description"><?php echo $desc ?></p>
|
610 |
+
</td>
|
611 |
+
</tr>
|
612 |
+
<?php
|
613 |
+
} // inputfield()
|
614 |
+
function selectfield( $id, $options=array(), $current, $title='', $desc='', $class='', $extra='' ) {
|
615 |
+
?>
|
616 |
+
<tr><th scope="row"><?php echo $title ?></th>
|
617 |
+
<td><select id="<?php echo $id ?>" name="<?php echo $id ?>" class="<?php echo $class ?>">
|
618 |
+
<?php foreach ($options as $value => $label) { ?>
|
619 |
+
<option value="<?php echo $value ?>" <?php selected( $current, $value); ?>><?php echo $label ?></option>
|
620 |
+
<?php } ?>
|
621 |
+
</select>
|
622 |
+
<p class="description"><?php echo $desc ?></p>
|
623 |
+
</td>
|
624 |
+
</tr>
|
625 |
+
<?php
|
626 |
+
} // selectfield()
|
627 |
+
|
628 |
+
} // class Cryout_Serious_Slider
|
629 |
+
|
630 |
+
/* * * * get things going * * * */
|
631 |
+
$cryout_serious_slider = new Cryout_Serious_Slider;
|
632 |
+
|
633 |
+
// EOF
|
demo/demo-content.php
ADDED
@@ -0,0 +1,93 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Cryout_Serious_Slider_DemoContent {
|
4 |
+
|
5 |
+
private $sample_slides = array(
|
6 |
+
array(
|
7 |
+
'post_title' => 'Are You Looking At Me?',
|
8 |
+
'post_content' => 'More Lorem ipsum.....',
|
9 |
+
'post_status' => 'publish',
|
10 |
+
'post_type' => 'cryout_serious_slide',
|
11 |
+
'menu_order' => 3,
|
12 |
+
'image' => '/demo/sample-slide-3.jpg',
|
13 |
+
),
|
14 |
+
array(
|
15 |
+
'post_title' => 'Another Sample Slide',
|
16 |
+
'post_content' => "Serious Slider takes your slides seriously.\n\n<a href=\"#\">First Link</a> <a href=\"#\">Second Link</a>",
|
17 |
+
'post_status' => 'publish',
|
18 |
+
'post_type' => 'cryout_serious_slide',
|
19 |
+
'menu_order' => 2,
|
20 |
+
'image' => '/demo/sample-slide-2.jpg',
|
21 |
+
),
|
22 |
+
array(
|
23 |
+
'post_title' => 'Why So Serious?',
|
24 |
+
'post_content' => "Lorem Ipsum dolor ist atmet...\n\n<a href=\"#\">Seriously!</a>",
|
25 |
+
'post_status' => 'publish',
|
26 |
+
'post_type' => 'cryout_serious_slide',
|
27 |
+
'menu_order' => 1,
|
28 |
+
'image' => '/demo/sample-slide-1.jpg',
|
29 |
+
),
|
30 |
+
); // sample_slides
|
31 |
+
|
32 |
+
function __construct() {
|
33 |
+
|
34 |
+
// create sample slider ('category')
|
35 |
+
$term = wp_insert_term(
|
36 |
+
'Sample Slider', // the term
|
37 |
+
'cryout_serious_slider_category', // the taxonomy
|
38 |
+
array(
|
39 |
+
'description' => '',
|
40 |
+
'slug' => 'sample-slider',
|
41 |
+
)
|
42 |
+
);
|
43 |
+
|
44 |
+
// create the slides
|
45 |
+
foreach ($this->sample_slides as $post) {
|
46 |
+
// create sample slide
|
47 |
+
$pid = wp_insert_post( $post );
|
48 |
+
// add featured image
|
49 |
+
$post['image'] = plugins_url( $post['image'], dirname(__FILE__) );
|
50 |
+
$this->image_helper($pid, $post['image']);
|
51 |
+
unset($post['image']);
|
52 |
+
// assign slide to slider 'category'
|
53 |
+
wp_set_object_terms($pid, 'Sample Slider', 'cryout_serious_slider_category', true);
|
54 |
+
}
|
55 |
+
} // __construct()
|
56 |
+
|
57 |
+
|
58 |
+
function image_helper($id, $image) {
|
59 |
+
// magic sideload image returns an HTML image, not an ID
|
60 |
+
$media = media_sideload_image($image, $id);
|
61 |
+
|
62 |
+
// therefore we must find it so we can set it as featured ID
|
63 |
+
if(!empty($media) && !is_wp_error($media)){
|
64 |
+
$args = array(
|
65 |
+
'post_type' => 'attachment',
|
66 |
+
'posts_per_page' => -1,
|
67 |
+
'post_status' => 'any',
|
68 |
+
'post_parent' => $id
|
69 |
+
);
|
70 |
+
|
71 |
+
// reference new image to set as featured
|
72 |
+
$attachments = get_posts($args);
|
73 |
+
|
74 |
+
if(isset($attachments) && is_array($attachments)){
|
75 |
+
foreach($attachments as $attachment){
|
76 |
+
// grab source of full size images (so no 300x150 nonsense in path)
|
77 |
+
$image = wp_get_attachment_image_src($attachment->ID, 'full');
|
78 |
+
// determine if in the $media image we created, the string of the URL exists
|
79 |
+
if(strpos($media, $image[0]) !== false){
|
80 |
+
// if so, we found our image. set it as thumbnail
|
81 |
+
set_post_thumbnail($id, $attachment->ID);
|
82 |
+
// only want one image
|
83 |
+
break;
|
84 |
+
}
|
85 |
+
}
|
86 |
+
}
|
87 |
+
}
|
88 |
+
|
89 |
+
} // image_helper()
|
90 |
+
|
91 |
+
} // class Cryout_Serious_Slider_DemoContent
|
92 |
+
|
93 |
+
new Cryout_Serious_Slider_DemoContent;
|
demo/sample-slide-1.jpg
ADDED
Binary file
|
demo/sample-slide-2.jpg
ADDED
Binary file
|
demo/sample-slide-3.jpg
ADDED
Binary file
|
inc/right-column.php
ADDED
@@ -0,0 +1,16 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div id="floater-right">
|
2 |
+
<div class="col-wrap">
|
3 |
+
<div class="form-wrap">
|
4 |
+
<h3 class="hndle"><?php //_e('Usage', 'cryout-serious-slider') ?></h3>
|
5 |
+
<div class="inside">
|
6 |
+
<h3><?php _e('Shortcode', 'cryout-serious-slider') ?></h3>
|
7 |
+
<p><?php _e('Use the shortcode to include the slider in posts, pages or widgets', 'cryout-serious-slider') ?></p>
|
8 |
+
<input type="text" readonly="readonly" value="[serious-slider id=<?php echo $term_ID ?>]"><br>
|
9 |
+
<br><hr>
|
10 |
+
<h3><?php _e('Template', 'cryout-serious-slider') ?></h3>
|
11 |
+
<p><?php _e('Use the PHP code to include the slider directly in files', 'cryout-serious-slider') ?></p>
|
12 |
+
<textarea readonly="readonly" rows="3"><?php printf( "<?php\n echo do_shortcode( '[serious-slider id=%s' );\n ?>", $term_ID ) ?></textarea>
|
13 |
+
</div>
|
14 |
+
</div>
|
15 |
+
</div>
|
16 |
+
</div>
|
inc/settings.php
ADDED
@@ -0,0 +1,106 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<div class="wrap" id="serious-slider-about">
|
2 |
+
<h2><?php //echo $this->title; ?></h2>
|
3 |
+
|
4 |
+
<?php
|
5 |
+
|
6 |
+
//$options = $this->get_settings();
|
7 |
+
//$this->save_settings();
|
8 |
+
|
9 |
+
if ( ! isset( $_REQUEST['add_sample_content'] ) )
|
10 |
+
$_REQUEST['add_sample_content'] = false;
|
11 |
+
|
12 |
+
if ( $_REQUEST['add_sample_content'] ) {
|
13 |
+
/* because wp doesn't auto display saved notice on non-options pages */ ?>
|
14 |
+
<div class="updated settings-error notice is-dismissible" id="setting-error-settings_updated">
|
15 |
+
<p><strong><?php _e('Sample slider created.', 'cryout-serious-slider');?></strong><br>
|
16 |
+
<?php _e('Navigate to Slider and Slides sections to see the sample content.') ?></p>
|
17 |
+
<button class="notice-dismiss" type="button"><span class="screen-reader-text"><?php _e('Dismiss this notice.', 'cryout-serious-slider' ) ?></span></button>
|
18 |
+
</div>
|
19 |
+
<?php } ?>
|
20 |
+
|
21 |
+
<div id="poststuff">
|
22 |
+
<div id="post-body" class="metabox-holder columns-2">
|
23 |
+
<div id="post-body-content">
|
24 |
+
|
25 |
+
<div class="postbox" id="serious-slider-header">
|
26 |
+
<img src="<?php echo plugins_url('../resources/images/serious-slider-header.png', __FILE__); ?>" />
|
27 |
+
<div id="serious-slider-description">
|
28 |
+
<p>Responsive slider, built on Bootstrap Carousel, uses core WordPress functionality, easy to use, seriously.</p>
|
29 |
+
<h3> Features: </h3>
|
30 |
+
|
31 |
+
<ul>
|
32 |
+
<li>Unlimited sliders with unlimited slides</li>
|
33 |
+
<li>Seriously configurable </li>
|
34 |
+
<li>Fully responsive </li>
|
35 |
+
<li>Touch Swipe Navigation </li>
|
36 |
+
<li>Customization options for each individual slider </li>
|
37 |
+
<li>Slide attributes: image, caption title, caption text (with HTML support), target link</li>
|
38 |
+
<li>Easy to use - uses WordPress custom post types</li>
|
39 |
+
<li>Translation ready and compatible with translation plugins </li>
|
40 |
+
<li>Accessibility ready</li>
|
41 |
+
<li>Lightweight (uses CSS and iconfont only)</li>
|
42 |
+
<li>CSS transitions – fast and powerful hardware accelerated CSS3 3D transforms </li>
|
43 |
+
<li>HTML5 valid</li>
|
44 |
+
<li>Sample content</li>
|
45 |
+
</ul>
|
46 |
+
|
47 |
+
</div>
|
48 |
+
</div>
|
49 |
+
|
50 |
+
</div> <!-- post-body-content-->
|
51 |
+
|
52 |
+
<div class="postbox-container" id="postbox-container-1">
|
53 |
+
|
54 |
+
<div class="meta-box-sortables">
|
55 |
+
|
56 |
+
<div class="postbox">
|
57 |
+
<h3 style="text-align: center;" class="hndle">
|
58 |
+
<span><strong><?php echo $this->title; ?></strong></span>
|
59 |
+
</h3>
|
60 |
+
|
61 |
+
<div class="inside">
|
62 |
+
<div style="text-align: center; margin: auto">
|
63 |
+
<strong><?php printf( __('version: %s','cryout-serious-slider'), $this->version ); ?></strong><br>
|
64 |
+
<?php _e('by','cryout-serious-slider') ?> Cryout Creations<br>
|
65 |
+
<a target="_blank" href="http://www.cryoutcreations.eu/cryout-serious-slider/">www.cryoutcreations.eu</a>
|
66 |
+
</div>
|
67 |
+
</div>
|
68 |
+
</div>
|
69 |
+
|
70 |
+
<div class="postbox">
|
71 |
+
<h3 style="text-align: center;" class="hndle">
|
72 |
+
<span><?php _e('Support','cryout-serious-slider') ?></span>
|
73 |
+
</h3><div class="inside">
|
74 |
+
<div style="text-align: center; margin: auto">
|
75 |
+
<?php printf ( '%1$s <a target="_blank" href="http://www.cryoutcreations.eu/forum">%2$s</a>.',
|
76 |
+
__('For support questions please use', 'cryout-serious-slider'),
|
77 |
+
__('our forum', 'cryout-serious-slider')
|
78 |
+
);
|
79 |
+
?>
|
80 |
+
</div>
|
81 |
+
</div>
|
82 |
+
</div>
|
83 |
+
|
84 |
+
<div class="postbox">
|
85 |
+
<div class="inside">
|
86 |
+
<p class="description"><?php _e('Automatically set up a sample slider with 3 slides to use as a guide for your own content.', 'cryout-serious-slider') ?></p>
|
87 |
+
<a class="button-primary" href="<?php echo $this->aboutpage . '&add_sample_content=1' ?>" style="float:left; margin-right: 20px;">
|
88 |
+
<?php _e('Create Sample Slider', 'cryout-serious-slider');?>
|
89 |
+
</a>
|
90 |
+
</div> <!--inside-->
|
91 |
+
</div> <!--postbox-->
|
92 |
+
|
93 |
+
</div>
|
94 |
+
</div> <!-- postbox-container -->
|
95 |
+
|
96 |
+
</div> <!-- post-body -->
|
97 |
+
<br class="clear">
|
98 |
+
</div> <!-- poststuff -->
|
99 |
+
|
100 |
+
</div><!--end wrap-->
|
101 |
+
|
102 |
+
<script type="text/javascript">
|
103 |
+
jQuery(document).ready( function() {
|
104 |
+
jQuery('.color-field').wpColorPicker();
|
105 |
+
});
|
106 |
+
</script>
|
inc/shortcodes.php
ADDED
@@ -0,0 +1,162 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
/* The shortcode class */
|
4 |
+
class Cryout_Serious_Slider_Shortcode {
|
5 |
+
|
6 |
+
public $shortcode_tag = 'serious-slider';
|
7 |
+
|
8 |
+
function __construct($args = array()){
|
9 |
+
//register shortcode
|
10 |
+
add_shortcode( $this->shortcode_tag, array( $this, 'shortcode_render' ) );
|
11 |
+
}
|
12 |
+
|
13 |
+
function shortcode_render($attr) {
|
14 |
+
|
15 |
+
global $cryout_serious_slider;
|
16 |
+
|
17 |
+
if (!empty($attr['id'])) {
|
18 |
+
|
19 |
+
$options = $this->shortcode_options($attr['id']);
|
20 |
+
foreach ($options as $id => $opt) ${$id} = $opt;
|
21 |
+
|
22 |
+
$slider_classes = array();
|
23 |
+
$slider_classes[] = 'seriousslider-overlay' . $overlay;
|
24 |
+
$slider_classes[] = 'seriousslider-' . $theme;
|
25 |
+
$slider_classes[] = 'seriousslider-' . $animation;
|
26 |
+
$slider_classes = implode(' ', $slider_classes);
|
27 |
+
|
28 |
+
if (!empty($attr['count'])) $count = esc_attr($attr['count']); else $count = -1;
|
29 |
+
|
30 |
+
if ($sort == 'order'):
|
31 |
+
// sort by order param
|
32 |
+
$s1 = 'menu_order';
|
33 |
+
$s2 = 'ASC';
|
34 |
+
else:
|
35 |
+
// sort by publish date (default)
|
36 |
+
$s1 = 'date';
|
37 |
+
$s2 = 'DESC';
|
38 |
+
endif;
|
39 |
+
|
40 |
+
$cid = abs($attr['id']).'_'.rand(1000,9999);
|
41 |
+
|
42 |
+
$the_query = new WP_Query(
|
43 |
+
array(
|
44 |
+
'post_type' => array( $cryout_serious_slider->posttype ),
|
45 |
+
'order' => $s2,
|
46 |
+
'orderby' => $s1,
|
47 |
+
'showposts' => $count,
|
48 |
+
'tax_query' => array(
|
49 |
+
array(
|
50 |
+
'taxonomy' => $cryout_serious_slider->taxonomy,
|
51 |
+
'field' => 'id',
|
52 |
+
'terms' => array( $cid ),
|
53 |
+
),
|
54 |
+
),
|
55 |
+
)
|
56 |
+
);
|
57 |
+
|
58 |
+
$counter = 0; ?>
|
59 |
+
<style type="text/css">
|
60 |
+
#Serious-Slider-<?php echo $cid ?> { max-width: <?php echo $width; ?>px; max-height: <?php echo $height; ?>px; }
|
61 |
+
#Serious-Slider-<?php echo $cid ?> .seriousslider-caption-title { font-size: <?php echo round($textsize*2,2) ?>em; }
|
62 |
+
#Serious-Slider-<?php echo $cid ?> .seriousslider-caption-text { font-size: <?php echo round($textsize,2) ?>em; }
|
63 |
+
#Serious-Slider-<?php echo $cid ?> .seriousslider-caption-text a { font-size: <?php echo round($textsize*0.8,2) ?>em; }
|
64 |
+
|
65 |
+
#Serious-Slider-<?php echo $cid ?> .seriousslider-inner > .item {
|
66 |
+
-webkit-transition-duration: <?php echo round($transition/1000,2) ?>s;
|
67 |
+
-o-transition-duration: <?php echo round($transition/1000,2) ?>s;
|
68 |
+
transition-duration: <?php echo round($transition/1000,2) ?>s; }
|
69 |
+
</style>
|
70 |
+
<!-- cryout serious slider -->
|
71 |
+
<?php if ( $the_query->have_posts() ): ?>
|
72 |
+
<div id="Serious-Slider-<?php echo $cid ?>" class="cryout-serious-slider seriousslider <?php echo $slider_classes ?>" data-ride="seriousslider">
|
73 |
+
<div class="seriousslider-inner" role="listbox">
|
74 |
+
|
75 |
+
<?php while ($the_query->have_posts()):
|
76 |
+
$the_query->the_post();
|
77 |
+
$counter++;
|
78 |
+
|
79 |
+
// default parameters
|
80 |
+
$meta_link = '';
|
81 |
+
$meta_target = '';
|
82 |
+
$sizes = '';
|
83 |
+
|
84 |
+
// retrieve parameters
|
85 |
+
$slide_link = get_post_meta( get_the_ID(), 'cryout_serious_slider_link' );
|
86 |
+
$slide_target = get_post_meta( get_the_ID(), 'cryout_serious_slider_target' );
|
87 |
+
if ( !empty($slide_link) ) $meta_link = ' href="' . $slide_link[0] . '"';
|
88 |
+
if ( !empty($slide_target) ) $meta_target = 'target="_blank"';
|
89 |
+
|
90 |
+
$image_data = wp_get_attachment_image_src (get_post_thumbnail_ID( get_the_ID() ), 'full' );
|
91 |
+
|
92 |
+
if ( !empty($sizing) && $sizing ) $sizes = 'width="' . $width . '" height="' . $height . '"';
|
93 |
+
|
94 |
+
?>
|
95 |
+
|
96 |
+
<div class="item slide-<?php echo $counter ?> <?php if ($counter==1) echo 'active' ?>">
|
97 |
+
<a <?php echo $meta_link; ?> <?php echo $meta_target; ?>>
|
98 |
+
<img src="<?php echo $image_data[0] ?>" alt="<?php the_title(); ?>" <?php echo $sizes ?>>
|
99 |
+
</a>
|
100 |
+
<div class="seriousslider-caption">
|
101 |
+
<h3 class="seriousslider-caption-title">
|
102 |
+
<a <?php echo $meta_link?> <?php echo $meta_target ?>><?php the_title(); ?></a>
|
103 |
+
</h3>
|
104 |
+
<div class="seriousslider-caption-text"><?php the_content() ?></div>
|
105 |
+
</div>
|
106 |
+
</div>
|
107 |
+
|
108 |
+
<?php endwhile; ?>
|
109 |
+
</div>
|
110 |
+
|
111 |
+
<ol class="seriousslider-indicators">
|
112 |
+
<?php for ($i=0;$i<$counter;$i++) { ?>
|
113 |
+
<li data-target="#Serious-Slider-<?php echo $cid ?>" data-slide-to="<?php echo $i?>" <?php if ($i==0) echo 'class="active"' ?>></li>
|
114 |
+
<?php } ?>
|
115 |
+
</ol>
|
116 |
+
|
117 |
+
<a class="left seriousslider-control" href="#Serious-Slider-<?php echo $cid ?>" role="button" data-slide="prev">
|
118 |
+
<span class="sicon-prev" aria-hidden="true"></span>
|
119 |
+
<span class="sr-only"><?php _e('Previous','cryout-serious-slider') ?></span>
|
120 |
+
</a>
|
121 |
+
<a class="right seriousslider-control" href="#Serious-Slider-<?php echo $cid; ?>" role="button" data-slide="next">
|
122 |
+
<span class="sicon-next" aria-hidden="true"></span>
|
123 |
+
<span class="sr-only"><?php _e('Next','cryout-serious-slider') ?></span>
|
124 |
+
</a>
|
125 |
+
</div>
|
126 |
+
<script type='text/javascript'>
|
127 |
+
jQuery('#Serious-Slider-<?php echo $cid ?>').carousel({
|
128 |
+
interval: <?php echo $delay ?>,
|
129 |
+
pause: '<?php echo $hover ?>',
|
130 |
+
stransition: <?php echo $transition ?>
|
131 |
+
})
|
132 |
+
</script>
|
133 |
+
<?php endif; ?>
|
134 |
+
<!-- end cryout serious slider -->
|
135 |
+
<?php
|
136 |
+
} // if id defined
|
137 |
+
|
138 |
+
} // shortcode_render()
|
139 |
+
|
140 |
+
function shortcode_options($sid) {
|
141 |
+
|
142 |
+
global $cryout_serious_slider;
|
143 |
+
|
144 |
+
if (is_numeric($sid)):
|
145 |
+
$data = get_option( "cryout_serious_slider_${sid}_meta" );
|
146 |
+
if ( empty($data) ) $data = $cryout_serious_slider->defaults;
|
147 |
+
$options = array();
|
148 |
+
foreach ($data as $id=>$value){
|
149 |
+
$options[str_replace('cryout_serious_slider_','',$id)] = $value;
|
150 |
+
}
|
151 |
+
return $options;
|
152 |
+
else:
|
153 |
+
return $cryout_serious_slider->defaults;
|
154 |
+
endif;
|
155 |
+
} // shortcode_options()
|
156 |
+
|
157 |
+
} // class
|
158 |
+
|
159 |
+
/* Initialize the shortcode class */
|
160 |
+
$cryout_serious_slider_shortcode = new Cryout_Serious_Slider_Shortcode;
|
161 |
+
|
162 |
+
/* END */
|
inc/slider.php
ADDED
File without changes
|
inc/taxmeta.php
ADDED
@@ -0,0 +1,109 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<table class="form-table serious-table">
|
2 |
+
<?php
|
3 |
+
echo $this->selectfield(
|
4 |
+
'term_meta[cryout_serious_slider_sort]',
|
5 |
+
array( 'date' => __('by date','cryout-serious-slider'), 'order' => __('by order value','cryout-serious-slider') ),
|
6 |
+
$the_meta['cryout_serious_slider_sort'],
|
7 |
+
__('Sort Order','cryout-serious-slider'),
|
8 |
+
'',
|
9 |
+
'short'
|
10 |
+
);
|
11 |
+
echo $this->selectfield(
|
12 |
+
'term_meta[cryout_serious_slider_sizing]',
|
13 |
+
array( 0 => __('Adapt to images','cryout-serious-slider'), 1 => __('Force constraints','cryout-serious-slider') ),
|
14 |
+
$the_meta['cryout_serious_slider_sizing'],
|
15 |
+
__('Slider Size','cryout-serious-slider'),
|
16 |
+
'',
|
17 |
+
'short'
|
18 |
+
);
|
19 |
+
?>
|
20 |
+
|
21 |
+
<?php
|
22 |
+
echo $this->inputfield(
|
23 |
+
'term_meta[cryout_serious_slider_width]',
|
24 |
+
$the_meta['cryout_serious_slider_width'],
|
25 |
+
__('Width','cryout-serious-slider'),
|
26 |
+
'',
|
27 |
+
'short',
|
28 |
+
'px'
|
29 |
+
);
|
30 |
+
echo $this->inputfield(
|
31 |
+
'term_meta[cryout_serious_slider_height]',
|
32 |
+
$the_meta['cryout_serious_slider_height'],
|
33 |
+
__('Height','cryout-serious-slider'),
|
34 |
+
'',
|
35 |
+
'short',
|
36 |
+
'px'
|
37 |
+
);
|
38 |
+
echo $this->selectfield(
|
39 |
+
'term_meta[cryout_serious_slider_theme]',
|
40 |
+
array( 'light' => __('Light','cryout-serious-slider'),
|
41 |
+
'dark' => __('Dark','cryout-serious-slider'),
|
42 |
+
'blank' => __('Blank','cryout-serious-slider'),
|
43 |
+
'boots' => __('Bootstrap','cryout-serious-slider') ),
|
44 |
+
$the_meta['cryout_serious_slider_theme'],
|
45 |
+
__('Color Scheme','cryout-serious-slider'),
|
46 |
+
'',
|
47 |
+
'short'
|
48 |
+
);
|
49 |
+
echo $this->inputfield(
|
50 |
+
'term_meta[cryout_serious_slider_textsize]',
|
51 |
+
$the_meta['cryout_serious_slider_textsize'],
|
52 |
+
__('Base Font Size','cryout-serious-slider'),
|
53 |
+
'',
|
54 |
+
'short',
|
55 |
+
'em',
|
56 |
+
'step="0.1"'
|
57 |
+
);
|
58 |
+
echo $this->selectfield(
|
59 |
+
'term_meta[cryout_serious_slider_overlay]',
|
60 |
+
array( 0 => __('Always hidden', 'cryout-serious-slider'), 1 => __('Appear on hover','cryout-serious-slider'), 2 => __('Always visible','cryout-serious-slider') ),
|
61 |
+
$the_meta['cryout_serious_slider_overlay'],
|
62 |
+
__('Bullets and Navigation','cryout-serious-slider'),
|
63 |
+
'',
|
64 |
+
'short'
|
65 |
+
);
|
66 |
+
echo $this->selectfield(
|
67 |
+
'term_meta[cryout_serious_slider_animation]',
|
68 |
+
array(
|
69 |
+
'fade' => __('Fade','cryout-serious-slider'),
|
70 |
+
'slide' => __('Slide','cryout-serious-slider'),
|
71 |
+
'overslide' => __('Overslide','cryout-serious-slider'),
|
72 |
+
'underslide' => __('Underslide','cryout-serious-slider'),
|
73 |
+
'parallax' => __('Parallax','cryout-serious-slider'),
|
74 |
+
'hflip' => __('Horizontal Flip','cryout-serious-slider'),
|
75 |
+
'vflip' => __('Vertical Flip','cryout-serious-slider'),
|
76 |
+
),
|
77 |
+
$the_meta['cryout_serious_slider_animation'],
|
78 |
+
__('Transition Effect','cryout-serious-slider'),
|
79 |
+
'',
|
80 |
+
'short'
|
81 |
+
);
|
82 |
+
echo $this->selectfield(
|
83 |
+
'term_meta[cryout_serious_slider_hover]',
|
84 |
+
array( 'hover' => __('Enabled','cryout-serious-slider'), 'false' => __('Disabled','cryout-serious-slider') ),
|
85 |
+
$the_meta['cryout_serious_slider_hover'],
|
86 |
+
__('Transition Pause on Hover','cryout-serious-slider'),
|
87 |
+
'',
|
88 |
+
'short'
|
89 |
+
);
|
90 |
+
|
91 |
+
echo $this->inputfield(
|
92 |
+
'term_meta[cryout_serious_slider_delay]',
|
93 |
+
$the_meta['cryout_serious_slider_delay'],
|
94 |
+
__('Transition Delay','cryout-serious-slider'),
|
95 |
+
'',
|
96 |
+
'short',
|
97 |
+
'ms'
|
98 |
+
);
|
99 |
+
echo $this->inputfield(
|
100 |
+
'term_meta[cryout_serious_slider_transition]',
|
101 |
+
$the_meta['cryout_serious_slider_transition'],
|
102 |
+
__('Transition Duration','cryout-serious-slider'),
|
103 |
+
'',
|
104 |
+
'short',
|
105 |
+
'ms'
|
106 |
+
); ?>
|
107 |
+
|
108 |
+
</table>
|
109 |
+
<br>
|
inc/widgets.php
ADDED
@@ -0,0 +1,51 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class Cryout_Serious_Slider_Widget extends WP_Widget {
|
4 |
+
|
5 |
+
public $shortcode_tag = 'serious-slider';
|
6 |
+
|
7 |
+
public function __construct() {
|
8 |
+
$widget_ops = array('classname' => 'serious-slider-widget', 'description' => 'Insert a Serious Slider in a widget area' );
|
9 |
+
$control_ops = array('width' => 350, 'height' => 350); // making widget window larger
|
10 |
+
parent::__construct('cryout_serious_slider_widget', 'Serious Slider', $widget_ops, $control_ops);
|
11 |
+
} // construct()
|
12 |
+
|
13 |
+
public function ColumnsWidget() {
|
14 |
+
self::__construct();
|
15 |
+
} // PHP4 constructor
|
16 |
+
|
17 |
+
function form($instance) {
|
18 |
+
|
19 |
+
global $cryout_serious_slider;
|
20 |
+
|
21 |
+
$instance = wp_parse_args( (array) $instance, array( 'sid' => '' ) );
|
22 |
+
$sid = $instance['sid'];
|
23 |
+
$sliders = $cryout_serious_slider->get_sliders();
|
24 |
+
?>
|
25 |
+
<div>
|
26 |
+
<p><label for="<?php echo $this->get_field_id('sid'); ?>"><?php _e('Displayed Slider', 'cryout-serious-slider') ?>:
|
27 |
+
<select class="widefat" id="<?php echo $this->get_field_id('sid'); ?>" name="<?php echo $this->get_field_name('sid'); ?>">
|
28 |
+
<?php foreach ($sliders as $slider) { ?>
|
29 |
+
<option value="<?php echo $slider['value'] ?>" <?php selected($slider['value'],$sid) ?>><?php echo $slider['text'] ?></option>
|
30 |
+
<?php } ?>
|
31 |
+
</select>
|
32 |
+
</p>
|
33 |
+
</div> <?php
|
34 |
+
} // form()
|
35 |
+
|
36 |
+
function update($new_instance, $old_instance) {
|
37 |
+
$instance = $old_instance;
|
38 |
+
$instance['sid'] = $new_instance['sid'];
|
39 |
+
return $instance;
|
40 |
+
} // update()
|
41 |
+
|
42 |
+
function widget($args, $instance) {
|
43 |
+
if(!empty($instance['sid'])) {
|
44 |
+
$slider_id = $instance['sid'];
|
45 |
+
do_shortcode( '[' . $this->shortcode_tag . ' id=' . $slider_id. ']' );
|
46 |
+
};
|
47 |
+
} // widget()
|
48 |
+
|
49 |
+
} // class Cryout_Serious_Slider_Widget
|
50 |
+
|
51 |
+
add_action( 'widgets_init', create_function('', 'return register_widget("Cryout_Serious_Slider_Widget");') );
|
languages/default.mo
ADDED
Binary file
|
languages/default.po
ADDED
@@ -0,0 +1,401 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
msgid ""
|
2 |
+
msgstr ""
|
3 |
+
"Project-Id-Version: Cryout Serious Slider\n"
|
4 |
+
"POT-Creation-Date: 2016-05-06 14:26+0200\n"
|
5 |
+
"PO-Revision-Date: 2016-05-06 14:27+0200\n"
|
6 |
+
"Last-Translator: Cryout Creations\n"
|
7 |
+
"Language-Team: Cryout Creations\n"
|
8 |
+
"Language: en_US\n"
|
9 |
+
"MIME-Version: 1.0\n"
|
10 |
+
"Content-Type: text/plain; charset=UTF-8\n"
|
11 |
+
"Content-Transfer-Encoding: 8bit\n"
|
12 |
+
"X-Generator: Poedit 1.5.5\n"
|
13 |
+
"X-Poedit-KeywordsList: _e;_x;_n;__\n"
|
14 |
+
"X-Poedit-Basepath: .\n"
|
15 |
+
"X-Poedit-SearchPath-0: ..\n"
|
16 |
+
|
17 |
+
#: ../cryout-serious-slider.php:53 ../cryout-serious-slider.php:88
|
18 |
+
#: ../cryout-serious-slider.php:287
|
19 |
+
msgid "Serious Slider"
|
20 |
+
msgstr ""
|
21 |
+
|
22 |
+
#: ../cryout-serious-slider.php:85
|
23 |
+
msgid "Retrieving sliders..."
|
24 |
+
msgstr ""
|
25 |
+
|
26 |
+
#: ../cryout-serious-slider.php:86
|
27 |
+
msgid "Error retrieving sliders"
|
28 |
+
msgstr ""
|
29 |
+
|
30 |
+
#: ../cryout-serious-slider.php:87
|
31 |
+
msgid "Cryout Serious Slider"
|
32 |
+
msgstr ""
|
33 |
+
|
34 |
+
#: ../cryout-serious-slider.php:89
|
35 |
+
msgid "Insert Slider"
|
36 |
+
msgstr ""
|
37 |
+
|
38 |
+
#: ../cryout-serious-slider.php:90
|
39 |
+
msgid "Cancel"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: ../cryout-serious-slider.php:91
|
43 |
+
msgid "Select Slider"
|
44 |
+
msgstr ""
|
45 |
+
|
46 |
+
#: ../cryout-serious-slider.php:92
|
47 |
+
msgid "Add Slider"
|
48 |
+
msgstr ""
|
49 |
+
|
50 |
+
#: ../cryout-serious-slider.php:140
|
51 |
+
msgid "About"
|
52 |
+
msgstr ""
|
53 |
+
|
54 |
+
#: ../cryout-serious-slider.php:151
|
55 |
+
msgid "About Plugin"
|
56 |
+
msgstr ""
|
57 |
+
|
58 |
+
#: ../cryout-serious-slider.php:160
|
59 |
+
msgid "Plugin homepage"
|
60 |
+
msgstr ""
|
61 |
+
|
62 |
+
#: ../cryout-serious-slider.php:161
|
63 |
+
msgid "Support forum"
|
64 |
+
msgstr ""
|
65 |
+
|
66 |
+
#: ../cryout-serious-slider.php:162
|
67 |
+
msgid "Changelog"
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: ../cryout-serious-slider.php:255 ../cryout-serious-slider.php:328
|
71 |
+
msgid "Define Sliders"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: ../cryout-serious-slider.php:272
|
75 |
+
msgid "Description."
|
76 |
+
msgstr ""
|
77 |
+
|
78 |
+
#: ../cryout-serious-slider.php:285
|
79 |
+
msgid "Slides"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: ../cryout-serious-slider.php:286 ../cryout-serious-slider.php:288
|
83 |
+
#: ../inc/taxmeta.php:70
|
84 |
+
msgid "Slide"
|
85 |
+
msgstr ""
|
86 |
+
|
87 |
+
#: ../cryout-serious-slider.php:289 ../cryout-serious-slider.php:290
|
88 |
+
msgid "Add New Slide"
|
89 |
+
msgstr ""
|
90 |
+
|
91 |
+
#: ../cryout-serious-slider.php:291
|
92 |
+
msgid "New Slide"
|
93 |
+
msgstr ""
|
94 |
+
|
95 |
+
#: ../cryout-serious-slider.php:292
|
96 |
+
msgid "Edit Slide"
|
97 |
+
msgstr ""
|
98 |
+
|
99 |
+
#: ../cryout-serious-slider.php:293
|
100 |
+
msgid "View Slide"
|
101 |
+
msgstr ""
|
102 |
+
|
103 |
+
#: ../cryout-serious-slider.php:294
|
104 |
+
msgid "All Slides"
|
105 |
+
msgstr ""
|
106 |
+
|
107 |
+
#: ../cryout-serious-slider.php:295
|
108 |
+
msgid "Search Slide"
|
109 |
+
msgstr ""
|
110 |
+
|
111 |
+
#: ../cryout-serious-slider.php:296
|
112 |
+
msgid "Parent Slides:"
|
113 |
+
msgstr ""
|
114 |
+
|
115 |
+
#: ../cryout-serious-slider.php:297
|
116 |
+
msgid "No slides found."
|
117 |
+
msgstr ""
|
118 |
+
|
119 |
+
#: ../cryout-serious-slider.php:298
|
120 |
+
msgid "No slides found in Trash."
|
121 |
+
msgstr ""
|
122 |
+
|
123 |
+
#: ../cryout-serious-slider.php:318
|
124 |
+
msgid "Sliders"
|
125 |
+
msgstr ""
|
126 |
+
|
127 |
+
#: ../cryout-serious-slider.php:319 ../cryout-serious-slider.php:357
|
128 |
+
msgid "Slider"
|
129 |
+
msgstr ""
|
130 |
+
|
131 |
+
#: ../cryout-serious-slider.php:320
|
132 |
+
msgid "Search Sliders"
|
133 |
+
msgstr ""
|
134 |
+
|
135 |
+
#: ../cryout-serious-slider.php:321
|
136 |
+
msgid "All Sliders"
|
137 |
+
msgstr ""
|
138 |
+
|
139 |
+
#: ../cryout-serious-slider.php:322
|
140 |
+
msgid "Parent Slider"
|
141 |
+
msgstr ""
|
142 |
+
|
143 |
+
#: ../cryout-serious-slider.php:323
|
144 |
+
msgid "Parent Slider:"
|
145 |
+
msgstr ""
|
146 |
+
|
147 |
+
#: ../cryout-serious-slider.php:324
|
148 |
+
msgid "Edit Slider"
|
149 |
+
msgstr ""
|
150 |
+
|
151 |
+
#: ../cryout-serious-slider.php:325
|
152 |
+
msgid "Update Slider"
|
153 |
+
msgstr ""
|
154 |
+
|
155 |
+
#: ../cryout-serious-slider.php:326
|
156 |
+
msgid "Add New Slider"
|
157 |
+
msgstr ""
|
158 |
+
|
159 |
+
#: ../cryout-serious-slider.php:327
|
160 |
+
msgid "New Slider"
|
161 |
+
msgstr ""
|
162 |
+
|
163 |
+
#: ../cryout-serious-slider.php:356
|
164 |
+
msgid "Title"
|
165 |
+
msgstr ""
|
166 |
+
|
167 |
+
#: ../cryout-serious-slider.php:358
|
168 |
+
msgid "Featured Image"
|
169 |
+
msgstr ""
|
170 |
+
|
171 |
+
#: ../cryout-serious-slider.php:359
|
172 |
+
msgid "Date"
|
173 |
+
msgstr ""
|
174 |
+
|
175 |
+
#: ../cryout-serious-slider.php:360
|
176 |
+
msgid "Order"
|
177 |
+
msgstr ""
|
178 |
+
|
179 |
+
#: ../cryout-serious-slider.php:377
|
180 |
+
msgid "No featured image set."
|
181 |
+
msgstr ""
|
182 |
+
|
183 |
+
#: ../cryout-serious-slider.php:393
|
184 |
+
msgid "Edit slider"
|
185 |
+
msgstr ""
|
186 |
+
|
187 |
+
#: ../cryout-serious-slider.php:402
|
188 |
+
msgid "No Slider"
|
189 |
+
msgstr ""
|
190 |
+
|
191 |
+
#: ../cryout-serious-slider.php:443
|
192 |
+
#, php-format
|
193 |
+
msgid "All %s"
|
194 |
+
msgstr ""
|
195 |
+
|
196 |
+
#: ../cryout-serious-slider.php:480
|
197 |
+
msgid "Slide Link"
|
198 |
+
msgstr ""
|
199 |
+
|
200 |
+
#: ../cryout-serious-slider.php:493
|
201 |
+
msgid "Link URL"
|
202 |
+
msgstr ""
|
203 |
+
|
204 |
+
#: ../cryout-serious-slider.php:497
|
205 |
+
msgid "Open In New Window"
|
206 |
+
msgstr ""
|
207 |
+
|
208 |
+
#: ../cryout-serious-slider.php:498
|
209 |
+
msgid "Leave empty to disable link."
|
210 |
+
msgstr ""
|
211 |
+
|
212 |
+
#: ../inc/right-column.php:6
|
213 |
+
msgid "Shortcode"
|
214 |
+
msgstr ""
|
215 |
+
|
216 |
+
#: ../inc/right-column.php:7
|
217 |
+
msgid "Use the shortcode to include the slider in posts, pages or widgets"
|
218 |
+
msgstr ""
|
219 |
+
|
220 |
+
#: ../inc/right-column.php:10
|
221 |
+
msgid "Template"
|
222 |
+
msgstr ""
|
223 |
+
|
224 |
+
#: ../inc/right-column.php:11
|
225 |
+
msgid "Use the PHP code to include the slider directly in files"
|
226 |
+
msgstr ""
|
227 |
+
|
228 |
+
#: ../inc/settings.php:15
|
229 |
+
msgid "Sample slider created."
|
230 |
+
msgstr ""
|
231 |
+
|
232 |
+
#: ../inc/settings.php:16
|
233 |
+
msgid "Navigate to Slider and Slides sections to see the sample content."
|
234 |
+
msgstr ""
|
235 |
+
|
236 |
+
#: ../inc/settings.php:17
|
237 |
+
msgid "Dismiss this notice."
|
238 |
+
msgstr ""
|
239 |
+
|
240 |
+
#: ../inc/settings.php:63
|
241 |
+
#, php-format
|
242 |
+
msgid "version: %s"
|
243 |
+
msgstr ""
|
244 |
+
|
245 |
+
#: ../inc/settings.php:64
|
246 |
+
msgid "by"
|
247 |
+
msgstr ""
|
248 |
+
|
249 |
+
#: ../inc/settings.php:72
|
250 |
+
msgid "Support"
|
251 |
+
msgstr ""
|
252 |
+
|
253 |
+
#: ../inc/settings.php:76
|
254 |
+
msgid "For support questions please use"
|
255 |
+
msgstr ""
|
256 |
+
|
257 |
+
#: ../inc/settings.php:77
|
258 |
+
msgid "our forum"
|
259 |
+
msgstr ""
|
260 |
+
|
261 |
+
#: ../inc/settings.php:86
|
262 |
+
msgid ""
|
263 |
+
"Automatically set up a sample slider with 3 slides to use as a guide for "
|
264 |
+
"your own content."
|
265 |
+
msgstr ""
|
266 |
+
|
267 |
+
#: ../inc/settings.php:88
|
268 |
+
msgid "Create Sample Slider"
|
269 |
+
msgstr ""
|
270 |
+
|
271 |
+
#: ../inc/shortcodes.php:119
|
272 |
+
msgid "Previous"
|
273 |
+
msgstr ""
|
274 |
+
|
275 |
+
#: ../inc/shortcodes.php:123
|
276 |
+
msgid "Next"
|
277 |
+
msgstr ""
|
278 |
+
|
279 |
+
#: ../inc/taxmeta.php:5
|
280 |
+
msgid "by date"
|
281 |
+
msgstr ""
|
282 |
+
|
283 |
+
#: ../inc/taxmeta.php:5
|
284 |
+
msgid "by order value"
|
285 |
+
msgstr ""
|
286 |
+
|
287 |
+
#: ../inc/taxmeta.php:7
|
288 |
+
msgid "Sort Order"
|
289 |
+
msgstr ""
|
290 |
+
|
291 |
+
#: ../inc/taxmeta.php:13
|
292 |
+
msgid "Adapt to images"
|
293 |
+
msgstr ""
|
294 |
+
|
295 |
+
#: ../inc/taxmeta.php:13
|
296 |
+
msgid "Force constraints"
|
297 |
+
msgstr ""
|
298 |
+
|
299 |
+
#: ../inc/taxmeta.php:15
|
300 |
+
msgid "Slider Size"
|
301 |
+
msgstr ""
|
302 |
+
|
303 |
+
#: ../inc/taxmeta.php:25
|
304 |
+
msgid "Width"
|
305 |
+
msgstr ""
|
306 |
+
|
307 |
+
#: ../inc/taxmeta.php:33
|
308 |
+
msgid "Height"
|
309 |
+
msgstr ""
|
310 |
+
|
311 |
+
#: ../inc/taxmeta.php:40
|
312 |
+
msgid "Light"
|
313 |
+
msgstr ""
|
314 |
+
|
315 |
+
#: ../inc/taxmeta.php:41
|
316 |
+
msgid "Dark"
|
317 |
+
msgstr ""
|
318 |
+
|
319 |
+
#: ../inc/taxmeta.php:42
|
320 |
+
msgid "Blank"
|
321 |
+
msgstr ""
|
322 |
+
|
323 |
+
#: ../inc/taxmeta.php:43
|
324 |
+
msgid "Bootstrap"
|
325 |
+
msgstr ""
|
326 |
+
|
327 |
+
#: ../inc/taxmeta.php:45
|
328 |
+
msgid "Color Scheme"
|
329 |
+
msgstr ""
|
330 |
+
|
331 |
+
#: ../inc/taxmeta.php:52
|
332 |
+
msgid "Base Font Size"
|
333 |
+
msgstr ""
|
334 |
+
|
335 |
+
#: ../inc/taxmeta.php:60
|
336 |
+
msgid "Always hidden"
|
337 |
+
msgstr ""
|
338 |
+
|
339 |
+
#: ../inc/taxmeta.php:60
|
340 |
+
msgid "Appear on hover"
|
341 |
+
msgstr ""
|
342 |
+
|
343 |
+
#: ../inc/taxmeta.php:60
|
344 |
+
msgid "Always visible"
|
345 |
+
msgstr ""
|
346 |
+
|
347 |
+
#: ../inc/taxmeta.php:62
|
348 |
+
msgid "Bullets and Navigation"
|
349 |
+
msgstr ""
|
350 |
+
|
351 |
+
#: ../inc/taxmeta.php:69
|
352 |
+
msgid "Fade"
|
353 |
+
msgstr ""
|
354 |
+
|
355 |
+
#: ../inc/taxmeta.php:71
|
356 |
+
msgid "Overslide"
|
357 |
+
msgstr ""
|
358 |
+
|
359 |
+
#: ../inc/taxmeta.php:72
|
360 |
+
msgid "Underslide"
|
361 |
+
msgstr ""
|
362 |
+
|
363 |
+
#: ../inc/taxmeta.php:73
|
364 |
+
msgid "Parallax"
|
365 |
+
msgstr ""
|
366 |
+
|
367 |
+
#: ../inc/taxmeta.php:74
|
368 |
+
msgid "Horizontal Flip"
|
369 |
+
msgstr ""
|
370 |
+
|
371 |
+
#: ../inc/taxmeta.php:75
|
372 |
+
msgid "Vertical Flip"
|
373 |
+
msgstr ""
|
374 |
+
|
375 |
+
#: ../inc/taxmeta.php:78
|
376 |
+
msgid "Transition Effect"
|
377 |
+
msgstr ""
|
378 |
+
|
379 |
+
#: ../inc/taxmeta.php:84
|
380 |
+
msgid "Enabled"
|
381 |
+
msgstr ""
|
382 |
+
|
383 |
+
#: ../inc/taxmeta.php:84
|
384 |
+
msgid "Disabled"
|
385 |
+
msgstr ""
|
386 |
+
|
387 |
+
#: ../inc/taxmeta.php:86
|
388 |
+
msgid "Transition Pause on Hover"
|
389 |
+
msgstr ""
|
390 |
+
|
391 |
+
#: ../inc/taxmeta.php:94
|
392 |
+
msgid "Transition Delay"
|
393 |
+
msgstr ""
|
394 |
+
|
395 |
+
#: ../inc/taxmeta.php:102
|
396 |
+
msgid "Transition Duration"
|
397 |
+
msgstr ""
|
398 |
+
|
399 |
+
#: ../inc/widgets.php:26
|
400 |
+
msgid "Displayed Slider"
|
401 |
+
msgstr ""
|
readme.txt
ADDED
@@ -0,0 +1,48 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
=== Plugin Name ===
|
2 |
+
Contributors: cryout-creations
|
3 |
+
Donate link: http://www.cryoutcreations.eu/donate/
|
4 |
+
Tags: slider, carousel, shortcode, bootstrap, responsive, responsive slider
|
5 |
+
Requires at least: 4.0
|
6 |
+
Tested up to: 4.5.1
|
7 |
+
Stable tag: 0.5
|
8 |
+
License: GPLv3
|
9 |
+
License URI: http://www.gnu.org/licenses/gpl.html
|
10 |
+
|
11 |
+
Responsive slider, built on Bootstrap Carousel, uses core WordPress functionality, easy to use, seriously.
|
12 |
+
|
13 |
+
== Description ==
|
14 |
+
|
15 |
+
= Features: =
|
16 |
+
|
17 |
+
* Unlimited sliders with unlimited slides
|
18 |
+
* Seriously configurable
|
19 |
+
* Fully responsive
|
20 |
+
* Touch Swipe Navigation
|
21 |
+
* Customization options for each individual slider
|
22 |
+
* Slide attributes: image, caption title, caption text (with HTML support), target link
|
23 |
+
* Easy to use - uses WordPress custom post types
|
24 |
+
* Translation ready and compatible with translation plugins
|
25 |
+
* Accessibility ready
|
26 |
+
* Lightweight (uses CSS and iconfont only)
|
27 |
+
* CSS transitions – fast and powerful hardware accelerated CSS3 3D transforms
|
28 |
+
* HTML5 valid
|
29 |
+
* Sample content
|
30 |
+
|
31 |
+
== Installation ==
|
32 |
+
|
33 |
+
= Automatic installation =
|
34 |
+
|
35 |
+
1. Navigate to Plugins in your dashboard and click the Add New button.
|
36 |
+
2. Type in "Cryout Serious Slider" in the search box on the right and press Enter, then click the Install button next to the plugin title.
|
37 |
+
3. After installation Activate the plugin, look for Serious Slider in the dashboard menu to set up a slider.
|
38 |
+
|
39 |
+
= Manual installation =
|
40 |
+
|
41 |
+
1. Upload `cryout-serious-slider` folder to the `/wp-content/plugins/` directory
|
42 |
+
2. Activate the plugin through the 'Plugins' menu in WordPress
|
43 |
+
3. Navigate to Serious Slider in the dashboard menu to set up a slider.
|
44 |
+
|
45 |
+
== Changelog ==
|
46 |
+
|
47 |
+
= 0.5 =
|
48 |
+
* Initial release.
|
resources/backend.css
ADDED
@@ -0,0 +1,129 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/* Cryout Serious Slider About page */
|
2 |
+
#serious-slider-about,
|
3 |
+
#serious-slider-about p,
|
4 |
+
#serious-slider-about ul {
|
5 |
+
font-size: 1.1em;
|
6 |
+
line-height: 1.7;
|
7 |
+
}
|
8 |
+
|
9 |
+
#serious-slider-about ul {
|
10 |
+
line-height: 1.3;
|
11 |
+
list-style: inside disc;
|
12 |
+
}
|
13 |
+
|
14 |
+
|
15 |
+
#serious-slider-about input[type='text'],
|
16 |
+
#serious-slider-about textarea,
|
17 |
+
#serious-slider-about select {
|
18 |
+
min-width: 200px;
|
19 |
+
width: 80%;
|
20 |
+
max-width: 600px;
|
21 |
+
}
|
22 |
+
|
23 |
+
#serious-slider-about input.short,
|
24 |
+
#serious-slider-about select.short {
|
25 |
+
width: 50px;
|
26 |
+
}
|
27 |
+
|
28 |
+
#serious-slider-about #post-body {
|
29 |
+
margin-right: 0;
|
30 |
+
max-width: 800px;
|
31 |
+
}
|
32 |
+
|
33 |
+
#serious-slider-about .postbox {
|
34 |
+
padding: 3em;
|
35 |
+
-webkit-box-sizing: border-box;
|
36 |
+
-moz-box-sizing: border-box;
|
37 |
+
box-sizing: border-box;
|
38 |
+
}
|
39 |
+
|
40 |
+
#serious-slider-about #serious-slider-header {
|
41 |
+
}
|
42 |
+
|
43 |
+
#serious-slider-about #serious-slider-description {
|
44 |
+
margin-top: 3em;
|
45 |
+
}
|
46 |
+
|
47 |
+
/* Edit pages */
|
48 |
+
|
49 |
+
#cryout_serious_slider_category,
|
50 |
+
#menu_order {width: 10%;}
|
51 |
+
|
52 |
+
.form-wrap, #edittag {
|
53 |
+
background: #FFF;
|
54 |
+
border: 1px solid #e5e5e5;
|
55 |
+
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.04);
|
56 |
+
padding: 1em 2em;
|
57 |
+
}
|
58 |
+
|
59 |
+
#edittag {
|
60 |
+
position: relative;
|
61 |
+
}
|
62 |
+
|
63 |
+
.form-wrap .form-table tr th, .form-wrap .form-table tr td,
|
64 |
+
#edittag .form-table tr th, #edittag .form-table tr td {
|
65 |
+
padding: 7px 10px;
|
66 |
+
}
|
67 |
+
|
68 |
+
.form-wrap .short, #edittag .short { min-width: 220px; width: auto; }
|
69 |
+
.form-wrap input[type=number] { text-align: right; }
|
70 |
+
|
71 |
+
@media (min-width: 780px) {
|
72 |
+
#col-left, #col-right, #edittag { width: 50%; }
|
73 |
+
}
|
74 |
+
|
75 |
+
div.term-slug-wrap,
|
76 |
+
div.term-parent-wrap,
|
77 |
+
div.term-description-wrap,
|
78 |
+
tr.term-slug-wrap,
|
79 |
+
tr.term-parent-wrap,
|
80 |
+
tr.term-description-wrap {
|
81 |
+
display: none;
|
82 |
+
}
|
83 |
+
|
84 |
+
div.term-name-wrap p,
|
85 |
+
tr.term-name-wrap p{
|
86 |
+
display: none;
|
87 |
+
}
|
88 |
+
|
89 |
+
/* temporarily hide quick edit button on slides */
|
90 |
+
div.row-actions .editinline { display: none; }
|
91 |
+
div.row-actions .edit + .inline { display: none; }
|
92 |
+
|
93 |
+
.type-cryout_serious_slide .column-featured_image img { max-height: 120px; }
|
94 |
+
|
95 |
+
#posts-filter table.wp-list-table th.column-description, #posts-filter table.wp-list-table th.column-slug,
|
96 |
+
#posts-filter table.wp-list-table td.column-description, #posts-filter table.wp-list-table td.column-slug,
|
97 |
+
select#filter-by-date {
|
98 |
+
display: none;
|
99 |
+
}
|
100 |
+
|
101 |
+
/* Taxonomy shortcode box */
|
102 |
+
|
103 |
+
#floater-right {
|
104 |
+
display: block;
|
105 |
+
width: 450px;
|
106 |
+
position: absolute;
|
107 |
+
top: 0;
|
108 |
+
left: 100%;
|
109 |
+
}
|
110 |
+
#floater-right textarea, #floater-right input[type="text"] {
|
111 |
+
width: 90%;
|
112 |
+
border: 0;
|
113 |
+
padding: 10px;
|
114 |
+
//background: transparent;
|
115 |
+
box-shadow: none;
|
116 |
+
font-weight: bold;
|
117 |
+
}
|
118 |
+
|
119 |
+
@media (max-width: 960px) {
|
120 |
+
#floater-right { width: 40%; }
|
121 |
+
}
|
122 |
+
|
123 |
+
@media (max-width: 780px) {
|
124 |
+
#floater-right {
|
125 |
+
width: 98%;
|
126 |
+
position: static; }
|
127 |
+
}
|
128 |
+
|
129 |
+
/* FIN */
|
resources/backend.js
ADDED
File without changes
|
resources/fonts/serioussliderglyphs.eot
ADDED
Binary file
|
resources/fonts/serioussliderglyphs.svg
ADDED
@@ -0,0 +1,22 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?xml version="1.0" standalone="no"?>
|
2 |
+
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
|
3 |
+
<svg xmlns="http://www.w3.org/2000/svg">
|
4 |
+
<metadata>Generated by IcoMoon</metadata>
|
5 |
+
<defs>
|
6 |
+
<font id="serioussliderglyphs" horiz-adv-x="1024">
|
7 |
+
<font-face units-per-em="1024" ascent="960" descent="-64" />
|
8 |
+
<missing-glyph horiz-adv-x="1024" />
|
9 |
+
<glyph unicode=" " horiz-adv-x="512" d="" />
|
10 |
+
<glyph unicode="" glyph-name="rewind" d="M768 768q17.667 0 30.167-12.5t12.5-30.167-12.667-30.333l-268.333-268.333 268.333-268.333q12.667-12.667 12.667-30.333t-12.5-30.167-30.167-12.5q-18 0-30.333 12.333l-298.667 298.667q-12.333 12.333-12.333 30.333t12.333 30.333l298.667 298.667q12.333 12.333 30.333 12.333zM512 768q17.667 0 30.167-12.5t12.5-30.167-12.667-30.333l-268.333-268.333 268.333-268.333q12.667-12.667 12.667-30.333t-12.5-30.167-30.167-12.5q-18 0-30.333 12.333l-298.667 298.667q-12.333 12.333-12.333 30.333t12.333 30.333l298.667 298.667q12.333 12.333 30.333 12.333z" />
|
11 |
+
<glyph unicode="" glyph-name="fast-forward" d="M469.333 768q17.667 0 30-12.333l298.667-298.667q12.667-12.667 12.667-30.333t-12.667-30.333l-298.667-298.667q-12.333-12.333-30-12.333t-30.167 12.5-12.5 30.167q0 18 12.333 30.333l268.333 268.333-268.333 268.333q-12.333 12.333-12.333 30.333 0 18.333 12.167 30.5t30.5 12.167zM213.333 768q17.667 0 30-12.333l298.667-298.667q12.667-12.667 12.667-30.333t-12.667-30.333l-298.667-298.667q-12.333-12.333-30-12.333t-30.167 12.5-12.5 30.167q0 18 12.333 30.333l268.333 268.333-268.333 268.333q-12.333 12.333-12.333 30.333 0 18.333 12.167 30.5t30.5 12.167z" />
|
12 |
+
<glyph unicode="" glyph-name="chevron-left2" d="M637.542 741.581c22.835-22.323 24.627-53.402 0-80.691l-191.846-200.090 191.846-200.090c24.627-27.29 22.835-58.419 0-80.589-22.784-22.323-61.286-20.89-82.688 0-21.402 20.787-230.502 240.384-230.502 240.384-11.418 11.11-17.152 25.702-17.152 40.294s5.734 29.184 17.152 40.397c0 0 209.101 219.494 230.502 240.384 21.402 20.941 59.904 22.323 82.688 0z" />
|
13 |
+
<glyph unicode="" glyph-name="chevron-right2" d="M469.146 741.581c21.402-20.89 230.502-240.384 230.502-240.384 11.418-11.213 17.152-25.805 17.152-40.397s-5.734-29.184-17.152-40.294c0 0-209.101-219.597-230.502-240.384-21.402-20.89-59.904-22.323-82.688 0-22.835 22.221-24.627 53.299 0 80.589l191.846 200.090-191.846 200.090c-24.627 27.29-22.835 58.419 0 80.691 22.784 22.323 61.286 20.941 82.688 0z" />
|
14 |
+
<glyph unicode="" glyph-name="chevron-small-left" d="M621.619 285.798c13.722-13.875 13.722-36.301 0-50.074-13.722-13.824-35.891-13.926-49.613 0l-196.096 200.090c-13.722 13.824-13.722 36.198 0 50.125l196.096 200.090c13.67 13.824 35.891 13.824 49.613 0 13.722-13.875 13.722-36.301 0-50.074l-160.819-175.155 160.819-175.002z" />
|
15 |
+
<glyph unicode="" glyph-name="chevron-small-right" d="M563.2 460.8l-160.819 175.104c-13.722 13.824-13.722 36.198 0 50.074 13.722 13.824 35.891 13.824 49.613 0l196.096-200.090c13.722-13.875 13.722-36.301 0-50.125l-196.096-200.090c-13.67-13.926-35.891-13.824-49.613 0-13.722 13.773-13.722 36.198 0 50.074l160.819 175.053z" />
|
16 |
+
<glyph unicode="" glyph-name="chevron-thin-left" d="M711.219 80.998c13.722-13.926 13.722-36.301 0-50.125s-35.891-13.875-49.613 0l-400.896 404.89c-13.722 13.824-13.722 36.198 0 50.125l400.896 404.89c13.722 13.824 35.891 13.824 49.613 0 13.722-13.875 13.722-36.301 0-50.125l-365.619-379.853 365.619-379.802z" />
|
17 |
+
<glyph unicode="" glyph-name="chevron-thin-right" d="M678.4 460.8l-365.619 379.904c-13.722 13.824-13.722 36.198 0 50.125 13.722 13.824 35.891 13.824 49.613 0l400.896-404.89c13.722-13.875 13.722-36.301 0-50.125l-400.896-404.89c-13.722-13.875-35.891-13.824-49.613 0-13.722 13.773-13.722 36.198 0 50.125l365.619 379.75z" />
|
18 |
+
<glyph unicode="" glyph-name="chevron-with-circle-left" d="M578.662 625.869c-10.035 10.086-26.368 10.086-36.352 0l-143.718-146.688c-10.035-10.189-10.035-26.624 0-36.71l143.718-146.637c9.984-10.189 26.317-10.138 36.352 0 10.035 10.086 10.035 26.522 0 36.71l-117.862 128.256 117.862 128.307c10.035 10.138 10.035 26.522 0 36.762zM512 952.32c-271.462 0-491.52-220.058-491.52-491.52 0-271.514 220.058-491.52 491.52-491.52s491.52 220.006 491.52 491.52c0 271.462-220.058 491.52-491.52 491.52zM512 33.075c-236.288 0-427.725 191.488-427.725 427.725s191.437 427.725 427.725 427.725c236.186 0 427.725-191.488 427.725-427.725s-191.539-427.725-427.725-427.725z" />
|
19 |
+
<glyph unicode="" glyph-name="chevron-with-circle-right" d="M563.2 460.8l-117.862 128.307c-10.035 10.138-10.035 26.573 0 36.762 10.035 10.086 26.368 10.086 36.352 0l143.718-146.637c10.035-10.189 10.035-26.624 0-36.71l-143.718-146.637c-9.984-10.189-26.317-10.138-36.352 0-10.035 10.086-10.035 26.522 0 36.71l117.862 128.205zM512 952.32c271.462 0 491.52-220.058 491.52-491.52 0-271.514-220.058-491.52-491.52-491.52s-491.52 220.006-491.52 491.52c0 271.462 220.058 491.52 491.52 491.52zM512 33.075c236.186 0 427.725 191.488 427.725 427.725s-191.539 427.725-427.725 427.725c-236.288 0-427.725-191.488-427.725-427.725-0.051-236.237 191.437-427.725 427.725-427.725z" />
|
20 |
+
<glyph unicode="" glyph-name="chevron-left" horiz-adv-x="768" d="M669.143 778.857l-303.429-303.429 303.429-303.429q10.857-10.857 10.857-25.714t-10.857-25.714l-94.857-94.857q-10.857-10.857-25.714-10.857t-25.714 10.857l-424 424q-10.857 10.857-10.857 25.714t10.857 25.714l424 424q10.857 10.857 25.714 10.857t25.714-10.857l94.857-94.857q10.857-10.857 10.857-25.714t-10.857-25.714z" />
|
21 |
+
<glyph unicode="" glyph-name="chevron-right" horiz-adv-x="695" d="M632.571 449.714l-424-424q-10.857-10.857-25.714-10.857t-25.714 10.857l-94.857 94.857q-10.857 10.857-10.857 25.714t10.857 25.714l303.429 303.429-303.429 303.429q-10.857 10.857-10.857 25.714t10.857 25.714l94.857 94.857q10.857 10.857 25.714 10.857t25.714-10.857l424-424q10.857-10.857 10.857-25.714t-10.857-25.714z" />
|
22 |
+
</font></defs></svg>
|
resources/fonts/serioussliderglyphs.ttf
ADDED
Binary file
|
resources/fonts/serioussliderglyphs.woff
ADDED
Binary file
|
resources/images/serious-slider-editor-icon.png
ADDED
Binary file
|
resources/images/serious-slider-header.png
ADDED
Binary file
|
resources/images/serious-slider-icon.png
ADDED
Binary file
|
resources/jquery.mobile.custom.js
ADDED
@@ -0,0 +1,864 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*
|
2 |
+
* jQuery Mobile v1.4.5
|
3 |
+
* http://jquerymobile.com
|
4 |
+
*
|
5 |
+
* Copyright 2010, 2014 jQuery Foundation, Inc. and other contributors
|
6 |
+
* Released under the MIT license.
|
7 |
+
* http://jquery.org/license
|
8 |
+
*
|
9 |
+
*/
|
10 |
+
|
11 |
+
(function ( root, doc, factory ) {
|
12 |
+
if ( typeof define === "function" && define.amd ) {
|
13 |
+
// AMD. Register as an anonymous module.
|
14 |
+
define( [ "jquery" ], function ( $ ) {
|
15 |
+
factory( $, root, doc );
|
16 |
+
return $.mobile;
|
17 |
+
});
|
18 |
+
} else {
|
19 |
+
// Browser globals
|
20 |
+
factory( root.jQuery, root, doc );
|
21 |
+
}
|
22 |
+
}( this, document, function ( jQuery, window, document, undefined ) {// This plugin is an experiment for abstracting away the touch and mouse
|
23 |
+
// events so that developers don't have to worry about which method of input
|
24 |
+
// the device their document is loaded on supports.
|
25 |
+
//
|
26 |
+
// The idea here is to allow the developer to register listeners for the
|
27 |
+
// basic mouse events, such as mousedown, mousemove, mouseup, and click,
|
28 |
+
// and the plugin will take care of registering the correct listeners
|
29 |
+
// behind the scenes to invoke the listener at the fastest possible time
|
30 |
+
// for that device, while still retaining the order of event firing in
|
31 |
+
// the traditional mouse environment, should multiple handlers be registered
|
32 |
+
// on the same element for different events.
|
33 |
+
//
|
34 |
+
// The current version exposes the following virtual events to jQuery bind methods:
|
35 |
+
// "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel"
|
36 |
+
|
37 |
+
(function( $, window, document, undefined ) {
|
38 |
+
|
39 |
+
var dataPropertyName = "virtualMouseBindings",
|
40 |
+
touchTargetPropertyName = "virtualTouchID",
|
41 |
+
virtualEventNames = "vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split( " " ),
|
42 |
+
touchEventProps = "clientX clientY pageX pageY screenX screenY".split( " " ),
|
43 |
+
mouseHookProps = $.event.mouseHooks ? $.event.mouseHooks.props : [],
|
44 |
+
mouseEventProps = $.event.props.concat( mouseHookProps ),
|
45 |
+
activeDocHandlers = {},
|
46 |
+
resetTimerID = 0,
|
47 |
+
startX = 0,
|
48 |
+
startY = 0,
|
49 |
+
didScroll = false,
|
50 |
+
clickBlockList = [],
|
51 |
+
blockMouseTriggers = false,
|
52 |
+
blockTouchTriggers = false,
|
53 |
+
eventCaptureSupported = "addEventListener" in document,
|
54 |
+
$document = $( document ),
|
55 |
+
nextTouchID = 1,
|
56 |
+
lastTouchID = 0, threshold,
|
57 |
+
i;
|
58 |
+
|
59 |
+
$.vmouse = {
|
60 |
+
moveDistanceThreshold: 10,
|
61 |
+
clickDistanceThreshold: 10,
|
62 |
+
resetTimerDuration: 1500
|
63 |
+
};
|
64 |
+
|
65 |
+
function getNativeEvent( event ) {
|
66 |
+
|
67 |
+
while ( event && typeof event.originalEvent !== "undefined" ) {
|
68 |
+
event = event.originalEvent;
|
69 |
+
}
|
70 |
+
return event;
|
71 |
+
}
|
72 |
+
|
73 |
+
function createVirtualEvent( event, eventType ) {
|
74 |
+
|
75 |
+
var t = event.type,
|
76 |
+
oe, props, ne, prop, ct, touch, i, j, len;
|
77 |
+
|
78 |
+
event = $.Event( event );
|
79 |
+
event.type = eventType;
|
80 |
+
|
81 |
+
oe = event.originalEvent;
|
82 |
+
props = $.event.props;
|
83 |
+
|
84 |
+
// addresses separation of $.event.props in to $.event.mouseHook.props and Issue 3280
|
85 |
+
// https://github.com/jquery/jquery-mobile/issues/3280
|
86 |
+
if ( t.search( /^(mouse|click)/ ) > -1 ) {
|
87 |
+
props = mouseEventProps;
|
88 |
+
}
|
89 |
+
|
90 |
+
// copy original event properties over to the new event
|
91 |
+
// this would happen if we could call $.event.fix instead of $.Event
|
92 |
+
// but we don't have a way to force an event to be fixed multiple times
|
93 |
+
if ( oe ) {
|
94 |
+
for ( i = props.length, prop; i; ) {
|
95 |
+
prop = props[ --i ];
|
96 |
+
event[ prop ] = oe[ prop ];
|
97 |
+
}
|
98 |
+
}
|
99 |
+
|
100 |
+
// make sure that if the mouse and click virtual events are generated
|
101 |
+
// without a .which one is defined
|
102 |
+
if ( t.search(/mouse(down|up)|click/) > -1 && !event.which ) {
|
103 |
+
event.which = 1;
|
104 |
+
}
|
105 |
+
|
106 |
+
if ( t.search(/^touch/) !== -1 ) {
|
107 |
+
ne = getNativeEvent( oe );
|
108 |
+
t = ne.touches;
|
109 |
+
ct = ne.changedTouches;
|
110 |
+
touch = ( t && t.length ) ? t[0] : ( ( ct && ct.length ) ? ct[ 0 ] : undefined );
|
111 |
+
|
112 |
+
if ( touch ) {
|
113 |
+
for ( j = 0, len = touchEventProps.length; j < len; j++) {
|
114 |
+
prop = touchEventProps[ j ];
|
115 |
+
event[ prop ] = touch[ prop ];
|
116 |
+
}
|
117 |
+
}
|
118 |
+
}
|
119 |
+
|
120 |
+
return event;
|
121 |
+
}
|
122 |
+
|
123 |
+
function getVirtualBindingFlags( element ) {
|
124 |
+
|
125 |
+
var flags = {},
|
126 |
+
b, k;
|
127 |
+
|
128 |
+
while ( element ) {
|
129 |
+
|
130 |
+
b = $.data( element, dataPropertyName );
|
131 |
+
|
132 |
+
for ( k in b ) {
|
133 |
+
if ( b[ k ] ) {
|
134 |
+
flags[ k ] = flags.hasVirtualBinding = true;
|
135 |
+
}
|
136 |
+
}
|
137 |
+
element = element.parentNode;
|
138 |
+
}
|
139 |
+
return flags;
|
140 |
+
}
|
141 |
+
|
142 |
+
function getClosestElementWithVirtualBinding( element, eventType ) {
|
143 |
+
var b;
|
144 |
+
while ( element ) {
|
145 |
+
|
146 |
+
b = $.data( element, dataPropertyName );
|
147 |
+
|
148 |
+
if ( b && ( !eventType || b[ eventType ] ) ) {
|
149 |
+
return element;
|
150 |
+
}
|
151 |
+
element = element.parentNode;
|
152 |
+
}
|
153 |
+
return null;
|
154 |
+
}
|
155 |
+
|
156 |
+
function enableTouchBindings() {
|
157 |
+
blockTouchTriggers = false;
|
158 |
+
}
|
159 |
+
|
160 |
+
function disableTouchBindings() {
|
161 |
+
blockTouchTriggers = true;
|
162 |
+
}
|
163 |
+
|
164 |
+
function enableMouseBindings() {
|
165 |
+
lastTouchID = 0;
|
166 |
+
clickBlockList.length = 0;
|
167 |
+
blockMouseTriggers = false;
|
168 |
+
|
169 |
+
// When mouse bindings are enabled, our
|
170 |
+
// touch bindings are disabled.
|
171 |
+
disableTouchBindings();
|
172 |
+
}
|
173 |
+
|
174 |
+
function disableMouseBindings() {
|
175 |
+
// When mouse bindings are disabled, our
|
176 |
+
// touch bindings are enabled.
|
177 |
+
enableTouchBindings();
|
178 |
+
}
|
179 |
+
|
180 |
+
function startResetTimer() {
|
181 |
+
clearResetTimer();
|
182 |
+
resetTimerID = setTimeout( function() {
|
183 |
+
resetTimerID = 0;
|
184 |
+
enableMouseBindings();
|
185 |
+
}, $.vmouse.resetTimerDuration );
|
186 |
+
}
|
187 |
+
|
188 |
+
function clearResetTimer() {
|
189 |
+
if ( resetTimerID ) {
|
190 |
+
clearTimeout( resetTimerID );
|
191 |
+
resetTimerID = 0;
|
192 |
+
}
|
193 |
+
}
|
194 |
+
|
195 |
+
function triggerVirtualEvent( eventType, event, flags ) {
|
196 |
+
var ve;
|
197 |
+
|
198 |
+
if ( ( flags && flags[ eventType ] ) ||
|
199 |
+
( !flags && getClosestElementWithVirtualBinding( event.target, eventType ) ) ) {
|
200 |
+
|
201 |
+
ve = createVirtualEvent( event, eventType );
|
202 |
+
|
203 |
+
$( event.target).trigger( ve );
|
204 |
+
}
|
205 |
+
|
206 |
+
return ve;
|
207 |
+
}
|
208 |
+
|
209 |
+
function mouseEventCallback( event ) {
|
210 |
+
var touchID = $.data( event.target, touchTargetPropertyName ),
|
211 |
+
ve;
|
212 |
+
|
213 |
+
if ( !blockMouseTriggers && ( !lastTouchID || lastTouchID !== touchID ) ) {
|
214 |
+
ve = triggerVirtualEvent( "v" + event.type, event );
|
215 |
+
if ( ve ) {
|
216 |
+
if ( ve.isDefaultPrevented() ) {
|
217 |
+
event.preventDefault();
|
218 |
+
}
|
219 |
+
if ( ve.isPropagationStopped() ) {
|
220 |
+
event.stopPropagation();
|
221 |
+
}
|
222 |
+
if ( ve.isImmediatePropagationStopped() ) {
|
223 |
+
event.stopImmediatePropagation();
|
224 |
+
}
|
225 |
+
}
|
226 |
+
}
|
227 |
+
}
|
228 |
+
|
229 |
+
function handleTouchStart( event ) {
|
230 |
+
|
231 |
+
var touches = getNativeEvent( event ).touches,
|
232 |
+
target, flags, t;
|
233 |
+
|
234 |
+
if ( touches && touches.length === 1 ) {
|
235 |
+
|
236 |
+
target = event.target;
|
237 |
+
flags = getVirtualBindingFlags( target );
|
238 |
+
|
239 |
+
if ( flags.hasVirtualBinding ) {
|
240 |
+
|
241 |
+
lastTouchID = nextTouchID++;
|
242 |
+
$.data( target, touchTargetPropertyName, lastTouchID );
|
243 |
+
|
244 |
+
clearResetTimer();
|
245 |
+
|
246 |
+
disableMouseBindings();
|
247 |
+
didScroll = false;
|
248 |
+
|
249 |
+
t = getNativeEvent( event ).touches[ 0 ];
|
250 |
+
startX = t.pageX;
|
251 |
+
startY = t.pageY;
|
252 |
+
|
253 |
+
triggerVirtualEvent( "vmouseover", event, flags );
|
254 |
+
triggerVirtualEvent( "vmousedown", event, flags );
|
255 |
+
}
|
256 |
+
}
|
257 |
+
}
|
258 |
+
|
259 |
+
function handleScroll( event ) {
|
260 |
+
if ( blockTouchTriggers ) {
|
261 |
+
return;
|
262 |
+
}
|
263 |
+
|
264 |
+
if ( !didScroll ) {
|
265 |
+
triggerVirtualEvent( "vmousecancel", event, getVirtualBindingFlags( event.target ) );
|
266 |
+
}
|
267 |
+
|
268 |
+
didScroll = true;
|
269 |
+
startResetTimer();
|
270 |
+
}
|
271 |
+
|
272 |
+
function handleTouchMove( event ) {
|
273 |
+
if ( blockTouchTriggers ) {
|
274 |
+
return;
|
275 |
+
}
|
276 |
+
|
277 |
+
var t = getNativeEvent( event ).touches[ 0 ],
|
278 |
+
didCancel = didScroll,
|
279 |
+
moveThreshold = $.vmouse.moveDistanceThreshold,
|
280 |
+
flags = getVirtualBindingFlags( event.target );
|
281 |
+
|
282 |
+
didScroll = didScroll ||
|
283 |
+
( Math.abs( t.pageX - startX ) > moveThreshold ||
|
284 |
+
Math.abs( t.pageY - startY ) > moveThreshold );
|
285 |
+
|
286 |
+
if ( didScroll && !didCancel ) {
|
287 |
+
triggerVirtualEvent( "vmousecancel", event, flags );
|
288 |
+
}
|
289 |
+
|
290 |
+
triggerVirtualEvent( "vmousemove", event, flags );
|
291 |
+
startResetTimer();
|
292 |
+
}
|
293 |
+
|
294 |
+
function handleTouchEnd( event ) {
|
295 |
+
if ( blockTouchTriggers ) {
|
296 |
+
return;
|
297 |
+
}
|
298 |
+
|
299 |
+
disableTouchBindings();
|
300 |
+
|
301 |
+
var flags = getVirtualBindingFlags( event.target ),
|
302 |
+
ve, t;
|
303 |
+
triggerVirtualEvent( "vmouseup", event, flags );
|
304 |
+
|
305 |
+
if ( !didScroll ) {
|
306 |
+
ve = triggerVirtualEvent( "vclick", event, flags );
|
307 |
+
if ( ve && ve.isDefaultPrevented() ) {
|
308 |
+
// The target of the mouse events that follow the touchend
|
309 |
+
// event don't necessarily match the target used during the
|
310 |
+
// touch. This means we need to rely on coordinates for blocking
|
311 |
+
// any click that is generated.
|
312 |
+
t = getNativeEvent( event ).changedTouches[ 0 ];
|
313 |
+
clickBlockList.push({
|
314 |
+
touchID: lastTouchID,
|
315 |
+
x: t.clientX,
|
316 |
+
y: t.clientY
|
317 |
+
});
|
318 |
+
|
319 |
+
// Prevent any mouse events that follow from triggering
|
320 |
+
// virtual event notifications.
|
321 |
+
blockMouseTriggers = true;
|
322 |
+
}
|
323 |
+
}
|
324 |
+
triggerVirtualEvent( "vmouseout", event, flags);
|
325 |
+
didScroll = false;
|
326 |
+
|
327 |
+
startResetTimer();
|
328 |
+
}
|
329 |
+
|
330 |
+
function hasVirtualBindings( ele ) {
|
331 |
+
var bindings = $.data( ele, dataPropertyName ),
|
332 |
+
k;
|
333 |
+
|
334 |
+
if ( bindings ) {
|
335 |
+
for ( k in bindings ) {
|
336 |
+
if ( bindings[ k ] ) {
|
337 |
+
return true;
|
338 |
+
}
|
339 |
+
}
|
340 |
+
}
|
341 |
+
return false;
|
342 |
+
}
|
343 |
+
|
344 |
+
function dummyMouseHandler() {}
|
345 |
+
|
346 |
+
function getSpecialEventObject( eventType ) {
|
347 |
+
var realType = eventType.substr( 1 );
|
348 |
+
|
349 |
+
return {
|
350 |
+
setup: function(/* data, namespace */) {
|
351 |
+
// If this is the first virtual mouse binding for this element,
|
352 |
+
// add a bindings object to its data.
|
353 |
+
|
354 |
+
if ( !hasVirtualBindings( this ) ) {
|
355 |
+
$.data( this, dataPropertyName, {} );
|
356 |
+
}
|
357 |
+
|
358 |
+
// If setup is called, we know it is the first binding for this
|
359 |
+
// eventType, so initialize the count for the eventType to zero.
|
360 |
+
var bindings = $.data( this, dataPropertyName );
|
361 |
+
bindings[ eventType ] = true;
|
362 |
+
|
363 |
+
// If this is the first virtual mouse event for this type,
|
364 |
+
// register a global handler on the document.
|
365 |
+
|
366 |
+
activeDocHandlers[ eventType ] = ( activeDocHandlers[ eventType ] || 0 ) + 1;
|
367 |
+
|
368 |
+
if ( activeDocHandlers[ eventType ] === 1 ) {
|
369 |
+
$document.bind( realType, mouseEventCallback );
|
370 |
+
}
|
371 |
+
|
372 |
+
// Some browsers, like Opera Mini, won't dispatch mouse/click events
|
373 |
+
// for elements unless they actually have handlers registered on them.
|
374 |
+
// To get around this, we register dummy handlers on the elements.
|
375 |
+
|
376 |
+
$( this ).bind( realType, dummyMouseHandler );
|
377 |
+
|
378 |
+
// For now, if event capture is not supported, we rely on mouse handlers.
|
379 |
+
if ( eventCaptureSupported ) {
|
380 |
+
// If this is the first virtual mouse binding for the document,
|
381 |
+
// register our touchstart handler on the document.
|
382 |
+
|
383 |
+
activeDocHandlers[ "touchstart" ] = ( activeDocHandlers[ "touchstart" ] || 0) + 1;
|
384 |
+
|
385 |
+
if ( activeDocHandlers[ "touchstart" ] === 1 ) {
|
386 |
+
$document.bind( "touchstart", handleTouchStart )
|
387 |
+
.bind( "touchend", handleTouchEnd )
|
388 |
+
|
389 |
+
// On touch platforms, touching the screen and then dragging your finger
|
390 |
+
// causes the window content to scroll after some distance threshold is
|
391 |
+
// exceeded. On these platforms, a scroll prevents a click event from being
|
392 |
+
// dispatched, and on some platforms, even the touchend is suppressed. To
|
393 |
+
// mimic the suppression of the click event, we need to watch for a scroll
|
394 |
+
// event. Unfortunately, some platforms like iOS don't dispatch scroll
|
395 |
+
// events until *AFTER* the user lifts their finger (touchend). This means
|
396 |
+
// we need to watch both scroll and touchmove events to figure out whether
|
397 |
+
// or not a scroll happenens before the touchend event is fired.
|
398 |
+
|
399 |
+
.bind( "touchmove", handleTouchMove )
|
400 |
+
.bind( "scroll", handleScroll );
|
401 |
+
}
|
402 |
+
}
|
403 |
+
},
|
404 |
+
|
405 |
+
teardown: function(/* data, namespace */) {
|
406 |
+
// If this is the last virtual binding for this eventType,
|
407 |
+
// remove its global handler from the document.
|
408 |
+
|
409 |
+
--activeDocHandlers[ eventType ];
|
410 |
+
|
411 |
+
if ( !activeDocHandlers[ eventType ] ) {
|
412 |
+
$document.unbind( realType, mouseEventCallback );
|
413 |
+
}
|
414 |
+
|
415 |
+
if ( eventCaptureSupported ) {
|
416 |
+
// If this is the last virtual mouse binding in existence,
|
417 |
+
// remove our document touchstart listener.
|
418 |
+
|
419 |
+
--activeDocHandlers[ "touchstart" ];
|
420 |
+
|
421 |
+
if ( !activeDocHandlers[ "touchstart" ] ) {
|
422 |
+
$document.unbind( "touchstart", handleTouchStart )
|
423 |
+
.unbind( "touchmove", handleTouchMove )
|
424 |
+
.unbind( "touchend", handleTouchEnd )
|
425 |
+
.unbind( "scroll", handleScroll );
|
426 |
+
}
|
427 |
+
}
|
428 |
+
|
429 |
+
var $this = $( this ),
|
430 |
+
bindings = $.data( this, dataPropertyName );
|
431 |
+
|
432 |
+
// teardown may be called when an element was
|
433 |
+
// removed from the DOM. If this is the case,
|
434 |
+
// jQuery core may have already stripped the element
|
435 |
+
// of any data bindings so we need to check it before
|
436 |
+
// using it.
|
437 |
+
if ( bindings ) {
|
438 |
+
bindings[ eventType ] = false;
|
439 |
+
}
|
440 |
+
|
441 |
+
// Unregister the dummy event handler.
|
442 |
+
|
443 |
+
$this.unbind( realType, dummyMouseHandler );
|
444 |
+
|
445 |
+
// If this is the last virtual mouse binding on the
|
446 |
+
// element, remove the binding data from the element.
|
447 |
+
|
448 |
+
if ( !hasVirtualBindings( this ) ) {
|
449 |
+
$this.removeData( dataPropertyName );
|
450 |
+
}
|
451 |
+
}
|
452 |
+
};
|
453 |
+
}
|
454 |
+
|
455 |
+
// Expose our custom events to the jQuery bind/unbind mechanism.
|
456 |
+
|
457 |
+
for ( i = 0; i < virtualEventNames.length; i++ ) {
|
458 |
+
$.event.special[ virtualEventNames[ i ] ] = getSpecialEventObject( virtualEventNames[ i ] );
|
459 |
+
}
|
460 |
+
|
461 |
+
// Add a capture click handler to block clicks.
|
462 |
+
// Note that we require event capture support for this so if the device
|
463 |
+
// doesn't support it, we punt for now and rely solely on mouse events.
|
464 |
+
if ( eventCaptureSupported ) {
|
465 |
+
document.addEventListener( "click", function( e ) {
|
466 |
+
var cnt = clickBlockList.length,
|
467 |
+
target = e.target,
|
468 |
+
x, y, ele, i, o, touchID;
|
469 |
+
|
470 |
+
if ( cnt ) {
|
471 |
+
x = e.clientX;
|
472 |
+
y = e.clientY;
|
473 |
+
threshold = $.vmouse.clickDistanceThreshold;
|
474 |
+
|
475 |
+
// The idea here is to run through the clickBlockList to see if
|
476 |
+
// the current click event is in the proximity of one of our
|
477 |
+
// vclick events that had preventDefault() called on it. If we find
|
478 |
+
// one, then we block the click.
|
479 |
+
//
|
480 |
+
// Why do we have to rely on proximity?
|
481 |
+
//
|
482 |
+
// Because the target of the touch event that triggered the vclick
|
483 |
+
// can be different from the target of the click event synthesized
|
484 |
+
// by the browser. The target of a mouse/click event that is synthesized
|
485 |
+
// from a touch event seems to be implementation specific. For example,
|
486 |
+
// some browsers will fire mouse/click events for a link that is near
|
487 |
+
// a touch event, even though the target of the touchstart/touchend event
|
488 |
+
// says the user touched outside the link. Also, it seems that with most
|
489 |
+
// browsers, the target of the mouse/click event is not calculated until the
|
490 |
+
// time it is dispatched, so if you replace an element that you touched
|
491 |
+
// with another element, the target of the mouse/click will be the new
|
492 |
+
// element underneath that point.
|
493 |
+
//
|
494 |
+
// Aside from proximity, we also check to see if the target and any
|
495 |
+
// of its ancestors were the ones that blocked a click. This is necessary
|
496 |
+
// because of the strange mouse/click target calculation done in the
|
497 |
+
// Android 2.1 browser, where if you click on an element, and there is a
|
498 |
+
// mouse/click handler on one of its ancestors, the target will be the
|
499 |
+
// innermost child of the touched element, even if that child is no where
|
500 |
+
// near the point of touch.
|
501 |
+
|
502 |
+
ele = target;
|
503 |
+
|
504 |
+
while ( ele ) {
|
505 |
+
for ( i = 0; i < cnt; i++ ) {
|
506 |
+
o = clickBlockList[ i ];
|
507 |
+
touchID = 0;
|
508 |
+
|
509 |
+
if ( ( ele === target && Math.abs( o.x - x ) < threshold && Math.abs( o.y - y ) < threshold ) ||
|
510 |
+
$.data( ele, touchTargetPropertyName ) === o.touchID ) {
|
511 |
+
// XXX: We may want to consider removing matches from the block list
|
512 |
+
// instead of waiting for the reset timer to fire.
|
513 |
+
e.preventDefault();
|
514 |
+
e.stopPropagation();
|
515 |
+
return;
|
516 |
+
}
|
517 |
+
}
|
518 |
+
ele = ele.parentNode;
|
519 |
+
}
|
520 |
+
}
|
521 |
+
}, true);
|
522 |
+
}
|
523 |
+
})( jQuery, window, document );
|
524 |
+
|
525 |
+
(function( $ ) {
|
526 |
+
$.mobile = {};
|
527 |
+
}( jQuery ));
|
528 |
+
|
529 |
+
(function( $, undefined ) {
|
530 |
+
var support = {
|
531 |
+
touch: "ontouchend" in document
|
532 |
+
};
|
533 |
+
|
534 |
+
$.mobile.support = $.mobile.support || {};
|
535 |
+
$.extend( $.support, support );
|
536 |
+
$.extend( $.mobile.support, support );
|
537 |
+
}( jQuery ));
|
538 |
+
|
539 |
+
|
540 |
+
(function( $, window, undefined ) {
|
541 |
+
var $document = $( document ),
|
542 |
+
supportTouch = $.mobile.support.touch,
|
543 |
+
scrollEvent = "touchmove scroll",
|
544 |
+
touchStartEvent = supportTouch ? "touchstart" : "mousedown",
|
545 |
+
touchStopEvent = supportTouch ? "touchend" : "mouseup",
|
546 |
+
touchMoveEvent = supportTouch ? "touchmove" : "mousemove";
|
547 |
+
|
548 |
+
// setup new event shortcuts
|
549 |
+
$.each( ( "touchstart touchmove touchend " +
|
550 |
+
"tap taphold " +
|
551 |
+
"swipe swipeleft swiperight " +
|
552 |
+
"scrollstart scrollstop" ).split( " " ), function( i, name ) {
|
553 |
+
|
554 |
+
$.fn[ name ] = function( fn ) {
|
555 |
+
return fn ? this.bind( name, fn ) : this.trigger( name );
|
556 |
+
};
|
557 |
+
|
558 |
+
// jQuery < 1.8
|
559 |
+
if ( $.attrFn ) {
|
560 |
+
$.attrFn[ name ] = true;
|
561 |
+
}
|
562 |
+
});
|
563 |
+
|
564 |
+
function triggerCustomEvent( obj, eventType, event, bubble ) {
|
565 |
+
var originalType = event.type;
|
566 |
+
event.type = eventType;
|
567 |
+
if ( bubble ) {
|
568 |
+
$.event.trigger( event, undefined, obj );
|
569 |
+
} else {
|
570 |
+
$.event.dispatch.call( obj, event );
|
571 |
+
}
|
572 |
+
event.type = originalType;
|
573 |
+
}
|
574 |
+
|
575 |
+
// also handles scrollstop
|
576 |
+
$.event.special.scrollstart = {
|
577 |
+
|
578 |
+
enabled: true,
|
579 |
+
setup: function() {
|
580 |
+
|
581 |
+
var thisObject = this,
|
582 |
+
$this = $( thisObject ),
|
583 |
+
scrolling,
|
584 |
+
timer;
|
585 |
+
|
586 |
+
function trigger( event, state ) {
|
587 |
+
scrolling = state;
|
588 |
+
triggerCustomEvent( thisObject, scrolling ? "scrollstart" : "scrollstop", event );
|
589 |
+
}
|
590 |
+
|
591 |
+
// iPhone triggers scroll after a small delay; use touchmove instead
|
592 |
+
$this.bind( scrollEvent, function( event ) {
|
593 |
+
|
594 |
+
if ( !$.event.special.scrollstart.enabled ) {
|
595 |
+
return;
|
596 |
+
}
|
597 |
+
|
598 |
+
if ( !scrolling ) {
|
599 |
+
trigger( event, true );
|
600 |
+
}
|
601 |
+
|
602 |
+
clearTimeout( timer );
|
603 |
+
timer = setTimeout( function() {
|
604 |
+
trigger( event, false );
|
605 |
+
}, 50 );
|
606 |
+
});
|
607 |
+
},
|
608 |
+
teardown: function() {
|
609 |
+
$( this ).unbind( scrollEvent );
|
610 |
+
}
|
611 |
+
};
|
612 |
+
|
613 |
+
// also handles taphold
|
614 |
+
$.event.special.tap = {
|
615 |
+
tapholdThreshold: 750,
|
616 |
+
emitTapOnTaphold: true,
|
617 |
+
setup: function() {
|
618 |
+
var thisObject = this,
|
619 |
+
$this = $( thisObject ),
|
620 |
+
isTaphold = false;
|
621 |
+
|
622 |
+
$this.bind( "vmousedown", function( event ) {
|
623 |
+
isTaphold = false;
|
624 |
+
if ( event.which && event.which !== 1 ) {
|
625 |
+
return false;
|
626 |
+
}
|
627 |
+
|
628 |
+
var origTarget = event.target,
|
629 |
+
timer;
|
630 |
+
|
631 |
+
function clearTapTimer() {
|
632 |
+
clearTimeout( timer );
|
633 |
+
}
|
634 |
+
|
635 |
+
function clearTapHandlers() {
|
636 |
+
clearTapTimer();
|
637 |
+
|
638 |
+
$this.unbind( "vclick", clickHandler )
|
639 |
+
.unbind( "vmouseup", clearTapTimer );
|
640 |
+
$document.unbind( "vmousecancel", clearTapHandlers );
|
641 |
+
}
|
642 |
+
|
643 |
+
function clickHandler( event ) {
|
644 |
+
clearTapHandlers();
|
645 |
+
|
646 |
+
// ONLY trigger a 'tap' event if the start target is
|
647 |
+
// the same as the stop target.
|
648 |
+
if ( !isTaphold && origTarget === event.target ) {
|
649 |
+
triggerCustomEvent( thisObject, "tap", event );
|
650 |
+
} else if ( isTaphold ) {
|
651 |
+
event.preventDefault();
|
652 |
+
}
|
653 |
+
}
|
654 |
+
|
655 |
+
$this.bind( "vmouseup", clearTapTimer )
|
656 |
+
.bind( "vclick", clickHandler );
|
657 |
+
$document.bind( "vmousecancel", clearTapHandlers );
|
658 |
+
|
659 |
+
timer = setTimeout( function() {
|
660 |
+
if ( !$.event.special.tap.emitTapOnTaphold ) {
|
661 |
+
isTaphold = true;
|
662 |
+
}
|
663 |
+
triggerCustomEvent( thisObject, "taphold", $.Event( "taphold", { target: origTarget } ) );
|
664 |
+
}, $.event.special.tap.tapholdThreshold );
|
665 |
+
});
|
666 |
+
},
|
667 |
+
teardown: function() {
|
668 |
+
$( this ).unbind( "vmousedown" ).unbind( "vclick" ).unbind( "vmouseup" );
|
669 |
+
$document.unbind( "vmousecancel" );
|
670 |
+
}
|
671 |
+
};
|
672 |
+
|
673 |
+
// Also handles swipeleft, swiperight
|
674 |
+
$.event.special.swipe = {
|
675 |
+
|
676 |
+
// More than this horizontal displacement, and we will suppress scrolling.
|
677 |
+
scrollSupressionThreshold: 30,
|
678 |
+
|
679 |
+
// More time than this, and it isn't a swipe.
|
680 |
+
durationThreshold: 1000,
|
681 |
+
|
682 |
+
// Swipe horizontal displacement must be more than this.
|
683 |
+
horizontalDistanceThreshold: 30,
|
684 |
+
|
685 |
+
// Swipe vertical displacement must be less than this.
|
686 |
+
verticalDistanceThreshold: 30,
|
687 |
+
|
688 |
+
getLocation: function ( event ) {
|
689 |
+
var winPageX = window.pageXOffset,
|
690 |
+
winPageY = window.pageYOffset,
|
691 |
+
x = event.clientX,
|
692 |
+
y = event.clientY;
|
693 |
+
|
694 |
+
if ( event.pageY === 0 && Math.floor( y ) > Math.floor( event.pageY ) ||
|
695 |
+
event.pageX === 0 && Math.floor( x ) > Math.floor( event.pageX ) ) {
|
696 |
+
|
697 |
+
// iOS4 clientX/clientY have the value that should have been
|
698 |
+
// in pageX/pageY. While pageX/page/ have the value 0
|
699 |
+
x = x - winPageX;
|
700 |
+
y = y - winPageY;
|
701 |
+
} else if ( y < ( event.pageY - winPageY) || x < ( event.pageX - winPageX ) ) {
|
702 |
+
|
703 |
+
// Some Android browsers have totally bogus values for clientX/Y
|
704 |
+
// when scrolling/zooming a page. Detectable since clientX/clientY
|
705 |
+
// should never be smaller than pageX/pageY minus page scroll
|
706 |
+
x = event.pageX - winPageX;
|
707 |
+
y = event.pageY - winPageY;
|
708 |
+
}
|
709 |
+
|
710 |
+
return {
|
711 |
+
x: x,
|
712 |
+
y: y
|
713 |
+
};
|
714 |
+
},
|
715 |
+
|
716 |
+
start: function( event ) {
|
717 |
+
var data = event.originalEvent.touches ?
|
718 |
+
event.originalEvent.touches[ 0 ] : event,
|
719 |
+
location = $.event.special.swipe.getLocation( data );
|
720 |
+
return {
|
721 |
+
time: ( new Date() ).getTime(),
|
722 |
+
coords: [ location.x, location.y ],
|
723 |
+
origin: $( event.target )
|
724 |
+
};
|
725 |
+
},
|
726 |
+
|
727 |
+
stop: function( event ) {
|
728 |
+
var data = event.originalEvent.touches ?
|
729 |
+
event.originalEvent.touches[ 0 ] : event,
|
730 |
+
location = $.event.special.swipe.getLocation( data );
|
731 |
+
return {
|
732 |
+
time: ( new Date() ).getTime(),
|
733 |
+
coords: [ location.x, location.y ]
|
734 |
+
};
|
735 |
+
},
|
736 |
+
|
737 |
+
handleSwipe: function( start, stop, thisObject, origTarget ) {
|
738 |
+
if ( stop.time - start.time < $.event.special.swipe.durationThreshold &&
|
739 |
+
Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.horizontalDistanceThreshold &&
|
740 |
+
Math.abs( start.coords[ 1 ] - stop.coords[ 1 ] ) < $.event.special.swipe.verticalDistanceThreshold ) {
|
741 |
+
var direction = start.coords[0] > stop.coords[ 0 ] ? "swipeleft" : "swiperight";
|
742 |
+
|
743 |
+
triggerCustomEvent( thisObject, "swipe", $.Event( "swipe", { target: origTarget, swipestart: start, swipestop: stop }), true );
|
744 |
+
triggerCustomEvent( thisObject, direction,$.Event( direction, { target: origTarget, swipestart: start, swipestop: stop } ), true );
|
745 |
+
return true;
|
746 |
+
}
|
747 |
+
return false;
|
748 |
+
|
749 |
+
},
|
750 |
+
|
751 |
+
// This serves as a flag to ensure that at most one swipe event event is
|
752 |
+
// in work at any given time
|
753 |
+
eventInProgress: false,
|
754 |
+
|
755 |
+
setup: function() {
|
756 |
+
var events,
|
757 |
+
thisObject = this,
|
758 |
+
$this = $( thisObject ),
|
759 |
+
context = {};
|
760 |
+
|
761 |
+
// Retrieve the events data for this element and add the swipe context
|
762 |
+
events = $.data( this, "mobile-events" );
|
763 |
+
if ( !events ) {
|
764 |
+
events = { length: 0 };
|
765 |
+
$.data( this, "mobile-events", events );
|
766 |
+
}
|
767 |
+
events.length++;
|
768 |
+
events.swipe = context;
|
769 |
+
|
770 |
+
context.start = function( event ) {
|
771 |
+
|
772 |
+
// Bail if we're already working on a swipe event
|
773 |
+
if ( $.event.special.swipe.eventInProgress ) {
|
774 |
+
return;
|
775 |
+
}
|
776 |
+
$.event.special.swipe.eventInProgress = true;
|
777 |
+
|
778 |
+
var stop,
|
779 |
+
start = $.event.special.swipe.start( event ),
|
780 |
+
origTarget = event.target,
|
781 |
+
emitted = false;
|
782 |
+
|
783 |
+
context.move = function( event ) {
|
784 |
+
if ( !start || event.isDefaultPrevented() ) {
|
785 |
+
return;
|
786 |
+
}
|
787 |
+
|
788 |
+
stop = $.event.special.swipe.stop( event );
|
789 |
+
if ( !emitted ) {
|
790 |
+
emitted = $.event.special.swipe.handleSwipe( start, stop, thisObject, origTarget );
|
791 |
+
if ( emitted ) {
|
792 |
+
|
793 |
+
// Reset the context to make way for the next swipe event
|
794 |
+
$.event.special.swipe.eventInProgress = false;
|
795 |
+
}
|
796 |
+
}
|
797 |
+
// prevent scrolling
|
798 |
+
if ( Math.abs( start.coords[ 0 ] - stop.coords[ 0 ] ) > $.event.special.swipe.scrollSupressionThreshold ) {
|
799 |
+
event.preventDefault();
|
800 |
+
}
|
801 |
+
};
|
802 |
+
|
803 |
+
context.stop = function() {
|
804 |
+
emitted = true;
|
805 |
+
|
806 |
+
// Reset the context to make way for the next swipe event
|
807 |
+
$.event.special.swipe.eventInProgress = false;
|
808 |
+
$document.off( touchMoveEvent, context.move );
|
809 |
+
context.move = null;
|
810 |
+
};
|
811 |
+
|
812 |
+
$document.on( touchMoveEvent, context.move )
|
813 |
+
.one( touchStopEvent, context.stop );
|
814 |
+
};
|
815 |
+
$this.on( touchStartEvent, context.start );
|
816 |
+
},
|
817 |
+
|
818 |
+
teardown: function() {
|
819 |
+
var events, context;
|
820 |
+
|
821 |
+
events = $.data( this, "mobile-events" );
|
822 |
+
if ( events ) {
|
823 |
+
context = events.swipe;
|
824 |
+
delete events.swipe;
|
825 |
+
events.length--;
|
826 |
+
if ( events.length === 0 ) {
|
827 |
+
$.removeData( this, "mobile-events" );
|
828 |
+
}
|
829 |
+
}
|
830 |
+
|
831 |
+
if ( context ) {
|
832 |
+
if ( context.start ) {
|
833 |
+
$( this ).off( touchStartEvent, context.start );
|
834 |
+
}
|
835 |
+
if ( context.move ) {
|
836 |
+
$document.off( touchMoveEvent, context.move );
|
837 |
+
}
|
838 |
+
if ( context.stop ) {
|
839 |
+
$document.off( touchStopEvent, context.stop );
|
840 |
+
}
|
841 |
+
}
|
842 |
+
}
|
843 |
+
};
|
844 |
+
$.each({
|
845 |
+
scrollstop: "scrollstart",
|
846 |
+
taphold: "tap",
|
847 |
+
swipeleft: "swipe.left",
|
848 |
+
swiperight: "swipe.right"
|
849 |
+
}, function( event, sourceEvent ) {
|
850 |
+
|
851 |
+
$.event.special[ event ] = {
|
852 |
+
setup: function() {
|
853 |
+
$( this ).bind( sourceEvent, $.noop );
|
854 |
+
},
|
855 |
+
teardown: function() {
|
856 |
+
$( this ).unbind( sourceEvent );
|
857 |
+
}
|
858 |
+
};
|
859 |
+
});
|
860 |
+
|
861 |
+
})( jQuery, this );
|
862 |
+
|
863 |
+
|
864 |
+
}));
|
resources/jquery.mobile.custom.min.js
ADDED
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
1 |
+
/*! jQuery Mobile v1.4.5 | Copyright 2010, 2014 jQuery Foundation, Inc. | jquery.org/license */
|
2 |
+
|
3 |
+
(function(e,t,n){typeof define=="function"&&define.amd?define(["jquery"],function(r){return n(r,e,t),r.mobile}):n(e.jQuery,e,t)})(this,document,function(e,t,n,r){(function(e,t,n,r){function T(e){while(e&&typeof e.originalEvent!="undefined")e=e.originalEvent;return e}function N(t,n){var i=t.type,s,o,a,l,c,h,p,d,v;t=e.Event(t),t.type=n,s=t.originalEvent,o=e.event.props,i.search(/^(mouse|click)/)>-1&&(o=f);if(s)for(p=o.length,l;p;)l=o[--p],t[l]=s[l];i.search(/mouse(down|up)|click/)>-1&&!t.which&&(t.which=1);if(i.search(/^touch/)!==-1){a=T(s),i=a.touches,c=a.changedTouches,h=i&&i.length?i[0]:c&&c.length?c[0]:r;if(h)for(d=0,v=u.length;d<v;d++)l=u[d],t[l]=h[l]}return t}function C(t){var n={},r,s;while(t){r=e.data(t,i);for(s in r)r[s]&&(n[s]=n.hasVirtualBinding=!0);t=t.parentNode}return n}function k(t,n){var r;while(t){r=e.data(t,i);if(r&&(!n||r[n]))return t;t=t.parentNode}return null}function L(){g=!1}function A(){g=!0}function O(){E=0,v.length=0,m=!1,A()}function M(){L()}function _(){D(),c=setTimeout(function(){c=0,O()},e.vmouse.resetTimerDuration)}function D(){c&&(clearTimeout(c),c=0)}function P(t,n,r){var i;if(r&&r[t]||!r&&k(n.target,t))i=N(n,t),e(n.target).trigger(i);return i}function H(t){var n=e.data(t.target,s),r;!m&&(!E||E!==n)&&(r=P("v"+t.type,t),r&&(r.isDefaultPrevented()&&t.preventDefault(),r.isPropagationStopped()&&t.stopPropagation(),r.isImmediatePropagationStopped()&&t.stopImmediatePropagation()))}function B(t){var n=T(t).touches,r,i,o;n&&n.length===1&&(r=t.target,i=C(r),i.hasVirtualBinding&&(E=w++,e.data(r,s,E),D(),M(),d=!1,o=T(t).touches[0],h=o.pageX,p=o.pageY,P("vmouseover",t,i),P("vmousedown",t,i)))}function j(e){if(g)return;d||P("vmousecancel",e,C(e.target)),d=!0,_()}function F(t){if(g)return;var n=T(t).touches[0],r=d,i=e.vmouse.moveDistanceThreshold,s=C(t.target);d=d||Math.abs(n.pageX-h)>i||Math.abs(n.pageY-p)>i,d&&!r&&P("vmousecancel",t,s),P("vmousemove",t,s),_()}function I(e){if(g)return;A();var t=C(e.target),n,r;P("vmouseup",e,t),d||(n=P("vclick",e,t),n&&n.isDefaultPrevented()&&(r=T(e).changedTouches[0],v.push({touchID:E,x:r.clientX,y:r.clientY}),m=!0)),P("vmouseout",e,t),d=!1,_()}function q(t){var n=e.data(t,i),r;if(n)for(r in n)if(n[r])return!0;return!1}function R(){}function U(t){var n=t.substr(1);return{setup:function(){q(this)||e.data(this,i,{});var r=e.data(this,i);r[t]=!0,l[t]=(l[t]||0)+1,l[t]===1&&b.bind(n,H),e(this).bind(n,R),y&&(l.touchstart=(l.touchstart||0)+1,l.touchstart===1&&b.bind("touchstart",B).bind("touchend",I).bind("touchmove",F).bind("scroll",j))},teardown:function(){--l[t],l[t]||b.unbind(n,H),y&&(--l.touchstart,l.touchstart||b.unbind("touchstart",B).unbind("touchmove",F).unbind("touchend",I).unbind("scroll",j));var r=e(this),s=e.data(this,i);s&&(s[t]=!1),r.unbind(n,R),q(this)||r.removeData(i)}}}var i="virtualMouseBindings",s="virtualTouchID",o="vmouseover vmousedown vmousemove vmouseup vclick vmouseout vmousecancel".split(" "),u="clientX clientY pageX pageY screenX screenY".split(" "),a=e.event.mouseHooks?e.event.mouseHooks.props:[],f=e.event.props.concat(a),l={},c=0,h=0,p=0,d=!1,v=[],m=!1,g=!1,y="addEventListener"in n,b=e(n),w=1,E=0,S,x;e.vmouse={moveDistanceThreshold:10,clickDistanceThreshold:10,resetTimerDuration:1500};for(x=0;x<o.length;x++)e.event.special[o[x]]=U(o[x]);y&&n.addEventListener("click",function(t){var n=v.length,r=t.target,i,o,u,a,f,l;if(n){i=t.clientX,o=t.clientY,S=e.vmouse.clickDistanceThreshold,u=r;while(u){for(a=0;a<n;a++){f=v[a],l=0;if(u===r&&Math.abs(f.x-i)<S&&Math.abs(f.y-o)<S||e.data(u,s)===f.touchID){t.preventDefault(),t.stopPropagation();return}}u=u.parentNode}}},!0)})(e,t,n),function(e){e.mobile={}}(e),function(e,t){var r={touch:"ontouchend"in n};e.mobile.support=e.mobile.support||{},e.extend(e.support,r),e.extend(e.mobile.support,r)}(e),function(e,t,r){function l(t,n,i,s){var o=i.type;i.type=n,s?e.event.trigger(i,r,t):e.event.dispatch.call(t,i),i.type=o}var i=e(n),s=e.mobile.support.touch,o="touchmove scroll",u=s?"touchstart":"mousedown",a=s?"touchend":"mouseup",f=s?"touchmove":"mousemove";e.each("touchstart touchmove touchend tap taphold swipe swipeleft swiperight scrollstart scrollstop".split(" "),function(t,n){e.fn[n]=function(e){return e?this.bind(n,e):this.trigger(n)},e.attrFn&&(e.attrFn[n]=!0)}),e.event.special.scrollstart={enabled:!0,setup:function(){function s(e,n){r=n,l(t,r?"scrollstart":"scrollstop",e)}var t=this,n=e(t),r,i;n.bind(o,function(t){if(!e.event.special.scrollstart.enabled)return;r||s(t,!0),clearTimeout(i),i=setTimeout(function(){s(t,!1)},50)})},teardown:function(){e(this).unbind(o)}},e.event.special.tap={tapholdThreshold:750,emitTapOnTaphold:!0,setup:function(){var t=this,n=e(t),r=!1;n.bind("vmousedown",function(s){function a(){clearTimeout(u)}function f(){a(),n.unbind("vclick",c).unbind("vmouseup",a),i.unbind("vmousecancel",f)}function c(e){f(),!r&&o===e.target?l(t,"tap",e):r&&e.preventDefault()}r=!1;if(s.which&&s.which!==1)return!1;var o=s.target,u;n.bind("vmouseup",a).bind("vclick",c),i.bind("vmousecancel",f),u=setTimeout(function(){e.event.special.tap.emitTapOnTaphold||(r=!0),l(t,"taphold",e.Event("taphold",{target:o}))},e.event.special.tap.tapholdThreshold)})},teardown:function(){e(this).unbind("vmousedown").unbind("vclick").unbind("vmouseup"),i.unbind("vmousecancel")}},e.event.special.swipe={scrollSupressionThreshold:30,durationThreshold:1e3,horizontalDistanceThreshold:30,verticalDistanceThreshold:30,getLocation:function(e){var n=t.pageXOffset,r=t.pageYOffset,i=e.clientX,s=e.clientY;if(e.pageY===0&&Math.floor(s)>Math.floor(e.pageY)||e.pageX===0&&Math.floor(i)>Math.floor(e.pageX))i-=n,s-=r;else if(s<e.pageY-r||i<e.pageX-n)i=e.pageX-n,s=e.pageY-r;return{x:i,y:s}},start:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y],origin:e(t.target)}},stop:function(t){var n=t.originalEvent.touches?t.originalEvent.touches[0]:t,r=e.event.special.swipe.getLocation(n);return{time:(new Date).getTime(),coords:[r.x,r.y]}},handleSwipe:function(t,n,r,i){if(n.time-t.time<e.event.special.swipe.durationThreshold&&Math.abs(t.coords[0]-n.coords[0])>e.event.special.swipe.horizontalDistanceThreshold&&Math.abs(t.coords[1]-n.coords[1])<e.event.special.swipe.verticalDistanceThreshold){var s=t.coords[0]>n.coords[0]?"swipeleft":"swiperight";return l(r,"swipe",e.Event("swipe",{target:i,swipestart:t,swipestop:n}),!0),l(r,s,e.Event(s,{target:i,swipestart:t,swipestop:n}),!0),!0}return!1},eventInProgress:!1,setup:function(){var t,n=this,r=e(n),s={};t=e.data(this,"mobile-events"),t||(t={length:0},e.data(this,"mobile-events",t)),t.length++,t.swipe=s,s.start=function(t){if(e.event.special.swipe.eventInProgress)return;e.event.special.swipe.eventInProgress=!0;var r,o=e.event.special.swipe.start(t),u=t.target,l=!1;s.move=function(t){if(!o||t.isDefaultPrevented())return;r=e.event.special.swipe.stop(t),l||(l=e.event.special.swipe.handleSwipe(o,r,n,u),l&&(e.event.special.swipe.eventInProgress=!1)),Math.abs(o.coords[0]-r.coords[0])>e.event.special.swipe.scrollSupressionThreshold&&t.preventDefault()},s.stop=function(){l=!0,e.event.special.swipe.eventInProgress=!1,i.off(f,s.move),s.move=null},i.on(f,s.move).one(a,s.stop)},r.on(u,s.start)},teardown:function(){var t,n;t=e.data(this,"mobile-events"),t&&(n=t.swipe,delete t.swipe,t.length--,t.length===0&&e.removeData(this,"mobile-events")),n&&(n.start&&e(this).off(u,n.start),n.move&&i.off(f,n.move),n.stop&&i.off(a,n.stop))}},e.each({scrollstop:"scrollstart",taphold:"tap",swipeleft:"swipe.left",swiperight:"swipe.right"},function(t,n){e.event.special[t]={setup:function(){e(this).bind(n,e.noop)},teardown:function(){e(this).unbind(n)}}})}(e,this)});
|
resources/mce-button.css
ADDED
@@ -0,0 +1,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*i.mce-i-serious_slider:before {
|
2 |
+
font-family: "dashicons";
|
3 |
+
content: "\f116";
|
4 |
+
}*/
|
5 |
+
|
6 |
+
i.mce-i-serious_slider {
|
7 |
+
background: #FFF url(images/serious-slider-editor-icon.png) no-repeat;
|
8 |
+
}
|
resources/mce-button.js
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
|
2 |
+
function cryout_serious_slider_getsliders() {
|
3 |
+
output = [ {text: CRYOUT_MCE_LOCALIZED.text_retrieving_sliders, value: '0'} ]
|
4 |
+
|
5 |
+
jQuery.ajax(
|
6 |
+
cryout_serious_slider_ajax.ajaxurl,
|
7 |
+
{ 'method': 'POST', 'data' : { 'action': 'cryout_serious_slider_ajax' }, async: false, dataType: 'json',
|
8 |
+
'success': function( data ) {
|
9 |
+
output = data;
|
10 |
+
} }
|
11 |
+
).fail(function() {
|
12 |
+
output = [ {text: CRYOUT_MCE_LOCALIZED.text_retrieving_sliders_error, value: '0'} ]
|
13 |
+
});
|
14 |
+
return output;
|
15 |
+
}
|
16 |
+
|
17 |
+
(function() {
|
18 |
+
tinymce.PluginManager.add('serious_slider', function( editor, url ) {
|
19 |
+
var sh_tag = 'serious-slider';
|
20 |
+
|
21 |
+
//helper functions
|
22 |
+
function getAttr(s, n) {
|
23 |
+
n = new RegExp(n + '=\"([^\"]+)\"', 'g').exec(s);
|
24 |
+
return n ? window.decodeURIComponent(n[1]) : '';
|
25 |
+
};
|
26 |
+
|
27 |
+
function html( cls, data ,con) {
|
28 |
+
var placeholder = url + '/img/' + getAttr(data,'type') + '.jpg';
|
29 |
+
data = window.encodeURIComponent( data );
|
30 |
+
content = window.encodeURIComponent( con );
|
31 |
+
|
32 |
+
return '<img src="' + placeholder + '" class="mceItem ' + cls + '" ' + 'data-sh-attr="' + data + '" data-sh-content="'+ con+'" data-mce-resize="false" data-mce-placeholder="1" />';
|
33 |
+
}
|
34 |
+
|
35 |
+
function replaceShortcodes( content ) {
|
36 |
+
return content.replace( /\[serious_slider([^\]]*)\]([^\]]*)\[\/serious_slider\]/g, function( all,attr,con) {
|
37 |
+
return html( 'wp-serious_slider', attr , con);
|
38 |
+
});
|
39 |
+
}
|
40 |
+
|
41 |
+
function restoreShortcodes( content ) {
|
42 |
+
return content.replace( /(?:<p(?: [^>]+)?>)*(<img [^>]+>)(?:<\/p>)*/g, function( match, image ) {
|
43 |
+
var data = getAttr( image, 'data-sh-attr' );
|
44 |
+
var con = getAttr( image, 'data-sh-content' );
|
45 |
+
|
46 |
+
if ( data ) {
|
47 |
+
return '<p>[' + sh_tag + data + ']' + con + '[/'+sh_tag+']</p>';
|
48 |
+
}
|
49 |
+
return match;
|
50 |
+
});
|
51 |
+
}
|
52 |
+
|
53 |
+
//add popup
|
54 |
+
editor.addCommand('serious_slider_popup', function(ui, v) {
|
55 |
+
|
56 |
+
//setup defaults
|
57 |
+
var sid = '0'; if (v.sid) sid = v.sid;
|
58 |
+
|
59 |
+
editor.windowManager.open( {
|
60 |
+
title: CRYOUT_MCE_LOCALIZED.text_serious_slider,
|
61 |
+
width: 500,
|
62 |
+
height: 150,
|
63 |
+
// style: 'padding: 2em',
|
64 |
+
buttons: [{
|
65 |
+
text: CRYOUT_MCE_LOCALIZED.text_insert_slider,
|
66 |
+
classes: 'widget btn primary first',
|
67 |
+
style: 'width: 150px',
|
68 |
+
onclick: 'submit'
|
69 |
+
},
|
70 |
+
{
|
71 |
+
text: CRYOUT_MCE_LOCALIZED.text_cancel,
|
72 |
+
classes: 'widget btn',
|
73 |
+
onclick: 'close'
|
74 |
+
}],
|
75 |
+
body: [
|
76 |
+
{
|
77 |
+
type: 'listbox',
|
78 |
+
name: 'sid',
|
79 |
+
label: CRYOUT_MCE_LOCALIZED.text_select_slider,
|
80 |
+
value: sid,
|
81 |
+
'values': cryout_serious_slider_getsliders(),
|
82 |
+
tooltip: ''
|
83 |
+
},
|
84 |
+
|
85 |
+
],
|
86 |
+
onsubmit: function( e ) {
|
87 |
+
var shortcode_str = '[' + sh_tag;
|
88 |
+
|
89 |
+
if ( typeof e.data.sid != 'undefined')
|
90 |
+
shortcode_str += ' id="' + e.data.sid + '"';
|
91 |
+
shortcode_str += ']';
|
92 |
+
|
93 |
+
//insert shortcode to tinymce
|
94 |
+
editor.insertContent( shortcode_str);
|
95 |
+
}
|
96 |
+
});
|
97 |
+
});
|
98 |
+
|
99 |
+
//add button
|
100 |
+
editor.addButton('serious_slider', {
|
101 |
+
title: CRYOUT_MCE_LOCALIZED.text_add_slider,
|
102 |
+
icon: 'serious_slider',
|
103 |
+
tooltip: CRYOUT_MCE_LOCALIZED.text_serious_slider_tooltip,
|
104 |
+
onclick: function() {
|
105 |
+
editor.execCommand('serious_slider_popup','',{
|
106 |
+
});
|
107 |
+
}
|
108 |
+
});
|
109 |
+
|
110 |
+
/*//replace from shortcode to an image placeholder
|
111 |
+
editor.on('BeforeSetcontent', function(event){
|
112 |
+
event.content = replaceShortcodes( event.content );
|
113 |
+
});
|
114 |
+
|
115 |
+
//replace from image placeholder to shortcode
|
116 |
+
editor.on('GetContent', function(event){
|
117 |
+
event.content = restoreShortcodes(event.content);
|
118 |
+
});
|
119 |
+
|
120 |
+
//open popup on placeholder double click
|
121 |
+
editor.on('DblClick',function(e) {
|
122 |
+
var cls = e.target.className.indexOf('wp-serious_slider');
|
123 |
+
if ( e.target.nodeName == 'IMG' && e.target.className.indexOf('wp-serious_slider') > -1 ) {
|
124 |
+
var title = e.target.attributes['data-sh-attr'].value;
|
125 |
+
title = window.decodeURIComponent(title);
|
126 |
+
console.log(title);
|
127 |
+
var content = e.target.attributes['data-sh-content'].value;
|
128 |
+
editor.execCommand('serious_slider_popup','',{
|
129 |
+
header : getAttr(title,'header'),
|
130 |
+
footer : getAttr(title,'footer'),
|
131 |
+
type : getAttr(title,'type'),
|
132 |
+
content: content
|
133 |
+
});
|
134 |
+
}
|
135 |
+
}); */
|
136 |
+
});
|
137 |
+
})();
|
resources/slider.js
ADDED
@@ -0,0 +1,332 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap v3.3.6 (http://getbootstrap.com)
|
3 |
+
* Copyright 2011-2015 Twitter, Inc.
|
4 |
+
* Licensed under the MIT license
|
5 |
+
*/
|
6 |
+
|
7 |
+
if (typeof jQuery === 'undefined') {
|
8 |
+
throw new Error('Bootstrap\'s JavaScript requires jQuery')
|
9 |
+
}
|
10 |
+
|
11 |
+
+function ($) {
|
12 |
+
'use strict';
|
13 |
+
var version = $.fn.jquery.split(' ')[0].split('.')
|
14 |
+
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {
|
15 |
+
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')
|
16 |
+
}
|
17 |
+
}(jQuery);
|
18 |
+
|
19 |
+
/* ========================================================================
|
20 |
+
* Bootstrap: transition.js v3.3.6
|
21 |
+
* http://getbootstrap.com/javascript/#transitions
|
22 |
+
* ========================================================================
|
23 |
+
* Copyright 2011-2015 Twitter, Inc.
|
24 |
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
25 |
+
* ======================================================================== */
|
26 |
+
|
27 |
+
|
28 |
+
+function ($) {
|
29 |
+
'use strict';
|
30 |
+
|
31 |
+
// CSS TRANSITION SUPPORT (Shoutout: http://www.modernizr.com/)
|
32 |
+
// ============================================================
|
33 |
+
|
34 |
+
function transitionEnd() {
|
35 |
+
var el = document.createElement('bootstrap')
|
36 |
+
|
37 |
+
var transEndEventNames = {
|
38 |
+
WebkitTransition : 'webkitTransitionEnd',
|
39 |
+
MozTransition : 'transitionend',
|
40 |
+
OTransition : 'oTransitionEnd otransitionend',
|
41 |
+
transition : 'transitionend'
|
42 |
+
}
|
43 |
+
|
44 |
+
for (var name in transEndEventNames) {
|
45 |
+
if (el.style[name] !== undefined) {
|
46 |
+
return { end: transEndEventNames[name] }
|
47 |
+
}
|
48 |
+
}
|
49 |
+
|
50 |
+
return false // explicit for ie8 (._.)
|
51 |
+
}
|
52 |
+
|
53 |
+
// http://blog.alexmaccaw.com/css-transitions
|
54 |
+
$.fn.emulateTransitionEnd = function (duration) {
|
55 |
+
var called = false
|
56 |
+
var $el = this
|
57 |
+
$(this).one('bsTransitionEnd', function () { called = true })
|
58 |
+
var callback = function () { if (!called) $($el).trigger($.support.transition.end) }
|
59 |
+
setTimeout(callback, duration)
|
60 |
+
return this
|
61 |
+
}
|
62 |
+
|
63 |
+
$(function () {
|
64 |
+
$.support.transition = transitionEnd()
|
65 |
+
|
66 |
+
if (!$.support.transition) return
|
67 |
+
|
68 |
+
$.event.special.bsTransitionEnd = {
|
69 |
+
bindType: $.support.transition.end,
|
70 |
+
delegateType: $.support.transition.end,
|
71 |
+
handle: function (e) {
|
72 |
+
if ($(e.target).is(this)) return e.handleObj.handler.apply(this, arguments)
|
73 |
+
}
|
74 |
+
}
|
75 |
+
})
|
76 |
+
|
77 |
+
}(jQuery);
|
78 |
+
|
79 |
+
|
80 |
+
|
81 |
+
/* ========================================================================
|
82 |
+
* Bootstrap: carousel.js v3.3.6
|
83 |
+
* http://getbootstrap.com/javascript/#carousel
|
84 |
+
* ========================================================================
|
85 |
+
* Copyright 2011-2015 Twitter, Inc.
|
86 |
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
87 |
+
* ======================================================================== */
|
88 |
+
|
89 |
+
|
90 |
+
+function ($) {
|
91 |
+
'use strict';
|
92 |
+
|
93 |
+
// CAROUSEL CLASS DEFINITION
|
94 |
+
// =========================
|
95 |
+
|
96 |
+
var Carousel = function (element, options) {
|
97 |
+
this.$element = $(element)
|
98 |
+
this.$indicators = this.$element.find('.seriousslider-indicators')
|
99 |
+
this.options = options
|
100 |
+
this.paused = null
|
101 |
+
this.sliding = null
|
102 |
+
this.interval = null
|
103 |
+
this.$active = null
|
104 |
+
this.$items = null
|
105 |
+
|
106 |
+
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
|
107 |
+
|
108 |
+
this.options.pause == 'hover' && !('ontouchstart' in document.documentElement) && this.$element
|
109 |
+
.on('mouseenter.bs.carousel', $.proxy(this.pause, this))
|
110 |
+
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
|
111 |
+
}
|
112 |
+
|
113 |
+
Carousel.VERSION = '3.3.6'
|
114 |
+
|
115 |
+
Carousel.DEFAULTS = {
|
116 |
+
interval: 5000,
|
117 |
+
stransition: 600,
|
118 |
+
pause: 'hover',
|
119 |
+
wrap: true,
|
120 |
+
keyboard: true
|
121 |
+
}
|
122 |
+
|
123 |
+
|
124 |
+
Carousel.prototype.keydown = function (e) {
|
125 |
+
if (/input|textarea/i.test(e.target.tagName)) return
|
126 |
+
switch (e.which) {
|
127 |
+
case 37: this.prev(); break
|
128 |
+
case 39: this.next(); break
|
129 |
+
default: return
|
130 |
+
}
|
131 |
+
|
132 |
+
e.preventDefault()
|
133 |
+
}
|
134 |
+
|
135 |
+
Carousel.prototype.cycle = function (e) {
|
136 |
+
e || (this.paused = false)
|
137 |
+
|
138 |
+
this.interval && clearInterval(this.interval)
|
139 |
+
|
140 |
+
this.options.interval
|
141 |
+
&& !this.paused
|
142 |
+
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
|
143 |
+
|
144 |
+
return this
|
145 |
+
}
|
146 |
+
|
147 |
+
Carousel.prototype.getItemIndex = function (item) {
|
148 |
+
this.$items = item.parent().children('.item')
|
149 |
+
return this.$items.index(item || this.$active)
|
150 |
+
}
|
151 |
+
|
152 |
+
Carousel.prototype.getItemForDirection = function (direction, active) {
|
153 |
+
var activeIndex = this.getItemIndex(active)
|
154 |
+
var willWrap = (direction == 'prev' && activeIndex === 0)
|
155 |
+
|| (direction == 'next' && activeIndex == (this.$items.length - 1))
|
156 |
+
if (willWrap && !this.options.wrap) return active
|
157 |
+
var delta = direction == 'prev' ? -1 : 1
|
158 |
+
var itemIndex = (activeIndex + delta) % this.$items.length
|
159 |
+
return this.$items.eq(itemIndex)
|
160 |
+
}
|
161 |
+
|
162 |
+
Carousel.prototype.to = function (pos) {
|
163 |
+
var that = this
|
164 |
+
var activeIndex = this.getItemIndex(this.$active = this.$element.find('.item.active'))
|
165 |
+
|
166 |
+
if (pos > (this.$items.length - 1) || pos < 0) return
|
167 |
+
|
168 |
+
if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) }) // yes, "slid"
|
169 |
+
if (activeIndex == pos) return this.pause().cycle()
|
170 |
+
|
171 |
+
return this.slide(pos > activeIndex ? 'next' : 'prev', this.$items.eq(pos))
|
172 |
+
}
|
173 |
+
|
174 |
+
Carousel.prototype.pause = function (e) {
|
175 |
+
e || (this.paused = true)
|
176 |
+
|
177 |
+
if (this.$element.find('.next, .prev').length && $.support.transition) {
|
178 |
+
this.$element.trigger($.support.transition.end)
|
179 |
+
this.cycle(true)
|
180 |
+
}
|
181 |
+
|
182 |
+
this.interval = clearInterval(this.interval)
|
183 |
+
|
184 |
+
return this
|
185 |
+
}
|
186 |
+
|
187 |
+
Carousel.prototype.next = function () {
|
188 |
+
if (this.sliding) return
|
189 |
+
return this.slide('next')
|
190 |
+
}
|
191 |
+
|
192 |
+
Carousel.prototype.prev = function () {
|
193 |
+
if (this.sliding) return
|
194 |
+
return this.slide('prev')
|
195 |
+
}
|
196 |
+
|
197 |
+
Carousel.prototype.slide = function (type, next) {
|
198 |
+
var $active = this.$element.find('.item.active')
|
199 |
+
var $next = next || this.getItemForDirection(type, $active)
|
200 |
+
var isCycling = this.interval
|
201 |
+
var direction = type == 'next' ? 'left' : 'right'
|
202 |
+
var that = this
|
203 |
+
|
204 |
+
if ($next.hasClass('active')) return (this.sliding = false)
|
205 |
+
|
206 |
+
var relatedTarget = $next[0]
|
207 |
+
var slideEvent = $.Event('slide.bs.carousel', {
|
208 |
+
relatedTarget: relatedTarget,
|
209 |
+
direction: direction
|
210 |
+
})
|
211 |
+
this.$element.trigger(slideEvent)
|
212 |
+
if (slideEvent.isDefaultPrevented()) return
|
213 |
+
|
214 |
+
this.sliding = true
|
215 |
+
|
216 |
+
isCycling && this.pause()
|
217 |
+
|
218 |
+
if (this.$indicators.length) {
|
219 |
+
this.$indicators.find('.active').removeClass('active')
|
220 |
+
var $nextIndicator = $(this.$indicators.children()[this.getItemIndex($next)])
|
221 |
+
$nextIndicator && $nextIndicator.addClass('active')
|
222 |
+
}
|
223 |
+
|
224 |
+
var slidEvent = $.Event('slid.bs.carousel', { relatedTarget: relatedTarget, direction: direction }) // yes, "slid"
|
225 |
+
if ($.support.transition && this.$element.hasClass('seriousslider')) {
|
226 |
+
$next.addClass(type)
|
227 |
+
$next[0].offsetWidth // force reflow
|
228 |
+
$active.addClass(direction)
|
229 |
+
$next.addClass(direction)
|
230 |
+
$active
|
231 |
+
.one('bsTransitionEnd', function () {
|
232 |
+
$next.removeClass([type, direction].join(' ')).addClass('active')
|
233 |
+
$active.removeClass(['active', direction].join(' '))
|
234 |
+
that.sliding = false
|
235 |
+
setTimeout(function () {
|
236 |
+
that.$element.trigger(slidEvent)
|
237 |
+
}, 0)
|
238 |
+
})
|
239 |
+
.emulateTransitionEnd(this.options.stransition)
|
240 |
+
//.emulateTransitionEnd(Carousel.TRANSITION_DURATION)
|
241 |
+
} else {
|
242 |
+
$active.removeClass('active')
|
243 |
+
$next.addClass('active')
|
244 |
+
this.sliding = false
|
245 |
+
this.$element.trigger(slidEvent)
|
246 |
+
}
|
247 |
+
|
248 |
+
isCycling && this.cycle()
|
249 |
+
|
250 |
+
return this
|
251 |
+
}
|
252 |
+
|
253 |
+
|
254 |
+
// CAROUSEL PLUGIN DEFINITION
|
255 |
+
// ==========================
|
256 |
+
|
257 |
+
function Plugin(option) {
|
258 |
+
return this.each(function () {
|
259 |
+
var $this = $(this);
|
260 |
+
var data = $this.data('bs.carousel');
|
261 |
+
var options = $.extend({}, Carousel.DEFAULTS, $this.data(), typeof option == 'object' && option);
|
262 |
+
var action = typeof option == 'string' ? option : options.slide;
|
263 |
+
console.log(data);
|
264 |
+
|
265 |
+
if (!data) $this.data('bs.carousel', (data = new Carousel(this, options)))
|
266 |
+
console.log(data);
|
267 |
+
if (typeof option == 'number') data.to(option)
|
268 |
+
else if (action) data[action]()
|
269 |
+
else if (options.interval) data.pause().cycle()
|
270 |
+
})
|
271 |
+
}
|
272 |
+
|
273 |
+
var old = $.fn.carousel
|
274 |
+
|
275 |
+
$.fn.carousel = Plugin
|
276 |
+
$.fn.carousel.Constructor = Carousel
|
277 |
+
|
278 |
+
|
279 |
+
// CAROUSEL NO CONFLICT
|
280 |
+
// ====================
|
281 |
+
|
282 |
+
$.fn.carousel.noConflict = function () {
|
283 |
+
$.fn.carousel = old
|
284 |
+
return this
|
285 |
+
}
|
286 |
+
|
287 |
+
|
288 |
+
// CAROUSEL DATA-API
|
289 |
+
// =================
|
290 |
+
|
291 |
+
var clickHandler = function (e) {
|
292 |
+
var href
|
293 |
+
var $this = $(this)
|
294 |
+
var $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) // strip for ie7
|
295 |
+
if (!$target.hasClass('seriousslider')) return
|
296 |
+
var options = $.extend({}, $target.data(), $this.data())
|
297 |
+
var slideIndex = $this.attr('data-slide-to')
|
298 |
+
if (slideIndex) options.interval = false
|
299 |
+
|
300 |
+
Plugin.call($target, options)
|
301 |
+
|
302 |
+
if (slideIndex) {
|
303 |
+
$target.data('bs.carousel').to(slideIndex)
|
304 |
+
}
|
305 |
+
|
306 |
+
e.preventDefault()
|
307 |
+
}
|
308 |
+
|
309 |
+
$(document)
|
310 |
+
.on('click.bs.carousel.data-api', '[data-slide]', clickHandler)
|
311 |
+
.on('click.bs.carousel.data-api', '[data-slide-to]', clickHandler)
|
312 |
+
|
313 |
+
/*$(window).on('load', function () {
|
314 |
+
$('[data-ride="carousel"]').each(function () {
|
315 |
+
var $carousel = $(this)
|
316 |
+
Plugin.call($carousel, $carousel.data())
|
317 |
+
})
|
318 |
+
})*/
|
319 |
+
|
320 |
+
}(jQuery);
|
321 |
+
|
322 |
+
/* swipe support for mobile devices */
|
323 |
+
jQuery(document).ready(function() {
|
324 |
+
jQuery(".cryout-serious-slider").swiperight(function() {
|
325 |
+
jQuery(".cryout-serious-slider").carousel('prev');
|
326 |
+
});
|
327 |
+
jQuery(".cryout-serious-slider").swipeleft(function() {
|
328 |
+
jQuery(".cryout-serious-slider").carousel('next');
|
329 |
+
});
|
330 |
+
});
|
331 |
+
|
332 |
+
/* FIN */
|
resources/style.css
ADDED
@@ -0,0 +1,752 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
/*!
|
2 |
+
* Bootstrap v3.3.6 (http://getbootstrap.com)
|
3 |
+
* Copyright 2011-2015 Twitter, Inc.
|
4 |
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5 |
+
*/
|
6 |
+
|
7 |
+
@font-face {
|
8 |
+
font-family: 'serioussliderglyphs';
|
9 |
+
src: url('fonts/serioussliderglyphs.eot?ap45ke');
|
10 |
+
src: url('fonts/serioussliderglyphs.eot?ap45ke#iefix') format('embedded-opentype'),
|
11 |
+
url('fonts/serioussliderglyphs.ttf?ap45ke') format('truetype'),
|
12 |
+
url('fonts/serioussliderglyphs.woff?ap45ke') format('woff'),
|
13 |
+
url('fonts/serioussliderglyphs.svg?ap45ke#serioussliderglyphs') format('svg');
|
14 |
+
font-weight: normal;
|
15 |
+
font-style: normal;
|
16 |
+
}
|
17 |
+
|
18 |
+
[class^="sicon-"], [class*=" sicon-"] {
|
19 |
+
/* use !important to prevent issues with browser extensions that change fonts */
|
20 |
+
font-family: 'serioussliderglyphs' !important;
|
21 |
+
speak: none;
|
22 |
+
font-style: normal;
|
23 |
+
font-weight: normal;
|
24 |
+
font-variant: normal;
|
25 |
+
text-transform: none;
|
26 |
+
line-height: 1;
|
27 |
+
|
28 |
+
/* Better Font Rendering =========== */
|
29 |
+
-webkit-font-smoothing: antialiased;
|
30 |
+
-moz-osx-font-smoothing: grayscale;
|
31 |
+
}
|
32 |
+
|
33 |
+
.sicon-chevron-left:before {
|
34 |
+
content: "\f053";
|
35 |
+
}
|
36 |
+
.sicon-chevron-right:before {
|
37 |
+
content: "\f054";
|
38 |
+
}
|
39 |
+
.sicon-chevron-left2:before {
|
40 |
+
content: "\e900";
|
41 |
+
}
|
42 |
+
.sicon-chevron-right2:before {
|
43 |
+
content: "\e901";
|
44 |
+
}
|
45 |
+
.sicon-chevron-small-left:before {
|
46 |
+
content: "\e902";
|
47 |
+
}
|
48 |
+
.sicon-chevron-small-right:before {
|
49 |
+
content: "\e903";
|
50 |
+
}
|
51 |
+
.sicon-chevron-thin-left:before {
|
52 |
+
content: "\e904";
|
53 |
+
}
|
54 |
+
.sicon-chevron-thin-right:before {
|
55 |
+
content: "\e905";
|
56 |
+
}
|
57 |
+
.sicon-chevron-with-circle-left:before {
|
58 |
+
content: "\e906";
|
59 |
+
}
|
60 |
+
.sicon-chevron-with-circle-right:before {
|
61 |
+
content: "\e907";
|
62 |
+
}
|
63 |
+
.sicon-rewind:before {
|
64 |
+
content: "\e051";
|
65 |
+
}
|
66 |
+
.sicon-fast-forward:before {
|
67 |
+
content: "\e055";
|
68 |
+
}
|
69 |
+
|
70 |
+
.seriousslider-inner > .item > img,
|
71 |
+
.seriousslider-inner > .item > a > img {
|
72 |
+
display: block;
|
73 |
+
max-width: 100%;
|
74 |
+
height: auto;
|
75 |
+
}
|
76 |
+
|
77 |
+
.seriousslider {
|
78 |
+
position: relative;
|
79 |
+
margin: 0 auto;
|
80 |
+
width: 100%;
|
81 |
+
}
|
82 |
+
.seriousslider-inner {
|
83 |
+
position: relative;
|
84 |
+
width: 100%;
|
85 |
+
overflow: hidden;
|
86 |
+
}
|
87 |
+
.seriousslider-inner > .item {
|
88 |
+
position: relative;
|
89 |
+
display: none;
|
90 |
+
}
|
91 |
+
.seriousslider-inner > .item > img,
|
92 |
+
.seriousslider-inner > .item > a > img {
|
93 |
+
line-height: 1;
|
94 |
+
}
|
95 |
+
@media all and (transform-3d), (-webkit-transform-3d) {
|
96 |
+
.seriousslider-inner > .item {
|
97 |
+
-webkit-backface-visibility: hidden;
|
98 |
+
backface-visibility: hidden;
|
99 |
+
-webkit-perspective: 1000px;
|
100 |
+
perspective: 1000px;
|
101 |
+
}
|
102 |
+
.seriousslider-inner > .item.next,
|
103 |
+
.seriousslider-inner > .item.active.right {
|
104 |
+
left: 0;
|
105 |
+
-webkit-transform: translate3d(100%, 0, 0);
|
106 |
+
transform: translate3d(100%, 0, 0);
|
107 |
+
}
|
108 |
+
.seriousslider-inner > .item.prev,
|
109 |
+
.seriousslider-inner > .item.active.left {
|
110 |
+
left: 0;
|
111 |
+
-webkit-transform: translate3d(-100%, 0, 0);
|
112 |
+
transform: translate3d(-100%, 0, 0);
|
113 |
+
}
|
114 |
+
.seriousslider-inner > .item.next.left,
|
115 |
+
.seriousslider-inner > .item.prev.right,
|
116 |
+
.seriousslider-inner > .item.active {
|
117 |
+
left: 0;
|
118 |
+
-webkit-transform: translate3d(0, 0, 0);
|
119 |
+
transform: translate3d(0, 0, 0);
|
120 |
+
}
|
121 |
+
}
|
122 |
+
|
123 |
+
|
124 |
+
.seriousslider-inner > .active,
|
125 |
+
.seriousslider-inner > .next,
|
126 |
+
.seriousslider-inner > .prev {
|
127 |
+
display: block;
|
128 |
+
}
|
129 |
+
.seriousslider-inner > .active {
|
130 |
+
left: 0;
|
131 |
+
}
|
132 |
+
.seriousslider-inner > .next,
|
133 |
+
.seriousslider-inner > .prev {
|
134 |
+
position: absolute;
|
135 |
+
top: 0;
|
136 |
+
width: 100%;
|
137 |
+
}
|
138 |
+
.seriousslider-inner > .next {
|
139 |
+
left: 100%;
|
140 |
+
}
|
141 |
+
.seriousslider-inner > .prev {
|
142 |
+
left: -100%;
|
143 |
+
}
|
144 |
+
.seriousslider-inner > .next.left,
|
145 |
+
.seriousslider-inner > .prev.right {
|
146 |
+
left: 0;
|
147 |
+
}
|
148 |
+
.seriousslider-inner > .active.left {
|
149 |
+
left: -100%;
|
150 |
+
}
|
151 |
+
.seriousslider-inner > .active.right {
|
152 |
+
left: 100%;
|
153 |
+
}
|
154 |
+
|
155 |
+
.seriousslider-overlay0 .seriousslider-control,
|
156 |
+
.seriousslider-overlay0 .seriousslider-indicators {
|
157 |
+
display: none;
|
158 |
+
}
|
159 |
+
|
160 |
+
.seriousslider-overlay1 .seriousslider-control,
|
161 |
+
.seriousslider-overlay1 .seriousslider-indicators {
|
162 |
+
opacity: 0;
|
163 |
+
filter: alpha(opacity=0);
|
164 |
+
transition: .6s ease-in-out opacity;
|
165 |
+
}
|
166 |
+
|
167 |
+
.seriousslider-overlay1:hover .seriousslider-control,
|
168 |
+
.seriousslider-overlay1:hover .seriousslider-indicators {
|
169 |
+
opacity: 1;
|
170 |
+
filter: alpha(opacity=100);
|
171 |
+
}
|
172 |
+
|
173 |
+
.seriousslider-overlay2 .seriousslider-control {
|
174 |
+
opacity: 0.5;
|
175 |
+
filter: alpha(opacity=50);
|
176 |
+
}
|
177 |
+
|
178 |
+
/*********************
|
179 |
+
=Transition Effects
|
180 |
+
**********************/
|
181 |
+
|
182 |
+
/* Fade transition */
|
183 |
+
.seriousslider-fade .seriousslider-inner > .item {
|
184 |
+
opacity: 0;
|
185 |
+
-webkit-transition: .6s ease-in-out opacity;
|
186 |
+
-o-transition: .6s ease-in-out opacity;
|
187 |
+
transition: .6s ease-in-out opacity;
|
188 |
+
left: 0;
|
189 |
+
}
|
190 |
+
|
191 |
+
.seriousslider-fade .seriousslider-inner .active {
|
192 |
+
opacity: 1;
|
193 |
+
}
|
194 |
+
|
195 |
+
.seriousslider-fade .seriousslider-inner .active.left,
|
196 |
+
.seriousslider-fade .seriousslider-inner .active.right {
|
197 |
+
left: 0;
|
198 |
+
opacity: 0;
|
199 |
+
z-index: 1;
|
200 |
+
}
|
201 |
+
|
202 |
+
.seriousslider-fade .seriousslider-inner .next.left,
|
203 |
+
.seriousslider-fade .seriousslider-inner .prev.right {
|
204 |
+
opacity: 1;
|
205 |
+
left: 0;
|
206 |
+
}
|
207 |
+
|
208 |
+
.seriousslider-fade .seriousslider-control {
|
209 |
+
z-index: 2;
|
210 |
+
}
|
211 |
+
|
212 |
+
@media all and (transform-3d), (-webkit-transform-3d) {
|
213 |
+
.seriousslider-fade .seriousslider-inner > .item.next,
|
214 |
+
.seriousslider-fade .seriousslider-inner > .item.active.right {
|
215 |
+
opacity: 0;
|
216 |
+
-webkit-transform: translate3d(0, 0, 0);
|
217 |
+
transform: translate3d(0, 0, 0);
|
218 |
+
}
|
219 |
+
.seriousslider-fade .seriousslider-inner > .item.prev,
|
220 |
+
.seriousslider-fade .seriousslider-inner > .item.active.left {
|
221 |
+
opacity: 0;
|
222 |
+
-webkit-transform: translate3d(0, 0, 0);
|
223 |
+
transform: translate3d(0, 0, 0);
|
224 |
+
}
|
225 |
+
.seriousslider-fade .seriousslider-inner > .item.next.left,
|
226 |
+
.seriousslider-fade .seriousslider-inner > .item.prev.right,
|
227 |
+
.seriousslider-fade .seriousslider-inner > .item.active {
|
228 |
+
opacity: 1;
|
229 |
+
-webkit-transform: translate3d(0, 0, 0);
|
230 |
+
transform: translate3d(0, 0, 0);
|
231 |
+
}
|
232 |
+
}
|
233 |
+
|
234 |
+
/*
|
235 |
+
* Overslide animation
|
236 |
+
**/
|
237 |
+
|
238 |
+
.seriousslider-overslide .seriousslider-inner > .item {
|
239 |
+
-webkit-transition: .6s ease-in-out left;
|
240 |
+
-o-transition: .6s ease-in-out left;
|
241 |
+
transition: .6s ease-in-out left;
|
242 |
+
}
|
243 |
+
|
244 |
+
.seriousslider-overslide .seriousslider-inner > .active.left,
|
245 |
+
.seriousslider-overslide .seriousslider-inner > .active.right {
|
246 |
+
left: 0;
|
247 |
+
z-index: 0;
|
248 |
+
}
|
249 |
+
|
250 |
+
.seriousslider-overslide .seriousslider-inner > .next,
|
251 |
+
.seriousslider-overslide .seriousslider-inner > .prev {
|
252 |
+
z-index: 1;
|
253 |
+
|
254 |
+
}
|
255 |
+
|
256 |
+
@media all and (transform-3d), (-webkit-transform-3d) {
|
257 |
+
.seriousslider-overslide .seriousslider-inner > .active.left,
|
258 |
+
.seriousslider-overslide .seriousslider-inner > .active.right {
|
259 |
+
-webkit-transform: translate3d(0, 0, 0);
|
260 |
+
transform: translate3d(0, 0, 0);
|
261 |
+
}
|
262 |
+
}
|
263 |
+
|
264 |
+
/*
|
265 |
+
* Underslide animation
|
266 |
+
**/
|
267 |
+
|
268 |
+
.seriousslider-underslide .seriousslider-inner > .item {
|
269 |
+
-webkit-transition: .6s ease-in-out left;
|
270 |
+
-o-transition: .6s ease-in-out left;
|
271 |
+
transition: .6s ease-in-out left;
|
272 |
+
}
|
273 |
+
|
274 |
+
.seriousslider-underslide .seriousslider-inner > .active.left,
|
275 |
+
.seriousslider-underslide .seriousslider-inner > .active.right {
|
276 |
+
z-index: 1;
|
277 |
+
}
|
278 |
+
|
279 |
+
.seriousslider-underslide .seriousslider-inner > .next,
|
280 |
+
.seriousslider-underslide .seriousslider-inner > .prev {
|
281 |
+
z-index: 0;
|
282 |
+
left: 0;
|
283 |
+
}
|
284 |
+
|
285 |
+
@media all and (transform-3d), (-webkit-transform-3d) {
|
286 |
+
.seriousslider-underslide .seriousslider-inner > .active.left,
|
287 |
+
.seriousslider-underslide .seriousslider-inner > .active.right {
|
288 |
+
-webkit-transform: translate3d(0, 0, 0);
|
289 |
+
transform: translate3d(0, 0, 0);
|
290 |
+
}
|
291 |
+
}
|
292 |
+
|
293 |
+
/* Parallax animation */
|
294 |
+
|
295 |
+
.seriousslider-parallax .seriousslider-inner > .item {
|
296 |
+
-webkit-transition: .6s ease-in-out left;
|
297 |
+
-o-transition: .6s ease-in-out left;
|
298 |
+
transition: .6s ease-in-out left;
|
299 |
+
}
|
300 |
+
|
301 |
+
.seriousslider-parallax .seriousslider-inner > .active.left {
|
302 |
+
left: -30%;
|
303 |
+
z-index: 0;
|
304 |
+
}
|
305 |
+
|
306 |
+
.seriousslider-parallax .seriousslider-inner > .active.right {
|
307 |
+
left: 30%;
|
308 |
+
z-index: 0;
|
309 |
+
}
|
310 |
+
|
311 |
+
.seriousslider-parallax .seriousslider-inner > .next,
|
312 |
+
.seriousslider-parallax .seriousslider-inner > .prev {
|
313 |
+
z-index: 1;
|
314 |
+
}
|
315 |
+
|
316 |
+
@media all and (transform-3d), (-webkit-transform-3d) {
|
317 |
+
.seriousslider-parallax .seriousslider-inner > .active.left {
|
318 |
+
left: 0;
|
319 |
+
-webkit-transform: translate3d(-30%, 0, 0);
|
320 |
+
transform: translate3d(-30%, 0, 0);
|
321 |
+
}
|
322 |
+
.seriousslider-parallax .seriousslider-inner > .active.right {
|
323 |
+
left: 0;
|
324 |
+
-webkit-transform: translate3d(30%, 0, 0);
|
325 |
+
transform: translate3d(30%, 0, 0);
|
326 |
+
}
|
327 |
+
}
|
328 |
+
|
329 |
+
/* Horizontal Flip */
|
330 |
+
.seriousslider-hflip .seriousslider-inner {
|
331 |
+
-webkit-transform-style: preserve-3d;
|
332 |
+
transform-style: preserve-3d;
|
333 |
+
}
|
334 |
+
|
335 |
+
.seriousslider-hflip .seriousslider-inner > .active {
|
336 |
+
transform: perspective( 2000px ) rotateY( 0deg );
|
337 |
+
backface-visibility: hidden;
|
338 |
+
}
|
339 |
+
.seriousslider-hflip .seriousslider-inner > .prev {
|
340 |
+
transform: perspective( 2000px ) rotateY( -180deg );
|
341 |
+
backface-visibility: hidden;
|
342 |
+
left: 0;
|
343 |
+
}
|
344 |
+
.seriousslider-hflip .seriousslider-inner > .next {
|
345 |
+
transform: perspective( 2000px ) rotateY( 180deg );
|
346 |
+
backface-visibility: hidden;
|
347 |
+
left: 0;
|
348 |
+
}
|
349 |
+
|
350 |
+
.seriousslider-hflip .seriousslider-inner > .active.left {
|
351 |
+
transform: perspective( 2000px ) rotateY( -180deg );
|
352 |
+
left: 0;
|
353 |
+
}
|
354 |
+
.seriousslider-hflip .seriousslider-inner > .active.right {
|
355 |
+
transform: perspective( 2000px ) rotateY( 180deg );
|
356 |
+
left: 0;
|
357 |
+
}
|
358 |
+
.seriousslider-hflip .seriousslider-inner > .next.left,
|
359 |
+
.seriousslider-hflip .seriousslider-inner > .prev.right {
|
360 |
+
transform: perspective( 2000px ) rotateY( 0deg );
|
361 |
+
}
|
362 |
+
|
363 |
+
/* Vertical Flip */
|
364 |
+
.seriousslider-vflip .seriousslider-inner {
|
365 |
+
-webkit-transform-style: preserve-3d;
|
366 |
+
transform-style: preserve-3d;
|
367 |
+
}
|
368 |
+
|
369 |
+
.seriousslider-vflip .seriousslider-inner > .active {
|
370 |
+
transform: perspective( 2000px ) rotateX( 0deg );
|
371 |
+
backface-visibility: hidden;
|
372 |
+
}
|
373 |
+
.seriousslider-vflip .seriousslider-inner > .prev {
|
374 |
+
transform: perspective( 2000px ) rotateX( -180deg );
|
375 |
+
backface-visibility: hidden;
|
376 |
+
left: 0;
|
377 |
+
}
|
378 |
+
.seriousslider-vflip .seriousslider-inner > .next {
|
379 |
+
transform: perspective( 2000px ) rotateX( 180deg );
|
380 |
+
backface-visibility: hidden;
|
381 |
+
left: 0;
|
382 |
+
}
|
383 |
+
.seriousslider-vflip .seriousslider-inner > .active.left {
|
384 |
+
transform: perspective( 2000px ) rotateX( -180deg );
|
385 |
+
left: 0;
|
386 |
+
}
|
387 |
+
.seriousslider-vflip .seriousslider-inner > .active.right {
|
388 |
+
transform: perspective( 2000px ) rotateX( 180deg );
|
389 |
+
left: 0;
|
390 |
+
}
|
391 |
+
.seriousslider-vflip .seriousslider-inner > .next.left,
|
392 |
+
.seriousslider-vflip .seriousslider-inner > .prev.right {
|
393 |
+
transform: perspective( 2000px ) rotateX( 0deg );
|
394 |
+
}
|
395 |
+
|
396 |
+
/***************
|
397 |
+
=Appearance
|
398 |
+
***************/
|
399 |
+
|
400 |
+
/* General */
|
401 |
+
.seriousslider-control {
|
402 |
+
position: absolute;
|
403 |
+
top: 0;
|
404 |
+
bottom: 0;
|
405 |
+
left: 0;
|
406 |
+
text-align: center;
|
407 |
+
z-index: 15;
|
408 |
+
width: 10%;
|
409 |
+
font-size: 30px;
|
410 |
+
}
|
411 |
+
.seriousslider-control.left {}
|
412 |
+
.seriousslider-control.right {
|
413 |
+
right: 0;
|
414 |
+
left: auto;
|
415 |
+
}
|
416 |
+
.seriousslider-control:hover,
|
417 |
+
.seriousslider-control:focus {
|
418 |
+
}
|
419 |
+
.seriousslider-control .sicon-prev,
|
420 |
+
.seriousslider-control .sicon-next {
|
421 |
+
position: absolute;
|
422 |
+
top: 50%;
|
423 |
+
z-index: 5;
|
424 |
+
display: inline-block;
|
425 |
+
margin-top: -10px;
|
426 |
+
}
|
427 |
+
.seriousslider-control .sicon-prev {
|
428 |
+
left: 50%;
|
429 |
+
margin-left: -10px;
|
430 |
+
}
|
431 |
+
.seriousslider-control .sicon-next {
|
432 |
+
right: 50%;
|
433 |
+
margin-right: -10px;
|
434 |
+
}
|
435 |
+
.seriousslider-control .sicon-prev,
|
436 |
+
.seriousslider-control .sicon-next {}
|
437 |
+
|
438 |
+
.seriousslider-control .sicon-prev:before {
|
439 |
+
content: '\f053';
|
440 |
+
}
|
441 |
+
.seriousslider-control .sicon-next:before {
|
442 |
+
content: '\f054';
|
443 |
+
}
|
444 |
+
|
445 |
+
.cryout-serious-slider .seriousslider-indicators {
|
446 |
+
position: absolute;
|
447 |
+
bottom: 10px;
|
448 |
+
left: 0;
|
449 |
+
right: 0;
|
450 |
+
z-index: 15;
|
451 |
+
padding-left: 0;
|
452 |
+
text-align: center;
|
453 |
+
list-style: none;
|
454 |
+
margin-top: 0;
|
455 |
+
margin-bottom: 0;
|
456 |
+
}
|
457 |
+
|
458 |
+
ol.seriousslider-indicators li {
|
459 |
+
display: inline-block;
|
460 |
+
width: 10px;
|
461 |
+
height: 10px;
|
462 |
+
margin: 1px;
|
463 |
+
text-indent: -999px;
|
464 |
+
cursor: pointer;
|
465 |
+
}
|
466 |
+
ol.seriousslider-indicators .active {}
|
467 |
+
|
468 |
+
.seriousslider-caption {
|
469 |
+
position: absolute;
|
470 |
+
right: 15%;
|
471 |
+
bottom: 20px;
|
472 |
+
left: 15%;
|
473 |
+
z-index: 10;
|
474 |
+
padding-top: 20px;
|
475 |
+
padding-bottom: 20px;
|
476 |
+
text-align: center;
|
477 |
+
text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
|
478 |
+
}
|
479 |
+
.seriousslider-caption .btn {
|
480 |
+
text-shadow: none;
|
481 |
+
}
|
482 |
+
@media screen and (min-width: 768px) {
|
483 |
+
.seriousslider-control .sicon-prev,
|
484 |
+
.seriousslider-control .sicon-next {
|
485 |
+
margin-top: -10px;
|
486 |
+
}
|
487 |
+
.seriousslider-control .sicon-prev {
|
488 |
+
margin-left: -10px;
|
489 |
+
}
|
490 |
+
.seriousslider-control .sicon-next {
|
491 |
+
margin-right: -10px;
|
492 |
+
}
|
493 |
+
.seriousslider-caption {
|
494 |
+
right: 20%;
|
495 |
+
left: 20%;
|
496 |
+
top: 20%;
|
497 |
+
padding-bottom: 30px;
|
498 |
+
}
|
499 |
+
.seriousslider-indicators {
|
500 |
+
bottom: 20px;
|
501 |
+
}
|
502 |
+
}
|
503 |
+
|
504 |
+
.sr-only {
|
505 |
+
position: absolute;
|
506 |
+
width: 1px;
|
507 |
+
height: 1px;
|
508 |
+
padding: 0;
|
509 |
+
margin: -1px;
|
510 |
+
overflow: hidden;
|
511 |
+
clip: rect(0, 0, 0, 0);
|
512 |
+
border: 0;
|
513 |
+
}
|
514 |
+
.sr-only-focusable:active,
|
515 |
+
.sr-only-focusable:focus {
|
516 |
+
position: static;
|
517 |
+
width: auto;
|
518 |
+
height: auto;
|
519 |
+
margin: 0;
|
520 |
+
overflow: visible;
|
521 |
+
clip: auto;
|
522 |
+
}
|
523 |
+
|
524 |
+
/* Default Theme */
|
525 |
+
.seriousslider-boots .seriousslider-control {
|
526 |
+
width: 15%;
|
527 |
+
font-size: 34px;
|
528 |
+
color: #fff;
|
529 |
+
text-shadow: 0 1px 2px rgba(0, 0, 0, .6);
|
530 |
+
background-color: rgba(0, 0, 0, 0);
|
531 |
+
transition: .3s ease-out;
|
532 |
+
}
|
533 |
+
|
534 |
+
.seriousslider-boots .seriousslider-control.left {
|
535 |
+
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
|
536 |
+
background-image: -o-linear-gradient(left, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
|
537 |
+
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .5)), to(rgba(0, 0, 0, .0001)));
|
538 |
+
background-image: linear-gradient(to right, rgba(0, 0, 0, .5) 0%, rgba(0, 0, 0, .0001) 100%);
|
539 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#80000000', endColorstr='#00000000', GradientType=1);
|
540 |
+
background-repeat: repeat-x;
|
541 |
+
}
|
542 |
+
.seriousslider-boots .seriousslider-control.right {
|
543 |
+
background-image: -webkit-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
|
544 |
+
background-image: -o-linear-gradient(left, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
|
545 |
+
background-image: -webkit-gradient(linear, left top, right top, from(rgba(0, 0, 0, .0001)), to(rgba(0, 0, 0, .5)));
|
546 |
+
background-image: linear-gradient(to right, rgba(0, 0, 0, .0001) 0%, rgba(0, 0, 0, .5) 100%);
|
547 |
+
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00000000', endColorstr='#80000000', GradientType=1);
|
548 |
+
background-repeat: repeat-x;
|
549 |
+
}
|
550 |
+
|
551 |
+
.seriousslider-boots .seriousslider-control:hover,
|
552 |
+
.seriousslider-boots .seriousslider-control:focus {
|
553 |
+
color: #fff;
|
554 |
+
text-decoration: none;
|
555 |
+
filter: alpha(opacity=90);
|
556 |
+
outline: 0;
|
557 |
+
opacity: .9;
|
558 |
+
}
|
559 |
+
|
560 |
+
.seriousslider-boots .seriousslider-control .sicon-prev,
|
561 |
+
.seriousslider-boots .seriousslider-control .sicon-next {
|
562 |
+
font-family: serif;
|
563 |
+
line-height: 1;
|
564 |
+
}
|
565 |
+
.seriousslider-boots .seriousslider-control .sicon-prev:before {
|
566 |
+
content: '\f053';
|
567 |
+
}
|
568 |
+
.seriousslider-boots .seriousslider-control .sicon-next:before {
|
569 |
+
content: '\f054';
|
570 |
+
}
|
571 |
+
|
572 |
+
.seriousslider-boots .seriousslider-indicators li {
|
573 |
+
background-color: #000 \9;
|
574 |
+
background-color: rgba(0, 0, 0, 0);
|
575 |
+
border: 1px solid #fff;
|
576 |
+
border-radius: 10px;
|
577 |
+
transition: .3s ease-out;
|
578 |
+
}
|
579 |
+
.seriousslider-boots .seriousslider-indicators .active {
|
580 |
+
background-color: rgba(255, 255, 255, .8);
|
581 |
+
}
|
582 |
+
|
583 |
+
.seriousslider-boots .seriousslider-caption-title a {
|
584 |
+
color: #FFF;
|
585 |
+
}
|
586 |
+
|
587 |
+
.seriousslider-boots .seriousslider-caption-text {
|
588 |
+
color: #EEE;
|
589 |
+
}
|
590 |
+
|
591 |
+
.seriousslider-boots .seriousslider-caption-text a {
|
592 |
+
border: 2px solid #FFF;
|
593 |
+
border-radius: 100px;
|
594 |
+
color: #444;
|
595 |
+
background: #FFF;
|
596 |
+
display: inline-block;
|
597 |
+
font-weight: 400;
|
598 |
+
letter-spacing: 1px;
|
599 |
+
margin-top: 1em;
|
600 |
+
padding: 8px 30px;
|
601 |
+
text-shadow: 0 0;
|
602 |
+
transition: .3s ease-out;
|
603 |
+
font-size: .8em;
|
604 |
+
}
|
605 |
+
|
606 |
+
.seriousslider-boots .seriousslider-caption-text a:hover {
|
607 |
+
color: #FFF;
|
608 |
+
background: rgba(0, 0, 0, .15);
|
609 |
+
}
|
610 |
+
|
611 |
+
/* Light Theme */
|
612 |
+
.seriousslider-light .seriousslider-caption-title a{
|
613 |
+
text-transform: uppercase;
|
614 |
+
color: #FFF;
|
615 |
+
font-weight: bold;
|
616 |
+
}
|
617 |
+
|
618 |
+
.seriousslider-light .seriousslider-caption-text {
|
619 |
+
color: #EEE;
|
620 |
+
font-weight: normal;
|
621 |
+
}
|
622 |
+
.seriousslider-light .seriousslider-caption-text a {
|
623 |
+
border: 2px solid #FFF;
|
624 |
+
color: #FFF;
|
625 |
+
padding: 10px 30px;
|
626 |
+
text-transform: uppercase;
|
627 |
+
font-weight: bold;
|
628 |
+
display: inline-block;
|
629 |
+
margin-top: 1em;
|
630 |
+
transition: .3s ease-out;
|
631 |
+
letter-spacing: 1px;
|
632 |
+
}
|
633 |
+
.seriousslider-light .seriousslider-caption-text a:hover {
|
634 |
+
background: rgba(255, 255, 255, .15);
|
635 |
+
}
|
636 |
+
.seriousslider-light .seriousslider-control {
|
637 |
+
width: 7%;
|
638 |
+
font-size: 44px;
|
639 |
+
color: #fff;
|
640 |
+
transition: .3s ease-out;
|
641 |
+
}
|
642 |
+
|
643 |
+
.seriousslider-light .seriousslider-control:hover {
|
644 |
+
opacity: 1;
|
645 |
+
}
|
646 |
+
|
647 |
+
.seriousslider-light .seriousslider-control:active {
|
648 |
+
opacity: .5;
|
649 |
+
}
|
650 |
+
|
651 |
+
.seriousslider-light .seriousslider-control .sicon-prev:before {
|
652 |
+
content: '\e904';
|
653 |
+
}
|
654 |
+
.seriousslider-light .seriousslider-control .sicon-next:before {
|
655 |
+
content: '\e905';
|
656 |
+
}
|
657 |
+
|
658 |
+
.seriousslider-light .seriousslider-indicators li {
|
659 |
+
width: 14px;
|
660 |
+
height: 5px;
|
661 |
+
border: 1px solid #FFF;
|
662 |
+
transition: .3s ease-out;
|
663 |
+
}
|
664 |
+
|
665 |
+
.seriousslider-light .seriousslider-indicators li:hover {
|
666 |
+
background: rgba(255, 255, 255, .5);
|
667 |
+
}
|
668 |
+
|
669 |
+
.seriousslider-light .seriousslider-indicators li.active {
|
670 |
+
background: rgba(255, 255, 255, .8);
|
671 |
+
}
|
672 |
+
|
673 |
+
|
674 |
+
/* Dark Theme */
|
675 |
+
.seriousslider-dark .seriousslider-caption-title a{
|
676 |
+
text-transform: uppercase;
|
677 |
+
color: #000;
|
678 |
+
font-weight: bold;
|
679 |
+
text-shadow: none;
|
680 |
+
}
|
681 |
+
|
682 |
+
.seriousslider-dark .seriousslider-caption-text {
|
683 |
+
color: #111;
|
684 |
+
font-weight: normal;
|
685 |
+
text-shadow: none;
|
686 |
+
}
|
687 |
+
.seriousslider-dark .seriousslider-caption-text a {
|
688 |
+
color: #FFF;
|
689 |
+
background: rgba(0, 0, 0, .5);
|
690 |
+
padding: 10px 30px;
|
691 |
+
text-transform: uppercase;
|
692 |
+
font-weight: bold;
|
693 |
+
display: inline-block;
|
694 |
+
margin-top: 1em;
|
695 |
+
transition: .3s ease-out;
|
696 |
+
font-size: 14px;
|
697 |
+
letter-spacing: 1px;
|
698 |
+
text-shadow: 0 0;
|
699 |
+
border-radius: 100px;
|
700 |
+
}
|
701 |
+
.seriousslider-dark .seriousslider-caption-text a:hover {
|
702 |
+
background: rgba(0, 0, 0, .75);
|
703 |
+
}
|
704 |
+
.seriousslider-dark .seriousslider-control {
|
705 |
+
width: 7%;
|
706 |
+
font-size: 34px;
|
707 |
+
color: #fff;
|
708 |
+
transition: .3s ease-out;
|
709 |
+
}
|
710 |
+
|
711 |
+
.seriousslider-dark .seriousslider-control:hover {
|
712 |
+
opacity: 1;
|
713 |
+
}
|
714 |
+
|
715 |
+
.seriousslider-dark .seriousslider-control:active {
|
716 |
+
opacity: .5;
|
717 |
+
}
|
718 |
+
|
719 |
+
.seriousslider-dark .seriousslider-control .sicon-prev:before {
|
720 |
+
content: '\e900';
|
721 |
+
}
|
722 |
+
.seriousslider-dark .seriousslider-control .sicon-next:before {
|
723 |
+
content: '\e901';
|
724 |
+
}
|
725 |
+
.seriousslider-dark .seriousslider-control .sicon-prev,
|
726 |
+
.seriousslider-dark .seriousslider-control .sicon-next {
|
727 |
+
background: rgba(0, 0, 0, .5);
|
728 |
+
padding: 7px;
|
729 |
+
border-radius: 100px;
|
730 |
+
}
|
731 |
+
|
732 |
+
.seriousslider-dark .seriousslider-indicators {
|
733 |
+
}
|
734 |
+
|
735 |
+
.seriousslider-dark .seriousslider-indicators li {
|
736 |
+
width: 8px;
|
737 |
+
height: 8px;
|
738 |
+
border: 1px solid #FFF;
|
739 |
+
transition: .3s ease-out;
|
740 |
+
border-radius: 8px;
|
741 |
+
background: rgba(0, 0, 0, .5);
|
742 |
+
}
|
743 |
+
|
744 |
+
.seriousslider-dark .seriousslider-indicators li:hover {
|
745 |
+
background: rgba(255, 255, 255, .5);
|
746 |
+
}
|
747 |
+
|
748 |
+
.seriousslider-dark .seriousslider-indicators li.active {
|
749 |
+
background: rgba(255, 255, 255, .8);
|
750 |
+
}
|
751 |
+
|
752 |
+
/* FIN */
|