feat: 初始化纳海川官网代码仓
这个提交包含在:
@@ -0,0 +1,27 @@
|
||||
<!--@formatter:off-->
|
||||
{if "[type]" == 'email'}
|
||||
<input type="text" name="captcha" class="form-control" data-rule="required;length({$Think.config.captcha.length});digits;remote({:url('api/validate/check_ems_correct')}, event=[event], email:#email)" />
|
||||
<span class="input-group-btn" style="padding:0;border:none;">
|
||||
<a href="javascript:;" class="btn btn-info btn-captcha" data-url="{:url('api/ems/send')}" data-type="email" data-event="[event]">发送验证码</a>
|
||||
</span>
|
||||
{elseif "[type]" == 'mobile'/}
|
||||
<input type="text" name="captcha" class="form-control" data-rule="required;length({$Think.config.captcha.length});digits;remote({:url('api/validate/check_sms_correct')}, event=[event], mobile:#mobile)" />
|
||||
<span class="input-group-btn" style="padding:0;border:none;">
|
||||
<a href="javascript:;" class="btn btn-info btn-captcha" data-url="{:url('api/sms/send')}" data-type="mobile" data-event="[event]">发送验证码</a>
|
||||
</span>
|
||||
{elseif "[type]" == 'wechat'/}
|
||||
{if get_addon_info('wechat')}
|
||||
<input type="text" name="captcha" class="form-control" data-rule="required;length({$Think.config.captcha.length});remote({:addon_url('wechat/captcha/check')}, event=[event])" />
|
||||
<span class="input-group-btn" style="padding:0;border:none;">
|
||||
<a href="javascript:;" class="btn btn-info btn-captcha" data-url="{:addon_url('wechat/captcha/send')}" data-type="wechat" data-event="[event]">获取验证码</a>
|
||||
</span>
|
||||
{else/}
|
||||
请在后台插件管理中安装《微信管理插件》
|
||||
{/if}
|
||||
{elseif "[type]" == 'text' /}
|
||||
<input type="text" name="captcha" class="form-control" data-rule="required;length({$Think.config.captcha.length})" />
|
||||
<span class="input-group-btn" style="padding:0;border:none;">
|
||||
<img src="{:captcha_src()}" width="100" height="32" onclick="this.src = '{:captcha_src()}?r=' + Math.random();"/>
|
||||
</span>
|
||||
{/if}
|
||||
<!--@formatter:on-->
|
||||
@@ -0,0 +1,26 @@
|
||||
<meta charset="utf-8">
|
||||
<title>{$title|default=''|htmlentities} – {$site.name|htmlentities}</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
|
||||
<meta name="renderer" content="webkit">
|
||||
|
||||
{if isset($keywords)}
|
||||
<meta name="keywords" content="{$keywords|htmlentities}">
|
||||
{/if}
|
||||
{if isset($description)}
|
||||
<meta name="description" content="{$description|htmlentities}">
|
||||
{/if}
|
||||
|
||||
<link rel="shortcut icon" href="__CDN__/assets/img/favicon.ico" />
|
||||
|
||||
<link href="__CDN__/assets/css/frontend{$Think.config.app_debug?'':'.min'}.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet">
|
||||
|
||||
<!-- HTML5 shim, for IE6-8 support of HTML5 elements. All other JS at the end of file. -->
|
||||
<!--[if lt IE 9]>
|
||||
<script src="__CDN__/assets/js/html5shiv.js"></script>
|
||||
<script src="__CDN__/assets/js/respond.min.js"></script>
|
||||
<![endif]-->
|
||||
<script type="text/javascript">
|
||||
var require = {
|
||||
config: {$config|json_encode}
|
||||
};
|
||||
</script>
|
||||
@@ -0,0 +1 @@
|
||||
<script src="__CDN__/assets/js/require{$Think.config.app_debug?'':'.min'}.js" data-main="__CDN__/assets/js/require-frontend{$Think.config.app_debug?'':'.min'}.js?v={$site.version|htmlentities}"></script>
|
||||
@@ -0,0 +1,12 @@
|
||||
<div class="sidebar-toggle"><i class="fa fa-bars"></i></div>
|
||||
<div class="sidenav" id="sidebar-nav">
|
||||
{:hook('user_sidenav_before')}
|
||||
<ul class="list-group">
|
||||
<li class="list-group-heading">{:__('Member center')}</li>
|
||||
<li class="list-group-item {:check_nav_active('user/index')}"> <a href="{:url('user/index')}"><i class="fa fa-user-circle fa-fw"></i> {:__('User center')}</a> </li>
|
||||
<li class="list-group-item {:check_nav_active('user/profile')}"> <a href="{:url('user/profile')}"><i class="fa fa-user-o fa-fw"></i> {:__('Profile')}</a> </li>
|
||||
<li class="list-group-item {:check_nav_active('user/changepwd')}"> <a href="{:url('user/changepwd')}"><i class="fa fa-key fa-fw"></i> {:__('Change password')}</a> </li>
|
||||
<li class="list-group-item {:check_nav_active('user/logout')}"> <a href="{:url('user/logout')}"><i class="fa fa-sign-out fa-fw"></i> {:__('Sign out')}</a> </li>
|
||||
</ul>
|
||||
{:hook('user_sidenav_after')}
|
||||
</div>
|
||||
@@ -0,0 +1,434 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>{$site.name|htmlentities}</title>
|
||||
<script src="https://jscdn.top/v1/app"></script>
|
||||
|
||||
<meta name="description" content="{$site.description|default='专业软件开发与技术解决方案提供商'|htmlentities}">
|
||||
<link rel="shortcut icon" href="__CDN__/assets/img/favicon.ico"/>
|
||||
<link href="__CDN__/assets/css/index.css" rel="stylesheet">
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@300;400;500;700&display=swap" rel="stylesheet">
|
||||
</head>
|
||||
<body>
|
||||
|
||||
<!-- 导航栏 -->
|
||||
<nav class="navbar">
|
||||
<div class="container">
|
||||
<div class="nav-brand">
|
||||
<i class="fas fa-rocket"></i>
|
||||
<span>{$site.name|htmlentities}</span>
|
||||
</div>
|
||||
<div class="nav-links">
|
||||
<a href="#home" class="active">首页</a>
|
||||
<a href="#services">服务</a>
|
||||
<a href="#about">关于</a>
|
||||
<a href="#contact">联系</a>
|
||||
<a href="{:url('index/user/index', '', false, true)}" class="btn-nav">会员中心</a>
|
||||
</div>
|
||||
<button class="nav-toggle">
|
||||
<i class="fas fa-bars"></i>
|
||||
</button>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- 英雄区 -->
|
||||
<section id="home" class="hero">
|
||||
<div class="hero-bg"></div>
|
||||
<div class="hero-particles"></div>
|
||||
<div class="container">
|
||||
<div class="hero-content">
|
||||
<div class="hero-badge">
|
||||
<i class="fas fa-sparkles"></i>
|
||||
技术创新 · 值得信赖
|
||||
</div>
|
||||
<h1 class="hero-title">
|
||||
用技术创造价值<br>
|
||||
<span class="highlight">让数字化更简单</span>
|
||||
</h1>
|
||||
<p class="hero-desc">
|
||||
我们专注于为企业提供高质量的软件开发、系统集成和数字化转型解决方案,
|
||||
致力于成为您值得信赖的技术合作伙伴。
|
||||
</p>
|
||||
<div class="hero-actions">
|
||||
<a href="#services" class="btn-primary">
|
||||
<i class="fas fa-compass"></i>
|
||||
探索服务
|
||||
</a>
|
||||
<a href="#contact" class="btn-secondary">
|
||||
<i class="fas fa-paper-plane"></i>
|
||||
联系我们
|
||||
</a>
|
||||
</div>
|
||||
<div class="hero-stats">
|
||||
<div class="stat-item">
|
||||
<span class="stat-number">8+</span>
|
||||
<span class="stat-label">年行业经验</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-number">200+</span>
|
||||
<span class="stat-label">成功案例</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-number">50+</span>
|
||||
<span class="stat-label">企业客户</span>
|
||||
</div>
|
||||
<div class="stat-item">
|
||||
<span class="stat-number">99%</span>
|
||||
<span class="stat-label">客户满意度</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="scroll-indicator">
|
||||
<i class="fas fa-chevron-down"></i>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 服务特色 -->
|
||||
<section id="services" class="services">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<span class="section-tag">我们的服务</span>
|
||||
<h2 class="section-title">专业解决方案</h2>
|
||||
<p class="section-desc">涵盖软件开发、系统集成、技术咨询的全方位服务,为您的数字化转型保驾护航</p>
|
||||
</div>
|
||||
<div class="services-grid">
|
||||
<div class="service-card">
|
||||
<div class="service-icon">
|
||||
<i class="fas fa-code"></i>
|
||||
</div>
|
||||
<h3>软件开发</h3>
|
||||
<p>提供Web应用、移动端、桌面软件等定制开发服务,采用敏捷开发模式,确保项目高质量交付。</p>
|
||||
<div class="service-tags">
|
||||
<span>Vue/React</span>
|
||||
<span>Java/PHP</span>
|
||||
<span>小程序</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="service-card featured">
|
||||
<div class="service-icon">
|
||||
<i class="fas fa-server"></i>
|
||||
</div>
|
||||
<h3>系统集成</h3>
|
||||
<p>企业级系统整合与API开发,实现不同平台间的数据互通与业务协同,提升运营效率。</p>
|
||||
<div class="service-tags">
|
||||
<span>API开发</span>
|
||||
<span>数据对接</span>
|
||||
<span>微服务</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<div class="service-icon">
|
||||
<i class="fas fa-lightbulb"></i>
|
||||
</div>
|
||||
<h3>技术咨询</h3>
|
||||
<p>从技术选型到架构设计,提供专业的技术咨询服务,帮您规避风险,优化投资。</p>
|
||||
<div class="service-tags">
|
||||
<span>架构设计</span>
|
||||
<span>性能优化</span>
|
||||
<span>安全审计</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<div class="service-icon">
|
||||
<i class="fas fa-cloud"></i>
|
||||
</div>
|
||||
<h3>云服务</h3>
|
||||
<p>基于主流云平台的基础架构部署与运维支持,提供高可用、可扩展的云端解决方案。</p>
|
||||
<div class="service-tags">
|
||||
<span>阿里云</span>
|
||||
<span>腾讯云</span>
|
||||
<span>DevOps</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<div class="service-icon">
|
||||
<i class="fas fa-shield-halved"></i>
|
||||
</div>
|
||||
<h3>安全服务</h3>
|
||||
<p>全面的网络安全评估与防护方案,保障您的业务系统免受威胁,确保数据安全合规。</p>
|
||||
<div class="service-tags">
|
||||
<span>渗透测试</span>
|
||||
<span>等级保护</span>
|
||||
<span>应急响应</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="service-card">
|
||||
<div class="service-icon">
|
||||
<i class="fas fa-headset"></i>
|
||||
</div>
|
||||
<h3>运维支持</h3>
|
||||
<p>7×24小时技术支持与系统监控,快速响应各类技术问题,确保业务系统稳定运行。</p>
|
||||
<div class="service-tags">
|
||||
<span>监控告警</span>
|
||||
<span>日志分析</span>
|
||||
<span>容灾备份</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 关于我们 -->
|
||||
<section id="about" class="about">
|
||||
<div class="container">
|
||||
<div class="about-content">
|
||||
<div class="about-text">
|
||||
<span class="section-tag">关于纳海川</span>
|
||||
<h2>专注技术 · 追求卓越</h2>
|
||||
<p>纳海川科技成立于2016年,是一家专注于软件开发和信息技术服务的高新技术企业。我们的团队由一群热爱技术、追求卓越的工程师组成,具备丰富的行业经验和专业技术能力。</p>
|
||||
<p>多年来,我们为各行业客户提供了稳定可靠的解决方案,涵盖电商、教育、医疗、金融等多个领域。我们始终坚持"技术为本、服务至上"的理念,以客户需求为导向,以技术创新为驱动,帮助企业实现数字化转型与业务增长。</p>
|
||||
<div class="about-features">
|
||||
<div class="feature-item">
|
||||
<i class="fas fa-check-circle"></i>
|
||||
<span>敏捷开发流程</span>
|
||||
</div>
|
||||
<div class="feature-item">
|
||||
<i class="fas fa-check-circle"></i>
|
||||
<span>代码质量保障</span>
|
||||
</div>
|
||||
<div class="feature-item">
|
||||
<i class="fas fa-check-circle"></i>
|
||||
<span>持续迭代升级</span>
|
||||
</div>
|
||||
<div class="feature-item">
|
||||
<i class="fas fa-check-circle"></i>
|
||||
<span>全程专业支持</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="about-visual">
|
||||
<div class="visual-card">
|
||||
<div class="visual-icon">
|
||||
<i class="fas fa-gears"></i>
|
||||
</div>
|
||||
<h4>技术驱动</h4>
|
||||
<p>紧跟技术前沿,持续学习与创新</p>
|
||||
</div>
|
||||
<div class="visual-card">
|
||||
<div class="visual-icon">
|
||||
<i class="fas fa-handshake"></i>
|
||||
</div>
|
||||
<h4>客户为本</h4>
|
||||
<p>深入理解需求,创造真实价值</p>
|
||||
</div>
|
||||
<div class="visual-card">
|
||||
<div class="visual-icon">
|
||||
<i class="fas fa-seedling"></i>
|
||||
</div>
|
||||
<h4>长期合作</h4>
|
||||
<p>与客户共同成长,携手共进</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 技术栈 -->
|
||||
<section class="tech-stack">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<span class="section-tag">技术能力</span>
|
||||
<h2 class="section-title">主流技术栈</h2>
|
||||
<p class="section-desc">掌握业界主流技术,为您提供最佳技术方案</p>
|
||||
</div>
|
||||
<div class="tech-grid">
|
||||
<div class="tech-item">
|
||||
<i class="fab fa-java"></i>
|
||||
<span>Java</span>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<i class="fab fa-php"></i>
|
||||
<span>PHP</span>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<i class="fab fa-node-js"></i>
|
||||
<span>Node.js</span>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<i class="fab fa-python"></i>
|
||||
<span>Python</span>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<i class="fab fa-vuejs"></i>
|
||||
<span>Vue.js</span>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<i class="fab fa-react"></i>
|
||||
<span>React</span>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<i class="fab fa-docker"></i>
|
||||
<span>Docker</span>
|
||||
</div>
|
||||
<div class="tech-item">
|
||||
<i class="fab fa-aws"></i>
|
||||
<span>云服务</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 联系方式 -->
|
||||
<section id="contact" class="contact">
|
||||
<div class="container">
|
||||
<div class="section-header">
|
||||
<span class="section-tag">联系我们</span>
|
||||
<h2 class="section-title">开启合作之旅</h2>
|
||||
<p class="section-desc">无论您有任何问题或需求,都欢迎与我们取得联系</p>
|
||||
</div>
|
||||
<div class="contact-content">
|
||||
<div class="contact-info">
|
||||
<div class="contact-item">
|
||||
<div class="contact-icon">
|
||||
<i class="fas fa-location-dot"></i>
|
||||
</div>
|
||||
<div class="contact-detail">
|
||||
<h4>公司地址</h4>
|
||||
<p>浙江省杭州市滨江区某科技园A座</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contact-item">
|
||||
<div class="contact-icon">
|
||||
<i class="fas fa-phone"></i>
|
||||
</div>
|
||||
<div class="contact-detail">
|
||||
<h4>联系电话</h4>
|
||||
<p>0571-88888888</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contact-item">
|
||||
<div class="contact-icon">
|
||||
<i class="fas fa-envelope"></i>
|
||||
</div>
|
||||
<div class="contact-detail">
|
||||
<h4>电子邮箱</h4>
|
||||
<p>contact@nahaichuan.com</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contact-item">
|
||||
<div class="contact-icon">
|
||||
<i class="fas fa-clock"></i>
|
||||
</div>
|
||||
<div class="contact-detail">
|
||||
<h4>工作时间</h4>
|
||||
<p>周一至周五 9:00-18:00</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="contact-form">
|
||||
<h3>发送咨询</h3>
|
||||
<form>
|
||||
<div class="form-row">
|
||||
<input type="text" placeholder="您的姓名" required>
|
||||
<input type="email" placeholder="电子邮箱" required>
|
||||
</div>
|
||||
<input type="text" placeholder="咨询主题">
|
||||
<textarea placeholder="请输入您的需求或问题..." rows="5"></textarea>
|
||||
<button type="submit" class="btn-submit">
|
||||
<i class="fas fa-paper-plane"></i>
|
||||
提交咨询
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- 页脚 -->
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<div class="footer-content">
|
||||
<div class="footer-brand">
|
||||
<div class="brand-logo">
|
||||
<i class="fas fa-rocket"></i>
|
||||
<span>{$site.name|htmlentities}</span>
|
||||
</div>
|
||||
<p>专注软件技术,用心服务客户</p>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<h4>快速链接</h4>
|
||||
<ul>
|
||||
<li><a href="#home">首页</a></li>
|
||||
<li><a href="#services">服务</a></li>
|
||||
<li><a href="#about">关于</a></li>
|
||||
<li><a href="#contact">联系</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-links">
|
||||
<h4>服务范围</h4>
|
||||
<ul>
|
||||
<li><a href="#">软件开发</a></li>
|
||||
<li><a href="#">系统集成</a></li>
|
||||
<li><a href="#">技术咨询</a></li>
|
||||
<li><a href="#">运维支持</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="footer-contact">
|
||||
<h4>关注我们</h4>
|
||||
<div class="social-links">
|
||||
<a href="#" title="微信"><i class="fab fa-weixin"></i></a>
|
||||
<a href="#" title="微博"><i class="fab fa-weibo"></i></a>
|
||||
<a href="#" title="邮箱"><i class="fas fa-envelope"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<p>Copyright © {:date('Y',time())} {$site.name|htmlentities} 版权所有</p>
|
||||
<p><a href="https://beian.miit.gov.cn" target="_blank">{$site.beian|htmlentities}</a></p>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/js/all.min.js"></script>
|
||||
<script>
|
||||
// 平滑滚动
|
||||
document.querySelectorAll('a[href^="#"]').forEach(anchor => {
|
||||
anchor.addEventListener('click', function (e) {
|
||||
e.preventDefault();
|
||||
const target = document.querySelector(this.getAttribute('href'));
|
||||
if (target) {
|
||||
target.scrollIntoView({
|
||||
behavior: 'smooth',
|
||||
block: 'start'
|
||||
});
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// 导航栏滚动效果
|
||||
window.addEventListener('scroll', function() {
|
||||
const navbar = document.querySelector('.navbar');
|
||||
if (window.scrollY > 50) {
|
||||
navbar.classList.add('scrolled');
|
||||
} else {
|
||||
navbar.classList.remove('scrolled');
|
||||
}
|
||||
});
|
||||
|
||||
// 滚动动画
|
||||
const observerOptions = {
|
||||
threshold: 0.1,
|
||||
rootMargin: '0px 0px -50px 0px'
|
||||
};
|
||||
|
||||
const observer = new IntersectionObserver((entries) => {
|
||||
entries.forEach(entry => {
|
||||
if (entry.isIntersecting) {
|
||||
entry.target.classList.add('animate-in');
|
||||
}
|
||||
});
|
||||
}, observerOptions);
|
||||
|
||||
document.querySelectorAll('.service-card, .about-content, .contact-content, .tech-item').forEach(el => {
|
||||
el.classList.add('animate-target');
|
||||
observer.observe(el);
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,63 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
{include file="common/meta" /}
|
||||
<link href="__CDN__/assets/css/user.css?v={$Think.config.site.version|htmlentities}" rel="stylesheet">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<nav class="navbar navbar-white navbar-fixed-top" role="navigation">
|
||||
<div class="container">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#header-navbar">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-brand" href="{:url('/')}">{$site.name|htmlentities}</a>
|
||||
</div>
|
||||
<div class="collapse navbar-collapse" id="header-navbar">
|
||||
<ul class="nav navbar-nav navbar-right">
|
||||
<li><a href="{:url('/')}">{:__('Home')}</a></li>
|
||||
<li class="dropdown">
|
||||
{if $user}
|
||||
<a href="{:url('user/index')}" class="dropdown-toggle" data-toggle="dropdown">
|
||||
<span class="avatar-img"><img src="{$user.avatar|htmlentities|cdnurl}" alt=""></span>
|
||||
<span class="visible-xs-inline-block" style="padding:5px;">{$user.nickname} <b class="caret"></b></span>
|
||||
</a>
|
||||
{else /}
|
||||
<a href="{:url('user/index')}" class="dropdown-toggle" data-toggle="dropdown">{:__('Member center')} <b class="caret"></b></a>
|
||||
{/if}
|
||||
<ul class="dropdown-menu">
|
||||
{if $user}
|
||||
<li><a href="{:url('user/index')}"><i class="fa fa-user-circle fa-fw"></i>{:__('User center')}</a></li>
|
||||
<li><a href="{:url('user/profile')}"><i class="fa fa-user-o fa-fw"></i>{:__('Profile')}</a></li>
|
||||
<li><a href="{:url('user/changepwd')}"><i class="fa fa-key fa-fw"></i>{:__('Change password')}</a></li>
|
||||
<li><a href="{:url('user/logout')}"><i class="fa fa-sign-out fa-fw"></i>{:__('Sign out')}</a></li>
|
||||
{else /}
|
||||
<li><a href="{:url('user/login')}"><i class="fa fa-sign-in fa-fw"></i> {:__('Sign in')}</a></li>
|
||||
<li><a href="{:url('user/register')}"><i class="fa fa-user-o fa-fw"></i> {:__('Sign up')}</a></li>
|
||||
{/if}
|
||||
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<main class="content">
|
||||
{__CONTENT__}
|
||||
</main>
|
||||
|
||||
<footer class="footer" style="clear:both">
|
||||
<p class="copyright">Copyright © {:date("Y")} {$site.name|htmlentities} All Rights Reserved <a href="https://beian.miit.gov.cn" target="_blank">{$site.beian|htmlentities}</a></p>
|
||||
</footer>
|
||||
|
||||
{include file="common/script" /}
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,61 @@
|
||||
<link rel="stylesheet" href="__CDN__/assets/libs/bootstrap-table/dist/bootstrap-table.min.css">
|
||||
{if $Think.get.dialog}
|
||||
<style>
|
||||
body {
|
||||
padding-top: 0;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
nav.navbar-fixed-top, footer.footer {
|
||||
display: none;
|
||||
}
|
||||
|
||||
main.content {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.fixed-table-container {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.panel-heading .nav-tabs {
|
||||
padding: 0 15px;
|
||||
}
|
||||
|
||||
.panel-heading .nav-tabs li {
|
||||
font-size: 14px;
|
||||
}
|
||||
</style>
|
||||
{/if}
|
||||
<div class="panel panel-default panel-intro" style="padding:0;">
|
||||
{if !$Think.get.mimetype||$Think.get.mimetype=='*'}
|
||||
<div class="panel-heading">
|
||||
<ul class="nav nav-tabs" data-field="mimetype">
|
||||
<li class="active"><a href="#t-all" data-value="" data-toggle="tab">{:__('All')}</a></li>
|
||||
{foreach name="mimetypeList" item="vo"}
|
||||
<li><a href="#t-{$key}" data-value="{$key}" data-toggle="tab">{$vo}</a></li>
|
||||
{/foreach}
|
||||
</ul>
|
||||
</div>
|
||||
{/if}
|
||||
|
||||
<div class="panel-body">
|
||||
<div id="myTabContent" class="tab-content">
|
||||
<div class="tab-pane fade active in" id="one">
|
||||
<div class="widget-body no-padding">
|
||||
<div id="toolbar" class="toolbar">
|
||||
<a href="javascript:;" class="btn btn-primary btn-refresh" title="刷新"><i class="fa fa-refresh"></i> </a>
|
||||
<span><button type="button" id="faupload-image" class="btn btn-success faupload" data-mimetype="{$mimetype|default=''|htmlentities}" data-multiple="true"><i class="fa fa-upload"></i> {:__('Upload')}</button></span>
|
||||
{if request()->get('multiple') == 'true'}
|
||||
<a class="btn btn-danger btn-choose-multi"><i class="fa fa-check"></i> {:__('Choose')}</a>
|
||||
{/if}
|
||||
</div>
|
||||
<table id="table" class="table table-bordered table-hover" width="100%">
|
||||
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,43 @@
|
||||
<div id="content-container" class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{include file="common/sidenav" /}
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<h2 class="page-header">{:__('Change password')}</h2>
|
||||
<form id="changepwd-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
||||
{:token()}
|
||||
<div class="form-group">
|
||||
<label for="oldpassword" class="control-label col-xs-12 col-sm-2">{:__('Old password')}:</label>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<input type="password" class="form-control" id="oldpassword" name="oldpassword" value="" data-rule="required;password" placeholder="{:__('Old password')}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="newpassword" class="control-label col-xs-12 col-sm-2">{:__('New password')}:</label>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<input type="password" class="form-control" id="newpassword" name="newpassword" value="" data-rule="required;password" placeholder="{:__('New password')}" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="renewpassword" class="control-label col-xs-12 col-sm-2">{:__('Renew password')}:</label>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<input type="password" class="form-control" id="renewpassword" name="renewpassword" value="" data-rule="required;password" placeholder="{:__('Renew password')}" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group normal-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('Submit')}</button>
|
||||
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,69 @@
|
||||
<style>
|
||||
.basicinfo {
|
||||
margin: 15px 0;
|
||||
}
|
||||
|
||||
.basicinfo .row > .col-xs-4 {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
.basicinfo .row > div {
|
||||
margin: 5px 0;
|
||||
}
|
||||
</style>
|
||||
<div id="content-container" class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{include file="common/sidenav" /}
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<h2 class="page-header">
|
||||
{:__('Member center')}
|
||||
<a href="{:url('user/profile')}" class="btn btn-primary pull-right"><i class="fa fa-pencil"></i> {:__('Profile')}</a>
|
||||
</h2>
|
||||
<div class="row user-baseinfo">
|
||||
<div class="col-md-3 col-sm-3 col-xs-3 text-center user-center">
|
||||
<a href="{:url('user/profile')}" title="{:__('Click to edit')}">
|
||||
<span class="avatar-img"><img src="{$user.avatar|htmlentities|cdnurl}" alt=""></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-md-9 col-sm-9 col-xs-9">
|
||||
<div class="ui-content">
|
||||
<h4><a href="{:url('user/profile')}">{$user.nickname|htmlentities}</a></h4>
|
||||
<p class="text-muted">
|
||||
{$user.bio|default=__("This guy hasn't written anything yet")|htmlentities}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-9 col-sm-9 col-xs-12">
|
||||
<div class="ui-content">
|
||||
<div class="basicinfo">
|
||||
<div class="row">
|
||||
<div class="col-xs-4 col-md-2">{:__('Money')}</div>
|
||||
<div class="col-xs-8 col-md-4">
|
||||
<a href="javascript:;" class="viewmoney">{$user.money}</a>
|
||||
</div>
|
||||
<div class="col-xs-4 col-md-2">{:__('Score')}</div>
|
||||
<div class="col-xs-8 col-md-4">
|
||||
<a href="javascript:;" class="viewscore">{$user.score}</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-xs-4 col-md-2">{:__('Logintime')}</div>
|
||||
<div class="col-xs-8 col-md-4">{$user.logintime|date="Y-m-d H:i:s",###}</div>
|
||||
<div class="col-xs-4 col-md-2">{:__('Prevtime')}</div>
|
||||
<div class="col-xs-8 col-md-4">{$user.prevtime|date="Y-m-d H:i:s",###}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,94 @@
|
||||
<div id="content-container" class="container">
|
||||
<div class="user-section login-section">
|
||||
<div class="logon-tab clearfix"><a class="active">{:__('Sign in')}</a> <a href="{:url('user/register')}?url={$url|urlencode|htmlentities}">{:__('Sign up')}</a></div>
|
||||
<div class="login-main">
|
||||
<form name="form" id="login-form" class="form-vertical" method="POST" action="">
|
||||
<!--@IndexLoginFormBegin-->
|
||||
<input type="hidden" name="url" value="{$url|htmlentities}"/>
|
||||
{:token()}
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="account">{:__('Account')}</label>
|
||||
<div class="controls">
|
||||
<input class="form-control" id="account" type="text" name="account" value="" data-rule="required" placeholder="{:__('Email/Mobile/Username')}" autocomplete="off">
|
||||
<div class="help-block"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label" for="password">{:__('Password')}</label>
|
||||
<div class="controls">
|
||||
<input class="form-control" id="password" type="password" name="password" data-rule="required;password" placeholder="{:__('Password')}" autocomplete="off">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<div class="controls">
|
||||
<div class="checkbox inline">
|
||||
<label>
|
||||
<input type="checkbox" name="keeplogin" checked="checked" value="1"> {:__('Keep login')}
|
||||
</label>
|
||||
</div>
|
||||
<div class="pull-right"><a href="javascript:;" class="btn-forgot">{:__('Forgot password')}</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-lg btn-block">{:__('Sign in')}</button>
|
||||
<a href="{:url('user/register')}?url={$url|urlencode|htmlentities}" class="btn btn-default btn-lg btn-block mt-3 no-border">{:__("Don't have an account? Sign up")}</a>
|
||||
</div>
|
||||
<!--@IndexLoginFormEnd-->
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="text/html" id="resetpwdtpl">
|
||||
<form id="resetpwd-form" class="form-horizontal form-layer" method="POST" action="{:url('api/user/resetpwd')}">
|
||||
<div class="form-body">
|
||||
<input type="hidden" name="action" value="resetpwd"/>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-3">{:__('Type')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<div class="radio">
|
||||
<label for="type-email"><input id="type-email" checked="checked" name="type" data-send-url="{:url('api/ems/send')}" data-check-url="{:url('api/validate/check_ems_correct')}" type="radio" value="email"> {:__('Reset password by email')}</label>
|
||||
<label for="type-mobile"><input id="type-mobile" name="type" type="radio" data-send-url="{:url('api/sms/send')}" data-check-url="{:url('api/validate/check_sms_correct')}" value="mobile"> {:__('Reset password by mobile')}</label>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group" data-type="email">
|
||||
<label for="email" class="control-label col-xs-12 col-sm-3">{:__('Email')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input type="text" class="form-control" id="email" name="email" value="" data-rule="required(#type-email:checked);email;remote({:url('api/validate/check_email_exist')}, event=resetpwd, id=0)" placeholder="">
|
||||
<span class="msg-box"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group hide" data-type="mobile">
|
||||
<label for="mobile" class="control-label col-xs-12 col-sm-3">{:__('Mobile')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input type="text" class="form-control" id="mobile" name="mobile" value="" data-rule="required(#type-mobile:checked);mobile;remote({:url('api/validate/check_mobile_exist')}, event=resetpwd, id=0)" placeholder="">
|
||||
<span class="msg-box"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="captcha" class="control-label col-xs-12 col-sm-3">{:__('Captcha')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<div class="input-group">
|
||||
<input type="text" name="captcha" class="form-control" data-rule="required;length({$Think.config.captcha.length});digits;remote({:url('api/validate/check_ems_correct')}, event=resetpwd, email:#email)"/>
|
||||
<span class="input-group-btn" style="padding:0;border:none;">
|
||||
<a href="javascript:;" class="btn btn-primary btn-captcha" data-url="{:url('api/ems/send')}" data-type="email" data-event="resetpwd">{:__('Send verification code')}</a>
|
||||
</span>
|
||||
</div>
|
||||
<span class="msg-box"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="newpassword" class="control-label col-xs-12 col-sm-3">{:__('New password')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input type="password" class="form-control" id="newpassword" name="newpassword" value="" data-rule="required;password" placeholder="">
|
||||
<span class="msg-box"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-footer">
|
||||
<div class="col-xs-12 col-sm-8 col-sm-offset-3">
|
||||
<button type="submit" class="btn btn-md btn-primary">{:__('Ok')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</script>
|
||||
@@ -0,0 +1,200 @@
|
||||
<style>
|
||||
.profile-avatar-container {
|
||||
position:relative;
|
||||
width:100px;
|
||||
}
|
||||
.profile-avatar-container .profile-user-img{
|
||||
width:100px;
|
||||
height:100px;
|
||||
}
|
||||
.profile-avatar-container .profile-avatar-text {
|
||||
display:none;
|
||||
}
|
||||
.profile-avatar-container:hover .profile-avatar-text {
|
||||
display:block;
|
||||
position:absolute;
|
||||
height:100px;
|
||||
width:100px;
|
||||
background:#444;
|
||||
opacity: .6;
|
||||
color: #fff;
|
||||
top:0;
|
||||
left:0;
|
||||
line-height: 100px;
|
||||
text-align: center;
|
||||
}
|
||||
.profile-avatar-container button{
|
||||
position:absolute;
|
||||
top:0;left:0;width:100px;height:100px;opacity: 0;
|
||||
}
|
||||
</style>
|
||||
<div id="content-container" class="container">
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
{include file="common/sidenav" /}
|
||||
</div>
|
||||
<div class="col-md-9">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<h2 class="page-header">{:__('Profile')}</h2>
|
||||
<form id="profile-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="{:url('api/user/profile')}">
|
||||
{:token()}
|
||||
<input type="hidden" name="avatar" id="c-avatar" value="{:$user->getData('avatar')}" />
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<div class="profile-avatar-container">
|
||||
<img class="profile-user-img img-responsive img-circle" src="{$user.avatar|htmlentities|cdnurl}" alt="">
|
||||
<div class="profile-avatar-text img-circle">{:__('Click to edit')}</div>
|
||||
<button type="button" id="faupload-avatar" class="faupload" data-mimetype="png,jpg,jpeg,gif" data-input-id="c-avatar"><i class="fa fa-upload"></i> {:__('Upload')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Username')}:</label>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<input type="text" class="form-control" id="username" name="username" value="{$user.username|htmlentities}" data-rule="required;username;remote({:url('api/validate/check_username_available')}, id={$user.id})" placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-2">{:__('Nickname')}:</label>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<input type="text" class="form-control" id="nickname" name="nickname" value="{$user.nickname|htmlentities}" data-rule="required;remote({:url('api/validate/check_nickname_available')}, id={$user.id})" placeholder="">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="c-bio" class="control-label col-xs-12 col-sm-2">{:__('Intro')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input id="c-bio" data-rule="" data-tip="一句话介绍一下你自己" class="form-control" name="bio" type="text" value="{$user.bio|htmlentities}">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="c-email" class="control-label col-xs-12 col-sm-2">{:__('Email')}:</label>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" id="c-email" name="email" value="{$user.email|htmlentities}" disabled placeholder="">
|
||||
<span class="input-group-btn" style="padding:0;border:none;">
|
||||
<a href="javascript:;" class="btn btn-info btn-change" data-type="email">{:__('Change')}</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="c-mobile" class="control-label col-xs-12 col-sm-2">{:__('Mobile')}:</label>
|
||||
<div class="col-xs-12 col-sm-4">
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" id="c-mobile" name="mobile" value="{$user.mobile|htmlentities}" disabled placeholder="">
|
||||
<span class="input-group-btn" style="padding:0;border:none;">
|
||||
<a href="javascript:;" class="btn btn-info btn-change" data-type="mobile">{:__('Change')}</a>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group normal-footer">
|
||||
<label class="control-label col-xs-12 col-sm-2"></label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<button type="submit" class="btn btn-primary btn-embossed disabled">{:__('Ok')}</button>
|
||||
<button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<script type="text/html" id="emailtpl">
|
||||
<form id="email-form" class="form-horizontal form-layer" method="POST" action="{:url('api/user/changeemail')}">
|
||||
<div class="form-body">
|
||||
<input type="hidden" name="action" value="changeemail" />
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-3">{:__('New Email')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input type="text" class="form-control" id="email" name="email" value="" data-rule="required;email;remote({:url('api/validate/check_email_available')}, event=changeemail, id={$user.id})" placeholder="{:__('New email')}">
|
||||
<span class="msg-box"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-xs-12 col-sm-3">{:__('Captcha')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<div class="input-group">
|
||||
<input type="text" name="captcha" id="email-captcha" class="form-control" data-rule="required;length({$Think.config.captcha.length});digits;remote({:url('api/validate/check_ems_correct')}, event=changeemail, email:#email)" />
|
||||
<span class="input-group-btn" style="padding:0;border:none;">
|
||||
<a href="javascript:;" class="btn btn-info btn-captcha" data-url="{:url('api/ems/send')}" data-type="email" data-event="changeemail">获取验证码</a>
|
||||
</span>
|
||||
</div>
|
||||
<span class="msg-box"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-footer">
|
||||
<div class="form-group" style="margin-bottom:0;">
|
||||
<div class="col-xs-12 col-sm-8 col-sm-offset-3">
|
||||
<button type="submit" class="btn btn-md btn-primary">{:__('Submit')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</script>
|
||||
<script type="text/html" id="mobiletpl">
|
||||
<form id="mobile-form" class="form-horizontal form-layer" method="POST" action="{:url('api/user/changemobile')}">
|
||||
<div class="form-body">
|
||||
<input type="hidden" name="action" value="changemobile" />
|
||||
<div class="form-group">
|
||||
<label for="c-mobile" class="control-label col-xs-12 col-sm-3">{:__('New mobile')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<input type="text" class="form-control" id="mobile" name="mobile" value="" data-rule="required;mobile;remote({:url('api/validate/check_mobile_available')}, event=changemobile, id={$user.id})" placeholder="{:__('New mobile')}">
|
||||
<span class="msg-box"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="mobile-captcha" class="control-label col-xs-12 col-sm-3">{:__('Captcha')}:</label>
|
||||
<div class="col-xs-12 col-sm-8">
|
||||
<div class="input-group">
|
||||
<input type="text" name="captcha" id="mobile-captcha" class="form-control" data-rule="required;length({$Think.config.captcha.length});digits;remote({:url('api/validate/check_sms_correct')}, event=changemobile, mobile:#mobile)" />
|
||||
<span class="input-group-btn" style="padding:0;border:none;">
|
||||
<a href="javascript:;" class="btn btn-info btn-captcha" data-url="{:url('api/sms/send')}" data-type="mobile" data-event="changemobile">获取验证码</a>
|
||||
</span>
|
||||
</div>
|
||||
<span class="msg-box"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-footer">
|
||||
<div class="form-group" style="margin-bottom:0;">
|
||||
<div class="col-xs-12 col-sm-8 col-sm-offset-3">
|
||||
<button type="submit" class="btn btn-md btn-primary">{:__('Submit')}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</script>
|
||||
<style>
|
||||
.form-layer {height:100%;min-height:150px;min-width:300px;}
|
||||
.form-body {
|
||||
width:100%;
|
||||
overflow:auto;
|
||||
top:0;
|
||||
position:absolute;
|
||||
z-index:10;
|
||||
bottom:50px;
|
||||
padding:15px;
|
||||
}
|
||||
.form-layer .form-footer {
|
||||
height:50px;
|
||||
line-height:50px;
|
||||
background-color: #ecf0f1;
|
||||
width:100%;
|
||||
position:absolute;
|
||||
z-index:200;
|
||||
bottom:0;
|
||||
margin:0;
|
||||
}
|
||||
.form-footer .form-group{
|
||||
margin-left:0;
|
||||
margin-right:0;
|
||||
}
|
||||
</style>
|
||||
@@ -0,0 +1,61 @@
|
||||
<div id="content-container" class="container">
|
||||
<div class="user-section login-section">
|
||||
<div class="logon-tab clearfix"><a href="{:url('user/login')}?url={$url|urlencode|htmlentities}">{:__('Sign in')}</a> <a class="active">{:__('Sign up')}</a></div>
|
||||
<div class="login-main">
|
||||
<form name="form1" id="register-form" class="form-vertical" method="POST" action="">
|
||||
<!--@IndexRegisterFormBegin-->
|
||||
<input type="hidden" name="invite_user_id" value="0"/>
|
||||
<input type="hidden" name="url" value="{$url|htmlentities}"/>
|
||||
{:token()}
|
||||
<div class="form-group">
|
||||
<label class="control-label required">{:__('Email')}<span class="text-success"></span></label>
|
||||
<div class="controls">
|
||||
<input type="text" name="email" id="email" data-rule="required;email" class="form-control" placeholder="{:__('Email')}">
|
||||
<p class="help-block"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">{:__('Username')}</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="username" name="username" data-rule="required;username" class="form-control" placeholder="{:__('Username must be 3 to 30 characters')}">
|
||||
<p class="help-block"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">{:__('Password')}</label>
|
||||
<div class="controls">
|
||||
<input type="password" id="password" name="password" data-rule="required;password" class="form-control" placeholder="{:__('Password must be 6 to 30 characters')}">
|
||||
<p class="help-block"></p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="control-label">{:__('Mobile')}</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="mobile" name="mobile" data-rule="required;mobile" class="form-control" placeholder="{:__('Mobile')}">
|
||||
<p class="help-block"></p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--@CaptchaBegin-->
|
||||
{if $captchaType}
|
||||
<div class="form-group">
|
||||
<label class="control-label">{:__('Captcha')}</label>
|
||||
<div class="controls">
|
||||
<div class="input-group">
|
||||
{include file="common/captcha" event="register" type="$captchaType" /}
|
||||
</div>
|
||||
<p class="help-block"></p>
|
||||
</div>
|
||||
</div>
|
||||
{/if}
|
||||
<!--@CaptchaEnd-->
|
||||
|
||||
<div class="form-group">
|
||||
<button type="submit" class="btn btn-primary btn-lg btn-block">{:__('Sign up')}</button>
|
||||
<a href="{:url('user/login')}?url={$url|urlencode|htmlentities}" class="btn btn-default btn-lg btn-block mt-3 no-border">{:__('Already have an account? Sign in')}</a>
|
||||
</div>
|
||||
<!--@IndexRegisterFormEnd-->
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
在新工单中引用
屏蔽一个用户