layouts/basic/modules/Vtiger/RelatedListContents.tpl
{*<!-- {[The file is published on the basis of YetiForce Public License 6.5 that can be found in the following directory: licenses/LicenseEN.txt or yetiforce.com]} -->*}
{strip}
<div id="selectAllMsgDiv" class="alert-block msgDiv">
<strong>
<a href="#" id="selectAllMsg">
{\App\Language::translate('LBL_SELECT_ALL',$MODULE)} {\App\Language::translate($RELATED_MODULE->get('name'))} (<span id="totalRecordsCount"></span>)
</a>
</strong>
</div>
<div id="deSelectAllMsgDiv" class="alert-block msgDiv">
<strong>
<a id="deSelectAllMsg">
{\App\Language::translate('LBL_DESELECT_ALL_RECORDS',$MODULE)}
</a>
</strong>
</div>
{include file=\App\Layout::getTemplatePath('ListViewAlphabet.tpl', $RELATED_MODULE_NAME) MODULE_MODEL=$RELATED_MODULE}
{assign var=IS_INVENTORY value=($RELATED_VIEW === 'List' && !empty($INVENTORY_MODULE) && !empty($INVENTORY_FIELDS))}
<div class="listViewEntriesDiv u-overflow-scroll-non-desktop table-responsive">
<table class="table tableBorderHeadBody listViewEntriesTable {if $VIEW_MODEL && !$VIEW_MODEL->isEmpty('entityState')}listView{$VIEW_MODEL->get('entityState')}{/if}">
<thead>
<tr class="listViewHeaders">
{assign var=COUNT value=0}
<th class="noWrap">
<div class="d-flex align-items-center">
{if isset($RELATED_LIST_LINKS['RELATEDLIST_MASSACTIONS'])}
<label class="sr-only" for="relatedListViewEntriesMainCheckBox">{\App\Language::translate('LBL_SELECT_ALL')}</label>
<input type="checkbox" title="{\App\Language::translate('LBL_SELECT_ALL')}" id="relatedListViewEntriesMainCheckBox" />
{/if}
{if (!$VIEW_MODEL->has('advSortEnabled') || ($VIEW_MODEL->has('advSortEnabled') && $VIEW_MODEL->get('advSortEnabled'))) && $RELATED_MODULE->isAdvSortEnabled()}
<button type="button"
class="ml-2 btn btn-info btn-xs js-show-modal"
data-url="index.php?view=SortOrderModal&fromView={$VIEW}&module={$RELATED_MODULE_NAME}"
data-modalid="sortOrderModal-{\App\Layout::getUniqueId()}">
<span class="fas fa-sort"></span>
</button>
{/if}
<div class="js-list-reload" data-js="click">
</div>
</th>
{foreach item=HEADER_FIELD from=$RELATED_HEADERS}
{if !empty($COLUMNS) && $COUNT == $COLUMNS }
{break}
{/if}
{assign var=HEADER_FIELD_NAME value=$HEADER_FIELD->getFullName()}
{assign var=COUNT value=$COUNT+1}
<th {if $HEADER_FIELD@last} colspan="2" {/if} nowrap class="{if isset($ORDER_BY[$HEADER_FIELD_NAME])}columnSorted {/if}js-list__row" data-js="container">
{if $HEADER_FIELD->getColumnName() eq 'access_count' or $HEADER_FIELD->getColumnName() eq 'idlists' }
<a href="javascript:void(0);"
class="noSorting">{\App\Language::translate($HEADER_FIELD->getFieldLabel(), $RELATED_MODULE->get('name'))}</a>
{else}
<span class="listViewHeaderValues float-left {if $HEADER_FIELD->isListviewSortable()} js-change-order u-cursor-pointer{/if}"
data-nextsortorderval="{if isset($ORDER_BY[$HEADER_FIELD_NAME]) && $ORDER_BY[$HEADER_FIELD_NAME] eq \App\Db::ASC}{\App\Db::DESC}{else}{\App\Db::ASC}{/if}"
data-columnname="{$HEADER_FIELD_NAME}"
data-js="click">
{$HEADER_FIELD->getFullLabelTranslation($RELATED_MODULE)}
{if isset($ORDER_BY[$HEADER_FIELD_NAME])}
<span class="fas {if $ORDER_BY[$HEADER_FIELD_NAME] eq \App\Db::DESC}fa-chevron-down{else}fa-chevron-up{/if}"></span>
{/if}
</span>
{/if}
{if $HEADER_FIELD->getFieldDataType() eq 'tree' || $HEADER_FIELD->getFieldDataType() eq 'categoryMultipicklist'}
<div class="d-flex align-items-center">
<input name="searchInSubcategories" value="1" type="checkbox" class="searchInSubcategories mr-1 ml-1" id="searchInSubcategories{$HEADER_FIELD_NAME}" title="{\App\Language::translate('LBL_SEARCH_IN_SUBCATEGORIES',$MODULE_NAME)}" data-columnname="{$HEADER_FIELD->getColumnName()}" {if !empty($SEARCH_DETAILS[$HEADER_FIELD_NAME]['specialOption'])} checked {/if}>
<span class="js-popover-tooltip delay0" data-js="popover" data-placement="top" data-original-title="{\App\Language::translate($HEADER_FIELD->getFieldLabel(), $MODULE)}" data-content="{\App\Language::translate('LBL_SEARCH_IN_SUBCATEGORIES',$MODULE_NAME)}">
<span class="fas fa-info-circle"></span>
</span>
</div>
{/if}
</th>
{/foreach}
{assign var=ADDITIONAL_TD value=0}
{if $SHOW_CREATOR_DETAIL}
{assign var=ADDITIONAL_TD value=$ADDITIONAL_TD + 2}
<th>
{\App\Language::translate('LBL_RELATION_CREATED_TIME', $RELATED_MODULE->get('name'))}
</th>
<th>
{\App\Language::translate('LBL_RELATION_CREATED_USER', $RELATED_MODULE->get('name'))}
</th>
{/if}
{if $SHOW_COMMENT}
{assign var=ADDITIONAL_TD value=$ADDITIONAL_TD + 1}
<th>
{\App\Language::translate('LBL_RELATION_COMMENT', $RELATED_MODULE->get('name'))}
</th>
{/if}
{if $IS_INVENTORY || $IS_WIDGETS}
<th>
</th>
{/if}
</tr>
</thead>
<tbody>
{if $VIEW_MODEL->isQuickSearchEnabled() && $RELATED_MODULE->isQuickSearchEnabled()}
<tr>
<td class="listViewSearchTd">
<div class="flexWrapper">
<a class="btn btn-light" role="button" data-trigger="listSearch" href="javascript:void(0);">
<span class="fas fa-search" title="{\App\Language::translate('LBL_SEARCH')}"></span>
</a>
<button type="button" class="btn btn-light removeSearchConditions">
<span class="fas fa-times"
title="{\App\Language::translate('LBL_CLEAR_SEARCH')}"></span>
</button>
</div>
</td>
{foreach item=HEADER_FIELD from=$RELATED_HEADERS}
<td>
{assign var=FIELD_UI_TYPE_MODEL value=$HEADER_FIELD->getUITypeModel()}
{assign var=LISTVIEW_HEADER_NAME value=$HEADER_FIELD->getFullName()}
{if isset($SEARCH_DETAILS[$LISTVIEW_HEADER_NAME])}
{assign var=SEARCH_INFO value=$SEARCH_DETAILS[$LISTVIEW_HEADER_NAME]}
{else}
{assign var=SEARCH_INFO value=[]}
{/if}
{include file=\App\Layout::getTemplatePath($FIELD_UI_TYPE_MODEL->getListSearchTemplateName(), $RELATED_MODULE_NAME) FIELD_MODEL=$HEADER_FIELD SEARCH_INFO=$SEARCH_INFO USER_MODEL=$USER_MODEL MODULE_MODEL=$RELATED_MODULE MODULE=$RELATED_MODULE_NAME}
</td>
{/foreach}
<td class="reducePadding" colspan="{$ADDITIONAL_TD + 1}"></td>
</tr>
{/if}
{assign var="RELATED_HEADER_COUNT" value=count($RELATED_HEADERS)}
{foreach item=RELATED_RECORD from=$RELATED_RECORDS}
{assign var="RECORD_COLORS" value=$RELATED_RECORD->getListViewColor()}
<tr class="listViewEntries js-list__row" data-js="each" data-id="{$RELATED_RECORD->getId()}"
{if $RELATED_RECORD->isViewable()}
data-recordUrl="{$RELATED_RECORD->getDetailViewUrl()}"
{/if}>
{assign var=COUNT value=0}
<td class="noWrap leftRecordActions listButtons {$WIDTHTYPE}"
{if $RECORD_COLORS['leftBorder']}style="border-left-color: {$RECORD_COLORS['leftBorder']};" {/if}>
<div class="d-flex align-items-center">
{if isset($RELATED_LIST_LINKS['RELATEDLIST_MASSACTIONS'])}
<input type="checkbox" value="{$RELATED_RECORD->getId()}"
title="{\App\Language::translate('LBL_SELECT_SINGLE_ROW')}"
class="relatedListViewEntriesCheckBox" />
{/if}
{include file=\App\Layout::getTemplatePath('RelatedListLeftSide.tpl', $RELATED_MODULE_NAME)}
</div>
</td>
{foreach item=HEADER_FIELD from=$RELATED_HEADERS name=listHeaderForeach}
{if !empty($COLUMNS) && $COUNT == $COLUMNS }
{break}
{/if}
{assign var=COUNT value=$COUNT+1}
{assign var=RELATED_HEADERNAME value=$HEADER_FIELD->getFieldName()}
<td class="{$WIDTHTYPE}" data-field-type="{$HEADER_FIELD->getFieldDataType()}" nowrap
{if $smarty.foreach.listHeaderForeach.iteration eq $RELATED_HEADER_COUNT} colspan="2" {/if}>
{if empty($HEADER_FIELD->get('source_field_name')) && ($HEADER_FIELD->isNameField() eq true or $HEADER_FIELD->getUIType() eq '4') && $RELATED_MODULE->isListViewNameFieldNavigationEnabled() && $RELATED_RECORD->isViewable()}
<a class="modCT_{$RELATED_MODULE_NAME} js-list__field js-popover-tooltip--record" data-js="width" title="" href="{$RELATED_RECORD->getDetailViewUrl()}">
{$RELATED_RECORD->getListViewDisplayValue($HEADER_FIELD)}
</a>
{elseif $HEADER_FIELD->get('fromOutsideList') eq true}
{if $HEADER_FIELD->get('isEditable')}
<input name="{$RELATED_HEADERNAME}"
class="form-control form-control-sm js-edit-{$RELATED_HEADERNAME} {$HEADER_FIELD->get('class')}"
title="{App\Language::translate($HEADER_FIELD->getFieldLabel(), $RELATED_MODULE_NAME)}"
data-fieldinfo="{\App\Purifier::encodeHtml(\App\Json::encode($HEADER_FIELD->getFieldInfo()))}"
value="{$HEADER_FIELD->getEditViewDisplayValue($RELATED_RECORD->get($RELATED_HEADERNAME))}"
data-js="change" />
{else}
{$HEADER_FIELD->getUITypeModel()->getListViewDisplayValue($RELATED_RECORD->get($RELATED_HEADERNAME))}
{/if}
{else}
{$RELATED_RECORD->getListViewDisplayValue($HEADER_FIELD)}
{/if}
{if $HEADER_FIELD@last}
</td>
{/if}
</td>
{/foreach}
{if $SHOW_CREATOR_DETAIL}
<td class="medium" data-field-type="rel_created_time"
nowrap>{App\Fields\DateTime::formatToDisplay($RELATED_RECORD->get('rel_created_time'))}</td>
<td class="medium" data-field-type="rel_created_user"
nowrap>{\App\Fields\Owner::getLabel($RELATED_RECORD->get('rel_created_user'))}</td>
{/if}
{if $SHOW_COMMENT}
<td class="medium" data-field-type="rel_comment" nowrap>{$RELATED_RECORD->get('rel_comment')}</td>
{/if}
{if $IS_INVENTORY || $IS_WIDGETS}
{$COUNT = $COUNT+1}
<td class="rightRecordActions listButtons {$WIDTHTYPE}" nowrap>
{if $IS_INVENTORY}
<button type="button" class="btn btn-sm btn-info float-right js-popover-tooltip js-toggle-hidden-row {if $IS_WIDGETS}ml-2{/if}" data-element="inventory" data-js="popover|click" data-placement="top" data-content="{\App\Language::translate('LBL_SHOW_INVENTORY_ROW')}">
<span class="fas fa-arrows-alt-v"></span>
</button>
{/if}
{if $IS_WIDGETS}
<button type="button" class="btn btn-sm btn-info float-right js-popover-tooltip js-toggle-hidden-row" data-element="widgets" data-js="popover|click" data-placement="top" data-content="{\App\Language::translate('LBL_SHOW_WIDGETS_ROW')}">
<span class="fas fa-caret-square-down"></span>
</button>
{/if}
</td>
{/if}
</tr>
{if $IS_INVENTORY || $IS_WIDGETS}
<tr class="js-hidden-row {if !$SHOW_RELATED_WIDGETS}d-none{/if}" data-id="{$RELATED_RECORD->getId()}">
{if $RELATED_MODULE->isQuickSearchEnabled()}
{$COUNT = $COUNT+2}
{/if}
<td colspan="{$COUNT + $ADDITIONAL_TD}" class="backgroundWhiteSmoke">
{if $IS_INVENTORY}
<div class="js-hidden-row__block d-none" data-element="inventory">
{assign var="INVENTORY_DATA" value=$RELATED_RECORD->getInventoryData()}
{assign var="INVENTORY_MODEL" value=Vtiger_Inventory_Model::getInstance($RELATED_RECORD->getModuleName())}
<table class="table table-sm no-margin">
<thead>
<tr>
{foreach from=$INVENTORY_FIELDS item=FIELD key=NAME}
<th class="medium" nowrap>
{\App\Language::translate($FIELD->get('label'),$RELATED_MODULE_NAME)}
</th>
{/foreach}
</tr>
</thead>
<tbody>
{foreach from=$INVENTORY_DATA item=INVENTORY_ROW}
<tr>
{if !empty($INVENTORY_ROW['name'])}
{assign var="ROW_MODULE" value=\App\Record::getType($INVENTORY_ROW['name'])}
{/if}
{foreach from=$INVENTORY_FIELDS item=FIELD key=NAME}
{assign var="FIELD_TPL_NAME" value="inventoryfields/"|cat:$FIELD->getTemplateName('DetailView',$RELATED_MODULE_NAME)}
<td>
{include file=\App\Layout::getTemplatePath($FIELD_TPL_NAME, $RELATED_MODULE_NAME) ITEM_VALUE=$INVENTORY_ROW[$FIELD->getColumnName()]}
</td>
{/foreach}
</tr>
{/foreach}
</tbody>
</table>
</div>
{/if}
{if $IS_WIDGETS}
{assign var=RELATED_WIDGETS value=$VIEW_MODEL->getWidgets($RELATED_RECORD->getId())}
{assign var=RECORD value=Vtiger_Record_Model::getInstanceById($RELATED_RECORD->getId(), $RELATED_MODULE_NAME)}
<div class="js-hidden-row__block {if !$SHOW_RELATED_WIDGETS}d-none{/if}" data-element="widgets">
{if $RELATED_WIDGETS}
<div class="o-detail-widgets row no-gutters mx-n1">
{if !empty($RELATED_WIDGETS[3])}
{assign var=span value='4'}
{elseif !empty($RELATED_WIDGETS[2])}
{assign var=span value='6'}
{else}
{assign var=span value='12'}
{/if}
{foreach item=WIDGETCOLUMN from=$RELATED_WIDGETS}
<div class="col-md-{$span} px-1">
{foreach key=key item=WIDGET from=$WIDGETCOLUMN}
{assign var=FILE value='Detail/Widget/'|cat:$WIDGET['tpl']}
{include file=\App\Layout::getTemplatePath($FILE, $RELATED_MODULE_NAME) MODULE_NAME=$RELATED_MODULE_NAME MODULE=$RELATED_MODULE_NAME MODULE_MODEL=$RELATED_MODULE}
{/foreach}
</div>
{/foreach}
</div>
{/if}
</div>
{/if}
</td>
</tr>
{/if}
{/foreach}
</tbody>
{if !empty($SHOW_SUMMATION_ROW)}
<tfoot class="listViewSummation">
<tr>
<td></td>
{foreach item=HEADER_FIELD from=$RELATED_HEADERS}
<td {if $HEADER_FIELD@last} colspan="2" {/if} class="noWrap {if !empty($HEADER_FIELD->isCalculateField())}border{/if}">
{if !empty($HEADER_FIELD->isCalculateField())}
<button class="btn btn-sm btn-light js-popover-tooltip" data-js="popover" type="button" data-operator="sum" data-field="{$HEADER_FIELD->getName()}" data-content="{\App\Language::translate('LBL_CALCULATE_SUM_FOR_THIS_FIELD')}">
<span class="fas fa-signal"></span>
</button>
<span class="calculateValue"></span>
{/if}
</td>
{/foreach}
</tr>
</tfoot>
{/if}
</table>
</div>
{/strip}