From 76d317d9bbf5a8878b8ea15e8a8b33309f612a56 Mon Sep 17 00:00:00 2001 From: rulingcom Date: Fri, 12 Jun 2026 17:27:21 +0800 Subject: [PATCH] Add category filter to order page, fix order position logic, redirect back after create/update --- .../admin/web_resources_controller.rb | 21 +- app/views/admin/web_resources/_order.html.erb | 203 ++++++++++++++++++ app/views/admin/web_resources/order.html.erb | 200 +---------------- 3 files changed, 222 insertions(+), 202 deletions(-) create mode 100644 app/views/admin/web_resources/_order.html.erb diff --git a/app/controllers/admin/web_resources_controller.rb b/app/controllers/admin/web_resources_controller.rb index ddebf46..ab03f6a 100644 --- a/app/controllers/admin/web_resources_controller.rb +++ b/app/controllers/admin/web_resources_controller.rb @@ -32,15 +32,22 @@ class Admin::WebResourcesController < OrbitAdminController epl.save end end - @links = WebLink.all.asc(:order_position) + @categories = @module_app.categories.enabled + module_app = @categories[0].module_app rescue nil + @filter_fields = { + :category => @categories.sort_by{|c| (((module_app.asc rescue true) ? c.sort_number : -c.sort_number) rescue c.id)}.map{|c| {:title=>(c.title.blank? ? " " : c.title), :id=>c.id}} + } + @links = WebLink.all.with_categories(filters("category")).asc(:order_position) + render :partial => "order" if request.xhr? end - + def updateorder ids_with_order = params[:order] - ids_with_order.each_with_index do |id,index| + positions = WebLink.in(id: ids_with_order).asc(:order_position).map(&:order_position) + ids_with_order.each_with_index do |id, index| link = WebLink.find(id) rescue nil if !link.nil? - link.order_position = index + link.order_position = positions[index] link.save end end @@ -48,6 +55,7 @@ class Admin::WebResourcesController < OrbitAdminController end def new + session[:return_to] = request.referer @tags =@module_app.tags @categories = @module_app.categories.enabled @statuses = [] @@ -62,10 +70,11 @@ class Admin::WebResourcesController < OrbitAdminController max_position = -1 if max_position.nil? link.order_position = max_position + 1 link.save - redirect_to admin_web_resources_path + redirect_to session.delete(:return_to) || admin_web_resources_path end def edit + session[:return_to] = request.referer if can_edit_or_delete?(@link) @tags =@module_app.tags @categories = @module_app.categories.enabled @@ -78,7 +87,7 @@ class Admin::WebResourcesController < OrbitAdminController def update @link.update_attributes(link_params) @link.save - redirect_to admin_web_resources_path + redirect_to session.delete(:return_to) || admin_web_resources_path end def destroy diff --git a/app/views/admin/web_resources/_order.html.erb b/app/views/admin/web_resources/_order.html.erb new file mode 100644 index 0000000..6e2bbb2 --- /dev/null +++ b/app/views/admin/web_resources/_order.html.erb @@ -0,0 +1,203 @@ + +
<%= t("web_link.please_save") %>
+ + + + + + + + + + <% @links.each_with_index do |link,i| %> + + + + + + <% end %> + +
<%= t("web_link.position") %><%= t("web_link.link") %>
+
<%= (i + 1).to_s %>
+
+ +
+
+ + +
+ + diff --git a/app/views/admin/web_resources/order.html.erb b/app/views/admin/web_resources/order.html.erb index 4b527a6..34d262e 100644 --- a/app/views/admin/web_resources/order.html.erb +++ b/app/views/admin/web_resources/order.html.erb @@ -1,199 +1,7 @@ <% content_for :page_specific_css do %> <%= stylesheet_link_tag "admin/web_links" %> <% end %> - -
<%= t("web_link.please_save") %>
- - - - - - - - - <% @links.each_with_index do |link,i| %> - - - - - - <% end %> - -
<%= t("web_link.position") %><%= t("web_link.link") %>
-
<%= (i + 1).to_s %>
-
- -
-
- - -
- - \ No newline at end of file +<%= render_filter @filter_fields, "order_table" %> +
+ <%= render 'order' %> +