diff --git a/modules/Calendar/actions/ActivityReminder.php b/modules/Calendar/actions/ActivityReminder.php
index 50597bfdcc57f6e23469ac156f36ab52963af078..b32e026552b6046a8180187fdf2140a506341565 100644
--- a/modules/Calendar/actions/ActivityReminder.php
+++ b/modules/Calendar/actions/ActivityReminder.php
@@ -15,16 +15,27 @@ class Calendar_ActivityReminder_Action extends Vtiger_Action_Controller{
 		$this->exposeMethod('postpone');
 	}
 
-	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
-		$moduleModel = Vtiger_Module_Model::getInstance($moduleName);
+	public function requiresPermission(Vtiger_Request $request){
+		$mode = $request->getMode();
+		if(!empty($mode)) {
+			switch ($mode) {
+				case 'getReminders':
+					$permission[] = array('module_parameter' => 'module', 'action' => 'DetailView');
+					break;
 
-		$userPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel();
-		$permission = $userPrivilegesModel->hasModulePermission($moduleModel->getId());
+				case 'postpone':
+					$permission[] = array('module_parameter' => 'module', 'action' => 'EditView', 'record_parameter' => 'record');
+					break;
 
-		if(!$permission) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
+				default:
+					break;
+			}
 		}
+		return $permission;
+	}
+	
+	public function checkPermission(Vtiger_Request $request) {
+		parent::checkPermission($request);
 	}
 
 	public function process(Vtiger_Request $request) {
@@ -49,9 +60,9 @@ class Calendar_ActivityReminder_Action extends Vtiger_Action_Controller{
 	}
 
 	function postpone(Vtiger_Request $request) {
-		$recordId = $request->get('record');
-		$module = $request->getModule();
-		$recordModel = Vtiger_Record_Model::getInstanceById($recordId, $module);
-		$recordModel->updateReminderStatus(0);
+			$recordId = $request->get('record');
+			$module = $request->getModule();
+			$recordModel = Vtiger_Record_Model::getInstanceById($recordId, $module);
+			$recordModel->updateReminderStatus(0);
+		}
 	}
