ruby-amt 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/AUTHORS +1 -0
- data/COPYING +15 -0
- data/ChangeLog +392 -0
- data/GPL +674 -0
- data/Rakefile +292 -0
- data/VERSION +1 -0
- data/doc/default.css +211 -0
- data/doc/default.template +78 -0
- data/doc/documentation.page +40 -0
- data/doc/img/bg.jpg +0 -0
- data/doc/img/image.jpg +0 -0
- data/doc/img/line.jpg +0 -0
- data/doc/img/shadow.jpg +0 -0
- data/doc/index.page +61 -0
- data/doc/installation.page +115 -0
- data/doc/news.page +25 -0
- data/doc/news/release_0_1_0.page +16 -0
- data/doc/virtual +2 -0
- data/lib/amt/pt_status.rb +59 -0
- data/lib/amt/service.rb +16 -0
- data/lib/amt/service/basic.rb +159 -0
- data/lib/amt/service/hardware_asset.rb +83 -0
- data/lib/amt/service/hardware_asset/amt_information_table.rb +49 -0
- data/lib/amt/service/hardware_asset/asset.rb +118 -0
- data/lib/amt/service/hardware_asset/baseboard.rb +31 -0
- data/lib/amt/service/hardware_asset/bios.rb +65 -0
- data/lib/amt/service/hardware_asset/computer_system.rb +30 -0
- data/lib/amt/service/hardware_asset/fru.rb +37 -0
- data/lib/amt/service/hardware_asset/media_device.rb +63 -0
- data/lib/amt/service/hardware_asset/memory_module.rb +91 -0
- data/lib/amt/service/hardware_asset/portable_battery.rb +80 -0
- data/lib/amt/service/hardware_asset/processor.rb +123 -0
- data/lib/amt/service/hardware_asset/vpro_verification_table.rb +120 -0
- data/lib/amt/service/network_administration.rb +181 -0
- data/lib/amt/service/network_administration/structures.rb +29 -0
- data/lib/amt/service/remote_control.rb +73 -0
- data/lib/amt/service/remote_control/structures.rb +120 -0
- data/lib/amt/service/security_administration.rb +430 -0
- data/lib/amt/service/security_administration/structures.rb +117 -0
- data/lib/amt/system.rb +134 -0
- data/lib/amt/utility.rb +33 -0
- data/lib/amt/utility/bit_struct.rb +164 -0
- data/lib/amt/utility/enum.rb +119 -0
- data/lib/amt/version.rb +8 -0
- data/setup.rb +1585 -0
- metadata +125 -0
data/Rakefile
ADDED
@@ -0,0 +1,292 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
# load all optional developer libraries
|
4
|
+
begin
|
5
|
+
require 'rubygems'
|
6
|
+
require 'rake/gempackagetask'
|
7
|
+
rescue LoadError
|
8
|
+
end
|
9
|
+
|
10
|
+
begin
|
11
|
+
require 'webgen/webgentask'
|
12
|
+
require 'webgen/page'
|
13
|
+
rescue LoadError
|
14
|
+
end
|
15
|
+
|
16
|
+
require 'rdoc/task'
|
17
|
+
require 'rdoc/rdoc'
|
18
|
+
|
19
|
+
class RDoc::RDoc
|
20
|
+
|
21
|
+
alias :old_parse_files :parse_files
|
22
|
+
|
23
|
+
def parse_files(options)
|
24
|
+
file_info = old_parse_files(options)
|
25
|
+
require 'amt/service'
|
26
|
+
require 'amt/utility'
|
27
|
+
|
28
|
+
# Add documentation to AMT::Utility::Enum classes
|
29
|
+
RDoc::TopLevel.all_classes_and_modules.select do |tl|
|
30
|
+
use_it = false
|
31
|
+
while !use_it && !tl.module? && (tl = tl.superclass) && tl.kind_of?(RDoc::NormalClass) && tl.full_name != 'Object'
|
32
|
+
use_it = (tl.full_name == 'AMT::Utility::Enum')
|
33
|
+
end
|
34
|
+
use_it
|
35
|
+
end.each do |tl|
|
36
|
+
klass = tl.full_name.split(/::/).inject(Object){ |mod, name| mod.const_get(name) }
|
37
|
+
docs = "<p>Available enumeration values:</p>\n<ul>\n"
|
38
|
+
klass.values.sort {|a,b| a.value <=> b.value }.each do |val|
|
39
|
+
docs += "<li>"
|
40
|
+
docs += val.value.to_s
|
41
|
+
docs += " (#{val.name.to_s})" if val.name && val.name.to_s != val.value.to_s && val.name.to_s != val.description.to_s
|
42
|
+
docs += ": #{val.description}" if val.description && val.description != val.value.to_s
|
43
|
+
docs += "</li>"
|
44
|
+
end
|
45
|
+
docs += "</ul>\n"
|
46
|
+
tl.comment += docs.gsub(/^/, '# ')
|
47
|
+
end
|
48
|
+
|
49
|
+
# Add documentation to AMT::Utility::BitStruct classes
|
50
|
+
RDoc::TopLevel.all_classes_and_modules.select do |tl|
|
51
|
+
use_it = false
|
52
|
+
while !use_it && !tl.module? && (tl = tl.superclass) && tl.kind_of?(RDoc::NormalClass) && tl.full_name != 'Object'
|
53
|
+
use_it = (tl.full_name == 'AMT::Utility::BitStruct')
|
54
|
+
end
|
55
|
+
use_it
|
56
|
+
end.each do |tl|
|
57
|
+
klass = tl.full_name.split(/::/).inject(Object){ |mod, name| mod.const_get(name) }
|
58
|
+
klass.fields[:boolean].each do |name, desc|
|
59
|
+
meth = RDoc::AnyMethod.new("", "#{name}?")
|
60
|
+
meth.comment = "Getter for boolean field <i>#{name}</i>\n\n#{desc}"
|
61
|
+
tl.add_method(meth)
|
62
|
+
meth = RDoc::AnyMethod.new('', "#{name}!")
|
63
|
+
meth.comment = "Setter for boolean field <i>#{name}</i>\n\n#{desc}"
|
64
|
+
tl.add_method(meth)
|
65
|
+
end
|
66
|
+
klass.fields[:unsigned].each do |name, desc|
|
67
|
+
attr = RDoc::Attr.new("", name.to_s, 'RW', desc)
|
68
|
+
tl.add_attribute(attr)
|
69
|
+
end
|
70
|
+
klass.fields[:enum].each do |name, values, desc|
|
71
|
+
docs = desc + "\n\nAvailable enumeration values:\n"
|
72
|
+
values.sort.each {|k,v| docs += "[<tt>#{k}</tt>] #{v}\n"}
|
73
|
+
attr = RDoc::Attr.new("", name.to_s, 'RW', docs)
|
74
|
+
tl.add_attribute(attr)
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
file_info
|
79
|
+
end
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
|
84
|
+
begin
|
85
|
+
require 'rubyforge'
|
86
|
+
rescue LoadError
|
87
|
+
end
|
88
|
+
|
89
|
+
begin
|
90
|
+
require 'rcov/rcovtask'
|
91
|
+
rescue LoadError
|
92
|
+
end
|
93
|
+
|
94
|
+
require 'fileutils'
|
95
|
+
require 'rake/clean'
|
96
|
+
require 'rake/testtask'
|
97
|
+
require 'rake/packagetask'
|
98
|
+
|
99
|
+
$:.unshift('lib')
|
100
|
+
require 'amt/version'
|
101
|
+
|
102
|
+
# End user tasks ################################################################
|
103
|
+
|
104
|
+
task :default => :test
|
105
|
+
|
106
|
+
desc "Install using setup.rb"
|
107
|
+
task :install do
|
108
|
+
ruby "setup.rb config"
|
109
|
+
ruby "setup.rb setup"
|
110
|
+
ruby "setup.rb install"
|
111
|
+
end
|
112
|
+
|
113
|
+
task :clobber do
|
114
|
+
ruby "setup.rb clean"
|
115
|
+
end
|
116
|
+
|
117
|
+
desc "Build the whole user documentation"
|
118
|
+
task :doc => :rdoc
|
119
|
+
|
120
|
+
if defined? Webgen
|
121
|
+
desc "Generate the HTML documentation"
|
122
|
+
Webgen::WebgenTask.new('htmldoc') do |site|
|
123
|
+
site.clobber_outdir = true
|
124
|
+
site.config_block = lambda do |config|
|
125
|
+
config['sources'] = [['/', "Webgen::Source::FileSystem", 'doc']]
|
126
|
+
config['output'] = ['Webgen::Output::FileSystem', 'htmldoc']
|
127
|
+
end
|
128
|
+
end
|
129
|
+
task :doc => :htmldoc
|
130
|
+
end
|
131
|
+
|
132
|
+
rd = RDoc::Task.new do |rdoc|
|
133
|
+
rdoc.rdoc_dir = 'htmldoc/rdoc'
|
134
|
+
rdoc.title = 'ruby-amt'
|
135
|
+
rdoc.main = 'lib/amt/system.rb'
|
136
|
+
rdoc.options << '--line-numbers' << '--all'
|
137
|
+
rdoc.rdoc_files.include('lib')
|
138
|
+
end
|
139
|
+
|
140
|
+
tt = Rake::TestTask.new do |test|
|
141
|
+
test.libs << 'test'
|
142
|
+
end
|
143
|
+
|
144
|
+
# Release tasks and development tasks ############################################
|
145
|
+
|
146
|
+
namespace :dev do
|
147
|
+
|
148
|
+
SUMMARY = 'ruby-amt is a library for controlling Intel AMT devies via SOAP'
|
149
|
+
DESCRIPTION = <<EOF
|
150
|
+
Intel AMT (Active Management Technology) is available on every computer having
|
151
|
+
the Intel vPro moniker and allows one to get and set various information about
|
152
|
+
the computer as well as to control it remotely.
|
153
|
+
EOF
|
154
|
+
|
155
|
+
begin
|
156
|
+
REL_PAGE = Webgen::Page.from_data(File.read('doc/news/release_' + AMT::VERSION.split('.').join('_') + '.page'))
|
157
|
+
rescue
|
158
|
+
puts 'NO RELEASE NOTES/CHANGES FILE'
|
159
|
+
end
|
160
|
+
|
161
|
+
PKG_FILES = FileList.new([
|
162
|
+
'Rakefile',
|
163
|
+
'setup.rb',
|
164
|
+
'VERSION', 'AUTHORS', 'ChangeLog',
|
165
|
+
'COPYING', 'GPL',
|
166
|
+
'doc/**/*',
|
167
|
+
'lib/**/*.rb',
|
168
|
+
'test/test_*.rb'
|
169
|
+
]) do |fl|
|
170
|
+
fl.exclude('**/.gitignore')
|
171
|
+
end
|
172
|
+
|
173
|
+
CLOBBER << "VERSION"
|
174
|
+
file 'VERSION' do
|
175
|
+
puts "Generating VERSION file"
|
176
|
+
File.open('VERSION', 'w+') {|file| file.write(AMT::VERSION + "\n")}
|
177
|
+
end
|
178
|
+
|
179
|
+
CLOBBER << 'ChangeLog'
|
180
|
+
file 'ChangeLog' do
|
181
|
+
puts "Generating ChangeLog file"
|
182
|
+
`git log --name-only > ChangeLog`
|
183
|
+
end
|
184
|
+
|
185
|
+
Rake::PackageTask.new('ruby-amt', AMT::VERSION) do |pkg|
|
186
|
+
pkg.need_tar = true
|
187
|
+
pkg.need_zip = true
|
188
|
+
pkg.package_files = PKG_FILES
|
189
|
+
end
|
190
|
+
|
191
|
+
if defined? Gem
|
192
|
+
spec = Gem::Specification.new do |s|
|
193
|
+
|
194
|
+
#### Basic information
|
195
|
+
s.name = 'ruby-amt'
|
196
|
+
s.version = AMT::VERSION
|
197
|
+
s.summary = SUMMARY
|
198
|
+
s.description = DESCRIPTION
|
199
|
+
|
200
|
+
#### Dependencies, requirements and files
|
201
|
+
|
202
|
+
s.files = PKG_FILES.to_a
|
203
|
+
s.add_dependency('handsoap', '>= 1.1.1')
|
204
|
+
s.add_dependency('httpclient', '>= 2.1.5.2')
|
205
|
+
s.require_path = 'lib'
|
206
|
+
|
207
|
+
#### Documentation
|
208
|
+
|
209
|
+
s.has_rdoc = true
|
210
|
+
s.rdoc_options = ['--line-numbers', '--all', '-m', 'lib/amt/system.rb']
|
211
|
+
|
212
|
+
#### Author and project details
|
213
|
+
|
214
|
+
s.author = 'Thomas Leitner'
|
215
|
+
s.email = 't_leitner@gmx.at'
|
216
|
+
s.homepage = "http://ruby-amt.rubyforge.org"
|
217
|
+
s.rubyforge_project = 'ruby-amt'
|
218
|
+
end
|
219
|
+
|
220
|
+
Rake::GemPackageTask.new(spec) do |pkg|
|
221
|
+
pkg.need_zip = true
|
222
|
+
pkg.need_tar = true
|
223
|
+
end
|
224
|
+
|
225
|
+
end
|
226
|
+
|
227
|
+
desc 'Release ruby-amt version ' + AMT::VERSION
|
228
|
+
task :release => [:clobber, :package, :publish_files, :publish_doc, :post_news]
|
229
|
+
|
230
|
+
if defined? RubyForge
|
231
|
+
desc "Upload the release to Rubyforge"
|
232
|
+
task :publish_files => [:package] do
|
233
|
+
print 'Uploading files to Rubyforge...'
|
234
|
+
$stdout.flush
|
235
|
+
|
236
|
+
rf = RubyForge.new
|
237
|
+
rf.configure
|
238
|
+
rf.login
|
239
|
+
|
240
|
+
rf.userconfig["release_notes"] = REL_PAGE.blocks['content'].content
|
241
|
+
rf.userconfig["preformatted"] = false
|
242
|
+
|
243
|
+
files = %w[.gem .tgz .zip].collect {|ext| "pkg/ruby-amt-#{AMT::VERSION}" + ext}
|
244
|
+
|
245
|
+
rf.add_release('ruby-amt', 'ruby-amt', AMT::VERSION, *files)
|
246
|
+
puts 'done'
|
247
|
+
end
|
248
|
+
|
249
|
+
desc 'Post announcement to rubyforge.'
|
250
|
+
task :post_news do
|
251
|
+
print 'Posting announcement to Rubyforge ...'
|
252
|
+
$stdout.flush
|
253
|
+
rf = RubyForge.new
|
254
|
+
rf.configure
|
255
|
+
rf.login
|
256
|
+
|
257
|
+
content = REL_PAGE.blocks['content'].content
|
258
|
+
content += "\n\n\nAbout ruby-amt\n\n#{AMT::SUMMARY}\n\n#{AMT::DESCRIPTION}"
|
259
|
+
rf.post_news('ruby-amt', "ruby-amt #{AMT::VERSION} released", content)
|
260
|
+
puts "done"
|
261
|
+
end
|
262
|
+
end
|
263
|
+
|
264
|
+
desc "Upload the ruby-amt website to Rubyforge"
|
265
|
+
task :publish_doc => ['rdoc', 'htmldoc'] do
|
266
|
+
sh "rsync -avc --delete --exclude 'wiki' --exclude 'robots.txt' htmldoc/ gettalong@rubyforge.org:/var/www/gforge-projects/ruby-amt/"
|
267
|
+
end
|
268
|
+
|
269
|
+
desc "Run the tests one by one to check for missing deps"
|
270
|
+
task :test_isolated do
|
271
|
+
files = Dir['test/test_*']
|
272
|
+
puts "Checking #{files.length} tests"
|
273
|
+
failed = files.select do |file|
|
274
|
+
okay = system("ruby -Ilib:test #{file} -vs &> /dev/null")
|
275
|
+
print(okay ? '.' : 'E')
|
276
|
+
!okay
|
277
|
+
end
|
278
|
+
puts
|
279
|
+
failed.each {|file| puts "Problem with" + file.rjust(40) }
|
280
|
+
end
|
281
|
+
|
282
|
+
if defined? Rcov
|
283
|
+
Rcov::RcovTask.new do |rcov|
|
284
|
+
rcov.libs << 'test'
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
end
|
289
|
+
|
290
|
+
task :clobber => ['dev:clobber']
|
291
|
+
|
292
|
+
# Helper methods ###################################################################
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.1.0
|
data/doc/default.css
ADDED
@@ -0,0 +1,211 @@
|
|
1
|
+
* { margin:0; padding:0; }
|
2
|
+
body, div, span, p, a, img, ul, ol, li, table, th, tr, td, form, fieldset, legend, dl, dt, dd, blockquote, applet, object { border:0; }
|
3
|
+
body {
|
4
|
+
padding: 0;
|
5
|
+
background: #fff url("img/bg.jpg") repeat-x;
|
6
|
+
font: 0.8em/1.5 "arial",sans-serif;
|
7
|
+
color: #354146;
|
8
|
+
text-align: center;
|
9
|
+
}
|
10
|
+
|
11
|
+
/* links --------------------------------------------------------------- */
|
12
|
+
a {color:#1666a3;}
|
13
|
+
a:link {color:#1666a3;}
|
14
|
+
a:hover {color:#0b4775;}
|
15
|
+
|
16
|
+
/* header tags --------------------------------------------------------------------- */
|
17
|
+
h1, h2, h3, h4, h5, h6 { margin:15px 0 10px 0; }
|
18
|
+
h1 { font-size:200%; font-family: Georgia;}
|
19
|
+
h1#logo a{color: #ced1d2; text-decoration: none; display: block;padding: 18px 0 17px; font-weight: normal;}
|
20
|
+
h1#logo a:hover{color: #fff;}
|
21
|
+
h1#logo span.slogan {font-size: 60%; padding-left: 1.5em;}
|
22
|
+
h2 { font-size:130%; color: #354146;font-weight: bold; padding: 0; }
|
23
|
+
h3 { font-size:120%; }
|
24
|
+
h4 { font-size:120%; }
|
25
|
+
h5 { font-size:100%; }
|
26
|
+
|
27
|
+
/* layout ---------------------------------------------------------------------- */
|
28
|
+
#layout {
|
29
|
+
text-align:left;
|
30
|
+
}
|
31
|
+
#container {
|
32
|
+
clear: both;
|
33
|
+
}
|
34
|
+
#intro{
|
35
|
+
background: #e6e8e9; height: auto;
|
36
|
+
}
|
37
|
+
#intro-in{
|
38
|
+
width:891px;
|
39
|
+
margin: 0 auto;
|
40
|
+
padding: 20px 0;
|
41
|
+
}
|
42
|
+
|
43
|
+
#header {
|
44
|
+
width:891px;
|
45
|
+
margin:0 auto;
|
46
|
+
}
|
47
|
+
|
48
|
+
|
49
|
+
/* horizontal navigation --------------------------------------------------- */
|
50
|
+
#nav {
|
51
|
+
width:891px;
|
52
|
+
margin:0 auto;
|
53
|
+
}
|
54
|
+
#nav ul {
|
55
|
+
margin:0;
|
56
|
+
padding:0;
|
57
|
+
list-style:none;
|
58
|
+
height: 35px;
|
59
|
+
}
|
60
|
+
#nav ul li {
|
61
|
+
float:left;
|
62
|
+
display:block;
|
63
|
+
margin:0;
|
64
|
+
padding:0;}
|
65
|
+
#nav ul li a, #nav ul li span {
|
66
|
+
display: block;
|
67
|
+
float: left;
|
68
|
+
font-size: 90%;
|
69
|
+
color: #fff;
|
70
|
+
text-decoration: none;
|
71
|
+
padding: 12px 20px 8px;
|
72
|
+
text-align: center;
|
73
|
+
}
|
74
|
+
#nav ul li a:hover, #nav ul li span:hover {
|
75
|
+
color: #ced1d2;
|
76
|
+
text-decoration: underline;
|
77
|
+
}
|
78
|
+
#nav ul li#active a, #nav ul li.webgen-menu-item-selected span {
|
79
|
+
color: #101517;
|
80
|
+
border: 1px solid #fff;
|
81
|
+
border-bottom:1px solid #e6e8e9;
|
82
|
+
background:#e6e8e9; text-decoration:none;}
|
83
|
+
|
84
|
+
/* main content ---------------------------------------------------------------- */
|
85
|
+
|
86
|
+
.content {
|
87
|
+
padding: 0 0 0 0;
|
88
|
+
z-index: 10;
|
89
|
+
width:891px;
|
90
|
+
margin:0 auto;
|
91
|
+
}
|
92
|
+
.content .in{
|
93
|
+
padding: 20px 0 30px;
|
94
|
+
}
|
95
|
+
p.intro{
|
96
|
+
background: url("img/line.jpg");
|
97
|
+
line-height: 23px;
|
98
|
+
margin:0 0 0;
|
99
|
+
}
|
100
|
+
.shadow{
|
101
|
+
border-top: 1px solid #dddddd;
|
102
|
+
padding: 10px 0;
|
103
|
+
background: url("img/shadow.jpg") no-repeat;
|
104
|
+
}
|
105
|
+
|
106
|
+
img.thumb{padding: 3px; background: #fff; border: 1px solid #d1d1d1;}
|
107
|
+
|
108
|
+
.columns {list-style: none;margin:10px 0 0 0;padding:0; font-size: 90%;}
|
109
|
+
.columns li{float: left; width: 32%;}
|
110
|
+
.columns li.col2{border-left: 1px solid #d7d7d7;border-right: 1px solid #d7d7d7;}
|
111
|
+
.columns li h3{padding: 0 10px;color: #2e4650; margin: 0 0 5px;}
|
112
|
+
.columns li.col2 h3{padding-left: 20px;}
|
113
|
+
.columns li.col3 h3{padding-left: 20px;}
|
114
|
+
.columns li p{line-height: 22px;padding: 0 20px 0 10px; margin: 0; color: #3f4345;}
|
115
|
+
.columns li.col2 p{padding: 0 20px 0 20px;}
|
116
|
+
.columns li.col3 p{padding: 0 10px 0 20px;}
|
117
|
+
.columns li a.more{display: block;color: #1666a3;padding: 5px 0;}
|
118
|
+
.columns li a.more:hover{color: #0b4775; text-decoration: none;}
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
/* footer ----------------------------------------------------------------- */
|
123
|
+
#footer {
|
124
|
+
width:891px;
|
125
|
+
margin:0 auto;
|
126
|
+
clear:both;
|
127
|
+
font-size: 85%;
|
128
|
+
padding-bottom: 70px;
|
129
|
+
color: #898989;
|
130
|
+
}
|
131
|
+
#footer a{color: #898989;}
|
132
|
+
#footer a:hover{color: #666666; text-decoration: none;}
|
133
|
+
#footer .f-left, #footer .f-right { padding: 0 10px; }
|
134
|
+
|
135
|
+
|
136
|
+
|
137
|
+
|
138
|
+
/* paragraphs -------------------------------------------------------------------- */
|
139
|
+
p { margin:15px 0; }
|
140
|
+
|
141
|
+
/* tables --------------------------------------------------------------------- */
|
142
|
+
table { margin:15px 0; border-collapse:collapse; border-spacing:0; font-size:100%; }
|
143
|
+
th { text-align:center; font-weight:bold; }
|
144
|
+
th, td { padding:3px 5px; }
|
145
|
+
|
146
|
+
/* lists --------------------------------------------------------------------- */
|
147
|
+
ul, ol { display:block; margin:15px 0 15px 40px; }
|
148
|
+
ul ul, ul ul ul, ol ol, ol ol ol { margin:0; margin-left:20px; }
|
149
|
+
ol { list-style-type:decimal; }
|
150
|
+
ol ol { list-style-type:upper-alpha; }
|
151
|
+
ol ol ol {list-style-type:lower-alpha; }
|
152
|
+
li { display:list-item; }
|
153
|
+
ul li a { text-decoration:underline; }
|
154
|
+
|
155
|
+
/* definitions -------------------------------------------------------------------- */
|
156
|
+
dl { margin:15px 0; }
|
157
|
+
dt { font-weight:bold; }
|
158
|
+
dd { margin-left:30px; }
|
159
|
+
|
160
|
+
/* other HTML tags --------------------------------------------------------------------- */
|
161
|
+
fieldset { margin:15px 0; padding:10px; border:1px solid #CCC; }
|
162
|
+
legend { margin-left:10px; font-size:100%; font-weight:bold; color:#000; }
|
163
|
+
abbr, acronym, .help { border-bottom:1px dotted #CCC; cursor:help; }
|
164
|
+
blockquote { margin:15px 20px; font-style:italic; }
|
165
|
+
del, .del { text-decoration:line-through; }
|
166
|
+
strong, .strong { font-weight:bold; }
|
167
|
+
cite, em, q, var { font-style:italic; }
|
168
|
+
code, kbd, samp {font-family:monospace; font-size:110%; }
|
169
|
+
hr { display:block; height:1px; margin:10px 0; padding:0; border:0 solid #CCC; background:#CCC; color:#CCC;}
|
170
|
+
.f-left {float:left;}
|
171
|
+
.f-right {float:right;}
|
172
|
+
.a-left, tr.a-left td {text-align:left;}
|
173
|
+
.a-center, tr.a-center td {text-align:center;}
|
174
|
+
.a-right, tr.a-right td {text-align:right;}
|
175
|
+
.a-justify {text-align:justify;}
|
176
|
+
.va-top {vertical-align:top;}
|
177
|
+
.va-middle {vertical-align:middle;}
|
178
|
+
.va-bottom {vertical-align:bottom;}
|
179
|
+
.clear { clear:both; }
|
180
|
+
.box { min-height:1px; }
|
181
|
+
.box:after { display:block; visibility:hidden; clear:both; line-height:0; font-size:0; content:"."; }
|
182
|
+
.noscreen { display:none; }
|
183
|
+
.mleft10 { margin-left: 10px; }
|
184
|
+
.mright10 { margin-right: 10px; }
|
185
|
+
.mtop10 { margin-top: 10px; }
|
186
|
+
.mbottom10 { margin-bottom: 10px; }
|
187
|
+
|
188
|
+
|
189
|
+
|
190
|
+
input.small{
|
191
|
+
width: 50px;
|
192
|
+
}
|
193
|
+
input.normal{
|
194
|
+
width: 146px;
|
195
|
+
}
|
196
|
+
.bigger {font-size:115%;}
|
197
|
+
.smaller {font-size:85%;}
|
198
|
+
|
199
|
+
.high {color:#00F;}
|
200
|
+
.nonhigh {color:#777;}
|
201
|
+
|
202
|
+
.foto{ display: block; border: 3px solid #ddd;}
|
203
|
+
|
204
|
+
|
205
|
+
/* added definitions ------------------------------------------------------------ */
|
206
|
+
.news-item + .news-item {
|
207
|
+
border-top: 1px solid #dddddd;
|
208
|
+
}
|
209
|
+
.news-date {
|
210
|
+
margin-top: 5px;
|
211
|
+
}
|