2020-02-23 21:57:51 +13:00
<?php
2020-02-24 19:59:10 +13:00
$customDomainsEnabled = $this->getParam('customDomainsEnabled', false);
$customDomainsTarget = $this->getParam('customDomainsTarget', false);
2020-02-23 21:57:51 +13:00
?>
2019-05-09 18:54:39 +12:00
< div class = "cover" >
2020-02-28 06:44:03 +13:00
< h1 class = "zone xl margin-bottom-large" >
< a data-ls-attrs = "href=/console/home?project={{router.params.project}}" class = "back text-size-small" > < i class = "icon-left-open" > < / i > Home< / a >
< br / >
< span > Settings< / span >
2019-05-09 18:54:39 +12:00
< / h1 >
< / div >
2019-08-08 06:10:53 +12:00
< div class = "zone xl"
2020-01-31 06:12:29 +13:00
data-service="projects.get"
2019-08-08 06:10:53 +12:00
data-scope="console"
data-name="console-project"
data-event="load"
data-param-project-id="{{router.params.project}}"
data-success="trigger"
2020-01-31 09:58:49 +13:00
data-success-param-trigger-events="projects.get">
2019-05-09 18:54:39 +12:00
< div class = "zone xl" >
2019-05-09 20:23:22 +12:00
< ul class = "phases clear" data-ui-phases data-selected = "{{router.params.tab}}" >
< li data-state = "/console/settings?project={{router.params.project}}" >
2019-09-27 06:47:48 +12:00
< h2 > Overview< / h2 >
2019-05-09 18:54:39 +12:00
2019-08-08 06:10:53 +12:00
< form
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Update Project"
2020-01-31 09:58:49 +13:00
data-service="projects.update"
2019-08-08 06:10:53 +12:00
data-scope="console"
data-event="submit"
data-param-project-id="{{router.params.project}}"
data-success="alert,trigger"
data-success-param-alert-text="Saved project successfully"
2020-01-31 09:58:49 +13:00
data-success-param-trigger-events="projects.update"
2019-08-08 17:09:49 +12:00
data-failure="alert"
2019-08-09 01:43:24 +12:00
data-failure-param-alert-text="Failed to update project"
data-failure-param-alert-classname="error">
2019-05-09 18:54:39 +12:00
2020-02-17 20:16:11 +13:00
< input name = "$id" type = "hidden" data-ls-bind = "{{console-project.$id}}" / >
2020-02-28 20:35:42 +13:00
< div class = "box" >
< div class = "row responsive" >
< div class = "col span-9 margin-bottom" >
2019-05-09 18:54:39 +12:00
< label for = "name" > Name< / label >
2019-05-10 04:15:51 +12:00
< input name = "name" id = "name" type = "text" autocomplete = "off" data-ls-bind = "{{console-project.name}}" data-forms-text-direction required >
2019-05-09 18:54:39 +12:00
2020-02-17 20:16:11 +13:00
< label for = "name" > Project ID< / label >
2019-05-09 18:54:39 +12:00
< div class = "input-copy" >
2020-02-17 20:16:11 +13:00
< input data-forms-copy type = "text" disabled data-ls-bind = "{{console-project.$id}}" / >
2019-05-09 18:54:39 +12:00
< / div >
2019-09-16 05:38:04 +12:00
2020-02-25 01:56:57 +13:00
< label for = "name" > Default API Endpoint< / label >
2019-09-16 05:38:04 +12:00
< div class = "input-copy" >
< input data-forms-copy type = "text" disabled data-ls-bind = "{{env.PROTOCOL}}://{{env.DOMAIN}}/v1" / >
< / div >
2020-02-25 01:56:57 +13:00
2020-02-25 02:47:35 +13:00
<!-- <div data - ls - if="0 !== {{console - domains|activeDomainsCount}}">
2020-02-25 01:56:57 +13:00
< label for = "name" > Custom API Endpoints< / label >
< ul data-ls-loop = "console-domains" data-ls-as = "domain" >
< li >
< div class = "input-copy" data-ls-if = "true === {{domain.verification}} && {{domain.certificateId}}" >
< input data-forms-copy type = "text" disabled data-ls-bind = "{{env.PROTOCOL}}://{{domain.domain}}/v1" / >
< / div >
< / li >
< / ul >
2020-02-25 02:47:35 +13:00
< / div > -->
2020-02-25 01:56:57 +13:00
2020-02-28 20:35:42 +13:00
< div class = "margin-top-negative-small text-size-small" >
2020-02-21 09:45:03 +13:00
< a data-ls-attrs = "href=/console/settings/domains?project={{router.params.project}}" > Add a custom domain < i class = "icon-angle-circled-right" > < / i > < / a >
< / div >
2020-02-28 20:35:42 +13:00
<!--
2019-05-09 18:54:39 +12:00
< label for = "description" > Description < small > (optional)< / small > < / label >
2019-05-10 04:15:51 +12:00
< textarea name = "description" id = "description" autocomplete = "off" placeholder = "Help us make the world a better place" data-ls-bind = "{{console-project.description}}" data-forms-text-direction data-forms-text-count > < / textarea >
2019-05-09 18:54:39 +12:00
< label for = "url" > Website < small > (optional)< / small > < / label >
2020-02-21 09:45:03 +13:00
< input name = "url" id = "url" type = "url" class = "full-width" autocomplete = "off" placeholder = "https://acme-corp.com" data-ls-bind = "{{console-project.url}}" > -->
2020-02-28 20:35:42 +13:00
< / div >
2019-05-09 18:54:39 +12:00
2020-02-28 20:35:42 +13:00
< div class = "col span-3 box-aside" >
< label for = "logo" > Project Logo< / label >
2019-08-11 07:05:36 +12:00
2020-02-28 20:35:42 +13:00
< div class = "text-align-center clear" >
2020-03-01 06:15:07 +13:00
< input type = "hidden" name = "logo" data-ls-bind = "{{console-project.logo}}" data-read = " <?php echo $this -> escape ( json_encode ([ '*' ])); ?> " data-write = " <?php echo $this -> escape ( json_encode ([ 'team:{{console-project.teamId}}' ])); ?> " data-accept = "image/*" data-forms-upload = "" data-label-button = "Upload" data-scope = "console" data-default = "" >
2020-02-28 20:35:42 +13:00
< / div >
2019-05-09 18:54:39 +12:00
< / div >
< / div >
2020-02-28 20:35:42 +13:00
< hr class = "margin-top-no" / >
< button class = "" type = "submit" > Save< / button >
2019-05-09 18:54:39 +12:00
< / div >
< / form >
< / li >
2020-01-31 12:24:10 +13:00
<!-- <li data - state="/console/settings/privacy?project={{router.params.project}}">
2019-08-05 17:51:02 +12:00
2019-08-08 06:10:53 +12:00
< form
2020-01-31 09:58:49 +13:00
data-service="projects.update"
2019-08-08 06:10:53 +12:00
data-scope="console"
data-event="submit"
data-param-project-id="{{router.params.project}}"
data-success="alert,trigger"
data-success-param-alert-text="Saved project successfully"
2020-01-31 09:58:49 +13:00
data-success-param-trigger-events="projects.update"
2019-08-08 17:09:49 +12:00
data-failure="alert"
2019-08-09 01:43:24 +12:00
data-failure-param-alert-text="Failed to update project"
data-failure-param-alert-classname="error">
2019-08-05 17:51:02 +12:00
< h2 > Privacy & Legal< / h2 >
< div class = "box margin-bottom" >
2020-02-17 20:16:11 +13:00
< input name = "$id" type = "hidden" data-ls-bind = "{{console-project.$id}}" / >
2019-08-05 17:51:02 +12:00
< div class = "row thin" >
< div class = "col span-6" >
< label for = "legalName" > Legal Name< / label >
< input name = "legalName" id = "legalName" type = "text" autocomplete = "off" data-ls-bind = "{{console-project.legalName}}" data-forms-text-direction >
< label for = "legalCountry" > Country< / label >
2019-08-12 09:52:36 +12:00
< select id = "legalCountry" name = "legalCountry" data-ls-bind = "{{console-project.legalCountry}}" data-ls-loop = "locale-countries" data-ls-as = "option" >
< option data-ls-attrs = "value={{$index}}" data-ls-bind = "{{option}}" > < / option >
< / select >
2019-08-05 17:51:02 +12:00
< label for = "legalCity" > City< / label >
< input name = "legalCity" id = "legalCity" type = "text" autocomplete = "off" data-ls-bind = "{{console-project.legalCity}}" data-forms-text-direction >
< / div >
< div class = "col span-6" >
< label for = "legalTaxId" > Tax ID< / label >
< input name = "legalTaxId" id = "legalTaxId" type = "text" autocomplete = "off" data-ls-bind = "{{console-project.legalTaxId}}" data-forms-text-direction >
< label for = "legalState" > State< / label >
< input name = "legalState" id = "legalState" type = "text" autocomplete = "off" data-ls-bind = "{{console-project.legalState}}" data-forms-text-direction >
< label for = "legalAddress" > Address< / label >
< input name = "legalAddress" id = "legalAddress" type = "text" autocomplete = "off" data-ls-bind = "{{console-project.legalAddress}}" data-forms-text-direction >
< / div >
< / div >
2019-08-07 00:22:54 +12:00
< hr / >
2019-08-05 17:51:02 +12:00
< button class = "" type = "submit" > Save< / button >
< / div >
< / form >
2020-01-31 12:24:10 +13:00
< / li > -->
2020-02-21 09:45:03 +13:00
< li data-state = "/console/settings/domains?project={{router.params.project}}" >
2020-02-23 21:57:51 +13:00
2020-02-24 19:59:10 +13:00
<?php if ( ! $customDomainsEnabled ) : ?>
2020-02-23 21:57:51 +13:00
< h2 style = "display: none;" > Custom Domains< / h2 >
< div class = "box line margin-bottom" >
< h3 > Enable Custom Domains< / h3 >
< p > To enable <?php echo APP_NAME ; ?> 's custom domain feature, you have to start your server instance with a public accessable domain name.</ p >
2020-03-01 19:33:19 +13:00
< p > Start your <?php echo APP_NAME ; ?> server container with the < b > _APP_DOMAIN_TARGET</ b > enviornment variable set with a public accessable domain name that resolves to your <?php echo APP_NAME ; ?> server setup.</ p >
2020-02-23 21:57:51 +13:00
< p class = "margin-bottom-no" > The <?php echo APP_NAME ; ?> server will use your target domain to validate new custom domains and will automatically generate SSL certificates for your new domains using letsencrypt certbot.</ p >
2020-02-21 09:45:03 +13:00
< / div >
2020-02-23 21:57:51 +13:00
<?php endif ; ?>
2020-02-24 19:59:10 +13:00
<?php if ( $customDomainsEnabled ) : ?>
2020-02-23 21:57:51 +13:00
< h2 > Custom Domains< / h2 >
< div class = "zone xl"
2020-02-24 08:27:02 +13:00
data-service="projects.listDomains"
2020-02-23 21:57:51 +13:00
data-scope="console"
2020-02-24 19:59:10 +13:00
data-event="load,projects.createDomain,projects.updateDomainVerification,projects.deleteDomain"
2020-02-24 08:27:02 +13:00
data-name="console-domains"
data-param-project-id="{{router.params.project}}"
2020-02-23 21:57:51 +13:00
data-success="trigger"
2020-02-24 08:27:02 +13:00
data-success-param-trigger-events="projects.listDomains">
2020-02-23 21:57:51 +13:00
2020-02-24 08:27:02 +13:00
< div data-ls-if = "0 == {{console-domains.length}} || undefined == {{console-domains.length}}" class = "box margin-top margin-bottom" >
2020-02-25 02:47:35 +13:00
< h3 class = "margin-bottom-small text-bold" > No Custom Domains Found< / h3 >
2020-02-24 08:27:02 +13:00
< p class = "margin-bottom-no" > You haven't created any custom domains for your project yet.< / p >
< / div >
< div class = "box margin-bottom" data-ls-if = "0 != {{console-domains.length}}" >
2020-02-23 21:57:51 +13:00
< table class = "vertical" >
< thead >
< tr >
2020-02-29 19:24:55 +13:00
< th width = "120" > < / th >
< th width = "200" > Domain Name< / th >
2020-02-23 21:57:51 +13:00
< th width = "160" > TLS< / th >
< th > < / th >
2020-03-05 02:07:19 +13:00
< th width = "40" > < / th >
2020-02-23 21:57:51 +13:00
< / tr >
< / thead >
2020-02-24 08:27:02 +13:00
< tbody data-ls-loop = "console-domains" data-ls-as = "domain" >
2020-02-23 21:57:51 +13:00
< tr >
< td data-title = "Status" >
2020-02-29 19:24:55 +13:00
< span class = "text-size-small text-danger" data-ls-if = "true !== {{domain.verification}}" > < i class = "icon-cancel-circled" > < / i > Unverified < / span >
< span class = "text-size-small text-info" data-ls-if = "true === {{domain.verification}}" > < i class = "icon-ok-circled" > < / i > Verified < / span >
2020-02-23 21:57:51 +13:00
< / td >
< td data-title = "Domain: " >
2020-03-01 19:33:19 +13:00
< span class = "text-size-small" data-ls-bind = "{{domain.domain}}" > < / span >
2020-02-23 21:57:51 +13:00
< / td >
< td data-title = "TLS: " >
2020-02-29 19:24:55 +13:00
< span class = "text-size-small text-fade" data-ls-if = "!{{domain.certificateId}} && false === {{domain.verification}}" > Pending Verification < / span >
< span class = "text-size-small text-fade" data-ls-if = "!{{domain.certificateId}} && true === {{domain.verification}}" > In Progress < / span >
< span class = "text-size-small text-success" data-ls-if = "{{domain.certificateId}}" > < i class = "icon-ok-circled" > < / i > Enabled < / span >
2020-02-23 21:57:51 +13:00
< / td >
< td data-title = "" >
2020-02-24 19:59:10 +13:00
< button class = "link text-size-small" data-ls-if = "true === {{domain.verification}}" data-ls-ui-trigger = "dns-settings-{{domain.$id}}" > DNS Settings< / button >
< button class = "link text-size-small" data-ls-if = "true !== {{domain.verification}}" data-ls-ui-trigger = "dns-settings-{{domain.$id}}" > Verify Domain< / button >
2020-02-25 01:56:57 +13:00
< div data-ui-modal class = "modal box close" data-button-alias = "none" data-open-event = "dns-settings-{{domain.$id}}" xdata-close-event = "dns-settings-close-{{domain.$id}}" >
2020-02-24 19:59:10 +13:00
< button type = "button" class = "close pull-end" data-ui-modal-close = "" > < i class = "icon-cancel" > < / i > < / button >
< h3 class = "margin-bottom" data-ls-if = "true === {{domain.verification}}" data-ls-ui-trigger = "dns-settings-{{domain.$id}}" > DNS Settings< / h3 >
< h3 class = "margin-bottom" data-ls-if = "true !== {{domain.verification}}" data-ls-ui-trigger = "dns-settings-{{domain.$id}}" > Verify Domain< / h3 >
2020-02-25 01:56:57 +13:00
< hr / >
< p > Add the following DNS records to your DNS provider settings to setup and verify your new custom domain.< / p >
2020-02-27 10:54:12 +13:00
< ol class = "bullets" >
2020-02-25 01:56:57 +13:00
< li >
< p > Add a new CNAME record in your DNS providers settings to point your new subdomain to your <?php echo APP_NAME ; ?> server with the following value:</ p >
< div class = "ide margin-bottom-small" >
< pre class = "line-numbers" >< code class = "prism language-javascript" data-prism > <?php echo $this -> print ( $customDomainsTarget , 'escape' ); ?> </ code ></ pre >
< / div >
< p > For example:< / p >
< div class = "ide margin-bottom-small" >
< pre class = "line-numbers" >< code class = "prism language-javascript" data-prism > <?php echo strtolower ( APP_NAME ); ?> .myapp.com CNAME <?php echo $this -> print ( $customDomainsTarget , 'escape' ); ?> </ code ></ pre >
< / div >
< / li >
< li >
Confirm and verify your CNAME record values:
< form class = "strip"
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Update Domain Verification"
data-service="projects.updateDomainVerification"
data-scope="console"
data-event="submit"
data-loading="Verifying DNS records..."
data-success="alert,trigger"
data-success-param-alert-text="Verified domain successfully"
data-success-param-trigger-events="projects.updateDomainVerification"
data-failure="alert"
data-failure-param-alert-text="Failed to verify domain, check your DNS records"
data-failure-param-alert-classname="error">
< input type = "hidden" name = "projectId" data-ls-bind = "{{router.params.project}}" / >
< input type = "hidden" name = "domainId" data-ls-bind = "{{domain.$id}}" / >
2020-02-24 19:59:10 +13:00
< button class = "margin-top-small" > Confirm & Verify< / button >
2020-02-25 01:56:57 +13:00
< / form >
< / li >
< / ol >
< div class = "info margin-bottom" >
< h4 class = "margin-bottom-small" > SSL Certificate< / h4 >
< p > After verification completes, <?php echo APP_NAME ; ?> will automatically generate a secure SSL certificate for your domain. This process may take a few seconds. Certitficate renewals are automatically issued every 60 days.</ p >
< / div >
2020-02-24 19:59:10 +13:00
2020-02-25 01:56:57 +13:00
< button data-ui-modal-close = "" type = "button" class = "reverse" > Close Settings< / button >
2020-02-24 19:59:10 +13:00
< / div >
2020-02-23 21:57:51 +13:00
< / td >
< td data-title = "" >
< form class = "pull-end"
data-analytics-event="submit"
data-analytics-category="console"
2020-02-24 19:59:10 +13:00
data-analytics-label="Delete Project Domain"
data-service="projects.deleteDomain"
2020-02-23 21:57:51 +13:00
data-scope="console"
data-event="submit"
2020-02-24 19:59:10 +13:00
data-confirm="Are you sure you want to delete this domain?"
2020-02-23 21:57:51 +13:00
data-success="alert,trigger"
2020-02-24 19:59:10 +13:00
data-success-param-alert-text="Deleted domain successfully"
data-success-param-trigger-events="projects.deleteDomain"
2020-02-23 21:57:51 +13:00
data-failure="alert"
2020-02-24 19:59:10 +13:00
data-failure-param-alert-text="Failed to delete domain"
2020-02-23 21:57:51 +13:00
data-failure-param-alert-classname="error">
< input type = "hidden" name = "projectId" data-ls-bind = "{{router.params.project}}" / >
2020-02-24 19:59:10 +13:00
< input type = "hidden" name = "domainId" data-ls-bind = "{{domain.$id}}" / >
2020-02-23 21:57:51 +13:00
< button class = "danger round reverse small" > < i class = "icon-trash" > < / i > < / button >
< / form >
< / td >
< / tr >
< / tbody >
< / table >
< / div >
2020-02-21 09:45:03 +13:00
2020-02-23 21:57:51 +13:00
< div class = "clear" >
< div data-ui-modal class = "modal box close" data-button-text = "Add Domain" >
< button type = "button" class = "close pull-end" data-ui-modal-close = "" > < i class = "icon-cancel" > < / i > < / button >
< h1 > Add Domain< / h1 >
< form
data-analytics-event="submit"
data-analytics-category="console"
2020-02-24 19:59:10 +13:00
data-analytics-label="Create Project Domain"
data-service="projects.createDomain"
2020-02-23 21:57:51 +13:00
data-scope="console"
data-event="submit"
data-success="alert,trigger,reset"
2020-02-24 19:59:10 +13:00
data-success-param-alert-text="Created domain successfully"
data-success-param-trigger-events="projects.createDomain"
2020-02-23 21:57:51 +13:00
data-failure="alert"
2020-02-24 19:59:10 +13:00
data-failure-param-alert-text="Failed to create domain"
2020-02-23 21:57:51 +13:00
data-failure-param-alert-classname="error">
< input type = "hidden" name = "projectId" data-ls-bind = "{{router.params.project}}" / >
< label for = "name" > Domain Name< / label >
2020-02-24 19:59:10 +13:00
< input type = "text" class = "full-width" id = "domain" name = "domain" placeholder = "appwrite.example.com" required autocomplete = "off" title = "Enter a valid domain name" pattern = "^[a-zA-Z0-9][a-zA-Z0-9-]{1,61}[a-zA-Z0-9](?:\.[a-zA-Z]{2,})+$" / >
2020-02-28 06:44:03 +13:00
< hr / >
2020-02-21 09:45:03 +13:00
2020-02-23 21:57:51 +13:00
< button type = "submit" > Create< / button > < button data-ui-modal-close = "" type = "button" class = "reverse" > Cancel< / button >
< / form >
< / div >
2020-02-21 09:45:03 +13:00
< / div >
< / div >
2020-02-23 21:57:51 +13:00
<?php endif ; ?>
2020-02-21 09:45:03 +13:00
< / li >
2019-05-12 18:59:49 +12:00
< li data-state = "/console/settings/members?project={{router.params.project}}" >
2019-09-27 06:47:48 +12:00
< h2 > Members< / h2 >
2019-05-09 18:54:39 +12:00
2019-08-08 06:10:53 +12:00
< div class = "zone xl"
2020-01-31 06:12:29 +13:00
data-service="teams.getMemberships"
2019-08-08 06:10:53 +12:00
data-scope="console"
2020-01-31 09:58:49 +13:00
data-event="load,teams.createMembership,teams.deleteMembership"
2019-08-08 06:10:53 +12:00
data-name="members"
data-param-team-id="{{console-project.teamId}}"
data-success="trigger"
2020-01-31 09:58:49 +13:00
data-success-param-trigger-events="teams.getMemberships">
2019-05-09 18:54:39 +12:00
< div class = "box margin-bottom" >
< ul data-ls-loop = "members" data-ls-as = "member" class = "list" >
< li class = "clear" >
2019-08-08 06:10:53 +12:00
< form class = "pull-end"
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Delete Team Membership"
2020-01-31 06:12:29 +13:00
data-service="teams.deleteMembership"
2019-08-08 06:10:53 +12:00
data-scope="console"
data-event="submit"
data-success="alert,trigger"
2019-09-27 06:47:48 +12:00
data-success-param-alert-text="Member Removed Successfully"
2020-01-31 09:58:49 +13:00
data-success-param-trigger-events="teams.deleteMembership"
2019-08-08 17:09:49 +12:00
data-failure="alert"
2019-09-27 06:47:48 +12:00
data-failure-param-alert-text="Failed to Remove Member"
2019-08-09 01:43:24 +12:00
data-failure-param-alert-classname="error">
2019-05-09 18:54:39 +12:00
2019-08-07 08:31:09 +12:00
< input name = "teamId" id = "teamId" type = "hidden" data-ls-bind = "{{console-project.teamId}}" >
2020-02-17 20:16:11 +13:00
< input name = "inviteId" id = "inviteId" type = "hidden" data-ls-bind = "{{member.$id}}" >
2019-05-09 18:54:39 +12:00
2019-09-27 06:47:48 +12:00
< button class = "danger" > Leave< / button >
2019-05-09 18:54:39 +12:00
< / form >
2020-02-01 00:57:25 +13:00
2020-02-24 08:27:02 +13:00
< div data-ls-if = "false === {{member.confirm}}" class = "pull-end margin-end" >
2020-02-01 00:57:25 +13:00
< form class = "pull-end"
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Create Team Membership (resend)"
2020-02-01 00:57:25 +13:00
data-service="teams.deleteMembership"
data-scope="console"
data-event="submit"
data-success="trigger"
data-success-param-trigger-events="teams.deleteMembership.resend"
data-failure="alert"
data-failure-param-alert-text="Failed to Resend Invitation"
data-failure-param-alert-classname="error">
< input name = "teamId" id = "teamId" type = "hidden" data-ls-bind = "{{console-project.teamId}}" >
2020-02-17 20:16:11 +13:00
< input name = "inviteId" id = "inviteId" type = "hidden" data-ls-bind = "{{member.$id}}" >
2020-02-01 00:57:25 +13:00
< button class = "reverse" > Resend< / button >
< / form >
< form class = "pull-end"
data-service="teams.createMembership"
data-scope="console"
data-event="teams.deleteMembership.resend"
data-success="alert,trigger"
data-success-param-alert-text="Invitation Sent Successfully"
data-success-param-trigger-events="teams.createMembership.resent"
data-failure="alert"
data-failure-param-alert-text="Failed to Send inivitation"
data-failure-param-alert-classname="error">
< input name = "teamId" type = "hidden" data-ls-bind = "{{member.teamId}}" >
< input name = "url" type = "hidden" data-ls-bind = "{{env.PROTOCOL}}://{{env.DOMAIN}}/auth/join?project={{router.params.project}}" / >
< input name = "email" type = "hidden" data-ls-bind = "{{member.email}}" >
< input name = "name" type = "hidden" data-ls-bind = "{{member.name}}" >
< input name = "roles" type = "hidden" data-ls-bind = "{{member.roles}}" data-cast-to = "json" >
< / form >
< / div >
2019-05-09 18:54:39 +12:00
2019-08-24 17:00:09 +12:00
< img src = "" data-ls-attrs = "src={{member|gravatar}}" data-size = "200" alt = "User Avatar" class = "avatar pull-start margin-end" loading = "lazy" width = "60" height = "60" / >
2019-08-07 00:22:54 +12:00
2020-02-21 09:45:03 +13:00
< div class = "margin-bottom-tiny" >
2020-02-24 08:27:02 +13:00
< span data-ls-bind = "{{member.name}}" > < / span > < span class = "tag" data-ls-bind = "{{member.roles.0}}" > < / span > < span data-ls-if = "false === {{member.confirm}}" class = "tag red" > Pending Approval< / span >
2019-05-09 18:54:39 +12:00
< / div >
2020-02-21 09:45:03 +13:00
< span class = "text-size-small text-fade" data-ls-bind = "{{member.email}}" > < / small >
2019-05-09 18:54:39 +12:00
< / li >
< / ul >
< / div >
2020-02-28 06:44:03 +13:00
< div data-ui-modal class = "modal box close width-medium" data-button-text = "Invite Member" data-button-class = "" >
2019-05-13 08:27:33 +12:00
< button type = "button" class = "close pull-end" data-ui-modal-close > < i class = "icon-cancel" > < / i > < / button >
2019-05-09 18:54:39 +12:00
2019-09-27 06:47:48 +12:00
< h1 > Invite Member< / h1 >
2019-05-09 18:54:39 +12:00
2019-08-08 17:09:49 +12:00
< form name = "teams.createTeamMembership"
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Create Team Membership"
2020-01-31 06:12:29 +13:00
data-service="teams.createMembership"
2019-08-08 06:10:53 +12:00
data-scope="console"
data-event="submit"
2019-08-09 09:49:46 +12:00
data-loading="Sending invitation, please wait..."
2019-08-08 06:10:53 +12:00
data-success="alert,trigger,reset"
2019-09-27 06:47:48 +12:00
data-success-param-alert-text="Invitation Sent Successfully"
2020-02-24 19:59:10 +13:00
data-success-param-trigger-events="teams.createMembership"
2019-08-08 17:09:49 +12:00
data-failure="alert"
2019-09-27 06:47:48 +12:00
data-failure-param-alert-text="Failed to Send Invite"
2019-08-09 01:43:24 +12:00
data-failure-param-alert-classname="error">
2019-05-09 18:54:39 +12:00
2020-01-31 06:12:29 +13:00
< input name = "teamId" id = "team-teamId" type = "hidden" data-ls-bind = "{{console-project.teamId}}" >
2020-01-31 12:24:10 +13:00
< input name = "url" type = "hidden" data-ls-bind = "{{env.PROTOCOL}}://{{env.DOMAIN}}/auth/join?project={{router.params.project}}" / >
2019-09-27 06:47:48 +12:00
< label for = "email" > Email< / label >
2019-05-09 18:54:39 +12:00
< input name = "email" id = "email" type = "email" autocomplete = "email" required >
2020-01-31 12:24:10 +13:00
< label for = "team-name" > Name < small > (optional)< / small > < / label >
< input name = "name" id = "team-name" type = "text" autocomplete = "name" >
2019-05-09 18:54:39 +12:00
2020-01-31 12:50:00 +13:00
< label for = "roles" style = "display: none" > Role< / label >
< select id = "roles" name = "roles" required data-ls-loop = "env.ROLES" data-ls-as = "role" data-cast-to = "array" style = "display: none" >
2019-08-08 17:09:49 +12:00
< option data-ls-attrs = "value={{role.type}}" data-ls-bind = "{{role.label}}" > < / option >
2020-01-31 12:50:00 +13:00
< / select >
2019-05-09 18:54:39 +12:00
2020-02-28 06:44:03 +13:00
< hr / >
2019-05-09 18:54:39 +12:00
< div class = "clear" >
2019-09-27 06:47:48 +12:00
< button > Send Invite< / button >
< button data-ui-modal-close = "" type = "button" class = "reverse" > Cancel< / button >
2019-05-09 18:54:39 +12:00
< / div >
< / form >
< / div >
< / div >
< / li >
< / ul >
< / div >
< / div >