-}
\ No newline at end of file
diff --git a/modules/Calendar/actions/CalendarActions.php b/modules/Calendar/actions/CalendarActions.php
index d5029ea9d07528c69c4aebf30d1b133af1da38cd..7256e8b644ffc3de0fb97d694fc9997e0b873e5b 100644
--- a/modules/Calendar/actions/CalendarActions.php
+++ b/modules/Calendar/actions/CalendarActions.php
@@ -13,7 +13,25 @@ class Calendar_CalendarActions_Action extends Vtiger_BasicAjax_Action {
 	function __construct() {
 		$this->exposeMethod('fetchAgendaViewEventDetails');
 	}
-
+	
+	public function requiresPermission(Vtiger_Request $request){
+		$mode = $request->getMode();
+		if(!empty($mode)) {
+			switch ($mode) {
+				case 'fetchAgendaViewEventDetails':
+					$permission[] = array('module_parameter' => 'module', 'action' => 'DetailView', 'record_parameter' => 'id');
+					break;
+				default:
+					break;
+			}
+		}
+		return $permission;
+	}
+	
+	public function checkPermission(Vtiger_Request $request) {
+		parent::checkPermission($request);
+	}
+	
 	public function process(Vtiger_Request $request) {
 		$mode = $request->getMode();
 		if (!empty($mode) && $this->isMethodExposed($mode)) {
@@ -23,29 +41,29 @@ class Calendar_CalendarActions_Action extends Vtiger_BasicAjax_Action {
 	}
 
 	public function fetchAgendaViewEventDetails(Vtiger_Request $request) {
-		$result = array();
-		$eventId = $request->get('id');
-		$moduleName = $request->getModule();
-		$moduleModel = Vtiger_Module_Model::getInstance('Events');
-		$recordModel = Events_Record_Model::getInstanceById($eventId);
+			$result = array();
+			$eventId = $request->get('id');
+			$moduleName = $request->getModule();
+			$moduleModel = Vtiger_Module_Model::getInstance('Events');
+			$recordModel = Events_Record_Model::getInstanceById($eventId);
 
-		$result[vtranslate('Assigned To')] = getUserFullName($recordModel->get('assigned_user_id'));
-		if ($recordModel->get('priority')) {
-			$result[vtranslate('Priority', $moduleName)] = $recordModel->get('priority');
-		}
-		if ($recordModel->get('location')) {
-			$result[vtranslate('Location', $moduleName)] = $recordModel->get('location');
-		}
-		if ($recordModel->get('contact_id')) {
-			$contact_id = Vtiger_Field_Model::getInstance('contact_id', $moduleModel);
-			$result[vtranslate($contact_id->get('label'), $moduleName)] = $contact_id->getDisplayValue($recordModel->get('contact_id'));
-		}
-		if ($recordModel->get('parent_id')) {
-			$parent_id = Vtiger_Field_Model::getInstance('parent_id', $moduleModel);
-			$result[vtranslate($parent_id->get('label'), $moduleName)] = $parent_id->getDisplayValue($recordModel->get('parent_id'));
-		}
+			$result[vtranslate('Assigned To')] = getUserFullName($recordModel->get('assigned_user_id'));
+			if ($recordModel->get('priority')) {
+				$result[vtranslate('Priority', $moduleName)] = $recordModel->get('priority');
+			}
+			if ($recordModel->get('location')) {
+				$result[vtranslate('Location', $moduleName)] = $recordModel->get('location');
+			}
+			if ($recordModel->get('contact_id')) {
+				$contact_id = Vtiger_Field_Model::getInstance('contact_id', $moduleModel);
+				$result[vtranslate($contact_id->get('label'), $moduleName)] = $contact_id->getDisplayValue($recordModel->get('contact_id'));
+			}
+			if ($recordModel->get('parent_id')) {
+				$parent_id = Vtiger_Field_Model::getInstance('parent_id', $moduleModel);
+				$result[vtranslate($parent_id->get('label'), $moduleName)] = $parent_id->getDisplayValue($recordModel->get('parent_id'));
+			}
 		$response = new Vtiger_Response();
-		$response->setResult($result);
+			$response->setResult($result);
 		$response->emit();
 	}
 
diff --git a/modules/Calendar/actions/CalendarUserActions.php b/modules/Calendar/actions/CalendarUserActions.php
index 2bb40e47d8e63b63d4990876d9cbdbfb0fbb4278..41744c24e28557e44efc598e03fe91eef1bf5888 100755
--- a/modules/Calendar/actions/CalendarUserActions.php
+++ b/modules/Calendar/actions/CalendarUserActions.php
@@ -18,13 +18,31 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{
 		$this->exposeMethod('checkDuplicateView');
 	}
 	
-	public function checkPermission(Vtiger_Request $request) {
-		$moduleName = $request->getModule();
-		$record = $request->get('record');
-		
-		if(!Users_Privileges_Model::isPermitted($moduleName, 'View', $record)) {
-			throw new AppException(vtranslate('LBL_PERMISSION_DENIED'));
+	public function requiresPermission(Vtiger_Request $request){
+		$mode = $request->getMode();
+		if(!empty($mode)) {
+			switch ($mode) {
+				case 'deleteUserCalendar':
+					$permission[] = array('module_parameter' => 'module', 'action' => 'EditView');
+					break;
+				case 'deleteCalendarView':
+					$permission[] = array('module_parameter' => 'module', 'action' => 'EditView');
+					$permission[] = array('module_parameter' => 'module', 'action' => 'Delete');
+					break;
+				case 'addUserCalendar':
+				case 'addCalendarView':
+					$permission[] = array('module_parameter' => 'module', 'action' => 'EditView');
+					$permission[] = array('module_parameter' => 'module', 'action' => 'CreateView');
+					break;
+				default:
+					break;
+			}
 		}
+		return $permission;
+	}
+	
+	public function checkPermission(Vtiger_Request $request) {
+		parent::checkPermission($request);
 	}
 	
 	public function process(Vtiger_Request $request) {
@@ -44,7 +62,7 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{
 		$currentUser = Users_Record_Model::getCurrentUserModel();
 		$userId = $currentUser->getId();
 		$sharedUserId = $request->get('userid');
-		
+
 		$db = PearDatabase::getInstance();
 		$result = $db->pquery('SELECT 1 FROM vtiger_shareduserinfo WHERE userid=? AND shareduserid=?', array($userId, $sharedUserId));
 		if($db->num_rows($result) > 0) {
@@ -52,7 +70,7 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{
 		} else {
 			$db->pquery('INSERT INTO vtiger_shareduserinfo (userid, shareduserid, visible) VALUES(?, ?, ?)', array($userId, $sharedUserId, '0'));
 		}
-		
+
 		$userName = getUserFullName($sharedUserId);
 		if(!$userName) {
 			$userName = Vtiger_Functions::getGroupRecordLabel($sharedUserId);
@@ -73,19 +91,19 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{
 		$userId = $currentUser->getId();
 		$sharedUserId = $request->get('selectedUser');
 		$color = $request->get('selectedColor');
-		
+
 		$db = PearDatabase::getInstance();
-		
+
 		$queryResult = $db->pquery('SELECT 1 FROM vtiger_shareduserinfo WHERE userid=? AND shareduserid=?', array($userId, $sharedUserId));
-		
+
 		if($db->num_rows($queryResult) > 0) {
 			$db->pquery('UPDATE vtiger_shareduserinfo SET color=?, visible=? WHERE userid=? AND shareduserid=?', array($color, '1', $userId, $sharedUserId));
 		} else {
 			$db->pquery('INSERT INTO vtiger_shareduserinfo (userid, shareduserid, color, visible) VALUES(?, ?, ?, ?)', array($userId, $sharedUserId, $color, '1'));
 		}
-		
+
 		$response = new Vtiger_Response();
-		$response->setResult(array('success' => true));
+			$response->setResult(array('success' => true));
 		$response->emit();
 	}
 	
@@ -114,7 +132,7 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{
 	 */
 	function deleteCalendarView(Vtiger_Request $request) {
 		Calendar_Module_Model::deleteCalendarView($request);
-		
+
 		$result = array('viewmodule' => $request->get('viewmodule'), 'viewfieldname' => $request->get('viewfieldname'), 'viewfieldlabel' => $request->get('viewfieldlabel'));
 		$response = new Vtiger_Response();
 		$response->setResult($result);
@@ -127,8 +145,8 @@ class Calendar_CalendarUserActions_Action extends Vtiger_Action_Controller{
 	 * @return Vtiger_Response $response
 	 */
 	function addCalendarView(Vtiger_Request $request) {
-		$type = Calendar_Module_Model::addCalendarView($request);
-		
+			$type = Calendar_Module_Model::addCalendarView($request);
+
 		$response = new Vtiger_Response();
 		$response->setResult(array('success' => true, 'type' => $type));
 		$response->emit();