Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Press Ctrl-F5.
/*
Search Fix
TO INSTALL, PUT ALL THE CODE ON:
http://community.wikia.com/wiki/User:YOUR_USERNAME/global.js
Use the "..." button in the search dialog to configure
If you want to do "go" searches from an external source, do them like this:
http://tibia.wikia.com/wiki/Special:Search?search_fix_go=1&search=YOUR SEARCH HERE
Known issues:
"go" won't work on pages with special case like abbreviations, only lower-case, UPPER-CASE and Camel-Case.
"go" from external sources is a bit ugly but it does the job.
*/
/*global $, skin, addOnloadHook */
/*jslint devel: true, browser: true, indent: 2, plusplus: true, bitwise: true, white: true */
addOnloadHook(
function () {
'use strict';
if (skin !== 'oasis') { return; }
var
get_cookie = function () {
var i, c, cl = document.cookie.split(';');
for (i = 0; i < cl.length; i++) {
c = $.trim(cl[i]);
if (c.indexOf('search_fix=') === 0) { return parseInt(c.substring(11), 10) || 0; }
}
return 1;
},
set_cookie = function (val) {
var date = new Date();
date.setTime(date.getTime() + (30 * 24 * 60 * 60 * 1000));
date = date.toGMTString();
document.cookie = 'search_fix=' + val + '; expires=' + date + '; domain=.wikia.com; path=/';
return val;
},
settings,
$original_search_button = $('#WikiaSearch button.secondary:first'),
$go_button = $original_search_button.clone(),
$options_button = $original_search_button.clone(),
$search_text = $('#WikiaSearch input[name="search"]'),
go_button_arrow = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABUAAAAQCAYAAAD52jQlAAAAAXNSR0IArs4c6QAAAFNJREFUOMtjYBgsoLq6+gw+eUZKDGxtbTWhiqHEGMxIjSBAN5iRWmGLbDAjNSMNZjAjMbFJCmhtbTVhokWSo533B01EUT1JUT3xE5NNaVKg0AQAAB9RMIjCqha0AAAAAElFTkSuQmCC',
go_button_load = 'data:image/gif;base64,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',
search_pos,
search_text,
do_go = function (t, external_search) {
var
camelcase = function (t, all) {
if (typeof all === 'undefined') { all = false; }
/*jslint regexp: true */
t = t.replace(/^(.)|\s(.)|-(.)|_(.)/g, function ($1) { return $1.toUpperCase(); });
/*jslint regexp: false */
if (all) { return t; }
return t.replace(/( (?:a|an|and|as|at|by|for|from|in|of|on|some|that|the|to|with) )/gi, function ($1) { return $1.toLowerCase(); });
},
x, case_variations = {}, titles = [], settings = get_cookie();
if (typeof external_search === 'undefined') { external_search = false; }
t = $.trim(t);
if (t !== '') {
$go_button.attr('disabled', 'disabled').find('img').attr('src', go_button_load);
case_variations[t.substr(0, 1).toUpperCase() + t.substr(1)] = 0;
case_variations[camelcase(t)] = 0;
case_variations[camelcase(t, true)] = 0;
case_variations[t.toLowerCase()] = 0;
case_variations[t.toUpperCase()] = 0;
for (x in case_variations) { if (case_variations.hasOwnProperty(x)) { titles.push(encodeURIComponent(x)); } }
if (settings & 8) {
for (x in case_variations) { if (case_variations.hasOwnProperty(x)) { titles.push(encodeURIComponent('Category:' + x)); } }
}
$.ajax({
'url': '/api.php?action=query&titles=' + (titles.join('|')) + (settings & 8 ? '&prop=categoryinfo' : '') + '&format=json',
'dataType': 'json',
'type': 'GET',
'async': (external_search || !(settings & 2)),
'timeout': 5000,
'success': function (o) {//alert(JSON.stringify(o, ' ', 2));
var x, pages, url;
if (o.hasOwnProperty('query') && o.query.hasOwnProperty('pages')) {
pages = o.query.pages;
for (x in pages) { if (pages.hasOwnProperty(x)) {
if (parseInt(x, 10) > 0) {
url = 'http://' + location.host + '/wiki/' + encodeURI(pages[x].title);
if (!external_search && settings & 2) { window.open(url); }
else { window.location.href = url; }
return;
}
} }
if (settings & 8) {
for (x in pages) { if (pages.hasOwnProperty(x) && pages[x].hasOwnProperty('categoryinfo')) {
url = 'http://' + location.host + '/wiki/' + encodeURI(pages[x].title);
if (!external_search && settings & 2) { window.open(url); }
else { window.location.href = url; }
return;
} }
}
}
},
'error': function () { },
'complete': function () {
$go_button.removeAttr('disabled').find('img').attr('src', go_button_arrow);
}
});
}
};
/* external search */
if (location.search.indexOf('search_fix_go=1') !== -1 && location.search.indexOf('search=') !== -1) {
search_pos = location.search.indexOf('search=') + 7;
search_text = decodeURIComponent(location.search.substr(search_pos).split(/&|;/)).replace('+', ' ');
do_go(search_text, true);
}
if ($('#WikiaSearch').size() < 1) { return; }
/*adding buttons*/
$original_search_button.after($options_button).before($go_button);
$go_button.add($options_button).find('img')
.removeClass('sprite search')
.attr('alt', function (i) { return ['Go', 'Options'][i]; })
.attr('src', function (i) { return [
go_button_arrow,
'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAQCAYAAAAmlE46AAAAAXNSR0IArs4c6QAAAB1JREFUKM9jYBgFo2CkgOrq6jPV1dVniOUz0d2FAHu/DXFavA0iAAAAAElFTkSuQmCC'
][i]; })
.add($original_search_button.find('img'))
.height(16).width(function (i) { return [21, 21, 10][i]; })
.parent().css('padding', '0px 6px');
$go_button.css('right', '+=' + ($original_search_button.outerWidth() + $options_button.outerWidth()));
$original_search_button.css('right', '+=' + $options_button.outerWidth());
$search_text.css('padding-right', '+=' + (($original_search_button.outerWidth() + $options_button.outerWidth())))
.width($search_text.width() - ($original_search_button.outerWidth() + $options_button.outerWidth()));
/*removing auto complete*/
$(document).ready(function () { if (get_cookie() & 4) { $.loadJQueryAutocomplete = function () { }; } });
/*events*/
$go_button.click(function () {
do_go($search_text.val());
return false;
});
$original_search_button.click(function () {
$('#WikiaSearch').attr('target', get_cookie() & 2 ? '_blank' : '_self');
$('#WikiaSearch').submit();
return false;
});
$options_button.click(function () {
var check_settings = function (name, num) {
if (settings & num) { $('#search_fix_opt_' + name).attr('checked', 'checked'); }
else { $('#search_fix_opt_' + name).removeAttr('checked'); }
};
if ($('#search_fix_options').size() < 1) {
$('#WikiaSearch').after(
$('<section />', {'id': 'search_fix_options', 'class': 'asasamodule'})
.css({
'background': '#FFFFFF',
'border': '1px solid #CCCCCC',
'box-shadow': '0px 2px 5px 0px #E0E0E0',
'display': 'none',
'line-height': '1.5em',
'margin-bottom': '10px',
'max-width': '282px',
'padding': '8px',
'position': ($('#WikiaRail #WikiaSearch').size() ? 'relative' : 'absolute'),
'right': ($('#WikiaRail #WikiaSearch').size() ? 0 : 10) + 'px',
'top': ($('#WikiHeader #WikiaSearch').size() ? 83 : ($('#WikiaArticle #WikiaSearch').size() ? 38 : 0)) + 'px'
})
.append(
'What to use when you press Enter:',
$('<br />'),
$('<input />', {'type': 'radio', 'id': 'search_fix_opt_search', 'value': '0', 'name': 'search_fix_default_button', 'checked': 'checked'}),
'Search',
$('<br />'),
$('<input />', {'type': 'radio', 'id': 'search_fix_opt_go', 'value': '1', 'name': 'search_fix_default_button'}),
'Go',
$('<br />'),
$('<br />'),
$('<input />', {'type': 'checkbox', 'value': '1', 'id': 'search_fix_opt_new_window', 'name': 'search_fix_new_window'}),
'Open all searches in a new window',
$('<br />'),
$('<input />', {'type': 'checkbox', 'value': '1', 'id': 'search_fix_opt_acomplete', 'name': 'search_fix_acomplete'}),
'Disable wikia autocomplete (for future pages)',
$('<br />'),
$('<input />', {'type': 'checkbox', 'value': '1', 'id': 'search_fix_opt_cat', 'name': 'search_fix_cat'}),
'Include categories in Go',
$('<button />', {'id': 'search_fix_options_save', 'value': '1', 'name': 'search_fix_new_window'})
.text('Save')
.css({'top': '30%', 'right': '18px', 'position': 'absolute'})
.click(function () {
settings = set_cookie(
parseInt($('#search_fix_options input[name="search_fix_default_button"]:checked').val(), 10) +
($('#search_fix_opt_new_window').is(':checked') ? 2 : 0) +
($('#search_fix_opt_acomplete').is(':checked') ? 4 : 0) +
($('#search_fix_opt_cat').is(':checked') ? 8 : 0)
);
$('#search_fix_options').slideUp('fast');
})
)
);
}
settings = get_cookie();
$('#' + (settings & 1 ? 'search_fix_opt_go' : 'search_fix_opt_search')).click();
check_settings('new_window', 2);
check_settings('acomplete', 4);
check_settings('cat', 8);
$('#search_fix_options').slideToggle('fast');
return false;
});
$('#WikiaSearch input:submit').click(function () {
settings = get_cookie();
if (settings & 1) { $go_button.click(); }
else { $original_search_button.click(); }
return false;
});
});