1$.fn.my_create_multi_field = function(_opts){ 2 if( this.length==0 ) 3 return; 4 5 var defaults = { 6 add_button_label: 'íë ì¶ê°' 7 }; 8 var opts = $.extend(defaults, _opts); 9 10 var t = this.wrapInner('<li/>').wrapInner('<ul/>'); 11 var list = $('ul', t); 12 var btn = $('<a href="#" class="add button">' + opts.add_button_label + '</a>').appendTo(t); 13 var tmpl = $('li:eq(0)', t).clone(); 14 15 $('li:eq(0)', t).remove(); 16 17 list.sortable({ axis:'y'}); 18 19 btn.click(function(e){ 20 e.preventDefault(); 21 var field = tmpl.clone().append(' <a href="#" class="x">ì ê±°</a>'); 22 list.append(field); 23 }); 24 25 $('a.x', t).live('click', function(e){ 26 e.preventDefault(); 27 $(this).parent('li').remove(); 28 }); 29} 30 31$.fn.my_book_connect_field = function(_opts){ 32 var t = this; 33 34 var defaults = { 35 field_name: 'connect_book_id[]', 36 values: {book_id: '', book_title: ''}, 37 callback: null, 38 s: '', 39 static_mode: false, 40 required: false, 41 modal: false 42 }; 43 var opts = $.extend(defaults, _opts); 44 45 if( !opts.static_mode && $.fn.sortable ) 46 t.sortable({axis: 'y'}); 47 48 var html = ''; 49 html += opts.static_mode ? '<span class="item">' : '<li class="item">'; 50 51 html += '<input type="text" value="'+opts.values.book_title+'" class="book-title regular-text" readonly="readonly"> '; 52 html += '<input type="hidden" name="'+opts.field_name+'" value="'+opts.values.book_id+'" class="book-id"> '; 53 html += opts.static_mode ? '</span>' : '</li>'; 54 55 var item = $(html).appendTo(t); 56 57 if( opts.required ) 58 item.find('.book-title').addClass('required'); 59 60 if( !opts.static_mode ) 61 item.append(' <a href="#" class="delete">x</a> '); 62 63 var result_click_cb = function(book_id, book_title){ 64 $('input.book-id', item).val(book_id); 65 $('input.book-title', item).val(book_title); 66 if( opts.callback ) 67 opts.callback(item, book_id, book_title); 68 } 69 70 var finder = my_create_book_finder({modal:opts.modal}); 71 72 $('.book-title', item).click(function(){ 73 finder.open(result_click_cb, $(this).val()); 74 }); 75 76 $('.delete', item).click(function(e){ 77 e.preventDefault(); 78 $(this).parents('.item:eq(0)').remove(); 79 }); 80 81 if( opts.s ){ 82 finder.find(opts.s); 83 } 84 85 return item; 86} 87 88 89var my_create_book_finder = function(_opts){ 90 if( window.my_book_finder ) 91 return window.my_book_finder; 92 93 var defaults = {modal: false}; 94 var opts = $.extend(defaults, _opts); 95 var callback; 96 var html = ''; 97 html+= '<div id="bcp-book-finder" title="ëì 찾기">'; 98 html+= ' <div class="s-row">'; 99 html+= ' <input type="text" class="s" value="" placeholder="ëìëª ">'; 100 html+= ' <a href="#" class="s-submit button">찾기</a>'; 101 html+= ' </div>'; 102 html+= ' <div class="result"></div>'; 103 html+= '</div>'; 104 105 var t = window.my_book_finder = $(html).dialog({ 106 width: Math.min($(window).width(), 400), 107 height: Math.min($(window).height(), 600), 108 autoOpen: false, 109 modal: opts.modal 110 }); 111 var search_input = $('input.s', t); 112 var search_button = $('.s-submit', t); 113 var result = $('.result', t).hide(); 114 var paged = 1; 115 116 var find = t.find = function(_s){ 117 var s = _s || $.trim( search_input.val() ); 118 119 result.show().text('ê²ìì¤...'); 120
121 var data = { 122 action: 'book', 123 action_scope: 'search-book', 124 s: s, 125 paged: paged, 126 posts_per_page: 10 127 } 128 $.post(bcp_vars.ajaxurl, data, function(rs){ 129 if( !rs.rows || rs.rows.length==0 ){ 130 result.text('ê²ì ê²°ê³¼ê° ììµëë¤.'); 131 }else{ 132 var output = '<table>'; 133 for(var i in rs.rows){ 134 var d = rs.rows[i]; 135 output += '<tr>'; 136 output += ' <td class="thumb"><img src="' + d.thumbnail + '"></td>'; 137 output += ' <td class="text">'; 138 output += ' <div class="title"><a href="' + d.permalink + '" target="_blank">' + d.book_title + '</a></div>'; 139 output += ' <div class="info">' + d.book_author + '</div>'; 140 output += ' </td>'; 141 output += ' <td class="buttons"><a href="#" data-id="' + d.book_id + '" data-name="' + d.book_title + '" class="insert button">ì í</a></td>'; 142 output += '</tr>'; 143 } 144 output += '</table>'; 145 146 if( typeof rs.paginate_links=='string' ) 147 output += '<div class="paged-nav">' + rs.paginate_links + '</div>'; 148 149 result.html(output).find('a.insert').click(function(e){ 150 e.preventDefault(); 151 if( typeof callback == 'function' ) 152 callback( $(this).data('id'), $(this).data('name') ); 153 close(); 154 }); 155 156 result.find('.paged-nav a').click(function(e){ 157 e.preventDefault(); 158 paged = parseInt(this.text); 159 find(); 160 }); 161 } 162 }, 'json'); 163 } 164 165 var open = t.open = function(_callback, _val){ 166 callback = _callback; 167 t.dialog('open'); 168 search_input.val(_val).select(); 169 find(_val); 170 } 171 172 var close = t.close = function(){ 173 t.dialog('close'); 174 } 175 176 search_button.click(function(e){ 177 e.preventDefault(); 178 paged = 1; 179 find(); 180 }); 181 search_input.keyup(function(e){ 182 if( e.keyCode==13 ){ 183 paged = 1; 184 find(); 185 } 186 }); 187 188 t.hover( 189 function(){ 190 $('body').addClass('overflow-hidden'); 191 }, 192 function(){ 193 $('body').removeClass('overflow-hidden'); 194 } 195 ); 196 197 return t; 198} 199 200$.fn.my_book_store_field = function(field_name){ 201 if( this.length==0 ) return; 202 203 var t = this; 204 var holder = t.find('.items'); 205 206 var add = function(_name, _url, _index){ 207 var index = _index || new Date().getTime(); 208 var name = _name || ''; 209 var url = _url || ''; 210 var html = ''; 211 html += '<div class="item">'; 212 html += ' <input placeholder="ìì ëª " type="text" name="book['+field_name+']['+index+'][name]" value="'+name+'">'; 213 html += ' <input placeholder="URL" type="text" name="book['+field_name+']['+index+'][url]" value="'+url+'">'; 214 html += ' <a href="#" class="del dashicons dashicons-dismiss"></a>'; 215 html += '</div>'; 216 holder.append(html); 217 } 218 219 $('.add', t).click(function(e){ 220 e.preventDefault(); 221 add(); 222 }); 223 224 $('.del', t).live('click', function(e){ 225 e.preventDefault(); 226 $(this).parents('.item:eq(0)').remove(); 227 }); 228 229 this.add = add; 230 return t; 231} 232 233$.fn.my_bookauth_connect_field = function(_opts){ 234 var t = this; 235 236 var defaults = { 237 post_id_field_name: 'bookauth[post_id][]', 238 role_id_field_name: 'bookauth[role_id][]', 239 values: {post_id: '', name: '', role_id: ''}, 240 callback: null, 241 roles: '', 242 s: '', 243 static_mode: false, 244 required: false, 245 modal: false 246 }; 247 var opts = $.extend(defaults, _opts); 248 249 if( !opts.static_mode && $.fn.sortable ) 250 t.sortable({axis: 'y'}); 251 252 var html = ''; 253 html += opts.static_mode ? '<span class="item">' : '<li class="item">'; 254 html += '<input type="text" value="'+opts.values.name+'" class="bookauth-name" readonly="readonly"> '; 255 html += '<input type="hidden" name="'+opts.post_id_field_name+'" value="'+opts.values.post_id+'" class="bookauth-post_id"> '; 256 if( typeof opts.roles == 'object' ){ 257 html += ' <select name="'+opts.role_id_field_name+'" class="bookauth-role_id">'; 258 html += ' <option value="">- ìí -</option>'; 259 for(var i in opts.roles){ 260 var role_selected = ( opts.values.role_id==i ) ? 'selected="selected"' : ''; 261 html += ' <option value="'+i+'" '+role_selected+'>'+opts.roles[i]+'</option>'; 262 } 263 html += ' </select>'; 264 } 265 html += opts.static_mode ? '</span>' : '</li>'; 266 267 var item = $(html).appendTo(t); 268 269 if( opts.required ) 270 item.find('.bookauth-name').addClass('required'); 271 272 if( !opts.static_mode ) 273 item.append(' <a href="#" class="delete">x</a> '); 274 275 var result_click_cb = function(post_id, name){ 276 $('input.bookauth-post_id', item).val(post_id); 277 $('input.bookauth-name', item).val(name); 278 if( opts.callback ) 279 opts.callback(item, post_id, name); 280 } 281 282 var finder = my_create_bookauth_finder({modal:opts.modal}); 283 284 $('.bookauth-name', item).click(function(){ 285 finder.open(result_click_cb, $(this).val()); 286 }); 287 288 $('.delete', item).click(function(e){ 289 e.preventDefault(); 290 $(this).parents('.item:eq(0)').remove(); 291 }); 292 293 if( opts.s ){ 294 finder.find(opts.s); 295 } 296 297 return item; 298} 299 300 301var my_create_bookauth_finder = function(_opts){ 302 if( window.my_bookauth_finder ) 303 return window.my_bookauth_finder; 304 305 var defaults = {modal: false}; 306 var opts = $.extend(defaults, _opts); 307 var callback; 308 var html = ''; 309 html+= '<div id="bcp-bookauth-finder" title="ì ì 찾기">'; 310 html+= ' <div class="s-row">'; 311 html+= ' <input type="text" class="s" value="" placeholder="ì ìëª ">'; 312 html+= ' <a href="#" class="s-submit button">찾기</a>'; 313 html+= ' </div>'; 314 html+= ' <div class="result"></div>'; 315 html+= '</div>'; 316 317 var t = window.my_bookauth_finder = $(html).dialog({ 318 width: Math.min($(window).width(), 400), 319 height: Math.min($(window).height(), 600), 320 autoOpen: false, 321 modal: opts.modal 322 }); 323 var search_input = $('input.s', t); 324 var search_button = $('.s-submit', t); 325 var result = $('.result', t).hide(); 326 var paged = 1; 327 328 var find = t.find = function(_s){ 329 var s = _s || $.trim( search_input.val() ); 330 331 result.show().text('ê²ìì¤â¦'); 332 333 var data = { 334 action: 'bookauth', 335 action_scope: 'search-bookauth', 336 s: s, 337 paged: paged, 338 posts_per_page: 10 339 } 340 $.post(bcp_vars.ajaxurl, data, function(rs){ 341 if( !rs.rows || rs.rows.length==0 ){
342 result.text('ê²ì ê²°ê³¼ê° ììµëë¤.'); 343 }else{ 344 var output = '<table>'; 345 for(var i in rs.rows){ 346 var d = rs.rows[i]; 347 output += '<tr>'; 348 output += ' <td class="text">'; 349 output += ' <div class="title"><a href="' + d.permalink + '" target="_blank">' + d.name + '</a></div>'; 350 output += ' <div class="info">' + d.info + '</div>'; 351 output += ' </td>'; 352 output += ' <td class="buttons"><a href="#" data-id="' + d.post_id + '" data-name="' + d.name + '" class="insert button">ì í</a></td>'; 353 output += '</tr>'; 354 } 355 output += '</table>'; 356 357 if( typeof rs.paginate_links=='string' ) 358 output += '<div class="paged-nav">' + rs.paginate_links + '</div>'; 359 360 result.html(output).find('a.insert').click(function(e){ 361 e.preventDefault(); 362 if( typeof callback == 'function' ) 363 callback( $(this).data('id'), $(this).data('name') ); 364 close(); 365 }); 366 367 result.find('.paged-nav a').click(function(e){ 368 e.preventDefault(); 369 paged = parseInt(this.text); 370 find(); 371 }); 372 } 373 }, 'json'); 374 } 375 376 var open = t.open = function(_callback, _val){ 377 callback = _callback; 378 t.dialog('open'); 379 search_input.val(_val).select(); 380 find(_val); 381 } 382 383 var close = t.close = function(){ 384 t.dialog('close'); 385 } 386 387 search_button.click(function(e){ 388 e.preventDefault(); 389 paged = 1; 390 find(); 391 }); 392 search_input.keyup(function(e){ 393 if( e.keyCode==13 ){ 394 paged = 1; 395 find(); 396 } 397 }); 398 399 t.hover( 400 function(){ 401 $('body').addClass('overflow-hidden'); 402 }, 403 function(){ 404 $('body').removeClass('overflow-hidden'); 405 } 406 ); 407 408 return t; 409} 410 411$.fn.book_preview_link = function(){ 412 return this.each(function(){ 413 var t = $(this); 414 415 t.click(function(){ 416 var url = t.attr('href'); 417 if( url ){ 418 bcp.open_window(url, {winnm: 'bookpreview', width: 1240, height: 850}); 419 }else{ 420 if( $(this).hasClass('loading') ){ 421 alert('미리보기를 ê°ì ¸ì¤ë ì¤ì ëë¤.'); 422 }else{ 423 alert('ë¯¸ë¦¬ë³´ê¸°ê° ììµëë¤'); 424 } 425 } 426 return false; 427 }); 428 429 if( t.attr('href')=='' || t.attr('href')=='#' ){ 430 t.addClass('loading'); 431 var data = { 432 action: 'book', 433 action_scope: 'book-preview-url', 434 book_id: t.data('book_id') 435 } 436 $.post(bcp_vars.ajaxurl, data, function(url){ 437 if( url ){ 438 t.attr('href', url); 439 }else{ 440 t.addClass('disabled'); 441 } 442 }).always(function(){ 443 t.removeClass('loading'); 444 }).fail(function(e){ 445 t.addClass('disabled'); 446 }); 447 } 448 }); 449} 450 451$.fn.book_shop_links = function(){ 452 return this.each(function(){ 453 var t = $(this); 454 var holder = $('.list', t); 455 456 var search = function(){ 457 t.addClass('loading'); 458 holder.text('êµ¬ë§¤ì² ê²ìì¤â¦'); 459 460 var data = { 461 action: 'book', 462 action_scope: 'book_shop_links', 463 book_id: t.data('book_id') 464 } 465 $.post(bcp_vars.ajaxurl, data, function(rs){ 466 t.removeClass('loading'); 467 if( rs ){ 468 holder.html(rs); 469 }else{ 470 t.remove(); 471 } 472 }); 473 } 474 475 if( $('a', holder).length==0 ) 476 search(); 477 }); 478} 479 480 481 482 483 484$.fn.my_authors_list = function(){ 485 if( this.length==0 ) 486 return; 487 488 var t = this; 489 var reader_w = 300; 490 var reader = $('<div id="auth-reader"><div class="inner"/><span class="close"/><span class="prong"/></div>').appendTo('body').css('width', reader_w); 491 var reader_inner = $('.inner', reader); 492 var closer = $('.close', reader); 493 494 $('.list a', t).click(function(e){ 495 e.preventDefault(); 496 497 reader.removeClass('prong-left').removeClass('prong-right').removeClass('prong-up'); 498 499 $('.list a.selected', t).removeClass('selected'); 500 $(this).addClass('selected'); 501 502 var offset = $(this).offset(); 503 var pos = [offset.left, offset.top-15]; 504 505 if( pos[0]+$(this).width()+(reader_w+12) <= $(window).width() ){ 506 pos[0]+=$(this).width(); 507 reader.addClass('prong-left'); 508 }else if( pos[0]-(reader_w+12) >= 0 ){ 509 pos[0]-=reader_w+12; 510 reader.addClass('prong-right'); 511 }else{ 512 pos[1] += 48; 513 reader.addClass('prong-up'); 514 } 515 516 reader.addClass('open').css({left:pos[0], top:pos[1]}); 517 reader_inner.text('ê°ì ¸ì¤ëì¤...'); 518
519 var data = { 520 action: 'bookauth_dialog_content', 521 post_id: $(this).data('id') 522 } 523 $.post(bcp_vars.ajaxurl, data, function(r){ 524 reader_inner.html(r).focus().find('.content').bcp().scrollpane(); 525 }); 526 }); 527 528 closer.click(function(e){ 529 e.preventDefault(); 530 reader.removeClass('open'); 531 }); 532 533 reader.bcp().onclick_outside(function(){ 534 reader.removeClass('open'); 535 }); 536 537 $(window).resize(function(){ 538 reader.removeClass('open'); 539 $('.list a.selected', t).removeClass('selected'); 540 }); 541 542 t.bcp().columns(); 543} 544 545$.fn.my_login_popup_link = function(){ 546 if( bcp.is_logged_in ) 547 return this; 548 549 return this.each(function(){ 550 var t = $(this); 551 var opts = t.data(); 552 var href = t.attr('href'); 553 var redirect_to = location.href; 554 555 if( opts.redirect_to ){ 556 redirect_to = opts.redirect_to; 557 }else if( href.indexOf('http') == 0 || href.indexOf('/') == 0 ){ 558 if( href.indexOf('wp-login.php') != -1 ){ 559 var tmp = href.get_value_from_querystring('redirect_to'); 560 if( tmp ) 561 redirect_to = decodeURIComponent(tmp); 562 }else{ 563 redirect_to = href; 564 } 565 } 566 567 t.click(function(e){ 568 e.preventDefault(); 569 if( opts.alert_message ) 570 alert( opts.alert_message ); 571 bcp.login_popup({modal:opts.modal}); 572 }); 573 574 $('#loginform').live('login-success', function(){ 575 location.href = redirect_to; 576 }); 577 }); 578} 579 580$.fn.my_mobile_menu = function(){ 581 var t = this.appendTo('body'); 582 583 var menu = $('#mobile-gnb'); 584 585 menu.prepend('<li class="home"><a href="/">í</a></li>'); 586 587 menu.my_mobile_gnb_singular_select(); 588 589 $('.sub-menu .current-menu-item', menu).parents('li:eq(0)').addClass('current-menu-parent'); 590 591 $('a', menu).each(function(){ 592 var a = $(this); 593 var li = a.parents('li:eq(0)'); 594 var sub = a.parent().next('.sub-menu'); 595 if( sub.length > 0 ){ 596 li.addClass('has-sub'); 597 a.click(function(e){ 598 if( sub.css('display')=='none' ){ 599 e.preventDefault(); 600 sub.slideToggle(200); 601 } 602 }); 603 }else{ 604 li.addClass('no-sub'); 605 } 606 }); 607}
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.