concen 0.2.4 → 0.2.5
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -9
- data/LICENSE +1 -1
- data/README.md +23 -1
- data/app/assets/stylesheets/concen/application.css.sass +14 -16
- data/app/assets/stylesheets/concen/compass/_css3.scss +17 -0
- data/app/assets/stylesheets/concen/compass/_layout.scss +3 -0
- data/app/assets/stylesheets/concen/compass/_reset-legacy.scss +3 -0
- data/app/assets/stylesheets/concen/compass/_reset.scss +3 -0
- data/app/assets/stylesheets/concen/compass/_support.scss +36 -0
- data/app/assets/stylesheets/concen/compass/_typography.scss +4 -0
- data/app/assets/stylesheets/concen/compass/_utilities.scss +9 -0
- data/app/assets/stylesheets/concen/compass/css3/_appearance.scss +13 -0
- data/app/assets/stylesheets/concen/compass/css3/_background-clip.scss +43 -0
- data/app/assets/stylesheets/concen/compass/css3/_background-origin.scss +42 -0
- data/app/assets/stylesheets/concen/compass/css3/_background-size.scss +26 -0
- data/app/assets/stylesheets/concen/compass/css3/_border-radius.scss +135 -0
- data/app/assets/stylesheets/concen/compass/css3/_box-shadow.scss +93 -0
- data/app/assets/stylesheets/concen/compass/css3/_box-sizing.scss +13 -0
- data/app/assets/stylesheets/concen/compass/css3/_box.scss +111 -0
- data/app/assets/stylesheets/concen/compass/css3/_columns.scss +60 -0
- data/app/assets/stylesheets/concen/compass/css3/_font-face.scss +63 -0
- data/app/assets/stylesheets/concen/compass/css3/_gradient.scss +99 -0
- data/app/assets/stylesheets/concen/compass/css3/_images.scss +132 -0
- data/app/assets/stylesheets/concen/compass/css3/_inline-block.scss +16 -0
- data/app/assets/stylesheets/concen/compass/css3/_opacity.scss +19 -0
- data/app/assets/stylesheets/concen/compass/css3/_pie.scss +73 -0
- data/app/assets/stylesheets/concen/compass/css3/_shared.scss +38 -0
- data/app/assets/stylesheets/concen/compass/css3/_text-shadow.scss +62 -0
- data/app/assets/stylesheets/concen/compass/css3/_transform-legacy.scss +87 -0
- data/app/assets/stylesheets/concen/compass/css3/_transform.scss +598 -0
- data/app/assets/stylesheets/concen/compass/css3/_transition.scss +119 -0
- data/app/assets/stylesheets/concen/compass/layout/_grid-background.scss +178 -0
- data/app/assets/stylesheets/concen/compass/layout/_sticky-footer.scss +23 -0
- data/app/assets/stylesheets/concen/compass/layout/_stretching.scss +24 -0
- data/app/assets/stylesheets/concen/compass/reset/_utilities-legacy.scss +135 -0
- data/app/assets/stylesheets/concen/compass/reset/_utilities.scss +140 -0
- data/app/assets/stylesheets/concen/compass/typography/_links.scss +3 -0
- data/app/assets/stylesheets/concen/compass/typography/_lists.scss +4 -0
- data/app/assets/stylesheets/concen/compass/typography/_text.scss +4 -0
- data/app/assets/stylesheets/concen/compass/typography/_vertical_rhythm.scss +193 -0
- data/app/assets/stylesheets/concen/compass/typography/links/_hover-link.scss +5 -0
- data/app/assets/stylesheets/concen/compass/typography/links/_link-colors.scss +28 -0
- data/app/assets/stylesheets/concen/compass/typography/links/_unstyled-link.scss +7 -0
- data/app/assets/stylesheets/concen/compass/typography/lists/_bullets.scss +34 -0
- data/app/assets/stylesheets/concen/compass/typography/lists/_horizontal-list.scss +61 -0
- data/app/assets/stylesheets/concen/compass/typography/lists/_inline-block-list.scss +47 -0
- data/app/assets/stylesheets/concen/compass/typography/lists/_inline-list.scss +44 -0
- data/app/assets/stylesheets/concen/compass/typography/text/_ellipsis.scss +25 -0
- data/app/assets/stylesheets/concen/compass/typography/text/_force-wrap.scss +12 -0
- data/app/assets/stylesheets/concen/compass/typography/text/_nowrap.scss +2 -0
- data/app/assets/stylesheets/concen/compass/typography/text/_replacement.scss +34 -0
- data/app/assets/stylesheets/concen/compass/utilities/_color.scss +1 -0
- data/app/assets/stylesheets/concen/compass/utilities/_general.scss +6 -0
- data/app/assets/stylesheets/concen/compass/utilities/_links.scss +5 -0
- data/app/assets/stylesheets/concen/compass/utilities/_lists.scss +6 -0
- data/app/assets/stylesheets/concen/compass/utilities/_print.scss +17 -0
- data/app/assets/stylesheets/concen/compass/utilities/_sprites.scss +1 -0
- data/app/assets/stylesheets/concen/compass/utilities/_tables.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/_text.scss +5 -0
- data/app/assets/stylesheets/concen/compass/utilities/color/_contrast.scss +28 -0
- data/app/assets/stylesheets/concen/compass/utilities/general/_clearfix.scss +44 -0
- data/app/assets/stylesheets/concen/compass/utilities/general/_float.scss +30 -0
- data/app/assets/stylesheets/concen/compass/utilities/general/_hacks.scss +46 -0
- data/app/assets/stylesheets/concen/compass/utilities/general/_min.scss +16 -0
- data/app/assets/stylesheets/concen/compass/utilities/general/_reset.scss +2 -0
- data/app/assets/stylesheets/concen/compass/utilities/general/_tabs.scss +1 -0
- data/app/assets/stylesheets/concen/compass/utilities/general/_tag-cloud.scss +18 -0
- data/app/assets/stylesheets/concen/compass/utilities/links/_hover-link.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/links/_link-colors.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/links/_unstyled-link.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/lists/_bullets.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/lists/_horizontal-list.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/lists/_inline-block-list.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/lists/_inline-list.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/sprites/_base.scss +66 -0
- data/app/assets/stylesheets/concen/compass/utilities/sprites/_sprite-img.scss +56 -0
- data/app/assets/stylesheets/concen/compass/utilities/tables/_alternating-rows-and-columns.scss +20 -0
- data/app/assets/stylesheets/concen/compass/utilities/tables/_borders.scss +33 -0
- data/app/assets/stylesheets/concen/compass/utilities/tables/_scaffolding.scss +9 -0
- data/app/assets/stylesheets/concen/compass/utilities/text/_ellipsis.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/text/_nowrap.scss +3 -0
- data/app/assets/stylesheets/concen/compass/utilities/text/_replacement.scss +3 -0
- data/app/assets/stylesheets/concen/partials/_base.sass +4 -4
- data/app/assets/stylesheets/concen/partials/_variables.sass +5 -5
- data/app/helpers/concen/application_helper.rb +0 -6
- data/app/models/concen/page.rb +12 -3
- data/app/views/concen/grid_files/_form.html.erb +23 -0
- data/app/views/concen/grid_files/edit.html.erb +10 -0
- data/app/views/concen/pages/_file_list.erb +11 -0
- data/app/views/concen/pages/_files.erb +32 -0
- data/app/views/concen/pages/_form.html.erb +26 -0
- data/app/views/concen/pages/_nested_list.html.erb +22 -0
- data/app/views/concen/pages/edit.html.erb +19 -0
- data/app/views/concen/pages/index.html.erb +12 -0
- data/app/views/concen/pages/new.html.erb +10 -0
- data/app/views/concen/performances/_runtimes.html.erb +8 -0
- data/app/views/concen/performances/show.html.erb +40 -0
- data/app/views/concen/sessions/new.html.erb +17 -0
- data/app/views/concen/statuses/_server.html.erb +34 -0
- data/app/views/concen/statuses/show.html.erb +27 -0
- data/app/views/concen/traffics/_pages.html.erb +8 -0
- data/app/views/concen/traffics/_referrals.html.erb +12 -0
- data/app/views/concen/traffics/show.html.erb +40 -0
- data/app/views/concen/users/_form.html.erb +42 -0
- data/app/views/concen/users/{_password_reset.html.haml → _password_reset.html.erb} +0 -0
- data/app/views/concen/users/_settings.html.erb +23 -0
- data/app/views/concen/users/edit.html.erb +12 -0
- data/app/views/concen/users/index.html.erb +40 -0
- data/app/views/concen/users/new.html.erb +6 -0
- data/app/views/concen/users/new_invite.html.erb +24 -0
- data/app/views/concen/users/new_reset_password.html.erb +24 -0
- data/app/views/layouts/concen/{_additional_header_links.haml → _additional_header_links.html.erb} +0 -0
- data/app/views/layouts/concen/_header.html.erb +24 -0
- data/app/views/layouts/concen/{maintenance.html.haml → _iphone.html.erb} +0 -0
- data/app/views/layouts/concen/application.html.erb +42 -0
- data/app/views/layouts/concen/maintenance.html.erb +0 -0
- data/concen.gemspec +0 -2
- data/lib/concen/engine.rb +0 -1
- data/lib/concen/version.rb +1 -1
- data/test/support/raw_text/smartypants.html +1 -1
- data/test/support/raw_text/smartypants.txt +1 -1
- metadata +130 -74
- data/app/views/concen/grid_files/_form.html.haml +0 -15
- data/app/views/concen/grid_files/edit.html.haml +0 -7
- data/app/views/concen/pages/_file_list.haml +0 -7
- data/app/views/concen/pages/_files.haml +0 -24
- data/app/views/concen/pages/_form.html.haml +0 -17
- data/app/views/concen/pages/_nested_list.html.haml +0 -15
- data/app/views/concen/pages/edit.html.haml +0 -13
- data/app/views/concen/pages/index.html.haml +0 -12
- data/app/views/concen/pages/new.html.haml +0 -7
- data/app/views/concen/performances/_runtimes.html.haml +0 -5
- data/app/views/concen/performances/show.html.haml +0 -27
- data/app/views/concen/sessions/new.html.haml +0 -12
- data/app/views/concen/statuses/_server.html.haml +0 -19
- data/app/views/concen/statuses/show.html.haml +0 -18
- data/app/views/concen/traffics/_pages.html.haml +0 -5
- data/app/views/concen/traffics/_referrals.html.haml +0 -9
- data/app/views/concen/traffics/show.html.haml +0 -27
- data/app/views/concen/users/_form.html.haml +0 -29
- data/app/views/concen/users/_settings.html.haml +0 -15
- data/app/views/concen/users/edit.html.haml +0 -9
- data/app/views/concen/users/index.html.haml +0 -32
- data/app/views/concen/users/new.html.haml +0 -4
- data/app/views/concen/users/new_invite.html.haml +0 -15
- data/app/views/concen/users/new_reset_password.html.haml +0 -15
- data/app/views/layouts/concen/_header.html.haml +0 -18
- data/app/views/layouts/concen/_iphone.html.haml +0 -6
- data/app/views/layouts/concen/application.html.haml +0 -33
@@ -0,0 +1,66 @@
|
|
1
|
+
// Determines those states for which you want to enable magic sprite selectors
|
2
|
+
$sprite-selectors: hover, target, active !default;
|
3
|
+
|
4
|
+
// Set the width and height of an element to the original
|
5
|
+
// dimensions of an image before it was included in the sprite.
|
6
|
+
@mixin sprite-dimensions($map, $sprite) {
|
7
|
+
height: image-height(sprite-file($map, $sprite));
|
8
|
+
width: image-width(sprite-file($map, $sprite));
|
9
|
+
}
|
10
|
+
|
11
|
+
// Set the background position of the given sprite `$map` to display the
|
12
|
+
// sprite of the given `$sprite` name. You can move the image relative to its
|
13
|
+
// natural position by passing `$offset-x` and `$offset-y`.
|
14
|
+
@mixin sprite-background-position($map, $sprite, $offset-x: 0, $offset-y: 0) {
|
15
|
+
background-position: sprite-position($map, $sprite, $offset-x, $offset-y);
|
16
|
+
}
|
17
|
+
|
18
|
+
|
19
|
+
// Determines if you want to include magic selectors in your sprites
|
20
|
+
$disable-magic-sprite-selectors:false !default;
|
21
|
+
|
22
|
+
// Include the position and (optionally) dimensions of this `$sprite`
|
23
|
+
// in the given sprite `$map`. The sprite url should come from either a base
|
24
|
+
// class or you can specify the `sprite-url` explicitly like this:
|
25
|
+
//
|
26
|
+
// background: $map no-repeat;
|
27
|
+
@mixin sprite($map, $sprite, $dimensions: false, $offset-x: 0, $offset-y: 0) {
|
28
|
+
@include sprite-background-position($map, $sprite, $offset-x, $offset-y);
|
29
|
+
@if $dimensions {
|
30
|
+
@include sprite-dimensions($map, $sprite);
|
31
|
+
}
|
32
|
+
@if not $disable-magic-sprite-selectors {
|
33
|
+
@include sprite-selectors($map, $sprite, $sprite, $offset-x, $offset-y);
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
// Include the selectors for the `$sprite` given the `$map` and the
|
38
|
+
// `$full-sprite-name`
|
39
|
+
// @private
|
40
|
+
@mixin sprite-selectors($map, $sprite-name, $full-sprite-name, $offset-x: 0, $offset-y: 0) {
|
41
|
+
@each $selector in $sprite-selectors {
|
42
|
+
@if sprite_has_selector($map, $sprite-name, $selector) {
|
43
|
+
&:#{$selector}, &.#{$full-sprite-name}_#{$selector}, &.#{$full-sprite-name}-#{$selector} {
|
44
|
+
@include sprite-background-position($map, "#{$sprite-name}_#{$selector}", $offset-x, $offset-y);
|
45
|
+
}
|
46
|
+
}
|
47
|
+
}
|
48
|
+
}
|
49
|
+
|
50
|
+
// Generates a class for each space separated name in `$sprite-names`.
|
51
|
+
// The class will be of the form .<map-name>-<sprite-name>.
|
52
|
+
//
|
53
|
+
// If a base class is provided, then each class will extend it.
|
54
|
+
//
|
55
|
+
// If `$dimensions` is `true`, the sprite dimensions will specified.
|
56
|
+
@mixin sprites($map, $sprite-names, $base-class: false, $dimensions: false, $prefix: sprite-map-name($map), $offset-x: 0, $offset-y: 0) {
|
57
|
+
@each $sprite-name in $sprite-names {
|
58
|
+
@if sprite_does_not_have_parent($map, $sprite-name) {
|
59
|
+
$full-sprite-name: "#{$prefix}-#{$sprite-name}";
|
60
|
+
.#{$full-sprite-name} {
|
61
|
+
@if $base-class { @extend #{$base-class}; }
|
62
|
+
@include sprite($map, $sprite-name, $dimensions, $offset-x, $offset-y);
|
63
|
+
}
|
64
|
+
}
|
65
|
+
}
|
66
|
+
}
|
@@ -0,0 +1,56 @@
|
|
1
|
+
// @doc off
|
2
|
+
// Example 1:
|
3
|
+
//
|
4
|
+
// a.twitter
|
5
|
+
// +sprite-img("icons-32.png", 1)
|
6
|
+
// a.facebook
|
7
|
+
// +sprite-img("icons-32png", 2)
|
8
|
+
//
|
9
|
+
// Example 2:
|
10
|
+
//
|
11
|
+
// a
|
12
|
+
// +sprite-background("icons-32.png")
|
13
|
+
// a.twitter
|
14
|
+
// +sprite-column(1)
|
15
|
+
// a.facebook
|
16
|
+
// +sprite-row(2)
|
17
|
+
// @doc on
|
18
|
+
|
19
|
+
$sprite-default-size: 32px !default;
|
20
|
+
|
21
|
+
$sprite-default-margin: 0px !default;
|
22
|
+
|
23
|
+
$sprite-image-default-width: $sprite-default-size !default;
|
24
|
+
|
25
|
+
$sprite-image-default-height: $sprite-default-size !default;
|
26
|
+
|
27
|
+
// Sets all the rules for a sprite from a given sprite image to show just one of the sprites.
|
28
|
+
// To reduce duplication use a sprite-bg mixin for common properties and a sprite-select mixin for positioning.
|
29
|
+
@mixin sprite-img($img, $col, $row: 1, $width: $sprite-image-default-width, $height: $sprite-image-default-height, $margin: $sprite-default-margin) {
|
30
|
+
@include sprite-background($img, $width, $height);
|
31
|
+
@include sprite-position($col, $row, $width, $height, $margin); }
|
32
|
+
|
33
|
+
// Sets rules common for all sprites, assumes you want a square, but allows a rectangular region.
|
34
|
+
@mixin sprite-background($img, $width: $sprite-default-size, $height: $width) {
|
35
|
+
@include sprite-background-rectangle($img, $width, $height); }
|
36
|
+
|
37
|
+
// Sets rules common for all sprites, assumes a rectangular region.
|
38
|
+
@mixin sprite-background-rectangle($img, $width: $sprite-image-default-width, $height: $sprite-image-default-height) {
|
39
|
+
background: image-url($img) no-repeat;
|
40
|
+
width: $width;
|
41
|
+
height: $height;
|
42
|
+
overflow: hidden; }
|
43
|
+
|
44
|
+
// Allows horizontal sprite positioning optimized for a single row of sprites.
|
45
|
+
@mixin sprite-column($col, $width: $sprite-image-default-width, $margin: $sprite-default-margin) {
|
46
|
+
@include sprite-position($col, 1, $width, 0px, $margin); }
|
47
|
+
|
48
|
+
// Allows vertical sprite positioning optimized for a single column of sprites.
|
49
|
+
@mixin sprite-row($row, $height: $sprite-image-default-height, $margin: $sprite-default-margin) {
|
50
|
+
@include sprite-position(1, $row, 0px, $height, $margin); }
|
51
|
+
|
52
|
+
// Allows vertical and horizontal sprite positioning from a grid of equal dimensioned sprites.
|
53
|
+
@mixin sprite-position($col, $row: 1, $width: $sprite-image-default-width, $height: $sprite-image-default-height, $margin: $sprite-default-margin) {
|
54
|
+
$x: ($col - 1) * -$width - ($col - 1) * $margin;
|
55
|
+
$y: ($row - 1) * -$height - ($row - 1) * $margin;
|
56
|
+
background-position: $x $y; }
|
data/app/assets/stylesheets/concen/compass/utilities/tables/_alternating-rows-and-columns.scss
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
@mixin alternating-rows-and-columns($even-row-color, $odd-row-color, $dark-intersection, $header-color: white, $footer-color: white) {
|
2
|
+
th {
|
3
|
+
background-color: $header-color;
|
4
|
+
&.even, &:nth-child(2n) {
|
5
|
+
background-color: $header-color - $dark-intersection; } }
|
6
|
+
tr.odd {
|
7
|
+
td {
|
8
|
+
background-color: $odd-row-color;
|
9
|
+
&.even, &:nth-child(2n) {
|
10
|
+
background-color: $odd-row-color - $dark-intersection; } } }
|
11
|
+
tr.even {
|
12
|
+
td {
|
13
|
+
background-color: $even-row-color;
|
14
|
+
&.even, &:nth-child(2n) {
|
15
|
+
background-color: $even-row-color - $dark-intersection; } } }
|
16
|
+
tfoot {
|
17
|
+
th, td {
|
18
|
+
background-color: $footer-color;
|
19
|
+
&.even, &:nth-child(2n) {
|
20
|
+
background-color: $footer-color - $dark-intersection; } } } }
|
@@ -0,0 +1,33 @@
|
|
1
|
+
@mixin outer-table-borders($width: 2px, $color: black) {
|
2
|
+
border: $width solid $color;
|
3
|
+
thead {
|
4
|
+
th {
|
5
|
+
border-bottom: $width solid $color; } }
|
6
|
+
tfoot {
|
7
|
+
th, td {
|
8
|
+
border-top: $width solid $color; } }
|
9
|
+
th {
|
10
|
+
&:first-child {
|
11
|
+
border-right: $width solid $color; } } }
|
12
|
+
|
13
|
+
@mixin inner-table-borders($width: 2px, $color: black) {
|
14
|
+
th, td {
|
15
|
+
border: {
|
16
|
+
right: $width solid $color;
|
17
|
+
bottom: $width solid $color;
|
18
|
+
left-width: 0px;
|
19
|
+
top-width: 0px; };
|
20
|
+
&:last-child,
|
21
|
+
&.last {
|
22
|
+
border-right-width: 0px; } }
|
23
|
+
|
24
|
+
// IE8 ignores rules that are included on the same line as :last-child
|
25
|
+
// see http://www.richardscarrott.co.uk/posts/view/ie8-last-child-bug for details
|
26
|
+
|
27
|
+
tbody, tfoot {
|
28
|
+
tr:last-child {
|
29
|
+
th, td {
|
30
|
+
border-bottom-width: 0px; } }
|
31
|
+
tr.last {
|
32
|
+
th, td {
|
33
|
+
border-bottom-width: 0px; } } } }
|
@@ -44,17 +44,17 @@ a.link-button
|
|
44
44
|
border: 1px solid $color-2
|
45
45
|
padding: 2px 8px
|
46
46
|
font-weight: bold
|
47
|
-
color: $color-2
|
47
|
+
color: $color-2 !important
|
48
48
|
width: auto
|
49
49
|
+border-radius(30px)
|
50
50
|
vertical-align: middle
|
51
51
|
background: $color-4
|
52
|
-
+background(linear-gradient(white, $color-3))
|
53
|
-
|
52
|
+
+background-image(linear-gradient(white, $color-3))
|
53
|
+
text-shadow: white 0px 1px 0px
|
54
54
|
&:hover
|
55
55
|
text-decoration: none
|
56
56
|
&:active
|
57
|
-
+background(linear-gradient($color-3, white))
|
57
|
+
+background-image(linear-gradient($color-3, white))
|
58
58
|
|
59
59
|
img.visit-recorder
|
60
60
|
position: absolute
|
@@ -1,10 +1,10 @@
|
|
1
1
|
// Colors.
|
2
2
|
|
3
|
-
$color-1: hsl(
|
4
|
-
$color-2: hsl(
|
5
|
-
$color-3: hsl(
|
6
|
-
$color-4: hsl(
|
7
|
-
$color-5: hsl(
|
3
|
+
$color-1: hsl(215, 100%, 20%) // #002A66
|
4
|
+
$color-2: hsl(215, 16%, 45%) // #607085
|
5
|
+
$color-3: hsl(215, 16%, 90%) // #E1E5EA
|
6
|
+
$color-4: hsl(215, 16%, 95%) // #F0F2F4
|
7
|
+
$color-5: hsl(215, 16%, 86%) // #D6DAE1
|
8
8
|
$gray-20: hsl(0, 0%, 20%)
|
9
9
|
$gray-60: hsl(0, 0%, 60%)
|
10
10
|
$gray-80: hsl(0, 0%, 80%)
|
@@ -1,10 +1,4 @@
|
|
1
1
|
module Concen
|
2
2
|
module ApplicationHelper
|
3
|
-
# Remove all the new lines from the output.
|
4
|
-
# This is very useful when used for inline-block elements, because
|
5
|
-
# white spaces will transform into extra gaps between element.
|
6
|
-
def one_line(&block)
|
7
|
-
(capture_haml(&block).gsub("\n", '')).html_safe
|
8
|
-
end
|
9
3
|
end
|
10
4
|
end
|
data/app/models/concen/page.rb
CHANGED
@@ -71,17 +71,26 @@ module Concen
|
|
71
71
|
PROTECTED_FIELDS = [:_id, :parent_id, :level, :created_at, :updated_at, :content, :raw_text, :position, :grid_files, :ancestor_slugs]
|
72
72
|
|
73
73
|
def content_in_html(key = "main", data={})
|
74
|
+
html = nil
|
75
|
+
|
74
76
|
if content = self.content.try(:[], key)
|
77
|
+
# Parse mustache first.
|
75
78
|
content = Mustache.render(content, data)
|
79
|
+
|
80
|
+
# Parse markdown.
|
76
81
|
markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML, Concen.markdown_extensions)
|
77
82
|
html = markdown.render content
|
83
|
+
|
84
|
+
# Parse smartypants.
|
78
85
|
if Concen.parse_markdown_with_smartypants
|
86
|
+
# Temporary hack to fix smartypants bug in Redcarpet 2.0.0b5.
|
87
|
+
html.gsub!("'", "'")
|
88
|
+
|
79
89
|
html = Redcarpet::Render::SmartyPants.render html
|
80
90
|
end
|
81
|
-
return html
|
82
|
-
else
|
83
|
-
return nil
|
84
91
|
end
|
92
|
+
|
93
|
+
return html
|
85
94
|
end
|
86
95
|
|
87
96
|
def images(filename=nil)
|
@@ -0,0 +1,23 @@
|
|
1
|
+
<%= form_for [@page, @grid_file], :url => concen_page_grid_file_path(@page, @grid_file), :html => {:class => "with-text-editor wide"} do |f| %>
|
2
|
+
<% if @grid_file.errors.any? %>
|
3
|
+
<div id="errorExplanation">
|
4
|
+
<h3><%= "#{pluralize(@page.errors.count, "error")} prohibited this parent from being saved:" %></h3>
|
5
|
+
<ul>
|
6
|
+
<% @page.errors.full_messages.each do |msg| %>
|
7
|
+
<li><%= msg %></li>
|
8
|
+
<% end %>
|
9
|
+
</ul>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
12
|
+
<div class="field text-editor">
|
13
|
+
<div class="border">
|
14
|
+
<div id="text-editor" class="wide"></div>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
<%= text_area_tag :concen_grid_file_page, @grid_file.read.force_encoding("utf-8"), :class => "text-editor-content hidden" %>
|
18
|
+
<div class="actions flush">
|
19
|
+
<%= f.submit "Save" %>
|
20
|
+
<%= link_to "Delete", concen_page_grid_file_path(@page, @grid_file), :method => :delete %>
|
21
|
+
<%= link_to "Cancel", edit_concen_page_path(@page) %>
|
22
|
+
</div>
|
23
|
+
<% end %>
|
@@ -0,0 +1,11 @@
|
|
1
|
+
<ul>
|
2
|
+
<% files.each_with_index do |file, index| %>
|
3
|
+
<li>
|
4
|
+
<%= link_to "#{file.original_filename} (#{number_to_human_size(file.size)})", file.url(root_url), :class => "filename", "data-path" => file.path %>
|
5
|
+
<% if file.text? %>
|
6
|
+
<%= link_to "Edit", edit_concen_page_grid_file_path(file.page, file) %>
|
7
|
+
<% end %>
|
8
|
+
<%= link_to "Delete", concen_page_grid_file_path(file.page, file), :class => "delete" %>
|
9
|
+
</li>
|
10
|
+
<% end %>
|
11
|
+
</ul>
|
@@ -0,0 +1,32 @@
|
|
1
|
+
<div class="files">
|
2
|
+
<div class="stylesheets">
|
3
|
+
<h3>
|
4
|
+
<span>Stylesheets</span>
|
5
|
+
<%= link_to "New", concen_page_grid_files_path(@page, :file_type => "css"), :class => "link-button new-file" %>
|
6
|
+
</h3>
|
7
|
+
<% if @page.stylesheets.any? %>
|
8
|
+
<%= render :partial => "concen/pages/file_list", :locals => {:files => @page.stylesheets} %>
|
9
|
+
<% end %>
|
10
|
+
</div>
|
11
|
+
<div class="javascripts">
|
12
|
+
<h3>
|
13
|
+
<span>JavaScripts</span>
|
14
|
+
<%= link_to "New", concen_page_grid_files_path(@page, :file_type => "js"), :class => "link-button new-file" %>
|
15
|
+
</h3>
|
16
|
+
<% if @page.javascripts.any? %>
|
17
|
+
<%= render :partial => "concen/pages/file_list", :locals => {:files => @page.javascripts} %>
|
18
|
+
<% end %>
|
19
|
+
</div>
|
20
|
+
<% if @page.images.any? %>
|
21
|
+
<div class="images">
|
22
|
+
<h3>Images</h3>
|
23
|
+
<%= render :partial => "concen/pages/file_list", :locals => {:files => @page.images} %>
|
24
|
+
</div>
|
25
|
+
<% end %>
|
26
|
+
<% if @page.others.any? %>
|
27
|
+
<div class="others">
|
28
|
+
<h3>Others</h3>
|
29
|
+
<%= render :partial => "concen/pages/file_list", :locals => {:files => @page.others} %>
|
30
|
+
</div>
|
31
|
+
<% end %>
|
32
|
+
</div>
|
@@ -0,0 +1,26 @@
|
|
1
|
+
<%= form_for @page, {:html => {:class => "with-text-editor #{'wide' if !@page.persisted?}"}} do |f| %>
|
2
|
+
<% if @page.errors.any? %>
|
3
|
+
<div id="errorExplanation">
|
4
|
+
<h3><%= "#{pluralize(@page.errors.count, "error")} prohibited this parent from being saved:" %></h3>
|
5
|
+
<ul>
|
6
|
+
<% @page.errors.full_messages.each do |msg| %>
|
7
|
+
<li><%= msg %></li>
|
8
|
+
<% end %>
|
9
|
+
</ul>
|
10
|
+
</div>
|
11
|
+
<% end %>
|
12
|
+
<div class="field text-editor">
|
13
|
+
<div class="border">
|
14
|
+
<div id="text-editor"></div>
|
15
|
+
</div>
|
16
|
+
</div>
|
17
|
+
<%= f.text_area :raw_text, :class => "text-editor-content hidden" %>
|
18
|
+
<%= f.hidden_field :parent_id %>
|
19
|
+
<div class="actions flush">
|
20
|
+
<%= f.submit "Save" %>
|
21
|
+
<% if @page.persisted? %>
|
22
|
+
<%= link_to "Delete", concen_page_path(@page), :method => :delete %>
|
23
|
+
<% end %>
|
24
|
+
<%= link_to "Cancel", concen_pages_path %>
|
25
|
+
</div>
|
26
|
+
<% end %>
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<% if root && page.level == 0 %>
|
2
|
+
<% children = [page] %>
|
3
|
+
<% else %>
|
4
|
+
<% children = Concen::Page.where(:parent_id => page.id).asc(:position) %>
|
5
|
+
<% end %>
|
6
|
+
|
7
|
+
<ul class="<%= 'pages' if children.first.level == 0 %>" data-level="<%= children.first.level %>">
|
8
|
+
<% for child in children %>
|
9
|
+
<li data-id="<%= "page-" + child.id.to_s %>">
|
10
|
+
<p class="<%= 'author' if child.authors_as_user.map(&:_id).include? current_concen_user.id %>">
|
11
|
+
<span class="handle"></span>
|
12
|
+
<%= link_to child.title, edit_concen_page_path(child), :class => "title" %>
|
13
|
+
<%= link_to "Add", new_concen_page_path(:parent_id => child.id), :class => "link-button hidden" %>
|
14
|
+
<%= link_to "Edit", edit_concen_page_path(child), :class => "link-button hidden" %>
|
15
|
+
<%= link_to "Delete", concen_page_path(child), :method => :delete, :confirm => "Are you sure?", :class => "link-button hidden" %>
|
16
|
+
</p>
|
17
|
+
<% if Concen::Page.where(:parent_id => child.id).count > 0 %>
|
18
|
+
<%= render :partial => "nested_list", :locals => {:page => child, :root => false} %>
|
19
|
+
<% end %>
|
20
|
+
</li>
|
21
|
+
<% end %>
|
22
|
+
</ul>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<% content_for :head_javascripts do %>
|
2
|
+
<%= javascript_include_tag "concen/pages" %>
|
3
|
+
<% end %>
|
4
|
+
|
5
|
+
<div id="content">
|
6
|
+
<h1>Edit Page</h1>
|
7
|
+
<%= render "form" %>
|
8
|
+
<div id="file-manager">
|
9
|
+
<div class="border">
|
10
|
+
<div id="file-uploader" data-upload-path="<%= upload_concen_page_grid_files_path(@page) %>">
|
11
|
+
<noscript>
|
12
|
+
<p>Please enable JavaScript to use file uploader.</p>
|
13
|
+
</noscript>
|
14
|
+
</div>
|
15
|
+
<%= render "files" %>
|
16
|
+
</div>
|
17
|
+
</div>
|
18
|
+
<div class="clear"></div>
|
19
|
+
</div>
|