add tags autocomplete
This commit is contained in:
parent
6323cdda68
commit
1e5aa0efff
6 changed files with 63 additions and 0 deletions
15
app/controllers/tags_controller.rb
Normal file
15
app/controllers/tags_controller.rb
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
class TagsController < ApplicationController
|
||||||
|
def index
|
||||||
|
end
|
||||||
|
|
||||||
|
def autocomplete
|
||||||
|
tags = Project.tag_counts.limit 8
|
||||||
|
tags = tags.where('name like ?', "%#{params[:term]}%") unless params[:term].blank?
|
||||||
|
tags = tags.map {|t| t.name}
|
||||||
|
|
||||||
|
respond_to do |format|
|
||||||
|
format.json { render json: tags}
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -57,9 +57,19 @@
|
||||||
$(function(){
|
$(function(){
|
||||||
var tag_field = $('#tag_field').tagify();
|
var tag_field = $('#tag_field').tagify();
|
||||||
|
|
||||||
|
|
||||||
|
tag_field.tagify('inputField').autocomplete({
|
||||||
|
source: '/tags/autocomplete.json',
|
||||||
|
position: { of: tag_field.tagify('containerDiv') },
|
||||||
|
close: function(event, ui) { tag_field.tagify('add'); },
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
$('form').submit( function() {
|
$('form').submit( function() {
|
||||||
var tag_field = $('#tag_field')
|
var tag_field = $('#tag_field')
|
||||||
tag_field.val( tag_field.tagify('serialize') );
|
tag_field.val( tag_field.tagify('serialize') );
|
||||||
return true;
|
return true;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
2
app/views/tags/autocomplete.html.haml
Normal file
2
app/views/tags/autocomplete.html.haml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
%h1 Tags#autocomplete
|
||||||
|
%p Find me in app/views/tags/autocomplete.html.haml
|
2
app/views/tags/index.html.haml
Normal file
2
app/views/tags/index.html.haml
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
%h1 Tags#index
|
||||||
|
%p Find me in app/views/tags/index.html.haml
|
|
@ -1,4 +1,7 @@
|
||||||
Gitlab::Application.routes.draw do
|
Gitlab::Application.routes.draw do
|
||||||
|
get "tags/index"
|
||||||
|
get "tags/autocomplete"
|
||||||
|
|
||||||
namespace :admin do
|
namespace :admin do
|
||||||
resources :users
|
resources :users
|
||||||
resources :projects
|
resources :projects
|
||||||
|
|
31
spec/requests/tags_spec.rb
Normal file
31
spec/requests/tags_spec.rb
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe "Tags" do
|
||||||
|
before { login_as :user }
|
||||||
|
|
||||||
|
# describe "GET 'tags/index'" do
|
||||||
|
# it "should be successful" do
|
||||||
|
# get 'tags/index'
|
||||||
|
# response.should be_success
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
|
||||||
|
|
||||||
|
describe "GET '/tags/autocomplete'" do
|
||||||
|
before do
|
||||||
|
@project = Factory :project
|
||||||
|
@project.add_access(@user, :read)
|
||||||
|
@project.tag_list = 'demo1'
|
||||||
|
@project.save
|
||||||
|
visit '/tags/autocomplete.json'
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
it "should contains tags" do
|
||||||
|
page.should have_content('demo1')
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
end
|
Loading…
Reference in a new issue