Mercurial > hg > isophonics-drupal-site
diff core/lib/Drupal/Core/Asset/AssetResolverInterface.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/core/lib/Drupal/Core/Asset/AssetResolverInterface.php Wed Nov 29 16:09:58 2017 +0000 @@ -0,0 +1,83 @@ +<?php + +namespace Drupal\Core\Asset; + +/** + * Resolves asset libraries into concrete CSS and JavaScript assets. + * + * Given an attached assets collection (to be loaded for the current response), + * the asset resolver can resolve those asset libraries into a list of concrete + * CSS and JavaScript assets. + * + * In other words: this allows developers to translate Drupal's asset + * abstraction (asset libraries) into concrete assets. + * + * @see \Drupal\Core\Asset\AttachedAssetsInterface + * @see \Drupal\Core\Asset\LibraryDependencyResolverInterface + */ +interface AssetResolverInterface { + + /** + * Returns the CSS assets for the current response's libraries. + * + * It returns the CSS assets in order, according to the SMACSS categories + * specified in the assets' weights: + * - CSS_BASE + * - CSS_LAYOUT + * - CSS_COMPONENT + * - CSS_STATE + * - CSS_THEME + * @see https://www.drupal.org/node/1887918#separate-concerns + * This ensures proper cascading of styles so themes can easily override + * module styles through CSS selectors. + * + * Themes may replace module-defined CSS files by adding a stylesheet with the + * same filename. For example, themes/bartik/system-menus.css would replace + * modules/system/system-menus.css. This allows themes to override complete + * CSS files, rather than specific selectors, when necessary. + * + * Also invokes hook_css_alter(), to allow CSS assets to be altered. + * + * @param \Drupal\Core\Asset\AttachedAssetsInterface $assets + * The assets attached to the current response. + * @param bool $optimize + * Whether to apply the CSS asset collection optimizer, to return an + * optimized CSS asset collection rather than an unoptimized one. + * + * @return array + * A (possibly optimized) collection of CSS assets. + */ + public function getCssAssets(AttachedAssetsInterface $assets, $optimize); + + /** + * Returns the JavaScript assets for the current response's libraries. + * + * References to JavaScript files are placed in a certain order: first, all + * 'core' files, then all 'module' and finally all 'theme' JavaScript files + * are added to the page. Then, all settings are output, followed by 'inline' + * JavaScript code. If running update.php, all preprocessing is disabled. + * + * Note that hook_js_alter(&$javascript) is called during this function call + * to allow alterations of the JavaScript during its presentation. The correct + * way to add JavaScript during hook_js_alter() is to add another element to + * the $javascript array, deriving from drupal_js_defaults(). See + * locale_js_alter() for an example of this. + * + * @param \Drupal\Core\Asset\AttachedAssetsInterface $assets + * The assets attached to the current response. + * Note that this object is modified to reflect the final JavaScript + * settings assets. + * @param bool $optimize + * Whether to apply the JavaScript asset collection optimizer, to return + * optimized JavaScript asset collections rather than an unoptimized ones. + * + * @return array + * A nested array containing 2 values: + * - at index zero: the (possibly optimized) collection of JavaScript assets + * for the top of the page + * - at index one: the (possibly optimized) collection of JavaScript assets + * for the bottom of the page + */ + public function getJsAssets(AttachedAssetsInterface $assets, $optimize); + +}