1const map_board = function () { 2 3 var moreReplyM = function (el) { 4 var more = $(el).attr('data-more'); 5 var comment_no = $(el).attr('data-no'); 6 var page_no = Number($("#replySortBoxM").find("input[name='page_no']").val()) + 1; 7 var sort_btn = $("#replySortBoxM").find(".reply-sort-type"); 8 var sort = ''; 9 $.each(sort_btn, function () { 10 if ($(this).hasClass('active')) { 11 sort = $(this).val(); 12 } 13 }); 14 var visible = checkVisible($(el).find("li:last"), 'visible'); 15 if (visible === true) { 16 visible = false; 17 if (more == 'true') { 18 $.ajax({ 19 type: "Get", 20 url: getLocale() + '/mapboard/ajaxboardreply', 21 data: 'comment_index=1' + '&comment_no=' + comment_no + '&page_no=' + page_no + '&sort=' + sort, 22 dataType: 'Json', 23 async: false, 24 success: function (result) { 25 if (result.code) { 26 let lists = result.data['lists']; 27 let more = result.data['more']; 28 const html = _makeReplyHtml(lists); 29 $("#replyCommentM").append(html); 30 const DetailCommentM = document.getElementById('DetailCommentM'); 31 DetailCommentM.dataset.more = more; 32 DetailCommentM.dataset.no = comment_no; 33 } 34 } 35 }) 36 $("#replySortBoxM").find("input[name='page_no']").val(page_no) 37 } 38 } 39 } 40 41 //ëµê¸ ë보기 42 var moreReply = function (el, comment_no) { 43 var more = $(el).attr('data-more'); 44 var page_no = Number($("#replySortBox" + comment_no).find("input[name='page_no']").val()) + 1; 45 var sort_btn = $("#replySortBox" + comment_no).find(".reply-sort-type"); 46 var sort = ''; 47 $.each(sort_btn, function () { 48 if ($(this).hasClass('active')) { 49 sort = $(this).val(); 50 } 51 }); 52 var visible = checkVisible($(el).find("li:last"), 'visible'); 53 if (visible === true) { 54 visible = false; 55 if (more == 'true') { 56 $.ajax({ 57 type: "Get", 58 url: getLocale() + '/mapboard/ajaxboardreply', 59 data: 'comment_index=1' + '&comment_no=' + comment_no + '&page_no=' + page_no + '&sort=' + sort, 60 dataType: 'Json', 61 async: false, 62 success: function (result) { 63 if (result.code) { 64 let lists = result.data['lists']; 65 let more = result.data['more']; 66 const html = _makeReplyHtml(lists); 67 $("#replyList" + comment_no).append(html); 68 const replySortBox = document.getElementById('replyList' + comment_no); 69 replySortBox.dataset.more = more; 70 } 71 } 72 }) 73 $("#replySortBox" + comment_no).find("input[name='page_no']").val(page_no) 74 } 75 } 76 } 77 78 //모ë°ì¼ì© ëê¸ìì¸ë³´ê¸° ì¶ë ¥ 79 var openMobileComment = function (el, comment_no) { 80 $('.m-comment-wrap').addClass('on'); 81 $('html').addClass('comments-on'); 82 $.ajax({ 83 type: "Get", 84 url: getLocale() + '/mapboard/ajaxBoardComment', 85 data: 'no=' + comment_no, 86 dataType: 'Json', 87 success: function (result) { 88 if (result.code) { 89 var writer = ''; 90 if (result.data[0].post_master == 1) { 91 writer = result.data[0].user_name + '<label>' + getLangMsg('writer') + '</label>'; 92 } else { 93 writer = result.data[0].user_name; 94 } 95 $("#mainCommentM").find(".name").html(writer); 96 $("#mainCommentM").find(".delete-btn").data('no', comment_no); 97 $("#mainCommentM").find(".contents").text(result.data[0].contents); 98 $("#mainCommentM").find(".date").text(result.data[0].insert_date); 99 $("#mainCommentM").find(".reply-cnt").text(result.data[0].reple_cnt); 100 if (result.data[0].reple_cnt > 0) { 101 $("#mainCommentM").find(".reply-info").show() 102 } else { 103 $("#mainCommentM").find(".reply-info").hide() 104 } 105 var sort_btn = $("#replySortBoxM").find(".reply-sort-type"); 106 var sort = ''; 107 $.each(sort_btn, function () { 108 if ($(this).hasClass('active')) { 109 sort = $(this).val(); 110 } 111 }); 112 // var page_no = $("#replySortBoxM").find("input[name='page_no']").val(); 113 var comment_index = Number(result.data[0].comment_index); 114 viewReplyM(comment_index, comment_no, 1, sort, el); 115 } else { 116 alert(result.message); 117 } 118 119 } 120 }); 121 } 122 123 124 //모ë°ì¼ì© ëµê¸ì°ê¸° ì¶ë ¥ 125 var openReplyWriteM = function () { 126 $('.m-comment-wrap, .m-comment-write-wrap').addClass('on'); 127 $('html').addClass('comments-on'); 128 var comment_no = $("#replySortBoxM").find("input[name='comment_no']").val() 129 $("#replyfrmM").find("input[name='comment_no']").val(comment_no); 130 } 131 132 //모ë°ì¼ì© ëµê¸ì¶ë ¥ 133 var viewReplyM = function (comment_index, comment_no, page_no = 1, sort = 1, el = null) { 134 $("#replySortBoxM").find("button").focus(); 135 $.ajax({ 136 type: "Get", 137 url: getLocale() + '/mapboard/ajaxboardreply', 138 data: 'comment_index=' + (comment_index + 1) + '&comment_no=' + comment_no + '&sort=' + sort, 139 dataType: 'Json', 140 success: function (result) { 141 if (result.code) { 142 let lists = result.data['lists']; 143 let more = result.data['more']; 144 const html = _makeReplyMHtml(lists); 145 $("#replyCommentM").html(html); 146 const DetailCommentM = document.getElementById('DetailCommentM'); 147 DetailCommentM.dataset.more = more; 148 DetailCommentM.dataset.no = comment_no; 149 150 $("#replySortBoxM").show(); 151 } else { 152 $("#replyCommentM").html(''); 153 154 } 155 $("#replySortBoxM").find("input[name='page_no']").val(page_no); 156 $("#replySortBoxM").find("input[name='comment_no']").val(comment_no); 157 158 } 159 }); 160 } 161 162 //ëµê¸ì¶ë ¥ 163 var viewReply = function (comment_index, comment_no, page_no = 1, sort = 'old', el = null) { 164 $.ajax({ 165 type: "Get", 166 url: getLocale() + '/mapboard/ajaxboardreply', 167 data: 'comment_index=' + (comment_index + 1) + '&comment_no=' + comment_no + '&sort=' + sort, 168 dataType: 'Json', 169 success: function (result) { 170 if (result.code) { 171 let lists = result.data['lists']; 172 let more = result.data['more']; 173 const html = _makeReplyHtml(lists); 174 const replySortBox = document.getElementById('replyList' + comment_no); 175 replySortBox.dataset.more = more; 176 if (el != null) { 177 if ($(el).hasClass('reply-sort-type')) { 178 $(el).parent().find('.reply-sort-type').removeClass('active'); 179 $(el).addClass('active'); 180 } else { 181 182 $(el).hide(); 183 $(el).next('button').show(); 184 } 185 $("#replyList" + comment_no).html(html); 186 $("#replyList" + comment_no).show(); 187 $("#replySortBox" + comment_no).show(); 188 } 189 } else { 190 $("#replyList" + comment_no).html(''); 191 } 192 193 $("#replySortBox" + comment_no).find("input[name='page_no']").val(page_no); 194 } 195 }); 196 } 197 198 //ëµê¸ ë«ê¸° 199 var closeReply = function (el, comment_no) { 200 $("#replyList" + comment_no).html(''); 201 $("#replyList" + comment_no).hide(); 202 $("#replySortBox" + comment_no).hide(); 203 $(el).prev('button').show(); 204 $(el).hide(); 205 } 206 //ëµê¸ html ìì± 207 var _makeReplyHtml = function (obj) { 208 var html = ''; 209 $.each(obj, function (idx, val) { 210 post_master = ''; 211 if (val.post_master == 1) { 212 post_master = '<label>' + LANGS.writer + '</label>'; 213 } 214 html += '<li class="comments-level-2">'; 215 html += ' <div class="info">';
216 html += ' <span class="name">' + val.user_name + ' ' + post_master + '</span>'; 217 html += ' <div class="btn-list">'; 218 if (val.mod_perm) { 219 html += ' <button type="button" class="btn text-btn delete-btn" data-toggle="modal" data-target="#modal2" data-no="' + val.no + '">' + LANGS.delete + '</button>'; 220 } 221 html += ' </div>'; 222 html += ' </div>'; 223 html += ' <div class="contents">' + val.contents + '</div>'; 224 html += ' <div class="bottom">'; 225 html += ' <span class="date">' + val.insert_date + '</span>'; 226 html += ' </div>'; 227 html += '</li>'; 228 }); 229 return html; 230 } 231 //ëµê¸ 모ë°ì¼ì© html ìì± 232 var _makeReplyMHtml = function (obj) { 233 var html = ''; 234 $.each(obj, function (idx, val) { 235 post_master = ''; 236 if (val.post_master == 1) { 237 post_master = '<label>' + LANGS.writer + '</label>'; 238 } 239 html += '<li class="comments-level-2">'; 240 html += ' <div class="info">'; 241 html += ' <span class="name">' + val.user_name + ' ' + post_master + '</span>'; 242 html += ' <div class="btn-list">'; 243 if (val.mod_perm) { 244 html += ' <button type="button" class="btn text-btn delete-btn" data-toggle="modal" data-target="#modal2" data-no="' + val.no + '">' + LANGS.delete + '</button>'; 245 } 246 html += ' </div>'; 247 html += ' </div>'; 248 html += ' <div class="contents">' + val.contents + '</div>'; 249 html += ' <div class="bottom">'; 250 html += ' <span class="date">' + val.insert_date + '</span>'; 251 html += ' </div>'; 252 html += '</li>'; 253 }); 254 return html; 255 } 256 257 var save_map_board = function (form_id) { 258 $(".modal").modal("hide"); 259 var direct = $("#direct_input").is(":checked"); 260 if (direct === true) { 261 var address = $("#address").val(); 262 geocoder.geocode({ 263 'address': address 264 }, googlePlacesSearchCB); 265 return false; 266 } 267 268 _submitMapBoard(form_id); 269 } 270 var _submitMapBoard = function (form_id) { 271 var form = document.getElementById(form_id); 272 var data = new FormData(form); 273 var url = $("#" + form_id).attr('action'); 274 $.ajax({ 275 type: "post", 276 url: url, 277 processData: false, 278 contentType: false, 279 data: data, 280 dataType: 'Json', 281 success: function (result) { 282 $('.modal').modal('hide'); 283 $('#modal_reload .modal-body').html("<div class='text-center'>" + result.message + "</div>"); 284 if (result.code) { 285 $('.modal').modal('hide'); 286 if (result.hasOwnProperty('redirect')) { 287 redirect = result.redirect; 288 } else { 289 redirect = 'reload'; 290 } 291 $("#modal_reload_btn").data("type", redirect); 292 } else { 293 reloadCsrf(); 294 $("#modal_reload_btn").data("type", "none"); 295 $(".text-danger").hide(); 296 $.each(result.data, function (id, text) { 297 $("#valid_" + id).text(text); 298 $("#valid_" + id).show(); 299 }); 300 var valid_id = Object.keys(result.data)[0]; 301 $("[name='" + valid_id + "']").focus(); 302 } 303 $('#modal_reload').modal('show'); 304 } 305 }); 306 } 307 308 309 var captcha_map_board = function (form_id, capcha_g_id) { 310 grecaptcha.ready(function () { 311 try { 312 grecaptcha.execute(capcha_g_id, { 313 action: 'submit' 314 }).then(function (token) { 315 save_map_board(form_id); 316 }); 317 } catch (err) { 318 $('#modal_reload .modal-body').html("<div class='text-center'>The captcha API is incorrect.<br/>Please check again.</div>"); 319 $("#modal_reload_btn").data("type", 'none'); 320 $('#modal_reload').modal('show'); 321 } 322 }); 323 } 324 325 function gallery_upload(it) { 326 $(it).closest('.gal-upload-box').find('.MultiFile-wrap').find("input[name='gallery_file[]']").last().click(); 327 } 328 329 var board_type = $("#board_type").val(); 330 var geocoder = null; 331 if (board_type == 'kakao-map') { 332 geocoder = new kakao.maps.services.Geocoder(); 333 } else if (board_type == 'google-map') { 334 geocoder = new google.maps.Geocoder(); 335 } 336 var searchAddr = function () { 337 var direct = $("#direct_input").is(":checked"); 338 if (direct === true) { 339 return false;
340 } 341 address = $("#address"); 342 new daum.Postcode({ 343 oncomplete: function (data) { 344 // íì ìì ê²ìê²°ê³¼ í목ì í´ë¦íìë ì¤íí ì½ë를 ìì±íë ë¶ë¶. 345 346 // ê° ì£¼ìì ë ¸ì¶ ê·ì¹ì ë°ë¼ 주ì를 ì¡°í©íë¤. 347 // ë´ë ¤ì¤ë ë³ìê° ê°ì´ ìë ê²½ì°ì 공백('')ê°ì ê°ì§ë¯ë¡, ì´ë¥¼ ì°¸ê³ íì¬ ë¶ê¸° íë¤. 348 var addr = ''; // 주ì ë³ì 349 var extraAddr = ''; // ì°¸ê³ í목 ë³ì 350 351 //ì¬ì©ìê° ì íí 주ì íì ì ë°ë¼ í´ë¹ 주ì ê°ì ê°ì ¸ì¨ë¤. 352 if (data.userSelectedType === 'R') { // ì¬ì©ìê° ëë¡ëª 주ì를 ì ííì ê²½ì° 353 addr = data.roadAddress; 354 } else { // ì¬ì©ìê° ì§ë² 주ì를 ì ííì ê²½ì°(J) 355 addr = data.jibunAddress; 356 } 357 358 // ì¬ì©ìê° ì íí 주ìê° ëë¡ëª íì ì¼ë ì°¸ê³ í목ì ì¡°í©íë¤. 359 if (data.userSelectedType === 'R') { 360 // ë²ì ëëª ì´ ìì ê²½ì° ì¶ê°íë¤. (ë²ì 리ë ì ì¸) 361 // ë²ì ëì ê²½ì° ë§ì§ë§ 문ìê° "ë/ë¡/ê°"ë¡ ëëë¤. 362 if (data.bname !== '' && /[ë|ë¡|ê°]$/g.test(data.bname)) { 363 extraAddr += data.bname; 364 } 365 // ê±´ë¬¼ëª ì´ ìê³ , ê³µë주íì¼ ê²½ì° ì¶ê°íë¤. 366 if (data.buildingName !== '' && data.apartment === 'Y') { 367 extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName); 368 } 369 // íìí ì°¸ê³ íëª©ì´ ìì ê²½ì°, ê´í¸ê¹ì§ ì¶ê°í ìµì¢ 문ìì´ì ë§ë ë¤. 370 if (extraAddr !== '') { 371 extraAddr = ' (' + extraAddr + ')'; 372 } 373 // ì¡°í©ë ì°¸ê³ í목ì í´ë¹ íëì ë£ëë¤. 374 // document.getElementById("sample6_extraAddress").value = extraAddr; 375 376 } else { 377 // document.getElementById("sample6_extraAddress").value = ''; 378 } 379 if (board_type == 'kakao-map') { 380 geocoder.addressSearch(addr, kakaoPlacesSearchCB); 381 } else if (board_type == 'naver-map') { 382 naver.maps.Service.geocode({ 383 query: addr 384 }, naverPlacesSearchCB); 385 } else if (board_type == 'google-map') { 386 geocoder.geocode({ 387 'address': addr 388 }, googlePlacesSearchCB); 389 } 390 address.val(addr); 391 } 392 }).open(); 393 } 394 395 // ì¥ìê²ìì´ ìë£ëì ë í¸ì¶ëë ì½ë°±í¨ì ì ëë¤ 396 function kakaoPlacesSearchCB(data, status, pagination) { 397 if (status === kakao.maps.services.Status.OK) { 398 var lat = data[0].y; 399 var lng = data[0].x; 400 $("input[name='lng']").val(lng); 401 $("input[name='lat']").val(lat); 402 } else if (status === kakao.maps.services.Status.ZERO_RESULT) { 403 return alert(getLangMsg('not-found-addr-geocode')); 404 405 } else if (status === kakao.maps.services.Status.ERROR) { 406 return alert(getLangMsg('search-error-result')); 407 } 408 } 409 410 function naverPlacesSearchCB(status, response) { 411 if (status === naver.maps.Service.Status.ERROR) { 412 if (!address) { 413 return alert('Geocode Error, Please check address'); 414 } 415 return alert(getLangMsg('search-error-result')); 416 } 417 if (response.v2.meta.totalCount === 0) { 418 return alert(getLangMsg('not-found-addr-geocode')); 419 } 420 var data = response.v2.addresses[0]; 421 var lat = data.y; 422 var lng = data.x; 423 $("input[name='lng']").val(lng); 424 $("input[name='lat']").val(lat); 425 } 426 427 function googlePlacesSearchCB(response, status) { 428 if (status == 'OK') { 429 var data = response[0].geometry.location; 430 var lat = data.lat(); 431 var lng = data.lng(); 432 $("input[name='lng']").val(lng); 433 $("input[name='lat']").val(lat); 434 435 436 var direct = $("#direct_input").is(":checked"); 437 if (direct === true) { 438 _submitMapBoard("form1"); 439 } 440 } else { 441 return alert(getLangMsg('not-found-addr-geocode')); 442 } 443 } 444 var setEventListener = function () { 445 446 $(".upload-gal-list ul").sortable({ 447 placeholder: 'placeholder', 448 cancel: 'disabled', 449 }).disableSelection(); 450 451 var direct = $("#direct_input").is(":checked"); 452 453 $("#direct_input").click(function () { 454 direct = $(this).is(":checked"); 455 if (direct === true) { 456 $("#address").prop("readonly", false); 457 $("#address").removeClass("readonly"); 458 } else { 459 $("#address").prop("readonly", true); 460 $("#address").addClass("readonly") 461 } 462 }); 463 }; 464 465 $(document).ready(function () { 466 setEventListener(); 467 }); 468 469 return {
470 'save_map_board': save_map_board, 471 'captcha_map_board': captcha_map_board, 472 'gallery_upload': gallery_upload, 473 'googlePlacesSearchCB': googlePlacesSearchCB, 474 'naverPlacesSearchCB': naverPlacesSearchCB, 475 'kakaoPlacesSearchCB': kakaoPlacesSearchCB, 476 'searchAddr': searchAddr, 477 'more_reply_m': moreReplyM, 478 'more_reply': moreReply, 479 'open_mobile_comment': openMobileComment, 480 'open_reply_write_m': openReplyWriteM, 481 'view_reply': viewReply, 482 'view_reply_m': viewReplyM, 483 'close_reply': closeReply, 484 } 485 486 487}; 488
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.