PageSourceSearch

https://www.credentialingexcellence.org/Resources/Search/SearchSkinObjectPreview.js?cdv=175

js credentialingexcellence.org collected 2026-09-24 19:09:55 UTC 9,321 bytes, 192 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, $wrap) {
40                    var preview = $('.searchSkinObjectPreview', $wrap);
41                    if (preview.length)
42                        preview.remove();
43
44                    var markup = '<ul class="searchSkinObjectPreview">';
45                    if (data && data.length) {
46                        for (var i = 0; i < data.length; i++) {
47                            var group = data[i];
48                            if (group.Results && group.Results.length) {
49                                var groupTitle = group.DocumentTypeName;
50                                markup += '<li class="searchSkinObjectPreview_group">' + groupTitle + '</li>';
51                                for (var j = 0; j < group.Results.length; j++) {
52                                    var item = group.Results[j];
53                                    var itemTitle = item.Title;
54                                    var itemUrl = item.DocumentUrl;
55                                    var itemDescription = item.Description;
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 (itemDescription) {
63                                        markup += '<p>' + itemDescription + '</p>';
64                                    }
65                                    if (itemSnippet) {
66                                        markup += '<p>' + itemSnippet + '</p>';
67                                    }
68                                    markup += '</li>';
69                                } // end for group items
70                            }
71                        } // end for group
72
73                        var moreResults = $wrap.attr('data-moreresults');
74                        markup += '<li><a href="javascript:void(0)" class="searchSkinObjectPreview_more">' + moreResults + '</a></li>';
75                        markup += '</ul>';
76                    }
77                    else {
78                        var noResult = $wrap.attr('data-noresult');
79                        markup += '<li>' + noResult + '</li></ul>';
80                    }
81
82                    $wrap.append(markup);
83                    preview = $('.searchSkinObjectPreview', $wrap);
84
85                    //attach click event
86                    $('li', preview).on('click', function () {
87                        var navigateUrl = $(this).attr('data-url');
88                        if (navigateUrl) {
89                            window.location.href = navigateUrl;
90                        }
91                        return false;
92                    });
93
94                    //attach see more       
95                    $('.searchSkinObjectPreview_more', $wrap).on('click', function () {
96                        var $searchButton = $wrap.next();
97                        if (!$searchButton.length) {
98                            $searchButton = $wrap.parent().next();
99                        }
100                        $searchButton[0].click();
101                        return false;
102                    });
103                };
104
105                $('.searchInputContainer a.dnnSearchBoxClearText').on('click', function () {
106                    var $this = $(this);
107                    var $wrap = $this.parent();
108                    $('.searchInputContainer input').val('').focus();
109                    $this.removeClass('dnnShow');
110                    $('.searchSkinObjectPreview', $wrap).remove();
111                    return false;
112                });
113
114                $('.searchInputContainer').next().on('click', function() {
115                    var $this = $(this);
116                    var inputBox = $this.prev().find('input[type="text"]');
117                    var val = inputBox.val();
118                    if (val.length) {
119                        return true;
120                    }
121                    return false;
122                });
123
124                $('.searchInputContainer input').on('keyup', function(e) {
125                    var k = e.keyCode || e.witch;
126                    if ($.inArray(k, self._ignoreKeyCodes) > -1) return;
127
128                    var $this = $(this);
129                    var $wrap = $this.parent();
130                    var val = $this.val();
131                    var container = $this.parent('.searchInputContainer');
132                    if (!val) {
133
134                        $('a.dnnSearchBoxClearText', $wrap).removeClass('dnnShow');
135                        $('.searchSkinObjectPreview', $wrap).remove();
136                    } else {
137                        $('a.dnnSearchBoxClearText', $wrap).addClass('dnnShow');
138
139                        if (self.settings.searchType != 'S' ||
140                            val.length < self.settings.minCharRequiredTriggerAutoSearch) return;
141
142                        if (throttle) {
143                            clearTimeout(throttle);
144                            delete throttle;
145                        }
146
147                        throttle = setTimeout(function() {
148                            var service = $.dnnSF ? $.dnnSF(-1) : null;
149                            var url = makeUrl(val, service);
150                            if (url) {
151                                $.ajax({
152                                    url: url,
153                                    beforeSend: service ? service.setModuleHeaders : null,
154                                    success: function(result) {
155                                        if (result)
156                                            generatePreviewTemplate(result, container);
157                                    },
158                                    error: function() {
159                                    },
160                                    type: 'GET',
161                                    dataType: 'json',
162                                    contentType: "application/json"
163                                });
164                            }
165                        }, self.settings.delayTriggerAutoSearch);
166                    }
167                })
168                .on('paste', function() {
169                    $(this).triggerHandler('keyup');
170                })
171                .on('keypress', function(e) {
172                    var k = e.keyCode || e.which;
173                    if (k == 13) {
174                        var $this = $(this);
175                        var $wrap = $this.parent();
176                        var val = $this.val();
177                        if (val.length) {
178                            var $searchButton = $wrap.next();
179                            if (!$searchButton.length) {
180                                $searchButton = $wrap.parent().next();
181                            }
182                            $searchButton[0].click();
183                            e.preventDefault();
184                        } else {
185                            e.preventDefault();
186                        }
187                    }
188                });
189            }
190        };
191    }
192})(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.