diff --git a/layouts/v7/modules/Vtiger/FindDuplicateContents.tpl b/layouts/v7/modules/Vtiger/FindDuplicateContents.tpl index 774e17279894a8f65a5987b1e713a7ecf867a1b4..b4d8eee92f22cd5565578cca6cba004d193da764 100644 --- a/layouts/v7/modules/Vtiger/FindDuplicateContents.tpl +++ b/layouts/v7/modules/Vtiger/FindDuplicateContents.tpl @@ -10,72 +10,98 @@ {* START YOUR IMPLEMENTATION FROM BELOW. Use {debug} for information *} <div> - {include file="FindDuplicateHeader.tpl"|vtemplate_path:$MODULE} + {include file="FindDuplicateHeader.tpl"|vtemplate_path:$MODULE} </div> <div id="findDuplicateContents" class="container-fluid" style="padding-top:5px;"> - <div class="row"> - <div class="col-lg-12"> - <input type="hidden" id="listViewEntriesCount" value="{$LISTVIEW_ENTRIES_COUNT}" /> - <input type="hidden" id="pageStartRange" value="{$PAGING_MODEL->getRecordStartRange()}" /> - <input type="hidden" id="pageEndRange" value="{$PAGING_MODEL->getRecordEndRange()}" /> - <input type="hidden" id="previousPageExist" value="{$PAGING_MODEL->isPrevPageExists()}" /> - <input type="hidden" id="nextPageExist" value="{$PAGING_MODEL->isNextPageExists()}" /> - <input type="hidden" id="pageNumber" value= "{$PAGE_NUMBER}"/> - <input type="hidden" id="pageLimit" value= "{$PAGING_MODEL->getPageLimit()}" /> - <input type="hidden" id="noOfEntries" value= "{$LISTVIEW_ENTRIES_COUNT}" /> - <input type="hidden" id="duplicateSearchFields" value={Zend_Json::encode($DUPLICATE_SEARCH_FIELDS)} /> - <input type="hidden" id="viewName" value="{$VIEW_NAME}" /> - <input type="hidden" id="totalCount" value="{$TOTAL_COUNT}" /> - <input type='hidden' id='ignoreEmpty' value="{$IGNORE_EMPTY}" /> - <input type="hidden" id="mergeSelectedIds" /> - <table id="listview-table" class="listview-table table table-bordered"> - <thead> - <tr class="listViewContentHeader"> - <th> - <center><input type="checkbox" class="listViewEntriesMainCheckBox" /></center> - </th> - {foreach item=LISTVIEW_HEADER from=$LISTVIEW_HEADERS} - <th> - <center>{vtranslate($LISTVIEW_HEADER->get('label'), $MODULE)}</center> - </th> - {/foreach} - <th> <center>{vtranslate('LBL_MERGE_SELECT', $MODULE)}</center></th> - <th> <center>{vtranslate('LBL_ACTION', $MODULE)}</center></th> - </tr> - </thead> - {foreach item=LISTVIEW_ENTRY key=GROUP_NAME from=$LISTVIEW_ENTRIES} - {assign var=groupCount value=$LISTVIEW_ENTRY|@sizeof} - {assign var=recordCount value=0} - {foreach item=RECORD from=$LISTVIEW_ENTRY name=listview} - <tr class="listViewEntries" data-id='{$RECORD.recordid}' id="{$MODULE}_listView_row_{$smarty.foreach.listview.index+1}"> - <td> - <center><input type="checkbox" value="{$RECORD.recordid}" class="listViewEntriesCheckBox"/></center> - </td> - {assign var=sameRowValues value=true} - {foreach item=LISTVIEW_HEADER from=$LISTVIEW_HEADERS} - {if $LISTVIEW_HEADER->get('name') eq 'recordid'} - <td nowrap> - <center><a href="{$MODULE_MODEL->getDetailViewUrl($RECORD.recordid)}">{$RECORD[$LISTVIEW_HEADER->get('name')]}</a></center> - </td> - {else} - <td name="{$LISTVIEW_HEADER->get('name')}" nowrap style='border-bottom:1px solid #DDD;' data-value="{strip_tags($LISTVIEW_HEADER->getDisplayValue($RECORD[$LISTVIEW_HEADER->get('column')], $RECORD.recordid))}"> - <center>{$LISTVIEW_HEADER->getDisplayValue($RECORD[$LISTVIEW_HEADER->get('column')], $RECORD.recordid)}</center> - </td> - {/if} - {/foreach} - <td> - <center><input type="checkbox" data-id='{$RECORD.recordid}' name="mergeRecord" data-group="{$GROUP_NAME}"/></center> - </td> - {if $recordCount eq 0} - <td rowspan="{$groupCount}" style="vertical-align: middle;"> - <center><input type="button" value="{vtranslate('Merge', $MODULE)}" name="merge" class="btn btn-success" data-group="{$GROUP_NAME}"></center> - </td> - {/if} - {assign var=recordCount value=$recordCount+1} - </tr> - {/foreach} - {/foreach} - </table> - </div> - </div> + <div class="row"> + <div class="col-lg-12"> + <input type="hidden" id="listViewEntriesCount" value="{$LISTVIEW_ENTRIES_COUNT}" /> + <input type="hidden" id="pageStartRange" value="{$PAGING_MODEL->getRecordStartRange()}" /> + <input type="hidden" id="pageEndRange" value="{$PAGING_MODEL->getRecordEndRange()}" /> + <input type="hidden" id="previousPageExist" value="{$PAGING_MODEL->isPrevPageExists()}" /> + <input type="hidden" id="nextPageExist" value="{$PAGING_MODEL->isNextPageExists()}" /> + <input type="hidden" id="pageNumber" value= "{$PAGE_NUMBER}"/> + <input type="hidden" id="pageLimit" value= "{$PAGING_MODEL->getPageLimit()}" /> + <input type="hidden" id="noOfEntries" value= "{$LISTVIEW_ENTRIES_COUNT}" /> + <input type="hidden" id="duplicateSearchFields" value={Zend_Json::encode($DUPLICATE_SEARCH_FIELDS)} /> + <input type="hidden" id="viewName" value="{$VIEW_NAME}" /> + <input type="hidden" id="totalCount" value="{$TOTAL_COUNT}" /> + <input type='hidden' id='ignoreEmpty' value="{$IGNORE_EMPTY}" /> + <input type="hidden" id="mergeSelectedIds" /> + {assign var=IS_EDITABLE value=$CURRENT_USER_PRIVILAGES_MODEL->hasModuleActionPermission($MODULE_MODEL->getId(), 'EditView')} + {assign var=IS_DELETABLE value=$CURRENT_USER_PRIVILAGES_MODEL->hasModuleActionPermission($MODULE_MODEL->getId(), 'Delete')} + + <table id="listview-table" class="listview-table table table-bordered" style="border-top:1px solid #ddd;"> + <thead> + <tr class="listViewContentHeader"> + {if $IS_DELETABLE} + <th> + <center><input type="checkbox" class="listViewEntriesMainCheckBox" /></center> + </th> + {/if} + {foreach item=LISTVIEW_HEADER from=$LISTVIEW_HEADERS} + <th> + <center>{vtranslate($LISTVIEW_HEADER->get('label'), $MODULE)}</center> + </th> + {/foreach} + {if $IS_EDITABLE && $IS_DELETABLE} + <th> <center>{vtranslate('LBL_MERGE_SELECT', $MODULE)}</center></th> + <th> <center>{vtranslate('LBL_ACTION', $MODULE)}</center></th> + {/if} + </tr> + </thead> + {foreach item=LISTVIEW_ENTRY key=GROUP_NAME from=$LISTVIEW_ENTRIES} + {assign var=groupCount value=$LISTVIEW_ENTRY|@sizeof} + {assign var=recordCount value=0} + {foreach item=RECORD from=$LISTVIEW_ENTRY name=listview} + <tr class="listViewEntries" data-id='{$RECORD.recordid}' id="{$MODULE}_listView_row_{$smarty.foreach.listview.index+1}"> + {if $IS_DELETABLE} + <td> + <center><input type="checkbox" value="{$RECORD.recordid}" class="listViewEntriesCheckBox"/></center> + </td> + {/if} + {assign var=sameRowValues value=true} + {foreach item=LISTVIEW_HEADER from=$LISTVIEW_HEADERS} + {if $LISTVIEW_HEADER->get('name') eq 'recordid'} + <td nowrap> + <center><a href="{$MODULE_MODEL->getDetailViewUrl($RECORD.recordid)}">{$RECORD[$LISTVIEW_HEADER->get('name')]}</a></center> + </td> + {else} + <td name="{$LISTVIEW_HEADER->get('name')}" nowrap style='border-bottom:1px solid #DDD;' data-value="{strip_tags($LISTVIEW_HEADER->getDisplayValue($RECORD[$LISTVIEW_HEADER->get('column')], $RECORD.recordid))}"> + <center>{strip_tags($LISTVIEW_HEADER->getDisplayValue($RECORD[$LISTVIEW_HEADER->get('column')], $RECORD.recordid))}</center> + </td> + {/if} + {/foreach} + {if $IS_EDITABLE && $IS_DELETABLE} + <td> + <center><input type="checkbox" data-id='{$RECORD.recordid}' name="mergeRecord" data-group="{$GROUP_NAME}"/></center> + </td> + {if $recordCount eq 0} + <td rowspan="{$groupCount}" style="vertical-align: middle;"> + <center><input type="button" value="{vtranslate('Merge', $MODULE)}" name="merge" class="btn btn-success" data-group="{$GROUP_NAME}"></center> + </td> + {/if} + {/if} + {assign var=recordCount value=$recordCount+1} + </tr> + {/foreach} + {/foreach} + </table> + {if $recordCount eq 0} + <div class="col-md-12 col-sm-12 col-xs-12 col-lg-12 listViewContentDiv list-table-wrapper" id="listViewContents"> + <table class="emptyRecordsDiv"> + <tbody class="overflow-y"> + <tr class="emptyRecordDiv"> + <td colspan="8"> + <div class="emptyRecordsContent portal-empty-records-content"> + {vtranslate('LBL_NO_DUPLICATED_FOUND')}. + </div> + </td> + </tr> + </tbody> + </table> + </div> + {/if} + </div> + </div> </div> \ No newline at end of file diff --git a/layouts/v7/modules/Vtiger/FindDuplicateHeader.tpl b/layouts/v7/modules/Vtiger/FindDuplicateHeader.tpl index 079a7bc8c561cbef343e07431fdb83b11afa45ff..d54ca5f82ca165879fffa70574e611ae4d5fdb25 100644 --- a/layouts/v7/modules/Vtiger/FindDuplicateHeader.tpl +++ b/layouts/v7/modules/Vtiger/FindDuplicateHeader.tpl @@ -8,43 +8,45 @@ ************************************************************************************} <div class="container-fluid"> - <div class="row"> - {assign var=HEADER_TITLE value={vtranslate('LBL_DUPLICATE')|cat:' '|cat:vtranslate($MODULE, $MODULE)}} - <h3> - <div class="col-lg-7"> - {$HEADER_TITLE} - </div> - <div class="col-lg-5"> - <div class="alert alert-static"> - <span class="fa fa-info-circle icon"></span> - <span class="message">{vJsTranslate('JS_ALLOWED_TO_SELECT_MAX_OF_THREE_RECORDS',$MODULE)}</span> - </div> - </div> - </h3> - </div> - <div class="row"> - <div class="col-lg-1"> - {foreach item=LISTVIEW_BASICACTION from=$LISTVIEW_LINKS} - <button id="{$MODULE}_listView_basicAction_{Vtiger_Util_Helper::replaceSpaceWithUnderScores($LISTVIEW_BASICACTION->getLabel())}" class="btn btn-danger pull-left" - {if stripos($LISTVIEW_BASICACTION->getUrl(), 'javascript:')===0} onclick='{$LISTVIEW_BASICACTION->getUrl()|substr:strlen("javascript:")};'{else} onclick='window.location.href="{$LISTVIEW_BASICACTION->getUrl()}"'{/if}> - <strong>{vtranslate($LISTVIEW_BASICACTION->getLabel(), $MODULE)}</strong> - </button> - {/foreach} - </div> - <div class="col-lg-11"> - <div class="col-lg-1"> - - </div> - <div class="col-lg-9 select-deselect-container" > - <div class="hide messageContainer" style = "height:30px;"> - <center><a id="selectAllMsgDiv" href="#">{vtranslate('LBL_SELECT_ALL',$MODULE)} {vtranslate($MODULE ,$MODULE)} (<span id="totalRecordsCount" value=""></span>)</a></center> - </div> - <div class="hide messageContainer" style = "height:30px;"> - <center><a id="deSelectAllMsgDiv" href="#">{vtranslate('LBL_DESELECT_ALL_RECORDS',$MODULE)}</a></center> - </div> - </div> - {assign var=RECORD_COUNT value=$LISTVIEW_ENTRIES_COUNT} + <div class="row"> + {assign var=HEADER_TITLE value={vtranslate('LBL_DUPLICATE')|cat:' '|cat:vtranslate($MODULE, $MODULE)}} + <h3> + <div class="col-lg-7"> + {$HEADER_TITLE} + </div> + <div class="col-lg-5"> + <div class="alert alert-static"> + <span class="fa fa-info-circle icon"></span> + <span class="message">{vJsTranslate('JS_ALLOWED_TO_SELECT_MAX_OF_THREE_RECORDS',$MODULE)}</span> + </div> + </div> + </h3> + </div> + <div class="row"> + <div class="col-lg-1"> + {if $LISTVIEW_ENTRIES_COUNT > 0} + {foreach item=LISTVIEW_BASICACTION from=$LISTVIEW_LINKS} + <button id="{$MODULE}_listView_basicAction_{Vtiger_Util_Helper::replaceSpaceWithUnderScores($LISTVIEW_BASICACTION->getLabel())}" class="btn btn-danger pull-left" + {if stripos($LISTVIEW_BASICACTION->getUrl(), 'javascript:')===0} onclick='{$LISTVIEW_BASICACTION->getUrl()|substr:strlen("javascript:")};'{else} onclick='window.location.href="{$LISTVIEW_BASICACTION->getUrl()}"'{/if}> + <strong>{vtranslate($LISTVIEW_BASICACTION->getLabel(), $MODULE)}</strong> + </button> + {/foreach} + {/if} + </div> + <div class="col-lg-11"> + <div class="col-lg-1"> + + </div> + <div class="col-lg-9 select-deselect-container" > + <div class="hide messageContainer" style = "height:30px;"> + <center><a id="selectAllMsgDiv" href="#">{vtranslate('LBL_SELECT_ALL',$MODULE)} {vtranslate($MODULE ,$MODULE)} (<span id="totalRecordsCount" value=""></span>)</a></center> + </div> + <div class="hide messageContainer" style = "height:30px;"> + <center><a id="deSelectAllMsgDiv" href="#">{vtranslate('LBL_DESELECT_ALL_RECORDS',$MODULE)}</a></center> + </div> + </div> + {assign var=RECORD_COUNT value=$LISTVIEW_ENTRIES_COUNT} {include file="Pagination.tpl"|vtemplate_path:$MODULE SHOWPAGEJUMP=true} - </div> - </div> + </div> + </div> </div> \ No newline at end of file diff --git a/modules/Vtiger/views/FindDuplicates.php b/modules/Vtiger/views/FindDuplicates.php index 007822e3a820f87202e13f6b22f64765db4a62b3..1f994c947d7761dcd05cb5d1cb1d513be1492790 100644 --- a/modules/Vtiger/views/FindDuplicates.php +++ b/modules/Vtiger/views/FindDuplicates.php @@ -60,13 +60,19 @@ class Vtiger_FindDuplicates_View extends Vtiger_List_View { $module = $request->getModule(); $moduleModel = Vtiger_Module_Model::getInstance($module); - $massActionLink = array( - 'linktype' => 'LISTVIEWBASIC', - 'linklabel' => 'LBL_DELETE', - 'linkurl' => 'Javascript:Vtiger_FindDuplicates_Js.massDeleteRecords("index.php?module='.$module.'&action=MassDelete");', - 'linkicon' => '' - ); - $massActionLinks[] = Vtiger_Link_Model::getInstanceFromValues($massActionLink); + $massActionLinks = array(); + $userPrivilegesModel = Users_Privileges_Model::getCurrentUserPrivilegesModel(); + if ($userPrivilegesModel->hasModuleActionPermission($moduleModel->getId(), 'Delete')) { + $massActionLink = array( + 'linktype' => 'LISTVIEWBASIC', + 'linklabel' => 'LBL_DELETE', + 'linkurl' => 'Javascript:Vtiger_FindDuplicates_Js.massDeleteRecords("index.php?module='.$module.'&action=MassDelete");', + 'linkicon' => '' + ); + $massActionLinks[] = Vtiger_Link_Model::getInstanceFromValues($massActionLink); + } + + $viewer->assign('CURRENT_USER_PRIVILAGES_MODEL', $userPrivilegesModel); $viewer->assign('LISTVIEW_LINKS', $massActionLinks); $viewer->assign('MODULE_MODEL', $moduleModel);