postview 0.8.1 → 0.9.0
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/ABOUT +9 -0
- data/HISTORY +27 -1
- data/Rakefile +3 -1
- data/VERSION +4 -4
- data/bin/postview +2 -2
- data/lib/postview.rb +64 -13
- data/lib/postview/application.rb +34 -21
- data/lib/postview/authentication.rb +36 -0
- data/lib/postview/cli.rb +10 -0
- data/lib/postview/cli/create_command.rb +53 -37
- data/lib/postview/cli/server_command.rb +2 -2
- data/lib/postview/extensions.rb +10 -0
- data/lib/postview/helpers.rb +3 -0
- data/lib/postview/settings.rb +19 -17
- data/lib/postview/site.rb +13 -1
- data/lib/postview/version.rb +1 -1
- data/tasks/package.rake +80 -2
- data/test/application_test.rb +29 -14
- data/test/{extensions.rb → customizations.rb} +1 -0
- data/test/fixtures/application/config/settings.yml +4 -1
- data/test/fixtures/application/themes/{gemstone → mytheme}/images/banners/banner.jpg +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/images/favicon.ico +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/images/logo.png +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/images/navigation-bar.gif +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/images/postview.png +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/images/rack.png +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/images/ruby.png +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/images/sinatra.png +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/images/trojan.com +0 -0
- data/test/fixtures/application/themes/{gemstone/javascripts/gemstone.js → mytheme/javascripts/postview.js} +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/stylesheets/gemstone.css +0 -0
- data/test/fixtures/application/themes/{gemstone → mytheme}/stylesheets/postview.css +0 -0
- data/test/fixtures/application/themes/mytheme/templates/about.erb +1 -0
- data/test/fixtures/application/themes/mytheme/templates/archive/index.erb +3 -0
- data/test/fixtures/application/themes/mytheme/templates/archive/show.erb +1 -0
- data/test/fixtures/application/themes/mytheme/templates/drafts/index.erb +3 -0
- data/test/fixtures/application/themes/mytheme/templates/drafts/show.erb +1 -0
- data/test/fixtures/application/themes/mytheme/templates/error.erb +1 -0
- data/test/fixtures/application/themes/mytheme/templates/index.erb +3 -0
- data/{themes/default → test/fixtures/application/themes/mytheme/templates}/layout.erb +2 -2
- data/test/fixtures/application/themes/mytheme/templates/posts/index.erb +3 -0
- data/test/fixtures/application/themes/mytheme/templates/posts/show.erb +1 -0
- data/test/fixtures/application/themes/mytheme/templates/search.erb +6 -0
- data/test/fixtures/application/themes/mytheme/templates/tags/index.erb +3 -0
- data/test/fixtures/application/themes/mytheme/templates/tags/show.erb +6 -0
- data/test/fixtures/site/blog/config.ru +6 -0
- data/test/fixtures/site/blog/config/settings.yml +25 -0
- data/test/fixtures/{application/themes/gemstone/error.erb → site/blog/empty.yml} +0 -0
- data/test/fixtures/site/blog/posts/20090529-third_article.t1.t2.t3.mkd +4 -0
- data/test/fixtures/site/blog/posts/20090602-fourth_article.t1.t2.t3.t4.mkd +4 -0
- data/test/fixtures/site/blog/posts/archive/20080529-first_article.t1.mkd +4 -0
- data/test/fixtures/site/blog/posts/archive/20080602-second_article.t1.t2.mkd +4 -0
- data/test/fixtures/site/blog/posts/drafts/20090730-fifth_article.t1.t2.t3.t4.t5.mkd +4 -0
- data/{themes/default/error.erb → test/fixtures/site/themes/mytheme/images/banners/banner.jpg} +0 -0
- data/test/fixtures/site/themes/mytheme/images/favicon.ico +0 -0
- data/test/fixtures/site/themes/mytheme/images/logo.png +0 -0
- data/test/fixtures/site/themes/mytheme/images/navigation-bar.gif +0 -0
- data/test/fixtures/site/themes/mytheme/images/postview.png +0 -0
- data/test/fixtures/site/themes/mytheme/images/rack.png +0 -0
- data/test/fixtures/site/themes/mytheme/images/ruby.png +0 -0
- data/test/fixtures/site/themes/mytheme/images/sinatra.png +0 -0
- data/test/fixtures/site/themes/mytheme/images/trojan.com +0 -0
- data/test/fixtures/site/themes/mytheme/javascripts/postview.js +1 -0
- data/test/fixtures/site/themes/mytheme/stylesheets/gemstone.css +1 -0
- data/test/fixtures/site/themes/mytheme/stylesheets/postview.css +238 -0
- data/test/fixtures/site/themes/mytheme/templates/about.erb +1 -0
- data/test/fixtures/site/themes/mytheme/templates/archive/index.erb +3 -0
- data/test/fixtures/site/themes/mytheme/templates/archive/show.erb +1 -0
- data/test/fixtures/site/themes/mytheme/templates/drafts/index.erb +3 -0
- data/test/fixtures/site/themes/mytheme/templates/drafts/show.erb +1 -0
- data/test/fixtures/site/themes/mytheme/templates/error.erb +1 -0
- data/test/fixtures/site/themes/mytheme/templates/index.erb +3 -0
- data/test/fixtures/{application/themes/gemstone → site/themes/mytheme/templates}/layout.erb +20 -14
- data/test/fixtures/site/themes/mytheme/templates/posts/index.erb +3 -0
- data/test/fixtures/site/themes/mytheme/templates/posts/show.erb +1 -0
- data/test/fixtures/site/themes/mytheme/templates/search.erb +6 -0
- data/test/fixtures/site/themes/mytheme/templates/tags/index.erb +3 -0
- data/test/fixtures/site/themes/mytheme/templates/tags/show.erb +6 -0
- data/test/helpers_test.rb +1 -2
- data/test/settings_test.rb +12 -3
- data/test/site_test.rb +3 -4
- data/themes/default/stylesheets/postview.css +1 -0
- data/themes/default/{about.erb → templates/about.erb} +1 -1
- data/{test/fixtures/application/themes/gemstone → themes/default/templates}/archive/index.erb +0 -0
- data/{test/fixtures/application/themes/gemstone → themes/default/templates}/archive/show.erb +0 -0
- data/{test/fixtures/application/themes/gemstone → themes/default/templates}/drafts/index.erb +1 -1
- data/{test/fixtures/application/themes/gemstone → themes/default/templates}/drafts/show.erb +0 -0
- data/themes/default/templates/error.erb +13 -0
- data/themes/default/{index.erb → templates/index.erb} +1 -1
- data/themes/default/templates/layout.erb +130 -0
- data/{test/fixtures/application/themes/gemstone → themes/default/templates}/posts/index.erb +0 -0
- data/{test/fixtures/application/themes/gemstone → themes/default/templates}/posts/show.erb +0 -0
- data/{test/fixtures/application/themes/gemstone → themes/default/templates}/search.erb +0 -0
- data/{test/fixtures/application/themes/gemstone → themes/default/templates}/tags/index.erb +0 -0
- data/{test/fixtures/application/themes/gemstone → themes/default/templates}/tags/show.erb +0 -0
- metadata +164 -61
- data/INFO +0 -14
- data/lib/postview/about.rb +0 -34
- data/test/fixtures/application/themes/gemstone/about.erb +0 -22
- data/test/fixtures/application/themes/gemstone/index.erb +0 -38
- data/test/helper.rb +0 -9
- data/themes/default/archive/index.erb +0 -21
- data/themes/default/archive/show.erb +0 -17
- data/themes/default/drafts/index.erb +0 -21
- data/themes/default/drafts/show.erb +0 -17
- data/themes/default/posts/index.erb +0 -21
- data/themes/default/posts/show.erb +0 -17
- data/themes/default/search.erb +0 -40
- data/themes/default/tags/index.erb +0 -12
- data/themes/default/tags/show.erb +0 -40
@@ -47,7 +47,7 @@ private
|
|
47
47
|
@arguments.summary_indent = " "
|
48
48
|
@arguments.summary_width = 24
|
49
49
|
@arguments.banner = <<-end_banner.gsub(/^[ ]{6}/, '')
|
50
|
-
#{Postview::
|
50
|
+
#{Postview::version_summary}
|
51
51
|
|
52
52
|
Usage:
|
53
53
|
#{Postview.name.downcase} server <path> [options]
|
@@ -68,7 +68,7 @@ private
|
|
68
68
|
puts error
|
69
69
|
puts @arguments
|
70
70
|
end
|
71
|
-
puts "#{Postview::
|
71
|
+
puts "#{Postview::version_summary}\n\n"
|
72
72
|
end
|
73
73
|
|
74
74
|
def load_server
|
data/lib/postview/extensions.rb
CHANGED
data/lib/postview/helpers.rb
CHANGED
data/lib/postview/settings.rb
CHANGED
@@ -7,16 +7,18 @@ class Settings
|
|
7
7
|
:site => {
|
8
8
|
:title => "Postview",
|
9
9
|
:subtitle => "Post your articles",
|
10
|
-
:author => "
|
11
|
-
:email => "
|
10
|
+
:author => "Postview",
|
11
|
+
:email => "postview@example.com",
|
12
12
|
:domain => "example.com",
|
13
13
|
:directory => "/var/www/example",
|
14
|
-
:theme => "default"
|
14
|
+
:theme => "default",
|
15
|
+
:token => "e44257415827b00557ae5505f93e112d6158c4ba3c567aefbbff47288c6bf7cd" # Password: admin
|
15
16
|
},
|
16
17
|
:directories => {
|
17
18
|
:posts => "posts",
|
18
19
|
:archive => "posts/archive",
|
19
|
-
:drafts => "posts/drafts"
|
20
|
+
:drafts => "posts/drafts",
|
21
|
+
:themes => "themes"
|
20
22
|
},
|
21
23
|
:sections => {
|
22
24
|
:root => "/",
|
@@ -25,14 +27,14 @@ class Settings
|
|
25
27
|
:archive => "/archive",
|
26
28
|
:drafts => "/drafts",
|
27
29
|
:search => "/search",
|
28
|
-
:about => "/about"
|
30
|
+
:about => "/about",
|
31
|
+
:manager => "/manager"
|
29
32
|
}
|
30
33
|
}
|
31
34
|
FILE_NAME = "settings.yml"
|
32
35
|
FILE_DIR = "config"
|
33
|
-
FILE = Postview::PATH.join(FILE_DIR, FILE_NAME)
|
34
36
|
|
35
|
-
attr_reader :site, :
|
37
|
+
attr_reader :site, :directories, :sections
|
36
38
|
|
37
39
|
# Initialize the settings using attributes passed by arguments.
|
38
40
|
# Only attributes valid are read. See DEFAULTS.
|
@@ -63,12 +65,12 @@ class Settings
|
|
63
65
|
|
64
66
|
# Build a specific finder for directory.
|
65
67
|
def build_finder_for(directory)
|
66
|
-
Postage::Finder.new(
|
68
|
+
Postage::Finder.new(path_to(directory))
|
67
69
|
end
|
68
70
|
|
69
71
|
# Load a default settings values from file placed in +config/settings.yml+.
|
70
72
|
def self.load
|
71
|
-
load_file(
|
73
|
+
load_file(file)
|
72
74
|
end
|
73
75
|
|
74
76
|
# Load a specific settings file.
|
@@ -89,25 +91,25 @@ class Settings
|
|
89
91
|
|
90
92
|
# Build settings file using DEFAULTS.
|
91
93
|
def self.build_default_file
|
92
|
-
|
94
|
+
file.open "w+" do |file|
|
93
95
|
file << DEFAULTS.to_yaml
|
94
|
-
end unless
|
96
|
+
end unless file.exist?
|
95
97
|
end
|
96
98
|
|
97
99
|
# Returns settings file.
|
98
|
-
def file
|
99
|
-
|
100
|
+
def self.file
|
101
|
+
Postview::path.join(FILE_DIR, FILE_NAME)
|
100
102
|
end
|
101
103
|
|
102
104
|
# Check directory and returns file that matches with a pattern.
|
103
|
-
def
|
104
|
-
|
105
|
+
def file_names_from(directory, pattern = "**.*")
|
106
|
+
path_to(directory, pattern)
|
105
107
|
end
|
106
108
|
|
107
109
|
# Returns a valid directory loaded from settings file.
|
108
|
-
def
|
110
|
+
def path_to(name, *paths)
|
109
111
|
return Pathname.new(directories[name], *paths) if directories[name].match(%r{^/.*})
|
110
|
-
|
112
|
+
Postview::path.join(directories[name], *paths)
|
111
113
|
end
|
112
114
|
|
113
115
|
# Parse all attributes to hash.
|
data/lib/postview/site.rb
CHANGED
@@ -24,6 +24,9 @@ class Site
|
|
24
24
|
# Theme directory name.
|
25
25
|
attr_accessor :theme
|
26
26
|
|
27
|
+
# Token pass.
|
28
|
+
attr_accessor :token
|
29
|
+
|
27
30
|
# Finder for posts
|
28
31
|
attr_accessor :find
|
29
32
|
|
@@ -49,7 +52,6 @@ class Site
|
|
49
52
|
end
|
50
53
|
|
51
54
|
# Find all posts tagged with a specific tag.
|
52
|
-
# Returns two lists: posts and archived posts.
|
53
55
|
def find_all_posts_tagged_with(tag)
|
54
56
|
[ find.all_posts_by_tag(tag), find_in_archive.all_posts_by_tag(tag) ]
|
55
57
|
end
|
@@ -60,6 +62,16 @@ class Site
|
|
60
62
|
[ find.posts(*values), find_in_archive.posts(*values) ]
|
61
63
|
end
|
62
64
|
|
65
|
+
# Check authentication for user.
|
66
|
+
def authenticate?(username, password)
|
67
|
+
@token == self.class.tokenize(username, password, domain)
|
68
|
+
end
|
69
|
+
|
70
|
+
# Generate digest token.
|
71
|
+
def self.tokenize(username, password, domain)
|
72
|
+
Digest::SHA256.hexdigest("$#{username}?#{password}@#{domain}")
|
73
|
+
end
|
74
|
+
|
63
75
|
end # class Site
|
64
76
|
|
65
77
|
end #module Postview
|
data/lib/postview/version.rb
CHANGED
data/tasks/package.rake
CHANGED
@@ -1,8 +1,86 @@
|
|
1
1
|
require 'rake/gempackagetask'
|
2
2
|
|
3
|
+
def files
|
4
|
+
#`git ls-files`.split.sort.reject{ |out| out =~ /^\./ || out =~ /^doc/ }
|
5
|
+
@files ||= OpenStruct.new :documents => Dir[*%w{ABOUT HISTORY LICENSE Rakefile VERSION README.rdoc}],
|
6
|
+
:binaries => Dir[*%w{{bin,scripts}/**}],
|
7
|
+
:libraries => Dir[*%w{{lib,tasks}/**/**.rb tasks/**/**.rake}],
|
8
|
+
:tests => Dir[*%w{test/**.rb test/fixtures/**/**}],
|
9
|
+
:resources => Dir[*%w{themes/**/**}]
|
10
|
+
end
|
11
|
+
|
12
|
+
def manifest
|
13
|
+
files.documents +
|
14
|
+
files.binaries +
|
15
|
+
files.libraries +
|
16
|
+
files.tests +
|
17
|
+
files.resources
|
18
|
+
end
|
19
|
+
|
3
20
|
def gemspec
|
4
|
-
|
5
|
-
|
21
|
+
@gemspec ||= Gem::Specification.new do |spec|
|
22
|
+
|
23
|
+
# Global information
|
24
|
+
spec.platform = Gem::Platform::RUBY
|
25
|
+
spec.executable = "postview"
|
26
|
+
spec.name = Postview.name.downcase
|
27
|
+
spec.version = Postview::version_tag
|
28
|
+
spec.date = Postview::version_spec.date.to_s
|
29
|
+
spec.summary = Postview::about_info.summary
|
30
|
+
spec.description = Postview::about_info.description
|
31
|
+
spec.authors = Postview::about_info.authors
|
32
|
+
spec.email = Postview::about_info.email
|
33
|
+
spec.homepage = Postview::about_info.homepage
|
34
|
+
|
35
|
+
# Dependencies
|
36
|
+
spec.add_dependency "sinatra", ">= 0.9.1.1"
|
37
|
+
spec.add_dependency "sinatra-mapping", ">= 1.0.5"
|
38
|
+
spec.add_dependency "postage", ">= 0.1.4.1"
|
39
|
+
|
40
|
+
spec.files = manifest
|
41
|
+
spec.require_paths = ["lib"]
|
42
|
+
spec.test_files = files.tests
|
43
|
+
spec.has_rdoc = true
|
44
|
+
spec.extra_rdoc_files = %w{README.rdoc LICENSE}
|
45
|
+
spec.rdoc_options = [
|
46
|
+
"--line-numbers",
|
47
|
+
"--inline-source",
|
48
|
+
"--title", Postview::version_summary,
|
49
|
+
"--main", "README.rdoc"
|
50
|
+
]
|
51
|
+
spec.rubyforge_project = spec.name
|
52
|
+
spec.rubygems_version = Gem::VERSION
|
53
|
+
spec.post_install_message = <<-end_message.gsub(/^[ ]{6}/,'')
|
54
|
+
#{'-'*78}
|
55
|
+
#{Postview::version_summary}
|
56
|
+
|
57
|
+
Thanks for use this lightweight blogware. Now, you can read your posts by
|
58
|
+
editing in your favorite editor.
|
59
|
+
|
60
|
+
Please, feedback in http://github.com/hallison/postview/issues.
|
61
|
+
#{'-'*78}
|
62
|
+
end_message
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def gemspec_file
|
67
|
+
@gemspec_file ||= Pathname.new("#{gemspec.name}.gemspec")
|
68
|
+
end
|
69
|
+
|
70
|
+
namespace :gem do
|
71
|
+
|
72
|
+
file gemspec_file.to_s => gemspec.files do
|
73
|
+
when_writing "Creating #{gemspec_file}" do
|
74
|
+
gemspec_file.open "w+" do |spec|
|
75
|
+
spec << gemspec.to_yaml
|
76
|
+
end
|
77
|
+
end
|
78
|
+
puts "Successfully built #{gemspec_file}"
|
79
|
+
end
|
80
|
+
|
81
|
+
desc "Build #{gemspec_file}"
|
82
|
+
task :spec => [gemspec_file]
|
83
|
+
|
6
84
|
end
|
7
85
|
|
8
86
|
Rake::GemPackageTask.new gemspec do |pkg|
|
data/test/application_test.rb
CHANGED
@@ -3,12 +3,16 @@ $LOAD_PATH.unshift("#{File.dirname(__FILE__)}/..")
|
|
3
3
|
require 'lib/postview'
|
4
4
|
require 'test/unit'
|
5
5
|
require 'rack/test'
|
6
|
-
require 'test/
|
6
|
+
require 'test/customizations'
|
7
7
|
|
8
8
|
class ApplicationTest < Test::Unit::TestCase
|
9
9
|
|
10
10
|
include Rack::Test::Methods
|
11
11
|
|
12
|
+
def setup
|
13
|
+
Postview::path = "test/fixtures/application"
|
14
|
+
end
|
15
|
+
|
12
16
|
def app
|
13
17
|
@app = Postview::Application
|
14
18
|
|
@@ -18,29 +22,24 @@ class ApplicationTest < Test::Unit::TestCase
|
|
18
22
|
end
|
19
23
|
|
20
24
|
def test_should_return_ok_for_theme_resources
|
21
|
-
get
|
25
|
+
get "/images/favicon.ico" do |response|
|
22
26
|
assert response.ok?
|
23
|
-
assert_equal "http://example.org/images/favicon.ico
|
27
|
+
assert_equal "http://example.org/images/favicon.ico", last_request.url
|
24
28
|
end
|
25
29
|
|
26
|
-
get
|
30
|
+
get "/javascripts/postview.js" do |response|
|
27
31
|
assert response.ok?
|
28
|
-
assert_equal "http://example.org/javascripts/
|
32
|
+
assert_equal "http://example.org/javascripts/postview.js", last_request.url
|
29
33
|
end
|
30
34
|
|
31
|
-
get
|
35
|
+
get "/stylesheets/postview.css" do |response|
|
32
36
|
assert response.ok?
|
33
|
-
assert_equal "http://example.org/stylesheets/
|
37
|
+
assert_equal "http://example.org/stylesheets/postview.css", last_request.url
|
34
38
|
end
|
35
39
|
|
36
|
-
get
|
40
|
+
get "/images/banners/banner.jpg" do |response|
|
37
41
|
assert response.ok?
|
38
|
-
assert_equal "http://example.org/images/banners/banner.jpg
|
39
|
-
end
|
40
|
-
|
41
|
-
# TOFIX: Fix test to check security.
|
42
|
-
get app.theme_path "/images/trojan.com" do |response|
|
43
|
-
#assert !response.ok?
|
42
|
+
assert_equal "http://example.org/images/banners/banner.jpg", last_request.url
|
44
43
|
end
|
45
44
|
end
|
46
45
|
|
@@ -91,6 +90,7 @@ class ApplicationTest < Test::Unit::TestCase
|
|
91
90
|
end
|
92
91
|
|
93
92
|
def test_should_return_ok_in_drafts_path
|
93
|
+
authorize("Jack Ducklet", "s3kr3t")
|
94
94
|
get app.drafts_path do |response|
|
95
95
|
assert response.ok?
|
96
96
|
assert_equal "http://example.org/drafts/", last_request.url
|
@@ -98,6 +98,7 @@ class ApplicationTest < Test::Unit::TestCase
|
|
98
98
|
end
|
99
99
|
|
100
100
|
def test_should_return_ok_in_drafts_path_with_params
|
101
|
+
authorize("Jack Ducklet", "s3kr3t")
|
101
102
|
get app.drafts_path "2009/07/30/fifth_article" do |response|
|
102
103
|
assert response.ok?
|
103
104
|
assert_equal "http://example.org/drafts/2009/07/30/fifth_article/", last_request.url
|
@@ -118,5 +119,19 @@ class ApplicationTest < Test::Unit::TestCase
|
|
118
119
|
end
|
119
120
|
end
|
120
121
|
|
122
|
+
should "return ok in authorize path" do
|
123
|
+
authorize("Jack Ducklet", "s3kr3t")
|
124
|
+
get app.manager_path do |response|
|
125
|
+
assert response.ok?
|
126
|
+
assert_equal "http://example.org/manager/", last_request.url
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
should "load shared themes" do
|
131
|
+
site_path = Pathname.new("test/fixtures/site").expand_path
|
132
|
+
Postview::path = site_path.join("blog")
|
133
|
+
assert_equal site_path.join("themes/mytheme"), app.theme
|
134
|
+
end
|
135
|
+
|
121
136
|
end
|
122
137
|
|
@@ -7,11 +7,13 @@
|
|
7
7
|
:title: Postview
|
8
8
|
:theme: default
|
9
9
|
:subtitle: Post your articles
|
10
|
-
:theme:
|
10
|
+
:theme: mytheme
|
11
|
+
:token: 948632a3174ea34188f1f261d26941cabd8a5a42b27577ff8e400d2cd139c6e1
|
11
12
|
:directories:
|
12
13
|
:posts: posts
|
13
14
|
:archive: posts/archive
|
14
15
|
:drafts: posts/drafts
|
16
|
+
:themes: themes
|
15
17
|
:sections:
|
16
18
|
:about: about
|
17
19
|
:posts: posts
|
@@ -20,3 +22,4 @@
|
|
20
22
|
:search: search
|
21
23
|
:tags: tags
|
22
24
|
:drafts: drafts
|
25
|
+
:manager: manager
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
<%=Postview::about_to_html%>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%=current_post%>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%=current_post%>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%=error_message%>
|
@@ -5,7 +5,7 @@
|
|
5
5
|
|
6
6
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
|
7
7
|
<title><%=site.title%> :: <%=page.title%></title>
|
8
|
-
<meta name="generator" content="<%=Postview::
|
8
|
+
<meta name="generator" content="<%=Postview::version_summary%>" />
|
9
9
|
<meta name="description" content="<%=site.subtitle%>" />
|
10
10
|
<meta name="keywords" content="<%=page.keywords%>" />
|
11
11
|
<link rel="shortcut icon" href="<%=path_to :images, "favicon.ico"%>" />
|
@@ -119,7 +119,7 @@
|
|
119
119
|
<div id="footer">
|
120
120
|
|
121
121
|
<p>
|
122
|
-
<small><%=site.title%> © 2009 <%=site.author%>. Powered by <%=link_to Postview::
|
122
|
+
<small><%=site.title%> © 2009 <%=site.author%>. Powered by <%=link_to Postview::version_summary, "http://github.com/hallison/postview"%>.</small>
|
123
123
|
</p>
|
124
124
|
|
125
125
|
</div><!-- footer -->
|