ADD 页面置顶功能、帮助文档快速入口

This commit is contained in:
jasder 2021-05-14 16:23:19 +08:00
parent b1abac201f
commit dac07bcae0
21 changed files with 197 additions and 1 deletions

View File

@ -0,0 +1,2 @@
// Place all the behaviors and hooks related to the matching controller here.
// All this logic will automatically be available in application.js.

View File

@ -0,0 +1,2 @@
// Place all the behaviors and hooks related to the matching controller here.
// All this logic will automatically be available in application.js.

View File

@ -0,0 +1,3 @@
// Place all the styles related to the admins/faqs controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@ -0,0 +1,3 @@
// Place all the styles related to the helps/faqs controller here.
// They will automatically be included in application.css.
// You can use Sass (SCSS) here: http://sass-lang.com/

View File

@ -0,0 +1,58 @@
class Admins::FaqsController < Admins::BaseController
before_action :find_faq, only: [:edit,:update, :destroy]
def index
sort_by = params[:sort_by] ||= 'created_at'
sort_direction = params[:sort_direction] ||= 'desc'
keyword = params[:keyword].to_s.strip
collection = Faq.search_question(keyword).order("#{sort_by} #{sort_direction}")
@faqs = paginate collection
end
def new
@faq = Faq.new
end
def edit
end
def update
begin
@faq.update!(faq_params)
flash[:success] = '修改成功'
rescue Exception
flash[:danger] = @faq.errors.full_messages.to_sentence
end
redirect_to admins_faqs_path
end
def destroy
@faq.destroy
redirect_to admins_faqs_path
flash[:success] = "删除成功"
end
def create
@faq = Faq.new(faq_params)
begin
@faq.save!
flash[:success] = '创建成功'
rescue Exception
flash[:danger] = @faq.errors.full_messages.to_sentence
end
redirect_to admins_faqs_path
end
private
def find_faq
@faq = Faq.find params[:id]
end
def faq_params
params.require(:faq).permit(:question, :url)
end
end

View File

@ -0,0 +1,8 @@
class Helps::FaqsController < ApplicationController
skip_before_action :check_sign, :user_setup
def index
faqs = Faq.select_without_id
render json: faqs.as_json(:except => [:id])
end
end

View File

@ -0,0 +1,2 @@
module Admins::FaqsHelper
end

View File

@ -0,0 +1,2 @@
module Helps::FaqsHelper
end

View File

@ -47,6 +47,7 @@
# watchers_count :integer default("0")
# devops_step :integer default("0")
# gitea_token :string(255)
# platform :string(255)
#
# Indexes
#

20
app/models/faq.rb Normal file
View File

@ -0,0 +1,20 @@
# == Schema Information
#
# Table name: faqs
#
# id :integer not null, primary key
# question :string(255)
# url :string(255)
# created_at :datetime not null
# updated_at :datetime not null
#
class Faq < ApplicationRecord
validates :question, presence: true,length: { maximum: 100, too_long: "最多%{count}个字符" }
validates :url, format: { with: CustomRegexp::URL, multiline: true, message: "格式不正确" }
scope :select_without_id, -> { select(:question, :url) }
scope :search_question, ->(keyword) { where("question LIKE ?", "%#{keyword}%") unless keyword.blank?}
end

View File

@ -47,6 +47,7 @@
# watchers_count :integer default("0")
# devops_step :integer default("0")
# gitea_token :string(255)
# platform :string(255)
#
# Indexes
#

View File

@ -0,0 +1,24 @@
<div class="modal fade faq-change-modal" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-dialog-centered" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"><%= type == "create" ? "新增" : "编辑" %></h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
</div>
<%= form_for @faq, url: {controller: "faqs", action: "#{type}"} do |p| %>
<div class="modal-body">
<%= p.text_field :question,class: "form-control input-lg",placeholder: "问题",required: true, maxlength: 100%>
</div>
<div class="modal-body">
<%= p.text_field :url,class: "form-control input-lg",placeholder: "链接",required: true, maxlength: 100%>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">取消</button>
<%= p.submit "确认", class: "btn btn-primary submit-btn" %>
</div>
<% end %>
</div>
</div>
</div>

View File

