diff --git a/layouts/v7/modules/Settings/CronTasks/EditAjax.tpl b/layouts/v7/modules/Settings/CronTasks/EditAjax.tpl index b6933d7a5d0178de2becaa5df185e021c460c02d..a876cf45cb9748ed50e89701a0aa90ebb65062ed 100644 --- a/layouts/v7/modules/Settings/CronTasks/EditAjax.tpl +++ b/layouts/v7/modules/Settings/CronTasks/EditAjax.tpl @@ -9,31 +9,65 @@ ********************************************************************************/ -->*} {strip} - <div class="modal-dialog modelContainer"> - {assign var=HEADER_TITLE value={vtranslate($RECORD_MODEL->get('name'), $QUALIFIED_MODULE)}} - {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} - <div class="modal-content"> - <form class="form-horizontal" id="cronJobSaveAjax" method="post" action="index.php"> - <input type="hidden" name="module" value="{$MODULE}" /> - <input type="hidden" name="parent" value="Settings" /> - <input type="hidden" name="action" value="SaveAjax" /> - <input type="hidden" name="record" value="{$RECORD}" /> - <input type="hidden" name="cronjob" value="{$RECORD_MODEL->get('name')}" /> - <input type="hidden" name="oldstatus" value="{$RECORD_MODEL->get('status')}" /> + <div class="modal-dialog modelContainer"> + {assign var=HEADER_TITLE value={vtranslate($RECORD_MODEL->get('name'), $QUALIFIED_MODULE)}} + {include file="ModalHeader.tpl"|vtemplate_path:$MODULE TITLE=$HEADER_TITLE} + <div class="modal-content"> + <form class="form-horizontal" id="cronJobSaveAjax" method="post" action="index.php"> + <input type="hidden" name="module" value="{$MODULE}" /> + <input type="hidden" name="parent" value="Settings" /> + <input type="hidden" name="action" value="SaveAjax" /> + <input type="hidden" name="record" value="{$RECORD}" /> + <input type="hidden" name="cronjob" value="{$RECORD_MODEL->get('name')}" /> + <input type="hidden" name="oldstatus" value="{$RECORD_MODEL->get('status')}" /> + <input type="hidden" id="minimumFrequency" value="{$RECORD_MODEL->getMinimumFrequency()}" /> + <input type="hidden" name="frequency" id="frequency" value="" /> - <div class="modal-body"> - <div class="form-group"> - <label class="control-label fieldLabel col-sm-5">{vtranslate('LBL_STATUS',$QUALIFIED_MODULE)}</label> - <div class="controls fieldValue col-xs-6"> - <select class="select2" name="status"> - <option {if $RECORD_MODEL->get('status') eq 1} selected="" {/if} value="1">{vtranslate('LBL_ACTIVE',$QUALIFIED_MODULE)}</option> - <option {if $RECORD_MODEL->get('status') eq 0} selected="" {/if} value="0">{vtranslate('LBL_INACTIVE',$QUALIFIED_MODULE)}</option> - </select> - </div> - </div> - </div> - {include file='ModalFooter.tpl'|@vtemplate_path:$MODULE} - </form> - </div> - </div> + <div class="modal-body"> + <div class="form-group"> + <label class="control-label fieldLabel col-xs-5">{vtranslate('LBL_STATUS',$QUALIFIED_MODULE)}</label> + <div class="controls fieldValue col-xs-5"> + <select class="select2 inputElement" name="status"> + <option {if $RECORD_MODEL->get('status') eq 1} selected="" {/if} value="1">{vtranslate('LBL_ACTIVE',$QUALIFIED_MODULE)}</option> + <option {if $RECORD_MODEL->get('status') eq 0} selected="" {/if} value="0">{vtranslate('LBL_INACTIVE',$QUALIFIED_MODULE)}</option> + </select> + </div> + </div> + <div class="form-group"> + <label class="control-label fieldLabel col-xs-5">{vtranslate('Frequency',$QUALIFIED_MODULE)}</label> + {assign var=VALUES value=':'|explode:$RECORD_MODEL->getDisplayValue('frequency')} + {if $VALUES[0] == '00' && $VALUES[1] == '00'} + {assign var=MINUTES value="true"} + {assign var=FIELD_VALUE value=$VALUES[1]} + {elseif $VALUES[0] == '00'} + {assign var=MINUTES value="true"} + {assign var=FIELD_VALUE value=$VALUES[1]} + {elseif $VALUES[1] == '00'} + {assign var=MINUTES value="false"} + {assign var=FIELD_VALUE value=($VALUES[0])} + {else} + {assign var=MINUTES value="true"} + {assign var=FIELD_VALUE value=($VALUES[0]*60)+$VALUES[1]} + {/if} + <div class="controls fieldValue col-xs-2"> + <input type="text" class="inputElement" value="{$FIELD_VALUE}" {if $FIELD_INFO["mandatory"] eq true} data-rule-required="true" {/if} id="frequencyValue"/> + </div> + <div class="controls fieldValue col-xs-3" style="padding-left: 0px;"> + <select class="select2 inputElement" id="time_format"> + <option value="mins" {if $MINUTES eq 'true'} selected="" {/if}>{vtranslate('LBL_MINUTES',$QUALIFIED_MODULE)}</option> + <option value="hours" {if $MINUTES eq 'false'}selected="" {/if}>{vtranslate('LBL_HOURS',$QUALIFIED_MODULE)}</option> + </select> + </div> + </div> + <div class="form-group" style="text-align: center;"> + <div class="col-xs-2"></div> + <div class="col-xs-8"> + <div class="alert alert-info">{vtranslate($RECORD_MODEL->get('description'),$QUALIFIED_MODULE)}</div> + </div> + </div> + </div> + {include file='ModalFooter.tpl'|@vtemplate_path:$MODULE} + </form> + </div> + </div> {/strip} diff --git a/layouts/v7/modules/Settings/CronTasks/resources/List.js b/layouts/v7/modules/Settings/CronTasks/resources/List.js index 3c5ee1ec0a3842076d704cfb4df4a4180c45f483..6cab47006540ef34d49a30651182f57126321535 100644 --- a/layouts/v7/modules/Settings/CronTasks/resources/List.js +++ b/layouts/v7/modules/Settings/CronTasks/resources/List.js @@ -23,8 +23,32 @@ Settings_Vtiger_List_Js("Settings_CronTasks_List_Js",{ jQuery('#cronJobSaveAjax').on('submit',function(e){ e.preventDefault(); var form = jQuery(e.currentTarget); - app.helper.showProgress(); - app.helper.hideModal(); + + var timeFormat = jQuery('#time_format').val(); + var frequencyElement = jQuery('#frequencyValue'); + var frequencyValue = frequencyElement.val() * 60; + if (timeFormat == 'hours') { + frequencyValue = frequencyValue * 60; + } + + var minimumFrequency = jQuery('#minimumFrequency').val(); + if (frequencyValue < minimumFrequency) { + var message = app.vtranslate('JS_VALUE_SHOULD_NOT_BE_LESS_THAN'); + var minutes = app.vtranslate('JS_MINUTES'); + vtUtils.showValidationMessage(frequencyElement, message+' '+(minimumFrequency / 60)+' '+minutes, { + position: { + my: 'bottom left', + at: 'top left', + container: frequencyElement.closest('.form-group') + } + }); + e.preventDefault(); + return; + } else { + jQuery('#frequency').val(frequencyValue); + } + app.helper.showProgress(); + app.helper.hideModal(); var params = form.serializeFormData(); app.request.post({"data":params}).then(function(err,data){ @@ -35,7 +59,7 @@ Settings_Vtiger_List_Js("Settings_CronTasks_List_Js",{ }else{ app.helper.showErrorNotification({'message':err.message}); } - }); + }); e.preventDefault(); }); }, diff --git a/packages/vtiger/optional/EmailTemplates.zip b/packages/vtiger/optional/EmailTemplates.zip index e72a57f2c8ea36b86cecc70466e28312eb3399be..ca8d54b0e7006ebcc13d712a1ff5b4ac00b7a88a 100644 Binary files a/packages/vtiger/optional/EmailTemplates.zip and b/packages/vtiger/optional/EmailTemplates.zip differ diff --git a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewActions.tpl b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewActions.tpl index 8263fd37a3a076edc1e02cb828100ce21e466256..3f2ca9f5cc21141016253e5a31588c2c52f1a654 100644 --- a/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewActions.tpl +++ b/pkg/vtiger/modules/EmailTemplates/layouts/v7/modules/EmailTemplates/DetailViewActions.tpl @@ -7,37 +7,37 @@ * All Rights Reserved. ************************************************************************************} {strip} - <div class="col-lg-6 col-sm-6 col-md-6 detailViewButtoncontainer pull-right" > - <div class="btn-group pull-right"> - {foreach item=DETAIL_VIEW_BASIC_LINK from=$DETAILVIEW_LINKS['DETAILVIEWBASIC']} - <button class="btn btn-default" id="{$MODULE_NAME}_detailView_basicAction_{Vtiger_Util_Helper::replaceSpaceWithUnderScores($DETAIL_VIEW_BASIC_LINK->getLabel())}" - {if $DETAIL_VIEW_BASIC_LINK->isPageLoadLink()} - onclick="window.location.href = '{$DETAIL_VIEW_BASIC_LINK->getUrl()}'" - {else} - onclick="{$DETAIL_VIEW_BASIC_LINK->getUrl()}" - {/if} - {if $MODULE_NAME eq 'Documents' && $DETAIL_VIEW_BASIC_LINK->getLabel() eq 'LBL_VIEW_FILE'} - data-filelocationtype="{$DETAIL_VIEW_BASIC_LINK->get('filelocationtype')}" data-filename="{$DETAIL_VIEW_BASIC_LINK->get('filename')}" - {/if}> - <strong>{vtranslate($DETAIL_VIEW_BASIC_LINK->getLabel(), $MODULE_NAME)}</strong> - </button> - {/foreach} - {if $DETAILVIEW_LINKS['DETAILVIEW']|@count gt 0} - <button class="btn btn-default dropdown-toggle" data-toggle="dropdown" href="javascript:void(0);"> - <strong>{vtranslate('LBL_MORE', $MODULE_NAME)}</strong> <i class="caret"></i> - </button> - <ul class="dropdown-menu pull-right"> - {foreach item=DETAIL_VIEW_LINK from=$DETAILVIEW_LINKS['DETAILVIEW']} - {if $DETAIL_VIEW_LINK->getLabel() eq ""} - <li class="divider"></li> - {else} - <li id="{$MODULE_NAME}_detailView_moreAction_{Vtiger_Util_Helper::replaceSpaceWithUnderScores($DETAIL_VIEW_LINK->getLabel())}"> - <a href={$DETAIL_VIEW_LINK->getUrl()} >{vtranslate($DETAIL_VIEW_LINK->getLabel(), $MODULE_NAME)}</a> - </li> - {/if} - {/foreach} - </ul> - {/if} - </div> - </div> - {strip} \ No newline at end of file + <div class="col-lg-6 col-sm-6 col-md-6 detailViewButtoncontainer pull-right" > + <div class="btn-group pull-right"> + {foreach item=DETAIL_VIEW_BASIC_LINK from=$DETAILVIEW_LINKS['DETAILVIEWBASIC']} + <button class="btn btn-default" id="{$MODULE_NAME}_detailView_basicAction_{Vtiger_Util_Helper::replaceSpaceWithUnderScores($DETAIL_VIEW_BASIC_LINK->getLabel())}" + {if $DETAIL_VIEW_BASIC_LINK->isPageLoadLink()} + onclick="window.location.href = '{$DETAIL_VIEW_BASIC_LINK->getUrl()}'" + {else} + onclick="{$DETAIL_VIEW_BASIC_LINK->getUrl()}" + {/if} + {if $MODULE_NAME eq 'Documents' && $DETAIL_VIEW_BASIC_LINK->getLabel() eq 'LBL_VIEW_FILE'} + data-filelocationtype="{$DETAIL_VIEW_BASIC_LINK->get('filelocationtype')}" data-filename="{$DETAIL_VIEW_BASIC_LINK->get('filename')}" + {/if}> + {vtranslate($DETAIL_VIEW_BASIC_LINK->getLabel(), $MODULE_NAME)} + </button> + {/foreach} + {if $DETAILVIEW_LINKS['DETAILVIEW']|@count gt 0} + <button class="btn btn-default dropdown-toggle" data-toggle="dropdown" href="javascript:void(0);"> + {vtranslate('LBL_MORE', $MODULE_NAME)} <i class="caret"></i> + </button> + <ul class="dropdown-menu pull-right"> + {foreach item=DETAIL_VIEW_LINK from=$DETAILVIEW_LINKS['DETAILVIEW']} + {if $DETAIL_VIEW_LINK->getLabel() eq ""} + <li class="divider"></li> + {else} + <li id="{$MODULE_NAME}_detailView_moreAction_{Vtiger_Util_Helper::replaceSpaceWithUnderScores($DETAIL_VIEW_LINK->getLabel())}"> + <a href={$DETAIL_VIEW_LINK->getUrl()} >{vtranslate($DETAIL_VIEW_LINK->getLabel(), $MODULE_NAME)}</a> + </li> + {/if} + {/foreach} + </ul> + {/if} + </div> + </div> +{/strip} \ No newline at end of file