diff --git a/README.md b/README.md index 133dd8ff..6e3610aa 100644 --- a/README.md +++ b/README.md @@ -3,8 +3,7 @@ DevDocs combines multiple API documentations in a fast, organized, and searchable interface. * Created by [Thibaut Courouble](http://thibaut.me) -* Made at [Shopify](http://devdocs.io/s/shopify) -* Powered by [MaxCDN](http://devdocs.io/s/maxcdn) +* Supported by [JetBrains](http://devdocs.io/s/jetbrains), [Code School](http://devdocs.io/s/code-school) and [Shopify](http://devdocs.io/s/shopify) Keep track of development and community news: diff --git a/assets/images/code-school-bw.png b/assets/images/code-school-bw.png new file mode 100644 index 00000000..ad9179ac Binary files /dev/null and b/assets/images/code-school-bw.png differ diff --git a/assets/images/code-school-bw@2x.png b/assets/images/code-school-bw@2x.png new file mode 100644 index 00000000..5d4210a4 Binary files /dev/null and b/assets/images/code-school-bw@2x.png differ diff --git a/assets/images/code-school.png b/assets/images/code-school.png new file mode 100644 index 00000000..4b059916 Binary files /dev/null and b/assets/images/code-school.png differ diff --git a/assets/images/code-school@2x.png b/assets/images/code-school@2x.png new file mode 100644 index 00000000..125894e8 Binary files /dev/null and b/assets/images/code-school@2x.png differ diff --git a/assets/images/jetbrains-bw.png b/assets/images/jetbrains-bw.png new file mode 100644 index 00000000..1135f004 Binary files /dev/null and b/assets/images/jetbrains-bw.png differ diff --git a/assets/images/jetbrains-bw@2x.png b/assets/images/jetbrains-bw@2x.png new file mode 100644 index 00000000..a5d8c217 Binary files /dev/null and b/assets/images/jetbrains-bw@2x.png differ diff --git a/assets/images/jetbrains.png b/assets/images/jetbrains.png new file mode 100644 index 00000000..24122498 Binary files /dev/null and b/assets/images/jetbrains.png differ diff --git a/assets/images/jetbrains@2x.png b/assets/images/jetbrains@2x.png new file mode 100644 index 00000000..f24aa1e2 Binary files /dev/null and b/assets/images/jetbrains@2x.png differ diff --git a/assets/images/maxcdn-bw.png b/assets/images/maxcdn-bw.png deleted file mode 100644 index 4b1a9924..00000000 Binary files a/assets/images/maxcdn-bw.png and /dev/null differ diff --git a/assets/images/maxcdn-bw@2x.png b/assets/images/maxcdn-bw@2x.png deleted file mode 100644 index d3f40cdc..00000000 Binary files a/assets/images/maxcdn-bw@2x.png and /dev/null differ diff --git a/assets/images/maxcdn.png b/assets/images/maxcdn.png deleted file mode 100644 index 43a9a307..00000000 Binary files a/assets/images/maxcdn.png and /dev/null differ diff --git a/assets/images/maxcdn@2x.png b/assets/images/maxcdn@2x.png deleted file mode 100644 index 53feddca..00000000 Binary files a/assets/images/maxcdn@2x.png and /dev/null differ diff --git a/assets/javascripts/news.json b/assets/javascripts/news.json index e9f07bf9..3e1ce3c1 100644 --- a/assets/javascripts/news.json +++ b/assets/javascripts/news.json @@ -1,5 +1,8 @@ [ [ + "2015-07-12", + "New sponsors: JetBrains and Code School\nIf you like DevDocs, please take a moment to check out their products — they're awesome!" + ], [ "2015-07-05", "New documentations: Drupal, Vue.js, Phaser and webpack" ], [ diff --git a/assets/javascripts/templates/notif_tmpl.coffee b/assets/javascripts/templates/notif_tmpl.coffee index d2ce3836..7764b889 100644 --- a/assets/javascripts/templates/notif_tmpl.coffee +++ b/assets/javascripts/templates/notif_tmpl.coffee @@ -34,10 +34,11 @@ app.templates.notifShare = -> app.templates.notifThanks = -> textNotif """ Hi there! """, - """
Quick shout-out to our awesome sponsors: + """
Like DevDocs? Check out these awesome companies who are making it possible:
Have a great day :) """ diff --git a/assets/javascripts/templates/pages/about_tmpl.coffee b/assets/javascripts/templates/pages/about_tmpl.coffee index 3d60e309..f54ecf1c 100644 --- a/assets/javascripts/templates/pages/about_tmpl.coffee +++ b/assets/javascripts/templates/pages/about_tmpl.coffee @@ -13,8 +13,7 @@ app.templates.aboutPage = -> """
DevDocs combines multiple API documentations in a fast, organized, and searchable interface.
- Thanks to#{shopifyLink '_intro-sponsor'} #{maxcdnLink '_intro-sponsor'} -
That's all. Happy coding! + #{jetBrainsLink '_intro-sponsor'} #{codeSchoolLink '_intro-sponsor'} #{shopifyLink '_intro-sponsor'} +
Happy coding! """ <% else %> @@ -63,8 +96,8 @@ app.templates.intro = """
- Thanks to#{shopifyLink '_intro-sponsor'} #{maxcdnLink '_intro-sponsor'} -
That's all. Happy coding! + #{jetBrainsLink '_intro-sponsor'} #{codeSchoolLink '_intro-sponsor'} #{shopifyLink '_intro-sponsor'} +
Happy coding! """ <% end %> @@ -90,8 +123,8 @@ app.templates.mobileIntro = """
That's all. Happy coding! -
#{shopifyLink '_intro-sponsor'} #{maxcdnLink '_intro-sponsor'}
+Happy coding! +
#{jetBrainsLink '_intro-sponsor'} #{codeSchoolLink '_intro-sponsor'} #{shopifyLink '_intro-sponsor'}
Stop showing this message """ diff --git a/assets/stylesheets/components/_content.scss b/assets/stylesheets/components/_content.scss index fc3e54d1..fc9159a7 100644 --- a/assets/stylesheets/components/_content.scss +++ b/assets/stylesheets/components/_content.scss @@ -68,26 +68,32 @@ color: $splashText; cursor: default; opacity: 1; + margin-top: -1.25em; @extend ._booting:before, %user-select-none; } -._splash-sponsor { +._splash-sponsors { position: absolute; - display: block; - bottom: 1.25rem; - right: 1rem; + top: 50%; + left: 0; + right: 0; + margin-top: 1.25rem; + text-align: center; + line-height: 2rem; +} - ._logo-thx { opacity: .25; } - &:hover ._logo-thx { opacity: .5; } +._splash-sponsor { + position: relative; + display: inline-block; + vertical-align: top; + margin: .5rem 1.5rem; - & + & { - left: 1rem; - right: auto; + ._logo-thx { opacity: .3; } + &:hover ._logo-thx { opacity: .6; } - ._logo-info { - right: auto; - left: 0; - } + ._logo-info { + right: 50%; + margin-right: -9rem; } } @@ -409,24 +415,25 @@ margin-bottom: .75rem; padding: .5rem .75rem; line-height: 1.375rem; + text-align: left; pointer-events: none; @extend %notif; :hover > & { opacity: 1; } } -._maxcdn-logo { - width: 6.25rem; - background-image: image-url('maxcdn.png'); - background-size: 6.25rem 1rem; +._shopify-logo { + width: 5.5rem; + background-image: image-url('shopify.png'); + background-size: 5.5rem 1.5rem; @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - background-image: image-url('maxcdn@2x.png'); + background-image: image-url('shopify@2x.png'); } } -._splash-sponsor > ._maxcdn-logo { - background-image: image-url('maxcdn-bw.png'); +._splash-sponsor > ._shopify-logo { + background-image: image-url('shopify-bw.png'); @if $style == 'dark' { filter: invert(100%); @@ -434,22 +441,23 @@ } @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - background-image: image-url('maxcdn-bw@2x.png'); + background-image: image-url('shopify-bw@2x.png'); } } -._shopify-logo { - width: 5.5rem; - background-image: image-url('shopify.png'); - background-size: 5.5rem 1.5rem; +._jetbrains-logo { + top: 1px; + width: 5rem; + background-image: image-url('jetbrains.png'); + background-size: 5rem 1.5rem; @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - background-image: image-url('shopify@2x.png'); + background-image: image-url('jetbrains@2x.png'); } } -._splash-sponsor > ._shopify-logo { - background-image: image-url('shopify-bw.png'); +._splash-sponsor > ._jetbrains-logo { + background-image: image-url('jetbrains-bw.png'); @if $style == 'dark' { filter: invert(100%); @@ -457,6 +465,29 @@ } @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { - background-image: image-url('shopify-bw@2x.png'); + background-image: image-url('jetbrains-bw@2x.png'); + } +} + +._code-school-logo { + width: 7rem; + background-image: image-url('code-school.png'); + background-size: 7rem 1.25rem; + + @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + background-image: image-url('code-school@2x.png'); + } +} + +._splash-sponsor > ._code-school-logo { + background-image: image-url('code-school-bw.png'); + + @if $style == 'dark' { + filter: invert(100%); + -webkit-filter: invert(100%); + } + + @media (-webkit-min-device-pixel-ratio: 1.5), (min-resolution: 144dpi) { + background-image: image-url('code-school-bw@2x.png'); } } diff --git a/assets/stylesheets/components/_mobile.scss b/assets/stylesheets/components/_mobile.scss index 25af1a2b..0724d396 100644 --- a/assets/stylesheets/components/_mobile.scss +++ b/assets/stylesheets/components/_mobile.scss @@ -90,6 +90,22 @@ box-shadow: 0 1px $noteGreenBorder, 0 -1px $noteGreenBorder; } + // Splash + + ._splash-sponsors { margin-top: 1rem; } + + ._splash-sponsor { + position: static; + + ._logo-info { + left: 1rem; + right: 1rem; + width: auto; + max-width: none; + margin: 0; + } + } + // Notice ._notice { @@ -189,9 +205,9 @@ position: static; float: none; display: block; - margin-top: 1.25rem; + margin-top: .75rem; text-align: center; } - ._intro-sponsor { margin: 0 1em; } + ._intro-sponsor { margin: .5em .75em; } } diff --git a/assets/stylesheets/components/_notif.scss b/assets/stylesheets/components/_notif.scss index 06fee0c7..2bfa10ed 100644 --- a/assets/stylesheets/components/_notif.scss +++ b/assets/stylesheets/components/_notif.scss @@ -55,7 +55,7 @@ overflow-y: auto; > ._notif-title { - margin: -.125rem 0 1em; + margin-bottom: .5rem; text-align: center; } @@ -63,6 +63,7 @@ line-height: 1.125rem; font-size: .6875rem; color: $notifColorLight; + margin-bottom: .25rem; + ._news-row { margin-top: .75rem; } } diff --git a/assets/stylesheets/global/_variables.scss b/assets/stylesheets/global/_variables.scss index 918a1745..a1dd1df7 100644 --- a/assets/stylesheets/global/_variables.scss +++ b/assets/stylesheets/global/_variables.scss @@ -20,7 +20,7 @@ $focusBorder: #d4d4d4; $focusText: #000; $loadingText: #e6e6e6; -$splashText: #d7d7d7; +$splashText: #bbb; $promoText: #bbb; $selectionBackground: #398df0; diff --git a/assets/stylesheets/global/variables-dark.scss b/assets/stylesheets/global/variables-dark.scss index d2d94256..54f747ac 100644 --- a/assets/stylesheets/global/variables-dark.scss +++ b/assets/stylesheets/global/variables-dark.scss @@ -19,9 +19,9 @@ $focusBackground: #3d3d3e; $focusBorder: #3d3d3e; $focusText: #f7f2f2; -$loadingText: #616161; -$splashText: #616161; -$promoText: #616161; +$loadingText: #666; +$splashText: #666; +$promoText: #666; $selectionBackground: #346fce; $selectionBorder: #346fce; diff --git a/lib/app.rb b/lib/app.rb index 659d95fa..bdb101fc 100644 --- a/lib/app.rb +++ b/lib/app.rb @@ -184,12 +184,24 @@ class App < Sinatra::Application CODE end - get '/s/maxcdn' do - redirect 'https://www.maxcdn.com/?utm_source=devdocs&utm_medium=banner&utm_campaign=devdocs' - end - - get '/s/shopify' do - redirect 'https://www.shopify.com/careers?utm_source=devdocs&utm_medium=banner&utm_campaign=devdocs' + { + '/s/maxcdn' => 'https://www.maxcdn.com/?utm_source=devdocs&utm_medium=banner&utm_campaign=devdocs', + '/s/shopify' => 'https://www.shopify.com/careers?utm_source=devdocs&utm_medium=banner&utm_campaign=devdocs', + '/s/jetbrains' => 'https://www.jetbrains.com/?utm_source=devdocs&utm_medium=sponsorship&utm_campaign=devdocs', + '/s/jetbrains/ruby' => 'https://www.jetbrains.com/ruby/?utm_source=devdocs&utm_medium=sponsorship&utm_campaign=devdocs', + '/s/jetbrains/python' => 'https://www.jetbrains.com/pycharm/?utm_source=devdocs&utm_medium=sponsorship&utm_campaign=devdocs', + '/s/jetbrains/c' => 'https://www.jetbrains.com/clion/?utm_source=devdocs&utm_medium=sponsorship&utm_campaign=devdocs', + '/s/jetbrains/web' => 'https://www.jetbrains.com/webstorm/?utm_source=devdocs&utm_medium=sponsorship&utm_campaign=devdocs', + '/s/code-school' => 'http://www.codeschool.com/?utm_campaign=devdocs&utm_content=homepage&utm_source=devdocs&utm_medium=sponsorship', + '/s/tw' => 'https://twitter.com/intent/tweet?url=http%3A%2F%2Fdevdocs.io&via=DevDocs&text=All-in-one%2C%20offline%20API%20documentation%20browser%3A', + '/s/fb' => 'https://twitter.com/intent/tweet?url=http%3A%2F%2Fdevdocs.io&via=DevDocs&text=All-in-one%2C%20offline%20API%20documentation%20browser%3A', + '/s/re' => 'http://www.reddit.com/submit?url=http%3A%2F%2Fdevdocs.io&title=All-in-one%2C%20offline%20API%20documentation%20browser&resubmit=true' + }.each do |path, url| + class_eval <<-CODE, __FILE__, __LINE__ + 1 + get '#{path}' do + redirect '#{url}' + end + CODE end get %r{\A/feed(?:\.atom)?\z} do @@ -197,18 +209,6 @@ class App < Sinatra::Application settings.news_feed end - get '/s/tw' do - redirect 'https://twitter.com/intent/tweet?url=http%3A%2F%2Fdevdocs.io&via=DevDocs&text=All-in-one%2C%20offline%20API%20documentation%20browser%3A' - end - - get '/s/fb' do - redirect 'https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fdevdocs.io' - end - - get '/s/re' do - redirect 'http://www.reddit.com/submit?url=http%3A%2F%2Fdevdocs.io&title=All-in-one%2C%20offline%20API%20documentation%20browser&resubmit=true' - end - get %r{\A/(\w+)(\-[\w\-]+)?(/.*)?\z} do |doc, type, rest| return 404 unless @doc = settings.docs[doc] diff --git a/test/app_test.rb b/test/app_test.rb index ab1d6990..f0f2cb5d 100644 --- a/test/app_test.rb +++ b/test/app_test.rb @@ -225,7 +225,7 @@ class AppTest < MiniTest::Spec describe "/s/[link]" do it "redirects" do - %w(maxcdn shopify tw fb re).each do |link| + %w(maxcdn shopify code-school jetbrains tw fb re).each do |link| get "/s/#{link}" assert last_response.redirect? end diff --git a/views/manifest.erb b/views/manifest.erb index ff3d0ba0..9f613cd1 100644 --- a/views/manifest.erb +++ b/views/manifest.erb @@ -8,10 +8,14 @@ CACHE: <%= stylesheet_path 'application-dark' %> <%= image_path 'icons.png' %> <%= image_path 'icons@2x.png' %> -<%= image_path 'maxcdn.png' %> -<%= image_path 'maxcdn@2x.png' %> -<%= image_path 'maxcdn-bw.png' %> -<%= image_path 'maxcdn-bw@2x.png' %> +<%= image_path 'jetbrains.png' %> +<%= image_path 'jetbrains@2x.png' %> +<%= image_path 'jetbrains-bw.png' %> +<%= image_path 'jetbrains-bw@2x.png' %> +<%= image_path 'code-school.png' %> +<%= image_path 'code-school@2x.png' %> +<%= image_path 'code-school-bw.png' %> +<%= image_path 'code-school-bw@2x.png' %> <%= image_path 'shopify.png' %> <%= image_path 'shopify@2x.png' %> <%= image_path 'shopify-bw.png' %>