Merge branch 'master' of github.com:Gluejar/regluit into payment

pull/1/head
Raymond Yee 2012-03-07 14:18:08 -08:00
commit dcf94fd3ff
32 changed files with 939 additions and 352 deletions

View File

@ -89,7 +89,7 @@ TBA
There's a <a href="/accounts/password/reset/">forgot your password</a> link at the bottom of the <a href="/accounts/login/">sign in page</a>. Enter the email address you use for your account and we'll send you an email to help you reset your password.
<dt>I never received a confirmation email after I signed up. What do I do?</dt>
<dt>I never received an activation email after I signed up, or my activation email isn't working. What do I do?</dt>
<dd>Check your spam folder for mail from accounts@gluejar.com. If that doesn't work, contact us at <a href="mailto:support@gluejar.com">support@gluejar.com</a>.</dd>

View File

@ -7,6 +7,7 @@
{% block extra_css %}
<link type="text/css" rel="stylesheet" href="/static/css/landingpage.css" />
<link type="text/css" rel="stylesheet" href="/static/css/searchandbrowse.css" />
<link type="text/css" rel="stylesheet" href="/static/css/book_panel.css" />
{% endblock %}
@ -26,23 +27,7 @@
<script type="text/javascript" src="/static/js/highlight_signup.js"></script>
<script src="/static/js/slides.min.jquery.js"></script>
<script>
var $j = jQuery.noConflict();
$j(function(){
$j('#js-slideshow').slides({
preload: true,
preloadImage: '/static/images/landingpage/loading.gif',
hoverPause: true,
generateNextPrev: true,
next: 'next',
prev: 'prev',
pagination: true,
generatePagination: false,
slideSpeed: 600,
autoHeight: true
});
});
</script>
<script src="/static/js/slideshow.js"></script>
<script type="text/javascript" src="/static/js/watermark_init.js"></script>
<script type="text/javascript" src="/static/js/watermark_change.js"></script>

View File

@ -29,6 +29,10 @@
<a name="latest"></a><h2>Latest Press</h2>
<div class="pressarticles">
<div>
<a href="http://pubwest.org/endsheet-2/a-new-approach-for-backlist-titles/">A New Approach for Backlist Titles</a><br />
PubWest Endsheet - Spring 2012
</div>
<div>
<a href="http://americanlibrariesmagazine.org/solutions-and-services/unglueit">Solutions and Services: Unglue.It</a><br />
American Libraries - February 14, 2012
@ -38,10 +42,6 @@
<a href="http://www.teleread.com/copy-right/web-site-hopes-to-unglue-e-book-versions-of-copyrighted-books-thorugh-crowdfunding/">Web site hopes to unglue e-book versions of copyrighted books through crowdfunding</a><br />
TeleRead - January 31, 2012
</div>
<div>
<a href="http://paidcontent.org/article/419-the-unglued-model-crowdfunding-to-make-e-books-free/">A Crowdfunded Approach To Setting E-Books Free</a><br />
paidContent - January 30, 2012
</div>
</div>
<a name="overview"></a><h2>Overview</h2>
@ -69,11 +69,15 @@ For more background, read our president Eric Hellman's thoughts on <a href="http
<dd>Please consult our <a href="/faq/">FAQ</a> (sidebar at left); join the site and explore its features for yourself; or email us, <a href="press@gluejar.com">press@gluejar.com</a>.</dd>
<a name="press"></a><h2>Press Coverage</h2>
<div class="pressarticles">
<div>
<a href="http://pubwest.org/endsheet-2/a-new-approach-for-backlist-titles/">A New Approach for Backlist Titles</a><br />
PubWest Endsheet - Spring 2012
</div>
<div>
<a href="http://americanlibrariesmagazine.org/solutions-and-services/unglueit">Solutions and Services: Unglue.It</a><br />
American Libraries - February 14, 2012
</div>
<div class="pressarticles">
<div>
<a href="http://www.teleread.com/copy-right/web-site-hopes-to-unglue-e-book-versions-of-copyrighted-books-thorugh-crowdfunding/">Web site hopes to unglue e-book versions of copyrighted books through crowdfunding</a><br />
TeleRead - January 31, 2012

View File

@ -10,7 +10,7 @@
{% include "login_form.html" %}
<br />
<a href="{% url auth_password_reset %}">Forgot</a> your password? <a href="{% url registration_register %}">Need an account</a>?
<a href="{% url auth_password_reset %}">Forgot</a> your password? <a href="/faq/basics/account">Trouble</a> logging in? <a href="{% url registration_register %}">Need an account</a>?
<br /><br />
<div class="google_signup">

View File

