summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhukl <contact@smyck.org>2009-08-08 22:38:48 +0200
committerhukl <contact@smyck.org>2009-08-08 22:38:48 +0200
commit46117a9f103e2d547be2a47724e872b3f57ce983 (patch)
tree3360a066676ecf776f62212912abcec4965bdf27
parent4f249507da36f219b208f88e4dea5a5cd90ca254 (diff)
lots of new code to manage menu items - harder than expected :/
-rw-r--r--app/controllers/admin_controller.rb19
-rw-r--r--app/controllers/menu_items_controller.rb11
-rw-r--r--app/views/admin/_menu_search_results.html.erb3
-rw-r--r--app/views/menu_items/index.html.erb13
-rw-r--r--public/javascripts/admin_interface.js8
-rw-r--r--public/javascripts/admin_search.js65
6 files changed, 117 insertions, 2 deletions
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
27 end 27 end
28 end 28 end
29 29
30 def menu_search
31 @results = Node.search params[:search_term]
32
33 respond_to do |format|
34 format.html do
35 render :partial => 'admin/menu_search_results'
36 end
37
38
39 format.js do
40 render( :json => @results.map do |node|
41 {:node_id => node.id, :title => node.title, :unique_name => node.unique_name}
42 end
43 )
44
45 end
46 end
47 end
48
30end 49end
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
13 end 13 end
14 14
15 def create 15 def create
16 respond_to do |format|
17 format.html {}
18
19 format.js do
20 MenuItem.create params[:menu_item]
21 end
22
23
24 end
25
26
16 end 27 end
17 28
18 def edit 29 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 @@
1<%- @results.each do |result| %>
2<div><%= result.unique_name %></div>
3<% 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 @@
4 <% @menu_items.each do |menu_item| %> 4 <% @menu_items.each do |menu_item| %>
5 <li><%= menu_item.title %></li> 5 <li><%= menu_item.title %></li>
6 <% end %> 6 <% end %>
7</ul> \ No newline at end of file 7</ul>
8
9<div id="menu_item_search">
10 <div>
11 <% form_tag admin_search_path do %>
12 <span>Add menu item: </span><%= text_field_tag :search_term %>
13 <% end %>
14 </div>
15 <div id="search_results">
16
17 </div>
18</div> \ 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 @@
1$(document).ready(function () { 1$(document).ready(function () {
2 admin_search.initialize(); 2 admin_search.initialize();
3 menu_items.initialize_search();
3 meta_data.initialize(); 4 meta_data.initialize();
4 5
5 jQuery.ajaxSetup({ 6 jQuery.ajaxSetup({
6 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")} 7 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript")}
7 }) 8 })
8 9
10 $(document).ajaxSend(function(event, request, settings) {
11 if (typeof(AUTH_TOKEN) == "undefined") return;
12 // settings.data is a serialized string like "foo=bar&baz=boink" (or null)
13 settings.data = settings.data || "";
14 settings.data += (settings.data ? "&" : "") + "authenticity_token=" + encodeURIComponent(AUTH_TOKEN);
15 });
16
9}); 17});
10 18
11 19
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 = {
45 } 45 }
46 $('#search_results').slideDown(); 46 $('#search_results').slideDown();
47 } 47 }
48} \ No newline at end of file 48};
49
50menu_items = {
51
52 initialize_search : function() {
53 $("#search_term").bind("keyup", function() {
54 if ($(this).attr("value")) {
55 $.ajax({
56 type: "GET",
57 url: "/admin/menu_search",
58 data: "search_term=" + $(this).attr("value"),
59 dataType: "json",
60 success : function(results) {
61 menu_items.show_results(results);
62 }
63 });
64 }
65 else {
66 $('#search_results').slideUp();
67 $('#search_results').empty();
68 }
69 });
70 },
71
72 show_results : function(results) {
73 $("#search_results").empty();
74 for (result in results) {
75 var foo = $(("<a href='#'>"+ results[result].title + "</a>"));
76 $(foo).bind("click", function(){
77 menu_items.open_title_popup();
78 //menu_items.add_item_to_menu(results[result]);
79 return false;
80 });
81
82 $("#search_results").append(foo);
83
84 }
85 },
86
87 open_title_popup : function() {
88 popup = $("<div><form action='#'><input id='item_title' type='text' /><input id='foobar' type='submit' /></form></div>");
89 $("form", popup).submit(function(){
90 alert("hi");
91 return false;
92 });
93 $("body").append(popup);
94 },
95
96 add_item_to_menu : function(node) {
97 $.ajax({
98 type: "post",
99 url: "/menu_items/create",
100 data: {
101 "menu_item[node_id]" : node.node_id,
102 "menu_item[path]" : "/" + node.unique_name,
103 "menu_item[title]" : node.title
104 },
105 success : function() {
106 alert("s");
107 }
108 });
109 }
110
111}; \ No newline at end of file