From 0ddfe1217ac32168fa4493f9d0d6998bff94e633 Mon Sep 17 00:00:00 2001 From: Uma <uma.s@vtiger.com> Date: Wed, 13 May 2020 12:51:26 +0530 Subject: [PATCH] Fixes #1261 Report sharing has been addressed --- layouts/v7/modules/Reports/Step1.tpl | 10 +++++++++- .../v7/modules/Reports/resources/Detail.js | 20 +++++++++++++++++++ layouts/v7/modules/Reports/resources/Edit.js | 19 ++++++++++++++++++ modules/Reports/models/Record.php | 13 +++++++----- 4 files changed, 56 insertions(+), 6 deletions(-) diff --git a/layouts/v7/modules/Reports/Step1.tpl b/layouts/v7/modules/Reports/Step1.tpl index d58127340..f58aa9cf4 100644 --- a/layouts/v7/modules/Reports/Step1.tpl +++ b/layouts/v7/modules/Reports/Step1.tpl @@ -104,10 +104,18 @@ <label class='col-lg-3 control-label textAlignLeft'>{vtranslate('LBL_SHARE_REPORT',$MODULE)}</label> <div class='col-lg-4'> <select id="memberList" class="col-lg-12 select2-container select2 members " multiple="true" name="members[]" data-placeholder="{vtranslate('LBL_ADD_USERS_ROLES', $MODULE)}"> + <optgroup label="{vtranslate('LBL_ALL',$MODULE)}"> + <option value="All::Users" data-member-type="{vtranslate('LBL_ALL',$MODULE)}" + {if ($REPORT_MODEL->get('sharingtype') == 'Public')} selected="selected"{/if}> + {vtranslate('LBL_ALL_USERS',$MODULE)} + </option> + </optgroup> {foreach from=$MEMBER_GROUPS key=GROUP_LABEL item=ALL_GROUP_MEMBERS} <optgroup label="{$GROUP_LABEL}"> {foreach from=$ALL_GROUP_MEMBERS item=MEMBER} - <option value="{$MEMBER->getId()}" data-member-type="{$GROUP_LABEL}" {if isset($SELECTED_MEMBERS_GROUP[$GROUP_LABEL][$MEMBER->getId()])}selected="true"{/if}>{$MEMBER->getName()}</option> + {if $GROUP_LABEL neq 'Users' || $MEMBER->getId() neq 'Users:'|cat:$CURRENT_USER->getId()} + <option value="{$MEMBER->getId()}" data-member-type="{$GROUP_LABEL}" {if isset($SELECTED_MEMBERS_GROUP[$GROUP_LABEL][$MEMBER->getId()])}selected="true"{/if}>{$MEMBER->getName()}</option> + {/if} {/foreach} </optgroup> {/foreach} diff --git a/layouts/v7/modules/Reports/resources/Detail.js b/layouts/v7/modules/Reports/resources/Detail.js index 411ccf11e..5792f5776 100644 --- a/layouts/v7/modules/Reports/resources/Detail.js +++ b/layouts/v7/modules/Reports/resources/Detail.js @@ -162,6 +162,25 @@ Vtiger_Detail_Js("Reports_Detail_Js",{},{ }); }, + registerOnlyAllUsersInSharedList : function(){ + var self = this; + jQuery('#memberList').on('change',function(e){ + var element = jQuery(e.currentTarget); + if(self.isAllUsersSelected()){ + element.find('option').not('[value="All::Users"]').prop('disabled',true); + element.select2('val',['All::Users']); + element.select2('close'); + }else{ + element.find('option').removeProp('disabled'); + } + }); + }, + + isAllUsersSelected : function() { + var memberList = jQuery('#memberList').val(); + return (memberList != null && (memberList.indexOf('All::Users') != -1)) ? true : false + }, + registerEvents : function(){ this.registerSaveOrGenerateReportEvent(); this.registerEventsForActions(); @@ -170,5 +189,6 @@ Vtiger_Detail_Js("Reports_Detail_Js",{},{ this.generateReportCount(parseInt(jQuery("#countValue").text())); this.registerConditionBlockChangeEvent(); this.registerEventForModifyCondition(); + this.registerOnlyAllUsersInSharedList(); } }); \ No newline at end of file diff --git a/layouts/v7/modules/Reports/resources/Edit.js b/layouts/v7/modules/Reports/resources/Edit.js index ae9d06696..1b7670878 100644 --- a/layouts/v7/modules/Reports/resources/Edit.js +++ b/layouts/v7/modules/Reports/resources/Edit.js @@ -157,6 +157,24 @@ Vtiger_Edit_Js("Reports_Edit_Js",{ }, registerPageLeaveEvents : function() { }, + registerOnlyAllUsersInSharedList : function(){ + var self = this; + jQuery('#memberList').on('change',function(e){ + var element = jQuery(e.currentTarget); + if(self.isAllUsersSelected()){ + element.find('option').not('[value="All::Users"]').prop('disabled',true); + element.select2('val',['All::Users']); + element.select2('close'); + }else{ + element.find('option').removeProp('disabled'); + } + }); + }, + + isAllUsersSelected : function() { + var memberList = jQuery('#memberList').val(); + return (memberList != null && (memberList.indexOf('All::Users') != -1)) ? true : false + }, registerEvents : function(){ this._super(); var statusToProceed = this.proceedRegisterEvents(); @@ -166,6 +184,7 @@ Vtiger_Edit_Js("Reports_Edit_Js",{ var form = this.currentInstance.getContainer(); this.registerFormSubmitEvent(form); this.registerBackStepClickEvent(); + this.registerOnlyAllUsersInSharedList(); } }); diff --git a/modules/Reports/models/Record.php b/modules/Reports/models/Record.php index c16e3dc92..cf8b79339 100644 --- a/modules/Reports/models/Record.php +++ b/modules/Reports/models/Record.php @@ -445,12 +445,15 @@ class Reports_Record_Model extends Vtiger_Record_Model { $reportId = $this->getId(); - //When members variable is not empty, it means record shared with other users, so - //sharing type of a report should be private - $sharingType = 'Public'; + //Newly created records are always as Private, only shared users can see report + $sharingType = 'Private'; + $members = $this->get('members',array()); - if(!empty($members)){ - $sharingType = 'Private'; + + if($members && count($members) == 1){ + if($members[0] == 'All::Users'){ + $sharingType = 'Public'; + } } if(empty($reportId)) { -- GitLab