slashport 0.15.10
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/Rakefile +35 -0
- data/app/controllers/application.rb +2 -0
- data/app/controllers/cfg.rb +8 -0
- data/app/controllers/exceptions.rb +13 -0
- data/app/controllers/var.rb +27 -0
- data/app/controllers/vardoc.rb +7 -0
- data/app/helpers/cfg_helper.rb +5 -0
- data/app/helpers/global_helpers.rb +5 -0
- data/app/helpers/var_helper.rb +5 -0
- data/app/helpers/vardoc_helper.rb +5 -0
- data/app/models/base/attribute.rb +13 -0
- data/app/models/base/component.rb +206 -0
- data/app/models/base/exec.rb +40 -0
- data/app/models/base/registry.rb +4 -0
- data/app/models/base/tuple.rb +31 -0
- data/app/models/components/linuxhost.rb +125 -0
- data/app/models/components/linuxprocess.rb +55 -0
- data/app/models/components/mysql.rb +110 -0
- data/app/models/components/puppet.rb +20 -0
- data/app/views/cfg/index.html.erb +1 -0
- data/app/views/exceptions/not_acceptable.html.erb +63 -0
- data/app/views/exceptions/not_found.html.erb +47 -0
- data/app/views/layout/application.html.erb +12 -0
- data/app/views/var/index.json.erb +1 -0
- data/app/views/var/index.pp.erb +10 -0
- data/app/views/var/index.text.erb +18 -0
- data/app/views/vardoc/index.html.erb +1 -0
- data/autotest/discover.rb +1 -0
- data/autotest/merb.rb +149 -0
- data/autotest/merb_rspec.rb +165 -0
- data/bin/slashport +130 -0
- data/bin/slashportfetch +103 -0
- data/config/environments/development.rb +15 -0
- data/config/environments/production.rb +10 -0
- data/config/environments/rake.rb +11 -0
- data/config/environments/staging.rb +10 -0
- data/config/environments/test.rb +12 -0
- data/config/init.rb +26 -0
- data/config/rack.rb +11 -0
- data/config/router.rb +41 -0
- data/config/test.conf +2 -0
- data/doc/rdoc/generators/merb_generator.rb +1362 -0
- data/doc/rdoc/generators/template/merb/api_grease.js +640 -0
- data/doc/rdoc/generators/template/merb/index.html.erb +37 -0
- data/doc/rdoc/generators/template/merb/merb.css +252 -0
- data/doc/rdoc/generators/template/merb/merb.rb +351 -0
- data/doc/rdoc/generators/template/merb/merb_doc_styles.css +492 -0
- data/doc/rdoc/generators/template/merb/prototype.js +2515 -0
- data/lib/slashport.rb +93 -0
- data/public/favicon.ico +0 -0
- data/public/images/merb.jpg +0 -0
- data/public/javascripts/application.js +1 -0
- data/public/merb.fcgi +22 -0
- data/public/robots.txt +5 -0
- data/public/stylesheets/master.css +119 -0
- data/spec/requests/cfg_spec.rb +7 -0
- data/spec/requests/config_spec.rb +7 -0
- data/spec/requests/configdoc_spec.rb +7 -0
- data/spec/requests/var_spec.rb +7 -0
- data/spec/requests/vardoc_spec.rb +7 -0
- data/spec/spec.opts +0 -0
- data/spec/spec_helper.rb +20 -0
- metadata +156 -0
@@ -0,0 +1,640 @@
|
|
1
|
+
|
2
|
+
function setupPage(){
|
3
|
+
hookUpActiveSearch();
|
4
|
+
hookUpTabs();
|
5
|
+
suppressPostbacks();
|
6
|
+
var url_params = getUrlParams();
|
7
|
+
if (url_params != null){
|
8
|
+
loadUrlParams(url_params);
|
9
|
+
}else{
|
10
|
+
loadDefaults();
|
11
|
+
}
|
12
|
+
resizeDivs();
|
13
|
+
window.onresize = function(){ resizeDivs(); };
|
14
|
+
}
|
15
|
+
|
16
|
+
function getUrlParams(){
|
17
|
+
var window_location = window.location.href
|
18
|
+
var param_pos = window_location.search(/\?/)
|
19
|
+
if (param_pos > 0){
|
20
|
+
return(window_location.slice(param_pos, window_location.length));
|
21
|
+
}else{
|
22
|
+
return(null);
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
function loadUrlParams(url_param){
|
27
|
+
//get the tabs
|
28
|
+
var t = getTabs();
|
29
|
+
// now find our variables
|
30
|
+
var s_params = /(\?)(a=.+?)(&)(name=.*)/;
|
31
|
+
var results = url_param.match(s_params);
|
32
|
+
url_anchor = results[2].replace(/a=/,'');
|
33
|
+
|
34
|
+
if (url_anchor.match(/M.+/)){//load the methods tab and scroller content
|
35
|
+
setActiveTabAndLoadContent(t[0]);
|
36
|
+
}else{
|
37
|
+
if(url_anchor.match(/C.+/)){ //load the classes tab and scroller content
|
38
|
+
setActiveTabAndLoadContent(t[1]);
|
39
|
+
}else{
|
40
|
+
if (url_anchor.match(/F.+/)){//load the files tab
|
41
|
+
setActiveTabAndLoadContent(t[2]);
|
42
|
+
}else{
|
43
|
+
// default to loading the methods
|
44
|
+
setActiveTabAndLoadContent(t[0]);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
paramLoadOfContentAnchor(url_anchor + "_link");
|
49
|
+
}
|
50
|
+
|
51
|
+
function updateUrlParams(anchor_id, name){
|
52
|
+
//Also setting the page title
|
53
|
+
//window.document.title = name + " method - MerbBrain.com ";
|
54
|
+
|
55
|
+
//updating the window location
|
56
|
+
var current_href = window.location.href;
|
57
|
+
//var m_name = name.replace("?","?");
|
58
|
+
var rep_str = ".html?a=" + anchor_id + "&name=" + name;
|
59
|
+
var new_href = current_href.replace(/\.html.*/, rep_str);
|
60
|
+
if (new_href != current_href){
|
61
|
+
window.location.href = new_href;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
//does as it says...
|
66
|
+
function hookUpActiveSearch(){
|
67
|
+
|
68
|
+
var s_field = $('searchForm').getInputs('text')[0];
|
69
|
+
//var s_field = document.forms[0].searchText;
|
70
|
+
Event.observe(s_field, 'keydown', function(event) {
|
71
|
+
var el = Event.element(event);
|
72
|
+
var key = event.which || event.keyCode;
|
73
|
+
|
74
|
+
switch (key) {
|
75
|
+
case Event.KEY_RETURN:
|
76
|
+
forceLoadOfContentAnchor(getCurrentAnchor());
|
77
|
+
Event.stop(event);
|
78
|
+
break;
|
79
|
+
|
80
|
+
case Event.KEY_UP:
|
81
|
+
scrollListToElementOffset(getCurrentAnchor(),-1);
|
82
|
+
break;
|
83
|
+
|
84
|
+
case Event.KEY_DOWN:
|
85
|
+
scrollListToElementOffset(getCurrentAnchor(),1);
|
86
|
+
break;
|
87
|
+
|
88
|
+
default:
|
89
|
+
break;
|
90
|
+
}
|
91
|
+
|
92
|
+
});
|
93
|
+
|
94
|
+
Event.observe(s_field, 'keyup', function(event) {
|
95
|
+
var el = Event.element(event);
|
96
|
+
var key = event.which || event.keyCode;
|
97
|
+
switch (key) {
|
98
|
+
case Event.KEY_RETURN:
|
99
|
+
Event.stop(event);
|
100
|
+
break;
|
101
|
+
|
102
|
+
case Event.KEY_UP:
|
103
|
+
break;
|
104
|
+
|
105
|
+
case Event.KEY_DOWN:
|
106
|
+
break;
|
107
|
+
|
108
|
+
default:
|
109
|
+
scrollToName(el.value);
|
110
|
+
setSavedSearch(getCurrentTab(), el.value);
|
111
|
+
break;
|
112
|
+
}
|
113
|
+
|
114
|
+
});
|
115
|
+
|
116
|
+
Event.observe(s_field, 'keypress', function(event){
|
117
|
+
var el = Event.element(event);
|
118
|
+
var key = event.which || event.keyCode;
|
119
|
+
switch (key) {
|
120
|
+
case Event.KEY_RETURN:
|
121
|
+
Event.stop(event);
|
122
|
+
break;
|
123
|
+
|
124
|
+
default:
|
125
|
+
break;
|
126
|
+
}
|
127
|
+
|
128
|
+
});
|
129
|
+
|
130
|
+
//Event.observe(document, 'keypress', function(event){
|
131
|
+
// var key = event.which || event.keyCode;
|
132
|
+
// if (key == Event.KEY_TAB){
|
133
|
+
// cycleNextTab();
|
134
|
+
// Event.stop(event);
|
135
|
+
// }
|
136
|
+
//});
|
137
|
+
}
|
138
|
+
|
139
|
+
function hookUpTabs(){
|
140
|
+
|
141
|
+
var tabs = getTabs();
|
142
|
+
for(x=0; x < tabs.length; x++)
|
143
|
+
{
|
144
|
+
Event.observe(tabs[x], 'click', function(event){
|
145
|
+
var el = Event.element(event);
|
146
|
+
setActiveTabAndLoadContent(el);
|
147
|
+
});
|
148
|
+
//tabs[x].onclick = function (){ return setActiveTabAndLoadContent(this);}; //the prototype guys say this is bad..
|
149
|
+
}
|
150
|
+
|
151
|
+
}
|
152
|
+
|
153
|
+
function suppressPostbacks(){
|
154
|
+
Event.observe('searchForm', 'submit', function(event){
|
155
|
+
Event.stop(event);
|
156
|
+
});
|
157
|
+
}
|
158
|
+
|
159
|
+
function loadDefaults(){
|
160
|
+
var t = getTabs();
|
161
|
+
setActiveTabAndLoadContent(t[0]); //default loading of the first tab
|
162
|
+
}
|
163
|
+
|
164
|
+
function resizeDivs(){
|
165
|
+
var inner_height = 700;
|
166
|
+
if (window.innerHeight){
|
167
|
+
inner_height = window.innerHeight; //all browsers except IE use this to determine the space available inside a window. Thank you Microsoft!!
|
168
|
+
}else{
|
169
|
+
if(document.documentElement.clientHeight > 0){ //IE uses this in 'strict' mode
|
170
|
+
inner_height = document.documentElement.clientHeight;
|
171
|
+
}else{
|
172
|
+
inner_height = document.body.clientHeight; //IE uses this in 'quirks' mode
|
173
|
+
}
|
174
|
+
}
|
175
|
+
$('rdocContent').style.height = (inner_height - 92) + "px";//Thankfully all browsers can agree on how to set the height of a div
|
176
|
+
$('listScroller').style.height = (inner_height - 88) + "px";
|
177
|
+
}
|
178
|
+
|
179
|
+
//The main function for handling clicks on the tabs
|
180
|
+
function setActiveTabAndLoadContent(current_tab){
|
181
|
+
changeLoadingStatus("on");
|
182
|
+
var tab_string = String(current_tab.innerHTML).strip(); //thank you ProtoType!
|
183
|
+
switch (tab_string){
|
184
|
+
case "classes":
|
185
|
+
setCurrentTab("classes");
|
186
|
+
loadScrollerContent('fr_class_index.html');
|
187
|
+
setSearchFieldValue(getSavedSearch("classes"));
|
188
|
+
scrollToName(getSavedSearch("classes"));
|
189
|
+
setSearchFocus();
|
190
|
+
break;
|
191
|
+
|
192
|
+
case "files":
|
193
|
+
setCurrentTab("files");
|
194
|
+
loadScrollerContent('fr_file_index.html');
|
195
|
+
setSearchFieldValue(getSavedSearch("files"));
|
196
|
+
scrollToName(getSavedSearch("files"));
|
197
|
+
setSearchFocus();
|
198
|
+
break;
|
199
|
+
|
200
|
+
case "methods":
|
201
|
+
setCurrentTab("methods");
|
202
|
+
loadScrollerContent('fr_method_index.html');
|
203
|
+
setSearchFieldValue(getSavedSearch("methods"));
|
204
|
+
scrollToName(getSavedSearch("methods"));
|
205
|
+
setSearchFocus();
|
206
|
+
break;
|
207
|
+
|
208
|
+
default:
|
209
|
+
break;
|
210
|
+
}
|
211
|
+
changeLoadingStatus("off");
|
212
|
+
}
|
213
|
+
|
214
|
+
function cycleNextTab(){
|
215
|
+
var currentT = getCurrentTab();
|
216
|
+
var tabs = getTabs();
|
217
|
+
if (currentT == "methods"){
|
218
|
+
setActiveTabAndLoadContent(tabs[1]);
|
219
|
+
setSearchFocus();
|
220
|
+
}else{
|
221
|
+
if (currentT == "classes"){
|
222
|
+
setActiveTabAndLoadContent(tabs[2]);
|
223
|
+
setSearchFocus();
|
224
|
+
}else{
|
225
|
+
if (currentT == "files"){
|
226
|
+
setActiveTabAndLoadContent(tabs[0]);
|
227
|
+
setSearchFocus();
|
228
|
+
}
|
229
|
+
}
|
230
|
+
}
|
231
|
+
}
|
232
|
+
|
233
|
+
function getTabs(){
|
234
|
+
return($('groupType').getElementsByTagName('li'));
|
235
|
+
}
|
236
|
+
|
237
|
+
var Active_Tab = "";
|
238
|
+
function getCurrentTab(){
|
239
|
+
return Active_Tab;
|
240
|
+
}
|
241
|
+
|
242
|
+
function setCurrentTab(tab_name){
|
243
|
+
var tabs = getTabs();
|
244
|
+
for(x=0; x < tabs.length; x++)
|
245
|
+
{
|
246
|
+
if(tabs[x].innerHTML.strip() == tab_name) //W00t!!! String.prototype.strip!
|
247
|
+
{
|
248
|
+
tabs[x].className = "activeLi";
|
249
|
+
Active_Tab = tab_name;
|
250
|
+
}
|
251
|
+
else
|
252
|
+
{
|
253
|
+
tabs[x].className = "";
|
254
|
+
}
|
255
|
+
}
|
256
|
+
}
|
257
|
+
|
258
|
+
//These globals should not be used globally (hence the getters and setters)
|
259
|
+
var File_Search = "";
|
260
|
+
var Method_Search = "";
|
261
|
+
var Class_Search = "";
|
262
|
+
function setSavedSearch(tab_name, s_val){
|
263
|
+
switch(tab_name){
|
264
|
+
case "methods":
|
265
|
+
Method_Search = s_val;
|
266
|
+
break;
|
267
|
+
case "files":
|
268
|
+
File_Search = s_val;
|
269
|
+
break;
|
270
|
+
case "classes":
|
271
|
+
Class_Search = s_val;
|
272
|
+
break;
|
273
|
+
}
|
274
|
+
}
|
275
|
+
|
276
|
+
function getSavedSearch(tab_name){
|
277
|
+
switch(tab_name){
|
278
|
+
case "methods":
|
279
|
+
return (Method_Search);
|
280
|
+
break;
|
281
|
+
case "files":
|
282
|
+
return (File_Search);
|
283
|
+
break;
|
284
|
+
case "classes":
|
285
|
+
return (Class_Search);
|
286
|
+
break;
|
287
|
+
}
|
288
|
+
}
|
289
|
+
|
290
|
+
//These globals handle the history stack
|
291
|
+
|
292
|
+
|
293
|
+
function setListScrollerContent(s){
|
294
|
+
|
295
|
+
$('listScroller').innerHTML = s;
|
296
|
+
}
|
297
|
+
|
298
|
+
function setMainContent(s){
|
299
|
+
|
300
|
+
$('rdocContent').innerHTML = s;
|
301
|
+
}
|
302
|
+
|
303
|
+
function setSearchFieldValue(s){
|
304
|
+
|
305
|
+
document.forms[0].searchText.value = s;
|
306
|
+
}
|
307
|
+
|
308
|
+
function getSearchFieldValue(){
|
309
|
+
|
310
|
+
return Form.Element.getValue('searchText');
|
311
|
+
}
|
312
|
+
|
313
|
+
function setSearchFocus(){
|
314
|
+
|
315
|
+
document.forms[0].searchText.focus();
|
316
|
+
}
|
317
|
+
|
318
|
+
var Anchor_ID_Of_Current = null; // holds the last highlighted anchor tag in the scroll lsit
|
319
|
+
function getCurrentAnchor(){
|
320
|
+
return(Anchor_ID_Of_Current);
|
321
|
+
}
|
322
|
+
|
323
|
+
function setCurrentAnchor(a_id){
|
324
|
+
Anchor_ID_Of_Current = a_id;
|
325
|
+
}
|
326
|
+
|
327
|
+
//var Index_Of_Current = 0; //holds the last highlighted index
|
328
|
+
//function getCurrentIndex(){
|
329
|
+
// return (Index_Of_Current);
|
330
|
+
//}
|
331
|
+
|
332
|
+
//function setCurrentIndex(new_i){
|
333
|
+
// Index_Of_Current = new_i;
|
334
|
+
//}
|
335
|
+
|
336
|
+
function loadScrollerContent(url){
|
337
|
+
|
338
|
+
var scrollerHtml = new Ajax.Request(url, {
|
339
|
+
asynchronous: false,
|
340
|
+
method: 'get',
|
341
|
+
onComplete: function(method_data) {
|
342
|
+
setListScrollerContent(method_data.responseText);
|
343
|
+
}
|
344
|
+
});
|
345
|
+
|
346
|
+
}
|
347
|
+
|
348
|
+
//called primarily from the links inside the scroller list
|
349
|
+
//loads the main page div then jumps to the anchor/element with id
|
350
|
+
function loadContent(url, anchor_id){
|
351
|
+
|
352
|
+
var mainHtml = new Ajax.Request(url, {
|
353
|
+
method: 'get',
|
354
|
+
onLoading: changeLoadingStatus("on"),
|
355
|
+
onSuccess: function(method_data) {
|
356
|
+
setMainContent(method_data.responseText);},
|
357
|
+
onComplete: function(request) {
|
358
|
+
changeLoadingStatus("off");
|
359
|
+
new jumpToAnchor(anchor_id);
|
360
|
+
}
|
361
|
+
});
|
362
|
+
}
|
363
|
+
|
364
|
+
//An alternative function that also will stuff the index history for methods, files, classes
|
365
|
+
function loadIndexContent(url, anchor_id, name, scope)
|
366
|
+
{
|
367
|
+
if (From_URL_Param == true){
|
368
|
+
var mainHtml = new Ajax.Request(url, {
|
369
|
+
method: 'get',
|
370
|
+
onLoading: changeLoadingStatus("on"),
|
371
|
+
onSuccess: function(method_data) {
|
372
|
+
setMainContent(method_data.responseText);},
|
373
|
+
onComplete: function(request) {
|
374
|
+
changeLoadingStatus("off");
|
375
|
+
updateBrowserBar(name, anchor_id, scope);
|
376
|
+
new jumpToAnchor(anchor_id);}
|
377
|
+
});
|
378
|
+
From_URL_Param = false;
|
379
|
+
}else{
|
380
|
+
updateUrlParams(anchor_id, name);
|
381
|
+
}
|
382
|
+
|
383
|
+
}
|
384
|
+
|
385
|
+
function updateBrowserBar(name, anchor_id, scope){
|
386
|
+
if (getCurrentTab() == "methods"){
|
387
|
+
$('browserBarInfo').update("<small>class/module:</small> <a href=\"#\" onclick=\"jumpToTop();\">" + scope + "</a> <small>method:</small> <strong><a href=\"#\" onclick=\"jumpToAnchor('"+ anchor_id +"')\">" + name + "</a></strong> ");
|
388
|
+
}else{ if(getCurrentTab() == "classes"){
|
389
|
+
$('browserBarInfo').update("<small>class/module:</small> <a href=\"#\" onclick=\"jumpToTop();\">" + scope + "::" + name + "</strong> ");
|
390
|
+
}else{
|
391
|
+
$('browserBarInfo').update("<small>file:</small> <a href=\"#\" onclick=\"jumpToTop();\">" + scope + "/" + name + "</strong> ");
|
392
|
+
}
|
393
|
+
}
|
394
|
+
}
|
395
|
+
|
396
|
+
|
397
|
+
// Force loads the contents of the index of the current scroller list. It does this by
|
398
|
+
// pulling the onclick method out and executing it manually.
|
399
|
+
function forceLoadOfContent(index_to_load){
|
400
|
+
var scroller = $('listScroller');
|
401
|
+
var a_array = scroller.getElementsByTagName('a');
|
402
|
+
if ((index_to_load >= 0) && (index_to_load < a_array.length)){
|
403
|
+
var load_element = a_array[index_to_load];
|
404
|
+
var el_text = load_element.innerHTML.strip();
|
405
|
+
setSearchFieldValue(el_text);
|
406
|
+
setSavedSearch(getCurrentTab(), el_text);
|
407
|
+
eval("new " + load_element.onclick);
|
408
|
+
}
|
409
|
+
}
|
410
|
+
|
411
|
+
function forceLoadOfContentAnchor(anchor_id){
|
412
|
+
|
413
|
+
var load_element = $(anchor_id);
|
414
|
+
if (load_element != null){
|
415
|
+
var el_text = load_element.innerHTML.strip();
|
416
|
+
setSearchFieldValue(el_text);
|
417
|
+
scrollToAnchor(anchor_id);
|
418
|
+
setSavedSearch(getCurrentTab(), el_text);
|
419
|
+
eval("new " + load_element.onclick);
|
420
|
+
}
|
421
|
+
}
|
422
|
+
|
423
|
+
var From_URL_Param = false;
|
424
|
+
function paramLoadOfContentAnchor(anchor_id){
|
425
|
+
From_URL_Param = true;
|
426
|
+
forceLoadOfContentAnchor(anchor_id);
|
427
|
+
}
|
428
|
+
|
429
|
+
//this handles the up/down keystrokes to move the selection of items in the list
|
430
|
+
function scrollListToElementOffset(anchor_id, offset){
|
431
|
+
var scroller = $('listScroller');
|
432
|
+
var a_array = scroller.getElementsByTagName('a');
|
433
|
+
var current_index = findIndexOfAnchor(a_array, anchor_id);
|
434
|
+
if ((current_index >= 0) && (current_index < a_array.length)){
|
435
|
+
scrollListToAnchor(a_array[current_index + offset].id);
|
436
|
+
setListActiveAnchor(a_array[current_index + offset].id);
|
437
|
+
}
|
438
|
+
}
|
439
|
+
|
440
|
+
function findIndexOfAnchor(a_array, anchor_id){
|
441
|
+
var found=false;
|
442
|
+
var counter = 0;
|
443
|
+
while(!found && counter < a_array.length){
|
444
|
+
if (a_array[counter].id == anchor_id){
|
445
|
+
found = true;
|
446
|
+
}else{
|
447
|
+
counter +=1;
|
448
|
+
}
|
449
|
+
}
|
450
|
+
return(counter);
|
451
|
+
}
|
452
|
+
|
453
|
+
function scrollToName(searcher_name){
|
454
|
+
|
455
|
+
var scroller = $('listScroller');
|
456
|
+
var a_array = scroller.getElementsByTagName('a');
|
457
|
+
|
458
|
+
if (!searcher_name.match(new RegExp(/\s+/))){ //if searcher name is blank
|
459
|
+
|
460
|
+
var searcher_pattern = new RegExp("^"+searcher_name, "i"); //the "i" is for case INsensitive
|
461
|
+
var found_index = -1;
|
462
|
+
|
463
|
+
var found = false;
|
464
|
+
var x = 0;
|
465
|
+
while(!found && x < a_array.length){
|
466
|
+
if(a_array[x].innerHTML.match(searcher_pattern)){
|
467
|
+
found = true;
|
468
|
+
found_index = x;
|
469
|
+
}
|
470
|
+
else{
|
471
|
+
x++;
|
472
|
+
}
|
473
|
+
}
|
474
|
+
|
475
|
+
// // an attempt at binary searching... have not given up on this yet...
|
476
|
+
//found_index = binSearcher(searcher_pattern, a_array, 0, a_array.length);
|
477
|
+
|
478
|
+
if ((found_index >= 0) && (found_index < a_array.length)){
|
479
|
+
|
480
|
+
scrollListToAnchor(a_array[found_index].id);//scroll to the item
|
481
|
+
setListActiveAnchor(a_array[found_index].id);//highlight the item
|
482
|
+
}
|
483
|
+
}else{ //since searcher name is blank
|
484
|
+
//scrollListToIndex(a_array, 0);//scroll to the item
|
485
|
+
//setListActiveItem(a_array, 0);//highlight the item
|
486
|
+
}
|
487
|
+
}
|
488
|
+
|
489
|
+
function scrollToAnchor(anchor_id){
|
490
|
+
var scroller = $('listScroller');
|
491
|
+
if ($(anchor_id) != null){
|
492
|
+
scrollListToAnchor(anchor_id);
|
493
|
+
setListActiveAnchor(anchor_id);
|
494
|
+
}
|
495
|
+
}
|
496
|
+
|
497
|
+
function getY(element){
|
498
|
+
|
499
|
+
var y = 0;
|
500
|
+
for( var e = element; e; e = e.offsetParent)//iterate the offset Parents
|
501
|
+
{
|
502
|
+
y += e.offsetTop; //add up the offsetTop values
|
503
|
+
}
|
504
|
+
//for( e = element.parentNode; e && e != document.body; e = e.parentNode)
|
505
|
+
// if (e.scrollTop) y -= e.scrollTop; //subtract scrollbar values
|
506
|
+
return y;
|
507
|
+
}
|
508
|
+
|
509
|
+
//function setListActiveItem(item_array, active_index){
|
510
|
+
//
|
511
|
+
// item_array[getCurrentIndex()].className = "";
|
512
|
+
// setCurrentIndex(active_index);
|
513
|
+
// item_array[getCurrentIndex()].className = "activeA"; //setting the active class name
|
514
|
+
//}
|
515
|
+
|
516
|
+
function setListActiveAnchor(active_anchor){
|
517
|
+
if ((getCurrentAnchor() != null) && ($(getCurrentAnchor()) != null)){
|
518
|
+
$(getCurrentAnchor()).className = "";
|
519
|
+
}
|
520
|
+
setCurrentAnchor(active_anchor);
|
521
|
+
$(getCurrentAnchor()).className = "activeA";
|
522
|
+
|
523
|
+
}
|
524
|
+
|
525
|
+
//handles the scrolling of the list and setting of the current index
|
526
|
+
//function scrollListToIndex(a_array, scroll_index){
|
527
|
+
// if (scroll_index > 0){
|
528
|
+
// var scroller = $('listScroller');
|
529
|
+
// scroller.scrollTop = getY(a_array[scroll_index]) - 120; //the -120 is what keeps it from going to the top...
|
530
|
+
// }
|
531
|
+
//}
|
532
|
+
|
533
|
+
function scrollListToAnchor(scroll2_anchor){
|
534
|
+
var scroller = $('listScroller');
|
535
|
+
scroller.scrollTop = getY($(scroll2_anchor)) - 120;
|
536
|
+
}
|
537
|
+
|
538
|
+
function jumpToAnchor(anchor_id){
|
539
|
+
|
540
|
+
var contentScroller = $('rdocContent');
|
541
|
+
var a_div = $(anchor_id);
|
542
|
+
contentScroller.scrollTop = getY(a_div) - 80; //80 is the offset to adjust scroll point
|
543
|
+
var a_title = $(anchor_id + "_title");
|
544
|
+
a_title.style.backgroundColor = "#222";
|
545
|
+
a_title.style.color = "#FFF";
|
546
|
+
a_title.style.padding = "3px";
|
547
|
+
// a_title.style.borderBottom = "2px solid #ccc";
|
548
|
+
|
549
|
+
//other attempts
|
550
|
+
//a_div.className = "activeMethod"; //setting the active class name
|
551
|
+
//a_div.style.backgroundColor = "#ffc";
|
552
|
+
//var titles = a_div.getElementsByClassName("title");
|
553
|
+
//titles[0].className = "activeTitle";
|
554
|
+
|
555
|
+
}
|
556
|
+
|
557
|
+
function jumpToTop(){
|
558
|
+
$('rdocContent').scrollTop = 0;
|
559
|
+
}
|
560
|
+
|
561
|
+
function changeLoadingStatus(status){
|
562
|
+
if (status == "on"){
|
563
|
+
$('loadingStatus').show();
|
564
|
+
}
|
565
|
+
else{
|
566
|
+
$('loadingStatus').hide();
|
567
|
+
}
|
568
|
+
}
|
569
|
+
|
570
|
+
//************* Misc functions (mostly from the old rdocs) ***********************
|
571
|
+
//snagged code from the old templating system
|
572
|
+
function toggleSource( id ){
|
573
|
+
|
574
|
+
var elem
|
575
|
+
var link
|
576
|
+
|
577
|
+
if( document.getElementById )
|
578
|
+
{
|
579
|
+
elem = document.getElementById( id )
|
580
|
+
link = document.getElementById( "l_" + id )
|
581
|
+
}
|
582
|
+
else if ( document.all )
|
583
|
+
{
|
584
|
+
elem = eval( "document.all." + id )
|
585
|
+
link = eval( "document.all.l_" + id )
|
586
|
+
}
|
587
|
+
else
|
588
|
+
return false;
|
589
|
+
|
590
|
+
if( elem.style.display == "block" )
|
591
|
+
{
|
592
|
+
elem.style.display = "none"
|
593
|
+
link.innerHTML = "show source"
|
594
|
+
}
|
595
|
+
else
|
596
|
+
{
|
597
|
+
elem.style.display = "block"
|
598
|
+
link.innerHTML = "hide source"
|
599
|
+
}
|
600
|
+
}
|
601
|
+
|
602
|
+
function openCode( url ){
|
603
|
+
window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
|
604
|
+
}
|
605
|
+
|
606
|
+
//this function handles the ajax calling and afterits loaded the jumping to the anchor...
|
607
|
+
function jsHref(url){
|
608
|
+
//alert(url);
|
609
|
+
var mainHtml = new Ajax.Request(url, {
|
610
|
+
method: 'get',
|
611
|
+
onSuccess: function(method_data) {
|
612
|
+
setMainContent(method_data.responseText);}
|
613
|
+
});
|
614
|
+
}
|
615
|
+
|
616
|
+
//function comparePatterns(string, regexp){
|
617
|
+
// var direction = 0;
|
618
|
+
//
|
619
|
+
//
|
620
|
+
// return (direction)
|
621
|
+
//}
|
622
|
+
|
623
|
+
////returns the index of the element
|
624
|
+
//function binSearcher(regexp_pattern, list, start_index, stop_index){
|
625
|
+
// //divide the list in half
|
626
|
+
// var split_point = 0;
|
627
|
+
// split_point = parseInt((stop_index - start_index)/2);
|
628
|
+
// direction = comparePatterns(list[split_point].innerHTML, regexp_pattern);
|
629
|
+
// if(direction < 0)
|
630
|
+
// return (binSearcher(regexp_pattern, list, start_index, split_point));
|
631
|
+
// else
|
632
|
+
// if(direction > 0)
|
633
|
+
// return (binSearcher(regexp_pattern, list, split_point, stop_index));
|
634
|
+
// else
|
635
|
+
// return(split_point);
|
636
|
+
//
|
637
|
+
//}
|
638
|
+
|
639
|
+
|
640
|
+
|