commit
5d91b6b3be
|
@ -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] ||= 'updated_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.order(updated_at: :desc)
|
||||
render json: faqs.as_json(:except => [:id])
|
||||
end
|
||||
end
|
|
@ -1,5 +1,5 @@
|
|||
class Organizations::OrganizationsController < Organizations::BaseController
|
||||
before_action :require_login, except: [:index, :show]
|
||||
before_action :require_login, except: [:index, :show, :recommend]
|
||||
before_action :convert_image!, only: [:create, :update]
|
||||
before_action :load_organization, only: [:show, :update, :destroy]
|
||||
before_action :check_user_can_edit_org, only: [:update, :destroy]
|
||||
|
@ -62,6 +62,13 @@ class Organizations::OrganizationsController < Organizations::BaseController
|
|||
tip_exception(e.message)
|
||||
end
|
||||
|
||||
def recommend
|
||||
recommend = %W(xuos Huawei_Technology openatom_foundation pkecosystem TensorLayer)
|
||||
|
||||
@organizations = Organization.with_visibility(%w(common))
|
||||
.where(login: recommend).select(:id, :login, :firstname, :lastname, :nickname)
|
||||
end
|
||||
|
||||
private
|
||||
def convert_image!
|
||||
return unless params[:image].present?
|
||||
|
|
|
@ -167,7 +167,7 @@ class ProjectsController < ApplicationController
|
|||
end
|
||||
|
||||
def recommend
|
||||
@projects = Project.recommend.includes(:repository, :project_category, :owner).order(id: :desc).limit(5)
|
||||
@projects = Project.recommend.includes(:repository, :project_category, :owner).order(id: :desc)
|
||||
end
|
||||
|
||||
def about
|
||||
|
|
|
@ -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
|
||||
#
|
||||
|
|
|
@ -47,6 +47,7 @@
|
|||
# watchers_count :integer default("0")
|
||||
# devops_step :integer default("0")
|
||||
# gitea_token :string(255)
|
||||
# platform :string(255)
|
||||
#
|
||||
# Indexes
|
||||
#
|
||||
|
|
|
@ -21,9 +21,7 @@ class Repositories::MigrateService < ApplicationService
|
|||
|
||||
private
|
||||
def repository_params
|
||||
params.merge(project_id: project.id,
|
||||
identifier: params[:identifier],
|
||||
source_clone_url: params[:source_clone_url])
|
||||
params.merge(project_id: project.id)
|
||||
end
|
||||
|
||||
def gitea_repository_params
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
json.organizations @organizations do |organization|
|
||||
json.id organization.id
|
||||
json.name organization.login
|
||||
json.nickname organization.nickname.blank? ? organization.name : organization.nickname
|
||||
json.avatar_url url_to_avatar(organization)
|
||||
end
|
|
@ -21,7 +21,7 @@ json.versions_count @project.versions_count #里程碑数量
|
|||
json.version_releases_count @project.releases_size(@user.try(:id), "all")
|
||||
json.version_releasesed_count @project.releases_size(@user.try(:id), "released") #已发行的版本
|
||||
json.permission render_permission(@user, @project)
|
||||
json.mirror_url @project&.repository.source_clone_url
|
||||
json.mirror_url @project&.repository.remote_mirror_url
|
||||
json.mirror @project&.repository.mirror_url.present?
|
||||
json.type @project.numerical_for_project_type
|
||||
json.open_devops @project.open_devops?
|
||||
|
|
|
@ -130,6 +130,7 @@ Rails.application.routes.draw do
|
|||
get :search
|
||||
end
|
||||
end
|
||||
get :recommend, on: :collection
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -603,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
|
||||
|
@ -779,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