svn_wc_tree 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +4 -0
- data/LICENSE +165 -0
- data/Manifest +57 -0
- data/README.rdoc +333 -0
- data/bin/svn_wc_tree +190 -0
- data/cgi/svn_wc_broker.cgi +38 -0
- data/lib/svn_wc_broker.rb +161 -0
- data/lib/svn_wc_client.rb +266 -0
- data/svn_conf.yaml +9 -0
- data/svn_wc_tree/css/swt.css +4 -0
- data/svn_wc_tree/img/swt_spinner.gif +0 -0
- data/svn_wc_tree/index.html +137 -0
- data/svn_wc_tree/index.php +29 -0
- data/svn_wc_tree/js/jquery-1.3.2.js +4376 -0
- data/svn_wc_tree/js/jquery.blockUI-2.31.js +477 -0
- data/svn_wc_tree/js/jquery.cookie.js +96 -0
- data/svn_wc_tree/js/jquery.tree.checkbox.js +75 -0
- data/svn_wc_tree/js/jquery.tree.js +2058 -0
- data/svn_wc_tree/js/source/jquery.tree.js +2058 -0
- data/svn_wc_tree/js/source/jquery.tree.min.js +1 -0
- data/svn_wc_tree/js/source/lib/jquery.cookie.js +96 -0
- data/svn_wc_tree/js/source/lib/jquery.hotkeys.js +244 -0
- data/svn_wc_tree/js/source/lib/jquery.js +19 -0
- data/svn_wc_tree/js/source/lib/jquery.metadata.js +122 -0
- data/svn_wc_tree/js/source/lib/sarissa.js +110 -0
- data/svn_wc_tree/js/source/plugins/_jquery.tree.rtl.js +32 -0
- data/svn_wc_tree/js/source/plugins/jquery.tree.checkbox.js +75 -0
- data/svn_wc_tree/js/source/plugins/jquery.tree.contextmenu.js +129 -0
- data/svn_wc_tree/js/source/plugins/jquery.tree.cookie.js +70 -0
- data/svn_wc_tree/js/source/plugins/jquery.tree.hotkeys.js +78 -0
- data/svn_wc_tree/js/source/plugins/jquery.tree.metadata.js +17 -0
- data/svn_wc_tree/js/source/plugins/jquery.tree.themeroller.js +33 -0
- data/svn_wc_tree/js/source/plugins/jquery.tree.xml_flat.js +123 -0
- data/svn_wc_tree/js/source/plugins/jquery.tree.xml_nested.js +124 -0
- data/svn_wc_tree/js/source/themes/apple/bg.jpg +0 -0
- data/svn_wc_tree/js/source/themes/apple/dot_for_ie.gif +0 -0
- data/svn_wc_tree/js/source/themes/apple/icons.png +0 -0
- data/svn_wc_tree/js/source/themes/apple/style.css +34 -0
- data/svn_wc_tree/js/source/themes/apple/throbber.gif +0 -0
- data/svn_wc_tree/js/source/themes/checkbox/dot_for_ie.gif +0 -0
- data/svn_wc_tree/js/source/themes/checkbox/icons.png +0 -0
- data/svn_wc_tree/js/source/themes/checkbox/style.css +38 -0
- data/svn_wc_tree/js/source/themes/checkbox/throbber.gif +0 -0
- data/svn_wc_tree/js/source/themes/classic/dot_for_ie.gif +0 -0
- data/svn_wc_tree/js/source/themes/classic/icons.png +0 -0
- data/svn_wc_tree/js/source/themes/classic/style.css +31 -0
- data/svn_wc_tree/js/source/themes/classic/throbber.gif +0 -0
- data/svn_wc_tree/js/source/themes/default/dot_for_ie.gif +0 -0
- data/svn_wc_tree/js/source/themes/default/icons.png +0 -0
- data/svn_wc_tree/js/source/themes/default/style.css +30 -0
- data/svn_wc_tree/js/source/themes/default/throbber.gif +0 -0
- data/svn_wc_tree/js/source/themes/themeroller/dot_for_ie.gif +0 -0
- data/svn_wc_tree/js/source/themes/themeroller/icons.png +0 -0
- data/svn_wc_tree/js/source/themes/themeroller/style.css +39 -0
- data/svn_wc_tree/js/source/themes/themeroller/throbber.gif +0 -0
- data/svn_wc_tree/js/swt.js +534 -0
- data/svn_wc_tree.conf +9 -0
- metadata +122 -0
@@ -0,0 +1,534 @@
|
|
1
|
+
// Copyright (c) 2009 David Wright
|
2
|
+
//
|
3
|
+
// You are free to modify and use this file under the terms of the GNU LGPL.
|
4
|
+
// You should have received a copy of the LGPL along with this file.
|
5
|
+
//
|
6
|
+
// Alternatively, you can find the latest version of the LGPL here:
|
7
|
+
//
|
8
|
+
// http://www.gnu.org/licenses/lgpl.txt
|
9
|
+
//
|
10
|
+
// This library is distributed in the hope that it will be useful,
|
11
|
+
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13
|
+
// Lesser General Public License for more details.
|
14
|
+
|
15
|
+
// change for your host if necessary
|
16
|
+
var POST_URL = '';
|
17
|
+
|
18
|
+
///////////////////////////////////////////////////////////////////////////////
|
19
|
+
// dont change anything below here //
|
20
|
+
///////////////////////////////////////////////////////////////////////////////
|
21
|
+
|
22
|
+
//XXX/TODO this file needs to be refactored
|
23
|
+
|
24
|
+
var STATUS_SPACER = "\t"; // " "
|
25
|
+
var SVN_ACTION = '';
|
26
|
+
|
27
|
+
// jQuery BlockUI Plugin (v2)
|
28
|
+
$.blockUI.defaults.message = '<img src="img/swt_spinner.gif" /> Processing... ';
|
29
|
+
$.blockUI.defaults.css =
|
30
|
+
{
|
31
|
+
padding: 0,
|
32
|
+
margin: 0,
|
33
|
+
width: '40%',
|
34
|
+
top: '40%',
|
35
|
+
left: '35%',
|
36
|
+
textAlign: 'center',
|
37
|
+
color: '#000',
|
38
|
+
//border: '3px solid #aaa',
|
39
|
+
backgroundColor:'#fff',
|
40
|
+
cursor: 'wait'
|
41
|
+
};
|
42
|
+
|
43
|
+
// use yellow overlay
|
44
|
+
//$.blockUI.defaults.overlayCSS.backgroundColor = '#ccc';
|
45
|
+
// make overlay more transparent
|
46
|
+
//$.blockUI.defaults.overlayCSS.opacity = 12;
|
47
|
+
//$.blockUI.defaults.applyPlatformOpacityRules = false;
|
48
|
+
$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI);
|
49
|
+
|
50
|
+
|
51
|
+
$(document).ready(function(){
|
52
|
+
var CHECKED_FILE_NAMES = []
|
53
|
+
var SVN_ENTRIES = []
|
54
|
+
|
55
|
+
// the repo tree
|
56
|
+
$(function () {
|
57
|
+
$("#svn_repo_entries_tree").tree({
|
58
|
+
plugins : {
|
59
|
+
contextmenu : {
|
60
|
+
items : {
|
61
|
+
// get rid of the default js_tree actions
|
62
|
+
remove : false,
|
63
|
+
rename : false,
|
64
|
+
create : false,
|
65
|
+
//my_act : {
|
66
|
+
// label : "My own action",
|
67
|
+
// icon : "", // you can set this to a classname or a path to an icon like ./myimage.gif
|
68
|
+
// visible : function (NODE, TREE_OBJ) {
|
69
|
+
// // this action will be disabled if more than one node is selected
|
70
|
+
// if(NODE.length != 1) return 0;
|
71
|
+
// // this action will not be in the list if condition is met
|
72
|
+
// if(TREE_OBJ.get_text(NODE) == "Child node 1") return -1;
|
73
|
+
// // otherwise - OK
|
74
|
+
// return 1;
|
75
|
+
// },
|
76
|
+
// action : function (NODE, TREE_OBJ) {
|
77
|
+
// alert(TREE_OBJ.get(NODE, "xml_nested", false));
|
78
|
+
// },
|
79
|
+
// separator_before : true
|
80
|
+
//},
|
81
|
+
// status occurs every time anyway
|
82
|
+
// svn status menu option
|
83
|
+
svn_status : {
|
84
|
+
label : 'svn status',
|
85
|
+
icon : '',
|
86
|
+
action : function (NODE, TREE_OBJ) {
|
87
|
+
SVN_ACTION = 'status';
|
88
|
+
TREE_OBJ.callback('beforedata', [NODE, TREE_OBJ]);
|
89
|
+
$.tree.focused().refresh();//refresh does a http POST
|
90
|
+
},
|
91
|
+
separator_before : true
|
92
|
+
},
|
93
|
+
// svn update menu option
|
94
|
+
svn_update : {
|
95
|
+
label : "svn update",
|
96
|
+
action : function (NODE, TREE_OBJ) {
|
97
|
+
post_req_svn_resp('update');
|
98
|
+
},
|
99
|
+
separator_before : true
|
100
|
+
},
|
101
|
+
// svn diff menu option
|
102
|
+
svn_diff : {
|
103
|
+
label : 'svn diff',
|
104
|
+
icon : '',
|
105
|
+
action : function (NODE, TREE_OBJ) {post_req_svn_resp('diff');},
|
106
|
+
separator_before : true
|
107
|
+
},
|
108
|
+
// svn commit menu option
|
109
|
+
svn_commit : {
|
110
|
+
label : 'svn commit',
|
111
|
+
icon : '',
|
112
|
+
action : function (NODE, TREE_OBJ) {
|
113
|
+
var enode = TREE_OBJ.get_text(NODE);
|
114
|
+
//console.log('['+enode+']');
|
115
|
+
//if (enode.match(/\S+\s+.*?/))
|
116
|
+
post_req_svn_resp('commit');
|
117
|
+
//else alert(enode + ' is upto date');
|
118
|
+
},
|
119
|
+
separator_before : true
|
120
|
+
},
|
121
|
+
// svn info menu option
|
122
|
+
svn_info : {
|
123
|
+
label : 'svn info',
|
124
|
+
icon : '',
|
125
|
+
action : function (NODE, TREE_OBJ) {
|
126
|
+
post_req_svn_resp('info');
|
127
|
+
},
|
128
|
+
separator_before : true
|
129
|
+
},
|
130
|
+
// svn add menu option
|
131
|
+
svn_add : {
|
132
|
+
label : 'svn add',
|
133
|
+
icon : '',
|
134
|
+
action : function (NODE, TREE_OBJ) {
|
135
|
+
post_req_svn_resp('add');
|
136
|
+
},
|
137
|
+
separator_before : true
|
138
|
+
},
|
139
|
+
// svn delete menu option
|
140
|
+
svn_delete : {
|
141
|
+
label : 'svn delete',
|
142
|
+
icon : '',
|
143
|
+
action : function (NODE, TREE_OBJ) { post_req_svn_resp('delete'); },
|
144
|
+
separator_before : true
|
145
|
+
},
|
146
|
+
// svn list all repo entries
|
147
|
+
svn_list : {
|
148
|
+
label : 'svn list',
|
149
|
+
icon : '',
|
150
|
+
//action : function (NODE, TREE_OBJ) { post_req_svn_resp('list'); },
|
151
|
+
action : function (NODE, TREE_OBJ) {
|
152
|
+
SVN_ACTION = 'list';
|
153
|
+
TREE_OBJ.callback('beforedata', [NODE, TREE_OBJ]);
|
154
|
+
//XXX THIS IS IT, refresh does a POST!
|
155
|
+
$.tree.focused().refresh();
|
156
|
+
},
|
157
|
+
separator_before : true
|
158
|
+
},
|
159
|
+
// svn delete menu option
|
160
|
+
svn_revert : {
|
161
|
+
label : 'svn revert',
|
162
|
+
icon : '',
|
163
|
+
action : function (NODE, TREE_OBJ) { post_req_svn_resp('revert'); },
|
164
|
+
separator_before : true
|
165
|
+
},
|
166
|
+
// svn ignore files
|
167
|
+
// XXX todo - for now make a igrnoe list
|
168
|
+
// and run svn propset svn:ignore -F ignore.txt . in repo root
|
169
|
+
//svn_ignore : {
|
170
|
+
// label : 'svn ignore',
|
171
|
+
// icon : '',
|
172
|
+
// action : function (NODE, TREE_OBJ) {
|
173
|
+
// post_req_svn_resp('ignore');
|
174
|
+
// },
|
175
|
+
// separator_before : true
|
176
|
+
//},
|
177
|
+
refresh : {
|
178
|
+
label : "refresh tree",
|
179
|
+
action : function (NODE, TREE_OBJ) {
|
180
|
+
window.location.reload();
|
181
|
+
//history.go();
|
182
|
+
},
|
183
|
+
separator_before : true
|
184
|
+
},
|
185
|
+
//remove : {
|
186
|
+
// label : "Filesystem Delete",
|
187
|
+
// icon : "remove",
|
188
|
+
// visible : function (NODE, TREE_OBJ) {
|
189
|
+
// var ok = true;
|
190
|
+
// $.each(NODE, function () {
|
191
|
+
// if(TREE_OBJ.check("deletable", this) == false) {
|
192
|
+
// ok = false;
|
193
|
+
// return false;
|
194
|
+
// }
|
195
|
+
// });
|
196
|
+
// return ok;
|
197
|
+
// },
|
198
|
+
// action : function (NODE, TREE_OBJ) {
|
199
|
+
// $.each(NODE, function () {
|
200
|
+
// var enode = TREE_OBJ.get_text(NODE);
|
201
|
+
// if(confirm('Delete ' + enode + '?')) {
|
202
|
+
// post_req_non_svn('delete');
|
203
|
+
// TREE_OBJ.remove(this);
|
204
|
+
// }
|
205
|
+
// });
|
206
|
+
// }
|
207
|
+
//}
|
208
|
+
}
|
209
|
+
},
|
210
|
+
checkbox : { //three_state: false
|
211
|
+
}
|
212
|
+
},
|
213
|
+
//ui : { theme_name : "classic" },
|
214
|
+
ui : { theme_name : "checkbox",
|
215
|
+
//theme_path : "/js/svn_wc_tree/source/themes/checkbox/style.css"
|
216
|
+
},
|
217
|
+
data : {
|
218
|
+
title : "Svn Repository Tree",
|
219
|
+
type : "json",
|
220
|
+
//async : true,
|
221
|
+
opts : {
|
222
|
+
method : "POST",
|
223
|
+
url : POST_URL
|
224
|
+
}
|
225
|
+
},
|
226
|
+
callback : {
|
227
|
+
onselect : function (NODE, TREE_OBJ) {
|
228
|
+
//console.log($(NODE).attr('id'));
|
229
|
+
CHECKED_FILE_NAMES[$(NODE).attr('id')] = TREE_OBJ.get_text(NODE);
|
230
|
+
},
|
231
|
+
//Triggered when a node is rightclicked
|
232
|
+
onrgtclk : function(NODE, TREE_OBJ, EV) {
|
233
|
+
// disable browser action on right click
|
234
|
+
EV.preventDefault();
|
235
|
+
EV.stopPropagation();
|
236
|
+
return false;
|
237
|
+
},
|
238
|
+
ondata : function(DATA, TREE_OBJ) {
|
239
|
+
return on_data(DATA, TREE_OBJ);
|
240
|
+
},
|
241
|
+
beforedata : function(NODE, TREE_OBJ) {
|
242
|
+
//console.log('beforedata' + $(NODE).attr('id'));
|
243
|
+
return {
|
244
|
+
'do_svn_action': 'Do Svn Action',
|
245
|
+
'svn_action' : SVN_ACTION,
|
246
|
+
'svn_files' : [gather_selected_files()]
|
247
|
+
}
|
248
|
+
}
|
249
|
+
}
|
250
|
+
});
|
251
|
+
});
|
252
|
+
|
253
|
+
function on_data(DATA, TREE_OBJ) {
|
254
|
+
//console.log('on DATA'); console.log(DATA);
|
255
|
+
if (!DATA) document.write('No Data received, possibly your session expired');
|
256
|
+
|
257
|
+
var entries_list = new Array
|
258
|
+
if (DATA && DATA.length) {
|
259
|
+
var f_nodes = {
|
260
|
+
'state' : 'open',
|
261
|
+
'data' : DATA[0].repo_root_local_path,
|
262
|
+
'children' : new Array
|
263
|
+
};
|
264
|
+
$("#svn_local_repo_root").val(DATA[0].repo_root_local_path);
|
265
|
+
|
266
|
+
// display high level repo info
|
267
|
+
display_repo_info(DATA[0]);
|
268
|
+
|
269
|
+
if (DATA[0].run_error) return display_error_message(DATA[0].run_error);
|
270
|
+
if (DATA[0].error) return display_error_message(DATA[0].error);
|
271
|
+
|
272
|
+
|
273
|
+
var f_node_children = new Array;
|
274
|
+
var has_status = ' ';
|
275
|
+
var repo_initial_state = 'open'; // open|closed
|
276
|
+
var amount_of_entries = DATA[0].entries.length;
|
277
|
+
if (amount_of_entries == 1) repo_up_to_date();
|
278
|
+
//if (amount_of_entries < 10) repo_initial_state = 'open';
|
279
|
+
// set hidden text field to repo root fs local path
|
280
|
+
for (i = 0; i<amount_of_entries; i++) {
|
281
|
+
ent = DATA[0].entries[i];
|
282
|
+
if (ent === undefined) continue;
|
283
|
+
if (ent.kind == 2){ // dir
|
284
|
+
f_nodes = {
|
285
|
+
'state' : repo_initial_state,
|
286
|
+
'data' : ent.dir_name,
|
287
|
+
'children' : f_node_children
|
288
|
+
};
|
289
|
+
entries_list.push(f_nodes)
|
290
|
+
f_node_children = new Array;
|
291
|
+
} // regular file
|
292
|
+
else if (ent.kind == 1){ // file
|
293
|
+
if (ent.status) has_status = ent.status
|
294
|
+
var f_node_child = {
|
295
|
+
'attributes' : {'id' : i},
|
296
|
+
data : has_status + STATUS_SPACER + ent.entry_name
|
297
|
+
};
|
298
|
+
f_node_children.push(f_node_child)
|
299
|
+
}
|
300
|
+
}
|
301
|
+
}
|
302
|
+
//console.log(entries_list);
|
303
|
+
return entries_list;
|
304
|
+
}
|
305
|
+
|
306
|
+
function repo_up_to_date(f_nodes){
|
307
|
+
var entries_list = new Array
|
308
|
+
$("#svn_action_results").prepend('<p style="color:blue">'
|
309
|
+
+ 'Repository is up to date.</p>');
|
310
|
+
//if (DATA[0].entries === undefined){
|
311
|
+
// entries_list.push(f_nodes)
|
312
|
+
//}
|
313
|
+
//return entries_list;
|
314
|
+
}
|
315
|
+
|
316
|
+
function post_req_non_svn(action) {
|
317
|
+
//console.log('non svn request' + action);
|
318
|
+
$(function() {
|
319
|
+
$.post(
|
320
|
+
POST_URL, // post to url
|
321
|
+
{
|
322
|
+
'do_action' : action,
|
323
|
+
'files' : [gather_selected_files()]
|
324
|
+
},
|
325
|
+
// server response
|
326
|
+
function(resp){
|
327
|
+
//console.log(resp);
|
328
|
+
// is a runtime error
|
329
|
+
if (resp && resp[0] && resp[0].run_error) {
|
330
|
+
display_error_message(resp[0].run_error);
|
331
|
+
}
|
332
|
+
},
|
333
|
+
'json'
|
334
|
+
);
|
335
|
+
});
|
336
|
+
};
|
337
|
+
|
338
|
+
function post_req_svn_resp(svn_action) {
|
339
|
+
//console.log('post_req_svn_resp');
|
340
|
+
$(function() {
|
341
|
+
$.post(// post to url
|
342
|
+
POST_URL, {
|
343
|
+
'do_svn_action': 'Do Svn Action',
|
344
|
+
'svn_action' : svn_action,
|
345
|
+
'svn_files' : [gather_selected_files()]
|
346
|
+
},
|
347
|
+
// server response for svn action
|
348
|
+
function(resp){
|
349
|
+
process_server_response(svn_action,resp);
|
350
|
+
},
|
351
|
+
'json'
|
352
|
+
);
|
353
|
+
});
|
354
|
+
return SVN_ENTRIES; // is global, not really necessary to return
|
355
|
+
};
|
356
|
+
|
357
|
+
function gather_selected_files(){
|
358
|
+
var svn_files = new Array;
|
359
|
+
($.tree.plugins.checkbox.get_checked(
|
360
|
+
$.tree.reference("#svn_repo_entries_tree"))).each(
|
361
|
+
function () {
|
362
|
+
if(CHECKED_FILE_NAMES[this.id] !== undefined){
|
363
|
+
// absolute filesystem path location
|
364
|
+
entry = CHECKED_FILE_NAMES[this.id];
|
365
|
+
//# becomes odd 2 byte char
|
366
|
+
//entry.replace(/((\302\240)+|\t+|\s+)/, " ");
|
367
|
+
entry = entry.replace(/\s+/, ' ');
|
368
|
+
var info = entry.split(' ', 2);
|
369
|
+
//var abs_pn = info[0] + ' ' + $("#svn_local_repo_root").val() + info[1]
|
370
|
+
//console.log('in checked files');
|
371
|
+
//console.log(info);
|
372
|
+
|
373
|
+
var abs_pn = info[0] + ' ' + info[1]
|
374
|
+
|
375
|
+
// XXX this is a hck fix, figure it out
|
376
|
+
// odd bug, svn_files /home/httpd undefined
|
377
|
+
// just repo root sent, other files not seen!?
|
378
|
+
if (info[1] === undefined) abs_pn = info[1] + ' ' + info[0]
|
379
|
+
|
380
|
+
svn_files.push(abs_pn);
|
381
|
+
}
|
382
|
+
//console.log(svn_files);
|
383
|
+
}
|
384
|
+
)
|
385
|
+
return svn_files;
|
386
|
+
}
|
387
|
+
|
388
|
+
function process_server_response(svn_action, resp){
|
389
|
+
//console.log(resp + svn_action);
|
390
|
+
|
391
|
+
// is a runtime error
|
392
|
+
// XXX clean up server response - make consistent
|
393
|
+
var run_err = undefined;
|
394
|
+
if (resp && resp[0] && resp[0].run_error) run_err = resp[0].run_error;
|
395
|
+
else if (resp && resp.run_error) run_err = resp.run_error;
|
396
|
+
if (run_err) return display_error_message(resp.run_error);
|
397
|
+
|
398
|
+
// update tree display post success action
|
399
|
+
if (svn_action == 'commit') change_display_selected_files(STATUS_SPACER);
|
400
|
+
if (svn_action == 'revert') change_display_selected_files(STATUS_SPACER);
|
401
|
+
//if (svn_action == 'add') change_display_selected_files('A');
|
402
|
+
|
403
|
+
var show_response_area = false;
|
404
|
+
var display_svn_results = '';
|
405
|
+
|
406
|
+
for(i=0;i<resp.length;i++) {
|
407
|
+
if (resp[i].error || resp[i].content) show_response_area = true;
|
408
|
+
|
409
|
+
display_svn_results = process_content_and_entries(resp[i], svn_action,
|
410
|
+
display_svn_results);
|
411
|
+
}
|
412
|
+
|
413
|
+
if (show_response_area) $('#show_hide_container').show();
|
414
|
+
// populate our div
|
415
|
+
$("#svn_action_results").html(display_svn_results);
|
416
|
+
}
|
417
|
+
|
418
|
+
|
419
|
+
function process_content_and_entries(jdata, svn_action, display_svn_results){
|
420
|
+
var error = '';
|
421
|
+
var contents = '';
|
422
|
+
|
423
|
+
if (jdata.error) error = '<p style="color:red">'+jdata.error+'</p>';
|
424
|
+
|
425
|
+
// used for 'diff'
|
426
|
+
if (jdata.content) // expand newline to line break, '<' to html entity
|
427
|
+
contents += jdata.content.replace(/</g, '<').replace(/\n/g, '<br/>');
|
428
|
+
|
429
|
+
if (jdata.entries) process_entries(jdata.entries, svn_action);
|
430
|
+
|
431
|
+
if (jdata.repo_root_local_path)
|
432
|
+
$("#svn_local_repo_root").val(jdata.repo_root_local_path);
|
433
|
+
|
434
|
+
if (contents)
|
435
|
+
display_svn_results += error + '<p style="color:grey">'+contents+'</p>';
|
436
|
+
else
|
437
|
+
display_svn_results += error;
|
438
|
+
|
439
|
+
return display_svn_results;
|
440
|
+
}
|
441
|
+
|
442
|
+
function process_entries(entries, svn_action){
|
443
|
+
SVN_ENTRIES = entries;
|
444
|
+
if (svn_action == 'status'){
|
445
|
+
//console.log('in status');
|
446
|
+
//for(j=0;j<SVN_ENTRIES.length;j++){
|
447
|
+
// //$.tree.focused().remove('#' + j);
|
448
|
+
// // XXX would need list of all entries as '#id'
|
449
|
+
// console.log(SVN_ENTRIES[j]);
|
450
|
+
// if(SVN_ENTRIES[j] !== undefined){
|
451
|
+
// $.tree.focused().create('#' + j);
|
452
|
+
// //remove the status, was committed (i.e 'M', or '?', '!', etc)
|
453
|
+
// //$.tree.focused().remove('#' + j);
|
454
|
+
// //console.log(CHECKED_FILE_NAMES[j]);
|
455
|
+
// //var ent = CHECKED_FILE_NAMES[j].replace(/.*?\s+/, STATUS_SPACER);
|
456
|
+
// //$.tree.focused().rename('#' + j, ent);
|
457
|
+
|
458
|
+
// // TREE_OBJ.create(false, TREE_OBJ.get_node(NODE[0]));
|
459
|
+
// }
|
460
|
+
// else {
|
461
|
+
// $.tree.focused().remove('#' + j, ent);
|
462
|
+
// }
|
463
|
+
//}
|
464
|
+
}
|
465
|
+
}
|
466
|
+
|
467
|
+
function change_display_selected_files(to_show){
|
468
|
+
//console.log(CHECKED_FILE_NAMES);
|
469
|
+
|
470
|
+
for(j=0;j<CHECKED_FILE_NAMES.length;j++){
|
471
|
+
if(CHECKED_FILE_NAMES[j] !== undefined){
|
472
|
+
//remove the status, was committed (i.e 'M', or '?', '!', etc)
|
473
|
+
//$.tree.focused().remove('#' + j);
|
474
|
+
//console.log(CHECKED_FILE_NAMES[j]);
|
475
|
+
//var ent = CHECKED_FILE_NAMES[j].replace(/.*?\s+/, STATUS_SPACER);
|
476
|
+
var ent = CHECKED_FILE_NAMES[j].replace(/.*?\s+/, to_show);
|
477
|
+
//$.tree.focused().rename('#' + j, ent);
|
478
|
+
$.tree.focused().remove('#' + j, ent);
|
479
|
+
}
|
480
|
+
}
|
481
|
+
|
482
|
+
}
|
483
|
+
|
484
|
+
|
485
|
+
//$("#show_repo").click(function () {
|
486
|
+
// if ($("#show_repo").attr('checked') == false){
|
487
|
+
// // dont show dir tree and no more work done
|
488
|
+
// $('#display_svn_repo_entries_tree').hide();
|
489
|
+
// return;
|
490
|
+
// }
|
491
|
+
//});
|
492
|
+
// the hide svn results gif
|
493
|
+
$('a#hide_n_show').click(function(){
|
494
|
+
if ( $("a#hide_n_show").html() == '[+]' ) {
|
495
|
+
// our content
|
496
|
+
$('#svn_action_results').show();
|
497
|
+
// switch the +/- buttons
|
498
|
+
$("#hide_n_show").html('[-]');
|
499
|
+
}
|
500
|
+
else if ($("a#hide_n_show").html() == '[-]') {
|
501
|
+
// our content
|
502
|
+
$('#svn_action_results').hide();
|
503
|
+
// switch the +/- buttons
|
504
|
+
$("a#hide_n_show").html('[+]');
|
505
|
+
}
|
506
|
+
});
|
507
|
+
|
508
|
+
//$("#refresh_list").click(function () {
|
509
|
+
// window.location.reload();
|
510
|
+
// //history.go();
|
511
|
+
//});
|
512
|
+
|
513
|
+
function display_error_message(error){
|
514
|
+
$("#svn_action_results").html('<p style="color:red">Error: '
|
515
|
+
+ error + '</p>');
|
516
|
+
}
|
517
|
+
|
518
|
+
// high level repo details
|
519
|
+
function display_repo_info(r_info){
|
520
|
+
var display = 'Repository: ' + r_info.svn_repo_master + '<br/>';
|
521
|
+
display += 'User: ' + r_info.svn_user + '<br/>';
|
522
|
+
display += 'Config File: ' + r_info.svn_repo_config_file + '<br/>';
|
523
|
+
//r_info.repo_root_local_path
|
524
|
+
$("#display_repo_info").html('<span style="color:blue">' + display
|
525
|
+
+ '</span><br/>');
|
526
|
+
}
|
527
|
+
//$('#display_repo_info').toggle(
|
528
|
+
// function () { $(this).css({"list-style-type":"disc", "color":"blue"}); }
|
529
|
+
//);
|
530
|
+
$("a#disp_repo_info").click(function() { $('#display_repo_info').toggle(); });
|
531
|
+
|
532
|
+
|
533
|
+
}); // end document.ready
|
534
|
+
|
data/svn_wc_tree.conf
ADDED
metadata
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: svn_wc_tree
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 0
|
8
|
+
- 2
|
9
|
+
version: 0.0.2
|
10
|
+
platform: ruby
|
11
|
+
authors:
|
12
|
+
- David Wright
|
13
|
+
autorequire:
|
14
|
+
bindir: bin
|
15
|
+
cert_chain: []
|
16
|
+
|
17
|
+
date: 2010-03-10 00:00:00 -08:00
|
18
|
+
default_executable:
|
19
|
+
dependencies: []
|
20
|
+
|
21
|
+
description: |-
|
22
|
+
svn_wc_tree aims to provide an Web Application Front End GUI
|
23
|
+
to a working copy of an remote SVN Repository,
|
24
|
+
It does not do any sort of repository administration type
|
25
|
+
operations, just working directory repository management.
|
26
|
+
email: david_v_wright@yahoo.com
|
27
|
+
executables:
|
28
|
+
- svn_wc_tree
|
29
|
+
extensions: []
|
30
|
+
|
31
|
+
extra_rdoc_files: []
|
32
|
+
|
33
|
+
files:
|
34
|
+
- bin/svn_wc_tree
|
35
|
+
- cgi/svn_wc_broker.cgi
|
36
|
+
- ChangeLog
|
37
|
+
- lib/svn_wc_broker.rb
|
38
|
+
- lib/svn_wc_client.rb
|
39
|
+
- LICENSE
|
40
|
+
- Manifest
|
41
|
+
- README.rdoc
|
42
|
+
- svn_conf.yaml
|
43
|
+
- svn_wc_tree/css/swt.css
|
44
|
+
- svn_wc_tree/img/swt_spinner.gif
|
45
|
+
- svn_wc_tree/index.html
|
46
|
+
- svn_wc_tree/index.php
|
47
|
+
- svn_wc_tree.conf
|
48
|
+
- svn_wc_tree/js/swt.js
|
49
|
+
- svn_wc_tree/js/jquery-1.3.2.js
|
50
|
+
- svn_wc_tree/js/jquery.blockUI-2.31.js
|
51
|
+
- svn_wc_tree/js/jquery.cookie.js
|
52
|
+
- svn_wc_tree/js/jquery.tree.checkbox.js
|
53
|
+
- svn_wc_tree/js/jquery.tree.js
|
54
|
+
- svn_wc_tree/js/source/jquery.tree.js
|
55
|
+
- svn_wc_tree/js/source/jquery.tree.min.js
|
56
|
+
- svn_wc_tree/js/source/lib/jquery.cookie.js
|
57
|
+
- svn_wc_tree/js/source/lib/jquery.hotkeys.js
|
58
|
+
- svn_wc_tree/js/source/lib/jquery.js
|
59
|
+
- svn_wc_tree/js/source/lib/jquery.metadata.js
|
60
|
+
- svn_wc_tree/js/source/lib/sarissa.js
|
61
|
+
- svn_wc_tree/js/source/plugins/_jquery.tree.rtl.js
|
62
|
+
- svn_wc_tree/js/source/plugins/jquery.tree.checkbox.js
|
63
|
+
- svn_wc_tree/js/source/plugins/jquery.tree.contextmenu.js
|
64
|
+
- svn_wc_tree/js/source/plugins/jquery.tree.cookie.js
|
65
|
+
- svn_wc_tree/js/source/plugins/jquery.tree.hotkeys.js
|
66
|
+
- svn_wc_tree/js/source/plugins/jquery.tree.metadata.js
|
67
|
+
- svn_wc_tree/js/source/plugins/jquery.tree.themeroller.js
|
68
|
+
- svn_wc_tree/js/source/plugins/jquery.tree.xml_flat.js
|
69
|
+
- svn_wc_tree/js/source/plugins/jquery.tree.xml_nested.js
|
70
|
+
- svn_wc_tree/js/source/themes/apple/bg.jpg
|
71
|
+
- svn_wc_tree/js/source/themes/apple/dot_for_ie.gif
|
72
|
+
- svn_wc_tree/js/source/themes/apple/icons.png
|
73
|
+
- svn_wc_tree/js/source/themes/apple/style.css
|
74
|
+
- svn_wc_tree/js/source/themes/apple/throbber.gif
|
75
|
+
- svn_wc_tree/js/source/themes/checkbox/dot_for_ie.gif
|
76
|
+
- svn_wc_tree/js/source/themes/checkbox/icons.png
|
77
|
+
- svn_wc_tree/js/source/themes/checkbox/style.css
|
78
|
+
- svn_wc_tree/js/source/themes/checkbox/throbber.gif
|
79
|
+
- svn_wc_tree/js/source/themes/classic/dot_for_ie.gif
|
80
|
+
- svn_wc_tree/js/source/themes/classic/icons.png
|
81
|
+
- svn_wc_tree/js/source/themes/classic/style.css
|
82
|
+
- svn_wc_tree/js/source/themes/classic/throbber.gif
|
83
|
+
- svn_wc_tree/js/source/themes/default/dot_for_ie.gif
|
84
|
+
- svn_wc_tree/js/source/themes/default/icons.png
|
85
|
+
- svn_wc_tree/js/source/themes/default/style.css
|
86
|
+
- svn_wc_tree/js/source/themes/default/throbber.gif
|
87
|
+
- svn_wc_tree/js/source/themes/themeroller/dot_for_ie.gif
|
88
|
+
- svn_wc_tree/js/source/themes/themeroller/icons.png
|
89
|
+
- svn_wc_tree/js/source/themes/themeroller/style.css
|
90
|
+
- svn_wc_tree/js/source/themes/themeroller/throbber.gif
|
91
|
+
has_rdoc: true
|
92
|
+
homepage: http://www.dwright.us/misc/svn_wc_tree
|
93
|
+
licenses: []
|
94
|
+
|
95
|
+
post_install_message:
|
96
|
+
rdoc_options: []
|
97
|
+
|
98
|
+
require_paths:
|
99
|
+
- lib
|
100
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
101
|
+
requirements:
|
102
|
+
- - ">="
|
103
|
+
- !ruby/object:Gem::Version
|
104
|
+
segments:
|
105
|
+
- 0
|
106
|
+
version: "0"
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
segments:
|
112
|
+
- 0
|
113
|
+
version: "0"
|
114
|
+
requirements: []
|
115
|
+
|
116
|
+
rubyforge_project:
|
117
|
+
rubygems_version: 1.3.6
|
118
|
+
signing_key:
|
119
|
+
specification_version: 3
|
120
|
+
summary: svn_wc_tree is a web application (GUI) that enables basic operations on a working copy of a Subversion repository.
|
121
|
+
test_files: []
|
122
|
+
|