--- publishcontent/publishcontent.module
+++ publishcontent/publishcontent.module
@@ -23,8 +23,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,
@@ -34,8 +34,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,
@@ -178,6 +178,52 @@ function _publishcontent_get_message($ni
 }
 
 /**
+ * Implements hook_form; Form to get confirmation for publish/unpublish content
+ * 
+ * @param $node
+ * @param stirng $toogle_title
+ *         title of the button 
+ *         e.g. Publish or Unpublish
+ * 
+ * @return confirmation form
+ *
+ * @see publishcontent_toggle_status_form_submit()
+ */
+function publishcontent_toggle_status_form($form, &$form_state, $node, $toggle_title) {
+  $form['id'] = array(
+    '#type' => 'value',
+    '#value' => $node->nid,
+  );
+
+  // set confirm form question and description
+  if ($toggle_title) {
+    $question = check_plain(t('Are you sure you want to ' . ucfirst($toggle_title) . ' this content?'));
+    $description = check_plain(t('This content will be '. $toggle_title . 'ed.'));
+  } 
+  else {
+    $question = check_plain(t('Are you sure?'));
+    $description = 'Click Confirm if you want to continue.';
+    $toggle_title = 'Confirm';
+  }
+  // set return path if clicked on Cancel button
+  $path = 'node/' . $node->nid;
+  // set confirm button text
+  $yes = check_plain(t(ucfirst($toggle_title)));
+  // set cancel button text
+  $no = check_plain(t('Cancel'));
+  return confirm_form($form, $question, $path, $description, $yes, $no);
+}
+
+/**
+ * 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.
  * @param $node a node object
  */
@@ -192,7 +238,7 @@ function publishcontent_toggle_status($n
   }
   node_save($node);
   drupal_set_message(_publishcontent_get_message($node->nid, $node->title, $node->status));
-  drupal_goto($_SERVER['HTTP_REFERER']);
+  drupal_goto('node/'. $node->nid);
 }
 
 /**