@ -5,6 +5,7 @@
{% block title %} &#8212; {{ supporter.username }}{% endblock %}
{% block extra_css %}
<link type="text/css" rel="stylesheet" href="/static/css/supporter_layout.css" />
<link type="text/css" rel="stylesheet" href="/static/css/searchandbrowse.css" />
<link type="text/css" rel="stylesheet" href="/static/css/book_list.css" />
<link type="text/css" rel="stylesheet" href="/static/css/book_panel.css" />
{% endblock %}
@ -14,11 +15,40 @@
<script type="text/javascript" src={{ jquery_ui_home }}></script>
<script type="text/javascript" src="/static/js/greenpanel.js"></script>
<script type="text/javascript" src="/static/js/import_books.js"></script>
<script type="text/javascript" src="/static/js/counter.js"></script>
{% ifequal supporter request.user %}
<!-- we only need to be able to toggle the profile edit area in this case -->
<script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j('#user-block-hide').hide();
$j('#user-block1 span').click(function() {
$j(this).toggleClass("active");
$j("#user-block-hide").slideToggle(300);
});
});
</script>
{% endifequal %}
{% if works %}
<!-- when the user's wishlist is empty, views.py gives us works for a slideshow -->
<script src="/static/js/slides.min.jquery.js"></script>
<script src="/static/js/slideshow.js"></script>
<!-- toggle to panelview instead of listview default so slideshow will look right -->
<script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function($) {
$('.listview').addClass("panelview").removeClass("listview");
});
</script>
{% else %}
<!-- we only need these when there's stuff on the user's wishlist -->
<script type="text/javascript" src="/static/js/toggle.js"></script>
<script type="text/javascript" src="/static/js/tabs.js"></script>
<script type="text/javascript" src="/static/js/import_books.js"></script>
<script type="text/javascript" src="/static/js/counter.js"></script>
{% endif %}
{% endblock %}
{% block extra_js %}
@ -56,7 +86,7 @@ there's no tab for seeing ALL my books, only the filters! huh.
{% endcomment %}
{% block topsection %}
<div id="locationhash">{{ activetab }}</div>
<div id="js-topsection">
<div class="js-main">
<div class="js-topnews">
@ -236,7 +266,11 @@ there's no tab for seeing ALL my books, only the filters! huh.
<li class="tabs2"><a href="#">Active</a></li>
<li class="tabs3"><a href="#">Wishlisted</a></li>
</ul>
{% if not works %}
{% comment %}
don't let people toggle views if we're doing the slideshow -- it'll look weird
{% endcomment %}
<ul class="book-list-view">
<li>View As:</li>
<li class="view-list">
@ -250,14 +284,54 @@ there's no tab for seeing ALL my books, only the filters! huh.
</a>
</li>
</ul>
{% endif %}
</div>
<div id="content-block-content">
{% ifequal wishlist.works.all.count 0 %}
{% ifequal request.user supporter %}
<div class="empty-wishlist">
Your wishlist is currently empty.<br /><br />
Why not <span class="bounce-search">find</span> your favorite books, and add them to your Wishlist?<br /><br />
We'd also love to hear your <a href="/feedback">feedback</a>.
<div>You haven't wishlisted anything yet. Can we help?<br /><br /></div>
<div id="js-slide">
<div class="js-main">
<div class="jsmodule">
<h3><span>{% if is_preview %}Most wishlisted{% else %}Top ungluing campaigns{% endif %}</span></h3>
<div class="jsmod-content">
<div id="js-slideshow">
<div class="slides_container">
<div class="slide-page slide-page1">
{% for work in works %}
<div class="spacer">
{% include "book_panel.html" %}
</div>
{% endfor %}
</div>
<div class="slide-page slide-page2">
{% for work in works2 %}
<div class="spacer">
{% include "book_panel.html" %}
</div>
{% endfor %}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div id="js-maincontainer-bot-block">
<div id="js-search">
<label>What book would you give to the world? </label>
<form action="{% url search %}" method="get">
<input type="text" id="watermark" onfocus="imgfocus()" onblur="imgblur(0)" size="25" class="inputbox" name="q" value="{{ q }}">
<input type="submit" class="greenbutton" value="Search">
</form>
</div>
</div>
<br /><br /><hr />We'd also love to hear your <a href="/feedback">feedback</a>.
</div>
{% else %}
<div class="empty-wishlist">
@ -275,7 +349,6 @@ there's no tab for seeing ALL my books, only the filters! huh.
{% endwith %}{% endwith %}{% endwith %}
</div>
{% endfor %}
<br>
<div class="pagination content-block-heading tabs-1">
{% get_pages %}
{% for page in pages %}
@ -293,7 +366,6 @@ there's no tab for seeing ALL my books, only the filters! huh.
{% endwith %}{% endwith %}{% endwith %}
</div>
{% endfor %}
<br>
<div class="pagination content-block-heading tabs-2">
{% get_pages %}
{% for page in pages %}
@ -311,7 +383,6 @@ there's no tab for seeing ALL my books, only the filters! huh.
{% endwith %}{% endwith %}{% endwith %}
</div>
{% endfor %}
<br>
<div class="pagination content-block-heading tabs-3">
{% get_pages %}
{% for page in pages %}

View File

@ -8,9 +8,6 @@
<link type="text/css" rel="stylesheet" href="/static/css/book_panel.css" />
{% endblock %}
{% block extra_head %}
<script>
location.hash = "#1";
</script>
<script type="text/javascript" src="/static/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/static/js/wishlist.js"></script>
<script type="text/javascript" src={{ jquery_ui_home }}></script>
@ -19,7 +16,7 @@ location.hash = "#1";
<script type="text/javascript" src="/static/js/tabs.js"></script>
{% endblock %}
{% block topsection %}
<div id="locationhash">{{ activetab }}</div>
<div id="js-topsection">
<div class="js-main">
<div class="js-topnews">
@ -95,7 +92,7 @@ location.hash = "#1";
<div class="pagination content-block-heading tabs-1">
{% get_pages %}
{% for page in pages %}
<a href="{{ page.path }}#1">{{ page.number }}</a>
<a href="{{ page.path }}#1" class="endless_page_link">{{ page.number }}</a>
{% endfor %}
</div>
{% endifequal %}

