hobix 0.6

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.
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