pagoda-jekyll 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- MjBkZGRjOGIwMmM2ZGQwMjAxMzJlYjY2ODJjMjIzM2YxYTBiZmRlNg==
4
+ NmQ5MDVhNjhiMmY3ZTQ2MTA3ODExMGRlNDM3MzY3YmMxMzYxZGQ3YQ==
5
5
  data.tar.gz: !binary |-
6
- NmY1NzJjM2NiNzUyZDFiZGQwZjA3NDU5NTk1ZTA1YzhhMGVkODg1NQ==
6
+ M2VmNmE5Y2JjMDFmODRkM2ZjY2FkMDBkMTQzZTJmOWFmNTUwMTlkNA==
7
7
  !binary "U0hBNTEy":
8
8
  metadata.gz: !binary |-
9
- M2Y3OTlhYTZiZDA5ZDkzY2Y4MmUwMWQwMjc1YjZmZDhjNDAyODNiOTMwNTIz
10
- Y2U5ODUyNjZmYTEyYzU2ZWQzZWFhYmExZjU4MDg1NDYwN2I2NTM0NjgzYTFl
11
- YjdmODI3ZGM5OTI3NDE1ZTI0NTJlZjQzMjViZDRiYTJlYjlmZjU=
9
+ ODNiOTBiYzI1NmM4NTAwOTBmMjVlMmE0NGUyYjZkM2NhYWI5ZTNhMGM1YWY2
10
+ NDE1Y2YyZjljZGY5NTdjMjM5YmQ3NTM0NzFhNTY3YzZiNTAwNjNkZmZjNDFh
11
+ Nzc3OWM1ODkwYTM4YTFmMTNmNjM0MTM2ZWNkZmE2ZjlhZGFiMzY=
12
12
  data.tar.gz: !binary |-
13
- M2E0ZTQ4ZGM4NmU0NWNmYjNiOTM1ZTc4MjU0ZThjYWQ1OGJmMmI5MmYyNzc2
14
- ZDI3ZGM3MDg5NTVlMzIzM2E5YTJlODU3YjExYmE0NDM1Mzk2MGMzYzNkYjFk
15
- NDg4YWZlODg0MjQ5NGE1OWVhMjIzZDcwMjRhMDA1NjgyMWE5ZDc=
13
+ NjY1YTk3MmE1ODUyYTViOTQxNzNlZmEwNmQxNWY3MTNjNjlkNGZiNjg4OWIz
14
+ NGZhNmE5MTRiMDYwMjQzZDNhNmU1MTg5ZTViYzA3M2FlMDYxNGFjMjA4YjFj
15
+ NDRhOTg2Yjg1NzdiZTg1M2Y0NDAyZjZmMWUzY2I1YjgxNWY1ZGM=
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pagoda-jekyll (0.0.8)
4
+ pagoda-jekyll (0.0.9)
5
5
  grit
6
6
  jekyll
7
7
  json
