Compare commits

...

12 Commits

Author SHA1 Message Date
zhl
c0f1077c2a 配合停服, 移除客户端下载链接 2023-01-13 14:15:37 +08:00
zhl
f4db300c8e change link of android apk download 2022-12-22 13:01:18 +08:00
zhl
89dc3442fb Merge branch 'develop' 2022-12-22 11:25:54 +08:00
cebgcontract
f34f2069dd show goolge play link 2022-12-21 18:16:47 +08:00
huangjinming
c30d9213ea 修改单词 2022-11-08 21:44:17 +08:00
huangjinming
0a2fb39840 增加表单错误提示 2022-11-08 15:33:55 +08:00
cebgcontract
b8ea84a19f 移除一个team 2022-11-04 12:00:22 +08:00
cebgcontract
d2febd0ee6 移除一些team成员 2022-11-04 11:48:45 +08:00
cebgcontract
9189e22d1f 如果本人是大使, 则在右上角色菜单显示大使链接 2022-10-27 16:10:08 +08:00
cebgcontract
a25a4da6ab 修改文字和图片 2022-10-27 15:43:59 +08:00
cebgcontract
809a307eff 调整一些图片和文字 2022-10-27 15:22:59 +08:00
cebgcontract
642d6e9e51 增加commander页面 2022-10-27 09:58:21 +08:00
29 changed files with 1076 additions and 633 deletions

View File

@ -7,7 +7,9 @@
"desktop": "webpack --config ./webpack.desktop.js",
"mobile": "webpack --config ./webpack.mobile.js",
"deploy:prod": "rm -f ./dist/.DS_Store && aws s3 sync ./dist s3://cebg.games.new --acl public-read --exclude \"pubgv4/*\" --exclude \"release/*\"",
"deploy:test": "rm -f ./dist/.DS_Store && aws s3 sync ./dist s3://test-client.cebg.games",
"refresh:prod": "aws cloudfront create-invalidation --distribution-id E34PEY4AGTMS0Y --paths \"/*\"",
"refresh:test": "aws cloudfront create-invalidation --distribution-id EE4HC9OXEQC7Y --paths \"/*\"",
"dev:desktop": "webpack --config ./webpack.desktop.dev.js --watch",
"dev:mobile": "webpack --config ./webpack.mobile.dev.js --watch"
},

View File

@ -37,11 +37,32 @@
<a href="javascript:void(0);" class="login fr" id="header_loginbtn">
<img src="img/home/login@2x.png" />
</a>
<a
href="javascript:void(0);"
class="login fr logout"
id="header_logoutbtn"
<div
class="fr logout dropdown" id ="header_logoutbtn"
>
Logout
</a>
<div href="javascript:void(0)" class="dropdown-toggle user-icon">
<img src="img/home/user-icon.png" alt="user icon">
</div>
<ul class="dropdown-menu user-menu">
<li id="user_adderss" class="user_address hide">
<span id="menu_user_address"></span>
<svg data-v-05d4c3ad="" version="1.1" viewBox="0 0 24 24" class="icCopy" id="address_copy">
<path pid="0" d="M20 9h-9a2 2 0 00-2 2v9a2 2 0 002 2h9a2 2 0 002-2v-9a2 2 0 00-2-2z" _stroke="#BCADF2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
<path pid="1" d="M5 15H4a2 2 0 01-2-2V4a2 2 0 012-2h9a2 2 0 012 2v1" _stroke="#BCADF2" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
</li>
<li>
<a href="https://mall.cebg.games/mynft">MyNFT</a>
</li>
<li id="menu_cmdr" class="hide">
<a href="./commander.html" id="cmdr_href">Commander</a>
</li>
<li id="menu_amba" class="hide">
<a href="./ambassadorinfo.html" id="amba_href">Ambassador</a>
</li>
<li>
<a href="javascript:void(0);" id="header_menu_logoutbtn">Logout</a>
</li>
</ul>
</div>
</div>

View File

@ -47,7 +47,7 @@
</div>
</div>
<div class="amb-i-11">
<span>Apply to be his/her commander</span>
<span><a href="./join.html?amb=" id="apply_href">Apply to be his/her commander</a></span>
<a id="copyBtn"></a>
</div>
</div>
@ -86,7 +86,7 @@
input.select();
if (document.execCommand('copy')) {
document.execCommand('copy');
alert('复制成功')
alert('copy success')
}
document.body.removeChild(input);
})
@ -97,7 +97,7 @@
function showInfo(data) {
$('#info_name').html(data.name || "-");
$('#info_loc').html(data.comefrom || "-");
$('#info_commander').html(data.commander || "-");
$('#info_commander').html(data.cache_a_num || "-");
$('#info_email').html(data.email || "-");
$('#info_account').html(formatAddress(data.account));
if (data.aboutme) {
@ -139,6 +139,7 @@
}
}
fetchDatas();
$('#apply_href').attr('href', `./join.html?amb=${account}`)
})
</script>
</body>

