1
|
<?php
|
2
|
|
3
|
/**
|
4
|
* @file
|
5
|
* Primarily Drupal hooks.
|
6
|
*/
|
7
|
|
8
|
/**
|
9
|
* Implements hook_entity_info_alter().
|
10
|
*/
|
11
|
function media_wysiwyg_view_mode_entity_info_alter(&$entity_info) {
|
12
|
$entity_info['file']['view modes'] += array(
|
13
|
'wysiwyg' => array(
|
14
|
'label' => t('WYSIWYG'),
|
15
|
'custom settings' => TRUE,
|
16
|
),
|
17
|
);
|
18
|
}
|
19
|
|
20
|
/**
|
21
|
* Implements hook_media_wysiwyg_allowed_view_modes_alter().
|
22
|
*/
|
23
|
function media_wysiwyg_view_mode_media_wysiwyg_allowed_view_modes_alter(&$view_modes, &$file) {
|
24
|
if (variable_get("media_wysiwyg_view_mode_{$file->type}_wysiwyg_restricted_view_modes_status")) {
|
25
|
$restricted_view_modes = variable_get("media_wysiwyg_view_mode_{$file->type}_wysiwyg_restricted_view_modes", array());
|
26
|
foreach ($restricted_view_modes as $restricted_view_mode) {
|
27
|
if (array_key_exists($restricted_view_mode, $view_modes)) {
|
28
|
unset($view_modes[$restricted_view_mode]);
|
29
|
}
|
30
|
}
|
31
|
}
|
32
|
}
|
33
|
|
34
|
/**
|
35
|
* Implements hook_entity_view_mode_alter().
|
36
|
*/
|
37
|
function media_wysiwyg_view_mode_entity_view_mode_alter(&$view_mode, $context) {
|
38
|
if ($context['entity_type'] == 'file' && !empty($context['entity']->override['wysiwyg'])) {
|
39
|
if (variable_get("media_wysiwyg_view_mode_{$context['entity']->type}_file_wysiwyg_view_mode_status")) {
|
40
|
$view_mode = variable_get("media_wysiwyg_view_mode_{$context['entity']->type}_file_wysiwyg_view_mode", 'wysiwyg');
|
41
|
}
|
42
|
}
|
43
|
}
|
44
|
|
45
|
/**
|
46
|
* Implements hook_form_FORM_ID_alter().
|
47
|
*/
|
48
|
function media_wysiwyg_view_mode_form_media_wysiwyg_format_form_alter(&$form, $form_state) {
|
49
|
// Check to see if a view mode ("format") has already been specified for
|
50
|
// this media item. First, check for a standard form-submitted value.
|
51
|
if (!empty($form_state['values']['format'])) {
|
52
|
$view_mode = $form_state['values']['format'];
|
53
|
}
|
54
|
// Second, check the request for a JSON-encoded value.
|
55
|
elseif (isset($_GET['fields'])) {
|
56
|
$query_fields = drupal_json_decode($_GET['fields']);
|
57
|
if (isset($query_fields['format'])) {
|
58
|
$view_mode = $query_fields['format'];
|
59
|
}
|
60
|
}
|
61
|
// If we were unable to determine a view mode, or we found a view mode
|
62
|
// that does not exist in the list of format options presented on this
|
63
|
// form, use the default view mode.
|
64
|
if (!isset($view_mode) || !array_key_exists($view_mode, $form['options']['format']['#options'])) {
|
65
|
$view_mode = $form['options']['format']['#default_value'];
|
66
|
}
|
67
|
|
68
|
// Display an actual preview instead of media_get_thumbnail_preview().
|
69
|
// @todo Should this code be merged up to media_wysiwyg_format_form?
|
70
|
$form['preview']['#prefix'] = '<div id="preview">';
|
71
|
$form['preview']['#suffix'] = '</div>';
|
72
|
$form['preview']['#markup'] = $form_state['storage']['view_mode_previews'][$view_mode];
|
73
|
|
74
|
// Change the preview when the user changes the format.
|
75
|
$form['options']['format']['#ajax'] = array(
|
76
|
'callback' => 'media_wysiwyg_view_mode_form_media_wysiwyg_format_form_preview',
|
77
|
'wrapper' => 'preview',
|
78
|
);
|
79
|
}
|
80
|
|
81
|
/**
|
82
|
* AJAX callback to select the portion of the format form to be updated with a preview.
|
83
|
*
|
84
|
* @param array $form
|
85
|
* An associative array containing the structure of the form.
|
86
|
* @param array $form_state
|
87
|
* An associative array containing the current state of the form.
|
88
|
*
|
89
|
* @return array
|
90
|
* The preview form item.
|
91
|
*/
|
92
|
function media_wysiwyg_view_mode_form_media_wysiwyg_format_form_preview($form, $form_state) {
|
93
|
return $form['preview'];
|
94
|
}
|
95
|
|
96
|
/**
|
97
|
* Implements hook_form_FORM_ID_alter().
|
98
|
*/
|
99
|
function media_wysiwyg_view_mode_form_file_entity_file_type_form_alter(&$form, $form_state) {
|
100
|
$type = $form_state['build_info']['args'][0];
|
101
|
$view_mode_options = media_wysiwyg_get_file_type_view_mode_options($type->type);
|
102
|
|
103
|
$form['media_wysiwyg_view_mode'] = array(
|
104
|
'#type' => 'fieldset',
|
105
|
'#title' => t('Media WYSIWYG View Modes'),
|
106
|
'#collapsible' => TRUE,
|
107
|
'#collapsed' => TRUE,
|
108
|
'#tree' => TRUE,
|
109
|
);
|
110
|
|
111
|
$form['media_wysiwyg_view_mode']["media_wysiwyg_view_mode_{$type->type}_wysiwyg_restricted_view_modes_status"] = array(
|
112
|
'#type' => 'checkbox',
|
113
|
'#title' => t('Restrict allowed view modes when embedding with the WYSIWYG', array('%type' => $type->label)),
|
114
|
'#default_value' => variable_get("media_wysiwyg_view_mode_{$type->type}_wysiwyg_restricted_view_modes_status", FALSE),
|
115
|
);
|
116
|
$form['media_wysiwyg_view_mode']["media_wysiwyg_view_mode_{$type->type}_wysiwyg_restricted_view_modes"] = array(
|
117
|
'#type' => 'checkboxes',
|
118
|
'#title' => t('Select which view modes <em>cannot</em> be selected'),
|
119
|
'#options' => $view_mode_options,
|
120
|
'#default_value' => variable_get("media_wysiwyg_view_mode_{$type->type}_wysiwyg_restricted_view_modes", array()),
|
121
|
'#states' => array(
|
122
|
'visible' => array(
|
123
|
':input[name="media_wysiwyg_view_mode[media_wysiwyg_view_mode_' . $type->type . '_wysiwyg_restricted_view_modes_status]"]' => array('checked' => TRUE),
|
124
|
),
|
125
|
),
|
126
|
);
|
127
|
$form['media_wysiwyg_view_mode']["media_wysiwyg_view_mode_{$type->type}_file_wysiwyg_view_mode_status"] = array(
|
128
|
'#type' => 'checkbox',
|
129
|
'#title' => t('Use a specific view mode when the file is previewed in the WYSIWYG'),
|
130
|
'#default_value' => variable_get("media_wysiwyg_view_mode_{$type->type}_file_wysiwyg_view_mode_status", 0),
|
131
|
);
|
132
|
$form['media_wysiwyg_view_mode']["media_wysiwyg_view_mode_{$type->type}_file_wysiwyg_view_mode"] = array(
|
133
|
'#type' => 'select',
|
134
|
'#title' => t('View mode to always use in the WYSIWYG'),
|
135
|
'#options' => $view_mode_options,
|
136
|
'#default_value' => variable_get("media_wysiwyg_view_mode_{$type->type}_file_wysiwyg_view_mode", 'wysiwyg'),
|
137
|
'#states' => array(
|
138
|
'visible' => array(
|
139
|
':input[name="media_wysiwyg_view_mode[media_wysiwyg_view_mode_' . $type->type . '_file_wysiwyg_view_mode_status]"]' => array('checked' => TRUE),
|
140
|
),
|
141
|
),
|
142
|
);
|
143
|
|
144
|
$form['#submit'][] = 'media_wysiwyg_view_mode_form_file_entity_file_type_form_submit';
|
145
|
}
|
146
|
|
147
|
function media_wysiwyg_view_mode_form_file_entity_file_type_form_submit($form, $form_state) {
|
148
|
$values = $form_state['values']['media_wysiwyg_view_mode'];
|
149
|
foreach ($values as $key => $value) {
|
150
|
if (is_array($value)) {
|
151
|
$value = array_filter($value);
|
152
|
}
|
153
|
variable_set($key, $value);
|
154
|
}
|
155
|
}
|