data/README.md CHANGED
@@ -4,7 +4,7 @@ Pagoda [![Build Status](https://travis-ci.org/alagu/pagoda.png?branch=master)
4
4
 
5
5
  ![http://f.cl.ly/items/3v0Y3q2O461C3K0A221Y/pagoda.png](http://f.cl.ly/items/3v0Y3q2O461C3K0A221Y/pagoda.png)
6
6
 
7
- Zen like **blog editor** for your **Jekyll** blog, heavily inspired by Svbtle.
7
+ Zen like **blog editor** for your **Jekyll** blog, heavily inspired by [Svbtle](http://dcurt.is/codename-svbtle) and [Obtvse](https://github.com/natew/obtvse).
8
8
 
9
9
  Screenshots
10
10
  ===========
data/lib/pagoda/app.rb CHANGED
@@ -44,9 +44,17 @@ module Shwedagon
44
44
 
45
45
  # Merge existing yaml with post params
46
46
  def merge_config(yaml, params)
47
- yaml['published'] = !(params[:post].has_key? 'draft' and
48
- params[:post]['draft'] == 'on')
49
- yaml['title'] = params[:post][:title]
47
+ if params['post'].has_key? 'yaml'
48
+ params['post']['yaml'].each do |key, value|
49
+ if value == 'true'
50
+ yaml[key] = true
51
+ elsif value == 'false'
52
+ yaml[key] = false
53
+ else
54
+ yaml[key] = value
55
+ end
56
+ end
57
+ end
50
58
 
51
59
  yaml
52
60
  end
@@ -102,6 +110,13 @@ module Shwedagon
102
110
  @title = post.data['title']
103
111
  @content = post.content
104
112
  @name = post.name
113
+
114
+ @data_array = []
115
+
116
+ post.data.each do |key, value|
117
+ @data_array << {'key' => key, 'value' => value}
118
+ end
119
+
105
120
  if post.data['published'] == false
106
121
  @draft = true
107
122
  end
@@ -156,11 +156,15 @@ code {
156
156
  position: fixed;
157
157
  bottom: 0;
158
158
  left: 0;
159
- background: #333;
159
+ background: #bbb;
160
160
  color: #fff;
161
161
  width: 100%;
162
162
  text-align: center;
163
163
  padding: 10px 0 3px;
164
+ border-top: 1px solid #999;
165
+ -webkit-box-shadow: rgba(68, 68, 68, 0.9) 0 0 5px;
166
+ -moz-box-shadow: rgba(68, 68, 68, 0.9) 0 0 5px;
167
+ box-shadow: rgba(68, 68, 68, 0.9) 0 0 5px;
164
168
  }
165
169
  @media only screen and (max-device-width: 480px) {
166
170
  #publish-bar {
@@ -207,6 +211,101 @@ code {
207
211
  #publish-bar .sub-menu li {
208
212
  margin: 0 0 15px 0;
209
213
  }
214
+ #publish-bar .yaml-block {
215
+ display: inline-block;
216
+ }
217
+ #publish-bar .yaml-block .button {
218
+ cursor: pointer;
219
+ }
220
+ #publish-bar .yaml-block .arrow-box {
221
+ position: relative;
222
+ background: #aaa;
223
+ border: 2px solid #444444;
224
+ }
225
+ #publish-bar .yaml-block .arrow-box:after, #publish-bar .yaml-block .arrow-box:before {
226
+ top: 100%;
227
+ border: solid transparent;
228
+ content: " ";
229
+ height: 0;
230
+ width: 0;
231
+ position: absolute;
232
+ pointer-events: none;
233
+ }
234
+ #publish-bar .yaml-block .arrow-box:after {
235
+ border-color: rgba(119, 119, 119, 0);
236
+ border-top-color: #aaa;
237
+ border-width: 10px;
238
+ left: 50%;
239
+ margin-left: -10px;
240
+ }
241
+ #publish-bar .yaml-block .arrow-box:before {
242
+ border-color: rgba(68, 68, 68, 0);
243
+ border-top-color: #444444;
244
+ border-width: 13px;
245
+ left: 50%;
246
+ margin-left: -13px;
247
+ }
248
+ #publish-bar .yaml-block .yaml-table {
249
+ position: absolute;
250
+ background-color: #fff;
251
+ bottom: 10px;
252
+ left: 20px;
253
+ float: left;
254
+ background-color: #aaa;
255
+ display: none;
256
+ -webkit-border-radius: 2px;
257
+ -moz-border-radius: 2px;
258
+ -ms-border-radius: 2px;
259
+ -o-border-radius: 2px;
260
+ border-radius: 2px;
261
+ padding: 0px;
262
+ }
263
+ #publish-bar .yaml-block .yaml-table .yaml-table-inner {
264
+ background-color: #fff;
265
+ margin: 1px;
266
+ border: 1px solid rgba(68, 68, 68, 0.4);
267
+ }
268
+ #publish-bar .yaml-block .yaml-table ul {
269
+ margin: 0;
270
+ padding: 0;
271
+ }
272
+ #publish-bar .yaml-block .yaml-table ul li .key input, #publish-bar .yaml-block .yaml-table ul li .value input {
273
+ width: 90px;
274
+ border: 0 none;
275
+ margin: 0;
276
+ padding: 0;
277
+ color: #333;
278
+ font-family: 'Titillium Web', sans-serif;
279
+ font-size: 14px;
280
+ padding-left: 10px;
281
+ }
282
+ #publish-bar .yaml-block .yaml-table ul li .key, #publish-bar .yaml-block .yaml-table ul li .value {
283
+ border-bottom: 1px solid #777;
284
+ margin: 0;
285
+ padding: 0;
286
+ padding-bottom: 2px;
287
+ display: inline-block;
288
+ }
289
+ #publish-bar .yaml-block .yaml-table ul li .key {
290
+ border-right: 1px solid #777;
291
+ }
292
+ #publish-bar .yaml-block .yaml-table ul li .value {
293
+ margin-left: -3px;
294
+ }
295
+ #publish-bar .yaml-block .yaml-table ul li:last-child .key, #publish-bar .yaml-block .yaml-table ul li:last-child .value {
296
+ border-bottom: 0 none;
297
+ }
298
+ #publish-bar .yaml-block .yaml-table ul li.add-yaml-entry {
299
+ color: #fff;
300
+ text-shadow: 0px 0px 5px #000;
301
+ background-color: #aaa;
302
+ font-size: 14px;
303
+ line-height: 20px;
304
+ cursor: pointer;
305
+ }
306
+ #publish-bar .yaml-block .yaml-table ul li.add-yaml-entry:hover {
307
+ text-shadow: 0px 0px 20px #000;
308
+ }
210
309
 
