master
lion 1 month ago
parent 7d146149fe
commit 8beba0fe59

@ -1,4 +1,4 @@
import{$t as e,C as t,D as n,E as r,Et as i,G as a,O as o,W as s,Y as c,Z as ee,_t as l,b as u,ct as te,d,g as f,in as p,k as ne,m as re,q as m,st as h,w as g,x as _}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{N as ie,_ as ae,a as oe,c as se,l as ce,p as le,v as ue}from"./api-Dpfxb1ca.js";import{l as de,t as fe,u as pe}from"./index-CpTiFmNV.js";import{i as v}from"./site-j0hHE9UV.js";import{n as me,t as he}from"./participantTheme-BMONOrEx.js";import{i as y,r as b,s as ge,t as _e,u as ve}from"./competitionBranding-BjQScvy4.js";/* empty css */var ye={class:`login-page-wls__wrap`},be={class:`login-page-wls__inner`},xe={class:`login-page-wls__brand`,"aria-label":`系统说明`},Se={class:`login-page-wls__logo`,"aria-hidden":`true`},Ce=[`src`],we={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},Te={key:0,class:`login-page-wls__mark`},Ee=[`innerHTML`],De={key:1,class:`login-page-wls__title`},Oe=[`innerHTML`],ke={class:`login-page-wls__panel`},Ae={class:`login-page-wls__card`},je={key:0,class:`login-page-wls__card-title`},Me={class:`login-page-wls__code-row`},x=[`value`],Ne=[`disabled`],Pe=[`disabled`],Fe={class:`login-page-wls__quick-entry`,"aria-label":`快捷入口`},Ie={class:`login-page-wls__quick-row`},Le={key:0,class:`login-page-wls__debug-code`,role:`status`},Re={key:1,class:`login-page-wls__contact`,"aria-label":`咨询电话`},ze={key:0,class:`login-page-wls__contact-label`},Be={key:0,class:`login-page-wls__contact-sep`},Ve=[`href`],He={key:2},Ue={key:0,class:`login-page-wls__footer`},We={class:`login-page-wls__copyright`},Ge=`/frontend/pages/admin-checkin-mobile.html`,Ke=`/frontend/layout.html?role=reviewer`,qe=`/frontend/layout.html?role=admin`,Je=`/frontend/layout.html?role=user&lang=en`,Ye=`/frontend/layout.html?role=audience&lang=en`,S=ne({__name:`LoginView`,setup(ne){let S=de(),C=pe(),w=l(``),T=l(``),E=l(!1),D=l(!1),O=l(!1),k=l(`获取验证码`),A=l(``),j=l(!1),M=l(``),N=l(`neutral`),P=u(()=>String(S.params.slug??``).trim()),F=u(()=>S.meta.audienceLogin===!0),I=l(``),L=l(b()),R=l(!1),Xe=u(()=>N.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:N.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`),Ze=u(()=>{let e=L.value.login.markLine;return y(e)?z(e):``}),Qe=u(()=>{let e=L.value.login.headline;return y(e)?z(e):``});function z(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}let B=u(()=>I.value?I.value:y(L.value.login.slogan)?L.value.login.slogan:``),$e=u(()=>!!I.value),et=u(()=>y(L.value.login.cardWelcome)?L.value.login.cardWelcome:``),V=u(()=>et.value.replace(/登陆/g,`登录`)),H=u(()=>y(L.value.login.footerCopyright)?L.value.login.footerCopyright:``),U=u(()=>y(L.value.login.logoUrl)?L.value.login.logoUrl:``),W=u(()=>R.value?ge(L.value):[]),tt=u(()=>{let e=P.value;return e?`/c/${encodeURIComponent(e)}/login`:`/frontend/layout.html?role=user`}),nt=u(()=>{let e=P.value;return e?`/c/${encodeURIComponent(e)}/audience/login`:`/frontend/layout.html?role=audience`}),G=0;function K(){G&&=(window.clearInterval(G),0)}function rt(){K();let e=ue();O.value=!0,k.value=`重新获取(${e}s)`,G=window.setInterval(()=>{if(--e,e<=0){K(),k.value=`获取验证码`,O.value=!1;return}k.value=`重新获取(${e}s)`},1e3)}function q(){return ae()}function J(e,t=`neutral`){M.value=e,N.value=t}function Y(){M.value=``,N.value=`neutral`}function X(e){return e.replace(/\D/g,``).slice(0,6)}function it(e){let t=e.target,n=X(t?.value??``);T.value=n,t&&t.value!==n&&(t.value=n),D.value=!1}function Z(e){if(typeof e!=`object`||!e)return`请求失败`;let t=e,n=t.message;if(typeof n==`string`&&n.trim())return n.trim();let r=t.errors;if(typeof r==`object`&&r&&!Array.isArray(r)){let e=Object.values(r).flatMap(e=>Array.isArray(e)?e.map(e=>String(e)):[]);if(e.length)return e.join(`
import{$t as e,C as t,D as n,E as r,Et as i,G as a,O as o,W as s,Y as c,Z as ee,_t as l,b as u,ct as te,d,g as f,in as p,k as ne,m as re,q as m,st as h,w as g,x as _}from"./vue.runtime.esm-bundler-OsdSFvn7.js";import{N as ie,_ as ae,a as oe,c as se,l as ce,p as le,v as ue}from"./api-Dpfxb1ca.js";import{l as de,t as fe,u as pe}from"./index-CpTiFmNV.js";import{i as v}from"./site-j0hHE9UV.js";import{n as me,t as he}from"./participantTheme-BMONOrEx.js";import{i as y,r as b,s as ge,t as _e,u as ve}from"./competitionBranding-BjQScvy4.js";/* empty css */var ye={class:`login-page-wls__wrap`},be={class:`login-page-wls__inner`},xe={class:`login-page-wls__brand`,"aria-label":`系统说明`},Se={class:`login-page-wls__logo`,"aria-hidden":`true`},Ce=[`src`],we={key:1,viewBox:`0 0 100 100`,width:`72`,height:`72`,xmlns:`http://www.w3.org/2000/svg`,"aria-hidden":`true`},Te={key:0,class:`login-page-wls__mark`},Ee=[`innerHTML`],De={key:1,class:`login-page-wls__title`},Oe=[`innerHTML`],ke={class:`login-page-wls__panel`},Ae={class:`login-page-wls__card`},je={key:0,class:`login-page-wls__card-title`},Me={class:`login-page-wls__code-row`},x=[`value`],Ne=[`disabled`],Pe=[`disabled`],Fe={class:`login-page-wls__quick-entry`,"aria-label":`快捷入口`},Ie={class:`login-page-wls__quick-row`},Le={key:0,class:`login-page-wls__debug-code`,role:`status`},Re={key:1,class:`login-page-wls__contact`,"aria-label":`咨询电话`},ze={key:0,class:`login-page-wls__contact-label`},Be={key:0,class:`login-page-wls__contact-sep`},Ve=[`href`],He={key:2},Ue={key:0,class:`login-page-wls__footer`},We={class:`login-page-wls__copyright`},Ge=`/frontend/pages/admin-checkin-mobile.html`,Ke=`/frontend/layout.html?role=reviewer`,qe=`/frontend/layout.html?role=admin`,Je=`/frontend/prototype/login-en.html?role=user`,Ye=`/frontend/prototype/login-en.html?role=audience`,S=ne({__name:`LoginView`,setup(ne){let S=de(),C=pe(),w=l(``),T=l(``),E=l(!1),D=l(!1),O=l(!1),k=l(`获取验证码`),A=l(``),j=l(!1),M=l(``),N=l(`neutral`),P=u(()=>String(S.params.slug??``).trim()),F=u(()=>S.meta.audienceLogin===!0),I=l(``),L=l(b()),R=l(!1),Xe=u(()=>N.value===`error`?`login-page-wls__hint login-page-wls__hint--error`:N.value===`success`?`login-page-wls__hint login-page-wls__hint--success`:`login-page-wls__hint`),Ze=u(()=>{let e=L.value.login.markLine;return y(e)?z(e):``}),Qe=u(()=>{let e=L.value.login.headline;return y(e)?z(e):``});function z(e){return e.replace(/&/g,`&amp;`).replace(/</g,`&lt;`).replace(/>/g,`&gt;`).replace(/"/g,`&quot;`)}let B=u(()=>I.value?I.value:y(L.value.login.slogan)?L.value.login.slogan:``),$e=u(()=>!!I.value),et=u(()=>y(L.value.login.cardWelcome)?L.value.login.cardWelcome:``),V=u(()=>et.value.replace(/登陆/g,`登录`)),H=u(()=>y(L.value.login.footerCopyright)?L.value.login.footerCopyright:``),U=u(()=>y(L.value.login.logoUrl)?L.value.login.logoUrl:``),W=u(()=>R.value?ge(L.value):[]),tt=u(()=>{let e=P.value;return e?`/c/${encodeURIComponent(e)}/login`:`/frontend/layout.html?role=user`}),nt=u(()=>{let e=P.value;return e?`/c/${encodeURIComponent(e)}/audience/login`:`/frontend/layout.html?role=audience`}),G=0;function K(){G&&=(window.clearInterval(G),0)}function rt(){K();let e=ue();O.value=!0,k.value=`重新获取(${e}s)`,G=window.setInterval(()=>{if(--e,e<=0){K(),k.value=`获取验证码`,O.value=!1;return}k.value=`重新获取(${e}s)`},1e3)}function q(){return ae()}function J(e,t=`neutral`){M.value=e,N.value=t}function Y(){M.value=``,N.value=`neutral`}function X(e){return e.replace(/\D/g,``).slice(0,6)}function it(e){let t=e.target,n=X(t?.value??``);T.value=n,t&&t.value!==n&&(t.value=n),D.value=!1}function Z(e){if(typeof e!=`object`||!e)return`请求失败`;let t=e,n=t.message;if(typeof n==`string`&&n.trim())return n.trim();let r=t.errors;if(typeof r==`object`&&r&&!Array.isArray(r)){let e=Object.values(r).flatMap(e=>Array.isArray(e)?e.map(e=>String(e)):[]);if(e.length)return e.join(`
`)}return`请求失败`}let Q=null,$=!1;async function at(){I.value=``,R.value=!1,L.value=b();let e=P.value;if(v(),!e){I.value=`缺少赛事访问地址,请从正确入口进入`,R.value=!0;return}try{let t=await fetch(`${q()}/api/v1/public/competitions/by-slug/${encodeURIComponent(e)}`,{headers:{Accept:`application/json`}});if(!t.ok){I.value=t.status===404?`赛事不存在或未发布,请核对访问地址`:`无法加载赛事信息`;return}let n=await t.json();L.value=_e(n.branding_json??n.branding??null),v(L.value.documentTitle),he(L.value.login.themePrimary);let r=L.value.login.faviconUrl;if(y(r)&&typeof document<`u`){let e=document.querySelector(`link[rel~="icon"]`);e||(e=document.createElement(`link`),e.rel=`icon`,document.head.appendChild(e)),Q===null&&(Q=e.getAttribute(`href`)||``),e.href=r}}catch{I.value=`网络错误,无法校验赛事链接`}finally{R.value=!0}}async function ot(){if(O.value)return;let e=w.value.trim();if(!/^1[3-9]\d{9}$/.test(e)){E.value=!0,D.value=!1,J(`请先填写正确手机号`,`error`);return}E.value=!1,D.value=!1,Y(),O.value=!0,k.value=`发送中...`;let t=`${q()}${ce}`;try{let n=await fetch(t,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-Requested-With":`XMLHttpRequest`},body:JSON.stringify({mobile:e})}),r=await n.json().catch(()=>({}));if(!n.ok){J(Z(r),`error`),k.value=`获取验证码`,O.value=!1,K(),A.value=``;return}let i=r,a=typeof i.debug_code==`string`?i.debug_code.trim():``;A.value=/^\d{4,8}$/.test(a)?a:``,Y(),rt()}catch{J(`网络错误,请确认后端已启动(Vite 将 /api 代理至 php artisan serve 端口,见 vite.config)`,`error`),k.value=`获取验证码`,O.value=!1,K(),A.value=``}}async function st(){let e=/^1[3-9]\d{9}$/.test(w.value.trim()),t=X(T.value);T.value=t;let n=t.length===6;if(E.value=!e,D.value=e&&!n,!e){J(`请先填写正确手机号`,`error`);return}if(!n){J(`请输入 6 位验证码`,`error`);return}if(Y(),j.value=!0,J(`登录中...`,`neutral`),!P.value){J(`缺少赛事访问地址,请从正确入口进入`,`error`),j.value=!1;return}let r=`${q()}${F.value?oe:se}`;try{let e=fe(),n=await fetch(r,{method:`POST`,headers:{"Content-Type":`application/json`,Accept:`application/json`,"X-Requested-With":`XMLHttpRequest`},body:JSON.stringify({mobile:w.value.trim(),code:t,competition_slug:P.value,...e?{public_source_code:e}:{}})}),i=await n.json().catch(()=>({}));if(!n.ok){J(Z(i),`error`);return}Y(),F.value?(ie(i.token,P.value),localStorage.setItem(`cxxfds_audience_user`,JSON.stringify(i.user))):(localStorage.setItem(le,i.token),localStorage.setItem(`cxxfds_user`,JSON.stringify(i.user)));let a=typeof S.query.redirect==`string`?S.query.redirect:``;if(a&&a.startsWith(`/`)){await C.replace(a);return}let o=P.value;o?await C.replace(F.value?{name:`audience-form`,params:{slug:o}}:{name:`participant-apply`,params:{slug:o}}):await C.replace(`/c`)}catch{J(`网络错误,请确认后端已启动`,`error`)}finally{j.value=!1}}return s(()=>{typeof document<`u`&&(document.documentElement.classList.add(`cxxfds-login-page`),$=!0),document.body.classList.add(`login-page-wls`),at()}),a(()=>{if(typeof document<`u`&&$&&(document.documentElement.classList.remove(`cxxfds-login-page`),$=!1),document.body.classList.remove(`login-page-wls`),K(),typeof document<`u`&&(me(),Q!==null)){let e=document.querySelector(`link[rel~="icon"]`);e&&(Q===``?e.removeAttribute(`href`):e.href=Q),Q=null}}),(a,s)=>{let l=ee(`router-link`);return m(),g(`div`,ye,[_(`div`,be,[_(`aside`,xe,[_(`div`,Se,[U.value?(m(),g(`img`,{key:0,src:U.value,alt:``,class:`login-page-wls__logo-img`,width:`72`,height:`72`},null,8,Ce)):(m(),g(`svg`,we,[...s[2]||=[r(`<defs><linearGradient id="loginPetalGrad" x1="0%" y1="0%" x2="100%" y2="100%"><stop offset="0%" stop-color="#55c6e9"></stop><stop offset="45%" stop-color="#109bd3"></stop><stop offset="100%" stop-color="#087db4"></stop></linearGradient><path id="loginPetal" d="M50 50
C46.2 44.2 44.2 34.5 46.2 27.2
C47.3 23.6 48.6 21.2 50 20.2

@ -4123,6 +4123,64 @@ body.login-page-wls *::after {
color: #aaa;
}
/* English login typography: narrower display face on the long brand copy,
neutral system sans-serif everywhere else. */
body.login-page-wls--en {
font-family: "Avenir Next", Avenir, "Segoe UI", Helvetica, Arial, sans-serif;
}
.login-page-wls--en .login-page-wls__brand {
max-width: 520px;
}
.login-page-wls--en .login-page-wls__mark-cn {
font-family: "Avenir Next", "Helvetica Neue", "Segoe UI", Arial, sans-serif;
font-size: clamp(0.72rem, 0.9vw, 0.84rem);
font-weight: 500;
letter-spacing: 0.075em;
line-height: 1.45;
}
.login-page-wls--en .login-page-wls__title {
font-family: "Avenir Next", "Helvetica Neue", "Segoe UI", Arial, sans-serif;
font-weight: 500;
letter-spacing: -0.018em;
}
.login-page-wls--en .login-page-wls__title-main {
max-width: 520px;
font-size: clamp(1.42rem, 1.85vw, 1.72rem);
font-weight: 400;
line-height: 1.28;
text-wrap: balance;
}
.login-page-wls--en .login-page-wls__card-title {
font-family: "Trebuchet MS", "Helvetica Neue", Arial, sans-serif;
font-size: 1.18rem;
font-weight: 400;
letter-spacing: 0.01em;
}
.login-page-wls--en .login-page-wls__submit {
font-family: "Trebuchet MS", "Helvetica Neue", Arial, sans-serif;
font-weight: 400;
letter-spacing: 0.01em;
}
.login-page-wls--en .login-page-wls__input,
.login-page-wls--en .login-page-wls__code-btn,
.login-page-wls--en .login-page-wls__submit,
.login-page-wls--en .login-page-wls__quick-entry,
.login-page-wls--en .login-page-wls__copyright {
font-family: inherit;
}
.login-page-wls--en .login-page-wls__quick-link {
font-size: 0.75rem;
letter-spacing: -0.01em;
}
.notice-modal-dialog {
max-width: 760px;
}
@ -4272,6 +4330,14 @@ body.login-page-wls *::after {
width: 100%;
max-width: 360px;
}
.login-page-wls--en .login-page-wls__brand {
max-width: 32rem;
}
.login-page-wls--en .login-page-wls__title-main {
font-size: clamp(1.42rem, 4.6vw, 1.8rem);
}
}
@media (max-width: 992px) {

@ -4324,8 +4324,8 @@
<div class="hero-org-row"><dt>Media:&nbsp;</dt><dd>Xinhua Daily; Junction News; Suzhou Daily; ICCSZ; Fiber Online</dd></div>
</dl>
<div class="hero-actions" aria-label="Registration">
<a class="hero-primary" href="layout.html?role=user&amp;lang=en">COMPETE</a>
<a class="hero-primary hero-primary--audience" href="layout.html?role=audience&amp;lang=en">ATTEND</a>
<a class="hero-primary" href="prototype/login-en.html?role=user">COMPETE</a>
<a class="hero-primary hero-primary--audience" href="prototype/login-en.html?role=audience">ATTEND</a>
</div>
</div>
</div>

@ -82,9 +82,9 @@
<a class="login-page-wls__quick-link" href="./layout.html?role=admin">管理端</a>
</div>
<div class="login-page-wls__quick-row login-page-wls__quick-row--english" lang="en" aria-label="English registration portals">
<a class="login-page-wls__quick-link" href="./layout.html?role=user&amp;lang=en">Competition Registration</a>
<a class="login-page-wls__quick-link" href="./prototype/login-en.html?role=user">Competition Registration</a>
<span class="login-page-wls__quick-sep">|</span>
<a class="login-page-wls__quick-link" href="./layout.html?role=audience&amp;lang=en">Audience Registration</a>
<a class="login-page-wls__quick-link" href="./prototype/login-en.html?role=audience">Audience Registration</a>
</div>
</div>
</form>

@ -0,0 +1,96 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Shanghai–Suzhou Collaborative Emerging Industries Sci-Tech Innovation Competition Registration System</title>
<link rel="stylesheet" href="/frontend/assets/prototype.css" />
</head>
<body class="login-page-wls login-page-wls--en">
<div class="login-page-wls__wrap">
<div class="login-page-wls__inner">
<aside class="login-page-wls__brand" aria-label="Competition registration system">
<div class="login-page-wls__logo" aria-hidden="true">
<svg viewBox="0 0 100 100" width="72" height="72" xmlns="http://www.w3.org/2000/svg" aria-hidden="true">
<defs>
<linearGradient id="loginPetalGrad" x1="0%" y1="0%" x2="100%" y2="100%">
<stop offset="0%" stop-color="#55c6e9" />
<stop offset="45%" stop-color="#109bd3" />
<stop offset="100%" stop-color="#087db4" />
</linearGradient>
<path id="loginPetal" d="M50 50 C46.2 44.2 44.2 34.5 46.2 27.2 C47.3 23.6 48.6 21.2 50 20.2 C51.4 21.2 52.7 23.6 53.8 27.2 C55.8 34.5 53.8 44.2 50 50Z" />
</defs>
<g fill="url(#loginPetalGrad)" stroke="#087db4" stroke-width="0.35" stroke-linejoin="round">
<use href="#loginPetal" />
<use href="#loginPetal" transform="rotate(90 50 50)" />
<use href="#loginPetal" transform="rotate(180 50 50)" />
<use href="#loginPetal" transform="rotate(270 50 50)" />
</g>
<circle cx="50" cy="50" r="3.6" fill="#5c6068" stroke="#fdfcfc" stroke-width="0.65" />
</svg>
</div>
<div class="login-page-wls__mark">
<div class="login-page-wls__mark-cn">CONNECTING EVERYTHING&nbsp;&nbsp;·&nbsp;&nbsp;INNOVATING THE FUTURE WITH CHIPS</div>
</div>
<h1 class="login-page-wls__title">
<span class="login-page-wls__title-main">Shanghai–Suzhou Collaborative Emerging Industries Sci-Tech Innovation Competition Registration System</span>
</h1>
</aside>
<section class="login-page-wls__panel">
<div class="login-page-wls__card">
<h2 class="login-page-wls__card-title">Welcome</h2>
<form id="loginForm" class="login-page-wls__form" novalidate>
<input type="tel" class="login-page-wls__input" name="mobile" autocomplete="tel" inputmode="tel" placeholder="Mobile Number" />
<div class="login-page-wls__code-row">
<input type="text" class="login-page-wls__input login-page-wls__input-code" name="captcha" autocomplete="one-time-code" placeholder="Verification Code" />
<button type="button" class="login-page-wls__code-btn">Get Code</button>
</div>
<button type="submit" class="login-page-wls__submit">Log In</button>
<div class="login-page-wls__quick-entry" aria-label="Registration portals">
<div class="login-page-wls__quick-row login-page-wls__quick-row--english">
<a class="login-page-wls__quick-link" href="/frontend/prototype/login-en.html?role=user">Competition Registration</a>
<span class="login-page-wls__quick-sep">|</span>
<a class="login-page-wls__quick-link" href="/frontend/prototype/login-en.html?role=audience">Audience Registration</a>
</div>
</div>
</form>
</div>
</section>
</div>
<footer class="login-page-wls__footer">
<p class="login-page-wls__copyright">© Shanghai Liaison Office of Suzhou Municipal People's Government&nbsp;&nbsp;Suzhou Hengtai</p>
</footer>
</div>
<script>
const form = document.getElementById("loginForm");
const codeBtn = document.querySelector(".login-page-wls__code-btn");
const requestedRole = new URLSearchParams(window.location.search).get("role");
const role = requestedRole === "audience" ? "audience" : "user";
function englishLayoutHref(nextRole) {
return "/frontend/layout.html?role=" + encodeURIComponent(nextRole) + "&lang=en";
}
codeBtn.addEventListener("click", function () {
codeBtn.textContent = "Code Sent";
codeBtn.disabled = true;
setTimeout(() => {
codeBtn.textContent = "Get Code";
codeBtn.disabled = false;
}, 1500);
});
form.addEventListener("submit", function (e) {
e.preventDefault();
const mobile = form.elements.mobile.value.trim();
if (mobile) {
localStorage.setItem("verifiedMobile", mobile);
}
window.location.href = englishLayoutHref(role);
});
</script>
</body>
</html>

@ -24,8 +24,8 @@
$audienceLoginUrl = '/admin/c/'.rawurlencode($slug).'/audience/login';
$homeUrl = '/';
$homeEnUrl = '/en';
$participantLoginEnUrl = '/frontend/layout.html?role=user&amp;lang=en';
$audienceLoginEnUrl = '/frontend/layout.html?role=audience&amp;lang=en';
$participantLoginEnUrl = '/frontend/prototype/login-en.html?role=user';
$audienceLoginEnUrl = '/frontend/prototype/login-en.html?role=audience';
$eventSiteRelative = $eventSiteRelative ?? 'frontend/event-site.html';
$eventSitePath = public_path($eventSiteRelative);
@ -46,6 +46,14 @@
"href='event-site.html'",
'href="login.html"',
"href='login.html'",
'href="prototype/login-en.html?role=user"',
"href='prototype/login-en.html?role=user'",
'href="prototype/login-en.html?role=audience"',
"href='prototype/login-en.html?role=audience'",
'href="login-en.html?role=user"',
"href='login-en.html?role=user'",
'href="login-en.html?role=audience"',
"href='login-en.html?role=audience'",
'href="layout.html?role=user&amp;lang=en"',
"href='layout.html?role=user&amp;lang=en'",
'href="layout.html?role=audience&amp;lang=en"',
@ -76,6 +84,14 @@
"href='".$participantLoginEnUrl."'",
'href="'.$audienceLoginEnUrl.'"',
"href='".$audienceLoginEnUrl."'",
'href="'.$participantLoginEnUrl.'"',
"href='".$participantLoginEnUrl."'",
'href="'.$audienceLoginEnUrl.'"',
"href='".$audienceLoginEnUrl."'",
'href="'.$participantLoginEnUrl.'"',
"href='".$participantLoginEnUrl."'",
'href="'.$audienceLoginEnUrl.'"',
"href='".$audienceLoginEnUrl."'",
'href="'.$audienceLoginUrl.'"',
"href='".$audienceLoginUrl."'",
],

@ -38,8 +38,8 @@ class ExampleTest extends TestCase
->assertSee('Inaugural Shanghai–Suzhou Collaborative Emerging Industries Science &amp; Technology Innovation Competition', false)
->assertSee('COMPETE', false)
->assertSee('ATTEND', false)
->assertSee('/frontend/layout.html?role=user&amp;lang=en', false)
->assertSee('/frontend/layout.html?role=audience&amp;lang=en', false)
->assertSee('/frontend/prototype/login-en.html?role=user', false)
->assertSee('/frontend/prototype/login-en.html?role=audience', false)
->assertSee('href="/" lang="zh-CN"', false)
->assertSee('>中文</a>', false)
->assertSee('hero-banner hero-banner--photonic', false);

Loading…
Cancel
Save