108 lines
3.7 KiB
PHP
108 lines
3.7 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @package Advanced Custom Fields
|
|
* @version 2.8.8 Pro
|
|
*
|
|
* @author Tassos Marinos <info@tassos.gr>
|
|
* @link http://www.tassos.gr
|
|
* @copyright Copyright © 2024 Tassos Marinos All Rights Reserved
|
|
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
|
|
*/
|
|
|
|
// No direct access to this file
|
|
defined('_JEXEC') or die;
|
|
|
|
use Joomla\CMS\Form\FormField;
|
|
use Joomla\CMS\Session\Session;
|
|
use Joomla\CMS\Factory;
|
|
use Joomla\CMS\Uri\Uri;
|
|
use NRFramework\User;
|
|
|
|
class JFormFieldTG_Lookup extends FormField
|
|
{
|
|
/**
|
|
* GeoIP Class
|
|
*
|
|
* @var object
|
|
*/
|
|
private $geoIP;
|
|
|
|
/**
|
|
* Method to render the input field
|
|
*
|
|
* @return string
|
|
*/
|
|
public function getInput()
|
|
{
|
|
// JavaScript
|
|
$ajaxURL = Uri::base() . 'index.php?option=com_ajax&format=raw&plugin=tgeoip&task=get&' . Session::getFormToken() . '=1';
|
|
|
|
Factory::getDocument()->addScriptDeclaration('
|
|
document.addEventListener("DOMContentLoaded", function() {
|
|
document.addEventListener("click", function(e) {
|
|
var btn = e.target.closest(".tGeoIPtest button");
|
|
if (!btn) {
|
|
return;
|
|
}
|
|
|
|
e.preventDefault();
|
|
|
|
ip = document.querySelector(".tGeoIPtest input").value;
|
|
|
|
if (!ip) {
|
|
alert("Please enter a valid IP address");
|
|
return false;
|
|
}
|
|
|
|
var data = new FormData();
|
|
data.append("ip", ip);
|
|
|
|
fetch("' . $ajaxURL . '",
|
|
{
|
|
method: "POST",
|
|
body: data
|
|
})
|
|
.then(function(res){ return res.json(); })
|
|
.then(function(response){
|
|
if (response) {
|
|
if (response.continent) {
|
|
document.querySelector(".tGeoIPtest .continent").innerHTML = response.continent.names.en;
|
|
}
|
|
|
|
if (response.city) {
|
|
document.querySelector(".tGeoIPtest .city").innerHTML = response.city.names.en;
|
|
}
|
|
|
|
if (response.country) {
|
|
document.querySelector(".tGeoIPtest .country").innerHTML = response.country.names.en;
|
|
document.querySelector(".tGeoIPtest .country_code").innerHTML = response.country.iso_code;
|
|
}
|
|
|
|
document.querySelector(".tGeoIPtest .results").style.display = "block";
|
|
} else {
|
|
alert("Invalid IP address");
|
|
document.querySelector(".tGeoIPtest .results").style.display = "none";
|
|
}
|
|
})
|
|
|
|
return false;
|
|
})
|
|
});
|
|
');
|
|
|
|
// HTML
|
|
$ip = User::getIP();
|
|
|
|
return '<div class="tGeoIPtest">
|
|
<input class="form-control input-medium" type="text" value="' . $ip . '"/>
|
|
<button class="btn btn-outline-secondary">Lookup</button>
|
|
<ul class="results" style="margin-top:20px; display:none;">
|
|
<li>Continent: <span class="continent"></span></li>
|
|
<li>Country: <span class="country"></span></li>
|
|
<li>Country Code: <span class="country_code"></span></li>
|
|
<li>City: <span class="city"></span></li>
|
|
<ul>
|
|
</div>';
|
|
}
|
|
} |