From 121c9eed3b1e8b4334061a5c5450fbbd5d117f6d Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 2 Jun 2022 14:43:59 +0200 Subject: [PATCH 1/4] Replace `Spree.url().clone()` by `new URL()` --- .../javascripts/admin/spree/taxons/taxonomy.js.coffee | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee b/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee index 6a8d902caa..901fbdaf02 100644 --- a/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee +++ b/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee @@ -8,7 +8,7 @@ handle_move = (e, data) -> node = data.rslt.o new_parent = data.rslt.np - url = Spree.url(base_url).clone() + url = new URL(base_url) url.pathname = url.pathname + '/' + node.attr("id") $.ajax type: "POST", @@ -40,7 +40,7 @@ handle_rename = (e, data) -> node = data.rslt.obj name = data.rslt.new_name - url = Spree.url(base_url).clone() + url = new URL(base_url) url.pathname = url.pathname + '/' + node.attr("id") $.ajax @@ -53,8 +53,8 @@ handle_rename = (e, data) -> handle_delete = (e, data) -> last_rollback = data.rlbk node = data.rslt.obj - delete_url = base_url.clone() - delete_url.setPath delete_url.path() + '/' + node.attr("id") + delete_url = new URL(base_url) + delete_url.pathname = delete_url.pathname + '/' + node.attr("id") if confirm(Spree.translations.are_you_sure_delete) $.ajax type: "POST", From 817b5f437fb0d594dfca105108a7327167262731 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 2 Jun 2022 15:14:57 +0200 Subject: [PATCH 2/4] Authorize `:position` params --- app/controllers/api/v0/taxons_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/api/v0/taxons_controller.rb b/app/controllers/api/v0/taxons_controller.rb index f5529b7fcb..c6b889af43 100644 --- a/app/controllers/api/v0/taxons_controller.rb +++ b/app/controllers/api/v0/taxons_controller.rb @@ -73,7 +73,7 @@ module Api def taxon_params return if params[:taxon].blank? - params.require(:taxon).permit([:name, :parent_id]) + params.require(:taxon).permit([:name, :parent_id, :position]) end end end From 4bbbae68c7b9d0414beb02f52424a3c81682c8b4 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 2 Jun 2022 15:21:57 +0200 Subject: [PATCH 3/4] Do not send `parent_id` is it's something else than a number When moving element on top, `new_parent.attr("id")` was `taxonomy_tree` which was causing DB error --- .../admin/spree/taxons/taxonomy.js.coffee | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee b/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee index 901fbdaf02..63931f58ae 100644 --- a/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee +++ b/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee @@ -9,12 +9,17 @@ handle_move = (e, data) -> new_parent = data.rslt.np url = new URL(base_url) - url.pathname = url.pathname + '/' + node.attr("id") + url.pathname = url.pathname + '/' + node.attr("id") + data = { + _method: "put", + "taxon[position]": position, + "taxon[parent_id]": if !isNaN(new_parent.attr("id")) then new_parent.attr("id") else undefined + } $.ajax type: "POST", dataType: "json", url: url.toString(), - data: ({_method: "put", "taxon[parent_id]": new_parent.attr("id"), "taxon[position]": position }), + data: data, error: handle_ajax_error true @@ -26,11 +31,16 @@ handle_create = (e, data) -> position = data.rslt.position new_parent = data.rslt.parent + data = { + "taxon[name]": name, + "taxon[position]": position + "taxon[parent_id]": if !isNaN(new_parent.attr("id")) then new_parent.attr("id") else undefined + } $.ajax type: "POST", dataType: "json", url: base_url.toString(), - data: ({"taxon[name]": name, "taxon[parent_id]": new_parent.attr("id"), "taxon[position]": position }), + data: data, error: handle_ajax_error, success: (data,result) -> node.attr('id', data.id) From 68bd1df312014a0ffaef99d24a3d1ff2751cb546 Mon Sep 17 00:00:00 2001 From: Jean-Baptiste Bellet Date: Thu, 2 Jun 2022 16:03:16 +0200 Subject: [PATCH 4/4] Handle rename with context menu on the first taxon ie. the root one Also rename the main input field (sort of title) when updating the root taxon name with contextual menu --- app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee b/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee index 63931f58ae..db051b1b20 100644 --- a/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee +++ b/app/assets/javascripts/admin/spree/taxons/taxonomy.js.coffee @@ -49,6 +49,8 @@ handle_rename = (e, data) -> last_rollback = data.rlbk node = data.rslt.obj name = data.rslt.new_name + # change the name inside the main input field as well if taxon is the root one + document.getElementById("taxonomy_name").value = name if node.parents("[id]").attr("id") == "taxonomy_tree" url = new URL(base_url) url.pathname = url.pathname + '/' + node.attr("id")