kinbote 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +8 -1
- data/TODO +3 -0
- data/bin/kinbote +1 -0
- data/kinbote.gemspec +8 -3
- data/lib/kinbote/attribute.rb +24 -14
- data/lib/kinbote/base.rb +1 -1
- data/lib/kinbote/kinfile.rb +4 -3
- data/lib/kinbote/page.rb +88 -43
- data/lib/kinbote/site.rb +46 -19
- data/lib/kinbote/value.rb +8 -7
- data/lib/sinatra/kinbote.rb +22 -3
- data/lib/sinatra/kinbote_helpers.rb +29 -10
- data/site/.kinbote/js/core.js +18 -0
- data/site/.kinbote/js/jquery.js +6240 -0
- data/site/.kinbote/sass/core.sass +116 -0
- data/site/.kinbote/sass/reset.sass +53 -0
- data/site/.kinbote/views/examples/header.haml +1 -1
- data/site/.kinbote/views/layout.haml +26 -9
- data/site/.kinbote/views/page.haml +1 -1
- data/site/.kinbote/views/pages.haml +57 -19
- data/site/.kinbote/views/site.haml +13 -2
- data/site/config.yml.sample +13 -0
- data/site/public/robots.txt +1 -1
- data/site/views/layout.haml +1 -1
- metadata +10 -5
- data/site/config/site.yml +0 -1
@@ -0,0 +1,116 @@
|
|
1
|
+
/* Example SaSS
|
2
|
+
$blue: #3bbfce;
|
3
|
+
$margin: 16px;
|
4
|
+
|
5
|
+
.content-navigation {
|
6
|
+
border-color: $blue;
|
7
|
+
color:
|
8
|
+
darken($blue, 9%);
|
9
|
+
}
|
10
|
+
|
11
|
+
.border {
|
12
|
+
padding: $margin / 2;
|
13
|
+
margin: $margin / 2;
|
14
|
+
border-color: $blue;
|
15
|
+
}
|
16
|
+
|
17
|
+
*/
|
18
|
+
|
19
|
+
/* For Backend Styles */
|
20
|
+
|
21
|
+
/* STRUCTURE */
|
22
|
+
|
23
|
+
$page-width: 95%;
|
24
|
+
$nav-width: 16.6667%; /* 160/960 = 0.16666 */
|
25
|
+
$col-margin: 1.0417%; /* 10/960 = 0.010417 */
|
26
|
+
$font-size: 16;
|
27
|
+
|
28
|
+
nav, #page, .main {
|
29
|
+
float: left;
|
30
|
+
margin-right: $col-margin;
|
31
|
+
}
|
32
|
+
.last {
|
33
|
+
margin-right: 0;
|
34
|
+
}
|
35
|
+
header {
|
36
|
+
margin-bottom: 1.0em;
|
37
|
+
}
|
38
|
+
nav {
|
39
|
+
width: $nav-width;
|
40
|
+
}
|
41
|
+
#page {
|
42
|
+
width: $page-width;
|
43
|
+
padding: 20px;
|
44
|
+
}
|
45
|
+
.main {
|
46
|
+
width: $page-width - $nav-width - $col-margin - 8.333%;
|
47
|
+
margin-left: 8.333% ; /* 80/960 = 0.08333 */
|
48
|
+
}
|
49
|
+
|
50
|
+
/* TYPOGRAPHY */
|
51
|
+
body {
|
52
|
+
font: normal 100% Georgia,'Times New Roman',serif;
|
53
|
+
line-height: 26/$font-size;
|
54
|
+
}
|
55
|
+
|
56
|
+
p {
|
57
|
+
margin: 0 0 0.5em 0;
|
58
|
+
}
|
59
|
+
|
60
|
+
/* Headers */
|
61
|
+
h1, h2, h3, h4 {
|
62
|
+
font-family:Helvetica,Arial,'Liberation Sans', FreeSans,sans-serif;
|
63
|
+
}
|
64
|
+
|
65
|
+
h1 {
|
66
|
+
font-size: 1.625em; /* 26px/16px = 1.625em */
|
67
|
+
line-height: 22/$font-size;
|
68
|
+
margin: 0 0 0.5em 0;
|
69
|
+
text-transform:uppercase;
|
70
|
+
}
|
71
|
+
header h1 {
|
72
|
+
margin-bottom: 0.1em;
|
73
|
+
}
|
74
|
+
|
75
|
+
nav h1 {
|
76
|
+
font-size: 1em;
|
77
|
+
}
|
78
|
+
.main h1 {
|
79
|
+
font-size: 2em;
|
80
|
+
margin: 0 0 0.5em 0;
|
81
|
+
text-transform:capitalize;
|
82
|
+
}
|
83
|
+
|
84
|
+
/* Navigation */
|
85
|
+
nav {
|
86
|
+
|
87
|
+
border-top:1px solid #ccc;
|
88
|
+
padding-top: 10px;
|
89
|
+
li {
|
90
|
+
border-bottom: 1px solid #ccc;
|
91
|
+
padding: 10px 0;
|
92
|
+
line-height: 1.375em; /* 22px/16px = */
|
93
|
+
}
|
94
|
+
}
|
95
|
+
|
96
|
+
li#link-to-real-site {
|
97
|
+
margin-top: 10px;
|
98
|
+
padding-top: 10px;
|
99
|
+
border-bottom: none;
|
100
|
+
background: #ccc;
|
101
|
+
}
|
102
|
+
|
103
|
+
/* STYLES */
|
104
|
+
|
105
|
+
/* Pages */
|
106
|
+
|
107
|
+
.has-sass {
|
108
|
+
display: block;
|
109
|
+
}
|
110
|
+
|
111
|
+
.has-sass .inner{
|
112
|
+
visibility: hidden;
|
113
|
+
}
|
114
|
+
tr.page:hover .has-sass .inner {
|
115
|
+
visibility: visible;
|
116
|
+
}
|
@@ -0,0 +1,53 @@
|
|
1
|
+
/* http://meyerweb.com/eric/tools/css/reset/ */
|
2
|
+
/* v1.0 | 20080212 */
|
3
|
+
|
4
|
+
html, body, div, span, applet, object, iframe,
|
5
|
+
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
6
|
+
a, abbr, acronym, address, big, cite, code,
|
7
|
+
del, dfn, em, font, img, ins, kbd, q, s, samp,
|
8
|
+
small, strike, strong, sub, sup, tt, var,
|
9
|
+
b, u, i, center,
|
10
|
+
dl, dt, dd, ol, ul, li,
|
11
|
+
fieldset, form, label, legend,
|
12
|
+
table, caption, tbody, tfoot, thead, tr, th, td {
|
13
|
+
margin: 0;
|
14
|
+
padding: 0;
|
15
|
+
border: 0;
|
16
|
+
outline: 0;
|
17
|
+
font-size: 100%;
|
18
|
+
vertical-align: baseline;
|
19
|
+
background: transparent;
|
20
|
+
}
|
21
|
+
body {
|
22
|
+
line-height: 1;
|
23
|
+
}
|
24
|
+
ol, ul {
|
25
|
+
list-style: none;
|
26
|
+
}
|
27
|
+
blockquote, q {
|
28
|
+
quotes: none;
|
29
|
+
}
|
30
|
+
blockquote:before, blockquote:after,
|
31
|
+
q:before, q:after {
|
32
|
+
content: '';
|
33
|
+
content: none;
|
34
|
+
}
|
35
|
+
|
36
|
+
/* remember to define focus styles! */
|
37
|
+
:focus {
|
38
|
+
outline: 0;
|
39
|
+
}
|
40
|
+
|
41
|
+
/* remember to highlight inserts somehow! */
|
42
|
+
ins {
|
43
|
+
text-decoration: none;
|
44
|
+
}
|
45
|
+
del {
|
46
|
+
text-decoration: line-through;
|
47
|
+
}
|
48
|
+
|
49
|
+
/* tables still need 'cellspacing="0"' in the markup */
|
50
|
+
table {
|
51
|
+
border-collapse: collapse;
|
52
|
+
border-spacing: 0;
|
53
|
+
}
|
@@ -3,14 +3,31 @@
|
|
3
3
|
%head
|
4
4
|
%title Kinbote | #{@p ? @p.title : ""}
|
5
5
|
%meta{"http-equiv" => "Content-Type", :content => "text/html; charset=utf-8"}
|
6
|
+
%link{:href => "/kinbote/css/reset.css", :rel => "stylesheet", :type => "text/css"}
|
7
|
+
%link{:href => "/kinbote/css/core.css", :rel => "stylesheet", :type => "text/css"}
|
8
|
+
%script{:src => "/kinbote/js/jquery.js", :type => "text/javascript"}
|
9
|
+
%script{:src => "/kinbote/js/core.js", :type => "text/javascript"}
|
6
10
|
|
7
|
-
%body
|
11
|
+
%body.management
|
12
|
+
#page
|
13
|
+
%header
|
14
|
+
%hgroup
|
15
|
+
%h1= $site.title
|
16
|
+
%h2 A Kinbote Commentary
|
17
|
+
|
18
|
+
%nav
|
19
|
+
%h1 Manage
|
20
|
+
%ul
|
21
|
+
%li
|
22
|
+
%a{:href => "/kinbote"} Site
|
23
|
+
%li
|
24
|
+
%a{:href => "/kinbote/pages"} Pages
|
25
|
+
%li
|
26
|
+
%a{:href => "/kinbote/attributes"} Attributes
|
27
|
+
%li#link-to-real-site
|
28
|
+
%a{:href => "/"} The real site
|
8
29
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
= haml :'../.kinbote/views/messages', :layout => false
|
15
|
-
|
16
|
-
= yield
|
30
|
+
= haml :'../.kinbote/views/messages', :layout => false
|
31
|
+
|
32
|
+
%section.main.last
|
33
|
+
= yield
|
@@ -7,7 +7,7 @@
|
|
7
7
|
%input{:type => "text", :name => "page[values][]", :value => @p.title}
|
8
8
|
%br
|
9
9
|
- @p.attributes.each do |attribute|
|
10
|
-
- attribute.
|
10
|
+
- attribute.values_for(@p).each do |value|
|
11
11
|
%input{:type => "text", :name => "page[keys][]", :value => attribute.name}
|
12
12
|
%input{:type => "text", :name => "page[values][]", :value => value.value}
|
13
13
|
%br
|
@@ -1,26 +1,64 @@
|
|
1
|
-
%h1 Manage the
|
1
|
+
%h1 Manage the Pages on my website
|
2
|
+
|
3
|
+
.bordered{:style => "border: 1px solid black"}
|
4
|
+
%h3 Filter the displayed pages
|
5
|
+
%form{:action => "/kinbote/pages", :method => "get"}
|
6
|
+
%select{:name => "attribute"}
|
7
|
+
%option{:selected => (!params.has_key?("attribute") || params["attribute"].strip.size == 0) ? "true" : nil}
|
8
|
+
- $site.attributes.each do |attribute|
|
9
|
+
%option{:selected => (attribute.name == params["attribute"]) ? "true" : nil}= attribute.name
|
10
|
+
%input{:type => "text", :name => "value", :value => params["value"]}
|
11
|
+
%input{:type => "submit", :value => "Filter"}
|
12
|
+
|
13
|
+
.bordered{:style => "border: 1px solid black"}
|
14
|
+
%h3 Apply an action to checked pages (don't forget to check off pages to make these work)
|
15
|
+
|
16
|
+
%h4 Add attribute/value
|
17
|
+
%form{:class => "bulk", :action => "/kinbote/pages/bulk_update", :method => "post"}
|
18
|
+
%input{:type => "hidden", :name => "action[type]", :value => "add_attribute"}
|
19
|
+
%input{:type => "text", :name => "action[attribute]"}
|
20
|
+
%input{:type => "text", :name => "action[value]"}
|
21
|
+
%input{:type => "submit", :value => "Add"}
|
22
|
+
|
23
|
+
%h4 Remove attribute/value
|
24
|
+
%form{:class => "bulk", :action => "/kinbote/pages/bulk_update", :method => "post"}
|
25
|
+
%input{:type => "hidden", :name => "action[type]", :value => "rem_attribute"}
|
26
|
+
%select{:name => "action[attribute]"}
|
27
|
+
- $site.attributes.each do |attribute|
|
28
|
+
%option= attribute.name
|
29
|
+
%input{:type => "text", :name => "action[value]"}
|
30
|
+
%input{:type => "submit", :value => "Remove"}
|
31
|
+
|
32
|
+
.bordered{:style => "border: 1px solid black"}
|
33
|
+
%h3 Make a new page
|
34
|
+
%form{:action => "/kinbote/pages/new", :method => "post"}
|
35
|
+
%input{:type => "text", :name => "page[title]"}
|
36
|
+
%input{:type => "submit", :value => "Create new page"}
|
2
37
|
|
3
38
|
- if $site.pages.size > 0
|
4
|
-
%table
|
39
|
+
%table#pages
|
5
40
|
%tr
|
41
|
+
%th
|
42
|
+
%a{:id => "chk1", :href => "#"} Check all
|
43
|
+
%br
|
44
|
+
%a{:id => "chk0", :href => "#"} Check none
|
6
45
|
%th Title
|
7
46
|
%th Attributes
|
8
|
-
%th Create SASS
|
9
|
-
%th Delete
|
10
47
|
- $site.pages.each do |page|
|
11
|
-
|
12
|
-
%
|
13
|
-
%
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
%
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
48
|
+
- if !page.filtered_by?(params["attribute"], params["value"])
|
49
|
+
%tr.page
|
50
|
+
%td
|
51
|
+
%input{:type => "checkbox", :name => "page_slugs[]", :value => page.slug}
|
52
|
+
%td
|
53
|
+
%a{:href => "/kinbote/pages/#{page.slug}"}= page.title
|
54
|
+
%div.has-sass
|
55
|
+
.inner
|
56
|
+
- if !page.has_file?(:css)
|
57
|
+
%form{:action => "/kinbote/pages/#{page.slug}/css", :method => "post"}
|
58
|
+
%input{:type => "submit", :value => "Create SASS"}
|
59
|
+
- else
|
60
|
+
Already has a css file
|
61
|
+
%form{:action => "/kinbote/pages/#{page.slug}/delete", :method => "post"}
|
62
|
+
%input{:type => "submit", :value => "Delete page"}
|
63
|
+
%td= "[#{page.attributes.map{|a| "#{a}: #{a.values_for(page).map{|v| v.to_s}.join(', ')}"}.join('] [')}]"
|
22
64
|
|
23
|
-
%h3 Make a new page
|
24
|
-
%form{:action => "/kinbote/pages/new", :method => "post"}
|
25
|
-
%input{:type => "text", :name => "page[title]"}
|
26
|
-
%input{:type => "submit", :value => "Create new page"}
|
@@ -1,4 +1,15 @@
|
|
1
|
-
%h1
|
1
|
+
%h1 Publish the Site
|
2
|
+
|
3
|
+
%p Your publishing settings are controlled in config.yml
|
2
4
|
|
3
5
|
%form{:action => "/kinbote/publish", :method => "post"}
|
4
|
-
%input{:type => "submit", :value => "Publish"}
|
6
|
+
%input{:type => "submit", :value => "Publish"}
|
7
|
+
|
8
|
+
- if @updated_files
|
9
|
+
%h2 Updated Files:
|
10
|
+
%ul
|
11
|
+
- if @updated_files.size == 0
|
12
|
+
%li None!
|
13
|
+
- else
|
14
|
+
- @updated_files.each do |file|
|
15
|
+
%li= file
|
@@ -0,0 +1,13 @@
|
|
1
|
+
title: Kinbote Site
|
2
|
+
|
3
|
+
# How you want to Kinbote to indent your haml files (good options: ' ' or '\t')
|
4
|
+
haml_indentation: ' '
|
5
|
+
|
6
|
+
# Whether or not you want sample Kinbote code generated for each of your pages
|
7
|
+
print_sample_code: true
|
8
|
+
|
9
|
+
# SSH credentials used to publish your site
|
10
|
+
#remote_host: yoursite.com
|
11
|
+
#remote_path: /home/www/
|
12
|
+
#remote_user: username
|
13
|
+
#remote_pw: password
|
data/site/public/robots.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
User-agent: *
|
1
|
+
User-agent: *
|
data/site/views/layout.haml
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kinbote
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 25
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 3
|
10
|
+
version: 0.0.3
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jay Boice
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-
|
18
|
+
date: 2010-08-03 00:00:00 -04:00
|
19
19
|
default_executable: kinbote
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- LICENSE
|
78
78
|
- README.rdoc
|
79
79
|
- Rakefile
|
80
|
+
- TODO
|
80
81
|
- bin/kinbote
|
81
82
|
- kinbote.gemspec
|
82
83
|
- lib/kinbote.rb
|
@@ -90,6 +91,10 @@ files:
|
|
90
91
|
- lib/kinbote/value.rb
|
91
92
|
- lib/sinatra/kinbote.rb
|
92
93
|
- lib/sinatra/kinbote_helpers.rb
|
94
|
+
- site/.kinbote/js/core.js
|
95
|
+
- site/.kinbote/js/jquery.js
|
96
|
+
- site/.kinbote/sass/core.sass
|
97
|
+
- site/.kinbote/sass/reset.sass
|
93
98
|
- site/.kinbote/views/attributes.haml
|
94
99
|
- site/.kinbote/views/examples/header.haml
|
95
100
|
- site/.kinbote/views/examples/home.haml
|
@@ -104,7 +109,7 @@ files:
|
|
104
109
|
- site/.kinbote/views/page.haml
|
105
110
|
- site/.kinbote/views/pages.haml
|
106
111
|
- site/.kinbote/views/site.haml
|
107
|
-
- site/config
|
112
|
+
- site/config.yml.sample
|
108
113
|
- site/kinbote-server
|
109
114
|
- site/public/favicon.ico
|
110
115
|
- site/public/js/core.js
|
data/site/config/site.yml
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
title: Kinbote Site
|