PageSourceSearch

https://ias2017.org/Resources/Search/SearchSkinObjectPreview7d56.js?cdv=1324

js ias2017.org collected 2026-10-02 07:43:52 UTC 9,047 bytes, 188 lines download raw bytes

1(function ($) {
2    if (typeof dnn == 'undefined') window.dnn = {};
3    if (typeof dnn.searchSkinObject == 'undefined') {
4        dnn.searchSkinObject = function (options) {
5            var settings = {
6                delayTriggerAutoSearch: 100,
7                minCharRequiredTriggerAutoSearch: 2,
8                searchType: 'S',
9                enableWildSearch: true,
10                cultureCode: 'en-US'
11            };
12            this.settings = $.extend({}, settings, options);
13        };
14        dnn.searchSkinObject.prototype = {
15            _ignoreKeyCodes: [9, 13, 16, 17, 18, 19, 20, 27, 33, 34, 35, 36, 37, 38, 39, 40, 45],
16            init: function () {
17                var throttle = null, self = this;
18                var makeUrl = function (val, service) {
19                    var url = service ? service.getServiceRoot('internalservices') + 'searchService/preview' : null;
20                    if (!url) return null;
21                    var params = {};
22                    params['keywords'] = val.replace(/^\s+|\s+$/g, '');
23                    if (!self.settings.enableWildSearch) params["forceWild"] = "0";
24                    params['culture'] = self.settings.cultureCode;
25                    if (self.settings.portalId >= 0)
26                        params['portal'] = self.settings.portalId;
27                    var urlAppend = [];
28                    $.each(params, function (index, value) {
29                        urlAppend.push([index, encodeURIComponent(value)].join('='));
30                    });
31
32                    if (urlAppend.length) {
33                        url += url.indexOf('?') === -1 ? '?' : '&';
34                        url += urlAppend.join('&');
35                    }
36                    return url;
37                };
38
39                var generatePreviewTemplate = function (data) {
40                    var $wrap = $('.searchInputContainer');
41                    var preview = $('.searchSkinObjectPreview', $wrap);
42                    if (preview.length)
43                        preview.remove();
44
45                    var markup = '<ul class="searchSkinObjectPreview">';
46                    if (data && data.length) {
47                        for (var i = 0; i < data.length; i++) {
48                            var group = data[i];
49                            if (group.Results && group.Results.length) {
50                                var groupTitle = group.DocumentTypeName;
51                                markup += '<li class="searchSkinObjectPreview_group">' + groupTitle + '</li>';
52                                for (var j = 0; j < group.Results.length; j++) {
53                                    var item = group.Results[j];
54                                    var itemTitle = item.Title;
55                                    var itemUrl = item.DocumentUrl;
56                                    var itemSnippet = item.Snippet;
57                                    markup += '<li data-url="' + itemUrl + '">';
58                                    if (item.Attributes.Avatar) {
59                                        markup += '<span><img src="' + item.Attributes.Avatar + '" class="userpic" /></span>';
60                                    }
61                                    markup += '<span>' + itemTitle + '</span>';
62                                    if (itemSnippet)
63                                        markup += '<p>' + itemSnippet + '</p></li>';
64                                    else
65                                        markup += '</li>';
66                                } // end for group items
67                            }
68                        } // end for group
69
70                        var moreResults = $wrap.attr('data-moreresults');
71                        markup += '<li><a href="javascript:void(0)" class="searchSkinObjectPreview_more">' + moreResults + '</a></li>';
72                        markup += '</ul>';
73                    }
74                    else {
75                        var noResult = $wrap.attr('data-noresult');
76                        markup += '<li>' + noResult + '</li></ul>';
77                    }
78
79                    $wrap.append(markup);
80                    preview = $('.searchSkinObjectPreview', $wrap);
81
82                    //attach click event
83                    $('li', preview).on('click', function () {
84                        var navigateUrl = $(this).attr('data-url');
85                        if (navigateUrl) {
86                            window.location.href = navigateUrl;
87                        }
88                        return false;
89                    });
90
91                    //attach see more       
92                    $('.searchSkinObjectPreview_more', $wrap).on('click', function () {
93                        var href = $wrap.next().attr('href');
94                        var code = href.replace('javascript:', '');
95                        eval(code);
96                        return false;
97                    });
98                };
99
100                $('.searchInputContainer a.dnnSearchBoxClearText').on('click', function () {
101                    var $this = $(this);
102                    var $wrap = $this.parent();
103                    $('.searchInputContainer input').val('').focus();
104                    $this.removeClass('dnnShow');
105                    $('.searchSkinObjectPreview', $wrap).remove();
106                    return false;
107                });
108
109                $('.searchInputContainer').next().on('click', function() {
110                    var $this = $(this);
111                    var inputBox = $this.prev().find('input[type="text"]');
112                    var val = inputBox.val();
113                    if (val.length) {
114                        return true;
115                    }
116                    return false;
117                });
118
119                $('.searchInputContainer input').on('keyup', function(e) {
120                    var k = e.keyCode || e.witch;
121                    if (self._ignoreKeyCodes.indexOf(k) > -1) return;
122
123                    var $this = $(this);
124                    var $wrap = $this.parent();
125                    var val = $this.val();
126                    if (!val) {
127
128                        $('a.dnnSearchBoxClearText', $wrap).removeClass('dnnShow');
129                        $('.searchSkinObjectPreview', $wrap).remove();
130                    } else {
131                        $('a.dnnSearchBoxClearText', $wrap).addClass('dnnShow');
132
133                        if (self.settings.searchType != 'S' ||
134                            val.length < self.settings.minCharRequiredTriggerAutoSearch) return;
135
136                        if (throttle) {
137                            clearTimeout(throttle);
138                            delete throttle;
139                        }
140
141                        throttle = setTimeout(function() {
142                            var service = $.dnnSF ? $.dnnSF(-1) : null;
143                            var url = makeUrl(val, service);
144                            if (url) {
145                                $.ajax({
146                                    url: url,
147                                    beforeSend: service ? service.setModuleHeaders : null,
148                                    success: function(result) {
149                                        if (result)
150                                            generatePreviewTemplate(result);
151                                    },
152                                    error: function() {
153                                    },
154                                    type: 'GET',
155                                    dataType: 'json',
156                                    contentType: "application/json"
157                                });
158                            }
159                        }, self.settings.delayTriggerAutoSearch);
160                    }
161                })
162                .on('paste', function() {
163                    $(this).triggerHandler('keyup');
164                })
165                .on('keypress', function(e) {
166                    var k = e.keyCode || e.which;
167                    if (k == 13) {
168                        var $this = $(this);
169                        var $wrap = $this.parent();
170                        var val = $this.val();
171                        if (val.length) {
172                            var href = $wrap.next().attr('href');
173                            if (!href) {
174                                // dropdown search
175                                href = $wrap.parent().next().attr('href');
176                            }
177                            var code = href.replace('javascript:', '');
178                            eval(code);
179                            e.preventDefault();
180                        } else {
181                            e.preventDefault();
182                        }
183                    }
184                });
185            }
186        };
187    }
188})(jQuery);

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.