Skip to content
Snippets Groups Projects
Commit 183ad8c4 authored by Aaditya Walawalkar's avatar Aaditya Walawalkar Committed by John Ennew
Browse files

Issue #1399572 by ceng, aadityawalawalkar, julou, Simon Georges, aaronbauman,...

Issue #1399572 by ceng, aadityawalawalkar, julou, Simon Georges, aaronbauman, konsul, LiloLilo, NWOM, rajibmp, esbite, rogical, sandshakimi, Rob_Feature: Add a confirmation dialogue when publishing or unpublishing content
parent 69813eab
No related branches found
No related tags found
No related merge requests found
......@@ -36,8 +36,8 @@ function publishcontent_menu() {
$items['node/%publishcontent_tab/publish/%publishcontent_security_token'] = array(
'title' => 'Publish',
'page callback' => 'publishcontent_toggle_status',
'page arguments' => array(1),
'page callback' => 'drupal_get_form',
'page arguments' => array('publishcontent_toggle_status_form', 1, 2),
'access callback' => '_publishcontent_publish_access',
'access arguments' => array(1, 3),
'weight' => 5,
......@@ -48,8 +48,8 @@ function publishcontent_menu() {
$items['node/%publishcontent_tab/unpublish/%publishcontent_security_token'] = array(
'title' => 'Unpublish',
'page callback' => 'publishcontent_toggle_status',
'page arguments' => array(1),
'page callback' => 'drupal_get_form',
'page arguments' => array('publishcontent_toggle_status_form', 1, 2),
'access callback' => '_publishcontent_unpublish_access',
'access arguments' => array(1, 3),
'weight' => 5,
......@@ -270,6 +270,48 @@ function _publishcontent_get_message($nid, $title, $status) {
t('"@title" [@nid] has been unpublished', array('@title' => $title, '@nid' => $nid));
}
/**
* Form to get confirmation for publish/unpublish content
*
* @param array $form
* @param array $form_state
* @param $node
* @param string $toggle_title
* Title of the button e.g. Publish or Unpublish
*
* @return array
*/
function publishcontent_toggle_status_form($form, &$form_state, $node, $toggle_title) {
$form['id'] = array(
'#type' => 'value',
'#value' => $node->nid,
);
// Set confirm form question.
if ($toggle_title) {
$question = t('Are you sure you want to %publish_state this content?', array('%publish_state' => ucfirst($toggle_title)));
}
else {
$question = t('Are you sure?');
}
$description = t('Click confirm if you want to continue.');
// Set return path if clicked on Cancel button.
$path = 'node/' . $node->nid;
return confirm_form($form, $question, $path, $description);
}
/**
* Submit handler for Publish/Unpublish confirmation form
*/
function publishcontent_toggle_status_form_submit($form, &$form_state) {
// load node using node id
$node = node_load($form_state['values']['id']);
publishcontent_toggle_status($node);
}
/**
* Menu callback for publish / unpublish content actions.
*
......@@ -305,7 +347,7 @@ function publishcontent_toggle_status($node) {
// Clear the page and block caches.
cache_clear_all();
drupal_goto($_SERVER['HTTP_REFERER']);
drupal_goto('node/' . $node->nid);
}
/**
......
......@@ -165,6 +165,11 @@ abstract class PublishContentWebTestBase extends DrupalWebTestCase {
$this->assertNoLink('unpublish-' . $node->nid);
$this->clickLink('publish-' . $node->nid);
$this->assertResponse(200);
// Submit the confirmation form.
$this->drupalPost($this->url, array(), 'Confirm');
$this->assertResponse(200);
$this->assertNodeStatus($node->nid, 1);
$this->setNodeStatus($node, $status, 'Reset status');
}
......@@ -194,6 +199,11 @@ abstract class PublishContentWebTestBase extends DrupalWebTestCase {
$this->assertNoLink('publish-' . $node->nid);
$this->clickLink('unpublish-' . $node->nid);
$this->assertResponse(200);
// Submit the confirmation form.
$this->drupalPost($this->url, array(), 'Confirm');
$this->assertResponse(200);
$this->assertNodeStatus($node->nid, 0);
$this->setNodeStatus($node, $status, 'Reset status');
}
......@@ -530,6 +540,10 @@ class PublishContentTabTests extends PublishContentWebTestBase {
// Now visit the tab.
$this->clickLink($tab_link_text);
// Submit the confirmation form.
$this->drupalPost($this->url, array(), 'Confirm');
$this->assertResponse(200);
$node = node_load($nid);
if ($op == 'publish') {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment