diff --git a/modules/Documents/actions/CheckFileIntegrity.php b/modules/Documents/actions/CheckFileIntegrity.php
index d177def237fd437915499cedb2ce12cc382a9ad4..4e13dd8f1b2a5a579eb22b8e1882b7053a32d221 100644
--- a/modules/Documents/actions/CheckFileIntegrity.php
+++ b/modules/Documents/actions/CheckFileIntegrity.php
@@ -10,12 +10,13 @@
 
 class Documents_CheckFileIntegrity_Action extends Vtiger_Action_Controller {
 
+	public function requiresPermission(\Vtiger_Request $request) {
+		$permissions = parent::requiresPermission($request);
+		$permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'record');
+		return $permissions;
+	}
 	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
-
-		if(!Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $request->get('record'))) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
-		}
+		return parent::checkPermission($request);
 	}
 
 	public function process(Vtiger_Request $request) {
diff --git a/modules/Documents/actions/DownloadFile.php b/modules/Documents/actions/DownloadFile.php
index fe6dc161dfa0e70bc870ecc15bc04376d5ba837d..3df847aabdf211793ffaee08a6b4a48df6bb0814 100644
--- a/modules/Documents/actions/DownloadFile.php
+++ b/modules/Documents/actions/DownloadFile.php
@@ -10,14 +10,15 @@
 
 class Documents_DownloadFile_Action extends Vtiger_Action_Controller {
 
+	public function requiresPermission(\Vtiger_Request $request) {
+		$permissions = parent::requiresPermission($request);
+		$permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'record');
+		return $permissions;
+	}
 	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
-
-		if(!Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $request->get('record'))) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
-		}
+		return parent::checkPermission($request);
 	}