211
310
  #publish-bar input[type=submit],
212
311
  #publish-bar a,
@@ -288,11 +387,6 @@ label {
288
387
  margin: 0 8px 0 0;
289
388
  }
290
389
 
291
- #post_draft {
292
- position: relative;
293
- margin: 0 20px 0 0;
294
- }
295
-
296
390
  .admin-links {
297
391
  position: absolute;
298
392
  text-align: right;
@@ -336,9 +430,9 @@ body.posts.new #admin {
336
430
  }
337
431
  #admin .draft-options {
338
432
  display: inline-block;
339
- border: 3px solid #777;
340
- border-radius: 10px;
341
- padding: 4px;
433
+ border: 3px solid #000;
434
+ border-radius: 5px;
435
+ padding: 1px;
342
436
  }
343
437
  @media only screen and (max-device-width: 480px) {
344
438
  #admin .draft-options {
@@ -346,14 +440,22 @@ body.posts.new #admin {
346
440
  }
347
441
  }
348
442
  #admin .draft-options a {
349
- font-size: 12px;
350
- padding: 2px 10px;
443
+ font-size: 15px;
444
+ padding: 4px 10px;
445
+ background-color: transparent;
446
+ color: #000;
447
+ border-radius: 4px;
351
448
  }
352
- #admin .draft-options a.selected {
353
- background-color: #00CDCD;
449
+ #admin .draft-options a.selected, #admin .draft-options a:hover {
450
+ background-color: #000;
451
+ color: #fff;
354
452
  }
355
- #admin .draft-options #post_draft {
356
- display: none;
453
+ #admin .draft-options a.override-select {
454
+ background-color: inherit;
455
+ color: #000;
456
+ }
457
+ #admin #save-button {
458
+ width: 90px;
357
459
  }
358
460
  #admin #save-button.saved {
359
461
  color: #999;
@@ -671,7 +773,7 @@ body {
671
773
  }
672
774
 
673
775
  @media only screen and (max-device-width: 480px) {
674
- #publish-bar .delete-bar, #publish-bar #draft_label, #publish-bar #post_draft {
776
+ #publish-bar .delete-bar, #publish-bar #draft_label {
675
777
  display: none;
676
778
  }
677
779
  }
@@ -1,3 +1,4 @@
1
+ @import "compass/css3";
1
2
  /* TODO: pull out coloring into variables */
2
3
  $linkhover: red;
3
4
  $iphone: "only screen and (max-device-width : 480px)";
