diff --git a/app/controllers/conversations_controller.rb b/app/controllers/conversations_controller.rb index 634ad307791350225dd7f75add682bce040ec66b..2a4008d230d77e009114eb354aa3620a4439e086 100644 --- a/app/controllers/conversations_controller.rb +++ b/app/controllers/conversations_controller.rb @@ -22,7 +22,6 @@ class ConversationsController < ApplicationController end def create - params[:contact_ids] = params[:as_values_contact_ids] person_ids = Contact.where(:id => params[:contact_ids].split(',')).map! do |contact| contact.person_id end diff --git a/app/controllers/profiles_controller.rb b/app/controllers/profiles_controller.rb index b293a0474d93e03cb1ef988761f297c1c485c177..641355bbca81f2fa2365e68e25633307ef7c272e 100644 --- a/app/controllers/profiles_controller.rb +++ b/app/controllers/profiles_controller.rb @@ -20,7 +20,7 @@ class ProfilesController < ApplicationController def update # upload and set new profile photo params[:profile] ||= {} - params[:profile][:tag_string] = (params[:as_values_tags]) ? params[:as_values_tags].gsub(',',' ') : "" + params[:profile][:tag_string] = (params[:tags]) ? params[:tags].gsub(',',' ') : "" params[:profile][:searchable] ||= false params[:profile][:photo] = Photo.where(:author_id => current_user.person.id, :id => params[:photo_id]).first if params[:photo_id] diff --git a/app/controllers/tags_controller.rb b/app/controllers/tags_controller.rb index d5bbd50d8523e07388615a1b4dac7d574a7b836b..05ff9a2fada5d1cbcc399c1e6a37884cb2bdcc96 100644 --- a/app/controllers/tags_controller.rb +++ b/app/controllers/tags_controller.rb @@ -13,18 +13,17 @@ class TagsController < ApplicationController def index params[:q].gsub!("#", "") + params[:limit] = !params[:limit].blank? ? params[:limit].to_i : 10 if params[:q].length > 1 - @tags = ActsAsTaggableOn::Tag.named_like(params[:q]).limit(params[:limit] || 10) + @tags = ActsAsTaggableOn::Tag.named_like(params[:q]).limit(params[:limit] - 1) @array = [] @tags.each do |obj| @array << { :name => ("#"+obj.name), :value => ("#"+obj.name)} end - if @array.empty? - @array << { :name => params[:q], - :value => ("#"+params[:q])} - end + @array << { :name => ('#' + params[:q]), :value => ("#" + params[:q])} + @array.uniq! respond_to do |format| format.json{ diff --git a/app/views/conversations/new.haml b/app/views/conversations/new.haml index b98f771e094acd6b73befcbdecf577b9ec1d3958..76e1ec1228495c840deb979c5abd2f0035be0f5c 100644 --- a/app/views/conversations/new.haml +++ b/app/views/conversations/new.haml @@ -15,7 +15,7 @@ minChars: 3, keyDelay: 0, startText: '', - emptyText: '#{t('.no_results')}', + emptyText: '#{t('no_results')}', preFill: [{ 'name' : "#{params[:name]}", 'value' : "#{params[:contact_id]}"}] }); diff --git a/app/views/profiles/_edit_public.html.haml b/app/views/profiles/_edit_public.html.haml index b51f395bf916efcaf3c2b3e127a532c1256a2910..2967f4d610cfaaf88481fc968c438386abdb903d 100644 --- a/app/views/profiles/_edit_public.html.haml +++ b/app/views/profiles/_edit_public.html.haml @@ -22,12 +22,12 @@ minChars: 2, keyDelay: 0, startText: "#{t('profiles.edit.your_tags_placeholder')}", - emptyText: '#{t('.no_results')}', + emptyText: '#{t('no_results')}', preFill: data }); autocompleteInput.bind('keydown', function(evt){ - if(evt.keyCode == 13 || evt.keyCode == 32){ + if(evt.keyCode == 13 || evt.keyCode == 9 || evt.keyCode == 32){ if( $('li.as-result-item.active').length == 0 ){ $('li.as-result-item').first().click(); } diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index cc37554deeb04d59cb1da16db36a98dbfb7aa4be..a71bd0faaff9e23652e2c71c1af5317709026793 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -31,6 +31,7 @@ en: previous: "previous" _comments: "Comments" all_aspects: "All Aspects" + no_results: "No Results Found" #for reference translation, the real activerecord english transations are actually @@ -192,7 +193,6 @@ en: to: "to" subject: "subject" send: "Send" - no_results: "No Results Found" helper: new_messages: zero: "no new messages" diff --git a/public/javascripts/vendor/jquery.autoSuggest.js b/public/javascripts/vendor/jquery.autoSuggest.js index 755b4ef127bb12730487dd3081902a2c96175a7e..bafd35cbcf6fba76827a4d07aba86d0029f12fa1 100644 --- a/public/javascripts/vendor/jquery.autoSuggest.js +++ b/public/javascripts/vendor/jquery.autoSuggest.js @@ -18,4 +18,355 @@ * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html */ -eval(function(p,a,c,k,e,d){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function(){return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('(6($){$.2O.2P=6(7,2f){4 2g={1R:m,1o:"2Q 2H 31",2i:"1Y 2X 2Y",D:{},2h:"1Y 2G 2I 2J 35",Z:"1a",N:"1a",1y:"1a",2B:"q",15:m,2E:"",1e:m,1V:1,1C:2V,2t:G,2d:m,1I:m,20:G,R:6(){},1B:6(1q){},2w:6(1q){},1P:6(1q){1q.36()},1M:m,18:6(h){K h},2z:6(7){K 7},2u:6(7){},2m:6(){}};4 3=$.2q(2g,2f);4 14="26";4 12=0;5(2b 7=="h"){14="h";4 2C=7}s{4 2F=7;O(k 1E 7)5(7.1F(k))12++}5((14=="26"&&12>0)||14=="h"){K d.2W(6(x){5(!3.1R){x=x+""+29.2U(29.2Z()*30);4 1U="c-l-"+x}s{x=3.1R;4 1U=x}3.R.v(d);4 l=$(d);l.1X("34","33").F("c-l").1X("L",1U).b(3.1o);4 C=m;l.25(\'<1g A="c-1W" L="c-1W-\'+x+\'"></1g>\').25(\'<f A="c-1O" L="c-1O-\'+x+\'"></f>\');4 n=$("#c-1W-"+x);4 J=$("#c-1O-"+x);4 j=$(\'<1Z A="c-22" L="c-22-\'+x+\'"></1Z>\').E();4 I=$(\'<1g A="c-2L"></1g>\');4 p=$(\'<l 2S="2M" A="c-2c" 1z="2N\'+x+\'" L="c-2c-\'+x+\'" />\');4 u="";5(2b 3.D=="h"){4 1f=3.D.1t(",");O(4 i=0;i<1f.o;i++){4 1L={};1L[3.N]=1f[i];5(1f[i]!=""){17(1L,"27"+i)}}u=3.D}s{u="";4 1d=0;O(k 1E 3.D)5(3.D.1F(k))1d++;5(1d>0){O(4 i=0;i<1d;i++){4 16=3.D[i][3.N];5(16==37){16=""}u=u+16+",";5(16!=""){17(3.D[i],"27"+i)}}}}5(u!=""){l.b("");4 2e=u.3o(u.o-1);5(2e!=","){u=u+","}p.b(","+u);$("f.c-Q-z",n).F("1i").B("M")}l.28(p);n.1b(6(){C=G;l.1p()}).1v(6(){C=m}).28(j);4 P=3t;4 t="";4 3u=0;4 19=m;l.1p(6(){5($(d).b()==3.1o&&p.b()==""){$(d).b("")}s 5(C){$("f.c-Q-z",n).B("1i");5($(d).b()!=""){I.2k("2l",n.2x());j.1H()}}C=G;K G}).1i(6(){5($(d).b()==""&&p.b()==""&&u==""){$(d).b(3.1o)}s 5(C){$("f.c-Q-z",n).F("1i").B("M");j.E()}}).3m(6(e){1k=e.2a;3d=m;3e(e.2a){T 38:e.1m();1A("3n");V;T 3b:e.1m();1A("1T");V;T 8:5(l.b()==""){4 S=p.b().1t(",");S=S[S.o-2];n.2y().39(J.t()).B("M");5(J.t().3a("M")){p.b(p.b().1c(","+S+",",","));3.1P.v(d,J.t())}s{3.1B.v(d,J.t());J.t().F("M")}}5(l.b().o==1){j.E();t=""}5($(":2D",j).o>0){5(P){21(P)}P=23(6(){1D()},3.1C)}V;T 9:T 3f:19=G;4 U=l.b().1c(/(,)/g,"");5(U!=""&&p.b().1x(","+U+",")<0&&U.o>=3.1V){e.1m();4 1n={};1n[3.Z]=U;1n[3.N]=U;4 W=$("f",n).o;17(1n,"3l"+(W+1));l.b("")}T 13:19=m;4 r=$("f.r:24",j);5(r.o>0){r.1b();j.E()}5(3.2d||r.o>0){e.1m()}V;3k:5(3.20){5(3.1I&&$("f.c-Q-z",n).o>=3.1I){I.10(\'<f A="c-2j">\'+3.2h+\'</f>\');j.1H()}s{5(P){21(P)}P=23(6(){1D()},3.1C)}}V}});6 1D(){5(1k==3h||(1k>8&&1k<32)){K j.E()}4 h=l.b().1c(/[\\\\]+|[\\/]+/g,"");5(h==t)K;t=h;5(h.o>=3.1V){n.F("1N");5(14=="h"){4 1j="";5(3.15){1j="&1j="+2A(3.15)}5(3.18){h=3.18.v(d,h)}$.3i(2C+"?"+3.2B+"="+2A(h)+1j+3.2E,6(7){12=0;4 1l=3.2z.v(d,7);O(k 1E 1l)5(1l.1F(k))12++;1J(1l,h)})}s{5(3.18){h=3.18.v(d,h)}1J(2F,h)}}s{n.B("1N");j.E()}}4 1S=0;6 1J(7,Y){5(!3.1e){Y=Y.2o()}4 1r=0;j.10(I.10("")).E();O(4 i=0;i<12;i++){4 w=i;1S++;4 1w=m;5(3.1y=="1a"){4 H=7[w].1a}s{4 H="";4 1u=3.1y.1t(",");O(4 y=0;y<1u.o;y++){4 1z=$.3c(1u[y]);H=H+7[w][1z]+" "}}5(H){5(!3.1e){H=H.2o()}5(H.1x(Y)!=-1&&p.b().1x(","+7[w][3.N]+",")==-1){1w=G}}5(1w){4 11=$(\'<f A="c-2p-z" L="c-2p-z-\'+w+\'"></f>\').1b(6(){4 1h=$(d).7("7");4 1G=1h.w;5($("#c-Q-"+1G,n).o<=0&&!19){4 7=1h.2s;l.b("").1p();t="";17(7,1G);3.2u.v(d,1h);j.E()}19=m}).1v(6(){C=m}).3r(6(){$("f",I).B("r");$(d).F("r")}).7("7",{2s:7[w],w:1S});4 X=$.2q({},7[w]);5(!3.1e){4 1Q=2r 2n("(?![^&;]+;)(?!<[^<>]*)("+Y+")(?![^<>]*>)(?![^&;]+;)","3w")}s{4 1Q=2r 2n("(?![^&;]+;)(?!<[^<>]*)("+Y+")(?![^<>]*>)(?![^&;]+;)","g")}5(3.2t){X[3.Z]=X[3.Z].1c(1Q,"<2v>$1</2v>")}5(!3.1M){11=11.10(X[3.Z])}s{11=3.1M.v(d,X,11)}I.2K(11);2R X;1r++;5(3.15&&3.15==1r){V}}}n.B("1N");5(1r<=0){I.10(\'<f A="c-2j">\'+3.2i+\'</f>\')}I.2k("2l",n.2x());j.1H();3.2m.v(d)}6 17(7,w){p.b(p.b()+7[3.N]+",");4 z=$(\'<f A="c-Q-z" L="c-Q-\'+w+\'"></f>\').1b(6(){3.1B.v(d,$(d));n.2y().B("M");$(d).F("M")}).1v(6(){C=m});4 1s=$(\'<a A="c-1s">&2T;</a>\').1b(6(){p.b(p.b().1c(","+7[3.N]+",",","));3.1P.v(d,z);C=G;l.1p();K m});J.3q(z.10(7[3.Z]).3v(1s));3.2w.v(d,J.t())}6 1A(1K){5($(":2D",j).o>0){4 W=$("f",j);5(1K=="1T"){4 R=W.3s(0)}s{4 R=W.3j(":S")}4 r=$("f.r:24",j);5(r.o>0){5(1K=="1T"){R=r.3p()}s{R=r.t()}}W.B("r");R.F("r")}}})}}})(3g);',62,219,'|||opts|var|if|function|data||||val|as|this||li||string||results_holder||input|false|selections_holder|length|values_input||active|else|prev|prefill_value|call|num|||item|class|removeClass|input_focus|preFill|hide|addClass|true|str|results_ul|org_li|return|id|selected|selectedValuesProp|for|timeout|selection|start|last|case|i_input|break|lis|this_data|query|selectedItemProp|html|formatted|d_count||d_type|retrieveLimit|new_v|add_selected_item|beforeRetrieve|tab_press|value|click|replace|prefill_count|matchCase|vals|ul|raw_data|blur|limit|lastKeyPressCode|new_data|preventDefault|n_data|startText|focus|elem|matchCount|close|split|names|mousedown|forward|search|searchObjProps|name|moveSelection|selectionClick|keyDelay|keyChange|in|hasOwnProperty|number|show|selectionLimit|processData|direction|v_data|formatList|loading|original|selectionRemoved|regx|asHtmlID|num_count|down|x_id|minChars|selections|attr|No|div|showResultList|clearTimeout|results|setTimeout|first|wrap|object|000|after|Math|keyCode|typeof|values|neverSubmit|lastChar|options|defaults|limitText|emptyText|message|css|width|resultsComplete|RegExp|toLowerCase|result|extend|new|attributes|resultsHighlight|resultClick|em|selectionAdded|outerWidth|children|retrieveComplete|encodeURIComponent|queryParam|req_string|visible|extraParams|org_data|More|Name|Selections|Are|append|list|hidden|as_values_|fn|autoSuggest|Enter|delete|type|times|floor|400|each|Results|Found|random|100|Here||off|autocomplete|Allowed|remove|undefined||not|hasClass|40|trim|first_focus|switch|188|jQuery|46|getJSON|filter|default|00|keydown|up|substring|next|before|mouseover|eq|null|totalSelections|prepend|gi'.split('|'),0,{})) + +(function($){ + $.fn.autoSuggest = function(data, options) { + var defaults = { + asHtmlID: false, + startText: "Enter Name Here", + emptyText: "No Results Found", + preFill: {}, + limitText: "No More Selections Are Allowed", + selectedItemProp: "value", //name of object property + selectedValuesProp: "value", //name of object property + searchObjProps: "value", //comma separated list of object property names + queryParam: "q", + retrieveLimit: false, //number for 'limit' param on ajax request + extraParams: "", + matchCase: false, + minChars: 1, + keyDelay: 400, + resultsHighlight: true, + neverSubmit: false, + selectionLimit: false, + showResultList: true, + start: function(){}, + selectionClick: function(elem){}, + selectionAdded: function(elem){}, + selectionRemoved: function(elem){ elem.remove(); }, + formatList: false, //callback function + beforeRetrieve: function(string){ return string; }, + retrieveComplete: function(data){ return data; }, + resultClick: function(data){}, + resultsComplete: function(){} + }; + var opts = $.extend(defaults, options); + + var d_type = "object"; + var d_count = 0; + if(typeof data == "string") { + d_type = "string"; + var req_string = data; + } else { + var org_data = data; + for (k in data) if (data.hasOwnProperty(k)) d_count++; + } + if((d_type == "object" && d_count > 0) || d_type == "string"){ + return this.each(function(x){ + if(!opts.asHtmlID){ + x = x+""+Math.floor(Math.random()*100); //this ensures there will be unique IDs on the page if autoSuggest() is called multiple times + var x_id = "as-input-"+x; + } else { + x = opts.asHtmlID; + var x_id = x; + } + opts.start.call(this); + var input = $(this); + input.attr("autocomplete","off").addClass("as-input").attr("id",x_id).val(opts.startText); + var input_focus = false; + + // Setup basic elements and render them to the DOM + input.wrap('<ul class="as-selections" id="as-selections-'+x+'"></ul>').wrap('<li class="as-original" id="as-original-'+x+'"></li>'); + var selections_holder = $("#as-selections-"+x); + var org_li = $("#as-original-"+x); + var results_holder = $('<div class="as-results" id="as-results-'+x+'"></div>').hide(); + var results_ul = $('<ul class="as-list"></ul>'); + var values_input = $('<input type="hidden" class="as-values" name="'+x+'" id="as-values-'+x+'" />'); + var prefill_value = ""; + if(typeof opts.preFill == "string"){ + var vals = opts.preFill.split(","); + for(var i=0; i < vals.length; i++){ + var v_data = {}; + v_data[opts.selectedValuesProp] = vals[i]; + if(vals[i] != ""){ + add_selected_item(v_data, "000"+i); + } + } + prefill_value = opts.preFill; + } else { + prefill_value = ""; + var prefill_count = 0; + for (k in opts.preFill) if (opts.preFill.hasOwnProperty(k)) prefill_count++; + if(prefill_count > 0){ + for(var i=0; i < prefill_count; i++){ + var new_v = opts.preFill[i][opts.selectedValuesProp]; + if(new_v == undefined){ new_v = ""; } + prefill_value = prefill_value+new_v+","; + if(new_v != ""){ + add_selected_item(opts.preFill[i], "000"+i); + } + } + } + } + if(prefill_value != ""){ + input.val(""); + var lastChar = prefill_value.substring(prefill_value.length-1); + if(lastChar != ","){ prefill_value = prefill_value+","; } + values_input.val(","+prefill_value); + $("li.as-selection-item", selections_holder).addClass("blur").removeClass("selected"); + } + input.after(values_input); + selections_holder.click(function(){ + input_focus = true; + input.focus(); + }).mousedown(function(){ input_focus = false; }).after(results_holder); + + var timeout = null; + var prev = ""; + var totalSelections = 0; + var tab_press = false; + + // Handle input field events + input.focus(function(){ + if($(this).val() == opts.startText && values_input.val() == ""){ + $(this).val(""); + } else if(input_focus){ + $("li.as-selection-item", selections_holder).removeClass("blur"); + if($(this).val() != ""){ + results_ul.css("width",selections_holder.outerWidth()); + results_holder.show(); + } + } + input_focus = true; + return true; + }).blur(function(){ + if($(this).val() == "" && values_input.val() == "" && prefill_value == ""){ + $(this).val(opts.startText); + } else if(input_focus){ + $("li.as-selection-item", selections_holder).addClass("blur").removeClass("selected"); + results_holder.hide(); + } + }).keydown(function(e) { + // track last key pressed + lastKeyPressCode = e.keyCode; + first_focus = false; + switch(e.keyCode) { + case 38: // up + e.preventDefault(); + moveSelection("up"); + break; + case 40: // down + e.preventDefault(); + moveSelection("down"); + break; + case 8: // delete + if(input.val() == ""){ + var last = values_input.val().split(","); + last = last[last.length - 2]; + selections_holder.children().not(org_li.prev()).removeClass("selected"); + if(org_li.prev().hasClass("selected")){ + values_input.val(values_input.val().replace(","+last+",",",")); + opts.selectionRemoved.call(this, org_li.prev()); + } else { + opts.selectionClick.call(this, org_li.prev()); + org_li.prev().addClass("selected"); + } + } + if(input.val().length == 1){ + results_holder.hide(); + prev = ""; + } + if($(":visible",results_holder).length > 0){ + if (timeout){ clearTimeout(timeout); } + timeout = setTimeout(function(){ keyChange(); }, opts.keyDelay); + } + break; + /*case 9: case 188: // tab or comma + tab_press = true; + var i_input = input.val().replace(/(,)/g, ""); + if(i_input != "" && values_input.val().search(","+i_input+",") < 0 && i_input.length >= opts.minChars){ + e.preventDefault(); + var n_data = {}; + n_data[opts.selectedItemProp] = i_input; + n_data[opts.selectedValuesProp] = i_input; + var lis = $("li", selections_holder).length; + add_selected_item(n_data, "00"+(lis+1)); + input.val(""); + }*/ + case 9: // tab + if(input.val() == ''){ + break; + } + case 13: case 188: // return, comma + tab_press = false; + var active = $("li.active:first", results_holder); + if(active.length > 0){ + active.click(); + results_holder.hide(); + } + if(opts.neverSubmit || active.length > 0){ + e.preventDefault(); + } + break; + default: + if(opts.showResultList){ + if(opts.selectionLimit && $("li.as-selection-item", selections_holder).length >= opts.selectionLimit){ + results_ul.html('<li class="as-message">'+opts.limitText+'</li>'); + results_holder.show(); + } else { + if (timeout){ clearTimeout(timeout); } + timeout = setTimeout(function(){ keyChange(); }, opts.keyDelay); + } + } + break; + } + }); + + function keyChange() { + // ignore if the following keys are pressed: [del] [shift] [capslock] + if( lastKeyPressCode == 46 || (lastKeyPressCode > 8 && lastKeyPressCode < 32) ){ return results_holder.hide(); } + var string = input.val().replace(/[\\]+|[\/]+/g,""); + if (string == prev) return; + prev = string; + if (string.length >= opts.minChars) { + selections_holder.addClass("loading"); + if(d_type == "string"){ + var limit = ""; + if(opts.retrieveLimit){ + limit = "&limit="+encodeURIComponent(opts.retrieveLimit); + } + if(opts.beforeRetrieve){ + string = opts.beforeRetrieve.call(this, string); + } + $.getJSON(req_string+"?"+opts.queryParam+"="+encodeURIComponent(string)+limit+opts.extraParams, function(data){ + d_count = 0; + var new_data = opts.retrieveComplete.call(this, data); + for (k in new_data) if (new_data.hasOwnProperty(k)) d_count++; + processData(new_data, string); + }); + } else { + if(opts.beforeRetrieve){ + string = opts.beforeRetrieve.call(this, string); + } + processData(org_data, string); + } + } else { + selections_holder.removeClass("loading"); + results_holder.hide(); + } + } + var num_count = 0; + function processData(data, query){ + if (!opts.matchCase){ query = query.toLowerCase(); } + var matchCount = 0; + results_holder.html(results_ul.html("")).hide(); + for(var i=0;i<d_count;i++){ + var num = i; + num_count++; + var forward = false; + if(opts.searchObjProps == "value") { + var str = data[num].value; + } else { + var str = ""; + var names = opts.searchObjProps.split(","); + for(var y=0;y<names.length;y++){ + var name = $.trim(names[y]); + str = str+data[num][name]+" "; + } + } + if(str){ + if (!opts.matchCase){ str = str.toLowerCase(); } + if(str.search(query) != -1 && values_input.val().search(","+data[num][opts.selectedValuesProp]+",") == -1){ + forward = true; + } + } + if(forward){ + var formatted = $('<li class="as-result-item" id="as-result-item-'+num+'"></li>').click(function(){ + var raw_data = $(this).data("data"); + var number = raw_data.num; + if($("#as-selection-"+number, selections_holder).length <= 0 && !tab_press){ + var data = raw_data.attributes; + input.val("").focus(); + prev = ""; + add_selected_item(data, number); + opts.resultClick.call(this, raw_data); + results_holder.hide(); + } + tab_press = false; + }).mousedown(function(){ input_focus = false; }).mouseover(function(){ + $("li", results_ul).removeClass("active"); + $(this).addClass("active"); + }).data("data",{attributes: data[num], num: num_count}); + var this_data = $.extend({},data[num]); + if (!opts.matchCase){ + var regx = new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + query + ")(?![^<>]*>)(?![^&;]+;)", "gi"); + } else { + var regx = new RegExp("(?![^&;]+;)(?!<[^<>]*)(" + query + ")(?![^<>]*>)(?![^&;]+;)", "g"); + } + + if(opts.resultsHighlight){ + this_data[opts.selectedItemProp] = this_data[opts.selectedItemProp].replace(regx,"<em>$1</em>"); + } + if(!opts.formatList){ + formatted = formatted.html(this_data[opts.selectedItemProp]); + } else { + formatted = opts.formatList.call(this, this_data, formatted); + } + results_ul.append(formatted); + delete this_data; + matchCount++; + if(opts.retrieveLimit && opts.retrieveLimit == matchCount ){ break; } + } + } + selections_holder.removeClass("loading"); + if(matchCount <= 0){ + results_ul.html('<li class="as-message">'+opts.emptyText+'</li>'); + } + results_ul.css("width", selections_holder.outerWidth()); + results_holder.show(); + opts.resultsComplete.call(this); + } + + function add_selected_item(data, num){ + values_input.val(values_input.val()+data[opts.selectedValuesProp]+","); + var item = $('<li class="as-selection-item" id="as-selection-'+num+'"></li>').click(function(){ + opts.selectionClick.call(this, $(this)); + selections_holder.children().removeClass("selected"); + $(this).addClass("selected"); + }).mousedown(function(){ input_focus = false; }); + var close = $('<a class="as-close">×</a>').click(function(){ + values_input.val(values_input.val().replace(","+data[opts.selectedValuesProp]+",",",")); + opts.selectionRemoved.call(this, item); + input_focus = true; + input.focus(); + return false; + }); + org_li.before(item.html(data[opts.selectedItemProp]).prepend(close)); + opts.selectionAdded.call(this, org_li.prev()); + } + + function moveSelection(direction){ + if($(":visible",results_holder).length > 0){ + var lis = $("li", results_holder); + if(direction == "down"){ + var start = lis.eq(0); + } else { + var start = lis.filter(":last"); + } + var active = $("li.active:first", results_holder); + if(active.length > 0){ + if(direction == "down"){ + start = active.next(); + } else { + start = active.prev(); + } + } + lis.removeClass("active"); + start.addClass("active"); + } + } + + }); + } + } +})(jQuery); diff --git a/spec/controllers/conversations_controller_spec.rb b/spec/controllers/conversations_controller_spec.rb index fe7a792e44ae85e178fbb7c2743c34aa20cc1ff7..77216148a2529ea2ae212735f9c72a89ff270cd2 100644 --- a/spec/controllers/conversations_controller_spec.rb +++ b/spec/controllers/conversations_controller_spec.rb @@ -46,7 +46,7 @@ describe ConversationsController do :conversation => { :subject => "secret stuff", :text => 'text'}, - :as_values_contact_ids => [@alice.contacts.first.id] + :contact_ids => [@alice.contacts.first.id] } end diff --git a/spec/controllers/profiles_controller_spec.rb b/spec/controllers/profiles_controller_spec.rb index ef23b8bd7ebde7bb9a299ef0233dceda7ac45ef6..21307a615141fe82d0d9ceae61688e5a26c42ae5 100644 --- a/spec/controllers/profiles_controller_spec.rb +++ b/spec/controllers/profiles_controller_spec.rb @@ -46,7 +46,7 @@ describe ProfilesController do it 'sets tags' do params = { :id => @user.person.id, - :as_values_tags => '#apples #oranges'} + :tags => '#apples #oranges'} put :update, params @user.person(true).profile.tag_list.to_set.should == ['apples', 'oranges'].to_set