@ -0,0 +1,33 @@
<table class="table table-hover text-center subject-list-table">
<thead class="thead-light">
<tr>
<th width="5%">序号</th>
<th width="20%">标题</th>
<th width="30%">url</th>
<th width="10%"><%= sort_tag('创建于', name: 'created_at', path: admins_faqs_path) %></th>
<th width="10%"><%= sort_tag('更新于', name: 'updated_at', path: admins_faqs_path) %></th>
<th width="25%">操作</th>
</tr>
</thead>
<tbody>
<% if faqs.present? %>
<% faqs.each_with_index do |faq, index| %>
<tr class="user-item-<%= faq.id %>">
<td><%= list_index_no((params[:page] || 1).to_i, index) %></td>
<td><%= faq.question%></td>
<td><%= link_to faq.url, target: '_blank' %></td>
<td><%= display_text(faq.created_at&.strftime('%Y-%m-%d %H:%M')) %></td>
<td><%= display_text(faq.updated_at&.strftime('%Y-%m-%d %H:%M')) %></td>
<td class="action-container">
<%= link_to "编辑", edit_admins_faq_path(faq), remote: true, class: "action" %>
<%= link_to "删除", admins_faqs_path(faq.id), method: :delete, data:{confirm: "确认删除的吗?"}, class: "delete-project-action" %>
</td>
</tr>
<% end %>
<% else %>
<%= render 'admins/shared/no_data_for_table' %>
<% end %>
</tbody>
</table>
<%= render partial: 'admins/shared/paginate', locals: { objects: faqs } %>

View File

@ -0,0 +1,2 @@
$("#faq-modals").html("<%= j render(partial: 'admins/faqs/form_modal', locals: {type: 'update'}) %>")
$(".faq-change-modal").modal('show');

View File

@ -0,0 +1,17 @@
<% define_admin_breadcrumbs do %>
<% add_admin_breadcrumb('FAQ', admins_faqs_path) %>
<% end %>
<div class="box search-form-container faq-list-form">
<%= form_tag(admins_faqs_path, method: :get, class: 'form-inline search-form flex-1', remote: true) do %>
<%= text_field_tag(:keyword, params[:keyword], class: 'form-control col-sm-2 ml-3', placeholder: '输入标题搜素') %>
<%= submit_tag('搜索', class: 'btn btn-primary ml-3', 'data-disable-with': '搜索中...') %>
<% end %>
<%= link_to "新增", new_admins_faq_path, remote: true, class: "btn btn-primary pull-right", "data-disabled-with":"...新增" %>
</div>
<div class="box admin-list-container faqs-list-container">
<%= render partial: 'admins/faqs/list', locals: { faqs: @faqs } %>
</div>
<div id="faq-modals">
</div>

View File

@ -0,0 +1 @@
$('.faqs-list-container').html("<%= j( render partial: 'admins/faqs/list', locals: { faqs: @faqs } ) %>");

View File

@ -0,0 +1,2 @@
$("#faq-modals").html("<%= j render(partial: 'admins/faqs/form_modal', locals: {type: 'create'}) %>")
$(".faq-change-modal").modal('show');

View File

@ -10,7 +10,6 @@
</td>
<td>
<% if school && school.identifier.present? %>
<%= link_to school.identifier.to_s, statistics_college_path(school.identifier), target: '_blank' %>
<% else %>
--
<% end %>

View File

@ -38,6 +38,7 @@
<li><%= sidebar_item(admins_cooperatives_path, '合作伙伴', icon: 'handshake-o', controller: 'admins-cooperatives') %></li>
<li><%= sidebar_item(edit_admins_agreement_path, '服务协议', icon: 'file-text-o', controller: 'admins-agreements') %></li>
<li><%= sidebar_item(edit_admins_help_center_path, '帮助中心', icon: 'question-circle-o', controller: 'admins-help_centers') %></li>
<li><%= sidebar_item(admins_faqs_path, 'FAQ', icon: 'question-circle', controller: 'admins-faqs') %></li>
<% end %>
</li>
<li>

View File

@ -604,6 +604,10 @@ Rails.application.routes.draw do
end
end
# Project Area END
scope module: :helps do
resources :faqs, only: [:index]
end
end
namespace :admins do
@ -780,6 +784,7 @@ Rails.application.routes.draw do
post :drag, on: :collection
post :replace_image_url, on: :member
end
resources :faqs
resources :laboratories, only: [:index, :create, :destroy, :update] do
member do
get :shixuns_for_select

View File

@ -0,0 +1,10 @@
class CreateFaqs < ActiveRecord::Migration[5.2]
def change
create_table :faqs do |t|
t.string :question
t.string :url
t.timestamps
end
end
end