From 0819c77312b812fa6879f819c840c32a9c6a23ff Mon Sep 17 00:00:00 2001 From: Andromeda Yelton Date: Wed, 12 Jun 2013 14:05:30 -0400 Subject: [PATCH 01/32] rewiring to remove buttons --- frontend/templates/download.html | 121 ++++++++++++++------------ static/js/download_page.js | 1 + static/less/enhanced_download.less | 2 +- static/less/enhanced_download_ie.less | 2 +- static/less/sitewide4.less | 26 ++---- 5 files changed, 75 insertions(+), 77 deletions(-) diff --git a/frontend/templates/download.html b/frontend/templates/download.html index 24571791..8c2714e2 100644 --- a/frontend/templates/download.html +++ b/frontend/templates/download.html @@ -74,52 +74,19 @@ $j(document).ready(function() { {% if unglued_ebooks or other_ebooks %}

Need instructions?

-
- - {% if readmill_epub_url %} -
- Readmill -
- {% endif %} - {% if kindle_ebook_id %} - - {% endif %} - -
- Android -
- -
- Ereader -
+
+
+

+ Looks like you're using an embedded browser in an iOS app (maybe you followed a link in Twitter or Facebook?). +

+

+ Embedded browsers don't always know how to handle ebooks. We recommend downloading the epub file using Safari. +

+
+ +
-
-
-

Try this first

-

You may already have an app which reads ebooks (most likely epub or pdf). If so, downloading it on your phone or tablet, or downloading and opening it on your desktop, will give you the option of reading it in that app. You're done!

-
- - {% if readmill_epub_url %} -
-

Readmill users

-

- If you're a Readmill member, you can send unglued ebooks to your iPad with one click. Here you go: -

-
-

- If you're not, Readmill is a reading app designed for beauty, sharing, and conversation. You can learn more and get Readmill here. -

-
- {% endif %} {% if kindle_ebook_id %}

Send to Kindle

@@ -139,9 +106,14 @@ $j(document).ready(function() {

If your Kindle email has changed, you can add the new one to Unglue.it here.

{% else %} -

- Make sure you've added kindle@gluejar.com to your approved personal document list under Personal Document Settings at your Amazon Manage Your Kindle page. Then, enter your Kindle address below. -

+
    +
  • + Add kindle@gluejar.com to your approved personal document list under Personal Document Settings at your Amazon Manage Your Kindle page. +
  • +
  • + Then, enter your Kindle address below. +
  • +
@@ -165,40 +137,57 @@ $j(document).ready(function() { {% endif %}
{% endif %} -
+

iOS devices

+

+ You may already have an app which reads ebooks. Download the epub or pdf and see if you're offered an option for opening the file. If so, you're done! If not... +

- {% comment %}test{% endcomment %}
  • Download the free iBooks app from the App Store.
  • -
  • Download your book (epub or pdf format) from this page using your device's web browser.
  • +
  • Download your book (epub or pdf format)
  • You will be given the option of opening the file in iBooks.
+

+ Not on iOS? Try the instructions for Android, desktop computers, or ereaders (Kindle, Nook, Kobo, etc.). +

-
+

Android devices

+

+ You may already have an app which reads ebooks. Download the epub or pdf and see if you're offered an option for opening the file. If so, you're done! If not... +

  • Download the free Aldiko app.
  • -
  • Download your book (epub or pdf format) from this page using your device's web browser.
  • +
  • Download your book (epub or pdf format).
  • When the download is complete, tap it in your notifications menu. It will be added to Aldiko, ready to read next time you open the app.
+

+ Not on Android? Try the instructions for iPhone/iPad, desktop computers, or ereaders (Kindle, Nook, Kobo, etc.). +

-
+

PC, Mac, or Linux

+

+ You may already have an app which reads ebooks. Download the pdf and see if you're offered an option for opening the file. If so, you're done! If not... +

  • Download the free Calibre app.
  • -
  • Download your book (any format) from this page using your device's web browser.
  • +
  • Download your book (any format).
  • Open the ebook file in Calibre.
+

+ Not on a desktop computer? Try the instructions for iPhone/iPad, Android, or ereaders (Kindle, Nook, Kobo, etc.). +

-
-

Ereaders

+
+

Ereaders (Kindle, Nook, Kobo, etc.)

  • Kindle: download the mobi or pdf format ebook to a laptop or desktop computer. All other ereaders: download the epub or pdf format ebook to a laptop or desktop computer.
  • @@ -207,8 +196,28 @@ $j(document).ready(function() {
  • Eject your device from the Finder or Explorer and disconnect the USB.
  • You may need to reboot your device to see the new book.
+

+ Not using an ereader? Try the instructions for iPhone/iPad, Android, or desktop computers. +

+ + {% comment %} + will need to deal with readmill handling later + + {% if readmill_epub_url %} +
+

Readmill users

+

+ If you're a Readmill member, you can send unglued ebooks to your iPad with one click. Here you go: +

+
+

+ If you're not, Readmill is a reading app designed for beauty, sharing, and conversation. You can learn more and get Readmill here. +

+
+ {% endif %} + {% endcomment %} {% comment %} If we're going to be providing mobi as the norm, let's not bother with these instructions. diff --git a/static/js/download_page.js b/static/js/download_page.js index 39cd047f..3d510932 100644 --- a/static/js/download_page.js +++ b/static/js/download_page.js @@ -26,5 +26,6 @@ $j(document).on('click', '#kindle.authenticated', function() { kindle_ebook_id = classes[0]; $j.post('/send_to_kindle/' + kindle_ebook_id + '/1/', function(data) { $j('#kindle_div').html(data); + return false; }); }); \ No newline at end of file diff --git a/static/less/enhanced_download.less b/static/less/enhanced_download.less index ec0b43fb..f4202300 100644 --- a/static/less/enhanced_download.less +++ b/static/less/enhanced_download.less @@ -2,7 +2,7 @@ display: inherit; } -.instructions > div:not(#trythis_div), .instructions h4 { +.instructions > div:not(.active), .instructions h4 { display: none; } diff --git a/static/less/enhanced_download_ie.less b/static/less/enhanced_download_ie.less index aadf83af..fb541d28 100644 --- a/static/less/enhanced_download_ie.less +++ b/static/less/enhanced_download_ie.less @@ -15,6 +15,6 @@ } /* the not selector doesn't work in IE <= 8 */ -#trythis_div { +.active { display: inherit; } \ No newline at end of file diff --git a/static/less/sitewide4.less b/static/less/sitewide4.less index 6ca12c15..41c6b179 100644 --- a/static/less/sitewide4.less +++ b/static/less/sitewide4.less @@ -902,23 +902,6 @@ li.checked { } /* download page */ -.buttons { - display: none; - border-bottom: solid 2px @blue-grey; - margin-bottom: 10px; - - .btn_support { - float: left; - width: auto; - - a { - width: auto; - padding: 14.25px; - font-size: @font-size-larger; - } - } -} - .instructions { h4 { border-top: solid @blue-grey 1px; @@ -927,10 +910,15 @@ li.checked { } > div { - padding-left: 2em; - padding-right: 2em; + padding-left: 1%; + padding-right: 1%; font-size: @font-size-larger; line-height: @font-size-larger*1.5; + width: 98%; + + &.active { + float: left; + } } } From 2337676e1c0a4d8a30ced961b441821e79e54005 Mon Sep 17 00:00:00 2001 From: Andromeda Yelton Date: Wed, 12 Jun 2013 15:11:43 -0400 Subject: [PATCH 02/32] redesigning information flow to address feedback --- frontend/templates/download.html | 233 ++++++++++++++++++-------- frontend/views.py | 27 ++- static/css/enhanced_download.css | 2 +- static/css/enhanced_download_ie.css | 2 +- static/css/sitewide4.css | 2 +- static/js/download_page.js | 9 +- static/less/enhanced_download.less | 8 +- static/less/enhanced_download_ie.less | 8 +- static/less/sitewide4.less | 12 ++ 9 files changed, 215 insertions(+), 88 deletions(-) diff --git a/frontend/templates/download.html b/frontend/templates/download.html index 8c2714e2..b7792578 100644 --- a/frontend/templates/download.html +++ b/frontend/templates/download.html @@ -80,13 +80,176 @@ $j(document).ready(function() { Looks like you're using an embedded browser in an iOS app (maybe you followed a link in Twitter or Facebook?).

- Embedded browsers don't always know how to handle ebooks. We recommend downloading the epub file using Safari. + {% if formats.epub %} + Embedded browsers don't always know how to handle ebooks. We recommend downloading the epub file using Safari. + {% else %}{% if formats.pdf %} + Embedded browsers don't always know how to handle ebooks. We recommend downloading the pdf file using Safari. + {% else %}{% if formats.html %} + You can read the HTML version of this book right here in this browser. + {% else %}{% if formats.text %} + You can read the text version of this book right here in this browser. + {% else %} + This ebook is only available in .mobi. Your best bet is to download the Amazon Kindle app to this device and then use the Send-to-Kindle option above. + {% endif %}{% endif %}{% endif %}{% endif %} +

+

+ Not on iOS? Try the instructions for Android, desktop computers, or ereaders (Kindle, Nook, Kobo, etc.).

-
+
+

iOS devices

+ {% if formats.epub %} +

+ You may already have an app which reads ebooks. Download the epub and see if you're offered an option for opening the file. If so, you're done! If not... +

+ +
    +
  • Download the free iBooks app from the App Store.
  • +
  • Download the epub file.
  • +
  • You will be given the option of opening the file in iBooks.
  • +
+ {% else %}{% if formats.pdf %} +

+ You may already have an app which reads ebooks. Download the pdf and see if you're offered an option for opening the file. If so, you're done! If not... +

+ +
    +
  • Download the free iBooks app from the App Store.
  • +
  • Download the pdf file.
  • +
  • You will be given the option of opening the file in iBooks.
  • +
+ {% else %}{% if formats.html %} +

+ Download the HTML version. +

+ {% else %}{% if formats.text %} +

+ Download the text version. +

+ {% else %} +

+ This ebook is only available in .mobi. Your best bet is to install the free Amazon Kindle app from the Apple Store and then use the Send-to-Kindle option above. +

+ {% endif %}{% endif %}{% endif %}{% endif %} +

+ Not on iOS? Try the instructions for Android, desktop computers, or ereaders (Kindle, Nook, Kobo, etc.). +

+
+

Android devices

+ {% if formats.epub %} +

+ You may already have an app which reads ebooks. Download the epub and see if you're offered an option for opening the file. If so, you're done! If not... +

+ + +
    +
  • Download the free Aldiko app.
  • +
  • Download the epub file.
  • +
  • When the download is complete, tap it in your notifications menu. It will be added to Aldiko, ready to read next time you open the app.
  • +
+ {% else %}{% if formats.pdf %} +

+ You may already have an app which reads ebooks. Download the epub and see if you're offered an option for opening the file. If so, you're done! If not... +

+ + +
    +
  • Download the free Aldiko app.
  • +
  • Download the epub file.
  • +
  • When the download is complete, tap it in your notifications menu. It will be added to Aldiko, ready to read next time you open the app.
  • +
+ {% else %}{% if formats.html %} +

+ Download the HTML version. +

+ {% else %}{% if formats.text %} +

+ Download the text version. +

+ {% else %} +

+ This ebook is only available in .mobi. Your best bet is to install the free Amazon Kindle app from Google Play and then use the Send-to-Kindle option above. +

+ {% endif %}{% endif %}{% endif %}{% endif %} +

+ Not on Android? Try the instructions for iPhone/iPad, desktop computers, or ereaders (Kindle, Nook, Kobo, etc.). +

+
+ +
+

PC, Mac, or Linux

+ {% if formats.pdf %} +

+ You probably already have an app which reads PDFs. Download the PDF file and open it. +

+ {% else %}{% if formats.epub %} + + + {% else %}{% if formats.mobi %} + + + {% else %}{% if formats.html %} +

+ You can read the HTML version right here in your browser. +

+ {% else %} +

+ You can read the text version right here in your browser. +

+ {% endif %}{% endif %}{% endif %}{% endif %} +

+ Not on a desktop computer? Try the instructions for iPhone/iPad, Android, or ereaders (Kindle, Nook, Kobo, etc.). +

+
+ +
+

Ereaders (Kindle, Nook, Kobo, etc.)

+ + {% if formats.mobi or formats.pdf or formats.epub %} +
    +
  • + {% if formats.mobi %} + Kindle: download the mobi file to a laptop or desktop computer. + {% else %}{% if formats.pdf %} + Kindle: download the mobi file to a laptop or desktop computer. + {% else %} + Kindle: We're sorry; we don't have a version suitable for Kindle. + {% endif %}{% endif %} + {% if formats.epub %} + All other ereaders: download the epub file to a laptop or desktop computer. + {% else %}{% if formats.pdf %} + All other ereaders: download the pdf file to a laptop or desktop computer. + {% else %} + All other ereaders: We're sorry; we don't have a version suitable for your device. + {% endif %}{% endif %} +
  • +
  • Plug the ereader into your computer with a USB cable.
  • +
  • Using the Finder (Mac) or Windows Explorer (Windows), drag and drop the ebook file into the Documents folder on your device. (It may also be called My Documents or My Stuff, depending on your ereader.)
  • +
  • Eject your device from the Finder or Explorer and disconnect the USB.
  • +
  • You may need to reboot your device to see the new book.
  • +
+ {% else %} +

+ We're sorry; we don't have a file format suitable for ereaders. +

+ {% endif %} +

+ Not using an ereader? Try the instructions for iPhone/iPad, Android, or desktop computers. +

+
+
+ {% if kindle_ebook_id %}

Send to Kindle

@@ -137,71 +300,7 @@ $j(document).ready(function() { {% endif %}
{% endif %} -
-

iOS devices

-

- You may already have an app which reads ebooks. Download the epub or pdf and see if you're offered an option for opening the file. If so, you're done! If not... -

- -
    -
  • Download the free iBooks app from the App Store.
  • -
  • Download your book (epub or pdf format)
  • -
  • You will be given the option of opening the file in iBooks.
  • -
-

- Not on iOS? Try the instructions for Android, desktop computers, or ereaders (Kindle, Nook, Kobo, etc.). -

-
- -
-

Android devices

-

- You may already have an app which reads ebooks. Download the epub or pdf and see if you're offered an option for opening the file. If so, you're done! If not... -

- - -
    -
  • Download the free Aldiko app.
  • -
  • Download your book (epub or pdf format).
  • -
  • When the download is complete, tap it in your notifications menu. It will be added to Aldiko, ready to read next time you open the app.
  • -
-

- Not on Android? Try the instructions for iPhone/iPad, desktop computers, or ereaders (Kindle, Nook, Kobo, etc.). -

-
- -
-

PC, Mac, or Linux

-

- You may already have an app which reads ebooks. Download the pdf and see if you're offered an option for opening the file. If so, you're done! If not... -

- - -

- Not on a desktop computer? Try the instructions for iPhone/iPad, Android, or ereaders (Kindle, Nook, Kobo, etc.). -

-
- -
-

Ereaders (Kindle, Nook, Kobo, etc.)

- -
    -
  • Kindle: download the mobi or pdf format ebook to a laptop or desktop computer. All other ereaders: download the epub or pdf format ebook to a laptop or desktop computer.
  • -
  • Plug the ereader into your computer with a USB cable.
  • -
  • Using the Finder (Mac) or Windows Explorer (Windows), drag and drop the ebook file into the Documents folder on your device. (It may also be called My Documents or My Stuff, depending on your ereader.)
  • -
  • Eject your device from the Finder or Explorer and disconnect the USB.
  • -
  • You may need to reboot your device to see the new book.
  • -
-

- Not using an ereader? Try the instructions for iPhone/iPad, Android, or desktop computers. -

-
-
- + {% comment %} will need to deal with readmill handling later diff --git a/frontend/views.py b/frontend/views.py index f20ae882..5aa7c479 100755 --- a/frontend/views.py +++ b/frontend/views.py @@ -2410,13 +2410,32 @@ def download(request, work_id): unglued_ebooks = work.ebooks().filter(edition__unglued=True) other_ebooks = work.ebooks().filter(edition__unglued=False) kindle_ebook_id = None + formats = {} + formats['mobi'] = False try: kindle_ebook_id = work.ebooks().filter(format='mobi')[0].id + formats['mobi'] = True except IndexError: try: kindle_ebook_id = work.ebooks().filter(format='pdf')[0].id except IndexError: pass + if work.ebooks().filter(format='epub'): + formats['epub'] = True + else: + formats['epub'] = False + if work.ebooks().filter(format='pdf'): + formats['pdf'] = True + else: + formats['pdf'] = False + if work.ebooks().filter(format='html'): + formats['html'] = True + else: + formats['html'] = False + if work.ebooks().filter(format='text'): + formats['text'] = True + else: + formats['text'] = False try: readmill_epub_ebook = work.ebooks().filter(format='epub').exclude(provider='Google Books')[0] @@ -2425,14 +2444,20 @@ def download(request, work_id): readmill_epub_url = None agent = request.META['HTTP_USER_AGENT'] iOS = 'iPad' in agent or 'iPhone' in agent or 'iPod' in agent + iOS_app = iOS and not 'Safari' in agent + android = 'Android' in agent + desktop = not iOS and not android context.update({ 'unglued_ebooks': unglued_ebooks, 'other_ebooks': other_ebooks, + 'formats': formats, 'kindle_ebook_id': kindle_ebook_id, 'readmill_epub_url': readmill_epub_url, 'base_url': settings.BASE_URL_SECURE, 'iOS': iOS, - 'iOS_app': iOS and not 'Safari' in agent + 'iOS_app': iOS_app, + 'android': android, + 'desktop': desktop }) return render(request, "download.html", context) diff --git a/static/css/enhanced_download.css b/static/css/enhanced_download.css index 73d0b430..4b055d61 100644 --- a/static/css/enhanced_download.css +++ b/static/css/enhanced_download.css @@ -1 +1 @@ -.buttons{display:inherit}.instructions>div:not(#trythis_div),.instructions h4{display:none}#kindle_div .no_js{display:none!important}#kindle_div .yes_js{display:inherit} \ No newline at end of file +.buttons,#kindle_div .yes_js,.other_instructions_paragraph{display:inherit}.instructions>div:not(.active){display:none}#kindle_div .no_js{display:none!important} \ No newline at end of file diff --git a/static/css/enhanced_download_ie.css b/static/css/enhanced_download_ie.css index 7f8f64ee..c8d39399 100644 --- a/static/css/enhanced_download_ie.css +++ b/static/css/enhanced_download_ie.css @@ -1 +1 @@ -.buttons{display:inherit}.instructions>div,.instructions h4{display:none}#kindle_div .no_js{display:none!important}#kindle_div .yes_js{display:inherit}#trythis_div{display:inherit} \ No newline at end of file +.buttons,#kindle_div .yes_js,.other_instructions_paragraph{display:inherit}.instructions>div{display:none}#kindle_div .no_js{display:none!important}.active{display:inherit} \ No newline at end of file diff --git a/static/css/sitewide4.css b/static/css/sitewide4.css index 7bf07dde..0a40f2eb 100644 --- a/static/css/sitewide4.css +++ b/static/css/sitewide4.css @@ -1 +1 @@ -.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}ul.social a:hover{text-decoration:none}ul.social li{padding:5px 0 5px 30px!important;height:28px;line-height:28px!important;margin:0!important;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}ul.social li.facebook{background:url("/static/images/icons/facebook.png") 10px center no-repeat;cursor:pointer}ul.social li.facebook span{padding-left:10px}ul.social li.facebook:hover{background:#8dc63f url("/static/images/icons/facebook-hover.png") 10px center no-repeat}ul.social li.facebook:hover span{color:#fff}ul.social li.twitter{background:url("/static/images/icons/twitter.png") 10px center no-repeat;cursor:pointer}ul.social li.twitter span{padding-left:10px}ul.social li.twitter:hover{background:#8dc63f url("/static/images/icons/twitter-hover.png") 10px center no-repeat}ul.social li.twitter:hover span{color:#fff}ul.social li.email{background:url("/static/images/icons/email.png") 10px center no-repeat;cursor:pointer}ul.social li.email span{padding-left:10px}ul.social li.email:hover{background:#8dc63f url("/static/images/icons/email-hover.png") 10px center no-repeat}ul.social li.email:hover span{color:#fff}ul.social li.embed{background:url("/static/images/icons/embed.png") 10px center no-repeat;cursor:pointer}ul.social li.embed span{padding-left:10px}ul.social li.embed:hover{background:#8dc63f url("/static/images/icons/embed-hover.png") 10px center no-repeat}ul.social li.embed:hover span{color:#fff}.download_container{width:75%;margin:auto}#lightbox_content a{color:#6994a3}#lightbox_content .signuptoday a{color:white}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-top:15px}#lightbox_content h2 a{font-size:18.75px}#lightbox_content .ebook_download a{margin:auto 5px auto 0;font-size:15px}#lightbox_content .ebook_download img{vertical-align:middle}#lightbox_content .logo{font-size:15px}#lightbox_content .logo img{-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;height:50px;width:50px;margin-right:5px}#lightbox_content .unglued,#lightbox_content .not_unglued{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;margin-left:-0.25%;padding:.5%;padding-bottom:15px;margin-bottom:5px;width:74%}#lightbox_content .unglued h3,#lightbox_content .not_unglued h3{margin-top:5px}#lightbox_content .unglued{border:solid 2px #8dc63f}#lightbox_content .not_unglued{border:solid 2px #d6dde0}#lightbox_content a.add-wishlist .on-wishlist,#lightbox_content a.success,a.success:hover{text-decoration:none;color:#3d4e53}#lightbox_content a.success,a.success:hover{cursor:default}#lightbox_content ul{padding-left:50px}#lightbox_content ul li{margin-bottom:4px}.border{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 2px #d6dde0;margin:5px auto;padding-right:5px;padding-left:5px}.sharing{float:right;padding:.5%!important;width:23%!important;min-width:105px}.sharing ul{padding:.5%!important}.sharing .jsmod-title{-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;height:auto}.sharing .jsmod-title span{padding:5%!important;color:white!important;font-style:normal}#widgetcode2{display:none;border:1px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;padding:10px}#widgetcode2 textarea{max-width:90%}.preview{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%}.preview a{color:#8dc63f}.launch_top{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;border-color:#8dc63f;margin:10px auto 0 auto;font-size:15px;line-height:22.5px}.launch_top a{color:#8dc63f}.launch_top.pale{border-color:#d6dde0;font-size:13px}.launch_top.alert{border-color:#e35351;font-size:13px}.preview_content{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;width:80%;margin:10px auto}.preview_content a{color:#8dc63f}.utilityheaders{text-transform:uppercase;color:#3d4e53;font-size:15px;display:block}html,body{height:100%}body{background:url("/static/images/bg-body.png") 0 0 repeat-x;padding:0 0 20px 0;margin:0;font-size:13px;line-height:16.900000000000002px;font-family:"Lucida Grande","Lucida Sans Unicode","Lucida Sans",Arial,Helvetica,sans-serif;color:#3d4e53}#feedback{position:fixed;bottom:10%;right:0;z-index:500}#feedback p{writing-mode:tb-rl;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);white-space:nowrap;display:block;bottom:0;width:160px;height:32px;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px;background:#8dc63f;margin-bottom:0;text-align:center;margin-right:-67px;line-height:normal}#feedback p a{color:white;font-size:24px;font-weight:normal}#feedback p a:hover{color:#3d4e53}a{font-weight:bold;font-size:inherit;text-decoration:none;cursor:pointer;color:#6994a3}a:hover{text-decoration:underline}h1{font-size:22.5px}h2{font-size:18.75px}h3{font-size:17.549999999999997px}h4{font-size:15px}img{border:0}img.user-avatar{float:left;margin-right:10px;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px}input,textarea,a.fakeinput{border:2px solid #d6dde0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}input:focus,textarea:focus,a.fakeinput:focus{border:2px solid #8dc63f;outline:0}a.fakeinput:hover{text-decoration:none}.js-search input{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}h2.content-heading{padding:15px;margin:0;font-size:19px;font-weight:normal;color:#3d4e53;float:left;width:50%}h2.content-heading span{font-style:italic}h3.jsmod-title{-moz-border-radius:8px 8px 0 0;-webkit-border-radius:8px 8px 0 0;border-radius:8px 8px 0 0;background:#a7c1ca;padding:0;margin:0;height:73px}h3.jsmod-title span{font-size:19px;font-style:italic;color:#3d4e53;padding:26px 40px 27px 20px;display:block}input[type="submit"],a.fakeinput{background:#8dc63f;color:white;font-weight:bold;padding:.5em 1em;cursor:pointer}.loader-gif[disabled="disabled"],.loader-gif.show-loading{background:url('/static/images/loading.gif') center no-repeat!important}.js-page-wrap{position:relative;min-height:100%}.js-main{width:960px;margin:0 auto;clear:both;padding:0}ul.menu{list-style:none;padding:0;margin:0}.errorlist{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errorlist li{list-style:none;border:0}.errorlist li{list-style:none;border:0}.errorlist+input{border:2px solid #e35351!important}.errorlist+input:focus{border:1px solid #8dc63f!important}.errorlist+textarea{border:2px solid #e35351!important}.errorlist+textarea:focus{border:2px solid #8dc63f!important}.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}#js-header{height:90px}.js-logo{float:left;padding-top:10px}.js-logo a img{border:0}.js-topmenu{float:right;margin-top:25px;font-size:15px}.js-topmenu#authenticated{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;height:36px}.js-topmenu#authenticated:hover,.js-topmenu#authenticated.highlight{background:#d6dde0;cursor:pointer;position:relative}.js-topmenu#authenticated.highlight span#welcome{background-image:url("/static/images/menu_bar_up_arrow_textblue.png")}.js-topmenu ul#user_menu{white-space:nowrap;display:none;z-index:100;position:absolute;top:36px;left:0;padding:0;overflow:visible;margin:0}.js-topmenu ul#user_menu li{border-top:1px solid white;list-style-type:none;float:none;background:#d6dde0;padding:7px 10px}.js-topmenu ul#user_menu li:hover{background:#8dc63f}.js-topmenu ul#user_menu li:hover a{color:white}.js-topmenu ul#user_menu li:hover #i_haz_notifications{border-color:white;background-color:white;color:#3d4e53}.js-topmenu ul#user_menu li a{height:auto;line-height:26.25px}.js-topmenu ul#user_menu li span{margin-right:10px}.js-topmenu ul li{float:left;position:relative;z-index:50}.js-topmenu ul li a{color:#3d4e53;height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.js-topmenu ul li span#welcome{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em;padding:0 10px;margin-right:5px;padding-right:22px;background-image:url("/static/images/menu_bar_down_arrow_textblue.png");background-repeat:no-repeat;background-position:right}.js-topmenu ul li span#welcome img{vertical-align:middle}.js-topmenu ul li img{padding:0;margin:0}.js-topmenu ul li.last{padding-left:20px}.js-topmenu ul li.last a{background:url("/static/images/bg.png") right top no-repeat}.js-topmenu ul li.last a span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8dc63f;margin-right:29px;display:block;padding:0 5px 0 15px;color:white}.js-topmenu ul .unseen_count{border:solid 2px;-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;padding:3px;line-height:16px;width:16px;cursor:pointer;text-align:center}.js-topmenu ul .unseen_count#i_haz_notifications{background-color:#8dc63f;color:white;border-color:white}.js-topmenu ul .unseen_count#no_notifications_for_you{border-color:#edf3f4;background-color:#edf3f4;color:#3d4e53}#i_haz_notifications_badge{-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;font-size:13px;border:solid 2px white;margin-left:-7px;margin-top:-10px;padding:3px;background:#8dc63f;color:white;position:absolute;line-height:normal}form.login label,#login form label{display:block;line-height:18px}form.login input,#login form input{width:90%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:1px solid #d6dde0;height:18px;line-height:18px;margin-bottom:6px}form.login input[type=submit],#login form input[type=submit]{text-decoration:capitalize;width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}form.login input:focus,#login form input:focus{border:solid 1px #8dc63f}form.login input[type="text"],#login form input[type="text"],form.login input[type="password"],#login form input[type="password"]{height:22.75px;line-height:22.75px;margin-bottom:13px;border-width:2px}form.login input[type="submit"],#login form input[type="submit"]{font-size:15px}form.login span.helptext,#login form span.helptext{display:block;margin-top:-11px;font-style:italic;font-size:13px}#lightbox_content .google_signup{padding:14px 0}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}.js-search{float:left;padding-top:25px;margin-left:81px}.js-search input{float:left}.js-search .inputbox{padding:0 0 0 15px;margin:0;border-top:solid 4px #8ac3d7;border-left:solid 4px #8ac3d7;border-bottom:solid 4px #8ac3d7;border-right:0;-moz-border-radius:50px 0 0 50px;-webkit-border-radius:50px 0 0 50px;border-radius:50px 0 0 50px;outline:0;height:28px;line-height:28px;width:156px;float:left;color:#6994a3}.js-search .button{background:url("/static/images/blue-search-button.png") no-repeat;padding:0;margin:0;width:40px;height:36px;display:block;border:0;text-indent:-10000px;cursor:pointer}.js-search-inner{float:right}#locationhash{display:none}#block-intro-text{padding-right:10px}#block-intro-text span.def{font-style:italic}a#readon{background:url("/static/images/learnmore-downarrow.png") right center no-repeat;color:#fff;text-transform:capitalize;display:block;float:right;font-size:13px;font-weight:bold}a#readon.down{background:url("/static/images/learnmore-uparrow.png") right center no-repeat}a#readon span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8ac3d7;margin-right:34px;padding:0 5px 0 20px;height:36px;line-height:36px;display:block}.spread_the_word{height:24px;width:24px;position:top;margin-left:5px}#js-leftcol{float:left;width:235px;margin-bottom:20px}#js-leftcol a{font-weight:normal}#js-leftcol a:hover{text-decoration:underline}#js-leftcol .jsmod-content{border:solid 1px #edf3f4;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px}#js-leftcol ul.level1>li>a,#js-leftcol ul.level1>li>span{border-bottom:1px solid #edf3f4;border-top:1px solid #edf3f4;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:10px}#js-leftcol ul.level2 li{padding:5px 10px}#js-leftcol ul.level2 li a{color:#6994a3;font-size:15px}#js-leftcol ul.level2 li img{vertical-align:middle;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}#js-leftcol ul.level2 li .ungluer-name{height:30px;line-height:30px}#js-topsection{padding:15px 0 0 0;overflow:hidden}.js-topnews{float:left;width:100%}.js-topnews1{background:url("/static/images/header/header-m.png") 0 0 repeat-y}.js-topnews2{background:url("/static/images/header/header-t.png") 0 0 no-repeat}.js-topnews3{background:url("/static/images/header/header-b.png") 0 100% no-repeat;display:block;overflow:hidden;padding:10px}#main-container{margin:15px 0 0 0}#js-maincol-fr{float:right;width:725px}div#content-block{overflow:hidden;background:url("/static/images/bg.png") 100% -223px no-repeat;padding:0 0 0 7px;margin-bottom:20px}div#content-block.jsmodule{background:0}.content-block-heading a.block-link{float:right;padding:15px;font-size:13px;color:#3d4e53;text-decoration:underline;font-weight:normal}div#content-block-content,div#content-block-content-1{width:100%;overflow:hidden;padding-left:10px}div#content-block-content .cols3 .column,div#content-block-content-1 .cols3 .column{width:33.33%;float:left}#footer{background-color:#edf3f4;clear:both;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:15px 0 45px 0;margin-top:15px;overflow:hidden}#footer .column{float:left;width:25%;padding-top:5px}#footer .column ul{padding-top:5px;margin-left:0;padding-left:0}#footer .column li{padding:5px 0;text-transform:none;list-style:none;margin-left:0}#footer .column li a{color:#6994a3;font-size:15px}.pagination{width:100%;text-align:center;margin-top:20px;clear:both;border-top:solid #3d4e53 thin;padding-top:7px}.pagination .endless_page_link{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px}.pagination .endless_page_current{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px;background-color:#edf3f4}a.nounderline{text-decoration:none}.slides_control{height:325px!important}#about_expandable{display:none;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;background:white;z-index:500;top:25%;padding:9px;max-width:90%}#about_expandable .collapser_x{margin-top:-27px;margin-right:-27px}#lightbox_content p{padding:9px 0;font-size:15px;line-height:20px}#lightbox_content p a{font-size:15px;line-height:20px}#lightbox_content p b{color:#8dc63f}#lightbox_content p.last{border-bottom:solid 2px #d6dde0;margin-bottom:5px}#lightbox_content .right_border{border-right:solid 1px #d6dde0;float:left;padding:9px}#lightbox_content .signuptoday{float:right;margin-top:0;clear:none}#lightbox_content h2+form,#lightbox_content h3+form,#lightbox_content h4+form{margin-top:15px}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-bottom:10px}.nonlightbox .about_page{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;width:75%;margin:10px auto auto auto;padding:9px}.collapser_x{float:right;height:24px;line-height:24px;width:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px;-moz-box-shadow:-1px 1px #3d4e53;-webkit-box-shadow:-1px 1px #3d4e53;box-shadow:-1px 1px #3d4e53;border:solid 3px white;text-align:center;color:white;background:#3d4e53;font-size:17px;z-index:5000;margin-top:-12px;margin-right:-22px}.signuptoday{-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;background-color:#8dc63f;padding:0 15px;height:36px;line-height:36px;float:left;clear:both;margin:10px auto;cursor:pointer;font-style:normal}.signuptoday a{background:url("/static/images/icons/pledgearrow-hover.png") right center no-repeat;padding-right:17px;color:white}.signuptoday a:hover{text-decoration:none}.central{width:480px;margin:0 auto}li.checked{list-style-type:none;background:transparent url(/static/images/checkmark_small.png) no-repeat 0 0;margin-left:-20px;padding-left:20px}.btn_support{margin:10px;width:215px}.btn_support a,.btn_support form input,.btn_support>span{font-size:22px;border:4px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;display:block;text-align:center;padding-top:14.25px;padding-bottom:14.25px;background-color:#8dc63f;color:white!important}.btn_support a span,.btn_support form input span,.btn_support>span span{color:white!important;font-weight:bold;padding-left:0;margin-left:0!important;background:0}.btn_support.create-account span{padding:0;margin:0;background:0}.btn_support a:hover,.btn_support form input:hover{background-color:#7aae34;text-decoration:none}.btn_support a{width:207px}.btn_support form input{width:215px}.btn_support.modify a,.btn_support.modify form input{background-color:#a7c1ca}.btn_support.modify a:hover,.btn_support.modify form input:hover{background-color:#91b1bd}.buttons{display:none;border-bottom:solid 2px #d6dde0;margin-bottom:10px}.buttons .btn_support{float:left;width:auto}.buttons .btn_support a{width:auto;padding:14.25px;font-size:15px}.instructions h4{border-top:solid #d6dde0 1px;border-bottom:solid #d6dde0 1px;padding:.5em 0}.instructions>div{padding-left:2em;padding-right:2em;font-size:15px;line-height:22.5px}#kindle_div .yes_js{display:none} \ No newline at end of file +.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}ul.social a:hover{text-decoration:none}ul.social li{padding:5px 0 5px 30px!important;height:28px;line-height:28px!important;margin:0!important;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}ul.social li.facebook{background:url("/static/images/icons/facebook.png") 10px center no-repeat;cursor:pointer}ul.social li.facebook span{padding-left:10px}ul.social li.facebook:hover{background:#8dc63f url("/static/images/icons/facebook-hover.png") 10px center no-repeat}ul.social li.facebook:hover span{color:#fff}ul.social li.twitter{background:url("/static/images/icons/twitter.png") 10px center no-repeat;cursor:pointer}ul.social li.twitter span{padding-left:10px}ul.social li.twitter:hover{background:#8dc63f url("/static/images/icons/twitter-hover.png") 10px center no-repeat}ul.social li.twitter:hover span{color:#fff}ul.social li.email{background:url("/static/images/icons/email.png") 10px center no-repeat;cursor:pointer}ul.social li.email span{padding-left:10px}ul.social li.email:hover{background:#8dc63f url("/static/images/icons/email-hover.png") 10px center no-repeat}ul.social li.email:hover span{color:#fff}ul.social li.embed{background:url("/static/images/icons/embed.png") 10px center no-repeat;cursor:pointer}ul.social li.embed span{padding-left:10px}ul.social li.embed:hover{background:#8dc63f url("/static/images/icons/embed-hover.png") 10px center no-repeat}ul.social li.embed:hover span{color:#fff}.download_container{width:75%;margin:auto}#lightbox_content a{color:#6994a3}#lightbox_content .signuptoday a{color:white}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-top:15px}#lightbox_content h2 a{font-size:18.75px}#lightbox_content .ebook_download a{margin:auto 5px auto 0;font-size:15px}#lightbox_content .ebook_download img{vertical-align:middle}#lightbox_content .logo{font-size:15px}#lightbox_content .logo img{-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;height:50px;width:50px;margin-right:5px}#lightbox_content .unglued,#lightbox_content .not_unglued{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;margin-left:-0.25%;padding:.5%;padding-bottom:15px;margin-bottom:5px;width:74%}#lightbox_content .unglued h3,#lightbox_content .not_unglued h3{margin-top:5px}#lightbox_content .unglued{border:solid 2px #8dc63f}#lightbox_content .not_unglued{border:solid 2px #d6dde0}#lightbox_content a.add-wishlist .on-wishlist,#lightbox_content a.success,a.success:hover{text-decoration:none;color:#3d4e53}#lightbox_content a.success,a.success:hover{cursor:default}#lightbox_content ul{padding-left:50px}#lightbox_content ul li{margin-bottom:4px}.border{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 2px #d6dde0;margin:5px auto;padding-right:5px;padding-left:5px}.sharing{float:right;padding:.5%!important;width:23%!important;min-width:105px}.sharing ul{padding:.5%!important}.sharing .jsmod-title{-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;height:auto}.sharing .jsmod-title span{padding:5%!important;color:white!important;font-style:normal}#widgetcode2{display:none;border:1px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;padding:10px}#widgetcode2 textarea{max-width:90%}.preview{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%}.preview a{color:#8dc63f}.launch_top{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;border-color:#8dc63f;margin:10px auto 0 auto;font-size:15px;line-height:22.5px}.launch_top a{color:#8dc63f}.launch_top.pale{border-color:#d6dde0;font-size:13px}.launch_top.alert{border-color:#e35351;font-size:13px}.preview_content{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;width:80%;margin:10px auto}.preview_content a{color:#8dc63f}.utilityheaders{text-transform:uppercase;color:#3d4e53;font-size:15px;display:block}html,body{height:100%}body{background:url("/static/images/bg-body.png") 0 0 repeat-x;padding:0 0 20px 0;margin:0;font-size:13px;line-height:16.900000000000002px;font-family:"Lucida Grande","Lucida Sans Unicode","Lucida Sans",Arial,Helvetica,sans-serif;color:#3d4e53}#feedback{position:fixed;bottom:10%;right:0;z-index:500}#feedback p{writing-mode:tb-rl;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);white-space:nowrap;display:block;bottom:0;width:160px;height:32px;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px;background:#8dc63f;margin-bottom:0;text-align:center;margin-right:-67px;line-height:normal}#feedback p a{color:white;font-size:24px;font-weight:normal}#feedback p a:hover{color:#3d4e53}a{font-weight:bold;font-size:inherit;text-decoration:none;cursor:pointer;color:#6994a3}a:hover{text-decoration:underline}h1{font-size:22.5px}h2{font-size:18.75px}h3{font-size:17.549999999999997px}h4{font-size:15px}img{border:0}img.user-avatar{float:left;margin-right:10px;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px}input,textarea,a.fakeinput{border:2px solid #d6dde0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}input:focus,textarea:focus,a.fakeinput:focus{border:2px solid #8dc63f;outline:0}a.fakeinput:hover{text-decoration:none}.js-search input{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}h2.content-heading{padding:15px;margin:0;font-size:19px;font-weight:normal;color:#3d4e53;float:left;width:50%}h2.content-heading span{font-style:italic}h3.jsmod-title{-moz-border-radius:8px 8px 0 0;-webkit-border-radius:8px 8px 0 0;border-radius:8px 8px 0 0;background:#a7c1ca;padding:0;margin:0;height:73px}h3.jsmod-title span{font-size:19px;font-style:italic;color:#3d4e53;padding:26px 40px 27px 20px;display:block}input[type="submit"],a.fakeinput{background:#8dc63f;color:white;font-weight:bold;padding:.5em 1em;cursor:pointer}.loader-gif[disabled="disabled"],.loader-gif.show-loading{background:url('/static/images/loading.gif') center no-repeat!important}.js-page-wrap{position:relative;min-height:100%}.js-main{width:960px;margin:0 auto;clear:both;padding:0}ul.menu{list-style:none;padding:0;margin:0}.errorlist{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errorlist li{list-style:none;border:0}.errorlist li{list-style:none;border:0}.errorlist+input{border:2px solid #e35351!important}.errorlist+input:focus{border:1px solid #8dc63f!important}.errorlist+textarea{border:2px solid #e35351!important}.errorlist+textarea:focus{border:2px solid #8dc63f!important}.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}#js-header{height:90px}.js-logo{float:left;padding-top:10px}.js-logo a img{border:0}.js-topmenu{float:right;margin-top:25px;font-size:15px}.js-topmenu#authenticated{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;height:36px}.js-topmenu#authenticated:hover,.js-topmenu#authenticated.highlight{background:#d6dde0;cursor:pointer;position:relative}.js-topmenu#authenticated.highlight span#welcome{background-image:url("/static/images/menu_bar_up_arrow_textblue.png")}.js-topmenu ul#user_menu{white-space:nowrap;display:none;z-index:100;position:absolute;top:36px;left:0;padding:0;overflow:visible;margin:0}.js-topmenu ul#user_menu li{border-top:1px solid white;list-style-type:none;float:none;background:#d6dde0;padding:7px 10px}.js-topmenu ul#user_menu li:hover{background:#8dc63f}.js-topmenu ul#user_menu li:hover a{color:white}.js-topmenu ul#user_menu li:hover #i_haz_notifications{border-color:white;background-color:white;color:#3d4e53}.js-topmenu ul#user_menu li a{height:auto;line-height:26.25px}.js-topmenu ul#user_menu li span{margin-right:10px}.js-topmenu ul li{float:left;position:relative;z-index:50}.js-topmenu ul li a{color:#3d4e53;height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.js-topmenu ul li span#welcome{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em;padding:0 10px;margin-right:5px;padding-right:22px;background-image:url("/static/images/menu_bar_down_arrow_textblue.png");background-repeat:no-repeat;background-position:right}.js-topmenu ul li span#welcome img{vertical-align:middle}.js-topmenu ul li img{padding:0;margin:0}.js-topmenu ul li.last{padding-left:20px}.js-topmenu ul li.last a{background:url("/static/images/bg.png") right top no-repeat}.js-topmenu ul li.last a span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8dc63f;margin-right:29px;display:block;padding:0 5px 0 15px;color:white}.js-topmenu ul .unseen_count{border:solid 2px;-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;padding:3px;line-height:16px;width:16px;cursor:pointer;text-align:center}.js-topmenu ul .unseen_count#i_haz_notifications{background-color:#8dc63f;color:white;border-color:white}.js-topmenu ul .unseen_count#no_notifications_for_you{border-color:#edf3f4;background-color:#edf3f4;color:#3d4e53}#i_haz_notifications_badge{-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;font-size:13px;border:solid 2px white;margin-left:-7px;margin-top:-10px;padding:3px;background:#8dc63f;color:white;position:absolute;line-height:normal}form.login label,#login form label{display:block;line-height:18px}form.login input,#login form input{width:90%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:1px solid #d6dde0;height:18px;line-height:18px;margin-bottom:6px}form.login input[type=submit],#login form input[type=submit]{text-decoration:capitalize;width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}form.login input:focus,#login form input:focus{border:solid 1px #8dc63f}form.login input[type="text"],#login form input[type="text"],form.login input[type="password"],#login form input[type="password"]{height:22.75px;line-height:22.75px;margin-bottom:13px;border-width:2px}form.login input[type="submit"],#login form input[type="submit"]{font-size:15px}form.login span.helptext,#login form span.helptext{display:block;margin-top:-11px;font-style:italic;font-size:13px}#lightbox_content .google_signup{padding:14px 0}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}.js-search{float:left;padding-top:25px;margin-left:81px}.js-search input{float:left}.js-search .inputbox{padding:0 0 0 15px;margin:0;border-top:solid 4px #8ac3d7;border-left:solid 4px #8ac3d7;border-bottom:solid 4px #8ac3d7;border-right:0;-moz-border-radius:50px 0 0 50px;-webkit-border-radius:50px 0 0 50px;border-radius:50px 0 0 50px;outline:0;height:28px;line-height:28px;width:156px;float:left;color:#6994a3}.js-search .button{background:url("/static/images/blue-search-button.png") no-repeat;padding:0;margin:0;width:40px;height:36px;display:block;border:0;text-indent:-10000px;cursor:pointer}.js-search-inner{float:right}#locationhash{display:none}#block-intro-text{padding-right:10px}#block-intro-text span.def{font-style:italic}a#readon{background:url("/static/images/learnmore-downarrow.png") right center no-repeat;color:#fff;text-transform:capitalize;display:block;float:right;font-size:13px;font-weight:bold}a#readon.down{background:url("/static/images/learnmore-uparrow.png") right center no-repeat}a#readon span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8ac3d7;margin-right:34px;padding:0 5px 0 20px;height:36px;line-height:36px;display:block}.spread_the_word{height:24px;width:24px;position:top;margin-left:5px}#js-leftcol{float:left;width:235px;margin-bottom:20px}#js-leftcol a{font-weight:normal}#js-leftcol a:hover{text-decoration:underline}#js-leftcol .jsmod-content{border:solid 1px #edf3f4;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px}#js-leftcol ul.level1>li>a,#js-leftcol ul.level1>li>span{border-bottom:1px solid #edf3f4;border-top:1px solid #edf3f4;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:10px}#js-leftcol ul.level2 li{padding:5px 10px}#js-leftcol ul.level2 li a{color:#6994a3;font-size:15px}#js-leftcol ul.level2 li img{vertical-align:middle;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}#js-leftcol ul.level2 li .ungluer-name{height:30px;line-height:30px}#js-topsection{padding:15px 0 0 0;overflow:hidden}.js-topnews{float:left;width:100%}.js-topnews1{background:url("/static/images/header/header-m.png") 0 0 repeat-y}.js-topnews2{background:url("/static/images/header/header-t.png") 0 0 no-repeat}.js-topnews3{background:url("/static/images/header/header-b.png") 0 100% no-repeat;display:block;overflow:hidden;padding:10px}#main-container{margin:15px 0 0 0}#js-maincol-fr{float:right;width:725px}div#content-block{overflow:hidden;background:url("/static/images/bg.png") 100% -223px no-repeat;padding:0 0 0 7px;margin-bottom:20px}div#content-block.jsmodule{background:0}.content-block-heading a.block-link{float:right;padding:15px;font-size:13px;color:#3d4e53;text-decoration:underline;font-weight:normal}div#content-block-content,div#content-block-content-1{width:100%;overflow:hidden;padding-left:10px}div#content-block-content .cols3 .column,div#content-block-content-1 .cols3 .column{width:33.33%;float:left}#footer{background-color:#edf3f4;clear:both;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:15px 0 45px 0;margin-top:15px;overflow:hidden}#footer .column{float:left;width:25%;padding-top:5px}#footer .column ul{padding-top:5px;margin-left:0;padding-left:0}#footer .column li{padding:5px 0;text-transform:none;list-style:none;margin-left:0}#footer .column li a{color:#6994a3;font-size:15px}.pagination{width:100%;text-align:center;margin-top:20px;clear:both;border-top:solid #3d4e53 thin;padding-top:7px}.pagination .endless_page_link{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px}.pagination .endless_page_current{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px;background-color:#edf3f4}a.nounderline{text-decoration:none}.slides_control{height:325px!important}#about_expandable{display:none;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;background:white;z-index:500;top:25%;padding:9px;max-width:90%}#about_expandable .collapser_x{margin-top:-27px;margin-right:-27px}#lightbox_content p{padding:9px 0;font-size:15px;line-height:20px}#lightbox_content p a{font-size:15px;line-height:20px}#lightbox_content p b{color:#8dc63f}#lightbox_content p.last{border-bottom:solid 2px #d6dde0;margin-bottom:5px}#lightbox_content .right_border{border-right:solid 1px #d6dde0;float:left;padding:9px}#lightbox_content .signuptoday{float:right;margin-top:0;clear:none}#lightbox_content h2+form,#lightbox_content h3+form,#lightbox_content h4+form{margin-top:15px}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-bottom:10px}.nonlightbox .about_page{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;width:75%;margin:10px auto auto auto;padding:9px}.collapser_x{float:right;height:24px;line-height:24px;width:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px;-moz-box-shadow:-1px 1px #3d4e53;-webkit-box-shadow:-1px 1px #3d4e53;box-shadow:-1px 1px #3d4e53;border:solid 3px white;text-align:center;color:white;background:#3d4e53;font-size:17px;z-index:5000;margin-top:-12px;margin-right:-22px}.signuptoday{-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;background-color:#8dc63f;padding:0 15px;height:36px;line-height:36px;float:left;clear:both;margin:10px auto;cursor:pointer;font-style:normal}.signuptoday a{background:url("/static/images/icons/pledgearrow-hover.png") right center no-repeat;padding-right:17px;color:white}.signuptoday a:hover{text-decoration:none}.central{width:480px;margin:0 auto}li.checked{list-style-type:none;background:transparent url(/static/images/checkmark_small.png) no-repeat 0 0;margin-left:-20px;padding-left:20px}.btn_support{margin:10px;width:215px}.btn_support a,.btn_support form input,.btn_support>span{font-size:22px;border:4px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;display:block;text-align:center;padding-top:14.25px;padding-bottom:14.25px;background-color:#8dc63f;color:white!important}.btn_support a span,.btn_support form input span,.btn_support>span span{color:white!important;font-weight:bold;padding-left:0;margin-left:0!important;background:0}.btn_support.create-account span{padding:0;margin:0;background:0}.btn_support a:hover,.btn_support form input:hover{background-color:#7aae34;text-decoration:none}.btn_support a{width:207px}.btn_support form input{width:215px}.btn_support.modify a,.btn_support.modify form input{background-color:#a7c1ca}.btn_support.modify a:hover,.btn_support.modify form input:hover{background-color:#91b1bd}.instructions h4{border-top:solid #d6dde0 1px;border-bottom:solid #d6dde0 1px;padding:.5em 0}.instructions>div{padding-left:1%;padding-right:1%;font-size:15px;line-height:22.5px;width:98%}.instructions>div.active{float:left}.other_instructions_paragraph{display:none}#iOS_app_div,#ios_div{display:none}#kindle_div .yes_js{display:none} \ No newline at end of file diff --git a/static/js/download_page.js b/static/js/download_page.js index 3d510932..3652c916 100644 --- a/static/js/download_page.js +++ b/static/js/download_page.js @@ -11,11 +11,10 @@ else { } // browser has a better sense of DOM changes than jQuery, so user can trigger click element -$j(document).on('click', '.buttons div', function() { - $j(this).removeClass('modify'); - $j(this).siblings().addClass('modify'); - var buttonID = $j(this).find('a').attr('id'); - var divSelector = '#' + buttonID + '_div'; +$j(document).on('click', '.other_instructions', function(e) { + e.preventDefault(); + var myID = $j(this).attr('id'); + var divSelector = '#' + myID + '_div'; var activeDiv = $j(divSelector); activeDiv.show(); activeDiv.siblings().hide(); diff --git a/static/less/enhanced_download.less b/static/less/enhanced_download.less index f4202300..2f29d837 100644 --- a/static/less/enhanced_download.less +++ b/static/less/enhanced_download.less @@ -1,15 +1,11 @@ -.buttons { +.buttons, #kindle_div .yes_js, .other_instructions_paragraph { display: inherit; } -.instructions > div:not(.active), .instructions h4 { +.instructions > div:not(.active) { display: none; } #kindle_div .no_js { display: none !important; -} - -#kindle_div .yes_js { - display: inherit; } \ No newline at end of file diff --git a/static/less/enhanced_download_ie.less b/static/less/enhanced_download_ie.less index fb541d28..f5804401 100644 --- a/static/less/enhanced_download_ie.less +++ b/static/less/enhanced_download_ie.less @@ -1,8 +1,8 @@ -.buttons { +.buttons, #kindle_div .yes_js, .other_instructions_paragraph { display: inherit; } -.instructions > div, .instructions h4 { +.instructions > div { display: none; } @@ -10,10 +10,6 @@ display: none !important; } -#kindle_div .yes_js { - display: inherit; -} - /* the not selector doesn't work in IE <= 8 */ .active { display: inherit; diff --git a/static/less/sitewide4.less b/static/less/sitewide4.less index 41c6b179..1b84ebac 100644 --- a/static/less/sitewide4.less +++ b/static/less/sitewide4.less @@ -922,6 +922,18 @@ li.checked { } } +.other_instructions_paragraph { + display: none; +} + +#iOS_app_div, #ios_div { + /* JS overrides display: none on instructions if it's enabled + if JS isn't enabled, they are not on an iOS device, so no need to + clutter up the download instructions with this + */ + display: none; +} + #kindle_div .yes_js { display: none; } \ No newline at end of file From 7070f033e7a634f9ae1a590279b17ce9ddd15035 Mon Sep 17 00:00:00 2001 From: Andromeda Yelton Date: Wed, 12 Jun 2013 15:24:26 -0400 Subject: [PATCH 03/32] download options should be sensitive to filetype --- frontend/templates/download.html | 52 ++++++++++++++++---------------- frontend/views.py | 50 +++++++++++++++--------------- 2 files changed, 52 insertions(+), 50 deletions(-) diff --git a/frontend/templates/download.html b/frontend/templates/download.html index b7792578..ce98a9ee 100644 --- a/frontend/templates/download.html +++ b/frontend/templates/download.html @@ -62,7 +62,7 @@ $j(document).ready(function() { {{ ebook.rights}} {{ ebook.format }} at {{ebook.provider}} - {{ ebook.format }} at {{ebook.provider}} + {{ ebook.format }} at {{ ebook.provider }} {% ifequal ebook.format 'mobi' %} (use for Kindle){% endifequal %} {% ifequal ebook.format 'epub' %} (use for Nook, Apple, Sony){% endifequal %} {% if not forloop.last %}

{% endif %} @@ -81,13 +81,13 @@ $j(document).ready(function() {

{% if formats.epub %} - Embedded browsers don't always know how to handle ebooks. We recommend downloading the epub file using Safari. + Embedded browsers don't always know how to handle ebooks. We recommend downloading the epub file using Safari. {% else %}{% if formats.pdf %} - Embedded browsers don't always know how to handle ebooks. We recommend downloading the pdf file using Safari. + Embedded browsers don't always know how to handle ebooks. We recommend downloading the pdf file using Safari. {% else %}{% if formats.html %} - You can read the HTML version of this book right here in this browser. + You can read the HTML version of this book right here in this browser. {% else %}{% if formats.text %} - You can read the text version of this book right here in this browser. + You can read the text version of this book right here in this browser. {% else %} This ebook is only available in .mobi. Your best bet is to download the Amazon Kindle app to this device and then use the Send-to-Kindle option above. {% endif %}{% endif %}{% endif %}{% endif %} @@ -101,31 +101,31 @@ $j(document).ready(function() {

iOS devices

{% if formats.epub %}

- You may already have an app which reads ebooks. Download the epub and see if you're offered an option for opening the file. If so, you're done! If not... + You may already have an app which reads ebooks. Download the epub file and see if you're offered an option for opening the file. If so, you're done! If not...

{% else %}{% if formats.pdf %}

- You may already have an app which reads ebooks. Download the pdf and see if you're offered an option for opening the file. If so, you're done! If not... + You may already have an app which reads ebooks. Download the pdf file and see if you're offered an option for opening the file. If so, you're done! If not...

{% else %}{% if formats.html %}

- Download the HTML version. + Download the HTML version.

{% else %}{% if formats.text %}

- Download the text version. + Download the text version.

{% else %}

@@ -141,33 +141,33 @@ $j(document).ready(function() {

Android devices

{% if formats.epub %}

- You may already have an app which reads ebooks. Download the epub and see if you're offered an option for opening the file. If so, you're done! If not... + You may already have an app which reads ebooks. Download the epub file and see if you're offered an option for opening the file. If so, you're done! If not...

  • Download the free Aldiko app.
  • -
  • Download the epub file.
  • +
  • Download the epub file.
  • When the download is complete, tap it in your notifications menu. It will be added to Aldiko, ready to read next time you open the app.
{% else %}{% if formats.pdf %}

- You may already have an app which reads ebooks. Download the epub and see if you're offered an option for opening the file. If so, you're done! If not... + You may already have an app which reads ebooks. Download the pdf file and see if you're offered an option for opening the file. If so, you're done! If not...

  • Download the free Aldiko app.
  • -
  • Download the epub file.
  • +
  • Download the pdf file.
  • When the download is complete, tap it in your notifications menu. It will be added to Aldiko, ready to read next time you open the app.
{% else %}{% if formats.html %}

- Download the HTML version. + Download the HTML version.

{% else %}{% if formats.text %}

- Download the text version. + Download the text version.

{% else %}

@@ -183,29 +183,29 @@ $j(document).ready(function() {

PC, Mac, or Linux

{% if formats.pdf %}

- You probably already have an app which reads PDFs. Download the PDF file and open it. + You probably already have an app which reads PDFs. Download the pdf file and open it.

{% else %}{% if formats.epub %} {% else %}{% if formats.mobi %} {% else %}{% if formats.html %}

- You can read the HTML version right here in your browser. + You can read the HTML version right here in your browser.

{% else %}

- You can read the text version right here in your browser. + You can read the text version right here in your browser.

{% endif %}{% endif %}{% endif %}{% endif %}

@@ -220,16 +220,16 @@ $j(document).ready(function() {

  • {% if formats.mobi %} - Kindle: download the mobi file to a laptop or desktop computer. + Kindle: download the mobi file to your computer. {% else %}{% if formats.pdf %} - Kindle: download the mobi file to a laptop or desktop computer. + Kindle: download the pdf file to your computer. {% else %} Kindle: We're sorry; we don't have a version suitable for Kindle. {% endif %}{% endif %} {% if formats.epub %} - All other ereaders: download the epub file to a laptop or desktop computer. + All other ereaders: download the epub file to your computer. {% else %}{% if formats.pdf %} - All other ereaders: download the pdf file to a laptop or desktop computer. + All other ereaders: download the pdf file to your computer. {% else %} All other ereaders: We're sorry; we don't have a version suitable for your device. {% endif %}{% endif %} diff --git a/frontend/views.py b/frontend/views.py index 5aa7c479..d7165a57 100755 --- a/frontend/views.py +++ b/frontend/views.py @@ -2409,34 +2409,36 @@ def download(request, work_id): unglued_ebooks = work.ebooks().filter(edition__unglued=True) other_ebooks = work.ebooks().filter(edition__unglued=False) - kindle_ebook_id = None formats = {} - formats['mobi'] = False + try: - kindle_ebook_id = work.ebooks().filter(format='mobi')[0].id - formats['mobi'] = True + formats['epub'] = work.ebooks().filter(format='epub')[0] except IndexError: - try: - kindle_ebook_id = work.ebooks().filter(format='pdf')[0].id - except IndexError: - pass - if work.ebooks().filter(format='epub'): - formats['epub'] = True - else: - formats['epub'] = False - if work.ebooks().filter(format='pdf'): - formats['pdf'] = True - else: - formats['pdf'] = False - if work.ebooks().filter(format='html'): - formats['html'] = True - else: - formats['html'] = False - if work.ebooks().filter(format='text'): - formats['text'] = True - else: - formats['text'] = False + formats['epub'] = None + try: + formats['pdf'] = work.ebooks().filter(format='pdf')[0] + except IndexError: + formats['pdf'] = None + try: + formats['mobi'] = work.ebooks().filter(format='mobi')[0] + except IndexError: + formats['mobi'] = None + try: + formats['html'] = work.ebooks().filter(format='html')[0] + except IndexError: + formats['html'] = None + try: + formats['text'] = work.ebooks().filter(format='text')[0] + except IndexError: + formats['text'] = None + if formats['mobi']: + kindle_ebook_id = formats['mobi'].id + elif formats['pdf']: + kindle_ebook_id = formats['pdf'].id + else: + kindle_ebook_id = None + try: readmill_epub_ebook = work.ebooks().filter(format='epub').exclude(provider='Google Books')[0] readmill_epub_url = settings.BASE_URL_SECURE + reverse('download_ebook',args=[readmill_epub_ebook.id]) From 1e310e8896a437bf6bf77dbcde8bff320ba3c300 Mon Sep 17 00:00:00 2001 From: eric Date: Fri, 14 Jun 2013 23:09:55 -0400 Subject: [PATCH 04/32] fix overzealous global replace --- frontend/templates/manage_campaign.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/templates/manage_campaign.html b/frontend/templates/manage_campaign.html index baa5fd71..9dac0f80 100644 --- a/frontend/templates/manage_campaign.html +++ b/frontend/templates/manage_campaign.html @@ -9,7 +9,7 @@ textarea { width: 90%; } - + From 5fe6f5d3a02895fd24191f2ae872bf30bef3042b Mon Sep 17 00:00:00 2001 From: eric Date: Tue, 18 Jun 2013 09:39:57 -0400 Subject: [PATCH 05/32] no campaigns *right now* --- frontend/templates/campaign_list.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/templates/campaign_list.html b/frontend/templates/campaign_list.html index 64be1792..78ec4cf7 100644 --- a/frontend/templates/campaign_list.html +++ b/frontend/templates/campaign_list.html @@ -76,7 +76,7 @@ location.hash = "#2";
{% ifequal campaign_list.count 0 %} - There aren't any {{ pub_lang|ez_lang_name }} ungluing campaigns active yet. If you're an author, publisher, or other rights holder, you can start one. + There aren't any {{ pub_lang|ez_lang_name }} ungluing campaigns active right now. If you're an author, publisher, or other rights holder, you can start one. {% else %} {% lazy_paginate 20 campaign_list using "campaign_list" %} From c76a320912aa4fcd6556e00a4f2130d6102df778 Mon Sep 17 00:00:00 2001 From: Raymond Yee Date: Wed, 19 Jun 2013 18:54:32 -0700 Subject: [PATCH 06/32] * Comment out current payment.manager.PaymentManager.pledge -- tests run ok -- so it looks like I suspect: that we don't use that code and it's a hold-over from PayPal code * stub for stripelib.Processor.Pay --- payment/manager.py | 120 +++++++++++++++++++++---------------------- payment/stripelib.py | 25 ++++++++- 2 files changed, 84 insertions(+), 61 deletions(-) diff --git a/payment/manager.py b/payment/manager.py index 478a66ed..0f9c0083 100644 --- a/payment/manager.py +++ b/payment/manager.py @@ -885,66 +885,66 @@ class PaymentManager( object ): logger.info("Refund Transaction " + str(transaction.id) + " Failed with error: " + p.error_string()) return False - def pledge(self, currency, campaign=None, user=None, - return_url=None, nevermind_url=None, pledge_extra=None): - ''' - pledge - - Performs an instant payment - - currency: a 3-letter paypal currency code, i.e. USD - campaign: required campaign object - user: optional user object - return_url: url to redirect supporter to after a successful PayPal transaction - nevermind_url: url to send supporter to if support hits cancel while in middle of PayPal transaction - - return value: a tuple of the new transaction object and a re-direct url. If the process fails, - the redirect url will be None - - ''' - - amount = D('0.00') - - t = Transaction.create(amount=amount, - max_amount=amount, - currency=currency, - status=TRANSACTION_STATUS_NONE, - campaign=campaign, - user=user, - pledge_extra=pledge_extra - ) - - t.date_payment=now() - t.execution=EXECUTE_TYPE_CHAINED_INSTANT - t.type=PAYMENT_TYPE_INSTANT - p = t.get_payment_class().Pay(t,return_url=return_url, nevermind_url=nevermind_url) - - # Create a response for this - envelope = p.envelope() - logger.info(envelope) - - if envelope: - r = PaymentResponse.objects.create(api=p.api(), - correlation_id = p.correlation_id(), - timestamp = p.timestamp(), - info = p.raw_response, - transaction=t) - - if p.success() and not p.error(): - t.pay_key = p.key() - t.status = TRANSACTION_STATUS_CREATED - t.save() - - url = p.next_url() - - logger.info("Pledge Success: " + url) - return t, url - - else: - t.error = p.error_string() - t.save() - logger.info("Pledge Error: %s" % p.error_string()) - return t, None + #def pledge(self, currency, campaign=None, user=None, + # return_url=None, nevermind_url=None, pledge_extra=None): + # ''' + # pledge + # + # Performs an instant payment + # + # currency: a 3-letter paypal currency code, i.e. USD + # campaign: required campaign object + # user: optional user object + # return_url: url to redirect supporter to after a successful PayPal transaction + # nevermind_url: url to send supporter to if support hits cancel while in middle of PayPal transaction + # + # return value: a tuple of the new transaction object and a re-direct url. If the process fails, + # the redirect url will be None + # + # ''' + # + # amount = D('0.00') + # + # t = Transaction.create(amount=amount, + # max_amount=amount, + # currency=currency, + # status=TRANSACTION_STATUS_NONE, + # campaign=campaign, + # user=user, + # pledge_extra=pledge_extra + # ) + # + # t.date_payment=now() + # t.execution=EXECUTE_TYPE_CHAINED_INSTANT + # t.type=PAYMENT_TYPE_INSTANT + # p = t.get_payment_class().Pay(t,return_url=return_url, nevermind_url=nevermind_url) + # + # # Create a response for this + # envelope = p.envelope() + # logger.info(envelope) + # + # if envelope: + # r = PaymentResponse.objects.create(api=p.api(), + # correlation_id = p.correlation_id(), + # timestamp = p.timestamp(), + # info = p.raw_response, + # transaction=t) + # + # if p.success() and not p.error(): + # t.pay_key = p.key() + # t.status = TRANSACTION_STATUS_CREATED + # t.save() + # + # url = p.next_url() + # + # logger.info("Pledge Success: " + url) + # return t, url + # + # else: + # t.error = p.error_string() + # t.save() + # logger.info("Pledge Error: %s" % p.error_string()) + # return t, None def make_account(self, user, host, token=None): """delegate to a specific payment module the task of creating a payment account""" diff --git a/payment/stripelib.py b/payment/stripelib.py index 0f1ff9a6..116abd00 100644 --- a/payment/stripelib.py +++ b/payment/stripelib.py @@ -614,7 +614,30 @@ class Processor(baseprocessor.Processor): """return None because no redirection to stripe is required""" return None - + class Pay(StripePaymentRequest, baseprocessor.Processor.Pay): + + ''' + The pay function generates a redirect URL to approve the transaction + ''' + + def __init__( self, transaction, return_url=None, amount=None, paymentReason=""): + self.transaction=transaction + + #def api(self): + # return "null api" + # + ##def exec_status( self ): + # return None + + def amount( self ): + return self.transaction.amount + + def key( self ): + return None + + def next_url( self ): + return self.url + class Execute(StripePaymentRequest): ''' From 5d1f6fa22468f4534010088532638b056baa926d Mon Sep 17 00:00:00 2001 From: eric Date: Thu, 20 Jun 2013 14:34:44 -0400 Subject: [PATCH 07/32] quick fix for readmill --- frontend/views.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/frontend/views.py b/frontend/views.py index 5b17acfc..cf5572bd 100755 --- a/frontend/views.py +++ b/frontend/views.py @@ -2353,7 +2353,8 @@ def download(request, work_id): other_ebooks = work.ebooks().filter(edition__unglued=False) try: readmill_epub_ebook = work.ebooks().filter(format='epub').exclude(provider='Google Books')[0] - readmill_epub_url = settings.BASE_URL_SECURE + reverse('download_ebook',args=[readmill_epub_ebook.id]) + #readmill_epub_url = settings.BASE_URL_SECURE + reverse('download_ebook',args=[readmill_epub_ebook.id]) + readmill_epub_url = readmill_epub_ebook.url except: readmill_epub_url = None From a36ff387455004fff95f14b637ff9dff97f20279 Mon Sep 17 00:00:00 2001 From: Raymond Yee Date: Thu, 20 Jun 2013 13:39:06 -0700 Subject: [PATCH 08/32] extraneous creation of StripeClient --- payment/stripelib.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/payment/stripelib.py b/payment/stripelib.py index 116abd00..07ea0825 100644 --- a/payment/stripelib.py +++ b/payment/stripelib.py @@ -576,8 +576,6 @@ class Processor(baseprocessor.Processor): transaction.date_authorized = now_val transaction.date_expired = expiry - sc = StripeClient() - # let's figure out what part of transaction can be used to store info # try placing charge id in transaction.pay_key # need to set amount From 1c86a0ae5a9925aa5695c75c08e21093c08ce352 Mon Sep 17 00:00:00 2001 From: Raymond Yee Date: Thu, 20 Jun 2013 14:17:47 -0700 Subject: [PATCH 09/32] I'm going to modify test for reflect readmill change -- it seems like there is no extra readmill button for test scenario --- core/tests.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/tests.py b/core/tests.py index fef91f02..0678765a 100755 --- a/core/tests.py +++ b/core/tests.py @@ -674,7 +674,7 @@ class DownloadPageTest(TestCase): anon_client = Client() response = anon_client.get("/work/%s/download/" % w.id, follow=True) - self.assertContains(response, "/download_ebook/%s/"% eb1.id, count=4) #the extra is readmill + self.assertContains(response, "/download_ebook/%s/"% eb1.id, count=3) # no extra now, readmill not for google books? self.assertContains(response, "/download_ebook/%s/"% eb2.id, count=3) From 53178d80ce2d7cd4561bb6ed716b0fd1b9a982d2 Mon Sep 17 00:00:00 2001 From: Raymond Yee Date: Fri, 21 Jun 2013 15:14:51 -0700 Subject: [PATCH 10/32] moving to stripe 1.9.1 --- payment/stripelib.py | 16 +++++++++++++--- requirements_versioned.pip | 2 +- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/payment/stripelib.py b/payment/stripelib.py index 07ea0825..2471e865 100644 --- a/payment/stripelib.py +++ b/payment/stripelib.py @@ -83,7 +83,16 @@ except Exception, e: # set default stripe api_key to that of unglue.it -stripe.api_key = STRIPE_SK +stripe.api_key = STRIPE_SK + +# maybe we should be able to set this in django.settings... + +# to start with, let's try hard-coding the api_version +# https://stripe.com/docs/upgrades?since=2012-07-09#api-changelog + +#API_VERSION = '2012-07-09' +API_VERSION = '2013-02-13' +stripe.api_version = API_VERSION # https://stripe.com/docs/testing @@ -174,6 +183,7 @@ def _isListableAPIResource(x): except: return False + class StripeClient(object): def __init__(self, api_key=STRIPE_SK): self.api_key = api_key @@ -377,8 +387,8 @@ class StripeErrorTest(TestCase): charge1 = sc.create_charge(10, 'usd', card=token2.id) self.assertEqual(charge1.amount, 1000) self.assertEqual(charge1.id[:3], "ch_") - # disputed, failure_message, fee, fee_details - self.assertEqual(charge1.disputed,False) + # dispute, failure_message, fee, fee_details + self.assertEqual(charge1.dispute,None) self.assertEqual(charge1.failure_message,None) self.assertEqual(charge1.fee,59) self.assertEqual(charge1.refunded,False) diff --git a/requirements_versioned.pip b/requirements_versioned.pip index 375befee..475e7267 100644 --- a/requirements_versioned.pip +++ b/requirements_versioned.pip @@ -54,7 +54,7 @@ selenium==2.25.0 six==1.2.0 ssh==1.7.14 stevedore==0.4 -stripe==1.7.4 +stripe==1.9.1 virtualenv==1.4.9 virtualenvwrapper==3.6 wsgiref==0.1.2 From 86caa9b3edfa02239cd8843d0f3a2bc248536d93 Mon Sep 17 00:00:00 2001 From: Raymond Yee Date: Mon, 24 Jun 2013 08:04:36 -0700 Subject: [PATCH 11/32] Making changes to fix breakage in core.tests.BookLoaderTests.test_add_by_isbn 2000-07-01 -> 2000 Ace Trade -> Penguin --- core/tests.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/tests.py b/core/tests.py index 0678765a..94c0742d 100755 --- a/core/tests.py +++ b/core/tests.py @@ -40,8 +40,8 @@ class BookLoaderTests(TestCase): # edition edition = bookloader.add_by_isbn('0441007465') self.assertEqual(edition.title, 'Neuromancer') - self.assertEqual(edition.publication_date, u'2000-07-01') - self.assertEqual(edition.publisher, u'Ace Trade') + self.assertEqual(edition.publication_date, u'2000') + self.assertEqual(edition.publisher, u'Penguin') self.assertEqual(edition.isbn_10, '0441007465') self.assertEqual(edition.isbn_13, '9780441007462') self.assertEqual(edition.googlebooks_id, 'IDFfMPW32hQC') @@ -64,8 +64,8 @@ class BookLoaderTests(TestCase): self.assertEqual(edition.work.publishers().count(), 1) old_pub_name.publisher = pub old_pub_name.save() - edition.set_publisher(u'Ace Trade') - self.assertEqual(edition.publisher, u'test publisher name') # Ace Trade has been aliased + edition.set_publisher(u'Penguin') + self.assertEqual(edition.publisher, u'test publisher name') # Penguin has been aliased # locale in language edition = bookloader.add_by_isbn('9787500676911') self.assertEqual(edition.work.language, 'zh') From 69f0451bea8f51a3a7fa9904e54b671fcbdf47c1 Mon Sep 17 00:00:00 2001 From: Andromeda Yelton Date: Mon, 24 Jun 2013 13:53:28 -0400 Subject: [PATCH 12/32] segregate flows of one-click and information-seeking options, address feedback --- frontend/templates/download.html | 142 +++++++----------- .../templates/kindle_change_successful.html | 27 +++- frontend/templates/kindle_config.html | 45 +++++- frontend/urls.py | 1 + frontend/views.py | 33 +++- static/css/download.css | 2 +- static/css/enhanced_download.css | 2 +- static/css/enhanced_download_ie.css | 2 +- static/css/sitewide4.css | 2 +- static/js/download_page.js | 14 +- static/less/download.less | 20 ++- static/less/enhanced_download.less | 4 + static/less/enhanced_download_ie.less | 4 +- static/less/sitewide4.less | 22 ++- 14 files changed, 201 insertions(+), 119 deletions(-) diff --git a/frontend/templates/download.html b/frontend/templates/download.html index ce98a9ee..febd958a 100644 --- a/frontend/templates/download.html +++ b/frontend/templates/download.html @@ -23,7 +23,7 @@ $j(document).ready(function() { {% endif %} {% if unglued_ebooks or other_ebooks %} diff --git a/frontend/templates/kindle_response_graceful_degradation.html b/frontend/templates/kindle_response_graceful_degradation.html index 7a3c3376..fe5bb183 100644 --- a/frontend/templates/kindle_response_graceful_degradation.html +++ b/frontend/templates/kindle_response_graceful_degradation.html @@ -2,7 +2,5 @@ {% block doccontent %} {% include "kindle_response_message.html" %} -

- You can go back to the book you were downloading. -

+ {% endblock %} \ No newline at end of file diff --git a/frontend/templates/registration/login.html b/frontend/templates/registration/login.html index c1e3080b..ba4976dd 100644 --- a/frontend/templates/registration/login.html +++ b/frontend/templates/registration/login.html @@ -26,14 +26,14 @@ Make sure the username box has your username, not your email -- some brow
-Forgot your password? Need an account? Other questions? +Forgot your password? Need an account? Other questions?

{% else %} diff --git a/static/js/sitewide1.js b/static/js/sitewide1.js index 2a1acf2c..74b8295c 100644 --- a/static/js/sitewide1.js +++ b/static/js/sitewide1.js @@ -24,18 +24,20 @@ $j(document).ready(function() { if ($j(this).attr("href").indexOf("download") !== -1) { jQuery.getScript('/static/js/download_page.js'); jQuery.getScript('https://platform.readmill.com/send.js'); + var work_page = $j(this).attr("href").split("download")[0]; + $j.cookie('next', work_page, {path: '/'}); } - - //need to push next cookie for sign-in links - var vars = $j(this).attr("href").split("next="); - if (vars.length>1){ - next=vars[1]; - if(next!='') { - next = next.replace(/[\x22\x27\x3c\x3e]/g,''); - $j.cookie('next', next, {path: '/'}); + else { + //need to push next cookie for sign-in links + var vars = $j(this).attr("href").split("next="); + if (vars.length>1){ + next=vars[1]; + if(next!='') { + next = next.replace(/[\x22\x27\x3c\x3e]/g,''); + $j.cookie('next', next, {path: '/'}); + } } } - // fade-out rest of page elements on expand $j('#feedback, #js-page-wrap, #footer').css({"opacity": "0.07"}); $j('#about_expandable').css({'position': 'absolute'}); From 6dd6d7de5ae88c78a925feffd95df57b74214137 Mon Sep 17 00:00:00 2001 From: eric Date: Tue, 25 Jun 2013 17:41:14 -0400 Subject: [PATCH 24/32] add instructions and png for embedded browser --- frontend/templates/download.html | 15 +++++++-------- static/images/open_safari.png | Bin 0 -> 107077 bytes 2 files changed, 7 insertions(+), 8 deletions(-) create mode 100644 static/images/open_safari.png diff --git a/frontend/templates/download.html b/frontend/templates/download.html index 75ef9339..edfe24c0 100644 --- a/frontend/templates/download.html +++ b/frontend/templates/download.html @@ -112,20 +112,19 @@ $j(document).ready(function() {

- Looks like you're using an embedded browser in an iOS app. (Maybe you followed a link in Twitter or Facebook?) + Looks like you're using an embedded browser inside an iOS app. (Maybe you followed a link in Twitter or Facebook?)

- {% if formats.epub %} - Embedded browsers don't always know how to handle ebooks. We recommend downloading the epub file using Safari. - {% else %}{% if formats.pdf %} - Embedded browsers don't always know how to handle ebooks. We recommend downloading the pdf file using Safari. + {% if formats.epub or formats.mobi %} + To read this ebook you should open this page in safari. how to open in safari
+ {% endif %} + {% if formats.pdf %} + You should also be able to use the pdf file. {% else %}{% if formats.html %} You can read the HTML version of this book right here in this browser. {% else %}{% if formats.text %} You can read the text version of this book right here in this browser. - {% else %} - This ebook is only available in .mobi. Your best bet is to download the Amazon Kindle app to this device and then use the Send-to-Kindle option above. - {% endif %}{% endif %}{% endif %}{% endif %} + {% endif %}{% endif %}{% endif %}

Not on iOS? Try the instructions for Android, desktop computers, or ereaders (Kindle, Nook, Kobo, etc.). diff --git a/static/images/open_safari.png b/static/images/open_safari.png new file mode 100644 index 0000000000000000000000000000000000000000..96f86f204cf304cb5604856cd1eec3bc1e6bc7e0 GIT binary patch literal 107077 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

ILNU%$O6tMu=)4W*!HvlM~vfef_S9 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 Date: Tue, 25 Jun 2013 17:42:06 -0400 Subject: [PATCH 25/32] add readmill and send to kindle instructions --- frontend/templates/download.html | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/frontend/templates/download.html b/frontend/templates/download.html index edfe24c0..3d85d75c 100644 --- a/frontend/templates/download.html +++ b/frontend/templates/download.html @@ -143,6 +143,12 @@ $j(document).ready(function() {

  • Download the epub file.
  • You will be given the option of opening the file in iBooks.
  • +

    Readmill is another great option.

    +
      +
    • Download the free Readmill app from the App Store.
    • +
    • Click the "Send to Readmill" button above.
    • +
    • If you don't have a free Readmill account, you'll be given the option of creating one.
    • +
    {% else %}{% if formats.pdf %}

    You may already have an app which reads ebooks. Download the pdf file and see if you're offered an option for opening the file. If so, you're done! If not... @@ -214,7 +220,7 @@ $j(document).ready(function() {

    -

    PC, Mac, or Linux

    +

    Reading on a PC, Mac, or Linux

    {% if formats.pdf %}

    You probably already have an app which reads PDFs. Download the pdf file and open it. @@ -243,7 +249,7 @@ $j(document).ready(function() {

    {% endif %}{% endif %}{% endif %}{% endif %}

    - Not on a desktop computer? Try the instructions for iPhone/iPad, Android, or ereaders (Kindle, Nook, Kobo, etc.). + Not on a desktop computer, or want to "side-load" ebooks onto a device or app? Try the instructions for iPhone/iPad, Android, or ereaders (Kindle, Nook, Kobo, etc.).

    @@ -254,9 +260,9 @@ $j(document).ready(function() {
    • {% if formats.mobi %} - Kindle: download the mobi file to your computer. + Kindle: download the mobi file to your computer, or use the Send To Kindle button above. {% else %}{% if formats.pdf %} - Kindle: download the pdf file to your computer. + Kindle: download the pdf file to your computer, or use the Send To Kindle button above. {% else %} Kindle: We're sorry; we don't have a version suitable for Kindle. {% endif %}{% endif %} From 8395a4afb41e1180441e6956bda97224849d82d8 Mon Sep 17 00:00:00 2001 From: Andromeda Yelton Date: Wed, 26 Jun 2013 09:31:26 -0400 Subject: [PATCH 26/32] other things have logos, readmill should too --- frontend/templates/download.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/templates/download.html b/frontend/templates/download.html index 3d85d75c..6ee0f686 100644 --- a/frontend/templates/download.html +++ b/frontend/templates/download.html @@ -143,7 +143,7 @@ $j(document).ready(function() {
    • Download the epub file.
    • You will be given the option of opening the file in iBooks.
    -

    Readmill is another great option.

    +
    • Download the free Readmill app from the App Store.
    • Click the "Send to Readmill" button above.
    • From a6879ac20d72b63d7d308b3e63e16334caa5dc5b Mon Sep 17 00:00:00 2001 From: Andromeda Yelton Date: Wed, 26 Jun 2013 09:43:15 -0400 Subject: [PATCH 27/32] unbind send-to-kindle action after send, don't display options not available without javascript to non-js users --- frontend/templates/download.html | 10 ++++------ static/css/enhanced_download.css | 2 +- static/css/enhanced_download_ie.css | 2 +- static/css/sitewide4.css | 2 +- static/js/download_page.js | 1 + static/less/enhanced_download.less | 4 ++-- static/less/enhanced_download_ie.less | 4 ++-- static/less/sitewide4.less | 2 +- 8 files changed, 13 insertions(+), 14 deletions(-) diff --git a/frontend/templates/download.html b/frontend/templates/download.html index 6ee0f686..5c4316b7 100644 --- a/frontend/templates/download.html +++ b/frontend/templates/download.html @@ -47,11 +47,9 @@ $j(document).ready(function() {
    -

    - - - -

    +
    + +
    {% else %}
    @@ -61,7 +59,7 @@ $j(document).ready(function() {
    {% endif %} {% if readmill_epub_url %} -
    +
    {% endif %} diff --git a/static/css/enhanced_download.css b/static/css/enhanced_download.css index ddca6678..0642e01e 100644 --- a/static/css/enhanced_download.css +++ b/static/css/enhanced_download.css @@ -1 +1 @@ -.buttons,#kindle_div .yes_js,.other_instructions_paragraph{display:inherit}.instructions>div:not(.active){display:none}#kindle_div .no_js{display:none!important}.active{display:inherit!important} \ No newline at end of file +.buttons,.yes_js,.other_instructions_paragraph{display:inherit}.instructions>div:not(.active){display:none}.no_js{display:none!important}.active{display:inherit!important} \ No newline at end of file diff --git a/static/css/enhanced_download_ie.css b/static/css/enhanced_download_ie.css index f72071fc..348a90a2 100644 --- a/static/css/enhanced_download_ie.css +++ b/static/css/enhanced_download_ie.css @@ -1 +1 @@ -#kindle_div .yes_js,.other_instructions_paragraph{display:inherit}.instructions>div{display:none}#kindle_div .no_js{display:none!important}.active{display:inherit!important} \ No newline at end of file +.yes_js,.other_instructions_paragraph{display:inherit}.instructions>div{display:none}.no_js{display:none!important}.active{display:inherit!important} \ No newline at end of file diff --git a/static/css/sitewide4.css b/static/css/sitewide4.css index d9b1e495..cbbb357c 100644 --- a/static/css/sitewide4.css +++ b/static/css/sitewide4.css @@ -1 +1 @@ -.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}ul.social a:hover{text-decoration:none}ul.social li{padding:5px 0 5px 30px!important;height:28px;line-height:28px!important;margin:0!important;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}ul.social li.facebook{background:url("/static/images/icons/facebook.png") 10px center no-repeat;cursor:pointer}ul.social li.facebook span{padding-left:10px}ul.social li.facebook:hover{background:#8dc63f url("/static/images/icons/facebook-hover.png") 10px center no-repeat}ul.social li.facebook:hover span{color:#fff}ul.social li.twitter{background:url("/static/images/icons/twitter.png") 10px center no-repeat;cursor:pointer}ul.social li.twitter span{padding-left:10px}ul.social li.twitter:hover{background:#8dc63f url("/static/images/icons/twitter-hover.png") 10px center no-repeat}ul.social li.twitter:hover span{color:#fff}ul.social li.email{background:url("/static/images/icons/email.png") 10px center no-repeat;cursor:pointer}ul.social li.email span{padding-left:10px}ul.social li.email:hover{background:#8dc63f url("/static/images/icons/email-hover.png") 10px center no-repeat}ul.social li.email:hover span{color:#fff}ul.social li.embed{background:url("/static/images/icons/embed.png") 10px center no-repeat;cursor:pointer}ul.social li.embed span{padding-left:10px}ul.social li.embed:hover{background:#8dc63f url("/static/images/icons/embed-hover.png") 10px center no-repeat}ul.social li.embed:hover span{color:#fff}.download_container{width:75%;margin:auto}#lightbox_content a{color:#6994a3}#lightbox_content .signuptoday a{color:white}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-top:15px}#lightbox_content h2 a{font-size:18.75px}#lightbox_content .ebook_download a{margin:auto 5px auto 0;font-size:15px}#lightbox_content .ebook_download img{vertical-align:middle}#lightbox_content .logo{font-size:15px}#lightbox_content .logo img{-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;height:50px;width:50px;margin-right:5px}#lightbox_content .one_click,#lightbox_content .ebook_download_container{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;margin-left:-0.25%;padding:.5%;padding-bottom:15px;margin-bottom:5px;width:74%}#lightbox_content .one_click h3,#lightbox_content .ebook_download_container h3{margin-top:5px}#lightbox_content .one_click{border:solid 2px #8dc63f}#lightbox_content .ebook_download_container{border:solid 2px #d6dde0}#lightbox_content a.add-wishlist .on-wishlist,#lightbox_content a.success,a.success:hover{text-decoration:none;color:#3d4e53}#lightbox_content a.success,a.success:hover{cursor:default}#lightbox_content ul{padding-left:50px}#lightbox_content ul li{margin-bottom:4px}.border{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 2px #d6dde0;margin:5px auto;padding-right:5px;padding-left:5px}.sharing{float:right;padding:.5%!important;width:23%!important;min-width:105px}.sharing ul{padding:.5%!important}.sharing .jsmod-title{-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;height:auto}.sharing .jsmod-title span{padding:5%!important;color:white!important;font-style:normal}#widgetcode2{display:none;border:1px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;padding:10px}#widgetcode2 textarea{max-width:90%}.btn_support.kindle{height:40px}.btn_support.kindle a{width:auto;font-size:15px}.preview{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%}.preview a{color:#8dc63f}.launch_top{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;border-color:#8dc63f;margin:10px auto 0 auto;font-size:15px;line-height:22.5px}.launch_top a{color:#8dc63f}.launch_top.pale{border-color:#d6dde0;font-size:13px}.launch_top.alert{border-color:#e35351;font-size:13px}.preview_content{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;width:80%;margin:10px auto}.preview_content a{color:#8dc63f}.utilityheaders{text-transform:uppercase;color:#3d4e53;font-size:15px;display:block}html,body{height:100%}body{background:url("/static/images/bg-body.png") 0 0 repeat-x;padding:0 0 20px 0;margin:0;font-size:13px;line-height:16.900000000000002px;font-family:"Lucida Grande","Lucida Sans Unicode","Lucida Sans",Arial,Helvetica,sans-serif;color:#3d4e53}#feedback{position:fixed;bottom:10%;right:0;z-index:500}#feedback p{writing-mode:tb-rl;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);white-space:nowrap;display:block;bottom:0;width:160px;height:32px;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px;background:#8dc63f;margin-bottom:0;text-align:center;margin-right:-67px;line-height:normal}#feedback p a{color:white;font-size:24px;font-weight:normal}#feedback p a:hover{color:#3d4e53}a{font-weight:bold;font-size:inherit;text-decoration:none;cursor:pointer;color:#6994a3}a:hover{text-decoration:underline}h1{font-size:22.5px}h2{font-size:18.75px}h3{font-size:17.549999999999997px}h4{font-size:15px}img{border:0}img.user-avatar{float:left;margin-right:10px;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px}input,textarea,a.fakeinput{border:2px solid #d6dde0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}input:focus,textarea:focus,a.fakeinput:focus{border:2px solid #8dc63f;outline:0}a.fakeinput:hover{text-decoration:none}.js-search input{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}h2.content-heading{padding:15px;margin:0;font-size:19px;font-weight:normal;color:#3d4e53;float:left;width:50%}h2.content-heading span{font-style:italic}h3.jsmod-title{-moz-border-radius:8px 8px 0 0;-webkit-border-radius:8px 8px 0 0;border-radius:8px 8px 0 0;background:#a7c1ca;padding:0;margin:0;height:73px}h3.jsmod-title span{font-size:19px;font-style:italic;color:#3d4e53;padding:26px 40px 27px 20px;display:block}input[type="submit"],a.fakeinput{background:#8dc63f;color:white;font-weight:bold;padding:.5em 1em;cursor:pointer}.loader-gif[disabled="disabled"],.loader-gif.show-loading{background:url('/static/images/loading.gif') center no-repeat!important}.js-page-wrap{position:relative;min-height:100%}.js-main{width:960px;margin:0 auto;clear:both;padding:0}ul.menu{list-style:none;padding:0;margin:0}.errorlist{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errorlist li{list-style:none;border:0}.errorlist li{list-style:none;border:0}.errorlist+input{border:2px solid #e35351!important}.errorlist+input:focus{border:1px solid #8dc63f!important}.errorlist+textarea{border:2px solid #e35351!important}.errorlist+textarea:focus{border:2px solid #8dc63f!important}.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}#js-header{height:90px}.js-logo{float:left;padding-top:10px}.js-logo a img{border:0}.js-topmenu{float:right;margin-top:25px;font-size:15px}.js-topmenu#authenticated{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;height:36px}.js-topmenu#authenticated:hover,.js-topmenu#authenticated.highlight{background:#d6dde0;cursor:pointer;position:relative}.js-topmenu#authenticated.highlight span#welcome{background-image:url("/static/images/menu_bar_up_arrow_textblue.png")}.js-topmenu ul#user_menu{white-space:nowrap;display:none;z-index:100;position:absolute;top:36px;left:0;padding:0;overflow:visible;margin:0}.js-topmenu ul#user_menu li{border-top:1px solid white;list-style-type:none;float:none;background:#d6dde0;padding:7px 10px}.js-topmenu ul#user_menu li:hover{background:#8dc63f}.js-topmenu ul#user_menu li:hover a{color:white}.js-topmenu ul#user_menu li:hover #i_haz_notifications{border-color:white;background-color:white;color:#3d4e53}.js-topmenu ul#user_menu li a{height:auto;line-height:26.25px}.js-topmenu ul#user_menu li span{margin-right:10px}.js-topmenu ul li{float:left;position:relative;z-index:50}.js-topmenu ul li a{color:#3d4e53;height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.js-topmenu ul li span#welcome{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em;padding:0 10px;margin-right:5px;padding-right:22px;background-image:url("/static/images/menu_bar_down_arrow_textblue.png");background-repeat:no-repeat;background-position:right}.js-topmenu ul li span#welcome img{vertical-align:middle}.js-topmenu ul li img{padding:0;margin:0}.js-topmenu ul li.last{padding-left:20px}.js-topmenu ul li.last a{background:url("/static/images/bg.png") right top no-repeat}.js-topmenu ul li.last a span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8dc63f;margin-right:29px;display:block;padding:0 5px 0 15px;color:white}.js-topmenu ul .unseen_count{border:solid 2px;-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;padding:3px;line-height:16px;width:16px;cursor:pointer;text-align:center}.js-topmenu ul .unseen_count#i_haz_notifications{background-color:#8dc63f;color:white;border-color:white}.js-topmenu ul .unseen_count#no_notifications_for_you{border-color:#edf3f4;background-color:#edf3f4;color:#3d4e53}#i_haz_notifications_badge{-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;font-size:13px;border:solid 2px white;margin-left:-7px;margin-top:-10px;padding:3px;background:#8dc63f;color:white;position:absolute;line-height:normal}form.login label,#login form label{display:block;line-height:18px}form.login input,#login form input{width:90%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:1px solid #d6dde0;height:18px;line-height:18px;margin-bottom:6px}form.login input[type=submit],#login form input[type=submit]{text-decoration:capitalize;width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}form.login input:focus,#login form input:focus{border:solid 1px #8dc63f}form.login input[type="text"],#login form input[type="text"],form.login input[type="password"],#login form input[type="password"]{height:22.75px;line-height:22.75px;margin-bottom:13px;border-width:2px}form.login input[type="submit"],#login form input[type="submit"]{font-size:15px}form.login span.helptext,#login form span.helptext{display:block;margin-top:-11px;font-style:italic;font-size:13px}#lightbox_content .google_signup{padding:14px 0}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}.js-search{float:left;padding-top:25px;margin-left:81px}.js-search input{float:left}.js-search .inputbox{padding:0 0 0 15px;margin:0;border-top:solid 4px #8ac3d7;border-left:solid 4px #8ac3d7;border-bottom:solid 4px #8ac3d7;border-right:0;-moz-border-radius:50px 0 0 50px;-webkit-border-radius:50px 0 0 50px;border-radius:50px 0 0 50px;outline:0;height:28px;line-height:28px;width:156px;float:left;color:#6994a3}.js-search .button{background:url("/static/images/blue-search-button.png") no-repeat;padding:0;margin:0;width:40px;height:36px;display:block;border:0;text-indent:-10000px;cursor:pointer}.js-search-inner{float:right}#locationhash{display:none}#block-intro-text{padding-right:10px}#block-intro-text span.def{font-style:italic}a#readon{background:url("/static/images/learnmore-downarrow.png") right center no-repeat;color:#fff;text-transform:capitalize;display:block;float:right;font-size:13px;font-weight:bold}a#readon.down{background:url("/static/images/learnmore-uparrow.png") right center no-repeat}a#readon span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8ac3d7;margin-right:34px;padding:0 5px 0 20px;height:36px;line-height:36px;display:block}.spread_the_word{height:24px;width:24px;position:top;margin-left:5px}#js-leftcol{float:left;width:235px;margin-bottom:20px}#js-leftcol a{font-weight:normal}#js-leftcol a:hover{text-decoration:underline}#js-leftcol .jsmod-content{border:solid 1px #edf3f4;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px}#js-leftcol ul.level1>li>a,#js-leftcol ul.level1>li>span{border-bottom:1px solid #edf3f4;border-top:1px solid #edf3f4;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:10px}#js-leftcol ul.level2 li{padding:5px 10px}#js-leftcol ul.level2 li a{color:#6994a3;font-size:15px}#js-leftcol ul.level2 li img{vertical-align:middle;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}#js-leftcol ul.level2 li .ungluer-name{height:30px;line-height:30px}#js-topsection{padding:15px 0 0 0;overflow:hidden}.js-topnews{float:left;width:100%}.js-topnews1{background:url("/static/images/header/header-m.png") 0 0 repeat-y}.js-topnews2{background:url("/static/images/header/header-t.png") 0 0 no-repeat}.js-topnews3{background:url("/static/images/header/header-b.png") 0 100% no-repeat;display:block;overflow:hidden;padding:10px}#main-container{margin:15px 0 0 0}#js-maincol-fr{float:right;width:725px}div#content-block{overflow:hidden;background:url("/static/images/bg.png") 100% -223px no-repeat;padding:0 0 0 7px;margin-bottom:20px}div#content-block.jsmodule{background:0}.content-block-heading a.block-link{float:right;padding:15px;font-size:13px;color:#3d4e53;text-decoration:underline;font-weight:normal}div#content-block-content,div#content-block-content-1{width:100%;overflow:hidden;padding-left:10px}div#content-block-content .cols3 .column,div#content-block-content-1 .cols3 .column{width:33.33%;float:left}#footer{background-color:#edf3f4;clear:both;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:15px 0 45px 0;margin-top:15px;overflow:hidden}#footer .column{float:left;width:25%;padding-top:5px}#footer .column ul{padding-top:5px;margin-left:0;padding-left:0}#footer .column li{padding:5px 0;text-transform:none;list-style:none;margin-left:0}#footer .column li a{color:#6994a3;font-size:15px}.pagination{width:100%;text-align:center;margin-top:20px;clear:both;border-top:solid #3d4e53 thin;padding-top:7px}.pagination .endless_page_link{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px}.pagination .endless_page_current{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px;background-color:#edf3f4}a.nounderline{text-decoration:none}.slides_control{height:325px!important}#about_expandable{display:none;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;background:white;z-index:500;top:25%;padding:9px;max-width:90%}#about_expandable .collapser_x{margin-top:-27px;margin-right:-27px}#lightbox_content p,#lightbox_content li{padding:9px 0;font-size:15px;line-height:20px}#lightbox_content p a,#lightbox_content li a{font-size:15px;line-height:20px}#lightbox_content p b,#lightbox_content li b{color:#8dc63f}#lightbox_content p.last,#lightbox_content li.last{border-bottom:solid 2px #d6dde0;margin-bottom:5px}#lightbox_content .right_border{border-right:solid 1px #d6dde0;float:left;padding:9px}#lightbox_content .signuptoday{float:right;margin-top:0;clear:none}#lightbox_content h2+form,#lightbox_content h3+form,#lightbox_content h4+form{margin-top:15px}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-bottom:10px}.nonlightbox .about_page{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;width:75%;margin:10px auto auto auto;padding:9px}.collapser_x{float:right;height:24px;line-height:24px;width:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px;-moz-box-shadow:-1px 1px #3d4e53;-webkit-box-shadow:-1px 1px #3d4e53;box-shadow:-1px 1px #3d4e53;border:solid 3px white;text-align:center;color:white;background:#3d4e53;font-size:17px;z-index:5000;margin-top:-12px;margin-right:-22px}.signuptoday{-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;background-color:#8dc63f;padding:0 15px;height:36px;line-height:36px;float:left;clear:both;margin:10px auto;cursor:pointer;font-style:normal}.signuptoday a{background:url("/static/images/icons/pledgearrow-hover.png") right center no-repeat;padding-right:17px;color:white}.signuptoday a:hover{text-decoration:none}.central{width:480px;margin:0 auto}li.checked{list-style-type:none;background:transparent url(/static/images/checkmark_small.png) no-repeat 0 0;margin-left:-20px;padding-left:20px}.btn_support{margin:10px;width:215px}.btn_support a,.btn_support form input,.btn_support>span{font-size:22px;border:4px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;display:block;text-align:center;padding-top:14.25px;padding-bottom:14.25px;background-color:#8dc63f;color:white!important}.btn_support a span,.btn_support form input span,.btn_support>span span{color:white!important;font-weight:bold;padding-left:0;margin-left:0!important;background:0}.btn_support.create-account span{padding:0;margin:0;background:0}.btn_support a:hover,.btn_support form input:hover{background-color:#7aae34;text-decoration:none}.btn_support a{width:207px}.btn_support form input{width:215px}.btn_support.modify a,.btn_support.modify form input{background-color:#a7c1ca}.btn_support.modify a:hover,.btn_support.modify form input:hover{background-color:#91b1bd}.instructions h4{border-top:solid #d6dde0 1px;border-bottom:solid #d6dde0 1px;padding:.5em 0}.instructions>div{padding-left:1%;padding-right:1%;font-size:15px;line-height:22.5px;width:98%}.instructions>div.active{float:left}.one_click{float:left}.one_click>div{float:left}.one_click>div #kindle a,.one_click>div .kindle a{font-size:15px;padding:9px 0}.one_click>div div{margin:0 10px 0 0}.ebook_download_container{clear:left}.other_instructions_paragraph{display:none}#iOS_app_div,#ios_div{display:none}#kindle_div .yes_js{display:none} \ No newline at end of file +.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}.header-text{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.panelborders{border-width:1px 0;border-style:solid none;border-color:#fff}.roundedspan{border:1px solid #d4d4d4;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;padding:1px;color:#fff;margin:0 8px 0 0;display:inline-block}.roundedspan>span{padding:7px 7px;min-width:15px;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;text-align:center;display:inline-block}.roundedspan>span .hovertext{display:none}.roundedspan>span:hover .hovertext{display:inline}.mediaborder{padding:5px;border:solid 5px #edf3f4}.actionbuttons{width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}.errors{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errors li{list-style:none;border:0}ul.social a:hover{text-decoration:none}ul.social li{padding:5px 0 5px 30px!important;height:28px;line-height:28px!important;margin:0!important;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}ul.social li.facebook{background:url("/static/images/icons/facebook.png") 10px center no-repeat;cursor:pointer}ul.social li.facebook span{padding-left:10px}ul.social li.facebook:hover{background:#8dc63f url("/static/images/icons/facebook-hover.png") 10px center no-repeat}ul.social li.facebook:hover span{color:#fff}ul.social li.twitter{background:url("/static/images/icons/twitter.png") 10px center no-repeat;cursor:pointer}ul.social li.twitter span{padding-left:10px}ul.social li.twitter:hover{background:#8dc63f url("/static/images/icons/twitter-hover.png") 10px center no-repeat}ul.social li.twitter:hover span{color:#fff}ul.social li.email{background:url("/static/images/icons/email.png") 10px center no-repeat;cursor:pointer}ul.social li.email span{padding-left:10px}ul.social li.email:hover{background:#8dc63f url("/static/images/icons/email-hover.png") 10px center no-repeat}ul.social li.email:hover span{color:#fff}ul.social li.embed{background:url("/static/images/icons/embed.png") 10px center no-repeat;cursor:pointer}ul.social li.embed span{padding-left:10px}ul.social li.embed:hover{background:#8dc63f url("/static/images/icons/embed-hover.png") 10px center no-repeat}ul.social li.embed:hover span{color:#fff}.download_container{width:75%;margin:auto}#lightbox_content a{color:#6994a3}#lightbox_content .signuptoday a{color:white}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-top:15px}#lightbox_content h2 a{font-size:18.75px}#lightbox_content .ebook_download a{margin:auto 5px auto 0;font-size:15px}#lightbox_content .ebook_download img{vertical-align:middle}#lightbox_content .logo{font-size:15px}#lightbox_content .logo img{-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;height:50px;width:50px;margin-right:5px}#lightbox_content .one_click,#lightbox_content .ebook_download_container{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;margin-left:-0.25%;padding:.5%;padding-bottom:15px;margin-bottom:5px;width:74%}#lightbox_content .one_click h3,#lightbox_content .ebook_download_container h3{margin-top:5px}#lightbox_content .one_click{border:solid 2px #8dc63f}#lightbox_content .ebook_download_container{border:solid 2px #d6dde0}#lightbox_content a.add-wishlist .on-wishlist,#lightbox_content a.success,a.success:hover{text-decoration:none;color:#3d4e53}#lightbox_content a.success,a.success:hover{cursor:default}#lightbox_content ul{padding-left:50px}#lightbox_content ul li{margin-bottom:4px}.border{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 2px #d6dde0;margin:5px auto;padding-right:5px;padding-left:5px}.sharing{float:right;padding:.5%!important;width:23%!important;min-width:105px}.sharing ul{padding:.5%!important}.sharing .jsmod-title{-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;height:auto}.sharing .jsmod-title span{padding:5%!important;color:white!important;font-style:normal}#widgetcode2{display:none;border:1px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;padding:10px}#widgetcode2 textarea{max-width:90%}.btn_support.kindle{height:40px}.btn_support.kindle a{width:auto;font-size:15px}.preview{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%}.preview a{color:#8dc63f}.launch_top{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;border-color:#8dc63f;margin:10px auto 0 auto;font-size:15px;line-height:22.5px}.launch_top a{color:#8dc63f}.launch_top.pale{border-color:#d6dde0;font-size:13px}.launch_top.alert{border-color:#e35351;font-size:13px}.preview_content{border:solid 3px #e35351;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px;clear:both;padding:5px 10px;font-size:13px;width:90%;width:80%;margin:10px auto}.preview_content a{color:#8dc63f}.utilityheaders{text-transform:uppercase;color:#3d4e53;font-size:15px;display:block}html,body{height:100%}body{background:url("/static/images/bg-body.png") 0 0 repeat-x;padding:0 0 20px 0;margin:0;font-size:13px;line-height:16.900000000000002px;font-family:"Lucida Grande","Lucida Sans Unicode","Lucida Sans",Arial,Helvetica,sans-serif;color:#3d4e53}#feedback{position:fixed;bottom:10%;right:0;z-index:500}#feedback p{writing-mode:tb-rl;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-o-transform:rotate(90deg);filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1);white-space:nowrap;display:block;bottom:0;width:160px;height:32px;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px;background:#8dc63f;margin-bottom:0;text-align:center;margin-right:-67px;line-height:normal}#feedback p a{color:white;font-size:24px;font-weight:normal}#feedback p a:hover{color:#3d4e53}a{font-weight:bold;font-size:inherit;text-decoration:none;cursor:pointer;color:#6994a3}a:hover{text-decoration:underline}h1{font-size:22.5px}h2{font-size:18.75px}h3{font-size:17.549999999999997px}h4{font-size:15px}img{border:0}img.user-avatar{float:left;margin-right:10px;-moz-border-radius:7px;-webkit-border-radius:7px;border-radius:7px}input,textarea,a.fakeinput{border:2px solid #d6dde0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}input:focus,textarea:focus,a.fakeinput:focus{border:2px solid #8dc63f;outline:0}a.fakeinput:hover{text-decoration:none}.js-search input{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}h2.content-heading{padding:15px;margin:0;font-size:19px;font-weight:normal;color:#3d4e53;float:left;width:50%}h2.content-heading span{font-style:italic}h3.jsmod-title{-moz-border-radius:8px 8px 0 0;-webkit-border-radius:8px 8px 0 0;border-radius:8px 8px 0 0;background:#a7c1ca;padding:0;margin:0;height:73px}h3.jsmod-title span{font-size:19px;font-style:italic;color:#3d4e53;padding:26px 40px 27px 20px;display:block}input[type="submit"],a.fakeinput{background:#8dc63f;color:white;font-weight:bold;padding:.5em 1em;cursor:pointer}.loader-gif[disabled="disabled"],.loader-gif.show-loading{background:url('/static/images/loading.gif') center no-repeat!important}.js-page-wrap{position:relative;min-height:100%}.js-main{width:960px;margin:0 auto;clear:both;padding:0}ul.menu{list-style:none;padding:0;margin:0}.errorlist{-moz-border-radius:16px;-webkit-border-radius:16px;border-radius:16px;border:solid #e35351 3px;clear:both;width:90%;height:auto;line-height:16px;padding:7px 0;font-weight:bold;font-size:13px;text-align:center}.errorlist li{list-style:none;border:0}.errorlist li{list-style:none;border:0}.errorlist+input{border:2px solid #e35351!important}.errorlist+input:focus{border:1px solid #8dc63f!important}.errorlist+textarea{border:2px solid #e35351!important}.errorlist+textarea:focus{border:2px solid #8dc63f!important}.clearfix:after{content:".";display:block;height:0;clear:both;visibility:hidden}#js-header{height:90px}.js-logo{float:left;padding-top:10px}.js-logo a img{border:0}.js-topmenu{float:right;margin-top:25px;font-size:15px}.js-topmenu#authenticated{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;height:36px}.js-topmenu#authenticated:hover,.js-topmenu#authenticated.highlight{background:#d6dde0;cursor:pointer;position:relative}.js-topmenu#authenticated.highlight span#welcome{background-image:url("/static/images/menu_bar_up_arrow_textblue.png")}.js-topmenu ul#user_menu{white-space:nowrap;display:none;z-index:100;position:absolute;top:36px;left:0;padding:0;overflow:visible;margin:0}.js-topmenu ul#user_menu li{border-top:1px solid white;list-style-type:none;float:none;background:#d6dde0;padding:7px 10px}.js-topmenu ul#user_menu li:hover{background:#8dc63f}.js-topmenu ul#user_menu li:hover a{color:white}.js-topmenu ul#user_menu li:hover #i_haz_notifications{border-color:white;background-color:white;color:#3d4e53}.js-topmenu ul#user_menu li a{height:auto;line-height:26.25px}.js-topmenu ul#user_menu li span{margin-right:10px}.js-topmenu ul li{float:left;position:relative;z-index:50}.js-topmenu ul li a{color:#3d4e53;height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em}.js-topmenu ul li span#welcome{height:36px;line-height:36px;display:block;text-decoration:none;font-weight:bold;letter-spacing:-0.05em;padding:0 10px;margin-right:5px;padding-right:22px;background-image:url("/static/images/menu_bar_down_arrow_textblue.png");background-repeat:no-repeat;background-position:right}.js-topmenu ul li span#welcome img{vertical-align:middle}.js-topmenu ul li img{padding:0;margin:0}.js-topmenu ul li.last{padding-left:20px}.js-topmenu ul li.last a{background:url("/static/images/bg.png") right top no-repeat}.js-topmenu ul li.last a span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8dc63f;margin-right:29px;display:block;padding:0 5px 0 15px;color:white}.js-topmenu ul .unseen_count{border:solid 2px;-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;padding:3px;line-height:16px;width:16px;cursor:pointer;text-align:center}.js-topmenu ul .unseen_count#i_haz_notifications{background-color:#8dc63f;color:white;border-color:white}.js-topmenu ul .unseen_count#no_notifications_for_you{border-color:#edf3f4;background-color:#edf3f4;color:#3d4e53}#i_haz_notifications_badge{-moz-border-radius:700px;-webkit-border-radius:700px;border-radius:700px;font-size:13px;border:solid 2px white;margin-left:-7px;margin-top:-10px;padding:3px;background:#8dc63f;color:white;position:absolute;line-height:normal}form.login label,#login form label{display:block;line-height:18px}form.login input,#login form input{width:90%;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:1px solid #d6dde0;height:18px;line-height:18px;margin-bottom:6px}form.login input[type=submit],#login form input[type=submit]{text-decoration:capitalize;width:auto;height:36px;line-height:36px;background:#8dc63f;-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;color:white;cursor:pointer;font-size:13px;font-weight:bold;padding:0 15px;border:0;margin:5px 0}form.login input:focus,#login form input:focus{border:solid 1px #8dc63f}form.login input[type="text"],#login form input[type="text"],form.login input[type="password"],#login form input[type="password"]{height:22.75px;line-height:22.75px;margin-bottom:13px;border-width:2px}form.login input[type="submit"],#login form input[type="submit"]{font-size:15px}form.login span.helptext,#login form span.helptext{display:block;margin-top:-11px;font-style:italic;font-size:13px}#lightbox_content .google_signup{padding:14px 0}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}#lightbox_content .google_signup div{height:36px;line-height:36px;float:left;padding-left:5px;font-size:15px;display:inline-block}#lightbox_content .google_signup img{float:left;height:36px;width:36px}.js-search{float:left;padding-top:25px;margin-left:81px}.js-search input{float:left}.js-search .inputbox{padding:0 0 0 15px;margin:0;border-top:solid 4px #8ac3d7;border-left:solid 4px #8ac3d7;border-bottom:solid 4px #8ac3d7;border-right:0;-moz-border-radius:50px 0 0 50px;-webkit-border-radius:50px 0 0 50px;border-radius:50px 0 0 50px;outline:0;height:28px;line-height:28px;width:156px;float:left;color:#6994a3}.js-search .button{background:url("/static/images/blue-search-button.png") no-repeat;padding:0;margin:0;width:40px;height:36px;display:block;border:0;text-indent:-10000px;cursor:pointer}.js-search-inner{float:right}#locationhash{display:none}#block-intro-text{padding-right:10px}#block-intro-text span.def{font-style:italic}a#readon{background:url("/static/images/learnmore-downarrow.png") right center no-repeat;color:#fff;text-transform:capitalize;display:block;float:right;font-size:13px;font-weight:bold}a#readon.down{background:url("/static/images/learnmore-uparrow.png") right center no-repeat}a#readon span{-moz-border-radius:32px 0 0 32px;-webkit-border-radius:32px 0 0 32px;border-radius:32px 0 0 32px;background-color:#8ac3d7;margin-right:34px;padding:0 5px 0 20px;height:36px;line-height:36px;display:block}.spread_the_word{height:24px;width:24px;position:top;margin-left:5px}#js-leftcol{float:left;width:235px;margin-bottom:20px}#js-leftcol a{font-weight:normal}#js-leftcol a:hover{text-decoration:underline}#js-leftcol .jsmod-content{border:solid 1px #edf3f4;-moz-border-radius:0 0 10px 10px;-webkit-border-radius:0 0 10px 10px;border-radius:0 0 10px 10px}#js-leftcol ul.level1>li>a,#js-leftcol ul.level1>li>span{border-bottom:1px solid #edf3f4;border-top:1px solid #edf3f4;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:10px}#js-leftcol ul.level2 li{padding:5px 10px}#js-leftcol ul.level2 li a{color:#6994a3;font-size:15px}#js-leftcol ul.level2 li img{vertical-align:middle;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}#js-leftcol ul.level2 li .ungluer-name{height:30px;line-height:30px}#js-topsection{padding:15px 0 0 0;overflow:hidden}.js-topnews{float:left;width:100%}.js-topnews1{background:url("/static/images/header/header-m.png") 0 0 repeat-y}.js-topnews2{background:url("/static/images/header/header-t.png") 0 0 no-repeat}.js-topnews3{background:url("/static/images/header/header-b.png") 0 100% no-repeat;display:block;overflow:hidden;padding:10px}#main-container{margin:15px 0 0 0}#js-maincol-fr{float:right;width:725px}div#content-block{overflow:hidden;background:url("/static/images/bg.png") 100% -223px no-repeat;padding:0 0 0 7px;margin-bottom:20px}div#content-block.jsmodule{background:0}.content-block-heading a.block-link{float:right;padding:15px;font-size:13px;color:#3d4e53;text-decoration:underline;font-weight:normal}div#content-block-content,div#content-block-content-1{width:100%;overflow:hidden;padding-left:10px}div#content-block-content .cols3 .column,div#content-block-content-1 .cols3 .column{width:33.33%;float:left}#footer{background-color:#edf3f4;clear:both;text-transform:uppercase;color:#3d4e53;font-size:15px;display:block;padding:15px 0 45px 0;margin-top:15px;overflow:hidden}#footer .column{float:left;width:25%;padding-top:5px}#footer .column ul{padding-top:5px;margin-left:0;padding-left:0}#footer .column li{padding:5px 0;text-transform:none;list-style:none;margin-left:0}#footer .column li a{color:#6994a3;font-size:15px}.pagination{width:100%;text-align:center;margin-top:20px;clear:both;border-top:solid #3d4e53 thin;padding-top:7px}.pagination .endless_page_link{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px}.pagination .endless_page_current{font-size:13px;border:thin #3d4e53 solid;font-weight:normal;margin:5px;padding:1px;background-color:#edf3f4}a.nounderline{text-decoration:none}.slides_control{height:325px!important}#about_expandable{display:none;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;background:white;z-index:500;top:25%;padding:9px;max-width:90%}#about_expandable .collapser_x{margin-top:-27px;margin-right:-27px}#lightbox_content p,#lightbox_content li{padding:9px 0;font-size:15px;line-height:20px}#lightbox_content p a,#lightbox_content li a{font-size:15px;line-height:20px}#lightbox_content p b,#lightbox_content li b{color:#8dc63f}#lightbox_content p.last,#lightbox_content li.last{border-bottom:solid 2px #d6dde0;margin-bottom:5px}#lightbox_content .right_border{border-right:solid 1px #d6dde0;float:left;padding:9px}#lightbox_content .signuptoday{float:right;margin-top:0;clear:none}#lightbox_content h2+form,#lightbox_content h3+form,#lightbox_content h4+form{margin-top:15px}#lightbox_content h2,#lightbox_content h3,#lightbox_content h4{margin-bottom:10px}.nonlightbox .about_page{-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px;border:solid 5px #d6dde0;width:75%;margin:10px auto auto auto;padding:9px}.collapser_x{float:right;height:24px;line-height:24px;width:24px;-moz-border-radius:24px;-webkit-border-radius:24px;border-radius:24px;-moz-box-shadow:-1px 1px #3d4e53;-webkit-box-shadow:-1px 1px #3d4e53;box-shadow:-1px 1px #3d4e53;border:solid 3px white;text-align:center;color:white;background:#3d4e53;font-size:17px;z-index:5000;margin-top:-12px;margin-right:-22px}.signuptoday{-moz-border-radius:32px;-webkit-border-radius:32px;border-radius:32px;background-color:#8dc63f;padding:0 15px;height:36px;line-height:36px;float:left;clear:both;margin:10px auto;cursor:pointer;font-style:normal}.signuptoday a{background:url("/static/images/icons/pledgearrow-hover.png") right center no-repeat;padding-right:17px;color:white}.signuptoday a:hover{text-decoration:none}.central{width:480px;margin:0 auto}li.checked{list-style-type:none;background:transparent url(/static/images/checkmark_small.png) no-repeat 0 0;margin-left:-20px;padding-left:20px}.btn_support{margin:10px;width:215px}.btn_support a,.btn_support form input,.btn_support>span{font-size:22px;border:4px solid #d6dde0;-moz-border-radius:10px;-webkit-border-radius:10px;border-radius:10px;display:block;text-align:center;padding-top:14.25px;padding-bottom:14.25px;background-color:#8dc63f;color:white!important}.btn_support a span,.btn_support form input span,.btn_support>span span{color:white!important;font-weight:bold;padding-left:0;margin-left:0!important;background:0}.btn_support.create-account span{padding:0;margin:0;background:0}.btn_support a:hover,.btn_support form input:hover{background-color:#7aae34;text-decoration:none}.btn_support a{width:207px}.btn_support form input{width:215px}.btn_support.modify a,.btn_support.modify form input{background-color:#a7c1ca}.btn_support.modify a:hover,.btn_support.modify form input:hover{background-color:#91b1bd}.instructions h4{border-top:solid #d6dde0 1px;border-bottom:solid #d6dde0 1px;padding:.5em 0}.instructions>div{padding-left:1%;padding-right:1%;font-size:15px;line-height:22.5px;width:98%}.instructions>div.active{float:left}.one_click{float:left}.one_click>div{float:left}.one_click>div #kindle a,.one_click>div .kindle a{font-size:15px;padding:9px 0}.one_click>div div{margin:0 10px 0 0}.ebook_download_container{clear:left}.other_instructions_paragraph{display:none}#iOS_app_div,#ios_div{display:none}.yes_js{display:none} \ No newline at end of file diff --git a/static/js/download_page.js b/static/js/download_page.js index 64e35e7a..83622063 100644 --- a/static/js/download_page.js +++ b/static/js/download_page.js @@ -29,6 +29,7 @@ $j(document).on('click', '#kindle.authenticated', function() { $j.post('/send_to_kindle/' + kindle_ebook_id + '/1/', function(data) { myDiv.removeClass('btn_support'); myDiv.html(data); + myDiv.removeAttr('id'); return false; }); }); \ No newline at end of file diff --git a/static/less/enhanced_download.less b/static/less/enhanced_download.less index 2d207b21..8e1032f0 100644 --- a/static/less/enhanced_download.less +++ b/static/less/enhanced_download.less @@ -1,4 +1,4 @@ -.buttons, #kindle_div .yes_js, .other_instructions_paragraph { +.buttons, .yes_js, .other_instructions_paragraph { display: inherit; } @@ -6,7 +6,7 @@ display: none; } -#kindle_div .no_js { +.no_js { display: none !important; } diff --git a/static/less/enhanced_download_ie.less b/static/less/enhanced_download_ie.less index b0decbfb..60e2a799 100644 --- a/static/less/enhanced_download_ie.less +++ b/static/less/enhanced_download_ie.less @@ -1,4 +1,4 @@ -#kindle_div .yes_js, .other_instructions_paragraph { +.yes_js, .other_instructions_paragraph { display: inherit; } @@ -6,7 +6,7 @@ display: none; } -#kindle_div .no_js { +.no_js { display: none !important; } diff --git a/static/less/sitewide4.less b/static/less/sitewide4.less index 46268a60..2a037458 100644 --- a/static/less/sitewide4.less +++ b/static/less/sitewide4.less @@ -954,6 +954,6 @@ li.checked { display: none; } -#kindle_div .yes_js { +.yes_js { display: none; } \ No newline at end of file From 02899d332fa843cf861681c520aa9609d638e38c Mon Sep 17 00:00:00 2001 From: Andromeda Yelton Date: Wed, 26 Jun 2013 09:46:47 -0400 Subject: [PATCH 28/32] can has readmill logo --- static/images/readmill_logo.jpg | Bin 0 -> 6007 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 static/images/readmill_logo.jpg diff --git a/static/images/readmill_logo.jpg b/static/images/readmill_logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..77d8eb9ef6ed12a6adbff99578461ec907974d11 GIT binary patch literal 6007 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 c2KDrBg(3YgrWQC_TQ9ggorwC7xAWw`03rz0!T Date: Wed, 26 Jun 2013 09:46:56 -0400 Subject: [PATCH 29/32] pop kindle email from session after use --- frontend/views.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/views.py b/frontend/views.py index 02f53fdb..c06fd9f1 100755 --- a/frontend/views.py +++ b/frontend/views.py @@ -162,6 +162,7 @@ def process_kindle_email(request): if user.is_authenticated() and request.session.has_key('kindle_email'): user.profile.kindle_email = request.session['kindle_email'] user.profile.save() + request.session.pop('kindle_email') def next(request): if request.COOKIES.has_key('next'): @@ -2519,6 +2520,7 @@ def kindle_config(request, kindle_ebook_id=None): if form.is_valid(): request.user.profile.kindle_email = form.cleaned_data['kindle_email'] request.user.profile.save() + request.session.pop('kindle_email') template = "kindle_change_successful.html" else: form = KindleEmailForm() From b063fe6c3ff87a0970426b724a6a34750c85d01f Mon Sep 17 00:00:00 2001 From: Andromeda Yelton Date: Wed, 26 Jun 2013 11:25:35 -0400 Subject: [PATCH 30/32] don't fail for spurious reason --- core/tests.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/core/tests.py b/core/tests.py index 5540d33a..a6d8617b 100755 --- a/core/tests.py +++ b/core/tests.py @@ -697,7 +697,12 @@ class DownloadPageTest(TestCase): eb2.save() anon_client = Client() - response = anon_client.get("/work/%s/download/" % w.id, follow=True) + try: + response = anon_client.get("/work/%s/download/" % w.id, follow=True) + except KeyError: + # user agent testing in views.download fails with anon client, + # but isn't relevant to this bit of functionality + pass self.assertContains(response, "/download_ebook/%s/"% eb1.id, count=3) # no extra now, readmill not for google books? self.assertContains(response, "/download_ebook/%s/"% eb2.id, count=3) From f2f02237a8b6f4cebd8458af2c06fa97cb48beea Mon Sep 17 00:00:00 2001 From: eric Date: Wed, 26 Jun 2013 14:36:04 -0400 Subject: [PATCH 31/32] fix KeyError at source, not in test --- core/tests.py | 11 +++-------- frontend/views.py | 2 +- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/core/tests.py b/core/tests.py index a6d8617b..e15fbaa4 100755 --- a/core/tests.py +++ b/core/tests.py @@ -697,14 +697,9 @@ class DownloadPageTest(TestCase): eb2.save() anon_client = Client() - try: - response = anon_client.get("/work/%s/download/" % w.id, follow=True) - except KeyError: - # user agent testing in views.download fails with anon client, - # but isn't relevant to this bit of functionality - pass - self.assertContains(response, "/download_ebook/%s/"% eb1.id, count=3) # no extra now, readmill not for google books? - self.assertContains(response, "/download_ebook/%s/"% eb2.id, count=3) + response = anon_client.get("/work/%s/download/" % w.id, follow=True) + self.assertContains(response, "/download_ebook/%s/"% eb1.id, count=9) + self.assertContains(response, "/download_ebook/%s/"% eb2.id, count=4) class LocaldatetimeTest(TestCase): diff --git a/frontend/views.py b/frontend/views.py index c06fd9f1..3cca6b75 100755 --- a/frontend/views.py +++ b/frontend/views.py @@ -2428,7 +2428,7 @@ def download(request, work_id): readmill_epub_url = readmill_epub_ebook.url except: readmill_epub_url = None - agent = request.META['HTTP_USER_AGENT'] + agent = request.META.get('HTTP_USER_AGENT','') iOS = 'iPad' in agent or 'iPhone' in agent or 'iPod' in agent iOS_app = iOS and not 'Safari' in agent android = 'Android' in agent From 51c86867a0f13c77af71bc2f9c5940f6049cca81 Mon Sep 17 00:00:00 2001 From: eric Date: Thu, 27 Jun 2013 10:31:01 -0400 Subject: [PATCH 32/32] don't pop a param that isn't there --- frontend/views.py | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/views.py b/frontend/views.py index 3cca6b75..0308f3ad 100755 --- a/frontend/views.py +++ b/frontend/views.py @@ -2520,7 +2520,6 @@ def kindle_config(request, kindle_ebook_id=None): if form.is_valid(): request.user.profile.kindle_email = form.cleaned_data['kindle_email'] request.user.profile.save() - request.session.pop('kindle_email') template = "kindle_change_successful.html" else: form = KindleEmailForm()