diff --git a/node_gallery_api.inc b/node_gallery_api.inc
index 8ed3841..688093d 100644
--- a/node_gallery_api.inc
+++ b/node_gallery_api.inc
@@ -1186,7 +1186,7 @@ function node_gallery_api_update_image_counts($ngid) {
 function node_gallery_api_get_gallery_list($type, $uid = NULL) {
   $query = db_select('node', 'n')->fields('n', array('nid', 'title'))->condition('type', $type);
   $items = array();
-  if ($uid && !node_gallery_api_user_access('edit', $type)) {
+  if ($uid) {
     $query->condition('uid', $uid);
   }
   $result = $query->execute();
diff --git a/node_gallery_api.module b/node_gallery_api.module
index 630a2d9..2a492ea 100644
--- a/node_gallery_api.module
+++ b/node_gallery_api.module
@@ -116,7 +116,7 @@ function node_gallery_api_menu() {
     'page callback' => 'node_gallery_json_get_sorted_images',
     'page arguments' => array(3, 5, 6),
     'access callback' => 'node_gallery_user_access',
-    'access arguments' => array('edit image', 3),
+    'access arguments' => array('edit item', 3),
     'file' => 'node_gallery.pages.inc',
     'type' => MENU_CALLBACK,
   );
@@ -133,7 +133,7 @@ function node_gallery_api_menu() {
     'page callback' => 'drupal_get_form',
     'page arguments' => array('node_gallery_api_manage_items_form', 1),
     'access callback' => 'node_gallery_api_user_access',
-    'access arguments' => array('edit image', 1),
+    'access arguments' => array('edit item', 1),
     'file' => 'node_gallery_api.pages.inc',
     'weight' => -3,
     'type' => MENU_LOCAL_TASK,
@@ -1171,36 +1171,17 @@ function node_gallery_api_user_access($op, $gallery = NULL, $account = NULL) {
     if (!isset($gallery)) {
       return FALSE;
     }
-    $type = $gallery->type;
+    $gallery_type = $gallery->type;
     $image_operations = array('upload', 'edit item');
     if (in_array($op, $image_operations)) {
-      $relationship = node_gallery_get_relationship($type);
-      $type = $relationship['item_type'];
-    }
-    // Respect Ubercart's renaming of content types. This is ugly, but we deem
-    // Ubercart important enough to merit this.
-    if (module_exists('uc_product')) {
-      $node_type = node_type_get_type($type);
-      if ($node_type->module == 'uc_product') {
-        $any = 'all';
-        $content = 'products';
-      }
+      $relationship = node_gallery_api_get_relationship_type($gallery_type);
+      $types = $relationship->item_types;
     }
   }
   switch ($op) {
     /**
      * Generic permissions.
      */
-    case 'view':
-      return user_access(NODE_GALLERY_PERM_VIEW_GALLERY);
-      break;
-    case 'view My Galleries':
-      // Users not blocked and not anonymous with 'view gallery' perms can see a "My Galleries" link
-      if ($user->status) {
-        return user_access(NODE_GALLERY_PERM_VIEW_GALLERY);
-      }
-      return FALSE;
-      break;
     case 'administer':
       return user_access(NODE_GALLERY_PERM_ADMIN_GALLERY);
       break;
@@ -1212,29 +1193,41 @@ function node_gallery_api_user_access($op, $gallery = NULL, $account = NULL) {
       if (!user_access(NODE_GALLERY_PERM_UPLOAD_TO_ALL_GALLERIES) && $user->uid != $gallery->uid) {
         return FALSE;
       }
-      return user_access('create ' . $type . ' ' . $content);
+      foreach ($types as $type) {
+        if(user_access('create ' . $type . ' ' . $content)) {
+          return TRUE;
+        }
+      }
+      return FALSE;
       break;
     case 'edit item':
-      if ($user->uid == $gallery->uid) {
-        return user_access('edit own ' . $type . ' ' . $content) || user_access('edit ' . $any . ' ' . $type . ' ' . $content);
-      }
-      else {
-        return user_access('edit ' . $any . ' ' . $type . ' ' . $content);
+      foreach ($types as $type) {
+        if ($user->uid == $gallery->uid) {
+          if (user_access('edit own ' . $type . ' ' . $content) || user_access('edit ' . $any . ' ' . $type . ' ' . $content)) {
+            return TRUE;
+          }
+        }
+        else {
+          if (user_access('edit ' . $any . ' ' . $type . ' ' . $content)) {
+            return TRUE;
+          }
+        }
       }
+      return FALSE;
       break;
 
       /**
        * Permissions acting on galleries.
        */
     case 'create':
-      return user_access('create ' . $type . ' ' . $content);
+      return user_access('create ' . $gallery_type . ' ' . $content);
       break;
     case 'edit':
     case 'delete':
-      if (!user_access($op . ' ' . $any . ' ' . $type . ' ' . $content) && $user->uid != $gallery->uid) {
+      if (!user_access($op . ' ' . $any . ' ' . $gallery_type . ' ' . $content) && $user->uid != $gallery->uid) {
         return FALSE;
       }
-      return user_access($op . ' own ' . $type . ' ' . $content);
+      return user_access($op . ' own ' . $gallery_type . ' ' . $content);
       break;
   }
   return FALSE;
diff --git a/node_gallery_api.pages.inc b/node_gallery_api.pages.inc
index f606f26..a3af9cf 100644
--- a/node_gallery_api.pages.inc
+++ b/node_gallery_api.pages.inc
@@ -638,10 +638,7 @@ function node_gallery_api_upload_items_form($gallery, $item_type) {
    //   'drupal_plupload_import_field_type' => $filefield_name,
    // );
     $output = '';
-    if (!user_access('bulk upload files with plupload')) {
-      drupal_set_message(t('You have permissions to view this tab, but not to upload images.  Please inform an administrator that you need the \'bulk upload files with plupload\' permission.'), 'warning');
-    }
-    else {
+
       if (!empty($gallery->edit_after_plupload)) {
         $settings = array(
           'ngid' => $gallery->nid,
@@ -653,7 +650,7 @@ function node_gallery_api_upload_items_form($gallery, $item_type) {
         drupal_add_js(drupal_get_path('module', 'node_gallery') . '/js/ng_plupload.js');
       }
       $output = drupal_get_form('node_gallery_api_plupload_form', $relationship_type, $gallery->nid, $item_type);
-    }
+
     return $output;
   }
 
