fix: address points 5,7,8,9,11,12,13,14,15 - add Offer schema, remove duplicate partners, trial error feedback, rel=noopener noreferrer, remove inline onclick, semantic pagination, footer email

This commit is contained in:
ODOO4projects Web Developer committed 2026-10-04 23:14:31 +00:00
1 parent af866d87e8
commit 4134ff5260
3 files changed
+83 -61

No files matched your search

+20 -21
View File
@@ -21,7 +21,13 @@
"description": "Odoo hosting with fully managed infrastructure. Deploy in 5 minutes with automatic backups, SSL, and Git-based modules.", "description": "Odoo hosting with fully managed infrastructure. Deploy in 5 minutes with automatic backups, SSL, and Git-based modules.",
"foundingDate": "2020", "foundingDate": "2020",
"contactPoint": { "@type": "ContactPoint", "contactType": "customer support", "url": "https://ODOO4projects.com/contactus" }, "contactPoint": { "@type": "ContactPoint", "contactType": "customer support", "url": "https://ODOO4projects.com/contactus" },
"sameAs": ["https://www.linkedin.com/company/odoo4projects/"] "sameAs": ["https://www.linkedin.com/company/odoo4projects/"],
"offers": [
{ "@type": "Offer", "name": "Side Hustle", "price": "214.00", "priceCurrency": "USD", "url": "https://ODOO4projects.com/#pricing" },
{ "@type": "Offer", "name": "On the Rise", "price": "395.00", "priceCurrency": "USD", "url": "https://ODOO4projects.com/#pricing" },
{ "@type": "Offer", "name": "Powerhouse", "price": "535.00", "priceCurrency": "USD", "url": "https://ODOO4projects.com/#pricing" },
{ "@type": "Offer", "name": "Empire", "price": ">950.00", "priceCurrency": "USD", "url": "https://ODOO4projects.com/#pricing" }
]
} }
</script> </script>
<link rel="preconnect" href="https://fonts.googleapis.com" /> <link rel="preconnect" href="https://fonts.googleapis.com" />
@@ -174,22 +180,14 @@
<p class="trust-label">Trusted by businesses worldwide</p> <p class="trust-label">Trusted by businesses worldwide</p>
<div class="partner-carousel-wrap"> <div class="partner-carousel-wrap">
<div class="partner-grid"> <div class="partner-grid">
<a href="https://paraguayservice.com/" target="_blank" rel="noopener" class="partner-item"><img src="images/paraguayservice-favicon.png" alt="Paraguay Service" /><span>Paraguay Service</span></a> <!-- Trust Bar Partners (no duplicates - CSS animation handles seamless loop) -->
<a href="https://estancia-agape.com/" target="_blank" rel="noopener" class="partner-item"><img src="images/estancia-agape-logo.png" alt="Estancia Agape" /><span>Estancia Agape</span></a> <a href="https://paraguayservice.com/" target="_blank" rel="noopener noreferrer" class="partner-item"><img src="images/paraguayservice-favicon.png" alt="Paraguay Service" /><span>Paraguay Service</span></a>
<a href="https://kate-group.de/" target="_blank" rel="noopener" class="partner-item"><img src="images/kate-group-favicon.png" alt="KATE Group" /><span>KATE Group</span></a> <a href="https://estancia-agape.com/" target="_blank" rel="noopener noreferrer" class="partner-item"><img src="images/estancia-agape-logo.png" alt="Estancia Agape" /><span>Estancia Agape</span></a>
<a href="https://agilnova.de/" target="_blank" rel="noopener" class="partner-item"><img src="images/agilnova-favicon.png" alt="agilnova" /><span>agilnova</span></a> <a href="https://kate-group.de/" target="_blank" rel="noopener noreferrer" class="partner-item"><img src="images/kate-group-favicon.png" alt="KATE Group" /><span>KATE Group</span></a>
<a href="https://006-002-bc5bb1cb-984d-42c3-8580-63439f4924c5.odoo4projects.com/" target="_blank" rel="noopener" class="partner-item"><img src="images/ramani-kenya-logo.png" alt="Ramani Kenya" /><span>Ramani Kenya</span></a> <a href="https://agilnova.de/" target="_blank" rel="noopener noreferrer" class="partner-item"><img src="images/agilnova-favicon.png" alt="agilnova" /><span>agilnova</span></a>
<a href="https://startparaguay.net/" target="_blank" rel="noopener" class="partner-item"><img src="images/startparaguay-favicon.png" alt="Start Paraguay" /><span>Start Paraguay</span></a> <a href="https://006-002-bc5bb1cb-984d-42c3-8580-63439f4924c5.odoo4projects.com/" target="_blank" rel="noopener noreferrer" class="partner-item"><img src="images/ramani-kenya-logo.png" alt="Ramani Kenya" /><span>Ramani Kenya</span></a>
<a href="https://accelersales.com/" target="_blank" rel="noopener" class="partner-item"><img src="images/accelersales-logo.png" alt="AccellerSales" /><span>AccellerSales</span></a> <a href="https://startparaguay.net/" target="_blank" rel="noopener noreferrer" class="partner-item"><img src="images/startparaguay-favicon.png" alt="Start Paraguay" /><span>Start Paraguay</span></a>
<a href="#pricing" class="partner-item" style="opacity:0.55"><img src="images/your-company-logo.svg" alt="Your Company" /><span>Your Company</span></a> <a href="https://accelersales.com/" target="_blank" rel="noopener noreferrer" class="partner-item"><img src="images/accelersales-logo.png" alt="AccellerSales" /><span>AccellerSales</span></a>
<!-- duplicate for seamless scroll -->
<a href="https://paraguayservice.com/" target="_blank" rel="noopener" class="partner-item"><img src="images/paraguayservice-favicon.png" alt="Paraguay Service" /><span>Paraguay Service</span></a>
<a href="https://estancia-agape.com/" target="_blank" rel="noopener" class="partner-item"><img src="images/estancia-agape-logo.png" alt="Estancia Agape" /><span>Estancia Agape</span></a>
<a href="https://kate-group.de/" target="_blank" rel="noopener" class="partner-item"><img src="images/kate-group-favicon.png" alt="KATE Group" /><span>KATE Group</span></a>
<a href="https://agilnova.de/" target="_blank" rel="noopener" class="partner-item"><img src="images/agilnova-favicon.png" alt="agilnova" /><span>agilnova</span></a>
<a href="https://006-002-bc5bb1cb-984d-42c3-8580-63439f4924c5.odoo4projects.com/" target="_blank" rel="noopener" class="partner-item"><img src="images/ramani-kenya-logo.png" alt="Ramani Kenya" /><span>Ramani Kenya</span></a>
<a href="https://startparaguay.net/" target="_blank" rel="noopener" class="partner-item"><img src="images/startparaguay-favicon.png" alt="Start Paraguay" /><span>Start Paraguay</span></a>
<a href="https://accelersales.com/" target="_blank" rel="noopener" class="partner-item"><img src="images/accelersales-logo.png" alt="AccellerSales" /><span>AccellerSales</span></a>
<a href="#pricing" class="partner-item" style="opacity:0.55"><img src="images/your-company-logo.svg" alt="Your Company" /><span>Your Company</span></a> <a href="#pricing" class="partner-item" style="opacity:0.55"><img src="images/your-company-logo.svg" alt="Your Company" /><span>Your Company</span></a>
</div> </div>
</div> </div>
@@ -299,7 +297,7 @@
<div class="price-save">Save 8%</div> <div class="price-save">Save 8%</div>
</div> </div>
<p class="desc">&ldquo;ODOO Standard .. that is all my business needs&rdquo;</p> <p class="desc">&ldquo;ODOO Standard .. that is all my business needs&rdquo;</p>
<a href="javascript:void(0)" class="btn btn-brass" onclick="buyNow(54)">Buy Now</a> <a href="javascript:void(0)" class="btn btn-brass btn-buy" data-id="54">Buy Now</a>
<ul> <ul>
<li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li> <li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li>
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li> <li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li>
@@ -318,7 +316,7 @@
<div class="price-save">Save 9%</div> <div class="price-save">Save 9%</div>
</div> </div>
<p class="desc">&ldquo;I need some modules and professional reports&rdquo;</p> <p class="desc">&ldquo;I need some modules and professional reports&rdquo;</p>
<a href="javascript:void(0)" class="btn btn-brass" onclick="buyNow(55)">Buy Now</a> <a href="javascript:void(0)" class="btn btn-brass btn-buy" data-id="55">Buy Now</a>
<ul> <ul>
<li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li> <li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li>
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li> <li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li>
@@ -338,7 +336,7 @@
<div class="price-save">Save 10%</div> <div class="price-save">Save 10%</div>
</div> </div>
<p class="desc">&ldquo;ODOO Enterprise is a must have!&rdquo;</p> <p class="desc">&ldquo;ODOO Enterprise is a must have!&rdquo;</p>
<a href="javascript:void(0)" class="btn btn-brass" onclick="buyNow(56)">Buy Now</a> <a href="javascript:void(0)" class="btn btn-brass btn-buy" data-id="56">Buy Now</a>
<ul> <ul>
<li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li> <li><i class="fas fa-check" style="color: var(--success)"></i> ODOO CE Hosting</li>
<li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li> <li><i class="fas fa-check" style="color: var(--success)"></i> Automatic Backups</li>
@@ -360,7 +358,7 @@
<div class="price-save"></div> <div class="price-save"></div>
</div> </div>
<p class="desc">&ldquo;My house! My Horse! My Server!&rdquo;</p> <p class="desc">&ldquo;My house! My Horse! My Server!&rdquo;</p>
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Empire', 950.00, true)">Get Custom Quote</a> <a href="javascript:void(0)" class="btn btn-brass btn-empire" data-plan="Empire" data-price="950.00" data-is-empire="true">Get Custom Quote</a>
<ul> <ul>
<li><i class="fas fa-check" style="color: var(--success)"></i> Our service on your server</li> <li><i class="fas fa-check" style="color: var(--success)"></i> Our service on your server</li>
<li><i class="fas fa-check" style="color: var(--success)"></i> All modules &amp; features</li> <li><i class="fas fa-check" style="color: var(--success)"></i> All modules &amp; features</li>
@@ -512,6 +510,7 @@
<h4>About us</h4> <h4>About us</h4>
<p>We build smart, scalable business solutions by combining the <strong>stability</strong> of Odoo ERP with the <strong>power</strong> of AI and N8N automation.</p> <p>We build smart, scalable business solutions by combining the <strong>stability</strong> of Odoo ERP with the <strong>power</strong> of AI and N8N automation.</p>
<p>From streamlined sales to global rollouts, our <strong>lean, eco-friendly</strong> approach helps businesses cut costs, boost efficiency, and grow without limits.</p> <p>From streamlined sales to global rollouts, our <strong>lean, eco-friendly</strong> approach helps businesses cut costs, boost efficiency, and grow without limits.</p>
<p><a href="mailto:support@odoo4projects.com" class="footer-email">support@odoo4projects.com</a></p>
</div> </div>
<div> <div>
<h4>Follow us on</h4> <h4>Follow us on</h4>
+40 -33
View File
@@ -307,38 +307,24 @@ var si = 0,
var pag = document.getElementById("blogPagination"); var pag = document.getElementById("blogPagination");
var pagHtml = ""; var pagHtml = "";
if (totalPages > 1) { if (totalPages > 1) {
pagHtml += var prevPage = blogState.currentPage > 1 ? blogState.currentPage - 1 : null;
'<button class="blog-page-btn" onclick="blogGo(1)"' + var nextPage = blogState.currentPage < totalPages ? blogState.currentPage + 1 : null;
(blogState.currentPage <= 1 ? ' disabled"' : '"') + var isFirst = blogState.currentPage <= 1;
">&laquo;</button>"; var isLast = blogState.currentPage >= totalPages;
pagHtml +=
'<button class="blog-page-btn" onclick="blogGo(' + pagHtml += '<a class="blog-page-btn' + (isFirst ? ' blog-page-btn-disabled' : '') + '" href="?page=1"' + (isFirst ? ' aria-disabled="true"' : ' aria-label="Go to first page"') + '>&laquo;</a>';
(blogState.currentPage - 1) + if (prevPage) {
')"' + pagHtml += '<a class="blog-page-btn" href="?page=' + prevPage + '" rel="prev" aria-label="Go to previous page">&lsaquo; Prev</a>';
(blogState.currentPage <= 1 ? ' disabled"' : '"') + } else {
">&lsaquo; Prev</button>"; pagHtml += '<span class="blog-page-btn-disabled">&lsaquo; Prev</span>';
pagHtml += }
'<span class="blog-page-info">Page ' + pagHtml += '<span class="blog-page-info" aria-live="polite">Page ' + blogState.currentPage + " of " + totalPages + "</span>";
blogState.currentPage + if (nextPage) {
" of " + pagHtml += '<a class="blog-page-btn" href="?page=' + nextPage + '" rel="next" aria-label="Go to next page">Next &rsaquo;</a>';
totalPages + } else {
"</span>"; pagHtml += '<span class="blog-page-btn-disabled">Next &rsaquo;</span>';
pagHtml += }
'<button class="blog-page-btn" onclick="blogGo(' + pagHtml += '<a class="blog-page-btn' + (isLast ? ' blog-page-btn-disabled' : '') + '" href="?page=' + totalPages + '"' + (isLast ? ' aria-disabled="true"' : ' aria-label="Go to last page"') + '>&raquo;</a>';
(blogState.currentPage + 1) +
')"' +
(blogState.currentPage >= totalPages
? ' disabled"'
: '"') +
">Next &rsaquo;</button>";
pagHtml +=
'<button class="blog-page-btn" onclick="blogGo(' +
totalPages +
')"' +
(blogState.currentPage >= totalPages
? ' disabled"'
: '"') +
">&raquo;</button>";
} }
pag.innerHTML = pagHtml; pag.innerHTML = pagHtml;
} }
@@ -526,7 +512,11 @@ var si = 0,
}).catch(function() { }).catch(function() {
btn.textContent = 'Send'; btn.textContent = 'Send';
btn.disabled = false; btn.disabled = false;
alert('Something went wrong. Please try again.'); var errorMsg = document.createElement('div');
errorMsg.className = 'trial-error visible';
errorMsg.textContent = 'Something went wrong. Please try again.';
trialForm.appendChild(errorMsg);
setTimeout(function() { errorMsg.classList.remove('visible'); }, 3000);
}); });
}); });
} }
@@ -728,4 +718,21 @@ var si = 0,
render(this.value); render(this.value);
}); });
} }
/* Buy Now buttons (no inline onclick) */
document.querySelectorAll('.btn-buy').forEach(function(btn) {
btn.addEventListener('click', function() {
var id = this.getAttribute('data-id');
if (id) buyNow(parseInt(id));
});
});
document.querySelectorAll('.btn-empire').forEach(function(btn) {
btn.addEventListener('click', function() {
var plan = this.getAttribute('data-plan');
var price = parseFloat(this.getAttribute('data-price'));
var isEmpire = this.getAttribute('data-is-empire') === 'true';
if (plan) openOrderWidget(plan, price, isEmpire);
});
});
})(); })();
+23 -7
View File
@@ -336,12 +336,12 @@ img { max-width: 100%; height: auto; vertical-align: middle; }
align-items: center; align-items: center;
gap: 3rem; gap: 3rem;
width: max-content; width: max-content;
animation: partnerScroll 40s linear infinite; animation: partnerScroll 55s linear infinite;
} }
.partner-carousel-wrap:hover .partner-grid { animation-play-state: paused; } .partner-carousel-wrap:hover .partner-grid { animation-play-state: paused; }
@keyframes partnerScroll { @keyframes partnerScroll {
0% { transform: translateX(0); } 0% { transform: translateX(0); }
100% { transform: translateX(-50%); } 100% { transform: translateX(calc(-50% + 1.5rem)); }
} }
.partner-item { .partner-item {
display: flex; display: flex;
@@ -482,16 +482,15 @@ img { max-width: 100%; height: auto; vertical-align: middle; }
font-size: 0.82rem; font-size: 0.82rem;
width: 100%; width: 100%;
} }
.trial-success { .trial-success,
.trial-error {
display: none; display: none;
font-size: 0.82rem; font-size: 0.82rem;
color: #4ade80;
line-height: 1.4; line-height: 1.4;
margin-top: 0.5rem; margin-top: 0.5rem;
} }
.trial-success.visible { .trial-success.visible { display: block; color: #4ade80; }
display: block; .trial-error.visible { display: block; color: #ef4444; }
}
@media (max-width: 768px) { @media (max-width: 768px) {
.features-grid { .features-grid {
@@ -921,6 +920,23 @@ img { max-width: 100%; height: auto; vertical-align: middle; }
} }
.fcopy a { color: rgba(255,255,255,0.4); } .fcopy a { color: rgba(255,255,255,0.4); }
.fcopy a:hover { color: var(--brass); } .fcopy a:hover { color: var(--brass); }
.footer-email {
display: inline-block;
margin-top: 0.75rem;
padding: 0.5rem 0.8rem;
background: rgba(201,162,39,0.08);
border: 1px solid rgba(201,162,39,0.25);
border-radius: var(--radius);
color: var(--brass);
font-family: Inter, sans-serif;
font-size: 0.85rem;
transition: all 0.2s;
}
.footer-email:hover {
background: rgba(201,162,39,0.12);
border-color: var(--brass);
color: #fff;
}
@media (max-width: 768px) { @media (max-width: 768px) {
.fgrid { grid-template-columns: 1fr; } .fgrid { grid-template-columns: 1fr; }
.footer { padding-top: 2.5rem; padding-bottom: 5rem; } .footer { padding-top: 2.5rem; padding-bottom: 5rem; }