hobix 0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. data/COPYING +18 -0
  2. data/README +18 -0
  3. data/Rakefile +96 -0
  4. data/bin/hobix +94 -0
  5. data/contrib/blosxom-to-hobix.rb +253 -0
  6. data/contrib/txp-to-hobix.rb +56 -0
  7. data/contrib/webrick-all-mine.rb +20 -0
  8. data/doc/CHANGELOG +285 -0
  9. data/doc/rdoc/classes/Hobix/API.html +382 -0
  10. data/doc/rdoc/classes/Hobix/Article.html +111 -0
  11. data/doc/rdoc/classes/Hobix/BaseContent.html +692 -0
  12. data/doc/rdoc/classes/Hobix/BaseEntry.html +218 -0
  13. data/doc/rdoc/classes/Hobix/BaseFacet.html +205 -0
  14. data/doc/rdoc/classes/Hobix/BaseOutput.html +122 -0
  15. data/doc/rdoc/classes/Hobix/BasePlugin.html +201 -0
  16. data/doc/rdoc/classes/Hobix/BaseProperties/ClassMethods.html +243 -0
  17. data/doc/rdoc/classes/Hobix/BaseProperties.html +218 -0
  18. data/doc/rdoc/classes/Hobix/BasePublish.html +157 -0
  19. data/doc/rdoc/classes/Hobix/BaseStorage.html +417 -0
  20. data/doc/rdoc/classes/Hobix/BixWik/Entry.html +196 -0
  21. data/doc/rdoc/classes/Hobix/BixWik/IndexEntry.html +170 -0
  22. data/doc/rdoc/classes/Hobix/BixWik/WikiRedCloth.html +111 -0
  23. data/doc/rdoc/classes/Hobix/BixWik.html +418 -0
  24. data/doc/rdoc/classes/Hobix/BixWikPlugin.html +158 -0
  25. data/doc/rdoc/classes/Hobix/CommandLine.html +1970 -0
  26. data/doc/rdoc/classes/Hobix/Comment.html +113 -0
  27. data/doc/rdoc/classes/Hobix/Config.html +212 -0
  28. data/doc/rdoc/classes/Hobix/DataMarsh.html +667 -0
  29. data/doc/rdoc/classes/Hobix/Entry.html +178 -0
  30. data/doc/rdoc/classes/Hobix/EntryEnum.html +162 -0
  31. data/doc/rdoc/classes/Hobix/Enumerable.html +170 -0
  32. data/doc/rdoc/classes/Hobix/Facets/WikiEdit.html +180 -0
  33. data/doc/rdoc/classes/Hobix/Facets.html +111 -0
  34. data/doc/rdoc/classes/Hobix/LinkList.html +182 -0
  35. data/doc/rdoc/classes/Hobix/Out/Quick.html +412 -0
  36. data/doc/rdoc/classes/Hobix/Out.html +119 -0
  37. data/doc/rdoc/classes/Hobix/Page.html +381 -0
  38. data/doc/rdoc/classes/Hobix/Trackback.html +113 -0
  39. data/doc/rdoc/classes/Hobix/UriStr.html +198 -0
  40. data/doc/rdoc/classes/Hobix/WebApp/QueryString.html +207 -0
  41. data/doc/rdoc/classes/Hobix/WebApp/QueryValidationFailure.html +111 -0
  42. data/doc/rdoc/classes/Hobix/WebApp.html +1383 -0
  43. data/doc/rdoc/classes/Hobix/Weblog/AuthorNotFound.html +111 -0
  44. data/doc/rdoc/classes/Hobix/Weblog.html +2082 -0
  45. data/doc/rdoc/classes/Hobix.html +399 -0
  46. data/doc/rdoc/classes/Kernel.html +139 -0
  47. data/doc/rdoc/classes/Regexp.html +154 -0
  48. data/doc/rdoc/classes/YAML/Omap.html +144 -0
  49. data/doc/rdoc/classes/YAML.html +111 -0
  50. data/doc/rdoc/created.rid +1 -0
  51. data/doc/rdoc/files/COPYING.html +129 -0
  52. data/doc/rdoc/files/README.html +131 -0
  53. data/doc/rdoc/files/doc/CHANGELOG.html +101 -0
  54. data/doc/rdoc/files/lib/hobix/api_rb.html +119 -0
  55. data/doc/rdoc/files/lib/hobix/article_rb.html +126 -0
  56. data/doc/rdoc/files/lib/hobix/base_rb.html +128 -0
  57. data/doc/rdoc/files/lib/hobix/bixwik_rb.html +126 -0
  58. data/doc/rdoc/files/lib/hobix/commandline_rb.html +140 -0
  59. data/doc/rdoc/files/lib/hobix/comments_rb.html +126 -0
  60. data/doc/rdoc/files/lib/hobix/config_rb.html +125 -0
  61. data/doc/rdoc/files/lib/hobix/datamarsh_rb.html +108 -0
  62. data/doc/rdoc/files/lib/hobix/entry_rb.html +118 -0
  63. data/doc/rdoc/files/lib/hobix/linklist_rb.html +127 -0
  64. data/doc/rdoc/files/lib/hobix/publisher_rb.html +126 -0
  65. data/doc/rdoc/files/lib/hobix/trackbacks_rb.html +128 -0
  66. data/doc/rdoc/files/lib/hobix/webapp_rb.html +127 -0
  67. data/doc/rdoc/files/lib/hobix/weblog_rb.html +135 -0
  68. data/doc/rdoc/files/lib/hobix_rb.html +127 -0
  69. data/doc/rdoc/fr_class_index.html +67 -0
  70. data/doc/rdoc/fr_file_index.html +44 -0
  71. data/doc/rdoc/fr_method_index.html +307 -0
  72. data/doc/rdoc/index.html +24 -0
  73. data/doc/rdoc/rdoc-style.css +208 -0
  74. data/git_hobix_update.php +13 -0
  75. data/lib/hobix/api.rb +91 -0
  76. data/lib/hobix/article.rb +22 -0
  77. data/lib/hobix/base.rb +480 -0
  78. data/lib/hobix/bixwik.rb +200 -0
  79. data/lib/hobix/commandline.rb +677 -0
  80. data/lib/hobix/comments.rb +98 -0
  81. data/lib/hobix/config.rb +39 -0
  82. data/lib/hobix/datamarsh.rb +110 -0
  83. data/lib/hobix/entry.rb +84 -0
  84. data/lib/hobix/facets/comments.rb +99 -0
  85. data/lib/hobix/facets/publisher.rb +314 -0
  86. data/lib/hobix/facets/trackbacks.rb +80 -0
  87. data/lib/hobix/linklist.rb +81 -0
  88. data/lib/hobix/out/atom.rb +101 -0
  89. data/lib/hobix/out/erb.rb +64 -0
  90. data/lib/hobix/out/okaynews.rb +55 -0
  91. data/lib/hobix/out/quick.rb +314 -0
  92. data/lib/hobix/out/rdf.rb +97 -0
  93. data/lib/hobix/out/redrum.rb +26 -0
  94. data/lib/hobix/out/rss.rb +128 -0
  95. data/lib/hobix/plugin/akismet.rb +196 -0
  96. data/lib/hobix/plugin/bloglines.rb +73 -0
  97. data/lib/hobix/plugin/calendar.rb +212 -0
  98. data/lib/hobix/plugin/flickr.rb +110 -0
  99. data/lib/hobix/plugin/recent_comments.rb +84 -0
  100. data/lib/hobix/plugin/sections.rb +91 -0
  101. data/lib/hobix/plugin/tags.rb +60 -0
  102. data/lib/hobix/publish/ping.rb +53 -0
  103. data/lib/hobix/publish/replicate.rb +283 -0
  104. data/lib/hobix/publisher.rb +18 -0
  105. data/lib/hobix/search/dictionary.rb +141 -0
  106. data/lib/hobix/search/porter_stemmer.rb +203 -0
  107. data/lib/hobix/search/simple.rb +209 -0
  108. data/lib/hobix/search/vector.rb +100 -0
  109. data/lib/hobix/storage/filesys.rb +408 -0
  110. data/lib/hobix/trackbacks.rb +93 -0
  111. data/lib/hobix/util/objedit.rb +193 -0
  112. data/lib/hobix/util/patcher.rb +155 -0
  113. data/lib/hobix/webapp/cli.rb +195 -0
  114. data/lib/hobix/webapp/htmlform.rb +107 -0
  115. data/lib/hobix/webapp/message.rb +177 -0
  116. data/lib/hobix/webapp/urigen.rb +141 -0
  117. data/lib/hobix/webapp/webrick-servlet.rb +90 -0
  118. data/lib/hobix/webapp.rb +723 -0
  119. data/lib/hobix/weblog.rb +893 -0
  120. data/lib/hobix.rb +230 -0
  121. data/share/default-blog/hobix.yaml +16 -0
  122. data/share/default-blog/htdocs/site.css +174 -0
  123. data/share/default-blog/skel/entry.html.quick +0 -0
  124. data/share/default-blog/skel/index.atom.atom +0 -0
  125. data/share/default-blog/skel/index.html.quick-summary +0 -0
  126. data/share/default-blog/skel/index.xml.rss +0 -0
  127. data/share/default-blog/skel/index.yaml.okaynews +0 -0
  128. data/share/default-blog/skel/monthly.html.quick-archive +0 -0
  129. data/share/default-blog/skel/section.html.quick-archive +0 -0
  130. data/share/default-blog/skel/yearly.html.quick-archive +0 -0
  131. data/share/default-blog-modes.yaml +7 -0
  132. data/share/default-blog.apache-cgi.patch +8 -0
  133. data/share/default-blog.apache-ssi.patch +38 -0
  134. data/share/default-blog.apache2-ssi.patch +3 -0
  135. data/share/default-blog.cgi.patch +8 -0
  136. data/share/default-blog.comments.patch +5 -0
  137. data/share/default-blog.prototype.patch +766 -0
  138. data/share/default-blog.publisher.patch +5 -0
  139. data/share/default-blog.wiki.patch +29 -0
  140. data/share/publisher/css/control.css +90 -0
  141. data/share/publisher/css/form.css +238 -0
  142. data/share/publisher/css/form.import.css +72 -0
  143. data/share/publisher/css/main-menu.css +134 -0
  144. data/share/publisher/i/hobix-emblazen-1.png +0 -0
  145. data/share/publisher/i/hobix-emblazen-2.png +0 -0
  146. data/share/publisher/i/hobix-emblazen-3.png +0 -0
  147. data/share/publisher/i/hobix-emblazen-4.png +0 -0
  148. data/share/publisher/i/hobix-emblazen-5.png +0 -0
  149. data/share/publisher/i/hobix-emblazen-6.png +0 -0
  150. data/share/publisher/i/hobix-emblazen-7.png +0 -0
  151. data/share/publisher/index.erb +66 -0
  152. data/share/publisher/js/controls.js +261 -0
  153. data/share/publisher/js/dragdrop.js +476 -0
  154. data/share/publisher/js/effects.js +570 -0
  155. data/share/publisher/js/prototype.js +1011 -0
  156. 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
