ramaze 0.1.2 → 0.1.3
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 +1 -1
- data/doc/AUTHORS +2 -0
- data/doc/CHANGELOG +173 -0
- data/doc/changes.txt +4184 -0
- data/doc/changes.xml +4186 -0
- data/doc/meta/announcement.txt +22 -25
- data/doc/meta/internals.txt +146 -9
- data/examples/blog/template/index.xhtml +5 -2
- data/examples/fcgi.rb +13 -0
- data/examples/wiktacular/main.rb +8 -0
- data/examples/wiktacular/mkd/link/2007-07-20_19-45-51.mkd +1 -0
- data/examples/wiktacular/mkd/link/current.mkd +1 -0
- data/examples/wiktacular/mkd/main/2007-07-20_16-31-33.mkd +1 -0
- data/examples/wiktacular/mkd/main/2007-07-20_19-21-12.mkd +1 -0
- data/examples/wiktacular/mkd/main/2007-07-20_19-23-10.mkd +2 -0
- data/examples/wiktacular/mkd/main/2007-07-20_19-45-07.mkd +2 -0
- data/examples/wiktacular/mkd/main/current.mkd +2 -0
- data/examples/wiktacular/mkd/markdown/current.mkd +3 -0
- data/examples/wiktacular/mkd/testing/2007-07-20_16-43-46.mkd +2 -0
- data/examples/wiktacular/mkd/testing/2007-07-20_19-43-50.mkd +3 -0
- data/examples/wiktacular/mkd/testing/2007-07-21_18-46-01.mkd +11 -0
- data/examples/wiktacular/mkd/testing/2007-07-21_18-46-32.mkd +13 -0
- data/examples/wiktacular/mkd/testing/2007-07-21_18-47-08.mkd +17 -0
- data/examples/wiktacular/mkd/testing/2007-07-21_18-47-54.mkd +17 -0
- data/examples/wiktacular/mkd/testing/current.mkd +17 -0
- data/examples/wiktacular/public/favicon.ico +0 -0
- data/examples/wiktacular/public/screen.css +72 -0
- data/examples/wiktacular/src/controller.rb +44 -0
- data/examples/wiktacular/src/model.rb +92 -0
- data/examples/wiktacular/src/page.rb +66 -0
- data/examples/wiktacular/template/edit.xhtml +7 -0
- data/examples/wiktacular/template/index.xhtml +11 -0
- data/examples/wiktacular/template/new.xhtml +7 -0
- data/lib/proto/main.rb +2 -0
- data/lib/proto/public/error.zmr +3 -0
- data/lib/proto/public/js/jquery.js +1755 -1334
- data/lib/proto/template/index.xhtml +2 -2
- data/lib/ramaze.rb +8 -3
- data/lib/ramaze/action/render.rb +11 -0
- data/lib/ramaze/adapter/base.rb +11 -7
- data/lib/ramaze/cache.rb +25 -10
- data/lib/ramaze/cache/memcached.rb +16 -1
- data/lib/ramaze/cache/yaml_store.rb +10 -0
- data/lib/ramaze/controller.rb +12 -2
- data/lib/ramaze/controller/error.rb +9 -3
- data/lib/ramaze/controller/resolve.rb +20 -18
- data/lib/ramaze/dispatcher.rb +13 -4
- data/lib/ramaze/dispatcher/action.rb +7 -3
- data/lib/ramaze/dispatcher/error.rb +24 -2
- data/lib/ramaze/dispatcher/file.rb +12 -6
- data/lib/ramaze/global.rb +0 -3
- data/lib/ramaze/global/dsl.rb +9 -0
- data/lib/ramaze/global/globalstruct.rb +7 -1
- data/lib/ramaze/helper/aspect.rb +4 -2
- data/lib/ramaze/helper/cgi.rb +2 -2
- data/lib/ramaze/helper/file.rb +3 -0
- data/lib/ramaze/helper/link.rb +20 -0
- data/lib/ramaze/helper/markaby.rb +3 -0
- data/lib/ramaze/helper/pager.rb +10 -17
- data/lib/ramaze/helper/partial.rb +9 -3
- data/lib/ramaze/inform/analogger.rb +14 -0
- data/lib/ramaze/inform/growl.rb +7 -0
- data/lib/ramaze/inform/hub.rb +9 -0
- data/lib/ramaze/inform/informer.rb +9 -3
- data/lib/ramaze/inform/informing.rb +9 -3
- data/lib/ramaze/inform/knotify.rb +5 -1
- data/lib/ramaze/inform/syslog.rb +3 -0
- data/lib/ramaze/inform/xosd.rb +12 -0
- data/lib/ramaze/template.rb +3 -0
- data/lib/ramaze/template/amrita2.rb +2 -0
- data/lib/ramaze/template/erubis.rb +1 -0
- data/lib/ramaze/template/ezamar.rb +1 -0
- data/lib/ramaze/template/ezamar/element.rb +17 -11
- data/lib/ramaze/template/ezamar/engine.rb +5 -0
- data/lib/ramaze/template/ezamar/render_partial.rb +4 -2
- data/lib/ramaze/template/haml.rb +4 -0
- data/lib/ramaze/template/liquid.rb +4 -0
- data/lib/ramaze/template/markaby.rb +4 -0
- data/lib/ramaze/template/remarkably.rb +4 -0
- data/lib/ramaze/tool.rb +10 -0
- data/lib/ramaze/tool/localize.rb +1 -1
- data/lib/ramaze/trinity/session.rb +8 -1
- data/lib/ramaze/version.rb +1 -1
- data/rake_tasks/maintaince.rake +2 -2
- data/spec/ramaze/action/basics.rb +1 -1
- data/spec/ramaze/cache.rb +11 -0
- data/spec/ramaze/controller.rb +0 -14
- data/spec/ramaze/dispatcher/file.rb +5 -5
- data/spec/ramaze/dispatcher/public/favicon.ico +0 -0
- data/spec/ramaze/dispatcher/public/test_download.css +141 -0
- data/spec/ramaze/error.rb +21 -7
- data/spec/ramaze/helper/link.rb +15 -0
- data/spec/ramaze/helper/pager.rb +26 -3
- data/spec/ramaze/helper/partial.rb +2 -2
- metadata +43 -4
- data/doc/COPYING.ja +0 -51
|
@@ -15,9 +15,15 @@ module Ramaze
|
|
|
15
15
|
# end
|
|
16
16
|
|
|
17
17
|
module Informing
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
18
|
+
|
|
19
|
+
# Takes the tag (:warn|:debug|:error|:info) and the name of a method to be
|
|
20
|
+
# called upon elements of msgs that don't respond to :to_str
|
|
21
|
+
# Goes on and sends the tag and transformed messages each to the #inform method.
|
|
22
|
+
# If you include this module you have to define #inform or it will raise.
|
|
23
|
+
|
|
24
|
+
def tag_inform(tag, meth, *msgs)
|
|
25
|
+
msgs.each do |msg|
|
|
26
|
+
string = (msg.respond_to?(:to_str) ? msg : msg.send(meth))
|
|
21
27
|
inform(tag, string)
|
|
22
28
|
end
|
|
23
29
|
end
|
|
@@ -3,13 +3,17 @@
|
|
|
3
3
|
|
|
4
4
|
module Ramaze
|
|
5
5
|
|
|
6
|
+
# Informer for the Knotify notfication system used on KDE.
|
|
7
|
+
# Doesn't need any special libraries.
|
|
8
|
+
|
|
6
9
|
class Knotify
|
|
7
10
|
include Informing
|
|
8
11
|
|
|
9
12
|
trait :present => 16
|
|
10
13
|
|
|
11
|
-
# Please see for more information:
|
|
14
|
+
# Please see for more information on the API used here:
|
|
12
15
|
# http://lukeplant.me.uk/articles.php?id=3
|
|
16
|
+
|
|
13
17
|
def inform(tag, *messages)
|
|
14
18
|
present = class_trait[:present]
|
|
15
19
|
tag = tag.to_s.capitalize
|
data/lib/ramaze/inform/syslog.rb
CHANGED
data/lib/ramaze/inform/xosd.rb
CHANGED
|
@@ -6,6 +6,11 @@ require 'thread'
|
|
|
6
6
|
|
|
7
7
|
module Ramaze
|
|
8
8
|
|
|
9
|
+
# Informer for the XOSD notification system for X11.
|
|
10
|
+
#
|
|
11
|
+
# You can install the ruby-bindings with:
|
|
12
|
+
# gem install xosd.
|
|
13
|
+
|
|
9
14
|
class Xosd < ::Xosd
|
|
10
15
|
attr_accessor :options
|
|
11
16
|
|
|
@@ -36,6 +41,11 @@ module Ramaze
|
|
|
36
41
|
# Here new messages are pushed to eventually displaying them.
|
|
37
42
|
QUEUE = Queue.new
|
|
38
43
|
|
|
44
|
+
# Create a new instance, valid options are in DEFAULT.
|
|
45
|
+
# In the background a new thread will be running that checks the QUEUE
|
|
46
|
+
# and processes all messages that are being sent to it.
|
|
47
|
+
# This is done to make output nicer and readable.
|
|
48
|
+
|
|
39
49
|
def initialize(options = {})
|
|
40
50
|
@options = DEFAULT.merge(options)
|
|
41
51
|
|
|
@@ -67,6 +77,8 @@ module Ramaze
|
|
|
67
77
|
end
|
|
68
78
|
end
|
|
69
79
|
|
|
80
|
+
# pushes all messages it gets on the QUEUE for further processing.
|
|
81
|
+
|
|
70
82
|
def inform(tag, *messages)
|
|
71
83
|
messages.each do |message|
|
|
72
84
|
QUEUE << [tag, message]
|
data/lib/ramaze/template.rb
CHANGED
|
@@ -123,7 +123,13 @@ class Ezamar::Element
|
|
|
123
123
|
# <Page foo="true" />
|
|
124
124
|
|
|
125
125
|
def finish_transform(klass, params, content)
|
|
126
|
-
|
|
126
|
+
scope =
|
|
127
|
+
if Ramaze::Action.current
|
|
128
|
+
Ramaze::Action.current.controller
|
|
129
|
+
else
|
|
130
|
+
self.class
|
|
131
|
+
end
|
|
132
|
+
instance = scope.constant(klass).new(content)
|
|
127
133
|
|
|
128
134
|
demunge_passed_variables(params).each do |key, value|
|
|
129
135
|
instance.instance_variable_set("@#{key}", value)
|
|
@@ -147,17 +153,17 @@ class Ezamar::Element
|
|
|
147
153
|
# Just remember, walk like a duck, talk like a duck.
|
|
148
154
|
|
|
149
155
|
def demunge_passed_variables(template)
|
|
150
|
-
template.scan(/\s?(.*?)="(.*?)"/).inject({}) do |hash, (key, value)|
|
|
156
|
+
template.scan(/\s?(.*?)=["'](.*?)["']/).inject({}) do |hash, (key, value)|
|
|
151
157
|
value =
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
158
|
+
case value
|
|
159
|
+
when 'true'
|
|
160
|
+
true
|
|
161
|
+
when 'false'
|
|
162
|
+
false
|
|
163
|
+
else
|
|
164
|
+
Integer(value) rescue Float(value) rescue value
|
|
165
|
+
end
|
|
166
|
+
hash.merge key => value
|
|
161
167
|
end
|
|
162
168
|
end
|
|
163
169
|
end
|
|
@@ -17,6 +17,11 @@ module Ezamar
|
|
|
17
17
|
# This class is responsible for initializing and compiling the template.
|
|
18
18
|
|
|
19
19
|
class Template
|
|
20
|
+
|
|
21
|
+
# Take a template (anything that responds to ::to_str) and options.
|
|
22
|
+
# At the moment the only option used is :file, which is used to tell
|
|
23
|
+
# Kernel::eval how to produce better backtraces.
|
|
24
|
+
|
|
20
25
|
def initialize(template, options = {})
|
|
21
26
|
@template, @options = template, options
|
|
22
27
|
compile
|
|
@@ -2,20 +2,22 @@
|
|
|
2
2
|
# All files in this distribution are subject to the terms of the Ruby license.
|
|
3
3
|
|
|
4
4
|
require 'ramaze/template/ezamar/engine'
|
|
5
|
+
require 'ramaze/helper/partial'
|
|
5
6
|
|
|
6
7
|
module Ezamar
|
|
7
8
|
class RenderPartial
|
|
9
|
+
extend Ramaze::PartialHelper
|
|
8
10
|
|
|
9
11
|
# Renders <render src="/path" [optional="option", ...]> in place.
|
|
10
12
|
#
|
|
11
13
|
# Other options than `src` will be transformed to session parameters for the
|
|
12
14
|
# rendered action to use.
|
|
13
15
|
|
|
14
|
-
def self.transform(template
|
|
16
|
+
def self.transform(template)
|
|
15
17
|
template.gsub!(/<render (.*?) \/>/) do |m|
|
|
16
18
|
args = Hash[*$1.scan(/(\S+)=["'](.*?)["']/).flatten]
|
|
17
19
|
if src = args.delete('src')
|
|
18
|
-
|
|
20
|
+
render_partial(src, args)
|
|
19
21
|
end
|
|
20
22
|
end
|
|
21
23
|
|
data/lib/ramaze/template/haml.rb
CHANGED
|
@@ -5,6 +5,10 @@ require 'haml/engine'
|
|
|
5
5
|
|
|
6
6
|
module Ramaze
|
|
7
7
|
module Template
|
|
8
|
+
|
|
9
|
+
# Is responsible for compiling a template using the Haml templating engine.
|
|
10
|
+
# Can be found at: http://haml.hamptoncatlin.com/
|
|
11
|
+
|
|
8
12
|
class Haml < Template
|
|
9
13
|
|
|
10
14
|
# Custom HAML-options for your controller to be merged.
|
|
@@ -5,6 +5,10 @@ require 'markaby'
|
|
|
5
5
|
|
|
6
6
|
module Ramaze
|
|
7
7
|
module Template
|
|
8
|
+
|
|
9
|
+
# Is responsible for compiling a template using the Markaby templating engine.
|
|
10
|
+
# Can be found at: http://code.whytheluckystiff.net/markaby/
|
|
11
|
+
|
|
8
12
|
class Markaby < Template
|
|
9
13
|
ENGINES[self] = %w[ mab ]
|
|
10
14
|
|
|
@@ -5,6 +5,10 @@ require 'remarkably/engines/html'
|
|
|
5
5
|
|
|
6
6
|
module Ramaze
|
|
7
7
|
module Template
|
|
8
|
+
|
|
9
|
+
# Is responsible for compiling a template using the Remarkably templating engine.
|
|
10
|
+
# Can be found at: http://rubyforge.org/projects/remarkably
|
|
11
|
+
|
|
8
12
|
class Remarkably < Template
|
|
9
13
|
ENGINES[self] = %w[ rem ]
|
|
10
14
|
|
data/lib/ramaze/tool.rb
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
|
|
2
|
+
# All files in this distribution are subject to the terms of the Ruby license.
|
|
3
|
+
|
|
4
|
+
module Ramaze::Tool
|
|
5
|
+
autoload :Create, 'ramaze/tool/create'
|
|
6
|
+
autoload :Localize, 'ramaze/tool/localize'
|
|
7
|
+
autoload :Mime, 'ramaze/tool/mime'
|
|
8
|
+
autoload :Record, 'ramaze/tool/record'
|
|
9
|
+
autoload :Tidy, 'ramaze/tool/tidy'
|
|
10
|
+
end
|
data/lib/ramaze/tool/localize.rb
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
# Copyright (c) 2006 Michael Fellinger m.fellinger@gmail.com
|
|
2
2
|
# All files in this distribution are subject to the terms of the Ruby license.
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
if RUBY_VERSION >= "1.9.0"
|
|
5
|
+
require 'digest/sha1'
|
|
6
|
+
else
|
|
7
|
+
require 'digest/sha2'
|
|
8
|
+
end
|
|
5
9
|
|
|
6
10
|
module Ramaze
|
|
7
11
|
|
|
@@ -11,6 +15,9 @@ module Ramaze
|
|
|
11
15
|
# are stored, about updates.
|
|
12
16
|
|
|
13
17
|
class SessionHash
|
|
18
|
+
|
|
19
|
+
# Sets @hash to an empty Hash
|
|
20
|
+
|
|
14
21
|
def initialize
|
|
15
22
|
@hash = {}
|
|
16
23
|
end
|
data/lib/ramaze/version.rb
CHANGED
data/rake_tasks/maintaince.rake
CHANGED
|
@@ -232,7 +232,7 @@ end
|
|
|
232
232
|
|
|
233
233
|
task 'release' => ['distribute'] do
|
|
234
234
|
sh 'rubyforge login'
|
|
235
|
-
sh
|
|
235
|
+
#sh "rubyforge add_release ramaze ramaze #{VERS} pkg/ramaze-#{VERS}.gem"
|
|
236
236
|
|
|
237
237
|
require 'open-uri'
|
|
238
238
|
require 'hpricot'
|
|
@@ -267,7 +267,7 @@ task 'undocumented-module' do
|
|
|
267
267
|
total, missing = [], []
|
|
268
268
|
until @s.eos?
|
|
269
269
|
unless @s.scan(/^\s*#.*/)
|
|
270
|
-
comment = true if @s.scan(/^=begin
|
|
270
|
+
comment = true if @s.scan(/^=begin[^$]*$/)
|
|
271
271
|
comment = false if comment and @s.scan(/^=end$/)
|
|
272
272
|
|
|
273
273
|
unless comment
|
data/spec/ramaze/cache.rb
CHANGED
|
@@ -60,5 +60,16 @@ caches.each do |cache, name|
|
|
|
60
60
|
@cache[:beh] = :feh
|
|
61
61
|
@cache.values_at(:baz, :beh).should == [:foo, :feh]
|
|
62
62
|
end
|
|
63
|
+
|
|
64
|
+
it "different cache namespaces should not overlap" do
|
|
65
|
+
Ramaze::Cache.add :foo
|
|
66
|
+
Ramaze::Cache.add :bar
|
|
67
|
+
|
|
68
|
+
key = "foobar"
|
|
69
|
+
Ramaze::Cache.foo[key] = 'foo'
|
|
70
|
+
Ramaze::Cache.bar[key] = 'bar'
|
|
71
|
+
|
|
72
|
+
Ramaze::Cache.foo[key].should_not == Ramaze::Cache.bar[key]
|
|
73
|
+
end
|
|
63
74
|
end
|
|
64
75
|
end
|
data/spec/ramaze/controller.rb
CHANGED
|
@@ -54,7 +54,6 @@ describe "Controller" do
|
|
|
54
54
|
],
|
|
55
55
|
|
|
56
56
|
'/foo/bar' => [
|
|
57
|
-
["/foo__bar", "index", []],
|
|
58
57
|
["/foo/bar", "index", []],
|
|
59
58
|
|
|
60
59
|
["/foo", "bar", []],
|
|
@@ -67,12 +66,8 @@ describe "Controller" do
|
|
|
67
66
|
|
|
68
67
|
'/foo/bar/baz' => [
|
|
69
68
|
|
|
70
|
-
['/foo__bar__baz', 'index', []],
|
|
71
69
|
['/foo/bar/baz', 'index', []],
|
|
72
70
|
|
|
73
|
-
['/foo__bar', 'baz', []],
|
|
74
|
-
['/foo__bar', 'index', ['baz']],
|
|
75
|
-
|
|
76
71
|
['/foo/bar', 'baz', []],
|
|
77
72
|
['/foo/bar', 'index', ['baz']],
|
|
78
73
|
|
|
@@ -87,20 +82,11 @@ describe "Controller" do
|
|
|
87
82
|
],
|
|
88
83
|
|
|
89
84
|
'/foo/bar/baz/oof' => [
|
|
90
|
-
['/foo__bar__baz__oof', 'index', []],
|
|
91
|
-
|
|
92
85
|
['/foo/bar/baz/oof', 'index', []],
|
|
93
86
|
|
|
94
|
-
['/foo__bar__baz', 'oof', []],
|
|
95
|
-
['/foo__bar__baz', 'index', ['oof']],
|
|
96
|
-
|
|
97
87
|
['/foo/bar/baz', 'oof', []],
|
|
98
88
|
['/foo/bar/baz', 'index', ['oof']],
|
|
99
89
|
|
|
100
|
-
['/foo__bar', 'baz__oof', []],
|
|
101
|
-
['/foo__bar', 'baz', ['oof']],
|
|
102
|
-
['/foo__bar', 'index', ['baz', 'oof']],
|
|
103
|
-
|
|
104
90
|
['/foo/bar', 'baz__oof', []],
|
|
105
91
|
['/foo/bar', 'baz', ['oof']],
|
|
106
92
|
['/foo/bar', 'index', ['baz', 'oof']],
|
|
@@ -3,22 +3,22 @@ require 'spec/helper'
|
|
|
3
3
|
describe 'Dispatcher::File' do
|
|
4
4
|
before :all do
|
|
5
5
|
ramaze
|
|
6
|
+
@public_root = Ramaze::Global.public_root = 'spec/ramaze/dispatcher/public'
|
|
6
7
|
end
|
|
7
8
|
|
|
8
9
|
it 'should serve from proto/public' do
|
|
9
10
|
end
|
|
10
11
|
|
|
11
12
|
it 'should serve from Global.public_root' do
|
|
12
|
-
|
|
13
|
-
css = File.read(dir/'test_download.css')
|
|
13
|
+
css = File.read(@public_root/'test_download.css')
|
|
14
14
|
re_css = get('/test_download.css')
|
|
15
15
|
re_css.body.should == css
|
|
16
16
|
re_css.status.should == 200
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
it 'should
|
|
20
|
-
file = (
|
|
19
|
+
it 'should give priority to Global.public_root' do
|
|
20
|
+
file = (@public_root/'favicon.ico')
|
|
21
21
|
original = File.read(file)
|
|
22
|
-
get('/
|
|
22
|
+
get('/favicon.ico').body.should == original
|
|
23
23
|
end
|
|
24
24
|
end
|
|
Binary file
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/*#############################################################
|
|
2
|
+
* Name: Light
|
|
3
|
+
* Date: 2006-08-20
|
|
4
|
+
* Description: Bright and smooth.
|
|
5
|
+
* Author: Viktor Persson
|
|
6
|
+
* URL: http://templates.arcsin.se
|
|
7
|
+
*
|
|
8
|
+
* Feel free to use and modify but please provide credits.
|
|
9
|
+
* #############################################################*/
|
|
10
|
+
|
|
11
|
+
/* standard elements */
|
|
12
|
+
{
|
|
13
|
+
margin: 0;
|
|
14
|
+
padding: 0;
|
|
15
|
+
}
|
|
16
|
+
a {
|
|
17
|
+
color: #567;
|
|
18
|
+
}
|
|
19
|
+
a:hover {
|
|
20
|
+
color: #28E;
|
|
21
|
+
}
|
|
22
|
+
body {
|
|
23
|
+
background: #F2F2F2 url(/media/bg.gif) repeat-y center top;
|
|
24
|
+
color: #555A60;
|
|
25
|
+
font: normal 62.5% "Lucida Sans Unicode",sans-serif;
|
|
26
|
+
margin: 0;
|
|
27
|
+
}
|
|
28
|
+
p,cite,code,ul {
|
|
29
|
+
font-size: 1.0em;
|
|
30
|
+
padding-bottom: 1.2em;
|
|
31
|
+
}
|
|
32
|
+
h1 {
|
|
33
|
+
font-size: 1.4em;
|
|
34
|
+
margin-bottom: 4px;
|
|
35
|
+
}
|
|
36
|
+
li {
|
|
37
|
+
list-style: url(/media/li.gif);
|
|
38
|
+
margin-left: 18px;
|
|
39
|
+
}
|
|
40
|
+
code {
|
|
41
|
+
background: url(/media/bgcode.gif);
|
|
42
|
+
border: 1px solid #F6F6F6;
|
|
43
|
+
color: #666;
|
|
44
|
+
display: block;
|
|
45
|
+
font: normal 1.1em "Lucida Sans Unicode",serif;
|
|
46
|
+
margin-bottom: 12px;
|
|
47
|
+
padding: 8px 10px;
|
|
48
|
+
white-space: pre;
|
|
49
|
+
}
|
|
50
|
+
cite {
|
|
51
|
+
background: url(/media/quote.gif) no-repeat;
|
|
52
|
+
color: #456;
|
|
53
|
+
display: block;
|
|
54
|
+
font: normal 1.4em "Lucida Sans Unicode",serif;
|
|
55
|
+
padding-left: 28px;
|
|
56
|
+
}
|
|
57
|
+
h1,h2,h3 {
|
|
58
|
+
color: #579;
|
|
59
|
+
padding-top: 6px;
|
|
60
|
+
}
|
|
61
|
+
*
|
|
62
|
+
/* misc */
|
|
63
|
+
.clearer {
|
|
64
|
+
clear: both;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/* structure */
|
|
68
|
+
.container {
|
|
69
|
+
margin: 0 auto;
|
|
70
|
+
width: 730px;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
/* title */
|
|
74
|
+
.title {
|
|
75
|
+
float: left;
|
|
76
|
+
margin-top: 22px;
|
|
77
|
+
text-align: center;
|
|
78
|
+
width: 220px;
|
|
79
|
+
}
|
|
80
|
+
.title h1 {
|
|
81
|
+
font: normal 2em Verdana,sans-serif;
|
|
82
|
+
}
|
|
83
|
+
.title h2 {
|
|
84
|
+
color: #999;
|
|
85
|
+
font: normal 1.1em Verdana,sans-serif;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
/* navigation */
|
|
89
|
+
.navigation {
|
|
90
|
+
background: url(/media/holder.jpg) no-repeat;
|
|
91
|
+
height: 100px;
|
|
92
|
+
padding: 0 16px;
|
|
93
|
+
}
|
|
94
|
+
.navigation a {
|
|
95
|
+
border-left: 1px solid #DDD;
|
|
96
|
+
border-right: 1px solid #FFF;
|
|
97
|
+
color: #89A;
|
|
98
|
+
float: right;
|
|
99
|
+
font: bold 1.2em "Trebuchet MS",sans-serif;
|
|
100
|
+
margin-top: 9px;
|
|
101
|
+
padding: 58px 18px 8px;
|
|
102
|
+
text-align: center;
|
|
103
|
+
text-decoration: none;
|
|
104
|
+
}
|
|
105
|
+
.navigation a:hover {
|
|
106
|
+
background: #FFF url(/media/navhover.gif) repeat-x;
|
|
107
|
+
color: #28E;
|
|
108
|
+
padding: 56px 18px 10px;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* holders */
|
|
112
|
+
.holder {
|
|
113
|
+
background: url(/media/bgholder.jpg) repeat-y;
|
|
114
|
+
padding: 0 32px;
|
|
115
|
+
}
|
|
116
|
+
.holder_top,.footer {
|
|
117
|
+
clear: both;
|
|
118
|
+
background: url(/media/holder.jpg) no-repeat;
|
|
119
|
+
height: 40px;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
/* footer */
|
|
123
|
+
.footer {
|
|
124
|
+
background-position: left bottom;
|
|
125
|
+
color: #666;
|
|
126
|
+
font-size: 1.1em;
|
|
127
|
+
text-align: center;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
form {
|
|
131
|
+
text-align: right;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
form input {
|
|
135
|
+
width: 95%;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
form textarea {
|
|
139
|
+
width: 95%;
|
|
140
|
+
height: 30em;
|
|
141
|
+
}
|