PageSourceSearch

https://denk-mal-an-berlin.de/Resources/Search/SearchSkinObjectPreview.js?cdv=1714

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