'value',
'#value' => $page->pid,
);
return confirm_form($form,
t('Are you sure you want to delete the meta tags for the page %name?', array('%name' => $page->name)),
'admin/content/nodewords/custom',
NULL,
t('Delete')
);
}
/**
*
*/
function nodewords_custom_pages_confirm_delete_submit($form, &$form_state) {
nodewords_delete_tags(
array('type' => NODEWORDS_TYPE_PAGE, 'id' => $form_state['values']['pid'])
);
if (db_affected_rows()) {
drupal_set_message(t('The configuration options have been saved.'), 'status');
}
$form_state['redirect'] = 'admin/content/nodewords/custom';
}
/**
* Return the list of pages with custom meta tags settings.
*/
function nodewords_custom_pages_overview() {
$enabled = array();
$form = array('#tree' => TRUE);
$pages = array();
foreach (nodewords_custom_pages_load_all(FALSE) as $pid => $page) {
$pages[$pid] = '';
if ($page->enabled) {
$enabled[] = $pid;
}
$form['name'][$pid] = array(
'#value' => $page->name,
);
$form['path'][$pid] = array(
'#type' => 'value',
'#value' => $page->path,
);
$form['weight'][$pid] = array(
'#type' => 'weight',
'#delta' => 10,
'#default_value' => $page->weight,
);
}
if (!empty($pages)) {
$form['enabled'] = array(
'#type' => 'checkboxes',
'#options' => $pages,
'#default_value' => $enabled,
'#checkall' => (TRUE && count($pages) > 1) ? 'nodewords-pages-overview-enabled' : FALSE,
);
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save')
);
}
return $form;
}
function nodewords_custom_pages_overview_submit($form, &$form_state) {
$row = new stdClass();
foreach ($form_state['values']['path'] as $pid => $value) {
$row->pid = $pid;
$row->path = $form_state['values']['path'][$pid];
$row->weight = $form_state['values']['weight'][$pid];
$row->enabled = $form_state['values']['enabled'][$pid] ? 1 : 0;
drupal_write_record('nodewords_custom', $row, 'pid');
$done = TRUE;
}
if (isset($done)) {
drupal_set_message(t('The configuration options have been saved.'));
}
}
/**
*
*/
function nodewords_custom_pages_edit($form_state, $page = NULL) {
$form = array();
if (!isset($page)) {
$page = (object) array(
'name' => t('Custom page'),
'path' => '',
'weight' => 0,
'enabled' => 1,
'tags' => array(),
);
}
else {
$form['pid'] = array(
'#type' => 'value',
'#value' => $page->pid,
);
}
$nodewords_form = nodewords_tags_edit_fields(
array('type' => NODEWORDS_TYPE_PAGE, 'id' => isset($page->pid) ? $page->pid : 0),
$page->tags,
array(
'fieldset' => FALSE,
'admin' => TRUE,
)
);
if (empty($nodewords_form)) {
return $form;
}
$form['name'] = array(
'#type' => 'textfield',
'#title' => t('Name'),
'#description' => t("A name to better identify the page in the list of custom pages. The name must contains at least one alpha-numeric character."),
'#default_value' => $page->name,
'#maxlength' => 60,
'#required' => TRUE,
);
$form['path'] = array(
'#type' => 'textarea',
'#title' => t('Path'),
'#description' => t("Enter the Drupal paths associated with the page. The character *
is a wildcard. Example paths are blog for the blog page, blog/* for every personal blog, and <front> for the front page. The list must contain at least one path."),
'#default_value' => $page->path,
'#wysiwyg' => FALSE,
'#required' => TRUE,
);
$form['weight'] = array(
'#type' => 'weight',
'#title' => t('Weight'),
'#description' => t('Pages with lower weight will be considered first. Only the first matching page will be used.'),
'#delta' => 10,
'#default_value' => $page->weight,
);
$form['enabled'] = array(
'#type' => 'radios',
'#options' => array(t('Disabled'), t('Enabled')),
'#default_value' => $page->enabled,
);
$form['nodewords'] = $nodewords_form;
$form['nodewords']['#tree'] = TRUE;
$form['submit'] = array(
'#type' => 'submit',
'#value' => t('Save'),
'#weight' => 40,
);
return $form;
}
/**
* Validate function for the meta tags edit page.
*/
function nodewords_custom_pages_edit_validate($form, &$form_state) {
if (trim($form_state['values']['name']) == '') {
form_set_error('name', t('The name contains only spaces, and other not printable characters.'));
}
if (($path = trim($form_state['values']['path'])) != '') {
$bool = db_result(
db_query_range("SELECT 1 FROM {nodewords_custom} WHERE path = '%s' AND pid <> %d",
$path,
isset($form_state['values']['pid']) ? $form_state['values']['pid'] : 0,
0, 1
)
);
if ($bool) {
form_set_error('path', t('The path is already used.'));
}
}
else {
form_set_error('path', t('The path contains only spaces, and other not printable characters.'));
}
}
/**
* Submission function for the meta tags edit page.
*/
function nodewords_custom_pages_edit_submit($form, &$form_state) {
$form_state['values']['path'] = trim($form_state['values']['path']);
$row = new stdClass();
if (isset($form_state['values']['pid'])) {
$row->pid = $form_state['values']['pid'];
}
$row->name = $form_state['values']['name'];
$row->path = $form_state['values']['path'];
$row->weight = $form_state['values']['weight'];
$row->enabled = $form_state['values']['enabled'];
drupal_write_record('nodewords_custom', $row, isset($row->pid) ? 'pid' : array());
nodewords_save_tags($form_state['values']['nodewords']['metatags'], array(
'type' => NODEWORDS_TYPE_PAGE, 'id' => $row->pid,
));
drupal_set_message(t('The configuration options have been saved.'));
$form_state['redirect'] = 'admin/content/nodewords/custom';
}
/**
* Render the list of pages with meta tags.
*/
function theme_nodewords_custom_pages_overview($form) {
$has_pages = isset($form['name']) && is_array($form['name']);
$rows = array();
if ($has_pages) {
foreach (element_children($form['name']) as $key) {
$row = array();
$row[] = drupal_render($form['name'][$key]);
$form['weight'][$key]['#attributes']['class'] = 'page-weight';
$row[] = drupal_render($form['weight'][$key]);
$row[] = drupal_render($form['enabled'][$key]);
$row[] = l(t('edit'), "admin/content/nodewords/custom/$key/edit");
$row[] = l(t('delete'), "admin/content/nodewords/custom/$key/delete");
$rows[] = array(
'data' => $row,
'class' => 'draggable',
);
}
}
if (empty($rows)) {
$rows[] = array(
array(
'data' => t('There are currently no meta tags defined.'),
'colspan' => '5',
)
);
}
$header[] = t('Name');
$header[] = t('Weight');
$header[] = array(
'data' => t('Enabled'),
'class' => (TRUE && count($rows) > 1) ? 'nodewords-pages-overview-enabled' : '',
);
$header[] = array(
'data' => t('Operations'),
'colspan' => '2',
);
drupal_add_tabledrag('nodewords', 'order', 'sibling', 'page-weight');
return theme('table', $header, $rows, array('id' => 'nodewords')) . drupal_render($form);
}