concen 0.2.4 → 0.2.5
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.
- 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>
|