social_stream 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. data/.gitignore +3 -0
  2. data/Rakefile +2 -0
  3. data/app/controllers/contacts_controller.rb +28 -0
  4. data/app/controllers/groups_controller.rb +11 -0
  5. data/app/controllers/users_controller.rb +11 -0
  6. data/app/helpers/contacts_helper.rb +2 -0
  7. data/app/models/group.rb +21 -2
  8. data/app/models/profile.rb +26 -0
  9. data/app/views/contacts/index.html.erb +2 -0
  10. data/app/views/groups/_index.html.erb +2 -4
  11. data/app/views/groups/_middle_index.html.erb +74 -0
  12. data/app/views/groups/_new.html.erb +22 -3
  13. data/app/views/groups/_right_index.html.erb +19 -0
  14. data/app/views/groups/_right_show.html.erb +3 -3
  15. data/app/views/groups/index.html.erb +15 -51
  16. data/app/views/groups/index.js.erb +1 -0
  17. data/app/views/home/_options.html.erb +1 -1
  18. data/app/views/layouts/application.html.erb +5 -10
  19. data/app/views/users/_index.html.erb +2 -4
  20. data/app/views/users/_middle_index.html.erb +6 -0
  21. data/app/views/users/_profile.html.erb +60 -10
  22. data/app/views/users/_right_index.html.erb +19 -0
  23. data/app/views/users/edit.html.erb +19 -14
  24. data/app/views/users/index.html.erb +14 -33
  25. data/app/views/users/index.js.erb +1 -0
  26. data/app/views/users/update.js.erb +32 -10
  27. data/config/locales/en.yml +7 -1
  28. data/config/routes.rb +1 -1
  29. data/lib/generators/social_stream/templates/migration.rb +1 -0
  30. data/lib/generators/social_stream/templates/public/images/btn/search.png +0 -0
  31. data/lib/generators/social_stream/templates/public/images/fcbkcomplete/close.gif +0 -0
  32. data/lib/generators/social_stream/templates/public/images/loader.gif +0 -0
  33. data/lib/generators/social_stream/templates/public/javascripts/ajax.paginate.js +53 -0
  34. data/lib/generators/social_stream/templates/public/javascripts/jqcloud-0.1.3.min.js +11 -0
  35. data/lib/generators/social_stream/templates/public/javascripts/jquery.ba-url.js +1091 -0
  36. data/lib/generators/social_stream/templates/public/javascripts/jquery.fcbkcomplete.min.js +77 -0
  37. data/lib/generators/social_stream/templates/public/javascripts/jquery.js +640 -344
  38. data/lib/generators/social_stream/templates/public/javascripts/jquery.min.js +16 -0
  39. data/lib/generators/social_stream/templates/public/javascripts/jquery.validate.js +31 -19
  40. data/lib/generators/social_stream/templates/public/javascripts/rails.js +157 -146
  41. data/lib/generators/social_stream/templates/public/stylesheets/edit_user.css +14 -3
  42. data/lib/generators/social_stream/templates/public/stylesheets/fcbkComplete.css +36 -0
  43. data/lib/generators/social_stream/templates/public/stylesheets/jqcloud.css +62 -0
  44. data/lib/generators/social_stream/templates/public/stylesheets/social_stream.css +3 -0
  45. data/lib/generators/social_stream/templates/public/stylesheets/users.css +22 -0
  46. data/lib/social_stream/models/subject.rb +2 -1
  47. data/lib/social_stream/version.rb +1 -1
  48. data/social_stream.gemspec +2 -1
  49. data/spec/controllers/contacts_controller_spec.rb +12 -0
  50. metadata +40 -7
