From c52d998adedea03d6ea008ca12bc36d47471e205 Mon Sep 17 00:00:00 2001 From: satish <satish.dvnk@vtiger.com> Date: Thu, 16 Feb 2017 21:03:42 +0530 Subject: [PATCH] Fixes #346 - Broken CronTasks UI --- .../modules/Settings/CronTasks/EditAjax.tpl | 86 ++++++++++++------ .../Settings/CronTasks/resources/List.js | 30 +++++- packages/vtiger/optional/EmailTemplates.zip | Bin 73049 -> 73033 bytes .../EmailTemplates/DetailViewActions.tpl | 68 +++++++------- 4 files changed, 121 insertions(+), 63 deletions(-) diff --git a/layouts/v7/modules/Settings/CronTasks/EditAjax.tpl b/layouts/v7/modules/Settings/CronTasks/EditAjax.tpl index b6933d7a5..a876cf45c 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 3c5ee1ec0..6cab47006 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 GIT binary patch delta 2016 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 Z;>rfSz&)yJiZ1TMudSFMR7ix`e*w*a|5yM3 delta 2036 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 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 8263fd37a..3f2ca9f5c 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 -- GitLab