annotate rhodecode/public/js/rhodecode.js @ 4158:e4848cd9c8ae rhodecode-2.2.5-gpl

rhodecode.js: fix indentation
author Mads Kiilerich <madski@unity3d.com>
date Wed, 02 Jul 2014 19:03:25 -0400
parents bc296381fb6c
children a991e5c57a8d
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
1 /**
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
2 RhodeCode JS Files
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
3 **/
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
4
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
5 if (typeof console == "undefined" || typeof console.log == "undefined"){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
6 console = { log: function() {} }
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
7 }
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
8
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
9 /**
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
10 * INJECT .format function into String
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
11 * Usage: "My name is {0} {1}".format("Johny","Bravo")
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
12 * Return "My name is Johny Bravo"
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
13 * Inspired by https://gist.github.com/1049426
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
14 */
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
15 String.prototype.format = function() {
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
16 function format() {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
17 var str = this;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
18 var len = arguments.length+1;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
19 var safe = undefined;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
20 var arg = undefined;
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
21
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
22 // For each {0} {1} {n...} replace with the argument in that position. If
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
23 // the argument is an object or an array it will be stringified to JSON.
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
24 for (var i=0; i < len; arg = arguments[i++]) {
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
25 safe = typeof arg === 'object' ? JSON.stringify(arg) : arg;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
26 str = str.replace(RegExp('\\{'+(i-1)+'\\}', 'g'), safe);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
27 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
28 return str;
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
29 }
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
30
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
31 // Save a reference of what may already exist under the property native.
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
32 // Allows for doing something like: if("".format.native) { /* use native */ }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
33 format.native = String.prototype.format;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
34
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
35 // Replace the prototype property
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
36 return format;
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
37
1458
9d9e491e2a21 added author to main page tooltip
Marcin Kuzminski <marcin@python-works.com>
parents: 1426
diff changeset
38 }();
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
39
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
40 String.prototype.strip = function(char) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
41 if(char === undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
42 char = '\\s';
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
43 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
44 return this.replace(new RegExp('^'+char+'+|'+char+'+$','g'), '');
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
45 }
4157
bc296381fb6c rhodecode.js: remove unused stuff
Mads Kiilerich <madski@unity3d.com>
parents: 4135
diff changeset
46
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
47 String.prototype.lstrip = function(char) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
48 if(char === undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
49 char = '\\s';
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
50 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
51 return this.replace(new RegExp('^'+char+'+'),'');
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
52 }
4157
bc296381fb6c rhodecode.js: remove unused stuff
Mads Kiilerich <madski@unity3d.com>
parents: 4135
diff changeset
53
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
54 String.prototype.rstrip = function(char) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
55 if(char === undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
56 char = '\\s';
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
57 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
58 return this.replace(new RegExp(''+char+'+$'),'');
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
59 }
1465
ef31d0c6bae9 Added smart color generator to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 1458
diff changeset
60
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
61
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
62 if(!Array.prototype.indexOf) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
63 Array.prototype.indexOf = function(needle) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
64 for(var i = 0; i < this.length; i++) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
65 if(this[i] === needle) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
66 return i;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
67 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
68 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
69 return -1;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
70 };
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
71 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
72
2698
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
73 // IE(CRAP) doesn't support previousElementSibling
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
74 var prevElementSibling = function( el ) {
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
75 if( el.previousElementSibling ) {
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
76 return el.previousElementSibling;
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
77 } else {
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
78 while( el = el.previousSibling ) {
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
79 if( el.nodeType === 1 ) return el;
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
80 }
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
81 }
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
82 }
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
83
1465
ef31d0c6bae9 Added smart color generator to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 1458
diff changeset
84 /**
4135
cc28a05562d3 Clarify copyright and license of PyRoutes.JS
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4087
diff changeset
85 * A customized version of PyRoutes.JS from https://pypi.python.org/pypi/pyroutes.js/
cc28a05562d3 Clarify copyright and license of PyRoutes.JS
Bradley M. Kuhn <bkuhn@sfconservancy.org>
parents: 4087
diff changeset
86 * which is copyright Stephane Klein and was made available under the BSD License.
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
87 *
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
88 * Usage pyroutes.url('mark_error_fixed',{"error_id":error_id}) // /mark_error_fixed/<error_id>
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
89 */
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
90 var pyroutes = (function() {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
91 // access global map defined in special file pyroutes
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
92 var matchlist = PROUTES_MAP;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
93 var sprintf = (function() {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
94 function get_type(variable) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
95 return Object.prototype.toString.call(variable).slice(8, -1).toLowerCase();
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
96 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
97 function str_repeat(input, multiplier) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
98 for (var output = []; multiplier > 0; output[--multiplier] = input) {/* do nothing */}
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
99 return output.join('');
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
100 }
1465
ef31d0c6bae9 Added smart color generator to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 1458
diff changeset
101
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
102 var str_format = function() {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
103 if (!str_format.cache.hasOwnProperty(arguments[0])) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
104 str_format.cache[arguments[0]] = str_format.parse(arguments[0]);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
105 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
106 return str_format.format.call(null, str_format.cache[arguments[0]], arguments);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
107 };
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
108
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
109 str_format.format = function(parse_tree, argv) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
110 var cursor = 1, tree_length = parse_tree.length, node_type = '', arg, output = [], i, k, match, pad, pad_character, pad_length;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
111 for (i = 0; i < tree_length; i++) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
112 node_type = get_type(parse_tree[i]);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
113 if (node_type === 'string') {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
114 output.push(parse_tree[i]);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
115 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
116 else if (node_type === 'array') {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
117 match = parse_tree[i]; // convenience purposes only
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
118 if (match[2]) { // keyword argument
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
119 arg = argv[cursor];
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
120 for (k = 0; k < match[2].length; k++) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
121 if (!arg.hasOwnProperty(match[2][k])) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
122 throw(sprintf('[sprintf] property "%s" does not exist', match[2][k]));
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
123 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
124 arg = arg[match[2][k]];
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
125 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
126 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
127 else if (match[1]) { // positional argument (explicit)
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
128 arg = argv[match[1]];
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
129 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
130 else { // positional argument (implicit)
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
131 arg = argv[cursor++];
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
132 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
133
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
134 if (/[^s]/.test(match[8]) && (get_type(arg) != 'number')) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
135 throw(sprintf('[sprintf] expecting number but found %s', get_type(arg)));
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
136 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
137 switch (match[8]) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
138 case 'b': arg = arg.toString(2); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
139 case 'c': arg = String.fromCharCode(arg); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
140 case 'd': arg = parseInt(arg, 10); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
141 case 'e': arg = match[7] ? arg.toExponential(match[7]) : arg.toExponential(); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
142 case 'f': arg = match[7] ? parseFloat(arg).toFixed(match[7]) : parseFloat(arg); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
143 case 'o': arg = arg.toString(8); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
144 case 's': arg = ((arg = String(arg)) && match[7] ? arg.substring(0, match[7]) : arg); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
145 case 'u': arg = Math.abs(arg); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
146 case 'x': arg = arg.toString(16); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
147 case 'X': arg = arg.toString(16).toUpperCase(); break;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
148 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
149 arg = (/[def]/.test(match[8]) && match[3] && arg >= 0 ? '+'+ arg : arg);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
150 pad_character = match[4] ? match[4] == '0' ? '0' : match[4].charAt(1) : ' ';
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
151 pad_length = match[6] - String(arg).length;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
152 pad = match[6] ? str_repeat(pad_character, pad_length) : '';
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
153 output.push(match[5] ? arg + pad : pad + arg);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
154 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
155 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
156 return output.join('');
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
157 };
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
158
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
159 str_format.cache = {};
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
160
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
161 str_format.parse = function(fmt) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
162 var _fmt = fmt, match = [], parse_tree = [], arg_names = 0;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
163 while (_fmt) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
164 if ((match = /^[^\x25]+/.exec(_fmt)) !== null) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
165 parse_tree.push(match[0]);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
166 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
167 else if ((match = /^\x25{2}/.exec(_fmt)) !== null) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
168 parse_tree.push('%');
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
169 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
170 else if ((match = /^\x25(?:([1-9]\d*)\$|\(([^\)]+)\))?(\+)?(0|'[^$])?(-)?(\d+)?(?:\.(\d+))?([b-fosuxX])/.exec(_fmt)) !== null) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
171 if (match[2]) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
172 arg_names |= 1;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
173 var field_list = [], replacement_field = match[2], field_match = [];
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
174 if ((field_match = /^([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
175 field_list.push(field_match[1]);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
176 while ((replacement_field = replacement_field.substring(field_match[0].length)) !== '') {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
177 if ((field_match = /^\.([a-z_][a-z_\d]*)/i.exec(replacement_field)) !== null) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
178 field_list.push(field_match[1]);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
179 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
180 else if ((field_match = /^\[(\d+)\]/.exec(replacement_field)) !== null) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
181 field_list.push(field_match[1]);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
182 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
183 else {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
184 throw('[sprintf] huh?');
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
185 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
186 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
187 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
188 else {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
189 throw('[sprintf] huh?');
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
190 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
191 match[2] = field_list;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
192 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
193 else {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
194 arg_names |= 2;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
195 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
196 if (arg_names === 3) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
197 throw('[sprintf] mixing positional and named placeholders is not (yet) supported');
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
198 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
199 parse_tree.push(match);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
200 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
201 else {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
202 throw('[sprintf] huh?');
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
203 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
204 _fmt = _fmt.substring(match[0].length);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
205 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
206 return parse_tree;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
207 };
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
208
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
209 return str_format;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
210 })();
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
211
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
212 var vsprintf = function(fmt, argv) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
213 argv.unshift(fmt);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
214 return sprintf.apply(null, argv);
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
215 };
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
216 return {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
217 'url': function(route_name, params) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
218 var result = route_name;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
219 if (typeof(params) != 'object'){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
220 params = {};
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
221 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
222 if (matchlist.hasOwnProperty(route_name)) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
223 var route = matchlist[route_name];
3403
07f4193083fd extra params in pyroutes now generate GET params
Marcin Kuzminski <marcin@python-works.com>
parents: 3388
diff changeset
224 // param substitution
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
225 for(var i=0; i < route[1].length; i++) {
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
226 if (!params.hasOwnProperty(route[1][i]))
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
227 throw new Error(route[1][i] + ' missing in "' + route_name + '" route generation');
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
228 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
229 result = sprintf(route[0], params);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
230
3403
07f4193083fd extra params in pyroutes now generate GET params
Marcin Kuzminski <marcin@python-works.com>
parents: 3388
diff changeset
231 var ret = [];
07f4193083fd extra params in pyroutes now generate GET params
Marcin Kuzminski <marcin@python-works.com>
parents: 3388
diff changeset
232 //extra params => GET
07f4193083fd extra params in pyroutes now generate GET params
Marcin Kuzminski <marcin@python-works.com>
parents: 3388
diff changeset
233 for(param in params){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
234 if (route[1].indexOf(param) == -1){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
235 ret.push(encodeURIComponent(param) + "=" + encodeURIComponent(params[param]));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
236 }
3403
07f4193083fd extra params in pyroutes now generate GET params
Marcin Kuzminski <marcin@python-works.com>
parents: 3388
diff changeset
237 }
07f4193083fd extra params in pyroutes now generate GET params
Marcin Kuzminski <marcin@python-works.com>
parents: 3388
diff changeset
238 var _parts = ret.join("&");
07f4193083fd extra params in pyroutes now generate GET params
Marcin Kuzminski <marcin@python-works.com>
parents: 3388
diff changeset
239 if(_parts){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
240 result = result +'?'+ _parts
3403
07f4193083fd extra params in pyroutes now generate GET params
Marcin Kuzminski <marcin@python-works.com>
parents: 3388
diff changeset
241 }
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
242 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
243
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
244 return result;
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
245 },
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
246 'register': function(route_name, route_tmpl, req_params) {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
247 if (typeof(req_params) != 'object') {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
248 req_params = [];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
249 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
250 //fix escape
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
251 route_tmpl = unescape(route_tmpl);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
252 keys = [];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
253 for (o in req_params){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
254 keys.push(req_params[o])
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
255 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
256 matchlist[route_name] = [
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
257 route_tmpl,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
258 keys
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
259 ]
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
260 },
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
261 '_routes': function(){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
262 return matchlist;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
263 }
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
264 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
265 })();
1465
ef31d0c6bae9 Added smart color generator to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 1458
diff changeset
266
ef31d0c6bae9 Added smart color generator to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 1458
diff changeset
267
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
268 /**
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
269 * GLOBAL YUI Shortcuts
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
270 */
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
271 var YUC = YAHOO.util.Connect;
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
272 var YUD = YAHOO.util.Dom;
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
273 var YUE = YAHOO.util.Event;
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
274 var YUQ = YAHOO.util.Selector.query;
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
275
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 1712
diff changeset
276 var _run_callbacks = function(callbacks){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
277 if (callbacks !== undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
278 var _l = callbacks.length;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
279 for (var i=0;i<_l;i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
280 var func = callbacks[i];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
281 if(typeof(func)=='function'){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
282 try{
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
283 func();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
284 }catch (err){};
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
285 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
286 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
287 }
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 1712
diff changeset
288 }
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 1712
diff changeset
289
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
290 /**
3715
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
291 * turns objects into GET query string
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
292 */
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
293 var toQueryString = function(o) {
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
294 if(typeof o !== 'object') {
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
295 return false;
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
296 }
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
297 var _p, _qs = [];
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
298 for(_p in o) {
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
299 _qs.push(encodeURIComponent(_p) + '=' + encodeURIComponent(o[_p]));
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
300 }
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
301 return _qs.join('&');
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
302 };
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
303
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
304 /**
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
305 * Partial Ajax Implementation
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
306 *
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
307 * @param url: defines url to make partial request
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
308 * @param container: defines id of container to input partial result
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
309 * @param s_call: success callback function that takes o as arg
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
310 * o.tId
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
311 * o.status
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
312 * o.statusText
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
313 * o.getResponseHeader[ ]
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
314 * o.getAllResponseHeaders
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
315 * o.responseText
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
316 * o.responseXML
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
317 * o.argument
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
318 * @param f_call: failure callback
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
319 * @param args arguments
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
320 */
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
321 function ypjax(url,container,s_call,f_call,args){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
322 var method='GET';
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
323 if(args===undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
324 args=null;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
325 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
326
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
327 // Set special header for partial ajax == HTTP_X_PARTIAL_XHR
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
328 YUC.initHeader('X-PARTIAL-XHR',true);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
329
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
330 // wrapper of passed callback
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
331 var s_wrapper = (function(o){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
332 return function(o){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
333 YUD.get(container).innerHTML=o.responseText;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
334 YUD.setStyle(container,'opacity','1.0');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
335 //execute the given original callback
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
336 if (s_call !== undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
337 s_call(o);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
338 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
339 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
340 })()
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
341 YUD.setStyle(container,'opacity','0.3');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
342 YUC.asyncRequest(method,url,{
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
343 success:s_wrapper,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
344 failure:function(o){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
345 console.log(o);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
346 YUD.get(container).innerHTML='<span class="error_red">ERROR: {0}</span>'.format(o.status);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
347 YUD.setStyle(container,'opacity','1.0');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
348 },
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
349 cache:false
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
350 },args);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
351
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
352 };
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
353
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
354 var ajaxGET = function(url,success) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
355 // Set special header for ajax == HTTP_X_PARTIAL_XHR
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
356 YUC.initHeader('X-PARTIAL-XHR',true);
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
357
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
358 var sUrl = url;
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
359 var callback = {
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
360 success: success,
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
361 failure: function (o) {
3553
72c8917108ee journal: don't show "error" popup when navigating away from page while lazy info is loading
Mads Kiilerich <madski@unity3d.com>
parents: 3552
diff changeset
362 if (o.status != 0) {
72c8917108ee journal: don't show "error" popup when navigating away from page while lazy info is loading
Mads Kiilerich <madski@unity3d.com>
parents: 3552
diff changeset
363 alert("error: " + o.statusText);
72c8917108ee journal: don't show "error" popup when navigating away from page while lazy info is loading
Mads Kiilerich <madski@unity3d.com>
parents: 3552
diff changeset
364 };
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
365 },
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
366 };
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
367
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
368 var request = YAHOO.util.Connect.asyncRequest('GET', sUrl, callback);
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
369 return request;
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
370 };
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
371
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
372 var ajaxPOST = function(url,postData,success) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
373 // Set special header for ajax == HTTP_X_PARTIAL_XHR
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
374 YUC.initHeader('X-PARTIAL-XHR',true);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
375
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
376 var sUrl = url;
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
377 var callback = {
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
378 success: success,
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
379 failure: function (o) {
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
380 alert("error");
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
381 },
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
382 };
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
383 var postData = toQueryString(postData);
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
384 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
385 return request;
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
386 };
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
387
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
388
1421
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
389 /**
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
390 * tooltip activate
c6b811f11c94 Javascripts rewrite: updated yui to latest 2.9, simplified ajax loading for multiple pages. Removed YUI dev package
Marcin Kuzminski <marcin@python-works.com>
parents:
diff changeset
391 */
1458
9d9e491e2a21 added author to main page tooltip
Marcin Kuzminski <marcin@python-works.com>
parents: 1426
diff changeset
392 var tooltip_activate = function(){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
393 yt = YAHOO.yuitip.main;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
394 YUE.onDOMReady(yt.init);
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
395 };
1426
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
396
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
397 /**
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
398 * show more
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
399 */
1458
9d9e491e2a21 added author to main page tooltip
Marcin Kuzminski <marcin@python-works.com>
parents: 1426
diff changeset
400 var show_more_event = function(){
1426
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
401 YUE.on(YUD.getElementsByClassName('show_more'),'click',function(e){
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
402 var el = e.target;
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
403 YUD.setStyle(YUD.get(el.id.substring(1)),'display','');
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
404 YUD.setStyle(el.parentNode,'display','none');
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
405 });
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
406 };
1426
91708b96e991 Fixed show more links.
Marcin Kuzminski <marcin@python-works.com>
parents: 1421
diff changeset
407
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
408 /**
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
409 * show changeset tooltip
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
410 */
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
411 var show_changeset_tooltip = function(){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
412 YUE.on(YUD.getElementsByClassName('lazy-cs'), 'mouseover', function(e){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
413 var target = e.currentTarget;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
414 var rid = YUD.getAttribute(target,'raw_id');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
415 var repo_name = YUD.getAttribute(target,'repo_name');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
416 var ttid = 'tt-'+rid;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
417 var success = function(o){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
418 var json = JSON.parse(o.responseText);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
419 YUD.addClass(target,'tooltip')
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
420 YUD.setAttribute(target, 'title',json['message']);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
421 YAHOO.yuitip.main.show_yuitip(e, target);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
422 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
423 if(rid && !YUD.hasClass(target, 'tooltip')){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
424 YUD.setAttribute(target,'id',ttid);
3966
636ff0369986 fixed hover loading ... info on lazy-cs
Marcin Kuzminski <marcin@python-works.com>
parents: 3784
diff changeset
425 YUD.setAttribute(target, 'title',_TM['loading ...']);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
426 YAHOO.yuitip.main.set_listeners(target);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
427 YAHOO.yuitip.main.show_yuitip(e, target);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
428 var url = pyroutes.url('changeset_info', {"repo_name":repo_name, "revision": rid});
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
429 ajaxGET(url, success)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
430 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
431 });
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
432 };
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
433
3066
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
434 var onSuccessFollow = function(target){
3527
87c97fcea029 Adding the context bar too all pages related to a Repository.
Leonardo <leo@unity3d.com>
parents: 3388
diff changeset
435 var f = YUD.get(target);
3066
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
436 var f_cnt = YUD.get('current_followers_count');
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
437
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
438 if(YUD.hasClass(f, 'follow')){
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
439 f.setAttribute('class','following');
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
440 f.setAttribute('title',_TM['Stop following this repository']);
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
441
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
442 if(f_cnt){
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
443 var cnt = Number(f_cnt.innerHTML)+1;
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
444 f_cnt.innerHTML = cnt;
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
445 }
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
446 }
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
447 else{
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
448 f.setAttribute('class','follow');
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
449 f.setAttribute('title',_TM['Start following this repository']);
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
450 if(f_cnt){
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
451 var cnt = Number(f_cnt.innerHTML)-1;
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
452 f_cnt.innerHTML = cnt;
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
453 }
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
454 }
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
455 }
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
456
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
457 var toggleFollowingRepo = function(target,fallows_repo_id,token,user_id){
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
458 args = 'follows_repo_id='+fallows_repo_id;
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
459 args+= '&amp;auth_token='+token;
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
460 if(user_id != undefined){
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
461 args+="&amp;user_id="+user_id;
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
462 }
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
463 YUC.asyncRequest('POST',TOGGLE_FOLLOW_URL,{
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
464 success:function(o){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
465 onSuccessFollow(target);
3066
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
466 }
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
467 },args);
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
468 return false;
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
469 }
5d580e9bc730 JS cleanup
Marcin Kuzminski <marcin@python-works.com>
parents: 3001
diff changeset
470
3246
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3160
diff changeset
471 var showRepoSize = function(target, repo_name, token){
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3160
diff changeset
472 var args= 'auth_token='+token;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
473
3247
ed2fa8b1ccca disallow triggering repo size action more than once after loading
Marcin Kuzminski <marcin@python-works.com>
parents: 3246
diff changeset
474 if(!YUD.hasClass(target, 'loaded')){
3516
c44645e5a836 fix casings
Mads Kiilerich <madski@unity3d.com>
parents: 3512
diff changeset
475 YUD.get(target).innerHTML = _TM['Loading ...'];
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
476 var url = pyroutes.url('repo_size', {"repo_name":repo_name});
3247
ed2fa8b1ccca disallow triggering repo size action more than once after loading
Marcin Kuzminski <marcin@python-works.com>
parents: 3246
diff changeset
477 YUC.asyncRequest('POST',url,{
ed2fa8b1ccca disallow triggering repo size action more than once after loading
Marcin Kuzminski <marcin@python-works.com>
parents: 3246
diff changeset
478 success:function(o){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
479 YUD.get(target).innerHTML = JSON.parse(o.responseText);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
480 YUD.addClass(target, 'loaded');
3247
ed2fa8b1ccca disallow triggering repo size action more than once after loading
Marcin Kuzminski <marcin@python-works.com>
parents: 3246
diff changeset
481 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
482 },args);
3247
ed2fa8b1ccca disallow triggering repo size action more than once after loading
Marcin Kuzminski <marcin@python-works.com>
parents: 3246
diff changeset
483 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
484 return false;
3246
b9ba0d4d3abf implemented #83 show repo size on summary page
Marcin Kuzminski <marcin@python-works.com>
parents: 3160
diff changeset
485 }
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
486
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
487 /**
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
488 * TOOLTIP IMPL.
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
489 */
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
490 YAHOO.namespace('yuitip');
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
491 YAHOO.yuitip.main = {
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
492
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
493 $: YAHOO.util.Dom.get,
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
494
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
495 bgColor: '#000',
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
496 speed: 0.3,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
497 opacity: 0.9,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
498 offset: [15,15],
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
499 useAnim: false,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
500 maxWidth: 600,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
501 add_links: false,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
502 yuitips: [],
2976
45a8e0051280 Optimized new tooltip, and fixed events on lazy loaded ones
Marcin Kuzminski <marcin@python-works.com>
parents: 2974
diff changeset
503
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
504 set_listeners: function(tt){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
505 YUE.on(tt, 'mouseover', yt.show_yuitip, tt);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
506 YUE.on(tt, 'mousemove', yt.move_yuitip, tt);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
507 YUE.on(tt, 'mouseout', yt.close_yuitip, tt);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
508 },
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
509
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
510 init: function(){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
511 yt.tipBox = yt.$('tip-box');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
512 if(!yt.tipBox){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
513 yt.tipBox = document.createElement('div');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
514 document.body.appendChild(yt.tipBox);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
515 yt.tipBox.id = 'tip-box';
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
516 }
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
517
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
518 YUD.setStyle(yt.tipBox, 'display', 'none');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
519 YUD.setStyle(yt.tipBox, 'position', 'absolute');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
520 if(yt.maxWidth !== null){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
521 YUD.setStyle(yt.tipBox, 'max-width', yt.maxWidth+'px');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
522 }
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
523
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
524 var yuitips = YUD.getElementsByClassName('tooltip');
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
525
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
526 if(yt.add_links === true){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
527 var links = document.getElementsByTagName('a');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
528 var linkLen = links.length;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
529 for(i=0;i<linkLen;i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
530 yuitips.push(links[i]);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
531 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
532 }
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
533
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
534 var yuiLen = yuitips.length;
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
535
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
536 for(i=0;i<yuiLen;i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
537 yt.set_listeners(yuitips[i]);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
538 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
539 },
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
540
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
541 show_yuitip: function(e, el){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
542 YUE.stopEvent(e);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
543 if(el.tagName.toLowerCase() === 'img'){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
544 yt.tipText = el.alt ? el.alt : '';
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
545 } else {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
546 yt.tipText = el.title ? el.title : '';
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
547 }
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
548
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
549 if(yt.tipText !== ''){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
550 // save org title
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
551 YUD.setAttribute(el, 'tt_title', yt.tipText);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
552 // reset title to not show org tooltips
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
553 YUD.setAttribute(el, 'title', '');
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
554
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
555 yt.tipBox.innerHTML = yt.tipText;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
556 YUD.setStyle(yt.tipBox, 'display', 'block');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
557 if(yt.useAnim === true){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
558 YUD.setStyle(yt.tipBox, 'opacity', '0');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
559 var newAnim = new YAHOO.util.Anim(yt.tipBox,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
560 {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
561 opacity: { to: yt.opacity }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
562 }, yt.speed, YAHOO.util.Easing.easeOut
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
563 );
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
564 newAnim.animate();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
565 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
566 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
567 },
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
568
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
569 move_yuitip: function(e, el){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
570 YUE.stopEvent(e);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
571 var movePos = YUE.getXY(e);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
572 YUD.setStyle(yt.tipBox, 'top', (movePos[1] + yt.offset[1]) + 'px');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
573 YUD.setStyle(yt.tipBox, 'left', (movePos[0] + yt.offset[0]) + 'px');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
574 },
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
575
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
576 close_yuitip: function(e, el){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
577 YUE.stopEvent(e);
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
578
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
579 if(yt.useAnim === true){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
580 var newAnim = new YAHOO.util.Anim(yt.tipBox,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
581 {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
582 opacity: { to: 0 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
583 }, yt.speed, YAHOO.util.Easing.easeOut
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
584 );
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
585 newAnim.animate();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
586 } else {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
587 YUD.setStyle(yt.tipBox, 'display', 'none');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
588 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
589 YUD.setAttribute(el,'title', YUD.getAttribute(el, 'tt_title'));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
590 }
2971
2bfcec6a3985 new tooltip implementation
Marcin Kuzminski <marcin@python-works.com>
parents: 2891
diff changeset
591 }
1653
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
592
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
593 /**
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
594 * Quick filter widget
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
595 *
1653
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
596 * @param target: filter input target
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
597 * @param nodes: list of nodes in html we want to filter.
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
598 * @param display_element function that takes current node from nodes and
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
599 * does hide or show based on the node
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
600 *
1653
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
601 */
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
602 var q_filter = function(target,nodes,display_element){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
603
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
604 var nodes = nodes;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
605 var q_filter_field = YUD.get(target);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
606 var F = YAHOO.namespace(target);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
607
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
608 YUE.on(q_filter_field,'keyup',function(e){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
609 clearTimeout(F.filterTimeout);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
610 F.filterTimeout = setTimeout(F.updateFilter,600);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
611 });
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
612
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
613 F.filterTimeout = null;
1653
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
614
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
615 var show_node = function(node){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
616 YUD.setStyle(node,'display','')
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
617 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
618 var hide_node = function(node){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
619 YUD.setStyle(node,'display','none');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
620 }
1653
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
621
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
622 F.updateFilter = function() {
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
623 // Reset timeout
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
624 F.filterTimeout = null;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
625
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
626 var obsolete = [];
1653
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
627
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
628 var req = q_filter_field.value.toLowerCase();
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
629
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
630 var l = nodes.length;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
631 var i;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
632 var showing = 0;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
633
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
634 for (i=0;i<l;i++ ){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
635 var n = nodes[i];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
636 var target_element = display_element(n)
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
637 if(req && n.innerHTML.toLowerCase().indexOf(req) == -1){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
638 hide_node(target_element);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
639 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
640 else{
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
641 show_node(target_element);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
642 showing+=1;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
643 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
644 }
1653
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
645
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
646 // if repo_count is set update the number
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
647 var cnt = YUD.get('repo_count');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
648 if(cnt){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
649 YUD.get('repo_count').innerHTML = showing;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
650 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
651 }
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
652 };
1653
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
653
2787
423a14349ef3 Don't use .innerHTML for tr field, I'm looking at you IE
Marcin Kuzminski <marcin@python-works.com>
parents: 2759
diff changeset
654 var tableTr = function(cls, body){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
655 var _el = document.createElement('div');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
656 var cont = new YAHOO.util.Element(body);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
657 var comment_id = fromHTML(body).children[0].id.split('comment-')[1];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
658 var id = 'comment-tr-{0}'.format(comment_id);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
659 var _html = ('<table><tbody><tr id="{0}" class="{1}">'+
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
660 '<td class="lineno-inline new-inline"></td>'+
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
661 '<td class="lineno-inline old-inline"></td>'+
2787
423a14349ef3 Don't use .innerHTML for tr field, I'm looking at you IE
Marcin Kuzminski <marcin@python-works.com>
parents: 2759
diff changeset
662 '<td>{2}</td>'+
2789
d3e5c259fe71 Fixing inline comment for IE.
Marcin Kuzminski <marcin@python-works.com>
parents: 2787
diff changeset
663 '</tr></tbody></table>').format(id, cls, body);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
664 _el.innerHTML = _html;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
665 return _el.children[0].children[0].children[0];
1674
6f0143e5efe5 #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1667
diff changeset
666 };
1653
b1e1dffd595c one generic qfilter function.
Marcin Kuzminski <marcin@python-works.com>
parents: 1651
diff changeset
667
1682
1f2ba96de73e #71 code review
Marcin Kuzminski <marcin@python-works.com>
parents: 1679
diff changeset
668 var createInlineForm = function(parent_tr, f_path, line) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
669 var tmpl = YUD.get('comment-inline-form-template').innerHTML;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
670 tmpl = tmpl.format(f_path, line);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
671 var form = tableTr('comment-form-inline',tmpl)
2787
423a14349ef3 Don't use .innerHTML for tr field, I'm looking at you IE
Marcin Kuzminski <marcin@python-works.com>
parents: 2759
diff changeset
672
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
673 // create event for hide button
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
674 form = new YAHOO.util.Element(form);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
675 var form_hide_button = new YAHOO.util.Element(YUD.getElementsByClassName('hide-inline-form',null,form)[0]);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
676 form_hide_button.on('click', function(e) {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
677 var newtr = e.currentTarget.parentNode.parentNode.parentNode.parentNode.parentNode;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
678 if(YUD.hasClass(newtr.nextElementSibling,'inline-comments-button')){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
679 YUD.setStyle(newtr.nextElementSibling,'display','');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
680 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
681 removeInlineForm(newtr);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
682 YUD.removeClass(parent_tr, 'form-open');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
683 YUD.removeClass(parent_tr, 'hl-comment');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
684
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
685 });
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
686
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
687 return form
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
688 };
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
689
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
690 /**
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
691 * Inject inline comment for on given TR this tr should be always an .line
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
692 * tr containing the line. Code will detect comment, and always put the comment
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
693 * block at the very bottom
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
694 */
1705
5e4827a8e942 added reply comment button on top of inline comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1699
diff changeset
695 var injectInlineForm = function(tr){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
696 if(!YUD.hasClass(tr, 'line')){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
697 return
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
698 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
699 var submit_url = AJAX_COMMENT_URL;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
700 var _td = YUD.getElementsByClassName('code',null,tr)[0];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
701 if(YUD.hasClass(tr,'form-open') || YUD.hasClass(tr,'context') || YUD.hasClass(_td,'no-comment')){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
702 return
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
703 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
704 YUD.addClass(tr,'form-open');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
705 YUD.addClass(tr,'hl-comment');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
706 var node = YUD.getElementsByClassName('full_f_path',null,tr.parentNode.parentNode.parentNode)[0];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
707 var f_path = YUD.getAttribute(node,'path');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
708 var lineno = getLineNo(tr);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
709 var form = createInlineForm(tr, f_path, lineno, submit_url);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
710
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
711 var parent = tr;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
712 while (1){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
713 var n = parent.nextElementSibling;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
714 // next element are comments !
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
715 if(YUD.hasClass(n,'inline-comments')){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
716 parent = n;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
717 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
718 else{
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
719 break;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
720 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
721 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
722 YUD.insertAfter(form,parent);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
723 var f = YUD.get(form);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
724 var overlay = YUD.getElementsByClassName('overlay',null,f)[0];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
725 var _form = YUD.getElementsByClassName('inline-form',null,f)[0];
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
726
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
727 YUE.on(YUD.get(_form), 'submit',function(e){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
728 YUE.preventDefault(e);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
729
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
730 //ajax submit
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
731 var text = YUD.get('text_'+lineno).value;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
732 var postData = {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
733 'text':text,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
734 'f_path':f_path,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
735 'line':lineno
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
736 };
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
737
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
738 if(lineno === undefined){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
739 alert('missing line !');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
740 return
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
741 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
742 if(f_path === undefined){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
743 alert('missing file path !');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
744 return
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
745 }
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
746
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
747 if(text == ""){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
748 return
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
749 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
750
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
751 var success = function(o){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
752 YUD.removeClass(tr, 'form-open');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
753 removeInlineForm(f);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
754 var json_data = JSON.parse(o.responseText);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
755 renderInlineComment(json_data);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
756 };
3695
45df84d36b44 Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents: 3665
diff changeset
757
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
758 if (YUD.hasClass(overlay,'overlay')){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
759 var w = _form.offsetWidth;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
760 var h = _form.offsetHeight;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
761 YUD.setStyle(overlay,'width',w+'px');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
762 YUD.setStyle(overlay,'height',h+'px');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
763 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
764 YUD.addClass(overlay, 'submitting');
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
765
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
766 ajaxPOST(submit_url, postData, success);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
767 });
3695
45df84d36b44 Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents: 3665
diff changeset
768
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
769 YUE.on('preview-btn_'+lineno, 'click', function(e){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
770 var _text = YUD.get('text_'+lineno).value;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
771 if(!_text){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
772 return
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
773 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
774 var post_data = {'text': _text};
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
775 YUD.addClass('preview-box_'+lineno, 'unloaded');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
776 YUD.get('preview-box_'+lineno).innerHTML = _TM['Loading ...'];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
777 YUD.setStyle('edit-container_'+lineno, 'display', 'none');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
778 YUD.setStyle('preview-container_'+lineno, 'display', '');
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
779
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
780 var url = pyroutes.url('changeset_comment_preview', {'repo_name': REPO_NAME});
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
781 ajaxPOST(url,post_data,function(o){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
782 YUD.get('preview-box_'+lineno).innerHTML = o.responseText;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
783 YUD.removeClass('preview-box_'+lineno, 'unloaded');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
784 })
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
785 })
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
786 YUE.on('edit-btn_'+lineno, 'click', function(e){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
787 YUD.setStyle('edit-container_'+lineno, 'display', '');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
788 YUD.setStyle('preview-container_'+lineno, 'display', 'none');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
789 })
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
790
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
791 setTimeout(function(){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
792 // callbacks
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
793 tooltip_activate();
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
794 MentionsAutoComplete('text_'+lineno, 'mentions_container_'+lineno,
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
795 _USERS_AC_DATA, _GROUPS_AC_DATA);
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
796 var _e = YUD.get('text_'+lineno);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
797 if(_e){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
798 _e.focus();
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
799 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
800 },10)
1705
5e4827a8e942 added reply comment button on top of inline comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1699
diff changeset
801 };
5e4827a8e942 added reply comment button on top of inline comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1699
diff changeset
802
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
803 var deleteComment = function(comment_id){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
804 var url = AJAX_COMMENT_DELETE_URL.replace('__COMMENT_ID__',comment_id);
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
805 var postData = {'_method':'delete'};
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
806 var success = function(o){
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
807 var n = YUD.get('comment-tr-'+comment_id);
2698
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
808 var root = prevElementSibling(prevElementSibling(n));
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
809 n.parentNode.removeChild(n);
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
810
3695
45df84d36b44 Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents: 3665
diff changeset
811 // scann nodes, and attach add button to last one only for TR
45df84d36b44 Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents: 3665
diff changeset
812 // which are the inline comments
45df84d36b44 Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents: 3665
diff changeset
813 if(root && root.tagName == 'TR'){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
814 placeAddButton(root);
3695
45df84d36b44 Implemented preview for comments
Marcin Kuzminski <marcin@python-works.com>
parents: 3665
diff changeset
815 }
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
816 }
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
817 ajaxPOST(url,postData,success);
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
818 }
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
819
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
820 var createInlineAddButton = function(tr){
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
821
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
822 var label = TRANSLATION_MAP['Add another comment'];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
823
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
824 var html_el = document.createElement('div');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
825 YUD.addClass(html_el, 'add-comment');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
826 html_el.innerHTML = '<span class="ui-btn">{0}</span>'.format(label);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
827
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
828 var add = new YAHOO.util.Element(html_el);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
829 add.on('click', function(e) {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
830 injectInlineForm(tr);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
831 });
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
832 return add;
1705
5e4827a8e942 added reply comment button on top of inline comments
Marcin Kuzminski <marcin@python-works.com>
parents: 1699
diff changeset
833 };
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
834
1677
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1674
diff changeset
835 var getLineNo = function(tr) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
836 var line;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
837 var o = tr.children[0].id.split('_');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
838 var n = tr.children[1].id.split('_');
1677
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1674
diff changeset
839
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
840 if (n.length >= 2) {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
841 line = n[n.length-1];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
842 } else if (o.length >= 2) {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
843 line = o[o.length-1];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
844 }
1677
7276b170ce8b #71 code-review
Marcin Kuzminski <marcin@python-works.com>
parents: 1674
diff changeset
845
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
846 return line
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
847 };
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
848
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
849 var placeAddButton = function(target_tr){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
850 if(!target_tr){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
851 return
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
852 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
853 var last_node = target_tr;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
854 //scann
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
855 while (1){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
856 var n = last_node.nextElementSibling;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
857 // next element are comments !
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
858 if(YUD.hasClass(n,'inline-comments')){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
859 last_node = n;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
860 //also remove the comment button from previous
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
861 var comment_add_buttons = YUD.getElementsByClassName('add-comment',null,last_node);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
862 for(var i=0;i<comment_add_buttons.length;i++){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
863 var b = comment_add_buttons[i];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
864 b.parentNode.removeChild(b);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
865 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
866 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
867 else{
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
868 break;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
869 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
870 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
871
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
872 var add = createInlineAddButton(target_tr);
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
873 // get the comment div
2723
04aa0ea1ddd0 fixed comment addition and deletion functionality on IE9
Dies Koper <diesk@fast.au.fujitsu.com>
parents: 2699
diff changeset
874 var comment_block = YUD.getElementsByClassName('comment',null,last_node)[0];
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
875 // attach add button
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
876 YUD.insertAfter(add,comment_block);
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
877 }
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
878
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
879 /**
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
880 * Places the inline comment into the changeset block in proper line position
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
881 */
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
882 var placeInline = function(target_container,lineno,html){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
883 var lineid = "{0}_{1}".format(target_container,lineno);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
884 var target_line = YUD.get(lineid);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
885 var comment = new YAHOO.util.Element(tableTr('inline-comments',html))
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
886
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
887 // check if there are comments already !
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
888 var parent = target_line.parentNode;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
889 var root_parent = parent;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
890 while (1){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
891 var n = parent.nextElementSibling;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
892 // next element are comments !
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
893 if(YUD.hasClass(n,'inline-comments')){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
894 parent = n;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
895 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
896 else{
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
897 break;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
898 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
899 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
900 // put in the comment at the bottom
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
901 YUD.insertAfter(comment,parent);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
902
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
903 // scann nodes, and attach add button to last one
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
904 placeAddButton(root_parent);
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
905
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
906 return target_line;
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
907 }
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
908
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
909 /**
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
910 * make a single inline comment and place it inside
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
911 */
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
912 var renderInlineComment = function(json_data){
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
913 try{
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
914 var html = json_data['rendered_text'];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
915 var lineno = json_data['line_no'];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
916 var target_id = json_data['target_id'];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
917 placeInline(target_id, lineno, html);
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
918 }catch(e){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
919 console.log(e);
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
920 }
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
921 }
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
922
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
923 /**
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
924 * Iterates over all the inlines, and places them inside proper blocks of data
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
925 */
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
926 var renderInlineComments = function(file_comments){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
927 for (f in file_comments){
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
928 // holding all comments for a FILE
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
929 var box = file_comments[f];
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
930
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
931 var target_id = YUD.getAttribute(box,'target_id');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
932 // actually comments with line numbers
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
933 var comments = box.children;
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
934 for(var i=0; i<comments.length; i++){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
935 var data = {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
936 'rendered_text': comments[i].outerHTML,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
937 'line_no': YUD.getAttribute(comments[i],'line'),
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
938 'target_id': target_id
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
939 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
940 renderInlineComment(data);
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
941 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
942 }
2187
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
943 }
b61e540122f2 #415: Adding comment to changeset causes reload
Marcin Kuzminski <marcin@python-works.com>
parents: 2145
diff changeset
944
2428
530bd12fc18a removed JSON array envelope from filter files function
Marcin Kuzminski <marcin@python-works.com>
parents: 2369
diff changeset
945 var fileBrowserListeners = function(current_url, node_list_url, url_base){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
946 var current_url_branch = +"?branch=__BRANCH__";
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
947
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
948 YUE.on('stay_at_branch','click',function(e){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
949 if(e.target.checked){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
950 var uri = current_url_branch;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
951 uri = uri.replace('__BRANCH__',e.target.value);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
952 window.location = uri;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
953 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
954 else{
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
955 window.location = current_url;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
956 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
957 })
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
958
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
959 var n_filter = YUD.get('node_filter');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
960 var F = YAHOO.namespace('node_filter');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
961
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
962 F.filterTimeout = null;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
963 var nodes = null;
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
964
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
965 F.initFilter = function(){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
966 YUD.setStyle('node_filter_box_loading','display','');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
967 YUD.setStyle('search_activate_id','display','none');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
968 YUD.setStyle('add_node_id','display','none');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
969 YUC.initHeader('X-PARTIAL-XHR',true);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
970 YUC.asyncRequest('GET', node_list_url, {
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
971 success:function(o){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
972 nodes = JSON.parse(o.responseText).nodes;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
973 YUD.setStyle('node_filter_box_loading','display','none');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
974 YUD.setStyle('node_filter_box','display','');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
975 n_filter.focus();
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
976 if(YUD.hasClass(n_filter,'init')){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
977 n_filter.value = '';
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
978 YUD.removeClass(n_filter,'init');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
979 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
980 },
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
981 failure:function(o){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
982 console.log('failed to load');
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
983 }
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
984 },null);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
985 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
986
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
987 F.updateFilter = function(e) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
988 return function(){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
989 // Reset timeout
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
990 F.filterTimeout = null;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
991 var query = e.target.value.toLowerCase();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
992 var match = [];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
993 var matches = 0;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
994 var matches_max = 20;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
995 if (query != ""){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
996 for(var i=0;i<nodes.length;i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
997 var pos = nodes[i].name.toLowerCase().indexOf(query)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
998 if(query && pos != -1){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
999 matches++
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1000 //show only certain amount to not kill browser
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1001 if (matches > matches_max){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1002 break;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1003 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1004
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1005 var n = nodes[i].name;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1006 var t = nodes[i].type;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1007 var n_hl = n.substring(0,pos)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1008 +"<b>{0}</b>".format(n.substring(pos,pos+query.length))
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1009 +n.substring(pos+query.length)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1010 var new_url = url_base.replace('__FPATH__',n);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1011 match.push('<tr><td><a class="browser-{0}" href="{1}">{2}</a></td><td colspan="5"></td></tr>'.format(t,new_url,n_hl));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1012 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1013 if(match.length >= matches_max){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1014 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(_TM['Search truncated']));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1015 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1016 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1017 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1018 if(query != ""){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1019 YUD.setStyle('tbody','display','none');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1020 YUD.setStyle('tbody_filtered','display','');
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1021
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1022 if (match.length==0){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1023 match.push('<tr><td>{0}</td><td colspan="5"></td></tr>'.format(_TM['No matching files']));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1024 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1025
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1026 YUD.get('tbody_filtered').innerHTML = match.join("");
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1027 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1028 else{
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1029 YUD.setStyle('tbody','display','');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1030 YUD.setStyle('tbody_filtered','display','none');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1031 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1032 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1033 };
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1034
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1035 YUE.on(YUD.get('filter_activate'),'click',function(){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1036 F.initFilter();
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1037 })
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1038 YUE.on(n_filter,'click',function(){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1039 if(YUD.hasClass(n_filter,'init')){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1040 n_filter.value = '';
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1041 YUD.removeClass(n_filter,'init');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1042 }
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1043 });
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1044 YUE.on(n_filter,'keyup',function(e){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1045 clearTimeout(F.filterTimeout);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1046 F.filterTimeout = setTimeout(F.updateFilter(e),600);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1047 });
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1048 };
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1049
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1050
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1051 var initCodeMirror = function(textAreadId,resetUrl){
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1052 var myCodeMirror = CodeMirror.fromTextArea(YUD.get(textAreadId),{
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1053 mode: "null",
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1054 lineNumbers:true,
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1055 indentUnit: 4
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1056 });
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1057 YUE.on('reset','click',function(e){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1058 window.location=resetUrl
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1059 });
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1060
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1061 YUE.on('file_enable','click',function(){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1062 YUD.setStyle('editor_container','display','');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1063 YUD.setStyle('upload_file_container','display','none');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1064 YUD.setStyle('filename_container','display','');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1065 });
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1066
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1067 YUE.on('upload_file_enable','click',function(){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1068 YUD.setStyle('editor_container','display','none');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1069 YUD.setStyle('upload_file_container','display','');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1070 YUD.setStyle('filename_container','display','none');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1071 });
4026
a60a0e9092c6 added codemirror edit mode with autodetection
Marcin Kuzminski <marcin@python-works.com>
parents: 3966
diff changeset
1072
a60a0e9092c6 added codemirror edit mode with autodetection
Marcin Kuzminski <marcin@python-works.com>
parents: 3966
diff changeset
1073 return myCodeMirror
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1074 };
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1075
4026
a60a0e9092c6 added codemirror edit mode with autodetection
Marcin Kuzminski <marcin@python-works.com>
parents: 3966
diff changeset
1076 var setCodeMirrorMode = function(codeMirrorInstance, mode) {
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1077 codeMirrorInstance.setOption("mode", mode);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1078 CodeMirror.autoLoadMode(codeMirrorInstance, mode);
4026
a60a0e9092c6 added codemirror edit mode with autodetection
Marcin Kuzminski <marcin@python-works.com>
parents: 3966
diff changeset
1079 }
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1080
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1081
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1082 var getIdentNode = function(n){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1083 //iterate thru nodes untill matched interesting node !
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1084
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1085 if (typeof n == 'undefined'){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1086 return -1
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1087 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1088
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1089 if(typeof n.id != "undefined" && n.id.match('L[0-9]+')){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1090 return n
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1091 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1092 else{
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1093 return getIdentNode(n.parentNode);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1094 }
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1095 };
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1096
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1097 var getSelectionLink = function(e) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1098 //get selection from start/to nodes
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1099 if (typeof window.getSelection != "undefined") {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1100 s = window.getSelection();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1101
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1102 from = getIdentNode(s.anchorNode);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1103 till = getIdentNode(s.focusNode);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1104
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1105 f_int = parseInt(from.id.replace('L',''));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1106 t_int = parseInt(till.id.replace('L',''));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1107
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1108 if (f_int > t_int){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1109 //highlight from bottom
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1110 offset = -35;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1111 ranges = [t_int,f_int];
3081
b2c7f7c5ce11 fixed source selection link pop-up tooltip
Marcin Kuzminski <marcin@python-works.com>
parents: 3066
diff changeset
1112
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1113 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1114 else{
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1115 //highligth from top
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1116 offset = 35;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1117 ranges = [f_int,t_int];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1118 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1119 // if we select more than 2 lines
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1120 if (ranges[0] != ranges[1]){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1121 if(YUD.get('linktt') == null){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1122 hl_div = document.createElement('div');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1123 hl_div.id = 'linktt';
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1124 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1125 hl_div.innerHTML = '';
3081
b2c7f7c5ce11 fixed source selection link pop-up tooltip
Marcin Kuzminski <marcin@python-works.com>
parents: 3066
diff changeset
1126
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1127 anchor = '#L'+ranges[0]+'-'+ranges[1];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1128 var link = document.createElement('a');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1129 link.href = location.href.substring(0,location.href.indexOf('#'))+anchor;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1130 link.innerHTML = _TM['Selection link'];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1131 hl_div.appendChild(link);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1132 YUD.get('body').appendChild(hl_div);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1133
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1134 xy = YUD.getXY(till.id);
3081
b2c7f7c5ce11 fixed source selection link pop-up tooltip
Marcin Kuzminski <marcin@python-works.com>
parents: 3066
diff changeset
1135
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1136 YUD.addClass('linktt', 'hl-tip-box');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1137 YUD.setStyle('linktt','top',xy[1]+offset+'px');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1138 YUD.setStyle('linktt','left',xy[0]+'px');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1139 YUD.setStyle('linktt','visibility','visible');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1140
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1141 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1142 else{
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1143 YUD.setStyle('linktt','visibility','hidden');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1144 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1145 }
1699
623b228cf325 cleaned up JS files in files templates.
Marcin Kuzminski <marcin@python-works.com>
parents: 1685
diff changeset
1146 };
1712
cac5109ac3b6 Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents: 1705
diff changeset
1147
1717
7ff304d3028f Notification fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 1712
diff changeset
1148 var deleteNotification = function(url, notification_id,callbacks){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1149 var callback = {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1150 success:function(o){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1151 var obj = YUD.get(String("notification_"+notification_id));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1152 if(obj.parentNode !== undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1153 obj.parentNode.removeChild(obj);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1154 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1155 _run_callbacks(callbacks);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1156 },
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1157 failure:function(o){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1158 alert("error");
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1159 },
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1160 };
1712
cac5109ac3b6 Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents: 1705
diff changeset
1161 var postData = '_method=delete';
cac5109ac3b6 Notification system improvements
Marcin Kuzminski <marcin@python-works.com>
parents: 1705
diff changeset
1162 var sUrl = url.replace('__NOTIFICATION_ID__',notification_id);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1163 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1164 callback, postData);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1165 };
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1166
2610
3fdf7c3be2c9 added mark as read for single notifications
Marcin Kuzminski <marcin@python-works.com>
parents: 2608
diff changeset
1167 var readNotification = function(url, notification_id,callbacks){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1168 var callback = {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1169 success:function(o){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1170 var obj = YUD.get(String("notification_"+notification_id));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1171 YUD.removeClass(obj, 'unread');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1172 var r_button = YUD.getElementsByClassName('read-notification',null,obj.children[0])[0];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1173
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1174 if(r_button.parentNode !== undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1175 r_button.parentNode.removeChild(r_button);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1176 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1177 _run_callbacks(callbacks);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1178 },
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1179 failure:function(o){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1180 alert("error");
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1181 },
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1182 };
2610
3fdf7c3be2c9 added mark as read for single notifications
Marcin Kuzminski <marcin@python-works.com>
parents: 2608
diff changeset
1183 var postData = '_method=put';
3fdf7c3be2c9 added mark as read for single notifications
Marcin Kuzminski <marcin@python-works.com>
parents: 2608
diff changeset
1184 var sUrl = url.replace('__NOTIFICATION_ID__',notification_id);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1185 var request = YAHOO.util.Connect.asyncRequest('POST', sUrl,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1186 callback, postData);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1187 };
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1188
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1189 /** MEMBERS AUTOCOMPLETE WIDGET **/
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1190
2759
c61c2ccea2b4 #538 form for permissions can handle multiple users at once
Marcin Kuzminski <marcin@python-works.com>
parents: 2723
diff changeset
1191 var MembersAutoComplete = function (divid, cont, users_list, groups_list) {
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1192 var myUsers = users_list;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1193 var myGroups = groups_list;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1194
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1195 // Define a custom search function for the DataSource of users
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1196 var matchUsers = function (sQuery) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1197 // Case insensitive matching
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1198 var query = sQuery.toLowerCase();
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1199 var i = 0;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1200 var l = myUsers.length;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1201 var matches = [];
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1202
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1203 // Match against each name of each contact
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1204 for (; i < l; i++) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1205 contact = myUsers[i];
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1206 if (((contact.fname+"").toLowerCase().indexOf(query) > -1) ||
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1207 ((contact.lname+"").toLowerCase().indexOf(query) > -1) ||
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1208 ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) {
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1209 matches[matches.length] = contact;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1210 }
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1211 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1212 return matches;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1213 };
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1214
3417
fa6ba6727475 further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents: 3403
diff changeset
1215 // Define a custom search function for the DataSource of userGroups
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1216 var matchGroups = function (sQuery) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1217 // Case insensitive matching
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1218 var query = sQuery.toLowerCase();
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1219 var i = 0;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1220 var l = myGroups.length;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1221 var matches = [];
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1222
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1223 // Match against each name of each contact
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1224 for (; i < l; i++) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1225 matched_group = myGroups[i];
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1226 if (matched_group.grname.toLowerCase().indexOf(query) > -1) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1227 matches[matches.length] = matched_group;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1228 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1229 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1230 return matches;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1231 };
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1232
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1233 //match all
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1234 var matchAll = function (sQuery) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1235 u = matchUsers(sQuery);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1236 g = matchGroups(sQuery);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1237 return u.concat(g);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1238 };
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1239
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1240 // DataScheme for members
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1241 var memberDS = new YAHOO.util.FunctionDataSource(matchAll);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1242 memberDS.responseSchema = {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1243 fields: ["id", "fname", "lname", "nname", "grname", "grmembers", "gravatar_lnk"]
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1244 };
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1245
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1246 // DataScheme for owner
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1247 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1248 ownerDS.responseSchema = {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1249 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"]
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1250 };
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1251
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1252 // Instantiate AutoComplete for perms
2759
c61c2ccea2b4 #538 form for permissions can handle multiple users at once
Marcin Kuzminski <marcin@python-works.com>
parents: 2723
diff changeset
1253 var membersAC = new YAHOO.widget.AutoComplete(divid, cont, memberDS);
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1254 membersAC.useShadow = false;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1255 membersAC.resultTypeList = false;
2611
e83be26bb8d8 disable animation on autocomplete widget
Marcin Kuzminski <marcin@python-works.com>
parents: 2610
diff changeset
1256 membersAC.animVert = false;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1257 membersAC.animHoriz = false;
2611
e83be26bb8d8 disable animation on autocomplete widget
Marcin Kuzminski <marcin@python-works.com>
parents: 2610
diff changeset
1258 membersAC.animSpeed = 0.1;
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1259
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1260 // Instantiate AutoComplete for owner
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1261 var ownerAC = new YAHOO.widget.AutoComplete("user", "owner_container", ownerDS);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1262 ownerAC.useShadow = false;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1263 ownerAC.resultTypeList = false;
2611
e83be26bb8d8 disable animation on autocomplete widget
Marcin Kuzminski <marcin@python-works.com>
parents: 2610
diff changeset
1264 ownerAC.animVert = false;
e83be26bb8d8 disable animation on autocomplete widget
Marcin Kuzminski <marcin@python-works.com>
parents: 2610
diff changeset
1265 ownerAC.animHoriz = false;
e83be26bb8d8 disable animation on autocomplete widget
Marcin Kuzminski <marcin@python-works.com>
parents: 2610
diff changeset
1266 ownerAC.animSpeed = 0.1;
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1267
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1268 // Helper highlight function for the formatter
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1269 var highlightMatch = function (full, snippet, matchindex) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1270 return full.substring(0, matchindex)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1271 + "<span class='match'>"
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1272 + full.substr(matchindex, snippet.length)
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1273 + "</span>" + full.substring(matchindex + snippet.length);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1274 };
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1275
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1276 // Custom formatter to highlight the matching letters
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1277 var custom_formatter = function (oResultData, sQuery, sResultMatch) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1278 var query = sQuery.toLowerCase();
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1279 var _gravatar = function(res, em, group){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1280 if (group !== undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1281 em = '/images/icons/group.png'
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1282 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1283 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>'
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1284 return tmpl.format(em,res)
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1285 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1286 // group
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1287 if (oResultData.grname != undefined) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1288 var grname = oResultData.grname;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1289 var grmembers = oResultData.grmembers;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1290 var grnameMatchIndex = grname.toLowerCase().indexOf(query);
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1291 var grprefix = "{0}: ".format(_TM['Group']);
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1292 var grsuffix = " (" + grmembers + " )";
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1293 var grsuffix = " ({0} {1})".format(grmembers, _TM['members']);
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1294
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1295 if (grnameMatchIndex > -1) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1296 return _gravatar(grprefix + highlightMatch(grname, query, grnameMatchIndex) + grsuffix,null,true);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1297 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1298 return _gravatar(grprefix + oResultData.grname + grsuffix, null,true);
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1299 // Users
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1300 } else if (oResultData.nname != undefined) {
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1301 var fname = oResultData.fname || "";
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1302 var lname = oResultData.lname || "";
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1303 var nname = oResultData.nname;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1304
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1305 // Guard against null value
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1306 var fnameMatchIndex = fname.toLowerCase().indexOf(query),
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1307 lnameMatchIndex = lname.toLowerCase().indexOf(query),
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1308 nnameMatchIndex = nname.toLowerCase().indexOf(query),
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1309 displayfname, displaylname, displaynname;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1310
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1311 if (fnameMatchIndex > -1) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1312 displayfname = highlightMatch(fname, query, fnameMatchIndex);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1313 } else {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1314 displayfname = fname;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1315 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1316
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1317 if (lnameMatchIndex > -1) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1318 displaylname = highlightMatch(lname, query, lnameMatchIndex);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1319 } else {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1320 displaylname = lname;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1321 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1322
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1323 if (nnameMatchIndex > -1) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1324 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1325 } else {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1326 displaynname = nname ? "(" + nname + ")" : "";
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1327 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1328
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1329 return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1330 } else {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1331 return '';
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1332 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1333 };
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1334 membersAC.formatResult = custom_formatter;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1335 ownerAC.formatResult = custom_formatter;
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1336
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1337 var myHandler = function (sType, aArgs) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1338 var nextId = divid.split('perm_new_member_name_')[1];
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1339 var myAC = aArgs[0]; // reference back to the AC instance
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1340 var elLI = aArgs[1]; // reference to the selected LI element
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1341 var oData = aArgs[2]; // object literal of selected item's result data
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1342 //fill the autocomplete with value
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1343 if (oData.nname != undefined) {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1344 //users
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1345 myAC.getInputEl().value = oData.nname;
2759
c61c2ccea2b4 #538 form for permissions can handle multiple users at once
Marcin Kuzminski <marcin@python-works.com>
parents: 2723
diff changeset
1346 YUD.get('perm_new_member_type_'+nextId).value = 'user';
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1347 } else {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1348 //groups
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1349 myAC.getInputEl().value = oData.grname;
2759
c61c2ccea2b4 #538 form for permissions can handle multiple users at once
Marcin Kuzminski <marcin@python-works.com>
parents: 2723
diff changeset
1350 YUD.get('perm_new_member_type_'+nextId).value = 'users_group';
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1351 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1352 };
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1353
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1354 membersAC.itemSelectEvent.subscribe(myHandler);
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1355 if(ownerAC.itemSelectEvent){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1356 ownerAC.itemSelectEvent.subscribe(myHandler);
2142
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1357 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1358
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1359 return {
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1360 memberDS: memberDS,
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1361 ownerDS: ownerDS,
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1362 membersAC: membersAC,
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1363 ownerAC: ownerAC,
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1364 };
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1365 }
a21eab6ff42f Added gravatars into permissions view and permissions autocomplete
Marcin Kuzminski <marcin@python-works.com>
parents: 2128
diff changeset
1366
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1367 var MentionsAutoComplete = function (divid, cont, users_list, groups_list) {
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1368 var myUsers = users_list;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1369 var myGroups = groups_list;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1370
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1371 // Define a custom search function for the DataSource of users
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1372 var matchUsers = function (sQuery) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1373 var org_sQuery = sQuery;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1374 if(this.mentionQuery == null){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1375 return []
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1376 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1377 sQuery = this.mentionQuery;
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1378 // Case insensitive matching
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1379 var query = sQuery.toLowerCase();
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1380 var i = 0;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1381 var l = myUsers.length;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1382 var matches = [];
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1383
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1384 // Match against each name of each contact
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1385 for (; i < l; i++) {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1386 contact = myUsers[i];
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1387 if (((contact.fname+"").toLowerCase().indexOf(query) > -1) ||
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1388 ((contact.lname+"").toLowerCase().indexOf(query) > -1) ||
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1389 ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) {
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1390 matches[matches.length] = contact;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1391 }
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1392 }
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1393 return matches
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1394 };
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1395
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1396 //match all
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1397 var matchAll = function (sQuery) {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1398 u = matchUsers(sQuery);
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1399 return u
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1400 };
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1401
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1402 // DataScheme for owner
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1403 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1404
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1405 ownerDS.responseSchema = {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1406 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"]
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1407 };
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1408
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1409 // Instantiate AutoComplete for mentions
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1410 var ownerAC = new YAHOO.widget.AutoComplete(divid, cont, ownerDS);
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1411 ownerAC.useShadow = false;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1412 ownerAC.resultTypeList = false;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1413 ownerAC.suppressInputUpdate = true;
2611
e83be26bb8d8 disable animation on autocomplete widget
Marcin Kuzminski <marcin@python-works.com>
parents: 2610
diff changeset
1414 ownerAC.animVert = false;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1415 ownerAC.animHoriz = false;
2611
e83be26bb8d8 disable animation on autocomplete widget
Marcin Kuzminski <marcin@python-works.com>
parents: 2610
diff changeset
1416 ownerAC.animSpeed = 0.1;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1417
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1418 // Helper highlight function for the formatter
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1419 var highlightMatch = function (full, snippet, matchindex) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1420 return full.substring(0, matchindex)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1421 + "<span class='match'>"
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1422 + full.substr(matchindex, snippet.length)
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1423 + "</span>" + full.substring(matchindex + snippet.length);
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1424 };
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1425
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1426 // Custom formatter to highlight the matching letters
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1427 ownerAC.formatResult = function (oResultData, sQuery, sResultMatch) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1428 var org_sQuery = sQuery;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1429 if(this.dataSource.mentionQuery != null){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1430 sQuery = this.dataSource.mentionQuery;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1431 }
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1432
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1433 var query = sQuery.toLowerCase();
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1434 var _gravatar = function(res, em, group){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1435 if (group !== undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1436 em = '/images/icons/group.png'
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1437 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1438 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>'
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1439 return tmpl.format(em,res)
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1440 }
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1441 if (oResultData.nname != undefined) {
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1442 var fname = oResultData.fname || "";
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1443 var lname = oResultData.lname || "";
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1444 var nname = oResultData.nname;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1445
2369
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1446 // Guard against null value
c2f131502037 Autocomplete fixes
Marcin Kuzminski <marcin@python-works.com>
parents: 2368
diff changeset
1447 var fnameMatchIndex = fname.toLowerCase().indexOf(query),
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1448 lnameMatchIndex = lname.toLowerCase().indexOf(query),
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1449 nnameMatchIndex = nname.toLowerCase().indexOf(query),
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1450 displayfname, displaylname, displaynname;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1451
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1452 if (fnameMatchIndex > -1) {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1453 displayfname = highlightMatch(fname, query, fnameMatchIndex);
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1454 } else {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1455 displayfname = fname;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1456 }
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1457
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1458 if (lnameMatchIndex > -1) {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1459 displaylname = highlightMatch(lname, query, lnameMatchIndex);
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1460 } else {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1461 displaylname = lname;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1462 }
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1463
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1464 if (nnameMatchIndex > -1) {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1465 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1466 } else {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1467 displaynname = nname ? "(" + nname + ")" : "";
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1468 }
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1469
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1470 return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk);
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1471 } else {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1472 return '';
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1473 }
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1474 };
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1475
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1476 if(ownerAC.itemSelectEvent){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1477 ownerAC.itemSelectEvent.subscribe(function (sType, aArgs) {
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1478
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1479 var myAC = aArgs[0]; // reference back to the AC instance
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1480 var elLI = aArgs[1]; // reference to the selected LI element
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1481 var oData = aArgs[2]; // object literal of selected item's result data
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1482 //fill the autocomplete with value
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1483 if (oData.nname != undefined) {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1484 //users
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1485 //Replace the mention name with replaced
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1486 var re = new RegExp();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1487 var org = myAC.getInputEl().value;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1488 var chunks = myAC.dataSource.chunks
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1489 // replace middle chunk(the search term) with actuall match
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1490 chunks[1] = chunks[1].replace('@'+myAC.dataSource.mentionQuery,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1491 '@'+oData.nname+' ');
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1492 myAC.getInputEl().value = chunks.join('')
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1493 YUD.get(myAC.getInputEl()).focus(); // Y U NO WORK !?
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1494 } else {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1495 //groups
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1496 myAC.getInputEl().value = oData.grname;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1497 YUD.get('perm_new_member_type').value = 'users_group';
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1498 }
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1499 });
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1500 }
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1501
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1502 // in this keybuffer we will gather current value of search !
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1503 // since we need to get this just when someone does `@` then we do the
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1504 // search
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1505 ownerAC.dataSource.chunks = [];
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1506 ownerAC.dataSource.mentionQuery = null;
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1507
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1508 ownerAC.get_mention = function(msg, max_pos) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1509 var org = msg;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1510 var re = new RegExp('(?:^@|\s@)([a-zA-Z0-9]{1}[a-zA-Z0-9\-\_\.]+)$')
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1511 var chunks = [];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1512
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1513 // cut first chunk until curret pos
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1514 var to_max = msg.substr(0, max_pos);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1515 var at_pos = Math.max(0,to_max.lastIndexOf('@')-1);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1516 var msg2 = to_max.substr(at_pos);
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1517
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1518 chunks.push(org.substr(0,at_pos))// prefix chunk
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1519 chunks.push(msg2) // search chunk
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1520 chunks.push(org.substr(max_pos)) // postfix chunk
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1521
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1522 // clean up msg2 for filtering and regex match
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1523 var msg2 = msg2.lstrip(' ').lstrip('\n');
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1524
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1525 if(re.test(msg2)){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1526 var unam = re.exec(msg2)[1];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1527 return [unam, chunks];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1528 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1529 return [null, null];
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1530 };
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1531
2698
4debfe3b50be ie8 fixes for inline comments :/
Marcin Kuzminski <marcin@python-works.com>
parents: 2694
diff changeset
1532 if (ownerAC.textboxKeyUpEvent){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1533 ownerAC.textboxKeyUpEvent.subscribe(function(type, args){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1534
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1535 var ac_obj = args[0];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1536 var currentMessage = args[1];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1537 var currentCaretPosition = args[0]._elTextbox.selectionStart;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1538
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1539 var unam = ownerAC.get_mention(currentMessage, currentCaretPosition);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1540 var curr_search = null;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1541 if(unam[0]){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1542 curr_search = unam[0];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1543 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1544
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1545 ownerAC.dataSource.chunks = unam[1];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1546 ownerAC.dataSource.mentionQuery = curr_search;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1547
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1548 })
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1549 }
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1550 return {
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1551 ownerDS: ownerDS,
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1552 ownerAC: ownerAC,
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1553 };
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1554 }
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1555
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1556 var addReviewMember = function(id,fname,lname,nname,gravatar_link){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1557 var members = YUD.get('review_members');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1558 var tmpl = '<li id="reviewer_{2}">'+
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1559 '<div class="reviewers_member">'+
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1560 '<div class="gravatar"><img alt="gravatar" src="{0}"/> </div>'+
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1561 '<div style="float:left">{1}</div>'+
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1562 '<input type="hidden" value="{2}" name="review_members" />'+
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1563 '<span class="delete_icon action_button" onclick="removeReviewMember({2})"></span>'+
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1564 '</div>'+
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1565 '</li>' ;
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1566 var displayname = "{0} {1} ({2})".format(fname,lname,nname);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1567 var element = tmpl.format(gravatar_link,displayname,id);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1568 // check if we don't have this ID already in
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1569 var ids = [];
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1570 var _els = YUQ('#review_members li');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1571 for (el in _els){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1572 ids.push(_els[el].id)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1573 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1574 if(ids.indexOf('reviewer_'+id) == -1){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1575 //only add if it's not there
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1576 members.innerHTML += element;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1577 }
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1578 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1579
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1580 var removeReviewMember = function(reviewer_id, repo_name, pull_request_id){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1581 var el = YUD.get('reviewer_{0}'.format(reviewer_id));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1582 if (el.parentNode !== undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1583 el.parentNode.removeChild(el);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1584 }
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1585 }
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1586
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1587 var updateReviewers = function(reviewers_ids, repo_name, pull_request_id){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1588 if (reviewers_ids === undefined){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1589 var reviewers_ids = [];
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1590 var ids = YUQ('#review_members input');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1591 for(var i=0; i<ids.length;i++){
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1592 var id = ids[i].value
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1593 reviewers_ids.push(id);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1594 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1595 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1596 var url = pyroutes.url('pullrequest_update', {"repo_name":repo_name,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1597 "pull_request_id": pull_request_id});
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1598 var postData = {'_method':'put',
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1599 'reviewers_ids': reviewers_ids};
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1600 var success = function(o){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1601 window.location.reload();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1602 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1603 ajaxPOST(url,postData,success);
3388
cb40b3f6428c review members are dynamically changed based on selected other_repo owner
Marcin Kuzminski <marcin@python-works.com>
parents: 3247
diff changeset
1604 }
2368
5143b8df576c Added mentions autocomplete into main comments form
Marcin Kuzminski <marcin@python-works.com>
parents: 2189
diff changeset
1605
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1606 var PullRequestAutoComplete = function (divid, cont, users_list, groups_list) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1607 var myUsers = users_list;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1608 var myGroups = groups_list;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1609
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1610 // Define a custom search function for the DataSource of users
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1611 var matchUsers = function (sQuery) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1612 // Case insensitive matching
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1613 var query = sQuery.toLowerCase();
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1614 var i = 0;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1615 var l = myUsers.length;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1616 var matches = [];
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1617
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1618 // Match against each name of each contact
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1619 for (; i < l; i++) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1620 contact = myUsers[i];
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1621 if (((contact.fname+"").toLowerCase().indexOf(query) > -1) ||
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1622 ((contact.lname+"").toLowerCase().indexOf(query) > -1) ||
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1623 ((contact.nname) && ((contact.nname).toLowerCase().indexOf(query) > -1))) {
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1624 matches[matches.length] = contact;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1625 }
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1626 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1627 return matches;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1628 };
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1629
3417
fa6ba6727475 further cleanup of UsersGroup
Mads Kiilerich <madski@unity3d.com>
parents: 3403
diff changeset
1630 // Define a custom search function for the DataSource of userGroups
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1631 var matchGroups = function (sQuery) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1632 // Case insensitive matching
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1633 var query = sQuery.toLowerCase();
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1634 var i = 0;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1635 var l = myGroups.length;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1636 var matches = [];
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1637
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1638 // Match against each name of each contact
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1639 for (; i < l; i++) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1640 matched_group = myGroups[i];
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1641 if (matched_group.grname.toLowerCase().indexOf(query) > -1) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1642 matches[matches.length] = matched_group;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1643 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1644 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1645 return matches;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1646 };
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1647
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1648 //match all
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1649 var matchAll = function (sQuery) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1650 u = matchUsers(sQuery);
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1651 return u
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1652 };
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1653
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1654 // DataScheme for owner
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1655 var ownerDS = new YAHOO.util.FunctionDataSource(matchUsers);
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1656
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1657 ownerDS.responseSchema = {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1658 fields: ["id", "fname", "lname", "nname", "gravatar_lnk"]
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1659 };
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1660
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1661 // Instantiate AutoComplete for mentions
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1662 var reviewerAC = new YAHOO.widget.AutoComplete(divid, cont, ownerDS);
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1663 reviewerAC.useShadow = false;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1664 reviewerAC.resultTypeList = false;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1665 reviewerAC.suppressInputUpdate = true;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1666 reviewerAC.animVert = false;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1667 reviewerAC.animHoriz = false;
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1668 reviewerAC.animSpeed = 0.1;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1669
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1670 // Helper highlight function for the formatter
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1671 var highlightMatch = function (full, snippet, matchindex) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1672 return full.substring(0, matchindex)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1673 + "<span class='match'>"
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1674 + full.substr(matchindex, snippet.length)
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1675 + "</span>" + full.substring(matchindex + snippet.length);
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1676 };
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1677
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1678 // Custom formatter to highlight the matching letters
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1679 reviewerAC.formatResult = function (oResultData, sQuery, sResultMatch) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1680 var org_sQuery = sQuery;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1681 if(this.dataSource.mentionQuery != null){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1682 sQuery = this.dataSource.mentionQuery;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1683 }
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1684
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1685 var query = sQuery.toLowerCase();
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1686 var _gravatar = function(res, em, group){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1687 if (group !== undefined){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1688 em = '/images/icons/group.png'
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1689 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1690 tmpl = '<div class="ac-container-wrap"><img class="perm-gravatar-ac" src="{0}"/>{1}</div>'
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1691 return tmpl.format(em,res)
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1692 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1693 if (oResultData.nname != undefined) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1694 var fname = oResultData.fname || "";
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1695 var lname = oResultData.lname || "";
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1696 var nname = oResultData.nname;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1697
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1698 // Guard against null value
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1699 var fnameMatchIndex = fname.toLowerCase().indexOf(query),
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1700 lnameMatchIndex = lname.toLowerCase().indexOf(query),
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1701 nnameMatchIndex = nname.toLowerCase().indexOf(query),
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1702 displayfname, displaylname, displaynname;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1703
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1704 if (fnameMatchIndex > -1) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1705 displayfname = highlightMatch(fname, query, fnameMatchIndex);
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1706 } else {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1707 displayfname = fname;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1708 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1709
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1710 if (lnameMatchIndex > -1) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1711 displaylname = highlightMatch(lname, query, lnameMatchIndex);
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1712 } else {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1713 displaylname = lname;
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1714 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1715
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1716 if (nnameMatchIndex > -1) {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1717 displaynname = "(" + highlightMatch(nname, query, nnameMatchIndex) + ")";
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1718 } else {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1719 displaynname = nname ? "(" + nname + ")" : "";
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1720 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1721
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1722 return _gravatar(displayfname + " " + displaylname + " " + displaynname, oResultData.gravatar_lnk);
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1723 } else {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1724 return '';
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1725 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1726 };
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1727
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1728 //members cache to catch duplicates
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1729 reviewerAC.dataSource.cache = [];
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1730 // hack into select event
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1731 if(reviewerAC.itemSelectEvent){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1732 reviewerAC.itemSelectEvent.subscribe(function (sType, aArgs) {
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1733
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1734 var myAC = aArgs[0]; // reference back to the AC instance
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1735 var elLI = aArgs[1]; // reference to the selected LI element
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1736 var oData = aArgs[2]; // object literal of selected item's result data
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1737
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1738 //fill the autocomplete with value
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1739
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1740 if (oData.nname != undefined) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1741 addReviewMember(oData.id, oData.fname, oData.lname, oData.nname,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1742 oData.gravatar_lnk);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1743 myAC.dataSource.cache.push(oData.id);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1744 YUD.get('user').value = ''
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1745 }
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1746 });
2612
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1747 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1748 return {
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1749 ownerDS: ownerDS,
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1750 reviewerAC: reviewerAC,
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1751 };
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1752 }
9364776d1331 Added autocomplete widget for pull request reviewers, in exchange of 90s style
Marcin Kuzminski <marcin@python-works.com>
parents: 2611
diff changeset
1753
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1754 /**
1779
9edd6ac132f0 Added sorting into journal and admin pages
Marcin Kuzminski <marcin@python-works.com>
parents: 1778
diff changeset
1755 * QUICK REPO MENU
9edd6ac132f0 Added sorting into journal and admin pages
Marcin Kuzminski <marcin@python-works.com>
parents: 1778
diff changeset
1756 */
9edd6ac132f0 Added sorting into journal and admin pages
Marcin Kuzminski <marcin@python-works.com>
parents: 1778
diff changeset
1757 var quick_repo_menu = function(){
2088
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1758 YUE.on(YUQ('.quick_repo_menu'),'mouseenter',function(e){
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1759 var menu = e.currentTarget.firstElementChild.firstElementChild;
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1760 if(YUD.hasClass(menu,'hidden')){
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1761 YUD.replaceClass(e.currentTarget,'hidden', 'active');
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1762 YUD.replaceClass(menu, 'hidden', 'active');
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1763 }
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1764 })
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1765 YUE.on(YUQ('.quick_repo_menu'),'mouseleave',function(e){
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1766 var menu = e.currentTarget.firstElementChild.firstElementChild;
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1767 if(YUD.hasClass(menu,'active')){
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1768 YUD.replaceClass(e.currentTarget, 'active', 'hidden');
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1769 YUD.replaceClass(menu, 'active', 'hidden');
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1770 }
382df4e69dfc quick_repo_menu changed from mouseclick to popup
Marcin Kuzminski <marcin@python-works.com>
parents: 2087
diff changeset
1771 })
1779
9edd6ac132f0 Added sorting into journal and admin pages
Marcin Kuzminski <marcin@python-works.com>
parents: 1778
diff changeset
1772 };
9edd6ac132f0 Added sorting into journal and admin pages
Marcin Kuzminski <marcin@python-works.com>
parents: 1778
diff changeset
1773
9edd6ac132f0 Added sorting into journal and admin pages
Marcin Kuzminski <marcin@python-works.com>
parents: 1778
diff changeset
1774
9edd6ac132f0 Added sorting into journal and admin pages
Marcin Kuzminski <marcin@python-works.com>
parents: 1778
diff changeset
1775 /**
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1776 * TABLE SORTING
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1777 */
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1779 // returns a node from given html;
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1780 var fromHTML = function(html){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1781 var _html = document.createElement('element');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1782 _html.innerHTML = html;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1783 return _html;
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1784 }
4157
bc296381fb6c rhodecode.js: remove unused stuff
Mads Kiilerich <madski@unity3d.com>
parents: 4135
diff changeset
1785
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1786 var get_rev = function(node){
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1787 var n = node.firstElementChild.firstElementChild;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1788
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1789 if (n===null){
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1790 return -1
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1791 }
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1792 else{
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1793 out = n.firstElementChild.innerHTML.split(':')[0].replace('r','');
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1794 return parseInt(out);
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1795 }
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1796 }
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1797
1782
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1798 var get_date = function(node){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1799 var date_ = YUD.getAttribute(node.firstElementChild,'date');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1800 return date_
1782
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1801 }
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1802
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1803 var revisionSort = function(a, b, desc, field) {
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1804 var a_ = fromHTML(a.getData(field));
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1805 var b_ = fromHTML(b.getData(field));
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1806
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1807 // extract revisions from string nodes
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1808 a_ = get_rev(a_)
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1809 b_ = get_rev(b_)
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1810
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1811 var comp = YAHOO.util.Sort.compare;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1812 var compState = comp(a_, b_, desc);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1813 return compState;
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1814 };
4157
bc296381fb6c rhodecode.js: remove unused stuff
Mads Kiilerich <madski@unity3d.com>
parents: 4135
diff changeset
1815
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1816 var ageSort = function(a, b, desc, field) {
2548
0ff919f1c283 Fixed sorting by data when using custom date format from settings
Marcin Kuzminski <marcin@python-works.com>
parents: 2441
diff changeset
1817 var a_ = fromHTML(a.getData(field));
0ff919f1c283 Fixed sorting by data when using custom date format from settings
Marcin Kuzminski <marcin@python-works.com>
parents: 2441
diff changeset
1818 var b_ = fromHTML(b.getData(field));
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1819
2548
0ff919f1c283 Fixed sorting by data when using custom date format from settings
Marcin Kuzminski <marcin@python-works.com>
parents: 2441
diff changeset
1820 // extract name from table
0ff919f1c283 Fixed sorting by data when using custom date format from settings
Marcin Kuzminski <marcin@python-works.com>
parents: 2441
diff changeset
1821 a_ = get_date(a_)
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1822 b_ = get_date(b_)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1823
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1824 var comp = YAHOO.util.Sort.compare;
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1825 var compState = comp(a_, b_, desc);
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1826 return compState;
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1827 };
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1828
2699
4eef5eeb81a3 fixed sorting by last_login in users admin page
Marcin Kuzminski <marcin@python-works.com>
parents: 2698
diff changeset
1829 var lastLoginSort = function(a, b, desc, field) {
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1830 var a_ = a.getData('last_login_raw') || 0;
2699
4eef5eeb81a3 fixed sorting by last_login in users admin page
Marcin Kuzminski <marcin@python-works.com>
parents: 2698
diff changeset
1831 var b_ = b.getData('last_login_raw') || 0;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1832
2699
4eef5eeb81a3 fixed sorting by last_login in users admin page
Marcin Kuzminski <marcin@python-works.com>
parents: 2698
diff changeset
1833 var comp = YAHOO.util.Sort.compare;
4eef5eeb81a3 fixed sorting by last_login in users admin page
Marcin Kuzminski <marcin@python-works.com>
parents: 2698
diff changeset
1834 var compState = comp(a_, b_, desc);
4eef5eeb81a3 fixed sorting by last_login in users admin page
Marcin Kuzminski <marcin@python-works.com>
parents: 2698
diff changeset
1835 return compState;
4eef5eeb81a3 fixed sorting by last_login in users admin page
Marcin Kuzminski <marcin@python-works.com>
parents: 2698
diff changeset
1836 };
4eef5eeb81a3 fixed sorting by last_login in users admin page
Marcin Kuzminski <marcin@python-works.com>
parents: 2698
diff changeset
1837
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1838 var nameSort = function(a, b, desc, field) {
4087
182a25646cf4 change repo sorting to raw_nam so it's UI independent
Marcin Kuzminski <marcin@python-works.com>
parents: 4026
diff changeset
1839 var a_ = a.getData('raw_name') || 0;
182a25646cf4 change repo sorting to raw_nam so it's UI independent
Marcin Kuzminski <marcin@python-works.com>
parents: 4026
diff changeset
1840 var b_ = b.getData('raw_name') || 0;
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1841
1778
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1842 var comp = YAHOO.util.Sort.compare;
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1843 var compState = comp(a_, b_, desc);
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1844 return compState;
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1845 };
defcf245f3e9 fixes #229 repo sorting is not working.
Marcin Kuzminski <marcin@python-works.com>
parents: 1772
diff changeset
1846
1782
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1847 var dateSort = function(a, b, desc, field) {
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1848 var a_ = fromHTML(a.getData(field));
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1849 var b_ = fromHTML(b.getData(field));
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1850
1782
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1851 // extract name from table
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1852 a_ = get_date(a_)
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1853 b_ = get_date(b_)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1854
1782
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1855 var comp = YAHOO.util.Sort.compare;
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1856 var compState = comp(a_, b_, desc);
eaf09acf6872 added sorting to bookmarks tags and branches
Marcin Kuzminski <marcin@python-works.com>
parents: 1779
diff changeset
1857 return compState;
2394
6776f4e569d7 Moved select widget to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 2369
diff changeset
1858 };
6776f4e569d7 Moved select widget to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 2369
diff changeset
1859
2759
c61c2ccea2b4 #538 form for permissions can handle multiple users at once
Marcin Kuzminski <marcin@python-works.com>
parents: 2723
diff changeset
1860 var addPermAction = function(_html, users_list, groups_list){
c61c2ccea2b4 #538 form for permissions can handle multiple users at once
Marcin Kuzminski <marcin@python-works.com>
parents: 2723
diff changeset
1861 var elmts = YUD.getElementsByClassName('last_new_member');
c61c2ccea2b4 #538 form for permissions can handle multiple users at once
Marcin Kuzminski <marcin@python-works.com>
parents: 2723
diff changeset
1862 var last_node = elmts[elmts.length-1];
c61c2ccea2b4 #538 form for permissions can handle multiple users at once
Marcin Kuzminski <marcin@python-works.com>
parents: 2723
diff changeset
1863 if (last_node){
4158
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1864 var next_id = (YUD.getElementsByClassName('new_members')).length;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1865 _html = _html.format(next_id);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1866 last_node.innerHTML = _html;
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1867 YUD.setStyle(last_node, 'display', '');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1868 YUD.removeClass(last_node, 'last_new_member');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1869 MembersAutoComplete("perm_new_member_name_"+next_id,
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1870 "perm_container_"+next_id, users_list, groups_list);
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1871 //create new last NODE
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1872 var el = document.createElement('tr');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1873 el.id = 'add_perm_input';
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1874 YUD.addClass(el,'last_new_member');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1875 YUD.addClass(el,'new_members');
e4848cd9c8ae rhodecode.js: fix indentation
Mads Kiilerich <madski@unity3d.com>
parents: 4157
diff changeset
1876 YUD.insertAfter(el, last_node);
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1877 }
2759
c61c2ccea2b4 #538 form for permissions can handle multiple users at once
Marcin Kuzminski <marcin@python-works.com>
parents: 2723
diff changeset
1878 }
4157
bc296381fb6c rhodecode.js: remove unused stuff
Mads Kiilerich <madski@unity3d.com>
parents: 4135
diff changeset
1879
3715
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1880 function ajaxActionRevokePermission(url, obj_id, obj_type, field_id, extra_data) {
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1881 var callback = {
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1882 success: function (o) {
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1883 var tr = YUD.get(String(field_id));
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1884 tr.parentNode.removeChild(tr);
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1885 },
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1886 failure: function (o) {
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1887 alert(_TM['Failed to remoke permission'] + ": " + o.status);
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1888 },
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1889 };
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1890 query_params = {
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1891 '_method': 'delete'
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1892 }
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1893 // put extra data into POST
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1894 if (extra_data !== undefined && (typeof extra_data === 'object')){
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1895 for(k in extra_data){
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1896 query_params[k] = extra_data[k];
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1897 }
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1898 }
2394
6776f4e569d7 Moved select widget to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 2369
diff changeset
1899
3715
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1900 if (obj_type=='user'){
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1901 query_params['user_id'] = obj_id;
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1902 query_params['obj_type'] = 'user';
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1903 }
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1904 else if (obj_type=='user_group'){
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1905 query_params['user_group_id'] = obj_id;
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1906 query_params['obj_type'] = 'user_group';
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1907 }
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1908
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1909 var request = YAHOO.util.Connect.asyncRequest('POST', url, callback,
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1910 toQueryString(query_params));
25dbbdae3ed9 consistent handling of grant/revoke of permissions widgets
Marcin Kuzminski <marcin@python-works.com>
parents: 3696
diff changeset
1911 };
4157
bc296381fb6c rhodecode.js: remove unused stuff
Mads Kiilerich <madski@unity3d.com>
parents: 4135
diff changeset
1912
2394
6776f4e569d7 Moved select widget to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 2369
diff changeset
1913 /* Multi selectors */
6776f4e569d7 Moved select widget to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 2369
diff changeset
1914
6776f4e569d7 Moved select widget to rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 2369
diff changeset
1915 var MultiSelectWidget = function(selected_id, available_id, form_id){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1916 //definition of containers ID's
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1917 var selected_container = selected_id;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1918 var available_container = available_id;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1919
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1920 //temp container for selected storage.
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1921 var cache = new Array();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1922 var av_cache = new Array();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1923 var c = YUD.get(selected_container);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1924 var ac = YUD.get(available_container);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1925
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1926 //get only selected options for further fullfilment
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1927 for(var i = 0;node =c.options[i];i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1928 if(node.selected){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1929 //push selected to my temp storage left overs :)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1930 cache.push(node);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1931 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1932 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1933
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1934 //get all available options to cache
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1935 for(var i = 0;node =ac.options[i];i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1936 //push selected to my temp storage left overs :)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1937 av_cache.push(node);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1938 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1939
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1940 //fill available only with those not in chosen
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1941 ac.options.length=0;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1942 tmp_cache = new Array();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1943
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1944 for(var i = 0;node = av_cache[i];i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1945 var add = true;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1946 for(var i2 = 0;node_2 = cache[i2];i2++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1947 if(node.value == node_2.value){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1948 add=false;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1949 break;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1950 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1951 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1952 if(add){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1953 tmp_cache.push(new Option(node.text, node.value, false, false));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1954 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1955 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1956
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1957 for(var i = 0;node = tmp_cache[i];i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1958 ac.options[i] = node;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1959 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1960
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1961 function prompts_action_callback(e){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1962
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1963 var chosen = YUD.get(selected_container);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1964 var available = YUD.get(available_container);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1965
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1966 //get checked and unchecked options from field
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1967 function get_checked(from_field){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1968 //temp container for storage.
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1969 var sel_cache = new Array();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1970 var oth_cache = new Array();
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1971
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1972 for(var i = 0;node = from_field.options[i];i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1973 if(node.selected){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1974 //push selected fields :)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1975 sel_cache.push(node);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1976 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1977 else{
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1978 oth_cache.push(node)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1979 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1980 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1981
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1982 return [sel_cache,oth_cache]
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1983 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1984
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1985 //fill the field with given options
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1986 function fill_with(field,options){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1987 //clear firtst
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1988 field.options.length=0;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1989 for(var i = 0;node = options[i];i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1990 field.options[i]=new Option(node.text, node.value,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1991 false, false);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1992 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1993
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1994 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1995 //adds to current field
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1996 function add_to(field,options){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1997 for(var i = 0;node = options[i];i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1998 field.appendChild(new Option(node.text, node.value,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
1999 false, false));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2000 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2001 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2002
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2003 // add action
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2004 if (this.id=='add_element'){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2005 var c = get_checked(available);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2006 add_to(chosen,c[0]);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2007 fill_with(available,c[1]);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2008 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2009 // remove action
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2010 if (this.id=='remove_element'){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2011 var c = get_checked(chosen);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2012 add_to(available,c[0]);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2013 fill_with(chosen,c[1]);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2014 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2015 // add all elements
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2016 if(this.id=='add_all_elements'){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2017 for(var i=0; node = available.options[i];i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2018 chosen.appendChild(new Option(node.text,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2019 node.value, false, false));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2020 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2021 available.options.length = 0;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2022 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2023 //remove all elements
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2024 if(this.id=='remove_all_elements'){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2025 for(var i=0; node = chosen.options[i];i++){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2026 available.appendChild(new Option(node.text,
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2027 node.value, false, false));
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2028 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2029 chosen.options.length = 0;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2030 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2031
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2032 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2033
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2034 YUE.addListener(['add_element','remove_element',
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2035 'add_all_elements','remove_all_elements'],'click',
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2036 prompts_action_callback)
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2037 if (form_id !== undefined) {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2038 YUE.addListener(form_id,'submit',function(){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2039 var chosen = YUD.get(selected_container);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2040 for (var i = 0; i < chosen.options.length; i++) {
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2041 chosen.options[i].selected = 'selected';
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2042 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2043 });
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2044 }
2723
04aa0ea1ddd0 fixed comment addition and deletion functionality on IE9
Dies Koper <diesk@fast.au.fujitsu.com>
parents: 2699
diff changeset
2045 }
3419
efc00d363d1e collapsable diff container in changeset, makes quick review easier
Marcin Kuzminski <marcin@python-works.com>
parents: 3417
diff changeset
2046
3784
62fb395a459d make sure we hide the spans
Marcin Kuzminski <marcin@python-works.com>
parents: 3776
diff changeset
2047 // custom paginator
62fb395a459d make sure we hide the spans
Marcin Kuzminski <marcin@python-works.com>
parents: 3776
diff changeset
2048 var YUI_paginator = function(links_per_page, containers){
3776
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2049
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2050 (function () {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2051
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2052 var Paginator = YAHOO.widget.Paginator,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2053 l = YAHOO.lang,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2054 setId = YAHOO.util.Dom.generateId;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2055
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2056 Paginator.ui.MyFirstPageLink = function (p) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2057 this.paginator = p;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2058
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2059 p.subscribe('recordOffsetChange',this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2060 p.subscribe('rowsPerPageChange',this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2061 p.subscribe('totalRecordsChange',this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2062 p.subscribe('destroy',this.destroy,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2063
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2064 // TODO: make this work
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2065 p.subscribe('firstPageLinkLabelChange',this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2066 p.subscribe('firstPageLinkClassChange',this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2067 };
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2068
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2069 Paginator.ui.MyFirstPageLink.init = function (p) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2070 p.setAttributeConfig('firstPageLinkLabel', {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2071 value : 1,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2072 validator : l.isString
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2073 });
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2074 p.setAttributeConfig('firstPageLinkClass', {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2075 value : 'yui-pg-first',
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2076 validator : l.isString
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2077 });
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2078 p.setAttributeConfig('firstPageLinkTitle', {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2079 value : 'First Page',
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2080 validator : l.isString
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2081 });
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2082 };
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2083
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2084 // Instance members and methods
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2085 Paginator.ui.MyFirstPageLink.prototype = {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2086 current : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2087 leftmost_page: null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2088 rightmost_page: null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2089 link : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2090 span : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2091 dotdot : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2092 getPos : function(cur_page, max_page, items){
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2093 var edge = parseInt(items / 2) + 1;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2094 if (cur_page <= edge){
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2095 var radius = Math.max(parseInt(items / 2), items - cur_page);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2096 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2097 else if ((max_page - cur_page) < edge) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2098 var radius = (items - 1) - (max_page - cur_page);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2099 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2100 else{
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2101 var radius = parseInt(items / 2);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2102 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2103
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2104 var left = Math.max(1, (cur_page - (radius)))
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2105 var right = Math.min(max_page, cur_page + (radius))
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2106 return [left, cur_page, right]
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2107 },
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2108 render : function (id_base) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2109 var p = this.paginator,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2110 c = p.get('firstPageLinkClass'),
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2111 label = p.get('firstPageLinkLabel'),
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2112 title = p.get('firstPageLinkTitle');
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2113
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2114 this.link = document.createElement('a');
3784
62fb395a459d make sure we hide the spans
Marcin Kuzminski <marcin@python-works.com>
parents: 3776
diff changeset
2115 this.span = document.createElement('span');
62fb395a459d make sure we hide the spans
Marcin Kuzminski <marcin@python-works.com>
parents: 3776
diff changeset
2116 YUD.setStyle(this.span, 'display', 'none');
3776
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2117
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2118 var _pos = this.getPos(p.getCurrentPage(), p.getTotalPages(), 5);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2119 this.leftmost_page = _pos[0];
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2120 this.rightmost_page = _pos[2];
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2121
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2122 setId(this.link, id_base + '-first-link');
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2123 this.link.href = '#';
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2124 this.link.className = c;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2125 this.link.innerHTML = label;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2126 this.link.title = title;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2127 YAHOO.util.Event.on(this.link,'click',this.onClick,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2128
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2129 setId(this.span, id_base + '-first-span');
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2130 this.span.className = c;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2131 this.span.innerHTML = label;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2132
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2133 this.current = p.getCurrentPage() > 1 ? this.link : this.span;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2134 return this.current;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2135 },
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2136 update : function (e) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2137 var p = this.paginator;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2138 var _pos = this.getPos(p.getCurrentPage(), p.getTotalPages(), 5);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2139 this.leftmost_page = _pos[0];
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2140 this.rightmost_page = _pos[2];
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2141
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2142 if (e && e.prevValue === e.newValue) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2143 return;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2144 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2145
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2146 var par = this.current ? this.current.parentNode : null;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2147 if (this.leftmost_page > 1) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2148 if (par && this.current === this.span) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2149 par.replaceChild(this.link,this.current);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2150 this.current = this.link;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2151 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2152 } else {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2153 if (par && this.current === this.link) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2154 par.replaceChild(this.span,this.current);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2155 this.current = this.span;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2156 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2157 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2158 },
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2159 destroy : function () {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2160 YAHOO.util.Event.purgeElement(this.link);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2161 this.current.parentNode.removeChild(this.current);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2162 this.link = this.span = null;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2163 },
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2164 onClick : function (e) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2165 YAHOO.util.Event.stopEvent(e);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2166 this.paginator.setPage(1);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2167 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2168 };
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2169
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2170 })();
4157
bc296381fb6c rhodecode.js: remove unused stuff
Mads Kiilerich <madski@unity3d.com>
parents: 4135
diff changeset
2171
3776
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2172 (function () {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2173
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2174 var Paginator = YAHOO.widget.Paginator,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2175 l = YAHOO.lang,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2176 setId = YAHOO.util.Dom.generateId;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2177
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2178 Paginator.ui.MyLastPageLink = function (p) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2179 this.paginator = p;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2180
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2181 p.subscribe('recordOffsetChange',this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2182 p.subscribe('rowsPerPageChange',this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2183 p.subscribe('totalRecordsChange',this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2184 p.subscribe('destroy',this.destroy,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2185
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2186 // TODO: make this work
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2187 p.subscribe('lastPageLinkLabelChange',this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2188 p.subscribe('lastPageLinkClassChange', this.update,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2189 };
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2190
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2191 Paginator.ui.MyLastPageLink.init = function (p) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2192 p.setAttributeConfig('lastPageLinkLabel', {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2193 value : -1,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2194 validator : l.isString
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2195 });
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2196 p.setAttributeConfig('lastPageLinkClass', {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2197 value : 'yui-pg-last',
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2198 validator : l.isString
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2199 });
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2200 p.setAttributeConfig('lastPageLinkTitle', {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2201 value : 'Last Page',
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2202 validator : l.isString
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2203 });
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2204
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2205 };
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2206
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2207 Paginator.ui.MyLastPageLink.prototype = {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2208
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2209 current : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2210 leftmost_page: null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2211 rightmost_page: null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2212 link : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2213 span : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2214 dotdot : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2215 na : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2216 getPos : function(cur_page, max_page, items){
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2217 var edge = parseInt(items / 2) + 1;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2218 if (cur_page <= edge){
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2219 var radius = Math.max(parseInt(items / 2), items - cur_page);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2220 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2221 else if ((max_page - cur_page) < edge) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2222 var radius = (items - 1) - (max_page - cur_page);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2223 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2224 else{
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2225 var radius = parseInt(items / 2);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2226 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2227
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2228 var left = Math.max(1, (cur_page - (radius)))
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2229 var right = Math.min(max_page, cur_page + (radius))
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2230 return [left, cur_page, right]
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2231 },
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2232 render : function (id_base) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2233 var p = this.paginator,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2234 c = p.get('lastPageLinkClass'),
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2235 label = p.get('lastPageLinkLabel'),
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2236 last = p.getTotalPages(),
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2237 title = p.get('lastPageLinkTitle');
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2238
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2239 var _pos = this.getPos(p.getCurrentPage(), p.getTotalPages(), 5);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2240 this.leftmost_page = _pos[0];
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2241 this.rightmost_page = _pos[2];
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2242
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2243 this.link = document.createElement('a');
3784
62fb395a459d make sure we hide the spans
Marcin Kuzminski <marcin@python-works.com>
parents: 3776
diff changeset
2244 this.span = document.createElement('span');
62fb395a459d make sure we hide the spans
Marcin Kuzminski <marcin@python-works.com>
parents: 3776
diff changeset
2245 YUD.setStyle(this.span, 'display', 'none');
62fb395a459d make sure we hide the spans
Marcin Kuzminski <marcin@python-works.com>
parents: 3776
diff changeset
2246
3776
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2247 this.na = this.span.cloneNode(false);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2248
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2249 setId(this.link, id_base + '-last-link');
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2250 this.link.href = '#';
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2251 this.link.className = c;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2252 this.link.innerHTML = label;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2253 this.link.title = title;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2254 YAHOO.util.Event.on(this.link,'click',this.onClick,this,true);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2255
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2256 setId(this.span, id_base + '-last-span');
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2257 this.span.className = c;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2258 this.span.innerHTML = label;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2259
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2260 setId(this.na, id_base + '-last-na');
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2261
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2262 if (this.rightmost_page < p.getTotalPages()){
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2263 this.current = this.link;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2264 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2265 else{
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2266 this.current = this.span;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2267 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2268
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2269 this.current.innerHTML = p.getTotalPages();
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2270 return this.current;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2271 },
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2272
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2273 update : function (e) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2274 var p = this.paginator;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2275
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2276 var _pos = this.getPos(p.getCurrentPage(), p.getTotalPages(), 5);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2277 this.leftmost_page = _pos[0];
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2278 this.rightmost_page = _pos[2];
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2279
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2280 if (e && e.prevValue === e.newValue) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2281 return;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2282 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2283
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2284 var par = this.current ? this.current.parentNode : null,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2285 after = this.link;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2286 if (par) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2287
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2288 // only show the last page if the rightmost one is
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2289 // lower, so we don't have doubled entries at the end
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2290 if (!(this.rightmost_page < p.getTotalPages())){
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2291 after = this.span
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2292 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2293
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2294 if (this.current !== after) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2295 par.replaceChild(after,this.current);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2296 this.current = after;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2297 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2298 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2299 this.current.innerHTML = this.paginator.getTotalPages();
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2300
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2301 },
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2302 destroy : function () {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2303 YAHOO.util.Event.purgeElement(this.link);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2304 this.current.parentNode.removeChild(this.current);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2305 this.link = this.span = null;
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2306 },
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2307 onClick : function (e) {
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2308 YAHOO.util.Event.stopEvent(e);
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2309 this.paginator.setPage(this.paginator.getTotalPages());
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2310 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2311 };
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2312
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2313 })();
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2314
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2315 var pagi = new YAHOO.widget.Paginator({
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2316 rowsPerPage: links_per_page,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2317 alwaysVisible: false,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2318 template : "{PreviousPageLink} {MyFirstPageLink} {PageLinks} {MyLastPageLink} {NextPageLink}",
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2319 pageLinks: 5,
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2320 containerClass: 'pagination-wh',
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2321 currentPageClass: 'pager_curpage',
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2322 pageLinkClass: 'pager_link',
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2323 nextPageLinkLabel: '&gt;',
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2324 previousPageLinkLabel: '&lt;',
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2325 containers:containers
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2326 })
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2327
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2328 return pagi
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2329 }
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2330
13241a4075e9 Unified the paginators for pylons and YUI.
Marcin Kuzminski <marcin@python-works.com>
parents: 3715
diff changeset
2331
3419
efc00d363d1e collapsable diff container in changeset, makes quick review easier
Marcin Kuzminski <marcin@python-works.com>
parents: 3417
diff changeset
2332 // global hooks after DOM is loaded
efc00d363d1e collapsable diff container in changeset, makes quick review easier
Marcin Kuzminski <marcin@python-works.com>
parents: 3417
diff changeset
2333
efc00d363d1e collapsable diff container in changeset, makes quick review easier
Marcin Kuzminski <marcin@python-works.com>
parents: 3417
diff changeset
2334 YUE.onDOMReady(function(){
3696
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2335 YUE.on(YUQ('.diff-collapse-button'), 'click', function(e){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2336 var button = e.currentTarget;
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2337 var t = YUD.get(button).getAttribute('target');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2338 console.log(t);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2339 if(YUD.hasClass(t, 'hidden')){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2340 YUD.removeClass(t, 'hidden');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2341 YUD.get(button).innerHTML = "&uarr; {0} &uarr;".format(_TM['Collapse diff']);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2342 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2343 else if(!YUD.hasClass(t, 'hidden')){
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2344 YUD.addClass(t, 'hidden');
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2345 YUD.get(button).innerHTML = "&darr; {0} &darr;".format(_TM['Expand diff']);
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2346 }
e07b07ac9fbe codecleaner for rhodecode.js
Marcin Kuzminski <marcin@python-works.com>
parents: 3695
diff changeset
2347 });
3419
efc00d363d1e collapsable diff container in changeset, makes quick review easier
Marcin Kuzminski <marcin@python-works.com>
parents: 3417
diff changeset
2348 });