function node_gallery_api_manage_items_form in Node Gallery 7
Displays the content for our "Manage Images" tab, which is a VBO view.
Parameters
array $form_state: Drupal $form_state array
array $gallery: A populated node gallery object.
Return value
array FAPI array
1 string reference to 'node_gallery_api_manage_items_form'
- node_gallery_api_menu in ./
node_gallery_api.module - Implements hook_menu().
File
- ./
node_gallery_api.pages.inc, line 252 - Node Gallery module.
Code
function node_gallery_api_manage_items_form($form, &$form_state, $gallery) {
global $pager_page_array, $pager_total;
$relationship_type = node_gallery_api_get_relationship_type($gallery->type);
// We must set these globals, because we do not call pager_query.
$element = 0;
$pager_page_array = isset($_GET['page']) ? explode(',', $_GET['page']) : array();
if (empty($pager_page_array[$element])) {
$pager_page_array[$element] = 0;
}
$items_per_page = $relationship_type->settings['manage_items']['items_per_page'];
$form = array(
'#theme' => 'node_gallery_api_manage_items_form',
'#cache' => TRUE,
);
$form['#description'] = t('Manage Images form.');
$form['#thumb_imagecache'] = 'node-gallery-admin-thumbnail';
$form['#gallery'] = $gallery;
$form_state['programmed'] = FALSE;
$form['#attached']['css'][] = drupal_get_path('module', 'node_gallery_api') . '/node_gallery_api.css';
$items = array();
if (isset($_SESSION['node_gallery_api_plupload_nids'][$gallery->nid])) {
foreach ($_SESSION['node_gallery_api_plupload_nids'][$gallery->nid] as $nid) {
$item = node_load($nid);
if (!empty($relationship_type->filefield_name)) {
$files = field_get_items('node', $item, $relationship_type->filefield_name);
if (!empty($files)) {
$item->node_gallery['item_file'] = $files[0];
$item->node_gallery['item_file_url'] = file_create_url($files[0]['uri']);
}
}
$items[] = $item;
}
// We trim the $images array to a max length to prevent
// OOM's on the manage images form.
// There's just no easy way to do paging for just one
// visit to the manage images tab.
drupal_set_message(t('Current display is filtered to show only images just uploaded. Please refresh the page to display all images in the gallery.'), 'status');
$length = min(variable_get('node_gallery_api_plupload_manage_images_limit', 100), count($items));
$items = array_slice($items, 0, $length);
$chunks = array_chunk($items, count($items));
unset($_SESSION['node_gallery_api_plupload_nids'][$gallery->nid]);
}
else {
// $images = node_gallery_api_get_item_nids($gallery->nid, TRUE, FALSE);
$items = node_gallery_api_get_items($gallery, TRUE, FALSE);
if (!empty($items)) {
$chunks = array_chunk($items, $items_per_page);
$items = $chunks[$pager_page_array[$element]];
}
}
if (empty($items)) {
return $form;
}
$pager_total[$element] = count($chunks);
$enable_rotation = FALSE;
if ($relationship_type->settings['manage_items']['enable_rotation'] && (image_get_toolkit() != 'gd' || function_exists("imagerotate"))) {
$enable_rotation = TRUE;
}
if (!empty($items)) {
$count = 0;
$form['items']['#tree'] = TRUE;
foreach ($items as $item) {
$count++;
if ($count % 50 == 0) {
// Make sure we don't run out of memory by clearing the cache.
// $item = node_load(NULL, NULL, TRUE);
}
// $item = node_load($nid);
$options[$item->nid] = '';
$form['items'][$item->nid]['item_file'] = array(
'#type' => 'value',
'#value' => !empty($item->node_gallery['item_file']) ? $item->node_gallery['item_file'] : '',
);
$form['items'][$item->nid]['item_file_url'] = array(
'#type' => 'value',
'#value' => !empty($item->node_gallery['item_file_url']) ? $item->node_gallery['item_file_url'] : '',
);
$form['items'][$item->nid]['remove'] = array(
'#type' => 'checkbox',
'#default_value' => FALSE,
);
if ($enable_rotation) {
if (!empty($relationship_type->settings['manage_items']['rotation_radios'])) {
$form['items'][$item->nid]['rotate'] = array(
'#type' => 'radios',
'#options' => array(
0 => t('None'),
90 => t('90° CW'),
270 => t('90° CCW'),
180 => t('180°'),
),
'#default_value' => 0,
);
}
else {
$form['items'][$item->nid]['rotate'] = array(
'#type' => 'hidden',
'#default_value' => 0,
);
}
if (!empty($relationship_type->settings['manage_items']['rotation_modal'])) {
$form['items'][$item->nid]['rotate']['#suffix'] = l(t('rotate'), '', array(
'fragment' => ' ',
'attributes' => array(
'class' => 'node-gallery-api-rotate-link',
'rel' => image_style_url('node_gallery_api_admin_thumbnail', $item->{$relationship_type->filefield_name}[LANGUAGE_NONE][0]['uri']),
),
));
}
}
$item_form_values = isset($form_state['values']['items'][$item->nid]['edit_form']) ? $form_state['values']['items'][$item->nid]['edit_form'] : array();
$form['items'][$item->nid]['edit_form'] = node_gallery_api_item_edit_form($item_form_values, $item, $relationship_type, $form_state);
}
}
$cover_nid = $gallery->node_gallery['cover_item'];
$form['is_cover'] = array(
'#type' => 'radios',
'#default_value' => in_array($cover_nid, array_keys($options)) ? $cover_nid : NULL,
'#options' => $options,
);
$form['pager'] = array(
'#value' => theme('pager', array(
'tags' => NULL,
'element' => $element,
)),
);
$form['gallery_nid'] = array(
'#type' => 'value',
'#value' => $gallery->nid,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
'#weight' => 20,
// Need this because this form is used in image upload ahah also.
'#submit' => array(
'node_gallery_api_manage_items_submit',
),
'#validate' => array(
'node_gallery_api_manage_items_validate',
),
);
// OG hook_form_alter's the image node form and mucks up the breadcrumbs.
// Calling our function after we load the image forms fixes that.
// node_gallery_api_set_user_breadcrumb($gallery->uid, $gallery);
return $form;
}