View File

@ -15,18 +15,29 @@
<script type="text/javascript" src="/static/js/counter.js"></script>
<script>
jQuery(document).ready(function(){
jQuery('#embed').click(function(){
jQuery('div#widgetcode').toggle();
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j('#embed').click(function(){
$j('div#widgetcode').toggle();
});
jQuery('.show_more_edition').click(function(){
jQuery(this).html('less...');
jQuery(this).next().toggle();
$j('.show_more_edition').click(function(){
$j(this).html('less...');
$j(this).next().toggle();
});
});
</script>
<script>
var $j = jQuery.noConflict();
$j(document).ready(function(){
var img = $j('#book-detail-img');
var googimg = $j('#find-google img');
img.mouseover(function(){
googimg.css({"background": "#8dc63f"}).animate(
{backgroundColor: "white"}, 1500
);
});
});
</script>
{% endblock %}
@ -77,8 +88,8 @@ jQuery(document).ready(function(){
<div class="js-maincol-inner">
<div id="content-block">
<div class="book-detail">
<div class="book-detail-img"><a href="{% url work_openlibrary work.id %}">
<img src="{{ work.cover_image_thumbnail }}" alt="{{ work.title }}" title="{{ work.title }}" width="131" height="192" /></a>
<div id="book-detail-img"><a href="{{ work.googlebooks_url }}">
<img src="{{ work.cover_image_thumbnail }}" alt="Find {{ work.title }} at Google Books" title="Find {{ work.title }} at Google Books" width="131" height="192" /></a>
</div>
<div class="book-detail-info">
<div class="layout">
@ -100,7 +111,7 @@ jQuery(document).ready(function(){
<div class="find-book">
<label>Find it:</label>
<div class="find-link">
<a class="find-google" href="{{ work.googlebooks_url }}"><img src="/static/images/supporter_icons/googlebooks_square.png" align="" title="Find on Google Books" /></a>
<a id="find-google" href="{{ work.googlebooks_url }}"><img src="/static/images/supporter_icons/googlebooks_square.png" align="" title="Find on Google Books" /></a>
<a rel="nofollow" class="find-openlibrary" href="{% url work_openlibrary work.id %}"><img src="/static/images/supporter_icons/openlibrary_square.png" title="Find on OpenLibrary"></a>
{% if not request.user.is_anonymous %}
{% if request.user.profile.goodreads_user_link %}
@ -197,6 +208,7 @@ jQuery(document).ready(function(){
</div>
</div>
<div id="tabs-2" class="tabs {% if activetab == '2' %}active{% endif %}">
<h3>Why unglue this? Have your say.</h3>
<div class="tabs-content">
{% render_comment_list for work %}
{% if user.is_authenticated %}
@ -298,7 +310,7 @@ jQuery(document).ready(function(){
<a href="{{ebook.url}}">{{ ebook.format }}</a> {{ebook.rights}} at {{ebook.provider}}<br />
{% endfor %}
{% endif %}
<h5>Add an eBook for this Edition</h5>
<h5>Add an eBook for this Edition:</h5>
<span>If you know that this edition is available as a public domain or Creative Commons ebook, you can enter the link here and "unglue" it. Right now, we're only accepting URLs that point to Internet Archive, Wikisources, Hathitrust, Project Gutenberg, or Google Books.</span>
<form method="POST" action="#edition_{{edition.id}}">
{% csrf_token %}{{ edition.ebook_form.edition }}{{ edition.ebook_form.user }}{{ edition.ebook_form.provider }}

View File

@ -17,7 +17,7 @@
<script type="text/javascript" src="/static/js/tabs.js"></script>
{% endblock %}
{% block topsection %}
<div id="locationhash">{{ activetab }}</div>
<div id="js-topsection">
<div class="js-main">
<div class="js-topnews">

View File

@ -82,7 +82,6 @@ def home(request):
if j == count:
j = 0
events = models.Wishes.objects.order_by('-created')[0:2]
activetab = "2"
return render(request, 'home.html', {'suppress_search_box': True, 'works': works, 'works2': works2, 'events': events})
def stub(request):
@ -240,6 +239,8 @@ class WorkListView(ListView):
context['works_active'] = qs.exclude(editions__ebooks__isnull=False).filter(Q(campaigns__status='ACTIVE') | Q(campaigns__status='SUCCESSFUL')).distinct().order_by('-campaigns__status', 'campaigns__deadline')
context['works_wished'] = qs.exclude(editions__ebooks__isnull=False).exclude(campaigns__status='ACTIVE').exclude(campaigns__status='SUCCESSFUL').distinct().order_by('-num_wishes')
context['activetab'] = "#3"
counts={}
counts['unglued'] = context['works_unglued'].count()
counts['unglueing'] = context['works_active'].count()
@ -270,6 +271,7 @@ class UngluedListView(ListView):
context['counts'] = self.work_set_counts(qs)
context['ungluers'] = userlists.work_list_users(qs,5)
context['facet'] =self.kwargs['facet']
context['activetab'] = "#1"
return context
@ -742,23 +744,55 @@ def campaign_admin(request):
def supporter(request, supporter_username, template_name):
supporter = get_object_or_404(User, username=supporter_username)
wishlist = supporter.wishlist
works = []
works2 = []
works_unglued = []
works_active = []
works_wished = []
is_preview = settings.IS_PREVIEW
# querysets for tabs
# unglued tab is anything with an existing ebook
## .order_by() may clash with .distinct() and this should be fixed
works_unglued = wishlist.works.all().filter(editions__ebooks__isnull=False).distinct().order_by('-num_wishes')
if (wishlist.works.all()):
# querysets for tabs
# unglued tab is anything with an existing ebook
## .order_by() may clash with .distinct() and this should be fixed
works_unglued = wishlist.works.all().filter(editions__ebooks__isnull=False).distinct().order_by('-num_wishes')
# take the set complement of the unglued tab and filter it for active works to get middle tab
result = wishlist.works.all().exclude(pk__in=works_unglued.values_list('pk', flat=True))
works_active = result.filter(Q(campaigns__status='ACTIVE') | Q(campaigns__status='SUCCESSFUL')).order_by('-campaigns__status', 'campaigns__deadline').distinct()
# everything else goes in tab 3
works_wished = result.exclude(pk__in=works_active.values_list('pk', flat=True)).order_by('-num_wishes')
# badge counts
backed = works_unglued.count()
backing = works_active.count()
wished = works_wished.count()
# take the set complement of the unglued tab and filter it for active works to get middle tab
result = wishlist.works.all().exclude(pk__in=works_unglued.values_list('pk', flat=True))
works_active = result.filter(Q(campaigns__status='ACTIVE') | Q(campaigns__status='SUCCESSFUL')).order_by('-campaigns__status', 'campaigns__deadline').distinct()
# everything else goes in tab 3
works_wished = result.exclude(pk__in=works_active.values_list('pk', flat=True)).order_by('-num_wishes')
# badge counts
backed = works_unglued.count()
backing = works_active.count()
wished = works_wished.count()
else:
ending = models.Campaign.objects.filter(status='ACTIVE').order_by('deadline')
count = ending.count()
i = 0
j = 0
if is_preview:
worklist = models.Work.objects.order_by('-num_wishes')
works = worklist[:4]
works2 = worklist[4:8]
else:
while i<8 and count>0:
if i<4:
works.append(ending[j].work)
else:
works2.append(ending[j].work)
i += 1
j += 1
if j == count:
j = 0
backed = 0
backing = 0
wished = 0
date = supporter.date_joined.strftime("%B %d, %Y")
@ -812,6 +846,9 @@ def supporter(request, supporter_username, template_name):
"works_unglued": works_unglued,
"works_active": works_active,
"works_wished": works_wished,
"works": works,
"works2": works2,
"is_preview": is_preview,
"backed": backed,
"backing": backing,
"wished": wished,
@ -821,6 +858,7 @@ def supporter(request, supporter_username, template_name):
"goodreads_auth_url": reverse('goodreads_auth'),
"goodreads_id": goodreads_id,
"librarything_id": librarything_id,
"activetab": "#3"
}
return render(request, template_name, context)

View File

@ -0,0 +1,46 @@
# requirements.pip does not specify versions of the libraries. Here's a modified version of the output from pip freeze
# on March 7, 2012 for which the tests run successfully for https://github.com/Gluejar/regluit/commit/000d78dbd0e377d2b1688a4a1a333df49a0dd11b
# If you were to run pip install -r requirements.pip anew, the tests no longer run perfectly because of the use of
# some later libraries
amqplib==1.0.2
anyjson==0.3.1
celery==2.4.6
certifi==0.0.6
django-celery==2.4.2
django-debug-toolbar==0.8.5
django-endless-pagination==1.1
django-extensions==0.7.1
django-kombu==0.9.4
django-nose-selenium==0.7.3
django-picklefield==0.1.9
django-profiles==0.2
https://bitbucket.org/ubernostrum/django-registration/get/tip.tar.gz
#django-registration==0.8-alpha-1
django-selectable==0.2
django-social-auth==0.6.1
#https://github.com/toastdriven/django-tastypie/tarball/master
django-tastypie==0.9.11
Django==1.3.1
feedparser==5.1
freebase==1.0.8
httplib2==0.7.2
kombu==1.5.1
# lxml requires special handling to install properly
#lxml==2.3.1
mechanize==0.2.5
mimeparse==0.1.3
MySQL-python==1.2.3
nose==1.1.2
oauth2==1.5.211
pyparsing==1.5.6
python-dateutil==1.5
python-digest==1.7
python-openid==2.2.5
pytz==2011n
Pyzotero==0.9.4
rdflib==3.1.0
redis==2.4.11
requests==0.9.1
selenium==2.16.0
South==0.7.3
wsgiref==0.1.2

View File

@ -72,6 +72,23 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
/* Cross-browser language */
/* rows in listview should alternate colors */
.row1 .book-list.listview {

View File

@ -72,6 +72,23 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
/* Local variables */
.greenpanelstuff {
font-family: Arial, Helvetica, sans-serif;

View File

@ -72,6 +72,23 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
#js-page-wrap {
overflow: hidden;
}
@ -133,12 +150,12 @@
clear: both;
display: block;
}
.book-detail-img {
#book-detail-img {
float: left;
margin-right: 10px;
width: 151px;
}
.book-detail-img img {
#book-detail-img img {
padding: 5px;
border: solid 5px #EDF3F4;
}
@ -211,8 +228,11 @@
.book-detail-info .find-link {
float: right;
}
.book-detail-info .find-link a {
padding: 0 0 0 4px;
.book-detail-info .find-link img {
padding: 2px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
.book-detail-info .pledged-info {
padding: 0;
@ -542,3 +562,32 @@ a {
.show_more_edition {
text-align: right;
}
.errorlist {
list-style-type: none;
font-size: 14px;
}
.errorlist li {
margin-bottom: 7px;
}
.errorlist .errorlist li {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
width: auto;
height: auto;
padding-left: 32px;
padding-right: 32px;
font-size: 12px;
}
.errorlist .errorlist li li {
list-style: none;
border: none;
}

View File

@ -85,6 +85,28 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
/* variables and mixins used in multiple less files go here */
.header-text {
height: 36px;
@ -172,6 +194,28 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
#user-block-hide {
float: left;
width: 100%;

View File

@ -85,6 +85,28 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
/* variables and mixins used in multiple less files go here */
.header-text {
height: 36px;
@ -172,6 +194,28 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
#user-block-hide {
float: left;
width: 100%;
@ -521,69 +565,6 @@ h2.page-heading {
font-style: italic;
font-weight: normal !important;
}
#js-maincontainer-bot-block {
width: 100%;
clear: both;
overflow: hidden;
margin-top: 55px;
}
#js-maincontainer-bot-block #js-search {
-moz-border-radius: 64px;
-webkit-border-radius: 64px;
border-radius: 64px;
-moz-border-radius: 64px;
-webkit-border-radius: 64px;
border-radius: 64px;
background-color: #8dc63f;
width: 628px;
height: 80px;
overflow: hidden;
clear: both;
color: #fff;
}
#js-maincontainer-bot-block #js-search label {
line-height: 80px;
font-size: 18px;
float: left;
padding: 0;
width: auto;
padding: 0 15px 0 30px;
}
#js-maincontainer-bot-block #js-search form {
float: left;
width: 210px;
background: url("/static/images/landingpage/search-box-two.png") 0 0 no-repeat;
height: 36px;
display: block;
overflow: hidden;
margin-top: 22px;
}
#js-search input.inputbox {
border: none;
color: #66942e;
height: 26px;
line-height: 26px;
height: 26px;
line-height: 26px;
font-size: 13px;
float: left;
padding: 0;
margin: 5px 0 5px 20px;
width: 149px;
outline: none;
}
#js-search input.greenbutton {
background: url("/static/images/landingpage/search-button-two.png") 0 0 no-repeat;
width: 40px;
height: 40px;
padding: 0;
margin: 0;
border: none;
display: block;
float: right;
text-indent: -10000px;
font-size: 0;
}
#js-maincontainer-faq {
clear: both;
overflow: hidden;
@ -601,26 +582,6 @@ h2.page-heading {
color: #3d4e53;
text-decoration: underline;
}
#js-slide .jsmodule > h3 {
background: url("/static/images/landingpage/bg-slide.png") bottom center no-repeat;
padding-bottom: 7px;
padding-left: 35px;
}
#js-slide .jsmodule > h3 span {
background: #8ac3d7;
color: #fff;
padding: 10px 20px;
-moz-border-radius: 10px 10px 0 0;
-webkit-border-radius: 10px 10px 0 0;
border-radius: 10px 10px 0 0;
-moz-border-radius: 10px 10px 0 0;
-webkit-border-radius: 10px 10px 0 0;
border-radius: 10px 10px 0 0;
font-size: 18px;
overflow: hidden;
display: inline-block;
font-weight: normal;
}
h3.module-title {
padding: 10px 0 0 0;
font-size: 17px;
@ -656,36 +617,6 @@ h3.module-title {
height: 24px;
width: 24px;
}
#js-slideshow {
padding: 0 30px;
position: relative;
}
#js-slideshow a.prev {
text-indent: -10000px;
font-size: 0;
width: 15px;
height: 22px;
display: block;
position: absolute;
top: 45%;
background: url("/static/images/landingpage/arrow-left.png") 0 0 no-repeat;
left: 0;
}
#js-slideshow a.next {
text-indent: -10000px;
font-size: 0;
width: 15px;
height: 22px;
display: block;
position: absolute;
top: 45%;
background: url("/static/images/landingpage/arrow-right.png") 0 0 no-repeat;
right: 0;
}
.spacer {
float: left;
margin: 0 4px;
}
.landingheader {
border-bottom: solid 5px #6994a3;
float: left;

View File

@ -72,6 +72,23 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
#user-block-hide {
float: left;
width: 100%;

View File

@ -72,6 +72,23 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
#content-block .jsmod-content, .book-detail {
float: left;
width: auto;

View File

@ -72,7 +72,25 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
.errorlist {
clear: both;
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;

View File

@ -72,6 +72,23 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
span.rounded {
border: 1px solid #d4d4d4;
-moz-border-radius: 7px;

View File

@ -0,0 +1,196 @@
/* variables and mixins used in multiple less files go here */
.header-text {
height: 36px;
line-height: 36px;
display: block;
text-decoration: none;
font-weight: bold;
font-size: 13px;
letter-spacing: -0.05em;
}
.panelborders {
border-width: 1px 0px;
border-style: solid none;
border-color: #FFFFFF;
}
.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;
}
.google_signup_div {
padding: 14px 0;
}
.google_signup_div div {
height: 24px;
line-height: 24px;
float: left;
padding-left: 5px;
}
.google_signup_div img {
float: left;
height: 24px;
width: 24px;
}
.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: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
#js-maincontainer-bot-block {
width: 100%;
clear: both;
overflow: hidden;
margin-top: 55px;
}
#js-maincontainer-bot-block #js-search {
-moz-border-radius: 64px;
-webkit-border-radius: 64px;
border-radius: 64px;
background-color: #8dc63f;
width: 628px;
height: 80px;
overflow: hidden;
clear: both;
color: #fff;
}
#js-maincontainer-bot-block #js-search label {
line-height: 80px;
font-size: 18px;
float: left;
padding: 0;
width: auto;
padding: 0 15px 0 30px;
}
#js-maincontainer-bot-block #js-search form {
float: left;
width: 210px;
background: url("/static/images/landingpage/search-box-two.png") 0 0 no-repeat;
height: 36px;
display: block;
overflow: hidden;
margin-top: 22px;
}
#js-slideshow {
padding: 0 30px;
position: relative;
}
#js-slideshow a.prev {
text-indent: -10000px;
font-size: 0;
width: 15px;
height: 22px;
display: block;
position: absolute;
top: 45%;
background: url("/static/images/landingpage/arrow-left.png") 0 0 no-repeat;
left: 0;
}
#js-slideshow a.next {
text-indent: -10000px;
font-size: 0;
width: 15px;
height: 22px;
display: block;
position: absolute;
top: 45%;
background: url("/static/images/landingpage/arrow-right.png") 0 0 no-repeat;
right: 0;
}
.spacer {
float: left;
margin: 0 4px;
}
#js-search input.inputbox {
border: none;
color: #66942e;
height: 26px;
line-height: 26px;
font-size: 13px;
float: left;
padding: 0;
margin: 5px 0 5px 20px;
width: 149px;
outline: none;
}
#js-search input.greenbutton {
background: url("/static/images/landingpage/search-button-two.png") 0 0 no-repeat;
width: 40px;
height: 40px;
padding: 0;
margin: 0;
border: none;
display: block;
float: right;
text-indent: -10000px;
font-size: 0;
}
#js-slide .jsmodule > h3 {
background: url("/static/images/landingpage/bg-slide.png") bottom center no-repeat;
padding-bottom: 7px;
padding-left: 35px;
}
#js-slide .jsmodule > h3 span {
background: #8ac3d7;
color: #fff;
padding: 10px 20px;
-moz-border-radius: 10px 10px 0 0;
-webkit-border-radius: 10px 10px 0 0;
border-radius: 10px 10px 0 0;
font-size: 18px;
overflow: hidden;
display: inline-block;
font-weight: normal;
}

