YurtCMS 0.2.0 → 0.3.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/yurtcms.rb +14 -6
- data/site/yurt/index.html +8 -3
- data/site/yurt/media/css/styles.css +31 -2
- data/site/yurt/media/images/admin_bg.gif +0 -0
- data/site/yurt/media/images/admin_head.jpg +0 -0
- data/site/yurt/media/images/directory.png +0 -0
- data/site/yurt/media/images/file.png +0 -0
- data/site/yurt/media/images/pane_bg.gif +0 -0
- data/site/yurt/media/images/spinner.gif +0 -0
- data/site/yurt/yurt.cgi +155 -13
- metadata +3 -2
data/lib/yurtcms.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
|
2
2
|
require 'yaml'
|
3
3
|
|
4
|
+
|
4
5
|
class YurtCMS
|
5
6
|
attr_reader :data_store, :web_root, :includes, :metatags, :partial, :ext
|
6
7
|
def initialize yurt_root
|
@@ -132,12 +133,19 @@
|
|
132
133
|
Dir.delete( f )
|
133
134
|
end
|
134
135
|
else
|
136
|
+
metadata = YAML.load( File.open( f ) )
|
137
|
+
|
135
138
|
File.delete( f )
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
139
|
+
|
140
|
+
if metadata['partial'] == 'y'
|
141
|
+
File.delete( path_to_content( obj ) )
|
142
|
+
else
|
143
|
+
[ :path_to_metatags,
|
144
|
+
:path_to_content,
|
145
|
+
:path_to_placeholder ].each do |p|
|
146
|
+
f = send( p, obj )
|
147
|
+
File.delete( f )
|
148
|
+
end
|
141
149
|
end
|
142
150
|
end
|
143
151
|
end
|
@@ -165,11 +173,11 @@
|
|
165
173
|
path = merge( input.path, sanitize_filename( input.filename ) )
|
166
174
|
|
167
175
|
write_file( path_to_orig_content( path ), make_content_as_yaml( input ) )
|
168
|
-
write_file( path_to_placeholder( path ), make_placeholder( path, input.template ) )
|
169
176
|
write_file( path_to_content( path ), parse_content( input.content ) )
|
170
177
|
|
171
178
|
if input.partial != "y"
|
172
179
|
write_file( path_to_metatags( path ), make_metatags( input ) )
|
180
|
+
write_file( path_to_placeholder( path ), make_placeholder( path, input.template ) )
|
173
181
|
end
|
174
182
|
end
|
175
183
|
end
|
data/site/yurt/index.html
CHANGED
@@ -51,21 +51,24 @@
|
|
51
51
|
}
|
52
52
|
|
53
53
|
function dispatch(url) {
|
54
|
+
Element.show('spinner');
|
54
55
|
url = url + "/" + resource;
|
55
56
|
var pars = '';
|
56
57
|
var target = 'workspace';
|
57
|
-
var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars});
|
58
|
+
var myAjax = new Ajax.Updater(target, url, {method: 'get', parameters: pars, evalScripts: true});
|
58
59
|
hideMenus();
|
59
60
|
}
|
60
61
|
|
61
62
|
function dispatch_post(url,formname) {
|
63
|
+
Element.show('spinner');
|
62
64
|
var pars = Form.serialize(formname);
|
63
65
|
var target = 'workspace';
|
64
|
-
var myAjax = new Ajax.Updater(target, url, {method: 'post', parameters: pars});
|
66
|
+
var myAjax = new Ajax.Updater(target, url, {method: 'post', parameters: pars, evalScripts: true});
|
65
67
|
hideMenus();
|
66
68
|
}
|
67
69
|
|
68
70
|
function openFolder(url) {
|
71
|
+
Element.show('spinner');
|
69
72
|
url = url + "/" + resource;
|
70
73
|
var pars = '';
|
71
74
|
var target;
|
@@ -80,13 +83,14 @@
|
|
80
83
|
}
|
81
84
|
|
82
85
|
function preview(content) {
|
86
|
+
Element.show('spinner');
|
83
87
|
// use an argument looking like this: document.forms["newfile"].content.value
|
84
88
|
|
85
89
|
var url = "/yurt/yurt.cgi/preview/"
|
86
90
|
var pars = 'c=' + escape( content );
|
87
91
|
var target = 'nf_preview';
|
88
92
|
|
89
|
-
var myAjax = new Ajax.Updater(target, url, {method: 'post', parameters: pars});
|
93
|
+
var myAjax = new Ajax.Updater(target, url, {method: 'post', parameters: pars, evalScripts: true});
|
90
94
|
}
|
91
95
|
|
92
96
|
function hideMenus() {
|
@@ -130,6 +134,7 @@
|
|
130
134
|
<li><a href="/yurt/yurt.cgi/edit" class="first" onclick="dispatch(this.href); return false;">Edit file...</a></li>
|
131
135
|
<li><a href="/yurt/yurt.cgi/delete" onclick="dispatch(this.href); return false;">Delete</a></li>
|
132
136
|
</ul>
|
137
|
+
<div id="spinner" style="display: none;"><img src="/yurt/media/images/spinner.gif" width="16" height="16" border="0" alt="" /></div>
|
133
138
|
</body>
|
134
139
|
</html>
|
135
140
|
|
@@ -25,7 +25,7 @@
|
|
25
25
|
|
26
26
|
.listing {
|
27
27
|
list-style: none;
|
28
|
-
font-family: Geneva;
|
28
|
+
font-family: Geneva, verdana;
|
29
29
|
}
|
30
30
|
|
31
31
|
#filelist li, #filelist ul {
|
@@ -102,13 +102,14 @@
|
|
102
102
|
background-color: #ddddd8;
|
103
103
|
border-top: 1px solid #000;
|
104
104
|
padding: 0.3em;
|
105
|
+
font-family: Geneva, verdana, sans-serif;
|
105
106
|
}
|
106
107
|
|
107
108
|
.actions {
|
108
109
|
margin: 0;
|
109
110
|
padding: 0;
|
110
111
|
list-style: none;
|
111
|
-
font-family: chicago;
|
112
|
+
font-family: chicago, verdana, sans-serif;
|
112
113
|
font-size: 0.9em;
|
113
114
|
width: 140px;
|
114
115
|
background-color: #eeeeec;
|
@@ -153,3 +154,31 @@
|
|
153
154
|
#directory_actions, #file_actions {
|
154
155
|
position: absolute;
|
155
156
|
}
|
157
|
+
|
158
|
+
#spinner {
|
159
|
+
position: absolute;
|
160
|
+
left: 70px;
|
161
|
+
top: 106px;
|
162
|
+
}
|
163
|
+
|
164
|
+
#nf_help table {
|
165
|
+
border-collapse: collapse;
|
166
|
+
}
|
167
|
+
|
168
|
+
#nf_help th {
|
169
|
+
font-size: 1.5em;
|
170
|
+
border: 1px solid black;
|
171
|
+
padding: 0.5em;
|
172
|
+
margin: 0;
|
173
|
+
}
|
174
|
+
|
175
|
+
#nf_help td {
|
176
|
+
border: 1px solid black;
|
177
|
+
padding: 1em;
|
178
|
+
margin: 0;
|
179
|
+
}
|
180
|
+
|
181
|
+
#nf_help td.code {
|
182
|
+
font-family: monospace;
|
183
|
+
}
|
184
|
+
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/site/yurt/yurt.cgi
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'yurtcms'
|
4
4
|
require 'camping'
|
5
|
-
require '
|
5
|
+
require 'bluecloth'
|
6
6
|
|
7
7
|
Camping.goes :Yurt
|
8
8
|
|
@@ -53,7 +53,6 @@ module Yurt::Controllers
|
|
53
53
|
class New_File < R '/new_file/([\w\/\.\-\_]*)'
|
54
54
|
def get path
|
55
55
|
@y = get_yurtcms
|
56
|
-
@p = @y.sanitize_path( path )
|
57
56
|
|
58
57
|
@f = Hash.new
|
59
58
|
@f['title'] = "page_title"
|
@@ -62,6 +61,7 @@ module Yurt::Controllers
|
|
62
61
|
@f['content'] = ""
|
63
62
|
@f['filename'] = "file_name"
|
64
63
|
@f['partial'] = ""
|
64
|
+
@f['path'] = @y.sanitize_path( path )
|
65
65
|
|
66
66
|
render :new_file
|
67
67
|
end
|
@@ -164,17 +164,18 @@ module Yurt::Views
|
|
164
164
|
text " x[x.length] = '" +@p + "/" + file + "';"
|
165
165
|
end
|
166
166
|
text " new EventDispenser(x);"
|
167
|
+
text " Element.hide('spinner');"
|
167
168
|
end
|
168
169
|
end
|
169
170
|
|
170
171
|
def new_file
|
171
172
|
text %Q(
|
172
|
-
<form action="/yurt/yurt.cgi/new_file/" method="post" name="newfile" class="dialog_box" id="newfile">
|
173
|
+
<form action="/yurt/yurt.cgi/new_file/" method="post" name="newfile" class="dialog_box" id="newfile" onsubmit="dispatch_post('/yurt/yurt.cgi/new_file/', 'newfile');return false;">
|
173
174
|
<fieldset>
|
174
175
|
<legend>
|
175
|
-
<a href="#" onclick="toggleTabs('nf_dialog', 'nf_preview', 'nf_help');">New File</a> |
|
176
|
-
<a href="#" onclick="toggleTabs('nf_preview', 'nf_dialog', 'nf_help');preview(document.forms['newfile'].content.value);">Preview</a> |
|
177
|
-
<a href="#" onclick="toggleTabs('nf_help', 'nf_dialog', 'nf_preview');">Help</a>
|
176
|
+
<a href="#" onclick="toggleTabs('nf_dialog', 'nf_preview', 'nf_help');return false;">New File</a> |
|
177
|
+
<a href="#" onclick="toggleTabs('nf_preview', 'nf_dialog', 'nf_help');preview(document.forms['newfile'].content.value);return false;">Preview</a> |
|
178
|
+
<a href="#" onclick="toggleTabs('nf_help', 'nf_dialog', 'nf_preview');return false;">Help</a>
|
178
179
|
</legend>
|
179
180
|
<div id="nf_dialog" class="dialog">
|
180
181
|
<label><input type="text" name="filename" value="#{ @f['filename'] }" /> File name</label>
|
@@ -187,31 +188,154 @@ module Yurt::Views
|
|
187
188
|
</div>
|
188
189
|
<textarea name="content" class="contentarea">#{ @f['content'] }</textarea>
|
189
190
|
<input type="hidden" name="path" value="#{@f['path']}" />
|
190
|
-
<input type="button" name="add" value="
|
191
|
+
<input type="button" name="add" value="Save" onclick="dispatch_post('/yurt/yurt.cgi/new_file/', 'newfile')" />
|
191
192
|
<input type="button" name="cancel" value="Cancel" onclick="dispatch('/yurt/yurt.cgi/cancel')" />
|
192
193
|
</div>
|
193
194
|
<div id="nf_preview" class="preview" style="display: none;">
|
194
195
|
</div>
|
195
196
|
<div id="nf_help" class="help" style="display: none;">
|
196
|
-
<p>
|
197
|
+
<p>The following chart will assist you as you're entering content.</p>
|
198
|
+
<table>
|
199
|
+
<tr>
|
200
|
+
<th>To Get:</th>
|
201
|
+
<th>Type:</th>
|
202
|
+
</tr>
|
203
|
+
<tr>
|
204
|
+
<td>A paragraph.</td>
|
205
|
+
<td>- one or more consecutive lines of text, followed by one or more blank lines.</td>
|
206
|
+
</tr>
|
207
|
+
<tr>
|
208
|
+
<td><h1>Heading 1</h1></td>
|
209
|
+
<td class="code"># Heading 1</td>
|
210
|
+
</tr>
|
211
|
+
<tr>
|
212
|
+
<td><h2>Heading 2</h2></td>
|
213
|
+
<td class="code">## Heading 2</td>
|
214
|
+
</tr>
|
215
|
+
<tr>
|
216
|
+
<td><h3>Heading 3</h3></td>
|
217
|
+
<td class="code">### Heading 3</td>
|
218
|
+
</tr>
|
219
|
+
<tr>
|
220
|
+
<td><h4>Heading 4</h4></td>
|
221
|
+
<td class="code">#### Heading 4</td>
|
222
|
+
</tr>
|
223
|
+
<tr>
|
224
|
+
<td><h5>Heading 5</h5></td>
|
225
|
+
<td class="code">##### Heading 5</td>
|
226
|
+
</tr>
|
227
|
+
<tr>
|
228
|
+
<td><h6>Heading 6</h6></td>
|
229
|
+
<td class="code">###### Heading 6</td>
|
230
|
+
</tr>
|
231
|
+
<tr>
|
232
|
+
<td><blockquote>
|
233
|
+
Insert a blockquote
|
234
|
+
</blockquote></td>
|
235
|
+
<td class="code">> one or more consecutive lines that start with '> ', followed by one or more blank lines.</td>
|
236
|
+
</tr>
|
237
|
+
<tr>
|
238
|
+
<td><ul>
|
239
|
+
<li>bullet list</li>
|
240
|
+
<li>bullet list</li>
|
241
|
+
</ul></td>
|
242
|
+
<td class="code">* bullet list<br />* bullet list</td>
|
243
|
+
</tr>
|
244
|
+
<tr>
|
245
|
+
<td><ol>
|
246
|
+
<li>numbered list</li>
|
247
|
+
<li>numbered list</li>
|
248
|
+
</ol></td>
|
249
|
+
<td class="code">1. numbered list<br />2. numbered list</td>
|
250
|
+
</tr>
|
251
|
+
<tr>
|
252
|
+
<td><hr /></td>
|
253
|
+
<td class="code">---- (3 or more hyphens)</td>
|
254
|
+
</tr>
|
255
|
+
<tr>
|
256
|
+
<td><a href="#">A link</a></td>
|
257
|
+
<td class="code">[A link](url goes here)</td>
|
258
|
+
</tr>
|
259
|
+
<tr>
|
260
|
+
<td><em>Italics</em></td>
|
261
|
+
<td class="code">*Italics*</td>
|
262
|
+
</tr>
|
263
|
+
<tr>
|
264
|
+
<td><strong>Bold</strong></td>
|
265
|
+
<td class="code">**Bold**</td>
|
266
|
+
</tr>
|
267
|
+
<tr>
|
268
|
+
<td>adding an image</td>
|
269
|
+
<td class="code">![alt text](path/to/image.jpg)</td>
|
270
|
+
</tr>
|
271
|
+
<tr>
|
272
|
+
<td colspan="2">In unusual circumstances, you might need some of the characters that were used above in it's literal sense. To get them, consult the following chart.</td>
|
273
|
+
</tr>
|
274
|
+
<tr>
|
275
|
+
<td>\\</td>
|
276
|
+
<td class="code">\\\\</td>
|
277
|
+
</tr>
|
278
|
+
<tr>
|
279
|
+
<td>`</td>
|
280
|
+
<td class="code">\\`</td>
|
281
|
+
</tr>
|
282
|
+
<tr>
|
283
|
+
<td>*</td>
|
284
|
+
<td class="code">\\*</td>
|
285
|
+
</tr>
|
286
|
+
<tr>
|
287
|
+
<td>_</td>
|
288
|
+
<td class="code">\\_</td>
|
289
|
+
</tr>
|
290
|
+
<tr>
|
291
|
+
<td>#</td>
|
292
|
+
<td class="code">\\#</td>
|
293
|
+
</tr>
|
294
|
+
<tr>
|
295
|
+
<td>.</td>
|
296
|
+
<td class="code">\\. (this is extremely rare)</td>
|
297
|
+
</tr>
|
298
|
+
<tr>
|
299
|
+
<td>!</td>
|
300
|
+
<td class="code">\\!</td>
|
301
|
+
</tr>
|
302
|
+
<tr>
|
303
|
+
<td>{}</td>
|
304
|
+
<td class="code">\\{\\}</td>
|
305
|
+
</tr>
|
306
|
+
<tr>
|
307
|
+
<td>()</td>
|
308
|
+
<td class="code">\\(\\)</td>
|
309
|
+
</tr>
|
310
|
+
<tr>
|
311
|
+
<td>[]</td>
|
312
|
+
<td class="code">\\[\\]</td>
|
313
|
+
</tr>
|
314
|
+
<tr>
|
315
|
+
<td colspan="2">If you need a more complete understanding of the Markdown syntax used in here, please consult <a href="http://daringfireball.net/projects/markdown/syntax" target="_new">the original Markdown syntax guide</a>.</td>
|
316
|
+
</tr>
|
317
|
+
</table>
|
197
318
|
</div>
|
198
319
|
</fieldset>
|
199
320
|
</form>
|
200
|
-
|
321
|
+
)
|
322
|
+
script do
|
323
|
+
text " Element.hide('spinner');"
|
324
|
+
end
|
201
325
|
end
|
202
326
|
|
203
327
|
def new_folder
|
204
328
|
text %Q(
|
205
|
-
<form action="/yurt/yurt.cgi/new_folder/" method="post" name="newfolder" class="dialog_box" id="newfolder">
|
329
|
+
<form action="/yurt/yurt.cgi/new_folder/" method="post" name="newfolder" class="dialog_box" id="newfolder" onsubmit="dispatch_post('/yurt/yurt.cgi/new_folder/', 'newfolder');return false;">
|
206
330
|
<fieldset>
|
207
331
|
<legend>
|
208
|
-
<a href="#" onclick="toggleTabs('nf_dialog', 'nf_help');">New Folder</a> |
|
209
|
-
<a href="#" onclick="toggleTabs('nf_help', 'nf_dialog');">Help</a>
|
332
|
+
<a href="#" onclick="toggleTabs('nf_dialog', 'nf_help');return false;">New Folder</a> |
|
333
|
+
<a href="#" onclick="toggleTabs('nf_help', 'nf_dialog');return false;">Help</a>
|
210
334
|
</legend>
|
211
335
|
<div id="nf_dialog" class="dialog">
|
212
336
|
<label><input type="text" name="foldername" value="" /> Folder name</label>
|
213
337
|
<input type="hidden" name="path" value="#{@p}" />
|
214
|
-
<input type="button" name="add" value="
|
338
|
+
<input type="button" name="add" value="Save" onclick="dispatch_post('/yurt/yurt.cgi/new_folder/', 'newfolder')" />
|
215
339
|
<input type="button" name="cancel" value="Cancel" onclick="dispatch('/yurt/yurt.cgi/cancel')" />
|
216
340
|
</div>
|
217
341
|
<div id="nf_help" class="help" style="display: none;">
|
@@ -220,26 +344,44 @@ module Yurt::Views
|
|
220
344
|
</fieldset>
|
221
345
|
</form>
|
222
346
|
)
|
347
|
+
script do
|
348
|
+
text " Element.hide('spinner');"
|
349
|
+
end
|
223
350
|
end
|
224
351
|
|
225
352
|
def preview
|
226
353
|
text @p
|
354
|
+
script do
|
355
|
+
text " Element.hide('spinner');"
|
356
|
+
end
|
227
357
|
end
|
228
358
|
|
229
359
|
def folder_created
|
230
360
|
text %q(<p>The folder was successfully created.</p>)
|
361
|
+
script do
|
362
|
+
text " Element.hide('spinner');"
|
363
|
+
end
|
231
364
|
end
|
232
365
|
|
233
366
|
def file_created
|
234
367
|
text %q(<p>The file was successfully created.</p>)
|
368
|
+
script do
|
369
|
+
text " Element.hide('spinner');"
|
370
|
+
end
|
235
371
|
end
|
236
372
|
|
237
373
|
def delete
|
238
374
|
text %q(<p>The Deletion was successful.</p>)
|
375
|
+
script do
|
376
|
+
text " Element.hide('spinner');"
|
377
|
+
end
|
239
378
|
end
|
240
379
|
|
241
380
|
def cancel
|
242
381
|
text " "
|
382
|
+
script do
|
383
|
+
text " Element.hide('spinner');"
|
384
|
+
end
|
243
385
|
end
|
244
386
|
|
245
387
|
end
|
metadata
CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.8.11
|
|
3
3
|
specification_version: 1
|
4
4
|
name: YurtCMS
|
5
5
|
version: !ruby/object:Gem::Version
|
6
|
-
version: 0.
|
7
|
-
date: 2006-
|
6
|
+
version: 0.3.1
|
7
|
+
date: 2006-11-13 00:00:00 -05:00
|
8
8
|
summary: The Web CMS that does less!
|
9
9
|
require_paths:
|
10
10
|
- lib
|
@@ -68,6 +68,7 @@ files:
|
|
68
68
|
- site/yurt/media/images/directory.png
|
69
69
|
- site/yurt/media/images/file.png
|
70
70
|
- site/yurt/media/images/pane_bg.gif
|
71
|
+
- site/yurt/media/images/spinner.gif
|
71
72
|
- site/yurt/media/js/prototype.js
|
72
73
|
- test/cms_filesystem.rb
|
73
74
|
- test/cms_strings.rb
|