View File

@ -1,87 +1,97 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>CEBG: CRYPTO ELITES BATTLEGROUNDS</title>
</head>
<body>
<section class="main">
<section class="header">
<img src="img/applyother/amt.jpg" width="100%" />
<script>cur = 'activity'; sub='act1'</script>
<%- include('../comp/desktopNav.html') %>
</section>
<section class="main-con amb-con">
<div class="amb-scroll" id="ambScroll">
<div class="amb-item hide" id="sample">
<a href="ambassadorinfo.html" class="info_href">
<img class="portrait" src="img/applyother/am2.jpg" width="251" height="246"/>
</a>
<p>
<span class="name">Kawabonga</span>
<span class="loc">Japan</span>
<span class="commander">1023</span>
</p>
</div>
<div class="amb-inner" id="amb_container">
</div>
</div>
</section>
<%- include('../comp/footer.html') %>
</section>
<%- include('../comp/walletModal.html') %> <%- include('../comp/jslib.html')
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="renderer" content="webkit" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
/>
<title>CEBG: CRYPTO ELITES BATTLEGROUNDS</title>
</head>
<body>
<section class="main">
<section class="header">
<img src="img/applyother/amt.jpg" width="100%" />
<script>
cur = "activity";
sub = "act1";
</script>
<%- include('../comp/desktopNav.html') %>
</section>
<section class="main-con amb-con">
<div class="amb-scroll" id="ambScroll">
<div class="amb-item hide" id="sample">
<a href="ambassadorinfo.html" class="info_href">
<img
class="portrait"
src="img/applyother/am2.jpg"
width="251"
height="246"
/>
</a>
<p>
<span class="name">Kawabonga</span>
<span class="loc">Japan</span>
<span class="commander">1023</span>
</p>
</div>
<div class="amb-inner" id="amb_container"></div>
</div>
</section>
<%- include('../comp/footer.html') %>
</section>
<%- include('../comp/walletModal.html') %> <%- include('../comp/jslib.html')
%>
<script>
const LIST_URL = 'https://invitation.cebggame.com/invitation/list_amb'
$(function () {
var showOne = (data) => {
let dom = $('#sample').clone();
if (data.headpic) {
$('.portrait', dom).attr('src', data.headpic);
}
$('.info_href', dom).attr('href', `ambassadorinfo.html?amb=${data.account}`)
$('.name', dom).replaceWith(`<span>${data.name || '-'}</span>`)
$('.loc', dom).replaceWith(`<span>${data.comefrom || '-'}</span>`)
$('.commander', dom).replaceWith(`<span>${data.commander || '-'}</span>`)
dom.show().appendTo('#amb_container')
}
var retry = 0;
var headers = new Headers();
headers.append("Content-Type", "application/json");
let formData = {}
if (window.chain.logined) {
formData.token = window.chain.token;
<script>
const LIST_URL = "https://invitation.cebggame.com/invitation/list_amb";
$(function () {
var showOne = (data) => {
let dom = $("#sample").clone();
if (data.headpic) {
$(".portrait", dom).attr("src", data.headpic);
}
var fetchDatas = async () => {
try {
let data = await fetch(
LIST_URL,
{
method: 'POST',
headers,
mode: 'cors',
cache: 'no-cache',
body: JSON.stringify(formData)
$(".info_href", dom).attr(
"href",
`ambassadorinfo.html?amb=${data.account}`
);
$(".name", dom).replaceWith(`<span>${data.name || "-"}</span>`);
$(".loc", dom).replaceWith(`<span>${data.comefrom || "-"}</span>`);
$(".commander", dom).replaceWith(
`<span>${data.cache_a_num || "-"}</span>`
);
dom.show().appendTo("#amb_container");
};
var retry = 0;
var headers = new Headers();
headers.append("Content-Type", "application/json");
let formData = {};
if (window.chain.logined) {
formData.token = window.chain.token;
}
var fetchDatas = async () => {
try {
let data = await fetch(LIST_URL, {
method: "POST",
headers,
mode: "cors",
cache: "no-cache",
body: JSON.stringify(formData),
}).then((res) => {
return res.json();
});
if (!data.errcode) {
for (let d of data.list) {
showOne(d);
}
)
.then(res => {
return res.json()
})
if (!data.errcode) {
for (let d of data.list) {
showOne(d);
}
}
} catch (err) {
console.log('error get data');
}
}
fetchDatas();
})
</script>
</body>
}
} catch (err) {
console.log("error get data");
}
};
fetchDatas();
});
</script>
</body>
</html>

228
src/desktop/commander.html Normal file
View File

@ -0,0 +1,228 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>CEBG: CRYPTO ELITES BATTLEGROUNDS</title>
</head>
<body>
<section class="main">
<section class="header">
<img src="img/applyother/amt.jpg" width="100%" />
<script>cur = 'activity'; sub='act1'</script>
<%- include('../comp/desktopNav.html') %>
</section>
<section class="main-con amb-con">
<div class="amb-detail commander " id="info_div" >
<div class="amb-de-l">
<div class="amb-i-3">
<p class="amb-i-txt" id="info_account"></p>
</div>
<div class="amb-i-4">
<p class="amb-i-txt" id="info_email"></p>
</div>
</div>
<div class="amb-de-r">
<div class="amb-i-5"><img src="img/applyother/com-tip.png" /></div>
<div class="amb-i-wrap">
<div class="amb-i-6">
<p class="amb-i-txt" id="info_name"></p>
</div>
<div class="amb-i-7">
<p class="amb-i-txt" id="info_loc"></p>
</div>
<div class="amb-i-8">
<p class="amb-i-txt" id="info_commander"></p>
</div>
</div>
<div class="amb-i-11 origon hide" id="cp_container">
<span><a href="javascript:void(0)" id="apply_href">Click to copy the link of Commander</a></span>
<a id="copyBtn"></a>
</div>
<div class="amb-i-11 gray" id="apply_btn">
</div>
</div>
</div>
<div class="feedback-inner tac hide" id="success_tip">
<img src="img/applyother/cmd-title.png"/>
<div class="feedback-tips" id="tip_title">You already have an identity.</div>
</div>
</section>
<%- include('../comp/footer.html') %>
</section>
<%- include('../comp/walletModal.html') %> <%- include('../comp/jslib.html')
%>
<script>
// const HOST = 'http://192.168.100.88:3000'
const HOST = 'https://invitation.cebggame.com'
const DETAIL_URL = `${HOST}/invitation/get_commander_base`
const CHECK_URL = `${HOST}/invitation/check_bind_commander`
const JOIN_URL = `${HOST}/invitation/add_user`
$(function() {
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
}
function formatAddress(address) {
if (address.length >= 10) {
return address.substring(0, 6) + '......' + address.substring(address.length - 4)
} else if (address.length > 0 && address.length < 10) {
return address
} else {
return '-'
}
}
$("#apply_href").on('click', function() {
var host = location.origin;
var path = location.pathname;
var _text = `${host}${path}?cmdr=${window.chain.account}`;
const input = document.createElement('input');
document.body.appendChild(input);
input.value = _text;
input.select();
if (document.execCommand('copy')) {
document.execCommand('copy');
alert('copy success')
}
document.body.removeChild(input);
})
let cmdr = getUrlParam('cmdr');
if (!cmdr) {
return
}
function showInfo(data) {
$('#info_name').html(data.name || "-");
$('#info_loc').html(data.comefrom || "-");
$('#info_commander').html(data.cache_c_num || "-");
$('#info_email').html(data.email || "-");
$('#info_account').html(formatAddress(data.account));
if (data.aboutme) {
$('#info_intro').html(data.aboutme);
}
if (data.headpic) {
$('#info_portrait').attr('src', data.headpic);
}
}
var fetchDatas = async (url, data) => {
var headers = new Headers();
headers.append("Content-Type", "application/json");
if (window.chain.logined) {
headers.append("Authorization", `Bearer ${window.chain.token}`)
}
return fetch(
url,
{
method: 'POST',
headers,
mode: 'cors',
cache: 'no-cache',
body: JSON.stringify(data)
},
)
.then(res => {
return res.json()
})
}
var checkBind = async() => {
try {
let data = await fetchDatas(CHECK_URL, {account: window.chain.account});
if (!data.errcode && data.result) {
userLvl = data.result.rank_level;
if (data.result.chk === 0 && data.result.rank_level === 0) {
canJoin = true
} else {
canJoin = false
}
updateStatus()
if (cmdr === window.chain.account) {
$('#cp_container').show()
$('#apply_btn').hide();
} else {
$('#cp_container').hide()
$('#apply_btn').show();
}
if (!canJoin && cmdr !== window.chain.account) {
showTips()
}
}
} catch(err) {
console.log(err)
}
}
var join = async() => {
try {
let data = await fetchDatas(JOIN_URL, {
account: window.chain.account,
commander: cmdr
});
if (!data.errcode) {
updateStatus();
showTips();
}
} catch(err) {
console.log(err)
}
}
var getCmdrInfo = async() => {
try {
let data = await fetchDatas(DETAIL_URL, {account: cmdr});
showInfo(data.info);
updateStatus();
} catch (err){
console.log(err)
}
}
$('#apply_btn').click(async ()=>{
if (window.chain.logined) {
await checkBind();
if (canJoin) {
join();
} else {
showTips();
}
} else {
window.chainLogin(async function(){
await checkBind();
if (canJoin) {
join();
} else {
showTips();
}
})
}
})
var showTips = ()=> {
$('#info_div').hide();
$('#success_tip').show();
}
let account = ''
let userLvl = 0
let canJoin = true
if (window.chain.logined) {
account = window.chain.account
}
var updateStatus = () => {
if (canJoin) {
$('#apply_btn').removeClass('gray')
} else {
$('#apply_btn').addClass('gray')
}
}
updateStatus();
getCmdrInfo();
window.addEventListener('account_ready', function() {
checkBind();
})
})
</script>
</body>
</html>

View File

@ -46,6 +46,7 @@ body {
color: white;
line-height: 30px;
display: none;
margin-right: 20px;
}
.nav a {
@ -59,7 +60,7 @@ body {
position: relative;
overflow: hidden;
float: left;
padding: 0 35px;
padding: 0 28px;
}
.nav a::after {
@ -1197,6 +1198,7 @@ span.swiper-pagination-bullet {
.feedback-inner {
padding: 80px 0 300px;
position: relative;
}
.amb-con{
@ -1212,6 +1214,7 @@ span.swiper-pagination-bullet {
.amb-scroll .amb-inner{
display: flex;
flex-flow: row wrap;
justify-content: center;
}
.amb-scroll .amb-item{
background: url('../img/applyother/am1.png') no-repeat center top;
@ -1300,7 +1303,7 @@ span.swiper-pagination-bullet {
margin-right: 17px;
}
.amb-i-7{
background: url('../img/applyother/am7.png') no-repeat center top;
background: url('../img/applyother/am7.jpg') no-repeat center top;
width: 280px;
height: 132px;
margin-right: 17px;
@ -1354,6 +1357,7 @@ span.swiper-pagination-bullet {
text-overflow: ellipsis;
vertical-align: middle;
}
.amb-i-11 a{
display: inline-block;
width: 100px;
@ -1361,6 +1365,9 @@ span.swiper-pagination-bullet {
cursor: pointer;
vertical-align: middle;
}
.amb-i-11 span a {
color: #008df9;
}
.amb-i-txt{
width: 270px;
height: 50px;
@ -1378,14 +1385,140 @@ span.swiper-pagination-bullet {
font-size: 16px;
}
.amb-detail.commander{
background: url('../img/applyother/com-bg.png') no-repeat center top;
width: 1282px;
height: 500px;
margin: 0px auto 30px;
display: flex;
flex-flow: row;
}
.commander .amb-i-11{
background: url('../img/applyother/btn_become.png') no-repeat top;
height: 88px;
}
.commander .amb-i-11.origon{
background: url('../img/applyother/com-input.png') no-repeat top;
}
.commander .amb-i-11 span {
line-height: 88px;
margin-top: -10px;
}
.commander .amb-i-4 {
width: 312px;
height: 147px;
background: url('../img/applyother/com-mail.png') no-repeat top;
}
.commander .amb-i-3 {
width: 312px;
height: 147px;
background: url('../img/applyother/com-account.png') no-repeat top;
}
.commander .amb-i-txt{
top: 83px;
}
.commander .amb-de-r .amb-i-txt{
top: 75px;
}
.commander .amb-i-8{
width: 280px;
height: 132px;
background: url('../img/applyother/com-total.png') no-repeat top;
}
.commander .amb-de-r {
padding: 54px 0 0 25px;
}
.feedback-tips{
left: 0;
top: 0;
margin: auto;
position: absolute;
width: 1040px;
height: 128px;
padding: 467px 440px 20px;
font-size: 60px;
}
#apply_btn{
cursor: pointer;
}
.hide{
display: none;
}
.gray {
-webkit-filter: grayscale(100%); /* Chrome, Safari, Opera */
filter: grayscale(100%);
}
.logout a{
font-size: 14px;
height: 57px;
line-height: 58px;
color: white;
}
.user-icon{
height: 57px;
cursor: pointer;
}
.user-icon img{
width: 32px;
margin-top: 12px;
}
.user-menu {
flex-direction: column;
padding: 10px 20px;
}
.user-menu .user_address{
border-bottom: 1px solid #ffffff;
display: flex;
padding-bottom: 14px;
padding-top: 10px;
}
.user-menu .icCopy{
display: inline-block;
width: 16px;
height: 16px;
color: #ffffff;
fill: none;
stroke: currentColor;
vertical-align: -0.15em;
margin-top: 7px;
margin-left: 8px;
}
.user-menu a {
color: white;
font-size: 20px;
height: 57px;
line-height: 58px;
font-family: na-he;
}
.showMessage {
padding: 10px 20px;
border-radius: 5px;
position: fixed;
top: 15%;
left: 50%;
color: #ffffff;
z-index: 999;
transform: translate(-50%, 0);
}
.showMessageSuccess {
background-color: #f0f9eb;
border: 1px solid #E1F3D8;
color: #67c23a;
}
.showMessageError {
background-color: #fef0f0;
border: 1px solid #fde2e2;
color: #F76C6C;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 KiB

After

Width:  |  Height:  |  Size: 272 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@ -36,7 +36,7 @@
<!-- <div class="header-adv-wg"></div> -->
</div>
<div class="download-btns">
<a href="https://www.cebg.games/release/cebg.apk" >
<a href="javascript:void(0);" class="comingSoon">
<img src="img/home/azbt@2x.png" />
</a>
<a href="javascript:void(0);" class="comingSoon">

View File

@ -1,196 +1,239 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<title>CEBG: CRYPTO ELITES BATTLEGROUNDS</title>
</head>
<body>
<section class="main">
<section class="header">
<img src="img/applyother/a1.png" width="100%" />
<script>cur = 'activity'; sub='act2'</script>
<%- include('../comp/desktopNav.html') %>
</section>
<section class="main-con">
<div class="apply-wrap" id="form_layer">
<div class="apply-inner">
<h5 class="apply-tip tac"><img src="img/applyother/ap-tip.png" /></h5>
<div class="apply-from">
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta name="renderer" content="webkit" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"
/>
<title>CEBG: CRYPTO ELITES BATTLEGROUNDS</title>
</head>
<body>
<section class="main">
<section class="header">
<img src="img/applyother/a1.png" width="100%" />
<script>
cur = "activity";
sub = "act2";
</script>
<%- include('../comp/desktopNav.html') %>
</section>
<section class="main-con">
<div class="apply-wrap" id="form_layer">
<div class="apply-inner">
<h5 class="apply-tip tac">
<img src="img/applyother/ap-tip.png" />
</h5>
<div class="apply-from">
<form class="cmxform" id="signupForm" method="get" action="#">
<div>
<p for="nickname"><strong>Nickname</strong></p>
<input
id="nickname"
class="text"
name="nickname"
type="text"
maxlength="20"
autocomplete="off"
/>
</div>
<div>
<p for="email"><strong>E-mail</strong></p>
<input
id="email"
class="text"
name="email"
type="text"
autocomplete="off"
/>
</div>
<div>
<p for="location"><strong>From</strong></p>
<input
id="location"
class="text"
name="location"
type="text"
autocomplete="off"
/>
</div>
<p class="checkbox-wrap">
<input
type="checkbox"
class="checkbox"
id="ever"
name="ever"
/>
<label for="ever">Blockchain experience?</label>
</p>
<p class="checkbox-wrap">
<input type="checkbox" class="checkbox" id="alr" name="alr" />
<label for="alr">Followed CEBG Twitter?</label>
</p>
<p class="checkbox-wrap">
<input type="checkbox" class="checkbox" id="dis" name="dis" />
<label for="dis">Joined CEBG Discord?</label>
</p>
<form class="cmxform" id="signupForm" method="get" action="#">
<div>
<p for="nickname"><strong>Nickname</strong></p>
<input id="nickname" class="text" name="nickname" type="text" maxlength=20 autocomplete="off">
</div>
<div>
<p for="email"><strong>E-mail</strong></p>
<input id="email" class="text" name="email" type="text" autocomplete="off">
</div>
<div>
<p for="location"><strong>From</strong></p>
<input id="location" class="text" name="location" type="text" autocomplete="off">
</div>
<p class="checkbox-wrap">
<input type="checkbox" class="checkbox" id="ever" name="ever">
<label for="ever">Ever had blockchain experience yet?</label>
</p>
<p class="checkbox-wrap">
<input type="checkbox" class="checkbox" id="alr" name="alr">
<label for="alr">Already follow CEBG's Twitter feed?</label>
</p>
<p class="checkbox-wrap">
<input type="checkbox" class="checkbox" id="dis" name="dis">
<label for="dis">Already joined CEBG Discord?</label>
</p>
<p class="tac submit-btn">
<span class="submit" id="submit_btn">Send</span>
</p>
</form>
</div>
</div>
</div>
<div class="feedback-inner tac hide" id="success_tip">
<img src="img/applyother/fb1.png"/>
</div>
</section>
<%- include('../comp/footer.html') %>
</section>
<%- include('../comp/walletModal.html') %> <%- include('../comp/jslib.html')
<p class="tac submit-btn">
<span class="submit" id="submit_btn">Send</span>
</p>
</form>
</div>
</div>
</div>
<div class="feedback-inner tac hide" id="success_tip">
<img src="img/applyother/fb1.png" />
</div>
</section>
<%- include('../comp/footer.html') %>
</section>
<%- include('../comp/walletModal.html') %> <%- include('../comp/jslib.html')
%>
<script src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.5/dist/jquery.validate.min.js" integrity="sha256-JwUksNJ6/R07ZiLRoXbGeNrtlFZMFDKX4hemPiHOmCA=" crossorigin="anonymous"></script>
<script>
const FORM_URL = 'https://invitation.cebggame.com/invitation/add_commander';
const CHECK_URL = 'https://invitation.cebggame.com/invitation/check_is_commander';
$().ready(function() {
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]); return null;
<script
src="https://cdn.jsdelivr.net/npm/jquery-validation@1.19.5/dist/jquery.validate.min.js"
integrity="sha256-JwUksNJ6/R07ZiLRoXbGeNrtlFZMFDKX4hemPiHOmCA="
crossorigin="anonymous"
></script>
<script>
const FORM_URL =
"https://invitation.cebggame.com/invitation/add_commander";
const CHECK_URL =
"https://invitation.cebggame.com/invitation/check_bind_commander";
$().ready(function () {
function showMessage(message, type) {
let messageJQ = $("<div class='showMessage'>" + message + "</div>");
if (type == 0) {
messageJQ.addClass("showMessageError");
} else if (type == 1) {
messageJQ.addClass("showMessageSuccess");
}
messageJQ.hide().appendTo("body").slideDown(400);
window.setTimeout(function () {
messageJQ.show().slideUp(400, function () {
messageJQ.remove();
});
}, 4000);
}
let ambassador = getUrlParam('amb') || '';
$("#signupForm").validate({
success:"valid",
rules: {
nickname: {required: true, rangelength: [3, 20]},
email: {required: true, email: true},
location: {required: true, minlength: 2}
},
messages: {
nickname: "Enter at least 3 words. Enter a maximum of 20 words.",
email: "Please enter your correct email address.",
location: "This field cannot be empty. Please enter your country of residence."
},
submitHandler: function(form) {
postData(generateFormData());
}
});
$('#submit_btn').click(function() {
if (window.chain.logined) {
$('#signupForm').submit();
} else {
window.chainLogin(async function(){
let result = await checkJoined(window.chain.account);
if (result) {
showSuccess();
} else {
$('#signupForm').submit();
}
})
}
})
var generateFormData = () => {
return {
account: window.chain.account,
ambassador,
email: $('#email').val(),
name: $('#nickname').val(),
from: $('#location').val(),
bcexp: $('#ever').prop('checked')? 1: 0,
followcebg: $('#alr').prop('checked')? 1: 0,
joinedcebg: $('#dis').prop('checked')? 1: 0
}
}
var postData = async (formData) => {
var headers = new Headers();
headers.append("Content-Type", "application/json");
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if (r != null) return unescape(r[2]);
return null;
}
let ambassador = getUrlParam("amb") || "";
$("#signupForm").validate({
success: "valid",
rules: {
nickname: { required: true, rangelength: [3, 20] },
email: { required: true, email: true },
location: { required: true, minlength: 2 },
},
messages: {
nickname: "Enter at least 3 words. Enter a maximum of 20 words.",
email: "Please enter your correct email address.",
location:
"This field cannot be empty. Please enter your country of residence.",
},
submitHandler: function (form) {
postData(generateFormData());
},
});
$("#submit_btn").click(function () {
if (window.chain.logined) {
$("#signupForm").submit();
} else {
window.chainLogin(async function () {
let result = await checkJoined(window.chain.account);
if (result) {
showSuccess();
} else {
$("#signupForm").submit();
}
});
}
});
var generateFormData = () => {
return {
account: window.chain.account,
ambassador,
email: $("#email").val(),
name: $("#nickname").val(),
from: $("#location").val(),
bcexp: $("#ever").prop("checked") ? 1 : 0,
followcebg: $("#alr").prop("checked") ? 1 : 0,
joinedcebg: $("#dis").prop("checked") ? 1 : 0,
};
};
var postData = async (formData) => {
var headers = new Headers();
headers.append("Content-Type", "application/json");
if (window.chain.logined) {
formData.token = window.chain.token;
}
try {
let data = await fetch(
FORM_URL,
{
method: 'POST',
headers,
mode: 'cors',
cache: 'no-cache',
body: JSON.stringify(formData)
},
)
.then(res => {
return res.json()
})
if (!data.errcode) {
showSuccess();
}
} catch (err) {
console.log('error post data', err);
}
}
var checkJoined = async function(account) {
var headers = new Headers();
headers.append("Content-Type", "application/json");
let data = {account}
try {
let data = await fetch(FORM_URL, {
method: "POST",
headers,
mode: "cors",
cache: "no-cache",
body: JSON.stringify(formData),
}).then((res) => {
return res.json();
});
if (!data.errcode) {
showSuccess();
}else{
showMessage("Submit failed", 0);
}
} catch (err) {
console.log("error post data", err);
}
};
var checkJoined = async function (account) {
var headers = new Headers();
headers.append("Content-Type", "application/json");
let data = { account };
if (window.chain.logined) {
data.token = window.chain.token;
}
try {
let data = await fetch(
CHECK_URL,
{
method: 'POST',
headers,
mode: 'cors',
cache: 'no-cache',
body: JSON.stringify({account})
},
)
.then(res => {
return res.json()
})
if (!data.errcode) {
return data.result === 1
} else {
return false
}
} catch (err) {
return false
}
}
function showSuccess(){
$('#success_tip').show()
$('#form_layer').hide()
}
async function checkStatus() {
if (window.chain && window.chain.logined) {
let result = await checkJoined(window.chain.account);
if (result) {
showSuccess();
}
}
}
});
</script>
</body>
try {
let resData = await fetch(CHECK_URL, {
method: "POST",
headers,
mode: "cors",
cache: "no-cache",
body: JSON.stringify({ account }),
}).then((res) => {
return res.json();
});
if (!resData.errcode && resData.result) {
return resData.result.chk === 1;
} else {
return false;
}
} catch (err) {
return false;
}
};
function showSuccess() {
$("#success_tip").show();
$("#form_layer").hide();
}
async function checkStatus() {
if (window.chain && window.chain.logined) {
let result = await checkJoined(window.chain.account);
if (result) {
showSuccess();
}
}
}
window.addEventListener("account_ready", function () {
checkStatus();
});
});
</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -10,6 +10,16 @@ var jcchain = require("./jcchain.js");
})(jQuery);
var chain = new jcchain.JCChain();
chain.chainManager.init().then(() => {
if (window.chain.logined) {
checkWalletBind();
let event = new Event("account_ready", {
bubbles: true,
cancelable: false,
});
window.dispatchEvent(event);
}
});
window.chain = chain;
var toggleLoginBtn = function () {
if (chain.logined) {
@ -28,6 +38,9 @@ var logSuccess = function () {
window.logincb = undefined;
toggleLoginBtn();
window.onChainLogined && window.onChainLogined();
checkWalletBind();
let event = new Event("account_ready", { bubbles: true, cancelable: false });
window.dispatchEvent(event);
};
window.chainLogin = function (cb) {
window.logincb = cb;
@ -37,12 +50,27 @@ $("#header_loginbtn").click(function () {
window.chainLogin();
});
$("#header_logoutbtn").click(function () {
$("#header_menu_logoutbtn").click(function () {
chain.logout().then(() => {
toggleLoginBtn();
window.onChainLoginOut && window.onChainLoginOut();
});
});
$("#address_copy").click(function () {
if (!window.chain.account) {
return;
}
var _text = window.chain.account;
const input = document.createElement("input");
document.body.appendChild(input);
input.value = _text;
input.select();
if (document.execCommand("copy")) {
document.execCommand("copy");
alert("copy success");
}
document.body.removeChild(input);
});
jcchain.EventBus.$on(jcchain.SHOW_CHAIN_MODAL, function () {
console.log("show chain modal");
$("#wallet_modal").show();
@ -63,6 +91,9 @@ $(window).click(function () {
$(".dropdown-toggle").click(function (event) {
event.stopPropagation();
if (!$(this).parent().hasClass("open")) {
if (window.chain.logined) {
checkWalletBind();
}
$(this).parent().addClass("open");
} else {
$(this).parent().removeClass("open");
@ -78,3 +109,59 @@ if (window.cur) {
if (window.sub) {
$(`#sub_${sub}`).addClass("cur");
}
var fetchDatas = async (url, data) => {
var headers = new Headers();
headers.append("Content-Type", "application/json");
if (window.chain.logined) {
headers.append("Authorization", `Bearer ${window.chain.token}`);
}
return fetch(url, {
method: "POST",
headers,
mode: "cors",
cache: "no-cache",
body: JSON.stringify(data),
}).then((res) => {
return res.json();
});
};
const HOST = "https://invitation.cebggame.com";
const CHECK_URL = `${HOST}/invitation/check_bind_commander`;
function formatAddress(address) {
if (address.length >= 10) {
return (
address.substring(0, 6) + "......" + address.substring(address.length - 4)
);
} else if (address.length > 0 && address.length < 10) {
return address;
} else {
return "-";
}
}
var checkWalletBind = async () => {
if (window.chain.logined && window.chain.account) {
$("#user_address").show();
}
$("#menu_user_address").html(formatAddress(window.chain.account));
try {
let data = await fetchDatas(CHECK_URL, { account: window.chain.account });
if (!data.errcode && data.result) {
let userLvl = data.result.rank_level;
if (userLvl === 1) {
let url = `./commander.html?cmdr=${window.chain.account}`;
$("#cmdr_href").attr("href", url);
$("#menu_amba").hide();
$("#menu_cmdr").show();
} else if (userLvl === 2) {
let url = `./ambassadorinfo.html?amb=${window.chain.account}`;
$("#amba_href").attr("href", url);
$("#menu_cmdr").hide();
$("#menu_amba").show();
}
}
} catch (err) {
console.log(err);
}
};

View File

@ -298,7 +298,7 @@
</div>
</section>
<!-- 武器介绍层 -->
<!-- 武器介绍层 -->hero_skill_movie
<section class="hero-d-layer weapon-view">
<div class="hero-d-layer-inner">
<div class="hero-d-layer-con">

View File

@ -102,6 +102,7 @@
});
galleryTop.params.control = galleryThumbs;
galleryThumbs.params.control = galleryTop;
</script>
</body>
</html>

View File

@ -50,16 +50,7 @@
</div>
<div class="team-item">
<h3 class="na-he">
Jesse
<span>Branding Leader</span>
</h3>
<p class="na-he">
Over 5-year experience in gaming, and used to work for NetEast and other famous game companies.
</p>
</div>
<div class="team-item">
<h3 class="na-he">
Michael Yue
Michael
<span>Chief Advisor</span>
</h3>
<p class="na-he">
@ -68,39 +59,6 @@
Former Co-Founder of Giant Interactive Group.
</p>
</div>
<div class="team-item">
<h3 class="na-he">
Ben
<span>Community Advisor</span>
</h3>
<p class="na-he">
Head of Operation of Multiverse Play.
<br />
Avid crypto enthusiast, senior investor, and versatile talent
</p>
</div>
<div class="team-item">
<h3 class="na-he">
Ray
<span>Marketing Advisor</span>
</h3>
<p class="na-he">
Head of Gaming of Multiverse Play.
<br/>
18-year experience in game publishing and R&D.
</p>
</div>
<div class="team-item">
<h3 class="na-he">
Alan
<span>Technical Advisor</span>
</h3>
<p class="na-he">
Head of Technical of Multiverse Play.
<br />
16-year experience in Gaming industry.
</p>
</div>
</section>
<%- include('../comp/footer.html') %>
</section>

View File

@ -59,7 +59,7 @@
<img src="imgMobile/home/jx@2x.png" width="100%" />
</div>
<div class="download-btns">
<a href="https://www.cebg.games/release/cebg.apk">
<a href="javascript:void(0);" class="comingSoon">
<img src="imgMobile/home/azbt@2x.png" width="100%" />
</a>
<a href="javascript:void(0);" class="comingSoon">

View File

@ -77,18 +77,10 @@
Former Data Scientist of Giant Interactive Group.
</p>
</div>
<div class="team-item">
<h3 class="na-he">
Jesse
<span>Branding Leader</span>
</h3>
<p class="na-he">
Over 5-year experience in gaming, and used to work for NetEast and other famous game companies.
</p>
</div>
<div class="team-item">
<h3 class="na-he">
Michael Yue
Michael
<span>Chief Advisor</span>
</h3>
<p class="na-he">
@ -97,39 +89,6 @@
Former Co-Founder of Giant Interactive Group.
</p>
</div>
<div class="team-item">
<h3 class="na-he">
Ben
<span>Community Advisor</span>
</h3>
<p class="na-he">
Head of Operation of Multiverse Play.
<br />
Avid crypto enthusiast, senior investor, and versatile talent
</p>
</div>
<div class="team-item">
<h3 class="na-he">
Ray
<span>Marketing Advisor</span>
</h3>
<p class="na-he">
Head of Gaming of Multiverse Play.
<br/>
18-year experience in game publishing and R&D.
</p>
</div>
<div class="team-item">
<h3 class="na-he">
Alan
<span>Technical Advisor</span>
</h3>
<p class="na-he">
Head of Technical of Multiverse Play.
<br />
16-year experience in Gaming industry.
</p>
</div>
</section>
<%- include('../comp/footer.html') %>
</section>

516
yarn.lock

File diff suppressed because it is too large Load Diff