1
0
mirror of https://gitee.com/koogua/course-tencent-cloud.git synced 2025-06-26 20:52:44 +08:00

后台增加上传logo和favicon

This commit is contained in:
xiaochong0302 2021-01-05 20:21:51 +08:00
parent 610247f0ca
commit 13ff8d0041
11 changed files with 190 additions and 9 deletions

View File

@ -31,6 +31,32 @@
<input type="radio" name="index_tpl_type" value="full" title="丰富" {% if site.index_tpl_type == 'full' %}checked="checked"{% endif %}> <input type="radio" name="index_tpl_type" value="full" title="丰富" {% if site.index_tpl_type == 'full' %}checked="checked"{% endif %}>
</div> </div>
</div> </div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">Logo</label>
<div class="kg-input-inline">
<input class="layui-input" type="text" name="logo" placeholder="请确保存储已正确配置" value="{{ site.logo }}">
</div>
</div>
<div class="layui-inline">
<div class="kg-input-inline">
<button class="layui-btn" type="button" id="upload-logo">上传文件</button>
</div>
</div>
</div>
<div class="layui-form-item">
<div class="layui-inline">
<label class="layui-form-label">Favicon</label>
<div class="kg-input-inline">
<input class="layui-input" type="text" name="favicon" placeholder="请确保存储已正确配置" value="{{ site.favicon }}">
</div>
</div>
<div class="layui-inline">
<div class="kg-input-inline">
<button class="layui-btn" type="button" id="upload-favicon">上传文件</button>
</div>
</div>
</div>
<div class="layui-form-item"> <div class="layui-form-item">
<label class="layui-form-label">网站名称</label> <label class="layui-form-label">网站名称</label>
<div class="layui-input-block"> <div class="layui-input-block">
@ -120,10 +146,11 @@
<script> <script>
layui.use(['jquery', 'form', 'layer'], function () { layui.use(['jquery', 'form', 'layer', 'upload'], function () {
var $ = layui.jquery; var $ = layui.jquery;
var form = layui.form; var form = layui.form;
var upload = layui.upload;
form.on('radio(status)', function (data) { form.on('radio(status)', function (data) {
var block = $('#closed-tips-block'); var block = $('#closed-tips-block');
@ -143,6 +170,38 @@
} }
}); });
upload.render({
elem: '#upload-logo',
url: '/admin/upload/content/img',
exts: 'gif|jpg|png',
before: function () {
layer.load();
},
done: function (res, index, upload) {
$('input[name=logo]').val(res.data.src);
layer.closeAll('loading');
},
error: function (index, upload) {
layer.msg('上传文件失败', {icon: 2});
}
});
upload.render({
elem: '#upload-favicon',
url: '/admin/upload/content/img',
exts: 'gif|jpg|png|ico',
before: function () {
layer.load();
},
done: function (res, index, upload) {
$('input[name=favicon]').val(res.data.src);
layer.closeAll('loading');
},
error: function (index, upload) {
layer.msg('上传文件失败', {icon: 2});
}
});
}); });
</script> </script>

View File

@ -2,6 +2,8 @@
namespace App\Http\Home\Controllers; namespace App\Http\Home\Controllers;
use App\Models\User as UserModel;
use App\Services\Auth\Home as HomeAuth;
use App\Services\Service as AppService; use App\Services\Service as AppService;
use App\Traits\Response as ResponseTrait; use App\Traits\Response as ResponseTrait;
@ -11,8 +13,27 @@ use App\Traits\Response as ResponseTrait;
class ErrorController extends \Phalcon\Mvc\Controller class ErrorController extends \Phalcon\Mvc\Controller
{ {
/**
* @var array
*/
protected $siteInfo;
/**
* @var UserModel
*/
protected $authUser;
use ResponseTrait; use ResponseTrait;
public function initialize()
{
$this->siteInfo = $this->getSiteInfo();
$this->authUser = $this->getAuthUser();
$this->view->setVar('site_info', $this->siteInfo);
$this->view->setVar('auth_user', $this->authUser);
}
/** /**
* @Get("/400", name="home.error.400") * @Get("/400", name="home.error.400")
*/ */
@ -82,4 +103,21 @@ class ErrorController extends \Phalcon\Mvc\Controller
$this->view->setVar('message', $siteInfo['closed_tips']); $this->view->setVar('message', $siteInfo['closed_tips']);
} }
protected function getSiteInfo()
{
$appService = new AppService();
return $appService->getSettings('site');
}
protected function getAuthUser()
{
/**
* @var HomeAuth $auth
*/
$auth = $this->getDI()->get('auth');
return $auth->getCurrentUser();
}
} }

View File

