From 36965e3a52a32fee924abdad0e61359e61bb1f71 Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 6 May 2025 10:00:18 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=8A=80=E6=9C=AF?= =?UTF-8?q?=E6=8E=A2=E8=AE=A8=E6=A8=A1=E5=9D=97=E5=90=8E=E5=8F=B0=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../topic/technical_discussions_controller.rb | 56 +++++++++++++++++++ app/models/project_unit.rb | 2 +- app/models/topic/technical_discussion.rb | 16 ++++++ .../_form_modal.html.erb | 44 +++++++++++++++ .../technical_discussions/_list.html.erb | 33 +++++++++++ .../topic/technical_discussions/edit.js.erb | 2 + .../technical_discussions/index.html.erb | 18 ++++++ .../topic/technical_discussions/index.js.erb | 1 + .../topic/technical_discussions/new.js.erb | 2 + config/routes.rb | 1 + ...29153804_add_description_date_to_topics.rb | 6 ++ 11 files changed, 180 insertions(+), 1 deletion(-) create mode 100644 app/controllers/admins/topic/technical_discussions_controller.rb create mode 100644 app/models/topic/technical_discussion.rb create mode 100644 app/views/admins/topic/technical_discussions/_form_modal.html.erb create mode 100644 app/views/admins/topic/technical_discussions/_list.html.erb create mode 100644 app/views/admins/topic/technical_discussions/edit.js.erb create mode 100644 app/views/admins/topic/technical_discussions/index.html.erb create mode 100644 app/views/admins/topic/technical_discussions/index.js.erb create mode 100644 app/views/admins/topic/technical_discussions/new.js.erb create mode 100644 db/migrate/20250429153804_add_description_date_to_topics.rb diff --git a/app/controllers/admins/topic/technical_discussions_controller.rb b/app/controllers/admins/topic/technical_discussions_controller.rb new file mode 100644 index 000000000..a84d9be78 --- /dev/null +++ b/app/controllers/admins/topic/technical_discussions_controller.rb @@ -0,0 +1,56 @@ +class Admins::Topic::TechnicalDiscussionsController < Admins::Topic::BaseController + before_action :require_business + before_action :find_discussion, only: [:edit, :update, :destroy] + + def index + @discussions = paginate(::Topic::TechnicalDiscussion) + end + + def new + @discussion = ::Topic::TechnicalDiscussion.new + end + + def create + @discussion = ::Topic::TechnicalDiscussion.new(discussion_params) + if @discussion.save + redirect_to admins_topic_technical_discussions_path + flash[:success] = "新增技术探讨成功" + else + redirect_to admins_topic_technical_discussions_path + flash[:danger] = "新增技术探讨失败" + end + end + + def edit + end + + def update + @discussion.attributes = discussion_params + if @discussion.save + redirect_to admins_topic_technical_discussions_path + flash[:success] = "更新技术探讨成功" + else + redirect_to admins_topic_technical_discussions_path + flash[:danger] = "更新技术探讨失败" + end + end + + def destroy + if @discussion.destroy + redirect_to admins_topic_technical_discussions_path + flash[:success] = "删除技术探讨成功" + else + redirect_to admins_topic_technical_discussions_path + flash[:danger] = "删除技术探讨失败" + end + end + + private + def find_discussion + @discussion = ::Topic::TechnicalDiscussion.find_by_id(params[:id]) + end + + def discussion_params + params.require(:topic_technical_discussion).permit(:title, :description, :date, :order_index) + end +end \ No newline at end of file diff --git a/app/models/project_unit.rb b/app/models/project_unit.rb index 03a2cc99a..3063a3355 100644 --- a/app/models/project_unit.rb +++ b/app/models/project_unit.rb @@ -26,7 +26,7 @@ class ProjectUnit < ApplicationRecord unit_types = unit_types.except("dataset") unit_types.each do |_, v| self.create!(project_id: project_id, unit_type: v) - end + end end def self.update_by_unit_types!(project, types) diff --git a/app/models/topic/technical_discussion.rb b/app/models/topic/technical_discussion.rb new file mode 100644 index 000000000..41164ff88 --- /dev/null +++ b/app/models/topic/technical_discussion.rb @@ -0,0 +1,16 @@ +# == Schema Information +# +# Table name: topics +# +# id :integer not null, primary key +# type :string(255) +# title :string(255) +# uuid :integer +# url :string(255) +# order_index :integer +# location :integer default("0") +# + +# 首页技术讨论 +class Topic::TechnicalDiscussion < Topic +end diff --git a/app/views/admins/topic/technical_discussions/_form_modal.html.erb b/app/views/admins/topic/technical_discussions/_form_modal.html.erb new file mode 100644 index 000000000..f2a7a505a --- /dev/null +++ b/app/views/admins/topic/technical_discussions/_form_modal.html.erb @@ -0,0 +1,44 @@ + \ No newline at end of file diff --git a/app/views/admins/topic/technical_discussions/_list.html.erb b/app/views/admins/topic/technical_discussions/_list.html.erb new file mode 100644 index 000000000..d22566878 --- /dev/null +++ b/app/views/admins/topic/technical_discussions/_list.html.erb @@ -0,0 +1,33 @@ + + + + + + + + + + + + + <% if discussions.present? %> + <% discussions.each_with_index do |discussion, index| %> + + + + + + + + + <% end %> + <% else %> + <%= render 'admins/shared/no_data_for_table' %> + <% end %> + +
序号标题正文日期排序等级操作
<%= list_index_no((params[:page] || 1).to_i, index) %><%= discussion.title %><%= discussion.description %><%= discussion.date %><%= discussion.order_index %> + <%= link_to "编辑", edit_admins_topic_technical_discussion_path(discussion), remote: true, class: "action" %> + <%= link_to "删除", admins_topic_technical_discussion_path(discussion), method: :delete, data:{confirm: "确认删除的吗?"}, class: "action" %> +
+ +<%= render partial: 'admins/shared/paginate', locals: { objects: discussions } %> \ No newline at end of file diff --git a/app/views/admins/topic/technical_discussions/edit.js.erb b/app/views/admins/topic/technical_discussions/edit.js.erb new file mode 100644 index 000000000..3df73f06f --- /dev/null +++ b/app/views/admins/topic/technical_discussions/edit.js.erb @@ -0,0 +1,2 @@ +$("#discussion-modals").html("<%= j render(partial: 'admins/topic/technical_discussions/form_modal', locals: {type: 'update'}) %>") +$(".discussion-change-modal").modal('show'); diff --git a/app/views/admins/topic/technical_discussions/index.html.erb b/app/views/admins/topic/technical_discussions/index.html.erb new file mode 100644 index 000000000..a21e8db6c --- /dev/null +++ b/app/views/admins/topic/technical_discussions/index.html.erb @@ -0,0 +1,18 @@ +<% define_admin_breadcrumbs do %> + <% add_admin_breadcrumb('技术探讨管理') %> +<% end %> + +
+ <%= form_tag(admins_topic_technical_discussions_path, method: :get, class: 'form-inline search-form flex-1', remote: true) do %> + <%= text_field_tag(:search, params[:search], class: 'form-control col-12 col-md-2 mr-3', placeholder: '标题检索') %> + <%= submit_tag('搜索', class: 'btn btn-primary ml-3', 'data-disable-with': '搜索中...') %> + + <% end %> + <%= link_to "新增", new_admins_topic_technical_discussion_path, remote: true, class: "btn btn-primary pull-right", "data-disabled-with":"...新增" %> +
+ +
+ <%= render partial: 'admins/topic/technical_discussions/list', locals: { discussions: @discussions } %> +
+
+
diff --git a/app/views/admins/topic/technical_discussions/index.js.erb b/app/views/admins/topic/technical_discussions/index.js.erb new file mode 100644 index 000000000..bb1aed5b3 --- /dev/null +++ b/app/views/admins/topic/technical_discussions/index.js.erb @@ -0,0 +1 @@ +$('.discussions-list-container').html("<%= j( render partial: 'admins/topic/technical_discussions/list', locals: { discusssions: @discusssions } ) %>"); \ No newline at end of file diff --git a/app/views/admins/topic/technical_discussions/new.js.erb b/app/views/admins/topic/technical_discussions/new.js.erb new file mode 100644 index 000000000..e5227df16 --- /dev/null +++ b/app/views/admins/topic/technical_discussions/new.js.erb @@ -0,0 +1,2 @@ +$("#discussion-modals").html("<%= j render(partial: 'admins/topic/technical_discussions/form_modal', locals: {type: 'create'}) %>") +$(".discussion-change-modal").modal('show'); \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index 1d6cd3b62..38383900e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -867,6 +867,7 @@ Rails.application.routes.draw do get '/baidu_tongji', to: 'dashboards#baidu_tongji' get '/baidu_tongji_auth', to: 'dashboards#baidu_tongji_auth' namespace :topic do + resources :technical_discussions resources :ck_js_forums resources :activity_forums resources :banners diff --git a/db/migrate/20250429153804_add_description_date_to_topics.rb b/db/migrate/20250429153804_add_description_date_to_topics.rb new file mode 100644 index 000000000..11cd59185 --- /dev/null +++ b/db/migrate/20250429153804_add_description_date_to_topics.rb @@ -0,0 +1,6 @@ +class AddDescriptionDateToTopics < ActiveRecord::Migration[5.2] + def change + add_column :topics, :description, :text + add_column :topics, :date, :string + end +end