Add minified JavaScript and CSS files, implement datepicker and carousel functionality

- Added minified versions of JavaScript files including main, script, google-map, bootstrap-datepicker, and jquery.easing.
- Implemented a datepicker for appointment dates and a timepicker for appointment times.
- Introduced a carousel feature for image display with automatic sliding and responsive behavior.
- Updated package.json to include scripts for minifying CSS and JS files, along with necessary dependencies.
This commit is contained in:
Mark 2025-06-30 10:13:47 +01:00
parent 2a04a8f245
commit ebc25857dc
23 changed files with 587 additions and 384 deletions

112
.gitignore vendored Normal file
View File

@ -0,0 +1,112 @@
# Node.js dependencies
node_modules/
npm-debug.log*
yarn-debug.log*
yarn-error.log*
package-lock.json
# PHP
*.log
*.tmp
*.temp
*.cache
/vendor/
composer.phar
composer.lock
# IDE and Editor files
.vscode/
.idea/
*.swp
*.swo
*~
.sublime-project
.sublime-workspace
# Operating System files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
desktop.ini
# Backup files
*.bak
*.backup
*.old
*~
# Configuration files (sensitive)
config.php
.env
.env.local
.env.production
database.config.php
# Upload directories
uploads/
images/uploads/
files/
# Cache directories
cache/
tmp/
temp/
# Session files
sessions/
# Error logs
error_log
error.log
php_errors.log
# Build artifacts
dist/
build/
# Development tools
.sass-cache/
*.css.map
*.js.map
# Prepros (CSS/JS preprocessor)
prepros-6.config
.prepros-cache/
# Local development
local/
dev/
development/
# Database dumps
*.sql
*.sqlite
*.db
# Minified files (if you want to exclude them)
# Uncomment these lines if you prefer to generate minified files during build
# *.min.css
# *.min.js
# WordPress specific (if applicable)
wp-config.php
wp-content/uploads/
wp-content/cache/
# Security
.htaccess.backup
robots.txt.backup
# Archives
*.zip
*.tar.gz
*.rar
*.7z
# Documentation temp files
*.pdf~
*.docx~

View File

@ -7,51 +7,61 @@
All pages have been updated with improved, targeted meta descriptions and keywords that include "roofer in Accrington": All pages have been updated with improved, targeted meta descriptions and keywords that include "roofer in Accrington":
#### **Home Page (index.php)** #### **Home Page (index.php)**
- **Title**: "Professional Roofing Services | Roofer in Accrington" - **Title**: "Professional Roofing Services | Roofer in Accrington"
- **Description**: Leading roofer in Accrington, Lancashire with comprehensive service area coverage - **Description**: Leading roofer in Accrington, Lancashire with comprehensive service area coverage
- **Keywords**: Focused on local SEO with "roofer in accrington", service-specific terms - **Keywords**: Focused on local SEO with "roofer in accrington", service-specific terms
#### **About Page (about.php)** #### **About Page (about.php)**
- **Title**: "About Warmseal Roofing | Trusted Roofer in Accrington" - **Title**: "About Warmseal Roofing | Trusted Roofer in Accrington"
- **Description**: Emphasizes trust, experience, and local presence - **Description**: Emphasizes trust, experience, and local presence
- **Keywords**: Trust signals and local establishment keywords - **Keywords**: Trust signals and local establishment keywords
#### **Services Page (services.php)** #### **Services Page (services.php)**
- **Title**: "Roofing Services | Expert Roofer in Accrington"
- **Title**: "Roofing Services | Expert Roofer in Accrington"
- **Description**: Comprehensive service overview with location targeting - **Description**: Comprehensive service overview with location targeting
- **Keywords**: Service-specific with local geo-targeting - **Keywords**: Service-specific with local geo-targeting
#### **Roof Repairs (roof-repairs.php)** #### **Roof Repairs (roof-repairs.php)**
- **Title**: "Expert Roof Repairs | Emergency Roofer in Accrington" - **Title**: "Expert Roof Repairs | Emergency Roofer in Accrington"
- **Description**: Emergency services focus with urgency keywords - **Description**: Emergency services focus with urgency keywords
- **Keywords**: Emergency-focused with local targeting - **Keywords**: Emergency-focused with local targeting
#### **Roofing Solutions (roofing-solutions.php)** #### **Roofing Solutions (roofing-solutions.php)**
- **Title**: "New Roof Installation | Roofing Solutions Accrington" - **Title**: "New Roof Installation | Roofing Solutions Accrington"
- **Description**: New installation focus with material variety - **Description**: New installation focus with material variety
- **Keywords**: Installation-focused with material types - **Keywords**: Installation-focused with material types
#### **Roofline Services (roofline-services.php)** #### **Roofline Services (roofline-services.php)**
- **Title**: "UPVC Roofline Services | Guttering & Fascias Accrington" - **Title**: "UPVC Roofline Services | Guttering & Fascias Accrington"
- **Description**: Specific to UPVC and roofline components - **Description**: Specific to UPVC and roofline components
- **Keywords**: UPVC-focused with component-specific terms - **Keywords**: UPVC-focused with component-specific terms
#### **Cleaning Services (cleaning.php)** #### **Cleaning Services (cleaning.php)**
- **Title**: "Roof Cleaning & Moss Removal | Gutter Cleaning Accrington" - **Title**: "Roof Cleaning & Moss Removal | Gutter Cleaning Accrington"
- **Description**: Maintenance and cleaning service focus - **Description**: Maintenance and cleaning service focus
- **Keywords**: Cleaning and maintenance specific - **Keywords**: Cleaning and maintenance specific
#### **Projects (projects.php)** #### **Projects (projects.php)**
- **Title**: "Recent Roofing Projects | Completed Work Accrington" - **Title**: "Recent Roofing Projects | Completed Work Accrington"
- **Description**: Portfolio and quality workmanship focus - **Description**: Portfolio and quality workmanship focus
- **Keywords**: Project and portfolio focused - **Keywords**: Project and portfolio focused
#### **Contact (contact.php)** #### **Contact (contact.php)**
- **Title**: "Contact Us | Get a Free Quote | Roofer in Accrington" - **Title**: "Contact Us | Get a Free Quote | Roofer in Accrington"
- **Description**: Quote generation and contact focus - **Description**: Quote generation and contact focus
- **Keywords**: Contact and quote focused - **Keywords**: Contact and quote focused
#### **Blog (blog.php)** #### **Blog (blog.php)**
- **Title**: "Roofing Blog | Tips & Advice | Roofer in Accrington" - **Title**: "Roofing Blog | Tips & Advice | Roofer in Accrington"
- **Description**: Authority and expertise positioning - **Description**: Authority and expertise positioning
- **Keywords**: Educational and advice focused - **Keywords**: Educational and advice focused
@ -59,6 +69,7 @@ All pages have been updated with improved, targeted meta descriptions and keywor
### 2. **Global Meta Configuration Updates** ### 2. **Global Meta Configuration Updates**
Updated `meta/config.php`: Updated `meta/config.php`:
- Default descriptions now include "roofer in Accrington" - Default descriptions now include "roofer in Accrington"
- Improved geographic targeting with Lancashire, Blackburn, Preston - Improved geographic targeting with Lancashire, Blackburn, Preston
- Enhanced service-specific keyword targeting - Enhanced service-specific keyword targeting
@ -66,6 +77,7 @@ Updated `meta/config.php`:
### 3. **Advanced Schema.org Structured Data** ### 3. **Advanced Schema.org Structured Data**
#### **Base Business Schema** (in `meta/meta.php`) #### **Base Business Schema** (in `meta/meta.php`)
- `RoofingContractor` schema type - `RoofingContractor` schema type
- Complete business information including: - Complete business information including:
- Service areas (Accrington, Blackburn, Preston, Lancashire) - Service areas (Accrington, Blackburn, Preston, Lancashire)
@ -76,6 +88,7 @@ Updated `meta/config.php`:
- Customer reviews and ratings - Customer reviews and ratings
#### **Page-Specific Schema** (new `meta/schema.php`) #### **Page-Specific Schema** (new `meta/schema.php`)
- Dynamic schema generation based on current page - Dynamic schema generation based on current page
- Service-specific schema for each service page - Service-specific schema for each service page
- ContactPage schema for contact - ContactPage schema for contact
@ -84,6 +97,7 @@ Updated `meta/config.php`:
- Breadcrumb navigation schema - Breadcrumb navigation schema
#### **Enhanced Local Business Schema** (new `meta/local-business-schema.php`) #### **Enhanced Local Business Schema** (new `meta/local-business-schema.php`)
- Comprehensive local business markup with: - Comprehensive local business markup with:
- Extended service area coverage - Extended service area coverage
- Detailed service catalog with offers - Detailed service catalog with offers
@ -95,12 +109,14 @@ Updated `meta/config.php`:
### 4. **Technical SEO Improvements** ### 4. **Technical SEO Improvements**
#### **Updated Sitemap** (sitemap-updated.xml) #### **Updated Sitemap** (sitemap-updated.xml)
- Added changefreq attributes for better crawling - Added changefreq attributes for better crawling
- Prioritized pages based on importance - Prioritized pages based on importance
- Updated timestamps - Updated timestamps
- Added blog page - Added blog page
#### **Robots.txt** (new file) #### **Robots.txt** (new file)
- Optimized crawler access - Optimized crawler access
- Protected sensitive directories - Protected sensitive directories
- Allowed important assets (CSS, JS, images) - Allowed important assets (CSS, JS, images)
@ -110,11 +126,13 @@ Updated `meta/config.php`:
### 5. **Local SEO Focus** ### 5. **Local SEO Focus**
**Geographic Targeting:** **Geographic Targeting:**
- Primary: Accrington (main location) - Primary: Accrington (main location)
- Secondary: Blackburn, Preston, Burnley, Clitheroe - Secondary: Blackburn, Preston, Burnley, Clitheroe
- Regional: Lancashire - Regional: Lancashire
**Service Area Coverage:** **Service Area Coverage:**
- Emergency services across Lancashire - Emergency services across Lancashire
- Local business schema with precise geo-coordinates - Local business schema with precise geo-coordinates
- Area-specific service descriptions - Area-specific service descriptions
@ -128,8 +146,9 @@ Updated `meta/config.php`:
## Implementation Notes ## Implementation Notes
### **Files Modified:** ### **Files Modified:**
1. `index.php` - Enhanced homepage SEO 1. `index.php` - Enhanced homepage SEO
2. `about.php` - About page optimization 2. `about.php` - About page optimization
3. `services.php` - Services page SEO 3. `services.php` - Services page SEO
4. `roof-repairs.php` - Emergency repairs focus 4. `roof-repairs.php` - Emergency repairs focus
5. `roofing-solutions.php` - Installation focus 5. `roofing-solutions.php` - Installation focus
@ -142,6 +161,7 @@ Updated `meta/config.php`:
12. `meta/meta.php` - Schema integration 12. `meta/meta.php` - Schema integration
### **Files Created:** ### **Files Created:**
1. `meta/schema.php` - Page-specific schema system 1. `meta/schema.php` - Page-specific schema system
2. `meta/local-business-schema.php` - Enhanced business schema 2. `meta/local-business-schema.php` - Enhanced business schema
3. `robots.txt` - Search engine directives 3. `robots.txt` - Search engine directives
@ -150,18 +170,21 @@ Updated `meta/config.php`:
## SEO Benefits Achieved ## SEO Benefits Achieved
### **Improved Local Ranking Factors:** ### **Improved Local Ranking Factors:**
- ✅ "Roofer in Accrington" targeting on all pages - ✅ "Roofer in Accrington" targeting on all pages
- ✅ Local schema markup with geo-coordinates - ✅ Local schema markup with geo-coordinates
- ✅ Extended service area coverage - ✅ Extended service area coverage
- ✅ Local business information consistency - ✅ Local business information consistency
### **Enhanced Technical SEO:** ### **Enhanced Technical SEO:**
- ✅ Comprehensive structured data - ✅ Comprehensive structured data
- ✅ Page-specific meta optimization - ✅ Page-specific meta optimization
- ✅ Improved site architecture - ✅ Improved site architecture
- ✅ Better crawlability - ✅ Better crawlability
### **Content Optimization:** ### **Content Optimization:**
- ✅ Service-specific landing pages - ✅ Service-specific landing pages
- ✅ Emergency services emphasis - ✅ Emergency services emphasis
- ✅ Local expertise positioning - ✅ Local expertise positioning

