+ var oldHTML = this.innerHTML;
+ var myWidget = mkws.makeWidget($, myTeam, type, this);
+ myTeam.addWidget(myWidget);
+ var newHTML = this.innerHTML;
+ if (newHTML !== oldHTML) {
+ log("widget " + tname + ":" + type + " HTML changed: reparsing");
+ makeWidgetsWithin(level+1, $(this));
+ }
+ });
+ });
+ return true;
+ }
+
+
+ // The second "rootsel" parameter is passed to jQuery and is a DOM node
+ // or a selector string you would like to constrain the search for widgets to.
+ //
+ // This function has no side effects if run again on an operating session,
+ // even if the element/selector passed causes existing widgets to be reparsed:
+ //
+ // (TODO: that last bit isn't true and we currently have to avoid reinitialising
+ // widgets, MKWS-261)
+ //
+ // * configuration is not regenerated
+ // * authentication is not performed again
+ // * autosearches are not re-run
+ mkws.init = function(message, rootsel) {
+ var greet = "MKWS initialised";
+ if (rootsel) greet += " (limited to " + rootsel + ")"
+ if (message) greet += " :: " + message;
+ mkws.log(greet);
+
+ // MKWS is not active until init() has been run against an object with widget nodes.
+ // We only set initial configuration when MKWS is first activated.
+ if (!mkws.isActive) {
+ var widgetSelector = selectorForAllWidgets();
+ if ($(widgetSelector).length < 1) {
+ mkws.log("no widgets found");
+ return;
+ }
+
+ // Initial configuration
+ mkws.autoHasAuto = false;
+ var saved_config;
+ if (typeof mkws_config === 'undefined') {
+ log("setting empty config");
+ saved_config = {};
+ } else {
+ log("using config: " + $.toJSON(mkws_config));
+ saved_config = mkws_config;
+ }
+ mkws.setMkwsConfig(saved_config);
+
+ for (var key in mkws.config) {
+ if (mkws.config.hasOwnProperty(key)) {
+ if (key.match(/^language_/)) {
+ var lang = key.replace(/^language_/, "");
+ // Copy custom languages into list
+ mkws.locale_lang[lang] = mkws.config[key];
+ log("added locally configured language '" + lang + "'");
+ }
+ }
+ }
+
+ var lang = mkws.getParameterByName("lang") || mkws.config.lang;
+ if (!lang || !mkws.locale_lang[lang]) {
+ mkws.config.lang = ""
+ } else {
+ mkws.config.lang = lang;
+ }
+
+ log("using language: " + (mkws.config.lang ? mkws.config.lang : "none"));
+
+ if (mkws.config.query_width < 5 || mkws.config.query_width > 150) {
+ log("reset query width to " + mkws.config.query_width);
+ mkws.config.query_width = 50;
+ }
+
+ // protocol independent link for pazpar2: "//mkws/sp" -> "https://mkws/sp"
+ if (mkws.pazpar2_url().match(/^\/\//)) {
+ mkws.config.pazpar2_url = document.location.protocol + mkws.config.pazpar2_url;
+ log("adjusted protocol independent link to " + mkws.pazpar2_url());
+ }
+
+ if (mkws.config.responsive_design_width) {
+ // Responsive web design - change layout on the fly based on
+ // current screen width. Required for mobile devices.
+ $(window).resize(resizePage);
+ // initial check after page load
+ $(document).ready(resizePage);
+ }
+ }