View File

@ -73,6 +73,23 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
/* remove before beta */
.preview {
border: solid 3px #e35351;
@ -384,6 +401,11 @@ a#readon span {
#welcome {
overflow: hidden;
}
#locationhash {
/* used solely to contain template variables for tabs.js; should not display */
display: none;
}
/* Explore column */
#js-leftcol {
float: left;

View File

@ -72,6 +72,23 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}
.block-inner {
padding-right: 10px;
}
@ -296,27 +313,19 @@ span.my-setting.active {
margin-left: 10px;
margin-top: 10px;
width: 100%;
border-bottom: 4px solid #d6dde0;
}
#tabs ul.tabs li a:hover {
text-decoration: none;
}
#tabs.wantto {
border-bottom: 4px solid #d6dde0;
}
#tabs.wantto ul.tabs li.tabs3.active a {
background: #d6dde0;
color: #3d4e53;
}
#tabs.ungluing {
border-bottom: 4px solid #eabc7c;
}
#tabs.ungluing ul.tabs li.tabs2.active a {
background: #eabc7c;
color: #fff;
}
#tabs.unglued {
border-bottom: 4px solid #8dc63f;
}
#tabs.unglued ul.tabs li.tabs1.active a {
background: #8dc63f;
color: #fff;
@ -355,15 +364,15 @@ ul.tabs li a {
background: #6994a3;
color: #fff;
}
ul.tabs li.tabs1 a:hover, ul.tabs li.active a {
ul.tabs li.tabs1 a:hover, ul.tabs li.tabs1.active a {
background: #8dc63f;
color: #ffffff;
}
ul.tabs li.tabs2 a:hover, ul.tabs li.active a {
ul.tabs li.tabs2 a:hover, ul.tabs li.tabs2.active a {
background: #eabc7c;
color: #fff;
}
ul.tabs li.tabs3 a:hover, ul.tabs li.active a {
ul.tabs li.tabs3 a:hover, ul.tabs li.tabs3.active a {
background: #d6dde0;
color: #3d4e53;
}
@ -441,3 +450,12 @@ div#content-block-content {
height: 25px;
display: block;
}
#js-slide .jsmodule {
width: 660px !important;
}
#js-slide .jsmodule .slides_control {
height: 325px !important;
}
#js-maincontainer-bot-block {
padding-left: 16px;
}

