Files
uldp-degree-mangement-system/public/js/home-form-handler.js

257 lines
11 KiB
JavaScript

// Home Form Handler - Convert form inputs to JSON before submission
document.addEventListener('DOMContentLoaded', function() {
const form = document.querySelector('form[action="/admin/home/update"]');
if (!form) return;
form.addEventListener('submit', function(e) {
e.preventDefault();
try {
// Hero
const heroData = {
title: document.getElementById('heroTitle')?.value || '',
subtitle: document.getElementById('heroSubtitle')?.value || '',
description: document.getElementById('heroDescription')?.value || '',
primaryButton: {
label: document.getElementById('heroPrimaryButtonLabel')?.value || '',
href: document.getElementById('heroPrimaryButtonHref')?.value || '',
},
secondaryButton: {
label: document.getElementById('heroSecondaryButtonLabel')?.value || '',
href: document.getElementById('heroSecondaryButtonHref')?.value || '',
},
backgroundImage: document.getElementById('heroBackgroundImage')?.value || '',
videoUrl: document.getElementById('heroVideoUrl')?.value || '',
};
document.getElementById('heroJson').value = JSON.stringify(heroData);
// Why Choose Us
const whyChooseUsItems = [];
let index = 0;
while (document.getElementById(`whyChooseUsIcon_${index}`)) {
whyChooseUsItems.push({
icon: document.getElementById(`whyChooseUsIcon_${index}`)?.value || '',
title: document.getElementById(`whyChooseUsTitle_${index}`)?.value || '',
description: document.getElementById(`whyChooseUsItemDescription_${index}`)?.value || '',
});
index++;
}
const whyChooseUsFeatures = [];
index = 0;
while (document.getElementById(`whyChooseUsFeature_${index}`)) {
const feature = document.getElementById(`whyChooseUsFeature_${index}`)?.value;
if (feature) whyChooseUsFeatures.push(feature);
index++;
}
const whyChooseUsData = {
heading: document.getElementById('whyChooseUsHeading')?.value || '',
subheading: document.getElementById('whyChooseUsSubheading')?.value || '',
description: document.getElementById('whyChooseUsDescription')?.value || '',
items: whyChooseUsItems,
features: whyChooseUsFeatures,
ctaButton: {
label: document.getElementById('whyChooseUsCtaLabel')?.value || '',
href: document.getElementById('whyChooseUsCtaHref')?.value || '',
},
};
document.getElementById('whyChooseUsJson').value = JSON.stringify(whyChooseUsData);
// Visa Solutions
const visaSolutionsItems = [];
index = 0;
while (document.getElementById(`visaSolutionsNumber_${index}`)) {
visaSolutionsItems.push({
number: document.getElementById(`visaSolutionsNumber_${index}`)?.value || '',
title: document.getElementById(`visaSolutionsTitle_${index}`)?.value || '',
description: document.getElementById(`visaSolutionsDescription_${index}`)?.value || '',
link: document.getElementById(`visaSolutionsLink_${index}`)?.value || '',
});
index++;
}
const visaSolutionsData = {
heading: document.getElementById('visaSolutionsHeading')?.value || '',
subheading: document.getElementById('visaSolutionsSubheading')?.value || '',
items: visaSolutionsItems,
};
document.getElementById('visaSolutionsJson').value = JSON.stringify(visaSolutionsData);
// Visa Countries
const visaCountriesItems = [];
index = 0;
while (document.getElementById(`visaCountriesName_${index}`)) {
const visaTypesStr = document.getElementById(`visaCountriesVisaTypes_${index}`)?.value || '';
const visaTypes = visaTypesStr.split(',').map(v => v.trim()).filter(v => v);
visaCountriesItems.push({
name: document.getElementById(`visaCountriesName_${index}`)?.value || '',
code: document.getElementById(`visaCountriesCode_${index}`)?.value || '',
flag: document.getElementById(`visaCountriesFlag_${index}`)?.value || '',
link: document.getElementById(`visaCountriesLink_${index}`)?.value || '',
visaTypes: visaTypes,
});
index++;
}
const visaCountriesData = {
heading: document.getElementById('visaCountriesHeading')?.value || '',
subheading: document.getElementById('visaCountriesSubheading')?.value || '',
description: document.getElementById('visaCountriesDescription')?.value || '',
countries: visaCountriesItems,
ctaButton: {
label: document.getElementById('visaCountriesCtaLabel')?.value || '',
href: document.getElementById('visaCountriesCtaHref')?.value || '',
},
};
document.getElementById('visaCountriesJson').value = JSON.stringify(visaCountriesData);
// Testimonials
const testimonialsItems = [];
index = 0;
while (document.getElementById(`testimonialsName_${index}`)) {
testimonialsItems.push({
name: document.getElementById(`testimonialsName_${index}`)?.value || '',
role: document.getElementById(`testimonialsRole_${index}`)?.value || '',
country: document.getElementById(`testimonialsCountry_${index}`)?.value || '',
rating: parseInt(document.getElementById(`testimonialsRating_${index}`)?.value || 5),
comment: document.getElementById(`testimonialsComment_${index}`)?.value || '',
avatar: document.getElementById(`testimonialsAvatar_${index}`)?.value || '',
});
index++;
}
const testimonialsData = {
heading: document.getElementById('testimonialsHeading')?.value || '',
subheading: document.getElementById('testimonialsSubheading')?.value || '',
videoUrl: document.getElementById('testimonialsVideoUrl')?.value || '',
videoThumbnail: document.getElementById('testimonialsVideoThumbnail')?.value || '',
items: testimonialsItems,
};
document.getElementById('testimonialsJson').value = JSON.stringify(testimonialsData);
// Video Gallery
const videoGalleryData = {
heading: document.getElementById('videoGalleryHeading')?.value || '',
videoUrl: document.getElementById('videoGalleryVideoUrl')?.value || '',
thumbnail: document.getElementById('videoGalleryThumbnail')?.value || '',
};
document.getElementById('videoGalleryJson').value = JSON.stringify(videoGalleryData);
// FAQ
const faqItems = [];
index = 0;
while (document.getElementById(`faqQuestion_${index}`)) {
faqItems.push({
question: document.getElementById(`faqQuestion_${index}`)?.value || '',
answer: document.getElementById(`faqAnswer_${index}`)?.value || '',
});
index++;
}
const faqData = {
heading: document.getElementById('faqHeading')?.value || '',
subheading: document.getElementById('faqSubheading')?.value || '',
description: document.getElementById('faqDescription')?.value || '',
ctaButton: {
label: document.getElementById('faqCtaLabel')?.value || '',
href: document.getElementById('faqCtaHref')?.value || '',
},
items: faqItems,
};
document.getElementById('faqJson').value = JSON.stringify(faqData);
// Achievements
const achievementsItems = [];
index = 0;
while (document.getElementById(`achievementsValue_${index}`)) {
achievementsItems.push({
value: document.getElementById(`achievementsValue_${index}`)?.value || '',
suffix: document.getElementById(`achievementsSuffix_${index}`)?.value || '',
label: document.getElementById(`achievementsLabel_${index}`)?.value || '',
description: document.getElementById(`achievementsDescription_${index}`)?.value || '',
});
index++;
}
const achievementsData = {
heading: document.getElementById('achievementsHeading')?.value || '',
subheading: document.getElementById('achievementsSubheading')?.value || '',
items: achievementsItems,
};
document.getElementById('achievementsJson').value = JSON.stringify(achievementsData);
// Partners
const visaConsultancyItems = [];
document.querySelectorAll('.visa-consultancy-item').forEach((item) => {
const name = item.querySelector('.visa-consultancy-name')?.value || '';
const icon = item.querySelector('.visa-consultancy-icon')?.value || '';
const year = item.querySelector('.visa-consultancy-year')?.value || '';
if (name || icon || year) {
visaConsultancyItems.push({ name, icon, year });
}
});
const brandItems = [];
document.querySelectorAll('.brand-item').forEach((item) => {
const logo = item.querySelector('.brand-logo')?.value || '';
if (logo) {
brandItems.push({ logo });
}
});
const partnersData = {
visaConsultancy: {
heading: document.getElementById('partnersVisaConsultancyHeading')?.value || '',
items: visaConsultancyItems,
},
brands: {
items: brandItems,
},
};
document.getElementById('partnersJson').value = JSON.stringify(partnersData);
// Blog Preview
const blogPreviewItems = [];
index = 0;
while (document.getElementById(`blogPreviewTitle_${index}`)) {
blogPreviewItems.push({
title: document.getElementById(`blogPreviewTitle_${index}`)?.value || '',
excerpt: document.getElementById(`blogPreviewExcerpt_${index}`)?.value || '',
category: document.getElementById(`blogPreviewCategory_${index}`)?.value || '',
date: document.getElementById(`blogPreviewDate_${index}`)?.value || '',
author: {
name: document.getElementById(`blogPreviewAuthorName_${index}`)?.value || '',
avatar: document.getElementById(`blogPreviewAuthorAvatar_${index}`)?.value || '',
},
comments: parseInt(document.getElementById(`blogPreviewComments_${index}`)?.value || 0),
link: document.getElementById(`blogPreviewLink_${index}`)?.value || '',
thumbnail: document.getElementById(`blogPreviewThumbnail_${index}`)?.value || '',
});
index++;
}
const blogPreviewData = {
heading: document.getElementById('blogPreviewHeading')?.value || '',
subheading: document.getElementById('blogPreviewSubheading')?.value || '',
ctaButton: {
label: document.getElementById('blogPreviewCtaLabel')?.value || '',
href: document.getElementById('blogPreviewCtaHref')?.value || '',
},
items: blogPreviewItems,
};
document.getElementById('blogPreviewJson').value = JSON.stringify(blogPreviewData);
console.log('All JSON data prepared, submitting form...');
// Submit form
form.submit();
} catch (error) {
console.error('Error processing form:', error);
alert('Error processing form. Please check console for details.');
}
});
});