image_gallery view will give you many more ways to customize your galleries.', array('!views-link' => url('admin/build/views')));
}
else {
// The view is enabled: explain why there are no settings here and leave.
$form['info'] = array(
'#type' => 'item',
'#title' => t('Image galleries are being made with the Views module'),
);
if (module_exists('views_ui')) {
$form['info']['#value'] = t('To change the way galleries are displayed, edit the image_gallery view on the Views administration page.', array('!views-link' => url('admin/build/views')));
}
else {
$form['info']['#value'] = t('To change the way galleries are displayed, enable the Views UI module on the Modules administration page, then override the default image_gallery view.', array('!modules-link' => url('admin/build/modules')));
}
return $form;
}
}
$form['gallery'] = array(
'#type' => 'fieldset',
'#title' => t('Gallery settings'),
);
$form['gallery']['image_images_per_page'] = array(
'#type' => 'textfield',
'#title' => t('Images per page'),
'#default_value' => variable_get('image_images_per_page', 6),
'#size' => 3,
'#description' => t('Sets the number of images to be displayed in a gallery page.'),
);
$form['gallery']['image_gallery_node_info'] = array(
'#type' => 'checkbox',
'#title' => t('Display node info'),
'#default_value' => variable_get('image_gallery_node_info', 0),
'#description' => t("Checking this will display the \"Posted by\" node information on the gallery pages."),
);
$form['gallery']['image_gallery_sort_order'] = array(
'#type' => 'radios',
'#title' => t('Image display sort order'),
'#default_value' => variable_get('image_gallery_sort_order', IMAGE_GALLERY_SORT_CREATE_DESC),
'#options' => array(
IMAGE_GALLERY_SORT_CREATE_DESC => t('Create date, newest first'),
IMAGE_GALLERY_SORT_CREATE_ASC => t('Create date, oldest first'),
IMAGE_GALLERY_SORT_FILENAME => t('File name'),
IMAGE_GALLERY_SORT_TITLE => t('Image title'),
),
);
return system_settings_form($form);
}
/**
* Menu callback for gallery admin.
*/
function image_gallery_admin() {
_image_check_settings();
$tree = taxonomy_get_tree(_image_gallery_get_vid());
if ($tree) {
$header = array(t('Name'), t('Operations'));
foreach ($tree as $term) {
$rows[] = array(str_repeat(' -- ', $term->depth) . ' ' . l($term->name, "image/tid/$term->tid"), l(t('edit gallery'), "admin/content/image/edit/$term->tid"));
}
return theme('table', $header, $rows);
}
else {
return t('No galleries available');
}
}
/**
* Menu callback for editing or adding a gallery.
*/
function image_gallery_admin_edit($tid = NULL) {
if ((isset($_POST['op']) && $_POST['op'] == t('Delete')) || isset($_POST['confirm'])) {
return drupal_get_form('image_gallery_confirm_delete_form', $tid);
}
if (is_numeric($tid)) {
$edit = (array) taxonomy_get_term($tid);
}
else {
$edit = array(
'name' => '',
'description' => '',
'vid' => _image_gallery_get_vid(),
'tid' => NULL,
'weight' => 0,
);
}
return drupal_get_form('image_gallery_admin_form', $edit);
}
/**
* Form for editing or adding a gallery.
*/
function image_gallery_admin_form(&$form_state, $edit = array()) {
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Gallery name'),
'#default_value' => $edit['name'],
'#size' => 60,
'#maxlength' => 64,
'#description' => t('The name is used to identify the gallery.'),
'#required' => TRUE,
);
$form['description'] = array(
'#type' => 'textarea',
'#title' => t('Description'),
'#default_value' => $edit['description'],
'#cols' => 60,
'#rows' => 5,
'#description' => t('The description can be used to provide more information about the image gallery.'),
);
$form['parent']['#tree'] = TRUE;
$form['parent'][0] = _image_gallery_parent_select($edit['tid'], t('Parent'), 'forum');
$form['weight'] = array(
'#type' => 'weight',
'#title' => t('Weight'),
'#default_value' => $edit['weight'],
'#delta' => 10,
'#description' => t('When listing galleries, those with with light (small) weights get listed before containers with heavier (larger) weights. Galleries with equal weights are sorted alphabetically.'),
);
$form['vid'] = array(
'#type' => 'hidden',
'#value' => _image_gallery_get_vid(),
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
);
if ($edit['tid']) {
$form['delete'] = array(
'#type' => 'submit',
'#value' => t('Delete'),
);
$form['tid'] = array(
'#type' => 'hidden',
'#value' => $edit['tid'],
);
}
$form['#submit'][] = 'image_gallery_admin_submit';
$form['#theme'][] = 'image_gallery_admin';
return $form;
}
function _image_gallery_parent_select($tid, $title) {
$parents = taxonomy_get_parents($tid);
if ($parents) {
$parent = array_shift($parents);
$parent = $parent->tid;
}
else {
$parent = 0;
}
$children = taxonomy_get_tree(_image_gallery_get_vid(), $tid);
// A term can't be the child of itself, nor of its children.
foreach ($children as $child) {
$exclude[] = $child->tid;
}
$exclude[] = $tid;
$tree = taxonomy_get_tree(_image_gallery_get_vid());
$options[0] = '<' . t('root') . '>';
if ($tree) {
foreach ($tree as $term) {
if (!in_array($term->tid, $exclude)) {
$options[$term->tid] = str_repeat(' -- ', $term->depth) . ' ' . $term->name;
}
}
}
return array(
'#type' => 'select',
'#title' => $title,
'#default_value' => $parent,
'#options' => $options,
'#description' => t('Image galleries may be nested below other galleries.'),
'#required' => TRUE,
);
}
/**
* Form submit handler.
*/
function image_gallery_admin_submit($form, &$form_state) {
$status = taxonomy_save_term($form_state['values']);
switch ($status) {
case SAVED_NEW:
drupal_set_message(t('Created new gallery %term.', array('%term' => $form_state['values']['name'])));
break;
case SAVED_UPDATED:
drupal_set_message(t('The gallery %term has been updated.', array('%term' => $form_state['values']['name'])));
break;
case SAVED_DELETED:
drupal_set_message(t('The gallery %term has been deleted.', array('%term' => $form_state['values']['name'])));
break;
}
return 'admin/content/image';
}
/**
* Form for confirmation for deleting a gallery.
*/
function image_gallery_confirm_delete_form(&$form_state, $tid) {
$term = taxonomy_get_term($tid);
$form['tid'] = array('#type' => 'value', '#value' => $tid);
$form['name'] = array('#type' => 'value', '#value' => $term->name);
return confirm_form($form, t('Are you sure you want to delete the image gallery %name?', array('%name' => $term->name)), 'admin/content/image', t('Deleting an image gallery will delete all sub-galleries. This action cannot be undone.'), t('Delete'), t('Cancel'));
}
/**
* Form submit handler.
*/
function image_gallery_confirm_delete_form_submit($form, &$form_state) {
taxonomy_del_term($form_state['values']['tid']);
drupal_set_message(t('The image gallery %term and all sub-galleries have been deleted.', array('%term' => $form_state['values']['name'])));
$form_state['redirect'] = 'admin/content/image';
}