View File

@ -72,3 +72,20 @@
border: none;
margin: 5px 0;
}
.errors {
-moz-border-radius: 32px;
-webkit-border-radius: 32px;
border-radius: 32px;
border: solid #e35351 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
height: 16px;
line-height: 16px;
text-align: center;
}
.errors li {
list-style: none;
border: none;
}

15
static/js/slideshow.js Normal file
View File

@ -0,0 +1,15 @@
var $j = jQuery.noConflict();
$j(function(){
$j('#js-slideshow').slides({
preload: true,
preloadImage: '/static/images/landingpage/loading.gif',
hoverPause: true,
generateNextPrev: true,
next: 'next',
prev: 'prev',
pagination: true,
generatePagination: false,
slideSpeed: 600,
autoHeight: true
});
});

View File

@ -1,13 +1,5 @@
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j('#user-block-hide').hide();
$j('#user-block1 span').click(
function() {
$j(this).toggleClass("active");
$j("#user-block-hide").slideToggle(300);
}
);
// caching selections to speed up response
var tabs = $j('ul.tabs');
var tabsId = $j('#tabs');
@ -22,17 +14,23 @@
var tabsLink3 = $j('li.tabs3');
var contentBlockContent = $j('#content-block-content');
// on pageload we are showing only the Wishlisted tab, not Unglued or Active, by default
if(location.hash == "#1") {
tabsDash2.hide();
// on pageload we are showing only the Active tab, not Unglued or Wishlisted
if (location.hash == "#1" || location.hash == "#2" || location.hash == "#3") {
tab = location.hash;
} else {
tab = $j('#locationhash').html();
}
if(tab == "#1") {
tabsDash2.hide();
tabsDash3.hide();
tabsLink1.addClass('active');
} else if(location.hash =="#2") {
tabsDash1.hide();
} else if(tab =="#2") {
tabsDash1.hide();
tabsDash3.hide();
tabsLink2.addClass('active');
} else {
tabsDash1.hide();
tabsDash1.hide();
tabsDash2.hide();
tabsLink3.addClass('active');
}

View File

@ -89,7 +89,7 @@
display:block;
}
.book-detail-img {
#book-detail-img {
float: left;
margin-right:10px;
width:151px;
@ -179,8 +179,9 @@
.find-link {
float:right;
a {
padding: 0 0 0 4px;
img {
padding: 2px;
.one-border-radius(5px);
}
}
@ -484,11 +485,32 @@ a{ color:#3d4e53; font-size:12px;}
display:none;
clear: both;
padding-bottom: 10px;
padding-left: 60px;
padding-left: 60px;
}
.show_more_edition:hover {
text-decoration: underline;
}
.show_more_edition {
text-align: right;
}
.errorlist {
list-style-type: none;
font-size: 14px;
li {
margin-bottom: 7px;
}
.errorlist {
li {
.errors;
width: auto;
height: auto;
padding-left: 32px;
padding-right: 32px;
font-size: 12px;
}
}
}

View File

@ -1,15 +1,6 @@
@import "variables.less";
@import "learnmore.less";
.clickyarrows() {
text-indent:-10000px;
font-size:0;
width:15px;
height:22px;
display:block;
position:absolute;
top:45%;
}
#expandable {
display: none;
}
@ -300,70 +291,6 @@ h2.page-heading {
font-weight:normal !important;
}
#js-maincontainer-bot-block {
width:100%;
clear:both;
overflow:hidden;
margin-top:55px;
#js-search {
.one-border-radius(64px);
background-color: @call-to-action;
width:628px;
height:80px;
overflow:hidden;
clear:both;
color:#fff;
label {
line-height:80px;
font-size:18px;
float:left;
padding:0;
width:auto;
padding:0 15px 0 30px;
}
form {
float:left;
width:210px;
background:url("@{image-base}landingpage/search-box-two.png") 0 0 no-repeat;
height:36px;
display:block;
overflow:hidden;
margin-top:22px;
}
}
}
#js-search input {
&.inputbox {
border:none;
color:#66942e;
.height(26px);
font-size:13px;
float:left;
padding:0;
margin:5px 0 5px 20px;
width: 149px;
outline: none;
}
&.greenbutton {
background:url("@{image-base}landingpage/search-button-two.png") 0 0 no-repeat;
width:40px;
height:40px;
padding:0;
margin:0;
border:none;
display:block;
float: right;
text-indent:-10000px;
font-size:0;
}
}
#js-maincontainer-faq {
clear: both;
overflow:hidden;
@ -384,23 +311,6 @@ h2.page-heading {
}
}
#js-slide .jsmodule > h3 {
background:url("@{image-base}landingpage/bg-slide.png") bottom center no-repeat;
padding-bottom:7px;
padding-left:35px;
span {
background:@bright-blue;
color:#fff;
padding:10px 20px;
.border-radius(10px, 10px, 0, 0);
font-size:18px;
overflow:hidden;
display:inline-block;
font-weight:normal;
}
}
h3.module-title {
padding: 10px 0 0 0;
font-size:17px;
@ -411,29 +321,6 @@ h3.module-title {
.google_signup_div;
}
#js-slideshow {
padding:0 30px;
position:relative;
a.prev {
.clickyarrows();
background:url("@{image-base}landingpage/arrow-left.png") 0 0 no-repeat;
left: 0;
}
a.next {
.clickyarrows(rt);
background:url("@{image-base}landingpage/arrow-right.png") 0 0 no-repeat;
right: 0;
}
}
.spacer {
float: left;
margin: 0 4px;
}
.landingheader {
border-bottom: solid 5px @medium-blue;
float: left;

View File

@ -1,19 +1,8 @@
@import "variables.less";
.errorlist {
.one-border-radius(32px);
border: solid @alert 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
.height(16px);
text-align: center;
li {
list-style: none;
border: none;
}
clear: both;
.errors;
}
#login_centerer {

View File

@ -0,0 +1,104 @@
@import "variables.less";
#js-maincontainer-bot-block {
width:100%;
clear:both;
overflow:hidden;
margin-top:55px;
#js-search {
.one-border-radius(64px);
background-color: @call-to-action;
width:628px;
height:80px;
overflow:hidden;
clear:both;
color:#fff;
label {
line-height:80px;
font-size:18px;
float:left;
padding:0;
width:auto;
padding:0 15px 0 30px;
}
form {
float:left;
width:210px;
background:url("@{image-base}landingpage/search-box-two.png") 0 0 no-repeat;
height:36px;
display:block;
overflow:hidden;
margin-top:22px;
}
}
}
#js-slideshow {
padding:0 30px;
position:relative;
a.prev {
.clickyarrows();
background:url("@{image-base}landingpage/arrow-left.png") 0 0 no-repeat;
left: 0;
}
a.next {
.clickyarrows(rt);
background:url("@{image-base}landingpage/arrow-right.png") 0 0 no-repeat;
right: 0;
}
}
.spacer {
float: left;
margin: 0 4px;
}
#js-search input {
&.inputbox {
border:none;
color:#66942e;
.height(26px);
font-size:13px;
float:left;
padding:0;
margin:5px 0 5px 20px;
width: 149px;
outline: none;
}
&.greenbutton {
background:url("@{image-base}landingpage/search-button-two.png") 0 0 no-repeat;
width:40px;
height:40px;
padding:0;
margin:0;
border:none;
display:block;
float: right;
text-indent:-10000px;
font-size:0;
}
}
#js-slide .jsmodule > h3 {
background:url("@{image-base}landingpage/bg-slide.png") bottom center no-repeat;
padding-bottom:7px;
padding-left:35px;
span {
background:@bright-blue;
color:#fff;
padding:10px 20px;
.border-radius(10px, 10px, 0, 0);
font-size:18px;
overflow:hidden;
display:inline-block;
font-weight:normal;
}
}

