X-Git-Url: http://aleph1.co.uk/gitweb/?a=blobdiff_plain;f=web%2Fmodules%2Fcontrib%2Fslick%2Fslick.api.php;h=4620e0f708f82405dd857e52bb541723ff2f32e9;hb=9917807b03b64faf00f6a1f29dcb6eafc454efa5;hp=468b11aa24e94b0e334ce8a5dfe892b7ef5da92b;hpb=a2bd1bf0c2c1f1a17d188f4dc0726a45494cefae;p=yaffs-website diff --git a/web/modules/contrib/slick/slick.api.php b/web/modules/contrib/slick/slick.api.php index 468b11aa2..4620e0f70 100644 --- a/web/modules/contrib/slick/slick.api.php +++ b/web/modules/contrib/slick/slick.api.php @@ -3,13 +3,16 @@ /** * @file * Hooks and API provided by the Slick module. - * - * Modules may implement any of the available hooks to interact with Slick. */ /** - * Slick may be configured using the web interface via sub-modules. + * @defgroup slick_api Slick API + * @{ + * Information about the Slick usages. * + * Modules may implement any of the available hooks to interact with Slick. + * + * Slick may be configured using the web interface via sub-modules. * However below is a few sample coded ones. The simple API is to achieve * consistent markups working for various skins, and layouts for both coded * and sub-modules implementations. @@ -18,77 +21,74 @@ * - items: A required array of slick contents: text, image or media. * - options: An optional array of key:value pairs of custom JS options. * - optionset: An optional optionset object to avoid multiple invocations. - * - settings: An array of key:value pairs of HTML/layout related settings. + * - settings: An array of key:value pairs of HTML/layout related settings + * which may contain optionset ID if no optionset above is provided. * * @see \Drupal\slick\Plugin\Field\FieldFormatter\SlickImageFormatter * @see \Drupal\slick_views\Plugin\views\style\SlickViews - */ - -/** - * Quick sample #1. * + * @section sec_quick Quick sample #1 + * + * Returns the renderable array of a slick instance. + * @code + * function my_module_render_slick() { + * // Invoke the plugin class, or use a DI service container accordingly. + * $slick = \Drupal::service('slick.manager'); + * + * // Access the formatter service for image-related methods: + * $formatter = \Drupal::service('slick.formatter'); + * + * $build = []; + * + * // Caption contains: alt, data, link, overlay, title. + * // Each item has keys: slide, caption, settings. + * $items[] = [ + * // Use $formatter->getImage($element) to have lazyLoad where $element + * // contains: + * // item: Drupal\image\Plugin\Field\FieldType\ImageItem. + * 'slide' => '', + * 'caption' => ['title' => t('Description #1')], + * ]; + * + * $items[] = [ + * 'slide' => '', + * 'caption' => ['title' => t('Description #2')], + * ]; + * + * $items[] = [ + * 'slide' => '', + * 'caption' => ['title' => t('Description #3')], + * ]; + * + * // Pass the $items to the array. + * $build['items'] = $items; + * + * // If no optionset name is provided via $build['settings'], slick will + * // fallback to 'default'. + * // Optionally override 'default' optionset with custom JS options. + * $build['options'] = [ + * 'autoplay' => TRUE, + * 'dots' => TRUE, + * 'arrows' => FALSE, + * ]; + * + * // Build the slick. + * $element = $slick->build($build); + * + * // Prepare $variables to pass into a .twig.html file. + * $variables['slick'] = $element; + * + * // Render the slick at a .twig.html file. + * // {{ slick }} + * // Or simply return the $element if a renderable array is expected. + * return $element; + * } + * @endcode * @see \Drupal\slick\SlickManager::build() * @see template_preprocess_slick_wrapper() * @see template_preprocess_slick() * - * @return array - * The renderable array of a slick instance. - */ -function my_module_render_slick() { - // Invoke the plugin class, or use a DI service container accordingly. - $slick = \Drupal::service('slick.manager'); - - // Access the formatter service for image-related methods: - $formatter = \Drupal::service('slick.formatter'); - - $build = []; - - // Caption contains: alt, data, link, overlay, title. - // Each item has keys: slide, caption, settings. - $items[] = [ - // Use $formatter->getImage($element) to have lazyLoad where $element - // contains: - // item: Drupal\image\Plugin\Field\FieldType\ImageItem. - 'slide' => '', - 'caption' => ['title' => t('Description #1')], - ]; - - $items[] = [ - 'slide' => '', - 'caption' => ['title' => t('Description #2')], - ]; - - $items[] = [ - 'slide' => '', - 'caption' => ['title' => t('Description #3')], - ]; - - // Pass the $items to the array. - $build['items'] = $items; - - // If no optionset name is provided via $build['settings'], slick will - // fallback to 'default'. - // Optionally override 'default' optionset with custom JS options. - $build['options'] = [ - 'autoplay' => TRUE, - 'dots' => TRUE, - 'arrows' => FALSE, - ]; - - // Build the slick. - $element = $slick->build($build); - - // Prepare $variables to pass into a .twig.html file. - $variables['slick'] = $element; - - // Render the slick at a .twig.html file. - // {{ slick }} - // Or simply return the $element if a renderable array is expected. - return $element; -} - -/** - * Detailed sample #2. + * @section sec_detail Detailed sample #2 * * This can go to some hook_preprocess() of a target html.twig, or any relevant * PHP file. @@ -97,111 +97,112 @@ function my_module_render_slick() { * First, create an unformatted Views block, says 'Ticker' containing ~ 10 * titles, or any data for the contents -- using EFQ, or static array will do. * - * @return array - * The renderable array of a slick instance. - */ -function my_module_render_slick_detail() { - // Invoke the plugin class, or use a DI service container accordingly. - $slick = \Drupal::service('slick.manager'); - - // Access the formatter service for image related methods: - $formatter = \Drupal::service('slick.formatter'); - - $build = []; - - // 1. - // Optional $settings, can be removed. - // Provides HTML settings with optionset name and ID, none of JS related. - // To add JS key:value pairs, use #options below instead. - // @see \Drupal\slick\SlickDefault for most supported settings. - $build['settings'] = [ - // Optional optionset name, otherwise fallback to default. - // 'optionset' => 'blog', - // Optional skin name fetched from hook_slick_skins_info(), otherwise none. - // 'skin' => 'fullwidth', - // Define the main ID. The rest are managed by the module. - // If you provide ID, be sure unique per instance as it is cached. - // Leave empty to be provided by the module. - 'id' => 'slick-ticker', - - // Define the cache max-age, default to -1 (Cache::PERMANENT) to permanently - // cache the results. Hence a 1 hour is passed. Be sure it is an integer! - 'cache' => 3600, - ]; - - // 3. - // Obligatory #items, as otherwise empty slick. - // Prepare #items contents, note the 'slide' key is to hold the actual slide - // which can be pure and simple text, or any image/media file. - // Meaning $rows can be text only, or image/audio/video, or a combination - // of both. - // To add caption/overlay, use 'caption' key with the supported sub-keys: - // alt, data, link, overlay, title for complex content. - // Sanitize each sub-key content accordingly. - // @see template_preprocess_slick_slide() for more info. - $items = []; - foreach ($rows as $key => $row) { - // Each item has keys: slide, caption, settings. - $items[] = [ - 'slide' => $row, - - // Optional caption contains: alt, data, link, overlay, title. - // If the above slide is an image, to add text caption, use: - 'caption' => ['title' => 'some-caption data'], - - // Optional slide settings to manipulate layout, can be removed. - // Individual slide supports some useful settings like layout, classes, - // etc. - // Meaning each slide can have different layout, or classes. - // @see src/Plugin/Field/README.txt - 'settings' => [ - - // Optionally add a custom layout, can be a static uniform value, or - // dynamic one based on the relevant field value. - // @see src/Plugin/Field/README.txt for the supported layout keys. - 'layout' => 'bottom', - - // Optionally add a custom class, can be a static uniform class, or - // dynamic one based on the relevant field value. - 'class' => 'slide--custom-class--' . $key, - ], - ]; - } - - // Pass the $items to the array. - $build['items'] = $items; - - // 4. - // Optional specific JS options, to re-use one optionset, can be removed. - // Play with speed and options to achieve desired result. - // @see config/install/slick.optionset.default.yml - $build['options'] = [ - 'arrows' => FALSE, - 'autoplay' => TRUE, - 'vertical' => TRUE, - 'draggable' => FALSE, - ]; - - // 5. - // Build the slick with the arguments as described above. - $element = $slick->build($build); - - // Prepare $variables to pass into a .twig.html file. - $variables['slick'] = $element; - - // Render the slick at a .twig.html file. - // {{ slick }} - // Or simply return the $element if a renderable array is expected. - return $element; -} - -/** - * AsNavFor sample #3. + * Returns the renderable array of a slick instance. + * @code + * function my_module_render_slick_detail() { + * // Invoke the plugin class, or use a DI service container accordingly. + * $slick = \Drupal::service('slick.manager'); + * + * // Access the formatter service for image related methods: + * $formatter = \Drupal::service('slick.formatter'); + * + * $build = []; + * + * // 1. + * // Optional $settings, can be removed. + * // Provides HTML settings with optionset name and ID, none of JS related. + * // To add JS key:value pairs, use #options below instead. + * // @see \Drupal\slick\SlickDefault for most supported settings. + * $build['settings'] = [ + * // Optional optionset name, otherwise fallback to default. + * // 'optionset' => 'blog', + * // Optional skin name fetched from hook_slick_skins_info(), else none. + * // 'skin' => 'fullwidth', + * // Define the main ID. The rest are managed by the module. + * // If you provide ID, be sure unique per instance as it is cached. + * // Leave empty to be provided by the module. + * 'id' => 'slick-ticker', + * + * // Define cache max-age, default to -1 (Cache::PERMANENT) to permanently + * // cache the results. Hence a 1 hour is passed. Be sure it is an integer! + * 'cache' => 3600, + * ]; + * + * // 3. + * // Obligatory #items, as otherwise empty slick. + * // Prepare #items, note the 'slide' key is to hold the actual slide + * // which can be pure and simple text, or any image/media file. + * // Meaning $rows can be text only, or image/audio/video, or a combination + * // of both. + * // To add caption/overlay, use 'caption' key with the supported sub-keys: + * // alt, data, link, overlay, title for complex content. + * // Sanitize each sub-key content accordingly. + * // @see template_preprocess_slick_slide() for more info. + * $items = []; + * foreach ($rows as $key => $row) { + * // Each item has keys: slide, caption, settings. + * $items[] = [ + * 'slide' => $row, + * + * // Optional caption contains: alt, data, link, overlay, title. + * // If the above slide is an image, to add text caption, use: + * 'caption' => ['title' => 'some-caption data'], * - * The only requirement for asNavFor is: + * // Optional slide settings to manipulate layout, can be removed. + * // Individual slide supports some useful settings like layout, classes, + * // etc. + * // Meaning each slide can have different layout, or classes. + * // @see src/Plugin/Field/README.txt + * 'settings' => [ + * + * // Optionally add a custom layout, can be a static uniform value, or + * // dynamic one based on the relevant field value. + * // @see src/Plugin/Field/README.txt for the supported layout keys. + * 'layout' => 'bottom', + * + * // Optionally add a custom class, can be a static uniform class, or + * // dynamic one based on the relevant field value. + * 'class' => 'slide--custom-class--' . $key, + * ], + * ]; + * } + * + * // Pass the $items to the array. + * $build['items'] = $items; + * + * // 4. + * // Optional specific JS options, to re-use one optionset, can be removed. + * // Play with speed and options to achieve desired result. + * // @see config/install/slick.optionset.default.yml + * $build['options'] = [ + * 'arrows' => FALSE, + * 'autoplay' => TRUE, + * 'vertical' => TRUE, + * 'draggable' => FALSE, + * ]; + * + * // 5. + * // Build the slick with the arguments as described above. + * $element = $slick->build($build); + * + * // Prepare $variables to pass into a .twig.html file. + * $variables['slick'] = $element; + * + * // Render the slick at a .twig.html file. + * // {{ slick }} + * // Or simply return the $element if a renderable array is expected. + * return $element; + * } + * @endcode + * @see \Drupal\slick\SlickManager::build() + * @see template_preprocess_slick_wrapper() + * + * @section sec_asnavfor AsNavFor sample #3 + * + * The only requirement for asNavFor is optionset and optionset_thumbnail IDs: * @code - * $build['settings']['optionset'] = 'optionset_name'; - * $build['settings']['optionset_thumbnail'] = 'optionset_thumbnail_name'; + * $build['settings']['optionset'] = 'optionset_name'; + * $build['settings']['optionset_thumbnail'] = 'optionset_thumbnail_name'; * @endcode * * The rest are optional, and will fallback to default: @@ -217,126 +218,261 @@ function my_module_render_slick_detail() { * See the HTML structure below to get a clear idea. * * 1. Main slider: - * \n @code + * @code *
*
*
*
*
- * @endcode \n + * @endcode * 2. Thumbnail slider: - * \n @code + * @code *
*
*
*
*
- * @endcode \n + * @endcode * The asnavfor targets are the 'slick-initialized' attributes, and managed by * the module automatically when using SlickManager::build(). * + * Returns the renderable array of slick instances. + * @code + * function my_module_render_slick_asnavfor() { + * // Invoke the plugin class, or use a DI service container accordingly. + * $slick = \Drupal::service('slick.manager'); + * + * // Access the formatter service for image related methods: + * $formatter = \Drupal::service('slick.formatter'); + * + * $build = []; + * + * // 1. Main slider --------------------------------------------------------- + * // Add the main display items. + * $build['items'] = []; + * + * $images = [1, 2, 3, 4, 6, 7]; + * foreach ($images as $key) { + * // Each item has keys: slide, caption, settings. + * $build['items'][] = [ + * + * // Use $formatter->getImage($element) to have lazyLoad where $element + * // contains: + * // item: Drupal\image\Plugin\Field\FieldType\ImageItem. + * 'slide' => '', + * + * // Main caption contains: alt, data, link, overlay, title keys which + * // serve the purpose to have consistent markups and skins without + * // bothering much nor remembering what HTML tags and where to place to + * // provide for each purpose cosnsitently. CSS will do layout regardless + * // HTML composition. + * // If having more complex caption data, use 'data' key instead. + * // If the common layout doesn't satisfy the need, just override twig. + * 'caption' => ['title' => 'Description #' . $key], + * ]; + * } + * + * // Optionally override the optionset. + * $build['options'] = [ + * 'arrows' => FALSE, + * 'centerMode' => TRUE, + * 'centerPadding' => '', + * ]; + * + * // Satisfy the asnavfor main settings. + * // @see \Drupal\slick\SlickDefault for most supported settings. + * $build['settings'] = [ + * // The only required is 'optionset_thumbnail'. + * // Define both main and thumbnail optionset names at the main display. + * 'optionset' => 'optionset_main_name', + * 'optionset_thumbnail' => 'optionset_thumbnail_name', + * + * // The rest is optional, just FYI. + * 'id' => 'slick-asnavfor', + * 'skin' => 'skin-main-name', + * 'skin_thumbnail' => 'skin-thumbnail-name', + * ]; + * + * // 2. Thumbnail slider ---------------------------------------------------- + * // The thumbnail array is grouped by 'thumb'. + * $build['thumb'] = ['items' => []]; + * foreach ($images as $key) { + * // Each item has keys: slide, caption, settings. + * $build['thumb']['items'][] = [ + * // Use $formatter->getThumbnail($settings) where $settings contain: + * // uri, image_style, height, width, alt, title. + * 'slide' => '', + * + * // Thumbnail caption accepts direct markup or custom renderable array + * // without any special key to be simple as much as complex. + * // Think Youtube playlist with scrolling nav: thumbnail, text, etc. + * 'caption' => ['#markup' => 'Description #' . $key], + * ]; + * } + * + * // Optionally override 'optionset_thumbnail_name' with custom JS options. + * $build['thumb']['options'] = [ + * 'arrows' => TRUE, + * 'centerMode' => TRUE, + * 'centerPadding' => '10px', + * + * // Be sure to have multiple slides for the thumbnail, otherwise nonsense. + * 'slidesToShow' => 5, + * ]; + * + * // Build the slick once. + * $element = $slick->build($build); + * + * // Prepare variables to pass into a .twig.html file. + * $variables['slick'] = $element; + * + * // Render the slick at a .twig.html file. + * // {{ slick }} + * // Or simply return the $element if a renderable array is expected. + * return $element; + * } + * @endcode + * @see \Drupal\slick\SlickManager::build() + * @see template_preprocess_slick_wrapper() + * + * @section sec_skin Registering Slick skins + * + * To register a skin, implement hook_slick_skins_info() in a module file, and + * defines skins at the registered class which implements SlickSkinInterface. + * + * The class must implement \Drupal\slick\SlickSkinInterface, and it has 3 + * supported methods: ::skins(), ::dots(), ::arrows() to have skin options for + * main/thumbnail/overlay/nested displays, dots, and arrows skins respectively. + * The declared skins will be available for custom coded, or UI selections. + * + * @see \Drupal\slick\SlickSkinInterface + * @see \Drupal\slick_example\SlickExampleSkin + * @see \Drupal\slick_extras\SlickExtrasSkin + * + * Add the needed methods accordingly. + * This can be used to register skins for the Slick. Skins will be + * available when configuring the Optionset, Field formatter, or Views style, + * or custom coded slicks. + * + * Slick skins get a unique CSS class to use for styling, e.g.: + * If your skin name is "my_module_slick_carousel_rounded", the CSS class is: + * slick--skin--my-module-slick-carousel-rounded + * + * A skin can specify CSS and JS files to include when Slick is displayed, + * except for a thumbnail skin which accepts CSS only. + * + * Each skin supports 5 keys: + * - name: The human readable name of the skin. + * - description: The description about the skin, for help and manage pages. + * - css: An array of CSS files to attach. + * - js: An array of JS files to attach, e.g.: image zoomer, reflection, etc. + * - group: A string grouping the current skin: main, thumbnail. + * - provider: A module name registering the skins. + * + * @section sec_skins Defines the Slick main and thumbnail skins + * + * @code + * public function skins() { + * $theme_path = base_path() . drupal_get_path('theme', 'my_theme'); + * + * return [ + * 'skin_name' => [ + * // Human readable skin name. + * 'name' => 'Skin name', + * + * // Description of the skin. + * 'description' => t('Skin description.'), + * + * // Group skins to reduce confusion on form selection: main, thumbnail. + * 'group' => 'main', + * + * // Optional module name to prefix the library name. + * 'provider' => 'my_module', + * + * // Custom assets to be included within a skin, e.g.: Zoom, Reflection, + * // Slicebox, etc. + * 'css' => [ + * 'theme' => [ + * // Full path to a CSS file to include with the skin. + * $theme_path . '/css/my-theme--slider.css' => [], + * $theme_path . '/css/my-theme--carousel.css' => [], + * ], + * ], + * 'js' => [ + * // Full path to a JS file to include with the skin. + * $theme_path . '/js/my-theme--slider.js' => [], + * $theme_path . '/js/my-theme--carousel.js' => [], + * // To act on afterSlick event, or any other slick events, + * // put a lighter weight before slick.load.min.js (0). + * $theme_path . '/js/slick.skin.menu.min.js' => ['weight' => -2], + * ], + * + * // Alternatively, add extra library dependencies for re-usable + * // libraries. These must be registered as module libraries first. + * // Use above CSS and JS directly if reluctant to register libraries. + * 'dependencies' => [ + * 'my_module/d3', + * 'my_module/slicebox', + * 'my_module/zoom', + * ], + * + * // Add custom options to be merged into [data-slick] attribute. + * // Below is a sample of Slicebox options merged into Slick options. + * // These options later can be accessed in the custom JS acccordingly. + * 'options' => [ + * 'orientation' => 'r', + * 'cuboidsCount' => 7, + * 'maxCuboidsCount' => 7, + * 'cuboidsRandom' => TRUE, + * 'disperseFactor' => 30, + * 'itemAnimation' => TRUE, + * 'perspective' => 1300, + * 'reflection' => TRUE, + * 'effect' => ['slicebox', 'zoom'], + * ], + * ], + * ]; + * } + * @endcode + * + * @section sec_dots Defines Slick dot skins + * + * The provided dot skins will be available at sub-module UI form. + * A skin dot named 'hop' will have a class 'slick-dots--hop' for the UL. + * + * The array is similar to the self::skins(), excluding group, JS. + * @code + * public function dots() { + * // Create an array of dot skins. + * return []; + * } + * @endcode + * + * @section sec_arrows Defines Slick arrow skins + * + * The provided arrow skins will be available at sub-module UI form. + * A skin arrow 'slit' will have a class 'slick__arrow--slit' for the NAV. + * + * The array is similar to the self::skins(), excluding group, JS. + * * @return array - * The renderable array of slick instances. + * The array of the arrow skins. + * @code + * public function arrows() { + * // Create an array of arrow skins. + * return []; + * } + * @endcode + * @} */ -function my_module_render_slick_asnavfor() { - // Invoke the plugin class, or use a DI service container accordingly. - $slick = \Drupal::service('slick.manager'); - - // Access the formatter service for image related methods: - $formatter = \Drupal::service('slick.formatter'); - - $build = []; - - // 1. Main slider ------------------------------------------------------------ - // Add the main display items. - $build['items'] = []; - - // Use theme_slick_image to have lazyLoad, or theme_image_style/theme_image. - $images = [1, 2, 3, 4, 6, 7]; - foreach ($images as $key) { - // Each item has keys: slide, caption, settings. - $build['items'][] = [ - - // Use $formatter->getImage($element) to have lazyLoad where $element - // contains: - // item: Drupal\image\Plugin\Field\FieldType\ImageItem. - 'slide' => '', - - // Main caption contains: alt, data, link, overlay, title keys which serve - // the purpose to have consistent markups and skins without bothering much - // nor remembering what HTML tags and where to place to provide for each - // purpose cosnsitently. CSS will do layout regardless HTML composition. - // If having more complex caption data, use 'data' key instead. - // If the common layout doesn't satisfy the need, just override the twig. - 'caption' => ['title' => 'Description #' . $key], - ]; - } - - // Optionally override the optionset. - $build['options'] = [ - 'arrows' => FALSE, - 'centerMode' => TRUE, - 'centerPadding' => '', - ]; - - // Satisfy the asnavfor main settings. - // @see \Drupal\slick\SlickDefault for most supported settings. - $build['settings'] = [ - // The only required is 'optionset_thumbnail'. - // Define both main and thumbnail optionset names once at the main display. - 'optionset' => 'optionset_main_name', - 'optionset_thumbnail' => 'optionset_thumbnail_name', - - // The rest is optional, just FYI. - 'id' => 'slick-asnavfor', - 'skin' => 'skin-main-name', - 'skin_thumbnail' => 'skin-thumbnail-name', - ]; - - // 2. Thumbnail slider ------------------------------------------------------- - // The thumbnail array is grouped by 'thumb'. - $build['thumb'] = ['items' => []]; - foreach ($images as $key) { - // Each item has keys: slide, caption, settings. - $build['thumb']['items'][] = [ - // Use $formatter->getThumbnail($settings) where $settings contain: - // uri, image_style, height, width, alt, title. - 'slide' => '', - - // Thumbnail caption accepts direct markup or custom renderable array - // without any special key to be simple as much as complex. - // Think Youtube playlist with scrolling navigation: thumbnail, text, etc. - 'caption' => ['#markup' => 'Description #' . $key], - ]; - } - - // Optionally override 'optionset_thumbnail_name' with custom JS options. - $build['thumb']['options'] = [ - 'arrows' => TRUE, - 'centerMode' => TRUE, - 'centerPadding' => '10px', - - // Be sure to have multiple slides for the thumbnail, otherwise nonsense. - 'slidesToShow' => 5, - ]; - // Build the slick once. - $element = $slick->build($build); - - // Prepare variables to pass into a .twig.html file. - $variables['slick'] = $element; - - // Render the slick at a .twig.html file. - // {{ slick }} - // Or simply return the $element if a renderable array is expected. - return $element; -} +/** + * @addtogroup hooks + * @{ + */ /** - * Implements hook_slick_skins_info(). - * - * Registers a class that should hold skin definitions and implements - * \Drupal\slick\SlickSkinInterface. + * Registers a class that should hold skin definitions. * * @deprecated, will be removed anytime when a core solution is available. * @see #2233261 @@ -346,86 +482,26 @@ function my_module_render_slick_asnavfor() { * @see slick_example.module * @see slick_extras.module * @see \Drupal\slick\SlickSkinInterface + * @see sec_skin + * + * @ingroup slick_api */ function hook_slick_skins_info() { - return '\Drupal\hook\HookSlickSkin'; + return '\Drupal\my_module\MyModuleSlickSkin'; } /** - * Implements SlickSkinInterface as registered via hook_slick_skins_info(). + * Modifies overridable options to re-use one optionset. * - * The class must implement \Drupal\slick\SlickSkinInterface, and it has 3 - * supported methods: ::skins(), ::dots(), ::arrows() to have skin options for - * main/thumbnail/overlay/nested displays, dots, and arrows skins respectively. - * The declared skins will be available for custom coded, or UI selections. + * @see \Drupal\slick\Form\SlickAdmin::getOverridableOptions() + * + * @ingroup slick_api */ -class HookSlickSkin implements SlickSkinInterface { - - /** - * {@inheritdoc} - */ - public function skins() { - $theme_path = base_path() . drupal_get_path('theme', 'my_theme'); - - return [ - 'skin_name' => [ - // Human readable skin name. - 'name' => 'Skin name', - // Description of the skin. - 'description' => t('Skin description.'), - // To reduce confusion on form selection: main, thumbnail. - 'group' => 'main', - // Optional module name to prefix the library name. - 'provider' => 'my_module', - 'css' => [ - 'theme' => [ - // Full path to a CSS file to include with the skin. - $theme_path . '/css/my-theme--slider.css' => [], - $theme_path . '/css/my-theme--carousel.css' => [], - ], - ], - 'js' => [ - // Full path to a JS file to include with the skin. - $theme_path . '/js/my-theme--slider.js' => [], - $theme_path . '/js/my-theme--carousel.js' => [], - // If you want to act on afterSlick event, or any other slick events, - // put a lighter weight before slick.load.min.js (0). - $theme_path . '/js/slick.skin.menu.min.js' => ['weight' => -2], - ], - ], - ]; - } - - /** - * Returns the Slick dot skins. - * - * The provided dot skins will be available at sub-module UI form. - * A skin dot named 'hop' will have a class 'slick-dots--hop' for the UL. - * - * The array is similar to the self::skins(), excluding group, JS. - * - * @return array - * The array of the dot skins. - */ - public function dots() { - // Create an array of dot skins. - return []; - } - - /** - * Returns the Slick arrow skins. - * - * The provided arrow skins will be available at sub-module UI form. - * A skin arrow 'slit' will have a class 'slick__arrow--slit' for the NAV. - * - * The array is similar to the self::skins(), excluding group, JS. - * - * @return array - * The array of the arrow skins. - */ - public function arrows() { - // Create an array of arrow skins. - return []; - } - +function hook_slick_overridable_options_info_alter(&$options) { + // Adds RTL option to Slick field formatters, or Slick Views UI. + $options['rtl'] = t('RTL'); } + +/** + * @} End of "addtogroup hooks". + */