public function JuiceboxFormatter::newGallery in Juicebox HTML5 Responsive Image Galleries 8.3
Same name and namespace in other branches
- 8.2 src/JuiceboxFormatter.php \Drupal\juicebox\JuiceboxFormatter::newGallery()
Create and initialize a new Juicebox gallery object.
Parameters
array $id_args: An indexed array of simple string arguments that describe this gallery. This is typically based on the arguments that will be used to create a URL for the gallery XML, but no formal structure is strictly required. This information should uniquely identify the gallery.
Return value
Drupal\juicebox\JuiceboxGalleryInterface An initialized Juicebox gallery object.
Overrides JuiceboxFormatterInterface::newGallery
File
- src/
JuiceboxFormatter.php, line 158
Class
- JuiceboxFormatter
- Class to define a Drupal service with common formatter methods.
Namespace
Drupal\juiceboxCode
public function newGallery(array $id_args) {
// Calculate the gallery ID.
$id = '';
foreach ($id_args as $arg) {
// Drop special characters in individual args and delimit by double-dash.
$arg = preg_replace('/[^0-9a-zA-Z-]/', '-', $arg);
$id .= $arg . '--';
}
$id = trim($id, '- ');
// Get the library data. We do this early (before instantiating) as the lib
// details should be allowed to impact which classes are used.
$library = $this
->getLibrary();
// Calculate the class that needs to be instantiated allowing modules to
// alter the result.
$class = 'Drupal\\juicebox\\JuiceboxGallery';
$this->moduleManager
->alter('juicebox_gallery_class', $class, $library);
// Instantiate the Juicebox gallery objects.
$object_settings = [
'filter_markup' => $this->configFactory
->get('juicebox.settings')
->get('apply_markup_filter'),
'process_attributes' => FALSE,
];
$gallery = new $class($id, $object_settings);
if ($gallery instanceof JuiceboxGalleryInterface) {
return $gallery;
}
throw new \Exception('Could not instantiate Juicebox gallery.');
}