ecrire 0.28.3 → 0.29.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +1 -1
- data/Rakefile +22 -0
- data/lib/ecrire/app/assets/images/favicon.ico +0 -0
- data/lib/ecrire/app/assets/javascripts/admin/editor/content.coffee +3 -0
- data/lib/ecrire/app/assets/javascripts/admin/navigation/save.js.coffee +9 -2
- data/lib/ecrire/app/assets/javascripts/admin/posts/filter.js.coffee +19 -0
- data/lib/ecrire/app/assets/javascripts/admin/posts/filters/tags.js.coffee +15 -6
- data/lib/ecrire/app/assets/javascripts/admin/posts/header.coffee +17 -9
- data/lib/ecrire/app/assets/javascripts/admin/posts/list.coffee +6 -0
- data/lib/ecrire/app/assets/javascripts/admin/posts/tags/form.coffee +39 -0
- data/lib/ecrire/app/assets/javascripts/admin/posts/tags/list.coffee +27 -0
- data/lib/ecrire/app/assets/javascripts/admin/posts/tags/tag.coffee +17 -0
- data/lib/ecrire/app/assets/javascripts/admin/posts/tags.coffee +11 -0
- data/lib/ecrire/app/assets/javascripts/admin/posts/title.coffee +6 -39
- data/lib/ecrire/app/assets/javascripts/admin/posts/titles.coffee +8 -0
- data/lib/ecrire/app/assets/javascripts/shared/popup.js.coffee +17 -4
- data/lib/ecrire/app/assets/stylesheets/admin/header.scss +126 -17
- data/lib/ecrire/app/assets/stylesheets/admin/navigation.scss +5 -1
- data/lib/ecrire/app/assets/stylesheets/admin/posts.scss +80 -281
- data/lib/ecrire/app/assets/stylesheets/admin/preview.scss +55 -0
- data/lib/ecrire/app/assets/stylesheets/admin/tags.scss +59 -0
- data/lib/ecrire/app/assets/stylesheets/admin/title.scss +79 -89
- data/lib/ecrire/app/assets/stylesheets/shared/popup.scss +4 -20
- data/lib/ecrire/app/assets/stylesheets/vendor/prism.scss +1 -0
- data/lib/ecrire/app/controllers/admin/posts/tags_controller.rb +30 -2
- data/lib/ecrire/app/controllers/admin/posts/titles_controller.rb +10 -5
- data/lib/ecrire/app/controllers/admin/posts_controller.rb +10 -10
- data/lib/ecrire/app/helpers/admin/posts_helper.rb +7 -3
- data/lib/ecrire/app/helpers/application_helper.rb +20 -0
- data/lib/ecrire/app/helpers/content_tag_helper.rb +4 -0
- data/lib/ecrire/app/models/admin/post.rb +23 -0
- data/lib/ecrire/app/models/post.rb +1 -1
- data/lib/ecrire/app/models/tag.rb +8 -0
- data/lib/ecrire/app/views/admin/posts/_post.html.erb +9 -0
- data/lib/ecrire/app/views/admin/posts/edit.html.erb +21 -61
- data/lib/ecrire/app/views/admin/posts/header/_base.html.erb +54 -0
- data/lib/ecrire/app/views/admin/posts/index.html.erb +52 -33
- data/lib/ecrire/app/views/admin/posts/index.js.erb +1 -1
- data/lib/ecrire/app/views/admin/posts/show.html.erb +5 -23
- data/lib/ecrire/app/views/admin/posts/tags/_tag.html.erb +11 -2
- data/lib/ecrire/app/views/admin/posts/tags/_tags.html.erb +12 -0
- data/lib/ecrire/app/views/admin/posts/tags/create.js.erb +2 -0
- data/lib/ecrire/app/views/admin/posts/tags/index.js.erb +1 -0
- data/lib/ecrire/app/views/admin/posts/tags/toggle.js.erb +2 -1
- data/lib/ecrire/app/views/admin/posts/titles/_form.html.erb +2 -2
- data/lib/ecrire/app/views/admin/posts/titles/_index.html.erb +10 -0
- data/lib/ecrire/app/views/admin/posts/titles/_titles.html.erb +6 -0
- data/lib/ecrire/app/views/admin/posts/titles/index.html.erb +2 -37
- data/lib/ecrire/app/views/admin/posts/titles/index.js.erb +2 -0
- data/lib/ecrire/app/views/admin/posts/titles/update.js.erb +1 -0
- data/lib/ecrire/app/views/admin/tags/_tags.html.erb +6 -10
- data/lib/ecrire/app/views/admin/tags/index.js.erb +1 -1
- data/lib/ecrire/app/views/layouts/admin/application.html.erb +1 -1
- data/lib/ecrire/application.rb +0 -2
- data/lib/ecrire/commands/console.rb +1 -1
- data/lib/ecrire/config/environment/development.rb +2 -0
- data/lib/ecrire/db/migrate/20140618321984_add_properties_to_posts.rb +1 -1
- data/lib/ecrire/onboarding/assets/stylesheets/shared/base.scss +11 -10
- data/lib/ecrire/onboarding/assets/stylesheets/shared/complete.scss +1 -0
- data/lib/ecrire/onboarding/assets/stylesheets/shared/welcome.scss +1 -1
- data/lib/ecrire/routes.rb +1 -1
- data/lib/ecrire/theme/template/assets/stylesheets/shared/{base.css.scss → base.scss} +4 -18
- data/lib/ecrire/theme/template/assets/stylesheets/shared/code.scss +33 -0
- data/lib/ecrire/theme/template/assets/stylesheets/shared/{header.css.scss → header.scss} +13 -3
- data/lib/ecrire/theme/template/assets/stylesheets/shared/{posts.css.scss → posts.scss} +10 -0
- data/lib/ecrire/theme/template/controllers/posts_controller.rb +0 -4
- data/lib/ecrire/theme/template/secrets.yml +4 -4
- data/lib/ecrire/theme/template/views/layouts/application.html.erb +2 -2
- data/lib/ecrire/version.rb +1 -1
- data/lib/ecrire.rb +1 -0
- data/test/editor/models/post_test.rb +1 -1
- data/test/theme/theme/views/layouts/application.html.erb +1 -0
- metadata +35 -18
- data/lib/ecrire/app/assets/javascripts/admin/posts/filters/filter.js.coffee +0 -21
- data/lib/ecrire/app/assets/javascripts/admin/posts/tag.js.coffee +0 -11
- data/lib/ecrire/app/views/admin/posts/_posts.html.erb +0 -26
- /data/lib/ecrire/app/assets/javascripts/admin/posts/{new.js.coffee → new.coffee} +0 -0
- /data/lib/ecrire/app/assets/javascripts/admin/posts/{toggle.js.coffee → toggle.coffee} +0 -0
- /data/lib/ecrire/theme/template/assets/stylesheets/browser/{base.css.scss → base.scss} +0 -0
- /data/lib/ecrire/theme/template/assets/stylesheets/{browser.css.scss → browser.scss} +0 -0
- /data/lib/ecrire/theme/template/assets/stylesheets/mobile/{base.css.scss → base.scss} +0 -0
- /data/lib/ecrire/theme/template/assets/stylesheets/{mobile.css.scss → mobile.scss} +0 -0
- /data/lib/ecrire/theme/template/assets/stylesheets/shared/{tags.css.scss → tags.scss} +0 -0
- /data/lib/ecrire/theme/template/assets/stylesheets/tablet/{base.css.scss → base.scss} +0 -0
- /data/lib/ecrire/theme/template/assets/stylesheets/{tablet.css.scss → tablet.scss} +0 -0
- /data/lib/ecrire/theme/template/assets/stylesheets/{variables.css.scss → variables.scss} +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 972644840a974c24fcf476528edce7ffff3360a5
|
4
|
+
data.tar.gz: 50ab53263e7654829b081cc356a13dde20afcf24
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 342ed664666e9efa6a4787ceb059aee6608b62a0e1ed647d971d0b847db0d98ffced77f9e97915c136cf318eace3e4d3d2841e8b25fb72d29a42ba0def2945aa
|
7
|
+
data.tar.gz: 7954cd679f01d36420e87b1bd2dc8ae18e0f3fa9cc9e8d480be1f77cb88d1952a277f735eb7eda400c8b0360f30642efaa2a8b0e2dd2891095829d65f51f4189
|
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -66,6 +66,7 @@ namespace :test do
|
|
66
66
|
t.verbose = true
|
67
67
|
end
|
68
68
|
|
69
|
+
|
69
70
|
end
|
70
71
|
|
71
72
|
task :test do
|
@@ -73,3 +74,24 @@ task :test do
|
|
73
74
|
Rake::Task[name].invoke
|
74
75
|
end
|
75
76
|
end
|
77
|
+
|
78
|
+
|
79
|
+
namespace :template do
|
80
|
+
desc 'Run a server set to use the template theme'
|
81
|
+
task :server do
|
82
|
+
require 'ecrire/commands/server'
|
83
|
+
Dir.chdir 'lib/ecrire/theme/template'
|
84
|
+
Rails.env = ENV['RAILS_ENV'] = 'development'
|
85
|
+
Ecrire::Commands::Server.new(Port: 3000).run!
|
86
|
+
end
|
87
|
+
|
88
|
+
task :routes do
|
89
|
+
Dir.chdir 'lib/ecrire/theme/template'
|
90
|
+
Rails.env = ENV['RAILS_ENV'] = 'development'
|
91
|
+
Ecrire::Application.initialize!
|
92
|
+
all_routes = Ecrire::Application.routes.routes
|
93
|
+
require 'action_dispatch/routing/inspector'
|
94
|
+
inspector = ActionDispatch::Routing::RoutesInspector.new(all_routes)
|
95
|
+
puts inspector.format(ActionDispatch::Routing::ConsoleFormatter.new, ENV['CONTROLLER'])
|
96
|
+
end
|
97
|
+
end
|
Binary file
|
@@ -31,7 +31,11 @@ ObserveJS.bind 'Editor.Save', class
|
|
31
31
|
e.preventDefault()
|
32
32
|
e.stopPropagation()
|
33
33
|
|
34
|
-
dialog = @retrieve('#SavePost')
|
34
|
+
dialog = @retrieve('#SavePost')
|
35
|
+
|
36
|
+
if e.type == 'click'
|
37
|
+
dialog.dataset.preview = true
|
38
|
+
|
35
39
|
document.body.appendChild(dialog)
|
36
40
|
|
37
41
|
saved: (e) =>
|
@@ -59,7 +63,10 @@ ObserveJS.bind 'Editor.Save.Dialog', class
|
|
59
63
|
saved: (e) =>
|
60
64
|
msg = @element().querySelector('.message')
|
61
65
|
msg.innerHTML = e.MessageHTML
|
62
|
-
|
66
|
+
if @element().dataset.preview == 'true'
|
67
|
+
window.location = @element().getAttribute('href')
|
68
|
+
else
|
69
|
+
window.setTimeout @remove, 400
|
63
70
|
|
64
71
|
download: (e) =>
|
65
72
|
if e.lengthComputable
|
@@ -0,0 +1,19 @@
|
|
1
|
+
ObserveJS.bind 'Posts.Filter', class
|
2
|
+
loaded: =>
|
3
|
+
for el in @element().elements
|
4
|
+
switch el.type
|
5
|
+
when 'text', 'hidden' then @on 'input', el, @search
|
6
|
+
when 'radio' then @on 'change', el, @search
|
7
|
+
|
8
|
+
document.querySelector('input.search').focus()
|
9
|
+
|
10
|
+
search: =>
|
11
|
+
xhr = new ObserveJS.XHR(@element())
|
12
|
+
for el in @element().elements
|
13
|
+
switch el.type
|
14
|
+
when 'text', 'hidden' then xhr.data.set(el.name, el.value) if el.value.length > 0
|
15
|
+
when 'radio' then xhr.data.set(el.name, el.value) if el.checked == true && el.value.length > 0
|
16
|
+
xhr.send()
|
17
|
+
|
18
|
+
document.querySelector('input.search').focus()
|
19
|
+
|
@@ -15,26 +15,35 @@ ObserveJS.bind 'Posts.Filter.Tags', class
|
|
15
15
|
|
16
16
|
return unless el?
|
17
17
|
|
18
|
+
input = @element().querySelector('input[type=hidden]')
|
18
19
|
span = @retrieve('span.tag')
|
19
20
|
span.textContent = el.textContent
|
21
|
+
input.value = el.getAttribute('oid')
|
22
|
+
|
20
23
|
@retrieve('svg.placeholder').remove()
|
21
24
|
@element().appendChild(span)
|
22
25
|
@element().appendChild(@retrieve('svg.clear'))
|
23
|
-
@element().setAttribute('tid', el.getAttribute('oid'))
|
24
26
|
@element().classList.add 'tagged'
|
27
|
+
|
25
28
|
document.querySelector("[as='Overlay']").instance.remove()
|
26
|
-
|
27
|
-
|
29
|
+
|
30
|
+
@changed(input)
|
28
31
|
|
29
32
|
action: =>
|
33
|
+
input = @element().querySelector('input[type=hidden]')
|
30
34
|
if @element().classList.contains('tagged')
|
31
35
|
@retrieve('svg.clear').remove()
|
32
36
|
@retrieve('span.tag').remove()
|
33
37
|
@element().appendChild(@retrieve('svg.placeholder'))
|
34
38
|
@element().classList.remove('tagged')
|
35
|
-
|
39
|
+
input.value = null
|
40
|
+
@changed(input)
|
36
41
|
else
|
37
42
|
xhr = new ObserveJS.XHR(@element())
|
38
43
|
xhr.send()
|
39
|
-
|
40
|
-
|
44
|
+
|
45
|
+
|
46
|
+
changed: (el) =>
|
47
|
+
event = new Event('input')
|
48
|
+
el.dispatchEvent(event)
|
49
|
+
|
@@ -11,12 +11,24 @@ ObserveJS.bind 'Post.Header', class
|
|
11
11
|
|
12
12
|
@on 'images:create', @refresh
|
13
13
|
@on 'images:destroy', @refresh
|
14
|
-
@on 'titles:index', @popup
|
15
|
-
@on 'titles:update', document, @updateTitle
|
16
|
-
@on 'titles:create', document, @updateTitle
|
17
14
|
|
18
|
-
|
19
|
-
|
15
|
+
@on 'scroll', window, @resize
|
16
|
+
|
17
|
+
@maxHeight = parseFloat(window.getComputedStyle(this.element())['height'])
|
18
|
+
|
19
|
+
@resize()
|
20
|
+
|
21
|
+
resize: =>
|
22
|
+
height = @maxHeight - window.scrollY
|
23
|
+
if height < 0
|
24
|
+
height = 0
|
25
|
+
|
26
|
+
if height != @maxHeight
|
27
|
+
@element().querySelector('nav').classList.add 'hidden'
|
28
|
+
else
|
29
|
+
@element().querySelector('nav').classList.remove 'hidden'
|
30
|
+
|
31
|
+
@element().style.height = "#{height}px"
|
20
32
|
|
21
33
|
show: (el) =>
|
22
34
|
@show.container ||= @element().querySelector('div.drop')
|
@@ -118,7 +130,3 @@ ObserveJS.bind 'Post.Header', class
|
|
118
130
|
@element().style.backgroundImage = null
|
119
131
|
|
120
132
|
@clear()
|
121
|
-
|
122
|
-
updateTitle: (e) =>
|
123
|
-
unless e.Errors?
|
124
|
-
@element().querySelector('a.title').textContent = e.Title
|
@@ -0,0 +1,39 @@
|
|
1
|
+
ObserveJS.bind 'Post.Tags.Form', class
|
2
|
+
loaded: =>
|
3
|
+
@on 'input', @search
|
4
|
+
@on 'submit', @send
|
5
|
+
@on 'tags:index', @refresh
|
6
|
+
@on 'tags:create', @append
|
7
|
+
|
8
|
+
@element().querySelector('#TagName').focus()
|
9
|
+
|
10
|
+
send: (e) =>
|
11
|
+
e.preventDefault()
|
12
|
+
e.stopPropagation()
|
13
|
+
ObserveJS.XHR.send(@element())
|
14
|
+
|
15
|
+
search: (e) =>
|
16
|
+
xhr = new ObserveJS.XHR(@element())
|
17
|
+
xhr.method = 'GET'
|
18
|
+
xhr.data.set 'q', e.target.value
|
19
|
+
xhr.send()
|
20
|
+
|
21
|
+
append: (e) =>
|
22
|
+
oid = e.HTML.getAttribute('oid')
|
23
|
+
list = @element().nextElementSibling
|
24
|
+
el = list.querySelector("[oid='#{oid}']")
|
25
|
+
|
26
|
+
if el?
|
27
|
+
el.parentElement.replaceChild(e.HTML, el)
|
28
|
+
return
|
29
|
+
|
30
|
+
el = list.querySelector('li.empty')
|
31
|
+
if el?
|
32
|
+
el.remove()
|
33
|
+
list.appendChild(e.HTML)
|
34
|
+
return
|
35
|
+
|
36
|
+
refresh: (e) =>
|
37
|
+
sibling = @element().nextElementSibling
|
38
|
+
list = e.HTML.querySelector('ul.tags')
|
39
|
+
@element().parentElement.replaceChild(list, sibling)
|
@@ -0,0 +1,27 @@
|
|
1
|
+
ObserveJS.bind 'Post.Tags.List', class
|
2
|
+
loaded: =>
|
3
|
+
@on 'mouseover', @clear
|
4
|
+
@on 'keydown', @element().parentElement, @navigate
|
5
|
+
|
6
|
+
navigate: (e) =>
|
7
|
+
switch e.keyCode
|
8
|
+
when 40 then @down()
|
9
|
+
when 38 then @up()
|
10
|
+
|
11
|
+
down: =>
|
12
|
+
el = @element().querySelector('li:focus')
|
13
|
+
if el?
|
14
|
+
(el.nextElementSibling || el).focus()
|
15
|
+
else
|
16
|
+
@element().firstElementChild.focus()
|
17
|
+
|
18
|
+
up: =>
|
19
|
+
el = @element().querySelector('li:focus')
|
20
|
+
if el?
|
21
|
+
(el.previousElementSibling || @element().previousElementSibling.querySelector('#TagName')).focus()
|
22
|
+
|
23
|
+
clear: =>
|
24
|
+
el = document.activeElement
|
25
|
+
if el.getAttribute('as') == 'Post.Tags.Tag'
|
26
|
+
el.blur()
|
27
|
+
|
@@ -0,0 +1,17 @@
|
|
1
|
+
ObserveJS.bind 'Post.Tags.Tag', class
|
2
|
+
loaded: =>
|
3
|
+
@on 'change', @submit
|
4
|
+
@on 'tags:toggle', @update
|
5
|
+
@on 'keypress', @submit
|
6
|
+
|
7
|
+
submit: (e) =>
|
8
|
+
ObserveJS.XHR.send(@element())
|
9
|
+
|
10
|
+
update: (e) =>
|
11
|
+
oid = e.HTML.getAttribute('oid')
|
12
|
+
if @element().getAttribute('oid') == oid
|
13
|
+
activeElement = document.activeElement
|
14
|
+
@element().parentElement.replaceChild(e.HTML, @element())
|
15
|
+
if activeElement == @element()
|
16
|
+
e.HTML.focus()
|
17
|
+
|
@@ -0,0 +1,11 @@
|
|
1
|
+
ObserveJS.bind 'Post.Tags', class
|
2
|
+
loaded: =>
|
3
|
+
@on 'tags:toggle', document, @refresh
|
4
|
+
@on 'tags:create', document, @refresh
|
5
|
+
@on 'tags:index', @show
|
6
|
+
|
7
|
+
refresh: (e) =>
|
8
|
+
@element().innerHTML = e.TagsHTML.innerHTML
|
9
|
+
|
10
|
+
show: (e) =>
|
11
|
+
document.body.appendChild(e.HTML)
|
@@ -1,44 +1,11 @@
|
|
1
1
|
ObserveJS.bind 'Post.Title', class
|
2
2
|
loaded: =>
|
3
|
-
@on '
|
4
|
-
@
|
5
|
-
@observer.settings = {
|
6
|
-
childList: true,
|
7
|
-
subtree: true,
|
8
|
-
}
|
9
|
-
@input = @element().querySelector('div.input')
|
10
|
-
@errors = @element().querySelector('ul.errors')
|
11
|
-
@observe()
|
12
|
-
@on 'titles:update', @update
|
13
|
-
@on 'titles:create', @update
|
14
|
-
@input.focus()
|
3
|
+
@on 'titles:index', @show
|
4
|
+
@on 'titles:update', document, @refresh
|
15
5
|
|
16
|
-
|
17
|
-
|
6
|
+
show: (e) =>
|
7
|
+
document.body.appendChild(e.HTML)
|
18
8
|
|
19
|
-
|
20
|
-
|
21
|
-
@errors.appendChild(error) for error in e.Errors
|
22
|
-
else
|
23
|
-
@dismiss()
|
9
|
+
refresh: (e) =>
|
10
|
+
@element().textContent = e.HTML.children[0].textContent
|
24
11
|
|
25
|
-
enter: (e) =>
|
26
|
-
if e.keyCode == 13
|
27
|
-
@errors.innerHTML = ''
|
28
|
-
e.stopPropagation()
|
29
|
-
e.preventDefault()
|
30
|
-
@save()
|
31
|
-
return
|
32
|
-
|
33
|
-
modified: (observedMutations) =>
|
34
|
-
@observer.disconnect()
|
35
|
-
@input.innerHTML = @input.textContent
|
36
|
-
@observe()
|
37
|
-
|
38
|
-
observe: =>
|
39
|
-
@observer.observe @input, @observer.settings
|
40
|
-
|
41
|
-
save: =>
|
42
|
-
xhr = new ObserveJS.XHR(@element())
|
43
|
-
xhr.data.set '[title]name', @input.textContent
|
44
|
-
xhr.send()
|
@@ -1,6 +1,19 @@
|
|
1
|
-
ObserveJS.bind '
|
1
|
+
ObserveJS.bind 'Popup', class
|
2
2
|
loaded: =>
|
3
|
-
@on '
|
3
|
+
@on 'click', document, @clicked
|
4
|
+
@on 'keyup', document, @escaped
|
4
5
|
|
5
|
-
|
6
|
-
|
6
|
+
clicked: (e) =>
|
7
|
+
el = e.target
|
8
|
+
while el != @element() && el?
|
9
|
+
el = el.parentElement
|
10
|
+
|
11
|
+
unless el?
|
12
|
+
@remove()
|
13
|
+
|
14
|
+
escaped: (e) =>
|
15
|
+
if e.keyCode == 27
|
16
|
+
@remove()
|
17
|
+
|
18
|
+
remove: (e) =>
|
19
|
+
@element().remove()
|
@@ -5,17 +5,50 @@ main.posts > header {
|
|
5
5
|
@include justify-content(center);
|
6
6
|
@include flex-direction(column);
|
7
7
|
|
8
|
+
position: fixed;
|
9
|
+
left: 0;
|
10
|
+
right: 0;
|
11
|
+
|
8
12
|
background-color: $bright-blue;
|
9
13
|
background-size: cover;
|
10
14
|
background-position: center left;
|
11
15
|
|
12
16
|
color: lighten($bright-blue, 50%);
|
13
17
|
|
14
|
-
height:
|
15
|
-
min-height:
|
18
|
+
height: 200px;
|
19
|
+
min-height: 100px;
|
20
|
+
margin-top: 46px;
|
21
|
+
|
22
|
+
h2 {
|
23
|
+
@include display(flex);
|
24
|
+
@include flex(1);
|
25
|
+
font-size: 2.3em;
|
26
|
+
margin: 1em 0;
|
27
|
+
text-align: center;
|
28
|
+
color: lighten($gray-blue, 50%);
|
29
|
+
}
|
30
|
+
|
31
|
+
nav {
|
32
|
+
@include display(flex);
|
33
|
+
@include justify-content(space-between);
|
34
|
+
@include align-items(center);
|
35
|
+
@include flex(0 auto);
|
36
|
+
@include transition(opacity 0.2s);
|
37
|
+
|
38
|
+
z-index: 100;
|
39
|
+
width: 100%;
|
40
|
+
margin: 2em 0 0 0;
|
41
|
+
padding: 0 1em;
|
42
|
+
position: absolute;
|
43
|
+
|
44
|
+
&.hidden {
|
45
|
+
opacity: 0;
|
46
|
+
}
|
47
|
+
}
|
48
|
+
|
16
49
|
}
|
17
50
|
|
18
|
-
main.
|
51
|
+
main.posts > header > div.title {
|
19
52
|
@include display(flex);
|
20
53
|
@include flex(1);
|
21
54
|
@include flex-direction(column);
|
@@ -24,7 +57,6 @@ main.edit.posts > header > div.title {
|
|
24
57
|
text-align: center;
|
25
58
|
width: 100%;
|
26
59
|
z-index: 5;
|
27
|
-
margin: 1em 0;
|
28
60
|
|
29
61
|
& > p.browse {
|
30
62
|
@include transition(color 0.3s);
|
@@ -91,7 +123,6 @@ main.edit.posts > header > div.title {
|
|
91
123
|
|
92
124
|
background-size: cover;
|
93
125
|
position: relative;
|
94
|
-
padding-bottom: 0.5em;
|
95
126
|
border-bottom: 1px solid #E8E8E8;
|
96
127
|
|
97
128
|
&.image {
|
@@ -110,6 +141,7 @@ main.edit.posts > header > div.title {
|
|
110
141
|
input[type='file'] {
|
111
142
|
visibility: hidden;
|
112
143
|
height: 1px;
|
144
|
+
padding: 0;
|
113
145
|
}
|
114
146
|
|
115
147
|
}
|
@@ -198,19 +230,96 @@ main.edit.posts > header > div.title {
|
|
198
230
|
}
|
199
231
|
}
|
200
232
|
|
201
|
-
|
202
|
-
@include
|
203
|
-
|
204
|
-
|
205
|
-
|
233
|
+
[as='Post.Header'] div.publish.state {
|
234
|
+
@include transition(background-color 0.2s);
|
235
|
+
position: relative;
|
236
|
+
padding: 2px;
|
237
|
+
width: 10em;
|
238
|
+
height: 30px;
|
239
|
+
background-color: rgba(black, 0.2);
|
240
|
+
color: darken($bright-blue, 25%);
|
241
|
+
border-radius: 60px;
|
206
242
|
cursor: pointer;
|
207
|
-
|
208
|
-
|
209
|
-
&:hover {
|
210
|
-
|
243
|
+
overflow: hidden;
|
244
|
+
|
245
|
+
&:hover label:last-child {
|
246
|
+
background-color: darken(white, 2%);
|
247
|
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.6);
|
248
|
+
}
|
249
|
+
|
250
|
+
label {
|
251
|
+
display: block;
|
252
|
+
position: absolute;
|
253
|
+
font-weight: bold;
|
254
|
+
line-height: 2em;
|
255
|
+
text-indent: 0;
|
256
|
+
top: 1px;
|
257
|
+
left: 1px;
|
258
|
+
bottom: 1px;
|
259
|
+
cursor: pointer;
|
260
|
+
padding: 0 1em;
|
261
|
+
}
|
262
|
+
|
263
|
+
label:first-child {
|
264
|
+
@include transition(background 0.2s, text-indent 0.2s);
|
265
|
+
right: 1px;
|
266
|
+
background-color: #f1f1f1;
|
267
|
+
border-radius: 30px;
|
268
|
+
text-indent: 0;
|
211
269
|
}
|
212
|
-
|
213
|
-
|
214
|
-
|
270
|
+
|
271
|
+
label:last-child {
|
272
|
+
@include transition(background 0.2s, box-shadow 0.2s, margin 0.2s);
|
273
|
+
width: 28px;
|
274
|
+
background-color: white;
|
275
|
+
border-radius: 100%;
|
276
|
+
box-shadow: 0 2px 5px rgba(0, 0, 0, 0.3);
|
277
|
+
text-indent: 30px;
|
278
|
+
}
|
279
|
+
|
280
|
+
&[published='true'] {
|
281
|
+
background-color: rgba(black, 0.5);
|
282
|
+
|
283
|
+
label:first-child {
|
284
|
+
background-color: darken($bright-blue, 25%);
|
285
|
+
color: lighten($bright-blue, 50%);
|
286
|
+
}
|
287
|
+
|
288
|
+
label:last-child {
|
289
|
+
margin-left: calc(10em - 30px);
|
290
|
+
text-indent: 10em;
|
291
|
+
}
|
292
|
+
}
|
293
|
+
|
294
|
+
&:not([published='true']) {
|
295
|
+
label:first-child {
|
296
|
+
text-indent: -20em;
|
297
|
+
}
|
298
|
+
|
299
|
+
label:last-child {
|
300
|
+
}
|
301
|
+
}
|
302
|
+
|
303
|
+
}
|
304
|
+
|
305
|
+
#PostsIndex header {
|
306
|
+
@include flex-direction(row);
|
307
|
+
@include flex-wrap(wrap);
|
308
|
+
@include align-items(center);
|
309
|
+
@include align-content(center);
|
310
|
+
@include justify-content(center);
|
311
|
+
|
312
|
+
position: relative;
|
313
|
+
min-height: 200px;
|
314
|
+
|
315
|
+
& > h1 {
|
316
|
+
text-align: center;
|
317
|
+
width: 100%;
|
318
|
+
}
|
319
|
+
|
320
|
+
& > section {
|
321
|
+
@include flex(0 auto);
|
322
|
+
@include display(flex);
|
215
323
|
}
|
216
324
|
}
|
325
|
+
|
@@ -15,7 +15,11 @@ nav#Menu.admin {
|
|
15
15
|
font-size: 16px;
|
16
16
|
font-weight: bold;
|
17
17
|
padding: 0 2em;
|
18
|
-
z-index:
|
18
|
+
z-index: 1000;
|
19
|
+
position: fixed;
|
20
|
+
left: 0;
|
21
|
+
right: 0;
|
22
|
+
top: 0;
|
19
23
|
|
20
24
|
background-color: lighten($gray-blue, 25%);
|
21
25
|
color: darken($gray-blue, 30%);
|