├── 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 | 19 |
20 | {foreach $client->contacts()->orderBy('firstname', 'asc')->orderBy('lastname', 'asc')->get() as $contact} 21 | 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 |
12 | 13 | {foreach $permissions as $permission} 14 | 21 |
22 | {/foreach} 23 | 24 |
25 | 26 |

27 | 30 | 31 | {lang key="clientareacancel"} 32 | 33 |

34 | 35 |
36 | 37 |
38 |
39 | -------------------------------------------------------------------------------- /affiliatessignup.tpl: -------------------------------------------------------------------------------- 1 | {if $affiliatesystemenabled} 2 | 3 |
4 |
5 | 6 |

{lang key='affiliatesignuptitle'}

7 |

{lang key='affiliatesignupintro'}

8 | 9 | 14 | 15 |
16 | 17 |
18 | 19 |

20 | 23 |

24 |
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 |

9 | 10 | {$announcement.title} 11 | 12 | {if $announcement.editLink} 13 | 14 | 15 | {lang key='edit'} 16 | 17 | {/if} 18 |

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 | 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 | 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 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 |
{lang key='addfundsminimum'}{$minimumamount}
{lang key='addfundsmaximum'}{$maximumamount}
{lang key='addfundsmaximumbalance'}{$maximumbalance}
31 |
32 |
33 | 34 |
35 |
36 |
37 |
38 |
39 |
40 | 41 | 43 |
44 |
45 |
46 | 51 |
52 | 55 |
56 |
57 |
58 | 61 |
62 |
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 |
    25 |
    26 | 27 |
    28 | 29 | 30 |
    31 |
    32 | 33 | 34 |
    35 | 36 | {if $domainid} 37 |
    38 |

    {lang key='cancelrequestdomain'}

    39 |

    {"{lang key='cancelrequestdomaindesc'}"|sprintf2:$domainnextduedate:$domainprice:$domainregperiod}

    40 | 43 |
    44 | {/if} 45 | 46 |
    47 | 48 | 49 | 53 | 54 |
    55 | 56 |
    57 | 60 | {lang key='cancel'} 61 |
    62 |
    63 | 64 |
    65 | 66 |
    67 |
    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 | 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 | 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 | 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 | 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 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | {foreach $emailforwarders as $num => $emailforwarder} 31 | 32 | 33 | 34 | 35 | 36 | {/foreach} 37 | 38 | 39 | 40 | 41 | 42 | 43 |
    {lang key='domainemailforwardingprefix'}{lang key='domainemailforwardingforwardto'}
    @{$domain} =>
    @{$domain} =>
    44 | 45 |
    46 | 49 | 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 | 22 | 23 | 24 | 25 | 26 | 27 | {foreach $emails as $email} 28 | 29 | 30 | 31 | 36 | 37 | {/foreach} 38 | 39 |
    {lang key='clientareaemailsdate'}{lang key='clientareaemailssubject'} 
    {$email.normalisedDate}{$email.date}{$email.subject}{if $email.attachmentCount > 0} {/if} 32 | 35 |
    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 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | {foreach $invoices as $invoice} 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | {/foreach} 46 | 47 |
    {lang key='invoicestitle'}{lang key='invoicesdatecreated'}{lang key='invoicesdatedue'}{lang key='invoicestotal'}{lang key='invoicesstatus'}
    {$invoice.invoicenum}{$invoice.normalisedDateCreated}{$invoice.datecreated}{$invoice.normalisedDateDue}{$invoice.datedue}{$invoice.total}{$invoice.status}
    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 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | {foreach $services as $service} 34 | 35 | 42 | 43 | 44 | 45 | 46 | 47 | {/foreach} 48 | 49 |
    {lang key='orderproduct'}{lang key='clientareaaddonpricing'}{lang key='clientareahostingnextduedate'}{lang key='clientareastatus'}
    36 | {if $service.sslStatus} 37 | 38 | {elseif !$service.isActive} 39 | 40 | {/if} 41 | {$service.product}{if $service.domain}
    {$service.domain}{else}
    -{/if}
    {$service.amount} {$service.billingcycle}{$service.normalisedNextDueDate}{$service.nextduedate}{$service.statustext}
    50 |
    51 |

    {lang key='loading'}

    52 |
    53 |
    54 | -------------------------------------------------------------------------------- /clientareaproductusagebilling.tpl: -------------------------------------------------------------------------------- 1 |

    {lang key='metrics.explanation'}

    2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | {foreach $metricStats as $metric} 10 | 11 | 12 | 13 | 28 | 29 | 30 | {/foreach} 31 |
    {lang key='metrics.metric'}{lang key='metrics.currentUsage'}{lang key='metrics.pricing'}{lang key='metrics.lastUpdated'}
    {$metric.displayName}{$metric.currentValue} 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 | 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 |
    {if is_string($metric.lastUpdated)}{$metric.lastUpdated}{else}{$metric.lastUpdated->diffForHumans()}{/if}
    32 | -------------------------------------------------------------------------------- /clientareaquotes.tpl: -------------------------------------------------------------------------------- 1 | {include file="$template/includes/tablelist.tpl" tableName="QuotesList" noSortColumns="5" filterColumn="4"} 2 | 3 | 20 | 21 |
    22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | {foreach $quotes as $quote} 35 | 36 | 37 | 38 | 39 | 40 | 41 | 48 | 49 | {/foreach} 50 | 51 |
    {lang key='quotenumber'}{lang key='quotesubject'}{lang key='quotedatecreated'}{lang key='quotevaliduntil'}{lang key='quotestage'} 
    {$quote.id}{$quote.subject}{$quote.normalisedDateCreated}{$quote.datecreated}{$quote.normalisedValidUntil}{$quote.validuntil}{$quote.stage} 42 |
    43 | 44 | 45 | 46 |
    47 |
    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 | 18 | 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 | 17 | {/if} 18 | {if in_array('dns-txt-token', $approvalMethods)} 19 | 23 | {/if} 24 | {if in_array('file', $approvalMethods)} 25 | 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 | 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 | 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 |
    22 | 23 |
    24 | 25 |
    26 |
    27 |
    28 | 29 |
    30 | 31 |
    32 |
    33 |
    34 | 35 |
    36 | 37 |
    38 |
    39 |
    40 | 41 |
    42 | 43 |
    44 |
    45 | 46 | {if $captcha} 47 |
    48 | {include file="$template/includes/captcha.tpl"} 49 |
    50 | {/if} 51 | 52 |
    53 | 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 | 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 | 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 |
    16 | 28 |
    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 |
    44 | {foreach $mostdownloads as $download} 45 | 46 | {$download.type|replace:'alt':' class="pr-1" alt'} 47 | {$download.title} 48 | {if $download.clientsonly} 49 |
    50 | 51 | 52 | {lang key='restricted'} 53 | 54 |
    55 | {/if} 56 | 57 | {$download.description} 58 |
    59 | {lang key='downloadsfilesize'}: {$download.filesize} 60 |
    61 |
    62 | {/foreach} 63 |
    64 |
    65 | {/if} 66 | -------------------------------------------------------------------------------- /downloadscat.tpl: -------------------------------------------------------------------------------- 1 |
    2 | 10 |
    11 | 12 | {if $dlcats} 13 |
    14 | {foreach $dlcats as $category} 15 |
    16 | 28 |
    29 | {/foreach} 30 |
    31 | {/if} 32 | 33 |
    34 |
    35 |

    36 | 37 | {lang key='downloadsfiles'} 38 |

    39 |
    40 |
    41 | {foreach $downloads as $download} 42 | 43 | {$download.type|replace:'alt':' class="pr-1" alt'} 44 | {$download.title} 45 | {if $download.clientsonly} 46 |
    47 | 48 | 49 | {lang key='restricted'} 50 | 51 |
    52 | {/if} 53 | 54 | {$download.description} 55 |
    56 | {lang key='downloadsfilesize'}: {$download.filesize} 57 |
    58 |
    59 | {foreachelse} 60 |
    61 | {lang key='downloadsnone'} 62 |
    63 | {/foreach} 64 |
    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 | 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 | 4 | 5 | -------------------------------------------------------------------------------- /includes/domain-search.tpl: -------------------------------------------------------------------------------- 1 |
    2 | 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 | 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 | 27 | 30 | 33 | 36 | 39 | 42 | 45 | 48 | 51 | 54 | 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 | 39 | -------------------------------------------------------------------------------- /includes/navbar.tpl: -------------------------------------------------------------------------------- 1 | {foreach $navbar as $item} 2 | 26 | {/foreach} 27 | {if !isset($rightDrop) || !$rightDrop} 28 | 35 | {/if} 36 | -------------------------------------------------------------------------------- /includes/network-issues-notifications.tpl: -------------------------------------------------------------------------------- 1 | {if $openNetworkIssueCounts.open > 0} 2 |
    3 |
    4 | 5 | {lang key='networkIssuesAware'} 6 | 7 | {lang key='learnmore'} 8 | 9 | 10 |
    11 |
    12 | {elseif $openNetworkIssueCounts.scheduled > 0} 13 |
    14 |
    15 | 16 | {lang key='networkIssuesScheduled'} 17 | 18 | {lang key='learnmore'} 19 | 20 | 21 |
    22 |
    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 |
    15 | {$footerContent} 16 |
    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 | Sitejet Preview 12 |
    13 |
    14 |
    15 |
    {lang key='sitejetBuilder.chooseWebsite'}
    16 |
    17 | 22 | 31 |
    32 | 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 | 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 |
    30 |
    31 |
    32 | 35 |
    36 | {include file="$template/payment/$cardOrBank/select.tpl"} 37 |
    38 |
    39 | 40 | {if !$hasRemoteInput} 41 | {include file="$template/payment/$cardOrBank/inputs.tpl"} 42 | {/if} 43 |
    44 |
    45 | 46 |
    47 |
    48 | 52 |
    53 |
    54 |
    55 |
    56 | 57 |
    58 |
    59 | {include file="$template/payment/invoice-summary.tpl"} 60 |
    61 |
    62 | 63 | {if $servedOverSsl} 64 | 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 |
    16 | 33 |
    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 |
    49 | {foreach $kbmostviews as $kbarticle} 50 | 51 | 52 | {$kbarticle.title} 53 | {if $kbarticle.editLink} 54 | 57 | {/if} 58 | {$kbarticle.article|truncate:100:"..."} 59 | 60 | {/foreach} 61 |
    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 |

    8 | {$kbarticle.title} 9 | 10 | 11 | {lang key='print'} 12 | 13 |

    14 | 15 | 26 | 27 |
    28 | 29 |
    30 | {$kbarticle.text} 31 |
    32 | 33 | {if !$kbarticle.voted} 34 |
    35 |

    {lang key='knowledgebasehelpful'}

    36 |
    37 | 38 |
    39 | 43 | 47 |
    48 |
    49 | {/if} 50 | 51 |
    52 |
    53 | 54 | {if $kbarticles} 55 |
    56 |
    57 |

    58 | 59 | {lang key='knowledgebaserelated'} 60 |

    61 |
    62 |
    63 | {foreach $kbarticles as $kbarticle} 64 | 65 | 66 | {$kbarticle.title} 67 | {if $kbarticle.editLink} 68 | 71 | {/if} 72 | {$kbarticle.article|truncate:100:"..."} 73 | 74 | {foreachelse} 75 |
    76 | {lang key='knowledgebasenoarticles'} 77 |
    78 | {/foreach} 79 |
    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 |
    16 | 33 |
    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 |
    51 | {foreach $kbarticles as $kbarticle} 52 | 53 | 54 | {$kbarticle.title} 55 | {if $kbarticle.editLink} 56 | 59 | {/if} 60 | {$kbarticle.article|truncate:100:"..."} 61 | 62 | {foreachelse} 63 |
    64 | {lang key='knowledgebasenoarticles'} 65 |
    66 | {/foreach} 67 |
    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 |
    12 | 13 |
    14 |
    15 | 16 |
    17 | 18 |
    19 |
    20 |
    21 |
    22 | 23 | 26 |
    27 |
    28 |
    29 | 30 |
    31 | 32 |
    33 | 36 |
    37 |
    38 |
    39 | {if $captcha->isEnabled()} 40 | {include file="$template/includes/captcha.tpl"} 41 | {/if} 42 |
    43 | 46 |
    47 |
    48 | 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 | 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 | 30 | 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 |
    51 | {$content} 52 |
    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 | 17 |
    18 |
    19 | 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 |
    37 |
    38 | {lang key='twofacantaccess2ndfactor'}
    39 | {lang key='twofaloginusingbackupcode'} 40 |
    41 | 44 |
    45 |
    46 | 47 |
    48 | 49 |
    50 | 51 |
    52 | 53 | 54 |
    55 | -------------------------------------------------------------------------------- /oauth/login.tpl: -------------------------------------------------------------------------------- 1 |
    2 | 3 | {if $appLogo} 4 | 7 | {/if} 8 | 9 |

    {lang key='oauth.loginToGrantApp' appName=$appName}

    10 | 11 |
    12 |
    13 | 14 | {if $incorrect} 15 | {include file="$template/includes/alert.tpl" type="error" msg="{lang key='loginincorrect'}" textcenter=true} 16 | {/if} 17 | 18 |
    19 | 20 | 21 |
    22 | 23 |
    24 | 25 | 26 |
    27 | 28 |
    29 | 30 |
    31 |
    32 |
    33 | 36 | • 37 | {lang key='forgotpw'} 38 |
    39 |
    40 | 43 | 46 |
    47 | 48 |
    49 | 50 |
    51 | 52 |
    53 | 54 | 55 |
    56 | -------------------------------------------------------------------------------- /oauth/redirect.tpl: -------------------------------------------------------------------------------- 1 |
    2 |
    3 | {lang key='oauth.redirectDescriptionOne'}
    4 | {lang key='oauth.redirectDescriptionTwo'} 5 | 6 | {lang key='oauth.redirectDescriptionThree'} 7 | 8 | 9 |
    10 |
    11 | -------------------------------------------------------------------------------- /password-reset-change-prompt.tpl: -------------------------------------------------------------------------------- 1 |

    {lang key='pwresetenternewpw'}

    2 | 3 |
    4 | 5 | 6 |
    7 | 8 | 9 |
    10 | 11 |
    12 | 13 | 14 |
    15 |
    16 | 17 |
    18 | 19 | {include file="$template/includes/pwstrength.tpl"} 20 |
    21 | 22 |
    23 |
    24 | 25 | 26 |
    27 |
    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 |
    14 | 15 |
    16 |
    17 | 18 |
    19 | 20 |
    21 |
    22 | 23 | {if $captcha->isEnabled()} 24 |
    25 | {include file="$template/includes/captcha.tpl"} 26 |
    27 | {/if} 28 | 29 |
    30 | 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 | 12 | 13 |
    14 | 15 |
    16 | 17 |
    18 |
    19 | -------------------------------------------------------------------------------- /payment/bank/inputs.tpl: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 6 |
    7 | 11 | 15 |
    16 |
    17 |
    18 | 21 |
    22 | 23 | 24 | {lang key='paymentMethods.fieldRequired'} 25 | 26 |
    27 |
    28 |
    29 | 32 |
    33 | 34 | 35 | {lang key='paymentMethods.fieldRequired'} 36 | 37 |
    38 |
    39 |
    40 | 43 |
    44 | 45 | 46 | {lang key='paymentMethodsManage.routingNumberNotValid'} 47 | 48 |
    49 |
    50 |
    51 | 54 |
    55 | 56 | 57 | {lang key='paymentMethodsManage.accountNumberNotValid'} 58 | 59 |
    60 |
    61 |
    62 | 65 |
    66 | 74 |
    75 |
    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 | 27 |
    28 |
    29 | 32 |
    33 |
    34 | 37 |
    38 | {/foreach} 39 |
    40 | {/if} 41 |
    42 | 52 |
    53 | -------------------------------------------------------------------------------- /payment/bank/validate.tpl: -------------------------------------------------------------------------------- 1 | {if !$hasRemoteInput} 2 | 70 | 71 | 72 | {else} 73 | 88 | {/if} 89 | -------------------------------------------------------------------------------- /payment/card/inputs.tpl: -------------------------------------------------------------------------------- 1 | 2 |
    3 | 4 |
    5 | 6 | 7 |
    8 |
    9 | {if $showccissuestart} 10 |
    11 | 12 |
    13 | 14 |
    15 |
    16 | {/if} 17 |
    18 | 19 |
    20 | 21 | {lang key="paymentMethodsManage.expiryDateNotValid"} 22 |
    23 |
    24 | {if $showccissuestart} 25 |
    26 | 27 |
    28 | 29 |
    30 |
    31 | {/if} 32 | 33 |
    34 | 35 |
    36 | 37 | 40 |
    41 | {lang key="paymentMethodsManage.cvcNumberNotValid"} 42 |
    43 |
    44 | {include file="$template/payment/billing-address.tpl"} 45 | {if $allowClientsToRemoveCards} 46 | 47 |
    48 |
    49 | 50 | 51 | 55 | 56 |
    57 |
    58 | 59 | {/if} 60 | 61 |
    62 | 63 |
    64 | 65 |
    66 |
    67 | 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 | 35 |
    36 |
    37 | 40 |
    41 |
    42 | 45 |
    46 |
    47 | 51 |
    52 | {/foreach} 53 |
    54 | {/if} 55 |
    56 | 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 | 10 | 11 | 12 | {foreach $invoiceitems as $item} 13 | 14 | 15 | 16 | 17 | {/foreach} 18 | 19 | 20 | 21 | 22 | {if $invoice.taxrate} 23 | 24 | 25 | 26 | 27 | {/if} 28 | {if $invoice.taxrate2} 29 | 30 | 31 | 32 | 33 | {/if} 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 |
    {lang key="invoicesdescription"}{lang key="invoicesamount"}
    {$item.description}{$item.amount}
    {lang key="invoicessubtotal"}{$invoice.subtotal}
    {$invoice.taxrate}% {$invoice.taxname}{$invoice.tax}
    {$invoice.taxrate2}% {$invoice.taxname2}{$invoice.tax2}
    {lang key="invoicescredit"}{$invoice.credit}
    {lang key="invoicestotaldue"}{$invoice.total}
    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 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 |
    {$_LANG['quotenumber']}{$_LANG['quotesubject']}{$_LANG['quotedatecreated']}{$_LANG['quotevaliduntil']}
    {$quotenumber}{$subject}{$datecreated}{$validuntil}
    "; 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 | 71 | 72 | 73 | 74 | 75 | '; 76 | foreach ($lineitems AS $item) { 77 | $tblhtml .= ' 78 | 79 | 80 | 81 | 82 | 83 | 84 | '; 85 | } 86 | $tblhtml .= ' 87 | 88 | 89 | 90 | '; 91 | if ($taxlevel1['rate']>0) $tblhtml .= ' 92 | 93 | 94 | 95 | '; 96 | if ($taxlevel2['rate']>0) $tblhtml .= ' 97 | 98 | 99 | 100 | '; 101 | $tblhtml .= ' 102 | 103 | 104 | 105 | 106 |
    '.$_LANG['quoteqty'].''.$_LANG['quotedesc'].''.$_LANG['quoteunitprice'].''.$_LANG['quotediscount'].''.$_LANG['quotelinetotal'].'
    '.$item['qty'].''.nl2br($item['description']).'
    '.$item['unitprice'].''.$item['discount'].''.$item['total'].'
    '.$_LANG['invoicessubtotal'].''.$subtotal.'
    '.$taxlevel1['name'].' @ '.$taxlevel1['rate'].'%'.$tax1.'
    '.$taxlevel2['name'].' @ '.$taxlevel2['rate'].'%'.$tax2.'
    '.$_LANG['invoicestotal'].''.$total.'
    '; 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 |
    4 | 5 | 6 | 7 |
    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 | 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 |
    25 | 26 |
    27 | {if count($siteBuilderServices) > 0} 28 | {if is_null($product)} 29 |

    {lang key="store.siteBuilder.upgrade.no"}

    30 |

    {lang key="store.siteBuilder.upgrade.noUpgrade"}

    31 |

    {lang key="store.siteBuilder.upgrade.submitTicket"}

    32 | {else} 33 |

    {$promo->getHeadline()}

    34 |

    {$promo->getTagline()}

    35 | {if $promo->hasFeatures()} 36 |
      37 | {foreach $promo->getFeatures() as $feature} 38 |
    • {$feature}
    • 39 | {/foreach} 40 |
    41 | {/if} 42 |
    43 | 48 | 51 |
    52 | {/if} 53 | {else} 54 |

    {lang key="store.siteBuilder.upgrade.noPlans"}

    55 |

    {lang key="store.siteBuilder.upgrade.loggedInAs" email=$loggedinuser.email}

    56 |

    {lang key="store.siteBuilder.upgrade.switchUser"}

    57 | {/if} 58 |
    59 | 60 |
    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 | 21 |
    22 |
    23 |
    24 | -------------------------------------------------------------------------------- /store/ssl/shared/currency-chooser.tpl: -------------------------------------------------------------------------------- 1 | {if !$loggedin && $currencies} 2 |
    3 |
    4 | 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 | 28 | 29 | {if $inCompetitiveUpgrade} 30 |
    31 |
    32 | 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 |
    25 | 26 |
    27 | {if count($weeblyServices) > 0} 28 | {if is_null($product)} 29 |

    {lang key="store.websiteBuilder.upgrade.no"}

    30 |

    {lang key="store.websiteBuilder.upgrade.noUpgrade"}

    31 |

    {lang key="store.websiteBuilder.upgrade.submitTicket"}

    32 | {else} 33 |

    {$promo->getHeadline()}

    34 |

    {$promo->getTagline()}

    35 | {if $promo->hasFeatures()} 36 |
      37 | {foreach $promo->getFeatures() as $feature} 38 |
    • {$feature}
    • 39 | {/foreach} 40 |
    41 | {/if} 42 |
    43 | 48 | 51 |
    52 | {/if} 53 | {else} 54 |

    {lang key="store.websiteBuilder.upgrade.noPlans"}

    55 |

    {lang key="store.websiteBuilder.upgrade.loggedInAs" email=$loggedinuser.email}

    56 |

    {lang key="store.websiteBuilder.upgrade.switchUser"}

    57 | {/if} 58 |
    59 | 60 |
    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 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | {foreach $tickets as $ticket} 32 | 33 | 36 | 42 | 47 | 51 | 52 | {/foreach} 53 | 54 |
    {lang key='supportticketsdepartment'}{lang key='supportticketssubject'}{lang key='supportticketsstatus'}{lang key='supportticketsticketlastupdated'}
    34 | {$ticket.department} 35 | 37 | 38 | #{$ticket.tid} 39 | {$ticket.subject} 40 | 41 | 43 | 44 | {$ticket.status|strip_tags} 45 | 46 | 48 | {$ticket.normalisedLastReply} 49 | {$ticket.lastreply} 50 |
    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 |
    3 | 4 | {$customfield.input} 5 | {if $customfield.description} 6 |

    {$customfield.description}

    7 | {/if} 8 |
    9 | {/foreach} 10 | -------------------------------------------------------------------------------- /supportticketsubmit-kbsuggestions.tpl: -------------------------------------------------------------------------------- 1 |

    {lang key='kbsuggestions'}

    2 | 3 |

    {lang key='kbsuggestionsexplanation'}

    4 | 5 |
    6 | {foreach $kbarticles as $kbarticle} 7 |
    8 | 9 | 10 | {$kbarticle.title} 11 | {$kbarticle.article}... 12 | 13 |
    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 | 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 | 34 | -------------------------------------------------------------------------------- /user-password.tpl: -------------------------------------------------------------------------------- 1 |
    2 |
    3 |

    {lang key='sidebars.viewAccount.changePassword'}

    4 | 5 | {include file="$template/includes/flashmessage.tpl"} 6 | 7 |
    8 | 9 |
    10 | 11 |
    12 | 13 |
    14 |
    15 |
    16 | 17 |
    18 | 19 | {include file="$template/includes/pwstrength.tpl"} 20 |
    21 |
    22 | 25 |
    26 |
    27 |
    28 | 29 |
    30 | 31 |
    32 |
    33 |
    34 | 35 | 36 |
    37 | 38 |
    39 |
    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 | 14 | 22 |
    23 |
    24 |
    25 |
    26 | 29 | 37 |
    38 |
    39 |
    40 | 41 | 42 |
    43 | 44 |
    45 |
    46 | 47 |
    48 |
    49 |

    {lang key='userProfile.changeEmail'}

    50 | 51 |

    52 | {if $user->needsToCompleteEmailVerification()} 53 | {lang key='userProfile.notVerified'} 54 | {elseif $user->emailVerified()} 55 | {lang key='userProfile.verified'} 56 | {/if} 57 |

    58 | 59 |
    60 |
    61 |
    62 |
    63 | 66 | 74 |
    75 | 76 | {if !in_array('email', $uneditableFields)} 77 |
    78 | 81 | 87 |
    88 | {/if} 89 |
    90 |
    91 | 92 | 93 |
    94 | 95 |
    96 |
    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 | 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 | 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 |
    52 |
    53 |
    54 |
    55 | 67 | 68 |
    69 |
    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 |
    13 | 14 | {if is_array($attachments) && count($attachments) > 0} 15 | 20 | {/if} 21 |
    22 |
    23 | 24 |
    25 | 30 |
    31 | 32 | 33 | --------------------------------------------------------------------------------