diff options
| author | erdgeist <erdgeist@erdgeist.org> | 2026-07-31 22:36:17 +0200 |
|---|---|---|
| committer | erdgeist <erdgeist@erdgeist.org> | 2026-07-31 22:36:17 +0200 |
| commit | 529f81b28ed77c62acaa63fad957e751798f2440 (patch) | |
| tree | 9d928cbe54008b1f75c4b813182970dd0757002c /public/javascripts | |
| parent | 3b4e1423635fd9f33ae760312e438cc1e484662e (diff) | |
Warn before the gate refuses, and check restore destinations
nodes#new marks the kinds that place under /updates, derived from each kind's
own path_prefix. The three parent pickers mark candidates the current user
cannot publish into; menu_search returns needs_redaktion per result, computed
per user rather than as a bare restricted flag, and the menu-item picker opts
out.
restore_from_trash! checks its destination: the restore is the move, applied
rather than staged, so no later publish would have caught it. The node
returns as a draft either way.
Diffstat (limited to 'public/javascripts')
| -rw-r--r-- | public/javascripts/admin_search.js | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/public/javascripts/admin_search.js b/public/javascripts/admin_search.js index 792849f7..37b696e4 100644 --- a/public/javascripts/admin_search.js +++ b/public/javascripts/admin_search.js | |||
| @@ -46,6 +46,7 @@ function initSearchPicker(options) { | |||
| 46 | var isActive = options.isActive; | 46 | var isActive = options.isActive; |
| 47 | var resultsHeaderHtml = options.resultsHeaderHtml; | 47 | var resultsHeaderHtml = options.resultsHeaderHtml; |
| 48 | var renderResults = options.renderResults; | 48 | var renderResults = options.renderResults; |
| 49 | var showRestricted = options.showRestricted; | ||
| 49 | var loadOnFocus = options.loadOnFocus; // optional, fires an initial search on focus with no term typed yet | 50 | var loadOnFocus = options.loadOnFocus; // optional, fires an initial search on focus with no term typed yet |
| 50 | var requestId = 0; | 51 | var requestId = 0; |
| 51 | var timeout; | 52 | var timeout; |
| @@ -75,6 +76,10 @@ function initSearchPicker(options) { | |||
| 75 | var anchor = $("<a>").attr("href", onSelect ? "#" : node.node_path); | 76 | var anchor = $("<a>").attr("href", onSelect ? "#" : node.node_path); |
| 76 | anchor.append(document.createTextNode(node.title || "")); | 77 | anchor.append(document.createTextNode(node.title || "")); |
| 77 | anchor.append($("<span>", { "class": "result_path" }).text(node.unique_name || "")); | 78 | anchor.append($("<span>", { "class": "result_path" }).text(node.unique_name || "")); |
| 79 | if (showRestricted && node.needs_redaktion) { | ||
| 80 | anchor.append($("<span>", { "class": "restricted_result" }) | ||
| 81 | .text(ADMIN_STRINGS.needs_redaktion)); | ||
| 82 | } | ||
| 78 | var link = $("<p>").append(anchor); | 83 | var link = $("<p>").append(anchor); |
| 79 | 84 | ||
| 80 | if (onSelect) { | 85 | if (onSelect) { |
| @@ -192,6 +197,7 @@ parent_search = { | |||
| 192 | initSearchPicker({ | 197 | initSearchPicker({ |
| 193 | inputSelector: "#parent_search_term", | 198 | inputSelector: "#parent_search_term", |
| 194 | resultsSelector: "#parent_search_results", | 199 | resultsSelector: "#parent_search_results", |
| 200 | showRestricted: true, | ||
| 195 | onSelect: function(node) { | 201 | onSelect: function(node) { |
| 196 | $("#parent_search_term").val(node.title); | 202 | $("#parent_search_term").val(node.title); |
| 197 | $("#parent_id").val(node.node_id).attr("data-unique-name", node.unique_name); | 203 | $("#parent_id").val(node.node_id).attr("data-unique-name", node.unique_name); |
| @@ -248,6 +254,7 @@ move_to_search = { | |||
| 248 | initSearchPicker({ | 254 | initSearchPicker({ |
| 249 | inputSelector: "#move_to_search_term", | 255 | inputSelector: "#move_to_search_term", |
| 250 | resultsSelector: "#move_to_search_results", | 256 | resultsSelector: "#move_to_search_results", |
| 257 | showRestricted: true, | ||
| 251 | onSelect: function(node) { | 258 | onSelect: function(node) { |
| 252 | $("#move_to_search_term").val(node.title); | 259 | $("#move_to_search_term").val(node.title); |
| 253 | $("#node_staged_parent_id").val(node.node_id); | 260 | $("#node_staged_parent_id").val(node.node_id); |
| @@ -261,6 +268,7 @@ restore_search = { | |||
| 261 | initSearchPicker({ | 268 | initSearchPicker({ |
| 262 | inputSelector: "#restore_search_term", | 269 | inputSelector: "#restore_search_term", |
| 263 | resultsSelector: "#restore_search_results", | 270 | resultsSelector: "#restore_search_results", |
| 271 | showRestricted: true, | ||
| 264 | onSelect: function(node) { | 272 | onSelect: function(node) { |
| 265 | $("#restore_search_term").val(node.title); | 273 | $("#restore_search_term").val(node.title); |
| 266 | $("#parent_id").val(node.node_id); | 274 | $("#parent_id").val(node.node_id); |
