hobix 0.6
Sign up to get free protection for your applications and to get access to all the features.
- data/COPYING +18 -0
- data/README +18 -0
- data/Rakefile +96 -0
- data/bin/hobix +94 -0
- data/contrib/blosxom-to-hobix.rb +253 -0
- data/contrib/txp-to-hobix.rb +56 -0
- data/contrib/webrick-all-mine.rb +20 -0
- data/doc/CHANGELOG +285 -0
- data/doc/rdoc/classes/Hobix/API.html +382 -0
- data/doc/rdoc/classes/Hobix/Article.html +111 -0
- data/doc/rdoc/classes/Hobix/BaseContent.html +692 -0
- data/doc/rdoc/classes/Hobix/BaseEntry.html +218 -0
- data/doc/rdoc/classes/Hobix/BaseFacet.html +205 -0
- data/doc/rdoc/classes/Hobix/BaseOutput.html +122 -0
- data/doc/rdoc/classes/Hobix/BasePlugin.html +201 -0
- data/doc/rdoc/classes/Hobix/BaseProperties/ClassMethods.html +243 -0
- data/doc/rdoc/classes/Hobix/BaseProperties.html +218 -0
- data/doc/rdoc/classes/Hobix/BasePublish.html +157 -0
- data/doc/rdoc/classes/Hobix/BaseStorage.html +417 -0
- data/doc/rdoc/classes/Hobix/BixWik/Entry.html +196 -0
- data/doc/rdoc/classes/Hobix/BixWik/IndexEntry.html +170 -0
- data/doc/rdoc/classes/Hobix/BixWik/WikiRedCloth.html +111 -0
- data/doc/rdoc/classes/Hobix/BixWik.html +418 -0
- data/doc/rdoc/classes/Hobix/BixWikPlugin.html +158 -0
- data/doc/rdoc/classes/Hobix/CommandLine.html +1970 -0
- data/doc/rdoc/classes/Hobix/Comment.html +113 -0
- data/doc/rdoc/classes/Hobix/Config.html +212 -0
- data/doc/rdoc/classes/Hobix/DataMarsh.html +667 -0
- data/doc/rdoc/classes/Hobix/Entry.html +178 -0
- data/doc/rdoc/classes/Hobix/EntryEnum.html +162 -0
- data/doc/rdoc/classes/Hobix/Enumerable.html +170 -0
- data/doc/rdoc/classes/Hobix/Facets/WikiEdit.html +180 -0
- data/doc/rdoc/classes/Hobix/Facets.html +111 -0
- data/doc/rdoc/classes/Hobix/LinkList.html +182 -0
- data/doc/rdoc/classes/Hobix/Out/Quick.html +412 -0
- data/doc/rdoc/classes/Hobix/Out.html +119 -0
- data/doc/rdoc/classes/Hobix/Page.html +381 -0
- data/doc/rdoc/classes/Hobix/Trackback.html +113 -0
- data/doc/rdoc/classes/Hobix/UriStr.html +198 -0
- data/doc/rdoc/classes/Hobix/WebApp/QueryString.html +207 -0
- data/doc/rdoc/classes/Hobix/WebApp/QueryValidationFailure.html +111 -0
- data/doc/rdoc/classes/Hobix/WebApp.html +1383 -0
- data/doc/rdoc/classes/Hobix/Weblog/AuthorNotFound.html +111 -0
- data/doc/rdoc/classes/Hobix/Weblog.html +2082 -0
- data/doc/rdoc/classes/Hobix.html +399 -0
- data/doc/rdoc/classes/Kernel.html +139 -0
- data/doc/rdoc/classes/Regexp.html +154 -0
- data/doc/rdoc/classes/YAML/Omap.html +144 -0
- data/doc/rdoc/classes/YAML.html +111 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/COPYING.html +129 -0
- data/doc/rdoc/files/README.html +131 -0
- data/doc/rdoc/files/doc/CHANGELOG.html +101 -0
- data/doc/rdoc/files/lib/hobix/api_rb.html +119 -0
- data/doc/rdoc/files/lib/hobix/article_rb.html +126 -0
- data/doc/rdoc/files/lib/hobix/base_rb.html +128 -0
- data/doc/rdoc/files/lib/hobix/bixwik_rb.html +126 -0
- data/doc/rdoc/files/lib/hobix/commandline_rb.html +140 -0
- data/doc/rdoc/files/lib/hobix/comments_rb.html +126 -0
- data/doc/rdoc/files/lib/hobix/config_rb.html +125 -0
- data/doc/rdoc/files/lib/hobix/datamarsh_rb.html +108 -0
- data/doc/rdoc/files/lib/hobix/entry_rb.html +118 -0
- data/doc/rdoc/files/lib/hobix/linklist_rb.html +127 -0
- data/doc/rdoc/files/lib/hobix/publisher_rb.html +126 -0
- data/doc/rdoc/files/lib/hobix/trackbacks_rb.html +128 -0
- data/doc/rdoc/files/lib/hobix/webapp_rb.html +127 -0
- data/doc/rdoc/files/lib/hobix/weblog_rb.html +135 -0
- data/doc/rdoc/files/lib/hobix_rb.html +127 -0
- data/doc/rdoc/fr_class_index.html +67 -0
- data/doc/rdoc/fr_file_index.html +44 -0
- data/doc/rdoc/fr_method_index.html +307 -0
- data/doc/rdoc/index.html +24 -0
- data/doc/rdoc/rdoc-style.css +208 -0
- data/git_hobix_update.php +13 -0
- data/lib/hobix/api.rb +91 -0
- data/lib/hobix/article.rb +22 -0
- data/lib/hobix/base.rb +480 -0
- data/lib/hobix/bixwik.rb +200 -0
- data/lib/hobix/commandline.rb +677 -0
- data/lib/hobix/comments.rb +98 -0
- data/lib/hobix/config.rb +39 -0
- data/lib/hobix/datamarsh.rb +110 -0
- data/lib/hobix/entry.rb +84 -0
- data/lib/hobix/facets/comments.rb +99 -0
- data/lib/hobix/facets/publisher.rb +314 -0
- data/lib/hobix/facets/trackbacks.rb +80 -0
- data/lib/hobix/linklist.rb +81 -0
- data/lib/hobix/out/atom.rb +101 -0
- data/lib/hobix/out/erb.rb +64 -0
- data/lib/hobix/out/okaynews.rb +55 -0
- data/lib/hobix/out/quick.rb +314 -0
- data/lib/hobix/out/rdf.rb +97 -0
- data/lib/hobix/out/redrum.rb +26 -0
- data/lib/hobix/out/rss.rb +128 -0
- data/lib/hobix/plugin/akismet.rb +196 -0
- data/lib/hobix/plugin/bloglines.rb +73 -0
- data/lib/hobix/plugin/calendar.rb +212 -0
- data/lib/hobix/plugin/flickr.rb +110 -0
- data/lib/hobix/plugin/recent_comments.rb +84 -0
- data/lib/hobix/plugin/sections.rb +91 -0
- data/lib/hobix/plugin/tags.rb +60 -0
- data/lib/hobix/publish/ping.rb +53 -0
- data/lib/hobix/publish/replicate.rb +283 -0
- data/lib/hobix/publisher.rb +18 -0
- data/lib/hobix/search/dictionary.rb +141 -0
- data/lib/hobix/search/porter_stemmer.rb +203 -0
- data/lib/hobix/search/simple.rb +209 -0
- data/lib/hobix/search/vector.rb +100 -0
- data/lib/hobix/storage/filesys.rb +408 -0
- data/lib/hobix/trackbacks.rb +93 -0
- data/lib/hobix/util/objedit.rb +193 -0
- data/lib/hobix/util/patcher.rb +155 -0
- data/lib/hobix/webapp/cli.rb +195 -0
- data/lib/hobix/webapp/htmlform.rb +107 -0
- data/lib/hobix/webapp/message.rb +177 -0
- data/lib/hobix/webapp/urigen.rb +141 -0
- data/lib/hobix/webapp/webrick-servlet.rb +90 -0
- data/lib/hobix/webapp.rb +723 -0
- data/lib/hobix/weblog.rb +893 -0
- data/lib/hobix.rb +230 -0
- data/share/default-blog/hobix.yaml +16 -0
- data/share/default-blog/htdocs/site.css +174 -0
- data/share/default-blog/skel/entry.html.quick +0 -0
- data/share/default-blog/skel/index.atom.atom +0 -0
- data/share/default-blog/skel/index.html.quick-summary +0 -0
- data/share/default-blog/skel/index.xml.rss +0 -0
- data/share/default-blog/skel/index.yaml.okaynews +0 -0
- data/share/default-blog/skel/monthly.html.quick-archive +0 -0
- data/share/default-blog/skel/section.html.quick-archive +0 -0
- data/share/default-blog/skel/yearly.html.quick-archive +0 -0
- data/share/default-blog-modes.yaml +7 -0
- data/share/default-blog.apache-cgi.patch +8 -0
- data/share/default-blog.apache-ssi.patch +38 -0
- data/share/default-blog.apache2-ssi.patch +3 -0
- data/share/default-blog.cgi.patch +8 -0
- data/share/default-blog.comments.patch +5 -0
- data/share/default-blog.prototype.patch +766 -0
- data/share/default-blog.publisher.patch +5 -0
- data/share/default-blog.wiki.patch +29 -0
- data/share/publisher/css/control.css +90 -0
- data/share/publisher/css/form.css +238 -0
- data/share/publisher/css/form.import.css +72 -0
- data/share/publisher/css/main-menu.css +134 -0
- data/share/publisher/i/hobix-emblazen-1.png +0 -0
- data/share/publisher/i/hobix-emblazen-2.png +0 -0
- data/share/publisher/i/hobix-emblazen-3.png +0 -0
- data/share/publisher/i/hobix-emblazen-4.png +0 -0
- data/share/publisher/i/hobix-emblazen-5.png +0 -0
- data/share/publisher/i/hobix-emblazen-6.png +0 -0
- data/share/publisher/i/hobix-emblazen-7.png +0 -0
- data/share/publisher/index.erb +66 -0
- data/share/publisher/js/controls.js +261 -0
- data/share/publisher/js/dragdrop.js +476 -0
- data/share/publisher/js/effects.js +570 -0
- data/share/publisher/js/prototype.js +1011 -0
- metadata +230 -0
data/lib/hobix.rb
ADDED
@@ -0,0 +1,230 @@
|
|
1
|
+
#
|
2
|
+
# = hobix.rb
|
3
|
+
#
|
4
|
+
# Hobix command-line weblog system.
|
5
|
+
#
|
6
|
+
# Copyright (c) 2003-2004 why the lucky stiff
|
7
|
+
#
|
8
|
+
# Written & maintained by why the lucky stiff <why@ruby-lang.org>
|
9
|
+
#
|
10
|
+
# This program is free software, released under a BSD license.
|
11
|
+
# See COPYING for details.
|
12
|
+
#
|
13
|
+
#--
|
14
|
+
# $Id$
|
15
|
+
#++
|
16
|
+
require 'hobix/config'
|
17
|
+
require 'hobix/weblog'
|
18
|
+
require 'rbconfig'
|
19
|
+
|
20
|
+
# = Hobix
|
21
|
+
#
|
22
|
+
# Hobix is a complete blogging system, designed to be managed
|
23
|
+
# on the file system and accessed through a command-line application.
|
24
|
+
#
|
25
|
+
# The command-line application is powered by this Ruby library
|
26
|
+
# which is designed to be fully scriptable and extensible.
|
27
|
+
#
|
28
|
+
# = Module Map
|
29
|
+
#
|
30
|
+
# Here is a map of the core modules which are loaded when you
|
31
|
+
# require 'hobix' in your script.
|
32
|
+
#
|
33
|
+
# Hobix::Weblog:: Generally, this module is the starting point.
|
34
|
+
# Load a weblog's configuration into a Hobix::Weblog
|
35
|
+
# object, which can be used to query entries,
|
36
|
+
# generate pages, and edit any part of the site.
|
37
|
+
# (from 'hobix/weblog')
|
38
|
+
#
|
39
|
+
# Hobix::Page:: Whenever a template is generated into output,
|
40
|
+
# a Page object is passed in, describing the
|
41
|
+
# links to neighboring pages and update time.
|
42
|
+
# (from 'hobix/weblog')
|
43
|
+
#
|
44
|
+
# Hobix::Entry:: Using an entry's id (or shortName), you can
|
45
|
+
# load Entry objects, which contain all the
|
46
|
+
# content and rendering details for an entry.
|
47
|
+
# (from 'hobix/entry')
|
48
|
+
#
|
49
|
+
# Hobix::EntryEnum:: When Hobix supplies a template with a list of
|
50
|
+
# entry classes, this module is mixed in.
|
51
|
+
# (from 'hobix/entry')
|
52
|
+
#
|
53
|
+
# Hobix::LinkList:: An Entry subclass, used for storing links.
|
54
|
+
# (from 'hobix/linklist')
|
55
|
+
#
|
56
|
+
# Hobix::BasePlugin:: All Hobix plugins inherit from this class.
|
57
|
+
# The class uses Ruby's +inherited+ hook to
|
58
|
+
# identify plugins.
|
59
|
+
# (from 'hobix/base')
|
60
|
+
#
|
61
|
+
# Hobix::BaseStorage:: All storage plugins inherit from this class.
|
62
|
+
# Storage plugins exclusively store the weblog entries.
|
63
|
+
# (from 'hobix/base')
|
64
|
+
#
|
65
|
+
# Hobix::BaseOutput:: All output plugins inherit from this class.
|
66
|
+
# Output plugins are attached to specific template
|
67
|
+
# types and they feed entries into the template.
|
68
|
+
# (from 'hobix/base')
|
69
|
+
#
|
70
|
+
# Hobix::BasePublish:: All publisher plugins inherit from this class.
|
71
|
+
# Publisher plugins are notified when certain
|
72
|
+
# pages are updated. For example, the +ping+
|
73
|
+
# plugin will ping blog directories if the `index'
|
74
|
+
# pages are updated.
|
75
|
+
# (from 'hobix/base')
|
76
|
+
#
|
77
|
+
# Hobix::Config:: Users individually store their personal settings
|
78
|
+
# and weblog paths in .hobixrc. This class
|
79
|
+
# is used to load and manipulate the settings file.
|
80
|
+
# (from 'hobix/config')
|
81
|
+
#
|
82
|
+
# Hobix comes with a few plugins, for which documentation is also
|
83
|
+
# available.
|
84
|
+
#
|
85
|
+
# Hobix::Storage::Filesys:: This plugin stores entries in separate YAML
|
86
|
+
# files. Directories can be used to categorize
|
87
|
+
# and organize entries.
|
88
|
+
# (from 'hobix/storage/filesys')
|
89
|
+
#
|
90
|
+
# Hobix::Out::ERB:: This output plugin handles .erb templates.
|
91
|
+
# Page and entry data are passed in as variables.
|
92
|
+
# ERuby markup is used in the document to script
|
93
|
+
# against those variables.
|
94
|
+
# (from 'hobix/out/erb')
|
95
|
+
#
|
96
|
+
# Hobix::Out::RedRum:: This output plugin handles .redrum templates.
|
97
|
+
# These templates contain ERuby as well. The output
|
98
|
+
# generated by the page is passed through RedCloth,
|
99
|
+
# a Textile processor. This way, you can write
|
100
|
+
# your templates in Textile with ERuby scripting.
|
101
|
+
# (from 'hobix/out/redrum')
|
102
|
+
#
|
103
|
+
# Hobix::Out::RSS:: This output plugin handles .rss templates.
|
104
|
+
# These templates are empty and simply signify to
|
105
|
+
# the plugin that an RSS 2.0 feed should be generated
|
106
|
+
# for the entry data.
|
107
|
+
# (from 'hobix/out/rss')
|
108
|
+
#
|
109
|
+
# Hobix::Out::Atom:: This output plugin handles .atom templates.
|
110
|
+
# Just like the RSS plugin, but generates an Atom feed.
|
111
|
+
# (from 'hobix/out/atom')
|
112
|
+
#
|
113
|
+
# Hobix::Out::OkayNews:: This output plugin handles .okaynews templates.
|
114
|
+
# Just like the Atom and RSS plugins, but generates
|
115
|
+
# !okay/news, a YAML syndication feed.
|
116
|
+
# (from 'hobix/out/okaynews')
|
117
|
+
#
|
118
|
+
# Hobix::Publish::Ping:: This publisher plugin pings blog directories when the
|
119
|
+
# 'index' pages are published on a regen or upgen.
|
120
|
+
#
|
121
|
+
# = Examples
|
122
|
+
#
|
123
|
+
# Here are a few short examples to give you a feel for how Hobix can be
|
124
|
+
# scripted. Refer to individual module's documentation for more.
|
125
|
+
#
|
126
|
+
# == Example 1: Regenerating a weblog
|
127
|
+
#
|
128
|
+
# The first step is to load the Weblog object.
|
129
|
+
#
|
130
|
+
# require 'hobix'
|
131
|
+
# weblog = Hobix::Weblog.load( '/my/blahhg/hobix.yaml' )
|
132
|
+
#
|
133
|
+
# With the weblog loaded, we'll now want to load a template.
|
134
|
+
# Templates are stored in the weblog's +skel_path+ accessor.
|
135
|
+
#
|
136
|
+
# tpl_path = File.join( weblog.skel_path, 'index.html.erb' )
|
137
|
+
#
|
138
|
+
# We give the path to the editor. When we are done editing,
|
139
|
+
# the editor saves to the original path. We can then trigger
|
140
|
+
# a rebuild.
|
141
|
+
#
|
142
|
+
# weblog.regenerate :update
|
143
|
+
#
|
144
|
+
# The :update indicates that not every file will be regenerated,
|
145
|
+
# only those affected by the change.
|
146
|
+
#
|
147
|
+
# == Example 2: E-mail notify on publish
|
148
|
+
#
|
149
|
+
# Publisher plugins are used to perform actions when the site
|
150
|
+
# has an upgen or regen. Hobix plugins are absolutely the simplest
|
151
|
+
# Ruby coding ever. Watch.
|
152
|
+
#
|
153
|
+
# require 'net/smtp'
|
154
|
+
#
|
155
|
+
# module Hobix::Publish
|
156
|
+
# class Email < Hobix::BasePublish
|
157
|
+
# def initialize( weblog, emails ); end
|
158
|
+
# def watch; ['entry']; end
|
159
|
+
# def publish( page_name ); end
|
160
|
+
# end
|
161
|
+
# end
|
162
|
+
#
|
163
|
+
# This plugin doesn't do anything yet. But it won't throw any errors.
|
164
|
+
# This is our skeleton for a plugin that will e-mail us when there are
|
165
|
+
# updates to the site.
|
166
|
+
#
|
167
|
+
# The +watch+ method monitors certain page prefixes. The `entry' prefix
|
168
|
+
# indicates that this publish plugin looks for changes to any entry on
|
169
|
+
# the site.
|
170
|
+
#
|
171
|
+
# The +initialize+ method is important as well. It receives the
|
172
|
+
# +Hobix::Weblog+ object the publishing took place on. The _emails_
|
173
|
+
# parameter is supplied a list of e-mail address from the weblog's
|
174
|
+
# hobix.yaml configuration.
|
175
|
+
#
|
176
|
+
# When a plugin is initialized it is given the weblog object and
|
177
|
+
# any data which is supplied in the weblog configuration. Here is
|
178
|
+
# what the hobix.yaml looks like:
|
179
|
+
#
|
180
|
+
# requires:
|
181
|
+
# - hobix/storage/filesys
|
182
|
+
# - hobix/out/erb
|
183
|
+
# - hobix/publish/ping: [http://ping.blo.gs:80/]
|
184
|
+
#
|
185
|
+
# In the above configuration, an Array is passed to the Ping plugin.
|
186
|
+
# So that's what we'll receive here.
|
187
|
+
#
|
188
|
+
# To get our e-mail sending, let's fill in the +initialize+ and
|
189
|
+
# +publish+ methods.
|
190
|
+
#
|
191
|
+
# def initialize( weblog, emails )
|
192
|
+
# @weblog = weblog
|
193
|
+
# @emails = emails
|
194
|
+
# end
|
195
|
+
# def publish( page_name )
|
196
|
+
# Net::SMTP.start( 'localhost', 25 ) do |smtp|
|
197
|
+
# @emails.each do |email|
|
198
|
+
# smtp.send_message <<MSG, 'your@site.com', email
|
199
|
+
# From: your@site.com
|
200
|
+
# To: #{ email }
|
201
|
+
#
|
202
|
+
# The site has been updated.
|
203
|
+
# MSG
|
204
|
+
# end
|
205
|
+
# end
|
206
|
+
# end
|
207
|
+
#
|
208
|
+
|
209
|
+
module Hobix
|
210
|
+
## Version used to compare installations
|
211
|
+
VERSION = '0.5'
|
212
|
+
## CVS information
|
213
|
+
CVS_ID = "$Id$"
|
214
|
+
CVS_REV = "$Revision$"[11..-3]
|
215
|
+
## Share directory contains external data files
|
216
|
+
share_path = File.expand_path('../../share', __FILE__)
|
217
|
+
if File.exists? share_path
|
218
|
+
SHARE_PATH = share_path
|
219
|
+
else
|
220
|
+
SHARE_PATH = "#{ ::Config::CONFIG['datadir'] }/hobix/"
|
221
|
+
end
|
222
|
+
|
223
|
+
## Get a top-level constant from a string
|
224
|
+
def self.const_find( tclass )
|
225
|
+
obj_class = Object
|
226
|
+
tclass.split( "::" ).each { |c| obj_class = obj_class.const_get( c ) }
|
227
|
+
obj_class
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
--- !hobix.com,2004/weblog
|
2
|
+
title: a bokononist asks
|
3
|
+
link: http://bokononist.hobix.com/
|
4
|
+
tagline: "nice, nice, very nice"
|
5
|
+
period: 00:60:00
|
6
|
+
authors: {}
|
7
|
+
linklist:
|
8
|
+
- hobix: http://hobix.com/
|
9
|
+
- del.icio.us: http://del.icio.us/
|
10
|
+
requires:
|
11
|
+
- hobix/storage/filesys
|
12
|
+
- hobix/out/quick
|
13
|
+
- hobix/out/erb
|
14
|
+
- hobix/out/rss
|
15
|
+
- hobix/out/okaynews
|
16
|
+
- hobix/out/atom
|
@@ -0,0 +1,174 @@
|
|
1
|
+
body {
|
2
|
+
font-family: georgia, serif;
|
3
|
+
margin: 20px 60px 60px 60px;
|
4
|
+
background: #F1F8FF;
|
5
|
+
}
|
6
|
+
|
7
|
+
A { color: #003366; text-decoration: underline; }
|
8
|
+
A:link { color: #003366; text-decoration: underline; }
|
9
|
+
A:visited { color: #003366; text-decoration: underline; }
|
10
|
+
A:active { color: #999999; }
|
11
|
+
A:hover { color: #999999; }
|
12
|
+
|
13
|
+
h1, h2, h3 {
|
14
|
+
margin: 0px;
|
15
|
+
padding: 0px;
|
16
|
+
}
|
17
|
+
|
18
|
+
#page {
|
19
|
+
width: 680px;
|
20
|
+
background: #F8F1FF;
|
21
|
+
border: solid 2px #333;
|
22
|
+
margin: 0 auto;
|
23
|
+
}
|
24
|
+
|
25
|
+
#page:after {
|
26
|
+
content: ".";
|
27
|
+
display: block;
|
28
|
+
height: 0;
|
29
|
+
clear: both;
|
30
|
+
visibility: hidden;
|
31
|
+
}
|
32
|
+
|
33
|
+
#banner h1 {
|
34
|
+
font-size: 32pt;
|
35
|
+
text-align: center;
|
36
|
+
}
|
37
|
+
|
38
|
+
#banner a,
|
39
|
+
#banner a:link,
|
40
|
+
#banner a:visited,
|
41
|
+
#banner a:active,
|
42
|
+
#banner a:hover {
|
43
|
+
color: #333;
|
44
|
+
text-decoration: none;
|
45
|
+
}
|
46
|
+
|
47
|
+
#sidebar {
|
48
|
+
float:right;
|
49
|
+
font-family: arial, sans-serif;
|
50
|
+
font-size: 10pt;
|
51
|
+
padding:5px 5px 20px 5px;
|
52
|
+
width:90px;
|
53
|
+
}
|
54
|
+
|
55
|
+
#blog {
|
56
|
+
border-right: dotted 1px black;
|
57
|
+
width:560px;
|
58
|
+
padding:20px 5px 20px 10px;
|
59
|
+
}
|
60
|
+
|
61
|
+
.tagline {
|
62
|
+
border-top: dotted 1px black;
|
63
|
+
border-bottom: dotted 1px black;
|
64
|
+
font-size: 11pt;
|
65
|
+
padding:3px;
|
66
|
+
text-align: center;
|
67
|
+
}
|
68
|
+
|
69
|
+
.dayHeader {
|
70
|
+
border: dotted 1px #888;
|
71
|
+
background: #FFFFF1;
|
72
|
+
color: #333;
|
73
|
+
float: left;
|
74
|
+
width: 70px;
|
75
|
+
font-size: 8pt;
|
76
|
+
font-family: arial, sans-serif;
|
77
|
+
margin-top: 4px;
|
78
|
+
padding:5px;
|
79
|
+
text-align: center;
|
80
|
+
}
|
81
|
+
|
82
|
+
.entry {
|
83
|
+
float: right;
|
84
|
+
width: 460px;
|
85
|
+
padding:0px 8px;
|
86
|
+
}
|
87
|
+
|
88
|
+
.entryTitle {
|
89
|
+
font-size: 16pt;
|
90
|
+
line-height:120%;
|
91
|
+
color: #345;
|
92
|
+
}
|
93
|
+
|
94
|
+
.entryTagline {
|
95
|
+
font-size: 9pt;
|
96
|
+
line-height:200%;
|
97
|
+
color: #345;
|
98
|
+
}
|
99
|
+
|
100
|
+
.entryContent {
|
101
|
+
font-family:arial, sans-serif;
|
102
|
+
color:#333;
|
103
|
+
font-size: 10pt;
|
104
|
+
font-weight:normal;
|
105
|
+
line-height:200%;
|
106
|
+
padding: 10px 0px;
|
107
|
+
}
|
108
|
+
|
109
|
+
.entryContent p {
|
110
|
+
padding: 0px;
|
111
|
+
margin: 0px;
|
112
|
+
}
|
113
|
+
|
114
|
+
.entryContent a,
|
115
|
+
.entryContent a:link,
|
116
|
+
.entryContent a:visited,
|
117
|
+
.entryContent a:active,
|
118
|
+
.entryContent a:hover {
|
119
|
+
font-weight: normal;
|
120
|
+
text-decoration: underline;
|
121
|
+
}
|
122
|
+
|
123
|
+
.entryFooter {
|
124
|
+
margin-left:100px;
|
125
|
+
width:430px;
|
126
|
+
color:#334455;
|
127
|
+
font-family:arial, sans-serif;
|
128
|
+
font-size:8pt;
|
129
|
+
text-align:right;
|
130
|
+
padding:3px;
|
131
|
+
padding:20px;
|
132
|
+
}
|
133
|
+
|
134
|
+
.entryFooter a,
|
135
|
+
.entryFooter a:link,
|
136
|
+
.entryFooter a:visited,
|
137
|
+
.entryFooter a:active,
|
138
|
+
.entryFooter a:hover {
|
139
|
+
font-weight: normal;
|
140
|
+
text-decoration: underline;
|
141
|
+
}
|
142
|
+
|
143
|
+
.sidebarTitle {
|
144
|
+
color: #534;
|
145
|
+
font-size: 10pt;
|
146
|
+
padding:5px 0px;
|
147
|
+
}
|
148
|
+
|
149
|
+
.sidebarBox {
|
150
|
+
font-size: 8pt;
|
151
|
+
padding-top: 6px;
|
152
|
+
}
|
153
|
+
|
154
|
+
.sidebarBox ul, #archives ul {
|
155
|
+
margin:0px;
|
156
|
+
padding:0px;
|
157
|
+
}
|
158
|
+
|
159
|
+
.sidebarBox li, #archives li {
|
160
|
+
display: block;
|
161
|
+
list-style-image: none;
|
162
|
+
list-style-type: none;
|
163
|
+
padding-bottom: 3px;
|
164
|
+
}
|
165
|
+
|
166
|
+
#archives .entryTitle {
|
167
|
+
font-weight: normal;
|
168
|
+
padding: 0px 10px 10px 10px;
|
169
|
+
}
|
170
|
+
|
171
|
+
.sidebarBox p {
|
172
|
+
margin:0px;
|
173
|
+
padding:0px;
|
174
|
+
}
|
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,7 @@
|
|
1
|
+
apache1-ssi: [apache-ssi]
|
2
|
+
apache2-ssi: [apache-ssi, apache2-ssi]
|
3
|
+
apache-comments: [cgi, apache-cgi, prototype, comments]
|
4
|
+
# apache-wiki: [cgi, apache-cgi, wiki]
|
5
|
+
# apache-publisher: [cgi, apache-cgi, prototype, publisher]
|
6
|
+
apache1-all: [apache-ssi, cgi, apache-cgi, prototype, comments]
|
7
|
+
apache2-all: [apache-ssi, apache2-ssi, cgi, apache-cgi, prototype, comments]
|
@@ -0,0 +1,38 @@
|
|
1
|
+
--- !hobix.com,2004/patches/^list
|
2
|
+
hobix.yaml: !^yaml-merge
|
3
|
+
requires:
|
4
|
+
- local
|
5
|
+
|
6
|
+
lib/local.rb: !^file-create |
|
7
|
+
module Hobix
|
8
|
+
class Weblog
|
9
|
+
def skel_sidebar( path_storage, section_path )
|
10
|
+
months = path_storage.get_months( storage.find )
|
11
|
+
page = Page.new( 'sidebar' )
|
12
|
+
page.updated = Time.now
|
13
|
+
yield :page => page, :months => months
|
14
|
+
end
|
15
|
+
end
|
16
|
+
class Out::Quick
|
17
|
+
def sidebar_erb
|
18
|
+
%{<!--#include virtual="<%= weblog.expand_path( 'sidebar.html' ) %>"-->}
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
skel/sidebar.html.quick: !^file-create |
|
24
|
+
page: <+ sidebar +>
|
25
|
+
sidebar: |
|
26
|
+
<div id="sidebar">
|
27
|
+
<+ sidebar_list +>
|
28
|
+
</div>
|
29
|
+
|
30
|
+
sidebar_archive: |
|
31
|
+
<div class="sidebarBox">
|
32
|
+
<h2 class="sidebarTitle">Archive</h2>
|
33
|
+
<ul>
|
34
|
+
<% months.reverse.each do |month_start, month_end, month_id| %>
|
35
|
+
<li><a href="<%= weblog.expand_path month_id %>"><%= month_start.strftime( "%B %Y" ) %></a></li>
|
36
|
+
<% end %>
|
37
|
+
</ul>
|
38
|
+
</div>
|