Roy Keane phấn khích khi Harwood-Bellis lập công
Rạng sáng nay, ĐT Anh chơi trận đấu cuối cùng của bảng B2 UEFA Nations League. Đây cũng là trận đấu Tam Sư chia tay HLV tạm quyền Lee Carsley trước khi tân HLV Thomas Tuchel chính thức cầm quân.
Do ĐT Anh đã chắc chắn giành quyền thăng hạng lên nhóm A vào mùa sau với tư cách đội đầu bảng B2 nên HLV Lee Carsley đã thử nghiệm khá nhiều về nhân sự. Đáng chú ý, trung vệ trẻ Taylor Harwood-Bellis (đang khoác áo Southampton chơi tại Premier League) đã được tung vào sân từ ghế dự bị. Đặc biệt hơn, cầu thủ này còn ghi bàn vào lưới CH Ireland, góp công lớn vào chiến thắng 5-0 của ĐT Anh.
Roy Keane là bố vợ tương lai của Taylor Harwood-Bellis khi cô con gái Leah của ông đã đính hôn với cầu thủ này. Ảnh: Cork Beo
Sau ghi có bàn thắng đầu tiên trong màu áo ĐT Anh, Harwood-Bellis đã không che giấu niềm vui sướng tột độ. Cựu thủ quân của U21 Anh đoạt chức vô địch U21 châu Âu 2023 đã ăn mừng đầy cảm xúc và thể hiện trạng thái vô cùng phấn khích.
Nếu là bất cứ ai ở ĐT Anh ghi bàn thì có lẽ không có chuyện gì quá đặc biệt, nhất là với cựu tiền vệ Roy Keane. Nhưng chi tiết rất đáng chú ý là Harwood-Bellis vừa công khai việc đính hôn với con gái cưng của Roy Keane là Leah. Với tư cách là cựu tuyển thủ CH Ireland với 67 trận ra sân cho đội tuyển này, đương nhiên phản ứng của Roy Keane lập tức được quan tâm sau khi Harwood-Bellis ghi bàn.
Ngay lập tức, Roy Keane nhận định về mặt chuyên môn: “Được đá trận ra mắt và ngay lập tức ghi bàn là điều tuyệt vời. Cậu ấy là một chàng trai tốt, đến từ một gia đình rất đáng tôn trọng”. Tuy nhiên, Roy Keane cũng đùa thêm với cậu con rể tương lai rằng: “Gia đình Keane thay đổi nhanh lắm, chưa chắc chắn điều gì đâu nhé”.
Roy Keane hẳn rất hãnh diện khi có cậu con rể tương lai tài năng như Harwood-Bellis. Ảnh: Irish Mirror
Việc “thay đổi nhanh lắm” mà Roy Keane đề cập đến đương nhiên là đám cưới giữa con gái cưng Leah của ông với cậu con rể tương lai Harwood-Bellis. Đây là chi tiết được rất nhiều người hâm mộ thích thú bởi khi còn thi đấu cũng như lúc chuyển sang nghề HLV rồi bình luận viên, Roy Keane luôn tỏ ra rất nghiêm nghị và ít khi cười đùa.
Trêu Harwood-Bellis như vậy nhưng thực lòng thì Roy Keane chắc chắn rất hãnh diện. Có một cậu con rể tương lai vừa trẻ tuổi, vừa tài năng và có tương lai sự nghiệp đầy hứa hẹn như vậy, Roy Keane có thể yên tâm gửi gắm con gái của mình cho cầu thủ của ĐT Anh. Bản thân Harwood-Bellis cũng dành những lời có cánh cho bố vợ tương lai của mình khi khẳng định: “Ông ấy là một người rất giỏi, đầy trách nhiệm và đã đưa ra những lời khuyên bổ ích dành cho tôi”.
if (!isNotAllow3rd) { loadJsDefer('https://apis.google.com/js/platform.js?onload=onLoadGapi'); loadJsDefer('https://connect.facebook.net/vi_VN/sdk.js#xfbml=1&version=v5.0'); }
function onLoadGapi() { gapi.load('auth2', function() { gapi.load('auth2', function() { gapi.auth2.init({ client_id: '678720187862-08lendtdt5h3nr4j2he534p15b13aieg.apps.googleusercontent.com', scope: 'email profile', fetch_basic_profile: true }); }); }); }
function deleteCookie(name) { document.cookie = name + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;"; } function lgGetCookie(name) { var value = document.cookie; var start = value.indexOf(" " + name + "="); if (start == -1) { start = value.indexOf(name + "="); } if (start == -1) { value = null; } else { start = value.indexOf("=", start) + 1; var end = value.indexOf(";", start); if (end == -1) { end = value.length; } value = unescape(value.substring(start, end)); } return value; }
function lgSetCookie(name, value, date) { var cookieValue = escape(value) + ((date == null) ? "" : "; expires=" + date.toUTCString()); document.cookie = name + "=" + cookieValue; }
function authLogin(name,isLogin=false){ if (isLogin){ $('#top-link-account .first').hide(); $('#top-link-account .second').html(`${name} | Đăng xuất`); $('#top-link-account .second').attr('data-out',1);
$("#cmt-account-header .tabs .close, #cmt-account .tabs .close") .click(); $('.comment-account').html(`
`);
}else {
if (window.confirm("Bạn muốn đăng xuất?")) {
var el = $("#top-link-account");
// //el.find("a.first").html("")
// // .removeAttr("style");
el.find(".first").show();
el.find("a.second").html("");
el.find("a.second").removeAttr("data-out");
$('.comment-account').html(`
`);
deleteCookie('my_dv'); $("#_btn_logout").click(); } } }
function logout(){
if (window.confirm("Bạn muốn đăng xuất?")) {
var el = $("#top-link-account");
// //el.find("a.first").html("")
// // .removeAttr("style");
el.find(".first").show();
el.find("a.second").html("");
el.find("a.second").attr("data-out", "0");
$('.comment-account').html(`
`); deleteCookie('my_dv'); $("#_btn_logout").click(); } } function login(){ $("#_btn_logout").click(); $("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); } function register(){ $("#_btn_logout").click(); $('[data-target="signup"]').click(); fnCaptcha(); }
var aspCookie = null;
(runinit = window.runinit || []).push(function() {
if(lgGetCookie('my_dv')){ var user = JSON.parse(lgGetCookie('my_dv')); if(user.name){ authLogin(user.name, true); } }
$('.btn-refresh').click(function() { fnCaptcha(); }); $('.iconew-eye').click(function() { $(this).toggleClass('closed'); var x = $(this).siblings('input')[0]; if (x.type === "password") { x.type = "text"; } else { x.type = "password"; } });
function stripHtml(html) { var temporalDivElement = document.createElement("div"); temporalDivElement.innerHTML = html; return temporalDivElement.textContent || temporalDivElement.innerText || ""; }
// --------------------- User account // 1. Hide login/logout button -> in case API doesn't available, login/logout will not show + Init OAuth_v2 //$("#top-link-account").hide(); if (typeof gapi != "undefined") { //window._cnnd.oauth.init(); console.log("login not available"); } // 2. Remove excessive login/register form -> only 1 form available // no need // 3. Callback functions var fnPopupAction = function(id, alert, loginData) { id = id.toLowerCase(); if (id == "close") { $("#cmt-account-header .close").click(); return; } if (id == "info" && !window._isShowingInfo) { $("#cmt-account-header .close").click(); return; } window._isShowingInfo = false; if (loginData) { $("#cmt-account-header [data-target]").hide(); $("#cmt-account-header [data-target].logged-in").show().first().click(); $("#cmt-account-header [data-info-name]").html(loginData.name || "Quý vị"); $("#cmt-account-header [data-info-email]").html(loginData.email || "<không xác định>"); } else { $("#cmt-account-header [data-target]").hide(); $("#cmt-account-header [data-target].not-login").show().first().click(); $("#cmt-account-social").show(); } setTimeout(function() { $("#cmt-account-header > .wrapper").css("animation", "none"); }, 200); $("#cmt-account-header").show(); $("#cmt-account-header input[type="password"]").val(""); $("#cmt-account-header [data-target="" + id + ""]").click(); $("body").css("overflow", "hidden"); $("#nav").removeClass("active"); $("#cmt_alert").html(alert || "Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); }; var accountMessageProcess = function(data) { if (data.isLogged) { fnPopupAction("info", "Vui lòng đăng nhập hoặc đăng ký để gửi bình luận", { name: data.name, email: data.email }); } else { fnPopupAction(data.act, data.alert || "Vui lòng đăng nhập hoặc đăng ký"); if (data.act == "close" && data.raw.Data && data.raw.Data.Approved) { //window.alert("Đăng nhập thành công"); fnPopupAction("info", "Đăng nhập thành công", { name: data.raw.Data.Name, email: $("#_login_email").val() || $("#_sign_email").val() }); } } };
// 5. Action functions -> bind event to form elements
var fnPopupBindAction = function() { // Tab $("#cmt-account-header [data-target]").on('click', function() { $("#cmt-account-header [data-target], #cmt-account-header [data-tab]").removeClass( "active"); $(this).addClass("active"); var tab = $("#cmt-account-header [data-tab='" + $(this).attr("data-target") + "']"); tab.addClass("active") .find("input[type="text"], input[type="email"]").first().focus(); tab.find("input").keyup(function(event) { if (event.keyCode === 13) { tab.find(".btn.clickable").click(); } }); fnCaptcha(); $("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); }); $("#cmt-account-header .close").on('click', function() { $("#cmt-account-header").hide(); $("#cmt-account-header > .wrap").removeAttr("style"); $("body").css("overflow", "unset"); fnCaptcha(); $("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận"); }); // Reload Captcha // $("#_reload_captcha").on('click', function () { // fnCaptcha(); // }); // Btn Login
$("#comment-frame").on('click','#btn_login', function () { $("#top-link-account .first").click(); }); $("#comment-frame").on('click','#btn_signup', function () { $("#top-link-account .first").click(); $('[data-target="signup"]').click(); });
$("#_btn_login").on('click', function() {
$("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận");
var email, password;
email = $("#_login_email").val();
password = $("#_login_password").val();
if (!/^[a-z0-9-_.]+[@][0-9a-z-]+(.[0-9a-z-]+)+$/ig.test(email) || password
.length < 8) {
$("#cmt_alert").html("Email hoặc mật khẩu không đúng!");
return;
}
$.ajax({
url: pageSettings.DomainApiComment + "/api/get-usercomment.htm",
data: {
email: encodeURI(email),
password: password,
sitename: pageSettings.commentSiteName,
},
type: "get",
success: function (res){
if (res && res.data == true){
var user = {
email: email,
name: email.substring(0, email.indexOf('@')),
}
let now = new Date();
lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000)));
authLogin(user.name, true);
}else {
$("#cmt_alert").html("Có lỗi phát sinh, vui lòng thử lại sau");
}
}
});
});
// Btn Signup
$("#_btn_sign").on('click', function() {
$("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận");
var email, name, password, repassword, captcha;
email = $("#_sign_email").val();
name = $("#_sign_name").val();
if (name == ''){
name = email.split('@')[0];
}
password = $("#_sign_password").val();
//repassword = $("#_sign_repassword").val();
captcha = $("#_sign_captcha").val();
var format = /[!@#$%^&*()_+-=[]{};':"\|,.<>/?]/g;
if (!/^[a-z0-9-_.]+[@][0-9a-z-]+(.[0-9a-z-]+)+$/ig.test(email)) {
$("#cmt_alert").html("Email không hợp lệ");
return;
}
//if (name.length <= 0) {
// $("#cmt_alert").html("Vui lòng nhập họ tên của bạn!");
// return;
//}
//if (name.length > 20) {
// $("#cmt_alert").html("Họ tên không được quá 20 ký tự (Có thể để nickname thay thế)!");
// return;
//}
//if (format.test(name)) {
// $("#cmt_alert").html("Tên không được chứa ký tự đặc biệt!");
// return;
//}
if (password.length < 8) {
$("#cmt_alert").html(
"Mật khẩu phải có ít nhất 8 ký tự, chứa ít nhất 1 chữ số và 1 chữ cái");
return;
}
//if (password != repassword) {
// $("#cmt_alert").html("Mật khẩu xác nhận lại không khớp!");
// return;
//}
if (!(/[a-z]/ig.test(password) && /[0-9]/ig.test(password))) {
$("#cmt_alert").html("Mật khẩu phải chứa ít nhất 1 chữ số và 1 chữ cái");
return;
}
if (captcha.length <= 0) {
$("#cmt_alert").html("Vui lòng điền mã xác nhận trong ảnh!");
return;
}
$.ajax({
type: 'POST',
url: pageSettings.DomainApiComment + "/api/insert-usercomment.htm",
data: {
name: name,
email: email,
password: password,
captcha: captcha,
sitename: pageSettings.commentSiteName
},
success: function (res){
if (res && res.message == "Success"){
var user = {
email: email,
name: email.split('@')[0],
}
let now = new Date();
lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000)));
authLogin(user.name, true);
$("#cmt-account-header .close").click();
}else {
$("#cmt_alert").html("Có lỗi phát sinh, vui lòng thử lại sau");
}
}
});
});
// Btn logout
$("#_btn_logout").on('click', function() {
$("#cmt_alert").html("Vui lòng đăng nhập hoặc đăng ký để gửi bình luận");
$("#cmt-account-header .close").click();
fnPopupAction("login", "Bạn đã đăng xuất thành công");
var el = $("#top-link-account");
//el.find("a.first").html("")
// .removeAttr("style");
el.find("a.first").show();
el.find("a.second").html("");
$("#cmt-account-social").show();
});
// Header login/account_info
// Header login/account_info $("#top-link-account .first").on('click', function() { if ($("#top-link-account .second").attr("data-out")) { $("#top-link-account .second").toggleClass("show"); } else { fnPopupAction("login"); } }); // Btn register/log_out $("#top-link-account .second").on('click', function() { if ($("#top-link-account .second").attr("data-out")) { //$("#_btn_logout").click();
authLogin('my_dv',false);
} else { fnPopupAction('signup'); }
//var el = $("#top-link-account");
//el.find("a.first").html("")
// .removeAttr("style");
//el.find("a.second").html("");
});
};
fnPopupBindAction();
//login Facebook var otherLogin = { init: function() { var me = this; //gapi.load('auth2', function () { // gapi.auth2.init({ // client_id: '678720187862-08lendtdt5h3nr4j2he534p15b13aieg.apps.googleusercontent.com', // scope: 'email profile', // fetch_basic_profile: true // }); //}); $("#cmt-account-social button[data-type]").on('click', function() { me[$(this).attr("data-type")](function(response) { $("#cmt-account-header .tabs .close, #cmt-account .tabs .close") .click(); }); }); try { fbClient.appId = '1304555827613749'; //'211029740744825'; fbClient.version = "v14.0"; fbClient.init(); setTimeout(FB.AppEvents.logPageView, 5000); } catch (e) { // ignore } }, loginFacebook: function(cb) { var me = this;
function reloginFacebook(callback) { FB.api('/me', { fields: 'id, name, email' }, function(profile) { //console.debug(profile); if (typeof callback === "function") callback(profile); }); }; FB.login(function(response) { if (response.authResponse) { reloginFacebook(function(info) { console.log(info); info.social = "facebook"; info.accessToken = response.authResponse.accessToken;
var user = { email: info.email, name: info.name, } let now = new Date(); lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000))); authLogin(user.name, true); }); } else { $("#cmt_alert").html( "Bạn đã từ chối cấp quyền truy cập tài khoản Facebook"); } }, { scope: 'public_profile,email' }); }, loginGoogle: function(callback) { var me = this;
function callSocialApi(data, cb) { data.social = "google"; var user = { email: data.email, name: data.name, } let now = new Date(); lgSetCookie('my_dv',JSON.stringify(user), new Date(now.getTime() + (30 * 12 * 60000))); authLogin(user.name, true); }
// API call for Google login if (gapi.auth2.getAuthInstance().isSignedIn.get()) { //console.debug('[VCC] GAPI Process'); var profile = gapi.auth2.getAuthInstance().currentUser.get().getBasicProfile();
//var id_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token; var access_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse() .access_token;
var params = { id: profile.getId(), name: profile.getName(), email: profile.getEmail(), accessToken: access_token } //console.log('params: ', params); callSocialApi(params, callback); } else { //console.debug('[VCC] GAPI Login'); gapi.auth2.getAuthInstance().signIn().then( function(success) { var profile = gapi.auth2.getAuthInstance().currentUser.get() .getBasicProfile(); //var id_token = gapi.auth2.getAuthInstance().currentUser.get().getAuthResponse().id_token; var access_token = gapi.auth2.getAuthInstance().currentUser.get() .getAuthResponse().access_token;
var params = { id: profile.getId(), name: profile.getName(), email: profile.getEmail(), accessToken: access_token } //console.log('params: ', params); callSocialApi(params, callback); }, function(error) { $("#cmt_alert").html( "Bạn đã từ chối cấp quyền cho Báo Dân Việt truy cập tài khoản Google" ); } ); } } } otherLogin.init(); });
Xin chào ${name}! Đăng xuất