newsletter_template.admin.inc in Newsletter 7.2
hook_menu callbacks for admin pages.
File
modules/template/includes/newsletter_template.admin.incView source
<?php
/**
* @file
* hook_menu callbacks for admin pages.
*/
/**
* Form callback: create or edit a template.
*
* @param $template
* The template object to edit or for a create form an empty template object
* with only a template type defined.
*
* @see newsletter_template_form_validate()
* @see newsletter_template_form_submit()
* @see newsletter_template_form_submit_delete()
* @see NewslettertemplateUIController::hook_menu()
* @ingroup forms
*/
function newsletter_template_form($form, &$form_state, $template) {
// Add the default field elements.
$form['mail'] = array(
'#type' => 'textfield',
'#title' => t('E-mail'),
'#default_value' => isset($template->mail) ? $template->mail : '',
'#maxlength' => 255,
'#required' => TRUE,
'#weight' => -5,
);
// Simply use default language for now.
// @todo Support multilingual newsletters.
$form['language'] = array(
'#type' => 'value',
'#value' => LANGUAGE_NONE,
);
// Add the field related form elements.
field_attach_form('newsletter_template', $template, $form, $form_state);
$form['actions'] = array(
'#type' => 'container',
'#attributes' => array(
'class' => array(
'form-actions',
),
),
'#weight' => 400,
);
// We add the form's #submit array to this button along with the actual submit
// handler to preserve any submit handlers added by a form callback_wrapper.
$submit = array();
if (!empty($form['#submit'])) {
$submit += $form['#submit'];
}
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save template'),
'#submit' => $submit + array(
'newsletter_template_form_submit',
),
);
if (!empty($template->hash)) {
$form['actions']['delete'] = array(
'#type' => 'submit',
'#value' => t('Unsubscribe'),
'#submit' => $submit + array(
'newsletter_template_form_submit_delete',
),
'#weight' => 45,
);
}
$form['actions']['cancel'] = array(
'#type' => 'link',
'#href' => 'admin/config/media/newsletter/templates',
'#title' => t('Cancel'),
);
// We append the validate handler to #validate in case a form callback_wrapper
// is used to add validate handlers earlier.
$form['#validate'][] = 'newsletter_template_form_validate';
$form_state['newsletter_template'] = $template;
return $form;
}
/**
* Form validation handler for newsletter_template_form().
*
* @see newsletter_template_form_submit()
*/
function newsletter_template_form_validate(&$form, &$form_state) {
$template = $form_state['newsletter_template'];
if (!valid_email_address($form_state['values']['mail'])) {
form_set_error('mail', t('This e-mail does not exist.'));
}
// Notify field widgets to validate their data.
field_attach_form_validate('newsletter_template', $template, $form, $form_state);
}
/**
* Form API submit callback for the template form.
*
* @see newsletter_template_form_validate()
* @todo remove hard-coded link
*/
function newsletter_template_form_submit(&$form, &$form_state) {
$template = entity_ui_controller('newsletter_template')
->entityFormSubmitBuildEntity($form, $form_state);
// Save the template and set a message.
newsletter_template_save($template);
drupal_set_message(t('Subscription saved'));
}
/**
* Form API submit callback for the delete button.
*
* @todo Remove hard-coded path
*/
function newsletter_template_form_submit_delete(&$form, &$form_state) {
$form_state['redirect'] = 'admin/config/media/newsletter/templates/manage/' . $form_state['newsletter_template']->template_id . '/delete';
}
/**
* Form callback: confirmation form for deleting a template.
*
* @param $template
* The template to delete
*
* @see newsletter_template_delete_form_submit()
* @see confirm_form()
* @ingroup forms
*/
function newsletter_template_delete_form($form, &$form_state, $template) {
$form['#template'] = $template;
$form['#submit'][] = 'newsletter_template_delete_form_submit';
if (entity_access('view', 'newsletter_template')) {
$cancel = 'admin/config/media/newsletter/templates';
}
else {
$cancel = '<front>';
}
$form = confirm_form($form, t('Are you sure you want to unsubscribe %mail?', array(
'%mail' => $template->mail,
)), $cancel, '<p>' . t('This action cannot be undone.') . '</p>', t('Delete'), t('Cancel'), 'confirm');
return $form;
}
/**
* Form API submit callback for the newsletter_template_delete_form form.
*/
function newsletter_template_delete_form_submit($form, &$form_state) {
$template = $form['#template'];
newsletter_template_delete($template);
drupal_set_message(t('The template %mail has been unsubscribed.', array(
'%mail' => $template->mail,
)));
watchdog('newsletter_template', 'Deleted template %mail.', array(
'%mail' => $template->mail,
));
if (entity_access('view', 'newsletter_template')) {
$form_state['redirect'] = 'admin/config/media/newsletter/templates';
}
else {
$form_state['redirect'] = '<front>';
}
}
/**
* Form callback: create or edit a template type.
*
* @param $newsletter_template_type
* The newsletter template type object to edit or create.
*
* @see newsletter_template_type_form_validate()
* @see newsletter_template_type_form_submit()
* @see newsletter_template_type_form_submit_delete()
* @see NewslettertemplateTypeUIController::hook_menu()
* @ingroup forms
*/
function newsletter_template_type_form($form, &$form_state, $newsletter_template_type, $op = 'edit') {
if ($op == 'clone') {
$newsletter_template_type->name .= ' (cloned)';
$newsletter_template_type->type = '';
}
$form_state['newsletter_template_type'] = $newsletter_template_type;
$form['name'] = array(
'#title' => t('Name'),
'#type' => 'textfield',
'#default_value' => $newsletter_template_type->name,
'#description' => t('The human-readable name of this template type.'),
'#required' => TRUE,
'#size' => 30,
);
// Machine-readable type name.
$form['type'] = array(
'#type' => 'machine_name',
'#default_value' => isset($newsletter_template_type->type) ? $newsletter_template_type->type : '',
'#maxlength' => 32,
//'#disabled' => $newsletter_template_type->isLocked() && $op != 'clone',
'#machine_name' => array(
'exists' => 'newsletter_template_get_types',
'source' => array(
'name',
),
),
'#description' => t('A unique machine-readable name for this template type. It must only contain lowercase letters, numbers, and underscores.'),
);
$form['data']['#tree'] = TRUE;
$form['actions'] = array(
'#type' => 'container',
'#attributes' => array(
'class' => array(
'form-actions',
),
),
'#weight' => 400,
);
$form['actions']['submit'] = array(
'#type' => 'submit',
'#value' => t('Save template type'),
);
$form['actions']['delete'] = array(
'#type' => 'submit',
'#value' => t('Delete template type'),
'#limit_validation_errors' => array(),
'#submit' => array(
'newsletter_template_type_form_submit_delete',
),
);
return $form;
}
/**
* Form API submit callback for the type form.
*/
function newsletter_template_type_form_submit(&$form, &$form_state) {
$newsletter_template_type = entity_ui_controller('newsletter_template_type')
->entityFormSubmitBuildEntity($form, $form_state);
// Save the template type and go back to the list of template types.
newsletter_template_type_save($newsletter_template_type);
$form_state['redirect'] = 'admin/structure/newsletter-template-types';
}
/**
* Form API submit callback for the delete button.
*/
function newsletter_template_type_form_submit_delete(&$form, &$form_state) {
$form_state['redirect'] = 'admin/structure/newsletter-template-types/manage/' . $form_state['newsletter_template_type']->type . '/delete';
}
Functions
Name![]() |
Description |
---|---|
newsletter_template_delete_form | Form callback: confirmation form for deleting a template. |
newsletter_template_delete_form_submit | Form API submit callback for the newsletter_template_delete_form form. |
newsletter_template_form | Form callback: create or edit a template. |
newsletter_template_form_submit | Form API submit callback for the template form. |
newsletter_template_form_submit_delete | Form API submit callback for the delete button. |
newsletter_template_form_validate | Form validation handler for newsletter_template_form(). |
newsletter_template_type_form | Form callback: create or edit a template type. |
newsletter_template_type_form_submit | Form API submit callback for the type form. |
newsletter_template_type_form_submit_delete | Form API submit callback for the delete button. |