diff --git a/epdb/urls.py b/epdb/urls.py index 151cfb51..a91fa2d6 100644 --- a/epdb/urls.py +++ b/epdb/urls.py @@ -142,6 +142,11 @@ urlpatterns = [ v.package_pathway, name="package pathway detail", ), + re_path( + rf"^package/(?P{UUID})/predict$", + v.package_predict_pathway, + name="package predict pathway", + ), # Pathway Nodes re_path( rf"^package/(?P{UUID})/pathway/(?P{UUID})/node$", diff --git a/epdb/views.py b/epdb/views.py index 784287ca..c2929418 100644 --- a/epdb/views.py +++ b/epdb/views.py @@ -374,6 +374,22 @@ def predict_pathway(request): return render(request, "predict_pathway.html", context) +@package_permission_required() +def package_predict_pathway(request, package_uuid): + """Package-specific predict pathway view.""" + if request.method != "GET": + return HttpResponseNotAllowed(["GET"]) + + current_user = _anonymous_or_real(request) + current_package = PackageManager.get_package_by_id(current_user, package_uuid) + + context = get_base_context(request) + context["title"] = f"enviPath - {current_package.name} - Predict Pathway" + context["meta"]["current_package"] = current_package + + return render(request, "predict_pathway.html", context) + + def packages(request): current_user = _anonymous_or_real(request) diff --git a/templates/actions/collections/pathway.html b/templates/actions/collections/pathway.html index fce48c86..0bc89a06 100644 --- a/templates/actions/collections/pathway.html +++ b/templates/actions/collections/pathway.html @@ -1,6 +1,9 @@ {% if meta.can_edit %} -
  • - - New Pathway -
  • +
  • + + New Pathway +
  • {% endif %} diff --git a/templates/framework_modern.html b/templates/framework_modern.html index b808550c..ba9b28a0 100644 --- a/templates/framework_modern.html +++ b/templates/framework_modern.html @@ -178,6 +178,23 @@ } }); + // Open search modal function + function openSearchModal() { + const searchModal = document.getElementById("search_modal"); + if (searchModal) { + searchModal.showModal(); + } + } + + // Click handler for search badge + const searchTrigger = document.getElementById("search-trigger"); + if (searchTrigger) { + searchTrigger.addEventListener("click", function (event) { + event.preventDefault(); + openSearchModal(); + }); + } + // Global keyboard shortcut for search (Cmd+K on Mac, Ctrl+K on Windows/Linux) document.addEventListener("keydown", function (event) { // Check if user is typing in an input field @@ -198,7 +215,7 @@ if (isCorrectModifier && event.key === "k") { event.preventDefault(); - search_modal.showModal(); + openSearchModal(); } }); diff --git a/templates/includes/navbar.html b/templates/includes/navbar.html index 028db64e..451a1961 100644 --- a/templates/includes/navbar.html +++ b/templates/includes/navbar.html @@ -60,7 +60,7 @@