Three languages deployment helmat added#2
Open
Mohammed-Alazaar wants to merge 79 commits intomainfrom
Open
Conversation
…d links to the new links
…rols, and Product Integration • Created dynamic industry-details.ejs to display all industries using a shared EJS template. • Designed customer-facing industry details page with: - Dynamic hero section - Introduction section with shared images and translated content - Typical Applications section - Featured Products section • Built industry schema (IndustryPage.js) with multilingual structure: - Shared images (slide, intro) - EN, ES, DE language blocks for slide titles, subtitles, descriptions, intro titles, intro descriptions, and feature lists • Added admin panel support to: - List industries with delete/edit/view buttons - Implement delete button with JavaScript-confirmed POST form - Style “Add New Industry” button to match product page layout • Fixed server-side ReferenceError by importing the Industry model in the controller • Updated the getIndustryDetails controller to: - Retrieve industry by slug - Match and pass language-specific translations - Filter featured products from database - Pass data to the industry-details.ejs template • Added new support for “Frequently Used Products”: - Updated schema to store frequentlyUsedProducts per language, mapped by product ID - Modified Add/Edit Industry admin form to dynamically display a textarea for each product per language - Enhanced frontend to show admin-defined "frequently used" text instead of ProductDesc (with fallback if not set) • Improved UI and data integration across backend, admin, and frontend for full multilingual, dynamic industry presentation.
…Images - Implemented dynamic industry details page with full multilingual support (EN, ES, DE). - Connected "Frequently Used Products" to actual product entries via `productId` and added language-specific descriptions. - Included filtering logic to only show products with matching descriptions per language. - Preserved `slideImage` and `introImage` during validation errors in Add Industry form using hidden fallback fields. - Rendered `slideTitle` and `introImage` in the industry solutions section on the homepage. - Enhanced admin controller to save industry page data with validation, draft support, and Cloudinary image handling. - Updated `getIndustryDetails` controller to fetch translated content and shared media dynamically from the database. - Created a unified structure across all languages while allowing EN to host the images and other languages to reuse them. This completes the industry detail rendering system with SEO-ready structure, dynamic translations, and product integrations.
…nt Edits (Multilingual) - Added new dynamic multilingual pages: • Quality Policy • Sustainability Policy • Qualifications - Translations included in EN, ES, and DE - Created structured EJS views with consistent layout and Open Graph meta - Updated About Us page structure and translations - Improved and restructured Imprint (Legal Disclosure) page - Added new routes and controllers for each page - Ensured SEO-friendly rendering and hreflang support across all pages
- Connected the newsletter footer form to MongoDB using the `NewsletterSubscriber` model. - Added a new field `isExtracted` to track if an email has been exported. - Captured the user's selected language from the page via a hidden input field and stored it with the email. - Implemented AJAX submission for the newsletter form using Fetch API (no page refresh). - Created new route `/subscribe` (POST) to handle email subscriptions with language tracking. - Built an admin dashboard page (`admin/newsletter-list.ejs`) to display all subscribers in a styled table. - Added two export options: - Export All Subscribers - Export New Subscribers Only (marks them as "done" after export) - Styled the newsletter table and export buttons using existing dashboard CSS (`my-products.css`) with responsive mobile support. - Updated footer layout to support the new `newsletterForm` with success/error messages. - Created `footer.js` to handle client-side AJAX newsletter submission using nonce-based CSP.
… page with image/icon attributions This update prepares the website for production deployment by introducing essential SEO, compliance, and accessibility enhancements: /sitemap.xml: Added an XML sitemap to improve search engine discoverability and indexing of website pages. /robots.txt: Configured to guide search engine crawlers, disallowing sensitive routes like /admin. License and Attribution Page: Created a new license page listing all third-party assets (icons, images, libraries). Included proper attribution for each item according to their respective licenses. Ensured all license files and links are included in the project repository for transparency and compliance. These changes aim to enhance SEO performance, meet legal requirements, and get the site production-ready.
…Fix EJS script rendering, Clarity CSP errors, and dynamic About Us tabs version 1.0.1 - Fixed homepage industry section by correcting the MongoDB query for fetching industry data. Removed invalid `$or` language filter and ensured correct access to Language[lang] fields. - Added proper fallback logic for multilingual industry titles, descriptions, and shared images. - Ensured the homepage now correctly displays the 4 most recent industries in First-In-Last-Out (FILO) order. 🖼 Image Handling Enhancements: - Implemented WebP conversion for uploaded images using Sharp before saving to local storage. - Ensured that download files retain their original formats and are excluded from WebP conversion. - Updated Cloudinary logic to store files as 'raw' or 'image' depending on file type. - Filenames are now sanitized and uniquely renamed to avoid conflicts and preserve original intent. ✅ Verified: - Homepage renders industries dynamically per language. - Image uploads correctly generate WebP versions for performance optimization. - No issues with download files or image overwrite. - Fixed invalid EJS script block that caused `window.tabsData` to be undefined due to incorrect spacing in `<%- JSON.stringify(...) %>` expression - Added missing `sectionHeading` fields to tabsData to ensure tab content updates correctly - Moved tab content logic to external JS (`about-us.js`) and ensured it loads after DOM is ready - Adjusted Content Security Policy (CSP) headers to include 'https://b.clarity.ms' under connect-src for Microsoft Clarity tracking compatibility - Confirmed Clarity errors are resolved and tabs switch dynamically on About Us section
version 1.0.1
…ownload Naming, and Optimize Articles for SEO Enhanced <head> section for the Qualifications page with improved SEO metadata, canonical URLs, hreflang tags, and Open Graph/Twitter Card integration. Added structured data (JSON-LD) for BreadcrumbList to improve search visibility. Fixed file download naming so files now download using the admin-specified name instead of a generic filename. Improved articles by adding SEO-friendly tags and summaries for better ranking and click-through rates. Ensured meta descriptions are clean, concise, and free from HTML tags for optimal search engine indexing.
…on to WebP and compression for optimized storage & delivery. Ensured downloadable files (e.g., PDFs) retain original extensions while saving clean metadata. Implemented slug generation & refresh for products and models to keep URLs SEO-friendly and updated after renaming. Integrated sitemap generation/updates for better SEO and search engine indexing. This update improves both the backend and SEO aspects of the project: File Handling Fixed issues with uploading and downloading files. Downloadable files now keep their original extensions while saving only the clean admin-entered name in the database. Image Optimization All uploaded images are automatically converted to WebP and compressed using Sharp before saving to Cloudinary. Saves storage space and improves site performance without extra work for admins. Slug Management Added slug fields to products and models. Implemented refresh scripts to regenerate slugs when names are changed. Ensured slugs are SEO-friendly and consistent across the site. Sitemap Integration Configured automatic sitemap generation so search engines can crawl products, models, and pages more effectively. Improves visibility and ranking in search results.
…oplay+Fix file download behavior in Downloads page - Preload and prioritize first slide image (improves LCP) - Set first slide to `loading="eager"` with fetchpriority="high` - Keep other slides lazy-loaded with low priority - Added width/height attributes to reduce CLS - Confirmed 5s autoplay interval is optimal for UX - Ensured all download links use `fl_attachment` to force download instead of opening in browser - Moved `toDownloadUrl()` helper function outside EJS tags to prevent syntax errors - Set `download` attribute to preserve original file name during download
- Added new favicon set (favicon.ico, favicon-16/32/180/192) and square logo.png (512x512) for schema - Updated head.ejs to reference correct favicon sizes and use logo.png in Organization JSON-LD - Removed duplicate Organization JSON-LD that referenced small favicon - Ensures Google can pick the correct brand logo in search results - Lazy-loaded TermsFeed cookie script to prevent blocking LCP - Added static #cc--main container with aria-hidden + data-nosnippet to keep banner out of crawlable content - Removed duplicate cookie CSS and replaced with off-screen transform approach - Updated termsfeed-init.js to mark container hidden until reveal - Ensures cookie banner no longer impacts LCP/CLS and isn’t indexed as page content
…sure Contact Us wraps correctly - Added mobile breakpoint rules to disable flex on footer and stack all columns - Fixed Safari issue where "Contact Us" column forced two-column layout - Ensured long address text wraps properly on small screens - Cleaned up conflicting flex rules in footer.css
- Added multiple favicon sizes (16x16, 32x32, 48x48, 180x180, 192x192) for better compatibility - Linked favicon.ico as a legacy fallback for older browsers - Configured Apple touch icon (180x180) for iOS home screen - Configured 192x192 icon for Android/Chrome "Add to Home Screen" - Updated <head> to include proper <link> tags for each favicon size
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.