@@ -151,11 +152,13 @@ code {
151
152
  position: fixed;
152
153
  bottom: 0;
153
154
  left: 0;
154
- background: #333;
155
+ background: #bbb;
155
156
  color: #fff;
156
157
  width: 100%;
157
158
  text-align: center;
158
159
  padding: 10px 0 3px;
160
+ border-top: 1px solid #999;
161
+ @include box-shadow(rgba(#444, 0.9) 0 0 5px);
159
162
 
160
163
  @media #{$iphone} {
161
164
  padding: 2px 0;
@@ -205,6 +208,115 @@ code {
205
208
  .sub-menu li {
206
209
  margin: 0 0 15px 0;
207
210
  }
211
+
212
+ .yaml-block {
213
+ display: inline-block;
214
+
215
+ .button {
216
+ cursor: pointer;
217
+ }
218
+
219
+ .arrow-box {
220
+ position: relative;
221
+ background: #aaa;
222
+ border: 2px solid #444444;
223
+ &:after, &:before {
224
+ top: 100%;
225
+ border: solid transparent;
226
+ content: " ";
227
+ height: 0;
228
+ width: 0;
229
+ position: absolute;
230
+ pointer-events: none;
231
+ }
232
+ &:after {
233
+ border-color: rgba(119, 119, 119, 0);
234
+ border-top-color: #aaa;
235
+ border-width: 10px;
236
+ left: 50%;
237
+ margin-left: -10px;
238
+ }
239
+ &:before {
240
+ border-color: rgba(68, 68, 68, 0);
241
+ border-top-color: #444444;
242
+ border-width: 13px;
243
+ left: 50%;
244
+ margin-left: -13px;
245
+ }
246
+ }
247
+
248
+ .yaml-table {
249
+ position: absolute;
250
+ background-color: #fff;
251
+ bottom: 10px;
252
+ left: 20px;
253
+ float: left;
254
+ background-color: #aaa;
255
+ display: none;
256
+
257
+ @include border-radius(2px);
258
+ padding: 0px;
259
+
260
+ .yaml-table-inner {
261
+ background-color: #fff;
262
+ margin: 1px;
263
+ border: 1px solid rgba(#444, 0.4);
264
+ }
265
+
266
+ ul {
267
+ margin: 0;
268
+ padding: 0;
269
+
270
+ li {
271
+ .key input, .value input {
272
+ width: 90px;
273
+ border: 0 none;
274
+ margin: 0;
275
+ padding: 0;
276
+ color: #333;
277
+ font-family: 'Titillium Web', sans-serif;
278
+ font-size: 14px;
279
+ padding-left: 10px;
280
+ }
281
+
282
+ .key, .value {
283
+ border-bottom: 1px solid #777;
284
+ margin: 0;
285
+ padding: 0;
286
+ padding-bottom: 2px;
287
+ display: inline-block;
288
+ }
289
+
290
+ .key {
291
+ border-right: 1px solid #777;
292
+ }
293
+
294
+ .value {
295
+ margin-left: -3px;
296
+ }
297
+
298
+ &:last-child {
299
+ .key, .value {
300
+ border-bottom: 0 none;
301
+ }
302
+ }
303
+ }
304
+
305
+ li.add-yaml-entry {
306
+ color: #fff;
307
+ text-shadow: 0px 0px 5px #000;
308
+ background-color: #aaa;
309
+ font-size: 14px;
310
+ line-height: 20px;
311
+ cursor: pointer;
312
+
313
+ &:hover {
314
+ text-shadow: 0px 0px 20px #000;
315
+ }
316
+ }
317
+ }
318
+ }
319
+ }
208
320
  }
209
321
 
210
322
  #publish-bar input[type=submit],
@@ -284,11 +396,6 @@ label {
284
396
  margin: 0 8px 0 0;
285
397
  }
286
398
 
287
- #post_draft {
288
- position: relative;
289
- margin: 0 20px 0 0;
290
- }
291
-
292
399
  .admin-links {
293
400
  position: absolute;
294
401
  text-align: right;
@@ -327,25 +434,34 @@ body.posts.new #admin {
327
434
 
328
435
  .draft-options {
329
436
  display: inline-block;
330
- border: 3px solid #777;
331
- border-radius: 10px;
332
- padding: 4px;
437
+ border: 3px solid #000;
438
+ border-radius: 5px;
439
+ padding: 1px;
333
440
  @media #{$iphone} { display: none; }
334
441
 
335
442
  a {
336
- font-size: 12px;
337
- padding: 2px 10px;
443
+ font-size: 15px;
444
+ padding: 4px 10px;
445
+ background-color: transparent;
446
+ color: #000;
447
+ border-radius: 4px;
338
448
  }
339
449
 
340
- a.selected {
341
- background-color: #00CDCD;
450
+ a.selected, a:hover {
451
+ background-color: #000;
452
+ color: #fff;
342
453
  }
343
454
 
344
- #post_draft {
345
- display: none;
455
+ a.override-select {
456
+ background-color: inherit;
457
+ color: #000;
346
458
  }
347
459
  }
348
-
460
+
461
+ #save-button {
462
+ width: 90px;
463
+ }
464
+
349
465
  #save-button.saved {
350
466
  color: #999;
351
467
 
@@ -677,7 +793,7 @@ body {
677
793
  }
678
794
 
679
795
  #publish-bar {
680
- .delete-bar, #draft_label, #post_draft {
796
+ .delete-bar, #draft_label {
681
797
  @media #{$iphone} { display: none; }
682
798
  }
683
799
  }
@@ -1,7 +1,5 @@
1
1
  $(document).ready ->
2
2
 
3
- # Keymaster doesn't allow INPUT, TEXTAREA to have shortcuts.
4
- # Override it.
5
3
  key.filter = (e)->
6
4
  true
7
5
 
@@ -13,12 +11,12 @@ $(document).ready ->
13
11
 
14
12
  set_save_button = (status)->
15
13
  if(status == 'saving')
16
- $('#save-button').val('Saving')
14
+ $('#save-button').val('SAVING')
17
15
  $('#save-button').addClass('post-saving')
18
16
  else if status == 'saved'
19
- $('#save-button').val('Saved')
17
+ $('#save-button').val('SAVED')
20
18
  setTimeout((->
21
- $('#save-button').val('Save')
19
+ $('#save-button').val('SAVE')
22
20
  $('#save-button').removeClass('post-saving')
23
21
  ), 1000)
24
22
  else if status == 'error'
@@ -27,31 +25,33 @@ $(document).ready ->
27
25
  setTimeout((->set_save_button('saved')),2000)
28
26
 
29
27
  draft_post = ->
30
- $('#post_draft').prop('checked', true)
31
28
  $('#draft-action').addClass('selected')
32
29
  $('#publish-action').removeClass('selected')
30
+ $('.override-select').removeClass('override-select')
31
+ $('[name="yaml_value[published]"]').val("false")
33
32
  save_post()
34
33
  false
35
34
 
36
35
  publish_post = ->
37
- $('#post_draft').prop('checked', false)
38
36
  $('#draft-action').removeClass('selected')
39
37
  $('#publish-action').addClass('selected')
38
+ $('.override-select').removeClass('override-select')
39
+ $('[name="yaml_value[published]"]').val("true")
40
40
  save_post()
41
41
  false
42
42
 
43
43
 
44
44
  # Save post
45
45
  save_post = ->
46
+ clear_empty_yaml()
46
47
  set_save_button('saving')
47
- draft = if $('#post_draft').is(':checked') then 'on' else 'off'
48
48
 
49
49
  post_obj =
50
50
  post :
51
51
  title : $('#post-title').val()
52
52
  content : $('#post-content').val()
53
53
  name : $('#post_name').val()
54
- draft : draft
54
+ yaml : yaml_hash()
55
55
 
56
56
  ajax : true
57
57
 
@@ -64,6 +64,50 @@ $(document).ready ->
64
64
  )
65
65
  .fail((->set_save_button('error')))
66
66
 
67
+ add_yaml_entry = ->
68
+ html = $('#add-yaml-template').html()
69
+ $(html).insertBefore($('.add-yaml-entry'))
70
+ $('.yaml-table-inner .key input').focus()
71
+
72
+ $('.yaml-table-inner input').unbind('keyup', yaml_table_set_data)
73
+ $('.yaml-table-inner input').bind('keyup', yaml_table_set_data)
74
+
75
+ clear_empty_yaml =->
76
+ rows = $('.yaml-table-inner input.yaml-value')
77
+
78
+ for row in rows
79
+ if $(row).val() == ''
80
+ $(row).parent().parent().remove()
81
+
82
+ yaml_hash =->
83
+ rows = $('.yaml-table-inner input.yaml-value')
84
+ hash = {}
85
+ for row in rows
86
+ name = $(row).attr('name').replace("yaml_value[", "").replace("]", "")
87
+ value = $(row).val()
88
+ hash[name] = value
89
+
90
+ hash
91
+
92
+
93
+ toggle_yaml_table = ->
94
+ console.log(yaml_hash())
95
+ $('.yaml-table').toggle()
96
+
97
+ yaml_table_set_data = ->
98
+ rows = $('.yaml-table-inner input')
99
+ for row in rows
100
+ if $(row).hasClass('yaml-key')
101
+ value = $(row).val()
102
+ value = value.replace(" ","-")
103
+ $(row).val(value)
104
+ name = "yaml_key[#{value}]"
105
+ $(row).attr('name', name)
106
+ else if $(row).hasClass('yaml-value')
107
+ key = $(row).parent().parent().find('.yaml-key').val()
108
+ name = "yaml_value[#{key}]"
109
+ $(row).attr('name', name)
110
+
67
111
  # Dom invoked events
68
112
  handle_events =->
69
113
  $('#post-editor #post-title').autosize({append: "\n"})
@@ -71,6 +115,14 @@ $(document).ready ->
71
115
  $("#fullscreen").click (e)->
72
116
  screenfull.request();
73
117
 
118
+ $(".draft-options a").hover (->
119
+ if not $(this).hasClass('selected')
120
+ $(".draft-options a.selected").addClass('override-select')
121
+ ),(->
122
+ if not $(this).hasClass('selected')
123
+ $(".draft-options a.selected").removeClass('override-select')
124
+ )
125
+
74
126
  screenfull.onchange = ->
75
127
  if screenfull.isFullscreen
76
128
  $('#fullscreen').hide()
@@ -103,7 +155,9 @@ $(document).ready ->
103
155
 
104
156
  $('#draft-action').click(draft_post)
105
157
  $('#publish-action').click(publish_post)
106
-
158
+ $('.add-yaml-entry').click(add_yaml_entry)
159
+ $('.yaml-block .button').click(toggle_yaml_table)
160
+ $('.yaml-table-inner input').bind('keyup', yaml_table_set_data)
107
161
 
108
162
  keyboard_events =->
109
163
  key('⌘+enter, ctrl+enter', (e)->
@@ -146,7 +200,7 @@ $(document).ready ->
146
200
  # Hide the address bar!
147
201
  window.scrollTo 0, 1
148
202
  ), 0
149
- $('.links').remove()
203
+ $('.links').remove()
150
204
 
151
205
  init =->
152
206
  handle_events()
@@ -154,5 +208,6 @@ $(document).ready ->
154
208
  show_shortcuts() if not is_iphone()
155
209
  focus_to_type()
156
210
  fullscreen_mobile()
211
+ yaml_table_set_data()
157
212
 
158
213
  init()
@@ -2,7 +2,7 @@
2
2
  (function() {
3
3
 
4
4
  $(document).ready(function() {
5
- var draft_post, focus_to_type, fullscreen_mobile, handle_events, init, is_edit_page, is_iphone, keyboard_events, publish_post, save_post, set_save_button, show_shortcuts;
5
+ var add_yaml_entry, clear_empty_yaml, draft_post, focus_to_type, fullscreen_mobile, handle_events, init, is_edit_page, is_iphone, keyboard_events, publish_post, save_post, set_save_button, show_shortcuts, toggle_yaml_table, yaml_hash, yaml_table_set_data;
6
6
  key.filter = function(e) {
7
7
  return true;
8
8
  };
@@ -14,12 +14,12 @@
14
14
  };
15
15
  set_save_button = function(status) {
16
16
  if (status === 'saving') {
17
- $('#save-button').val('Saving');
17
+ $('#save-button').val('SAVING');
18
18
  return $('#save-button').addClass('post-saving');
19
19
  } else if (status === 'saved') {
20
- $('#save-button').val('Saved');
20
+ $('#save-button').val('SAVED');
21
21
  return setTimeout((function() {
22
- $('#save-button').val('Save');
22
+ $('#save-button').val('SAVE');
23
23
  return $('#save-button').removeClass('post-saving');
24
24
  }), 1000);
25
25
  } else if (status === 'error') {
@@ -31,29 +31,31 @@
31
31
  }
32
32
  };
33
33
  draft_post = function() {
34
- $('#post_draft').prop('checked', true);
35
34
  $('#draft-action').addClass('selected');
36
35
  $('#publish-action').removeClass('selected');
36
+ $('.override-select').removeClass('override-select');
37
+ $('[name="yaml_value[published]"]').val("false");
37
38
  save_post();
38
39
  return false;
39
40
  };
40
41
  publish_post = function() {
41
- $('#post_draft').prop('checked', false);
42
42
  $('#draft-action').removeClass('selected');
43
43
  $('#publish-action').addClass('selected');
44
+ $('.override-select').removeClass('override-select');
45
+ $('[name="yaml_value[published]"]').val("true");
44
46
  save_post();
45
47
  return false;
46
48
  };
47
49
  save_post = function() {
48
- var draft, post_obj;
50
+ var post_obj;
51
+ clear_empty_yaml();
49
52
  set_save_button('saving');
50
- draft = $('#post_draft').is(':checked') ? 'on' : 'off';
51
53
  post_obj = {
52
54
  post: {
53
55
  title: $('#post-title').val(),
54
56
  content: $('#post-content').val(),
55
57
  name: $('#post_name').val(),
56
- draft: draft
58
+ yaml: yaml_hash()
57
59
  },
58
60
  ajax: true
59
61
  };
@@ -71,6 +73,66 @@
71
73
  return set_save_button('error');
72
74
  }));
73
75
  };
76
+ add_yaml_entry = function() {
77
+ var html;
78
+ html = $('#add-yaml-template').html();
79
+ $(html).insertBefore($('.add-yaml-entry'));
80
+ $('.yaml-table-inner .key input').focus();
81
+ $('.yaml-table-inner input').unbind('keyup', yaml_table_set_data);
82
+ return $('.yaml-table-inner input').bind('keyup', yaml_table_set_data);
83
+ };
84
+ clear_empty_yaml = function() {
85
+ var row, rows, _i, _len, _results;
86
+ rows = $('.yaml-table-inner input.yaml-value');
87
+ _results = [];
88
+ for (_i = 0, _len = rows.length; _i < _len; _i++) {
89
+ row = rows[_i];
90
+ if ($(row).val() === '') {
91
+ _results.push($(row).parent().parent().remove());
92
+ } else {
93
+ _results.push(void 0);
94
+ }
95
+ }
96
+ return _results;
97
+ };
98
+ yaml_hash = function() {
99
+ var hash, name, row, rows, value, _i, _len;
100
+ rows = $('.yaml-table-inner input.yaml-value');
101
+ hash = {};
102
+ for (_i = 0, _len = rows.length; _i < _len; _i++) {
103
+ row = rows[_i];
104
+ name = $(row).attr('name').replace("yaml_value[", "").replace("]", "");
105
+ value = $(row).val();
106
+ hash[name] = value;
107
+ }
108
+ return hash;
109
+ };
110
+ toggle_yaml_table = function() {
111
+ console.log(yaml_hash());
112
+ return $('.yaml-table').toggle();
113
+ };
114
+ yaml_table_set_data = function() {
115
+ var key, name, row, rows, value, _i, _len, _results;
116
+ rows = $('.yaml-table-inner input');
117
+ _results = [];
118
+ for (_i = 0, _len = rows.length; _i < _len; _i++) {
119
+ row = rows[_i];
120
+ if ($(row).hasClass('yaml-key')) {
121
+ value = $(row).val();
122
+ value = value.replace(" ", "-");
123
+ $(row).val(value);
124
+ name = "yaml_key[" + value + "]";
125
+ _results.push($(row).attr('name', name));
126
+ } else if ($(row).hasClass('yaml-value')) {
127
+ key = $(row).parent().parent().find('.yaml-key').val();
128
+ name = "yaml_value[" + key + "]";
129
+ _results.push($(row).attr('name', name));
130
+ } else {
131
+ _results.push(void 0);
132
+ }
133
+ }
134
+ return _results;
135
+ };
74
136
  handle_events = function() {
75
137
  $('#post-editor #post-title').autosize({
76
138
  append: "\n"
@@ -78,6 +140,15 @@
78
140
  $("#fullscreen").click(function(e) {
79
141
  return screenfull.request();
80
142
  });
143
+ $(".draft-options a").hover((function() {
144
+ if (!$(this).hasClass('selected')) {
145
+ return $(".draft-options a.selected").addClass('override-select');
146
+ }
147
+ }), (function() {
148
+ if (!$(this).hasClass('selected')) {
149
+ return $(".draft-options a.selected").removeClass('override-select');
150
+ }
151
+ }));
81
152
  screenfull.onchange = function() {
82
153
  if (screenfull.isFullscreen) {
83
154
  $('#fullscreen').hide();
@@ -110,7 +181,10 @@
110
181
  return false;
111
182
  });
112
183
  $('#draft-action').click(draft_post);
113
- return $('#publish-action').click(publish_post);
184
+ $('#publish-action').click(publish_post);
185
+ $('.add-yaml-entry').click(add_yaml_entry);
186
+ $('.yaml-block .button').click(toggle_yaml_table);
187
+ return $('.yaml-table-inner input').bind('keyup', yaml_table_set_data);
114
188
  }
115
189
  };
116
190
  keyboard_events = function() {
@@ -154,8 +228,8 @@
154
228
  setTimeout((function() {
155
229
  return window.scrollTo(0, 1);
156
230
  }), 0);
231
+ return $('.links').remove();
157
232
  }
158
- return $('.links').remove();
159
233
  };
160
234
  init = function() {
161
235
  handle_events();
@@ -164,7 +238,8 @@
164
238
  show_shortcuts();
165
239
  }
166
240
  focus_to_type();
167
- return fullscreen_mobile();
241
+ fullscreen_mobile();
242
+ return yaml_table_set_data();
168
243
  };
