comparison rhodecode/public/js/rhodecode.js @ 2369:c2f131502037 beta

Autocomplete fixes - use translation MAP - move translation to top level in order to be used inside rhodecode.js - re-use user and groups data in changesets page
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 01 Jun 2012 23:29:41 +0200
parents 5143b8df576c
children 6776f4e569d7 530bd12fc18a
comparison
equal deleted inserted replaced
2368:5143b8df576c 2369:c2f131502037
42 // Replace the prototype property 42 // Replace the prototype property
43 return format; 43 return format;
44 44
45 }(); 45 }();
46 46
47 String.prototype.strip = function(char) {
48 if(char === undefined){
49 char = '\\s';
50 }
51 return this.replace(new RegExp('^'+char+'+|'+char+'+$','g'), '');
52 }
53 String.prototype.lstrip = function(char) {
54 if(char === undefined){
55 char = '\\s';
56 }
57 return this.replace(new RegExp('^'+char+'+'),'');
58 }
59 String.prototype.rstrip = function(char) {
60 if(char === undefined){
61 char = '\\s';
62 }
63 return this.replace(new RegExp(''+char+'+$'),'');
64 }
47 65
48 /** 66 /**
49 * SmartColorGenerator 67 * SmartColorGenerator
50 * 68 *
51 *usage:: 69 *usage::
445 } 463 }
446 YUD.addClass(overlay, 'submitting'); 464 YUD.addClass(overlay, 'submitting');
447 465
448 ajaxPOST(submit_url, postData, success); 466 ajaxPOST(submit_url, postData, success);
449 }); 467 });
450 468 // callbacks
451 tooltip_activate(); 469 tooltip_activate();
452 }; 470 };
453 471
454 var deleteComment = function(comment_id){ 472 var deleteComment = function(comment_id){
455 var url = AJAX_COMMENT_DELETE_URL.replace('__COMMENT_ID__',comment_id); 473 var url = AJAX_COMMENT_DELETE_URL.replace('__COMMENT_ID__',comment_id);
817 }; 835 };
818 836
819 837
820 /** MEMBERS AUTOCOMPLETE WIDGET **/ 838 /** MEMBERS AUTOCOMPLETE WIDGET **/
821 839
822 var MembersAutoComplete = function (users_list, groups_list, group_lbl, members_lbl) { 840 var MembersAutoComplete = function (users_list, groups_list) {
823 var myUsers = users_list; 841 var myUsers = users_list;
824 var myGroups = groups_list; 842 var myGroups = groups_list;
825 843
826 // Define a custom search function for the DataSource of users 844 // Define a custom search function for the DataSource of users
827 var matchUsers = function (sQuery) { 845 var matchUsers = function (sQuery) {
832 var matches = []; 850 var matches = [];
833 851
834 // Match against each name of each contact 852 // Match against each name of each contact
835 for (; i < l; i++) { 853 for (; i < l; i++) {
836 contact = myUsers[i]; 854 contact = myUsers[i];
837 if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) { 855 if (((contact.fname+"").toLowerCase().indexOf(query) > -1) ||
838 matches[matches.length] = contact; 856 ((contact.lname+"").toLowerCase().indexOf(query) > -1) ||
839 } 857 ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) {
858 matches[matches.length] = contact;
859 }
840 } 860 }
841 return matches; 861 return matches;
842 }; 862 };
843 863
844 // Define a custom search function for the DataSource of usersGroups 864 // Define a custom search function for the DataSource of usersGroups
910 // group 930 // group
911 if (oResultData.grname != undefined) { 931 if (oResultData.grname != undefined) {
912 var grname = oResultData.grname; 932 var grname = oResultData.grname;
913 var grmembers = oResultData.grmembers; 933 var grmembers = oResultData.grmembers;
914 var grnameMatchIndex = grname.toLowerCase().indexOf(query); 934 var grnameMatchIndex = grname.toLowerCase().indexOf(query);
915 var grprefix = "{0}: ".format(group_lbl); 935 var grprefix = "{0}: ".format(_TM['Group']);
916 var grsuffix = " (" + grmembers + " )"; 936 var grsuffix = " (" + grmembers + " )";
917 var grsuffix = " ({0} {1})".format(grmembers, members_lbl); 937 var grsuffix = " ({0} {1})".format(grmembers, _TM['members']);
918 938
919 if (grnameMatchIndex > -1) { 939 if (grnameMatchIndex > -1) {
920 return _gravatar(grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix,null,true); 940 return _gravatar(grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix,null,true);
921 } 941 }
922 return _gravatar(grprefix + oResultData.grname + grsuffix, null,true); 942 return _gravatar(grprefix + oResultData.grname + grsuffix, null,true);
923 // Users 943 // Users
924 } else if (oResultData.fname != undefined) { 944 } else if (oResultData.nname != undefined) {
925 var fname = oResultData.fname, 945 var fname = oResultData.fname || "";
926 lname = oResultData.lname, 946 var lname = oResultData.lname || "";
927 nname = oResultData.nname || "", 947 var nname = oResultData.nname;
928 // Guard against null value 948
929 fnameMatchIndex = fname.toLowerCase().indexOf(query), 949 // Guard against null value
950 var fnameMatchIndex = fname.toLowerCase().indexOf(query),
930 lnameMatchIndex = lname.toLowerCase().indexOf(query), 951 lnameMatchIndex = lname.toLowerCase().indexOf(query),
931 nnameMatchIndex = nname.toLowerCase().indexOf(query), 952 nnameMatchIndex = nname.toLowerCase().indexOf(query),
932 displayfname, displaylname, displaynname; 953 displayfname, displaylname, displaynname;
933 954
934 if (fnameMatchIndex > -1) { 955 if (fnameMatchIndex > -1) {
986 ownerAC: ownerAC, 1007 ownerAC: ownerAC,
987 }; 1008 };
988 } 1009 }
989 1010
990 1011
991 var MentionsAutoComplete = function (divid, cont, users_list, groups_list, group_lbl, members_lbl) { 1012 var MentionsAutoComplete = function (divid, cont, users_list, groups_list) {
992 var myUsers = users_list; 1013 var myUsers = users_list;
993 var myGroups = groups_list; 1014 var myGroups = groups_list;
994 1015
995 // Define a custom search function for the DataSource of users 1016 // Define a custom search function for the DataSource of users
996 var matchUsers = function (sQuery) { 1017 var matchUsers = function (sQuery) {
1006 var matches = []; 1027 var matches = [];
1007 1028
1008 // Match against each name of each contact 1029 // Match against each name of each contact
1009 for (; i < l; i++) { 1030 for (; i < l; i++) {
1010 contact = myUsers[i]; 1031 contact = myUsers[i];
1011 if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) { 1032 if (((contact.fname+"").toLowerCase().indexOf(query) > -1) ||
1033 ((contact.lname+"").toLowerCase().indexOf(query) > -1) ||
1034 ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) {
1012 matches[matches.length] = contact; 1035 matches[matches.length] = contact;
1013 } 1036 }
1014 } 1037 }
1015 return matches 1038 return matches
1016 }; 1039 };
1021 return u 1044 return u
1022 }; 1045 };
1023 1046
1024 // DataScheme for owner 1047 // DataScheme for owner
1025 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers); 1048 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
1049
1026 ownerDS.responseSchema = { 1050 ownerDS.responseSchema = {
1027 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"] 1051 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"]
1028 }; 1052 };
1029 1053
1030 // Instantiate AutoComplete for mentions 1054 // Instantiate AutoComplete for mentions
1054 em = '/images/icons/group.png' 1078 em = '/images/icons/group.png'
1055 } 1079 }
1056 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>' 1080 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>'
1057 return tmpl.format(em,res) 1081 return tmpl.format(em,res)
1058 } 1082 }
1059 if (oResultData.fname != undefined) { 1083 if (oResultData.nname != undefined) {
1060 var fname = oResultData.fname, 1084 var fname = oResultData.fname || "";
1061 lname = oResultData.lname, 1085 var lname = oResultData.lname || "";
1062 nname = oResultData.nname || "", 1086 var nname = oResultData.nname;
1063 // Guard against null value 1087
1064 fnameMatchIndex = fname.toLowerCase().indexOf(query), 1088 // Guard against null value
1089 var fnameMatchIndex = fname.toLowerCase().indexOf(query),
1065 lnameMatchIndex = lname.toLowerCase().indexOf(query), 1090 lnameMatchIndex = lname.toLowerCase().indexOf(query),
1066 nnameMatchIndex = nname.toLowerCase().indexOf(query), 1091 nnameMatchIndex = nname.toLowerCase().indexOf(query),
1067 displayfname, displaylname, displaynname; 1092 displayfname, displaylname, displaynname;
1068 1093
1069 if (fnameMatchIndex > -1) { 1094 if (fnameMatchIndex > -1) {
1136 chunks.push(org.substr(0,at_pos))// prefix chunk 1161 chunks.push(org.substr(0,at_pos))// prefix chunk
1137 chunks.push(msg2) // search chunk 1162 chunks.push(msg2) // search chunk
1138 chunks.push(org.substr(max_pos)) // postfix chunk 1163 chunks.push(org.substr(max_pos)) // postfix chunk
1139 1164
1140 // clean up msg2 for filtering and regex match 1165 // clean up msg2 for filtering and regex match
1141 var msg2 = msg2.replace(' ','').replace('\n',''); 1166 var msg2 = msg2.lstrip(' ').lstrip('\n');
1142 1167
1143 if(re.test(msg2)){ 1168 if(re.test(msg2)){
1144 var unam = re.exec(msg2)[1]; 1169 var unam = re.exec(msg2)[1];
1145 return [unam, chunks]; 1170 return [unam, chunks];
1146 } 1171 }
1166 return { 1191 return {
1167 ownerDS: ownerDS, 1192 ownerDS: ownerDS,
1168 ownerAC: ownerAC, 1193 ownerAC: ownerAC,
1169 }; 1194 };
1170 } 1195 }
1171
1172
1173 1196
1174 1197
1175 /** 1198 /**
1176 * QUICK REPO MENU 1199 * QUICK REPO MENU
1177 */ 1200 */