Mercurial > kallithea
changeset 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 | 889cda9c2d14 |
files | rhodecode/public/css/style.css rhodecode/public/js/rhodecode.js rhodecode/templates/admin/repos/repo_edit_perms.html rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html rhodecode/templates/base/root.html rhodecode/templates/changeset/changeset.html rhodecode/templates/changeset/changeset_comment_block.html rhodecode/templates/changeset/changeset_file_comment.html |
diffstat | 8 files changed, 74 insertions(+), 59 deletions(-) [+] |
line wrap: on
line diff
--- a/rhodecode/public/css/style.css Fri Jun 01 18:34:32 2012 +0200 +++ b/rhodecode/public/css/style.css Fri Jun 01 23:29:41 2012 +0200 @@ -2821,10 +2821,10 @@ } .mentions-container{ - width: 100% !important; + width: 90% !important; } .mentions-container .yui-ac-content{ - width: 90% !important; + width: 100% !important; } .ac {
--- a/rhodecode/public/js/rhodecode.js Fri Jun 01 18:34:32 2012 +0200 +++ b/rhodecode/public/js/rhodecode.js Fri Jun 01 23:29:41 2012 +0200 @@ -44,6 +44,24 @@ }(); +String.prototype.strip = function(char) { + if(char === undefined){ + char = '\\s'; + } + return this.replace(new RegExp('^'+char+'+|'+char+'+$','g'), ''); +} +String.prototype.lstrip = function(char) { + if(char === undefined){ + char = '\\s'; + } + return this.replace(new RegExp('^'+char+'+'),''); +} +String.prototype.rstrip = function(char) { + if(char === undefined){ + char = '\\s'; + } + return this.replace(new RegExp(''+char+'+$'),''); +} /** * SmartColorGenerator @@ -447,7 +465,7 @@ ajaxPOST(submit_url, postData, success); }); - + // callbacks tooltip_activate(); }; @@ -819,7 +837,7 @@ /** MEMBERS AUTOCOMPLETE WIDGET **/ -var MembersAutoComplete = function (users_list, groups_list, group_lbl, members_lbl) { +var MembersAutoComplete = function (users_list, groups_list) { var myUsers = users_list; var myGroups = groups_list; @@ -834,9 +852,11 @@ // Match against each name of each contact for (; i < l; i++) { contact = myUsers[i]; - if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) { - matches[matches.length] = contact; - } + if (((contact.fname+"").toLowerCase().indexOf(query) > -1) || + ((contact.lname+"").toLowerCase().indexOf(query) > -1) || + ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) { + matches[matches.length] = contact; + } } return matches; }; @@ -912,21 +932,22 @@ var grname = oResultData.grname; var grmembers = oResultData.grmembers; var grnameMatchIndex = grname.toLowerCase().indexOf(query); - var grprefix = "{0}: ".format(group_lbl); + var grprefix = "{0}: ".format(_TM['Group']); var grsuffix = " (" + grmembers + " )"; - var grsuffix = " ({0} {1})".format(grmembers, members_lbl); + var grsuffix = " ({0} {1})".format(grmembers, _TM['members']); if (grnameMatchIndex > -1) { return _gravatar(grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix,null,true); } return _gravatar(grprefix + oResultData.grname + grsuffix, null,true); // Users - } else if (oResultData.fname != undefined) { - var fname = oResultData.fname, - lname = oResultData.lname, - nname = oResultData.nname || "", - // Guard against null value - fnameMatchIndex = fname.toLowerCase().indexOf(query), + } else if (oResultData.nname != undefined) { + var fname = oResultData.fname || ""; + var lname = oResultData.lname || ""; + var nname = oResultData.nname; + + // Guard against null value + var fnameMatchIndex = fname.toLowerCase().indexOf(query), lnameMatchIndex = lname.toLowerCase().indexOf(query), nnameMatchIndex = nname.toLowerCase().indexOf(query), displayfname, displaylname, displaynname; @@ -988,7 +1009,7 @@ } -var MentionsAutoComplete = function (divid, cont, users_list, groups_list, group_lbl, members_lbl) { +var MentionsAutoComplete = function (divid, cont, users_list, groups_list) { var myUsers = users_list; var myGroups = groups_list; @@ -1008,7 +1029,9 @@ // Match against each name of each contact for (; i < l; i++) { contact = myUsers[i]; - if ((contact.fname.toLowerCase().indexOf(query) > -1) || (contact.lname.toLowerCase().indexOf(query) > -1) || (contact.nname && (contact.nname.toLowerCase().indexOf(query) > -1))) { + if (((contact.fname+"").toLowerCase().indexOf(query) > -1) || + ((contact.lname+"").toLowerCase().indexOf(query) > -1) || + ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) { matches[matches.length] = contact; } } @@ -1023,6 +1046,7 @@ // DataScheme for owner var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers); + ownerDS.responseSchema = { fields: ["id", "fname", "lname", "nname", "gravatar_lnk"] }; @@ -1056,12 +1080,13 @@ tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>' return tmpl.format(em,res) } - if (oResultData.fname != undefined) { - var fname = oResultData.fname, - lname = oResultData.lname, - nname = oResultData.nname || "", - // Guard against null value - fnameMatchIndex = fname.toLowerCase().indexOf(query), + if (oResultData.nname != undefined) { + var fname = oResultData.fname || ""; + var lname = oResultData.lname || ""; + var nname = oResultData.nname; + + // Guard against null value + var fnameMatchIndex = fname.toLowerCase().indexOf(query), lnameMatchIndex = lname.toLowerCase().indexOf(query), nnameMatchIndex = nname.toLowerCase().indexOf(query), displayfname, displaylname, displaynname; @@ -1138,7 +1163,7 @@ chunks.push(org.substr(max_pos)) // postfix chunk // clean up msg2 for filtering and regex match - var msg2 = msg2.replace(' ','').replace('\n',''); + var msg2 = msg2.lstrip(' ').lstrip('\n'); if(re.test(msg2)){ var unam = re.exec(msg2)[1]; @@ -1170,8 +1195,6 @@ } - - /** * QUICK REPO MENU */
--- a/rhodecode/templates/admin/repos/repo_edit_perms.html Fri Jun 01 18:34:32 2012 +0200 +++ b/rhodecode/templates/admin/repos/repo_edit_perms.html Fri Jun 01 23:29:41 2012 +0200 @@ -117,12 +117,7 @@ YUD.setStyle('add_perm', 'opacity', '0.6'); YUD.setStyle('add_perm', 'cursor', 'default'); }); - MembersAutoComplete( - ${c.users_array|n}, - ${c.users_groups_array|n}, - "${_('Group')}", - "${_('members')}" - ); + MembersAutoComplete(${c.users_array|n}, ${c.users_groups_array|n}); }); </script>
--- a/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html Fri Jun 01 18:34:32 2012 +0200 +++ b/rhodecode/templates/admin/repos_groups/repos_group_edit_perms.html Fri Jun 01 23:29:41 2012 +0200 @@ -106,12 +106,7 @@ YUD.setStyle('add_perm', 'opacity', '0.6'); YUD.setStyle('add_perm', 'cursor', 'default'); }); - MembersAutoComplete( - ${c.users_array|n}, - ${c.users_groups_array|n}, - "${_('Group')}", - "${_('members')}" - ); + MembersAutoComplete(${c.users_array|n}, ${c.users_groups_array|n}); }); </script>
--- a/rhodecode/templates/base/root.html Fri Jun 01 18:34:32 2012 +0200 +++ b/rhodecode/templates/base/root.html Fri Jun 01 23:29:41 2012 +0200 @@ -36,6 +36,18 @@ ## JAVASCRIPT ## <%def name="js()"> + <script type="text/javascript"> + //JS translations map + var TRANSLATION_MAP = { + 'add another comment':'${_("add another comment")}', + 'Stop following this repository':"${_('Stop following this repository')}", + 'Start following this repository':"${_('Start following this repository')}", + 'Group':"${_('Group')}", + 'members':"${_('members')}" + + }; + var _TM = TRANSLATION_MAP; + </script> <script type="text/javascript" src="${h.url('/js/yui.2.9.js')}"></script> <!--[if lt IE 9]> <script language="javascript" type="text/javascript" src="${h.url('/js/excanvas.min.js')}"></script> @@ -48,20 +60,13 @@ <script type="text/javascript"> var follow_base_url = "${h.url('toggle_following')}"; - //JS translations map - var TRANSLATION_MAP = { - 'add another comment':'${_("add another comment")}', - 'Stop following this repository':"${_('Stop following this repository')}", - 'Start following this repository':"${_('Start following this repository')}", - }; - var onSuccessFollow = function(target){ var f = YUD.get(target.id); var f_cnt = YUD.get('current_followers_count'); if(f.getAttribute('class')=='follow'){ f.setAttribute('class','following'); - f.setAttribute('title',TRANSLATION_MAP['Stop following this repository']); + f.setAttribute('title',_TM['Stop following this repository']); if(f_cnt){ var cnt = Number(f_cnt.innerHTML)+1; @@ -70,7 +75,7 @@ } else{ f.setAttribute('class','follow'); - f.setAttribute('title',TRANSLATION_MAP['Start following this repository']); + f.setAttribute('title',_TM['Start following this repository']); if(f_cnt){ var cnt = Number(f_cnt.innerHTML)+1; f_cnt.innerHTML = cnt;
--- a/rhodecode/templates/changeset/changeset.html Fri Jun 01 18:34:32 2012 +0200 +++ b/rhodecode/templates/changeset/changeset.html Fri Jun 01 23:29:41 2012 +0200 @@ -116,7 +116,10 @@ </div> </div> - + <script> + var _USERS_AC_DATA = ${c.users_array|n}; + var _GROUPS_AC_DATA = ${c.users_groups_array|n}; + </script> ## diff block <%namespace name="diff_block" file="/changeset/diff_block.html"/> ${diff_block.diff_block(c.changes)}
--- a/rhodecode/templates/changeset/changeset_comment_block.html Fri Jun 01 18:34:32 2012 +0200 +++ b/rhodecode/templates/changeset/changeset_comment_block.html Fri Jun 01 23:29:41 2012 +0200 @@ -1,2 +1,4 @@ +## this is a dummy html file for partial rendering on server and sending +## generated output via ajax after comment submit <%namespace name="comment" file="/changeset/changeset_file_comment.html"/> ${comment.comment_block(c.co)}
--- a/rhodecode/templates/changeset/changeset_file_comment.html Fri Jun 01 18:34:32 2012 +0200 +++ b/rhodecode/templates/changeset/changeset_file_comment.html Fri Jun 01 23:29:41 2012 +0200 @@ -30,7 +30,7 @@ <%def name="comment_inline_form(changeset)"> <div id='comment-inline-form-template' style="display:none"> - <div class="comment-inline-form"> + <div class="comment-inline-form ac"> %if c.rhodecode_user.username != 'default': <div class="overlay"><div class="overlay-text">${_('Submitting...')}</div></div> ${h.form(h.url('changeset_comment', repo_name=c.repo_name, revision=changeset.raw_id),class_='inline-form')} @@ -41,7 +41,7 @@ _('Use @username inside this text to send notification to this RhodeCode user')))|n} </div> <div class="mentions-container" id="mentions_container_{1}"></div> - <textarea id="text_{1}" name="text" class="yui-ac-input"></textarea> + <textarea id="text_{1}" name="text" class="yui-ac-input"></textarea> </div> <div class="comment-button"> <input type="hidden" name="f_path" value="{0}"> @@ -115,15 +115,7 @@ </div> <script> YUE.onDOMReady(function () { - - MentionsAutoComplete( - 'text', - 'mentions_container', - ${c.users_array|n}, - ${c.users_groups_array|n}, - "${_('Group')}", - "${_('members')}" - ); + MentionsAutoComplete('text', 'mentions_container', _USERS_AC_DATA, _GROUPS_AC_DATA); }); </script> </%def>