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"/>&nbsp;
+						</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>&nbsp;&nbsp;<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)}&nbsp;&nbsp;<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