├── README.md
├── adddomain.tpl
├── addons.tpl
├── base.js
├── checkout.tpl
├── common.tpl
├── complete.tpl
├── configuredomains.tpl
├── configureproduct.tpl
├── configureproductdomain.tpl
├── css
├── all.css
├── all.min.css
├── blue.png
├── blue@2x.png
└── style.css
├── domain-renewals.tpl
├── domainoptions.tpl
├── domainregister.tpl
├── domainrenewals.tpl
├── domaintransfer.tpl
├── error.tpl
├── fraudcheck.tpl
├── img
└── globe.png
├── includes
├── existing-paymethods.tpl
└── product-recommendations.tpl
├── index.php
├── js
├── base.js
├── scripts.js
└── scripts.min.js
├── linkedaccounts.tpl
├── marketconnect-promo.tpl
├── ordersummary.tpl
├── products.tpl
├── recommendations-modal.tpl
├── service-renewal-item.tpl
├── service-renewals.tpl
├── sidebar-categories-collapsed.tpl
├── sidebar-categories-selector.tpl
├── sidebar-categories.tpl
├── style.css
├── theme.yaml
├── thumbnail.gif
└── viewcart.tpl
/README.md:
--------------------------------------------------------------------------------
1 | # WHMCS Standard Cart Order Form Template
2 |
3 | Welcome to the WHMCS "Standard Cart" order form template repository! This repository is dedicated to providing version-by-version changes of the "Standard Cart" template as published in [WHMCS](https://downloads.whmcs.com/). Sharing these changes through GitHub as a read-only repository enables you to quickly inspect and import these changes for your custom theme.
4 |
5 | ## Compatibility
6 |
7 | This template is compatible with WHMCS 6.1 and later.
8 |
9 | ## Usage
10 |
11 | You can utilise this repository to see the individual changes to this template as distributed in WHMCS.
12 |
13 | You can also use it to build your template in a way that can be controlled using Version Control, with the ability to pull in and auto-merge future changes.
14 |
15 | You may fork this repository as described in the
16 | [GitHub Guide: Forking Projects](https://guides.github.com/activities/forking/) or
17 | [GitHub Bootcamp: Forking a Repo](https://help.github.com/articles/fork-a-repo/) articles.
18 |
19 | ### Command Line Usage
20 |
21 | The below is an example of how you might check this repository out locally into a custom folder and create a branch for building and tracking the changes for your custom theme:
22 |
23 | ```sh
24 | # Navigate to your WHMCS templates directory
25 | cd ~/whmcs/templates/orderforms/
26 |
27 | # Clone the Six template theme repo into your new template directory
28 | git clone git@github.com:WHMCS/orderforms-standard_cart.git my-template-name
29 |
30 | # Change directory to the template directory
31 | cd my-template-name
32 |
33 | # Create a custom branch to make and commit your customisations into
34 | git checkout -b my-template-name
35 | ```
36 |
37 | When an update of WHMCS is published, the template changes will be propagated to this repository. You can then pull those changes into your custom template branch as follows:
38 |
39 | ```sh
40 | # Navigate to the template directory
41 | cd ~/whmcs/templates/orderforms/my-template-name
42 |
43 | # Fetch the latest updates from the Six template theme repo
44 | git fetch origin
45 |
46 | # Ensure your custom template branch is checked out
47 | git checkout my-template-name
48 |
49 | # Merge changes from origin/master into your custom branch
50 | git merge origin/master
51 | ```
52 |
53 | ## Viewing the Template Changes
54 |
55 | A distinct tag is created for each published version of WHMCS. You can easily view
56 | any span of changes you like using the [Github Comparison View](https://github.com/WHMCS/orderforms-standard_cart/compare).
57 | Simply, select a pair of version tags in that interface!
58 |
59 | ## Useful Links
60 |
61 | * [Documentation](http://docs.whmcs.com/Order_Form_Templates)
62 | * [Technical Support](http://www.whmcs.com/support)
63 | * [WHMCS Website](http://www.whmcs.com/)
64 |
--------------------------------------------------------------------------------
/adddomain.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
18 |
19 |
20 |
21 |
26 |
27 |
28 |
29 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
30 |
31 | {if $domain == 'register'}
32 |
{$LANG.orderForm.findNewDomain}
33 | {else}
34 |
{$LANG.orderForm.transferExistingDomain}
35 | {/if}
36 |
37 |
82 |
83 |
84 |
85 |
86 |
87 |
90 |
91 |
92 |
93 |
94 |
95 | {*
96 | * If we have availability results, then the form was submitted w/a domain.
97 | * Thus we want to do a search and show the results.
98 | *}
99 | {if $availabilityresults}
100 |
105 | {/if}
106 |
--------------------------------------------------------------------------------
/addons.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
6 |
11 |
12 |
13 |
16 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
17 |
18 | {if count($addons) == 0}
19 |
20 | {$LANG.cartproductaddonsnone}
21 |
22 |
23 |
24 |
25 | {$LANG.orderForm.returnToClientArea}
26 |
27 |
28 | {/if}
29 |
30 |
31 |
32 | {foreach $addons as $num => $addon}
33 |
70 | {if $num % 2 != 0}
71 |
72 |
73 | {/if}
74 | {/foreach}
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/common.tpl:
--------------------------------------------------------------------------------
1 |
2 | {assetExists file="custom.css"}
3 |
4 | {/assetExists}
5 |
--------------------------------------------------------------------------------
/complete.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
6 |
9 |
10 |
13 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
14 |
15 |
{$LANG.orderreceived}
16 |
17 |
18 |
19 |
20 | {$LANG.ordernumberis} {$ordernumber}
21 |
22 |
23 |
24 |
25 |
{$LANG.orderfinalinstructions}
26 |
27 | {if $expressCheckoutInfo}
28 |
29 | {$expressCheckoutInfo}
30 |
31 | {elseif $expressCheckoutError}
32 |
33 | {$expressCheckoutError}
34 |
35 | {elseif $invoiceid && !$ispaid}
36 |
37 | {$LANG.ordercompletebutnotpaid}
38 |
39 |
40 | {$LANG.invoicenumber}{$invoiceid}
41 |
42 |
43 | {/if}
44 |
45 | {foreach $addons_html as $addon_html}
46 |
47 | {$addon_html}
48 |
49 | {/foreach}
50 |
51 | {if $ispaid}
52 |
53 |
54 | {/if}
55 |
56 |
62 |
63 | {if $hasRecommendations}
64 | {include file="orderforms/standard_cart/includes/product-recommendations.tpl"}
65 | {/if}
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/configuredomains.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
9 |
10 |
11 |
12 |
13 |
16 |
17 |
20 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
21 |
22 |
200 |
201 |
202 |
203 |
204 | {include file="orderforms/standard_cart/recommendations-modal.tpl"}
205 |
--------------------------------------------------------------------------------
/configureproduct.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
9 |
10 |
11 |
12 |
13 |
16 |
17 |
18 |
21 |
22 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
23 |
24 |
352 |
353 |
354 |
355 |
356 |
357 |
358 | {include file="orderforms/standard_cart/recommendations-modal.tpl"}
359 |
--------------------------------------------------------------------------------
/configureproductdomain.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
6 |
9 |
10 |
11 |
14 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
15 |
184 |
185 |
186 |
338 |
339 |
340 |
341 |
342 | {include file="orderforms/standard_cart/recommendations-modal.tpl"}
343 |
--------------------------------------------------------------------------------
/css/blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/orderforms-standard_cart/9678759afc84818afcb2fc1c32813b3a79a4a0b1/css/blue.png
--------------------------------------------------------------------------------
/css/blue@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/orderforms-standard_cart/9678759afc84818afcb2fc1c32813b3a79a4a0b1/css/blue@2x.png
--------------------------------------------------------------------------------
/domain-renewals.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
8 |
9 |
19 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
20 |
21 | {if $totalDomainCount == 0}
22 |
23 | {$LANG.domainRenewal.noDomains}
24 |
25 |
26 |
27 |
28 | {$LANG.orderForm.returnToClientArea}
29 |
30 |
31 | {else}
32 |
33 |
34 |
35 | {if $totalResults < $totalDomainCount}
36 |
37 | {lang key='domainRenewal.showingDomains' showing=$totalResults totalCount=$totalDomainCount}
38 |
{lang key='domainRenewal.showAll'}
39 |
40 | {/if}
41 |
42 |
43 | {foreach $renewalsData as $renewalData}
44 |
45 |
46 | {if !$renewalData.eligibleForRenewal}
47 |
48 | {if $renewalData.freeDomainRenewal}
49 | {lang key='domainRenewal.freeWithService'}
50 | {else}
51 | {lang key='domainRenewal.unavailable'}
52 | {/if}
53 |
54 | {elseif ($renewalData.pastGracePeriod && $renewalData.pastRedemptionGracePeriod)}
55 |
56 | {lang key='domainrenewalspastgraceperiod'}
57 |
58 | {elseif !$renewalData.beforeRenewLimit && $renewalData.daysUntilExpiry > 0}
59 |
60 | {lang key='domainRenewal.expiringIn' days=$renewalData.daysUntilExpiry}
61 |
62 | {elseif $renewalData.daysUntilExpiry === 0}
63 |
64 | {lang key='expiresToday'}
65 |
66 | {elseif $renewalData.beforeRenewLimit}
67 |
68 | {lang key='domainRenewal.maximumAdvanceRenewal' days=$renewalData.beforeRenewLimitDays}
69 |
70 | {else}
71 |
72 | {lang key='domainRenewal.expiredDaysAgo' days=$renewalData.daysUntilExpiry*-1}
73 |
74 | {/if}
75 |
76 |
77 |
{$renewalData.domain}
78 |
79 |
{lang key='clientareadomainexpirydate'}: {$renewalData.expiryDate->format('j M Y')} ({$renewalData.expiryDate->diffForHumans()})
80 | {if $renewalData.freeDomainRenewal}
81 |
{lang key='domainRenewal.freeWithServiceDesc'}
82 | {/if}
83 |
84 | {if ($renewalData.pastGracePeriod && $renewalData.pastRedemptionGracePeriod) || !count($renewalData.renewalOptions)}
85 | {else}
86 |
111 | {/if}
112 |
113 |
114 | {if !$renewalData.eligibleForRenewal || $renewalData.beforeRenewLimit || ($renewalData.pastGracePeriod && $renewalData.pastRedemptionGracePeriod)}
115 | {else}
116 |
117 |
118 |
119 | {lang key='addtocart'}
120 |
121 | {lang key='domaincheckeradded'}
122 |
123 | {/if}
124 |
125 |
126 | {/foreach}
127 |
128 |
129 |
130 |
131 | {if $hasDomainsInGracePeriod}
132 | * {lang key='domainRenewal.graceRenewalPeriodDescription'}
133 | {/if}
134 |
135 |
136 |
137 |
138 |
157 |
158 | {/if}
159 |
160 |
161 |
188 |
189 |
190 |
191 |
--------------------------------------------------------------------------------
/domainoptions.tpl:
--------------------------------------------------------------------------------
1 | {if $invalid}
2 |
3 | {if $reason}
4 | {$reason}
5 | {else}
6 | {$LANG.cartdomaininvalid}
7 | {/if}
8 |
9 | {elseif $alreadyindb}
10 |
11 | {$LANG.cartdomainexists}
12 |
13 | {else}
14 |
15 | {if $checktype=="register" && $regenabled}
16 |
17 |
18 |
19 | {if $status eq "available" || $status eq "error"}
20 |
21 |
22 | {$LANG.cartcongratsdomainavailable|sprintf2:$domain}
23 |
24 |
25 |
26 |
27 |
28 |
29 | {if count($searchResults.pricing) == 1}
30 |
{$LANG.orderForm.domainAddedToCart}
31 |
32 |
33 | {$searchResults.shortestPeriod.register}
34 |
35 | {else}
36 |
{$LANG.orderForm.registerLongerAndSave}
37 |
38 |
39 |
40 |
41 | {$searchResults.shortestPeriod.period} {$LANG.orderyears} @ {$searchResults.shortestPeriod.register}
42 |
43 |
44 |
45 |
46 |
47 | {lang key="domainChecker.additionalPricingOptions" domain=$searchResults.domainName}
48 |
49 |
50 |
60 |
61 | {/if}
62 |
63 |
64 |
65 | {assign var='continueok' value=true}
66 |
67 | {elseif $status eq "unavailable"}
68 |
69 |
70 | {$LANG.cartdomaintaken|sprintf2:$domain}
71 |
72 |
73 | {/if}
74 |
75 | {elseif $checktype=="transfer" && $transferenabled}
76 |
77 |
78 |
79 | {if $status eq "available"}
80 |
81 |
82 | {$LANG.carttransfernotregistered|sprintf2:$domain}
83 |
84 | {$LANG.orderForm.tryRegisteringInstead}
85 |
86 | {elseif $status eq "unavailable" || $status eq "error"}
87 |
88 |
89 | {$LANG.carttransferpossible|sprintf2:$domain:$transferprice}
90 |
91 |
92 |
93 |
94 |
95 | {assign var='continueok' value=true}
96 |
97 | {/if}
98 |
99 | {elseif $checktype=="owndomain" || $checktype=="subdomain"}
100 |
101 |
102 |
103 |
104 |
107 |
108 | {/if}
109 |
110 | {if $searchResults.suggestions}
111 |
112 |
113 | {$LANG.cartotherdomainsuggestions}
114 |
115 |
116 |
117 | {foreach $searchResults.suggestions as $num => $result}
118 |
119 |
120 |
121 |
122 | {$result.domainName}
123 |
124 |
125 | {if count($result.pricing) > 1}
126 |
127 | {/if}
128 |
129 |
130 |
131 | {$result.shortestPeriod.period} {$LANG.orderyears} @ {$result.shortestPeriod.register}
132 |
133 |
134 | {if count($result.pricing) > 1}
135 |
136 |
137 |
138 | {lang key="domainChecker.additionalPricingOptions" domain=$result.domainName}
139 |
140 |
141 |
151 |
152 | {/if}
153 |
154 |
155 | {/foreach}
156 |
157 |
158 | {assign var='continueok' value=true}
159 |
160 | {/if}
161 |
162 | {if $continueok}
163 |
164 |
165 | {$LANG.orderForm.domainAvailabilityCached}
166 |
167 |
168 |
169 |
170 | {$LANG.continue}
171 |
172 |
173 |
174 | {/if}
175 |
176 | {/if}
177 |
178 |
185 |
--------------------------------------------------------------------------------
/domainregister.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
6 |
9 |
10 |
15 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
16 |
17 |
{$LANG.orderForm.findNewDomain}
18 |
19 |
57 |
58 |
59 |
60 |
{lang key='orderForm.searching'}...
61 |
62 |
{lang key='orderForm.domainLetterOrNumber'}{lang key='orderForm.domainLengthRequirements'}
63 |
{lang key='orderForm.domainIsUnavailable'}
64 |
{lang key='orderForm.domainHasUnavailableTld'}
65 |
{$LANG.domainavailablemessage}
66 |
{$LANG.domainContactUs}
67 |
89 |
90 |
91 |
92 | {$LANG.addtocart}
93 |
94 | {lang key='loading'}
95 |
96 | {lang key='checkout'}
97 | {$LANG.domaincheckertaken}
98 |
99 |
100 |
101 |
102 |
103 |
104 | {if $spotlightTlds}
105 |
106 |
107 | {foreach $spotlightTlds as $key => $data}
108 |
109 |
110 | {if $data.group}
111 |
{$data.groupDisplayName}
112 | {/if}
113 | {$data.tld}
114 |
115 |
116 |
117 |
118 |
119 | {lang key='domainunavailable'}
120 |
121 |
122 | {lang key='domainunavailable'}
123 |
124 | {$data.register}
125 |
126 | {lang key='orderForm.add'}
127 |
128 | {lang key='loading'}
129 |
130 | {lang key='checkout'}
131 | {$LANG.domaincheckertaken}
132 |
133 |
134 | {lang key='domainChecker.contactSupport'}
135 |
136 |
137 |
138 |
139 | {/foreach}
140 |
141 |
142 | {/if}
143 |
144 |
145 |
148 |
149 | {lang key='orderForm.generatingSuggestions'}
150 |
151 |
152 |
153 |
154 |
155 | {lang key='domainCheckerSalesGroup.hot'}
156 | {lang key='domainCheckerSalesGroup.new'}
157 | {lang key='domainCheckerSalesGroup.sale'}
158 |
159 |
160 |
161 |
162 | {$LANG.addtocart}
163 |
164 | {lang key='loading'}
165 |
166 | {lang key='checkout'}
167 | {$LANG.domaincheckertaken}
168 |
169 |
170 | {lang key='domainChecker.contactSupport'}
171 |
172 |
173 |
174 |
175 |
179 |
180 |
{lang key='domainssuggestionswarnings'}
181 |
182 |
183 |
184 |
185 |
186 |
187 |
188 | {if $featuredTlds}
189 |
190 |
191 | {foreach $featuredTlds as $num => $tldinfo}
192 | {if $num % 3 == 0 && (count($featuredTlds) - $num < 3)}
193 | {if count($featuredTlds) - $num == 2}
194 |
195 | {else}
196 |
197 | {/if}
198 | {/if}
199 |
200 |
201 |
202 |
203 |
204 |
205 | {if is_object($tldinfo.register)}
206 | {$tldinfo.register->toPrefixed()}{if $tldinfo.period > 1}{lang key="orderForm.shortPerYears" years={$tldinfo.period}}{else}{lang key="orderForm.shortPerYear" years=''}{/if}
207 | {else}
208 | {lang key="domainregnotavailable"}
209 | {/if}
210 |
211 |
212 |
213 | {/foreach}
214 |
215 |
216 | {/if}
217 |
218 |
{lang key='pricing.browseExtByCategory'}
219 |
220 |
225 |
226 |
227 |
237 | {foreach $pricing['pricing'] as $tld => $price}
238 |
239 |
240 | .{$tld}
241 | {if $price.group}
242 |
243 | {lang key='domainCheckerSalesGroup.'|cat:$price.group}
244 |
245 | {/if}
246 |
247 |
248 |
249 |
250 | {if isset($price.register) && current($price.register) > 0}
251 | {current($price.register)}
252 | {key($price.register)} {if key($price.register) > 1}{lang key="orderForm.years"}{else}{lang key="orderForm.year"}{/if}
253 | {elseif isset($price.register) && current($price.register) == 0}
254 | {lang key='orderfree'}
255 | {else}
256 | {lang key='na'}
257 | {/if}
258 |
259 |
260 | {if isset($price.transfer) && current($price.transfer) > 0}
261 | {current($price.transfer)}
262 | {key($price.transfer)} {if key($price.register) > 1}{lang key="orderForm.years"}{else}{lang key="orderForm.year"}{/if}
263 | {elseif isset($price.transfer) && current($price.transfer) == 0}
264 | {lang key='orderfree'}
265 | {else}
266 | {lang key='na'}
267 | {/if}
268 |
269 |
270 | {if isset($price.renew) && current($price.renew) > 0}
271 | {current($price.renew)}
272 | {key($price.renew)} {if key($price.register) > 1}{lang key="orderForm.years"}{else}{lang key="orderForm.year"}{/if}
273 | {elseif isset($price.renew) && current($price.renew) == 0}
274 | {lang key='orderfree'}
275 | {else}
276 | {lang key='na'}
277 | {/if}
278 |
279 |
280 |
281 |
282 | {/foreach}
283 |
284 |
285 |
286 | {lang key='pricing.selectExtCategory'}
287 |
288 |
289 |
290 |
291 |
292 |
293 |
294 |
295 |
296 |
297 |
298 |
299 |
300 |
{lang key='orderForm.addHosting'}
301 |
{lang key='orderForm.chooseFromRange'}
302 |
303 |
304 |
{lang key='orderForm.packagesForBudget'}
305 |
306 |
307 | {lang key='orderForm.exploreNow'}
308 |
309 |
310 |
311 | {if $domainTransferEnabled}
312 |
328 | {/if}
329 |
330 |
331 |
332 |
333 |
334 |
349 |
--------------------------------------------------------------------------------
/domainrenewals.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
12 |
13 |
14 |
15 |
20 |
21 |
22 |
23 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
24 |
25 |
{$LANG.domainrenewdesc}
26 |
27 |
118 |
119 |
120 |
121 |
122 |
--------------------------------------------------------------------------------
/domaintransfer.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
6 |
9 |
10 |
15 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
16 |
17 |
18 |
{lang key='orderForm.transferToUs'}
19 |
{lang key='orderForm.transferExtend'}*
20 |
21 |
22 |
23 |
75 |
76 |
* {lang key='orderForm.extendExclusions'}
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/error.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
6 |
9 |
10 |
15 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
16 |
17 |
18 |
19 | {$errortitle}
20 |
21 |
22 |
23 |
24 |
25 |
{$errormsg}
26 |
27 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/fraudcheck.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
10 |
11 |
12 |
13 |
14 |
15 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
16 |
17 |
18 |
19 | {$errortitle}
20 |
21 |
22 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/img/globe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/orderforms-standard_cart/9678759afc84818afcb2fc1c32813b3a79a4a0b1/img/globe.png
--------------------------------------------------------------------------------
/includes/existing-paymethods.tpl:
--------------------------------------------------------------------------------
1 | {if $selectedAccountId === $client->id}
2 | {foreach $client->payMethods->validateGateways()->sortByExpiryDate() as $payMethod}
3 | {assign "payMethodExpired" 0}
4 | {assign "expiryDate" ""}
5 | {if $payMethod->isCreditCard()}
6 | {if ($payMethod->payment->isExpired())}
7 | {assign "payMethodExpired" 1}
8 | {/if}
9 |
10 | {if $payMethod->payment->getExpiryDate()}
11 | {assign "expiryDate" $payMethod->payment->getExpiryDate()->format('m/Y')}
12 | {/if}
13 | {/if}
14 |
15 |
16 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {if $payMethod->isCreditCard() || $payMethod->isRemoteBankAccount()}
31 | {$payMethod->payment->getDisplayName()}
32 | {else}
33 |
34 | {$payMethod->payment->getAccountType()}
35 |
36 | {substr($payMethod->payment->getAccountNumber(), -4)}
37 | {/if}
38 |
39 |
40 | {$payMethod->getDescription()}
41 |
42 |
43 | {$expiryDate}{if $payMethodExpired}{$LANG.clientareaexpired} {/if}
44 |
45 | {/foreach}
46 | {/if}
47 |
--------------------------------------------------------------------------------
/includes/product-recommendations.tpl:
--------------------------------------------------------------------------------
1 | {if !empty($lastProduct)}
2 |
3 |
4 |
5 | {lang key="recommendations.productAdded"}
6 |
7 |
8 | {$lastProduct.product.name}
9 | {$lastProduct.product.productGroup.name}
10 |
11 |
12 |
13 | {if !$lastProduct.pricing->isFree()}
14 | {$lastProduct.pricing->price()->toFull()}
15 | {if $lastProduct.pricing->setup() && $lastProduct.pricing->setup()->toNumeric() > 0}
16 | + {$lastProduct.pricing->setup()->toFull()} {lang key="ordersetupfee"}
17 | {/if}
18 | {/if}
19 |
20 | {lang key='orderpaymentterm'|cat:$lastProduct.pricing->cycle()}
21 |
22 |
23 |
24 | {/if}
25 |
26 |
27 | {if !in_array($templatefile, ['viewcart', 'checkout', 'complete'])}
28 |
{lang key="recommendations.explain.product"}
29 | {elseif !$recommendStyle && $templatefile != 'complete'}
30 |
{lang key="recommendations.explain.generic"}
31 | {elseif $templatefile == 'complete'}
32 |
33 |
{lang key="recommendations.title.generic"}
34 |
35 |
36 | {if !empty($productRecommendations.order)}
37 | {lang key="recommendations.title.yourOrder"}
38 | {else}
39 | {lang key="recommendations.title.yourProducts"}
40 | {/if}
41 |
42 |
43 |
44 |
45 | {/if}
46 | {if $productRecommendations}
47 | {foreach $productRecommendations as $categoryKey => $categoryRecommendations}
48 | {if $templatefile == 'complete' && $categoryKey == 'own' && !empty($productRecommendations.own) && !empty($productRecommendations.order)}
49 |
50 | {lang key="recommendations.title.yourProducts"}
51 |
52 |
53 | {/if}
54 | {foreach $categoryRecommendations as $categoryRecommendation}
55 | {if $recommendStyle && $templatefile != 'complete'}
56 |
{lang key="recommendations.explain.ordered" productName=$categoryRecommendation.name}
57 | {/if}
58 | {foreach $categoryRecommendation.recommendations as $recommendation}
59 | {assign var="price" value=$recommendation->pricing()->first()}
60 |
61 |
105 |
106 |
{$recommendation.shortDescription}
107 |
108 |
109 | {/foreach}
110 | {/foreach}
111 | {/foreach}
112 | {/if}
113 |
114 |
115 |
--------------------------------------------------------------------------------
/index.php:
--------------------------------------------------------------------------------
1 |
7 |
8 |
9 | {lang key='remoteAuthn.provider'}
10 | {lang key='remoteAuthn.name'}
11 | {lang key='remoteAuthn.emailAddress'}
12 | {lang key='remoteAuthn.actions'}
13 |
14 |
15 |
16 |
17 | {lang key='remoteAuthn.noLinkedAccounts'}
18 |
19 |
20 |
21 | {elseif $linkableProviders}
22 |
23 |
24 |
25 | {lang key='remoteAuthn.unavailable'}
26 |
27 |
28 | {lang key='remoteAuthn.error'} {lang key='remoteAuthn.connectError'}
29 |
30 |
31 | {lang key='remoteAuthn.completeSignIn'}
32 |
33 |
34 | {lang key='remoteAuthn.redirecting'}
35 |
36 |
37 | {lang key='remoteAuthn.success'} {lang key='remoteAuthn.accountNowLinked'}
38 |
39 |
40 | {lang key='remoteAuthn.linkInitiated'} {lang key='remoteAuthn.oneTimeAuthRequired'}
41 |
42 |
43 | {lang key='remoteAuthn.linkInitiated'} {lang key='remoteAuthn.completeRegistrationForm'}
44 |
45 |
46 | {lang key='remoteAuthn.linkInitiated'} {lang key='remoteAuthn.completeNewAccountForm'}
47 |
48 |
49 | {lang key='remoteAuthn.error'} {lang key='remoteAuthn.linkedToAnotherClient'}
50 |
51 |
52 | {lang key='remoteAuthn.error'} {lang key='remoteAuthn.alreadyLinkedToYou'}
53 |
54 |
55 | {lang key='remoteAuthn.error'} {lang key='remoteAuthn.connectError'}
56 |
57 |
58 |
59 | {if $linkContext == 'registration'}
60 |
61 | {lang key='remoteAuthn.titleSignUpVerb'}
62 |
63 | {elseif $linkContext == 'checkout-existing'}
64 |
65 | {lang key='remoteAuthn.titleOr'}
66 |
67 | {lang key='remoteAuthn.saveTimeByLinking'}
68 | {elseif $linkContext == 'checkout-new'}
69 |
70 | {lang key='remoteAuthn.titleSignUpVerb'}
71 |
72 | {lang key='remoteAuthn.saveTimeByLinking'}
73 | {elseif $linkContext == 'clientsecurity'}
74 | {lang key='remoteAuthn.mayHaveMultipleLinks'}
75 | {/if}
76 |
77 |
80 |
81 | {foreach $linkableProviders as $provider }
82 | {if in_array($linkContext, ['checkout-existing'])}
83 | {$provider.login_button}
84 | {else}
85 | {$provider.code}
86 | {/if}
87 | {/foreach}
88 |
89 |
90 |
91 | {if !isset($customFeedback) || !$customFeedback}
92 |
93 | {/if}
94 |
95 | {/if}
96 |
--------------------------------------------------------------------------------
/marketconnect-promo.tpl:
--------------------------------------------------------------------------------
1 |
44 |
--------------------------------------------------------------------------------
/ordersummary.tpl:
--------------------------------------------------------------------------------
1 | {if $producttotals}
2 | {if $producttotals.allowqty && $producttotals.qty > 1}{$producttotals.qty} x {/if}{$producttotals.productinfo.name}
3 | {$producttotals.productinfo.groupname}
4 |
5 |
6 | {$producttotals.productinfo.name}
7 | {$producttotals.pricing.baseprice}
8 |
9 |
10 | {foreach $producttotals.configoptions as $configoption}
11 | {if $configoption}
12 |
13 | » {$configoption.name}: {$configoption.optionname}
14 | {$configoption.recurring}{if $configoption.setup} + {$configoption.setup} {$LANG.ordersetupfee}{/if}
15 |
16 | {/if}
17 | {/foreach}
18 |
19 | {foreach $producttotals.addons as $addon}
20 |
21 | + {$addon.name}
22 | {$addon.recurring}
23 |
24 | {/foreach}
25 |
26 | {if $producttotals.pricing.setup || $producttotals.pricing.recurring || $producttotals.pricing.addons}
27 |
28 | {if $producttotals.pricing.setup}
29 |
30 | {$LANG.cartsetupfees}:
31 | {$producttotals.pricing.setup}
32 |
33 | {/if}
34 | {foreach from=$producttotals.pricing.recurringexcltax key=cycle item=recurring}
35 |
36 | {$cycle}:
37 | {$recurring}
38 |
39 | {/foreach}
40 | {if $producttotals.pricing.tax1}
41 |
42 | {$carttotals.taxname} @ {$carttotals.taxrate}%:
43 | {$producttotals.pricing.tax1}
44 |
45 | {/if}
46 | {if $producttotals.pricing.tax2}
47 |
48 | {$carttotals.taxname2} @ {$carttotals.taxrate2}%:
49 | {$producttotals.pricing.tax2}
50 |
51 | {/if}
52 |
53 | {/if}
54 |
55 |
56 | {$producttotals.pricing.totaltoday}
57 | {$LANG.ordertotalduetoday}
58 |
59 | {elseif !empty($renewals) || !empty($serviceRenewals)}
60 | {if !empty($serviceRenewals)}
61 | {if !empty($carttotals.renewalsByType.services)}
62 | {lang key='renewService.titleAltPlural'}
63 | {foreach $carttotals.renewalsByType.services as $serviceId => $serviceRenewal}
64 |
65 |
66 |
67 | {$serviceRenewal.name}
68 |
69 |
70 | {$serviceRenewal.domainName}
71 |
72 |
73 |
74 |
75 | {$serviceRenewal.billingCycle}
76 |
77 |
78 | {$serviceRenewal.recurringBeforeTax}
79 |
80 |
81 |
82 |
83 |
84 |
85 | {/foreach}
86 | {/if}
87 | {if !empty($carttotals.renewalsByType.addons)}
88 | {lang key='renewServiceAddon.titleAltPlural'}
89 | {foreach $carttotals.renewalsByType.addons as $serviceAddonId => $serviceAddonRenewal}
90 |
91 |
92 |
93 | {$serviceAddonRenewal.name}
94 |
95 |
96 | {$serviceAddonRenewal.domainName}
97 |
98 |
99 |
100 |
101 | {$serviceAddonRenewal.billingCycle}
102 |
103 |
104 | {$serviceAddonRenewal.recurringBeforeTax}
105 |
106 |
107 |
108 |
109 |
110 |
111 | {/foreach}
112 | {/if}
113 | {elseif !empty($renewals) && !empty($carttotals.renewalsByType.domains)}
114 | {lang key='domainrenewals'}
115 | {foreach $carttotals.renewalsByType.domains as $domainId => $renewal}
116 |
117 |
118 | {$renewal.domain} - {$renewal.regperiod} {if $renewal.regperiod == 1}{lang key='orderForm.year'}{else}{lang key='orderForm.years'}{/if}
119 |
120 |
121 | {$renewal.priceBeforeTax}
122 |
123 |
124 |
125 |
126 |
127 | {if $renewal.dnsmanagement}
128 |
129 | + {lang key='domaindnsmanagement'}
130 |
131 | {/if}
132 | {if $renewal.emailforwarding}
133 |
134 | + {lang key='domainemailforwarding'}
135 |
136 | {/if}
137 | {if $renewal.idprotection}
138 |
139 | + {lang key='domainidprotection'}
140 |
141 | {/if}
142 | {if $renewal.hasGracePeriodFee}
143 |
144 | + {lang key='domainRenewal.graceFee'}
145 |
146 | {/if}
147 | {if $renewal.hasRedemptionGracePeriodFee}
148 |
149 | + {lang key='domainRenewal.redemptionFee'}
150 |
151 | {/if}
152 |
153 | {/foreach}
154 | {/if}
155 |
156 |
157 | {lang key='ordersubtotal'}:
158 | {$carttotals.subtotal}
159 |
160 | {if ($carttotals.taxrate && $carttotals.taxtotal) || ($carttotals.taxrate2 && $carttotals.taxtotal2)}
161 | {if $carttotals.taxrate}
162 |
163 | {$carttotals.taxname} @ {$carttotals.taxrate}%:
164 | {$carttotals.taxtotal}
165 |
166 | {/if}
167 | {if $carttotals.taxrate2}
168 |
169 | {$carttotals.taxname2} @ {$carttotals.taxrate2}%:
170 | {$carttotals.taxtotal2}
171 |
172 | {/if}
173 | {/if}
174 |
175 |
176 | {$carttotals.total}
177 | {lang key='ordertotalduetoday'}
178 |
179 | {/if}
180 |
--------------------------------------------------------------------------------
/products.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
5 |
8 |
9 |
10 |
22 | {if $errormessage}
23 |
24 | {$errormessage}
25 |
26 | {elseif !$productGroup}
27 |
28 | {lang key='orderForm.selectCategory'}
29 |
30 | {/if}
31 |
32 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
33 |
34 |
35 |
36 | {foreach $products as $key => $product}
37 | {$idPrefix = ($product.bid) ? ("bundle"|cat:$product.bid) : ("product"|cat:$product.pid)}
38 |
39 |
40 |
41 | {$product.name}
42 | {if $product.stockControlEnabled}
43 |
44 | {$product.qty} {$LANG.orderavailable}
45 |
46 | {/if}
47 |
48 |
49 | {if $product.featuresdesc}
50 |
51 | {$product.featuresdesc}
52 |
53 | {/if}
54 |
55 | {foreach $product.features as $feature => $value}
56 |
57 | {$value}
58 | {$feature}
59 |
60 | {/foreach}
61 |
62 |
63 |
64 |
65 | {if $product.bid}
66 | {$LANG.bundledeal}
67 | {if $product.displayprice}
68 | {$product.displayprice}
69 | {/if}
70 | {else}
71 | {if $product.pricing.hasconfigoptions}
72 | {$LANG.startingfrom}
73 |
74 | {/if}
75 | {$product.pricing.minprice.price}
76 |
77 | {if $product.pricing.minprice.cycle eq "monthly"}
78 | {$LANG.orderpaymenttermmonthly}
79 | {elseif $product.pricing.minprice.cycle eq "quarterly"}
80 | {$LANG.orderpaymenttermquarterly}
81 | {elseif $product.pricing.minprice.cycle eq "semiannually"}
82 | {$LANG.orderpaymenttermsemiannually}
83 | {elseif $product.pricing.minprice.cycle eq "annually"}
84 | {$LANG.orderpaymenttermannually}
85 | {elseif $product.pricing.minprice.cycle eq "biennially"}
86 | {$LANG.orderpaymenttermbiennially}
87 | {elseif $product.pricing.minprice.cycle eq "triennially"}
88 | {$LANG.orderpaymenttermtriennially}
89 | {/if}
90 |
91 | {if $product.pricing.minprice.setupFee}
92 | {$product.pricing.minprice.setupFee->toPrefixed()} {$LANG.ordersetupfee}
93 | {/if}
94 | {/if}
95 |
96 |
97 |
98 | {$LANG.ordernowbutton}
99 |
100 |
101 |
102 |
103 | {if $product@iteration % 2 == 0}
104 |
105 |
106 | {/if}
107 | {/foreach}
108 |
109 |
110 |
111 |
112 |
113 |
114 | {include file="orderforms/standard_cart/recommendations-modal.tpl"}
115 |
--------------------------------------------------------------------------------
/recommendations-modal.tpl:
--------------------------------------------------------------------------------
1 | {if in_array($templatefile, ['configureproductdomain', 'configureproduct'])}
2 |
3 | {/if}
4 |
5 |
6 |
7 |
18 |
19 | {include file="orderforms/standard_cart/includes/product-recommendations.tpl"}
20 |
21 |
26 |
27 |
28 |
53 |
54 |
--------------------------------------------------------------------------------
/service-renewal-item.tpl:
--------------------------------------------------------------------------------
1 | {foreach $renewableItems as $renewableItem}
2 |
8 |
9 | {if $renewableItem.renewable === false}
10 |
11 | {lang key='renewService.renewalUnavailable'}
12 |
13 | {else}
14 |
15 | {lang key='renewService.renewingIn' days=$renewableItem.nextDueDate->diffInDays()}
16 |
17 | {/if}
18 |
19 |
20 | {$renewableItem.product->name}
21 |
22 |
23 | {$renewableItem.domain}
24 |
25 |
26 | {if is_null($renewableItem.nextDueDate)}
27 | {lang key='renewService.serviceNextDueDateBasic' nextDueDate={lang key='na'}}
28 | {else}
29 | {lang key='renewService.serviceNextDueDateExtended' nextDueDate=$renewableItem.nextDueDate->toClientDateFormat() nextDueDateFormatted=$renewableItem.nextDueDate->diffForHumans()}
30 | {/if}
31 |
32 |
33 |
34 | {if $renewableItem.renewable === false}
35 |
36 | {$renewableItem.reason}
37 |
38 | {else}
39 |
40 | {lang key='renewService.renewalPeriodLabel'}
41 |
42 |
43 | {lang key='renewService.renewalPeriod' nextDueDate=$renewableItem.nextDueDate->toClientDateFormat() nextPayUntilDate=$renewableItem.nextPayUntilDate->toClientDateFormat() renewalPrice=$renewableItem.price}
44 |
45 | {/if}
46 |
47 | {if $renewableItem.renewable === true}
48 |
49 |
50 |
51 | {lang key='addtocart'}
52 |
53 |
54 | {lang key='domaincheckeradded'}
55 |
56 |
57 | {/if}
58 |
59 | {if !empty($renewableItem.addons)}
60 |
63 |
Addons
64 |
65 | {include file="orderforms/standard_cart/service-renewal-item.tpl" renewableItems=$renewableItem.addons prefix='a-'}
66 |
67 |
68 | {/if}
69 |
70 | {/foreach}
--------------------------------------------------------------------------------
/service-renewals.tpl:
--------------------------------------------------------------------------------
1 | {include file="orderforms/standard_cart/common.tpl"}
2 |
3 |
4 |
7 |
8 |
32 | {include file="orderforms/standard_cart/sidebar-categories-collapsed.tpl"}
33 | {if $totalServiceCount == 0}
34 |
35 | {lang key='renewService.noServices'}
36 |
37 |
38 |
39 |
40 | {lang key='orderForm.returnToClientArea'}
41 |
42 |
43 | {else}
44 |
45 |
46 | {if $totalResults < $totalServiceCount}
47 |
48 | {lang key='renewService.showingServices' showing=$totalResults totalCount=$totalServiceCount}
49 |
50 | {lang key='domainRenewal.showAll'}
51 |
52 |
53 | {/if}
54 |
55 | {include file="orderforms/standard_cart/service-renewal-item.tpl" renewableItems=$renewableServices prefix=''}
56 |
57 |
58 |
77 |
78 | {/if}
79 |
80 |
81 |
109 |
110 |
111 |
--------------------------------------------------------------------------------
/sidebar-categories-collapsed.tpl:
--------------------------------------------------------------------------------
1 |
23 |
--------------------------------------------------------------------------------
/sidebar-categories-selector.tpl:
--------------------------------------------------------------------------------
1 | {if $panel}
2 |
15 |
16 |
17 |
37 |
38 |
39 | {if $panel->hasFooterHtml()}
40 |
43 | {/if}
44 | {/if}
45 |
--------------------------------------------------------------------------------
/sidebar-categories.tpl:
--------------------------------------------------------------------------------
1 | {foreach $secondarySidebar as $panel}
2 | getAttribute('id')} id="{$panel->getAttribute('id')}"{/if}>
3 |
18 |
19 | {if $panel->hasBodyHtml()}
20 |
21 | {$panel->getBodyHtml()}
22 |
23 | {/if}
24 |
25 | {if $panel->hasChildren()}
26 |
55 | {/if}
56 |
57 | {if $panel->hasFooterHtml()}
58 |
61 | {/if}
62 |
63 |
64 | {if $panel->getExtra('mobileSelect') and $panel->hasChildren()}
65 | {* Mobile Select only supports dropdown menus *}
66 | getAttribute('id')} id="{$panel->getAttribute('id')}"{/if}>
67 | {include file="orderforms/standard_cart/sidebar-categories-selector.tpl"}
68 |
69 | {/if}
70 | {/foreach}
71 |
--------------------------------------------------------------------------------
/style.css:
--------------------------------------------------------------------------------
1 | /**
2 | * WHMCS Base Order Form Stylesheet
3 | *
4 | * This stylesheet defines the css rules used by the base order form.
5 | *
6 | * @project WHMCS
7 | * @cssdoc version 1.0-pre
8 | * @package WHMCS
9 | * @author WHMCS Limited
10 | * @copyright Copyright (c) WHMCS Limited 2005-2015
11 | * @license http://www.whmcs.com/license/
12 | * @link http://www.whmcs.com/
13 | */
14 |
15 | #order-standard_cart {
16 | margin: 0;
17 | padding: 0 0 40px 0;
18 | }
19 |
20 | #order-standard_cart .field-container {
21 | margin: 0 0 30px 0;
22 | }
23 |
24 | #order-standard_cart label {
25 | font-weight: 300;
26 | color: #666;
27 | font-size: 13px;
28 | }
29 |
30 | #order-standard_cart .info-text-sm {
31 | font-size: 0.85em;
32 | text-align: center;
33 | }
34 |
35 | /**
36 | * Responsive Categories
37 | */
38 |
39 | #order-standard_cart .categories-collapsed {
40 | margin-top: 20px;
41 | margin-bottom: 20px;
42 | padding: 4px;
43 | background-color: #f8f8f8;
44 | border-radius: 4px;
45 | }
46 | #order-standard_cart .categories-collapsed select {
47 | border: 0;
48 | color: #222;
49 | }
50 |
51 | /*
52 | * Section Dividers
53 | */
54 |
55 | #order-standard_cart .sub-heading {
56 | height: 0;
57 | border-top: 1px solid #DDD;
58 | text-align: center;
59 | margin-top: 20px;
60 | margin-bottom: 30px;
61 | }
62 | #order-standard_cart .sub-heading span {
63 | display: inline-block;
64 | position: relative;
65 | padding: 0 17px;
66 | top: -11px;
67 | font-size: 16px;
68 | color: #058;
69 | background-color: #fff;
70 | }
71 |
72 | /**
73 | * Products
74 | */
75 |
76 | #order-standard_cart .products {
77 | margin: 10px 0;
78 | }
79 |
80 | #order-standard_cart .products .product {
81 | padding: 1px 0 10px 0;
82 | margin: 0 0 20px 0;
83 | background: #fff;
84 | border-radius: 3px;
85 | border: 1px solid #ddd;
86 | }
87 |
88 | #order-standard_cart .products .product header {
89 | position: relative;
90 | padding: 10px 20px;
91 | margin: 0 1px;
92 | background: #f8f8f8;
93 | border-radius: 3px 3px 0 0;
94 | }
95 |
96 | #order-standard_cart .products .product header span {
97 | margin: 0;
98 | color: #333;
99 | font-size: 1.2em;
100 | }
101 |
102 | #order-standard_cart .products .product header .qty {
103 | float: right;
104 | font-size: 0.8em;
105 | font-style: italic;
106 | color: #888;
107 | }
108 |
109 | #order-standard_cart .products .product div.product-desc {
110 | float: left;
111 | width: 60%;
112 | padding: 8px 14px;
113 | font-size: 0.8em;
114 | }
115 |
116 | #order-standard_cart .products .product span.feature-value {
117 | font-weight: bold;
118 | }
119 |
120 | #order-standard_cart .products .product div.product-pricing {
121 | margin-bottom: 10px;
122 | }
123 | #order-standard_cart .products .product div.product-pricing span.price {
124 | font-size: 1.4em;
125 | }
126 |
127 | #order-standard_cart .products .product footer {
128 | float: right;
129 | margin: 20px 0;
130 | width: 40%;
131 | font-size: 0.8em;
132 | text-align: center;
133 | }
134 |
135 | /*
136 | * Addon Panels
137 | */
138 |
139 | #order-standard_cart .panel-addon {
140 | font-size: 0.8em;
141 | text-align: center;
142 | }
143 | #order-standard_cart .panel-addon:hover {
144 | cursor: pointer;
145 | }
146 | #order-standard_cart .panel-addon .panel-body {
147 | border-radius: 4px;
148 | }
149 | #order-standard_cart .panel-addon .panel-body label {
150 | font-size: 1em;
151 | font-weight: bold;
152 | color: #333;
153 | }
154 | #order-standard_cart .panel-addon .panel-price {
155 | padding: 4px;
156 | background-color: #e8e8e8;
157 | }
158 | #order-standard_cart .panel-addon .panel-add {
159 | display: block;
160 | padding: 4px;
161 | background-color: #5cb85c;
162 | color: #fff;
163 | border-radius: 0 0 4px 4px;
164 | }
165 | #order-standard_cart .panel-addon-selected {
166 | border-color: #5cb85c;
167 | }
168 | #order-standard_cart .panel-addon-selected .panel-price {
169 | background-color: #5cb85c;
170 | color: #fff;
171 | }
172 | #order-standard_cart .panel-addon-selected .panel-add {
173 | background-color: #ebccd1;
174 | color: #a94442;
175 | }
176 |
177 | /**
178 | * Domain registration
179 | */
180 |
181 | #order-standard_cart .domain-selection-options {
182 | margin: 15px 0;
183 | }
184 | #order-standard_cart .domains-row {
185 | margin-right: -2px;
186 | margin-left: -2px;
187 | }
188 | @media (max-width: 767px) {
189 | #order-standard_cart .domains-row {
190 | padding-bottom: 5px;
191 | }
192 | }
193 | #order-standard_cart .domains-row .col-sm-3,
194 | #order-standard_cart .domains-row .col-sm-9,
195 | #order-standard_cart .domains-row .col-xs-2,
196 | #order-standard_cart .domains-row .col-xs-3,
197 | #order-standard_cart .domains-row .col-xs-5,
198 | #order-standard_cart .domains-row .col-xs-7,
199 | #order-standard_cart .domains-row .col-xs-9 {
200 | padding-right: 2px;
201 | padding-left: 2px;
202 | }
203 |
204 | #order-standard_cart .domain-selection-options .option {
205 | margin-bottom: 2px;
206 | padding: 6px 20px;
207 | border-radius: 6px;
208 | background-color: #f8f8f8;
209 | }
210 | #order-standard_cart .domain-selection-options .option:hover {
211 | cursor: pointer;
212 | }
213 | #order-standard_cart .domain-selection-options .option .iradio_square-blue {
214 | margin-right: 10px;
215 | }
216 | #order-standard_cart .domain-suggestions .icheckbox_square-green {
217 | margin-right: 10px;
218 | }
219 | #order-standard_cart .domain-selection-options .option-selected label {
220 | font-weight: bold;
221 | }
222 | #order-standard_cart .domain-selection-options .option-selected {
223 | background-color: #efefef;
224 | }
225 | #order-standard_cart .domain-input-group {
226 | display: none;
227 | margin: 10px 0;
228 | }
229 | #order-standard_cart .domain-loading-spinner {
230 | display: none;
231 | padding: 30px;
232 | text-align: center;
233 | }
234 |
235 | #order-standard_cart .domain-lookup-primary-loader,
236 | #order-standard_cart .domain-lookup-primary-results {
237 | margin: 20px 0;
238 | text-align: center;
239 | }
240 | #order-standard_cart .domain-checker-result-headline,
241 | #order-standard_cart .domain-lookup-primary-results .headline {
242 | font-size: 1.6em;
243 | }
244 | #order-standard_cart .domain-checker-available {
245 | color: #5cb85c;
246 | }
247 | #order-standard_cart .domain-checker-unavailable,
248 | #order-standard_cart .domain-checker-invalid {
249 | color: #d9534f;
250 | }
251 | #order-standard_cart .transfer-eligible,
252 | #order-standard_cart .transfer-not-eligible {
253 | margin: 30px 0 15px;
254 | padding: 20px;
255 | }
256 | #order-standard_cart .transfer-eligible {
257 | color: #3c763d;
258 | background-color: #dff0d8;
259 | border-color: #d6e9c6;
260 | }
261 | #order-standard_cart .transfer-not-eligible {
262 | color: #666;
263 | background-color: #f6f6f6;
264 | }
265 |
266 | #order-standard_cart .domain-suggestions {
267 | margin-bottom: 20px;
268 | font-size: 0.8em;
269 | }
270 |
271 | #order-standard_cart .domain-add-domain {
272 | margin: 25px 0;
273 | }
274 |
275 | /**
276 | * Product Configuration
277 | */
278 |
279 | #order-standard_cart .product-info {
280 | margin: 0 0 20px 0;
281 | padding: 6px 15px;
282 | font-size: 0.85em;
283 | background-color: #f8f8f8;
284 | border-top: 1px solid #efefef;
285 | border-bottom: 1px solid #efefef;
286 | }
287 | #order-standard_cart .product-info .product-title {
288 | margin: 0;
289 | font-size: 1.6em;
290 | }
291 |
292 | #order-standard_cart .order-summary {
293 | margin: 0 0 20px 0;
294 | padding: 0;
295 | background-color: #666;
296 | border-bottom: 3px solid #666;
297 | border-radius: 4px;
298 | }
299 |
300 | #order-standard_cart .order-summary h2 {
301 | margin: 0;
302 | padding: 10px;
303 | color: #fff;
304 | text-align: center;
305 | font-size: 1.4em;
306 | font-weight: normal;
307 | }
308 |
309 | #order-standard_cart .summary-container {
310 | margin: 0;
311 | padding: 10px;
312 | min-height: 100px;
313 | border-radius: 3px;
314 | background-color: #f8f8f8;
315 | font-size: 0.8em;
316 | }
317 |
318 | #order-standard_cart .order-summary .product-name {
319 | display: block;
320 | font-weight: bold;
321 | font-size: 1.2em;
322 | }
323 | #order-standard_cart .order-summary .product-group {
324 | margin: 0 0 5px 0;
325 | display: block;
326 | font-style: italic;
327 | }
328 | #order-standard_cart .order-summary .summary-totals {
329 | margin: 5px 0;
330 | padding: 5px 0;
331 | border-top: 1px solid #ccc;
332 | border-bottom: 1px solid #ccc;
333 | }
334 | #order-standard_cart .order-summary .total-due-today span {
335 | display: block;
336 | text-align: right;
337 | }
338 | #order-standard_cart .order-summary .total-due-today .amt {
339 | font-size: 2.3em;
340 | }
341 |
342 | #order-standard_cart .order-summary .loader {
343 | position: relative;
344 | top: 10px;
345 | height: 0;
346 | padding-right: 10px;
347 | text-align: right;
348 | color: #efefef;
349 | }
350 |
351 | /**
352 | * View Cart
353 | */
354 |
355 | #order-standard_cart .panel-taxes {
356 | font-size: 0.8em;
357 | }
358 |
359 | /**
360 | * Checkout
361 | */
362 |
363 | #order-standard_cart #btnAlreadyRegistered,
364 | #order-standard_cart #btnNewUserSignup {
365 | margin: 0 0 0 10px;
366 | }
367 |
368 | #order-standard_cart .checkout-error-feedback {
369 | margin: 15px 0;
370 | }
371 |
372 | #order-standard_cart .checkout-security-msg {
373 | margin: 20px 0;
374 | padding-left: 75px;
375 | font-size: 0.8em;
376 | }
377 | #order-standard_cart .checkout-security-msg i {
378 | float: left;
379 | margin-left: -48px;
380 | font-size: 2.8em;
381 | }
382 |
383 | /**
384 | * Form fields
385 | */
386 |
387 | #order-standard_cart .prepend-icon {
388 | top: 0;
389 | left: 0;
390 | display: inline-block;
391 | vertical-align: top;
392 | position: relative;
393 | width: 100%;
394 | font-weight: normal;
395 | }
396 | #order-standard_cart .field,
397 | #order-standard_cart .form-control {
398 | position: relative;
399 | vertical-align: top;
400 | border: 1px solid #DDD;
401 | display: -moz-inline-stack;
402 | display: inline-block;
403 | color: #626262;
404 | outline: none;
405 | background: #fff;
406 | height: 36px;
407 | width: 100%;
408 | border-radius: 3px;
409 | font-size: 13px;
410 | }
411 | #order-standard_cart .input-group-lg > .form-control {
412 | height: 46px;
413 | padding: 10px 16px;
414 | font-size: 18px;
415 | line-height: 1.3333333;
416 | border-radius: 6px 0 0 6px;
417 | }
418 | #order-standard_cart .form-control-qty {
419 | width: 70px;
420 | text-align: center;
421 | }
422 | #order-standard_cart .form-control-static-inline {
423 | display: inline-block;
424 | }
425 | #order-standard_cart .form-control:focus {
426 | border-color: #ddd;
427 | outline: 0;
428 | -webkit-box-shadow: none;
429 | box-shadow: none;
430 | }
431 | #order-standard_cart textarea.field {
432 | height: auto;
433 | }
434 | #order-standard_cart .prepend-icon .field {
435 | padding-left: 36px;
436 | }
437 | #order-standard_cart .prepend-icon .field-icon i {
438 | position: relative;
439 | font-size: 14px;
440 | }
441 | #order-standard_cart .prepend-icon .field-icon {
442 | top: 0;
443 | z-index: 4;
444 | width: 42px;
445 | height: 36px;
446 | color: inherit;
447 | line-height: 36px;
448 | position: absolute;
449 | text-align: center;
450 | -webkit-transition: all 0.5s ease-out;
451 | -moz-transition: all 0.5s ease-out;
452 | -ms-transition: all 0.5s ease-out;
453 | -o-transition: all 0.5s ease-out;
454 | transition: all 0.5s ease-out;
455 | pointer-events: none;
456 | }
457 | #order-standard_cart .field-icon i {
458 | color: #bbb;
459 | }
460 | #order-standard_cart .field[disabled],
461 | #order-standard_cart .field[readonly] {
462 | background-color: #f8f8f8;
463 | opacity: 1;
464 | }
465 |
466 | #order-standard_cart .field-help-text {
467 | display: block;
468 | margin-top: 5px;
469 | margin-bottom: 10px;
470 | color: #888;
471 | font-size: 12px;
472 | }
473 |
474 | /**
475 | * View Cart
476 | */
477 |
478 | #order-standard_cart .view-cart-items-header {
479 | margin: 0;
480 | padding: 8px 15px;
481 | background-color: #058;
482 | color: #fff;
483 | font-size: 0.9em;
484 | border-radius: 4px 4px 0 0;
485 | }
486 | #order-standard_cart .view-cart-items {
487 | margin: 0 0 20px 0;
488 | border-bottom: 2px solid #058;
489 | }
490 | #order-standard_cart .view-cart-items .item {
491 | margin: 0;
492 | padding: 10px;
493 | background-color: #fff;
494 | border-left: 0;
495 | border-right: 0;
496 | font-size: 0.8em;
497 | }
498 | #order-standard_cart .view-cart-items .item:nth-child(even) {
499 | background-color: #f2f2f2;
500 | }
501 | #order-standard_cart .view-cart-items .item span:not(.caret) {
502 | display: block;
503 | }
504 | #order-standard_cart .view-cart-items .item-title {
505 | font-size: 1.6em;
506 | }
507 | #order-standard_cart .view-cart-items .item-group {
508 | font-size: 1.2em;
509 | }
510 | #order-standard_cart .view-cart-items .item-domain {
511 | color: #056;
512 | }
513 | #order-standard_cart .view-cart-items .item-price {
514 | text-align: right;
515 | }
516 | #order-standard_cart .view-cart-items .item-price span {
517 | font-size: 1.6em;
518 | }
519 | #order-standard_cart .view-cart-items .item-price .cycle {
520 | font-size: 0.9em;
521 | }
522 | #order-standard_cart .view-cart-items .item-qty {
523 | text-align: center;
524 | }
525 | #order-standard_cart .view-cart-items .item-qty input {
526 | margin-bottom: 5px;
527 | padding: 4px;
528 | height: auto;
529 | }
530 | #order-standard_cart .view-cart-items .item-qty button {
531 | font-size: 0.8em;
532 | }
533 |
534 | #order-standard_cart .btn-remove-from-cart {
535 | color: #444;
536 | }
537 | #order-standard_cart .btn-remove-from-cart:hover {
538 | color: #cc0000;
539 | text-decoration: none;
540 | }
541 |
542 | #order-standard_cart .empty-cart {
543 | text-align: right;
544 | margin: -20px 20px 0 0;
545 | line-height: 1em;
546 | }
547 | #order-standard_cart .empty-cart .btn {
548 | margin: 0;
549 | padding: 4px 10px;
550 | background-color: #058;
551 | border: 0;
552 | color: #fff;
553 | border-radius: 0 0 4px 4px;
554 | }
555 |
556 | #order-standard_cart .btn-checkout {
557 | padding: 15px 34px;
558 | }
559 |
560 | #order-standard_cart .order-summary .subtotal {
561 | margin: 0;
562 | padding: 0 0 5px 0;
563 | font-size: 1.2em;
564 | border-bottom: 1px solid #ddd;
565 | }
566 | #order-standard_cart .order-summary .bordered-totals {
567 | margin: 0 0 5px 0;
568 | padding: 5px 0;
569 | border-bottom: 1px solid #ddd;
570 | }
571 | #order-standard_cart .order-summary .recurring-totals {
572 | margin: 5px 0 0 0;
573 | padding: 0;
574 | }
575 | #order-standard_cart .order-summary .total-due-today-padded {
576 | margin: 20px 0;
577 | }
578 |
579 | #order-standard_cart .order-summary .recurring-charges {
580 | font-size: 0.9em;
581 | color: #777;
582 | font-style: italic;
583 | text-align: right;
584 | }
585 |
586 | #order-standard_cart .order-summary .btn-continue-shopping {
587 | color: #222;
588 | font-size: 0.9em;
589 | }
590 |
591 | #order-standard_cart .view-cart-tabs .promo .form-group {
592 | margin-bottom: 5px;
593 | }
594 |
595 | #order-standard_cart .view-cart-tabs {
596 | margin: 0 0 20px 0;
597 | }
598 | #order-standard_cart .view-cart-tabs .nav-tabs {
599 | padding-left: 20px;
600 | font-size: 0.8em;
601 | }
602 | #order-standard_cart .view-cart-tabs .nav-tabs > li.active > a {
603 | background-color: #f8f8f8;
604 | }
605 | #order-standard_cart .view-cart-tabs .tab-content {
606 | background-color: #f8f8f8;
607 | padding: 15px;
608 | }
609 |
610 | #order-standard_cart .view-cart-promotion-code {
611 | margin: 0 0 5px 0;
612 | padding: 10px 20px;
613 | background-color: #fff;
614 | border: 1px dashed #ccc;
615 | text-align: center;
616 | }
617 |
618 | #order-standard_cart .view-cart-gateway-checkout {
619 | margin: 0 0 20px 0;
620 | padding: 15px;
621 | background-color: #e8e8e8;
622 | border-radius: 4px;
623 | text-align: center;
624 | }
625 |
626 | #order-standard_cart .view-cart-empty {
627 | padding: 30px 15px;
628 | text-align: center;
629 | }
630 |
631 | /**
632 | * Completion Page
633 | */
634 |
635 | #order-standard_cart .order-confirmation {
636 | text-align: center;
637 | }
638 | #order-standard_cart .order-confirmation span {
639 | font-size: 1.4em;
640 | }
641 | #order-standard_cart .order-confirmation-addon-output {
642 | margin: 15px 0;
643 | text-align: center;
644 | }
645 |
646 | /**
647 | * Error Page
648 | */
649 |
650 | .error-heading {
651 | margin: 30px 0;
652 | font-size: 1.4em;
653 | text-align: center;
654 | }
655 |
656 | /**
657 | * Remove Item Modal
658 | */
659 |
660 | #order-standard_cart .modal-title i {
661 | display: block;
662 | padding-top: 25px;
663 | }
664 | #order-standard_cart .modal-header,
665 | #order-standard_cart .modal-body,
666 | #order-standard_cart .modal-footer {
667 | text-align: center !important;
668 | border: 0;
669 | }
670 | #order-standard_cart .modal-footer {
671 | padding-bottom: 45px;
672 | }
673 |
674 | /**
675 | * Domain Lookup
676 | */
677 |
678 | .domain-checker-bg {
679 | padding: 42px 0;
680 | }
681 |
682 | .domain-searching {
683 | color: #ccc;
684 | }
685 |
686 | .domain-lookup-result .btn {
687 | width: 100px;
688 | }
689 |
690 | .spotlight-tlds {
691 | margin: 15px 0;
692 | padding: 7px 14px;
693 | background-color: #f8f8f8;
694 | }
695 | .spotlight-tlds-container {
696 | margin-left: -7px;
697 | margin-right: -7px;
698 | }
699 | .spotlight-tld-container {
700 | float: left;
701 | padding: 7px 7px;
702 | }
703 | .spotlight-tld-container-1 {
704 | width: 100%;
705 | }
706 | .spotlight-tld-container-2 {
707 | width: 50%;
708 | }
709 | .spotlight-tld-container-3 {
710 | width: 33.3%;
711 | }
712 | .spotlight-tld-container-4 {
713 | width: 25%;
714 | }
715 | .spotlight-tld-container-5 {
716 | width: 20%;
717 | }
718 | .spotlight-tld-container-6 {
719 | width: 16.6%;
720 | }
721 | .spotlight-tld-container-7 {
722 | width: 14.28%;
723 | }
724 | .spotlight-tld-container-8 {
725 | width: 12.5%;
726 | }
727 |
728 | @media screen and (max-width: 991px) {
729 | .spotlight-tld-container-5,
730 | .spotlight-tld-container-6 {
731 | width: 33.3%;
732 | }
733 | .spotlight-tld-container-7,
734 | .spotlight-tld-container-8 {
735 | width: 25%;
736 | }
737 | }
738 | @media screen and (max-width: 580px) {
739 | .spotlight-tld-container-3,
740 | .spotlight-tld-container-4,
741 | .spotlight-tld-container-5,
742 | .spotlight-tld-container-6,
743 | .spotlight-tld-container-7,
744 | .spotlight-tld-container-8 {
745 | width: 50%;
746 | }
747 | }
748 |
749 | .spotlight-tld {
750 | position: relative;
751 | overflow: hidden;
752 | margin: 0;
753 | padding: 15px 0;
754 | height: 112px;
755 | background-color: #fff;
756 | border: 1px solid #ddd;
757 | border-radius: 5px;
758 | text-align: center;
759 | font-weight: bold;
760 | color: #555;
761 | }
762 | .spotlight-tld span {
763 | display: block;
764 | padding: 5px 0;
765 | font-weight: normal;
766 | }
767 | .spotlight-tld .btn {
768 | padding: 2px 10px;
769 | font-size: 12px;
770 | line-height: 1.5;
771 | border-radius: 3px;
772 | background-color: #555;
773 | border-color: #333;
774 | color: #fff;
775 | width: 88px;
776 | }
777 | .spotlight-tld .btn span {
778 | padding: 0;
779 | }
780 | .spotlight-tld .unavailable,
781 | .spotlight-tld .invalid {
782 | margin: 19px 0;
783 | background-color: #eee;
784 | border-color: #ddd;
785 | color: #bbb;
786 | }
787 | .spotlight-tld .domain-lookup-spotlight-loader {
788 | line-height: 47px;
789 | font-size: 1.4em;
790 | }
791 | .spotlight-tld .results {
792 | display: none;
793 | }
794 | .spotlight-tld-new:before {
795 | content: 'NEW';
796 | width: 60px;
797 | position: absolute;
798 | letter-spacing: 1px;
799 | padding: 3px;
800 | font-size: x-small;
801 | font-weight: bold;
802 | color: #fff;
803 | top: 3px;
804 | right: -18px;
805 | background-color: #2ad588;
806 | transform: rotate(45deg);
807 | -webkit-transform: rotate(45deg);
808 | }
809 | .spotlight-tld-sale:before {
810 | content: 'SALE';
811 | width: 60px;
812 | position: absolute;
813 | letter-spacing: 0;
814 | padding: 3px;
815 | font-size: x-small;
816 | font-weight: bold;
817 | color: #fff;
818 | top: 3px;
819 | right: -18px;
820 | background-color: #f7d458;
821 | transform: rotate(45deg);
822 | -webkit-transform: rotate(45deg);
823 | }
824 | .spotlight-tld-hot:before {
825 | content: 'HOT';
826 | width: 60px;
827 | position: absolute;
828 | letter-spacing: 0;
829 | padding: 3px;
830 | font-size: x-small;
831 | font-weight: bold;
832 | color: #fff;
833 | top: 3px;
834 | right: -18px;
835 | background-color: #f9615a;
836 | transform: rotate(45deg);
837 | -webkit-transform: rotate(45deg);
838 | }
839 |
840 | .suggested-domains .panel-heading {
841 | border-bottom: 2px solid #62cb31;
842 | }
843 | .suggested-domains .domain-lookup-suggestions-loader {
844 | padding: 30px 20px;
845 | background-color: #f8f8f8;
846 | font-size: 0.9em;
847 | text-align: center;
848 | opacity: 0.7;
849 | }
850 | .suggested-domains .list-group-item {
851 | border-left: 0;
852 | border-right: 0;
853 | }
854 | .suggested-domains .extension {
855 | font-weight: bold;
856 | }
857 | .suggested-domains .promo.hot {
858 | padding: 2px 8px;
859 | background-color: #f9615a;
860 | color: #fff;
861 | }
862 | .suggested-domains .promo.sale {
863 | padding: 2px 8px;
864 | background-color: #f7d458;
865 | color: #fff;
866 | }
867 | .suggested-domains .promo.new {
868 | padding: 2px 8px;
869 | background-color: #2ad588;
870 | color: #fff;
871 | }
872 | .suggested-domains .price {
873 | float: right;
874 | padding: 0 20px;
875 | font-size: 1.2em;
876 | }
877 | .suggested-domains .btn {
878 | float: right;
879 | padding: 2px 10px;
880 | font-size: 11px;
881 | line-height: 1.4;
882 | border-radius: 3px;
883 | background-color: #555;
884 | border-color: #333;
885 | color: #fff;
886 | width: 85px;
887 | }
888 |
889 | .domain-promo-box {
890 | margin-top: 20px;
891 | margin-bottom: 20px;
892 | padding: 20px;
893 | background-color: #f9f9f9;
894 | border: 1px solid #ddd;
895 | color: #333;
896 | border-radius: 4px;
897 | }
898 | .domain-promo-box h3 {
899 | margin: 0;
900 | font-weight: 400;
901 | }
902 | .domain-promo-box i {
903 | float: right;
904 | }
905 | .domain-promo-box p {
906 | margin: 0 0 10px 0;
907 | font-size: 0.85em;
908 | }
909 | .domain-promo-box .small {
910 | margin: 10px 0 0 0;
911 | color: #999;
912 | }
913 |
914 | .btn-transfer {
915 | min-width: 100px;
916 | }
917 |
918 | .slim-alert {
919 | margin: 0 0 5px 0;
920 | padding: 5px;
921 | text-align: center;
922 | }
923 |
924 | .domain-suggestions-warning {
925 | padding: 10px 0;
926 | font-size: 0.7em;
927 | }
928 |
929 | /**
930 | * -------------------------
931 | * Domain Checker Captchas
932 | * -------------------------
933 | */
934 |
935 | #order-standard_cart .default-captcha {
936 | margin: 0 auto 6px auto;
937 | padding: 10px;
938 | max-width: 340px;
939 | background-color: #F9F9F9;
940 | border: 1px solid #d3d3d3;
941 | color: #888;
942 | border-radius: 3px;
943 | box-shadow: 0px 0px 4px 1px rgba(0,0,0,0.08);
944 | -webkit-box-shadow: 0px 0px 4px 1px rgba(0,0,0,0.08);
945 | -moz-box-shadow: 0px 0px 4px 1px rgba(0,0,0,0.08);
946 | text-align: center;
947 | font-size: 0.9em;
948 | }
949 | #order-standard_cart .default-captcha-register-margin {
950 | margin: 18px auto -25px auto;
951 | }
952 |
953 | #order-standard_cart .captcha-container p {
954 | margin-bottom: 5px;
955 | }
956 | #order-standard_cart .captcha-container img {
957 | margin-top: 3px;
958 | }
959 | #order-standard_cart .captcha-container .form-control {
960 | height: inherit;
961 | max-width: 90px;
962 | text-align: center;
963 | }
964 |
965 | #order-standard_cart .captcha-container #google-recaptcha {
966 | width: 304px;
967 | height: 100px;
968 | margin-top: 15px;
969 | margin-bottom: -50px;
970 | }
971 | #order-standard_cart .captcha-container #google-recaptcha.recaptcha-transfer {
972 | margin-bottom: -20px;
973 | }
974 |
975 | @media (max-width: 991px) {
976 | #order-standard_cart .captcha-container #google-recaptcha {
977 | padding-left: 2.5%;
978 | margin-bottom: -25px;
979 | }
980 | }
981 | @media (max-width: 736px) {
982 | #order-standard_cart .captcha-container #google-recaptcha {
983 | margin-bottom: -35px;
984 | transform: scale(0.935);
985 | transform-origin: 0 0;
986 | -webkit-transform: scale(0.935);
987 | -webkit-transform-origin: 0 0;
988 | }
989 | }
990 | @media (max-width: 384px) {
991 | #order-standard_cart .captcha-container #google-recaptcha {
992 | margin-bottom: -30px;
993 | transform: scale(0.96);
994 | transform-origin: 0 0;
995 | }
996 | }
997 | @media (max-width: 360px) {
998 | #order-standard_cart .captcha-container #google-recaptcha {
999 | margin-bottom: -35px;
1000 | transform: scale(0.89);
1001 | transform-origin: 0 0;
1002 | }
1003 | }
1004 | @media (max-width: 320px) {
1005 | #order-standard_cart .captcha-container #google-recaptcha {
1006 | padding-left: 13.5%;
1007 | margin-bottom: -45px;
1008 | transform: scale(0.83);
1009 | transform-origin: 0 0;
1010 | -webkit-transform: scale(0.785);
1011 | -webkit-transform-origin: 0 0;
1012 | }
1013 | }
1014 |
--------------------------------------------------------------------------------
/theme.yaml:
--------------------------------------------------------------------------------
1 | dependencies:
2 | bootstrap: 3||4
3 | jquery: 1.12
4 | fontawesome: 5
5 |
--------------------------------------------------------------------------------
/thumbnail.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/orderforms-standard_cart/9678759afc84818afcb2fc1c32813b3a79a4a0b1/thumbnail.gif
--------------------------------------------------------------------------------