From b981d83e5e005817a67b11ccf92dd65bb506bcd4 Mon Sep 17 00:00:00 2001 From: hukl Date: Tue, 8 Sep 2009 16:35:22 +0200 Subject: new interface for adding nodes. still needs a bit radio button magick --- app/views/nodes/new.html.erb | 52 +++++++++++++++++++++++---------- public/javascripts/admin_interface.js | 1 + public/javascripts/admin_search.js | 54 +++++++++++++++++++++++++++++++++-- public/stylesheets/admin.css | 8 ++++++ 4 files changed, 98 insertions(+), 17 deletions(-) diff --git a/app/views/nodes/new.html.erb b/app/views/nodes/new.html.erb index 29a26b6..935e34f 100644 --- a/app/views/nodes/new.html.erb +++ b/app/views/nodes/new.html.erb @@ -2,19 +2,41 @@ <%= error_messages_for :node %> -<% form_for @node do |f| %> -

- <%= f.label 'Parent node' %>
- <%= select_tag( - :parent_id, - options_for_select( - Node.root.self_and_descendants.select{|x| x.level < 3}.map{|x| [x.unique_name,x.id]} - ) - ) %> -

-

- <%= f.label :slug %>
- <%= f.text_field :slug %> -

-

<%= f.submit 'Create node' %>

+ +

What kind of node do you want to create?

+ +<% form_for nodes_path do %> + + + + + + + + + + + + + + + + + +
Type +
+ <%= radio_button_tag :kind, "generic" %> + Generic ( can be created anywhere ) +
+

+ <%= radio_button_tag :kind, "update" %> + Update / Press release ( is automatically created in /updates ) +

+
Title<%= text_field_tag :title %>
Parent + <%= text_field_tag :parent_search_term %> + <%= hidden_field_tag :parent_id %> +
+ +
+
<%= submit_tag "Create" %>
<% end %> \ No newline at end of file diff --git a/public/javascripts/admin_interface.js b/public/javascripts/admin_interface.js index 57bf8c6..47a4bac 100644 --- a/public/javascripts/admin_interface.js +++ b/public/javascripts/admin_interface.js @@ -3,6 +3,7 @@ $(document).ready(function () { menu_items.initialize_search(); meta_data.initialize(); menu_item_sorter.initialize(); + parent_search.initialize_search(); jQuery.ajaxSetup({ 'beforeSend': function(xhr) {xhr.setRequestHeader("Accept", "text/javascript");} diff --git a/public/javascripts/admin_search.js b/public/javascripts/admin_search.js index c8d269f..1800506 100644 --- a/public/javascripts/admin_search.js +++ b/public/javascripts/admin_search.js @@ -95,5 +95,55 @@ menu_items = { } return barf; - } -}; \ No newline at end of file + } +}; + +parent_search = { + initialize_search : function() { + $("#parent_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) { + parent_search.show_results(results); + } + }); + } + else { + $('#search_results').slideUp(); + $('#search_results').empty(); + } + }); + }, + show_results : function(results) { + $("#search_results").empty(); + for (result in results) { + var link = $((""+ results[result].title + "")); + $(link).bind("click", parent_search.link_closure(results[result])); + + + // Sometimes I don't get jquery; wrap() didn't work *sigh* + // Guess I'll need a book someday or another framework + var wrapper = $("
"); + $(wrapper).append(link) + + $("#search_results").append(wrapper); + + } + }, + link_closure : function(node) { + var barf = function(){ + $("#parent_search_term").attr("value", node.title); + alert(node.id); + $("#parent_id").attr("value", node.node_id); + $('#search_results').slideUp(); + $('#search_results').empty(); + return false; + } + + return barf; + } +} diff --git a/public/stylesheets/admin.css b/public/stylesheets/admin.css index f7ef868..9fa503b 100644 --- a/public/stylesheets/admin.css +++ b/public/stylesheets/admin.css @@ -276,6 +276,14 @@ textarea#page_abstract { margin-left: -125px; } +#new_node { + margin-left: -118px; +} + +#new_node input[type=text] { + width: 350px; +} + tr {} td { -- cgit v1.3