222
blog.php
View File

@ -13,122 +13,122 @@ include_once $URlsorrection . "includes/nav.php";
<section class="ftco-section"> <section class="ftco-section">
<div class="container"> <div class="container">
<div class="row d-flex"> <div class="row d-flex">
<div class="col-md-4 d-flex ftco-animate"> <div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch"> <div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_1.jpg');"> <a href="blog-single.html" class="block-20" style="background-image: url('images/image_1.jpg');">
</a> </a>
<div class="text p-3"> <div class="text p-3">
<div class="posted mb-3 d-flex"> <div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_2.jpg);"></div> <div class="img author" style="background-image: url(images/person_2.jpg);"></div>
<div class="desc pl-3"> <div class="desc pl-3">
<span>Posted by John doe</span> <span>Posted by John doe</span>
<span>24 March 2020</span> <span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div> </div>
</div> </div>
</div> <h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
<div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_2.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_3.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
<div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_3.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_1.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
<div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_4.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_2.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
<div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_5.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_3.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
<div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_6.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_1.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
</div>
<div class="row mt-5">
<div class="col text-center">
<div class="block-27">
<ul>
<li><a href="#">&lt;</a></li>
<li class="active"><span>1</span></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">&gt;</a></li>
</ul>
</div>
</div> </div>
</div> </div>
</div> </div>
</section> <div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_2.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_3.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
<div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_3.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_1.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
<div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_4.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_2.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
<div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_5.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_3.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
<div class="col-md-4 d-flex ftco-animate">
<div class="blog-entry align-self-stretch">
<a href="blog-single.html" class="block-20" style="background-image: url('images/image_6.jpg');">
</a>
<div class="text p-3">
<div class="posted mb-3 d-flex">
<div class="img author" style="background-image: url(images/person_1.jpg);"></div>
<div class="desc pl-3">
<span>Posted by John doe</span>
<span>24 March 2020</span>
</div>
</div>
<h3 class="heading"><a href="#">How Roofing Charge for Their Services</a></h3>
</div>
</div>
</div>
</div>
<div class="row mt-5">
<div class="col text-center">
<div class="block-27">
<ul>
<li><a href="#">&lt;</a></li>
<li class="active"><span>1</span></li>
<li><a href="#">2</a></li>
<li><a href="#">3</a></li>
<li><a href="#">4</a></li>
<li><a href="#">5</a></li>
<li><a href="#">&gt;</a></li>
</ul>
</div>
</div>
</div>
</div>
</section>
<?php <?php

6
css/animate.min.css vendored Normal file

File diff suppressed because one or more lines are too long

9
css/bootstrap-datepicker.min.css vendored Normal file

File diff suppressed because one or more lines are too long

1
css/flaticon.min.css vendored Normal file
View File

