svn_wc_tree 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
+
|