forked from Gitlink/forgeplus
ADD 页面置顶功能、帮助文档快速入口
This commit is contained in:
parent
b1abac201f
commit
dac07bcae0
|
@ -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.
|
|
@ -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.
|
|
@ -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/
|
|
@ -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/
|
|
@ -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
|
|
@ -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
|
|
@ -0,0 +1,2 @@
|
|||
module Admins::FaqsHelper
|
||||
end
|
|
@ -0,0 +1,2 @@
|
|||
module Helps::FaqsHelper
|
||||
end
|
|
@ -47,6 +47,7 @@
|
|||
# watchers_count :integer default("0")
|
||||
# devops_step :integer default("0")
|
||||
# gitea_token :string(255)
|
||||
# platform :string(255)
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
|
|
|
@ -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
|
|
@ -47,6 +47,7 @@
|
|||
# watchers_count :integer default("0")
|
||||
# devops_step :integer default("0")
|
||||
# gitea_token :string(255)
|
||||
# platform :string(255)
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
|
|
|
@ -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">×</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>
|
|
@ -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 } %>
|
|
@ -0,0 +1,2 @@
|
|||
$("#faq-modals").html("<%= j render(partial: 'admins/faqs/form_modal', locals: {type: 'update'}) %>")
|
||||
$(".faq-change-modal").modal('show');
|
|
@ -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>
|
|
@ -0,0 +1 @@
|
|||
$('.faqs-list-container').html("<%= j( render partial: 'admins/faqs/list', locals: { faqs: @faqs } ) %>");
|
|
@ -0,0 +1,2 @@
|
|||
$("#faq-modals").html("<%= j render(partial: 'admins/faqs/form_modal', locals: {type: 'create'}) %>")
|
||||
$(".faq-change-modal").modal('show');
|
|
@ -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 %>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
Loading…
Reference in New Issue