Projet

Général

Profil

Révision 1e39edcb

Ajouté par Assos Assos il y a plus de 7 ans

Weekly update of contrib modules

Voir les différences:

drupal7/sites/all/modules/media/modules/media_wysiwyg/media_wysiwyg.module
14 14
// Functions for UUID support to embedded media.
15 15
require_once dirname(__FILE__) . '/includes/media_wysiwyg.uuid.inc';
16 16

  
17
// Functions for features integration.
18
require_once dirname(__FILE__) . '/includes/media_wysiwyg.features.inc';
19

  
17 20
/**
18 21
 * Implements hook_hook_info().
19 22
 */
......
362 365
    preg_match($pattern, $field_name, $matches);
363 366
    if (!empty($matches[2])) {
364 367
      $field_name = $matches[2];
365
      $langcode = field_language('file', $file, $field_name);
366
      if (isset($settings['fields'][$field_name][$langcode]['value'])) {
368
      $field_langcode = field_language('file', $file, $field_name);
369
      if (isset($settings['fields'][$field_name][$field_langcode]['value'])) {
367 370
        if (empty($settings['attributes'][$field_type])) {
368
          $settings['attributes'][$field_type] = $settings['fields'][$field_name][$langcode]['value'];
371
          $settings['attributes'][$field_type] = $settings['fields'][$field_name][$field_langcode]['value'];
369 372
        }
370 373
      }
371
      if (isset($settings['fields'][$field_name][$langcode][0]['value'])) {
374
      if (isset($settings['fields'][$field_name][$field_langcode][0]['value'])) {
372 375
        if (empty($settings['attributes'][$field_type])) {
373
          $settings['attributes'][$field_type] = $settings['fields'][$field_name][$langcode][0]['value'];
376
          $settings['attributes'][$field_type] = $settings['fields'][$field_name][$field_langcode][0]['value'];
374 377
        }
375 378
      }
376 379
    }
......
530 533
    }
531 534
  }
532 535
}
536

  
537
/**
538
 * Implements hook_entity_info_alter().
539
 *
540
 * Add a file type named 'WYSIWYG'.
541
 */
542
function media_wysiwyg_entity_info_alter(&$entity_info) {
543
  $entity_info['file']['view modes'] += array(
544
    'wysiwyg' => array(
545
      'label' => t('WYSIWYG'),
546
      'custom settings' => TRUE,
547
    ),
548
  );
549
}
550

  
551
/**
552
 * Implements hook_form_FORM_ID_alter().
553
 *
554
 * Add select when editing file types to set wysiwyg view mode.
555
 */
556
function media_wysiwyg_form_file_entity_file_type_form_alter(&$form, &$form_state) {
557
  $options = array();
558

  
559
  // Add an option allowing users not to use a view mode.
560
  $options['none'] = t('None');
561

  
562
  // Add the default view mode by default.
563
  $options['default'] = t('Default');
564

  
565
  $entity_info = entity_get_info('file');
566
  foreach ($entity_info['view modes'] as $view_mode => $view_mode_info) {
567
    $options[$view_mode] = check_plain($view_mode_info['label']);
568
  }
569

  
570
  $file_type = $form['#file_type']->type;
571
  $view_mode = db_query('SELECT view_mode FROM {media_view_mode_wysiwyg} WHERE type = :type', array(':type' => $file_type))->fetchField();
572
  $view_mode = empty($view_mode) ? 'none' : $view_mode;
573

  
574
  $form['file_wysiwyg_view_mode'] = array(
575
    '#type' => 'select',
576
    '#title' => t('WYSIWYG view mode'),
577
    '#options' => $options,
578
    '#default_value' => $view_mode,
579
    '#description' => t('View mode to be used when displaying files inside of the WYSIWYG editor.'),
580
  );
581

  
582
  // Move submit after our select box. There might be a better way to do this.
583
  $form['submit']['#weight'] = 1;
584

  
585
  array_unshift($form['#submit'], 'media_wysiwyg_form_file_entity_file_type_form_alter_submit');
586
}
587

  
588
/**
589
 * Custom submit handler.
590
 *
591
 * Save wysiwyg view mode.
592
 *
593
 * @see media_wysiwyg_form_file_entity_file_type_form_alter().
594
 */
595
function media_wysiwyg_form_file_entity_file_type_form_alter_submit(&$form, &$form_state) {
596
  $file_type = $form['#file_type']->type;
597
  $view_mode = $form_state['values']['file_wysiwyg_view_mode'];
598
  db_delete('media_view_mode_wysiwyg')->condition('type', $file_type)->execute();
599
  if ($view_mode != 'none') {
600
    $record = array('type' => $file_type, 'view_mode' => $view_mode);
601
    drupal_write_record('media_view_mode_wysiwyg', $record);
602
  }
603
}
604

  
605
/**
606
 * Implements hook_form_FORM_ID_alter().
607
 *
608
 * Add checkbox to restrict file type view mode availability in wysiwyg.
609
 */
610
function media_wysiwyg_form_file_entity_file_display_form_alter(&$form, &$form_state) {
611
  $file_type = $form['#file_type'];
612
  $view_mode = $form['#view_mode'];
613

  
614
  if ($view_mode != 'none') {
615
    $restricted = db_query(
616
      'SELECT 1 FROM {media_restrict_wysiwyg} WHERE type = :type and display = :display',
617
      array(':type' => $file_type, ':display' => $view_mode)
618
    )->fetchField();
619
    $form['restrict_wysiwyg'] = array(
620
      '#type' => 'checkbox',
621
      '#title' => t('Restrict in WYSIWYG'),
622
      '#description' => t('If checked, then this mode will not be allowed from the WYSIWYG.'),
623
      '#default_value' => !empty($restricted),
624
    );
625
    array_unshift($form['#submit'], 'media_wysiwyg_form_file_entity_file_display_form_alter_submit');
626
  }
627

  
628
  return $form;
629
}
630

  
631
/**
632
 * Custom submit handler.
633
 *
634
 * Save restricted wysiwyg file types.
635
 *
636
 * @see media_wysiwyg_form_file_entity_file_display_form_alter().
637
 */
638
function media_wysiwyg_form_file_entity_file_display_form_alter_submit(&$form, &$form_state) {
639
  $file_type = $form['#file_type'];
640
  $view_mode = $form['#view_mode'];
641
  db_delete('media_restrict_wysiwyg')->condition('type', $file_type)->condition('display', $view_mode)->execute();
642
  if (!empty($form_state['values']['restrict_wysiwyg'])) {
643
    $record = array('type' => $file_type, 'display' => $view_mode);
644
    drupal_write_record('media_restrict_wysiwyg', $record);
645
  }
646
}

Formats disponibles : Unified diff