diff options
| -rw-r--r-- | app/controllers/admin_controller.rb | 15 | ||||
| -rw-r--r-- | app/views/layouts/admin.html.erb | 8 | ||||
| -rw-r--r-- | config/routes.rb | 3 | ||||
| -rw-r--r-- | config/sphinx.yml | 3 | ||||
| -rw-r--r-- | public/javascripts/admin_interface.js | 2 | ||||
| -rw-r--r-- | public/javascripts/admin_search.js | 28 | ||||
| -rw-r--r-- | public/stylesheets/admin.css | 5 |
7 files changed, 61 insertions, 3 deletions
diff --git a/app/controllers/admin_controller.rb b/app/controllers/admin_controller.rb index 55c66cf..8d7d2ea 100644 --- a/app/controllers/admin_controller.rb +++ b/app/controllers/admin_controller.rb | |||
| @@ -12,4 +12,19 @@ class AdminController < ApplicationController | |||
| 12 | ) | 12 | ) |
| 13 | end | 13 | end |
| 14 | 14 | ||
| 15 | def search | ||
| 16 | @results = Node.search params[:search_term] | ||
| 17 | |||
| 18 | respond_to do |format| | ||
| 19 | format.html | ||
| 20 | format.js do | ||
| 21 | render( :json => @results.map do |node| | ||
| 22 | {:id => node.id, :title => node.title} | ||
| 23 | end | ||
| 24 | ) | ||
| 25 | |||
| 26 | end | ||
| 27 | end | ||
| 28 | end | ||
| 29 | |||
| 15 | end | 30 | end |
diff --git a/app/views/layouts/admin.html.erb b/app/views/layouts/admin.html.erb index 7902cae..fea6b5a 100644 --- a/app/views/layouts/admin.html.erb +++ b/app/views/layouts/admin.html.erb | |||
| @@ -9,6 +9,7 @@ | |||
| 9 | <%= stylesheet_link_tag 'admin' %> | 9 | <%= stylesheet_link_tag 'admin' %> |
| 10 | <%= javascript_include_tag 'jquery-1.3.2.min' %> | 10 | <%= javascript_include_tag 'jquery-1.3.2.min' %> |
| 11 | <%= javascript_include_tag 'tiny_mce/tiny_mce.js' %> | 11 | <%= javascript_include_tag 'tiny_mce/tiny_mce.js' %> |
| 12 | <%= javascript_include_tag 'admin_search.js' %> | ||
| 12 | <%= javascript_include_tag 'admin_interface.js' %> | 13 | <%= javascript_include_tag 'admin_interface.js' %> |
| 13 | 14 | ||
| 14 | <script type="text/javascript"> | 15 | <script type="text/javascript"> |
| @@ -38,6 +39,11 @@ | |||
| 38 | <div id="subnavigation"> | 39 | <div id="subnavigation"> |
| 39 | <%= yield :subnavigation %> | 40 | <%= yield :subnavigation %> |
| 40 | </div> | 41 | </div> |
| 42 | <div id="admin_search"> | ||
| 43 | <% form_tag admin_search_path do %> | ||
| 44 | <%= text_field_tag :search_term %> | ||
| 45 | <% end %> | ||
| 46 | </div> | ||
| 41 | <div style="clear: both"></div> | 47 | <div style="clear: both"></div> |
| 42 | <div id="flash"> | 48 | <div id="flash"> |
| 43 | <%= flash[:notice] %> | 49 | <%= flash[:notice] %> |
| @@ -45,6 +51,8 @@ | |||
| 45 | <div id="content"> | 51 | <div id="content"> |
| 46 | <%= yield :layout %> | 52 | <%= yield :layout %> |
| 47 | </div> | 53 | </div> |
| 54 | |||
| 55 | <div id="results"></div> | ||
| 48 | </div> | 56 | </div> |
| 49 | </body> | 57 | </body> |
| 50 | </html> | 58 | </html> |
diff --git a/config/routes.rb b/config/routes.rb index bf4ba10..7456b60 100644 --- a/config/routes.rb +++ b/config/routes.rb | |||
| @@ -1,8 +1,6 @@ | |||
| 1 | ActionController::Routing::Routes.draw do |map| | 1 | ActionController::Routing::Routes.draw do |map| |
| 2 | map.resources :assets | 2 | map.resources :assets |
| 3 | 3 | ||
| 4 | |||
| 5 | |||
| 6 | map.filter :locale | 4 | map.filter :locale |
| 7 | 5 | ||
| 8 | map.root( | 6 | map.root( |
| @@ -19,6 +17,7 @@ ActionController::Routing::Routes.draw do |map| | |||
| 19 | map.resources :nodes, :member => {:publish => :put, :unlock => :put} | 17 | map.resources :nodes, :member => {:publish => :put, :unlock => :put} |
| 20 | map.logout '/logout', :controller => 'sessions', :action => 'destroy' | 18 | map.logout '/logout', :controller => 'sessions', :action => 'destroy' |
| 21 | map.login '/login', :controller => 'sessions', :action => 'new' | 19 | map.login '/login', :controller => 'sessions', :action => 'new' |
| 20 | map.admin_search 'admin/search', :controller => 'admin', :action => 'search' | ||
| 22 | map.resources :users | 21 | map.resources :users |
| 23 | map.resource :session | 22 | map.resource :session |
| 24 | 23 | ||
diff --git a/config/sphinx.yml b/config/sphinx.yml new file mode 100644 index 0000000..3924be2 --- /dev/null +++ b/config/sphinx.yml | |||
| @@ -0,0 +1,3 @@ | |||
| 1 | development: | ||
| 2 | enable_star: 1 | ||
| 3 | min_infix_len: 1 \ No newline at end of file | ||
diff --git a/public/javascripts/admin_interface.js b/public/javascripts/admin_interface.js index 0085bc2..5fe91a2 100644 --- a/public/javascripts/admin_interface.js +++ b/public/javascripts/admin_interface.js | |||
| @@ -1,4 +1,6 @@ | |||
| 1 | $(document).ready(function () { | 1 | $(document).ready(function () { |
| 2 | admin_search.initialize(); | ||
| 3 | |||
| 2 | $("#metadata").attr("style", "display: none;"); | 4 | $("#metadata").attr("style", "display: none;"); |
| 3 | 5 | ||
| 4 | $("#button").click(function () { | 6 | $("#button").click(function () { |
diff --git a/public/javascripts/admin_search.js b/public/javascripts/admin_search.js new file mode 100644 index 0000000..d645cca --- /dev/null +++ b/public/javascripts/admin_search.js | |||
| @@ -0,0 +1,28 @@ | |||
| 1 | admin_search = { | ||
| 2 | |||
| 3 | initialize : function() { | ||
| 4 | $("#search_term").bind("keyup", function() { | ||
| 5 | if ($(this).attr("value")) { | ||
| 6 | $.ajax({ | ||
| 7 | type: "GET", | ||
| 8 | url: "/admin/search", | ||
| 9 | data: "search_term=" + $(this).attr("value"), | ||
| 10 | dataType: "json", | ||
| 11 | success : function(results) { | ||
| 12 | admin_search.show_results(results); | ||
| 13 | } | ||
| 14 | }); | ||
| 15 | } | ||
| 16 | else { | ||
| 17 | $('#results').empty(); | ||
| 18 | } | ||
| 19 | }); | ||
| 20 | }, | ||
| 21 | |||
| 22 | show_results : function(results) { | ||
| 23 | $('#results').empty(); | ||
| 24 | for (result in results) { | ||
| 25 | $('#results').append("<p>" + results[result].title + "</p>"); | ||
| 26 | } | ||
| 27 | } | ||
| 28 | } \ No newline at end of file | ||
diff --git a/public/stylesheets/admin.css b/public/stylesheets/admin.css index 982a231..e077918 100644 --- a/public/stylesheets/admin.css +++ b/public/stylesheets/admin.css | |||
| @@ -64,7 +64,7 @@ div.pagination span.current, div.pagination a:hover { | |||
| 64 | text-align: right; | 64 | text-align: right; |
| 65 | } | 65 | } |
| 66 | 66 | ||
| 67 | #navigation { | 67 | #navigation, #subnavigation { |
| 68 | margin-left: 0px; | 68 | margin-left: 0px; |
| 69 | float: left; | 69 | float: left; |
| 70 | } | 70 | } |
| @@ -100,6 +100,9 @@ div.pagination span.current, div.pagination a:hover { | |||
| 100 | background-color: #000000; | 100 | background-color: #000000; |
| 101 | } | 101 | } |
| 102 | 102 | ||
| 103 | #admin_search { | ||
| 104 | } | ||
| 105 | |||
| 103 | /* Nodes */ | 106 | /* Nodes */ |
| 104 | 107 | ||
| 105 | table#node_table { | 108 | table#node_table { |