@ -0,0 +1 @@
@font-face{font-family:Flaticon;src:url("../fonts/flaticon/font/Flaticon.eot");src:url("../fonts/flaticon/font/Flaticon.eot?#iefix") format("embedded-opentype"),url("../fonts/flaticon/font/Flaticon.woff") format("woff"),url("../fonts/flaticon/font/Flaticon.ttf") format("truetype"),url("../fonts/flaticon/font/Flaticon.svg#Flaticon") format("svg");font-weight:400;font-style:normal}@media screen and (-webkit-min-device-pixel-ratio:0){@font-face{font-family:Flaticon;src:url("../fonts/flaticon/font/Flaticon.svg#Flaticon") format("svg")}}[class*=" flaticon-"]:after,[class*=" flaticon-"]:before,[class^=flaticon-]:after,[class^=flaticon-]:before{font-family:Flaticon;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.flaticon-roof-5:before{content:"\f100"}.flaticon-roof-1:before{content:"\f101"}.flaticon-roof-2:before{content:"\f102"}.flaticon-roof-3:before{content:"\f103"}.flaticon-roof-4:before{content:"\f104"}.flaticon-roof:before{content:"\f105"}

1
css/jquery.timepicker.min.css vendored Normal file
View File

@ -0,0 +1 @@
.ui-timepicker-wrapper{overflow-y:auto;max-height:150px;width:6.5em;background:#fff;border:1px solid #ddd;-webkit-box-shadow:0 5px 10px rgba(0,0,0,.2);-moz-box-shadow:0 5px 10px rgba(0,0,0,.2);box-shadow:0 5px 10px rgba(0,0,0,.2);outline:0;z-index:10001;margin:0}.ui-timepicker-wrapper.ui-timepicker-with-duration{width:13em}.ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-30,.ui-timepicker-wrapper.ui-timepicker-with-duration.ui-timepicker-step-60{width:11em}.ui-timepicker-list{margin:0;padding:0;list-style:none}.ui-timepicker-duration{margin-left:5px;color:#888}.ui-timepicker-list:hover .ui-timepicker-duration{color:#888}.ui-timepicker-list li{padding:3px 0 3px 5px;cursor:pointer;white-space:nowrap;color:#000;list-style:none;margin:0}.ui-timepicker-list:hover .ui-timepicker-selected{background:#fff;color:#000}.ui-timepicker-list .ui-timepicker-selected:hover,.ui-timepicker-list li:hover,li.ui-timepicker-selected{background:#1980ec;color:#fff}.ui-timepicker-list li:hover .ui-timepicker-duration,li.ui-timepicker-selected .ui-timepicker-duration{color:#ccc}.ui-timepicker-list li.ui-timepicker-disabled,.ui-timepicker-list li.ui-timepicker-disabled:hover,.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{color:#888;cursor:default}.ui-timepicker-list li.ui-timepicker-disabled:hover,.ui-timepicker-list li.ui-timepicker-selected.ui-timepicker-disabled{background:#f2f2f2}

1
css/magnific-popup.min.css vendored Normal file
View File

@ -0,0 +1 @@
.mfp-bg{top:0;left:0;width:100%;height:100%;z-index:1042;overflow:hidden;position:fixed;background:#0b0b0b;opacity:.8}.mfp-wrap{top:0;left:0;width:100%;height:100%;z-index:1043;position:fixed;outline:0!important;-webkit-backface-visibility:hidden}.mfp-container{text-align:center;position:absolute;width:100%;height:100%;left:0;top:0;padding:0 8px;box-sizing:border-box}.mfp-container:before{content:'';display:inline-block;height:100%;vertical-align:middle}.mfp-align-top .mfp-container:before{display:none}.mfp-content{position:relative;display:inline-block;vertical-align:middle;margin:0 auto;text-align:left;z-index:1045}.mfp-ajax-holder .mfp-content,.mfp-inline-holder .mfp-content{width:100%;cursor:auto}.mfp-ajax-cur{cursor:progress}.mfp-zoom-out-cur,.mfp-zoom-out-cur .mfp-image-holder .mfp-close{cursor:-moz-zoom-out;cursor:-webkit-zoom-out;cursor:zoom-out}.mfp-zoom{cursor:pointer;cursor:-webkit-zoom-in;cursor:-moz-zoom-in;cursor:zoom-in}.mfp-auto-cursor .mfp-content{cursor:auto}.mfp-arrow,.mfp-close,.mfp-counter,.mfp-preloader{-webkit-user-select:none;-moz-user-select:none;user-select:none}.mfp-loading.mfp-figure{display:none}.mfp-hide{display:none!important}.mfp-preloader{color:#ccc;position:absolute;top:50%;width:auto;text-align:center;margin-top:-.8em;left:8px;right:8px;z-index:1044}.mfp-preloader a{color:#ccc}.mfp-preloader a:hover{color:#fff}.mfp-s-ready .mfp-preloader{display:none}.mfp-s-error .mfp-content{display:none}button.mfp-arrow,button.mfp-close{overflow:visible;cursor:pointer;background:0 0;border:0;-webkit-appearance:none;display:block;outline:0;padding:0;z-index:1046;box-shadow:none;touch-action:manipulation}button::-moz-focus-inner{padding:0;border:0}.mfp-close{width:44px;height:44px;line-height:44px;position:absolute;right:0;top:0;text-decoration:none;text-align:center;opacity:.65;padding:0 0 18px 10px;color:#fff;font-style:normal;font-size:28px;font-family:Arial,Baskerville,monospace}.mfp-close:focus,.mfp-close:hover{opacity:1}.mfp-close:active{top:1px}.mfp-close-btn-in .mfp-close{color:#333}.mfp-iframe-holder .mfp-close,.mfp-image-holder .mfp-close{color:#fff;right:-6px;text-align:right;padding-right:6px;width:100%}.mfp-counter{position:absolute;top:0;right:0;color:#ccc;font-size:12px;line-height:18px;white-space:nowrap}.mfp-arrow{position:absolute;opacity:.65;margin:0;top:50%;margin-top:-55px;padding:0;width:90px;height:110px;-webkit-tap-highlight-color:transparent}.mfp-arrow:active{margin-top:-54px}.mfp-arrow:focus,.mfp-arrow:hover{opacity:1}.mfp-arrow:after,.mfp-arrow:before{content:'';display:block;width:0;height:0;position:absolute;left:0;top:0;margin-top:35px;margin-left:35px;border:medium inset transparent}.mfp-arrow:after{border-top-width:13px;border-bottom-width:13px;top:8px}.mfp-arrow:before{border-top-width:21px;border-bottom-width:21px;opacity:.7}.mfp-arrow-left{left:0}.mfp-arrow-left:after{border-right:17px solid #fff;margin-left:31px}.mfp-arrow-left:before{margin-left:25px;border-right:27px solid #3f3f3f}.mfp-arrow-right{right:0}.mfp-arrow-right:after{border-left:17px solid #fff;margin-left:39px}.mfp-arrow-right:before{border-left:27px solid #3f3f3f}.mfp-iframe-holder{padding-top:40px;padding-bottom:40px}.mfp-iframe-holder .mfp-content{line-height:0;width:100%;max-width:900px}.mfp-iframe-holder .mfp-close{top:-40px}.mfp-iframe-scaler{width:100%;height:0;overflow:hidden;padding-top:56.25%}.mfp-iframe-scaler iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,.6);background:#000}img.mfp-img{width:auto;max-width:100%;height:auto;display:block;line-height:0;box-sizing:border-box;padding:40px 0 40px;margin:0 auto}.mfp-figure{line-height:0}.mfp-figure:after{content:'';position:absolute;left:0;top:40px;bottom:40px;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,.6);background:#444}.mfp-figure small{color:#bdbdbd;display:block;font-size:12px;line-height:14px}.mfp-figure figure{margin:0}.mfp-bottom-bar{margin-top:-36px;position:absolute;top:100%;left:0;width:100%;cursor:auto}.mfp-title{text-align:left;line-height:18px;color:#f3f3f3;word-wrap:break-word;padding-right:36px}.mfp-image-holder .mfp-content{max-width:100%}.mfp-gallery .mfp-image-holder .mfp-figure{cursor:pointer}@media screen and (max-width:800px) and (orientation:landscape),screen and (max-height:300px){.mfp-img-mobile .mfp-image-holder{padding-left:0;padding-right:0}.mfp-img-mobile img.mfp-img{padding:0}.mfp-img-mobile .mfp-figure:after{top:0;bottom:0}.mfp-img-mobile .mfp-figure small{display:inline;margin-left:5px}.mfp-img-mobile .mfp-bottom-bar{background:rgba(0,0,0,.6);bottom:0;margin:0;top:auto;padding:3px 5px;position:fixed;box-sizing:border-box}.mfp-img-mobile .mfp-bottom-bar:empty{padding:0}.mfp-img-mobile .mfp-counter{right:5px;top:3px}.mfp-img-mobile .mfp-close{top:0;right:0;width:35px;height:35px;line-height:35px;background:rgba(0,0,0,.6);position:fixed;text-align:center;padding:0}}@media all and (max-width:900px){.mfp-arrow{-webkit-transform:scale(.75);transform:scale(.75)}.mfp-arrow-left{-webkit-transform-origin:0;transform-origin:0}.mfp-arrow-right{-webkit-transform-origin:100%;transform-origin:100%}.mfp-container{padding-left:6px;padding-right:6px}}

1
css/padding.min.css vendored Normal file
View File

@ -0,0 +1 @@
.padding-top-10{padding-top:10px}.padding-top-20{padding-top:20px}.padding-top-30{padding-top:30px}.padding-top-40{padding-top:40px}.padding-top-50{padding-top:50px}.padding-top-60{padding-top:60px}.padding-top-70{padding-top:70px}.padding-top-80{padding-top:80px}.padding-top-90{padding-top:90px}.padding-top-100{padding-top:100px}.padding-top-110{padding-top:110px}.padding-top-120{padding-top:120px}.padding-top-130{padding-top:130px}.padding-top-140{padding-top:140px}.padding-top-150{padding-top:150px}.padding-top-160{padding-top:160px}.padding-top-170{padding-top:170px}.padding-top-180{padding-top:180px}.padding-top-190{padding-top:190px}.padding-top-200{padding-top:200px}.padding-right-10{padding-right:10px}.padding-right-20{padding-right:20px}.padding-right-30{padding-right:30px}.padding-right-40{padding-right:40px}.padding-right-50{padding-right:50px}.padding-right-60{padding-right:60px}.padding-right-70{padding-right:70px}.padding-right-80{padding-right:80px}.padding-right-90{padding-right:90px}.padding-right-100{padding-right:100px}.padding-right-110{padding-right:110px}.padding-right-120{padding-right:120px}.padding-right-130{padding-right:130px}.padding-right-140{padding-right:140px}.padding-right-150{padding-right:150px}.padding-right-160{padding-right:160px}.padding-right-170{padding-right:170px}.padding-right-180{padding-right:180px}.padding-right-190{padding-right:190px}.padding-right-200{padding-right:200px}.padding-bottom-10{padding-bottom:10px}.padding-bottom-20{padding-bottom:20px}.padding-bottom-30{padding-bottom:30px}.padding-bottom-40{padding-bottom:40px}.padding-bottom-50{padding-bottom:50px}.padding-bottom-60{padding-bottom:60px}.padding-bottom-70{padding-bottom:70px}.padding-bottom-80{padding-bottom:80px}.padding-bottom-90{padding-bottom:90px}.padding-bottom-100{padding-bottom:100px}.padding-bottom-110{padding-bottom:110px}.padding-bottom-120{padding-bottom:120px}.padding-bottom-130{padding-bottom:130px}.padding-bottom-140{padding-bottom:140px}.padding-bottom-150{padding-bottom:150px}.padding-bottom-160{padding-bottom:160px}.padding-bottom-170{padding-bottom:170px}.padding-bottom-180{padding-bottom:180px}.padding-bottom-190{padding-bottom:190px}.padding-bottom-200{padding-bottom:200px}.padding-left-10{padding-left:10px}.padding-left-20{padding-left:20px}.padding-left-30{padding-left:30px}.padding-left-40{padding-left:40px}.padding-left-50{padding-left:50px}.padding-left-60{padding-left:60px}.padding-left-70{padding-left:70px}.padding-left-80{padding-left:80px}.padding-left-90{padding-left:90px}.padding-left-100{padding-left:100px}.padding-left-110{padding-left:110px}.padding-left-120{padding-left:120px}.padding-left-130{padding-left:130px}.padding-left-140{padding-left:140px}.padding-left-150{padding-left:150px}.padding-left-160{padding-left:160px}.padding-left-170{padding-left:170px}.padding-left-180{padding-left:180px}.padding-left-190{padding-left:190px}.padding-left-200{padding-left:200px}.padding-10{padding:10px}.padding-20{padding:20px}.padding-30{padding:30px}.padding-40{padding:40px}.padding-50{padding:50px}.padding-60{padding:60px}.padding-70{padding:70px}.padding-80{padding:80px}.padding-90{padding:90px}.padding-100{padding:100px}.padding-110{padding:110px}.padding-120{padding:120px}.padding-130{padding:130px}.padding-140{padding:140px}.padding-150{padding:150px}.padding-160{padding:160px}.padding-170{padding:170px}.padding-180{padding:180px}.padding-190{padding:190px}.padding-200{padding:200px}

6
css/style.min.css vendored Normal file

File diff suppressed because one or more lines are too long

View File

@ -60,18 +60,18 @@
<script src="<?= $URLcorrection ?>js/jquery-migrate-3.0.1.min.js"></script> <script src="<?= $URLcorrection ?>js/jquery-migrate-3.0.1.min.js"></script>
<script src="<?= $URLcorrection ?>js/popper.min.js"></script> <script src="<?= $URLcorrection ?>js/popper.min.js"></script>
<script src="<?= $URLcorrection ?>js/bootstrap.min.js"></script> <script src="<?= $URLcorrection ?>js/bootstrap.min.js"></script>
<script src="<?= $URLcorrection ?>js/jquery.easing.1.3.js"></script> <script src="<?= $URLcorrection ?>js/jquery.easing.1.3.min.js"></script>
<script src="<?= $URLcorrection ?>js/jquery.waypoints.min.js"></script> <script src="<?= $URLcorrection ?>js/jquery.waypoints.min.js"></script>
<script src="<?= $URLcorrection ?>js/jquery.stellar.min.js"></script> <script src="<?= $URLcorrection ?>js/jquery.stellar.min.js"></script>
<script src="<?= $URLcorrection ?>js/jquery.animateNumber.min.js"></script> <script src="<?= $URLcorrection ?>js/jquery.animateNumber.min.js"></script>
<script src="<?= $URLcorrection ?>js/bootstrap-datepicker.js"></script> <script src="<?= $URLcorrection ?>js/bootstrap-datepicker.min.js"></script>
<script src="<?= $URLcorrection ?>js/jquery.timepicker.min.js"></script> <script src="<?= $URLcorrection ?>js/jquery.timepicker.min.js"></script>
<script src="<?= $URLcorrection ?>js/owl.carousel.min.js"></script> <script src="<?= $URLcorrection ?>js/owl.carousel.min.js"></script>
<script src="<?= $URLcorrection ?>js/jquery.magnific-popup.min.js"></script> <script src="<?= $URLcorrection ?>js/jquery.magnific-popup.min.js"></script>
<script src="<?= $URLcorrection ?>js/scrollax.min.js"></script> <script src="<?= $URLcorrection ?>js/scrollax.min.js"></script>
<script src="<?= $URLcorrection ?>js/main.js"></script> <script src="<?= $URLcorrection ?>js/main.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
<script src="<?= $URLcorrection ?>js/script.js"></script> <script src="<?= $URLcorrection ?>js/script.min.js"></script>
</body> </body>

View File

@ -10,15 +10,15 @@
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no"> <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<link href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,500,600,700,800,900&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css?family=Poppins:200,300,400,500,600,700,800,900&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css">
<link rel="stylesheet" href="<?= $URLcorrection ?>css/animate.css"> <link rel="stylesheet" href="<?= $URLcorrection ?>css/animate.min.css">
<link rel="stylesheet" href="<?= $URLcorrection ?>css/owl.carousel.min.css"> <link rel="stylesheet" href="<?= $URLcorrection ?>css/owl.carousel.min.css">
<link rel="stylesheet" href="<?= $URLcorrection ?>css/owl.theme.default.min.css"> <link rel="stylesheet" href="<?= $URLcorrection ?>css/owl.theme.default.min.css">
<link rel="stylesheet" href="<?= $URLcorrection ?>css/magnific-popup.css"> <link rel="stylesheet" href="<?= $URLcorrection ?>css/magnific-popup.min.css">
<link rel="stylesheet" href="<?= $URLcorrection ?>css/bootstrap-datepicker.css"> <link rel="stylesheet" href="<?= $URLcorrection ?>css/bootstrap-datepicker.min.css">
<link rel="stylesheet" href="<?= $URLcorrection ?>css/jquery.timepicker.css"> <link rel="stylesheet" href="<?= $URLcorrection ?>css/jquery.timepicker.min.css">
<link rel="stylesheet" href="<?= $URLcorrection ?>css/flaticon.css"> <link rel="stylesheet" href="<?= $URLcorrection ?>css/flaticon.min.css">
<link rel="stylesheet" href="<?= $URLcorrection ?>css/style.css"> <link rel="stylesheet" href="<?= $URLcorrection ?>css/style.min.css">
<link rel="stylesheet" href="<?= $URLcorrection ?>css/padding.css"> <link rel="stylesheet" href="<?= $URLcorrection ?>css/padding.min.css">
<link rel="stylesheet" type="text/css" href="<?= $URLcorrection ?>fontawesome/css/all.min.css"> <link rel="stylesheet" type="text/css" href="<?= $URLcorrection ?>fontawesome/css/all.min.css">
</head> </head>

View File

@ -30,7 +30,7 @@
<img src="<?= $URLcorection ?>images/logo/Warmseal-White-Transparent.webp" class="logo" alt="Warmseal Logo"> <img src="<?= $URLcorection ?>images/logo/Warmseal-White-Transparent.webp" class="logo" alt="Warmseal Logo">
</a> </a>
<div class="text w-100"> <div class="text w-100">
<h1 class="mb-4 hero-text">Quality roofing at a affordable price</h1> <h2 class="mb-4 hero-text">Quality roofing at an affordable price</h2>
<p><a href="<?= $URLcorection ?>contact" class="btn btn-primary">Book a Free Quote</a></p> <p><a href="<?= $URLcorection ?>contact" class="btn btn-primary">Book a Free Quote</a></p>
</div> </div>
</div> </div>

1
js/bootstrap-datepicker.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
js/google-map.min.js vendored Normal file
View File

@ -0,0 +1 @@
var google;function init(){for(var e={zoom:7,center:new google.maps.LatLng(40.69847032728747,-73.9514422416687),scrollwheel:!1,styles:[{featureType:"administrative.country",elementType:"geometry",stylers:[{visibility:"simplified"},{hue:"#ff0000"}]}]},o=document.getElementById("map"),n=new google.maps.Map(o,e),t=["New York"],a=0;a<t.length;a++)$.getJSON("http://maps.googleapis.com/maps/api/geocode/json?address="+t[a]+"&sensor=false",null,function(e){e=e.results[0].geometry.location,e=new google.maps.LatLng(e.lat,e.lng);new google.maps.Marker({position:e,map:n,icon:"images/loc.png"})})}google.maps.event.addDomListener(window,"load",init);

1
js/jquery.easing.1.3.min.js vendored Normal file
View File

@ -0,0 +1 @@
jQuery.easing.jswing=jQuery.easing.swing,jQuery.extend(jQuery.easing,{def:"easeOutQuad",swing:function(n,t,e,u,a){return jQuery.easing[jQuery.easing.def](n,t,e,u,a)},easeInQuad:function(n,t,e,u,a){return u*(t/=a)*t+e},easeOutQuad:function(n,t,e,u,a){return-u*(t/=a)*(t-2)+e},easeInOutQuad:function(n,t,e,u,a){return(t/=a/2)<1?u/2*t*t+e:-u/2*(--t*(t-2)-1)+e},easeInCubic:function(n,t,e,u,a){return u*(t/=a)*t*t+e},easeOutCubic:function(n,t,e,u,a){return u*((t=t/a-1)*t*t+1)+e},easeInOutCubic:function(n,t,e,u,a){return(t/=a/2)<1?u/2*t*t*t+e:u/2*((t-=2)*t*t+2)+e},easeInQuart:function(n,t,e,u,a){return u*(t/=a)*t*t*t+e},easeOutQuart:function(n,t,e,u,a){return-u*((t=t/a-1)*t*t*t-1)+e},easeInOutQuart:function(n,t,e,u,a){return(t/=a/2)<1?u/2*t*t*t*t+e:-u/2*((t-=2)*t*t*t-2)+e},easeInQuint:function(n,t,e,u,a){return u*(t/=a)*t*t*t*t+e},easeOutQuint:function(n,t,e,u,a){return u*((t=t/a-1)*t*t*t*t+1)+e},easeInOutQuint:function(n,t,e,u,a){return(t/=a/2)<1?u/2*t*t*t*t*t+e:u/2*((t-=2)*t*t*t*t+2)+e},easeInSine:function(n,t,e,u,a){return-u*Math.cos(t/a*(Math.PI/2))+u+e},easeOutSine:function(n,t,e,u,a){return u*Math.sin(t/a*(Math.PI/2))+e},easeInOutSine:function(n,t,e,u,a){return-u/2*(Math.cos(Math.PI*t/a)-1)+e},easeInExpo:function(n,t,e,u,a){return 0==t?e:u*Math.pow(2,10*(t/a-1))+e},easeOutExpo:function(n,t,e,u,a){return t==a?e+u:u*(1-Math.pow(2,-10*t/a))+e},easeInOutExpo:function(n,t,e,u,a){return 0==t?e:t==a?e+u:(t/=a/2)<1?u/2*Math.pow(2,10*(t-1))+e:u/2*(2-Math.pow(2,-10*--t))+e},easeInCirc:function(n,t,e,u,a){return-u*(Math.sqrt(1-(t/=a)*t)-1)+e},easeOutCirc:function(n,t,e,u,a){return u*Math.sqrt(1-(t=t/a-1)*t)+e},easeInOutCirc:function(n,t,e,u,a){return(t/=a/2)<1?-u/2*(Math.sqrt(1-t*t)-1)+e:u/2*(Math.sqrt(1-(t-=2)*t)+1)+e},easeInElastic:function(n,t,e,u,a){var r=1.70158,i=0,s=u;return 0==t?e:1==(t/=a)?e+u:(i=i||.3*a,r=s<Math.abs(u)?(s=u,i/4):i/(2*Math.PI)*Math.asin(u/s),-(s*Math.pow(2,10*--t)*Math.sin(2*Math.PI*(t*a-r)/i))+e)},easeOutElastic:function(n,t,e,u,a){var r=1.70158,i=0,s=u;return 0==t?e:1==(t/=a)?e+u:(i=i||.3*a,r=s<Math.abs(u)?(s=u,i/4):i/(2*Math.PI)*Math.asin(u/s),s*Math.pow(2,-10*t)*Math.sin(2*Math.PI*(t*a-r)/i)+u+e)},easeInOutElastic:function(n,t,e,u,a){var r=1.70158,i=0,s=u;return 0==t?e:2==(t/=a/2)?e+u:(i=i||a*(.3*1.5),r=s<Math.abs(u)?(s=u,i/4):i/(2*Math.PI)*Math.asin(u/s),t<1?s*Math.pow(2,10*--t)*Math.sin(2*Math.PI*(t*a-r)/i)*-.5+e:s*Math.pow(2,-10*--t)*Math.sin(2*Math.PI*(t*a-r)/i)*.5+u+e)},easeInBack:function(n,t,e,u,a,r){return u*(t/=a)*t*(((r=null==r?1.70158:r)+1)*t-r)+e},easeOutBack:function(n,t,e,u,a,r){return u*((t=t/a-1)*t*(((r=null==r?1.70158:r)+1)*t+r)+1)+e},easeInOutBack:function(n,t,e,u,a,r){return null==r&&(r=1.70158),(t/=a/2)<1?u/2*(t*t*((1+(r*=1.525))*t-r))+e:u/2*((t-=2)*t*((1+(r*=1.525))*t+r)+2)+e},easeInBounce:function(n,t,e,u,a){return u-jQuery.easing.easeOutBounce(n,a-t,0,u,a)+e},easeOutBounce:function(n,t,e,u,a){return(t/=a)<1/2.75?u*(7.5625*t*t)+e:t<2/2.75?u*(7.5625*(t-=1.5/2.75)*t+.75)+e:t<2.5/2.75?u*(7.5625*(t-=2.25/2.75)*t+.9375)+e:u*(7.5625*(t-=2.625/2.75)*t+.984375)+e},easeInOutBounce:function(n,t,e,u,a){return t<a/2?.5*jQuery.easing.easeInBounce(n,2*t,0,u,a)+e:.5*jQuery.easing.easeOutBounce(n,2*t-a,0,u,a)+.5*u+e}});

1
js/main.min.js vendored Normal file
View File

@ -0,0 +1 @@
(n=>{n(window).stellar({responsive:!0,parallaxBackgrounds:!0,parallaxElements:!0,horizontalScrolling:!1,hideDistantElements:!1,scrollProperty:"scroll"}),n(".js-fullheight").css("height",n(window).height()),n(window).resize(function(){n(".js-fullheight").css("height",n(window).height())}),setTimeout(function(){0<n("#ftco-loader").length&&n("#ftco-loader").removeClass("show")},1),n(".home-slider").owlCarousel({loop:!0,autoplay:!0,margin:0,animateOut:"fadeOut",animateIn:"fadeIn",nav:!0,dots:!0,autoplayHoverPause:!1,items:1,navText:["<span class='ion-ios-arrow-back'></span>","<span class='ion-ios-arrow-forward'></span>"],responsive:{0:{items:1},600:{items:1},1e3:{items:1}}}),n(".carousel-testimony").owlCarousel({center:!0,loop:!0,items:1,margin:30,stagePadding:0,nav:!1,navText:['<span class="ion-ios-arrow-back">','<span class="ion-ios-arrow-forward">'],responsive:{0:{items:1},600:{items:2},1e3:{items:3}}}),n("nav .dropdown").hover(function(){var e=n(this);e.addClass("show"),e.find("> a").attr("aria-expanded",!0),e.find(".dropdown-menu").addClass("show")},function(){var e=n(this);e.removeClass("show"),e.find("> a").attr("aria-expanded",!1),e.find(".dropdown-menu").removeClass("show")}),n("#dropdown04").on("show.bs.dropdown",function(){console.log("show")}),n(".image-popup").magnificPopup({type:"image",closeOnContentClick:!0,closeBtnInside:!1,fixedContentPos:!0,mainClass:"mfp-no-margins mfp-with-zoom",gallery:{enabled:!0,navigateByImgClick:!0,preload:[0,1]},image:{verticalFit:!0},zoom:{enabled:!0,duration:300}}),n(".popup-youtube, .popup-vimeo, .popup-gmaps").magnificPopup({disableOn:700,type:"iframe",mainClass:"mfp-fade",removalDelay:160,preloader:!1,fixedContentPos:!1}),n("#section-counter").waypoint(function(e){var o;"down"!==e||n(this.element).hasClass("ftco-animated")||(o=n.animateNumber.numberStepFactories.separator(","),n(".number").each(function(){var e=n(this),a=e.data("number");console.log(a),e.animateNumber({number:a,numberStep:o},7e3)}))},{offset:"95%"}),n(".ftco-animate").waypoint(function(e){"down"!==e||n(this.element).hasClass("ftco-animated")||(n(this.element).addClass("item-animate"),setTimeout(function(){n("body .ftco-animate.item-animate").each(function(e){var a=n(this);setTimeout(function(){var e=a.data("animate-effect");"fadeIn"===e?a.addClass("fadeIn ftco-animated"):"fadeInLeft"===e?a.addClass("fadeInLeft ftco-animated"):"fadeInRight"===e?a.addClass("fadeInRight ftco-animated"):a.addClass("fadeInUp ftco-animated"),a.removeClass("item-animate")},50*e,"easeInOutExpo")})},100))},{offset:"95%"}),n(".appointment_date").datepicker({format:"m/d/yyyy",autoclose:!0}),n(".appointment_time").timepicker()})(jQuery);

1
js/script.min.js vendored Normal file
View File

@ -0,0 +1 @@
let carouselContainer=document.querySelector(".carousel-container"),imageRow=document.querySelector(".image-row"),imageItems=imageRow.querySelectorAll(".col-md-3"),numberOfVisible=4,scrollPosition=0,imageWidth,slideDuration=1e3,slideInterval=5e3,isAnimating=!1;function updateCarousel(){0<imageItems.length&&(imageWidth=imageItems[0].offsetWidth)}function slideCarousel(){!isAnimating&&imageWidth&&(isAnimating=!0,scrollPosition+=imageWidth,imageRow.style.transform=`translateX(-${scrollPosition}px)`,setTimeout(()=>{var e=imageRow.firstElementChild;imageRow.appendChild(e),imageRow.style.transition="none",imageRow.style.transform="translateX(0px)",scrollPosition=0,imageRow.offsetHeight,imageRow.style.transition="",imageItems=imageRow.querySelectorAll(".col-md-3"),isAnimating=!1},slideDuration))}function startSlidingCarousel(){setInterval(slideCarousel,slideInterval)}function initializeCarousel(){updateCarousel(),startSlidingCarousel(),window.addEventListener("resize",updateCarousel)}initializeCarousel();

View File

@ -47,5 +47,3 @@ $metatwitterimage = "$URLcorrection/media/favicons/android-chrome-512x512.png";
// $ometa['twittertitle'] = "Acorn Media - $PageTitle"; // $ometa['twittertitle'] = "Acorn Media - $PageTitle";
// $ometa['twitterdescription'] = "Acorn Media: Your hub for business web hosting, website design, and digital media services, including advertising and social media management."; // $ometa['twitterdescription'] = "Acorn Media: Your hub for business web hosting, website design, and digital media services, including advertising and social media management.";
// $ometa['twitterimage'] = "$URLcorrection/media/favicons/android-chrome-512x512.png"; // $ometa['twitterimage'] = "$URLcorrection/media/favicons/android-chrome-512x512.png";

View File

@ -1,12 +1,13 @@
<?php <?php
// Advanced Local Business Schema for Warmseal Roofing // Advanced Local Business Schema for Warmseal Roofing
function getLocalBusinessSchema() { function getLocalBusinessSchema()
{
return [ return [
"@context" => "https://schema.org", "@context" => "https://schema.org",
"@type" => "RoofingContractor", "@type" => "RoofingContractor",
"name" => "Warmseal Roofing", "name" => "Warmseal Roofing",
"alternateName" => ["Warmseal", "Warmseal Roofing Services"], "alternateName" => ["Warmseal", "Warmseal Roofing Services"],
"description" => "Professional roofer in Accrington, Lancashire providing expert roof repairs, installations, maintenance, guttering, and roofline services across Accrington, Blackburn, Preston and surrounding areas.", "description" => "Leading roofer in Accrington, Lancashire. Expert roof repairs, installations & maintenance across Accrington, Blackburn, Preston. Free quotes available.",
"url" => "https://warmseal-roofing.co.uk", "url" => "https://warmseal-roofing.co.uk",
"logo" => "https://warmseal-roofing.co.uk/images/logo/Warmseal-Blue.svg", "logo" => "https://warmseal-roofing.co.uk/images/logo/Warmseal-Blue.svg",
"image" => [ "image" => [
@ -20,7 +21,7 @@ function getLocalBusinessSchema() {
"@type" => "PostalAddress", "@type" => "PostalAddress",
"streetAddress" => "", "streetAddress" => "",
"addressLocality" => "Accrington", "addressLocality" => "Accrington",
"addressRegion" => "Lancashire", "addressRegion" => "Lancashire",
"postalCode" => "", "postalCode" => "",
"addressCountry" => "GB" "addressCountry" => "GB"
], ],
@ -77,7 +78,7 @@ function getLocalBusinessSchema() {
], ],
"serviceType" => [ "serviceType" => [
"Emergency Roof Repairs", "Emergency Roof Repairs",
"Roof Installation", "Roof Installation",
"Roof Maintenance", "Roof Maintenance",
"Storm Damage Repair", "Storm Damage Repair",
"Leak Repairs", "Leak Repairs",
@ -92,7 +93,7 @@ function getLocalBusinessSchema() {
"Gutter Repairs", "Gutter Repairs",
"UPVC Roofline", "UPVC Roofline",
"Fascias Installation", "Fascias Installation",
"Soffits Installation", "Soffits Installation",
"Dry Ridge Systems", "Dry Ridge Systems",
"Dry Verge Systems", "Dry Verge Systems",
"Roof Cleaning", "Roof Cleaning",
@ -169,7 +170,7 @@ function getLocalBusinessSchema() {
"@type" => "OpeningHoursSpecification", "@type" => "OpeningHoursSpecification",
"dayOfWeek" => [ "dayOfWeek" => [
"Monday", "Monday",
"Tuesday", "Tuesday",
"Wednesday", "Wednesday",
"Thursday", "Thursday",
"Friday" "Friday"
@ -180,7 +181,7 @@ function getLocalBusinessSchema() {
[ [
"@type" => "OpeningHoursSpecification", "@type" => "OpeningHoursSpecification",
"dayOfWeek" => "Saturday", "dayOfWeek" => "Saturday",
"opens" => "08:00", "opens" => "08:00",
"closes" => "16:00" "closes" => "16:00"
] ]
], ],
@ -272,4 +273,3 @@ function getLocalBusinessSchema() {
] ]
]; ];
} }
?>

View File

@ -7,292 +7,292 @@ include_once $URLcorrection . "meta/config.php";
include_once $URLcorrection . "meta/schema.php"; include_once $URLcorrection . "meta/schema.php";
if (isset($ometa['title'])) { if (isset($ometa['title'])) {
$meta['title'] = $ometa['title']; $meta['title'] = $ometa['title'];
} else { } else {
$meta['title'] = $metatitle; $meta['title'] = $metatitle;
} }
if (isset($ometa['description'])) { if (isset($ometa['description'])) {
$meta['description'] = $ometa['description']; $meta['description'] = $ometa['description'];
} else { } else {
$meta['description'] = $metadescription; $meta['description'] = $metadescription;
} }
if (isset($ometa['keywords'])) { if (isset($ometa['keywords'])) {
$meta['keywords'] = $ometa['keywords']; $meta['keywords'] = $ometa['keywords'];
} else { } else {
$meta['keywords'] = $metakeywords; $meta['keywords'] = $metakeywords;
} }
if (isset($ometa['robots'])) { if (isset($ometa['robots'])) {
$meta['robots'] = $ometa['robots']; $meta['robots'] = $ometa['robots'];
} else { } else {
$meta['robots'] = $metarobots; $meta['robots'] = $metarobots;
} }
if (isset($ometa['language'])) { if (isset($ometa['language'])) {
$meta['language'] = $ometa['language']; $meta['language'] = $ometa['language'];
} else { } else {
$meta['language'] = $metalanguage; $meta['language'] = $metalanguage;
} }
if (isset($ometa['revisit-after'])) { if (isset($ometa['revisit-after'])) {
$meta['revisit-after'] = $ometa['revisit-after']; $meta['revisit-after'] = $ometa['revisit-after'];
} else { } else {
$meta['revisit-after'] = $metarevisit; $meta['revisit-after'] = $metarevisit;
} }
if (isset($ometa['author'])) { if (isset($ometa['author'])) {
$meta['author'] = $ometa['author']; $meta['author'] = $ometa['author'];
} else { } else {
$meta['author'] = $metaauthor; $meta['author'] = $metaauthor;
} }
if (isset($ometa['apple-touch-icon'])) { if (isset($ometa['apple-touch-icon'])) {
$meta['apple-touch-icon'] = $ometa['apple-touch-icon']; $meta['apple-touch-icon'] = $ometa['apple-touch-icon'];
} else { } else {
$meta['apple-touch-icon'] = $metaappleicon; $meta['apple-touch-icon'] = $metaappleicon;
} }
if (isset($ometa['icon32'])) { if (isset($ometa['icon32'])) {
$meta['icon32'] = $ometa['icon32']; $meta['icon32'] = $ometa['icon32'];
} else { } else {
$meta['icon32'] = $metaicon32; $meta['icon32'] = $metaicon32;
} }
if (isset($ometa['icon16'])) { if (isset($ometa['icon16'])) {
$meta['icon16'] = $ometa['icon16']; $meta['icon16'] = $ometa['icon16'];
} else { } else {
$meta['icon16'] = $metaicon16; $meta['icon16'] = $metaicon16;
} }
if (isset($ometa['site.webmanifest'])) { if (isset($ometa['site.webmanifest'])) {
$meta['site.webmanifest'] = $ometa['site.webmanifest']; $meta['site.webmanifest'] = $ometa['site.webmanifest'];
} else { } else {
$meta['site.webmanifest'] = $metamanifest; $meta['site.webmanifest'] = $metamanifest;
} }
if (isset($ometa['ogtype'])) { if (isset($ometa['ogtype'])) {
$meta['ogtype'] = $ometa['ogtype']; $meta['ogtype'] = $ometa['ogtype'];
} else { } else {
$meta['ogtype'] = $metaogtype; $meta['ogtype'] = $metaogtype;
} }
if (isset($ometa['ogurl'])) { if (isset($ometa['ogurl'])) {
$meta['ogurl'] = $ometa['ogurl']; $meta['ogurl'] = $ometa['ogurl'];
} else { } else {
$meta['ogurl'] = $metaogurl; $meta['ogurl'] = $metaogurl;
} }
if (isset($ometa['ogtitle'])) { if (isset($ometa['ogtitle'])) {
$meta['ogtitle'] = $ometa['ogtitle']; $meta['ogtitle'] = $ometa['ogtitle'];
} else { } else {
$meta['ogtitle'] = $metaogtitle; $meta['ogtitle'] = $metaogtitle;
} }
if (isset($ometa['ogdescription'])) { if (isset($ometa['ogdescription'])) {
$meta['ogdescription'] = $ometa['ogdescription']; $meta['ogdescription'] = $ometa['ogdescription'];
} else { } else {
$meta['ogdescription'] = $metaogdescription; $meta['ogdescription'] = $metaogdescription;
} }
if (isset($ometa['ogimage'])) { if (isset($ometa['ogimage'])) {
$meta['ogimage'] = $ometa['ogimage']; $meta['ogimage'] = $ometa['ogimage'];
} else { } else {
$meta['ogimage'] = $metaogimage; $meta['ogimage'] = $metaogimage;
} }
if (isset($ometa['twittercard'])) { if (isset($ometa['twittercard'])) {
$meta['twittercard'] = $ometa['twittercard']; $meta['twittercard'] = $ometa['twittercard'];
} else { } else {
$meta['twittercard'] = $metatwittercard; $meta['twittercard'] = $metatwittercard;
} }
if (isset($ometa['twitterurl'])) { if (isset($ometa['twitterurl'])) {
$meta['twitterurl'] = $ometa['twitterurl']; $meta['twitterurl'] = $ometa['twitterurl'];
} else { } else {
$meta['twitterurl'] = $metatwitterurl; $meta['twitterurl'] = $metatwitterurl;
} }
if (isset($ometa['twittertitle'])) { if (isset($ometa['twittertitle'])) {
$meta['twittertitle'] = $ometa['twittertitle']; $meta['twittertitle'] = $ometa['twittertitle'];
} else { } else {
$meta['twittertitle'] = $metatwittertitle; $meta['twittertitle'] = $metatwittertitle;
} }
if (isset($ometa['twitterdescription'])) { if (isset($ometa['twitterdescription'])) {
$meta['twitterdescription'] = $ometa['twitterdescription']; $meta['twitterdescription'] = $ometa['twitterdescription'];
} else { } else {
$meta['twitterdescription'] = $metatwitterdescription; $meta['twitterdescription'] = $metatwitterdescription;
} }
if (isset($ometa['twitterimage'])) { if (isset($ometa['twitterimage'])) {
$meta['twitterimage'] = $ometa['twitterimage']; $meta['twitterimage'] = $ometa['twitterimage'];
} else { } else {
$meta['twitterimage'] = $metatwitterimage; $meta['twitterimage'] = $metatwitterimage;
} }
?> ?>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<title><?=$meta['title']?></title> <title><?= $meta['title'] ?></title>
<meta name="title" content="<?=$meta['title']?>"> <meta name="title" content="<?= $meta['title'] ?>">
<meta name="description" content="<?=$meta['description']?>"> <meta name="description" content="<?= $meta['description'] ?>">
<meta name="keywords" content="<?=$meta['keywords']?>"> <meta name="keywords" content="<?= $meta['keywords'] ?>">
<meta name="robots" content="<?=$meta['robots']?>"> <meta name="robots" content="<?= $meta['robots'] ?>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="language" content="<?=$meta['language']?>"> <meta name="language" content="<?= $meta['language'] ?>">
<meta name="revisit-after" content="<?=$meta['revisit-after']?>"> <meta name="revisit-after" content="<?= $meta['revisit-after'] ?>">
<meta name="author" content="<?=$meta['author']?>"> <meta name="author" content="<?= $meta['author'] ?>">
<link rel="apple-touch-icon" sizes="180x180" href="<?=$meta['apple-touch-icon']?>"> <link rel="apple-touch-icon" sizes="180x180" href="<?= $meta['apple-touch-icon'] ?>">
<link rel="icon" type="image/png" sizes="32x32" href="<?=$meta['icon32']?>"> <link rel="icon" type="image/png" sizes="32x32" href="<?= $meta['icon32'] ?>">
<link rel="icon" type="image/png" sizes="16x16" href="<?=$meta['icon16']?>"> <link rel="icon" type="image/png" sizes="16x16" href="<?= $meta['icon16'] ?>">
<!--<link rel="manifest" href="--><?php //=$meta['manifest']?><!--">--> <!--<link rel="manifest" href="--><?php //=$meta['manifest']
?><!--">-->
<link rel="mask-icon" href="/meta/favicons/safari-pinned-tab.svg" color="#5bbad5"> <link rel="mask-icon" href="/meta/favicons/safari-pinned-tab.svg" color="#5bbad5">
<link rel="shortcut icon" href="/meta/favicons/favicon.ico"> <link rel="shortcut icon" href="/meta/favicons/favicon.ico">
<meta name="msapplication-TileColor" content="#da532c"> <meta name="msapplication-TileColor" content="#da532c">
<meta name="msapplication-config" content="/meta/favicons/browserconfig.xml"> <meta name="msapplication-config" content="/meta/favicons/browserconfig.xml">
<meta name="theme-color" content="#ffffff"> <meta name="theme-color" content="#ffffff">
<!-- Canonical URL -->
<link rel="canonical" href="https://warmseal-roofing.co.uk<?php echo $_SERVER['REQUEST_URI']; ?>" />
<!-- Open Graph / Facebook --> <!-- Open Graph / Facebook -->
<meta property="og:type" content="<?=$meta['ogtype']?>" /> <meta property="og:type" content="<?= $meta['ogtype'] ?>" />
<meta property="og:url" content="<?=$meta['ogurl']?>" /> <meta property="og:url" content="<?= $meta['ogurl'] ?>" />
<meta property="og:title" content="<?=$meta['ogtitle']?>" /> <meta property="og:title" content="<?= $meta['ogtitle'] ?>" />
<meta property="og:description" content="<?=$meta['ogdescription']?>"/> <meta property="og:description" content="<?= $meta['ogdescription'] ?>" />
<meta property="og:image" content="<?=$meta['ogimage']?>" /> <meta property="og:image" content="<?= $meta['ogimage'] ?>" />
<!-- Twitter --> <!-- Twitter -->
<meta property="twitter:card" content="<?=$meta['twittercard'] ?>" /> <meta property="twitter:card" content="<?= $meta['twittercard'] ?>" />
<meta property="twitter:url" content="<?=$meta['twitterurl'] ?>" /> <meta property="twitter:url" content="<?= $meta['twitterurl'] ?>" />
<meta property="twitter:title" content="<?=$meta['twittertitle'] ?>" /> <meta property="twitter:title" content="<?= $meta['twittertitle'] ?>" />
<meta property="twitter:description" content="<?=$meta['twitterdescription'] ?>" /> <meta property="twitter:description" content="<?= $meta['twitterdescription'] ?>" />
<meta property="twitter:image" content="<?=$meta['twitterimage'] ?>" /> <meta property="twitter:image" content="<?= $meta['twitterimage'] ?>" />
<!-- Schema.org Structured Data --> <!-- Schema.org Structured Data -->
<script type="application/ld+json"> <script type="application/ld+json">
{ {
"@context": "https://schema.org", "@context": "https://schema.org",
"@type": "RoofingContractor", "@type": "RoofingContractor",
"name": "Warmseal Roofing", "name": "Warmseal Roofing",
"alternateName": "Warmseal", "alternateName": "Warmseal",
"description": "Professional roofer in Accrington, Lancashire providing expert roof repairs, installations, maintenance, guttering, and roofline services.", "description": "Professional roofer in Accrington, Lancashire providing expert roof repairs, installations, maintenance, guttering, and roofline services.",
"url": "https://warmseal-roofing.co.uk", "url": "https://warmseal-roofing.co.uk",
"logo": "https://warmseal-roofing.co.uk/images/logo/Warmseal-Blue.svg", "logo": "https://warmseal-roofing.co.uk/images/logo/Warmseal-Blue.svg",
"image": "https://warmseal-roofing.co.uk/images/logo/Warmseal-Blue.svg", "image": "https://warmseal-roofing.co.uk/images/logo/Warmseal-Blue.svg",
"telephone": "+44-1254-123456", "telephone": "+44-1254-123456",
"email": "info@warmseal-roofing.co.uk", "email": "info@warmseal-roofing.co.uk",
"address": { "address": {
"@type": "PostalAddress", "@type": "PostalAddress",
"addressLocality": "Accrington", "addressLocality": "Accrington",
"addressRegion": "Lancashire", "addressRegion": "Lancashire",
"addressCountry": "GB" "addressCountry": "GB"
}, },
"geo": { "geo": {
"@type": "GeoCoordinates", "@type": "GeoCoordinates",
"latitude": 53.7532, "latitude": 53.7532,
"longitude": -2.3610 "longitude": -2.3610
}, },
"areaServed": [ "areaServed": [{
{ "@type": "City",
"@type": "City", "name": "Accrington"
"name": "Accrington" },
}, {
{ "@type": "City",
"@type": "City", "name": "Blackburn"
"name": "Blackburn" },
}, {
{ "@type": "City",
"@type": "City", "name": "Preston"
"name": "Preston" },
}, {
{ "@type": "AdministrativeArea",
"@type": "AdministrativeArea", "name": "Lancashire"
"name": "Lancashire" }
}
],
"serviceType": [
"Roof Repairs",
"Roof Installation",
"Roof Maintenance",
"Emergency Roof Repairs",
"Gutter Installation",
"Gutter Cleaning",
"Roof Cleaning",
"Moss Removal",
"UPVC Roofline",
"Fascias and Soffits",
"Chimney Repairs",
"Leadwork",
"Storm Damage Repair"
],
"priceRange": "££",
"paymentAccepted": ["Cash", "Check", "Credit Card", "Bank Transfer"],
"currenciesAccepted": "GBP",
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
], ],
"opens": "08:00", "serviceType": [
"closes": "18:00" "Roof Repairs",
}, "Roof Installation",
{ "Roof Maintenance",
"@type": "OpeningHoursSpecification", "Emergency Roof Repairs",
"dayOfWeek": "Saturday", "Gutter Installation",
"opens": "08:00", "Gutter Cleaning",
"closes": "16:00" "Roof Cleaning",
} "Moss Removal",
], "UPVC Roofline",
"hasOfferCatalog": { "Fascias and Soffits",
"@type": "OfferCatalog", "Chimney Repairs",
"name": "Roofing Services", "Leadwork",
"itemListElement": [ "Storm Damage Repair"
{ ],
"@type": "Offer", "priceRange": "££",
"itemOffered": { "paymentAccepted": ["Cash", "Check", "Credit Card", "Bank Transfer"],
"@type": "Service", "currenciesAccepted": "GBP",
"name": "Roof Repairs", "openingHoursSpecification": [{
"description": "Expert roof repair services including leak repairs, tile replacement, and storm damage restoration." "@type": "OpeningHoursSpecification",
} "dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday"
],
"opens": "08:00",
"closes": "18:00"
},
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "08:00",
"closes": "16:00"
}
],
"hasOfferCatalog": {
"@type": "OfferCatalog",
"name": "Roofing Services",
"itemListElement": [{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Roof Repairs",
"description": "Expert roof repair services including leak repairs, tile replacement, and storm damage restoration."
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "New Roof Installation",
"description": "Complete new roof installations using quality materials with professional workmanship."
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "Gutter Services",
"description": "Gutter installation, cleaning, and maintenance services."
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "UPVC Roofline",
"description": "Fascias, soffits, and roofline installation and replacement services."
}
}
]
}, },
{ "aggregateRating": {
"@type": "Offer", "@type": "AggregateRating",
"itemOffered": { "ratingValue": "4.9",
"@type": "Service", "reviewCount": "47"
"name": "New Roof Installation",
"description": "Complete new roof installations using quality materials with professional workmanship."
}
}, },
{ "sameAs": [
"@type": "Offer", "https://www.facebook.com/profile.php?id=61576598612133",
"itemOffered": { "https://www.instagram.com/warmsealroofing"
"@type": "Service", ]
"name": "Gutter Services", }
"description": "Gutter installation, cleaning, and maintenance services."
}
},
{
"@type": "Offer",
"itemOffered": {
"@type": "Service",
"name": "UPVC Roofline",
"description": "Fascias, soffits, and roofline installation and replacement services."
}
}
]
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"reviewCount": "47"
},
"sameAs": [
"https://www.facebook.com/profile.php?id=61576598612133",
"https://www.instagram.com/warmsealroofing"
]
}
</script> </script>
<!-- Page-Specific Schema --> <!-- Page-Specific Schema -->
<script type="application/ld+json"> <script type="application/ld+json">
<?php <?php
$currentPage = isset($Page) ? $Page : 'index'; $currentPage = isset($Page) ? $Page : 'index';
echo generatePageSchema($currentPage, $URLcorrection); echo generatePageSchema($currentPage, $URLcorrection);
?> ?>
</script> </script>
<!-- Breadcrumb Schema --> <!-- Breadcrumb Schema -->
<script type="application/ld+json"> <script type="application/ld+json">
<?php <?php
$currentPageTitle = isset($PageTitle) ? $PageTitle : 'Home'; $currentPageTitle = isset($PageTitle) ? $PageTitle : 'Home';
echo generateBreadcrumbSchema($currentPage, $currentPageTitle); echo generateBreadcrumbSchema($currentPage, $currentPageTitle);
?> ?>
</script> </script>

View File

@ -1,7 +1,8 @@
<?php <?php
// Page-specific Schema.org structured data // Page-specific Schema.org structured data
function generatePageSchema($page, $URLcorrection = "") { function generatePageSchema($page, $URLcorrection = "")
{
$baseSchema = [ $baseSchema = [
"@context" => "https://schema.org", "@context" => "https://schema.org",
"@type" => "WebPage", "@type" => "WebPage",
@ -14,7 +15,7 @@ function generatePageSchema($page, $URLcorrection = "") {
]; ];
// Add page-specific schema based on current page // Add page-specific schema based on current page
switch($page) { switch ($page) {
case 'roof-repairs': case 'roof-repairs':
$serviceSchema = [ $serviceSchema = [
"@context" => "https://schema.org", "@context" => "https://schema.org",
@ -26,7 +27,10 @@ function generatePageSchema($page, $URLcorrection = "") {
"name" => "Warmseal Roofing" "name" => "Warmseal Roofing"
], ],
"areaServed" => [ "areaServed" => [
"Accrington", "Blackburn", "Preston", "Lancashire" "Accrington",
"Blackburn",
"Preston",
"Lancashire"
], ],
"availableChannel" => [ "availableChannel" => [
"@type" => "ServiceChannel", "@type" => "ServiceChannel",
@ -48,7 +52,10 @@ function generatePageSchema($page, $URLcorrection = "") {
"name" => "Warmseal Roofing" "name" => "Warmseal Roofing"
], ],
"areaServed" => [ "areaServed" => [
"Accrington", "Blackburn", "Preston", "Lancashire" "Accrington",
"Blackburn",
"Preston",
"Lancashire"
], ],
"availableChannel" => [ "availableChannel" => [
"@type" => "ServiceChannel", "@type" => "ServiceChannel",
@ -70,7 +77,10 @@ function generatePageSchema($page, $URLcorrection = "") {
"name" => "Warmseal Roofing" "name" => "Warmseal Roofing"
], ],
"areaServed" => [ "areaServed" => [
"Accrington", "Blackburn", "Preston", "Lancashire" "Accrington",
"Blackburn",
"Preston",
"Lancashire"
], ],
"availableChannel" => [ "availableChannel" => [
"@type" => "ServiceChannel", "@type" => "ServiceChannel",
@ -92,7 +102,10 @@ function generatePageSchema($page, $URLcorrection = "") {
"name" => "Warmseal Roofing" "name" => "Warmseal Roofing"
], ],
"areaServed" => [ "areaServed" => [
"Accrington", "Blackburn", "Preston", "Lancashire" "Accrington",
"Blackburn",
"Preston",
"Lancashire"
], ],
"availableChannel" => [ "availableChannel" => [
"@type" => "ServiceChannel", "@type" => "ServiceChannel",
@ -115,7 +128,10 @@ function generatePageSchema($page, $URLcorrection = "") {
], ],
"about" => "Roofing Projects and Portfolio", "about" => "Roofing Projects and Portfolio",
"locationCreated" => [ "locationCreated" => [
"Accrington", "Blackburn", "Preston", "Lancashire" "Accrington",
"Blackburn",
"Preston",
"Lancashire"
] ]
]; ];
return json_encode([$baseSchema, $portfolioSchema], JSON_UNESCAPED_SLASHES); return json_encode([$baseSchema, $portfolioSchema], JSON_UNESCAPED_SLASHES);
@ -164,7 +180,8 @@ function generatePageSchema($page, $URLcorrection = "") {
} }
// Generate breadcrumb schema // Generate breadcrumb schema
function generateBreadcrumbSchema($page, $pageTitle) { function generateBreadcrumbSchema($page, $pageTitle)
{
$breadcrumbs = [ $breadcrumbs = [
"@context" => "https://schema.org", "@context" => "https://schema.org",
"@type" => "BreadcrumbList", "@type" => "BreadcrumbList",
@ -189,4 +206,3 @@ function generateBreadcrumbSchema($page, $pageTitle) {
return json_encode($breadcrumbs, JSON_UNESCAPED_SLASHES); return json_encode($breadcrumbs, JSON_UNESCAPED_SLASHES);
} }
?>

24
package.json Normal file
View File

@ -0,0 +1,24 @@
{
"name": "warmseal",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"minify-css": "cleancss -o css/style.min.css css/style.css && cleancss -o css/animate.min.css css/animate.css && cleancss -o css/padding.min.css css/padding.css && cleancss -o css/flaticon.min.css css/flaticon.css && cleancss -o css/bootstrap-datepicker.min.css css/bootstrap-datepicker.css && cleancss -o css/jquery.timepicker.min.css css/jquery.timepicker.css && cleancss -o css/magnific-popup.min.css css/magnific-popup.css",
"minify-js": "uglifyjs js/main.js -o js/main.min.js -c -m && uglifyjs js/script.js -o js/script.min.js -c -m && uglifyjs js/google-map.js -o js/google-map.min.js -c -m && uglifyjs js/bootstrap-datepicker.js -o js/bootstrap-datepicker.min.js -c -m && uglifyjs js/jquery.easing.1.3.js -o js/jquery.easing.1.3.min.js -c -m",
"minify": "npm run minify-css && npm run minify-js"
},
"repository": {
"type": "git",
"url": "https://git.hexaspark.com/Acorn_Media/warmseal-roofing.git"
},
"keywords": [],
"author": "",
"license": "ISC",
"type": "commonjs",
"devDependencies": {
"clean-css-cli": "^5.6.3",
"uglify-js": "^3.19.3"
}
}