forked from GNUsocial/gnu-social
Merge branch 'master' of git.gnu.io:gnu/gnu-social into mmn_fixes
Conflicts: plugins/Minify/extlib/minify/README.txt plugins/Minify/extlib/minify/UPGRADING.txt plugins/Minify/extlib/minify/min/README.txt plugins/Minify/extlib/minify/min/builder/index.php plugins/Minify/extlib/minify/min/lib/JSMin.php plugins/Minify/extlib/minify/min/lib/Minify.php plugins/Minify/extlib/minify/min/lib/Minify/CSS.php plugins/Minify/extlib/minify/min/lib/Minify/CSS/Compressor.php plugins/Minify/extlib/minify/min/lib/Minify/Controller/Page.php plugins/Minify/extlib/minify/min/lib/Minify/Packer.php plugins/Recaptcha/RecaptchaPlugin.php
This commit is contained in:
commit
980085a8a3
@ -394,8 +394,7 @@ resource: a unique identifier for the connection to the server. This
|
||||
is actually used as a prefix for each XMPP component in the system.
|
||||
password: password for the user account.
|
||||
host: some XMPP domains are served by machines with a different
|
||||
hostname. (For example, @gmail.com GTalk users connect to
|
||||
talk.google.com). Set this to the correct hostname if that's the
|
||||
hostname. Set this to the correct hostname if that's the
|
||||
case with your server.
|
||||
encryption: Whether to encrypt the connection between StatusNet and the
|
||||
XMPP server. Defaults to true, but you can get
|
||||
@ -781,5 +780,3 @@ oldschool
|
||||
enabled: enable certain old-style user settings options, like stream-only mode,
|
||||
conversation trees, and nicknames in streams. Off by default, and
|
||||
may not be well supported in future versions.
|
||||
|
||||
|
||||
|
@ -42,11 +42,10 @@ EndShowUAStyles: End showing custom User-Agent links; good place to add user-age
|
||||
StartShowScripts: Showing JavaScript links
|
||||
- $action: the current action
|
||||
|
||||
EndShowScripts: End showing JavaScript links; good place to add custom
|
||||
links like Google Analytics
|
||||
EndShowScripts: End showing JavaScript links; good place to add custom links
|
||||
- $action: the current action
|
||||
|
||||
StartShowJQueryScripts: Showing JQuery script links (use this to link to e.g. Google mirrors)
|
||||
StartShowJQueryScripts: Showing JQuery script links
|
||||
- $action: the current action
|
||||
|
||||
EndShowJQueryScripts: End showing JQuery script links
|
||||
|
@ -10,13 +10,13 @@ and has a choice of accepting or rejecting the events.
|
||||
In the simplest case, you can add a function to config.php and use the
|
||||
Event::addHandler() function to hook an event:
|
||||
|
||||
function AddGoogleLink($action)
|
||||
function AddMyWebsiteLink($action)
|
||||
{
|
||||
$action->menuItem('http://www.google.com/', _('Google'), _('Search engine'));
|
||||
$action->menuItem('http://mywebsite.net/', _('My web site'), _('Example web link'));
|
||||
return true;
|
||||
}
|
||||
|
||||
Event::addHandler('EndPrimaryNav', 'AddGoogleLink');
|
||||
Event::addHandler('EndPrimaryNav', 'AddMyWebsiteLink');
|
||||
|
||||
This adds a menu item to the end of the main navigation menu. You can
|
||||
see the list of existing events, and parameters that handlers must
|
||||
|
@ -32,8 +32,8 @@ polls, announce events, or other social activities
|
||||
(and you can add more!). Users can choose which
|
||||
people to "follow" and receive only their friends'
|
||||
or colleagues' status messages. It provides a
|
||||
similar service to sites like Twitter, Google+ or
|
||||
Facebook, but is much more awesome.
|
||||
similar service to proprietary social network sites,
|
||||
but is much more awesome.
|
||||
|
||||
With a little work, status messages can be sent to
|
||||
mobile phones, instant messenger programs (using
|
||||
@ -248,4 +248,3 @@ built the fediverse network to what it is today.
|
||||
### License help from
|
||||
|
||||
* Bradley M. Kuhn
|
||||
|
||||
|
@ -92,7 +92,7 @@
|
||||
<truncated>false</truncated>
|
||||
<created_at>Wed Mar 31 01:33:02 +0000 2010</created_at>
|
||||
<in_reply_to_status_id/>
|
||||
<source><a href="http://code.google.com/p/microblog-purple/">mbpidgin</a></source>
|
||||
<source><a href="http://somesourcecode.net/microblog/">mbpidgin</a></source>
|
||||
<id>26674201</id>
|
||||
<in_reply_to_user_id/>
|
||||
<in_reply_to_screen_name/>
|
||||
|
@ -27,12 +27,12 @@ VALUES
|
||||
('IdentiCurse','IdentiCurse','http://identicurse.net/', now()),
|
||||
('IdentiFox','IdentiFox','http://www.bitbucket.org/uncryptic/identifox/', now()),
|
||||
('identitwitch','IdentiTwitch','http://richfish.org/identitwitch/', now()),
|
||||
('Jiminy','Jiminy','http://code.google.com/p/jiminy/', now()),
|
||||
('Jiminy','Jiminy','', now()),
|
||||
('LaTwit','LaTwit','http://latwit.mac65.com/', now()),
|
||||
('LiveTweeter', 'LiveTweeter', 'http://addons.songbirdnest.com/addon/1204', now()),
|
||||
('livetweeter', 'livetweeter', 'http://addons.songbirdnest.com/addon/1204', now()),
|
||||
('maisha', 'Maisha', 'http://maisha.grango.org/', now()),
|
||||
('mbpidgin','mbpidgin','http://code.google.com/p/microblog-purple/', now()),
|
||||
('mbpidgin','mbpidgin','', now()),
|
||||
('Mobidentica', 'Mobidentica', 'http://www.substanceofcode.com/software/mobidentica/', now()),
|
||||
('moconica','Moconica','http://moconica.com/', now()),
|
||||
('mustard', 'mustard', 'http://mustard.macno.org', now()),
|
||||
@ -41,10 +41,10 @@ VALUES
|
||||
('Pikchur','Pikchur','http://www.pikchur.com/', now()),
|
||||
('Ping.fm','Ping.fm','http://ping.fm/', now()),
|
||||
('pingvine','PingVine','http://pingvine.com/', now()),
|
||||
('pocketwit','PockeTwit','http://code.google.com/p/pocketwit/', now()),
|
||||
('pocketwit','PockeTwit','', now()),
|
||||
('posty','Posty','http://spreadingfunkyness.com/posty/', now()),
|
||||
('qtwitter','qTwitter','http://qtwitter.ayoy.net/', now()),
|
||||
('qwit', 'Qwit', 'http://code.google.com/p/qwit/', now()),
|
||||
('qwit', 'Qwit', '', now()),
|
||||
('royalewithcheese','Royale With Cheese','http://p.hellyeah.org/', now()),
|
||||
('rssdent','rssdent','http://github.com/zcopley/rssdent/tree/master', now()),
|
||||
('rygh.no','rygh.no','http://rygh.no/', now()),
|
||||
|
@ -130,8 +130,6 @@ class HTMLPurifier_AttrDef_CSS_FontFamily extends HTMLPurifier_AttrDef
|
||||
// <http://ja.wikipedia.org/wiki/MS_明朝>. See
|
||||
// the CSS3 spec for more examples:
|
||||
// <http://www.w3.org/TR/2011/WD-css3-fonts-20110324/localizedfamilynames.png>
|
||||
// You can see live samples of these on the Internet:
|
||||
// <http://www.google.co.jp/search?q=font-family+MS+明朝|ゴシック>
|
||||
// However, most of these fonts have ASCII equivalents:
|
||||
// for example, 'MS Mincho', and it's considered
|
||||
// professional to use ASCII font names instead of
|
||||
|
@ -9,7 +9,7 @@ DEFAULT: NULL
|
||||
absolute URIs into another URI, usually a URI redirection service.
|
||||
This directive accepts a URI, formatted with a <code>%s</code> where
|
||||
the url-encoded original URI should be inserted (sample:
|
||||
<code>http://www.google.com/url?q=%s</code>).
|
||||
<code>https://searx.laquadrature.net/?q=%s</code>).
|
||||
</p>
|
||||
<p>
|
||||
Uses for this directive:
|
||||
|
@ -27,7 +27,7 @@ class HTMLPurifier_Injector_Linkify extends HTMLPurifier_Injector
|
||||
if (strpos($token->data, '://') === false) {
|
||||
// our really quick heuristic failed, abort
|
||||
// this may not work so well if we want to match things like
|
||||
// "google.com", but then again, most people don't
|
||||
// "domainname.com", but then again, most people don't
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -770,7 +770,6 @@ class OAuthUtil {
|
||||
// parameters, has to do some unescaping
|
||||
// Can filter out any non-oauth parameters if needed (default behaviour)
|
||||
// May 28th, 2010 - method updated to tjerk.meesters for a speed improvement.
|
||||
// see http://code.google.com/p/oauth/issues/detail?id=163
|
||||
public static function split_header($header, $only_allow_oauth_parameters = true) {
|
||||
$params = array();
|
||||
if (preg_match_all('/('.($only_allow_oauth_parameters ? 'oauth_' : '').'[a-z_-]*)=(:?"([^"]*)"|([^,]*))/', $header, $matches)) {
|
||||
|
@ -84,7 +84,7 @@ and the URLs are listed here for your convenience.
|
||||
- PEAR Net_Socket, if you use the SMTP factory for notifications
|
||||
http://pear.php.net/package/Net_Socket
|
||||
- XMPPHP, the follow-up to Class.Jabber.php. Probably the best XMPP
|
||||
library available for PHP. http://xmpphp.googlecode.com/. Note that
|
||||
library available for PHP. https://github.com/heshanlk/XMPPHP. Note that
|
||||
as of this writing the version of this library that is available in
|
||||
the extlib directory is *significantly different* from the upstream
|
||||
version (patches have been submitted). Upgrading to the upstream
|
||||
|
@ -28,7 +28,7 @@ Why?
|
||||
|
||||
I got used to having gettext work even without gettext
|
||||
library. It's there in my favourite language Python, so I was
|
||||
surprised that I couldn't find it in PHP. I even Googled for it,
|
||||
surprised that I couldn't find it in PHP. I even searched for it,
|
||||
but to no avail.
|
||||
|
||||
So, I said, what the heck, I'm going to write it for this
|
||||
|
1
js/extlib/jquery-ui/jquery-ui.js
vendored
1
js/extlib/jquery-ui/jquery-ui.js
vendored
@ -14626,7 +14626,6 @@ color.fn = jQuery.extend( color.prototype, {
|
||||
color.fn.parse.prototype = color.fn;
|
||||
|
||||
// hsla conversions adapted from:
|
||||
// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021
|
||||
|
||||
function hue2rgb( p, q, h ) {
|
||||
h = ( h + 1 ) % 1;
|
||||
|
1
js/extlib/jquery.js
vendored
1
js/extlib/jquery.js
vendored
@ -9083,7 +9083,6 @@ jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function(
|
||||
// Support: Safari<7+, Chrome<37+
|
||||
// Add the top/left cssHooks using jQuery.fn.position
|
||||
// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
|
||||
// Blink bug: https://code.google.com/p/chromium/issues/detail?id=229280
|
||||
// getComputedStyle returns percent when specified for top/left/bottom/right;
|
||||
// rather than make the css module depend on the offset module, just check for it here
|
||||
jQuery.each( [ "top", "left" ], function( i, prop ) {
|
||||
|
217
js/geometa.js
217
js/geometa.js
@ -1,217 +0,0 @@
|
||||
// A shim to implement the W3C Geolocation API Specification using Gears or the Ajax API
|
||||
if (typeof navigator.geolocation == "undefined" || navigator.geolocation.shim ) { (function(){
|
||||
|
||||
// -- BEGIN GEARS_INIT
|
||||
(function() {
|
||||
// We are already defined. Hooray!
|
||||
if (window.google && google.gears) {
|
||||
return;
|
||||
}
|
||||
|
||||
var factory = null;
|
||||
|
||||
// Firefox
|
||||
if (typeof GearsFactory != 'undefined') {
|
||||
factory = new GearsFactory();
|
||||
} else {
|
||||
// IE
|
||||
try {
|
||||
factory = new ActiveXObject('Gears.Factory');
|
||||
// privateSetGlobalObject is only required and supported on WinCE.
|
||||
if (factory.getBuildInfo().indexOf('ie_mobile') != -1) {
|
||||
factory.privateSetGlobalObject(this);
|
||||
}
|
||||
} catch (e) {
|
||||
// Safari
|
||||
if ((typeof navigator.mimeTypes != 'undefined') && navigator.mimeTypes["application/x-googlegears"]) {
|
||||
factory = document.createElement("object");
|
||||
factory.style.display = "none";
|
||||
factory.width = 0;
|
||||
factory.height = 0;
|
||||
factory.type = "application/x-googlegears";
|
||||
document.documentElement.appendChild(factory);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// *Do not* define any objects if Gears is not installed. This mimics the
|
||||
// behavior of Gears defining the objects in the future.
|
||||
if (!factory) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Now set up the objects, being careful not to overwrite anything.
|
||||
//
|
||||
// Note: In Internet Explorer for Windows Mobile, you can't add properties to
|
||||
// the window object. However, global objects are automatically added as
|
||||
// properties of the window object in all browsers.
|
||||
if (!window.google) {
|
||||
google = {};
|
||||
}
|
||||
|
||||
if (!google.gears) {
|
||||
google.gears = {factory: factory};
|
||||
}
|
||||
})();
|
||||
// -- END GEARS_INIT
|
||||
|
||||
var GearsGeoLocation = (function() {
|
||||
// -- PRIVATE
|
||||
var geo = google.gears.factory.create('beta.geolocation');
|
||||
|
||||
var wrapSuccess = function(callback, self) { // wrap it for lastPosition love
|
||||
return function(position) {
|
||||
callback(position);
|
||||
self.lastPosition = position;
|
||||
};
|
||||
};
|
||||
|
||||
// -- PUBLIC
|
||||
return {
|
||||
shim: true,
|
||||
|
||||
type: "Gears",
|
||||
|
||||
lastPosition: null,
|
||||
|
||||
getCurrentPosition: function(successCallback, errorCallback, options) {
|
||||
var self = this;
|
||||
var sc = wrapSuccess(successCallback, self);
|
||||
geo.getCurrentPosition(sc, errorCallback, options);
|
||||
},
|
||||
|
||||
watchPosition: function(successCallback, errorCallback, options) {
|
||||
geo.watchPosition(successCallback, errorCallback, options);
|
||||
},
|
||||
|
||||
clearWatch: function(watchId) {
|
||||
geo.clearWatch(watchId);
|
||||
},
|
||||
|
||||
getPermission: function(siteName, imageUrl, extraMessage) {
|
||||
geo.getPermission(siteName, imageUrl, extraMessage);
|
||||
}
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
var AjaxGeoLocation = (function() {
|
||||
// -- PRIVATE
|
||||
var loading = false;
|
||||
var loadGoogleLoader = function() {
|
||||
if (!hasGoogleLoader() && !loading) {
|
||||
loading = true;
|
||||
var s = document.createElement('script');
|
||||
s.src = (document.location.protocol == "https:"?"https://":"http://") + 'www.google.com/jsapi?callback=_google_loader_apiLoaded';
|
||||
s.type = "text/javascript";
|
||||
document.getElementsByTagName('body')[0].appendChild(s);
|
||||
}
|
||||
};
|
||||
|
||||
var queue = [];
|
||||
var addLocationQueue = function(callback) {
|
||||
queue.push(callback);
|
||||
};
|
||||
|
||||
var runLocationQueue = function() {
|
||||
if (hasGoogleLoader()) {
|
||||
while (queue.length > 0) {
|
||||
var call = queue.pop();
|
||||
call();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
window['_google_loader_apiLoaded'] = function() {
|
||||
runLocationQueue();
|
||||
};
|
||||
|
||||
var hasGoogleLoader = function() {
|
||||
return (window['google'] && google['loader']);
|
||||
};
|
||||
|
||||
var checkGoogleLoader = function(callback) {
|
||||
if (hasGoogleLoader()) { return true; }
|
||||
|
||||
addLocationQueue(callback);
|
||||
|
||||
loadGoogleLoader();
|
||||
|
||||
return false;
|
||||
};
|
||||
|
||||
loadGoogleLoader(); // start to load as soon as possible just in case
|
||||
|
||||
// -- PUBLIC
|
||||
return {
|
||||
shim: true,
|
||||
|
||||
type: "ClientLocation",
|
||||
|
||||
lastPosition: null,
|
||||
|
||||
getCurrentPosition: function(successCallback, errorCallback, options) {
|
||||
var self = this;
|
||||
if (!checkGoogleLoader(function() {
|
||||
self.getCurrentPosition(successCallback, errorCallback, options);
|
||||
})) { return; }
|
||||
|
||||
if (google.loader.ClientLocation) {
|
||||
var cl = google.loader.ClientLocation;
|
||||
|
||||
var position = {
|
||||
coords: {
|
||||
latitude: cl.latitude,
|
||||
longitude: cl.longitude,
|
||||
altitude: null,
|
||||
accuracy: 43000, // same as Gears accuracy over wifi?
|
||||
altitudeAccuracy: null,
|
||||
heading: null,
|
||||
speed: null
|
||||
},
|
||||
// extra info that is outside of the bounds of the core API
|
||||
address: {
|
||||
city: cl.address.city,
|
||||
country: cl.address.country,
|
||||
country_code: cl.address.country_code,
|
||||
region: cl.address.region
|
||||
},
|
||||
timestamp: new Date()
|
||||
};
|
||||
|
||||
successCallback(position);
|
||||
|
||||
this.lastPosition = position;
|
||||
} else if (errorCallback === "function") {
|
||||
errorCallback({ code: 3, message: "Using the Google ClientLocation API and it is not able to calculate a location."});
|
||||
}
|
||||
},
|
||||
|
||||
watchPosition: function(successCallback, errorCallback, options) {
|
||||
this.getCurrentPosition(successCallback, errorCallback, options);
|
||||
|
||||
var self = this;
|
||||
var watchId = setInterval(function() {
|
||||
self.getCurrentPosition(successCallback, errorCallback, options);
|
||||
}, 10000);
|
||||
|
||||
return watchId;
|
||||
},
|
||||
|
||||
clearWatch: function(watchId) {
|
||||
clearInterval(watchId);
|
||||
},
|
||||
|
||||
getPermission: function(siteName, imageUrl, extraMessage) {
|
||||
// for now just say yes :)
|
||||
return true;
|
||||
}
|
||||
|
||||
};
|
||||
});
|
||||
|
||||
// If you have Gears installed use that, else use Ajax ClientLocation
|
||||
navigator.geolocation = (window.google && google.gears) ? GearsGeoLocation() : AjaxGeoLocation();
|
||||
|
||||
})();
|
||||
}
|
@ -394,8 +394,7 @@ class Action extends HTMLOutputter // lawsuit
|
||||
{
|
||||
$theme = new Theme($mainTheme);
|
||||
|
||||
// Some themes may have external stylesheets, such as using the
|
||||
// Google Font APIs to load webfonts.
|
||||
// Some themes may have external stylesheets
|
||||
foreach ($theme->getExternals() as $url) {
|
||||
$this->cssLink($url, $mainTheme, $media);
|
||||
}
|
||||
|
@ -137,7 +137,7 @@ class SearchAction extends Action
|
||||
|
||||
* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)
|
||||
* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)
|
||||
* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)
|
||||
* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)
|
||||
* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)
|
||||
"), $qe, $qe, $qe, $qe);
|
||||
$message .= "\n";
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10620,7 +10620,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10620,7 +10620,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10558,7 +10558,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10528,7 +10528,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10497,7 +10497,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10497,9 +10497,9 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "You can also try your search on other engines:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "You can also try your search on other engines:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
|
||||
#. TRANS: Menu item in search group navigation panel.
|
||||
#: lib/searchgroupnav.php:74
|
||||
|
@ -10497,7 +10497,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10497,9 +10497,9 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "Puedes intentar tu búsqueda con otros buscadores:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "Puedes intentar tu búsqueda con otros buscadores:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
|
||||
#. TRANS: Menu item in search group navigation panel.
|
||||
#: lib/searchgroupnav.php:74
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10465,7 +10465,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10499,7 +10499,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10558,7 +10558,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10466,7 +10466,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10498,7 +10498,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10497,9 +10497,9 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "Puoi provare a fare una ricerca su altri motori di ricerca:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "Puoi provare a fare una ricerca su altri motori di ricerca:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
|
||||
#. TRANS: Menu item in search group navigation panel.
|
||||
#: lib/searchgroupnav.php:74
|
||||
|
@ -10465,7 +10465,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10465,7 +10465,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10465,7 +10465,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10527,7 +10527,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10527,7 +10527,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10527,7 +10527,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10465,7 +10465,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10465,7 +10465,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10497,7 +10497,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10528,7 +10528,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10499,9 +10499,9 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "Você pode também tentar pesquisar em outros mecanismos:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "Você pode também tentar pesquisar em outros mecanismos:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
|
||||
#. TRANS: Menu item in search group navigation panel.
|
||||
#: lib/searchgroupnav.php:74
|
||||
|
@ -10527,7 +10527,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10559,9 +10559,9 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "Вы также можете попытаться поискать при помощи других поисковиков:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr "Вы также можете попытаться поискать при помощи других поисковиков:\n\n* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
|
||||
#. TRANS: Menu item in search group navigation panel.
|
||||
#: lib/searchgroupnav.php:74
|
||||
|
@ -10558,7 +10558,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10527,7 +10527,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -9792,7 +9792,7 @@ msgid ""
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+"
|
||||
"%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+"
|
||||
"%s)\n"
|
||||
msgstr ""
|
||||
|
@ -10497,7 +10497,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10496,7 +10496,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10498,7 +10498,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10527,7 +10527,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10497,7 +10497,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10465,7 +10465,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10465,7 +10465,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10465,7 +10465,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -10467,7 +10467,7 @@ msgid ""
|
||||
"\n"
|
||||
"* [DuckDuckGo](https://duckduckgo.com/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Ixquick](https://ixquick.com/do/search?query=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Google](https://www.google.com/search?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Searx](https://searx.laquadrature.net/?q=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
"* [Yahoo!](https://search.yahoo.com/search?p=site%%3A%%%%site.server%%%%+%s)\n"
|
||||
msgstr ""
|
||||
|
||||
|
@ -111,7 +111,6 @@ class BitlyUrlPlugin extends UrlShortenerPlugin
|
||||
*/
|
||||
protected function query($url)
|
||||
{
|
||||
// http://code.google.com/p/bitly-api/wiki/ApiDocumentation#/shorten
|
||||
$params = http_build_query(array(
|
||||
'login' => $this->getLogin(),
|
||||
'apiKey' => $this->getApiKey()), '', '&');
|
||||
|
@ -306,7 +306,6 @@ class ExtendedProfileWidget extends Form
|
||||
'facebook' => 'Facebook',
|
||||
'linkedin' => 'LinkedIn',
|
||||
'flickr' => 'Flickr',
|
||||
'google' => 'Google Profile',
|
||||
'other' => 'Other',
|
||||
'twitter' => 'Twitter'
|
||||
),
|
||||
|
@ -29,4 +29,4 @@ msgstr "%1$s erabiltzailea ezin izan da %2$s taldera gehitu."
|
||||
msgid ""
|
||||
"Allows forced group memberships and forces all notices to appear in groups "
|
||||
"that users were forced in."
|
||||
msgstr "<a href=\"http://www.google.com/analytics/\">Google Analytics</a> erabiltzen du web gunera atzipenak jarraitu ahal izateko."
|
||||
msgstr ""
|
||||
|
@ -37,7 +37,6 @@ if (!defined('GNUSOCIAL')) { exit(1); }
|
||||
class Discovery
|
||||
{
|
||||
const LRDD_REL = 'lrdd';
|
||||
const UPDATESFROM = 'http://schemas.google.com/g/2010#updates-from';
|
||||
const HCARD = 'http://microformats.org/profile/hcard';
|
||||
const MF2_HCARD = 'http://microformats.org/profile/h-card'; // microformats2 h-card
|
||||
|
||||
@ -199,5 +198,3 @@ class Discovery
|
||||
return $template;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -49,9 +49,9 @@ class MapstractionPlugin extends Plugin
|
||||
const VERSION = GNUSOCIAL_VERSION;
|
||||
|
||||
/** provider name, one of:
|
||||
'cloudmade', 'google', 'microsoft', 'openlayers', 'yahoo' */
|
||||
'cloudmade', 'microsoft', 'openlayers', 'yahoo' */
|
||||
public $provider = 'openlayers';
|
||||
/** provider API key (or 'appid'), if required ('google' and 'yahoo' only) */
|
||||
/** provider API key (or 'appid'), if required ('yahoo' only) */
|
||||
public $apikey = null;
|
||||
|
||||
/**
|
||||
@ -97,10 +97,6 @@ class MapstractionPlugin extends Plugin
|
||||
case 'cloudmade':
|
||||
$action->script('http://tile.cloudmade.com/wml/0.2/web-maps-lite.js');
|
||||
break;
|
||||
case 'google':
|
||||
$action->script(sprintf('http://maps.google.com/maps?file=api&v=2&sensor=false&key=%s',
|
||||
urlencode($this->apikey)));
|
||||
break;
|
||||
case 'microsoft':
|
||||
$action->script((GNUsocial::isHTTPS()?'https':'http') + '://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6');
|
||||
break;
|
||||
|
File diff suppressed because one or more lines are too long
@ -1,10 +0,0 @@
|
||||
.olLayerGoogleCopyright {
|
||||
right: 3px;
|
||||
bottom: 2px;
|
||||
left: auto;
|
||||
}
|
||||
.olLayerGooglePoweredBy {
|
||||
left: 2px;
|
||||
bottom: 2px;
|
||||
}
|
||||
|
@ -13,14 +13,6 @@ div.olLayerDiv {
|
||||
-moz-user-select: none;
|
||||
}
|
||||
|
||||
.olLayerGoogleCopyright {
|
||||
left: 2px;
|
||||
bottom: 2px;
|
||||
}
|
||||
.olLayerGooglePoweredBy {
|
||||
left: 2px;
|
||||
bottom: 15px;
|
||||
}
|
||||
.olControlAttribution {
|
||||
font-size: smaller;
|
||||
right: 3px;
|
||||
|
@ -240,7 +240,7 @@ LatLonPoint: {
|
||||
// TODO: Add provider code
|
||||
},
|
||||
|
||||
fromProprietary: function(googlePoint) {
|
||||
fromProprietary: function(point) {
|
||||
// TODO: Add provider code
|
||||
}
|
||||
|
||||
|
@ -16,7 +16,7 @@ mxn.register('cloudmade', {
|
||||
me.click.fire({'location': new mxn.LatLonPoint(location.lat(), location.lng())});
|
||||
}
|
||||
|
||||
// If the user puts their own Google markers directly on the map
|
||||
// If the user puts their own markers directly on the map
|
||||
// then there is no location and this event should not fire.
|
||||
if ( location ) {
|
||||
me.clickHandler(location.lat(),location.lng(),location,me);
|
||||
|
@ -20,7 +20,7 @@ var init = function() {
|
||||
* @name mxn.Mapstraction
|
||||
* @constructor
|
||||
* @param {String} element The HTML element to replace with a map
|
||||
* @param {String} api The API to use, one of 'google', 'googlev3', 'yahoo', 'microsoft', 'openstreetmap', 'multimap', 'map24', 'openlayers', 'mapquest'. If omitted, first loaded provider implementation is used.
|
||||
* @param {String} api The API to use, one of 'yahoo', 'microsoft', 'openstreetmap', 'multimap', 'map24', 'openlayers', 'mapquest'. If omitted, first loaded provider implementation is used.
|
||||
* @param {Bool} debug optional parameter to turn on debug support - this uses alert panels for unsupported actions
|
||||
* @exports Mapstraction as mxn.Mapstraction
|
||||
*/
|
||||
@ -583,9 +583,6 @@ Mapstraction.prototype.declutterMarkers = function(opts) {
|
||||
// case 'yahoo':
|
||||
//
|
||||
// break;
|
||||
// case 'google':
|
||||
//
|
||||
// break;
|
||||
// case 'openstreetmap':
|
||||
//
|
||||
// break;
|
||||
|
@ -103,9 +103,6 @@ mxn.register('geocommons', {
|
||||
case mxn.Mapstraction.SATELLITE:
|
||||
map.setMapProvider("BlueMarble");
|
||||
break;
|
||||
case mxn.Mapstraction.HYBRID:
|
||||
map.setMapProvider("Google Hybrid");
|
||||
break;
|
||||
default:
|
||||
map.setMapProvider(type);
|
||||
}
|
||||
@ -184,7 +181,7 @@ mxn.register('geocommons', {
|
||||
// TODO: Add provider code
|
||||
},
|
||||
|
||||
fromProprietary: function(googlePoint) {
|
||||
fromProprietary: function(point) {
|
||||
// TODO: Add provider code
|
||||
}
|
||||
|
||||
|
@ -1,519 +0,0 @@
|
||||
mxn.register('google', {
|
||||
|
||||
Mapstraction: {
|
||||
|
||||
init: function(element,api) {
|
||||
var me = this;
|
||||
if (GMap2) {
|
||||
if (GBrowserIsCompatible()) {
|
||||
this.maps[api] = new GMap2(element);
|
||||
|
||||
GEvent.addListener(this.maps[api], 'click', function(marker,location) {
|
||||
|
||||
if ( marker && marker.mapstraction_marker ) {
|
||||
marker.mapstraction_marker.click.fire();
|
||||
}
|
||||
else if ( location ) {
|
||||
me.click.fire({'location': new mxn.LatLonPoint(location.y, location.x)});
|
||||
}
|
||||
|
||||
// If the user puts their own Google markers directly on the map
|
||||
// then there is no location and this event should not fire.
|
||||
if ( location ) {
|
||||
me.clickHandler(location.y,location.x,location,me);
|
||||
}
|
||||
});
|
||||
|
||||
GEvent.addListener(this.maps[api], 'moveend', function() {
|
||||
me.moveendHandler(me);
|
||||
me.endPan.fire();
|
||||
});
|
||||
|
||||
GEvent.addListener(this.maps[api], 'zoomend', function() {
|
||||
me.changeZoom.fire();
|
||||
});
|
||||
|
||||
this.loaded[api] = true;
|
||||
me.load.fire();
|
||||
}
|
||||
else {
|
||||
alert('browser not compatible with Google Maps');
|
||||
}
|
||||
}
|
||||
else {
|
||||
alert(api + ' map script not imported');
|
||||
}
|
||||
},
|
||||
|
||||
applyOptions: function(){
|
||||
var map = this.maps[this.api];
|
||||
|
||||
if(this.options.enableScrollWheelZoom){
|
||||
map.enableContinuousZoom();
|
||||
map.enableScrollWheelZoom();
|
||||
}
|
||||
|
||||
if (this.options.enableDragging) {
|
||||
map.enableDragging();
|
||||
} else {
|
||||
map.disableDragging();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
resizeTo: function(width, height){
|
||||
this.currentElement.style.width = width;
|
||||
this.currentElement.style.height = height;
|
||||
this.maps[this.api].checkResize();
|
||||
},
|
||||
|
||||
addControls: function( args ) {
|
||||
var map = this.maps[this.api];
|
||||
|
||||
// remove old controls
|
||||
if (this.controls) {
|
||||
while ((ctl = this.controls.pop())) {
|
||||
// Google specific method
|
||||
map.removeControl(ctl);
|
||||
}
|
||||
} else {
|
||||
this.controls = [];
|
||||
}
|
||||
c = this.controls;
|
||||
|
||||
// Google has a combined zoom and pan control.
|
||||
if (args.zoom || args.pan) {
|
||||
if (args.zoom == 'large'){
|
||||
this.addLargeControls();
|
||||
} else {
|
||||
this.addSmallControls();
|
||||
}
|
||||
}
|
||||
|
||||
if (args.scale) {
|
||||
this.controls.unshift(new GScaleControl());
|
||||
map.addControl(this.controls[0]);
|
||||
this.addControlsArgs.scale = true;
|
||||
}
|
||||
|
||||
if (args.overview) {
|
||||
c.unshift(new GOverviewMapControl());
|
||||
map.addControl(c[0]);
|
||||
this.addControlsArgs.overview = true;
|
||||
}
|
||||
if (args.map_type) {
|
||||
this.addMapTypeControls();
|
||||
}
|
||||
},
|
||||
|
||||
addSmallControls: function() {
|
||||
var map = this.maps[this.api];
|
||||
this.controls.unshift(new GSmallMapControl());
|
||||
map.addControl(this.controls[0]);
|
||||
this.addControlsArgs.zoom = 'small';
|
||||
this.addControlsArgs.pan = true;
|
||||
},
|
||||
|
||||
addLargeControls: function() {
|
||||
var map = this.maps[this.api];
|
||||
this.controls.unshift(new GLargeMapControl());
|
||||
map.addControl(this.controls[0]);
|
||||
this.addControlsArgs.zoom = 'large';
|
||||
this.addControlsArgs.pan = true;
|
||||
},
|
||||
|
||||
addMapTypeControls: function() {
|
||||
var map = this.maps[this.api];
|
||||
this.controls.unshift(new GMapTypeControl());
|
||||
map.addControl(this.controls[0]);
|
||||
this.addControlsArgs.map_type = true;
|
||||
},
|
||||
|
||||
setCenterAndZoom: function(point, zoom) {
|
||||
var map = this.maps[this.api];
|
||||
var pt = point.toProprietary(this.api);
|
||||
map.setCenter(pt, zoom);
|
||||
},
|
||||
|
||||
addMarker: function(marker, old) {
|
||||
var map = this.maps[this.api];
|
||||
var gpin = marker.toProprietary(this.api);
|
||||
map.addOverlay(gpin);
|
||||
|
||||
GEvent.addListener(gpin, 'infowindowopen', function() {
|
||||
marker.openInfoBubble.fire();
|
||||
});
|
||||
GEvent.addListener(gpin, 'infowindowclose', function() {
|
||||
marker.closeInfoBubble.fire();
|
||||
});
|
||||
return gpin;
|
||||
},
|
||||
|
||||
removeMarker: function(marker) {
|
||||
var map = this.maps[this.api];
|
||||
map.removeOverlay(marker.proprietary_marker);
|
||||
},
|
||||
|
||||
removeAllMarkers: function() {
|
||||
var map = this.maps[this.api];
|
||||
// FIXME: got a feeling this doesn't only delete markers
|
||||
map.clearOverlays();
|
||||
},
|
||||
|
||||
declutterMarkers: function(opts) {
|
||||
throw 'Not implemented';
|
||||
},
|
||||
|
||||
addPolyline: function(polyline, old) {
|
||||
var map = this.maps[this.api];
|
||||
gpolyline = polyline.toProprietary(this.api);
|
||||
map.addOverlay(gpolyline);
|
||||
return gpolyline;
|
||||
},
|
||||
|
||||
removePolyline: function(polyline) {
|
||||
var map = this.maps[this.api];
|
||||
map.removeOverlay(polyline.proprietary_polyline);
|
||||
},
|
||||
|
||||
getCenter: function() {
|
||||
var map = this.maps[this.api];
|
||||
var pt = map.getCenter();
|
||||
var point = new mxn.LatLonPoint(pt.lat(),pt.lng());
|
||||
return point;
|
||||
},
|
||||
|
||||
setCenter: function(point, options) {
|
||||
var map = this.maps[this.api];
|
||||
var pt = point.toProprietary(this.api);
|
||||
if(options && options.pan) {
|
||||
map.panTo(pt);
|
||||
}
|
||||
else {
|
||||
map.setCenter(pt);
|
||||
}
|
||||
},
|
||||
|
||||
setZoom: function(zoom) {
|
||||
var map = this.maps[this.api];
|
||||
map.setZoom(zoom);
|
||||
},
|
||||
|
||||
getZoom: function() {
|
||||
var map = this.maps[this.api];
|
||||
return map.getZoom();
|
||||
},
|
||||
|
||||
getZoomLevelForBoundingBox: function( bbox ) {
|
||||
var map = this.maps[this.api];
|
||||
// NE and SW points from the bounding box.
|
||||
var ne = bbox.getNorthEast();
|
||||
var sw = bbox.getSouthWest();
|
||||
var gbox = new GLatLngBounds( sw.toProprietary(this.api), ne.toProprietary(this.api) );
|
||||
var zoom = map.getBoundsZoomLevel( gbox );
|
||||
return zoom;
|
||||
},
|
||||
|
||||
setMapType: function(type) {
|
||||
var map = this.maps[this.api];
|
||||
switch(type) {
|
||||
case mxn.Mapstraction.ROAD:
|
||||
map.setMapType(G_NORMAL_MAP);
|
||||
break;
|
||||
case mxn.Mapstraction.SATELLITE:
|
||||
map.setMapType(G_SATELLITE_MAP);
|
||||
break;
|
||||
case mxn.Mapstraction.HYBRID:
|
||||
map.setMapType(G_HYBRID_MAP);
|
||||
break;
|
||||
default:
|
||||
map.setMapType(type || G_NORMAL_MAP);
|
||||
}
|
||||
},
|
||||
|
||||
getMapType: function() {
|
||||
var map = this.maps[this.api];
|
||||
var type = map.getCurrentMapType();
|
||||
switch(type) {
|
||||
case G_NORMAL_MAP:
|
||||
return mxn.Mapstraction.ROAD;
|
||||
case G_SATELLITE_MAP:
|
||||
return mxn.Mapstraction.SATELLITE;
|
||||
case G_HYBRID_MAP:
|
||||
return mxn.Mapstraction.HYBRID;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
getBounds: function () {
|
||||
var map = this.maps[this.api];
|
||||
var ne, sw, nw, se;
|
||||
var gbox = map.getBounds();
|
||||
sw = gbox.getSouthWest();
|
||||
ne = gbox.getNorthEast();
|
||||
return new mxn.BoundingBox(sw.lat(), sw.lng(), ne.lat(), ne.lng());
|
||||
},
|
||||
|
||||
setBounds: function(bounds){
|
||||
var map = this.maps[this.api];
|
||||
var sw = bounds.getSouthWest();
|
||||
var ne = bounds.getNorthEast();
|
||||
var gbounds = new GLatLngBounds(new GLatLng(sw.lat,sw.lon),new GLatLng(ne.lat,ne.lon));
|
||||
map.setCenter(gbounds.getCenter(), map.getBoundsZoomLevel(gbounds));
|
||||
},
|
||||
|
||||
addImageOverlay: function(id, src, opacity, west, south, east, north, oContext) {
|
||||
var map = this.maps[this.api];
|
||||
map.getPane(G_MAP_MAP_PANE).appendChild(oContext.imgElm);
|
||||
this.setImageOpacity(id, opacity);
|
||||
this.setImagePosition(id);
|
||||
GEvent.bind(map, "zoomend", this, function() {
|
||||
this.setImagePosition(id);
|
||||
});
|
||||
GEvent.bind(map, "moveend", this, function() {
|
||||
this.setImagePosition(id);
|
||||
});
|
||||
},
|
||||
|
||||
setImagePosition: function(id, oContext) {
|
||||
var map = this.maps[this.api];
|
||||
var topLeftPoint; var bottomRightPoint;
|
||||
|
||||
topLeftPoint = map.fromLatLngToDivPixel( new GLatLng(oContext.latLng.top, oContext.latLng.left) );
|
||||
bottomRightPoint = map.fromLatLngToDivPixel( new GLatLng(oContext.latLng.bottom, oContext.latLng.right) );
|
||||
|
||||
oContext.pixels.top = topLeftPoint.y;
|
||||
oContext.pixels.left = topLeftPoint.x;
|
||||
oContext.pixels.bottom = bottomRightPoint.y;
|
||||
oContext.pixels.right = bottomRightPoint.x;
|
||||
},
|
||||
|
||||
addOverlay: function(url, autoCenterAndZoom) {
|
||||
var map = this.maps[this.api];
|
||||
var geoXML = new GGeoXml(url);
|
||||
map.addOverlay(geoXML, function() {
|
||||
if(autoCenterAndZoom) {
|
||||
geoXML.gotoDefaultViewport(map);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
addTileLayer: function(tile_url, opacity, copyright_text, min_zoom, max_zoom, map_type) {
|
||||
var copyright = new GCopyright(1, new GLatLngBounds(new GLatLng(-90,-180), new GLatLng(90,180)), 0, "copyleft");
|
||||
var copyrightCollection = new GCopyrightCollection(copyright_text);
|
||||
copyrightCollection.addCopyright(copyright);
|
||||
var tilelayers = [];
|
||||
tilelayers[0] = new GTileLayer(copyrightCollection, min_zoom, max_zoom);
|
||||
tilelayers[0].isPng = function() {
|
||||
return true;
|
||||
};
|
||||
tilelayers[0].getOpacity = function() {
|
||||
return opacity;
|
||||
};
|
||||
tilelayers[0].getTileUrl = function (a, b) {
|
||||
url = tile_url;
|
||||
url = url.replace(/\{Z\}/g,b);
|
||||
url = url.replace(/\{X\}/g,a.x);
|
||||
url = url.replace(/\{Y\}/g,a.y);
|
||||
return url;
|
||||
};
|
||||
if(map_type) {
|
||||
var tileLayerOverlay = new GMapType(tilelayers, new GMercatorProjection(19), copyright_text, {
|
||||
errorMessage:"More "+copyright_text+" tiles coming soon"
|
||||
});
|
||||
this.maps[this.api].addMapType(tileLayerOverlay);
|
||||
} else {
|
||||
tileLayerOverlay = new GTileLayerOverlay(tilelayers[0]);
|
||||
this.maps[this.api].addOverlay(tileLayerOverlay);
|
||||
}
|
||||
this.tileLayers.push( [tile_url, tileLayerOverlay, true] );
|
||||
return tileLayerOverlay;
|
||||
},
|
||||
|
||||
toggleTileLayer: function(tile_url) {
|
||||
for (var f=0; f<this.tileLayers.length; f++) {
|
||||
if(this.tileLayers[f][0] == tile_url) {
|
||||
if(this.tileLayers[f][2]) {
|
||||
this.maps[this.api].removeOverlay(this.tileLayers[f][1]);
|
||||
this.tileLayers[f][2] = false;
|
||||
}
|
||||
else {
|
||||
this.maps[this.api].addOverlay(this.tileLayers[f][1]);
|
||||
this.tileLayers[f][2] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
getPixelRatio: function() {
|
||||
var map = this.maps[this.api];
|
||||
|
||||
var projection = G_NORMAL_MAP.getProjection();
|
||||
var centerPoint = map.getCenter();
|
||||
var zoom = map.getZoom();
|
||||
var centerPixel = projection.fromLatLngToPixel(centerPoint, zoom);
|
||||
// distance is the distance in metres for 5 pixels (3-4-5 triangle)
|
||||
var distancePoint = projection.fromPixelToLatLng(new GPoint(centerPixel.x + 3, centerPixel.y + 4), zoom);
|
||||
//*1000(km to m), /5 (pythag), *2 (radius to diameter)
|
||||
return 10000/distancePoint.distanceFrom(centerPoint);
|
||||
|
||||
},
|
||||
|
||||
mousePosition: function(element) {
|
||||
var locDisp = document.getElementById(element);
|
||||
if (locDisp !== null) {
|
||||
var map = this.maps[this.api];
|
||||
GEvent.addListener(map, 'mousemove', function (point) {
|
||||
var loc = point.lat().toFixed(4) + ' / ' + point.lng().toFixed(4);
|
||||
locDisp.innerHTML = loc;
|
||||
});
|
||||
locDisp.innerHTML = '0.0000 / 0.0000';
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
LatLonPoint: {
|
||||
|
||||
toProprietary: function() {
|
||||
return new GLatLng(this.lat,this.lon);
|
||||
},
|
||||
|
||||
fromProprietary: function(googlePoint) {
|
||||
this.lat = googlePoint.lat();
|
||||
this.lon = googlePoint.lng();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Marker: {
|
||||
|
||||
toProprietary: function() {
|
||||
var infoBubble, event_action, infoDiv, div;
|
||||
var options = {};
|
||||
if(this.labelText){
|
||||
options.title = this.labelText;
|
||||
}
|
||||
if(this.iconUrl){
|
||||
var icon = new GIcon(G_DEFAULT_ICON, this.iconUrl);
|
||||
icon.printImage = icon.mozPrintImage = icon.image;
|
||||
if(this.iconSize) {
|
||||
icon.iconSize = new GSize(this.iconSize[0], this.iconSize[1]);
|
||||
var anchor;
|
||||
if(this.iconAnchor) {
|
||||
anchor = new GPoint(this.iconAnchor[0], this.iconAnchor[1]);
|
||||
}
|
||||
else {
|
||||
// FIXME: hard-coding the anchor point
|
||||
anchor = new GPoint(this.iconSize[0]/2, this.iconSize[1]/2);
|
||||
}
|
||||
icon.iconAnchor = anchor;
|
||||
}
|
||||
if(typeof(this.iconShadowUrl) != 'undefined') {
|
||||
icon.shadow = this.iconShadowUrl;
|
||||
if(this.iconShadowSize) {
|
||||
icon.shadowSize = new GSize(this.iconShadowSize[0], this.iconShadowSize[1]);
|
||||
}
|
||||
} else { // turn off shadow
|
||||
icon.shadow = '';
|
||||
icon.shadowSize = '';
|
||||
}
|
||||
if(this.transparent) {
|
||||
icon.transparent = this.transparent;
|
||||
}
|
||||
if(this.imageMap) {
|
||||
icon.imageMap = this.imageMap;
|
||||
}
|
||||
options.icon = icon;
|
||||
}
|
||||
if(this.draggable){
|
||||
options.draggable = this.draggable;
|
||||
}
|
||||
var gmarker = new GMarker( this.location.toProprietary('google'),options);
|
||||
|
||||
if(this.infoBubble){
|
||||
infoBubble = this.infoBubble;
|
||||
if(this.hover) {
|
||||
event_action = "mouseover";
|
||||
}
|
||||
else {
|
||||
event_action = "click";
|
||||
}
|
||||
GEvent.addListener(gmarker, event_action, function() {
|
||||
gmarker.openInfoWindowHtml(infoBubble, {
|
||||
maxWidth: 100
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
if(this.hoverIconUrl){
|
||||
GEvent.addListener(gmarker, "mouseover", function() {
|
||||
gmarker.setImage(this.hoverIconUrl);
|
||||
});
|
||||
GEvent.addListener(gmarker, "mouseout", function() {
|
||||
gmarker.setImage(this.iconUrl);
|
||||
});
|
||||
}
|
||||
|
||||
if(this.infoDiv){
|
||||
infoDiv = this.infoDiv;
|
||||
div = this.div;
|
||||
if(this.hover) {
|
||||
event_action = "mouseover";
|
||||
}
|
||||
else {
|
||||
event_action = "click";
|
||||
}
|
||||
GEvent.addListener(gmarker, event_action, function() {
|
||||
document.getElementById(div).innerHTML = infoDiv;
|
||||
});
|
||||
}
|
||||
|
||||
return gmarker;
|
||||
},
|
||||
|
||||
openBubble: function() {
|
||||
var gpin = this.proprietary_marker;
|
||||
gpin.openInfoWindowHtml(this.infoBubble);
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
this.proprietary_marker.hide();
|
||||
},
|
||||
|
||||
show: function() {
|
||||
this.proprietary_marker.show();
|
||||
},
|
||||
|
||||
update: function() {
|
||||
point = new mxn.LatLonPoint();
|
||||
point.fromGoogle(this.proprietary_marker.getPoint());
|
||||
this.location = point;
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Polyline: {
|
||||
|
||||
toProprietary: function() {
|
||||
var gpoints = [];
|
||||
for (var i = 0, length = this.points.length ; i< length; i++){
|
||||
gpoints.push(this.points[i].toProprietary('google'));
|
||||
}
|
||||
if (this.closed || gpoints[0].equals(gpoints[length-1])) {
|
||||
return new GPolygon(gpoints, this.color, this.width, this.opacity, this.fillColor || "#5462E3", this.opacity || "0.3");
|
||||
} else {
|
||||
return new GPolyline(gpoints, this.color, this.width, this.opacity);
|
||||
}
|
||||
},
|
||||
|
||||
show: function() {
|
||||
throw 'Not implemented';
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
throw 'Not implemented';
|
||||
}
|
||||
}
|
||||
|
||||
});
|
@ -1,179 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2007, Andrew Turner
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
* Neither the name of the Mapstraction nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
|
||||
// Use http://jsdoc.sourceforge.net/ to generate documentation
|
||||
|
||||
// TODO: add reverse geocoding support
|
||||
|
||||
/**
|
||||
* MapstractionGeocoder instantiates a geocoder with some API choice
|
||||
* @param {Function} callback The function to call when a geocode request returns (function(waypoint))
|
||||
* @param {String} api The API to use, currently only 'mapquest' is supported
|
||||
* @param {Function} error_callback The optional function to call when a geocode request fails
|
||||
* @constructor
|
||||
*/
|
||||
function MapstractionGeocoder(callback, api, error_callback) {
|
||||
this.api = api;
|
||||
this.callback = callback;
|
||||
this.geocoders = new Object();
|
||||
if(error_callback == null) {
|
||||
this.error_callback = this.geocode_error
|
||||
} else {
|
||||
this.error_callback = error_callback;
|
||||
}
|
||||
|
||||
// This is so that it is easy to tell which revision of this file
|
||||
// has been copied into other projects.
|
||||
this.svn_revision_string = '$Revision: 107 $';
|
||||
|
||||
this.addAPI(api);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Internal function to actually set the router specific parameters
|
||||
*/
|
||||
MapstractionGeocoder.prototype.addAPI = function(api) {
|
||||
|
||||
me = this;
|
||||
switch (api) {
|
||||
case 'google':
|
||||
this.geocoders[api] = new GClientGeocoder();
|
||||
break;
|
||||
case 'mapquest':
|
||||
//set up the connection to the geocode server
|
||||
var proxyServerName = "";
|
||||
var proxyServerPort = "";
|
||||
var ProxyServerPath = "mapquest_proxy/JSReqHandler.php";
|
||||
|
||||
var serverName = "geocode.access.mapquest.com";
|
||||
var serverPort = "80";
|
||||
var serverPath = "mq";
|
||||
this.geocoders[api] = new MQExec(serverName, serverPath, serverPort, proxyServerName,
|
||||
ProxyServerPath, proxyServerPort );
|
||||
|
||||
break;
|
||||
default:
|
||||
alert(api + ' not supported by mapstraction-geocoder');
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Change the Routing API to use
|
||||
* @param {String} api The API to swap to
|
||||
*/
|
||||
MapstractionGeocoder.prototype.swap = function(api) {
|
||||
if (this.api == api) { return; }
|
||||
|
||||
this.api = api;
|
||||
if (this.geocoders[this.api] == undefined) {
|
||||
this.addAPI($(element),api);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Default Geocode error function
|
||||
*/
|
||||
MapstractionGeocoder.prototype.geocode_error = function(response) {
|
||||
alert("Sorry, we were unable to geocode that address");
|
||||
}
|
||||
|
||||
/**
|
||||
* Default handler for geocode request completion
|
||||
*/
|
||||
MapstractionGeocoder.prototype.geocode_callback = function(response, mapstraction_geocoder) {
|
||||
var return_location = new Object();
|
||||
|
||||
// TODO: what if the api is switched during a geocode request?
|
||||
// TODO: provide an option error callback
|
||||
switch (mapstraction_geocoder.api) {
|
||||
case 'google':
|
||||
if (!response || response.Status.code != 200) {
|
||||
mapstraction_geocoder.error_callback(response);
|
||||
} else {
|
||||
return_location.street = "";
|
||||
return_location.locality = "";
|
||||
return_location.region = "";
|
||||
return_location.country = "";
|
||||
|
||||
var place = response.Placemark[0];
|
||||
if(place.AddressDetails.Country.AdministrativeArea != null) {
|
||||
return_location.region = place.AddressDetails.Country.AdministrativeArea.AdministrativeAreaName;
|
||||
|
||||
if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea != null) {
|
||||
if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality != null) {
|
||||
return_location.locality = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName;
|
||||
|
||||
if(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare != null)
|
||||
return_location.street = place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.Thoroughfare.ThoroughfareName;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
return_location.country = place.AddressDetails.Country.CountryNameCode;
|
||||
return_location.address = place.address;
|
||||
|
||||
return_location.point = new mxn.LatLonPoint(place.Point.coordinates[1],
|
||||
place.Point.coordinates[0]);
|
||||
mapstraction_geocoder.callback(return_location);
|
||||
}
|
||||
break;
|
||||
case 'mapquest':
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Performs a geocoding and then calls the specified callback function with the location
|
||||
* @param {Object} address The address object to geocode
|
||||
*/
|
||||
MapstractionGeocoder.prototype.geocode = function(address) {
|
||||
var return_location = new Object();
|
||||
|
||||
// temporary variable for later using in function closure
|
||||
var mapstraction_geocoder = this;
|
||||
|
||||
switch (this.api) {
|
||||
case 'google':
|
||||
if (address.address == null || address.address == "")
|
||||
address.address = address.street + ", " + address.locality + ", " + address.region + ", " + address.country
|
||||
this.geocoders[this.api].getLocations(address.address, function(response) { mapstraction_geocoder.geocode_callback(response, mapstraction_geocoder); });
|
||||
break;
|
||||
case 'mapquest':
|
||||
var mqaddress = new MQAddress();
|
||||
var gaCollection = new MQLocationCollection("MQGeoAddress");
|
||||
//populate the address object with the information from the form
|
||||
mqaddress.setStreet(address.street);
|
||||
mqaddress.setCity(address.locality);
|
||||
mqaddress.setState(address.region);
|
||||
mqaddress.setPostalCode(address.postalcode);
|
||||
mqaddress.setCountry(address.country);
|
||||
|
||||
this.geocoders[this.api].geocode(mqaddress, gaCollection);
|
||||
var geoAddr = gaCollection.get(0);
|
||||
var mqpoint = geoAddr.getMQLatLng();
|
||||
return_location.street = geoAddr.getStreet();
|
||||
return_location.locality = geoAddr.getCity();
|
||||
return_location.region = geoAddr.getState();
|
||||
return_location.country = geoAddr.getCountry();
|
||||
return_location.point = new mxn.LatLonPoint(mqpoint.getLatitude(), mqpoint.getLongitude());
|
||||
this.callback(return_location, this);
|
||||
break;
|
||||
default:
|
||||
alert(api + ' not supported by mapstraction-geocoder');
|
||||
break;
|
||||
}
|
||||
}
|
@ -1,443 +0,0 @@
|
||||
mxn.register('googlev3', {
|
||||
|
||||
Mapstraction: {
|
||||
|
||||
init: function(element, api){
|
||||
var me = this;
|
||||
if ( google && google.maps ){
|
||||
// by default no controls and road map
|
||||
var myOptions = {
|
||||
disableDefaultUI: true,
|
||||
mapTypeId: google.maps.MapTypeId.ROADMAP
|
||||
};
|
||||
var map = new google.maps.Map(element, myOptions);
|
||||
|
||||
// deal with click
|
||||
google.maps.event.addListener(map, 'click', function(location){
|
||||
me.clickHandler(location.latLng.lat(),location.latLng.lng(),location,me);
|
||||
});
|
||||
|
||||
// deal with zoom change
|
||||
google.maps.event.addListener(map, 'zoom_changed', function(){
|
||||
me.changeZoom.fire();
|
||||
});
|
||||
// deal with map movement
|
||||
google.maps.event.addListener(map, 'dragend', function(){
|
||||
me.moveendHandler(me);
|
||||
me.endPan.fire();
|
||||
});
|
||||
this.maps[api] = map;
|
||||
this.loaded[api] = true;
|
||||
me.load.fire();
|
||||
}
|
||||
else {
|
||||
alert(api + ' map script not imported');
|
||||
}
|
||||
},
|
||||
|
||||
applyOptions: function(){
|
||||
var map = this.maps[this.api];
|
||||
var myOptions = [];
|
||||
if (this.options.enableDragging) {
|
||||
myOptions.draggable = true;
|
||||
}
|
||||
if (this.options.enableScrollWheelZoom){
|
||||
myOptions.scrollwheel = true;
|
||||
}
|
||||
map.setOptions(myOptions);
|
||||
},
|
||||
|
||||
resizeTo: function(width, height){
|
||||
this.currentElement.style.width = width;
|
||||
this.currentElement.style.height = height;
|
||||
var map = this.maps[this.api];
|
||||
google.maps.event.trigger(map,'resize');
|
||||
},
|
||||
|
||||
addControls: function( args ) {
|
||||
var map = this.maps[this.api];
|
||||
// remove old controls
|
||||
|
||||
// Google has a combined zoom and pan control.
|
||||
if (args.zoom || args.pan) {
|
||||
if (args.zoom == 'large'){
|
||||
this.addLargeControls();
|
||||
} else {
|
||||
this.addSmallControls();
|
||||
}
|
||||
}
|
||||
if (args.scale){
|
||||
var myOptions = {
|
||||
scaleControl:true,
|
||||
scaleControlOptions: {style:google.maps.ScaleControlStyle.DEFAULT}
|
||||
};
|
||||
map.setOptions(myOptions);
|
||||
this.addControlsArgs.scale = true;
|
||||
}
|
||||
},
|
||||
|
||||
addSmallControls: function() {
|
||||
var map = this.maps[this.api];
|
||||
var myOptions = {
|
||||
navigationControl: true,
|
||||
navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL}
|
||||
};
|
||||
map.setOptions(myOptions);
|
||||
|
||||
this.addControlsArgs.pan = false;
|
||||
this.addControlsArgs.scale = false;
|
||||
this.addControlsArgs.zoom = 'small';
|
||||
},
|
||||
|
||||
addLargeControls: function() {
|
||||
var map = this.maps[this.api];
|
||||
var myOptions = {
|
||||
navigationControl:true,
|
||||
navigationControlOptions: {style:google.maps.NavigationControlStyle.DEFAULT}
|
||||
};
|
||||
map.setOptions(myOptions);
|
||||
this.addControlsArgs.pan = true;
|
||||
this.addControlsArgs.zoom = 'large';
|
||||
},
|
||||
|
||||
addMapTypeControls: function() {
|
||||
var map = this.maps[this.api];
|
||||
var myOptions = {
|
||||
mapTypeControl: true,
|
||||
mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DEFAULT}
|
||||
};
|
||||
map.setOptions(myOptions);
|
||||
this.addControlsArgs.map_type = true;
|
||||
},
|
||||
|
||||
setCenterAndZoom: function(point, zoom) {
|
||||
var map = this.maps[this.api];
|
||||
var pt = point.toProprietary(this.api);
|
||||
map.setCenter(pt);
|
||||
map.setZoom(zoom);
|
||||
},
|
||||
|
||||
addMarker: function(marker, old) {
|
||||
return marker.toProprietary(this.api);
|
||||
},
|
||||
|
||||
removeMarker: function(marker) {
|
||||
// doesn't really remove them, just hides them
|
||||
marker.hide();
|
||||
},
|
||||
|
||||
removeAllMarkers: function() {
|
||||
var map = this.maps[this.api];
|
||||
// TODO: Add provider code
|
||||
},
|
||||
|
||||
declutterMarkers: function(opts) {
|
||||
var map = this.maps[this.api];
|
||||
// TODO: Add provider code
|
||||
},
|
||||
|
||||
addPolyline: function(polyline, old) {
|
||||
var map = this.maps[this.api];
|
||||
return polyline.toProprietary(this.api);
|
||||
},
|
||||
|
||||
removePolyline: function(polyline) {
|
||||
var map = this.maps[this.api];
|
||||
// TODO: Add provider code
|
||||
},
|
||||
|
||||
getCenter: function() {
|
||||
var map = this.maps[this.api];
|
||||
var pt = map.getCenter();
|
||||
return new mxn.LatLonPoint(pt.lat(),pt.lng());
|
||||
},
|
||||
|
||||
setCenter: function(point, options) {
|
||||
var map = this.maps[this.api];
|
||||
var pt = point.toProprietary(this.api);
|
||||
if(options && options.pan) {
|
||||
map.panTo(pt);
|
||||
}
|
||||
else {
|
||||
map.setCenter(pt);
|
||||
}
|
||||
},
|
||||
|
||||
setZoom: function(zoom) {
|
||||
var map = this.maps[this.api];
|
||||
map.setZoom(zoom);
|
||||
},
|
||||
|
||||
getZoom: function() {
|
||||
var map = this.maps[this.api];
|
||||
return map.getZoom();
|
||||
},
|
||||
|
||||
getZoomLevelForBoundingBox: function( bbox ) {
|
||||
var map = this.maps[this.api];
|
||||
var sw = bbox.getSouthWest().toProprietary(this.api);
|
||||
var ne = bbox.getNorthEast().toProprietary(this.api);
|
||||
var gLatLngBounds = new google.maps.LatLngBounds(sw, ne);
|
||||
map.fitBounds(gLatLngBounds);
|
||||
return map.getZoom();
|
||||
},
|
||||
|
||||
setMapType: function(type) {
|
||||
var map = this.maps[this.api];
|
||||
switch(type) {
|
||||
case mxn.Mapstraction.ROAD:
|
||||
map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
|
||||
break;
|
||||
case mxn.Mapstraction.SATELLITE:
|
||||
map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
|
||||
break;
|
||||
case mxn.Mapstraction.HYBRID:
|
||||
map.setMapTypeId(google.maps.MapTypeId.HYBRID);
|
||||
break;
|
||||
default:
|
||||
map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
|
||||
}
|
||||
},
|
||||
|
||||
getMapType: function() {
|
||||
var map = this.maps[this.api];
|
||||
var type = map.getMapTypeId();
|
||||
switch(type) {
|
||||
case google.maps.MapTypeId.ROADMAP:
|
||||
return mxn.Mapstraction.ROAD;
|
||||
case google.maps.MapTypeId.SATELLITE:
|
||||
return mxn.Mapstraction.SATELLITE;
|
||||
case google.maps.MapTypeId.HYBRID:
|
||||
return mxn.Mapstraction.HYBRID;
|
||||
//case google.maps.MapTypeId.TERRAIN:
|
||||
// return something;
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
},
|
||||
|
||||
getBounds: function () {
|
||||
var map = this.maps[this.api];
|
||||
var gLatLngBounds = map.getBounds();
|
||||
var sw = gLatLngBounds.getSouthWest();
|
||||
var ne = gLatLngBounds.getNorthEast();
|
||||
return new mxn.BoundingBox(sw.lat(), sw.lng(), ne.lat(), ne.lng());
|
||||
},
|
||||
|
||||
setBounds: function(bounds){
|
||||
var map = this.maps[this.api];
|
||||
var sw = bounds.getSouthWest().toProprietary(this.api);
|
||||
var ne = bounds.getNorthEast().toProprietary(this.api);
|
||||
var gLatLngBounds = new google.maps.LatLngBounds(sw, ne);
|
||||
map.fitBounds(gLatLngBounds);
|
||||
},
|
||||
|
||||
addImageOverlay: function(id, src, opacity, west, south, east, north, oContext) {
|
||||
var map = this.maps[this.api];
|
||||
|
||||
// TODO: Add provider code
|
||||
},
|
||||
|
||||
setImagePosition: function(id, oContext) {
|
||||
var map = this.maps[this.api];
|
||||
var topLeftPoint; var bottomRightPoint;
|
||||
|
||||
// TODO: Add provider code
|
||||
|
||||
//oContext.pixels.top = ...;
|
||||
//oContext.pixels.left = ...;
|
||||
//oContext.pixels.bottom = ...;
|
||||
//oContext.pixels.right = ...;
|
||||
},
|
||||
|
||||
addOverlay: function(url, autoCenterAndZoom) {
|
||||
var map = this.maps[this.api];
|
||||
|
||||
// TODO: Add provider code
|
||||
|
||||
},
|
||||
|
||||
addTileLayer: function(tile_url, opacity, copyright_text, min_zoom, max_zoom, map_type) {
|
||||
var map = this.maps[this.api];
|
||||
|
||||
// TODO: Add provider code
|
||||
},
|
||||
|
||||
toggleTileLayer: function(tile_url) {
|
||||
var map = this.maps[this.api];
|
||||
|
||||
// TODO: Add provider code
|
||||
},
|
||||
|
||||
getPixelRatio: function() {
|
||||
var map = this.maps[this.api];
|
||||
|
||||
// TODO: Add provider code
|
||||
},
|
||||
|
||||
mousePosition: function(element) {
|
||||
var map = this.maps[this.api];
|
||||
|
||||
// TODO: Add provider code
|
||||
}
|
||||
},
|
||||
|
||||
LatLonPoint: {
|
||||
|
||||
toProprietary: function() {
|
||||
return new google.maps.LatLng(this.lat, this.lon);
|
||||
},
|
||||
|
||||
fromProprietary: function(googlePoint) {
|
||||
this.lat = googlePoint.lat();
|
||||
this.lon = googlePoint.lng();
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Marker: {
|
||||
|
||||
toProprietary: function() {
|
||||
var options = {};
|
||||
|
||||
// do we have an Anchor?
|
||||
var ax = 0; // anchor x
|
||||
var ay = 0; // anchor y
|
||||
|
||||
if (this.iconAnchor) {
|
||||
ax = this.iconAnchor[0];
|
||||
ay = this.iconAnchor[1];
|
||||
}
|
||||
var gAnchorPoint = new google.maps.Point(ax,ay);
|
||||
|
||||
if (this.iconUrl) {
|
||||
options.icon = new google.maps.MarkerImage(
|
||||
this.iconUrl,
|
||||
new google.maps.Size(this.iconSize[0],
|
||||
this.iconSize[1]),
|
||||
new google.maps.Point(0,0),
|
||||
gAnchorPoint
|
||||
);
|
||||
|
||||
// do we have a Shadow?
|
||||
if (this.iconShadowUrl) {
|
||||
if (this.iconShadowSize) {
|
||||
var x = this.iconShadowSize[0];
|
||||
var y = this.iconShadowSize[1];
|
||||
options.shadow = new google.maps.MarkerImage(
|
||||
this.iconShadowUrl,
|
||||
new google.maps.Size(x,y),
|
||||
new google.maps.Point(0,0),
|
||||
gAnchorPoint
|
||||
);
|
||||
}
|
||||
else {
|
||||
options.shadow = new google.maps.MarkerImage(this.iconShadowUrl);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.draggable){
|
||||
options.draggable = this.draggable;
|
||||
}
|
||||
if (this.labelText){
|
||||
options.title = this.labelText;
|
||||
}
|
||||
if (this.imageMap){
|
||||
options.shape = {
|
||||
coord: this.imageMap,
|
||||
type: 'poly'
|
||||
};
|
||||
}
|
||||
|
||||
options.position = this.location.toProprietary(this.api);
|
||||
options.map = this.map;
|
||||
|
||||
var marker = new google.maps.Marker(options);
|
||||
|
||||
if (this.infoBubble){
|
||||
var infowindow = new google.maps.InfoWindow({
|
||||
content: this.infoBubble
|
||||
});
|
||||
|
||||
var event_action = "click";
|
||||
if (this.hover) {
|
||||
event_action = "mouseover";
|
||||
}
|
||||
google.maps.event.addListener(marker, event_action, function() { infowindow.open(this.map,marker); });
|
||||
}
|
||||
|
||||
if (this.hoverIconUrl){
|
||||
var gSize = new google.maps.Size(this.iconSize[0],
|
||||
this.iconSize[1]);
|
||||
var zerozero = new google.maps.Point(0,0);
|
||||
var hIcon = new google.maps.MarkerImage(
|
||||
this.hoverIconUrl,
|
||||
gSize,
|
||||
zerozero,
|
||||
gAnchorPoint
|
||||
);
|
||||
var Icon = new google.maps.MarkerImage(
|
||||
this.iconUrl,
|
||||
gSize,
|
||||
zerozero,
|
||||
gAnchorPoint
|
||||
);
|
||||
google.maps.event.addListener(
|
||||
marker,
|
||||
"mouseover",
|
||||
function(){
|
||||
marker.setIcon(hIcon);
|
||||
}
|
||||
);
|
||||
google.maps.event.addListener(
|
||||
marker,
|
||||
"mouseout",
|
||||
function(){ marker.setIcon(Icon); }
|
||||
);
|
||||
}
|
||||
|
||||
google.maps.event.addListener(marker, 'click', function() {
|
||||
marker.mapstraction_marker.click.fire();
|
||||
});
|
||||
|
||||
return marker;
|
||||
},
|
||||
|
||||
openBubble: function() {
|
||||
var infowindow = new google.maps.InfoWindow({
|
||||
content: this.infoBubble
|
||||
});
|
||||
infowindow.open(this.map,this.proprietary_marker);
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
this.proprietary_marker.setOptions({visible:false});
|
||||
},
|
||||
|
||||
show: function() {
|
||||
this.proprietary_marker.setOptions({visible:true});
|
||||
},
|
||||
|
||||
update: function() {
|
||||
// TODO: Add provider code
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
Polyline: {
|
||||
|
||||
toProprietary: function() {
|
||||
throw 'Not implemented';
|
||||
},
|
||||
|
||||
show: function() {
|
||||
throw 'Not implemented';
|
||||
},
|
||||
|
||||
hide: function() {
|
||||
throw 'Not implemented';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
});
|
@ -403,29 +403,6 @@ mxn.util = {
|
||||
return miles * 1.609344;
|
||||
},
|
||||
|
||||
// stuff to convert google zoom levels to/from degrees
|
||||
// assumes zoom 0 = 256 pixels = 360 degrees
|
||||
// zoom 1 = 256 pixels = 180 degrees
|
||||
// etc.
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Object} pixels
|
||||
* @param {Object} zoom
|
||||
*/
|
||||
getDegreesFromGoogleZoomLevel: function(pixels, zoom) {
|
||||
return (360 * pixels) / (Math.pow(2, zoom + 8));
|
||||
},
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Object} pixels
|
||||
* @param {Object} degrees
|
||||
*/
|
||||
getGoogleZoomLevelFromDegrees: function(pixels, degrees) {
|
||||
return mxn.util.logN((360 * pixels) / degrees, 2) - 8;
|
||||
},
|
||||
|
||||
/**
|
||||
*
|
||||
* @param {Object} number
|
||||
|
@ -250,40 +250,12 @@ mxn.register('openlayers', {
|
||||
setMapType: function(type) {
|
||||
var map = this.maps[this.api];
|
||||
throw 'Not implemented (setMapType)';
|
||||
|
||||
// switch(type) {
|
||||
// case mxn.Mapstraction.ROAD:
|
||||
// map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
|
||||
// break;
|
||||
// case mxn.Mapstraction.SATELLITE:
|
||||
// map.setMapTypeId(google.maps.MapTypeId.SATELLITE);
|
||||
// break;
|
||||
// case mxn.Mapstraction.HYBRID:
|
||||
// map.setMapTypeId(google.maps.MapTypeId.HYBRID);
|
||||
// break;
|
||||
// default:
|
||||
// map.setMapTypeId(google.maps.MapTypeId.ROADMAP);
|
||||
// }
|
||||
},
|
||||
|
||||
getMapType: function() {
|
||||
var map = this.maps[this.api];
|
||||
// TODO: implement actual layer support
|
||||
return mxn.Mapstraction.ROAD;
|
||||
|
||||
// var type = map.getMapTypeId();
|
||||
// switch(type) {
|
||||
// case google.maps.MapTypeId.ROADMAP:
|
||||
// return mxn.Mapstraction.ROAD;
|
||||
// case google.maps.MapTypeId.SATELLITE:
|
||||
// return mxn.Mapstraction.SATELLITE;
|
||||
// case google.maps.MapTypeId.HYBRID:
|
||||
// return mxn.Mapstraction.HYBRID;
|
||||
// //case google.maps.MapTypeId.TERRAIN:
|
||||
// // return something;
|
||||
// default:
|
||||
// return null;
|
||||
// }
|
||||
},
|
||||
|
||||
getBounds: function () {
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user