constructor-core 0.9.1 → 1.0.0beta1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (112) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/images/.keep +0 -0
  3. data/app/assets/javascripts/constructor_core/application.js.coffee +15 -18
  4. data/app/assets/javascripts/constructor_core/expandable_tree/hashchange.js.coffee +33 -0
  5. data/app/assets/javascripts/constructor_core/expandable_tree/initializer.js.coffee +106 -0
  6. data/app/assets/javascripts/constructor_core/expandable_tree/jquery.cookie.coffee +68 -0
  7. data/app/assets/javascripts/constructor_core/expandable_tree/restorable.js.coffee +122 -0
  8. data/app/assets/javascripts/constructor_core/jquery.ui.nestedSortable.js +429 -0
  9. data/app/assets/javascripts/constructor_core/jquery_bundle.js.coffee +2 -1
  10. data/app/assets/javascripts/constructor_core/render_tree_helper.js.coffee +82 -0
  11. data/app/assets/javascripts/constructor_core/sortable_tree/initializer.js.coffee +54 -0
  12. data/app/assets/stylesheets/constructor_core/application.css.scss +24 -1
  13. data/app/assets/stylesheets/constructor_core/framework/all.scss +4 -0
  14. data/app/assets/stylesheets/constructor_core/framework/classes.scss +4 -0
  15. data/app/assets/stylesheets/constructor_core/framework/globals.scss +49 -0
  16. data/app/assets/stylesheets/constructor_core/framework/grid.scss +33 -0
  17. data/app/assets/stylesheets/constructor_core/framework/mixin.scss +193 -0
  18. data/app/assets/stylesheets/constructor_core/project/blocks/b-button/_color/b-button_color_light.scss +12 -0
  19. data/app/assets/stylesheets/constructor_core/project/blocks/b-button/_size/b-button_size_small.scss +7 -0
  20. data/app/assets/stylesheets/constructor_core/project/blocks/b-button/b-button.scss +29 -0
  21. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__actions/b-form__actions.scss +3 -0
  22. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__field/b-form__field.scss +12 -0
  23. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__file/b-form__file.scss +12 -0
  24. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__label/b-form__label.scss +7 -0
  25. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/__row/b-form__row.scss +4 -0
  26. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-form.scss +1 -0
  27. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/__icon/b-full-url__icon.scss +5 -0
  28. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/__path/b-full-url__path.scss +4 -0
  29. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/__url/b-full-url__url.scss +8 -0
  30. data/app/assets/stylesheets/constructor_core/project/blocks/b-form/b-full-url/b-full-url.scss +11 -0
  31. data/app/assets/stylesheets/constructor_core/project/blocks/b-header/b-header.scss +6 -0
  32. data/app/assets/stylesheets/constructor_core/project/blocks/b-login/__field/b-login__field.scss +13 -0
  33. data/app/assets/stylesheets/constructor_core/project/blocks/b-login/__label/b-login__label.scss +6 -0
  34. data/app/assets/stylesheets/constructor_core/project/blocks/b-login/__remember/b-login__remember.scss +4 -0
  35. data/app/assets/stylesheets/constructor_core/project/blocks/b-login/b-login.scss +8 -0
  36. data/app/assets/stylesheets/constructor_core/project/blocks/b-logo/b-logo.scss +15 -0
  37. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item-icon/b-menu__item-icon.scss +3 -0
  38. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item-link/_active/b-menu__item-link_active.scss +10 -0
  39. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item-link/b-menu__item-link.scss +13 -0
  40. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/__item/b-menu__item.scss +4 -0
  41. data/app/assets/stylesheets/constructor_core/project/blocks/b-menu/b-menu.scss +5 -0
  42. data/app/assets/stylesheets/constructor_core/project/blocks/b-profile/b-profile.scss +3 -0
  43. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__expand/b-tree__expand.scss +10 -0
  44. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__handle/b-tree__handle.scss +8 -0
  45. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__item/b-tree__item.scss +5 -0
  46. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__li/b-tree__li.scss +4 -0
  47. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__link/b-tree__link.scss +14 -0
  48. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__nested-set/b-tree__nested-set.scss +6 -0
  49. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/__url/b-tree__url.scss +5 -0
  50. data/app/assets/stylesheets/constructor_core/project/blocks/b-tree/b-tree.scss +5 -0
  51. data/app/assets/stylesheets/constructor_core/project/layouts/l-all/l-all.scss +4 -0
  52. data/app/assets/stylesheets/constructor_core/project/layouts/l-content/l-content.scss +3 -0
  53. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__avatar/l-header__avatar.scss +5 -0
  54. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__email/l-header__email.scss +12 -0
  55. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__link-icon/l-header__link-icon.scss +4 -0
  56. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__link/l-header__link.scss +12 -0
  57. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__logout/l-header__logout.scss +11 -0
  58. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/__profile/l-header__profile.scss +4 -0
  59. data/app/assets/stylesheets/constructor_core/project/layouts/l-header/l-header.scss +7 -0
  60. data/app/assets/stylesheets/constructor_core/project/layouts/l-pages/l-pages.scss +3 -0
  61. data/app/assets/stylesheets/constructor_core/project/layouts/l-sidebar/l-sidebar.scss +7 -0
  62. data/app/controllers/constructor_core/sessions_controller.rb +1 -1
  63. data/app/helpers/constructor_core/application_helper.rb +6 -0
  64. data/app/helpers/render_expandable_tree_helper.rb +51 -0
  65. data/app/views/constructor_core/sessions/new.html.slim +11 -20
  66. data/app/views/constructor_core/users/profile.html.slim +11 -17
  67. data/app/views/layouts/constructor_core/application_core.html.slim +44 -70
  68. data/app/views/layouts/constructor_core/login.html.slim +27 -0
  69. data/config/locales/en.yml +3 -2
  70. data/config/locales/fr.yml +3 -2
  71. data/config/locales/ru.yml +2 -1
  72. data/constructor-core.gemspec +4 -3
  73. data/lib/constructor-core.rb +5 -2
  74. data/lib/constructor_core/version.rb +1 -1
  75. data/{app → vendor}/assets/javascripts/constructor_core/jquery.cookie.js +0 -0
  76. data/{app → vendor}/assets/javascripts/constructor_core/keys_snippet.js +0 -0
  77. data/{app → vendor}/assets/javascripts/constructor_core/retina.js +0 -0
  78. data/vendor/assets/stylesheets/constructor_core/framework/all.scss +4 -0
  79. data/vendor/assets/stylesheets/constructor_core/framework/classes.scss +4 -0
  80. data/vendor/assets/stylesheets/constructor_core/framework/globals.scss +49 -0
  81. data/vendor/assets/stylesheets/constructor_core/framework/grid.scss +33 -0
  82. data/vendor/assets/stylesheets/constructor_core/framework/mixin.scss +193 -0
  83. metadata +94 -45
  84. data/app/assets/images/constructor_core/glyphicons-halflings-white.png +0 -0
  85. data/app/assets/images/constructor_core/glyphicons-halflings.png +0 -0
  86. data/app/assets/images/constructor_core/minus.gif +0 -0
  87. data/app/assets/images/constructor_core/plus.gif +0 -0
  88. data/app/assets/images/constructor_core/rss.png +0 -0
  89. data/app/assets/images/constructor_core/treeview-black-line.gif +0 -0
  90. data/app/assets/images/constructor_core/treeview-black.gif +0 -0
  91. data/app/assets/images/constructor_core/treeview-default-line.gif +0 -0
  92. data/app/assets/images/constructor_core/treeview-default.gif +0 -0
  93. data/app/assets/images/constructor_core/treeview-famfamfam-line.gif +0 -0
  94. data/app/assets/images/constructor_core/treeview-famfamfam.gif +0 -0
  95. data/app/assets/images/constructor_core/treeview-gray-line.gif +0 -0
  96. data/app/assets/images/constructor_core/treeview-gray.gif +0 -0
  97. data/app/assets/images/constructor_core/treeview-red-line.gif +0 -0
  98. data/app/assets/images/constructor_core/treeview-red.gif +0 -0
  99. data/app/assets/images/constructor_core/twitter.png +0 -0
  100. data/app/assets/images/constructor_core/widgets.png +0 -0
  101. data/app/assets/javascripts/constructor_core/bootstrap.js +0 -2276
  102. data/app/assets/stylesheets/constructor_core/main.css.scss.erb +0 -233
  103. data/app/views/constructor_core/devise/confirmations/new.html.slim +0 -10
  104. data/app/views/constructor_core/devise/mailer/confirmation_instructions.html.slim +0 -5
  105. data/app/views/constructor_core/devise/mailer/reset_password_instructions.html.slim +0 -7
  106. data/app/views/constructor_core/devise/mailer/unlock_instructions.html.slim +0 -5
  107. data/app/views/constructor_core/devise/passwords/edit.html.slim +0 -21
  108. data/app/views/constructor_core/devise/passwords/new.html.slim +0 -13
  109. data/app/views/constructor_core/devise/registrations/edit.html.slim +0 -28
  110. data/app/views/constructor_core/devise/registrations/new.html.slim +0 -20
  111. data/app/views/constructor_core/devise/shared/_links.html.slim +0 -19
  112. data/app/views/constructor_core/devise/unlocks/new.html.slim +0 -9
