class ImageWidget in PlUPload File Widget 8
Plugin annotation
@FieldWidget(
  id = "plupload_image_widget",
  label = @Translation("PLupload widget"),
  field_types = {
    "image"
  }
)
Hierarchy
- class \Drupal\Component\Plugin\PluginBase implements DerivativeInspectionInterface, PluginInspectionInterface- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait- class \Drupal\Core\Field\PluginSettingsBase implements DependentPluginInterface, PluginSettingsInterface- class \Drupal\Core\Field\WidgetBase implements WidgetInterface, ContainerFactoryPluginInterface uses AllowedTagsXssTrait- class \Drupal\file\Plugin\Field\FieldWidget\FileWidget implements ContainerFactoryPluginInterface- class \Drupal\image\Plugin\Field\FieldWidget\ImageWidget- class \Drupal\plupload_widget\Plugin\Field\FieldWidget\ImageWidget uses PluploadWidgetTrait
 
 
- class \Drupal\image\Plugin\Field\FieldWidget\ImageWidget
 
- class \Drupal\file\Plugin\Field\FieldWidget\FileWidget implements ContainerFactoryPluginInterface
 
- class \Drupal\Core\Field\WidgetBase implements WidgetInterface, ContainerFactoryPluginInterface uses AllowedTagsXssTrait
 
- class \Drupal\Core\Field\PluginSettingsBase implements DependentPluginInterface, PluginSettingsInterface
 
