| Server IP : 103.161.17.216 / Your IP : 216.73.216.130 Web Server : nginx/1.18.0 System : Linux tipsysaigoncharming 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 7.4.3-4ubuntu2.29 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /var/www/greencity.primehomes.vn/ |
Upload File : |
<!DOCTYPE html>
<html>
<head>
<!-- Google tag (gtag.js) -->
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=AW-17147412811"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'AW-17147412811');
</script>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="Vinhomes Green City - Coming Soon">
<meta property="og:type" content="website">
<meta property="og:image" content="http://greencity.vinhomes.vn/wp-content/themes/main/screenshot.png?v=20052025">
<link rel="profile" href="https://gmpg.org/xfn/11">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="site-content">
<header id="home-section" class="teaser-banner">
<img src="/banner.jpg" alt="Hình ảnh Banner" class="background-image">
<div class="logo">
<img src="/logo.png" alt="Logo công ty">
</div>
<div class="banner-buttons">
<button class="main-banner-button open-popup" data-popup="quote">Nhận báo giá</button>
<button class="main-banner-button open-popup" data-popup="consult">Tư vấn ngay</button>
</div>
<nav id="mainNav" class="main-nav">
<ul>
<li><a href="#home-section">Trang chủ</a></li>
<li><a href="#about-us-section">Giới thiệu</a></li>
<li><a href="#project-video-section">Dự án</a></li>
<li><a href="#news-section">Tin tức</a></li>
<li><a href="#gallery-section">Hình ảnh</a></li>
<li><a href="#contact-section">Liên hệ</a></li>
</ul>
</nav>
<div class="menu-toggle" id="menuToggle">
<span></span>
<span></span>
<span></span>
</div>
</header>
<section id="news-section" class="t-section2">
<div id="gallery-section" class="gallery-images">
<div class="tw-container d-flex flex-wrap">
<div class="gallery-sticky">
<div class="item-gallery">
<img id="mainGalleryImage" src="/h1.jpg" alt="Hình ảnh chính Thư viện">
</div>
</div>
<div class="content-right">
<div class="titlehead">Thư viện ảnh</div>
<div class="tw-description">Khám phá bộ sưu tập hình ảnh tuyệt đẹp của chúng tôi về dự án.</div>
<div class="swiper-gallery">
<div class="swiper-slide active" data-src="/h1.jpg">
<img src="/icon1.jpg" alt="Ảnh nhỏ 1">
</div>
<div class="swiper-slide active" data-src="/h2.jpg">
<img src="/icon2.jpg" alt="Ảnh nhỏ 1">
</div>
<div class="swiper-slide active" data-src="/h3.jpg">
<img src="/icon3.jpg" alt="Ảnh nhỏ 1">
</div>
<div class="swiper-slide active" data-src="/h4.jpg">
<img src="/icon4.jpg" alt="Ảnh nhỏ 1">
</div>
<div class="swiper-slide active" data-src="/h5.jpg">
<img src="/icon5.jpg" alt="Ảnh nhỏ 1">
</div>
</div>
</div>
</div>
</div>
</section>
<section id="contact-section" class="teaser-form">
<div class="tw-container2">
<div class="tw-form-teaser d-flex flex-wrap justify-between">
<div class="wrap-infomation">
<div class="logo">
<img src="/logo.png" alt="Logo nhỏ">
</div>
<div class="info">
<div class="info_title">Thông tin liên hệ</div>
<a href="mailto:tranphong4005@gmail.com" class="info_describe d-flex align-center">
<img src="https://placehold.co/20x20/cccccc/333333?text=E" alt="Icon Email">
tranphong4005@gmail.com
</a>
<a href="tel:+84943112117" class="info_describe d-flex align-center">
<img src="https://placehold.co/20x20/cccccc/333333?text=P" alt="Icon Điện thoại">
0943.112.117 - Mr.Phong
</a>
</div>
<div class="title-social">Theo dõi chúng tôi</div>
<div class="d-flex gap-16">
<a href="https://www.facebook.com/vinhomesgreencty" class="social_item">
<img src="https://placehold.co/24x24/cccccc/333333?text=FB" alt="Face">
Face
</a>
<a href="https://zalo.me/1321447222528070915" class="social_item">
<img src="https://placehold.co/24x24/cccccc/333333?text=zalo" alt="zalo">
Zalo
</a>
<a href="https://www.tiktok.com/@greencity.vinhomeshcm.vn" class="social_item">
<img src="https://placehold.co/24x24/cccccc/333333?text=tiktok" alt="tik">
Tiktok
</a>
</div>
</div>
<div class="wrap-form">
<div class="form-contact">
<div class="text index-1">
<div class="title">Liên hệ</div>
<div class="sub-title">Điền vào biểu mẫu dưới đây để nhận thêm thông tin.</div>
</div>
<form id="contactFooterForm" class="index-1">
<div class="d-flex col-2 gap-16">
<div class="form-group">
<label for="footerName" class="form-label">Tên của bạn</label>
<input type="text" id="footerName" name="name" class="form-control" placeholder="Nhập tên của bạn" required>
<div class="form-message"></div>
</div>
<div class="form-group">
<label for="footerPhone" class="form-label">Số điện thoại</label>
<input type="tel" id="footerPhone" name="phone" class="form-control" placeholder="Nhập số điện thoại của bạn" pattern="^(03|05|07|08|09)[0-9]{8}$" required>
<div class="form-message"></div>
</div>
</div>
<div class="form-group form-textarea">
<label for="footerMessage" class="form-label">Tin nhắn</label>
<textarea id="footerMessage" name="message" class="form-control" placeholder="Tin nhắn của bạn"></textarea>
<div class="form-message"></div>
</div>
<div class="form-bottom d-flex justify-center">
<button type="submit" class="form-submit">
Gửi tin nhắn
<span></span>
</button>
</div>
<div class="form-response"></div>
</form>
</div>
</div>
</div>
</div>
</section>
<footer class="site-footer">
<div class="tw-container">
<div class="footer-col">
<h4>Về chúng tôi</h4>
<ul>
<li><a href="#">Giới thiệu</a></li>
<li><a href="#">Dịch vụ</a></li>
<li><a href="#">Chính sách bảo mật</a></li>
<li><a href="#">Liên hệ</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Dự án</h4>
<ul>
<li><a href="#">Tổng quan</a></li>
<li><a href="#">Vị trí</a></li>
<li><a href="#">Tiện ích</a></li>
<li><a href="#">Mặt bằng</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Tin tức</h4>
<ul>
<li><a href="#">Tin tức mới nhất</a></li>
<li><a href="#">Sự kiện</a></li>
<li><a href="#">Thông cáo báo chí</a></li>
</ul>
</div>
<div class="footer-col">
<h4>Theo dõi chúng tôi</h4>
<div class="social-links">
<a href="https://www.facebook.com/vinhomesgreencty" class="social_item">
<img src="https://placehold.co/24x24/cccccc/333333?text=FB" alt="Face">
Face
</a>
<a href="https://zalo.me/1321447222528070915" class="social_item">
<img src="https://placehold.co/24x24/cccccc/333333?text=zalo" alt="zalo">
Zalo
</a>
<a href="https://www.tiktok.com/@greencity.vinhomeshcm.vn" class="social_item">
<img src="https://placehold.co/24x24/cccccc/333333?text=tiktok" alt="tik">
Tiktok
</a>
</div>
</div>
</div>
<div class="copyright">
<p>© 2025 Vinhomes Green City. All rights reserved.</p>
</div>
</footer>
</div>
<div id="summaryModal" class="summary-modal-overlay">
<div class="summary-modal-content">
<button class="close-button" id="closeSummaryModal">×</button>
<h3 id="summaryModalTitle">Tóm tắt tin tức</h3>
<p id="summaryModalText"></p>
<div id="summaryLoading" class="summary-loading" style="display: none;">Đang tạo tóm tắt...</div>
</div>
</div>
<button id="scrollToTopBtn" class="scroll-to-top-btn" title="Cuộn lên đầu trang">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor" width="24px" height="24px">
<path d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 14l-4-4h3V8h2v4h3l-4 4z"/>
</svg>
</button>
<div class="fixed-social-menu">
<a href="https://zalo.me/1321447222528070915" target="_blank" class="social-icon zalo-icon" title="Zalo">
<img src="https://placehold.co/30x30/008000/ffffff?text=Zalo" alt="Zalo Icon">
</a>
<a href="https://www.facebook.com/vinhomesgreencty" target="_blank" class="social-icon facebook-icon" title="Facebook">
<img src="https://placehold.co/30x30/1877F2/ffffff?text=FB" alt="Facebook Icon">
</a>
<a href="https://www.tiktok.com/@greencity.vinhomeshcm.vn" target="_blank" class="social-icon facebook-icon" title="Facebook">
<img src="https://placehold.co/30x30/1877F2/ffffff?text=TK" alt="Tiktok Icon">
</a>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
// Gallery functionality
const popupOverlay = document.getElementById('popupForm');
const closeBtn = document.querySelector('.close-popup');
const openButtons = document.querySelectorAll('.open-popup');
const mainGalleryImage = document.getElementById('mainGalleryImage');
const galleryThumbnails = document.querySelectorAll('.swiper-gallery .swiper-slide');
galleryThumbnails.forEach(thumbnail => {
thumbnail.addEventListener('click', () => {
// Remove active class from all thumbnails
galleryThumbnails.forEach(thumb => thumb.classList.remove('active'));
// Add active class to the clicked thumbnail
thumbnail.classList.add('active');
// Change the main image source
const newSrc = thumbnail.dataset.src;
if (newSrc) {
mainGalleryImage.src = newSrc;
}
});
});
openButtons.forEach(btn => {
btn.addEventListener('click', () => {
popupOverlay.classList.add('active');
});
});
if (closeBtn) {
closeBtn.addEventListener('click', () => {
popupOverlay.classList.remove('active');
});
}
// Click outside popup-content closes popup
popupOverlay.addEventListener('click', (e) => {
if (e.target === popupOverlay) {
popupOverlay.classList.remove('active');
}
});
// --- Modal functionality ---
const summaryModal = document.getElementById('summaryModal');
const summaryModalTitle = document.getElementById('summaryModalTitle');
const summaryModalText = document.getElementById('summaryModalText');
const summaryLoading = document.getElementById('summaryLoading');
const closeSummaryModal = document.getElementById('closeSummaryModal');
// Function to show the modal
function showModal(title, text, isLoading = false) {
summaryModalTitle.textContent = title;
summaryModalText.textContent = text;
summaryLoading.style.display = isLoading ? 'block' : 'none';
summaryModal.classList.add('active');
document.body.style.overflow = 'hidden'; // Prevent scrolling when modal is open
}
// Function to hide the modal
function hideModal() {
summaryModal.classList.remove('active');
summaryModalTitle.textContent = '';
summaryModalText.textContent = '';
summaryLoading.style.display = 'none';
document.body.style.overflow = ''; // Restore scrolling when modal is closed
}
// Close modal when close button is clicked
closeSummaryModal.addEventListener('click', hideModal);
// Close modal when clicking outside the content
summaryModal.addEventListener('click', (event) => {
if (event.target === summaryModal) {
hideModal();
}
});
// --- Mobile Menu Toggle Functionality ---
const menuToggle = document.getElementById('menuToggle');
const mainNav = document.getElementById('mainNav');
const navLinks = mainNav.querySelectorAll('a');
menuToggle.addEventListener('click', () => {
mainNav.classList.toggle('active');
menuToggle.classList.toggle('active'); // Toggle class for hamburger animation
});
navLinks.forEach(link => {
link.addEventListener('click', () => {
// Close menu when a link is clicked (for mobile)
if (mainNav.classList.contains('active')) {
mainNav.classList.remove('active');
menuToggle.classList.remove('active');
}
});
});
// --- Scroll to Top Button Functionality ---
const scrollToTopBtn = document.getElementById('scrollToTopBtn');
// Show/hide the button based on scroll position
window.addEventListener('scroll', () => {
if (window.scrollY > 200) { // Show button after scrolling down 200px
scrollToTopBtn.classList.add('show');
} else {
scrollToTopBtn.classList.remove('show');
}
});
// Scroll to top when the button is clicked
scrollToTopBtn.addEventListener('click', () => {
window.scrollTo({
top: 0,
behavior: 'smooth' // Smooth scroll effect
});
});
// xu ly form cuoi trang
const contactFooterForm = document.getElementById("contactFooterForm");
if (contactFooterForm) { // Đảm bảo form tồn tại
contactFooterForm.addEventListener("submit", function (e) {
e.preventDefault(); // Ngăn chặn hành vi gửi form mặc định
const name = document.getElementById("footerName").value.trim();
const phone = document.getElementById("footerPhone").value.trim();
const message = document.getElementById("footerMessage").value.trim();
const scriptURL = "https://script.google.com/macros/s/AKfycbyVX2jY0MV6n1AnWXT_hbgp9k_cWXhCiHim01kbfgZ4nXhDeLEG79snh_9eIxcMGGym/exec"; // Thay bằng URL Google Apps Script của bạn
fetch(scriptURL, {
method: "POST",
// Sử dụng Content-Type phù hợp với Google Apps Script (application/x-www-form-urlencoded)
headers: { "Content-Type": "application/x-www-form-urlencoded" },
// Gửi dữ liệu dưới dạng URLSearchParams
body: new URLSearchParams({
name: name,
phone: phone,
message: message // Thêm trường message
})
})
.then(response => response.text())
.then(result => {
alert("✅ Gửi thông tin thành công!");
contactFooterForm.reset(); // Đặt lại form sau khi gửi thành công
// Có thể thêm logic để đóng popup hoặc hiển thị thông báo thành công khác
})
.catch(error => {
console.error("Lỗi gửi:", error);
alert("❌ Gửi thất bại. Vui lòng thử lại.");
});
});
}
// Note: Gemini API call logic is commented out as per the request to focus on HTML/CSS replication.
// If you want to re-enable the Gemini API integration, uncomment the following block.
/*
const generateButtons = document.querySelectorAll('.generate-summary-btn');
generateButtons.forEach(button => {
button.addEventListener('click', async (event) => {
const newsTitle = event.currentTarget.dataset.newsTitle;
const originalButtonText = event.currentTarget.innerHTML;
event.currentTarget.disabled = true;
event.currentTarget.innerHTML = 'Generating...';
showModal('News Summary', '', true);
try {
let chatHistory = [];
const prompt = `Generate a concise and engaging summary (around 2-3 sentences) for a news article with the following title: "${newsTitle}"`;
chatHistory.push({ role: "user", parts: [{ text: prompt }] });
const payload = { contents: chatHistory };
const apiKey = "";
const apiUrl = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=${apiKey}`;
const response = await fetch(apiUrl, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(payload)
});
const result = await response.json();
if (result.candidates && result.candidates.length > 0 &&
result.candidates[0].content && result.candidates[0].content.parts &&
result.candidates[0].content.parts.length > 0) {
const summary = result.candidates[0].content.parts[0].text;
showModal('News Summary', summary, false);
} else {
showModal('Error', 'Failed to generate summary. Please try again.', false);
console.error('Gemini API response structure unexpected:', result);
}
} catch (error) {
showModal('Error', 'An error occurred while generating the summary. Please check your network connection and try again.', false);
console.error('Error calling Gemini API:', error);
} finally {
event.currentTarget.disabled = false;
event.currentTarget.innerHTML = originalButtonText;
}
});
});
*/
});
</script>
<div id="popupForm" class="popup-overlay">
<div class="popup-content">
<button class="close-popup">×</button>
<h3>Đăng ký nhận thông tin</h3>
<form id="contactPopupForm">
<div class="form-group">
<label for="popupName">Họ và tên</label>
<input type="text" id="popupName" name="name" required>
</div>
<div class="form-group">
<label for="popupPhone">Số điện thoại</label>
<input type="tel" id="popupPhone" name="phone" pattern="^(03|05|07|08|09)[0-9]{8}$" required>
</div>
<button type="submit" class="tw-button">Gửi thông tin</button>
</form>
</div>
</div>
<script>
document.addEventListener('DOMContentLoaded', () => {
// ... (Mã JavaScript hiện có cho thư viện ảnh, modal, menu, nút cuộn lên đầu trang) ...
// Đã di chuyển script xử lý biểu mẫu bật lên vào đây
document.querySelectorAll('.open-popup').forEach(btn => {
btn.addEventListener('click', () => {
document.getElementById('popupForm').classList.add('active');
});
});
document.querySelector('.close-popup').addEventListener('click', () => {
document.getElementById('popupForm').classList.remove('active');
});
document.getElementById('popupForm').addEventListener('click', (e) => {
if (e.target === e.currentTarget) {
e.currentTarget.classList.remove('active');
}
});
document.getElementById("contactPopupForm").addEventListener("submit", function (e) {
e.preventDefault();
const name = document.getElementById("popupName").value.trim();
const phone = document.getElementById("popupPhone").value.trim();
const scriptURL = "https://script.google.com/macros/s/AKfycbyVX2jY0MV6n1AnWXT_hbgp9k_cWXhCiHim01kbfgZ4nXhDeLEG79snh_9eIxcMGGym/exec"; // Thay bằng liên kết thật của bạn
fetch(scriptURL, {
method: "POST",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
body: new URLSearchParams({ name, phone })
})
.then(response => response.text())
.then(result => {
alert("✅ Gửi thông tin thành công!");
document.getElementById("contactPopupForm").reset();
document.getElementById("popupForm").classList.remove("active");
})
.catch(error => {
console.error("Lỗi gửi:", error);
alert("❌ Gửi thất bại. Vui lòng thử lại.");
});
});
});
</script>
</body>
</html>