View File

@ -322,6 +322,12 @@ a#readon {
#welcome {
overflow: hidden;
}
#locationhash {
/* used solely to contain template variables for tabs.js; should not display */
display: none;
}
/* Explore column */
#js-leftcol {
float:left;

View File

@ -244,14 +244,13 @@ span.my-setting.active {
margin-left: 10px;
margin-top: 10px;
width: 100%;
border-bottom: 4px solid @blue-grey;
ul.tabs li a:hover {
text-decoration: none;
}
&.wantto {
border-bottom: 4px solid @blue-grey;
ul.tabs li.tabs3.active a {
background: @blue-grey;
color: @text-blue;
@ -259,8 +258,6 @@ span.my-setting.active {
}
&.ungluing {
border-bottom: 4px solid #eabc7c;
ul.tabs li.tabs2.active a {
background: #eabc7c;
color: #fff;
@ -268,8 +265,6 @@ span.my-setting.active {
}
&.unglued {
border-bottom: 4px solid @green;
ul.tabs li.tabs1.active a {
background: @green;
color: #fff;
@ -313,17 +308,17 @@ ul.tabs {
color:#fff;
}
&.tabs1 a:hover, &.active a {
&.tabs1 a:hover, &.tabs1.active a {
background:@green;
color:#fff
}
&.tabs2 a:hover, &.active a {
&.tabs2 a:hover, &.tabs2.active a {
background:#eabc7c;
color:#fff;
}
&.tabs3 a:hover, &.active a {
&.tabs3 a:hover, &.tabs3.active a {
background:@blue-grey;
color:@text-blue;
}
@ -421,4 +416,16 @@ div#content-block-content {
display:block;
}
}
#js-slide .jsmodule {
width: 660px !important;
.slides_control {
height: 325px !important;
}
}
#js-maincontainer-bot-block {
padding-left: 16px;
}

View File

@ -119,4 +119,30 @@
padding: 0 15px;
border:none;
margin: 5px 0;
}
}
.errors {
.one-border-radius(32px);
border: solid @alert 4px;
width: 90%;
padding: 5px;
font-weight: bold;
padding: 7px 0;
.height(16px);
text-align: center;
li {
list-style: none;
border: none;
}
}
.clickyarrows() {
text-indent:-10000px;
font-size:0;
width:15px;
height:22px;
display:block;
position:absolute;
top:45%;
}