diff --git a/modules/menu.workbench_access.inc b/modules/menu.workbench_access.inc
index a7a1b94..2e1e3e5 100644
--- a/modules/menu.workbench_access.inc
+++ b/modules/menu.workbench_access.inc
@@ -77,6 +77,12 @@ function menu_workbench_access_configuration(&$form, &$form_state) {
       ),
     ),
   );
+  $form['menu_workbench_access_info']['workbench_access_menu_limit'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Limit available menu items based on Workbench Access.'),
+    '#description' => t('If checked, when creating nodes, users will not be able to choose a parent menu item to which they do not have editorial access.'),
+    '#default_value' => variable_get('workbench_access_menu_limit', FALSE),
+  );
 }
 
 /**
@@ -233,3 +239,41 @@ function workbench_access_menu_link_delete($link) {
     workbench_access_section_delete($access_scheme);
   }
 }
+
+/**
+* Executes a form alter on a specific FieldAPI form element.
+*/
+function menu_workbench_access_default_form_alter(&$form, &$form_state, $options) {
+  // Nothing to do if we're not limiting menu items, or if the user already
+  // has no menu options from which to choose.
+  if (!isset($form['menu']) || !variable_get('workbench_access_menu_limit', FALSE)) {
+    return;
+  }
+
+  $tree = workbench_access_get_user_tree();
+  $active = workbench_access_get_active_tree();
+  $menu_options = workbench_access_options($tree, $active['tree']);
+  $parent = &$form['menu']['link']['parent'];
+  $current = $parent['#options'];
+
+  foreach ($parent['#options'] as $key => $value) {
+    $ids = explode(':', $key);
+    $menu = $ids[0];
+    $plid = $ids[1];
+    // unset if the user does not not have access to this item and the item
+    // is not the current parent.
+    if (!isset($menu_options[$plid]) && !isset($menu_options[$menu]) && (!$form['menu']['enabled']['#default_value'] || $key != $parent['#default_value'])) {
+      unset($parent['#options'][$key]);
+    }
+  }
+
+  // Add a warning note if the user does not have rights to the current parent,
+  // as the user will not be able to restore the item to it's current value if
+  // changed.
+  if (array_key_exists($parent['#default_value'], $parent['#options'])) {
+    $default = explode(':', $parent['#default_value']);
+    if ($default[1] != 0 && !isset($tree[$default[1]])) {
+      $parent['#description'] = t('<strong>Note:</strong> since you do not have editorial access to the parent of this menu item, if you change the parent you may not be able to restore it to it\'s original value.');
+    }
+  }
+}
