From 719f1ad4e993c5c196673810e302acc2eb619d0e Mon Sep 17 00:00:00 2001 From: Riccardo Graziosi <31478034+riggraz@users.noreply.github.com> Date: Sat, 2 Mar 2024 18:36:22 +0100 Subject: [PATCH] Improve tenant signup page (#302) --- app/assets/images/blocked-tenant.png | Bin 0 -> 3186 bytes app/assets/images/favicon.png | Bin 0 -> 2546 bytes app/assets/images/logo.png | Bin 0 -> 4679 bytes app/assets/images/pending-tenant.png | Bin 0 -> 2545 bytes app/assets/stylesheets/components/Post.scss | 3 ++ .../stylesheets/components/TenantSignUp.scss | 40 +++++++++++++++++- app/controllers/tenants_controller.rb | 2 +- .../TenantSignUp/ConfirmSignUpPage.tsx | 11 +++-- .../TenantSignUp/TenantSignUpForm.tsx | 9 ++-- .../components/TenantSignUp/TenantSignUpP.tsx | 10 +++++ .../TenantSignUp/UserSignUpForm.tsx | 22 +++++----- .../components/TenantSignUp/index.tsx | 6 +++ app/views/layouts/application.html.erb | 2 + .../static_pages/blocked_tenant.html.erb | 4 +- .../static_pages/pending_tenant.html.erb | 16 +++++-- app/views/tenants/new.html.erb | 2 + config/locales/en.yml | 17 -------- 17 files changed, 101 insertions(+), 43 deletions(-) create mode 100644 app/assets/images/blocked-tenant.png create mode 100644 app/assets/images/favicon.png create mode 100644 app/assets/images/logo.png create mode 100644 app/assets/images/pending-tenant.png diff --git a/app/assets/images/blocked-tenant.png b/app/assets/images/blocked-tenant.png new file mode 100644 index 0000000000000000000000000000000000000000..7740e71e5e93564251ce6572de9b8d6389bd6d7a GIT binary patch literal 3186 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 literal 0 HcmV?d00001 diff --git a/app/assets/images/favicon.png b/app/assets/images/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..98a0fdbe5ee3206568ac64b50e62b3904c162b60 GIT binary patch literal 2546 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 IM6N<$f)w1OBLDyZ literal 0 HcmV?d00001 diff --git a/app/assets/images/logo.png b/app/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..34f4994c777202fef648109137fee939ceb1a70d GIT binary patch literal 4679 zcmdUz_ahXJ8juDk zo&Wg%D7K%?u>a{Q1(+I{0ca_|=ueNpLDI`f8z>_tzKNEou0KCK>neE`mF|jj$P+QXKZ__(-2JsC2=kzs;BhFrvLyOD?(cn74mg?#m)b#44Cfw!U1q`8N5e< z_vI#lwT>?@n-pf;YMqDkZqZkM`D7&8^t|P(4dWGdg*m!^-c0#U!ns1{)4$ewWlCir z5;xLSBAWhk@0HF)mP?0XrZB5ykLAv}yhslS?WZdB9lqrz_xy`}{?}GBg$q7DH9b!* z37{P+a{l8!8_SdJ$H3VVF`QE0O5waXiN@Jcmml`}djpCpUs39cxpRudo{!$htrUs- zbCStpj2#?RHIM*T8{2XM6(aOgA$UVj4~`TZOBQ%jR%( zoSy%_LuWQ0b9AWTx0D;8nwdp

^id>8zd1X>}aJ%;;jBqNwps6;^yU)*YIRdCQGu zzL3uu7jr6AIJP#eHCe!JsT&LmB9Y3da z-|2xu6E*Aw%3^*}nY|k_t7q z%)hJ96g(#(#M{{Y;tOJKG`0l<~R9MQ(CD@LRJ}TUU&Cd<}BCq;g`32nC@g7;X*^Dv$TlA|ma_3KJB;epof!AY3 zNa^_7eJ@#;muz7c#K|xh=mG)2BM_}{!gm9MhMZo{YzZmJ(<1a|ZvqA3ZB@?}7 zK&ce;R8y$=@YDT`l)=-J-Q#JP;t9O%$CE^{LK*$*rfauF-j=D;u{bEj9siBnfM!W=W=ic2wU$@j zt3f{{@S>3p%oz`Kn>OYQ^wds}O%-p2IA40EG(XME)^CicR6G^{=@QxklmkWQo?&?- z9aEU9^~xM*xY;9|M%{Pas=jw1{Qkyf!_H*Vd?w#or3qkQa* z@bIm>4?m<|MVTY&lXg52uF7~WCNdPYt4Y#PrP+7ar{HzNbx2#${ws*d)z>X;t_*>h z7^IG;C3KoRFo#Ql{_wuxgIXLz`MY+M{4eFgwsVMs`^;2p1=;sbpCRpn-kv0Dd+{L)~QL#mzWJv42A&!CJy@l`UrLB-i zWND}HMMd|}wV6E880w2_oo74RmVyI?R=&L@xAyCUyhtwlTE(=}ewG8F1KuLKY~KV{ zaU>HO$@O+RUrQEK4~|dQe~eC6B_#rTR%*8Hf&R(aK^F%OYogWZWV{M}FE`neY%7iV zSGDLEr;Hrs4LhU$(BHkK=>Owa79u@F9bDjl`GbvqQs^54fk~{=h;0u9YYxi2?Hire z^)fBj=l&ht;cwaI4LZqRJ8D_=QDZ{Qaw2ZuhcaF|u`>VWY)pMc(fq?Qxi%{{F&w=B zR}@WY4lH*jYxoUHFim=77pp$6W*5HdO)t!(l4I}eI{G3__IJLOb#P`8y#0}50D^Q> zls7Yo#y&DA#-zNM>6e8zM3B1Yv>fV?= z=M5^hdyUnX)aZqcq(yx6gQC3~*=fbN|m2=oUV+&K2@|(4h0deb=tEjj?M)^+}%~w9B z$O#CxE=#;)-1DZ=uEMhwnv*E608`?2$~+HZ!zzh2D~jPoPB8_+&G8+fz|vO73uS|Zj)ZP|66}=i+zhzc7ol+`bKs| zl=Y@)pv%`{1*UlW(}CzlfI=ekh7Z#k2!Y@`zf_;!4!GwQ7%HMvdmcVc(=0vRka2X| z>9{L<1XAv~jg)&Y|CVzxaE|uEp(;wxw1B7=kRsV6ydz|xf4;lVFCX_|whV6t9evXl zZ+qXXpSSbC9=GZG?a9}MJqX_8v+uP=-fq1WtcHV!?zG0Q=x57G=Mtc&@{eSL4S}kV zke$Uwj0SPXd5rw*4qiBq_1-ZDNbH{M+{bCb}av~q5F z@Pn8bSS6Ia+*Cv;ZYt^U<7%~t4Y*ZI9UDcmB;7h^|x<3oIim&Twefq@^(D7zy$ z`Tl$hL!wFeF2xw34rq_Uy;?b_-l4)R*cb9Ji|u2Ny|ui{zecWpWWw!wGO{Ed!`GQh z3#-qA_QnOR4c4xG2aJdinEM6b+6h#X{^=hQ&QpCy%Bp|Y(`B8K4 z;=~p7fR6lX&QOsJ2tn&K(RzH)o^xsyAza1xPlG?U^VJZ0q{g1Lx3tS8<=!BmfnGPZ zf;1w41QPtmRhKV*e*GlF?qdnycj4p(&=S7{p2$$vx2Y4FfdZlhkpypn@` z!8>0WnqFbQIyoi}8q62{e`1?pzcTqOLr!sL_vb3tC)-%k%Eq;1 zC1zSP|4F@cnSt=27$J^1N$v90`sLE<0zE%%@?z|E6k6Xlr_ou`7sXaLD0XF;5USaA z*fI5`crNp864>r$1jL<%W!=Y2^yBO&ewCH2s3Cq`d4ULyG*)Ue@_7X?OiI0>U9@7_ zd#{FbB`q{=cMU--Z1b4d6N!WEVE?$7#cb73qk$2W`W!*onk$dj?G*bQ&O$r0R%+Av z+M^~I!cz|jpBy0Y$`8DMr`DNh!d7sCVsb$N&Y$vfPh5A((s~`igj;%28RBN|>MhU0 zoG#DUDu=zPnIKni@%B!(V<5{b8tqOu#xnJJ9fr*37YmWeYXxIg6(5q_a9lYXLjf1F z;5O>orEEr`E-2&i(Ut|#u}I4Fb8toI#;I?!9>O^=Tum}bW&Gyfr3*h2 z&%SiF_nXZ-)`>*ZdW`MfV^Ff>r8W93_e}+I^c+d#4oWoo zDp(W>#!dNj%ON>%BVh@SU>CcyT zAis5QKGQp3=nzdCwkfysak?ex)z0;;pVh827<;3@>6Y|?*FVT3^_z(bu7X6)Gfk(~ zhLKBTz(o(xnTeO-QqFCjOx4I|HoLQHVC+>C+|y_cjv07rLQkx>SNX`k+627n`6QDf zs-pEvm~(E;R%@Em_LRXUj)hYRW}3~{0@z&V4xR}Zuo2t8#~tVtR^KbNx_^JLf`iu9 zF`I9hqT@(_+Xx1F-}B#;$oM#!UAY5K-{pznBRPs48ZGh$V20#>(%t6*Znb(% z7OJsg_?EZnCpUwp-XN`nO1Ny@>A?{=p{_M53ooCB+ZtrwqDeNM&wg=6I4OK?n3<3E zt%Sn`Zy#XD=xciy>l?evLn#5YNjRg{u8M2#L%OI!u6qRfSM@ZO0Rh&6dS1!fMIFA+{m|05g~@T9WyfnmCaxgzwZdnWma#a8#a+q}uQ% zG)9Q4+MO)`gTITV{fHsY*HOKnKHDa|IePPh+^T zcoDAm?7Gz__zIqPLRr&*F?~aZ5^4kfCdoC<+iEgsOc+3*nTpyqS3>Htv6WWhPo4Oa z{O%N<33tOwJz~Os{$wusAkjXM87yCt(%jog=Yn??O|BEfc@f0VO1>&f2JEwyR|@1v n92+hvoOkFabY-1Q3D?7)Y7C5KSh>_(As zig8|tjYX!|P}pfArRXGhx_YqOv)t^FkB-OZ2BRx-uI`Yw|yj)d9(OIqtsy)N2PbZ@&pr!4q~J*khNT_(EW7%3a6#+-mBh%-Ff2$Z`)g3s}qpb9u8al zj1wv6jZWp!a_)#!mp2hB>QXtr+6gMWgLqY!Z_6ewj3X92|7AB^zQ6h?{MOePNChOG z4{WQy9ay?{f4^xpQ3#pko~ZYLh9;3*+U&7XP)py*zbvexKo98(FqCXwLj#=Jtqk{5 z{lqq0OQwV)+F@QyCkB81mm^N zC}dlqKj75y9*mS#gbxB!*a4!96m&2;qzsu#1Uc8L1?Zjg&wsbggRS4pRpn9xQB%G# zEQVts?;COc1H?d+?;EKuUOg7l8YnUy4a;bs_ly=Q;yhjW@qfv!MBO0`E8@Hq_=q)? z_X{}>GW-EikKd|(Qc&6;RAddrpt;|82V!;cW3i9~AIy~-Xm>xC_xf5LUNsi_6>rle z&+q21t1TJqj)h|JV+IherLYKV<$AaUoWyiD0|ilGmc2t@sVc)|!sq}H$77Z8rca$a z_YN)ugrPUe6uduo_eX=UFo^Wwp!N1l19owlvq7W09f!ZaR{4FP19iUsntn4wiJ_f@ zj+_ms(iS`^S$wRzu~cIt@CnD+3M2T7Npv|oImNnsx&TCD^QQW{WzWi*Q!nWklaju= z3M!cUNzz{zt%>mC>-V#T3gt1!U424fOs0L7m(_Q&g>|eGg7C^RCKxx=EZTGpUG5VK znhJ_!d=JqMr5%%KhDeKxIVt$IiRh4fwmdMo1kxDSl{j_pa7{}Pu=*9~S4^G@*-r-A z>?rW*O#7si_v)haB|IMj{N}oSZ$%((BF@-G358b>OM*ycr=}+?>mb_T0NA!Ysa9ys z3wL-*#G}QlK?2!ZpT{~8Ez}<{S`ldRjM)=i&%W?BR_`hWwzS=6j&dI@6w6Pf{y~iD zL(>yYR=MN)WY2lcuJkX<;BTAvCh~tOHtoG@cZG{*ML>(eRERSzm)c*e}*-sGK}?b^j;N8>+Pj zT;*DO!%M#XGidQfXH&SVM#_U97)SW3Z=F=PIoD>?vDwEreUZt=h7uw>)XxaJ`>tM} zZWn2Pg03GY-o%EY;4UmI{k(Rtz3tCsk#eCXQp^OO>njS@)NGBXKmGlY z8GkQt0fHlg?UuBQhK8U;%cRv2&P}k!#PMWosK+XVq_MhGWC}0tOX`1CA!~+aUXmLR zluHkzxVec{vLz_DiSm=*yNdyi63_#1Ov0A_W6NGB!e~+>cK5FQ45u+bMt2aApJ!H< zNK6otEIF87q4W8o(k$Zn{?inv((-639%k+6JNqNJ{E}`QHw)n;y}fxn2p7?9Q7J@- zpU9Zy*D~54-R0fh3b#22|F->zwd|gqDX>{rd=xUcl8|r(ENWx>!%J4ua<>n=LHwX9 zqf@<3rQy;7?U+Y=8}OmL+V*L!1L=E|ShHi!?8&&}b8@2+zk)cfQte;qs)S5y4L&O0 zyJi0%B5g;@%Ed(e6E-j8aPzficP?oMdS`$K#3NG5-SpJco9%8*jOAn2o!t#X!5BK! z94E=bRU3fGn#tfJZFMgrYDQ83d^SD!#x}tB7Sx-8hPo4JMu33Kt^Z|tGryXnfQ|&Ux)T^mP%7CFsZoU?7lnu8|EW<#Vh zzfOvL3?oQ2GQKGc_RiZjVAa6W4J&C65WBtGOX*YZB>z5jL4eAIP>hcm753W+fI1`c zlh?4@C0W^MW@k#RnE-n3zi!C117$o}_QsBMre02%0{r1NmVoR7rttreIEmdACvU9x pUrYzYu?SzE6hfaUHrw#4T1H%ZL&-ADyfpH)qB?ny>l_%D{s9AUH^2Y@ literal 0 HcmV?d00001 diff --git a/app/assets/stylesheets/components/Post.scss b/app/assets/stylesheets/components/Post.scss index a3b7bad2..1e50f910 100644 --- a/app/assets/stylesheets/components/Post.scss +++ b/app/assets/stylesheets/components/Post.scss @@ -152,6 +152,9 @@ .postEditFormButtons { @extend .d-flex, .justify-content-end; } + + #selectPickerBoard { margin-right: 4px !important; } + #selectPickerStatus { margin-left: 4px !important; } } } } \ No newline at end of file diff --git a/app/assets/stylesheets/components/TenantSignUp.scss b/app/assets/stylesheets/components/TenantSignUp.scss index 540ee519..335173f5 100644 --- a/app/assets/stylesheets/components/TenantSignUp.scss +++ b/app/assets/stylesheets/components/TenantSignUp.scss @@ -1,3 +1,41 @@ +.astutoLogo { + display: block; + margin: 12px auto; +} + .tenantSignUpContainer { @extend .smallContainer; -} \ No newline at end of file + + h1, h2, h3 { + text-align: center; + margin-bottom: 16px; + } + + .userConfirm, .tenantConfirm { + display: block; + margin: 0 auto; + margin-top: 16px; + } + + .userPasswordDiv, .userPasswordConfirmationDiv { + @extend .col-6; + padding-left: 0; + padding-right: 0; + } + + .userPasswordDiv { padding-right: 4px; } + .userPasswordConfirmationDiv { padding-left: 4px; } + + .userRecap { + text-align: center; + margin-bottom: 0; + + .editUser { + display: block; + width: fit-content; + margin-top: 4px; + margin-left: auto; + margin-right: auto; + } + } +} diff --git a/app/controllers/tenants_controller.rb b/app/controllers/tenants_controller.rb index 914a11f5..f9cc2519 100644 --- a/app/controllers/tenants_controller.rb +++ b/app/controllers/tenants_controller.rb @@ -4,7 +4,7 @@ class TenantsController < ApplicationController before_action :authenticate_admin, only: [:show, :update] def new - @page_title = t('signup.page_title') + @page_title = "Create your feedback space" @o_auths = OAuth.unscoped.where(tenant_id: nil) end diff --git a/app/javascript/components/TenantSignUp/ConfirmSignUpPage.tsx b/app/javascript/components/TenantSignUp/ConfirmSignUpPage.tsx index f0b281f5..5253a419 100644 --- a/app/javascript/components/TenantSignUp/ConfirmSignUpPage.tsx +++ b/app/javascript/components/TenantSignUp/ConfirmSignUpPage.tsx @@ -1,20 +1,25 @@ import * as React from 'react'; -import I18n from 'i18n-js'; import Box from '../common/Box'; interface Props { subdomain: string; userEmail: string; + pendingTenantImage: string; } const ConfirmSignUpPage = ({ subdomain, userEmail, + pendingTenantImage, }: Props) => ( -

