├── 3dsecure.tpl
├── README.md
├── access-denied.tpl
├── account-contacts-manage.tpl
├── account-contacts-new.tpl
├── account-paymentmethods-billing-contacts.tpl
├── account-paymentmethods-manage.tpl
├── account-paymentmethods.tpl
├── account-user-management.tpl
├── account-user-permissions.tpl
├── affiliates.tpl
├── affiliatessignup.tpl
├── announcements.tpl
├── banned.tpl
├── bulkdomainmanagement.tpl
├── clientareaaddfunds.tpl
├── clientareacancelrequest.tpl
├── clientareadetails.tpl
├── clientareadomainaddons.tpl
├── clientareadomaincontactinfo.tpl
├── clientareadomaindetails.tpl
├── clientareadomaindns.tpl
├── clientareadomainemailforwarding.tpl
├── clientareadomaingetepp.tpl
├── clientareadomainregisterns.tpl
├── clientareadomains.tpl
├── clientareaemails.tpl
├── clientareahome.tpl
├── clientareainvoices.tpl
├── clientareaproductdetails.tpl
├── clientareaproducts.tpl
├── clientareaproductusagebilling.tpl
├── clientareaquotes.tpl
├── clientareasecurity.tpl
├── clientregister.tpl
├── configuressl-complete.tpl
├── configuressl-stepone.tpl
├── configuressl-steptwo.tpl
├── contact.tpl
├── css
├── all.css
├── all.min.css
├── blue.png
├── blue@2x.png
├── index.php
├── invoice.css
├── invoice.min.css
├── oauth.css
├── store.css
├── theme.css
└── theme.min.css
├── domain-pricing.tpl
├── downloaddenied.tpl
├── downloads.tpl
├── downloadscat.tpl
├── error
├── index.php
├── internal-error.tpl
├── page-not-found.tpl
└── unknown-routepath.tpl
├── footer.tpl
├── forwardpage.tpl
├── header.tpl
├── homepage.tpl
├── images
├── close.png
├── loading.gif
├── next.png
└── prev.png
├── img
├── flags.png
├── flags@2x.png
├── globe.png
├── index.php
├── loader.gif
├── shadow-left.png
└── worldmap.png
├── includes
├── active-products-services-item.tpl
├── alert.tpl
├── breadcrumb.tpl
├── captcha.tpl
├── confirmation.tpl
├── domain-search.tpl
├── flashmessage.tpl
├── generate-password.tpl
├── head.tpl
├── index.php
├── linkedaccounts.tpl
├── modal.tpl
├── navbar.tpl
├── network-issues-notifications.tpl
├── panel.tpl
├── pwstrength.tpl
├── sidebar.tpl
├── sitejet
│ └── homepagepanel.tpl
├── social-accounts.tpl
├── tablelist.tpl
├── validateuser.tpl
└── verifyemail.tpl
├── index.php
├── invoice-payment.tpl
├── invoicepdf.tpl
├── js
├── index.php
├── scripts.js
├── scripts.min.js
└── whmcs.js
├── knowledgebase.tpl
├── knowledgebasearticle.tpl
├── knowledgebasecat.tpl
├── login.tpl
├── managessl.tpl
├── markdown-guide.tpl
├── masspay.tpl
├── oauth
├── authorize.tpl
├── error.tpl
├── index.php
├── layout.tpl
├── login-twofactorauth.tpl
├── login.tpl
└── redirect.tpl
├── password-reset-change-prompt.tpl
├── password-reset-container.tpl
├── password-reset-email-prompt.tpl
├── password-reset-security-prompt.tpl
├── payment
├── bank
│ ├── inputs.tpl
│ ├── select.tpl
│ └── validate.tpl
├── billing-address.tpl
├── card
│ ├── inputs.tpl
│ ├── select.tpl
│ └── validate.tpl
└── invoice-summary.tpl
├── quotepdf.tpl
├── serverstatus.tpl
├── store
├── addon
│ ├── wp-toolkit-cpanel.tpl
│ ├── wp-toolkit-plesk.tpl
│ └── wp-toolkit.tpl
├── codeguard
│ ├── index.php
│ └── index.tpl
├── cpanelseo
│ ├── index.php
│ └── index.tpl
├── index.php
├── marketgoo
│ ├── index.php
│ └── index.tpl
├── nordvpn
│ ├── index.php
│ └── index.tpl
├── not-found.tpl
├── order.tpl
├── ox
│ ├── index.php
│ ├── index.tpl
│ └── manage.tpl
├── promos
│ ├── index.php
│ └── upsell.tpl
├── sitebuilder
│ ├── index.php
│ ├── index.tpl
│ └── upgrade.tpl
├── sitelock
│ ├── index.php
│ └── index.tpl
├── sitelockvpn
│ ├── index.php
│ └── index.tpl
├── socialbee
│ ├── index.php
│ └── index.tpl
├── spamexperts
│ ├── index.php
│ └── index.tpl
├── ssl
│ ├── competitive-upgrade.tpl
│ ├── dv.tpl
│ ├── ev.tpl
│ ├── index.php
│ ├── index.tpl
│ ├── ov.tpl
│ ├── shared
│ │ ├── certificate-item.tpl
│ │ ├── certificate-pricing.tpl
│ │ ├── currency-chooser.tpl
│ │ ├── features.tpl
│ │ ├── index.php
│ │ ├── logos.tpl
│ │ └── nav.tpl
│ └── wildcard.tpl
├── threesixtymonitoring
│ ├── index.php
│ └── index.tpl
├── weebly
│ ├── index.php
│ ├── index.tpl
│ └── upgrade.tpl
└── xovinow
│ ├── index.php
│ └── index.tpl
├── subscription-manage.tpl
├── supportticketslist.tpl
├── supportticketsubmit-confirm.tpl
├── supportticketsubmit-customfields.tpl
├── supportticketsubmit-kbsuggestions.tpl
├── supportticketsubmit-stepone.tpl
├── supportticketsubmit-steptwo.tpl
├── theme.yaml
├── ticketfeedback.tpl
├── two-factor-challenge.tpl
├── two-factor-new-backup-code.tpl
├── upgrade-configure.tpl
├── upgrade.tpl
├── upgradesummary.tpl
├── usagebillingpricing.tpl
├── user-invite-accept.tpl
├── user-password.tpl
├── user-profile.tpl
├── user-security.tpl
├── user-switch-account-forced.tpl
├── user-switch-account.tpl
├── user-verify-email.tpl
├── viewannouncement.tpl
├── viewemail.tpl
├── viewinvoice.tpl
├── viewquote.tpl
└── viewticket.tpl
/3dsecure.tpl:
--------------------------------------------------------------------------------
1 | {include file="$template/includes/alert.tpl" type="info" msg="{lang key='creditcard3dsecure'}" textcenter=true}
2 |
3 |
4 |
5 |
6 | {$code}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
17 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # WHMCS Twenty-One Client Area Template Theme
2 |
3 | Welcome to the WHMCS “Twenty-One” template repository! This repository is dedicated to providing version-by-version changes of the “Twenty-One” template as published in [WHMCS](https://downloads.whmcs.com/). Sharing these changes through GitHub as a read-only repository enables you to quick inspect and import these changes for your custom theme.
4 |
5 | ## Compatibility
6 |
7 | This theme is compatible with WHMCS 6.0 and later.
8 |
9 | ## Usage
10 |
11 | You can utilise this repository to see the individual changes to this theme 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/
26 |
27 | # Clone the Twenty-One template theme repo into your new template directory
28 | git clone git@github.com:WHMCS/templates-twenty-one.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/my-template-name
42 |
43 | # Fetch the latest updates from the Twenty-One 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/templates-twenty-one/compare).
57 | Simply, select a pair of version tags in that interface!
58 |
59 | ## Useful Links
60 |
61 | * [Documentation](https://developers.whmcs.com/themes/)
62 | * [Technical Support](https://www.whmcs.com/support)
63 | * [WHMCS Website](https://www.whmcs.com/)
64 |
--------------------------------------------------------------------------------
/access-denied.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{lang key='oops'}!
5 |
{lang key='subaccountpermissiondenied'}
6 | {if !empty($allowedpermissions)}
7 |
{lang key='subaccountallowedperms'}
8 |
9 | {foreach $allowedpermissions as $permission}
10 |
{$permission}
11 | {/foreach}
12 |
13 | {/if}
14 |
{lang key='subaccountcontactmaster'}
15 |
16 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/account-paymentmethods-billing-contacts.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | contactType == 'Client' || ($payMethod->contactType === null && $client->billingContactId === 0)}
9 | checked
10 | {/if}>
11 | {$client->fullName}
12 | {$client->address1} ,
13 | {if $client->address2}{$client->address2} ,{/if}
14 | {$client->city} ,
15 | {$client->state} ,
16 | {$client->postcode} ,
17 | {$client->country}
18 |
19 |
20 | {foreach $client->contacts()->orderBy('firstname', 'asc')->orderBy('lastname', 'asc')->get() as $contact}
21 |
22 | contactType == 'Contact' && $contact->id == $payMethod->getContactId()}
28 | checked
29 | {elseif $payMethod->contactType === null && $client->billingContactId > 0}
30 | {if $contact->id == $client->billingContactId || $contact->id == $selectedContactId}
31 | checked
32 | {/if}
33 | {/if}>
34 | {$contact->fullName}
35 | {$contact->address1} ,
36 | {if $contact->address2}{$contact->address2} ,{/if}
37 | {$contact->city} ,
38 | {$contact->state} ,
39 | {$contact->postcode} ,
40 | {$contact->country}
41 |
42 |
43 | {/foreach}
44 |
45 |
46 |
56 |
--------------------------------------------------------------------------------
/account-user-permissions.tpl:
--------------------------------------------------------------------------------
1 | {include file="$template/includes/flashmessage.tpl"}
2 |
3 |
4 |
5 |
{lang key='userManagement.managePermissions'}
6 |
7 |
{$user->email}
8 |
9 |
{lang key="userManagement.permissions"}
10 |
11 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/affiliatessignup.tpl:
--------------------------------------------------------------------------------
1 | {if $affiliatesystemenabled}
2 |
3 |
4 |
5 |
6 |
{lang key='affiliatesignuptitle'}
7 |
{lang key='affiliatesignupintro'}
8 |
9 |
10 | {lang key='affiliatesignupinfo1'}
11 | {lang key='affiliatesignupinfo2'}
12 | {lang key='affiliatesignupinfo3'}
13 |
14 |
15 |
16 |
17 |
25 |
26 |
27 |
28 | {else}
29 | {include file="$template/includes/alert.tpl" type="warning" msg="{lang key='affiliatesdisabled'}" textcenter=true}
30 | {/if}
31 |
--------------------------------------------------------------------------------
/announcements.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{lang key="announcementstitle"}
4 |
5 |
6 | {foreach $announcements as $announcement}
7 |
8 |
19 |
20 |
21 |
22 |
23 | {$carbon->createFromTimestamp($announcement.timestamp)->format('jS F Y')}
24 |
25 |
26 |
27 |
28 | {if $announcement.text|strip_tags|strlen < 350}
29 | {$announcement.text}
30 | {else}
31 | {$announcement.summary}
32 | {/if}
33 |
34 |
35 |
36 | {lang key="announcementscontinue"}
37 |
38 |
39 |
40 | {foreachelse}
41 | {include file="$template/includes/alert.tpl" type="info" msg="{lang key='noannouncements'}" textcenter=true}
42 | {/foreach}
43 |
44 |
45 |
46 |
47 |
48 | {if $prevpage || $nextpage}
49 |
50 |
57 |
58 | {/if}
59 |
60 | {if $announcementsFbRecommend}
61 |
72 | {/if}
73 |
--------------------------------------------------------------------------------
/banned.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {lang key='bannedyourip'}
5 | {$ip}
6 | {lang key='bannedhasbeenbanned'}
7 |
8 |
9 |
10 | {lang key='bannedbanreason'}:
11 | {$reason}
12 |
13 |
14 | {lang key='bannedbanexpires'}:
15 | {$expires}
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/clientareaaddfunds.tpl:
--------------------------------------------------------------------------------
1 | {if $addfundsdisabled}
2 | {include file="$template/includes/alert.tpl" type="error" msg="{lang key='clientareaaddfundsdisabled'}" textcenter=true}
3 | {elseif $notallowed}
4 | {include file="$template/includes/alert.tpl" type="error" msg="{lang key='clientareaaddfundsnotallowed'}" textcenter=true}
5 | {elseif $errormessage}
6 | {include file="$template/includes/alert.tpl" type="error" errorshtml=$errormessage textcenter=true}
7 | {/if}
8 |
9 | {if !$addfundsdisabled}
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 | {lang key='addfundsminimum'}
19 | {$minimumamount}
20 |
21 |
22 | {lang key='addfundsmaximum'}
23 | {$maximumamount}
24 |
25 |
26 | {lang key='addfundsmaximumbalance'}
27 | {$maximumbalance}
28 |
29 |
30 |
31 |
32 |
33 |
34 |
63 |
64 |
65 |
66 | {/if}
67 |
--------------------------------------------------------------------------------
/clientareacancelrequest.tpl:
--------------------------------------------------------------------------------
1 | {if $invalid}
2 |
3 | {include file="$template/includes/alert.tpl" type="error" msg="{lang key='clientareacancelinvalid'}" textcenter=true}
4 |
5 | {lang key='clientareabacklink'}
6 |
7 |
8 | {elseif $requested}
9 |
10 | {include file="$template/includes/alert.tpl" type="success" msg="{lang key='clientareacancelconfirmation'}" textcenter=true}
11 |
12 |
13 | {lang key='clientareabacklink'}
14 |
15 |
16 | {else}
17 |
18 | {if $error}
19 | {include file="$template/includes/alert.tpl" type="error" errorshtml="{lang key='clientareacancelreasonrequired'} "}
20 | {/if}
21 |
22 | {include file="$template/includes/alert.tpl" type="info" textcenter=true msg="{lang key='clientareacancelproduct'}: {$groupname} - {$productname} {if $domain} ({$domain}){/if}"}
23 |
24 |
68 |
69 | {/if}
70 |
--------------------------------------------------------------------------------
/clientareadomainaddons.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 | {if $action eq "buy"}
11 |
12 |
13 | {if $addon eq "dnsmanagement"}
14 |
15 | {lang key='domainaddonsdnsmanagement'}
16 |
17 | {include file="$template/includes/alert.tpl" type="info" msg="Domain: {$domain} " textcenter=true}
18 |
19 | {lang key='domainaddonsdnsmanagementinfo'}
20 |
21 |
22 |
23 | {lang key='domainaddonsbuynow'} {$addonspricing.dnsmanagement}{lang key='domainaddonsperyear'}
24 |
25 |
26 |
27 | {elseif $addon eq "emailfwd"}
28 |
29 | {lang key='domainemailforwarding'}
30 |
31 | {include file="$template/includes/alert.tpl" type="info" msg="Domain: {$domain} " textcenter=true}
32 |
33 | {lang key='domainaddonsemailforwardinginfo'}
34 |
35 |
36 |
37 | {lang key='domainaddonsbuynow'} {$addonspricing.emailforwarding}{lang key='domainaddonsperyear'}
38 |
39 |
40 |
41 | {elseif $addon eq "idprotect"}
42 |
43 | {lang key='domainidprotection'}
44 |
45 | {include file="$template/includes/alert.tpl" type="info" msg="Domain: {$domain} " textcenter=true}
46 |
47 | {lang key='domainaddonsidprotectioninfo'}
48 |
49 |
50 |
51 | {lang key='domainaddonsbuynow'} {$addonspricing.idprotection}{lang key='domainaddonsperyear'}
52 |
53 |
54 | {/if}
55 | {elseif $action eq "disable"}
56 |
57 |
58 | {if $addon eq "dnsmanagement"}
59 | {lang key='domainaddonsdnsmanagement'}
60 | {elseif $addon eq "emailfwd"}
61 | {lang key='domainemailforwarding'}
62 | {elseif $addon eq "idprotect"}
63 | {lang key='domainidprotection'}
64 | {/if}
65 |
66 |
67 | {include file="$template/includes/alert.tpl" type="info" msg="Domain: {$domain} " textcenter=true}
68 |
69 | {if $success}
70 | {include file="$template/includes/alert.tpl" type="success" msg="{lang key='domainaddonscancelsuccess'}" textcenter=true}
71 | {elseif $error}
72 | {include file="$template/includes/alert.tpl" type="error" msg="{lang key='domainaddonscancelfailed'}" textcenter=true}
73 | {else}
74 |
75 | {lang key='domainaddonscancelareyousure'}
76 |
77 |
78 |
79 |
80 | {lang key='domainaddonsconfirm'}
81 |
82 |
83 | {/if}
84 | {/if}
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 | {lang key='clientareabacklink'}
93 |
94 |
--------------------------------------------------------------------------------
/clientareadomainemailforwarding.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{lang key='domainemailforwarding'}
4 |
5 | {include file="$template/includes/alert.tpl" type="info" msg="{lang key='domainemailforwardingdesc'}"}
6 |
7 | {if $error}
8 | {include file="$template/includes/alert.tpl" type="error" msg=$error}
9 | {/if}
10 |
11 | {if $external}
12 |
13 | {$code}
14 |
15 | {else}
16 |
17 |
18 |
19 |
20 |
21 |
44 |
45 |
46 |
47 | {lang key='clientareasavechanges'}
48 |
49 |
50 | {lang key='clientareacancel'}
51 |
52 |
53 |
54 |
55 |
56 | {/if}
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/clientareadomaingetepp.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{lang key='domaingeteppcode'}
4 |
5 |
{lang key='domaingeteppcodeexplanation'}
6 |
7 | {if $error}
8 | {include file="$template/includes/alert.tpl" type="error" msg="
{lang key='domaingeteppcodefailure'}"|cat:" $error"}
9 | {elseif $eppcode}
10 | {include file="$template/includes/alert.tpl" type="info" msg="
{lang key='domaingeteppcodeis'}"|cat:" $eppcode"}
11 | {else}
12 | {include file="$template/includes/alert.tpl" type="success" msg="
{lang key='domaingeteppcodeemailconfirmation'}"}
13 | {/if}
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/clientareaemails.tpl:
--------------------------------------------------------------------------------
1 | {include file="$template/includes/tablelist.tpl" tableName="EmailsList" noSortColumns="-1"}
2 |
3 |
16 |
17 |
18 |
19 |
20 |
21 | {lang key='clientareaemailsdate'}
22 | {lang key='clientareaemailssubject'}
23 |
24 |
25 |
26 |
27 | {foreach $emails as $email}
28 |
29 | {$email.normalisedDate} {$email.date}
30 | {$email.subject}{if $email.attachmentCount > 0} {/if}
31 |
32 |
33 | {lang key='emailviewmessage'}
34 |
35 |
36 |
37 | {/foreach}
38 |
39 |
40 |
41 |
{lang key='loading'}
42 |
43 |
44 |
--------------------------------------------------------------------------------
/clientareainvoices.tpl:
--------------------------------------------------------------------------------
1 | {include file="$template/includes/tablelist.tpl" tableName="InvoicesList" filterColumn="4"}
2 |
3 |
24 |
25 |
26 |
27 |
28 |
29 | {lang key='invoicestitle'}
30 | {lang key='invoicesdatecreated'}
31 | {lang key='invoicesdatedue'}
32 | {lang key='invoicestotal'}
33 | {lang key='invoicesstatus'}
34 |
35 |
36 |
37 | {foreach $invoices as $invoice}
38 |
39 | {$invoice.invoicenum}
40 | {$invoice.normalisedDateCreated} {$invoice.datecreated}
41 | {$invoice.normalisedDateDue} {$invoice.datedue}
42 | {$invoice.total}
43 | {$invoice.status}
44 |
45 | {/foreach}
46 |
47 |
48 |
49 |
{lang key='loading'}
50 |
51 |
52 |
--------------------------------------------------------------------------------
/clientareaproducts.tpl:
--------------------------------------------------------------------------------
1 | {include file="$template/includes/tablelist.tpl" tableName="ServicesList" filterColumn="4" noSortColumns="0"}
2 |
3 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | {lang key='orderproduct'}
27 | {lang key='clientareaaddonpricing'}
28 | {lang key='clientareahostingnextduedate'}
29 | {lang key='clientareastatus'}
30 |
31 |
32 |
33 | {foreach $services as $service}
34 |
35 |
36 | {if $service.sslStatus}
37 |
38 | {elseif !$service.isActive}
39 |
40 | {/if}
41 |
42 | {$service.product} {if $service.domain}{$service.domain} {else} -{/if}
43 | {$service.amount} {$service.billingcycle}
44 | {$service.normalisedNextDueDate} {$service.nextduedate}
45 | {$service.statustext}
46 |
47 | {/foreach}
48 |
49 |
50 |
51 |
{lang key='loading'}
52 |
53 |
54 |
--------------------------------------------------------------------------------
/clientareaproductusagebilling.tpl:
--------------------------------------------------------------------------------
1 | {lang key='metrics.explanation'}
2 |
3 |
4 | {lang key='metrics.metric'}
5 | {lang key='metrics.currentUsage'}
6 | {lang key='metrics.pricing'}
7 | {lang key='metrics.lastUpdated'}
8 |
9 | {foreach $metricStats as $metric}
10 |
11 | {$metric.displayName}
12 | {$metric.currentValue}
13 |
14 | {if count($metric.pricing) > 1}
15 | {lang key='metrics.startingFrom'} {$metric.lowestPrice} / {if $metric.unitName}{$metric.unitName}{else}{lang key='metrics.unit'}{/if}
16 |
17 |
18 | {lang key='metrics.viewPricing'}
19 |
20 | {elseif count($metric.pricing) == 1}
21 | {$metric.lowestPrice} / {if $metric.unitName}{$metric.unitName}{else}{lang key='metrics.unit'}{/if}
22 | {if $metric.includedQuantity > 0} ({$metric.includedQuantity} {lang key='metrics.includedNotCounted'}){/if}
23 | {else}
24 | —
25 | {/if}
26 | {include file="$template/usagebillingpricing.tpl"}
27 |
28 | {if is_string($metric.lastUpdated)}{$metric.lastUpdated}{else}{$metric.lastUpdated->diffForHumans()}{/if}
29 |
30 | {/foreach}
31 |
32 |
--------------------------------------------------------------------------------
/clientareaquotes.tpl:
--------------------------------------------------------------------------------
1 | {include file="$template/includes/tablelist.tpl" tableName="QuotesList" noSortColumns="5" filterColumn="4"}
2 |
3 |
20 |
21 |
22 |
23 |
24 |
25 | {lang key='quotenumber'}
26 | {lang key='quotesubject'}
27 | {lang key='quotedatecreated'}
28 | {lang key='quotevaliduntil'}
29 | {lang key='quotestage'}
30 |
31 |
32 |
33 |
34 | {foreach $quotes as $quote}
35 |
36 | {$quote.id}
37 | {$quote.subject}
38 | {$quote.normalisedDateCreated} {$quote.datecreated}
39 | {$quote.normalisedValidUntil} {$quote.validuntil}
40 | {$quote.stage}
41 |
42 |
43 |
44 |
45 | {lang key='quotedownload'}
46 |
47 |
48 |
49 | {/foreach}
50 |
51 |
52 |
53 |
{lang key='loading'}
54 |
55 |
56 |
--------------------------------------------------------------------------------
/clientareasecurity.tpl:
--------------------------------------------------------------------------------
1 | {if $showSsoSetting}
2 |
3 |
4 |
{lang key='sso.title'}
5 |
6 | {include file="$template/includes/alert.tpl" type="success" msg="{lang key='sso.summary'}"}
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 | {lang key='sso.enabled'}
17 |
18 |
19 | {lang key='sso.disabled'}
20 |
21 |
22 |
23 |
24 |
{lang key='sso.disablenotice'}
25 |
26 |
27 | {/if}
28 |
--------------------------------------------------------------------------------
/configuressl-steptwo.tpl:
--------------------------------------------------------------------------------
1 | {if empty($approvalMethods)}
2 | {assign var="approvalMethods" value=[]}
3 | {/if}
4 |
5 |
6 | {if $errormessage}
7 | {include file="$template/includes/alert.tpl" type="error" errorshtml=$errormessage}
8 | {/if}
9 |
10 |
11 | {lang key='ssl.selectValidation'}
12 | {if empty($approvalMethods) || (!empty($approvalMethods) && in_array('email', $approvalMethods))}
13 |
14 |
15 | {lang key='ssl.emailMethod'}
16 |
17 | {/if}
18 | {if in_array('dns-txt-token', $approvalMethods)}
19 |
20 |
21 | {lang key='ssl.dnsMethod'}
22 |
23 | {/if}
24 | {if in_array('file', $approvalMethods)}
25 |
26 |
27 | {lang key='ssl.fileMethod'}
28 |
29 | {/if}
30 |
31 |
32 |
33 | {include file="$template/includes/alert.tpl" type="secondary" msg={lang key='ssl.emailMethodDescription'}}
34 |
{lang key='ssl.selectEmail'}
35 |
36 |
37 |
38 | {foreach $approveremails as $num => $approveremail}
39 |
40 |
41 |
43 | {$approveremail}
44 |
45 |
46 | {/foreach}
47 |
48 |
49 |
50 |
51 |
52 | {include file="$template/includes/alert.tpl" type="secondary" msg={lang key='ssl.dnsMethodDescription'}}
53 |
54 |
55 | {include file="$template/includes/alert.tpl" type="secondary" msg={lang key='ssl.fileMethodDescription'}}
56 |
57 |
58 |
59 |
60 |
61 | {lang key='ordercontinuebutton'}
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/contact.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{lang key='contactus'}
6 |
{lang key='readyforquestions'}
7 |
8 |
9 | {if $sent}
10 | {include file="$template/includes/alert.tpl" type="success" msg="{lang key='contactsent'}" textcenter=true}
11 | {/if}
12 |
13 | {if $errormessage}
14 | {include file="$template/includes/alert.tpl" type="error" errorshtml=$errormessage}
15 | {/if}
16 |
17 | {if !$sent}
18 |
19 |
20 |
21 |
27 |
33 |
39 |
45 |
46 | {if $captcha}
47 |
48 | {include file="$template/includes/captcha.tpl"}
49 |
50 | {/if}
51 |
52 |
53 | {lang key='contactsend'}
54 |
55 |
56 |
57 | {/if}
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/css/blue.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/templates-twenty-one/80882868167c31b1a5e3d29646c2b304de77c0b0/css/blue.png
--------------------------------------------------------------------------------
/css/blue@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/templates-twenty-one/80882868167c31b1a5e3d29646c2b304de77c0b0/css/blue@2x.png
--------------------------------------------------------------------------------
/css/index.php:
--------------------------------------------------------------------------------
1 |
8 |
9 | {if $reason eq "supportandupdates"}
10 |
11 |
{lang key='supportAndUpdatesRenewalRequired'}
12 |
13 |
14 |
15 |
16 |
17 |
18 | {lang key='supportAndUpdatesClickHereToRenew'} »
19 |
20 |
21 |
22 |
23 | {else}
24 |
25 |
{lang key='downloadproductrequired'}
26 |
27 | {if $prodname}
28 | {include file="$template/includes/alert.tpl" type="info" msg=$prodname textcenter=true}
29 | {else}
30 | {include file="$template/includes/alert.tpl" type="info" msg=$addonname textcenter=true}
31 | {/if}
32 |
33 | {if $pid || $aid}
34 |
35 | {if $pid}
36 |
37 |
38 | {elseif $aid}
39 |
40 | {/if}
41 |
42 |
43 | {lang key='ordernowbutton'} »
44 |
45 |
46 |
47 | {/if}
48 |
49 | {/if}
50 |
51 |
52 |
--------------------------------------------------------------------------------
/downloads.tpl:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 | {if $dlcats}
13 |
14 | {foreach $dlcats as $category}
15 |
29 | {/foreach}
30 |
31 | {else}
32 | {include file="$template/includes/alert.tpl" type="info" msg="{lang key='downloadsnone'}" textcenter=true}
33 | {/if}
34 |
35 | {if $mostdownloads}
36 |
37 |
38 |
39 |
40 | {lang key='downloadspopular'}
41 |
42 |
43 |
64 |
65 | {/if}
66 |
--------------------------------------------------------------------------------
/downloadscat.tpl:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 | {if $dlcats}
13 |
14 | {foreach $dlcats as $category}
15 |
29 | {/foreach}
30 |
31 | {/if}
32 |
33 |
34 |
35 |
36 |
37 | {lang key='downloadsfiles'}
38 |
39 |
40 |
65 |
66 |
67 |
68 | {lang key='clientareabacklink'}
69 |
70 |
--------------------------------------------------------------------------------
/error/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | Oops!
8 |
45 |
46 |
47 |
48 |
Oops!
49 |
Something went wrong and we couldn't process your request.
50 |
Please go back to the previous page and try again.
51 |
If the problem persists, please contact us .
52 |
« Back to Homepage
53 | {{environmentIssues}}
54 |
{{adminHelp}} {{stacktrace}}
55 |
56 |
57 |
--------------------------------------------------------------------------------
/error/page-not-found.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | {lang key="errorPage.404.title"}
7 |
8 |
{lang key="errorPage.404.subtitle"}
9 |
{lang key="errorPage.404.description"}
10 |
11 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/error/unknown-routepath.tpl:
--------------------------------------------------------------------------------
1 | {include file="$template/error/page-not-found.tpl"}
2 |
3 |
4 | Sorry, but the previous page (
{$referrer|escape} ) provided an invalid page link.
5 |
6 |
--------------------------------------------------------------------------------
/forwardpage.tpl:
--------------------------------------------------------------------------------
1 |
2 | {include file="$template/includes/alert.tpl" type="info" msg=$message textcenter=true}
3 |
4 |
5 |
6 |
7 |
8 |
9 | {lang key='loading'}
10 |
11 |
12 |
13 |
14 |
15 | {$code}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
27 |
--------------------------------------------------------------------------------
/images/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/templates-twenty-one/80882868167c31b1a5e3d29646c2b304de77c0b0/images/close.png
--------------------------------------------------------------------------------
/images/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/templates-twenty-one/80882868167c31b1a5e3d29646c2b304de77c0b0/images/loading.gif
--------------------------------------------------------------------------------
/images/next.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/templates-twenty-one/80882868167c31b1a5e3d29646c2b304de77c0b0/images/next.png
--------------------------------------------------------------------------------
/images/prev.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/templates-twenty-one/80882868167c31b1a5e3d29646c2b304de77c0b0/images/prev.png
--------------------------------------------------------------------------------
/img/flags.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/templates-twenty-one/80882868167c31b1a5e3d29646c2b304de77c0b0/img/flags.png
--------------------------------------------------------------------------------
/img/flags@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/templates-twenty-one/80882868167c31b1a5e3d29646c2b304de77c0b0/img/flags@2x.png
--------------------------------------------------------------------------------
/img/globe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/WHMCS/templates-twenty-one/80882868167c31b1a5e3d29646c2b304de77c0b0/img/globe.png
--------------------------------------------------------------------------------
/img/index.php:
--------------------------------------------------------------------------------
1 |
2 | {if $errorshtml}
3 | {lang key='clientareaerrors'}
4 |
7 | {else}
8 | {if $title}
9 | {$title}
10 | {/if}
11 | {$msg}
12 | {/if}
13 |
14 |
--------------------------------------------------------------------------------
/includes/breadcrumb.tpl:
--------------------------------------------------------------------------------
1 |
2 | {foreach $breadcrumb as $item}
3 |
4 | {if !$item@last}{/if}
5 | {$item.label}
6 | {if !$item@last} {/if}
7 |
8 | {/foreach}
9 |
10 |
--------------------------------------------------------------------------------
/includes/captcha.tpl:
--------------------------------------------------------------------------------
1 | {if $captcha->isEnabled() && $captcha->isEnabledForForm($captchaForm)}
2 |
3 | {if $templatefile == 'homepage'}
4 |
5 | {/if}
6 |
7 | {if $captcha->recaptcha->isEnabled() && !$captcha->recaptcha->isInvisible()}
8 |
9 | {elseif !$captcha->recaptcha->isEnabled()}
10 |
11 |
12 |
{lang key="captchaverify"}
13 |
14 |
15 |
16 |
17 |
18 |
19 |
21 |
22 |
23 |
24 | {/if}
25 |
26 | {if $templatefile == 'homepage'}
27 |
28 | {/if}
29 |
30 | {/if}
31 |
--------------------------------------------------------------------------------
/includes/confirmation.tpl:
--------------------------------------------------------------------------------
1 |
2 | {$buttonTitle}
3 |
4 |
5 |
6 |
7 |
8 |
14 |
15 | {$modalBody}
16 |
17 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/includes/domain-search.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{lang key="secureYourDomainShort"}
6 |
7 |
24 |
25 | {if $registerdomainenabled}
26 |
27 |
28 | {lang key="search"}
29 |
30 |
31 | {/if}
32 | {if $transferdomainenabled}
33 |
34 |
35 | {lang key="domainstransfer"}
36 |
37 |
38 | {/if}
39 |
40 | {include file="$template/includes/captcha.tpl"}
41 |
42 | {if $featuredTlds}
43 |
44 | {foreach $featuredTlds as $num => $tldinfo}
45 | {if $num < 3}
46 |
47 |
48 | {if is_object($tldinfo.register)}
49 | {$tldinfo.register->toFull()}
50 | {else}
51 | {lang key="domainregnotavailable"}
52 | {/if}
53 |
54 | {/if}
55 | {/foreach}
56 |
57 | {/if}
58 |
59 |
{lang key='viewAllPricing'}
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/includes/flashmessage.tpl:
--------------------------------------------------------------------------------
1 | {if $message = get_flash_message()}
2 |
3 | {$message.text}
4 |
5 | {/if}
6 |
--------------------------------------------------------------------------------
/includes/generate-password.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
13 |
14 |
15 | {lang key='generatePassword.lengthValidationError'}
16 |
17 |
23 |
29 |
30 |
31 |
32 |
33 | {lang key='generatePassword.generateNew'}
34 |
35 |
36 |
37 | {lang key='copy'}
38 |
39 |
40 |
41 |
42 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/includes/head.tpl:
--------------------------------------------------------------------------------
1 |
2 | {\WHMCS\View\Asset::fontCssInclude('open-sans-family.css')}
3 |
4 |
5 |
6 | {assetExists file="custom.css"}
7 |
8 | {/assetExists}
9 |
10 |
19 |
20 |
21 | {if $templatefile == "viewticket" && !$loggedin}
22 |
23 | {/if}
24 |
--------------------------------------------------------------------------------
/includes/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 |
--------------------------------------------------------------------------------
/includes/modal.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
10 |
11 |
{lang key='loading'}
12 |
13 |
14 | {if isset($content)}
15 |
{$content}
16 | {/if}
17 |
18 |
36 |
37 |
38 |
39 |
--------------------------------------------------------------------------------
/includes/navbar.tpl:
--------------------------------------------------------------------------------
1 | {foreach $navbar as $item}
2 |
3 | getAttribute('target')} target="{$item->getAttribute('target')}"{/if}>
4 | {if $item->hasIcon()} {/if}
5 | {$item->getLabel()}
6 | {if $item->hasBadge()} {$item->getBadge()} {/if}
7 |
8 | {if $item->hasChildren()}
9 |
24 | {/if}
25 |
26 | {/foreach}
27 | {if !isset($rightDrop) || !$rightDrop}
28 |
29 |
32 |
34 |
35 | {/if}
36 |
--------------------------------------------------------------------------------
/includes/network-issues-notifications.tpl:
--------------------------------------------------------------------------------
1 | {if $openNetworkIssueCounts.open > 0}
2 |
12 | {elseif $openNetworkIssueCounts.scheduled > 0}
13 |
23 | {/if}
24 |
--------------------------------------------------------------------------------
/includes/panel.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | {if isset($headerTitle)}
4 |
5 | {$headerTitle}
6 |
7 | {/if}
8 | {if isset($bodyContent)}
9 |
10 | {$bodyContent}
11 |
12 | {/if}
13 | {if isset($footerContent)}
14 |
17 | {/if}
18 |
19 |
20 |
--------------------------------------------------------------------------------
/includes/pwstrength.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {lang key='pwstrengthrating'}: 0%
6 |
7 |
8 |
9 | {if file_exists("templates/$template/includes/alert.tpl")}
10 | {include file="$template/includes/alert.tpl" type="info" msg=" {lang key='passwordtips'} "}
11 | {elseif file_exists("templates/six/includes/alert.tpl")}
12 | {include file="six/includes/alert.tpl" type="info" msg=" {lang key='passwordtips'} "}
13 | {/if}
14 |
15 |
99 |
--------------------------------------------------------------------------------
/includes/sitejet/homepagepanel.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 |
13 |
14 |
15 |
{lang key='sitejetBuilder.chooseWebsite'}
16 |
17 |
18 | {foreach $sitejetServices as $key => $service}
19 | {$service->domain}
20 | {/foreach}
21 |
22 |
29 | {lang key="sitejetBuilder.editWebsite"}
30 |
31 |
32 |
{lang key="errorButTryAgain"}
34 |
35 |
36 |
37 |
38 |
39 |
71 |
--------------------------------------------------------------------------------
/includes/social-accounts.tpl:
--------------------------------------------------------------------------------
1 | {foreach $socialAccounts as $account}
2 |
3 |
4 |
5 |
6 |
7 | {/foreach}
8 |
--------------------------------------------------------------------------------
/includes/validateuser.tpl:
--------------------------------------------------------------------------------
1 | {if $showUserValidationBanner}
2 |
3 |
4 |
5 |
6 | ×
7 |
8 |
9 |
10 | {lang key='fraud.furtherValShort'}
11 |
12 |
17 |
18 |
19 |
20 |
32 | {/if}
33 |
--------------------------------------------------------------------------------
/includes/verifyemail.tpl:
--------------------------------------------------------------------------------
1 | {if $showEmailVerificationBanner}
2 |
3 |
4 |
5 |
6 | ×
7 |
8 |
9 |
10 | {lang key='verifyEmailAddress'}
11 |
12 |
13 |
14 |
15 | {lang key='resendEmail'}
16 |
17 |
18 |
19 |
20 |
21 | {/if}
22 |
--------------------------------------------------------------------------------
/index.php:
--------------------------------------------------------------------------------
1 |
3 | {$remoteInput}
4 |
5 |
6 |
7 |
11 | {else}
12 | {include file="$template/payment/$cardOrBank/validate.tpl"}
13 |
14 |
15 |
16 |
17 |
18 |
19 | {if $errormessage}
20 | {include file="$template/includes/alert.tpl" type="error" errorshtml=$errormessage}
21 | {/if}
22 |
23 |
24 |
25 |
26 |
27 |
{lang key="makepayment"}
28 |
29 |
45 |
46 |
54 |
55 |
56 |
57 |
58 |
59 | {include file="$template/payment/invoice-summary.tpl"}
60 |
61 |
62 |
63 | {if $servedOverSsl}
64 |
65 | {lang key='creditcardsecuritynotice'}
66 |
67 | {/if}
68 |
69 |
70 |
71 |
89 | {/if}
90 |
--------------------------------------------------------------------------------
/js/index.php:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 | {if $kbcats}
13 |
14 | {foreach $kbcats as $category}
15 |
34 | {/foreach}
35 |
36 | {else}
37 | {include file="$template/includes/alert.tpl" type="info" msg="{lang key='knowledgebasenoarticles'}" textcenter=true}
38 | {/if}
39 |
40 | {if $kbmostviews}
41 |
42 |
43 |
44 |
45 | {lang key='knowledgebasepopular'}
46 |
47 |
48 |
62 |
63 | {/if}
64 |
--------------------------------------------------------------------------------
/knowledgebasearticle.tpl:
--------------------------------------------------------------------------------
1 | {if $kbarticle.voted}
2 | {include file="$template/includes/alert.tpl" type="success alert-bordered-left" msg="{lang key="knowledgebaseArticleRatingThanks"}" textcenter=true}
3 | {/if}
4 |
5 |
6 |
7 |
14 |
15 |
16 | {if $kbarticle.tags}
17 |
18 |
19 |
20 | {$kbarticle.tags}
21 |
22 |
23 | {/if}
24 | {$kbarticle.useful}
25 |
26 |
27 |
28 |
29 |
30 | {$kbarticle.text}
31 |
32 |
33 | {if !$kbarticle.voted}
34 |
35 |
{lang key='knowledgebasehelpful'}
36 |
37 |
38 |
39 |
40 |
41 | {lang key='knowledgebaseyes'}
42 |
43 |
44 |
45 | {lang key='knowledgebaseno'}
46 |
47 |
48 |
49 | {/if}
50 |
51 |
52 |
53 |
54 | {if $kbarticles}
55 |
56 |
57 |
58 |
59 | {lang key='knowledgebaserelated'}
60 |
61 |
62 |
80 |
81 | {/if}
82 |
83 |
84 | {lang key='clientareabacklink'}
85 |
86 |
87 | {if $kbarticle.editLink}
88 |
89 |
90 | {lang key='edit'}
91 |
92 | {/if}
93 |
--------------------------------------------------------------------------------
/knowledgebasecat.tpl:
--------------------------------------------------------------------------------
1 |
2 |
10 |
11 |
12 | {if $kbcats}
13 |
14 | {foreach $kbcats as $category}
15 |
34 | {/foreach}
35 |
36 | {/if}
37 |
38 | {if $kbarticles || !$kbcats}
39 |
40 |
41 |
42 |
43 | {if $tag}
44 | {lang key='kbviewingarticlestagged'} '{$tag}'
45 | {else}
46 | {lang key='knowledgebasearticles'}
47 | {/if}
48 |
49 |
50 |
68 |
69 | {/if}
70 |
71 |
72 | {lang key='clientareabacklink'}
73 |
74 |
75 | {if $kbcurrentcat.editLink}
76 |
77 |
78 | {lang key='edit'}
79 |
80 | {/if}
81 |
--------------------------------------------------------------------------------
/login.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
{lang key='loginbutton'}
8 |
{lang key='userLogin.signInToContinue'}
9 |
10 | {include file="$template/includes/flashmessage.tpl"}
11 |
20 |
39 | {if $captcha->isEnabled()}
40 | {include file="$template/includes/captcha.tpl"}
41 | {/if}
42 |
43 |
44 | {lang key='loginbutton'}
45 |
46 |
47 |
48 |
49 |
50 | {lang key='loginrememberme'}
51 |
52 |
53 |
54 |
58 |
59 |
60 |
61 | {include file="$template/includes/linkedaccounts.tpl" linkContext="login" customFeedback=true}
62 |
--------------------------------------------------------------------------------
/markdown-guide.tpl:
--------------------------------------------------------------------------------
1 | {lang key='markdown.emphasis'}
2 |
3 | **{lang key='markdown.bold'} **
4 | *{lang key='markdown.italics'} *
5 |
6 | {lang key='markdown.headers'}
7 |
8 | # {lang key='markdown.bigHeader'}
9 | ## {lang key='markdown.mediumHeader'}
10 | ### {lang key='markdown.smallHeader'}
11 | #### {lang key='markdown.tinyHeader'}
12 |
13 | {lang key='markdown.lists'}
14 |
15 | * {lang key='markdown.genericListItem'}
16 | * {lang key='markdown.genericListItem'}
17 | * {lang key='markdown.genericListItem'}
18 |
19 | 1. {lang key='markdown.numberedListItem'}
20 | 2. {lang key='markdown.numberedListItem'}
21 | 3. {lang key='markdown.numberedListItem'}
22 |
23 | {lang key='markdown.links'}
24 | [{lang key='markdown.textToDisplay'}]({lang key='markdown.exampleLink'})
25 |
26 | {lang key='markdown.quotes'}
27 |
28 | > {lang key='markdown.thisIsAQuote'}
29 | > {lang key='markdown.quoteMultipleLines'}
30 |
31 | {lang key='markdown.tables'}
32 |
33 | | {lang key='markdown.columnOne'} | {lang key='markdown.columnTwo'} | {lang key='markdown.columnThree'} |
34 | | -------- | -------- | -------- |
35 | | {lang key='markdown.john'} | {lang key='markdown.doe'} | {lang key='markdown.male'} |
36 | | {lang key='markdown.mary'} | {lang key='markdown.smith'} | {lang key='markdown.female'} |
37 |
38 | {lang key='markdown.withoutAligning'}
39 |
40 | | {lang key='markdown.columnOne'} | {lang key='markdown.columnTwo'} | {lang key='markdown.columnThree'} |
41 | | -------- | -------- | -------- |
42 | | {lang key='markdown.john'} | {lang key='markdown.doe'} | {lang key='markdown.male'} |
43 | | {lang key='markdown.mary'} | {lang key='markdown.smith'} | {lang key='markdown.female'} |
44 |
45 | {lang key='markdown.displayingCode'}
46 |
47 | `var example = "hello!";`
48 |
49 | {lang key='markdown.spanningMultipleLines'}
50 |
51 | ```
52 | var example = "hello!";
53 | alert(example);
54 | ```
55 |
--------------------------------------------------------------------------------
/oauth/authorize.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | {if $appLogo}
4 |
5 |
6 |
7 | {/if}
8 |
9 |
{lang key='oauth.authoriseAppToAccess' appName=$appName}
10 |
11 |
12 |
13 |
{lang key='oauth.willBeAbleTo'}:
14 |
15 | {foreach $requestedPermissions as $permission}
16 | {$permission}
17 | {/foreach}
18 |
19 |
20 |
21 |
22 |
23 | {foreach $requestedAuthorizations as $auth}
24 |
25 | {/foreach}
26 |
27 |
28 | {lang key='oauth.authorise'}
29 |
30 |
31 | {lang key='cancel'}
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/oauth/error.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {$error}
5 |
6 |
7 |
--------------------------------------------------------------------------------
/oauth/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | {$requestedAction} - {$companyname}
8 |
9 |
10 |
11 | {assetExists file="custom.css"}
12 |
13 | {/assetExists}
14 |
15 |
16 |
17 |
18 |
22 |
23 |
24 |
25 |
49 |
50 |
53 |
54 |
57 |
58 |
59 |
60 |
61 |
--------------------------------------------------------------------------------
/oauth/login-twofactorauth.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{lang key='twofactorauth'}
6 |
7 |
8 |
9 |
10 |
11 | {include file="$template/includes/alert.tpl" type="warning" msg="{lang key='twofabackupcodelogin'}" textcenter=true}
12 |
13 |
14 |
15 | {lang key='login'} »
16 |
17 |
18 |
19 |
20 | {lang key='cancel'}
21 |
22 |
23 |
24 |
25 |
26 |
27 | {if $incorrect}
28 | {include file="$template/includes/alert.tpl" type="error" msg="{lang key='twofa2ndfactorincorrect'}" textcenter=true}
29 | {elseif $error}
30 | {include file="$template/includes/alert.tpl" type="error" msg=$error textcenter=true}
31 | {else}
32 | {include file="$template/includes/alert.tpl" type="warning" msg="{lang key='twofa2ndfactorreq'}" textcenter=true}
33 | {/if}
34 | {$challenge}
35 |
36 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/oauth/login.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | {if $appLogo}
4 |
5 |
6 |
7 | {/if}
8 |
9 |
{lang key='oauth.loginToGrantApp' appName=$appName}
10 |
11 |
12 |
29 |
30 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/oauth/redirect.tpl:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/password-reset-change-prompt.tpl:
--------------------------------------------------------------------------------
1 | {lang key='pwresetenternewpw'}
2 |
3 |
4 |
5 |
6 |
7 | {lang key='newpassword'}
8 |
9 |
10 |
11 |
16 |
17 |
18 | {lang key='pwstrength'}
19 | {include file="$template/includes/pwstrength.tpl"}
20 |
21 |
22 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/password-reset-container.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {if $loggedin && $innerTemplate}
5 | {include file="$template/includes/alert.tpl" type="error" msg="{lang key='noPasswordResetWhenLoggedIn'}" textcenter=true}
6 | {else}
7 | {if $successMessage}
8 | {include file="$template/includes/alert.tpl" type="success" msg=$successTitle textcenter=true}
9 |
{$successMessage}
10 | {else}
11 | {if $innerTemplate}
12 | {include file="$template/password-reset-$innerTemplate.tpl"}
13 | {/if}
14 | {/if}
15 | {/if}
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/password-reset-email-prompt.tpl:
--------------------------------------------------------------------------------
1 |
2 |
{lang key='pwreset'}
3 |
{lang key='pwresetemailneeded'}
4 |
5 |
6 | {if $errorMessage}
7 | {include file="$template/includes/alert.tpl" type="error" msg=$errorMessage textcenter=true}
8 | {/if}
9 |
10 |
11 |
12 |
13 |
22 |
23 | {if $captcha->isEnabled()}
24 |
25 | {include file="$template/includes/captcha.tpl"}
26 |
27 | {/if}
28 |
29 |
30 |
31 | {lang key='pwresetsubmit'}
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/password-reset-security-prompt.tpl:
--------------------------------------------------------------------------------
1 | {if $errorMessage}
2 |
3 | {$errorMessage}
4 |
5 | {/if}
6 |
7 | {lang key='pwresetsecurityquestionrequired'}
8 |
9 |
10 |
11 | {$securityQuestion}
12 |
13 |
14 |
15 |
16 | {lang key='pwresetsubmit'}
17 |
18 |
19 |
--------------------------------------------------------------------------------
/payment/bank/inputs.tpl:
--------------------------------------------------------------------------------
1 |
2 |
17 |
28 |
39 |
50 |
61 |
76 |
77 | {include file="$template/payment/billing-address.tpl"}
78 |
--------------------------------------------------------------------------------
/payment/bank/select.tpl:
--------------------------------------------------------------------------------
1 | {if count($existingAccounts) > 0}
2 |
3 | {foreach $existingAccounts as $bankAccount}
4 | {assign "payMethod" $bankAccount.payMethod nocache}
5 |
6 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | {$payMethod->payment->getDisplayName()}
31 |
32 |
33 |
34 |
35 | {$payMethod->getDescription()}
36 |
37 |
38 | {/foreach}
39 |
40 | {/if}
41 |
42 |
43 |
50 | {lang key='paymentMethods.addNewBank'}
51 |
52 |
53 |
--------------------------------------------------------------------------------
/payment/bank/validate.tpl:
--------------------------------------------------------------------------------
1 | {if !$hasRemoteInput}
2 |
70 |
71 |
72 | {else}
73 |
88 | {/if}
89 |
--------------------------------------------------------------------------------
/payment/card/inputs.tpl:
--------------------------------------------------------------------------------
1 |
2 |
9 | {if $showccissuestart}
10 |
16 | {/if}
17 |
24 | {if $showccissuestart}
25 |
31 | {/if}
32 |
33 |
44 | {include file="$template/payment/billing-address.tpl"}
45 | {if $allowClientsToRemoveCards}
46 |
59 | {/if}
60 |
68 |
69 |
--------------------------------------------------------------------------------
/payment/card/select.tpl:
--------------------------------------------------------------------------------
1 | {if count($existingCards) > 0}
2 |
3 | {foreach $existingCards as $cardInfo}
4 | {assign "payMethodExpired" 0}
5 | {assign "expiryDate" ""}
6 | {assign "payMethod" $cardInfo.payMethod nocache}
7 | {if $payMethod->payment->isExpired()}
8 | {assign "payMethodExpired" 1}
9 | {/if}
10 | {if $payMethod->payment->getExpiryDate()}
11 | {assign "expiryDate" $payMethod->payment->getExpiryDate()->format('m/Y')}
12 | {/if}
13 |
14 |
15 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | {$payMethod->payment->getDisplayName()}
39 |
40 |
41 |
42 |
43 | {$payMethod->getDescription()}
44 |
45 |
46 |
47 |
48 | {$expiryDate}
49 | {if $payMethodExpired}{lang key='clientareaexpired'} {/if}
50 |
51 |
52 | {/foreach}
53 |
54 | {/if}
55 |
56 |
57 | {lang key='creditcardenternewcard'}
58 |
59 |
60 |
--------------------------------------------------------------------------------
/payment/card/validate.tpl:
--------------------------------------------------------------------------------
1 | {if !$hasRemoteInput}
2 |
76 |
77 |
78 | {else}
79 |
94 | {/if}
95 |
--------------------------------------------------------------------------------
/payment/invoice-summary.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {lang key="invoicenumber"}{if $invoicenum}{$invoicenum}{else}{$invoiceid}{/if}
5 |
6 |
7 |
8 |
9 | {lang key="invoicesdescription"}
10 | {lang key="invoicesamount"}
11 |
12 | {foreach $invoiceitems as $item}
13 |
14 | {$item.description}
15 | {$item.amount}
16 |
17 | {/foreach}
18 |
19 | {lang key="invoicessubtotal"}
20 | {$invoice.subtotal}
21 |
22 | {if $invoice.taxrate}
23 |
24 | {$invoice.taxrate}% {$invoice.taxname}
25 | {$invoice.tax}
26 |
27 | {/if}
28 | {if $invoice.taxrate2}
29 |
30 | {$invoice.taxrate2}% {$invoice.taxname2}
31 | {$invoice.tax2}
32 |
33 | {/if}
34 |
35 | {lang key="invoicescredit"}
36 | {$invoice.credit}
37 |
38 |
39 | {lang key="invoicestotaldue"}
40 | {$invoice.total}
41 |
42 |
43 |
44 |
45 | {lang key="paymentstodate"}: {$invoice.amountpaid}
46 |
47 |
48 | {lang key="balancedue"}: {$balance}
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/quotepdf.tpl:
--------------------------------------------------------------------------------
1 | Image(ROOTDIR.'/assets/img/logo.png', 20, 25, 75);
5 | elseif (file_exists(ROOTDIR.'/assets/img/logo.jpg')) $pdf->Image(ROOTDIR.'/assets/img/logo.jpg', 20, 25, 75);
6 | elseif (file_exists(ROOTDIR.'/assets/img/logo.jpeg')) $pdf->Image(ROOTDIR.'/assets/img/logo.jpeg', 20, 25, 75);
7 | else $pdf->Image(ROOTDIR.'/assets/img/placeholder.png', 20, 25, 75);
8 |
9 | # Company Details
10 | $pdf->SetFont($pdfFont,'',13);
11 | $pdf->Cell(0,6,trim($companyaddress[0]),0,1,'R');
12 | $pdf->SetFont($pdfFont,'',9);
13 | for ( $i = 1; $i <= ((count($companyaddress)>6) ? count($companyaddress) : 6); $i += 1) {
14 | $pdf->Cell(0, 4, trim($companyaddress[$i] ?? ''), 0, 1, 'R');
15 | }
16 | $pdf->Ln(5);
17 |
18 | $pdf->SetFont($pdfFont,'B',10);
19 |
20 | $tblhtml = "
21 |
22 |
23 | {$_LANG['quotenumber']}
24 | {$_LANG['quotesubject']}
25 | {$_LANG['quotedatecreated']}
26 | {$_LANG['quotevaliduntil']}
27 |
28 |
29 | {$quotenumber}
30 | {$subject}
31 | {$datecreated}
32 | {$validuntil}
33 |
34 |
";
35 | $pdf->writeHTML($tblhtml, true, false, false, false, '');
36 |
37 | $pdf->Ln(10);
38 |
39 | $pdf->SetFont($pdfFont,'B',10);
40 | $pdf->Cell(0,4,$_LANG['quoterecipient'],0,1);
41 | $pdf->SetFont($pdfFont,'',9);
42 | if ($clientsdetails["companyname"]) {
43 | $pdf->Cell(0,4,$clientsdetails["companyname"],0,1,'L');
44 | $pdf->Cell(0,4,$_LANG["invoicesattn"].": ".$clientsdetails["firstname"]." ".$clientsdetails["lastname"],0,1,'L');
45 | } else {
46 | $pdf->Cell(0,4,$clientsdetails["firstname"]." ".$clientsdetails["lastname"],0,1,'L');
47 | }
48 | $pdf->Cell(0,4,$clientsdetails["address1"],0,1,'L');
49 | if ($clientsdetails["address2"]) {
50 | $pdf->Cell(0,4,$clientsdetails["address2"],0,1,'L');
51 | }
52 | $pdf->Cell(0,4,$clientsdetails["city"].', '.$clientsdetails["state"].', '.$clientsdetails["postcode"],0,1,'L');
53 | $pdf->Cell(0,4,$clientsdetails["country"],0,1,'L');
54 |
55 | $pdf->Ln(10);
56 |
57 | if ($proposal) {
58 | $pdf->SetFont($pdfFont,'',9);
59 | $pdf->MultiCell(170,5,$proposal);
60 | $pdf->Ln(10);
61 | }
62 |
63 | $pdf->SetDrawColor(200);
64 | $pdf->SetFillColor(239);
65 |
66 | $pdf->SetFont($pdfFont,'',8);
67 |
68 | $tblhtml = '
69 |
70 | '.$_LANG['quoteqty'].'
71 | '.$_LANG['quotedesc'].'
72 | '.$_LANG['quoteunitprice'].'
73 | '.$_LANG['quotediscount'].'
74 | '.$_LANG['quotelinetotal'].'
75 | ';
76 | foreach ($lineitems AS $item) {
77 | $tblhtml .= '
78 |
79 | '.$item['qty'].'
80 | '.nl2br($item['description']).'
81 | '.$item['unitprice'].'
82 | '.$item['discount'].'
83 | '.$item['total'].'
84 | ';
85 | }
86 | $tblhtml .= '
87 |
88 | '.$_LANG['invoicessubtotal'].'
89 | '.$subtotal.'
90 | ';
91 | if ($taxlevel1['rate']>0) $tblhtml .= '
92 |
93 | '.$taxlevel1['name'].' @ '.$taxlevel1['rate'].'%
94 | '.$tax1.'
95 | ';
96 | if ($taxlevel2['rate']>0) $tblhtml .= '
97 |
98 | '.$taxlevel2['name'].' @ '.$taxlevel2['rate'].'%
99 | '.$tax2.'
100 | ';
101 | $tblhtml .= '
102 |
103 | '.$_LANG['invoicestotal'].'
104 | '.$total.'
105 |
106 |
';
107 |
108 | $pdf->writeHTML($tblhtml, true, false, false, false, '');
109 |
110 | if ($notes) {
111 | $pdf->Ln(6);
112 | $pdf->SetFont($pdfFont,'',8);
113 | $pdf->MultiCell(170,5,$_LANG['invoicesnotes'].": $notes");
114 | }
115 |
--------------------------------------------------------------------------------
/store/codeguard/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {lang key='store.addon.notFound.productUnavailable'}
6 |
7 |
8 |
{lang key='store.addon.notFound.productUnavailableText'}
9 |
10 |
{lang key='store.addon.notFound.ref'}: {$productName}
11 |
12 |
13 | {lang key='store.addon.notFound.contactSupport'}
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/store/ox/index.php:
--------------------------------------------------------------------------------
1 | getClass()}">
2 |
3 |
8 |
9 |
10 |
11 |
12 | {$promotion->getHeadline()}
13 | {if $promotion->getLearnMoreRoute()}
14 | {lang key='learnmore'}...
15 | {/if}
16 |
17 |
{$promotion->getTagline()}
18 |
19 | {if $promotion->getDescription()}
20 |
{$promotion->getDescription()}
21 | {/if}
22 |
23 | {if $promotion->hasFeatures()}
24 |
25 | {assign "promotionFeatures" $promotion->getFeatures()}
26 | {foreach $promotionFeatures as $key=>$feature}
27 |
28 | {$feature}
29 |
30 | {/foreach}
31 |
32 | {/if}
33 |
34 |
35 | {foreach $inputParameters as $key => $value}
36 |
37 | {/foreach}
38 |
39 | {if $product->isFree()}
40 | {$promotion->getCta()}
41 | {lang key="orderfree"}
42 | {else}
43 | {$promotion->getCta()} {$product->name}
44 | {lang key="fromJust"}
45 | {if $product->pricing()->first()->isYearly()}
46 | {$product->pricing()->first()->yearlyPrice()}
47 | {elseif $product->pricing()->first()->isOneTime()}
48 | {$product->pricing()->first()->oneTimePrice()}
49 | {else}
50 | {$product->pricing()->first()->monthlyPrice()}
51 | {/if}
52 | {/if}
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/store/sitebuilder/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
{lang key="store.siteBuilder.upgrade.required"}
15 |
{lang key="store.siteBuilder.upgrade.requiredDescription"}
16 | {if $loggedin}
17 |
{lang key="store.siteBuilder.upgrade.recommended"}
18 | {else}
19 |
{lang key="store.siteBuilder.upgrade.login"}
20 | {/if}
21 |
22 |
23 |
24 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/store/sitelock/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
{lang key="store.ssl.dv.title"}
8 | {lang key="store.ssl.dv.tagline"}
9 |
10 |
11 |
12 | {include file="$template/store/ssl/shared/nav.tpl" current="dv"}
13 |
14 |
15 |
16 |
17 |
{lang key="store.ssl.dv.descriptionTitle"}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | {lang key="store.ssl.dv.descriptionContent"}
27 |
28 |
29 |
{lang key="store.ssl.useCases.title"}
30 |
31 |
32 |
33 |
{lang key="store.ssl.useCases.blogs"}
34 |
35 |
36 |
37 |
{lang key="store.ssl.useCases.infoPages"}
38 |
39 |
40 |
41 |
{lang key="store.ssl.useCases.serverComms"}
42 |
43 |
44 |
45 |
46 |
47 |
48 | {include file="$template/store/ssl/shared/certificate-pricing.tpl" type="dv"}
49 |
50 | {include file="$template/store/ssl/shared/features.tpl" type="dv"}
51 |
52 | {include file="$template/store/ssl/shared/logos.tpl"}
53 |
54 |
55 |
--------------------------------------------------------------------------------
/store/ssl/ev.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
{lang key="store.ssl.ev.title"}
8 | {lang key="store.ssl.ev.tagline"}
9 |
10 |
11 |
12 | {include file="$template/store/ssl/shared/nav.tpl" current="ev"}
13 |
14 |
15 |
16 |
17 |
{lang key="store.ssl.ev.descriptionTitle"}
18 |
19 |
20 |
21 | {lang key="store.ssl.ev.descriptionContent"}
22 |
23 |
24 |
{lang key="store.ssl.useCases.title"}
25 |
26 |
27 |
28 |
{lang key="store.ssl.useCases.criticalDomains"}
29 |
30 |
31 |
32 |
{lang key="store.ssl.useCases.ecommerce"}
33 |
34 |
35 |
36 |
{lang key="store.ssl.useCases.signupPages"}
37 |
38 |
39 |
40 |
41 |
42 |
43 | {include file="$template/store/ssl/shared/certificate-pricing.tpl" type="ev"}
44 |
45 |
46 |
47 |
48 |
49 |
50 |
{lang key="store.ssl.ev.orgInfo"}
51 |
{lang key="store.ssl.ev.orgInfoDescription"}
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 | {include file="$template/store/ssl/shared/features.tpl" type="ev"}
61 |
62 | {include file="$template/store/ssl/shared/logos.tpl"}
63 |
64 |
65 |
--------------------------------------------------------------------------------
/store/ssl/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
{lang key="store.ssl.ov.title"}
8 | {lang key="store.ssl.ov.tagline"}
9 |
10 |
11 |
12 | {include file="$template/store/ssl/shared/nav.tpl" current="ov"}
13 |
14 |
15 |
16 |
17 |
{lang key="store.ssl.ov.descriptionTitle"}
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | {lang key="store.ssl.ov.descriptionContent"}
27 |
28 |
29 |
{lang key="store.ssl.useCases.title"}
30 |
31 |
32 |
33 |
{lang key="store.ssl.useCases.loginPages"}
34 |
35 |
36 |
37 |
{lang key="store.ssl.useCases.intranetSites"}
38 |
39 |
40 |
41 |
{lang key="store.ssl.useCases.webmail"}
42 |
43 |
44 |
45 |
46 |
47 |
48 | {include file="$template/store/ssl/shared/certificate-pricing.tpl" type="ov"}
49 |
50 |
51 |
52 |
53 |
54 |
55 |
{lang key="store.ssl.ov.orgInfo"}
56 |
{lang key="store.ssl.ov.orgInfoDescription"}
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | {include file="$template/store/ssl/shared/features.tpl" type="ov"}
66 |
67 | {include file="$template/store/ssl/shared/logos.tpl"}
68 |
69 |
70 |
--------------------------------------------------------------------------------
/store/ssl/shared/certificate-item.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{lang key=$blockTitle}
4 |
5 |
6 |
{$certificate->name}
7 |
8 |
{lang key=$description}
9 |
{lang key="store.ssl.landingPage.recommendedFor"}: {lang key=$recommendedFor}
10 |
11 | {foreach from=$features item=feature}
12 |
13 |
14 | {$feature}
15 |
16 | {/foreach}
17 |
18 |
19 |
20 | {lang key="store.ssl.landingPage.buy"}
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/store/ssl/shared/currency-chooser.tpl:
--------------------------------------------------------------------------------
1 | {if !$loggedin && $currencies}
2 |
3 |
4 |
5 | {lang key="changeCurrency"} ({$activeCurrency.prefix} {$activeCurrency.code})
6 | {foreach $currencies as $currency}
7 | {$currency['prefix']} {$currency['code']}
8 | {/foreach}
9 |
10 |
11 |
12 | {/if}
13 |
--------------------------------------------------------------------------------
/store/ssl/shared/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 | {lang key='store.ssl.shared.trusted'}
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/store/ssl/shared/nav.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
26 |
27 |
28 |
29 | {if $inCompetitiveUpgrade}
30 |
31 |
32 |
{lang key="dismiss"}
33 |
{lang key="store.ssl.competitiveUpgrade"}
34 |
{lang key="store.ssl.competitiveUpgradeBannerMsg" domain=$competitiveUpgradeDomain}
35 |
36 |
37 | {/if}
38 |
--------------------------------------------------------------------------------
/store/ssl/wildcard.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
{lang key="store.ssl.wildcard.title"}
8 | {lang key="store.ssl.wildcard.tagline"}
9 |
10 |
11 |
12 | {include file="$template/store/ssl/shared/nav.tpl" current="wildcard"}
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
{lang key="store.ssl.wildcard.descriptionTitle"}
24 |
25 |
26 |
27 |
28 |
29 |
30 | {lang key="store.ssl.wildcard.descriptionContent"}
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 | {include file="$template/store/ssl/shared/certificate-pricing.tpl" type="wildcard"}
39 |
40 | {include file="$template/store/ssl/shared/features.tpl" type="wildcard"}
41 |
42 | {include file="$template/store/ssl/shared/logos.tpl"}
43 |
44 |
45 |
--------------------------------------------------------------------------------
/store/threesixtymonitoring/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
{lang key="store.websiteBuilder.upgrade.required"}
15 |
{lang key="store.websiteBuilder.upgrade.requiredDescription"}
16 | {if $loggedin}
17 |
{lang key="store.websiteBuilder.upgrade.recommended"}
18 | {else}
19 |
{lang key="store.websiteBuilder.upgrade.login"}
20 | {/if}
21 |
22 |
23 |
24 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/store/xovinow/index.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {if $errorMessage}
5 |
6 | {include file="$template/includes/alert.tpl" type="danger" msg=$errorMessage textcenter=true}
7 |
8 | {elseif $infoMessage}
9 |
10 | {include file="$template/includes/alert.tpl" type="info" msg=$infoMessage textcenter=true}
11 |
12 | {elseif $action == 'optin'}
13 |
14 | {include file="$template/includes/alert.tpl" type="success" msg="{lang key='thankYou'}" textcenter=true}
15 |
{lang key='newslettersubscribed'}
16 |
17 | {elseif $action == 'optout'}
18 |
19 | {include file="$template/includes/alert.tpl" type="success" msg="{lang key='thankYou'}" textcenter=true}
20 |
{lang key='newsletterremoved'}
21 |
{"{lang key='newsletterresubscribe'}"|sprintf2:'':' '}
22 |
23 | {/if}
24 |
25 |
26 |
27 |
28 |
29 |
30 | {lang key='returnhome'}
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/supportticketslist.tpl:
--------------------------------------------------------------------------------
1 | {include file="$template/includes/tablelist.tpl" tableName="TicketsList" filterColumn="2"}
2 |
3 |
19 |
20 |
21 |
22 |
23 |
24 | {lang key='supportticketsdepartment'}
25 | {lang key='supportticketssubject'}
26 | {lang key='supportticketsstatus'}
27 | {lang key='supportticketsticketlastupdated'}
28 |
29 |
30 |
31 | {foreach $tickets as $ticket}
32 |
33 |
34 | {$ticket.department}
35 |
36 |
37 |
38 | #{$ticket.tid}
39 | {$ticket.subject}
40 |
41 |
42 |
43 |
44 | {$ticket.status|strip_tags}
45 |
46 |
47 |
48 | {$ticket.normalisedLastReply}
49 | {$ticket.lastreply}
50 |
51 |
52 | {/foreach}
53 |
54 |
55 |
56 |
{lang key='loading'}
57 |
58 |
59 |
--------------------------------------------------------------------------------
/supportticketsubmit-confirm.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{lang key="createNewSupportRequest"}
5 |
6 |
7 |
8 | {lang key='supportticketsticketcreated'}
9 | #{$tid}
10 |
11 |
12 |
13 |
14 |
15 |
{lang key='supportticketsticketcreateddesc'}
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 | {lang key='continue'}
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/supportticketsubmit-customfields.tpl:
--------------------------------------------------------------------------------
1 | {foreach $customfields as $customfield}
2 |
9 | {/foreach}
10 |
--------------------------------------------------------------------------------
/supportticketsubmit-kbsuggestions.tpl:
--------------------------------------------------------------------------------
1 | {lang key='kbsuggestions'}
2 |
3 | {lang key='kbsuggestionsexplanation'}
4 |
5 |
6 | {foreach $kbarticles as $kbarticle}
7 |
14 | {/foreach}
15 |
16 |
--------------------------------------------------------------------------------
/supportticketsubmit-stepone.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
{lang key="createNewSupportRequest"}
6 |
{lang key='supportticketsheader'}
7 |
8 |
9 |
10 |
11 | {foreach $departments as $num => $department}
12 |
13 |
14 |
15 | {$department.name}
16 |
17 |
18 | {if $department.description}
19 |
{$department.description}
20 | {/if}
21 | {foreachelse}
22 | {include file="$template/includes/alert.tpl" type="info" msg="{lang key='nosupportdepartments'}" textcenter=true}
23 | {/foreach}
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/theme.yaml:
--------------------------------------------------------------------------------
1 | # WHMCS Twenty-One Theme Configuration File
2 |
3 | name: "Twenty-One"
4 | description: "The Default Theme for WHMCS 2021"
5 | author: "WHMCS Limited"
6 | properties:
7 | serverSidePagination: false # Defines client side will handle pagination
8 | provides:
9 | bootstrap: 4.5.3
10 | jquery: 1.12.4
11 | fontawesome: 5.10.1
12 |
--------------------------------------------------------------------------------
/two-factor-challenge.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{lang key='twofactorauth'}
5 |
6 | {include file="$template/includes/flashmessage.tpl" align="center"}
7 |
8 | {if $newbackupcode}
9 | {include file="$template/includes/alert.tpl" type="success" msg="{lang key='twofabackupcodereset'}" textcenter=true}
10 | {elseif $incorrect}
11 | {include file="$template/includes/alert.tpl" type="error" msg="{lang key='twofa2ndfactorincorrect'}" textcenter=true}
12 | {elseif $error}
13 | {include file="$template/includes/alert.tpl" type="error" msg=$error textcenter=true}
14 | {else}
15 | {include file="$template/includes/alert.tpl" type="warning" msg="{lang key='twofa2ndfactorreq'}" textcenter=true}
16 | {/if}
17 |
18 |
19 |
20 | {$challenge}
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 | {lang key='loginbutton'}
30 |
31 |
32 |
33 |
34 | {lang key='cancel'}
35 |
36 |
37 |
38 |
39 |
40 |
48 |
49 |
50 |
66 |
--------------------------------------------------------------------------------
/two-factor-new-backup-code.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
{lang key='twofactorauth'}
5 |
6 | {include file="$template/includes/alert.tpl" type="success" msg="{lang key='twofabackupcodereset'}" textcenter=true}
7 |
8 |
{lang key='twofanewbackupcodeis'}
9 |
10 |
11 | {$newBackupCode}
12 |
13 |
14 |
{lang key='twofabackupcodeexpl'}
15 |
16 |
17 |
18 | {lang key='continue'} »
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/usagebillingpricing.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 |
{$metric.pricingSchema.info}
10 | {$metric.pricingSchema.detail}
11 |
12 |
13 |
14 | {lang key='metrics.startingQuantity'}
15 | {lang key='metrics.pricePer'} {if $metric.unitName}{$metric.unitName}{else}{lang key='metrics.unit'}{/if}
16 |
17 | {foreach $metric.pricing as $pricing}
18 |
19 | {$pricing.from}
20 | {$pricing.price_per_unit}
21 |
22 | {/foreach}
23 |
24 | {if $metric.includedQuantity}
25 |
{$metric.includedQuantity} {$metric.includedQuantityUnits} {lang key='metrics.includedInBase'}
26 | {/if}
27 |
28 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/user-password.tpl:
--------------------------------------------------------------------------------
1 |
40 |
--------------------------------------------------------------------------------
/user-profile.tpl:
--------------------------------------------------------------------------------
1 | {include file="$template/includes/flashmessage.tpl"}
2 |
3 |
4 |
5 |
{lang key='userProfile.profile'}
6 |
7 |
8 |
9 |
10 |
11 |
12 | {lang key='clientareafirstname'}
13 |
14 |
22 |
23 |
24 |
25 |
26 |
27 | {lang key='clientarealastname'}
28 |
29 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
97 |
--------------------------------------------------------------------------------
/user-switch-account-forced.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
{lang key="switchAccount.forcedSwitchRequest"}
4 |
5 |
6 |
7 | {$requiredClient->fullName}
8 | {if $requiredClient->companyName}
9 | ({$requiredClient->companyName})
10 | {/if}
11 |
12 |
13 | {$requiredClient->email}
14 |
15 |
16 |
17 |
18 |
19 |
20 | {lang key="continue"}
21 |
22 |
23 |
24 | {lang key="switchAccount.cancelAndReturn"}
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/user-switch-account.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | {include file="$template/includes/flashmessage.tpl"}
4 |
5 | {if $accounts->count() == 0}
6 |
{lang key="switchAccount.noneFound"}
7 |
{lang key="switchAccount.createInstructions"}
8 |
9 |
10 | {lang key="shopNow"}
11 |
12 |
13 |
14 | {else}
15 |
{lang key="switchAccount.choose"}
16 |
17 |
30 | {/if}
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
47 |
--------------------------------------------------------------------------------
/user-verify-email.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 | {if $success}
4 |
5 |
6 | {lang key="emailVerification.success"}
7 |
8 | {elseif $expired}
9 |
10 |
11 | {lang key="emailVerification.expired"}
12 |
13 |
14 | {if $loggedin}
15 |
16 | {lang key='resendEmail'}
17 |
18 | {else}
19 |
{lang key="emailVerification.loginToRequest"}
20 | {/if}
21 | {else}
22 |
23 |
24 | {lang key="emailVerification.notFound"}
25 |
26 |
27 | {if !$loggedin}
28 |
{lang key="emailVerification.loginToRequest"}
29 | {/if}
30 | {/if}
31 |
32 |
33 | {lang key="orderForm.continueToClientArea"}
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/viewannouncement.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | {$title}
5 | {if $twittertweet}
6 |
7 |
10 |
11 |
12 | {/if}
13 |
14 |
15 |
16 |
17 |
18 | {$carbon->createFromTimestamp($timestamp)->format('l, jS F, Y')}
19 |
20 |
21 |
22 | {$carbon->createFromTimestamp($timestamp)->format('H:ia')}
23 |
24 |
25 |
26 |
27 | {$text}
28 |
29 |
30 | {if $facebookrecommend}
31 |
32 |
44 |
45 |
46 | {/if}
47 |
48 |
49 |
50 | {if $facebookcomments}
51 |
70 | {/if}
71 |
72 |
73 | {lang key='clientareabacklink'}
74 |
75 |
76 | {if $editLink}
77 |
78 |
79 | {lang key='edit'}
80 |
81 | {/if}
82 |
--------------------------------------------------------------------------------
/viewemail.tpl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | {lang key='clientareaemails'} - {$companyname}
6 |
7 | {include file="$template/includes/head.tpl"}
8 |
9 |
10 |
11 |
12 |
22 |
23 |
24 |
25 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------