diff --git a/app/assets/javascripts/admins/reversed_keywords/index.js b/app/assets/javascripts/admins/reversed_keywords/index.js new file mode 100644 index 000000000..df14219d2 --- /dev/null +++ b/app/assets/javascripts/admins/reversed_keywords/index.js @@ -0,0 +1,76 @@ +/* + * @Description: Do not edit + * @Date: 2021-08-31 11:16:45 + * @LastEditors: viletyy + * @Author: viletyy + * @LastEditTime: 2021-08-31 14:19:46 + * @FilePath: /forgeplus/app/assets/javascripts/admins/reversed_keywords/index.js + */ +$(document).on('turbolinks:load', function(){ + + var showSuccessNotify = function() { + $.notify({ + message: '操作成功' + },{ + type: 'success' + }); + } + + // close user + $('.reversed-keyword-list-container').on('click', '.close-action', function(){ + var $closeAction = $(this); + var $uncloseAction = $closeAction.siblings('.unclose-action'); + + var keywordID = $closeAction.data('id'); + customConfirm({ + content: '确认关闭限制吗?', + ok: function(){ + $.ajax({ + url: '/admins/reversed_keywords/' + keywordID, + method: 'PUT', + dataType: 'json', + data: { + reversed_keyword: { + closed: true + } + }, + success: function() { + showSuccessNotify(); + $closeAction.hide(); + $uncloseAction.show(); + $(".reversed-keyword-item-"+keywordID).children('td').eq(3).text("") + } + }); + } + }); + }); + + // unclose user + $('.reversed-keyword-list-container').on('click', '.unclose-action', function(){ + var $uncloseAction = $(this); + var $closeAction = $uncloseAction.siblings('.close-action'); + + var keywordID = $uncloseAction.data('id'); + customConfirm({ + content: '确认开启限制吗?', + ok: function () { + $.ajax({ + url: '/admins/reversed_keywords/' + keywordID, + method: 'PUT', + dataType: 'json', + data: { + reversed_keyword: { + closed: false + } + }, + success: function() { + showSuccessNotify(); + $closeAction.show(); + $uncloseAction.hide(); + $(".reversed-keyword-item-"+keywordID).children('td').eq(3).text("√") + } + }); + } + }) + }); +}) \ No newline at end of file diff --git a/app/controllers/admins/reversed_keywords_controller.rb b/app/controllers/admins/reversed_keywords_controller.rb new file mode 100644 index 000000000..8a8442f72 --- /dev/null +++ b/app/controllers/admins/reversed_keywords_controller.rb @@ -0,0 +1,84 @@ +class Admins::ReversedKeywordsController < Admins::BaseController + before_action :get_keyword, only: [:edit,:update, :destroy] + # before_action :validate_identifer, only: [:create, :update] + + def index + sort_by = ReversedKeyword.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at' + sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc' + q = ReversedKeyword.ransack(identifier_cont: params[:search]) + keywords = q.result(distinct: true).order("#{sort_by} #{sort_direction}") + @keywords = paginate(keywords) + + end + + def new + @keyword = ReversedKeyword.new + end + + def edit + end + + def create + @keyword = ReversedKeyword.new(keyword_params) + if @keyword.save + redirect_to admins_reversed_keywords_path + flash[:success] = '系统保留关键词创建成功' + else + redirect_to admins_reversed_keywords_path + flash[:danger] = @keyword.errors.full_messages.join(",") + end + end + + def update + + respond_to do |format| + if @keyword.update_attributes(keyword_params) + format.html do + redirect_to admins_reversed_keywords_path + flash[:success] = '系统保留关键词更新成功' + end + format.js {render_ok} + else + format.html do + redirect_to admins_reversed_keywords_path + flash[:danger] = @keyword.errors.full_messages.join(",") + end + format.js {render_js_error} + end + end + end + + def destroy + if @keyword.destroy + redirect_to admins_reversed_keywords_path + flash[:success] = "系统保留关键词删除成功" + else + redirect_to admins_reversed_keywords_path + flash[:danger] = "系统保留关键词删除失败" + end + end + + private + def keyword_params + params.require(:reversed_keyword).permit! + end + + def get_keyword + @keyword = ReversedKeyword.find_by(id: params[:id]) + unless @keyword.present? + redirect_to admins_reversed_keywords_path + flash[:danger] = "系统保留关键词不存在" + end + end + + def validate_identifer + identifer = keyword_params[:identifier].to_s.downcase + if identifer.blank? + redirect_to admins_reversed_keywords_path + flash[:danger] = '系统保留关键词标识不能为空' + elsif ProjectLanguage.exists?(name: identifer) + redirect_to admins_reversed_keywords_path + flash[:danger] = '系统保留关键词已存在' + end + end +end \ No newline at end of file diff --git a/app/models/reversed_keyword.rb b/app/models/reversed_keyword.rb index 8076a3413..cd8027fbd 100644 --- a/app/models/reversed_keyword.rb +++ b/app/models/reversed_keyword.rb @@ -12,5 +12,15 @@ class ReversedKeyword < ApplicationRecord - scope :is_reversed, -> (identifier){where(identifier: identifier, closed: false) if identifier.present?} + scope :is_reversed, -> (identifier){where(identifier: identifier.downcase, closed: false) if identifier.present?} + + validates :identifier, presence: true, uniqueness: true + + before_validation :set_identifier + + private + + def set_identifier + self.identifier = self.identifier.downcase + end end diff --git a/app/views/admins/reversed_keywords/_form_modal.html.erb b/app/views/admins/reversed_keywords/_form_modal.html.erb new file mode 100644 index 000000000..7dd2f2ba4 --- /dev/null +++ b/app/views/admins/reversed_keywords/_form_modal.html.erb @@ -0,0 +1,32 @@ +
\ No newline at end of file diff --git a/app/views/admins/reversed_keywords/_list.html.erb b/app/views/admins/reversed_keywords/_list.html.erb new file mode 100644 index 000000000..5577c9999 --- /dev/null +++ b/app/views/admins/reversed_keywords/_list.html.erb @@ -0,0 +1,37 @@ +序号 | +<%= sort_tag('标识', name: 'identifier', path: admins_reversed_keywords_path) %> | +描述 | +<%= sort_tag('限制是否开启', name: 'closed', path: admins_reversed_keywords_path) %> | +<%= sort_tag('创建时间', name: 'created_at', path: admins_reversed_keywords_path) %> | +操作 | +
---|---|---|---|---|---|
<%= list_index_no((params[:page] || 1).to_i, index) %> | ++ <%= link_to(keyword.identifier, "javascript:void(0)") %> + | +<%= keyword.description %> | +<%= !keyword.closed ? '√' : '' %> | +<%= keyword.created_at&.strftime('%Y-%m-%d %H:%M') %> | ++ <%= javascript_void_link '开启限制', class: 'action unclose-action', data: { id: keyword.id }, style: keyword.closed? ? '' : 'display: none;' %> + <%= javascript_void_link '关闭限制', class: 'action close-action', data: { id: keyword.id }, style: keyword.closed? ? 'display: none;' : '' %> + <%= link_to "编辑", edit_admins_reversed_keyword_path(keyword), remote: true, class: "action" %> + <%= link_to "删除", admins_reversed_keyword_path(keyword), method: :delete, data:{confirm: "确认删除的吗?"}, class: "action" %> + | +