-
+	
 	public function process(Vtiger_Request $request) {
 		$moduleName = $request->getModule();
 
diff --git a/modules/Documents/actions/Folder.php b/modules/Documents/actions/Folder.php
index 0d8ce0c1506dcf15c2a2860464c172e316b4ee78..3bbff59837d3b904ab11ab2fc2fd5688c389654d 100644
--- a/modules/Documents/actions/Folder.php
+++ b/modules/Documents/actions/Folder.php
@@ -15,13 +15,29 @@ class Documents_Folder_Action extends Vtiger_Action_Controller {
 		$this->exposeMethod('save');
 		$this->exposeMethod('delete');
 	}
+	
+	public function requiresPermission(Vtiger_Request $request){
+		$permissions = parent::requiresPermission($request);
+		$mode = $request->getMode();
+		if(!empty($mode)) {
+			switch ($mode) {
+				case 'save':
+					$permissions[] = array('module_parameter' => 'module', 'action' => 'EditView');
+					break;
+				case 'delete':
+					$permissions[] = array('module_parameter' => 'module', 'action' => 'Delete');
+					$request->set('custom_module', 'Calendar');
+					break;
+				default:
+					$permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView');
+					break;
+			}
+		}
+		return $permissions;
+	}
 
 	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
-
-		if(!Users_Privileges_Model::isPermitted($moduleName, 'DetailView')) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
-		}
+		return parent::checkPermission($request);
 	}
 
 	public function process(Vtiger_Request $request) {
@@ -37,7 +53,7 @@ class Documents_Folder_Action extends Vtiger_Action_Controller {
 		$folderDesc = $request->get('folderdesc');
 		$result = array();
 
-		if (!empty ($folderName)) {
+		if (!empty ($folderName)) {  
             $saveMode = $request->get('savemode');
             $folderModel = Documents_Folder_Model::getInstance();
             if($saveMode == 'edit') {
diff --git a/modules/Documents/actions/MoveDocuments.php b/modules/Documents/actions/MoveDocuments.php
index b0917ec752c7729d21e4d0f2e5e6876c6b76e355..ea1948a53b790047cced3e1171c421d2e188a80a 100644
--- a/modules/Documents/actions/MoveDocuments.php
+++ b/modules/Documents/actions/MoveDocuments.php
@@ -9,13 +9,17 @@
  *************************************************************************************/
 
 class Documents_MoveDocuments_Action extends Vtiger_Mass_Action {
+	
+	public function requiresPermission(Vtiger_Request $request){
+		$permissions = parent::requiresPermission($request);
+		
+		$permissions[] = array('module_parameter' => 'module', 'action' => 'EditView');
+		return $permissions;
+	}
 
-	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
 
-		if(!Users_Privileges_Model::isPermitted($moduleName, 'EditView')) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
-		}
+	public function checkPermission(Vtiger_Request $request) {
+		return parent::checkPermission($request);
 	}
 
 	public function process(Vtiger_Request $request) {
diff --git a/modules/Documents/views/AddFolder.php b/modules/Documents/views/AddFolder.php
index 6b9d7214f72a4c2b9e2a92d813e3a78b2413e37c..315caf6edd89fdfa0ee9bf9968e696dd666a7ac9 100644
--- a/modules/Documents/views/AddFolder.php
+++ b/modules/Documents/views/AddFolder.php
@@ -10,12 +10,16 @@
 
 class Documents_AddFolder_View extends Vtiger_IndexAjax_View {
 
-	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
+	public function requiresPermission(Vtiger_Request $request){
+		$permissions = parent::requiresPermission($request);
+		
+		$permissions[] = array('module_parameter' => 'module', 'action' => 'CreateView');
+		return $permissions;
+	}
 
-		if(!Users_Privileges_Model::isPermitted($moduleName, 'CreateView')) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
-		}
+
+	public function checkPermission(Vtiger_Request $request) {
+		return parent::checkPermission($request);
 	}
 
 	public function process (Vtiger_Request $request) {
diff --git a/modules/Documents/views/EditAjax.php b/modules/Documents/views/EditAjax.php
index a9f35baa208cd0406231000c9125f6043ecbd6ac..e5cd97374b58816495ed5645a43562739d8ec3af 100644
--- a/modules/Documents/views/EditAjax.php
+++ b/modules/Documents/views/EditAjax.php
@@ -10,12 +10,16 @@
 
 class Documents_EditAjax_View extends Vtiger_QuickCreateAjax_View {
 
-	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
+	public function requiresPermission(Vtiger_Request $request){
+		$permissions = parent::requiresPermission($request);
+		
+		$permissions[] = array('module_parameter' => 'module', 'action' => 'CreateView');
+		return $permissions;
+	}
 
-		if (!(Users_Privileges_Model::isPermitted($moduleName, 'CreateView'))) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
-		}
+
+	public function checkPermission(Vtiger_Request $request) {
+		return parent::checkPermission($request);
 	}
 
 	public function getFields($documentType){
diff --git a/modules/Documents/views/FilePreview.php b/modules/Documents/views/FilePreview.php
index 242dba1219b165ba144f45cdf9e67f3d19246456..b73f661186cd35696666c2d0326fb7351f80427a 100644
--- a/modules/Documents/views/FilePreview.php
+++ b/modules/Documents/views/FilePreview.php
@@ -10,12 +10,16 @@
 
 class Documents_FilePreview_View extends Vtiger_IndexAjax_View {
 
-	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
+	public function requiresPermission(Vtiger_Request $request){
+		$permissions = parent::requiresPermission($request);
+		
+		$permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView',  'record_parameter' => 'record');
+		return $permissions;
+	}
 
-		if(!Users_Privileges_Model::isPermitted($moduleName, 'DetailView', $request->get('record'))) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
-		}
+
+	public function checkPermission(Vtiger_Request $request) {
+		return parent::checkPermission($request);
 	}
 
 	public function process(Vtiger_Request $request) {
diff --git a/modules/Documents/views/List.php b/modules/Documents/views/List.php
index 7661fac0c9290f2dae7c13990b1ab753a1e20b8d..cbeceb8bf6387463b8da9ead7151a76d7747b459 100644
--- a/modules/Documents/views/List.php
+++ b/modules/Documents/views/List.php
@@ -12,7 +12,7 @@ class Documents_List_View extends Vtiger_List_View {
 	function __construct() {
 		parent::__construct();
 	}
-
+	
 	function preProcess (Vtiger_Request $request) {
 		$viewer = $this->getViewer ($request);
 		$moduleName = $request->getModule();
diff --git a/modules/Documents/views/MoveDocuments.php b/modules/Documents/views/MoveDocuments.php
index 0437ead47fa2d7da80ff7318854fb653d8f16601..cc739152a0e55d9408edeefa5bb9b5e4dcd0bf6d 100644
--- a/modules/Documents/views/MoveDocuments.php
+++ b/modules/Documents/views/MoveDocuments.php
@@ -10,12 +10,16 @@
 
 class Documents_MoveDocuments_View extends Vtiger_Index_View {
 
-	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
+	public function requiresPermission(Vtiger_Request $request){
+		$permissions = parent::requiresPermission($request);
+		
+		$permissions[] = array('module_parameter' => 'module', 'action' => 'EditView');
+		return $permissions;
+	}
 
-		if(!Users_Privileges_Model::isPermitted($moduleName, 'EditView')) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
-		}
+
+	public function checkPermission(Vtiger_Request $request) {
+		return parent::checkPermission($request);
 	}
 
 	public function process (Vtiger_Request $request) {
diff --git a/modules/Documents/views/QuickCreateAjax.php b/modules/Documents/views/QuickCreateAjax.php
index fd434226eee9d48d50c98bc5175ec39e0734983a..856e0c5458f0c68930c47b3233753171376d49c8 100644
--- a/modules/Documents/views/QuickCreateAjax.php
+++ b/modules/Documents/views/QuickCreateAjax.php
@@ -10,12 +10,16 @@
 
 class Documents_QuickCreateAjax_View extends Vtiger_IndexAjax_View {
 
-	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
+	public function requiresPermission(Vtiger_Request $request){
+		$permissions = parent::requiresPermission($request);
+		
+		$permissions[] = array('module_parameter' => 'module', 'action' => 'CreateView');
+		return $permissions;
+	}
 
-		if (!(Users_Privileges_Model::isPermitted($moduleName, 'CreateView'))) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED', $moduleName));
-		}
+
+	public function checkPermission(Vtiger_Request $request) {
+		return parent::checkPermission($request);
 	}
 
 	public function process(Vtiger_Request $request) {
diff --git a/modules/Vtiger/views/List.php b/modules/Vtiger/views/List.php
index 0e908364fad05582af18162b1c897018af00e03f..3e9b338a1fd24b810c26d3588f49dfd9933bef1e 100644
--- a/modules/Vtiger/views/List.php
+++ b/modules/Vtiger/views/List.php
@@ -19,6 +19,18 @@ class Vtiger_List_View extends Vtiger_Index_View {
 	function __construct() {
 		parent::__construct();
 	}
+	
+	public function requiresPermission(Vtiger_Request $request){
+		$permissions = parent::requiresPermission($request);
+		
+		$permissions[] = array('module_parameter' => 'module', 'action' => 'DetailView');
+		return $permissions;
+	}
+
+
+	public function checkPermission(Vtiger_Request $request) {
+		return parent::checkPermission($request);
+	}
 
 	function preProcess(Vtiger_Request $request, $display=true) {
 		parent::preProcess($request, false);