Index: modules/node.module
===================================================================
--- modules/node.module	(revision 5735)
+++ modules/node.module	(working copy)
@@ -580,7 +580,7 @@
  * Implementation of hook_perm().
  */
 function node_perm() {
-  return array('administer nodes', 'access content');
+  return array('administer nodes', 'access content', 'toggle nodes sticky');
 }
 
 /**
@@ -1638,6 +1638,7 @@
     $node->revision = in_array('revision', $node_options);
   }
 
+  $sticky_form_element = array('#type' => 'checkbox', '#title' => t('Sticky at top of lists'), '#default_value' => $node->sticky);
   if (user_access('administer nodes')) {
     // Node author information
     $form['author'] = array('#type' => 'fieldset', '#title' => t('Authoring information'), '#collapsible' => TRUE, '#collapsed' => TRUE, '#weight' => -5);
@@ -1650,9 +1651,12 @@
     $form['options']['status']   = array('#type' => 'checkbox', '#title' => t('Published'), '#default_value' => $node->status);
     $form['options']['moderate'] = array('#type' => 'checkbox', '#title' => t('In moderation queue'), '#default_value' => $node->moderate);
     $form['options']['promote']  = array('#type' => 'checkbox', '#title' => t('Promoted to front page'), '#default_value' => $node->promote);
-    $form['options']['sticky']   = array('#type' => 'checkbox', '#title' => t('Sticky at top of lists'), '#default_value' => $node->sticky);
+    $form['options']['sticky']   = $sticky_form_element;
     $form['options']['revision'] = array('#type' => 'checkbox', '#title' => t('Create new revision'), '#default_value' => $node->revision);
   }
+  else if (user_access('toggle nodes sticky')) {
+    $form['sticky']   = $sticky_form_element;
+  }
   else {
     // Don't show node options because the user doesn't have admin access.
     $form['status']   = array('#type' => 'value', '#value' => $node->status);
