WebformManagedFileBase.php in Webform 6.x
Same filename in this branch
Same filename and directory in other branches
Namespace
Drupal\webform\ElementFile
src/Element/WebformManagedFileBase.phpView source
<?php
namespace Drupal\webform\Element;
use Drupal\Core\Render\Element\FormElement;
use Drupal\file\Element\ManagedFile;
// As we do not force dependency on the core file module, we do this If
// statement. So if File module is enabled, we use it, otherwise we fallback on
// useless dummy implementation just to keep PHP interpreter happy about
// inheriting an existing class.
if (class_exists('\\Drupal\\file\\Element\\ManagedFile')) {
/**
* Provides a base class for 'managed_file' elements.
*/
abstract class WebformManagedFileBase extends ManagedFile {
/**
* The types of files that the server accepts.
*
* @var string
*
* @see https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/file#accept
*/
protected static $accept;
/**
* {@inheritdoc}
*/
public function getInfo() {
$info = parent::getInfo();
$info['#pre_render'][] = [
get_class($this),
'preRenderWebformManagedFile',
];
return $info;
}
/**
* Render API callback: Adds media capture to the managed_file element type.
*/
public static function preRenderWebformManagedFile($element) {
// Set accept and capture attributes.
if (isset($element['upload']) && static::$accept) {
$element['upload']['#attributes']['accept'] = static::$accept;
}
// Add class name to wrapper attributes.
$class_name = str_replace('_', '-', $element['#type']);
static::setAttributes($element, [
'js-' . $class_name,
$class_name,
]);
return $element;
}
}
}
else {
/**
* Provides a empty base class for 'managed_file' elements.
*/
abstract class WebformManagedFileBase extends FormElement {
/**
* {@inheritdoc}
*/
public function getInfo() {
return [];
}
}
}