PageSourceSearch

https://www.catholictimes.org/-/raw/srv-catholictimes/data1/resour…/script_diquestSearch.js?v=20261002130813

js catholictimes.org collected 2026-10-02 10:43:59 UTC 12,643 bytes, 321 lines download raw bytes

1$(function() {
2    var pathName = $(location).attr("pathname").split("/");
3      if (pathName.indexOf('searchMain') > -1 || pathName.indexOf('searchmain') > -1 || pathName.indexOf('searchMainTest') > -1){
4          NSEARCH.init();
5      }
6  });
7  
8  var NSEARCH = {
9    init: function(){
10        //console.log("NEW NONGMIN DIQUEST SEARCH.INIT");
11        var self = this;
12        
13        self.setDateFormat();
14        self.eventBind();
15        self.setTrendKeyword();
16        self.getDateFormat();
17    },
18  
19    getDateFormat: function(){
20      var searchStartDate = $("#filterParam_sdate").val();
21      var searchEndDate = $("#filterParam_edate").val();
22  
23      if(searchStartDate != undefined && searchEndDate != undefined){
24        var start = new Date(searchStartDate);
25        var today = new Date(); 
26        var difference = today.getDate() - start.getDate();
27        var filterValue = "";
28        
29        if (difference == 7) { // 일주일 
30          filterValue = "week";
31        } else if(difference == -1) { // 1개월 
32          filterValue = "month";
33        } else if(difference == 0){ // 1년
34          filterValue = "year";
35        } else { // 전체
36          filterValue = "all";
37        }
38  
39        $("#filterParam").val(filterValue).prop("selected", true);
40      }    
41    },
42  
43    setDateFormat: function(type){
44      var today = new Date();
45      var date = new Date();
46  
47      switch(type){
48        case "week":
49          date.setDate(today.getDate() - 7); // 일주일 전
50          break;
51        case "month":
52          date.setDate(today.getDate() - 30); // 1개월 전 
53          break;
54        case "year":
55          date.setDate(today.getDate() - 365); // 1년 전 
56          break;
57        default:
58          date;
59      }
60  
61      var year = date.getFullYear();
62      var month = date.getMonth() + 1; // 1월은 0!
63      var day = date.getDate();
64  
65      month = month >= 10? month : '0'+month;
66      day = day >= 10? day : '0'+day;
67  
68      return year + '-' + month + '-' + day;
69    },
70  
71    /**
72     * 검색 탭 선택 시 페이지 화면 이동 처리 함수 
73     * @param searchTab {String}  검색탭(통합검색:ALL, 뉴스:NEWS, 이미지:IMG, 동영상:VIDEO, 인물:UNION, 이시간뉴스:ARTICLE) 
74     * @param searchChk {String}  신문지면기사만 (AR)
75     * @return URL 
76     */
77    setUrlParameter: function(searchTab, searchChk=""){
78      var url = new URL(window.location.href);
79      var urlParams = url.searchParams;
80      searchTab = searchTab !== undefined ? searchTab : urlParams.get("searchTab");
81  
82      if(searchTab === 'ALL'){ // 통합검색 
83        urlParams.set("searchType", "ALL");
84        urlParams.set("searchTab", "NEWS,ARTICLE,IMG,VIDEO,UNION");
85        urlParams.set("listNum", "5");
86        urlParams.set("searchChk", searchChk);
87        urlParams.set("pageNum", "1");
88  
89      } else { // 뉴스, 이미지, 동영상, 인물, 이시간뉴스
90        urlParams.set("searchType", "NOTALL");
91        urlParams.set("searchTab", searchTab);
92        
93        if(searchTab === 'UNION' || searchTab === 'IMG'){ urlParams.set("listNum", "12"); } 
94        else { urlParams.set("listNum", "10"); }
95  
96        urlParams.set("searchChk", searchChk);
97        urlParams.set("pageNum", "1");
98      }
99      
100      urlParams.set("orderParam", "POST_SORT_ISSUE_DATE_DESC");
101      
102      return url.href;
103    },
104  
105    /**
106      * 상단 검색 박스 값 변경 시 페이지 화면 이동 처리 함수  
107      * @param searchTerm     {String}  검색어 
108      * @param searchType     {String}  검색조건 (ALL: 전체 검색(탭 중 통합검색), NOT ALL: 탭 중 '통합검색'을 제외한 일부 검색) 
109      * @param searchTab      {String}  검색탭(통합검색:ALL, 뉴스:NEWS, 이미지:IMG, 동영상:VIDEO, 인물:UNION, 이시간뉴스:ARTICLE) 
110      * @param searchRange    {String}  검색범위(전체:ALL, 제목:TITLE, 내용:CONTENT, 제목+내용:BOTH) 
111      * @param orderParam     {String}  정렬순서(최신순:POST_SORT_ISSUE_DATE_DESC, 정확도순:PRE_SORT_ISSUE_DATE_DESC, 과거순:POST_SORT_ISSUE_DATE_ASC)
112      * @param pageNum        {String}	페이지번호
113      * @param listNum			  {String}  한 페이지에 출력할 데이터 개수 
114      * @param notSearchTerm	{String}	검색 시 제외 단어 
115      * @param reSearchTerm   {String}	검색 시 포함 단어 
116      * @param filterParam	  {String}	검색기간(형식: 20221108~20221115)
117      * @param reporterNm		  {String}  기자이름
118      * @param searchChk			{String}  신문지면기사만 (AR)
119     */
120    goSearchPage: function(searchTerm, searchType, searchTab, searchRange, orderParam, pageNum, listNum, notSearchTerm, reSearchTerm, filterParam, reporterNm, searchChk){
121      var url = new URL(window.location.href);
122      var urlParams = url.searchParams;
123  
124      urlParams.set("searchTerm", searchTerm);
125      urlParams.set("searchType", searchType);
126      urlParams.set("searchTab", searchTab);
127      urlParams.set("searchRange", searchRange);
128      urlParams.set("orderParam", orderParam);
129      urlParams.set("pageNum", pageNum);
130      urlParams.set("listNum", listNum);
131      urlParams.set("notSearchTerm", notSearchTerm);
132      urlParams.set("reSearchTerm", reSearchTerm);
133      urlParams.set("filterParam", filterParam);
134      urlParams.set("reporterNm", reporterNm);
135      urlParams.set("searchChk", searchChk);
136  
137      location.href = url.href;
138    },
139  
140    eventBind: function (){
141      var self = this;
142  
143      // 검색
144      $("#nsearch_btn, .btn_sub_search").on("click", function(e){
145        var filterParam = "";
146        var searchStartDate = $("#searchStartDate").val();
147        var searchEndDate = $("#searchEndDate").val();
148  
149        if(searchStartDate != "" && searchEndDate != "" && searchStartDate != undefined && searchEndDate != undefined){
150          var sdate = $("#searchStartDate").val().replace(/-/gi, '');
151          var edate = $("#searchEndDate").val().replace(/-/gi, '');
152          filterParam = sdate + "~" + edate;
153        }
154        
155        var searchTerm = $("#keyword").val().trim();
156        var reSearchTerm = $("#reSearchTerm").val().trim();
157        var notSearchTerm = $("#notSearchTerm").val().trim();
158        var searchRange = $("#searchRange option:selected").val();
159        var reporterNm = $("#reporterNm").val().trim();
160  
161        //if(searchTerm === "") {
162        //  alert("검색어를 입력해주세요."); 
163        //  $("#keyword").focus();
164        //} else {
165          var formData = new FormData();
166          formData.append("searchTerm", searchTerm);
167          formData.append("searchType", "NOTALL");
168          formData.append("searchTab", "NEWS");
169          formData.append("searchRange", searchRange);
170          formData.append("orderParam", "POST_SORT_ISSUE_DATE_DESC");
171          formData.append("pageNum", "1");
172          formData.append("listNum", "10");
173          formData.append("notSearchTerm", notSearchTerm);
174          formData.append("reSearchTerm", reSearchTerm);
175          formData.append("filterParam", filterParam);
176          formData.append("reporterNm", reporterNm);
177          formData.append("searchChk", "");
178    
179          self.goSearchPage(formData.get("searchTerm"),
180                            formData.get("searchType"), 
181                            formData.get("searchTab"), 
182                            formData.get("searchRange"), 
183                            formData.get("orderParam"), 
184                            formData.get("pageNum"),
185                            formData.get("listNum"),
186                            formData.get("notSearchTerm"),
187                            formData.get("reSearchTerm"),
188                            formData.get("filterParam"),
189                            formData.get("reporterNm"),
190                            formData.get("searchChk"));
191        //}
192      });
193      
194      // 검색 페이지 탭 선택
195      $(".search_news .search_tab li").click(function(){
196        var searchTab = $(this).attr('id');
197        location.href = self.setUrlParameter(searchTab);
198      });
199  
200      // '신문 지면 기사만' 체크 선택
201      $("#onlyPaper").click(function(e){
202        var onlyPaperCheck= $(e.target).is(":checked");
203        $('#onlyPaper').prop('checked', onlyPaperCheck);  
204  
205        var searchChk = onlyPaperCheck ? "AR" : "";
206        var searchTab = $(".search_news .search_tab ul").children('.on').attr('id');
207  
208        location.href = self.setUrlParameter(searchTab, searchChk);
209      });
210  
211      // 자동완성
212      $("#keyword").off().on("keyup blur", function(e){
213        var keyword = $(e.target).val();
214        var english = /^[A-Za-z0-9]*$/;
215        if(english.test(keyword)){
216          var inko = new Inko();
217          keyword = inko.en2ko(keyword);
218        }
219  
220        var ignored_autocomplete = false;
221        var $search = $("#keyword");
222  
223        $search.autocomplete({
224          minLength: 1,
225          focus: function(event, ui) {ignored_autocomplete = true; },
226          source: function (request, response) {
227            var searchData = { searchTerm:keyword };
228            
229            if(ignored_autocomplete){
230              ignored_autocomplete = !ignored_autocomplete;
231              return;
232            }
233  
234            if(e.keyCode === 13) { return }
235  
236            $.ajax({
237              url: "https://search.nongmin.com:5003/extensions/newsSmartMaker",
238              data: searchData,
239              success: function(data){
240                if(data.status === 200){
241                  var autoWords = [];
242                  var results = data.resultSet.result[0].resultDocuments;
243                  for (var result of results) {
244                    var label = result["KEYWORD"].replace(keyword, '<strong style="font: bold">'+keyword+'</strong>');
245                    autoWords.push({value:result["KEYWORD"], label: label});
246                  }
247                } else { console.error(data.error) }
248                response(autoWords);
249              }
250            });
251          }
252        });
253  
254        $search.autocomplete("option", "delay", 300);
255        $search.autocomplete().data("uiAutocomplete")._renderItem = function(ul, item) {
256          return $( "<li>" )
257            .attr( "data-value", item.value )
258            .append( "<div>" + item.label + "</div>" )
259            .appendTo( ul );
260        }
261      });
262  
263      // 검색 기간 변경
264      $("#filterParam").on("change", function(e){
265        e.preventDefault();
266  
267        var type = $(this, ':selected').val();
268        var startDate, endDate = "";
269  
270        startDate = type === "all" ? "" : self.setDateFormat(type); 
271        endDate = type === "all" ? "" : self.setDateFormat(); 
272  
273        $("#searchStartDate").val(startDate);
274        $("#searchEndDate").val(endDate);
275      })
276  
277      // 초기화
278      $(".btn_reset").on("click", function(){
279        $("#keyword").val("");
280        $("#searchRange").val("ALL");
281        $("#filterParam").val("all");
282        $("#reporterNm").val("");
283        $("#reSearchTerm").val("");
284        $("#notSearchTerm").val("");
285        $("#searchStartDate").val("");
286        $("#searchEndDate").val("");
287      });
288  
289      // 인기 키워드 검색 
290      $(document).on("click",".keyword dd ul li a", function(e){
291        var searchTerm = $(e.target).text().replace(/#/gi,'').trim();
292        $("#keyword").val(searchTerm);
293  
294        self.goSearchPage(searchTerm, "NOTALL", "NEWS", "ALL", "POST_SORT_ISSUE_DATE_DESC", "1", "10", "", "", "", "", "");
295        
296      });
297    },
298  
299    setTrendKeyword: function(){
300        $.ajax({
301            type: "GET",
302            url: "https://search.nongmin.com:5003/extensions/newsTrendKeyword", 
303            timeout: 3000,
304            async: false,
305            success: function(data) {
306                var keywords = data.resultSet.result[0].resultDocuments;
307                var html = '     <dt>인기키워드</dt>';
308                html += '       <dd>';
309                html += '         <ul>';
310  
311                for (var keyword of keywords){
312                  html += '<li><a href="javascript:void(0);">#'+keyword.KEYWORD+'</a></li>';
313                }
314                html += '         </ul>';
315                html += '       </dd>';
316  
317                $(".keyword").html(html);
318            }
319        });
320    }
321  }

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.