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:
parent
610247f0ca
commit
13ff8d0041
@ -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>
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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()
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -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>
|
||||||
|
@ -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>
|
||||||
|
@ -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 %}
|
||||||
|
@ -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 %}
|
||||||
|
@ -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',
|
||||||
|
37
db/migrations/20210105024511_data_202101051130.php
Normal file
37
db/migrations/20210105024511_data_202101051130.php
Normal 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();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -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
BIN
public/static/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
Loading…
x
Reference in New Issue
Block a user