@@ -1,3 +1,4 @@
1
1
  #= require jquery
2
+ #= require jquery.ui.all
2
3
  #= require jquery_ujs
3
- #= require constructor_core/jquery.cookie
4
+ #= require ./expandable_tree/jquery.cookie
@@ -0,0 +1,82 @@
1
+ @_escape = (str) ->
2
+ str
3
+ .replace(/&/g, '&')
4
+ .replace(/>/g, '>')
5
+ .replace(/</g, '&lt;')
6
+ .replace(/"/g, '&quot;')
7
+
8
+ @_unescape = (str) ->
9
+ str
10
+ .replace(/&amp;/g, '&')
11
+ .replace(/&gt;/g, '>')
12
+ .replace(/&lt;/g, '<')
13
+ .replace(/&quot;/g, '"')
14
+
15
+ @render_tree = (tree, options = {}) ->
16
+ html = ''
17
+
18
+ opts =
19
+ id: 'id'
20
+ node: null
21
+ root: false
22
+ level: 0
23
+ boost: []
24
+
25
+ # JQuery hash merge
26
+ $.extend opts, options
27
+
28
+ # Define Boost Only Once
29
+ unless opts['boost'].length is 0
30
+ boost = []
31
+ for node in tree
32
+ num = node.parent_id || 0
33
+ item = boost[num]
34
+ boost[num] = [] unless item instanceof Array
35
+ boost[num].push node
36
+
37
+ opts['boost'] = boost
38
+
39
+ unless opts.node
40
+ # render root nodes
41
+ roots = opts['boost'][0]
42
+
43
+ # select roots
44
+ # for node in tree
45
+ # roots.push node if node.parent_id is null
46
+
47
+ # roots is empty, but tree is not empty
48
+ # I should select nodes with minimal parent_id
49
+ # they will be roots
50
+ # order by lft, should be made at server side
51
+ min_elem = tree[0]
52
+ if roots.length is 0 and tree.length isnt 0
53
+ for elem in tree
54
+ min_elem = elem if elem.parent_id < min_elem.parent_id
55
+ # select roots witn min parent_id
56
+ for elem in tree
57
+ if elem.parent_id is min_elem.parent_id
58
+ roots.push elem
59
+
60
+ # render tree
61
+ for node in roots
62
+ $.extend opts, { node: node, root: false, level: opts.level + 1 }
63
+ children_html = render_tree tree, opts
64
+ html += opts.render_node(node, children_html, opts)
65
+ else
66
+ # render children nodes
67
+ children = []
68
+ children_html = ''
69
+ children = boost[opts.node.id]
70
+
71
+ # select children
72
+ # for elem in tree
73
+ # children.push elem if elem.parent_id is opts.node.id
74
+
75
+ # render children nodes
76
+ for node in children
77
+ $.extend opts, { node: node, root: false, level: opts.level + 1 }
78
+ children_html = render_tree tree, opts
79
+ html += opts.render_node(node, children_html, opts)
80
+
81
+ # result html
82
+ html
@@ -0,0 +1,54 @@
1
+ @rebuild_sortable_tree = (rebuild_url, item_id, parent_id, prev_id, next_id) ->
2
+ $.ajax
3
+ type: 'POST'
4
+ dataType: 'script'
5
+ url: rebuild_url
6
+ data:
7
+ id: item_id
8
+ parent_id: parent_id
9
+ prev_id: prev_id
10
+ next_id: next_id
11
+
12
+ error: (xhr, status, error) ->
13
+ console.log error
14
+
15
+ @init_sortable_tree = ->
16
+ sortable_tree = $('.b-tree')
17
+ return false if sortable_tree.length is 0
18
+
19
+ rebuild_url = sortable_tree.data('rebuild_url') || sortable_tree.data('rebuild-url')
20
+ max_levels = sortable_tree.data('max_levels') || sortable_tree.data('max-levels')
21
+
22
+ ############################################
23
+ # Initialize Sortable Tree
24
+ ############################################
25
+ sortable_tree.nestedSortable
26
+ items: '.b-tree__li'
27
+ helper: 'clone'
28
+ handle: '.b-tree__handle'
29
+ tolerance: 'pointer'
30
+ maxLevels: max_levels
31
+ revert: 250
32
+ tabSize: 25
33
+ opacity: 0.6
34
+ placeholder: 'placeholder'
35
+ disableNesting: 'no-nest'
36
+ toleranceElement: '> div'
37
+ forcePlaceholderSize: true
38
+
39
+ ############################################
40
+ # Sortable Update Event
41
+ ############################################
42
+ sortable_tree.on "sortupdate", (event, ui) =>
43
+ item = ui.item
44
+ attr_name = 'node-id'
45
+ item_id = item.data(attr_name)
46
+ prev_id = item.prev().data(attr_name)
47
+ next_id = item.next().data(attr_name)
48
+ parent_id = item.parent().parent().data(attr_name)
49
+
50
+ rebuild_sortable_tree(rebuild_url, item_id, parent_id, prev_id, next_id)
51
+
52
+ true
53
+
54
+ $ -> init_sortable_tree()
@@ -1,3 +1,26 @@
1
1
  //= require ckeditor/contents
2
2
  //= require ckeditor/skins/moono/editor.css
3
- //= require ./main
3
+ //= require font-awesome
4
+ //= require jquery.ui.all
5
+ //= require tree
6
+ //= require sortable_tree
7
+ //= require nested_options
8
+ //= require_self
9
+
10
+ @import 'framework/all';
11
+ @import 'project/**/*';
12
+
13
+ html {
14
+ height: 100%;
15
+ width: 100%;
16
+ }
17
+
18
+ body {
19
+ height: 100%;
20
+ margin: 0;
21
+ color: #333;
22
+ font-size: 16px;
23
+ font-family: Ubuntu, Arial, sans-serif;
24
+ font-weight: 100;
25
+ background: #ddd;
26
+ }
@@ -0,0 +1,4 @@
1
+ @import 'mixin';
2
+ @import 'classes';
3
+ @import 'globals';
4
+ @import 'grid';
@@ -0,0 +1,4 @@
1
+ .l-base { @include base; }
2
+ .b-block { @include display-block; }
3
+ .b-inline { @include display-inline; }
4
+ .b-center { @include center-block; }
@@ -0,0 +1,49 @@
1
+ .g-out { overflow: visible !important}
2
+
3
+ .g-line {
4
+ @include clearfix;
5
+ }
6
+
7
+ .g-align_left {
8
+ text-align: left !important;
9
+ }
10
+
11
+ .g-align_right {
12
+ text-align: right !important;
13
+ }
14
+
15
+ .g-align_center {
16
+ text-align: center !important;
17
+ }
18
+
19
+ .g-float_left {
20
+ float: left !important;
21
+ }
22
+
23
+ .g-float_right {
24
+ float: right !important;
25
+ }
26
+
27
+ .g-hidden, .g-hide {
28
+ display: none !important;
29
+ }
30
+
31
+ .g-uppercase {
32
+ text-transform: uppercase !important;
33
+ }
34
+
35
+ .g-spin {
36
+ -webkit-animation-name: spin;
37
+ -webkit-animation-duration: 2000ms;
38
+ -webkit-animation-iteration-count: infinite;
39
+ -webkit-animation-timing-function: linear;
40
+ -moz-animation-name: spin;
41
+ -moz-animation-duration: 2000ms;
42
+ -moz-animation-iteration-count: infinite;
43
+ -moz-animation-timing-function: linear;
44
+ -ms-animation-name: spin;
45
+ -ms-animation-duration: 2000ms;
46
+ -ms-animation-iteration-count: infinite;
47
+ -ms-animation-timing-function: linear;
48
+ -o-transition: rotate(3600deg);
49
+ }
@@ -0,0 +1,33 @@
1
+ .l-row {
2
+ @include clearfix;
3
+ overflow: hidden;
4
+ margin-left: -20px;
5
+ }
6
+
7
+ .l-col {
8
+ float: left;
9
+ overflow: hidden;
10
+ margin-left: 20px;
11
+ @include box-sizing(border-box);
12
+ }
13
+
14
+ .l-col-i {
15
+ padding: 0 10px;
16
+ }
17
+
18
+ .l-col-1 { width: 40px; }
19
+ .l-col-2 { width: 100px; }
20
+ .l-col-3 { width: 160px; }
21
+ .l-col-4 { width: 220px; }
22
+ .l-col-5 { width: 280px; }
23
+ .l-col-6 { width: 340px; }
24
+ .l-col-7 { width: 400px; }
25
+ .l-col-8 { width: 460px; }
26
+ .l-col-9 { width: 520px; }
27
+ .l-col-10 { width: 580px; }
28
+ .l-col-11 { width: 640px; }
29
+ .l-col-12 { width: 700px; }
30
+ .l-col-13 { width: 760px; }
31
+ .l-col-14 { width: 820px; }
32
+ .l-col-15 { width: 880px; }
33
+ .l-col-16 { width: 940px; }
@@ -0,0 +1,193 @@
1
+ @mixin gradient-vertical($startColor: #555, $endColor: #333) {
2
+ background-color: mix($startColor, $endColor, 60%);
3
+ background-image: -moz-linear-gradient(top, $startColor, $endColor); // FF 3.6+
4
+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from($startColor), to($endColor)); // Safari 4+, Chrome 2+
5
+ background-image: -webkit-linear-gradient(top, $startColor, $endColor); // Safari 5.1+, Chrome 10+
6
+ background-image: -o-linear-gradient(top, $startColor, $endColor); // Opera 11.10
7
+ background-image: linear-gradient(to bottom, $startColor, $endColor); // Standard, IE10
8
+ background-repeat: repeat-x;
9
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($startColor)}', endColorstr='#{ie-hex-str($endColor)}', GradientType=0); // IE9 and down
10
+ }
11
+
12
+ @mixin gradient-horizontal($startColor: #555, $endColor: #333) {
13
+ background-color: $endColor;
14
+ background-image: -moz-linear-gradient(left, $startColor, $endColor); // FF 3.6+
15
+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from($startColor), to($endColor)); // Safari 4+, Chrome 2+
16
+ background-image: -webkit-linear-gradient(left, $startColor, $endColor); // Safari 5.1+, Chrome 10+
17
+ background-image: -o-linear-gradient(left, $startColor, $endColor); // Opera 11.10
18
+ background-image: linear-gradient(to right, $startColor, $endColor); // Standard, IE10
19
+ background-repeat: repeat-x;
20
+ filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($startColor)}', endColorstr='#{ie-hex-str($endColor)}', GradientType=1); // IE9 and down
21
+ }
22
+
23
+ @mixin gradient-radial($innerColor: #555, $outerColor: #333) {
24
+ background-color: $outerColor;
25
+ background-image: -webkit-gradient(radial, center center, 0, center center, 460, from($innerColor), to($outerColor));
26
+ background-image: -webkit-radial-gradient(circle, $innerColor, $outerColor);
27
+ background-image: -moz-radial-gradient(circle, $innerColor, $outerColor);
28
+ background-image: -o-radial-gradient(circle, $innerColor, $outerColor);
29
+ background-repeat: no-repeat;
30
+ }
31
+
32
+ @mixin box-shadow($shadow...) {
33
+ -webkit-box-shadow: $shadow;
34
+ -moz-box-shadow: $shadow;
35
+ box-shadow: $shadow;
36
+ }
37
+
38
+ @mixin box-sizing($boxmodel) {
39
+ -webkit-box-sizing: $boxmodel;
40
+ -moz-box-sizing: $boxmodel;
41
+ box-sizing: $boxmodel;
42
+ }
43
+
44
+ @mixin border-radius($radius) {
45
+ -webkit-border-radius: $radius;
46
+ -moz-border-radius: $radius;
47
+ border-radius: $radius;
48
+ }
49
+
50
+ @mixin border-top-left-radius($radius) {
51
+ -webkit-border-top-left-radius: $radius;
52
+ -moz-border-radius-topleft: $radius;
53
+ border-top-left-radius: $radius;
54
+ }
55
+ @mixin border-top-right-radius($radius) {
56
+ -webkit-border-top-right-radius: $radius;
57
+ -moz-border-radius-topright: $radius;
58
+ border-top-right-radius: $radius;
59
+ }
60
+ @mixin border-bottom-right-radius($radius) {
61
+ -webkit-border-bottom-right-radius: $radius;
62
+ -moz-border-radius-bottomright: $radius;
63
+ border-bottom-right-radius: $radius;
64
+ }
65
+ @mixin border-bottom-left-radius($radius) {
66
+ -webkit-border-bottom-left-radius: $radius;
67
+ -moz-border-radius-bottomleft: $radius;
68
+ border-bottom-left-radius: $radius;
69
+ }
70
+
71
+ @mixin border-top-radius($radius) {
72
+ @include border-top-right-radius($radius);
73
+ @include border-top-left-radius($radius);
74
+ }
75
+ @mixin border-right-radius($radius) {
76
+ @include border-top-right-radius($radius);
77
+ @include border-bottom-right-radius($radius);
78
+ }
79
+ @mixin border-bottom-radius($radius) {
80
+ @include border-bottom-right-radius($radius);
81
+ @include border-bottom-left-radius($radius);
82
+ }
83
+ @mixin border-left-radius($radius) {
84
+ @include border-top-left-radius($radius);
85
+ @include border-bottom-left-radius($radius);
86
+ }
87
+
88
+ @mixin transition($transition) {
89
+ -webkit-transition: $transition;
90
+ -moz-transition: $transition;
91
+ -o-transition: $transition;
92
+ transition: $transition;
93
+ }
94
+
95
+ @mixin opacity($opacity) {
96
+ opacity: $opacity / 100;
97
+ filter: alpha(opacity=$opacity);
98
+ }
99
+
100
+ @mixin size($height, $width) {
101
+ width: $width;
102
+ height: $height;
103
+ }
104
+
105
+ @mixin square($size) {
106
+ @include size($size, $size);
107
+ }
108
+
109
+
110
+ // Transformations
111
+ @mixin rotate($degrees) {
112
+ -webkit-transform: rotate($degrees);
113
+ -moz-transform: rotate($degrees);
114
+ -ms-transform: rotate($degrees);
115
+ -o-transform: rotate($degrees);
116
+ transform: rotate($degrees);
117
+ }
118
+ @mixin scale($ratio) {
119
+ -webkit-transform: scale($ratio);
120
+ -moz-transform: scale($ratio);
121
+ -ms-transform: scale($ratio);
122
+ -o-transform: scale($ratio);
123
+ transform: scale($ratio);
124
+ }
125
+ @mixin translate($x, $y) {
126
+ -webkit-transform: translate($x, $y);
127
+ -moz-transform: translate($x, $y);
128
+ -ms-transform: translate($x, $y);
129
+ -o-transform: translate($x, $y);
130
+ transform: translate($x, $y);
131
+ }
132
+ @mixin skew($x, $y) {
133
+ -webkit-transform: skew($x, $y);
134
+ -moz-transform: skew($x, $y);
135
+ -ms-transform: skewX($x) skewY($y); // See https://github.com/twitter/bootstrap/issues/4885
136
+ -o-transform: skew($x, $y);
137
+ transform: skew($x, $y);
138
+ -webkit-backface-visibility: hidden; // See https://github.com/twitter/bootstrap/issues/5319
139
+ }
140
+ @mixin translate3d($x, $y, $z) {
141
+ -webkit-transform: translate3d($x, $y, $z);
142
+ -moz-transform: translate3d($x, $y, $z);
143
+ -o-transform: translate3d($x, $y, $z);
144
+ transform: translate3d($x, $y, $z);
145
+ }
146
+
147
+
148
+
149
+ @mixin display-inline() {
150
+ position: relative;
151
+ display: -moz-inline-stack;
152
+ display: inline-block;
153
+ overflow: hidden;
154
+ vertical-align: top;
155
+ *display: inline;
156
+ *zoom: 1;
157
+ }
158
+
159
+ @mixin display-block() {
160
+ position: relative;
161
+ display: block;
162
+ overflow: hidden;
163
+ }
164
+
165
+ @mixin clearfix(){
166
+ &:before,
167
+ &:after {
168
+ content: " ";
169
+ display: table;
170
+ }
171
+
172
+ &:after {
173
+ clear: both;
174
+ }
175
+
176
+ *zoom: 1;
177
+ }
178
+
179
+ @mixin center-block() {
180
+ @include display-block;
181
+ margin-left: auto;
182
+ margin-right: auto;
183
+ }
184
+
185
+ @mixin background-asset($asset, $options...) {
186
+ background: asset-data-url($asset) $options;
187
+ *background: asset-url($asset) $options;
188
+ }
189
+
190
+ @mixin base($width: 1000px) {
191
+ @include center-block;
192
+ width: $width;
193
+ }