From 46117a9f103e2d547be2a47724e872b3f57ce983 Mon Sep 17 00:00:00 2001 From: hukl Date: Sat, 8 Aug 2009 22:38:48 +0200 Subject: lots of new code to manage menu items - harder than expected :/ --- app/controllers/admin_controller.rb | 19 ++++++++ app/controllers/menu_items_controller.rb | 11 +++++ app/views/admin/_menu_search_results.html.erb | 3 ++ app/views/menu_items/index.html.erb | 13 +++++- public/javascripts/admin_interface.js | 8 ++++ public/javascripts/admin_search.js | 65 ++++++++++++++++++++++++++- 6 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 app/views/admin/_menu_search_results.html.erb diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 517506f..b911727 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb @@ -27,4 +27,23 @@ class AdminController < ApplicationController end end + def menu_search + @results = Node.search params[:search_term] + + respond_to do |format| + format.html do + render :partial => 'admin/menu_search_results' + end + + + format.js do + render( :json => @results.map do |node| + {:node_id => node.id, :title => node.title, :unique_name => node.unique_name} + end + ) + + end + end + end + end diff --git a/app/controllers/menu_items_controller.rb b/app/controllers/menu_items_controller.rb index 1ac3ddb..d6f0252 100644 --- a/app/controllers/menu_items_controller.rb +++ b/app/controllers/menu_items_controller.rb @@ -13,6 +13,17 @@ class MenuItemsController < ApplicationController end def create + respond_to do |format| + format.html {} + + format.js do + MenuItem.create params[:menu_item] + end + + + end + + end def edit diff --git a/app/views/admin/_menu_search_results.html.erb b/app/views/admin/_menu_search_results.html.erb new file mode 100644 index 0000000..15a40d4 --- /dev/null +++ b/app/views/admin/_menu_search_results.html.erb @@ -0,0 +1,3 @@ +<%- @results.each do |result| %> +
<%= result.unique_name %>
+<% end %> diff --git a/app/views/menu_items/index.html.erb b/app/views/menu_items/index.html.erb index 05cc530..d2ff10e 100644 --- a/app/views/menu_items/index.html.erb +++ b/app/views/menu_items/index.html.erb @@ -4,4 +4,15 @@ <% @menu_items.each do |menu_item| %>
  • <%= menu_item.title %>
  • <% end %> - \ No newline at end of file + + + \ No newline at end of file diff --git a/public/javascripts/admin_interface.js b/public/javascripts/admin_interface.js index 62801ca..4e390f1 100644 --- a/public/javascripts/admin_interface.js +++ b/public/javascripts/admin_interface.js @@ -1,11 +1,19 @@ $(document).ready(function () { admin_search.initialize(); + menu_items.initialize_search(); meta_data.initialize(); jQuery.ajaxSetup({ 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} }) + $(document).ajaxSend(function(event, request, settings) { + if (typeof(AUTH_TOKEN) == "undefined") return; + // settings.data is a serialized string like "foo=bar&baz=boink" (or null) + settings.data = settings.data || ""; + settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN); + }); + }); diff --git a/public/javascripts/admin_search.js b/public/javascripts/admin_search.js index 28f87a0..1e6f545 100644 --- a/public/javascripts/admin_search.js +++ b/public/javascripts/admin_search.js @@ -45,4 +45,67 @@ admin_search = { } $('#search_results').slideDown(); } -} \ No newline at end of file +}; + +menu_items = { + + initialize_search : function() { + $("#search_term").bind("keyup", function() { + if ($(this).attr("value")) { + $.ajax({ + type: "GET", + url: "/admin/menu_search", + data: "search_term=" + $(this).attr("value"), + dataType: "json", + success : function(results) { + menu_items.show_results(results); + } + }); + } + else { + $('#search_results').slideUp(); + $('#search_results').empty(); + } + }); + }, + + show_results : function(results) { + $("#search_results").empty(); + for (result in results) { + var foo = $((""+ results[result].title + "")); + $(foo).bind("click", function(){ + menu_items.open_title_popup(); + //menu_items.add_item_to_menu(results[result]); + return false; + }); + + $("#search_results").append(foo); + + } + }, + + open_title_popup : function() { + popup = $("
    "); + $("form", popup).submit(function(){ + alert("hi"); + return false; + }); + $("body").append(popup); + }, + + add_item_to_menu : function(node) { + $.ajax({ + type: "post", + url: "/menu_items/create", + data: { + "menu_item[node_id]" : node.node_id, + "menu_item[path]" : "/" + node.unique_name, + "menu_item[title]" : node.title + }, + success : function() { + alert("s"); + } + }); + } + +}; \ No newline at end of file -- cgit v1.3