안녕하세요.
혼자 끙끙대고 해보다가 안되어서 도움글 올립니다.
사용자정의에서 확장변수로 추가입력폼을 만들어서 아래와 같이 표시되고 있습니다.
이 추가 입력폼의 위치를 아래처럼 "분류"와 "제목"사이로 변경하고 싶은데 가능할까요?
항상 늘푸른나무님께 감사한 맘으로 플래너 잘쓰고 있습니다!
2023.02.11 00:16
2023.02.11 17:49
알려주신 방법대로 하니 잘 됩니다~ *^^*
항상 건강하시고 행복하세요.
고개숙여 감사 인사 올립니다!
2023.02.11 20:29
푸른하늘님 안녕하세요,
확인글 감사합니다.
ksc
2023.04.28 10:59
'종료시간' 바로 뒷쪽에 '다음시간' 이라고 추가하고 입력방식을 타임피커로 할수 있을까요?
2023.05.01 01:32
밥탱님 안녕하세요,
_write_extra_normal.html(V5.10.2) 파일을 아래와 같이 수정 해보시기 바랍니다. ("다음시간"이 9번째 확장변수 일때)
1) 69~70번 라인사이에 아래 붉은색 코드 추가
</select>
<!--@if($ind_mobile)--><br/><!--@else-->
<!--@endif-->
{@ $ev_next = $extra_keys[9]->value;}
다음시간:
<select name="extra_vars9" id="extra_vars9"><!--// 다음시간선택-->
<option value=""></option><!--//빈칸-->
<!--@foreach($slt_arr as $key_a => $slt_time)-->
<option value="{$slt_time}"<!--@if($slt_time == $ev_next)-->selected="selected"<!--@endif-->> {$slt_time}</option>
<!--@endforeach-->
</select>
</p>
{@ echo $extra_keys[7]->desc}
2) 33번 라인을 아래와 같이 변경.
<!--@if($val->idx != 7 && !in_array($val->idx, $nonuse_extra_vars) && $val->idx != 9)--><!--// 시간이 아닐때 -->
감사합니다.
ksc
2023.05.02 14:23
추가적으로 시작시간을 선택하면 다음시간이 카테고리별로 자동으로 선택되게 할 수 있을까요?
예를들어
'서울' 이라는 카테고리를 선택하고 시작시간을 08:00 로 선택하면
자동으로 다음시간이 1시간 전인 07:00 으로 선택됨
'대전' 이라는 카테고리를 선텍하고 시작시간을 08:00 로 선택하면
자동으로 다음시간이 30분 전인 07:30 으로 선택됨
2023.05.02 15:36
밥탱님 안녕하세요,
아마도 가능은 할 터이나 좀 복잡한 과정을 거쳐야 될 것으로 생각 되는군요.
선택 한다는 말이 일정 입력 시점에 시간을 선택 한다는 뜻일텐데 이는 클라이언트(PC)에서 실행되는 액션이니,
시간 선택 후 다른 입력항목에 특정값이 자동으로 들어가도록 하는것은 대부분 JS로 처리 해주어야 될겁니다.
감사합니다.
ksc
2023.05.03 11:50
_write_extra_nomal.html 파일에서
아래와 같이 JS 스크립트를 입력하면 카테고리와 시작시간에 따른 테스트시간이 자동으로 선택되 않네요.
카테고리 부분 스크립트를 삭제하면 시작시간에 따른 테스트시간이 1시간 이전으로 자동으로 선택됩니다.
카테고리와 시작시간을 입력했을때 테스트시간이 선택되도록 수정이 될까요??
window.addEventListener('load', function() {
// listen for change event on start time select element
var extra_vars7_start = document.getElementById('extra_vars7_start');
extra_vars7_start.addEventListener('change', function() {
var startTime = this.value;
if (startTime) {
// calculate 1 hour before the start time
var startHour = startTime.split(':')[0];
var startMinute = startTime.split(':')[1];
var testTimestamp;
if (category = '서울') {
testTimestamp = new Date('1970-01-01T' + startTime + ':00').getTime() - 40 * 60 * 60 * 1000;
} else if (category == '대전') {
testTimestamp = new Date('1970-01-01T' + startTime + ':00').getTime() - 39.5 * 60 * 60 * 1000;
}
var testHour = new Date(testTimestamp).getUTCHours().toString().padStart(2, '0');
var testMinute = new Date(testTimestamp).getUTCMinutes().toString().padStart(2, '0');
var testTime = testHour + ':' + testMinute;
// update test time select element
var extra_vars10_test = document.getElementById('extra_vars10_test');
extra_vars10_test.value = testTime;
}
});
});
</script>
2023.05.03 14:09
아래와 같이 다시 수정해 봤는데도 동일한 현상이네요.
<!--@endif-->
{@ $ev_test = $extra_keys[10]->value;}<!-- 확장변수 테스트시간 추가 변경 From staijia -->
테스트시간:
<select name="extra_vars10" ><!--// 테스트시간선택-->
<option value=""></option><!--//빈칸-->
<!--@foreach($slt_arr as $key_a => $slt_time)-->
<option value="{$slt_time}"<!--@if($slt_time == $ev_test)-->selected="selected"<!--@endif-->> {$slt_time}</option>
<!--@endforeach-->
</select>
<script>
window.addEventListener('load', function() {
var extra_vars7_start = document.getElementById('extra_vars7_start');
var category = document.getElementById('category');
// 시작 시간이 변경될 때마다 test시간을 업데이트
extra_vars7_start.addEventListener('change', function() {
updateTestTime();
});
// 카테고리가 선택될 때마다 test시간을 업데이트
category.addEventListener('change', function() {
updateTestTime();
});
function updateTestTime() {
var startTime = extra_vars7_start.value;
var selectedCategory = category.value;
if (startTime && selectedCategory) {
var suffix = ':00';
if (selectedCategory === '서울') {
var hoursToSubstract = 10;
} else if (selectedCategory === '대전') {
var hoursToSubstract = 11.5;
}
var date = new Date('1970-01-01T' + startTime + suffix);
date.setHours(date.getHours() - hoursToSubstract);
var hour = date.getUTCHours().toString().padStart(2, '0');
var minute = date.getUTCMinutes().toString().padStart(2, '0');
var testTime = hour + ':' + minute;
var extra_vars10_test = document.getElementById('extra_vars10_test');
extra_vars10_test.value = testTime;
}
}
});
</script>
2023.05.03 15:12
카테고리 명칭이 아닌 srl 번호로 해야 되는군요.
감사합니다.
2023.05.03 16:38
밥탱님 안녕하세요,
해결 하셨다니 다행입니다.
아래에 "다음시간" 업데이트하는 코드를 작성해 놓았으니 한번 적용 해보시기 바랍니다. (확장변수 9번 = 다음시간 가정)
(참고: 아래 코드는 카테고리명 서울:60분전, 대전:30분전, 대구:30분후, 부산:60분후, 광주:60분후 가정입니다.)
1) 위 댓글에 있는 _write_extra_normal.html(V5.10.2) 파일 업데이트를 아래 코드로 대체
(1) 69~70번 라인사이에 아래 붉은색 코드 추가
</select>
<!--@if($ind_mobile)--><br/><!--@else-->
<!--@endif-->
{@ $ev_next = $extra_keys[9]->value;}
다음시간:
<select name="extra_vars9" id="extra_vars9_next"><!--// 다음시간선택-->
<option value=""></option><!--//빈칸-->
<!--@foreach($slt_arr as $key_a => $slt_time)-->
<option value="{$slt_time}"<!--@if($slt_time == $ev_next)-->selected="selected"<!--@endif-->> {$slt_time}</option>
<!--@endforeach-->
</select>
</p>
{@ echo $extra_keys[7]->desc}
(2) 33번 라인을 아래와 같이 변경.
<!--@if($val->idx != 7 && !in_array($val->idx, $nonuse_extra_vars) && $val->idx != 9)--><!--// 시간이 아닐때 -->
2) write_form.html (V5.10.2) 파일의 289~323 라인을 아래 코드로 대체
<!--@else-->
<!--// 시작 종료시간 체크 -->
{@ $category_list_json= json_encode($category_list);}
<script type='text/javascript'>
// <![CDATA[
var arr_category = {@ echo $category_list_json}; // $category_list
//console.log(arr_category['1260']['text']);
jQuery(function($){
$('#extra_vars7_start').change(function() {
var selected_start_time = $('#extra_vars7_start option:selected').val();
var selected_end_time = $('#extra_vars7_end option:selected').val();
if ( selected_end_time && selected_start_time > selected_end_time ) {
alert('End time is earlier than start time.\n' + '종료시간이 시작시간보다 이릅니다.');
}
if ($("select[name=category_srl]").val()) {
getNextTime(selected_start_time);
}
});
$('#extra_vars7_end' ).change(function() {
var selected_start_time = $('#extra_vars7_start option:selected').val();
var selected_end_time = $('#extra_vars7_end option:selected').val();
if ( selected_start_time && selected_start_time > selected_end_time) {
alert('End time is earlier than start time.\n' + '종료시간이 시작시간보다 이릅니다.');
}
});
$('select[name=category_srl]').change(function() {
let selected_start_time = $('#extra_vars7_start option:selected').val();
if (selected_start_time) {
getNextTime(selected_start_time);
}
});
});
function doDateCheck(fm) {
jQuery(function($){
var plan_s_ymd = $('input[name="extra_vars1"]').val();
var plan_e_ymd = $('input[name="extra_vars2"]').val();
if(plan_e_ymd != '' && plan_e_ymd < plan_s_ymd) {
$('#date_extra_vars2').focus();
alert('종료일이 시작일보다 더 빠른날자 입니다.\nEnd date is not earlier than start date.');
return false;
}
procFilter(fm, window.insert);
});
}
function getNextTime(selected_start_time) {
jQuery(function($){
let obj_NextbyCategory = { 서울:-60, 대전:-30, 대구:30, 부산:60, 광주:60 };
let S_time = selected_start_time.split(':');
let checked_category_srl = $("select[name=category_srl]").val();
let checked_category_title = arr_category[checked_category_srl]['title'];
let adj_mm = obj_NextbyCategory[checked_category_title];
let dt = new Date();
dt.setHours(S_time[0]*1, (S_time[1]*1 + adj_mm), 0, 0);
let next_hhmm = String(dt.getHours()).padStart(2, '0')+":"+String(dt.getMinutes()).padStart(2, '0');
$('#extra_vars9_next').val(next_hhmm).prop("selected",true);
});
}
// ]]>
</script>
<!--@endif-->
감사합니다.
ksc
푸른하늘님 안녕하세요,
_write_extra_normal.html 파일을 아래와 같이 수정 해보시기 바랍니다. ("업무구분"이 9번째 확장변수 일때)
1) 33번 라인을 아래와 같이 변경.
<!--@if($val->idx != 7 && !in_array($val->idx, $nonuse_extra_vars) && $val->name != "업무구분")--><!--// 시간이 아닐때 -->
2) 15, 16번 라인 사이에 아래 붉은색 코드 추가.
<!--@endif-->
<!--@if($extra_keys[9]->name == "업무구분")-->
{@ $work_group = $extra_keys[9]->getFormHTML();}
{@ echo $work_group;}
<!--@endif-->
<!--@if($oDocument->getTitleText())-->
감사합니다.
ksc