PageSourceSearch

https://rippindawgs.com/Resources/Search/SearchSkinObjectPreview.js?cdv=539

js rippindawgs.com collected 2026-10-09 23:35:27 UTC 9,207 bytes, 189 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 itemSnippet = item.Snippet;
56                                    markup += '<li data-url="' + itemUrl + '">';
57                                    if (item.Attributes.Avatar) {
58                                        markup += '<span><img src="' + item.Attributes.Avatar + '" class="userpic" /></span>';
59                                    }
60                                    markup += '<span>' + itemTitle + '</span>';
61                                    if (itemSnippet)
62                                        markup += '<p>' + itemSnippet + '</p></li>';
63                                    else
64                                        markup += '</li>';
65                                } // end for group items
66                            }
67                        } // end for group
68
69                        var moreResults = $wrap.attr('data-moreresults');
70                        markup += '<li><a href="javascript:void(0)" class="searchSkinObjectPreview_more">' + moreResults + '</a></li>';
71                        markup += '</ul>';
72                    }
73                    else {
74                        var noResult = $wrap.attr('data-noresult');
75                        markup += '<li>' + noResult + '</li></ul>';
76                    }
77
78                    $wrap.append(markup);
79                    preview = $('.searchSkinObjectPreview', $wrap);
80
81                    //attach click event
82                    $('li', preview).on('click', function () {
83                        var navigateUrl = $(this).attr('data-url');
84                        if (navigateUrl) {
85                            window.location.href = navigateUrl;
86                        }
87                        return false;
88                    });
89
90                    //attach see more       
91                    $('.searchSkinObjectPreview_more', $wrap).on('click', function () {
92	                    var $searchButton = $wrap.parents('.SearchContainer').length ? $wrap.parent().next() : $wrap.next();
93                        var href = $searchButton.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 ($.inArray(k, self._ignoreKeyCodes) > -1) return;
122
123                    var $this = $(this);
124                    var $wrap = $this.parent();
125                    var val = $this.val();
126                    var container = $this.parent('.searchInputContainer');
127                    if (!val) {
128
129                        $('a.dnnSearchBoxClearText', $wrap).removeClass('dnnShow');
130                        $('.searchSkinObjectPreview', $wrap).remove();
131                    } else {
132                        $('a.dnnSearchBoxClearText', $wrap).addClass('dnnShow');
133
134                        if (self.settings.searchType != 'S' ||
135                            val.length < self.settings.minCharRequiredTriggerAutoSearch) return;
136
137                        if (throttle) {
138                            clearTimeout(throttle);
139                            delete throttle;
140                        }
141
142                        throttle = setTimeout(function() {
143                            var service = $.dnnSF ? $.dnnSF(-1) : null;
144                            var url = makeUrl(val, service);
145                            if (url) {
146                                $.ajax({
147                                    url: url,
148                                    beforeSend: service ? service.setModuleHeaders : null,
149                                    success: function(result) {
150                                        if (result)
151                                            generatePreviewTemplate(result, container);
152                                    },
153                                    error: function() {
154                                    },
155                                    type: 'GET',
156                                    dataType: 'json',
157                                    contentType: "application/json"
158                                });
159                            }
160                        }, self.settings.delayTriggerAutoSearch);
161                    }
162                })
163                .on('paste', function() {
164                    $(this).triggerHandler('keyup');
165                })
166                .on('keypress', function(e) {
167                    var k = e.keyCode || e.which;
168                    if (k == 13) {
169                        var $this = $(this);
170                        var $wrap = $this.parent();
171                        var val = $this.val();
172                        if (val.length) {
173                            var href = $wrap.next().attr('href');
174                            if (!href) {
175                                // dropdown search
176                                href = $wrap.parent().next().attr('href');
177                            }
178                            var code = href.replace('javascript:', '');
179                            eval(code);
180                            e.preventDefault();
181                        } else {
182                            e.preventDefault();
183                        }
184                    }
185                });
186            }
187        };
188    }
189})(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.