169
244
  return init();
170
245
  });
@@ -2,7 +2,6 @@
2
2
  <body class="admin posts edit">
3
3
  <div id="admin">
4
4
  <div id="save"></div>
5
-
6
5
  <form accept-charset="UTF-8" action="{{base_url}}/save-post" class="edit_post" method="post">
7
6
  {{>editor_area}}
8
7
  <div id="publish-bar-hover">
@@ -10,14 +9,29 @@
10
9
  <div class="contain">
11
10
  <div class="left">
12
11
  <a href="{{base_url}}/">&laquo; ADMIN</a>
13
- <a href="{{base_url}}/delete/{{ name }}" class="delete-bar delete-button" >DELETE</a>
12
+ {{alagu}}
13
+ <div class="yaml-block">
14
+ <div class="yaml-table arrow-box">
15
+ <div class="yaml-table-inner">
16
+ <ul>
17
+ {{#data_array}}
18
+ <li>
19
+ <div class="key"><input type="text" class="yaml-key" name="yaml_key[{{key}}]" value="{{key}}" /></div>
20
+ <div class="value"><input type="text" class="yaml-value" name="yaml_value[{{value}}]" value="{{value}}"/></div>
21
+ </li>
22
+ {{/data_array}}
23
+ <li class="add-yaml-entry"> Add new item </li>
24
+ </ul>
25
+ </div>
26
+ </div>
27
+ <a id="#" class="button">DATA</a>
28
+ </div>
14
29
  </div>
15
30
  <div class="right">
16
31
 
17
32
  <div class="draft-options">
18
33
  <a id="draft-action" class="button {{#draft}}selected{{/draft}}" href="#">DRAFT</a>
19
34
  <a id="publish-action" class="button {{^draft}}selected{{/draft}}" href="#">DONE</a>
20
- <input id="post_draft" name="post[draft]" type="checkbox" {{#draft}}checked{{/draft}} />
21
35
  </div>
22
36
  <input id="save-button" name="commit" type="submit" value="SAVE" />
23
37
  </div>
@@ -25,6 +39,10 @@
25
39
  </div>
26
40
  </div>
27
41
  </form>
42
+ <script type="text/template" id="add-yaml-template"><li>
43
+ <div class="key"><input type="text" class="yaml-key" value="" /></div>
44
+ <div class="value"><input type="text" class="yaml-value" value=""/></div>
45
+ </li></script>
28
46
  </div>
29
47
 
30
48
  </body>
@@ -6,7 +6,7 @@
6
6
 
7
7
  <link rel="stylesheet" type="text/css" href="{{base_url}}/css/pagoda.css" media="screen, projection">
8
8
  <link rel="stylesheet" type="text/css" href="{{base_url}}/css/tiptip.css" media="screen, projection">
9
- <link href='http://fonts.googleapis.com/css?family=Lato:300,900|Asap' rel='stylesheet' type='text/css' />
9
+ <link href='http://fonts.googleapis.com/css?family=Lato:300,900|Asap|Titillium+Web' rel='stylesheet' type='text/css' />
10
10
  <link rel="apple-touch-icon" href="{{base_url}}/images/apple-touch-icon.png" />
11
11
 
12
12
 
@@ -5,6 +5,7 @@ module Shwedagon
5
5
  attr_accessor :content
6
6
  attr_accessor :name
7
7
  attr_accessor :draft
8
+ attr_accessor :data_array
8
9
 
9
10
  end
10
11
  end
data/pagoda.gemspec CHANGED
@@ -5,8 +5,8 @@ Gem::Specification.new do |s|
5
5
  s.required_ruby_version = ">= 1.8.7"
6
6
 
7
7
  s.name = 'pagoda-jekyll'
8
- s.version = '0.0.9'
9
- s.date = '2013-05-24'
8
+ s.version = '0.0.10'
9
+ s.date = '2013-06-09'
10
10
  s.rubyforge_project = 'pagoda-jekyll'
11
11
 
12
12
  s.summary = "A simple admin for Jekyll"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pagoda-jekyll
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alagu
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-24 00:00:00.000000000 Z
11
+ date: 2013-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll