elevage 0.1.0 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +3 -1
  3. data/README.md +33 -11
  4. data/elevage.gemspec +15 -15
  5. data/features/archive +3 -22
  6. data/features/build.feature +2 -1
  7. data/features/generate.feature +3 -9
  8. data/features/health_env_failure.feature +2 -8
  9. data/features/health_failure.feature +1 -2
  10. data/features/health_success.feature +3 -9
  11. data/features/list.feature +3 -9
  12. data/features/step_definitions/elevage_steps.rb +2 -2
  13. data/lib/elevage/build.rb +4 -1
  14. data/lib/elevage/constants.rb +2 -2
  15. data/lib/elevage/environment.rb +66 -39
  16. data/lib/elevage/generate.rb +4 -3
  17. data/lib/elevage/health.rb +4 -0
  18. data/lib/elevage/new.rb +4 -2
  19. data/lib/elevage/platform.rb +11 -3
  20. data/lib/elevage/provisioner.rb +61 -21
  21. data/lib/elevage/provisionerrunqueue.rb +25 -10
  22. data/lib/elevage/templates/vcenter.yml.tt +7 -12
  23. data/lib/elevage/version.rb +1 -1
  24. data/lib/elevage.rb +5 -0
  25. metadata +58 -88
  26. data/.ruby-version +0 -1
  27. data/.yardoc/checksums +0 -12
  28. data/.yardoc/object_types +0 -0
  29. data/.yardoc/objects/root.dat +0 -0
  30. data/.yardoc/proxy_types +0 -0
  31. data/doc/Elevage/Build.html +0 -435
  32. data/doc/Elevage/CLI.html +0 -282
  33. data/doc/Elevage/Environment.html +0 -950
  34. data/doc/Elevage/Generate.html +0 -346
  35. data/doc/Elevage/Health.html +0 -359
  36. data/doc/Elevage/New.html +0 -411
  37. data/doc/Elevage/Platform.html +0 -1119
  38. data/doc/Elevage/Provisioner.html +0 -804
  39. data/doc/Elevage/ProvisionerRunQueue.html +0 -765
  40. data/doc/Elevage/Runner.html +0 -319
  41. data/doc/Elevage.html +0 -501
  42. data/doc/_index.html +0 -239
  43. data/doc/class_list.html +0 -58
  44. data/doc/css/common.css +0 -1
  45. data/doc/css/full_list.css +0 -57
  46. data/doc/css/style.css +0 -339
  47. data/doc/file.README.html +0 -187
  48. data/doc/file_list.html +0 -60
  49. data/doc/frames.html +0 -26
  50. data/doc/index.html +0 -187
  51. data/doc/js/app.js +0 -219
  52. data/doc/js/full_list.js +0 -181
  53. data/doc/js/jquery.js +0 -4
  54. data/doc/method_list.html +0 -369
  55. data/doc/top-level-namespace.html +0 -112
data/doc/index.html DELETED
@@ -1,187 +0,0 @@
1
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
2
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
- <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
- <head>
5
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
6
- <title>
7
- File: README
8
-
9
- &mdash; Documentation by YARD 0.8.7.6
10
-
11
- </title>
12
-
13
- <link rel="stylesheet" href="css/style.css" type="text/css" charset="utf-8" />
14
-
15
- <link rel="stylesheet" href="css/common.css" type="text/css" charset="utf-8" />
16
-
17
- <script type="text/javascript" charset="utf-8">
18
- hasFrames = window.top.frames.main ? true : false;
19
- relpath = '';
20
- framesUrl = "frames.html#!file.README.html";
21
- </script>
22
-
23
-
24
- <script type="text/javascript" charset="utf-8" src="js/jquery.js"></script>
25
-
26
- <script type="text/javascript" charset="utf-8" src="js/app.js"></script>
27
-
28
-
29
- </head>
30
- <body>
31
- <div id="header">
32
- <div id="menu">
33
-
34
- <a href="_index.html">Index</a> &raquo;
35
- <span class="title">File: README</span>
36
-
37
-
38
- <div class="noframes"><span class="title">(</span><a href="." target="_top">no frames</a><span class="title">)</span></div>
39
- </div>
40
-
41
- <div id="search">
42
-
43
- <a class="full_list_link" id="class_list_link"
44
- href="class_list.html">
45
- Class List
46
- </a>
47
-
48
- <a class="full_list_link" id="method_list_link"
49
- href="method_list.html">
50
- Method List
51
- </a>
52
-
53
- <a class="full_list_link" id="file_list_link"
54
- href="file_list.html">
55
- File List
56
- </a>
57
-
58
- </div>
59
- <div class="clear"></div>
60
- </div>
61
-
62
- <iframe id="search_frame"></iframe>
63
-
64
- <div id="content"><div id='filecontents'>
65
- <h1 id="label-Elevage">Elevage</h1>
66
-
67
- <p><a href="http://travis-ci.org/ActiveSCM/elevage"><img
68
- src="https://travis-ci.org/ActiveSCM/elevage.svg?branch=master"></a> <a
69
- href="https://gemnasium.com/ActiveSCM/elevage"><img
70
- src="https://gemnasium.com/ActiveSCM/elevage.png?travis"></a> <a
71
- href="https://coveralls.io/r/ActiveSCM/elevage"><img
72
- src="https://coveralls.io/repos/ActiveSCM/elevage/badge.png?branch=master"></a>
73
- <a href="http://inch-ci.org/github/ActiveSCM/elevage"><img
74
- src="http://inch-ci.org/github/ActiveSCM/elevage.png?branch=master"></a></p>
75
-
76
- <h4 id="label-Installation">Installation</h4>
77
-
78
- <p>elevage is distributed as a ruby gem</p>
79
-
80
- <pre class="code ruby"><code class="ruby">$ gem install elevage</code></pre>
81
-
82
- <h2 id="label-Usage">Usage</h2>
83
-
84
- <p>Create new, default platform definition files at current location. Comments
85
- within the template files describe necessary customizations.</p>
86
-
87
- <pre class="code ruby"><code class="ruby">$ elevage new &lt;Platform Name&gt;</code></pre>
88
-
89
- <p>Display parsed items from the desired state files.</p>
90
-
91
- <pre class="code ruby"><code class="ruby">$ elevage list &lt;item&gt;
92
-
93
- list vcenter :list all named vcenter definitions
94
- list network :list all named network definitions
95
- list compute :list all named compute configurations
96
- list tiers :list all defined tier names
97
- list pools :list all default component pool defintions
98
- list components :list all platform components
99
- list environments :list all defined environments
100
- list &lt;env name&gt; -n :display individual node names, IP addresses, and Chef roles</code></pre>
101
-
102
- <p>Check health of platform definition files.</p>
103
-
104
- <pre class="code ruby"><code class="ruby">$ elevage health</code></pre>
105
-
106
- <p>Generate a new environment file. Comments within the template files
107
- describe necessary customizations.</p>
108
-
109
- <pre class="code ruby"><code class="ruby">$ elevage generate &lt;environment name&gt;</code></pre>
110
-
111
- <p>Provision nodes from platform and environment definition</p>
112
-
113
- <pre class="code ruby"><code class="ruby">$ elevage build &lt;params&gt;
114
-
115
- Options:
116
- -a, [--all], [--no-all] # Build everything for the named environment
117
- -t, [--tier=TIER] # Build everything for the specified tier in the named environment
118
- -c, [--component=COMPONENT] # Build all nodes for the specified component
119
- -n, [--node=N] # Build the single specified node
120
- -C, [--concurrency=N] # Maximum number of simultaneous provisioning tasks
121
- # Default: 8
122
- -l, [--logfiles=LOGFILES] # Path where log files should be written
123
- # Default: logs
124
- -v, [--verbose], [--no-verbose]
125
- [--dry-run], [--no-dry-run] # Do not actually do anything
126
- # Just display the commands that would be run.
127
- [--vsuser=VSUSER] # Username for vSphere
128
- # Default: svc_provisioner
129
- [--vspass=VSPASS] # Password for vSphere
130
- # Default: changeme
131
- -x, [--ssh-user=SSH-USER] # Unix username for ssh for chef-client bootstrap
132
- # (must have sudo NOPASSWD access for root)
133
- # Default: knife
134
- -i, [--ssh-key=SSH-KEY] # Path to SSH private key for ssh username for key-based authentication
135
- # Default: knife_rsa
136
- -t, [--template-file=TEMPLATE-FILE] # File to be used as the chef-client bootstrap template script
137
- # Default: chef-full.erb
138
- -b, [--bootstrap-version=BOOTSTRAP-VERSION] # Version of chef-client to bootstrap on node
139
- # Default: 11.4.0</code></pre>
140
-
141
- <h2 id="label-Contributing">Contributing</h2>
142
- <ol><li>
143
- <p>Fork it ( <a
144
- href="https://github.com/ActiveSCM/elevage/fork">github.com/ActiveSCM/elevage/fork</a>
145
- )</p>
146
- </li><li>
147
- <p>Create your feature branch (<code>git checkout -b my-new-feature</code>)</p>
148
- </li><li>
149
- <p>Commit your changes (<code>git commit -am &#39;Add some
150
- feature&#39;</code>)</p>
151
- </li><li>
152
- <p>Push to the branch (<code>git push origin my-new-feature</code>)</p>
153
- </li><li>
154
- <p>Create a new Pull Request</p>
155
- </li></ol>
156
-
157
- <h3 id="label-License+and+Authors">License and Authors</h3>
158
- <ul><li>
159
- <p>Authors:: Nic Cheneweth (<a
160
- href="mailto:nic.cheneweth@activenetwork.com">nic.cheneweth@activenetwork.com</a>),
161
- (Gregory Ruiz-Ade <a
162
- href="mailto:gregory.ruiz-ade@activenetwork.com">gregory.ruiz-ade@activenetwork.com</a>)</p>
163
- </li></ul>
164
-
165
- <pre class="code ruby"><code class="ruby">Copyright 2014 Active Network, LLC
166
-
167
- Licensed under the Apache License, Version 2.0 (the &quot;License&quot;);
168
- you may not use this file except in compliance with the License.
169
- You may obtain a copy of the License at
170
-
171
- http://www.apache.org/licenses/LICENSE-2.0
172
-
173
- Unless required by applicable law or agreed to in writing, software
174
- distributed under the License is distributed on an &quot;AS IS&quot; BASIS,
175
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
176
- See the License for the specific language governing permissions and
177
- limitations under the License.</code></pre>
178
- </div></div>
179
-
180
- <div id="footer">
181
- Generated on Tue Nov 11 17:39:22 2014 by
182
- <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
183
- 0.8.7.6 (ruby-2.1.2).
184
- </div>
185
-
186
- </body>
187
- </html>
data/doc/js/app.js DELETED
@@ -1,219 +0,0 @@
1
- function createSourceLinks() {
2
- $('.method_details_list .source_code').
3
- before("<span class='showSource'>[<a href='#' class='toggleSource'>View source</a>]</span>");
4
- $('.toggleSource').toggle(function() {
5
- $(this).parent().nextAll('.source_code').slideDown(100);
6
- $(this).text("Hide source");
7
- },
8
- function() {
9
- $(this).parent().nextAll('.source_code').slideUp(100);
10
- $(this).text("View source");
11
- });
12
- }
13
-
14
- function createDefineLinks() {
15
- var tHeight = 0;
16
- $('.defines').after(" <a href='#' class='toggleDefines'>more...</a>");
17
- $('.toggleDefines').toggle(function() {
18
- tHeight = $(this).parent().prev().height();
19
- $(this).prev().show();
20
- $(this).parent().prev().height($(this).parent().height());
21
- $(this).text("(less)");
22
- },
23
- function() {
24
- $(this).prev().hide();
25
- $(this).parent().prev().height(tHeight);
26
- $(this).text("more...");
27
- });
28
- }
29
-
30
- function createFullTreeLinks() {
31
- var tHeight = 0;
32
- $('.inheritanceTree').toggle(function() {
33
- tHeight = $(this).parent().prev().height();
34
- $(this).parent().toggleClass('showAll');
35
- $(this).text("(hide)");
36
- $(this).parent().prev().height($(this).parent().height());
37
- },
38
- function() {
39
- $(this).parent().toggleClass('showAll');
40
- $(this).parent().prev().height(tHeight);
41
- $(this).text("show all");
42
- });
43
- }
44
-
45
- function fixBoxInfoHeights() {
46
- $('dl.box dd.r1, dl.box dd.r2').each(function() {
47
- $(this).prev().height($(this).height());
48
- });
49
- }
50
-
51
- function searchFrameLinks() {
52
- $('.full_list_link').click(function() {
53
- toggleSearchFrame(this, $(this).attr('href'));
54
- return false;
55
- });
56
- }
57
-
58
- function toggleSearchFrame(id, link) {
59
- var frame = $('#search_frame');
60
- $('#search a').removeClass('active').addClass('inactive');
61
- if (frame.attr('src') == link && frame.css('display') != "none") {
62
- frame.slideUp(100);
63
- $('#search a').removeClass('active inactive');
64
- }
65
- else {
66
- $(id).addClass('active').removeClass('inactive');
67
- frame.attr('src', link).slideDown(100);
68
- }
69
- }
70
-
71
- function linkSummaries() {
72
- $('.summary_signature').click(function() {
73
- document.location = $(this).find('a').attr('href');
74
- });
75
- }
76
-
77
- function framesInit() {
78
- if (hasFrames) {
79
- document.body.className = 'frames';
80
- $('#menu .noframes a').attr('href', document.location);
81
- try {
82
- window.top.document.title = $('html head title').text();
83
- } catch(error) {
84
- // some browsers will not allow this when serving from file://
85
- // but we don't want to stop the world.
86
- }
87
- }
88
- else {
89
- $('#menu .noframes a').text('frames').attr('href', framesUrl);
90
- }
91
- }
92
-
93
- function keyboardShortcuts() {
94
- if (window.top.frames.main) return;
95
- $(document).keypress(function(evt) {
96
- if (evt.altKey || evt.ctrlKey || evt.metaKey || evt.shiftKey) return;
97
- if (typeof evt.target !== "undefined" &&
98
- (evt.target.nodeName == "INPUT" ||
99
- evt.target.nodeName == "TEXTAREA")) return;
100
- switch (evt.charCode) {
101
- case 67: case 99: $('#class_list_link').click(); break; // 'c'
102
- case 77: case 109: $('#method_list_link').click(); break; // 'm'
103
- case 70: case 102: $('#file_list_link').click(); break; // 'f'
104
- default: break;
105
- }
106
- });
107
- }
108
-
109
- function summaryToggle() {
110
- $('.summary_toggle').click(function() {
111
- if (localStorage) {
112
- localStorage.summaryCollapsed = $(this).text();
113
- }
114
- $('.summary_toggle').each(function() {
115
- $(this).text($(this).text() == "collapse" ? "expand" : "collapse");
116
- var next = $(this).parent().parent().nextAll('ul.summary').first();
117
- if (next.hasClass('compact')) {
118
- next.toggle();
119
- next.nextAll('ul.summary').first().toggle();
120
- }
121
- else if (next.hasClass('summary')) {
122
- var list = $('<ul class="summary compact" />');
123
- list.html(next.html());
124
- list.find('.summary_desc, .note').remove();
125
- list.find('a').each(function() {
126
- $(this).html($(this).find('strong').html());
127
- $(this).parent().html($(this)[0].outerHTML);
128
- });
129
- next.before(list);
130
- next.toggle();
131
- }
132
- });
133
- return false;
134
- });
135
- if (localStorage) {
136
- if (localStorage.summaryCollapsed == "collapse") {
137
- $('.summary_toggle').first().click();
138
- }
139
- else localStorage.summaryCollapsed = "expand";
140
- }
141
- }
142
-
143
- function fixOutsideWorldLinks() {
144
- $('a').each(function() {
145
- if (window.location.host != this.host) this.target = '_parent';
146
- });
147
- }
148
-
149
- function generateTOC() {
150
- if ($('#filecontents').length === 0) return;
151
- var _toc = $('<ol class="top"></ol>');
152
- var show = false;
153
- var toc = _toc;
154
- var counter = 0;
155
- var tags = ['h2', 'h3', 'h4', 'h5', 'h6'];
156
- var i;
157
- if ($('#filecontents h1').length > 1) tags.unshift('h1');
158
- for (i = 0; i < tags.length; i++) { tags[i] = '#filecontents ' + tags[i]; }
159
- var lastTag = parseInt(tags[0][1], 10);
160
- $(tags.join(', ')).each(function() {
161
- if ($(this).parents('.method_details .docstring').length != 0) return;
162
- if (this.id == "filecontents") return;
163
- show = true;
164
- var thisTag = parseInt(this.tagName[1], 10);
165
- if (this.id.length === 0) {
166
- var proposedId = $(this).attr('toc-id');
167
- if (typeof(proposedId) != "undefined") this.id = proposedId;
168
- else {
169
- var proposedId = $(this).text().replace(/[^a-z0-9-]/ig, '_');
170
- if ($('#' + proposedId).length > 0) { proposedId += counter; counter++; }
171
- this.id = proposedId;
172
- }
173
- }
174
- if (thisTag > lastTag) {
175
- for (i = 0; i < thisTag - lastTag; i++) {
176
- var tmp = $('<ol/>'); toc.append(tmp); toc = tmp;
177
- }
178
- }
179
- if (thisTag < lastTag) {
180
- for (i = 0; i < lastTag - thisTag; i++) toc = toc.parent();
181
- }
182
- var title = $(this).attr('toc-title');
183
- if (typeof(title) == "undefined") title = $(this).text();
184
- toc.append('<li><a href="#' + this.id + '">' + title + '</a></li>');
185
- lastTag = thisTag;
186
- });
187
- if (!show) return;
188
- html = '<div id="toc"><p class="title"><a class="hide_toc" href="#"><strong>Table of Contents</strong></a> <small>(<a href="#" class="float_toc">left</a>)</small></p></div>';
189
- $('#content').prepend(html);
190
- $('#toc').append(_toc);
191
- $('#toc .hide_toc').toggle(function() {
192
- $('#toc .top').slideUp('fast');
193
- $('#toc').toggleClass('hidden');
194
- $('#toc .title small').toggle();
195
- }, function() {
196
- $('#toc .top').slideDown('fast');
197
- $('#toc').toggleClass('hidden');
198
- $('#toc .title small').toggle();
199
- });
200
- $('#toc .float_toc').toggle(function() {
201
- $(this).text('float');
202
- $('#toc').toggleClass('nofloat');
203
- }, function() {
204
- $(this).text('left');
205
- $('#toc').toggleClass('nofloat');
206
- });
207
- }
208
-
209
- $(framesInit);
210
- $(createSourceLinks);
211
- $(createDefineLinks);
212
- $(createFullTreeLinks);
213
- $(fixBoxInfoHeights);
214
- $(searchFrameLinks);
215
- $(linkSummaries);
216
- $(keyboardShortcuts);
217
- $(summaryToggle);
218
- $(fixOutsideWorldLinks);
219
- $(generateTOC);
data/doc/js/full_list.js DELETED
@@ -1,181 +0,0 @@
1
- var inSearch = null;
2
- var searchIndex = 0;
3
- var searchCache = [];
4
- var searchString = '';
5
- var regexSearchString = '';
6
- var caseSensitiveMatch = false;
7
- var ignoreKeyCodeMin = 8;
8
- var ignoreKeyCodeMax = 46;
9
- var commandKey = 91;
10
-
11
- RegExp.escape = function(text) {
12
- return text.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
13
- }
14
-
15
- function fullListSearch() {
16
- // generate cache
17
- searchCache = [];
18
- $('#full_list li').each(function() {
19
- var link = $(this).find('.object_link a');
20
- if (link.length === 0) return;
21
- var fullName = link.attr('title').split(' ')[0];
22
- searchCache.push({name:link.text(), fullName:fullName, node:$(this), link:link});
23
- });
24
-
25
- $('#search input').keyup(function(event) {
26
- if ((event.keyCode > ignoreKeyCodeMin && event.keyCode < ignoreKeyCodeMax)
27
- || event.keyCode == commandKey)
28
- return;
29
- searchString = this.value;
30
- caseSensitiveMatch = searchString.match(/[A-Z]/) != null;
31
- regexSearchString = RegExp.escape(searchString);
32
- if (caseSensitiveMatch) {
33
- regexSearchString += "|" +
34
- $.map(searchString.split(''), function(e) { return RegExp.escape(e); }).
35
- join('.+?');
36
- }
37
- if (searchString === "") {
38
- clearTimeout(inSearch);
39
- inSearch = null;
40
- $('ul .search_uncollapsed').removeClass('search_uncollapsed');
41
- $('#full_list, #content').removeClass('insearch');
42
- $('#full_list li').removeClass('found').each(function() {
43
-
44
- var link = $(this).find('.object_link a');
45
- if (link.length > 0) link.text(link.text());
46
- });
47
- if (clicked) {
48
- clicked.parents('ul').each(function() {
49
- $(this).removeClass('collapsed').prev().removeClass('collapsed');
50
- });
51
- }
52
- highlight();
53
- }
54
- else {
55
- if (inSearch) clearTimeout(inSearch);
56
- searchIndex = 0;
57
- lastRowClass = '';
58
- $('#full_list, #content').addClass('insearch');
59
- $('#noresults').text('');
60
- searchItem();
61
- }
62
- });
63
-
64
- $('#search input').focus();
65
- $('#full_list').after("<div id='noresults'></div>");
66
- }
67
-
68
- var lastRowClass = '';
69
- function searchItem() {
70
- for (var i = 0; i < searchCache.length / 50; i++) {
71
- var item = searchCache[searchIndex];
72
- var searchName = (searchString.indexOf('::') != -1 ? item.fullName : item.name);
73
- var matchString = regexSearchString;
74
- var matchRegexp = new RegExp(matchString, caseSensitiveMatch ? "" : "i");
75
- if (searchName.match(matchRegexp) == null) {
76
- item.node.removeClass('found');
77
- }
78
- else {
79
- item.node.css('padding-left', '10px').addClass('found');
80
- item.node.parents().addClass('search_uncollapsed');
81
- item.node.removeClass(lastRowClass).addClass(lastRowClass == 'r1' ? 'r2' : 'r1');
82
- lastRowClass = item.node.hasClass('r1') ? 'r1' : 'r2';
83
- item.link.html(item.name.replace(matchRegexp, "<strong>$&</strong>"));
84
- }
85
-
86
- if (searchCache.length === searchIndex + 1) {
87
- searchDone();
88
- return;
89
- }
90
- else {
91
- searchIndex++;
92
- }
93
- }
94
- inSearch = setTimeout('searchItem()', 0);
95
- }
96
-
97
- function searchDone() {
98
- highlight(true);
99
- if ($('#full_list li:visible').size() === 0) {
100
- $('#noresults').text('No results were found.').hide().fadeIn();
101
- }
102
- else {
103
- $('#noresults').text('');
104
- }
105
- $('#content').removeClass('insearch');
106
- clearTimeout(inSearch);
107
- inSearch = null;
108
- }
109
-
110
- clicked = null;
111
- function linkList() {
112
- $('#full_list li, #full_list li a:last').click(function(evt) {
113
- if ($(this).hasClass('toggle')) return true;
114
- if (this.tagName.toLowerCase() == "li") {
115
- if ($(this).find('.object_link a').length === 0) {
116
- $(this).children('a.toggle').click();
117
- return false;
118
- }
119
- var toggle = $(this).children('a.toggle');
120
- if (toggle.size() > 0 && evt.pageX < toggle.offset().left) {
121
- toggle.click();
122
- return false;
123
- }
124
- }
125
- if (clicked) clicked.removeClass('clicked');
126
- var win;
127
- try {
128
- win = window.top.frames.main ? window.top.frames.main : window.parent;
129
- } catch (e) { win = window.parent; }
130
- if (this.tagName.toLowerCase() == "a") {
131
- clicked = $(this).parents('li').addClass('clicked');
132
- win.location = this.href;
133
- }
134
- else {
135
- clicked = $(this).addClass('clicked');
136
- win.location = $(this).find('a:last').attr('href');
137
- }
138
- return false;
139
- });
140
- }
141
-
142
- function collapse() {
143
- if (!$('#full_list').hasClass('class')) return;
144
- $('#full_list.class a.toggle').click(function() {
145
- $(this).parent().toggleClass('collapsed').next().toggleClass('collapsed');
146
- highlight();
147
- return false;
148
- });
149
- $('#full_list.class ul').each(function() {
150
- $(this).addClass('collapsed').prev().addClass('collapsed');
151
- });
152
- $('#full_list.class').children().removeClass('collapsed');
153
- highlight();
154
- }
155
-
156
- function highlight(no_padding) {
157
- var n = 1;
158
- $('#full_list li:visible').each(function() {
159
- var next = n == 1 ? 2 : 1;
160
- $(this).removeClass("r" + next).addClass("r" + n);
161
- if (!no_padding && $('#full_list').hasClass('class')) {
162
- $(this).css('padding-left', (10 + $(this).parents('ul').size() * 15) + 'px');
163
- }
164
- n = next;
165
- });
166
- }
167
-
168
- function escapeShortcut() {
169
- $(document).keydown(function(evt) {
170
- if (evt.which == 27) {
171
- $('#search_frame', window.top.document).slideUp(100);
172
- $('#search a', window.top.document).removeClass('active inactive');
173
- $(window.top).focus();
174
- }
175
- });
176
- }
177
-
178
- $(escapeShortcut);
179
- $(fullListSearch);
180
- $(linkList);
181
- $(collapse);