- class \Drupal\Core\Plugin\PluginBase uses DependencySerializationTrait, MessengerTrait, StringTranslationTrait
Expanded class hierarchy of ImageWidget
File
- src/Plugin/ Field/ FieldWidget/ ImageWidget.php, line 36 
Namespace
Drupal\plupload_widget\Plugin\Field\FieldWidgetView source
class ImageWidget extends CoreImageWidget {
  use PluploadWidgetTrait;
  /**
   * Override to replace the upload/file HTML control
   * with the PLUPLOAD form element.
   *
   */
  public static function process($element, FormStateInterface $form_state, $form) {
    $element = parent::process($element, $form_state, $form);
    // If the form element does not have
    // an uplad control, skip this.
    if (!isset($element['upload'])) {
      return $element;
    }
    /** @var UploadConfiguration */
    $configuration = unserialize($form[$element['#parents'][0]]['#upload_configuration']);
    // Change the element description because
    // the PLUPLOAD widget MUST have the
    // extension filters as descripiton.
    // @see \Drupal\plupload\Element\PlUploadFile::preRenderPlUploadFile()
    // @see \Drupal\file\Plugin\Field\FieldWidget\FileWidget::formElement()
    $file_upload_help = array(
      '#theme' => 'file_upload_help',
      '#description' => '',
      '#upload_validators' => '',
      '#cardinality' => $configuration->cardinality,
    );
    $element['#description'] = \Drupal::service('renderer')
      ->renderPlain($file_upload_help);
    // Replace the upload HTML element with PLUPLOAD
    // for a single file.
    $element['upload'] = [
      '#type' => 'plupload',
      '#title' => t('Upload files'),
      //'#description' => t('This multi-upload widget uses Plupload library.'),
      '#autoupload' => TRUE,
      '#autosubmit' => TRUE,
      '#submit_element' => "[name={$element['upload_button']['#name']}]",
      '#upload_validators' => [
        'file_validate_extensions' => $configuration->validators['file_validate_extensions'],
      ],
      '#plupload_settings' => [
        'runtimes' => 'html5,flash,silverlight,html4',
        'chunk_size' => $configuration->chunk_size . 'b',
        'max_file_size' => $configuration->max_size . 'b',
        'max_file_count' => 1,
      ],
      '#event_callbacks' => [
        'FilesAdded' => 'Drupal.plupload_widget.filesAddedCallback',
        'UploadComplete' => 'Drupal.plupload_widget.uploadCompleteCallback',
      ],
      '#attached' => [
        // We need to specify the plupload attachment because it is a default
        // and will be overriden by our value.
        'library' => [
          'plupload_widget/plupload_widget',
          'plupload/plupload',
        ],
      ],
    ];
    return $element;
  }
  /**
   * {@inheritdoc}
   */
  public function form(FieldItemListInterface $items, array &$form, FormStateInterface $form_state, $get_delta = NULL) {
    $element = parent::form($items, $form, $form_state, $get_delta);
    $field_definition = $this->fieldDefinition
      ->getFieldStorageDefinition();
    // Store these seetings once for the whole widget.
    $config = new UploadConfiguration();
    $config->cardinality = $field_definition
      ->getCardinality();
    $config->upload_location = $items[0]
      ->getUploadLocation();
    $config->validators = $items[0]
      ->getUploadValidators();
    $config->chunk_size = $this
      ->getChunkSize();
    $config->max_size = $this
      ->getMaxFileSize();
    $element['#upload_configuration'] = serialize($config);
    return $element;
  }
  /**
   * Important!! The core FILE API relies on the value callback to save the managed file,
   * not the submit handler. The submit handler is only used for file deletions.
   */
  public static function value($element, $input = FALSE, FormStateInterface $form_state) {
    // We need to fake the element ID for the PlUploadFile form element
    // to work as expected as it is being nested in a form sub-element calle
    // upload.
    $id = $element['#id'];
    $id_backup = $id;
    // If a unique identifier added with '--', we need to exclude it
    if (preg_match('/(.*)(--[0-9A-Za-z-]+)$/', $id, $reg)) {
      $id = $reg[1];
    }
    // The form element is going to tell us if one
    // or more files where uploaded.
    $element['#id'] = $id . '-upload';
    $files = \Drupal\plupload\Element\PlUploadFile::valueCallback($element, $input, $form_state);
    $element['#id'] = $id_backup;
    if (empty($files)) {
      return parent::value($element, $input, $form_state);
    }
    // During form rebuild after submit or ajax request this
    // method might be called twice, but we do not want to
    // generate the file entities twice....
    // This files are RAW files, they are not registered
    // anywhere, so won't get deleted on CRON runs :(
    $file = reset($files);
    $destination = \Drupal::config('system.file')
      ->get('default_scheme') . '://' . $file['name'];
    $destination = file_stream_wrapper_uri_normalize($destination);
    /** @var \Drupal\file\Entity\File */
    $f = entity_create('file', array(
      'uri' => $file['tmppath'],
      'uid' => \Drupal::currentUser()
        ->id(),
      'status' => 0,
      'filename' => drupal_basename($destination),
      'filemime' => \Drupal::service('file.mime_type.guesser')
        ->guess($destination),
    ));
    $f
      ->save();
    $return['fids'][] = $f
      ->id();
    return $return;
  }
}Members
| Name   | Modifiers | Type | Description | Overrides | 
|---|---|---|---|---|
| AllowedTagsXssTrait:: | public | function | Returns a list of tags allowed by AllowedTagsXssTrait::fieldFilterXss(). | |
| AllowedTagsXssTrait:: | public | function | Returns a human-readable list of allowed tags for display in help texts. | |
| AllowedTagsXssTrait:: | public | function | Filters an HTML string to prevent XSS vulnerabilities. | |
| DependencySerializationTrait:: | protected | property | An array of entity type IDs keyed by the property name of their storages. | |
| DependencySerializationTrait:: | protected | property | An array of service IDs keyed by property name used for serialization. | |
| DependencySerializationTrait:: | public | function | 1 | |
| DependencySerializationTrait:: | public | function | 2 | |
| FileWidget:: | public static | function | Creates an instance of the plugin. Overrides WidgetBase:: | |
| FileWidget:: | public | function | Extracts field values from submitted form values. Overrides WidgetBase:: | |
| FileWidget:: | public | function | Reports field-level validation errors against actual form elements. Overrides WidgetBase:: | |
| FileWidget:: | protected static | function | Retrieves the file description from a field field element. | |
| FileWidget:: | public | function | Massages the form values into the format expected for field values. Overrides WidgetBase:: | |
| FileWidget:: | public static | function | Form API callback: Processes a group of file_generic field elements. | |
| FileWidget:: | public static | function | Form submission handler for upload/remove button of formElement(). | |
| FileWidget:: | public static | function | Form element validation callback for upload element on file widget. Checks if user has uploaded more files than allowed. | |
| ImageWidget:: | protected | property | The image factory service. | |
| ImageWidget:: | public | function | Calculates dependencies for the configured plugin. Overrides PluginSettingsBase:: | |
| ImageWidget:: | public static | function | Defines the default settings for this plugin. Overrides FileWidget:: | |
| ImageWidget:: | public | function | Creates a form element for a field. Overrides WidgetBase:: | |
| ImageWidget:: | public | function | Returns the form for a single field widget. Overrides FileWidget:: | |
| ImageWidget:: | protected | function | Overrides \Drupal\file\Plugin\Field\FieldWidget\FileWidget::formMultipleElements(). Overrides FileWidget:: | |
| ImageWidget:: | public | function | Informs the plugin that some configuration it depends on will be deleted. Overrides PluginSettingsBase:: | |
| ImageWidget:: | public static | function | Override to replace the upload/file HTML control
with the PLUPLOAD form element. Overrides ImageWidget:: | |
| ImageWidget:: | public | function | Returns a form to configure settings for the widget. Overrides FileWidget:: | |
| ImageWidget:: | public | function | Returns a short summary for the current widget settings. Overrides FileWidget:: | |
| ImageWidget:: | public static | function | Validate callback for alt and title field, if the user wants them required. | |
| ImageWidget:: | public static | function | Important!! The core FILE API relies on the value callback to save the managed file,
not the submit handler. The submit handler is only used for file deletions. Overrides FileWidget:: | |
| ImageWidget:: | public | function | Constructs an ImageWidget object. Overrides FileWidget:: | |
| MessengerTrait:: | protected | property | The messenger. | 29 | 
| MessengerTrait:: | public | function | Gets the messenger. | 29 | 
| MessengerTrait:: | public | function | Sets the messenger. | |
| PluginBase:: | protected | property | Configuration information passed into the plugin. | 1 | 
| PluginBase:: | protected | property | The plugin implementation definition. | 1 | 
| PluginBase:: | protected | property | The plugin_id. | |
| PluginBase:: | constant | A string which is used to separate base plugin IDs from the derivative ID. | ||
| PluginBase:: | public | function | Gets the base_plugin_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the derivative_id of the plugin instance. Overrides DerivativeInspectionInterface:: | |
| PluginBase:: | public | function | Gets the definition of the plugin implementation. Overrides PluginInspectionInterface:: | 3 | 
| PluginBase:: | public | function | Gets the plugin_id of the plugin instance. Overrides PluginInspectionInterface:: | |
| PluginBase:: | public | function | Determines if the plugin is configurable. | |
| PluginSettingsBase:: | protected | property | Whether default settings have been merged into the current $settings. | |
| PluginSettingsBase:: | protected | property | The plugin settings injected by third party modules. | |
| PluginSettingsBase:: | public | function | Returns the value of a setting, or its default value if absent. Overrides PluginSettingsInterface:: | |
| PluginSettingsBase:: | public | function | Returns the array of settings, including defaults for missing settings. Overrides PluginSettingsInterface:: | |
| PluginSettingsBase:: | public | function | Gets the list of third parties that store information. Overrides ThirdPartySettingsInterface:: | |
| PluginSettingsBase:: | public | function | Gets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: | |
| PluginSettingsBase:: | public | function | Gets all third-party settings of a given module. Overrides ThirdPartySettingsInterface:: | |
| PluginSettingsBase:: | protected | function | Merges default settings values into $settings. | |
| PluginSettingsBase:: | public | function | Sets the value of a setting for the plugin. Overrides PluginSettingsInterface:: | |
| PluginSettingsBase:: | public | function | Sets the settings for the plugin. Overrides PluginSettingsInterface:: | |
| PluginSettingsBase:: | public | function | Sets the value of a third-party setting. Overrides ThirdPartySettingsInterface:: | |
| PluginSettingsBase:: | public | function | Unsets a third-party setting. Overrides ThirdPartySettingsInterface:: | |
| PluploadWidgetTrait:: | public | function | Get the optimum chunk size. | |
| PluploadWidgetTrait:: | public | function | Returns the maximum configured file size for the Field stroage in Bytes. | |
| StringTranslationTrait:: | protected | property | The string translation service. | 1 | 
| StringTranslationTrait:: | protected | function | Formats a string containing a count of items. | |
| StringTranslationTrait:: | protected | function | Returns the number of plurals supported by a given language. | |
| StringTranslationTrait:: | protected | function | Gets the string translation service. | |
| StringTranslationTrait:: | public | function | Sets the string translation service to use. | 2 | 
| StringTranslationTrait:: | protected | function | Translates a string to the current language or to a given language. | |
| WidgetBase:: | protected | property | The field definition. | |
| WidgetBase:: | protected | property | The widget settings. Overrides PluginSettingsBase:: | |
| WidgetBase:: | public static | function | Ajax callback for the "Add another item" button. | |
| WidgetBase:: | public static | function | Submission handler for the "Add another item" button. | |
| WidgetBase:: | public static | function | After-build handler for field elements in a form. | |
| WidgetBase:: | public | function | Assigns a field-level validation error to the right widget sub-element. Overrides WidgetInterface:: | 8 | 
| WidgetBase:: | protected | function | Generates the form element for a single copy of the widget. | |
| WidgetBase:: | protected | function | Returns the value of a field setting. | |
| WidgetBase:: | protected | function | Returns the array of field settings. | |
| WidgetBase:: | protected | function | Returns the filtered field description. | |
| WidgetBase:: | public static | function | Retrieves processing information about the widget from $form_state. Overrides WidgetBaseInterface:: | |
| WidgetBase:: | protected static | function | Returns the location of processing information within $form_state. | |
| WidgetBase:: | protected | function | Returns whether the widget handles multiple values. | |
| WidgetBase:: | public static | function | Returns if the widget can be used for the provided field. Overrides WidgetInterface:: | 4 | 
| WidgetBase:: | protected | function | Returns whether the widget used for default value form. | |
| WidgetBase:: | public static | function | Stores processing information about the widget in $form_state. Overrides WidgetBaseInterface:: | 
