PageSourceSearch

https://www.ibric.org/_custom/bric/resource/js/board.tab.util.js?83330

js ibric.org collected 2026-10-01 11:39:44 UTC 12,011 bytes, 375 lines download raw bytes

1if(!window.App) {
2	App = {};
3}
4if(!App.board){
5	App.board = {};
6}
7
8$(function() {
9
10	var boardApp = new App.board.book();
11
12	boardApp.init();
13
14});
15
16App.board.book = function() {
17
18	var self;
19
20	return {
21		init: function() {
22			self = this;
23			// 탭 카테고리 클릭 시
24			if(boardTy != 'community_qna' && boardTy != 'scion' && boardTy != 'series_author' && boardTy != 'biojob_employ_info'){
25				self.clickTabCategory();
26			}
27
28			// select 카테고리 선택시
29			self.selectCategory();
30			self.selectMobileCategory();
31
32			self.select2DeptCategory();
33
34			// popup 카테고리 선택시
35			self.popupCategory();
36		},
37
38		popupCategory: function() {
39
40			$('ul.market-cate-list a').on('click', function(e) {
41				e.preventDefault();
42
43				var $this = $(this);
44				var $li = $this.closest('li');
45				var $ul = $li.parent();
46
47				// 2차 카테고리인지 확인
48				var isSecondLevel = !$ul.hasClass('market-cate-list');
49
50				// "전체" 클릭 시 폼 제출
51				if ($li.hasClass('all-cate')) {
52					submitForm('');
53					return;
54				}
55
56				// 2차 카테고리 클릭 시 폼 제출
57				if (isSecondLevel) {
58					submitForm($this.data('id'));
59					return;
60				}
61
62				// 1차 카테고리 클릭 처리
63				var $subMenu = $li.find('ul');
64				var hasSub = $subMenu.length > 0;
65
66				// 모바일 여부 확인 (뷰포트 너비 또는 클래스로 판단)
67				var isMobile = $(window).width() <= 768; // 또는 $('body').hasClass('mobile')
68
69				if (hasSub) {
70					if (isMobile) {
71						// 모바일: 토글만 (2차 메뉴의 "전체"를 클릭하게 함)
72						var isActive = $this.hasClass('active');
73
74						$('.market-cate-list > li > a').removeClass('active');
75						$('.market-cate-list > li').removeClass('active');
76
77						if (!isActive) {
78							$this.addClass('active');
79							$li.addClass('active');
80						}
81					} else {
82						// PC: 바로 해당 1차 카테고리로 검색 (토글 없이)
83						submitForm($this.data('id'));
84					}
85				} else {
86					// 하위 메뉴가 없는 1차 카테고리 → 바로 제출
87					submitForm($this.data('id'));
88				}
89			});
90
91			function submitForm(categoryId) {
92				if ($('input[name=srCategoryId]').length === 0) {
93					$("#searchForm").append('<input type="hidden" name="srCategoryId">');
94				}
95				$('input[name=srCategoryId]').val(categoryId);
96				$("#searchForm").submit();
97				$('.js-popup-close').trigger('click');
98			}
99		},
100
101		clickTabCategory : function() {
102
103			$('.b-category-tab ul.tab-cate a, .b-category-tab-depth ul.tab-cate a, .tab-filter').click(function(e) {
104
105				e.preventDefault();
106
107				var $this = $(this);
108				var categoryId = $this.data("id");
109
110				//카테고리 2뎁스가 존재하는 경우
111				if($this.next().hasClass('b-cate-depth-box') === true){
112					//연구용제품은 1차 카테고리 클릭시 1차카테고리 전체 검색
113					if( boardTy != 'biomarket_research'){
114						return false;
115					}
116
117				}else if($this.parent().attr('class') == 'tab-view-all'){
118					return false;
119				}
120
121				if(  $("#category1") > 0 ){
122					$("#category1").val( categoryId );
123				}else{
124					var input =  $("<input>").attr("type", "hidden").attr("name", "srCategoryId").val( categoryId );
125					$('input[name=srCategoryId]').remove();	//다중클릭시 파라미터 복수로 입력되는 현상 막음
126					$('[data-category-name="srCategoryId"]').remove();
127					$("#searchForm").append($(input)).submit();
128
129				}
130			});
131
132			/*$('.b-category-tab ul.tab-cate a, .b-category-tab-depth ul.tab-cate a, .tab-filter').click(function(e) {
133
134				e.preventDefault();
135
136				var $this = $(this);
137				var categoryId = $this.data("id");
138
139				//카테고리 2뎁스가 존재하는 경우
140				if($this.next().hasClass('b-cate-depth-box') === true){
141					//연구용제품은 1차 카테고리 클릭시 1차카테고리 전체 검색
142					if( boardTy != 'biomarket_research'){
143						return false;
144					}
145
146				}else if($this.parent().attr('class') == 'tab-view-all'){
147					return false;
148				}
149
150				if( $("#category1") > 0 ){
151					$("#category1").val( categoryId );
152				}else{
153
154					if( categoryId == 0  ){
155						// 커뮤니티 > 소리다아 : 소리세움 탭 클릭시 동작
156						var input =  $("<input>").attr("type", "hidden").attr("name", "srCategoryId").val( categoryId );
157						$('input[name=srCategoryId]').remove();	//다중클릭시 파라미터 복수로 입력되는 현상 막음
158						$('[data-category-name="srCategoryId"]').remove();
159						$("#searchForm").append($(input)).submit();
160
161					}else{
162
163						var form = $("#searchForm");
164
165						// 현재 URL의 파라미터들을 form에 추가
166			            var urlParams = new URLSearchParams(window.location.search);
167			            var hasOtherParams = false;
168
169						urlParams.forEach(function(value, key) {
170							// srCategoryId는 제외 (새로 추가할 것이므로)
171							if (key !== 'srCategoryId') {
172								hasOtherParams = true;
173								// 이미 form에 없는 파라미터만 추가
174								if (form.find('input[name="' + key + '"]').length === 0) {
175									$('<input>').attr({
176										type: 'hidden',
177										name: key,
178										value: value
179									}).appendTo(form);
180								}
181							}
182						});
183
184						// srCategoryId 처리
185						$('input[name=srCategoryId]').remove();
186						$('[data-category-name="srCategoryId"]').remove();
187
188						// categoryId가 없고 다른 파라미터도 없으면 직접 이동
189						if (!categoryId && !hasOtherParams) {
190							window.location.href = window.location.pathname;
191							return;
192						}
193
194						if (categoryId) {
195							var input = $("<input>").attr("type", "hidden").attr("name", "srCategoryId").val(categoryId);
196							form.append(input);
197						}
198
199						form.submit();
200					}
201				}
202			});*/
203
204
205		},
206		selectCategory : function() {
207			$('.b-category-tab .board-tab-sel, .b-cate-box-m select').change(function(){
208
209				var $this = $(this);
210				var categoryId = $this.val();
211				var hiddenValue = 'srCategoryId';
212
213				if(boardTy == 'series_author' || boardTy == 'community_qna'){
214					hiddenValue = $('.b-category-tab .board-tab-sel, .b-cate-box-m select').attr('data-category-name');
215				}
216
217				if(categoryId == 'sori'){
218					categoryId = 0;
219				}
220
221				if(  $("#category1") > 0 ){
222					$("#category1").val( categoryId );
223				}else{
224					var input =  $("<input>").attr("type", "hidden").attr("name", hiddenValue).val( categoryId );
225					$(`input[name=${hiddenValue}]`).remove();
226
227					if(boardTy == 'series_author'){
228						$(`input`).remove();
229					}
230					$("#searchForm").append($(input)).submit();
231				}
232
233			});
234
235		},
236		selectMobileCategory : function($this){
237
238			//1뎁스가 전체일 경우 2뎁스 숨김처리
239			if(typeof $( '#prettydropdown-catemstSeq li' ).eq(0).attr('data-value') == "undefined" ){
240				$('.depth02').hide();
241			}
242
243			//셀렉트박스 요소 클릭이벤트
244			$('.b-category-tab-depth').on('click', '.prettydropdown li', function(){
245
246				var $div = $(this).parent().parent(); //.prettydropdown arrow
247
248				$('input[name=srCategoryId]').remove();		//다중으로 파라미터가 들어가는 현상 막음
249
250				if($div.attr('id').indexOf('catemstSeq') > 0 && typeof $(this).attr('data-value') != "undefined" && $(this).attr('class').indexOf('selected') > 0){
251
252					var categoryMst = $(this).attr('data-value'); //17, 18
253
254					//2뎁스 카테고리 데이터 호출
255					$.ajax({
256					    type : 'get',
257						url : '?mode=selectSubCateList',
258						async : false,
259					    data : {
260					      "categoryMst" : categoryMst
261					    },
262					    success : function(result) { // 결과 성공 콜백함수
263
264					        //2뎁스 카테고리 select의 option으로 뿌려줌
265					        var $cate2 = $('#category-tab02');
266							$cate2.empty(); //초기화
267
268							$cate2.append($('<option>').text('전체').attr('value', '').attr('text', ''));		//전체 데이터 조회용
269							//2뎁스 카테고리 리스트 추가
270							if(result.categoryList && result.categoryList.length > 0){
271								for(var i = 0; i < result.categoryList.length; i++){
272
273									$cate2.append($('<option>', {
274										value: result.categoryList[i].categoryId,
275										text: result.categoryList[i].categoryNm
276									}));
277
278								}
279							}
280
281							if(typeof $dropdown !== 'undefined') $dropdown.refresh();
282   							$('.depth02').show();
283
284							//1뎁스 카테고리 아이디
285							var cate1Val = $('#prettydropdown-catemstSeq li.selected').attr('data-value');
286							//2뎁스 카테고리 아이디
287							var cate2Val = $('#prettydropdown-category-tab02 li.selected').attr('data-value');
288
289							var inputCategoryType =  $("<input>").attr("type", "hidden").attr("name", "category-type").val( cate1Val );
290							var input =  $("<input>").attr("type", "hidden").attr("name", "srCategoryId").val( cate2Val );
291
292							$("#searchForm").append($(inputCategoryType));
293							$("#searchForm").append($(input)).submit();
294					    },
295					    error : function(error) { // 결과 에러 콜백함수
296					        console.log(error);
297					    }
298					});
299				}else if($div.attr('id').indexOf('catemstSeq') > 0 && typeof $(this).attr('data-value') == "undefined" && $(this).attr('class').indexOf('selected') > 0){
300					//1뎁스 '전체' 선택
301
302					var cate1Val = $('#prettydropdown-catemstSeq li.selected').attr('data-value');
303
304					var inputCategoryType =  $("<input>").attr("type", "hidden").attr("name", "category-type").val( cate1Val );
305					var input =  $("<input>").attr("type", "hidden").attr("name", "srCategoryId").val( '' );
306
307					$("#searchForm").append($(inputCategoryType));
308					$("#searchForm").append($(input)).submit();
309
310				}
311
312				if(!$(this).parents("ul").hasClass('active') && $("#category1").length == 0){
313
314					var categoryId = $(this).attr('data-value');
315					var hiddenName = $("[data-category-name]").attr('data-category-name')|| "srCategoryId";
316					var hiddenName = "srCategoryId";
317					if(boardTy == 'community_qna'){
318						hiddenName = 'srWriterType';
319					}
320
321					var input =  $("<input>").attr("type", "hidden").attr("name", hiddenName).val( categoryId );
322
323					//$("#searchForm").append($(input)).submit();
324				}
325
326			});
327
328			//2뎁스 선택시 2뎁스 카테고리아이디로 검색
329			$('.depth02').on('click', '.prettydropdown li', function(){
330
331				var cate1Val = $('#prettydropdown-catemstSeq li.selected').attr('data-value');
332
333				$('input[name=srCategoryId]').remove();		//다중으로 파라미터가 들어가는 현상 막음
334
335				if(typeof $(this).attr('data-value') != "undefined" && $(this).attr('class').indexOf('selected') > 0){
336
337					//2뎁스 카테고리 아이디
338					var cate2Val = $(this).attr('data-value');
339
340					//1뎁스 카테고리 아이디 타입으로 넘겨줌
341					var inputCategoryType =  $("<input>").attr("type", "hidden").attr("name", "category-type").val( cate1Val );
342					var input =  $("<input>").attr("type", "hidden").attr("name", "srCategoryId").val( cate2Val );
343
344					$("#searchForm").append($(inputCategoryType));
345					$("#searchForm").append($(input)).submit();
346
347				}else if(typeof $(this).attr('data-value') == "undefined" && $(this).attr('class').indexOf('selected') > 0){
348
349					var inputCategoryType =  $("<input>").attr("type", "hidden").attr("name", "category-type").val( cate1Val );
350					var input =  $("<input>").attr("type", "hidden").attr("name", "srCategoryId").val( '' );
351
352					$("#searchForm").append($(inputCategoryType));
353					$("#searchForm").append($(input)).submit();
354
355				}
356			});
357
358
359		},
360
361
362		//2뎁스 카테고리 선택시 상위 카테고리 active 설정
363		select2DeptCategory : function() {
364			$(function(){
365		 		var $li = $('.b-cate-depth-box ul.tab-cate-depth li.active');
366				$li.parent().parent().parent().addClass('active');
367
368			});
369
370		}
371	}
372};
373
374
375

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.