'textfield', '#title' => t('Title'), '#default_value' => isset($edit->title) ? $edit->title : '', '#maxlength' => 64, '#required' => TRUE, ); $form['description'] = array('#type' => 'textarea', '#title' => t('Description'), '#default_value' => isset($edit->description) ? $edit->description : '', ); $form['actions'] = array('#type' => 'actions'); $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save')); if (!empty($edit->cid)) { $form['actions']['delete'] = array('#type' => 'submit', '#value' => t('Delete')); $form['cid'] = array('#type' => 'hidden', '#value' => $edit->cid); } return $form; } /** * Form validation handler for aggregator_form_category(). * * @see aggregator_form_category_submit() */ function aggregator_form_category_validate($form, &$form_state) { if ($form_state['values']['op'] == t('Save')) { // Check for duplicate titles if (isset($form_state['values']['cid'])) { $category = db_query("SELECT cid FROM {aggregator_category} WHERE title = :title AND cid <> :cid", array(':title' => $form_state['values']['title'], ':cid' => $form_state['values']['cid']))->fetchObject(); } else { $category = db_query("SELECT cid FROM {aggregator_category} WHERE title = :title", array(':title' => $form_state['values']['title']))->fetchObject(); } if ($category) { form_set_error('title', t('A category named %category already exists. Enter a unique title.', array('%category' => $form_state['values']['title']))); } } } /** * Form submission handler for aggregator_form_category(). * * @see aggregator_form_category_validate() * * @todo Add delete confirmation dialog. */ function aggregator_form_category_submit($form, &$form_state) { // @todo Replicate this cache invalidation when these ops are separated. // Invalidate the block cache to update aggregator category-based derivatives. if (Drupal::moduleHandler()->moduleExists('block')) { Drupal::service('plugin.manager.block')->clearCachedDefinitions(); } if ($form_state['values']['op'] == t('Delete')) { $title = $form_state['values']['title']; // Unset the title. unset($form_state['values']['title']); } aggregator_save_category($form_state['values']); if (isset($form_state['values']['cid'])) { if (isset($form_state['values']['title'])) { drupal_set_message(t('The category %category has been updated.', array('%category' => $form_state['values']['title']))); if (arg(0) == 'admin') { $form_state['redirect'] = 'admin/config/services/aggregator/'; return; } else { $form_state['redirect'] = 'aggregator/categories/' . $form_state['values']['cid']; return; } } else { watchdog('aggregator', 'Category %category deleted.', array('%category' => $title)); drupal_set_message(t('The category %category has been deleted.', array('%category' => $title))); if (arg(0) == 'admin') { $form_state['redirect'] = 'admin/config/services/aggregator/'; return; } else { $form_state['redirect'] = 'aggregator/categories/'; return; } } } else { watchdog('aggregator', 'Category %category added.', array('%category' => $form_state['values']['title']), WATCHDOG_NOTICE, l(t('view'), 'admin/config/services/aggregator')); drupal_set_message(t('The category %category has been added.', array('%category' => $form_state['values']['title']))); } }