function asset_widget in Asset 5
Same name and namespace in other branches
- 5.2 modules/asset_content.inc \asset_widget()
- 6 modules/asset_content.inc \asset_widget()
- 6 inc/modules/asset_content.inc \asset_widget()
Define the behavior of a widget.
File
- modules/
asset_content.inc, line 113
Code
function asset_widget($op, &$node, $field, &$items) {
switch ($op) {
case 'prepare form values':
foreach ($items as $delta => $item) {
// convert the field into a filter string
if (isset($item['aid'])) {
$items[$delta]['value'] = $item['options'];
}
}
if ($_POST[$field['field_name']]) {
$items = $_POST[$field['field_name']];
foreach ($items as $key => $item) {
$a = asset_load(array(
'aid' => $item['aid'],
));
$items[$key]['value'] = $a->filename;
}
}
break;
case 'form':
// Start creating the form
$field_name = $field['field_name'];
$form = array(
$field_name => array(
'#tree' => TRUE,
),
);
// If the field has multiple values
if ($field['multiple']) {
// Currently the fieldset is disabled because the asset javascript doesn't like it > name collision
drupal_add_js(drupal_get_path('module', 'asset') . '/asset_more.js');
$delta = 0;
// Render link fields for all the entered values
foreach ($items as $data) {
if (is_array($data) && $data['aid']) {
_asset_widget_form($form[$field['field_name']][$delta], $field, $data, $delta);
$delta++;
}
}
// Render one additional new asset field
foreach (range($delta, $delta) as $delta) {
_asset_widget_form($form[$field['field_name']][$delta], $field, array(), $delta);
}
// Create a wrapper for additional fields
$form[$field['field_name']]['wrapper'] = array(
'#type' => 'markup',
'#value' => '<div id="' . str_replace('_', '-', $field['field_name']) . '-wrapper" class="clear-block"></div>',
);
// Add 'More' Javascript Callback
$form[$field['field_name']]['more-url'] = array(
'#type' => 'hidden',
'#value' => url('asset/widget/js/' . $field['type_name'] . '/' . $field['field_name'], NULL, NULL, TRUE),
'#attributes' => array(
'class' => 'more-links',
),
'#id' => str_replace('_', '-', $field['field_name']) . '-more-url',
);
// Add Current Field Count
$form[$field['field_name']]['count'] = array(
'#type' => 'hidden',
'#value' => $delta,
'#id' => str_replace('_', '-', $field['field_name']) . '-count',
);
// Add More Button
$form[$field['field_name']]['more'] = array(
'#type' => 'button',
'#value' => t('More Assets'),
'#name' => 'more',
'#id' => str_replace('_', '-', $field['field_name']) . '-more',
);
}
else {
module_invoke('i18n', 'language_rtl') ? $rtl = "right" : ($rtl = "left");
// Show the one and only value field
$form[$field_name][0]['value'] = array(
'#type' => 'textfield',
'#title' => t($field['widget']['label']),
//'#description' => t($field['widget']['description']),
'#default_value' => $items[0]['value'],
);
// Set the aid (hidden)
$form[$field_name][0]['aid'] = array(
'#type' => 'hidden',
'#default_value' => $items[0]['aid'],
);
// Set the preview
if (!empty($items[0]['value']) || isset($_POST[$field_name][0]['aid']) && is_numeric($_POST[$field_name][0]['aid'])) {
// When in preview mode, $items[0]['value'] is not set, so we need to get the $_POST data
!empty($items[0]['value']) ? $aid = $items[0]['aid'] : ($aid = filter_xss($_POST[$field_name][0]['aid']));
$is_image = array(
'jpg',
'jpeg',
'png',
'gif',
'tif',
'tiff',
'bmp',
);
$a = asset_load(array(
'aid' => $aid,
));
// Preview the image
if (in_array($a->extension, $is_image)) {
if (variable_get('asset_imagecache', 0)) {
$presets = _imagecache_get_presets();
$preset = $presets[variable_get('asset_imagecache', 0)];
$preview = theme('imagecache', $preset, str_replace("//", "/", $a->filepath));
}
else {
$asset = array(
'aid' => $aid,
'format' => 'image',
'formatter' => 'asset',
'width' => '120',
'height' => '80',
);
$preview = asset_render_macro($asset);
}
$form[$field_name][0]['preview'] = array(
'#prefix' => '<div id="preview_' . $field_name . '_0" style="float:' . $rtl . '">',
'#suffix' => '</div>',
'#value' => $preview,
);
}
else {
$form[$field_name][0]['preview'] = array(
'#prefix' => '<div id="preview_' . $field_name . '_0" style="float:' . $rtl . '">',
'#suffix' => '</div>',
'#value' => asset_preview($aid),
);
}
}
else {
$form[$field_name][0]['preview'] = array(
'#value' => '<div id="preview_' . $field_name . '_0" style="float:' . $rtl . '"></div>',
);
}
// Set the caption
$form[$field_name][0]['caption'] = array(
'#type' => 'textfield',
'#maxlength' => '256',
'#default_value' => $items[0]['caption'],
'#description' => 'Enter the caption for this asset',
'#prefix' => '<div style="margin-' . $rtl . ':130px"><table style="width:400px;margin-top:-15px;border-collapse:inherit"><tr><td style="padding:0px;margin:0px;text-align:center;padding-top:16px;width:10px" valign="top">' . l('<img src="' . base_path() . drupal_get_path('module', 'asset') . '/lullacons/doc-option-add.png' . '" alt="' . t("Insert asset") . '" title="' . t("Insert asset") . '"/>', 'asset/wizard/textfield', array(
'class' => 'asset-textfield-link',
'id' => 'asset-link-' . $field_name . '-0-value',
'onclick' => "window.open(this.href, 'asset_textfield_link', 'width=614,height=400,scrollbars=yes,status=yes,resizable=yes,toolbar=no,menubar=no'); return false",
), 'textfield=' . $field_name . '[0][value]&aidfield=' . $field_name . '[0][aid]&delta=0', NULL, FALSE, TRUE) . '</td><td>',
'#suffix' => '</td></tr></table></div>',
);
// Set the copyright
$form[$field_name][0]['copyright'] = array(
'#type' => 'textfield',
'#maxlength' => '256',
'#default_value' => $items[0]['copyright'],
'#description' => 'Enter the copyright for this asset',
'#prefix' => '<div style="margin-' . $rtl . ':130px"><table style="width:400px;margin-top:-30px;border-collapse:inherit"><tr><td style="padding:0px;margin:0px;text-align:center;padding-top:16px;width:10px" valign="top">' . l('<img src="' . base_path() . drupal_get_path('module', 'asset') . '/lullacons/doc-option-remove.png' . '" alt="' . t("Delete asset") . '" title="' . t("Delete asset") . '"/>', '', array(
'onclick' => "\n document.getElementById('edit-" . str_replace("_", "-", $field_name) . "-0-value').value='';\n document.getElementById('edit-" . str_replace("_", "-", $field_name) . "-0-aid').value='';\n document.getElementById('edit-" . str_replace("_", "-", $field_name) . "-0-caption').value='';\n document.getElementById('edit-" . str_replace("_", "-", $field_name) . "-0-copyright').value='';\n document.getElementById('preview_" . $field_name . "_0').innerHTML='';\n return false;",
), NULL, NULL, FALSE, TRUE) . '</td><td>',
'#suffix' => '</td></tr></table></div>',
);
$form[$field_name][0]['#prefix'] = '<div class="clear-block">';
$form[$field_name][0]['#suffix'] = '</div>';
}
if (isset($field['widget']['description']) && !empty($field['widget']['description'])) {
$form[$field_name][0]['description'] = array(
'#value' => '<div class="description">' . $field['widget']['description'] . '</div>',
);
}
return $form;
case 'process form values':
foreach ($items as $delta => $item) {
if ($field['multiple'] == 1 && (empty($item['aid']) || !is_numeric($item['aid']))) {
unset($items[$delta]);
continue;
}
if (!empty($item['aid']) && is_numeric($item['aid'])) {
if (!empty($item['value'])) {
$items[$delta]['options'] = $item['value'];
}
else {
$a = asset_load(array(
'aid' => $item['aid'],
));
$items[$delta]['options'] = $a->filename;
}
$items[$delta]['aid'] = $item['aid'];
$items[$delta]['caption'] = $item['caption'] ? $item['caption'] : '';
$items[$delta]['copyright'] = $item['copyright'] ? $item['copyright'] : '';
}
}
break;
}
}