Public Access
pricing: remove monthly/yearly billing toggle, default to yearly
- Remove billing-toggle-wrap HTML (switch + labels) - Update all 4 pricing cards to show yearly prices by default with / year period and save percentage - Simplify openOrderWidget() to always use yearly pricing only - Remove billing toggle JS block (updatePrices, setBilling, event listeners) - Remove billing toggle CSS (billing-toggle-wrap, .toggle-*, .toggle-switch) - Update order widget default display to / year - Update CTA note to 'Save money, less administration'
This commit is contained in:
+18
-23
@@ -237,23 +237,18 @@
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<p class="section-kicker">Rates & Suites</p>
|
<p class="section-kicker">Rates & Suites</p>
|
||||||
<h2 class="section-title">Your Plan, Your Timing: Upgrade Anytime</h2>
|
<h2 class="section-title">Your Plan, Your Timing: Upgrade Anytime</h2>
|
||||||
<div class="billing-toggle-wrap">
|
|
||||||
<span class="toggle-label toggle-label-monthly active">Monthly <small>1 month free</small></span>
|
|
||||||
<div class="toggle-switch" id="billingSwitch"><div class="thumb"></div></div>
|
|
||||||
<span class="toggle-label toggle-label-yearly">Yearly <small>up to -10%</small></span>
|
|
||||||
</div>
|
|
||||||
<div class="pricing-grid">
|
<div class="pricing-grid">
|
||||||
<!-- Side Hustle -->
|
<!-- Side Hustle -->
|
||||||
<div class="pcard">
|
<div class="pcard">
|
||||||
<div class="pcard-body">
|
<div class="pcard-body">
|
||||||
<h3>Side Hustle</h3>
|
<h3>Side Hustle</h3>
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<strong class="price-amount" data-monthly="19.40" data-yearly="214.00">$ 19.40</strong>
|
<strong>$ 214.00</strong>
|
||||||
<small class="price-period">/ month</small>
|
<small class="price-period">/ year</small>
|
||||||
<div class="price-save" style="display:none" data-monthly-text="FREE TRIAL coupon = 1 month free" data-yearly-text="Save 8%">1 month free</div>
|
<div class="price-save">Save 8%</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="desc">“ODOO Standard .. that is all my business needs”</p>
|
<p class="desc">“ODOO Standard .. that is all my business needs”</p>
|
||||||
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Side Hustle', 19.40, 214.0, false)">Buy Now</a>
|
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Side Hustle', 214.00, false)">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>
|
||||||
@@ -267,12 +262,12 @@
|
|||||||
<div class="pcard-body">
|
<div class="pcard-body">
|
||||||
<h3>On the Rise</h3>
|
<h3>On the Rise</h3>
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<strong class="price-amount" data-monthly="36.25" data-yearly="395.00">$ 36.25</strong>
|
<strong>$ 395.00</strong>
|
||||||
<small class="price-period">/ month</small>
|
<small class="price-period">/ year</small>
|
||||||
<div class="price-save" style="display:none" data-monthly-text="FREE TRIAL coupon = 1 month free" data-yearly-text="Save 9%">1 month free</div>
|
<div class="price-save">Save 9%</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="desc">“I need some modules and professional reports”</p>
|
<p class="desc">“I need some modules and professional reports”</p>
|
||||||
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('On the Rise', 36.25, 395.0, false)">Buy Now</a>
|
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('On the Rise', 395.00, false)">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>
|
||||||
@@ -287,12 +282,12 @@
|
|||||||
<div class="pcard-body">
|
<div class="pcard-body">
|
||||||
<h3>Powerhouse</h3>
|
<h3>Powerhouse</h3>
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<strong class="price-amount" data-monthly="49.60" data-yearly="535.00">$ 49.60</strong>
|
<strong>$ 535.00</strong>
|
||||||
<small class="price-period">/ month</small>
|
<small class="price-period">/ year</small>
|
||||||
<div class="price-save" style="display:none" data-monthly-text="FREE TRIAL coupon = 1 month free" data-yearly-text="Save 10%">1 month free</div>
|
<div class="price-save">Save 10%</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="desc">“ODOO Enterprise is a must have!”</p>
|
<p class="desc">“ODOO Enterprise is a must have!”</p>
|
||||||
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Powerhouse', 49.60, 535.0, false)">Buy Now</a>
|
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Powerhouse', 535.00, false)">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>
|
||||||
@@ -309,12 +304,12 @@
|
|||||||
<div class="pcard-body">
|
<div class="pcard-body">
|
||||||
<h3>Empire</h3>
|
<h3>Empire</h3>
|
||||||
<div class="price">
|
<div class="price">
|
||||||
<strong class="price-amount" data-monthly="80.00" data-yearly="950.00">>$ 80.00</strong>
|
<strong>>$ 950.00</strong>
|
||||||
<small class="price-period">/ month</small>
|
<small class="price-period">/ year</small>
|
||||||
<div class="price-save empire-no-save" style="display:none" data-monthly-text="" data-yearly-text=""></div>
|
<div class="price-save"></div>
|
||||||
</div>
|
</div>
|
||||||
<p class="desc">“My house! My Horse! My Server!”</p>
|
<p class="desc">“My house! My Horse! My Server!”</p>
|
||||||
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Empire', 80.0, 950.0, true)">Get Custom Quote</a>
|
<a href="javascript:void(0)" class="btn btn-brass" onclick="openOrderWidget('Empire', 950.00, 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 & features</li>
|
<li><i class="fas fa-check" style="color: var(--success)"></i> All modules & features</li>
|
||||||
@@ -325,7 +320,7 @@
|
|||||||
<div class="pcard-foot">Instant setup, satisfied or reimbursed.</div>
|
<div class="pcard-foot">Instant setup, satisfied or reimbursed.</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<p class="pricing-cta-note" id="pricingCtaNote">🔒 Secure Stripe checkout · Cancel anytime · <strong>Satisfied or reimbursed</strong></p>
|
<p class="pricing-cta-note">Save money, less administration</p>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -336,7 +331,7 @@
|
|||||||
<div class="ow-content">
|
<div class="ow-content">
|
||||||
<h2 class="ow-title" id="orderPlanTitle">On the Rise</h2>
|
<h2 class="ow-title" id="orderPlanTitle">On the Rise</h2>
|
||||||
<p class="ow-price">
|
<p class="ow-price">
|
||||||
<span class="ow-price-amount" id="orderPlanPrice">$ 36.25</span> <span id="orderPlanPeriod">/ month</span>
|
<span class="ow-price-amount" id="orderPlanPrice">$ 395.00</span> <span id="orderPlanPeriod">/ year</span>
|
||||||
<span class="ow-price-tax" id="orderPlanTax">+ tax</span>
|
<span class="ow-price-tax" id="orderPlanTax">+ tax</span>
|
||||||
</p>
|
</p>
|
||||||
<p class="ow-coupon-msg" id="orderCouponMsg">Use coupon <strong>FREE TRIAL</strong> at checkout for 1 month free</p>
|
<p class="ow-coupon-msg" id="orderCouponMsg">Use coupon <strong>FREE TRIAL</strong> at checkout for 1 month free</p>
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ var si = 0,
|
|||||||
var orderPopupShown = false;
|
var orderPopupShown = false;
|
||||||
function openOrderWidget(
|
function openOrderWidget(
|
||||||
plan,
|
plan,
|
||||||
monthlyPrice,
|
|
||||||
yearlyPrice,
|
yearlyPrice,
|
||||||
isEmpire,
|
isEmpire,
|
||||||
) {
|
) {
|
||||||
@@ -120,28 +119,15 @@ var si = 0,
|
|||||||
"block";
|
"block";
|
||||||
var widget = document.getElementById("orderWidgetOverlay");
|
var widget = document.getElementById("orderWidgetOverlay");
|
||||||
document.getElementById("orderPlanTitle").textContent = plan;
|
document.getElementById("orderPlanTitle").textContent = plan;
|
||||||
var yearly = yearlyMode;
|
var price = yearlyPrice;
|
||||||
var price = yearly ? yearlyPrice : monthlyPrice;
|
|
||||||
var amountEl = document.getElementById("orderPlanPrice");
|
var amountEl = document.getElementById("orderPlanPrice");
|
||||||
var prefix = isEmpire ? ">$" : "$";
|
var prefix = isEmpire ? ">" : "";
|
||||||
amountEl.textContent = prefix + " " + price.toFixed(2);
|
amountEl.textContent = prefix + "$ " + price.toFixed(2);
|
||||||
document.getElementById("orderPlanPeriod").textContent = yearly
|
document.getElementById("orderPlanPeriod").textContent = "/ year";
|
||||||
? "/ year"
|
|
||||||
: "/ month";
|
|
||||||
var couponMsg = document.getElementById("orderCouponMsg");
|
var couponMsg = document.getElementById("orderCouponMsg");
|
||||||
var yearlySave = document.getElementById("orderYearlySave");
|
var yearlySave = document.getElementById("orderYearlySave");
|
||||||
if (!yearly) {
|
couponMsg.style.display = "none";
|
||||||
couponMsg.style.display = "block";
|
yearlySave.style.display = "block";
|
||||||
yearlySave.style.display = "none";
|
|
||||||
} else {
|
|
||||||
couponMsg.style.display = "none";
|
|
||||||
yearlySave.style.display = "block";
|
|
||||||
var saved = Math.round(
|
|
||||||
(1 - yearlyPrice / (monthlyPrice * 12)) * 100,
|
|
||||||
);
|
|
||||||
document.getElementById("orderSavePercent").textContent =
|
|
||||||
saved;
|
|
||||||
}
|
|
||||||
var buyBtn = document.getElementById("orderBuyBtn");
|
var buyBtn = document.getElementById("orderBuyBtn");
|
||||||
var loc = document.getElementById("orderServerLocation").value;
|
var loc = document.getElementById("orderServerLocation").value;
|
||||||
buyBtn.href =
|
buyBtn.href =
|
||||||
@@ -203,74 +189,6 @@ var si = 0,
|
|||||||
}
|
}
|
||||||
status.style.display = "block";
|
status.style.display = "block";
|
||||||
}
|
}
|
||||||
/* ---- Billing Toggle ---- */
|
|
||||||
var yearlyMode = false;
|
|
||||||
var biSwitch = document.getElementById("billingSwitch");
|
|
||||||
var labels = document.querySelectorAll(".toggle-label");
|
|
||||||
var monthlyLabel = document.querySelector(".toggle-label-monthly");
|
|
||||||
var yearlyLabel = document.querySelector(".toggle-label-yearly");
|
|
||||||
|
|
||||||
function updatePrices(yearly) {
|
|
||||||
var amounts = document.querySelectorAll(".price-amount");
|
|
||||||
for (var k = 0; k < amounts.length; k++) {
|
|
||||||
var el = amounts[k];
|
|
||||||
var val = yearly
|
|
||||||
? el.getAttribute("data-yearly")
|
|
||||||
: el.getAttribute("data-monthly");
|
|
||||||
var prefix =
|
|
||||||
el.textContent.trim().charAt(0) === ">" ? ">" : "";
|
|
||||||
el.textContent = prefix + "$ " + parseFloat(val).toFixed(2);
|
|
||||||
}
|
|
||||||
var periods = document.querySelectorAll(".price-period");
|
|
||||||
for (var k = 0; k < periods.length; k++) {
|
|
||||||
periods[k].textContent = yearly ? "/ year" : "/ month";
|
|
||||||
}
|
|
||||||
var saves = document.querySelectorAll(".price-save");
|
|
||||||
for (var k = 0; k < saves.length; k++) {
|
|
||||||
var s = saves[k];
|
|
||||||
if (yearly) {
|
|
||||||
s.style.display = "block";
|
|
||||||
s.textContent = s.getAttribute("data-yearly-text");
|
|
||||||
} else {
|
|
||||||
s.style.display = "block";
|
|
||||||
s.textContent = s.getAttribute("data-monthly-text");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
var ctaNote = document.getElementById("pricingCtaNote");
|
|
||||||
if (ctaNote) {
|
|
||||||
ctaNote.innerHTML = yearly
|
|
||||||
? "Save money, less administration"
|
|
||||||
: "Perfect for trial, termination any time";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setBilling(yearly) {
|
|
||||||
yearlyMode = yearly;
|
|
||||||
if (yearly) {
|
|
||||||
biSwitch.classList.add("yearly");
|
|
||||||
monthlyLabel.classList.remove("active");
|
|
||||||
yearlyLabel.classList.add("active");
|
|
||||||
} else {
|
|
||||||
biSwitch.classList.remove("yearly");
|
|
||||||
monthlyLabel.classList.add("active");
|
|
||||||
yearlyLabel.classList.remove("active");
|
|
||||||
}
|
|
||||||
updatePrices(yearly);
|
|
||||||
}
|
|
||||||
|
|
||||||
biSwitch.addEventListener("click", function () {
|
|
||||||
setBilling(!yearlyMode);
|
|
||||||
});
|
|
||||||
monthlyLabel.addEventListener("click", function () {
|
|
||||||
setBilling(false);
|
|
||||||
});
|
|
||||||
yearlyLabel.addEventListener("click", function () {
|
|
||||||
setBilling(true);
|
|
||||||
});
|
|
||||||
|
|
||||||
/* init billing display to monthly */
|
|
||||||
updatePrices(false);
|
|
||||||
|
|
||||||
/* ---- Blog Module ---- */
|
/* ---- Blog Module ---- */
|
||||||
var blogState = {
|
var blogState = {
|
||||||
allPosts: [],
|
allPosts: [],
|
||||||
|
|||||||
@@ -626,53 +626,6 @@ img { max-width: 100%; height: auto; vertical-align: middle; }
|
|||||||
color: var(--success);
|
color: var(--success);
|
||||||
margin-top: 0.15rem;
|
margin-top: 0.15rem;
|
||||||
}
|
}
|
||||||
/* Billing Toggle */
|
|
||||||
.billing-toggle-wrap {
|
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
gap: 0.75rem;
|
|
||||||
margin-bottom: 1.5rem;
|
|
||||||
}
|
|
||||||
.toggle-label {
|
|
||||||
font-size: 0.82rem;
|
|
||||||
font-weight: 500;
|
|
||||||
color: rgba(255,255,255,0.5);
|
|
||||||
cursor: pointer;
|
|
||||||
transition: color 0.2s;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
.toggle-label.active { color: #fff; font-weight: 600; }
|
|
||||||
.toggle-label small {
|
|
||||||
display: block;
|
|
||||||
font-size: 0.72rem;
|
|
||||||
font-weight: 500;
|
|
||||||
color: var(--success);
|
|
||||||
margin-top: 0.1rem;
|
|
||||||
}
|
|
||||||
.toggle-switch {
|
|
||||||
width: 48px;
|
|
||||||
height: 26px;
|
|
||||||
background: rgba(255,255,255,0.15);
|
|
||||||
border-radius: 13px;
|
|
||||||
cursor: pointer;
|
|
||||||
position: relative;
|
|
||||||
transition: background 0.25s;
|
|
||||||
flex-shrink: 0;
|
|
||||||
}
|
|
||||||
.toggle-switch.yearly { background: var(--brass); }
|
|
||||||
.toggle-switch .thumb {
|
|
||||||
position: absolute;
|
|
||||||
top: 3px;
|
|
||||||
left: 3px;
|
|
||||||
width: 20px;
|
|
||||||
height: 20px;
|
|
||||||
background: #fff;
|
|
||||||
border-radius: 50%;
|
|
||||||
transition: left 0.25s;
|
|
||||||
box-shadow: 0 1px 3px rgba(0,0,0,0.15);
|
|
||||||
}
|
|
||||||
.toggle-switch.yearly .thumb { left: 25px; }
|
|
||||||
.price-period { color: var(--ink-soft); font-size: 0.68rem; }
|
.price-period { color: var(--ink-soft); font-size: 0.68rem; }
|
||||||
.pricing-cta-note {
|
.pricing-cta-note {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|||||||
Reference in New Issue
Block a user