--- junk.module	2011-01-12 14:23:59.000000000 +0300
+++ junk.module	2011-03-05 11:59:35.839844920 +0300
@@ -229,9 +229,7 @@
  * Execute junking action.
  *
  */
-function junk_node_form_junk_confirm_submit($form, &$form_state) {
-  if ($form_state['values']['confirm']) {
-    $node = node_load($form_state['values']['nid']);
+function junk_junk($node) {
     global $user;
     db_query("INSERT INTO {junk_node} VALUES (%d, %d, %d)", $node->nid, $user->uid, time());
     if (variable_get('junk_unpublish', 1)) {
@@ -241,7 +239,17 @@
     if (module_exists('rules')) {
       rules_invoke_event('junk_junk_node', $node, $user);
     }
-    drupal_set_message(t("Node moved to junk"), 'status');
+}
+
+/**
+ * Execute junking action.
+ *
+ */
+function junk_node_form_junk_confirm_submit($form, &$form_state) {
+  if ($form_state['values']['confirm']) {
+    $node = node_load($form_state['values']['nid']);
+    junk_junk($node);
+    drupal_set_message(t("Node has been moved to junk"), 'status');
   }
   $form_state['redirect'] = '<front>';
 }
@@ -302,13 +310,7 @@
    t('Restore'), t('Cancel'));
 }
 
-/**
- * Restore node confirmation form submit handler.
- */
-function junk_restore_node_confirm_submit($form, &$form_state) {
-  if ($form_state['values']['confirm']) {
-    $node = node_load($form_state['values']['nid']);
-    // Save node as a published again.
+function junk_restore($node) {
     db_query("DELETE FROM {junk_node} WHERE nid=%d", $node->nid);
     if (variable_get('junk_unpublish', 1)) {
       node_publish_action($node);
@@ -318,7 +320,16 @@
       global $user;
       rules_invoke_event('junk_unjunk_node', $node, $user);
     }
-    drupal_set_message("Node restored from junk", 'status');
+}
+
+/**
+ * Restore node confirmation form submit handler.
+ */
+function junk_restore_node_confirm_submit($form, &$form_state) {
+  if ($form_state['values']['confirm']) {
+    $node = node_load($form_state['values']['nid']);
+    junk_restore($node);
+    drupal_set_message("Node has been restored from junk", 'status');
     $form_state['redirect'] = 'junk';
   }
   else {
@@ -606,4 +617,25 @@
 	}
 }
 
+function junk_action_info() {
+  return array(
+    'junk_junk_node_action' => array(
+      'type' => 'node',
+      'description' => t('Junk node'),
+      'configurable' => FALSE,
+    ),
+    'junk_restore_node_action' => array(
+      'type' => 'node',
+      'description' => t('Restore node from junk'),
+      'configurable' => FALSE,
+    ),
+  );
+}
+
+function junk_junk_node_action($node) {
+  junk_junk($node);
+}
 
+function junk_restore_node_action($node) {
+  junk_restore($node);
+}
