laboratory setting: banner setting manager && setting api modify

dev_home
p31729568 5 years ago
parent f4f85c36f0
commit 051bc08a8c

@ -3,7 +3,7 @@ $(document).on('turbolinks:load', function() {
var $container = $('.edit-laboratory-setting-container');
var $form = $container.find('.edit_laboratory');
$('.logo-item-left').on("change", 'input[type="file"]', function () {
$('.logo-item-left, .banner-item-bottom').on("change", 'input[type="file"]', function () {
var $fileInput = $(this);
var file = this.files[0];
var imageType = /image.*/;

@ -3,7 +3,7 @@ $(document).on('turbolinks:load', function() {
var $container = $('.edit-laboratory-setting-container');
var $form = $container.find('.edit_laboratory');
$('.logo-item-left').on("change", 'input[type="file"]', function () {
$('.logo-item-left, .banner-item-bottom').on("change", 'input[type="file"]', function () {
var $fileInput = $(this);
var file = this.files[0];
var imageType = /image.*/;

@ -96,5 +96,76 @@
font-size: 14px;
}
}
.banner-item {
margin-bottom: 15px;
display: flex;
flex-direction: column;
&-img {
display: block;
width: 300px;
height: 80px;
background: #f0f0f0;
}
&-upload {
cursor: pointer;
position: absolute;
top: 0;
width: 300px;
height: 80px;
background: #F5F5F5;
border: 1px solid #E5E5E5;
&::before {
content: '';
position: absolute;
top: 27px;
left: 149px;
width: 2px;
height: 26px;
background: #E5E5E5;
}
&::after {
content: '';
position: absolute;
top: 39px;
left: 137px;
width: 26px;
height: 2px;
background: #E5E5E5;
}
}
&-top {
margin-bottom: 10px;
}
&-bottom {
position: relative;
width: 300px;
height: 80px;
&.has-img {
.banner-item-upload {
display: none;
}
&:hover {
.banner-item-upload {
display: block;
background: rgba(145, 145, 145, 0.8);
}
}
}
}
&-title {
color: #23272B;
font-size: 14px;
}
}
}
}

@ -72,5 +72,76 @@
font-size: 14px;
}
}
.banner-item {
margin-bottom: 15px;
display: flex;
flex-direction: column;
&-img {
display: block;
width: 300px;
height: 80px;
background: #f0f0f0;
}
&-upload {
cursor: pointer;
position: absolute;
top: 0;
width: 300px;
height: 80px;
background: #F5F5F5;
border: 1px solid #E5E5E5;
&::before {
content: '';
position: absolute;
top: 27px;
left: 149px;
width: 2px;
height: 26px;
background: #E5E5E5;
}
&::after {
content: '';
position: absolute;
top: 39px;
left: 137px;
width: 26px;
height: 2px;
background: #E5E5E5;
}
}
&-top {
margin-bottom: 10px;
}
&-bottom {
position: relative;
width: 300px;
height: 80px;
&.has-img {
.banner-item-upload {
display: none;
}
&:hover {
.banner-item-upload {
display: block;
background: rgba(145, 145, 145, 0.8);
}
}
}
}
&-title {
color: #23272B;
font-size: 14px;
}
}
}
}

@ -15,6 +15,9 @@ class Admins::LaboratorySettingsController < Admins::BaseController
end
def form_params
params.permit(:identifier, :name, :nav_logo, :login_logo, :tab_logo, :footer, navbar: %i[name link hidden])
params.permit(:identifier, :name,
:nav_logo, :login_logo, :tab_logo,
:subject_banner, :course_banner, :competition_banner, :moop_cases_banner,
:footer, navbar: %i[name link hidden])
end
end

@ -9,6 +9,9 @@ class Cooperative::LaboratorySettingsController < Cooperative::BaseController
end
def form_params
params.permit(:identifier, :name, :nav_logo, :login_logo, :tab_logo, :footer, navbar: %i[name link hidden])
params.permit(:identifier, :name,
:nav_logo, :login_logo, :tab_logo,
:subject_banner, :course_banner, :competition_banner, :moop_cases_banner,
:footer, navbar: %i[name link hidden])
end
end

@ -186,6 +186,6 @@ class Competition < ApplicationRecord
def set_laboratory
return unless new_record?
self.laboratory = Laboratory.current
self.laboratory = Laboratory.current if laboratory_id.blank?
end
end

@ -416,6 +416,6 @@ class Course < ApplicationRecord
def set_laboratory
return unless new_record? # 新记录才需要标记
self.laboratory = Laboratory.current
self.laboratory = Laboratory.current if laboratory_id.blank?
end
end

@ -15,15 +15,31 @@ class LaboratorySetting < ApplicationRecord
end
def login_logo_url
logo_url('login')
image_url('login')
end
def nav_logo_url
logo_url('nav')
image_url('nav')
end
def tab_logo_url
logo_url('tab')
image_url('tab')
end
def subject_banner_url
image_url('_subject_banner')
end
def course_banner_url
image_url('_course_banner')
end
def competition_banner_url
image_url('_competition_banner')
end
def moop_cases_banner_url
image_url('_moop_cases_banner')
end
def default_navbar
@ -32,7 +48,7 @@ class LaboratorySetting < ApplicationRecord
private
def logo_url(type)
def image_url(type)
return nil unless Util::FileManage.exists?(self, type)
Util::FileManage.source_disk_file_url(self, type)
end

@ -17,7 +17,7 @@ class Admins::SaveLaboratorySettingService < ApplicationService
laboratory.save!
laboratory_setting.save!
deal_logo_file
deal_image_file
end
laboratory
@ -35,13 +35,17 @@ class Admins::SaveLaboratorySettingService < ApplicationService
end
end
def deal_logo_file
save_logo_file(params[:nav_logo], 'nav')
save_logo_file(params[:login_logo], 'login')
save_logo_file(params[:tab_logo], 'tab')
def deal_image_file
save_image_file(params[:nav_logo], 'nav')
save_image_file(params[:login_logo], 'login')
save_image_file(params[:tab_logo], 'tab')
save_image_file(params[:subject_banner], '_subject_banner')
save_image_file(params[:course_banner], '_course_banner')
save_image_file(params[:competition_banner], '_competition_banner')
save_image_file(params[:moop_cases_banner], '_moop_cases_banner')
end
def save_logo_file(file, type)
def save_image_file(file, type)
return unless file.present? && file.is_a?(ActionDispatch::Http::UploadedFile)
file_path = Util::FileManage.source_disk_filename(laboratory_setting, type)

@ -86,6 +86,52 @@
</div>
</div>
<div class="form-group px-2 setting-item">
<div class="setting-item-head"><h6>Banner设置</h6></div>
<div class="dropdown-divider"></div>
<div class="pl-0 py-3 row setting-item-body">
<div class="col-12 col-md-4 banner-item">
<%- subject_banner = setting.subject_banner_url -%>
<div class="banner-item-top">实践课程</div>
<div class="banner-item-bottom <%= subject_banner ? 'has-img' : '' %>">
<img class="banner-item-img subject-banner-img" src="<%= subject_banner %>" style="<%= subject_banner.present? ? '' : 'display: none' %>"/>
<%= file_field_tag(:subject_banner, accept: 'image/*', style: 'display: none', value: params[:subject_banner]) %>
<label for="subject_banner" class="banner-item-upload" data-toggle="tooltip" data-title="选择图片"></label>
</div>
</div>
<div class="col-12 col-md-4 banner-item">
<%- course_banner = setting.course_banner_url -%>
<div class="banner-item-top">翻转课堂</div>
<div class="banner-item-bottom <%= course_banner ? 'has-img' : '' %>">
<img class="banner-item-img course-banner-img" src="<%= course_banner %>" style="<%= course_banner.present? ? '' : 'display: none' %>"/>
<%= file_field_tag(:course_banner, accept: 'image/*', style: 'display: none', value: params[:course_banner]) %>
<label for="course_banner" class="banner-item-upload" data-toggle="tooltip" data-title="选择图片"></label>
</div>
</div>
<div class="col-12 col-md-4 banner-item">
<%- competition_banner = setting.competition_banner_url -%>
<div class="banner-item-top">在线竞赛</div>
<div class="banner-item-bottom <%= competition_banner ? 'has-img' : '' %>">
<img class="banner-item-img competition-banner-img" src="<%= competition_banner %>" style="<%= competition_banner.present? ? '' : 'display: none' %>"/>
<%= file_field_tag(:competition_banner, accept: 'image/*', style: 'display: none', value: params[:competition_banner]) %>
<label for="competition_banner" class="banner-item-upload" data-toggle="tooltip" data-title="选择图片"></label>
</div>
</div>
<div class="col-12 col-md-4 banner-item">
<%- moop_cases_banner = setting.moop_cases_banner_url -%>
<div class="banner-item-top">教学案例</div>
<div class="banner-item-bottom <%= moop_cases_banner ? 'has-img' : '' %>">
<img class="banner-item-img moop-cases-banner-img" src="<%= moop_cases_banner %>" style="<%= moop_cases_banner.present? ? '' : 'display: none' %>"/>
<%= file_field_tag(:moop_cases_banner, accept: 'image/*', style: 'display: none', value: params[:moop_cases_banner]) %>
<label for="moop_cases_banner" class="banner-item-upload" data-toggle="tooltip" data-title="选择图片"></label>
</div>
</div>
</div>
</div>
<div class="form-group px-2 setting-item">
<div class="setting-item-head"><h6>导航设置</h6></div>
<div class="dropdown-divider"></div>

@ -85,6 +85,52 @@
</div>
</div>
<div class="form-group px-2 setting-item">
<div class="setting-item-head"><h6>Banner设置</h6></div>
<div class="dropdown-divider"></div>
<div class="pl-0 py-3 row setting-item-body">
<div class="col-12 col-md-4 banner-item">
<%- subject_banner = setting.subject_banner_url -%>
<div class="banner-item-top">实践课程</div>
<div class="banner-item-bottom <%= subject_banner ? 'has-img' : '' %>">
<img class="banner-item-img subject-banner-img" src="<%= subject_banner %>" style="<%= subject_banner.present? ? '' : 'display: none' %>"/>
<%= file_field_tag(:subject_banner, accept: 'image/*', style: 'display: none', value: params[:subject_banner]) %>
<label for="subject_banner" class="banner-item-upload" data-toggle="tooltip" data-title="选择图片"></label>
</div>
</div>
<div class="col-12 col-md-4 banner-item">
<%- course_banner = setting.course_banner_url -%>
<div class="banner-item-top">翻转课堂</div>
<div class="banner-item-bottom <%= course_banner ? 'has-img' : '' %>">
<img class="banner-item-img course-banner-img" src="<%= course_banner %>" style="<%= course_banner.present? ? '' : 'display: none' %>"/>
<%= file_field_tag(:course_banner, accept: 'image/*', style: 'display: none', value: params[:course_banner]) %>
<label for="course_banner" class="banner-item-upload" data-toggle="tooltip" data-title="选择图片"></label>
</div>
</div>
<div class="col-12 col-md-4 banner-item">
<%- competition_banner = setting.competition_banner_url -%>
<div class="banner-item-top">在线竞赛</div>
<div class="banner-item-bottom <%= competition_banner ? 'has-img' : '' %>">
<img class="banner-item-img competition-banner-img" src="<%= competition_banner %>" style="<%= competition_banner.present? ? '' : 'display: none' %>"/>
<%= file_field_tag(:competition_banner, accept: 'image/*', style: 'display: none', value: params[:competition_banner]) %>
<label for="competition_banner" class="banner-item-upload" data-toggle="tooltip" data-title="选择图片"></label>
</div>
</div>
<div class="col-12 col-md-4 banner-item">
<%- moop_cases_banner = setting.moop_cases_banner_url -%>
<div class="banner-item-top">教学案例</div>
<div class="banner-item-bottom <%= moop_cases_banner ? 'has-img' : '' %>">
<img class="banner-item-img moop-cases-banner-img" src="<%= moop_cases_banner %>" style="<%= moop_cases_banner.present? ? '' : 'display: none' %>"/>
<%= file_field_tag(:moop_cases_banner, accept: 'image/*', style: 'display: none', value: params[:moop_cases_banner]) %>
<label for="moop_cases_banner" class="banner-item-upload" data-toggle="tooltip" data-title="选择图片"></label>
</div>
</div>
</div>
</div>
<div class="form-group px-2 setting-item">
<div class="setting-item-head"><h6>导航设置</h6></div>
<div class="dropdown-divider"></div>

@ -6,6 +6,11 @@ json.setting do
json.login_logo_url (setting.login_logo_url || default_setting.login_logo_url)&.[](1..-1)
json.tab_logo_url (setting.tab_logo_url || default_setting.tab_logo_url)&.[](1..-1)
json.subject_banner_url (setting.subject_banner_url || default_setting.subject_banner_url)&.[](1..-1)
json.course_banner_url (setting.course_banner_url || default_setting.course_banner_url)&.[](1..-1)
json.competition_banner_url (setting.competition_banner_url || default_setting.competition_banner_url)&.[](1..-1)
json.moop_cases_banner_url (setting.moop_cases_banner_url || default_setting.moop_cases_banner_url)&.[](1..-1)
json.navbar setting.navbar || default_setting.navbar
json.footer setting.footer || default_setting.footer

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -25960,6 +25960,86 @@ input.form-control {
font-size: 14px;
}
/* line 100, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item {
margin-bottom: 15px;
display: -webkit-box;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
flex-direction: column;
}
/* line 105, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item-img, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-img {
display: block;
width: 300px;
height: 80px;
background: #f0f0f0;
}
/* line 112, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item-upload, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-upload {
cursor: pointer;
position: absolute;
top: 0;
width: 300px;
height: 80px;
background: #F5F5F5;
border: 1px solid #E5E5E5;
}
/* line 121, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item-upload::before, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-upload::before {
content: '';
position: absolute;
top: 27px;
left: 149px;
width: 2px;
height: 26px;
background: #E5E5E5;
}
/* line 131, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item-upload::after, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-upload::after {
content: '';
position: absolute;
top: 39px;
left: 137px;
width: 26px;
height: 2px;
background: #E5E5E5;
}
/* line 142, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item-top, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-top {
margin-bottom: 10px;
}
/* line 146, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item-bottom, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-bottom {
position: relative;
width: 300px;
height: 80px;
}
/* line 152, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item-bottom.has-img .banner-item-upload, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-bottom.has-img .banner-item-upload {
display: none;
}
/* line 157, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item-bottom.has-img:hover .banner-item-upload, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-bottom.has-img:hover .banner-item-upload {
display: block;
background: rgba(145, 145, 145, 0.8);
}
/* line 165, app/assets/stylesheets/admins/laboratories.scss */
.admins-laboratory-settings-show-page .edit-laboratory-setting-container .banner-item-title, .admins-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-title {
color: #23272B;
font-size: 14px;
}
/* line 4, app/assets/stylesheets/admins/library_applies.scss */
.admins-library-applies-index-page .library-applies-list-container span.apply-status-agreed {
color: #28a745;

@ -137531,7 +137531,7 @@ $(document).on('turbolinks:load', function() {
var $container = $('.edit-laboratory-setting-container');
var $form = $container.find('.edit_laboratory');
$('.logo-item-left').on("change", 'input[type="file"]', function () {
$('.logo-item-left, .banner-item-bottom').on("change", 'input[type="file"]', function () {
var $fileInput = $(this);
var file = this.files[0];
var imageType = /image.*/;

@ -25233,6 +25233,86 @@ input.form-control {
font-size: 14px;
}
/* line 76, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item {
margin-bottom: 15px;
display: -webkit-box;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
flex-direction: column;
}
/* line 81, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item-img, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-img {
display: block;
width: 300px;
height: 80px;
background: #f0f0f0;
}
/* line 88, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item-upload, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-upload {
cursor: pointer;
position: absolute;
top: 0;
width: 300px;
height: 80px;
background: #F5F5F5;
border: 1px solid #E5E5E5;
}
/* line 97, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item-upload::before, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-upload::before {
content: '';
position: absolute;
top: 27px;
left: 149px;
width: 2px;
height: 26px;
background: #E5E5E5;
}
/* line 107, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item-upload::after, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-upload::after {
content: '';
position: absolute;
top: 39px;
left: 137px;
width: 26px;
height: 2px;
background: #E5E5E5;
}
/* line 118, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item-top, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-top {
margin-bottom: 10px;
}
/* line 122, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item-bottom, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-bottom {
position: relative;
width: 300px;
height: 80px;
}
/* line 128, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item-bottom.has-img .banner-item-upload, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-bottom.has-img .banner-item-upload {
display: none;
}
/* line 133, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item-bottom.has-img:hover .banner-item-upload, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-bottom.has-img:hover .banner-item-upload {
display: block;
background: rgba(145, 145, 145, 0.8);
}
/* line 141, app/assets/stylesheets/cooperative/laboratory_settings.scss */
.cooperative-laboratory-settings-edit-page .edit-laboratory-setting-container .banner-item-title, .cooperative-laboratory-settings-update-page .edit-laboratory-setting-container .banner-item-title {
color: #23272B;
font-size: 14px;
}
/* line 1, app/assets/stylesheets/cooperative/sidebar.scss */
#sidebar {
min-width: 200px;

@ -135974,7 +135974,7 @@ $(document).on('turbolinks:load', function() {
var $container = $('.edit-laboratory-setting-container');
var $form = $container.find('.edit_laboratory');
$('.logo-item-left').on("change", 'input[type="file"]', function () {
$('.logo-item-left, .banner-item-bottom').on("change", 'input[type="file"]', function () {
var $fileInput = $(this);
var file = this.files[0];
var imageType = /image.*/;
Loading…
Cancel
Save