{ I18n.t('signup.step3.title') }

+

You're almost done!

-

{ I18n.t('signup.step3.message', { email: userEmail, subdomain: `${subdomain}.astuto.io` }) }

+ + +

+ Check your email {userEmail} to activate your new feedback space {subdomain}.astuto.io! +

); diff --git a/app/javascript/components/TenantSignUp/TenantSignUpForm.tsx b/app/javascript/components/TenantSignUp/TenantSignUpForm.tsx index 3bd55019..19d18c26 100644 --- a/app/javascript/components/TenantSignUp/TenantSignUpForm.tsx +++ b/app/javascript/components/TenantSignUp/TenantSignUpForm.tsx @@ -1,6 +1,5 @@ import * as React from 'react'; import { SubmitHandler, useForm } from 'react-hook-form'; -import I18n from 'i18n-js'; import Box from '../common/Box'; import Button from '../common/Button'; @@ -28,7 +27,7 @@ const TenantSignUpForm = ({ return ( -

{ I18n.t('signup.step2.title') }

+

Create feedback space

@@ -68,10 +67,10 @@ const TenantSignUpForm = ({ {errors.subdomain?.type === 'required' && getValidationMessage('required', 'tenant', 'subdomain')} - {errors.subdomain?.type === 'pattern' && I18n.t('signup.step2.validations.subdomain_only_letters_and_numbers')} + {errors.subdomain?.type === 'pattern' && 'Subdomain can only contain alphanumeric characters and hyphens'} - {errors.subdomain?.type === 'notAlreadyTaken' && I18n.t('signup.step2.validations.subdomain_already_taken')} + {errors.subdomain?.type === 'notAlreadyTaken' && 'Sorry, this subdomain is not available'}
@@ -79,7 +78,7 @@ const TenantSignUpForm = ({ onClick={() => null} className="tenantConfirm" > - { isSubmitting ? : I18n.t('signup.step2.create_button') } + { isSubmitting ? : 'Create feedback space' } { error !== '' && { error } } diff --git a/app/javascript/components/TenantSignUp/TenantSignUpP.tsx b/app/javascript/components/TenantSignUp/TenantSignUpP.tsx index 1389ae6a..7f9b8a44 100644 --- a/app/javascript/components/TenantSignUp/TenantSignUpP.tsx +++ b/app/javascript/components/TenantSignUp/TenantSignUpP.tsx @@ -26,6 +26,9 @@ interface Props { authenticityToken: string, ): Promise; + astutoLogoImage: string; + pendingTenantImage: string; + baseUrl: string; authenticityToken: string; } @@ -50,6 +53,8 @@ const TenantSignUpP = ({ isSubmitting, error, handleSubmit, + astutoLogoImage, + pendingTenantImage, baseUrl, authenticityToken }: Props) => { @@ -93,6 +98,9 @@ const TenantSignUpP = ({ } return ( + <> + +
{ (currentStep === 1 || currentStep === 2) && @@ -124,9 +132,11 @@ const TenantSignUpP = ({ }
+ ); } diff --git a/app/javascript/components/TenantSignUp/UserSignUpForm.tsx b/app/javascript/components/TenantSignUp/UserSignUpForm.tsx index 4aff9514..0b801d97 100644 --- a/app/javascript/components/TenantSignUp/UserSignUpForm.tsx +++ b/app/javascript/components/TenantSignUp/UserSignUpForm.tsx @@ -11,7 +11,7 @@ import { getLabel, getValidationMessage } from '../../helpers/formUtils'; import { EMAIL_REGEX } from '../../constants/regex'; import { IOAuth } from '../../interfaces/IOAuth'; import ActionLink from '../common/ActionLink'; -import { BackIcon } from '../common/Icons'; +import { BackIcon, EditIcon } from '../common/Icons'; interface Props { currentStep: number; @@ -47,7 +47,7 @@ const UserSignUpForm = ({ } = useForm(); const onSubmit: SubmitHandler = data => { if (data.password !== data.passwordConfirmation) { - setError('passwordConfirmation', I18n.t('signup.step1.validations.password_mismatch')); + setError('passwordConfirmation', I18n.t('common.validations.password_mismatch')); return; } @@ -57,13 +57,13 @@ const UserSignUpForm = ({ return ( -

{ I18n.t('signup.step1.title') }

+

Create user account

{ currentStep === 1 && !emailAuth && <> { @@ -118,7 +118,7 @@ const UserSignUpForm = ({
-
+
{ errors.password && I18n.t('common.validations.password', { n: 6 }) }
-
+
{userData.fullName} ({userData.email})

- } - - { - currentStep === 2 && oAuthLoginCompleted && -

{oauthUserName} ({oauthUserEmail})

+

+ {oAuthLoginCompleted ? oauthUserName : userData.fullName} ({oAuthLoginCompleted ? oauthUserEmail : userData.email}) + setCurrentStep(currentStep-1)} icon={} customClass="editUser">Edit +

} ); diff --git a/app/javascript/components/TenantSignUp/index.tsx b/app/javascript/components/TenantSignUp/index.tsx index a65a6f94..621bb93d 100644 --- a/app/javascript/components/TenantSignUp/index.tsx +++ b/app/javascript/components/TenantSignUp/index.tsx @@ -13,6 +13,8 @@ interface Props { oauthUserEmail?: string; oauthUserName?: string; baseUrl: string; + astutoLogoImage: string; + pendingTenantImage: string; authenticityToken: string; } @@ -31,6 +33,8 @@ class TenantSignUpRoot extends React.Component { oAuthLoginCompleted, oauthUserEmail, oauthUserName, + astutoLogoImage, + pendingTenantImage, baseUrl, authenticityToken, } = this.props; @@ -42,6 +46,8 @@ class TenantSignUpRoot extends React.Component { oauthUserEmail={oauthUserEmail} oauthUserName={oauthUserName} oAuths={oAuths.map(oAuth => oAuthJSON2JS(oAuth))} + astutoLogoImage={astutoLogoImage} + pendingTenantImage={pendingTenantImage} baseUrl={baseUrl} authenticityToken={authenticityToken} /> diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index ff75eb33..a5466ac8 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -13,6 +13,8 @@ <%= javascript_include_tag "application", "data-turbo-track": "reload" %> <%= stylesheet_link_tag "application", "data-turbo-track": "reload" %> + + <%= favicon_link_tag asset_path('favicon.png') %> diff --git a/app/views/static_pages/blocked_tenant.html.erb b/app/views/static_pages/blocked_tenant.html.erb index 1caa1e91..f0d89ea9 100644 --- a/app/views/static_pages/blocked_tenant.html.erb +++ b/app/views/static_pages/blocked_tenant.html.erb @@ -1,5 +1,7 @@
-
+

<%= t('blocked_tenant.title') %>

+ + <%= image_tag("blocked-tenant.png", size: 64, style: "margin: 0 auto") %>
\ No newline at end of file diff --git a/app/views/static_pages/pending_tenant.html.erb b/app/views/static_pages/pending_tenant.html.erb index 26ab7106..7bb86e3d 100644 --- a/app/views/static_pages/pending_tenant.html.erb +++ b/app/views/static_pages/pending_tenant.html.erb @@ -1,6 +1,16 @@
-
-

<%= t('pending_tenant.title') %>

-

<%= t('pending_tenant.message') %>

+
+

Verify your email address

+ + <%= image_tag("pending-tenant.png", size: 64, style: "margin: 0 auto") %> + +

Please check your email inbox (and your spam folder!) and click on the activation link.

+ +

+ Need help? + > + Contact us. + +

\ No newline at end of file diff --git a/app/views/tenants/new.html.erb b/app/views/tenants/new.html.erb index 837e0617..1ca01d30 100644 --- a/app/views/tenants/new.html.erb +++ b/app/views/tenants/new.html.erb @@ -7,6 +7,8 @@ oauthUserEmail: @user_email, oauthUserName: @user_name, baseUrl: Rails.application.base_url, + astutoLogoImage: image_url("logo.png"), + pendingTenantImage: image_url("pending-tenant.png"), authenticityToken: form_authenticity_token } ) diff --git a/config/locales/en.yml b/config/locales/en.yml index 07c5f24e..b9e4c110 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -68,20 +68,6 @@ en: days: one: '1 day ago' other: '%{count} days ago' - signup: - page_title: 'Create your feedback space' - step1: - title: '1. Create user account' - email_auth: 'Sign up with email' - step2: - title: '2. Create feedback space' - create_button: 'Create feedback space' - validations: - subdomain_already_taken: 'Sorry, this subdomain is not available' - subdomain_only_letters_and_numbers: 'Subdomain can only contain alphanumeric characters and hyphen' - step3: - title: "You're almost done!" - message: "Check your email %{email} to activate your new feedback space %{subdomain}!" header: menu: site_settings: 'Site settings' @@ -90,9 +76,6 @@ en: log_in: 'Log in / Sign up' roadmap: title: 'Roadmap' - pending_tenant: - title: 'Verify your email address' - message: 'We''ve sent an email with an activation link to the email you provided during registration. Click on that link to activate this feedback space!' blocked_tenant: title: 'This feedback space has been blocked' board: