svn_wc_tree 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. data/ChangeLog +4 -0
  2. data/LICENSE +165 -0
  3. data/Manifest +57 -0
  4. data/README.rdoc +333 -0
  5. data/bin/svn_wc_tree +190 -0
  6. data/cgi/svn_wc_broker.cgi +38 -0
  7. data/lib/svn_wc_broker.rb +161 -0
  8. data/lib/svn_wc_client.rb +266 -0
  9. data/svn_conf.yaml +9 -0
  10. data/svn_wc_tree/css/swt.css +4 -0
  11. data/svn_wc_tree/img/swt_spinner.gif +0 -0
  12. data/svn_wc_tree/index.html +137 -0
  13. data/svn_wc_tree/index.php +29 -0
  14. data/svn_wc_tree/js/jquery-1.3.2.js +4376 -0
  15. data/svn_wc_tree/js/jquery.blockUI-2.31.js +477 -0
  16. data/svn_wc_tree/js/jquery.cookie.js +96 -0
  17. data/svn_wc_tree/js/jquery.tree.checkbox.js +75 -0
  18. data/svn_wc_tree/js/jquery.tree.js +2058 -0
  19. data/svn_wc_tree/js/source/jquery.tree.js +2058 -0
  20. data/svn_wc_tree/js/source/jquery.tree.min.js +1 -0
  21. data/svn_wc_tree/js/source/lib/jquery.cookie.js +96 -0
  22. data/svn_wc_tree/js/source/lib/jquery.hotkeys.js +244 -0
  23. data/svn_wc_tree/js/source/lib/jquery.js +19 -0
  24. data/svn_wc_tree/js/source/lib/jquery.metadata.js +122 -0
  25. data/svn_wc_tree/js/source/lib/sarissa.js +110 -0
  26. data/svn_wc_tree/js/source/plugins/_jquery.tree.rtl.js +32 -0
  27. data/svn_wc_tree/js/source/plugins/jquery.tree.checkbox.js +75 -0
  28. data/svn_wc_tree/js/source/plugins/jquery.tree.contextmenu.js +129 -0
  29. data/svn_wc_tree/js/source/plugins/jquery.tree.cookie.js +70 -0
  30. data/svn_wc_tree/js/source/plugins/jquery.tree.hotkeys.js +78 -0
  31. data/svn_wc_tree/js/source/plugins/jquery.tree.metadata.js +17 -0
  32. data/svn_wc_tree/js/source/plugins/jquery.tree.themeroller.js +33 -0
  33. data/svn_wc_tree/js/source/plugins/jquery.tree.xml_flat.js +123 -0
  34. data/svn_wc_tree/js/source/plugins/jquery.tree.xml_nested.js +124 -0
  35. data/svn_wc_tree/js/source/themes/apple/bg.jpg +0 -0
  36. data/svn_wc_tree/js/source/themes/apple/dot_for_ie.gif +0 -0
  37. data/svn_wc_tree/js/source/themes/apple/icons.png +0 -0
  38. data/svn_wc_tree/js/source/themes/apple/style.css +34 -0
  39. data/svn_wc_tree/js/source/themes/apple/throbber.gif +0 -0
  40. data/svn_wc_tree/js/source/themes/checkbox/dot_for_ie.gif +0 -0
  41. data/svn_wc_tree/js/source/themes/checkbox/icons.png +0 -0
  42. data/svn_wc_tree/js/source/themes/checkbox/style.css +38 -0
  43. data/svn_wc_tree/js/source/themes/checkbox/throbber.gif +0 -0
  44. data/svn_wc_tree/js/source/themes/classic/dot_for_ie.gif +0 -0
  45. data/svn_wc_tree/js/source/themes/classic/icons.png +0 -0
  46. data/svn_wc_tree/js/source/themes/classic/style.css +31 -0
  47. data/svn_wc_tree/js/source/themes/classic/throbber.gif +0 -0
  48. data/svn_wc_tree/js/source/themes/default/dot_for_ie.gif +0 -0
  49. data/svn_wc_tree/js/source/themes/default/icons.png +0 -0
  50. data/svn_wc_tree/js/source/themes/default/style.css +30 -0
  51. data/svn_wc_tree/js/source/themes/default/throbber.gif +0 -0
  52. data/svn_wc_tree/js/source/themes/themeroller/dot_for_ie.gif +0 -0
  53. data/svn_wc_tree/js/source/themes/themeroller/icons.png +0 -0
  54. data/svn_wc_tree/js/source/themes/themeroller/style.css +39 -0
  55. data/svn_wc_tree/js/source/themes/themeroller/throbber.gif +0 -0
  56. data/svn_wc_tree/js/swt.js +534 -0
  57. data/svn_wc_tree.conf +9 -0
  58. 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
+ //#&nbsp; 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, '&lt;').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:&nbsp; ' + 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
@@ -0,0 +1,9 @@
1
+
2
+ mkdir PUBLIC_HTML/svn_wc_tree/
3
+ rsync -avz js PUBLIC_HTML/svn_wc_tree/
4
+ rsync -avz css PUBLIC_HTML/svn_wc_tree/
5
+ rsync -avz img PUBLIC_HTML/svn_wc_tree/
6
+ cp svn_wc_tree.html PUBLIC_HTML/svn_wc_tree/
7
+
8
+
9
+
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
+