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);
2021-02-23 04:50:14 +13:00
$smtpEnabled = $this->getParam('smtpEnabled', 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" >
2020-06-10 02:43:24 +12:00
< a data-ls-attrs = "href=/console/home?project={{router.params.project}}" class = "back text-size-small link-return-animation--start" > < i class = "icon-left-open" > < / i > Home< / a >
2020-02-28 06:44:03 +13:00
< 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
2020-06-10 23:42:35 +12:00
< div class = "row responsive margin-top-negative" >
2020-05-23 06:58:19 +12:00
< div class = "col span-8 margin-bottom" >
2020-06-10 23:42:35 +12:00
< label > < / label >
2020-05-23 09:23:38 +12:00
< div class = "box margin-bottom-large" >
2020-05-23 06:58:19 +12:00
< form
2021-01-18 19:29:26 +13:00
data-analytics
data-analytics-activity
2020-05-23 06:58:19 +12:00
data-analytics-event="submit"
data-analytics-category="console"
data-analytics-label="Update Project"
data-service="projects.update"
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"
data-success-param-trigger-events="projects.update"
data-failure="alert"
data-failure-param-alert-text="Failed to update project"
data-failure-param-alert-classname="error">
< input name = "$id" type = "hidden" data-ls-bind = "{{console-project.$id}}" / >
2020-02-28 20:35:42 +13:00
2019-05-09 18:54:39 +12:00
< label for = "name" > Name< / label >
2020-09-08 09:28:40 +12:00
< input name = "name" id = "name" type = "text" autocomplete = "off" data-ls-bind = "{{console-project.name}}" data-forms-text-direction required maxlength = "128" / >
2019-05-09 18:54:39 +12:00
2020-05-23 06:58:19 +12:00
< label for = "logo" > Project Logo< / label >
2019-09-16 05:38:04 +12:00
2020-05-23 06:58:19 +12:00
< div class = "text-align-center clear" >
2020-06-13 23:13:53 +12: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-preview-alt = "Project Logo" data-scope = "console" data-default = "" >
2019-09-16 05:38:04 +12:00
< / div >
2020-02-25 01:56:57 +13:00
2020-05-23 06:58:19 +12:00
< hr / >
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
2019-05-09 18:54:39 +12:00
2020-05-23 06:58:19 +12:00
< button class = "" type = "submit" > Save< / button >
< / form >
< / div >
2019-05-09 18:54:39 +12:00
2020-05-23 09:23:38 +12:00
< h3 class = "text-danger" > Danger Zone< / h3 >
< div class = "box danger" >
< p > This is the area where you can delete your project.< / p >
< p > By deleting your project you will lose all your project metadata, resources and stats.< / p >
< p > PLEASE NOTE: Project deletion is irreversible.< / p >
< form class = "inline"
2021-01-18 19:29:26 +13:00
data-analytics
data-analytics-activity
2020-05-23 09:23:38 +12:00
data-analytics-event="submit"
data-analytics-category="console"
2020-05-24 02:32:00 +12:00
data-analytics-label="Delete Project"
2020-05-26 17:09:06 +12:00
data-service="projects.delete"
2020-05-23 09:23:38 +12:00
data-scope="console"
data-event="submit"
2020-05-26 17:09:06 +12:00
data-confirmx="Are you sure you want to delete this project?"
data-success="trigger,redirect"
data-success-param-trigger-events="project.delete,reset,modal-close"
data-success-param-redirect-url="/console"
data-failure="alert,trigger,reset"
2020-05-24 02:32:00 +12:00
data-failure-param-alert-text="Project deletion failed"
2020-05-26 17:09:06 +12:00
data-failure-param-trigger-events="modal-close"
2020-05-23 09:23:38 +12:00
data-failure-param-alert-classname="error">
2020-05-24 02:32:00 +12:00
2020-05-26 17:09:06 +12:00
< input type = "hidden" name = "projectId" data-ls-bind = "{{router.params.project}}" / >
2020-05-24 02:32:00 +12:00
< div data-ui-modal class = "modal box close width-small height-small" data-button-text = "Delete Project" data-button-class = "danger reverse" >
< button type = "button" class = "close pull-end" data-ui-modal-close = "" > < i class = "icon-cancel" > < / i > < / button >
< h3 > Confirm Password< / h3 >
< hr / >
< label > Password< / label >
< input name = "password" type = "password" class = "full-width" autocomplete = "off" placeholder = "" required >
< hr / >
< button type = "submit" class = "margin-bottom-no danger fill" > Delete Project< / button >
< / div >
2020-05-23 09:23:38 +12:00
< / form >
< / div >
2020-05-23 06:58:19 +12:00
< / div >
2019-08-11 07:05:36 +12:00
2020-05-23 06:58:19 +12:00
< div class = "col span-4 sticky-top" >
< label for = "name" > Project ID< / label >
< div class = "input-copy" >
< input data-forms-copy type = "text" disabled data-ls-bind = "{{console-project.$id}}" / >
2019-05-09 18:54:39 +12:00
< / div >
2020-05-23 06:58:19 +12:00
< label for = "name" > API Endpoint< / label >
< div class = "input-copy" >
2021-02-19 00:57:30 +13:00
< input data-forms-copy type = "text" disabled data-ls-bind = "{{env.ENDPOINT}}/v1" / >
2020-05-23 06:58:19 +12:00
< / div >
2020-02-28 20:35:42 +13:00
2020-05-23 06:58:19 +12:00
< ul class = "margin-bottom-large text-fade text-size-small" >
2020-05-27 08:14:52 +12:00
< li class = "margin-bottom-small" > < i class = "icon-angle-circled-right margin-start-tiny margin-end-tiny" > < / i > < a data-ls-attrs = "href=/console/settings/domains?project={{router.params.project}}" class = " text-size-small" > Add a custom endpoint< / a > < / li >
2020-05-23 06:58:19 +12:00
< / ul >
2019-05-09 18:54:39 +12:00
< / div >
2020-05-23 06:58:19 +12:00
< / div >
2019-05-09 18:54:39 +12:00
< / 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-10-31 08:53:27 +13:00
< div data-ls-if = "0 == {{console-domains.sum}} || undefined == {{console-domains.sum}}" class = "box margin-top margin-bottom" >
2020-05-22 06:14:25 +12:00
< h3 class = "margin-bottom-small text-bold" > No Custom Domains Added< / 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 >
2020-10-31 08:53:27 +13:00
< div class = "box margin-bottom" data-ls-if = "0 != {{console-domains.sum}}" >
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-10-31 08:53:27 +13:00
< tbody data-ls-loop = "console-domains.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"
2021-01-18 19:29:26 +13:00
data-analytics
data-analytics-activity
2020-02-25 01:56:57 +13:00
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"
2021-01-18 19:29:26 +13:00
data-analytics
data-analytics-activity
2020-02-23 21:57:51 +13:00
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
2021-01-18 19:29:26 +13:00
data-analytics
data-analytics-activity
2020-02-23 21:57:51 +13:00
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-07-08 10:12:45 +12: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-_]*\.)*[a-zA-Z0-9]*[a-zA-Z0-9-_]*[[a-zA-Z0-9]+$" / >
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" >
2020-06-07 21:29:51 +12:00
< ul data-ls-loop = "members.memberships" data-ls-as = "member" class = "list" >
2019-05-09 18:54:39 +12:00
< li class = "clear" >
2019-08-08 06:10:53 +12:00
< form class = "pull-end"
2021-01-18 19:29:26 +13:00
data-analytics
data-analytics-activity
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
2021-01-19 06:34:17 +13:00
data-analytics-label="Delete Project 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
2020-04-02 10:41:29 +13:00
< input name = "teamId" data-ls-attrs = "id=leave-teamId-{{member.$id}}" type = "hidden" data-ls-bind = "{{console-project.teamId}}" >
2021-05-08 03:49:23 +12:00
< input name = "membershipId" data-ls-attrs = "id=leave-membershipId-{{member.$id}}" 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"
2021-01-18 19:29:26 +13:00
data-analytics
data-analytics-activity
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
2021-01-19 06:34:17 +13:00
data-analytics-label="Create Project 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">
2020-04-02 10:41:29 +13:00
< input name = "teamId" data-ls-attrs = "id=resend-teamId-{{member.$id}}" type = "hidden" data-ls-bind = "{{console-project.teamId}}" >
2021-05-08 03:49:23 +12:00
< input name = "membershipId" data-ls-attrs = "id=resend-membershipId-{{member.$id}}" 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"
2020-06-07 18:22:51 +12:00
data-success-param-alert-text="Invitation sent successfully"
2020-02-01 00:57:25 +13:00
data-success-param-trigger-events="teams.createMembership.resent"
data-failure="alert"
2020-06-07 18:22:51 +12:00
data-failure-param-alert-text="Failed to send inivitation"
2020-02-01 00:57:25 +13:00
data-failure-param-alert-classname="error">
< input name = "teamId" type = "hidden" data-ls-bind = "{{member.teamId}}" >
2021-02-19 00:57:30 +13:00
< input name = "url" type = "hidden" data-ls-bind = "{{env.ENDPOINT}}/auth/join?project={{router.params.project}}" / >
2020-02-01 00:57:25 +13:00
< 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
2020-06-11 20:58:53 +12:00
< img src = "" data-ls-attrs = "src={{member|avatar}}" 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"
2021-01-18 19:29:26 +13:00
data-analytics
data-analytics-activity
2020-02-04 19:28:41 +13:00
data-analytics-event="submit"
data-analytics-category="console"
2021-01-19 06:34:17 +13:00
data-analytics-label="Create Project 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"
2020-06-07 18:22:51 +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"
2020-06-07 18:22:51 +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}}" >
2021-02-19 00:57:30 +13:00
< input name = "url" type = "hidden" data-ls-bind = "{{env.ENDPOINT}}/auth/join?project={{router.params.project}}" / >
2020-01-31 12:24:10 +13:00
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 >
2020-09-08 09:28:40 +12:00
< input name = "name" id = "team-name" type = "text" autocomplete = "name" maxlength = "128" / >
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
2021-02-23 04:50:14 +13:00
<?php if ( ! $smtpEnabled ) : ?>
< div class = "box note padding-tiny warning margin-bottom text-align-center" >
< i class = "icon-warning" > < / i > SMTP connection is disabled. < a href = "https://appwrite.io/docs/email-delivery" target = "_blank" rel = "noopener" > Learn more < i class = "icon-link-ext" > < / i > < / a >
< / div >
<?php endif ; ?>
2020-02-28 06:44:03 +13:00
< hr / >
2019-05-09 18:54:39 +12:00
< div class = "clear" >
2021-02-23 04:50:14 +13:00
< button <?php if ( ! $smtpEnabled ) : ?> disabled <?php endif ; ?> > Send Invite</ button >
2019-09-27 06:47:48 +12:00
< 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 >
2020-06-10 02:43:24 +12:00
< / div >