@@ -0,0 +1,77 @@
1
+ /**
2
+ FCBKcomplete 2.7.5
3
+ - Jquery version required: 1.2.x, 1.3.x, 1.4.x
4
+
5
+ Based on TextboxList by Guillermo Rauch http://devthought.com/
6
+
7
+ Changelog:
8
+ - 2.00 new version of fcbkcomplete
9
+
10
+ - 2.01 fixed bugs & added features
11
+ fixed filter bug for preadded items
12
+ focus on the input after selecting tag
13
+ the element removed pressing backspace when the element is selected
14
+ input tag in the control has a border in IE7
15
+ added iterate over each match and apply the plugin separately
16
+ set focus on the input after selecting tag
17
+
18
+ - 2.02 fixed fist element selected bug
19
+ fixed defaultfilter error bug
20
+
21
+ - 2.5 removed selected="selected" attribute due ie bug
22
+ element search algorithm changed
23
+ better performance fix added
24
+ fixed many small bugs
25
+ onselect event added
26
+ onremove event added
27
+
28
+ - 2.6 ie6/7 support fix added
29
+ added new public method addItem due request
30
+ added new options "firstselected" that you can set true/false to select first element on dropdown list
31
+ autoexpand input element added
32
+ removeItem bug fixed
33
+ and many more bug fixed
34
+ fixed public method to use it $("elem").trigger("addItem",[{"title": "test", "value": "test"}]);
35
+
36
+ - 2.7 jquery 1.4 compability
37
+ item lock possability added by adding locked class to preadded option <option value="value" class="selected locked">text</option>
38
+ maximum item that can be added
39
+
40
+ - 2.7.1 bug fixed
41
+ ajax delay added thanks to http://github.com/dolorian
42
+
43
+ - 2.7.2 some minor bug fixed
44
+ minified version recompacted due some problems
45
+
46
+ - 2.7.3 event call fixed thanks to William Parry <williamparry!at!gmail.com>
47
+
48
+ - 2.7.4 standart event change call added on addItem, removeItem
49
+ preSet also check if item have "selected" attribute
50
+ addItem minor fix
51
+
52
+ - 2.7.5 event call removeItem fixed
53
+ new public method destroy added needed to remove fcbkcomplete element from dome
54
+
55
+ */
56
+ /* Coded by: emposha <admin@emposha.com> */
57
+ /* Copyright: Emposha.com <http://www.emposha.com> - Distributed under MIT - Keep this message! */
58
+
59
+ /**
60
+ * json_url - url to fetch json object
61
+ * cache - use cache
62
+ * height - maximum number of element shown before scroll will apear
63
+ * newel - show typed text like a element
64
+ * firstselected - automaticly select first element from dropdown
65
+ * filter_case - case sensitive filter
66
+ * filter_selected - filter selected items from list
67
+ * complete_text - text for complete page
68
+ * maxshownitems - maximum numbers that will be shown at dropdown list (less better performance)
69
+ * onselect - fire event on item select
70
+ * onremove - fire event on item remove
71
+ * maxitimes - maximum items that can be added
72
+ * delay - delay between ajax request (bigger delay, lower server time request)
73
+ * addontab - add first visible element on tab or enter hit
74
+ * attachto - after this element fcbkcomplete insert own elements
75
+ */
76
+
77
+ jQuery(function($){$.fn.fcbkcomplete=function(opt){return this.each(function(){function init(){createFCBK();preSet();addInput(0)}function createFCBK(){element.hide();element.attr("multiple","multiple");if(element.attr("name").indexOf("[]")==-1){element.attr("name",element.attr("name")+"[]")}holder=$(document.createElement("ul"));holder.attr("class","holder");if(options.attachto){if(typeof(options.attachto)=="object"){options.attachto.append(holder)}else{$(options.attachto).append(holder)}}else{element.after(holder)}complete=$(document.createElement("div"));complete.addClass("facebook-auto");complete.append('<div class="default">'+options.complete_text+"</div>");complete.hover(function(){options.complete_hover=0},function(){options.complete_hover=1});feed=$(document.createElement("ul"));feed.attr("id",elemid+"_feed");complete.prepend(feed);holder.after(complete);feed.css("width",complete.width())}function preSet(){element.children("option").each(function(i,option){option=$(option);if(option.hasClass("selected")){addItem(option.text(),option.val(),true,option.hasClass("locked"));option.attr("selected","selected")}cache.push({key:option.text(),value:option.val()});search_string+=""+(cache.length-1)+":"+option.text()+";"})}$(this).bind("addItem",function(event,data){addItem(data.title,data.value,0,0,0)});$(this).bind("removeItem",function(event,data){var item=holder.children('li[rel='+data.value+']');if(item.length){removeItem(item)}});$(this).bind("destroy",function(event,data){holder.remove();complete.remove();element.show()});function addItem(title,value,preadded,locked,focusme){if(!maxItems()){return false}var li=document.createElement("li");var txt=document.createTextNode(title);var aclose=document.createElement("a");var liclass="bit-box"+(locked?" locked":"");$(li).attr({"class":liclass,"rel":value});$(li).prepend(txt);$(aclose).attr({"class":"closebutton","href":"#"});li.appendChild(aclose);holder.append(li);$(aclose).click(function(){removeItem($(this).parent("li"));return false});if(!preadded){$("#"+elemid+"_annoninput").remove();var _item;addInput(focusme);if(element.children("option[value="+value+"]").length){_item=element.children("option[value="+value+"]");_item.get(0).setAttribute("selected","selected");_item.attr("selected","selected");if(!_item.hasClass("selected")){_item.addClass("selected")}}else{var _item=$(document.createElement("option"));_item.attr("value",value).get(0).setAttribute("selected","selected");_item.attr("value",value).attr("selected","selected");_item.attr("value",value).addClass("selected");_item.text(title);element.append(_item)}if(options.onselect){funCall(options.onselect,_item)}element.change()}holder.children("li.bit-box.deleted").removeClass("deleted");feed.hide()}function removeItem(item){if(!item.hasClass('locked')){item.fadeOut("fast");if(options.onremove){var _item=element.children("option[value="+item.attr("rel")+"]");funCall(options.onremove,_item)}element.children('option[value="'+item.attr("rel")+'"]').removeAttr("selected").removeClass("selected");item.remove();element.change();deleting=0}}function addInput(focusme){var li=$(document.createElement("li"));var input=$(document.createElement("input"));var getBoxTimeout=0;li.attr({"class":"bit-input","id":elemid+"_annoninput"});input.attr({"type":"text","class":"maininput","size":"1"});holder.append(li.append(input));input.focus(function(){complete.fadeIn("fast")});input.blur(function(){if(options.complete_hover){complete.fadeOut("fast")}else{input.focus()}});holder.click(function(){input.focus();if(feed.length&&input.val().length){feed.show()}else{feed.hide();complete.children(".default").show()}});input.keypress(function(event){if(event.keyCode==13){return false}input.attr("size",input.val().length+1)});input.keydown(function(event){if(event.keyCode==191){event.preventDefault();return false}});input.keyup(function(event){var etext=xssPrevent(input.val());if(event.keyCode==8&&etext.length==0){feed.hide();if(!holder.children("li.bit-box:last").hasClass('locked')){if(holder.children("li.bit-box.deleted").length==0){holder.children("li.bit-box:last").addClass("deleted");return false}else{if(deleting){return}deleting=1;holder.children("li.bit-box.deleted").fadeOut("fast",function(){removeItem($(this));return false})}}}if(event.keyCode!=40&&event.keyCode!=38&&event.keyCode!=37&&event.keyCode!=39&&etext.length!=0){counter=0;if(options.json_url){if(options.cache&&json_cache){addMembers(etext);bindEvents()}else{getBoxTimeout++;var getBoxTimeoutValue=getBoxTimeout;setTimeout(function(){if(getBoxTimeoutValue!=getBoxTimeout)return;$.getJSON(options.json_url,{tag:etext},function(data){addMembers(etext,data);json_cache=true;bindEvents()})},options.delay)}}else{addMembers(etext);bindEvents()}complete.children(".default").hide();feed.show()}});if(focusme){setTimeout(function(){input.focus();complete.children(".default").show()},1)}}function addMembers(etext,data){feed.html('');if(!options.cache&&data!=null){cache=new Array();search_string=""}addTextItem(etext);if(data!=null&&data.length){$.each(data,function(i,val){cache.push({key:val.key,value:val.value});search_string+=""+(cache.length-1)+":"+val.key+";"})}var maximum=options.maxshownitems<cache.length?options.maxshownitems:cache.length;var filter="i";if(options.filter_case){filter=""}var myregexp,match;try{myregexp=eval('/(?:^|;)\\s*(\\d+)\\s*:[^;]*?'+etext+'[^;]*/g'+filter);match=myregexp.exec(search_string)}catch(ex){};var content='';while(match!=null&&maximum>0){var id=match[1];var object=cache[id];if(options.filter_selected&&element.children("option[value="+object.value+"]").hasClass("selected")){}else{content+='<li rel="'+object.value+'">'+itemIllumination(object.key,etext)+'</li>';counter++;maximum--}match=myregexp.exec(search_string)}feed.append(content);if(options.firstselected){focuson=feed.children("li:visible:first");focuson.addClass("auto-focus")}if(counter>options.height){feed.css({"height":(options.height*24)+"px","overflow":"auto"})}else{feed.css("height","auto")}}function itemIllumination(text,etext){if(options.filter_case){try{eval("var text = text.replace(/(.*)("+etext+")(.*)/gi,'$1<em>$2</em>$3');")}catch(ex){}}else{try{eval("var text = text.replace(/(.*)("+etext.toLowerCase()+")(.*)/gi,'$1<em>$2</em>$3');")}catch(ex){}}return text}function bindFeedEvent(){feed.children("li").mouseover(function(){feed.children("li").removeClass("auto-focus");$(this).addClass("auto-focus");focuson=$(this)});feed.children("li").mouseout(function(){$(this).removeClass("auto-focus");focuson=null})}function removeFeedEvent(){feed.children("li").unbind("mouseover");feed.children("li").unbind("mouseout");feed.mousemove(function(){bindFeedEvent();feed.unbind("mousemove")})}function bindEvents(){var maininput=$("#"+elemid+"_annoninput").children(".maininput");bindFeedEvent();feed.children("li").unbind("mousedown");feed.children("li").mousedown(function(){var option=$(this);addItem(option.text(),option.attr("rel"),0,0,1);feed.hide();complete.hide()});maininput.unbind("keydown");maininput.keydown(function(event){if(event.keyCode==191){event.preventDefault();return false}if(event.keyCode!=8){holder.children("li.bit-box.deleted").removeClass("deleted")}if((event.keyCode==13||event.keyCode==9)&&checkFocusOn()){var option=focuson;addItem(option.text(),option.attr("rel"),0,0,1);complete.hide();event.preventDefault();focuson=null;return false}if((event.keyCode==13||event.keyCode==9)&&!checkFocusOn()){if(options.newel){var value=xssPrevent($(this).val());addItem(value,value,0,0,1);complete.hide();event.preventDefault();focuson=null;return false}if(options.addontab){focuson=feed.children("li:visible:first");var option=focuson;addItem(option.text(),option.attr("rel"),0,0,1);complete.hide();event.preventDefault();focuson=null;return false}}if(event.keyCode==40){removeFeedEvent();if(focuson==null||focuson.length==0){focuson=feed.children("li:visible:first");feed.get(0).scrollTop=0}else{focuson.removeClass("auto-focus");focuson=focuson.nextAll("li:visible:first");var prev=parseInt(focuson.prevAll("li:visible").length,10);var next=parseInt(focuson.nextAll("li:visible").length,10);if((prev>Math.round(options.height/2)||next<=Math.round(options.height/2))&&typeof(focuson.get(0))!="undefined"){feed.get(0).scrollTop=parseInt(focuson.get(0).scrollHeight,10)*(prev-Math.round(options.height/2))}}feed.children("li").removeClass("auto-focus");focuson.addClass("auto-focus")}if(event.keyCode==38){removeFeedEvent();if(focuson==null||focuson.length==0){focuson=feed.children("li:visible:last");feed.get(0).scrollTop=parseInt(focuson.get(0).scrollHeight,10)*(parseInt(feed.children("li:visible").length,10)-Math.round(options.height/2))}else{focuson.removeClass("auto-focus");focuson=focuson.prevAll("li:visible:first");var prev=parseInt(focuson.prevAll("li:visible").length,10);var next=parseInt(focuson.nextAll("li:visible").length,10);if((next>Math.round(options.height/2)||prev<=Math.round(options.height/2))&&typeof(focuson.get(0))!="undefined"){feed.get(0).scrollTop=parseInt(focuson.get(0).scrollHeight,10)*(prev-Math.round(options.height/2))}}feed.children("li").removeClass("auto-focus");focuson.addClass("auto-focus")}})}function maxItems(){if(options.maxitems!=0){if(holder.children("li.bit-box").length<options.maxitems){return true}else{return false}}}function addTextItem(value){if(options.newel&&maxItems()){feed.children("li[fckb=1]").remove();if(value.length==0){return}var li=$(document.createElement("li"));li.attr({"rel":value,"fckb":"1"}).html(value);feed.prepend(li);counter++}else{return}}function funCall(func,item){var _object="";for(i=0;i<item.get(0).attributes.length;i++){if(item.get(0).attributes[i].nodeValue!=null){_object+="\"_"+item.get(0).attributes[i].nodeName+"\": \""+item.get(0).attributes[i].nodeValue+"\","}}_object="{"+_object+" notinuse: 0}";func.call(func,_object)}function checkFocusOn(){if(focuson==null){return false}if(focuson.length==0){return false}return true}function xssPrevent(string){string=string.replace(/[\"\'][\s]*javascript:(.*)[\"\']/g,"\"\"");string=string.replace(/script(.*)/g,"");string=string.replace(/eval\((.*)\)/g,"");string=string.replace('/([\x00-\x08,\x0b-\x0c,\x0e-\x19])/','');return string}var options=$.extend({json_url:null,cache:false,height:"10",newel:false,addontab:false,firstselected:false,filter_case:false,filter_selected:false,complete_text:"Start to type...",maxshownitems:30,maxitems:10,onselect:null,onremove:null,attachto:null,delay:350},opt);var holder=null;var feed=null;var complete=null;var counter=0;var cache=new Array();var json_cache=false;var search_string="";var focuson=null;var deleting=0;var complete_hover=1;var element=$(this);var elemid=element.attr("id");init();return this})}});