@@ -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,8 @@
1
+ --- !hobix.com,2004/patches/^list
2
+ htdocs/control/.htaccess: !^file-ensure |
3
+ AddHandler cgi-script .cgi
4
+ Options +FollowSymLinks +ExecCGI
5
+
6
+ RewriteEngine On
7
+ RewriteCond %{REQUEST_FILENAME} !-f
8
+ RewriteRule ^(.*)$ /control/hobix.cgi
@@ -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>
@@ -0,0 +1,3 @@
1
+ --- !hobix.com,2004/patches/^list
2
+ htdocs/.htaccess: !^file-ensure |
3
+ AddOutputFilter INCLUDES .html
@@ -0,0 +1,8 @@
1
+ --- !hobix.com,2004/patches/^list
2
+ htdocs/control/hobix.cgi: !^file-create |
3
+ #!/usr/bin/env ruby
4
+ require 'hobix/webapp'
5
+ require 'hobix/weblog'
6
+ Hobix::WebApp() do |web|
7
+ Hobix::Weblog.load( "../../hobix.yaml" ).facet_for( web )
8
+ end
@@ -0,0 +1,5 @@
1
+ --- !hobix.com,2004/patches/^list
2
+ hobix.yaml: !^yaml-merge
3
+ requires:
4
+ - hobix/out/quick
5
+ - hobix/comments