danielebarchiesi@2: 'FlexSlider',
danielebarchiesi@2: 'vendor url' => 'http://www.woothemes.com/flexslider/',
danielebarchiesi@2: 'download url' => 'https://github.com/woothemes/FlexSlider',
danielebarchiesi@2: 'version arguments' => array(
danielebarchiesi@2: 'file' => 'jquery.flexslider-min.js',
danielebarchiesi@2: // jQuery FlexSlider v2.1
danielebarchiesi@2: 'pattern' => '/jQuery FlexSlider v(\d+\.+\d+)/',
danielebarchiesi@2: 'lines' => 2,
danielebarchiesi@2: ),
danielebarchiesi@2: 'files' => array(
danielebarchiesi@2: 'js' => array(
danielebarchiesi@2: 'jquery.flexslider-min.js',
danielebarchiesi@2: ),
danielebarchiesi@2: 'css' => array(
danielebarchiesi@2: 'flexslider.css',
danielebarchiesi@2: ),
danielebarchiesi@2: ),
danielebarchiesi@2: 'integration files' => array(
danielebarchiesi@2: 'flexslider' => array(
danielebarchiesi@2: 'css' => array('assets/css/flexslider_img.css'),
danielebarchiesi@2: ),
danielebarchiesi@2: ),
danielebarchiesi@2: );
danielebarchiesi@2:
danielebarchiesi@2: return $libraries;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_libraries_info_alter().
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_libraries_info_alter(&$libraries) {
danielebarchiesi@2: $debug = variable_get('flexslider_debug', FALSE);
danielebarchiesi@2: if ($debug) {
danielebarchiesi@2: // Switch to the unminified version of the library
danielebarchiesi@2: if (isset($libraries['flexslider'])) {
danielebarchiesi@2: $libraries['flexslider']['files']['js'] = array(
danielebarchiesi@2: 'jquery.flexslider.js',
danielebarchiesi@2: );
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Add support for jQuery Easing module
danielebarchiesi@2: if (module_exists('jqeasing')) {
danielebarchiesi@2: $libraries['flexslider']['dependencies'][] = 'easing (>=1.3)';
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_library().
danielebarchiesi@2: *
danielebarchiesi@2: * We also define FlexSlider through the core library callbacks
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_library() {
danielebarchiesi@2: $module_path = drupal_get_path('module', 'flexslider');
danielebarchiesi@2: $library_path = libraries_get_path('flexslider');
danielebarchiesi@2:
danielebarchiesi@2: $libraries['flexslider'] = array(
danielebarchiesi@2: 'title' => 'FlexSlider',
danielebarchiesi@2: 'website' => 'http://flexslider.woothemes.com',
danielebarchiesi@2: 'version' => FLEXSLIDER_VERSION,
danielebarchiesi@2: 'js' => array(
danielebarchiesi@2: $library_path . '/jquery.flexslider-min.js' => array(
danielebarchiesi@2: 'scope' => 'footer',
danielebarchiesi@2: ),
danielebarchiesi@2: ),
danielebarchiesi@2: 'css' => array(
danielebarchiesi@2: $library_path . '/flexslider.css' => array(
danielebarchiesi@2: 'type' => 'file',
danielebarchiesi@2: 'media' => 'screen',
danielebarchiesi@2: ),
danielebarchiesi@2: $module_path . '/assets/css/flexslider_img.css' => array(
danielebarchiesi@2: 'type' => 'file',
danielebarchiesi@2: 'media' => 'screen',
danielebarchiesi@2: ),
danielebarchiesi@2: ),
danielebarchiesi@2: );
danielebarchiesi@2: return $libraries;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_library_alter().
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_library_alter(&$libraries, $module) {
danielebarchiesi@2: // Enable debug mode
danielebarchiesi@2: if (FLEXSLIDER_DEBUG) {
danielebarchiesi@2: if ($module == 'flexslider' and isset($libraries['flexslider'])) {
danielebarchiesi@2: $libraries['flexslider']['js'] = array(
danielebarchiesi@2: libraries_get_path() . '/jquery.flexslider.js' => array(
danielebarchiesi@2: 'scope' => 'footer',
danielebarchiesi@2: ),
danielebarchiesi@2: );
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_permission().
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_permission() {
danielebarchiesi@2: return array(
danielebarchiesi@2: 'administer flexslider' => array(
danielebarchiesi@2: 'title' => t('Administer the FlexSlider module'),
danielebarchiesi@2: ),
danielebarchiesi@2: );
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_menu().
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_menu() {
danielebarchiesi@2: $items = array();
danielebarchiesi@2:
danielebarchiesi@2: $items['admin/config/media/flexslider/advanced'] = array(
danielebarchiesi@2: 'title' => 'Advanced settings',
danielebarchiesi@2: 'description' => 'Configure the advanced flexslider module settings.',
danielebarchiesi@2: 'page callback' => 'drupal_get_form',
danielebarchiesi@2: 'page arguments' => array('flexslider_form_settings'),
danielebarchiesi@2: 'access arguments' => array('administer flexslider'),
danielebarchiesi@2: 'type' => MENU_LOCAL_TASK,
danielebarchiesi@2: 'weight' => 2,
danielebarchiesi@2: 'file' => 'flexslider.admin.inc',
danielebarchiesi@2: );
danielebarchiesi@2:
danielebarchiesi@2: return $items;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_help().
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_help($path, $arg) {
danielebarchiesi@2: switch ($path) {
danielebarchiesi@2: case 'admin/config/media/flexslider/edit/%':
danielebarchiesi@2: return
danielebarchiesi@2: '
'
danielebarchiesi@2: . t('An option set defines exactly how a flexslider image gallery looks like on your site. '
danielebarchiesi@2: . 'It is s a combination of image styles for the various image sizes and FlexSlider library options.', array('@styles' => url('admin/config/media/image-styles'))) . '
'
danielebarchiesi@2: . t('For a full documentation of all options, refer to the official @docs.', array('@docs' => l(t('FlexSlider documentation'), 'http://www.woothemes.com/flexslider/')))
danielebarchiesi@2: . '
';
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_theme().
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_theme() {
danielebarchiesi@2: return array(
danielebarchiesi@2: // Container for nav elements (arrows)
danielebarchiesi@2: 'flexslider' => array(
danielebarchiesi@2: 'variables' => array('items' => array(), 'settings' => array()),
danielebarchiesi@2: 'template' => 'theme/flexslider',
danielebarchiesi@2: 'file' => 'theme/flexslider.theme.inc',
danielebarchiesi@2: ),
danielebarchiesi@2: 'flexslider_list' => array(
danielebarchiesi@2: 'variables' => array('items' => array(), 'settings' => array()),
danielebarchiesi@2: 'file' => 'theme/flexslider.theme.inc',
danielebarchiesi@2: ),
danielebarchiesi@2: 'flexslider_list_item' => array(
danielebarchiesi@2: 'variables' => array('item' => array(), 'settings' => array()),
danielebarchiesi@2: 'file' => 'theme/flexslider.theme.inc',
danielebarchiesi@2: ),
danielebarchiesi@2: );
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_image_default_styles().
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_image_default_styles() {
danielebarchiesi@2: $styles = array();
danielebarchiesi@2:
danielebarchiesi@2: // Default image preset for FlexSlider
danielebarchiesi@2: $styles['flexslider_full'] = array(
danielebarchiesi@2: 'effects' => array(
danielebarchiesi@2: array(
danielebarchiesi@2: 'name' => 'image_scale_and_crop',
danielebarchiesi@2: 'data' => array('width' => 800, 'height' => 500),
danielebarchiesi@2: 'weight' => 0,
danielebarchiesi@2: ),
danielebarchiesi@2: ),
danielebarchiesi@2: );
danielebarchiesi@2:
danielebarchiesi@2: // Default image preset for FlexSlider thumbnails
danielebarchiesi@2: $styles['flexslider_thumbnail'] = array(
danielebarchiesi@2: 'effects' => array(
danielebarchiesi@2: array(
danielebarchiesi@2: 'name' => 'image_scale_and_crop',
danielebarchiesi@2: 'data' => array('width' => 160, 'height' => 100),
danielebarchiesi@2: 'weight' => 0,
danielebarchiesi@2: ),
danielebarchiesi@2: ),
danielebarchiesi@2: );
danielebarchiesi@2:
danielebarchiesi@2: return $styles;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_ctools_plugin_api().
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_ctools_plugin_api($owner, $api) {
danielebarchiesi@2: if ($owner == 'flexslider' && $api == 'flexslider_default_preset') {
danielebarchiesi@2: return array('version' => 1);
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Implements hook_ctools_plugin_directory().
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_ctools_plugin_directory($module, $type) {
danielebarchiesi@2: if ($type == 'export_ui') {
danielebarchiesi@2: return 'plugins/export_ui';
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Create a new optionset object
danielebarchiesi@2: *
danielebarchiesi@2: * Note that this function does not save the optionset to the database.
danielebarchiesi@2: * @see flexslider_optionset_save()
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_optionset_create($values = array()) {
danielebarchiesi@2: ctools_include('export');
danielebarchiesi@2: $optionset = ctools_export_crud_new('flexslider_optionset');
danielebarchiesi@2:
danielebarchiesi@2: // Set the options to an array
danielebarchiesi@2: $optionset->options = array();
danielebarchiesi@2:
danielebarchiesi@2: // Assign specified values
danielebarchiesi@2: if (isset($values['name'])) {
danielebarchiesi@2: $optionset->name = $values['name'];
danielebarchiesi@2: }
danielebarchiesi@2: if (isset($values['title'])) {
danielebarchiesi@2: $optionset->title = $values['title'];
danielebarchiesi@2: }
danielebarchiesi@2: if (isset($values['options']) and is_array($values['options'])) {
danielebarchiesi@2: $optionset->options = $values['options'];
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Merge default settings with any given settings
danielebarchiesi@2: $optionset_defaults = _flexslider_optionset_defaults();
danielebarchiesi@2: $optionset->options = $optionset_defaults += $optionset->options;
danielebarchiesi@2:
danielebarchiesi@2: return $optionset;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Fetches all option sets from the database and returns them as an associative array.
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_optionset_load_all() {
danielebarchiesi@2: ctools_include('export');
danielebarchiesi@2: $optionsets = ctools_export_crud_load_all('flexslider_optionset');
danielebarchiesi@2: foreach ($optionsets as $optionset) {
danielebarchiesi@2: // Ensure the optionset is typecast after being loaded from DB
danielebarchiesi@2: _flexslider_typecast_optionset($optionset->options);
danielebarchiesi@2: }
danielebarchiesi@2: return $optionsets;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Fetches the given option set and returns it as an object or NULL, if no set could be found.
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_optionset_load($optionset_name) {
danielebarchiesi@2: ctools_include('export');
danielebarchiesi@2: $optionset = ctools_export_crud_load('flexslider_optionset', $optionset_name);
danielebarchiesi@2: // Ensure the optionset is typecast after being loaded from DB
danielebarchiesi@2: _flexslider_typecast_optionset($optionset->options);
danielebarchiesi@2: return $optionset;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Checks whether an option set with the given name already exists.
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_optionset_exists($optionset_name) {
danielebarchiesi@2: ctools_include('export');
danielebarchiesi@2: $optionset = ctools_export_crud_load('flexslider_optionset', $optionset_name);
danielebarchiesi@2: return isset($optionset->name);
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Saves the given option set to the database.
danielebarchiesi@2: * Set the $new flag if this set has not been written before.
danielebarchiesi@2: *
danielebarchiesi@2: * @return object|boolean
danielebarchiesi@2: * Returns the newly saved object, FALSE otherwise.
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_optionset_save($optionset, $new = FALSE) {
danielebarchiesi@2: // If the machine name is missing or already in use, return an error.
danielebarchiesi@2: if (empty($optionset->name) or (FALSE != flexslider_optionset_exists($optionset->name) and $new)) {
danielebarchiesi@2: return FALSE;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Check for an invalid list of options
danielebarchiesi@2: if (isset($optionset->options) and !is_array($optionset->options)) {
danielebarchiesi@2: return FALSE;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2:
danielebarchiesi@2: // If the title is missing, default to the name
danielebarchiesi@2: if (empty($optionset->title)) {
danielebarchiesi@2: $optionset->title = $optionset->name;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Merge default settings with any given settings
danielebarchiesi@2: $optionset_defaults = _flexslider_optionset_defaults();
danielebarchiesi@2: $optionset->options = $optionset_defaults += $optionset->options;
danielebarchiesi@2:
danielebarchiesi@2: // Prepare the database values.
danielebarchiesi@2: $db_values = array(
danielebarchiesi@2: 'name' => $optionset->name,
danielebarchiesi@2: 'title' => $optionset->title,
danielebarchiesi@2: 'options' => _flexslider_typecast_optionset($optionset->options),
danielebarchiesi@2: );
danielebarchiesi@2:
danielebarchiesi@2: if ($new) {
danielebarchiesi@2: $result = drupal_write_record('flexslider_optionset', $db_values);
danielebarchiesi@2: }
danielebarchiesi@2: else {
danielebarchiesi@2: $result = drupal_write_record('flexslider_optionset', $db_values, 'name');
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Return the object if the values were saved successfully.
danielebarchiesi@2: if (($new and SAVED_NEW == $result) or (!$new and SAVED_UPDATED == $result)) {
danielebarchiesi@2: return $optionset;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Otherwise, an error occured
danielebarchiesi@2: return FALSE;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Deletes the given option set from the database.
danielebarchiesi@2: *
danielebarchiesi@2: * @param object|string $optionset
danielebarchiesi@2: * Optionset object or machine name
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_optionset_delete($optionset) {
danielebarchiesi@2: if (isset($optionset->name)) {
danielebarchiesi@2: $name = $optionset->name;
danielebarchiesi@2: }
danielebarchiesi@2: else {
danielebarchiesi@2: $name = $optionset;
danielebarchiesi@2: }
danielebarchiesi@2: db_delete('flexslider_optionset')->condition('name', $name)->execute();
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /*
danielebarchiesi@2: * This function loads the required JavaScripts and settings for a flexslider
danielebarchiesi@2: * instance.
danielebarchiesi@2: *
danielebarchiesi@2: * @param string $id [optional]
danielebarchiesi@2: * ID Attribute for FlexSlider container
danielebarchiesi@2: * @param object|strong $optionset [optional]
danielebarchiesi@2: * Option set to load or the machine name of an existing optionset
danielebarchiesi@2: */
danielebarchiesi@2: function flexslider_add($id = NULL, $optionset = NULL) {
danielebarchiesi@2: // Check optionset value
danielebarchiesi@2: if (is_string($optionset)) {
danielebarchiesi@2: $name = $optionset;
danielebarchiesi@2: $optionset = flexslider_optionset_load($name);
danielebarchiesi@2: if (empty($optionset)) {
danielebarchiesi@2: watchdog('flexslider', 'Invalid optionset name supplied to flexslider_add: @name', array('@name' => $name), WATCHDOG_WARNING);
danielebarchiesi@2: return;
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Static array to remember which scripts are already attached.
danielebarchiesi@2: // @todo not currently in use
danielebarchiesi@2: $cache = &drupal_static(__FUNCTION__, array());
danielebarchiesi@2:
danielebarchiesi@2: // @todo investigate the best way to cache data loaded from libraries_load()
danielebarchiesi@2: libraries_load('flexslider');
danielebarchiesi@2:
danielebarchiesi@2: // If the ID or optionset aren't set, it is assumed the settings will be set
danielebarchiesi@2: // manually via the calling module/theme
danielebarchiesi@2: if (!empty($id) && !empty($optionset)) {
danielebarchiesi@2: // JavaScript settings
danielebarchiesi@2: $js_settings = array(
danielebarchiesi@2: 'optionsets' => array(
danielebarchiesi@2: $optionset->name => $optionset->options,
danielebarchiesi@2: ),
danielebarchiesi@2: 'instances' => array(
danielebarchiesi@2: $id => $optionset->name,
danielebarchiesi@2: ),
danielebarchiesi@2: );
danielebarchiesi@2: // @todo add alter hook for optionset
danielebarchiesi@2: drupal_add_js(array('flexslider' => $js_settings), 'setting');
danielebarchiesi@2: }
danielebarchiesi@2: // Loader JavaScript
danielebarchiesi@2: drupal_add_js(drupal_get_path('module', 'flexslider') . '/assets/js/flexslider.load.js', array('type' => 'file', 'scope' => 'footer'));
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Default settings for a newly created option set
danielebarchiesi@2: *
danielebarchiesi@2: * @param string $key [optional]
danielebarchiesi@2: * Get specific default value
danielebarchiesi@2: *
danielebarchiesi@2: * @see https://github.com/woothemes/FlexSlider/blob/master/README.mdown
danielebarchiesi@2: * @see https://github.com/woothemes/FlexSlider/wiki/FlexSlider-Properties
danielebarchiesi@2: */
danielebarchiesi@2: function _flexslider_optionset_defaults($key = NULL) {
danielebarchiesi@2:
danielebarchiesi@2: // We add typecasts to ensure the variables get json encoded properly
danielebarchiesi@2:
danielebarchiesi@2: $defaults = array(
danielebarchiesi@2: // v2.x options
danielebarchiesi@2: 'namespace' => 'flex-',
danielebarchiesi@2: 'selector' => '.slides > li',
danielebarchiesi@2: 'easing' => 'swing',
danielebarchiesi@2: 'direction' => 'horizontal',
danielebarchiesi@2: 'reverse' => FALSE, // @todo verify data value
danielebarchiesi@2: 'smoothHeight' => FALSE, // @todo verify data value
danielebarchiesi@2: 'startAt' => 0,
danielebarchiesi@2: 'animationSpeed' => 600,
danielebarchiesi@2: 'initDelay' => 0,
danielebarchiesi@2: 'useCSS' => TRUE,
danielebarchiesi@2: 'touch' => TRUE,
danielebarchiesi@2: 'video' => FALSE,
danielebarchiesi@2: 'keyboard' => TRUE,
danielebarchiesi@2: 'multipleKeyboard' => FALSE,
danielebarchiesi@2: 'mousewheel' => FALSE, // requires https://github.com/brandonaaron/jquery-mousewheel @todo add to make file
danielebarchiesi@2: 'controlsContainer' => '.flex-control-nav-container',
danielebarchiesi@2: 'sync' => '',
danielebarchiesi@2: 'asNavFor' => '',
danielebarchiesi@2: 'itemWidth' => 0,
danielebarchiesi@2: 'itemMargin' => 0,
danielebarchiesi@2: 'minItems' => 0,
danielebarchiesi@2: 'maxItems' => 0,
danielebarchiesi@2: 'move' => 0,
danielebarchiesi@2: //'start' => '',
danielebarchiesi@2: //'before' => '',
danielebarchiesi@2: //'after' => '',
danielebarchiesi@2: //'end' => '',
danielebarchiesi@2: //'added' => '',
danielebarchiesi@2: //'removed' => '',
danielebarchiesi@2:
danielebarchiesi@2: // @todo verify the 1.x options are still valid
danielebarchiesi@2: // v1.x options
danielebarchiesi@2: 'animation' => 'fade',
danielebarchiesi@2: //'animationDuration' => 6000, -- replaced by 'animationSpeed'
danielebarchiesi@2: //'slidedirection' => 'horizontal', -- replaced by "direction"
danielebarchiesi@2: 'slideshow' => TRUE,
danielebarchiesi@2: 'slideshowSpeed' => 7000,
danielebarchiesi@2: 'directionNav' => TRUE,
danielebarchiesi@2: 'controlNav' => TRUE,
danielebarchiesi@2: //'keyboardnav' => TRUE, -- replaced by 'keyboard'
danielebarchiesi@2: //'mousewheel' => FALSE,
danielebarchiesi@2: 'prevText' => t('Previous'),
danielebarchiesi@2: 'nextText' => t('Next'),
danielebarchiesi@2: 'pausePlay' => FALSE,
danielebarchiesi@2: 'pauseText' => t('Pause'),
danielebarchiesi@2: 'playText' => t('Play'),
danielebarchiesi@2: 'randomize' => FALSE,
danielebarchiesi@2: //'slidetostart' => 0, // integer value, not boolean -- replace by "startAt"
danielebarchiesi@2: 'animationLoop' => TRUE,
danielebarchiesi@2: 'pauseOnAction' => TRUE,
danielebarchiesi@2: 'pauseOnHover' => FALSE,
danielebarchiesi@2: //'controlscontainer' => '.flex-nav-container', -- updated in v2
danielebarchiesi@2: 'manualControls' => '',
danielebarchiesi@2: //'startCallback' => 'function() {}', -- replace by 'start'
danielebarchiesi@2: //'beforeCallback' => 'function() {}', -- replaced by 'before'
danielebarchiesi@2: //'afterCallback' => 'function() {}', -- replaced by 'after'
danielebarchiesi@2: //'endCallback' => 'function() {}', -- replaced by 'end'
danielebarchiesi@2: );
danielebarchiesi@2:
danielebarchiesi@2: // Typecast the values
danielebarchiesi@2: _flexslider_typecast_optionset($defaults);
danielebarchiesi@2:
danielebarchiesi@2: // Return the specific item
danielebarchiesi@2: if (isset($key) and array_key_exists($key, $defaults)) {
danielebarchiesi@2: return $defaults[$key];
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: // Return all items
danielebarchiesi@2: return $defaults;
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * Adds the typecasting to the values so that the generated
danielebarchiesi@2: * json array keeps the right values
danielebarchiesi@2: */
danielebarchiesi@2: function _flexslider_typecast_optionset(&$options) {
danielebarchiesi@2: if (isset($options) && !empty($options)) {
danielebarchiesi@2: foreach ($options as $key => $value) {
danielebarchiesi@2: switch ($key) {
danielebarchiesi@2: case 'namespace':
danielebarchiesi@2: case 'selector':
danielebarchiesi@2: case 'easing':
danielebarchiesi@2: case 'direction':
danielebarchiesi@2: case 'controlsContainer':
danielebarchiesi@2: case 'sync':
danielebarchiesi@2: case 'asNavFor':
danielebarchiesi@2: case 'fade':
danielebarchiesi@2: case 'prevText':
danielebarchiesi@2: case 'nextText':
danielebarchiesi@2: case 'pauseText':
danielebarchiesi@2: case 'playText':
danielebarchiesi@2: case 'manualControls':
danielebarchiesi@2: $options[$key] = (string)$value;
danielebarchiesi@2: break;
danielebarchiesi@2: case 'startAt':
danielebarchiesi@2: case 'animationSpeed':
danielebarchiesi@2: case 'initDelay':
danielebarchiesi@2: case 'itemWidth':
danielebarchiesi@2: case 'itemMargin':
danielebarchiesi@2: case 'minItems':
danielebarchiesi@2: case 'maxItems':
danielebarchiesi@2: case 'move':
danielebarchiesi@2: $options[$key] = (int)$value;
danielebarchiesi@2: break;
danielebarchiesi@2: case 'controlNav':
danielebarchiesi@2: if ($value == 'thumbnails') {
danielebarchiesi@2: $options[$key] = (string)$value;
danielebarchiesi@2: break;
danielebarchiesi@2: }
danielebarchiesi@2: case 'reverse':
danielebarchiesi@2: case 'smoothHeight':
danielebarchiesi@2: case 'useCSS':
danielebarchiesi@2: case 'touch':
danielebarchiesi@2: case 'video':
danielebarchiesi@2: case 'keyboard':
danielebarchiesi@2: case 'multipleKeyboard':
danielebarchiesi@2: case 'mouseWheel':
danielebarchiesi@2: case 'slideshow':
danielebarchiesi@2: case 'directionNav':
danielebarchiesi@2: case 'pausePlay':
danielebarchiesi@2: case 'randomize':
danielebarchiesi@2: case 'animationLoop':
danielebarchiesi@2: case 'pauseOnAction':
danielebarchiesi@2: case 'pauseOnHover':
danielebarchiesi@2: $options[$key] = (boolean)$value;
danielebarchiesi@2: break;
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2: }
danielebarchiesi@2:
danielebarchiesi@2: /**
danielebarchiesi@2: * List of all easing methods available from jQuery Easing v1.3
danielebarchiesi@2: */
danielebarchiesi@2: function _flexslider_jqeasing_options() {
danielebarchiesi@2: return array(
danielebarchiesi@2: "jswing" => "jswing",
danielebarchiesi@2: "def" => "def",
danielebarchiesi@2: "easeInQuad" => "easeInQuad",
danielebarchiesi@2: "easeOutQuad" => "easeOutQuad",
danielebarchiesi@2: "easeInOutQuad" => "easeInOutQuad",
danielebarchiesi@2: "easeInCubic" => "easeInCubic",
danielebarchiesi@2: "easeOutCubic" => "easeOutCubic",
danielebarchiesi@2: "easeInOutCubic" => "easeInOutCubic",
danielebarchiesi@2: "easeInQuart" => "easeInQuart",
danielebarchiesi@2: "easeOutQuart" => "easeOutQuart",
danielebarchiesi@2: "easeInOutQuart" => "easeInOutQuart",
danielebarchiesi@2: "easeInQuint" => "easeInQuint",
danielebarchiesi@2: "easeOutQuint" => "easeOutQuint",
danielebarchiesi@2: "easeInOutQuint" => "easeInOutQuint",
danielebarchiesi@2: "easeInSine" => "easeInSine",
danielebarchiesi@2: "easeOutSine" => "easeOutSine",
danielebarchiesi@2: "easeInOutSine" => "easeInOutSine",
danielebarchiesi@2: "easeInExpo" => "easeInExpo",
danielebarchiesi@2: "easeOutExpo" => "easeOutExpo",
danielebarchiesi@2: "easeInOutExpo" => "easeInOutExpo",
danielebarchiesi@2: "easeInCirc" => "easeInCirc",
danielebarchiesi@2: "easeOutCirc" => "easeOutCirc",
danielebarchiesi@2: "easeInOutCirc" => "easeInOutCirc",
danielebarchiesi@2: "easeInElastic" => "easeInElastic",
danielebarchiesi@2: "easeOutElastic" => "easeOutElastic",
danielebarchiesi@2: "easeInOutElastic" => "easeInOutElastic",
danielebarchiesi@2: "easeInBack" => "easeInBack",
danielebarchiesi@2: "easeOutBack" => "easeOutBack",
danielebarchiesi@2: "easeInOutBack" => "easeInOutBack",
danielebarchiesi@2: "easeInBounce" => "easeInBounce",
danielebarchiesi@2: "easeOutBounce" => "easeOutBounce",
danielebarchiesi@2: "easeInOutBounce" => "easeInOutBounce",
danielebarchiesi@2: );
danielebarchiesi@2: }