@ -4,6 +4,7 @@ namespace App\Http\Home\Controllers;
use App\Models\User as UserModel; use App\Models\User as UserModel;
use App\Services\Auth\Home as HomeAuth; use App\Services\Auth\Home as HomeAuth;
use App\Services\Service as AppService;
use App\Traits\Response as ResponseTrait; use App\Traits\Response as ResponseTrait;
use App\Traits\Security as SecurityTrait; use App\Traits\Security as SecurityTrait;
use Phalcon\Mvc\Dispatcher; use Phalcon\Mvc\Dispatcher;
@ -11,6 +12,11 @@ use Phalcon\Mvc\Dispatcher;
class LayerController extends \Phalcon\Mvc\Controller class LayerController extends \Phalcon\Mvc\Controller
{ {
/**
* @var array
*/
protected $siteInfo;
/** /**
* @var UserModel * @var UserModel
*/ */
@ -33,11 +39,20 @@ class LayerController extends \Phalcon\Mvc\Controller
public function initialize() public function initialize()
{ {
$this->siteInfo = $this->getSiteInfo();
$this->authUser = $this->getAuthUser(); $this->authUser = $this->getAuthUser();
$this->view->setVar('site_info', $this->siteInfo);
$this->view->setVar('auth_user', $this->authUser); $this->view->setVar('auth_user', $this->authUser);
} }
protected function getSiteInfo()
{
$appService = new AppService();
return $appService->getSettings('site');
}
protected function getAuthUser() protected function getAuthUser()
{ {
/** /**

View File

@ -1,4 +1,10 @@
<div class="logo"></div> <div class="logo layui-layout-left">
{% if site_info.logo %}
{{ image(site_info.logo,false) }}
{% else %}
{{ image('logo.png') }}
{% endif %}
</div>
<div class="top-nav"> <div class="top-nav">
<ul class="layui-nav"> <ul class="layui-nav">
@ -21,7 +27,7 @@
{% set s_query = request.get('query',['trim','striptags'],'') %} {% set s_query = request.get('query',['trim','striptags'],'') %}
{% set s_url = url({'for':'home.search.index'}) %} {% set s_url = url({'for':'home.search.index'}) %}
<div class="user layui-layout-right"> <div class="user">
<ul class="layui-nav"> <ul class="layui-nav">
<li class="layui-nav-item"> <li class="layui-nav-item">
<a href="javascript:" class="nav-search" data-type="{{ s_type }}" data-query="{{ s_query }}" data-url="{{ s_url }}"><i class="layui-icon layui-icon-search"></i> 搜索</a> <a href="javascript:" class="nav-search" data-type="{{ s_type }}" data-query="{{ s_query }}" data-url="{{ s_url }}"><i class="layui-icon layui-icon-search"></i> 搜索</a>

View File

@ -4,8 +4,12 @@
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<title>出错啦</title> <title>出错啦 - {{ site_info.title }}</title>
{{ icon_link("favicon.ico") }} {% if site_info.favicon %}
{{ icon_link(site_info.favicon,false) }}
{% else %}
{{ icon_link('favicon.ico') }}
{% endif %}
{{ css_link("lib/layui/css/layui.css") }} {{ css_link("lib/layui/css/layui.css") }}
{{ css_link("home/css/error.css") }} {{ css_link("home/css/error.css") }}
</head> </head>

View File

@ -5,8 +5,12 @@
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
<meta name="csrf-token" content="{{ csrfToken.getToken() }}"> <meta name="csrf-token" content="{{ csrfToken.getToken() }}">
<title>酷瓜云课堂</title> <title>{{ site_info.title }}</title>
{{ icon_link('favicon.ico') }} {% if site_info.favicon %}
{{ icon_link(site_info.favicon,false) }}
{% else %}
{{ icon_link('favicon.ico') }}
{% endif %}
{{ css_link('lib/layui/css/layui.css') }} {{ css_link('lib/layui/css/layui.css') }}
{{ css_link('home/css/common.css') }} {{ css_link('home/css/common.css') }}
{% block link_css %}{% endblock %} {% block link_css %}{% endblock %}

View File

@ -8,7 +8,11 @@
<meta name="description" content="{{ seo.getDescription() }}"> <meta name="description" content="{{ seo.getDescription() }}">
<meta name="csrf-token" content="{{ csrfToken.getToken() }}"> <meta name="csrf-token" content="{{ csrfToken.getToken() }}">
<title>{{ seo.getTitle() }}</title> <title>{{ seo.getTitle() }}</title>
{{ icon_link('favicon.ico') }} {% if site_info.favicon %}
{{ icon_link(site_info.favicon,false) }}
{% else %}
{{ icon_link('favicon.ico') }}
{% endif %}
{{ css_link('lib/layui/css/layui.css') }} {{ css_link('lib/layui/css/layui.css') }}
{{ css_link('home/css/common.css') }} {{ css_link('home/css/common.css') }}
{% block link_css %}{% endblock %} {% block link_css %}{% endblock %}

View File

@ -77,6 +77,7 @@ class FileInfo
'png' => 'image/png', 'png' => 'image/png',
'webp' => 'image/webp', 'webp' => 'image/webp',
'bmp' => 'image/bmp', 'bmp' => 'image/bmp',
'ico' => 'image/x-icon',
'tif' => 'image/tiff', 'tif' => 'image/tiff',
'tiff' => 'image/tiff', 'tiff' => 'image/tiff',
'svg' => 'image/svg+xml', 'svg' => 'image/svg+xml',

View File

@ -0,0 +1,37 @@
<?php
class Data202101051130 extends Phinx\Migration\AbstractMigration
{
public function up()
{
$rows = [
[
'section' => 'site',
'item_key' => 'logo',
'item_value' => '',
],
[
'section' => 'site',
'item_key' => 'favicon',
'item_value' => '',
],
];
$this->table('kg_setting')->insert($rows)->save();
}
public function down()
{
$this->getQueryBuilder()
->delete('kg_setting')
->where(['section' => 'site', 'item_key' => 'logo'])
->execute();
$this->getQueryBuilder()
->delete('kg_setting')
->where(['section' => 'site', 'item_key' => 'favicon'])
->execute();
}
}

View File

@ -127,8 +127,21 @@
font-size: 12px; font-size: 12px;
} }
#header .logo {
top: 0;
left: 0;
position: absolute;
line-height: 60px;
}
.top-nav { .top-nav {
margin-left: 100px; margin-left: 185px;
}
#header .user {
top: 0;
right: 0;
position: absolute;
} }
.layer-search input { .layer-search input {

BIN
public/static/logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB