Merge branch 'master' of github.com:Gluejar/regluit
commit
7c83f2b1fb
|
@ -531,9 +531,28 @@ class Campaign(models.Model):
|
||||||
@property
|
@property
|
||||||
def success_date(self):
|
def success_date(self):
|
||||||
if self.status == 'SUCCESSFUL':
|
if self.status == 'SUCCESSFUL':
|
||||||
|
try:
|
||||||
return self.actions.filter(type='succeeded')[0].timestamp
|
return self.actions.filter(type='succeeded')[0].timestamp
|
||||||
|
except:
|
||||||
|
return ''
|
||||||
return ''
|
return ''
|
||||||
|
|
||||||
|
@property
|
||||||
|
def countdown(self):
|
||||||
|
from math import ceil
|
||||||
|
time_remaining = self.deadline - now()
|
||||||
|
countdown = ""
|
||||||
|
|
||||||
|
if time_remaining.days:
|
||||||
|
countdown = "%s days" % str(time_remaining.days + 1)
|
||||||
|
elif time_remaining.seconds > 3600:
|
||||||
|
countdown = "%s hours" % str(time_remaining.seconds/3600 + 1)
|
||||||
|
elif time_remaining.seconds > 60:
|
||||||
|
countdown = "%s minutes" % str(time_remaining.seconds/60 + 1)
|
||||||
|
else:
|
||||||
|
countdown = "Seconds"
|
||||||
|
|
||||||
|
return countdown
|
||||||
|
|
||||||
class Identifier(models.Model):
|
class Identifier(models.Model):
|
||||||
# olib, ltwk, goog, gdrd, thng, isbn, oclc, olwk, olib, gute, glue
|
# olib, ltwk, goog, gdrd, thng, isbn, oclc, olwk, olib, gute, glue
|
||||||
|
|
|
@ -4,13 +4,13 @@
|
||||||
<div itemprop="comment" itemscope itemtype="http://schema.org/UserComments" class="work_supporter {% if comment.content_object.last_campaign and comment.user in comment.content_object.last_campaign.managers.all %}official{% endif %}">
|
<div itemprop="comment" itemscope itemtype="http://schema.org/UserComments" class="work_supporter {% if comment.content_object.last_campaign and comment.user in comment.content_object.last_campaign.managers.all %}official{% endif %}">
|
||||||
<span itemprop="creator" itemscope itemtype="http://schema.org/Person">
|
<span itemprop="creator" itemscope itemtype="http://schema.org/Person">
|
||||||
<a itemprop="url" href="{% url supporter supporter_username=comment.user.username %}">
|
<a itemprop="url" href="{% url supporter supporter_username=comment.user.username %}">
|
||||||
<div class="work_supporter_avatar">
|
<span class="work_supporter_avatar">
|
||||||
{% if comment.user.profile.pic_url %}
|
{% if comment.user.profile.pic_url %}
|
||||||
<img class="user-avatar" src="{{ comment.user.profile.pic_url }}" height="50" width="50" alt="Picture of {{ comment.user }}" title="{{ comment.user }}" />
|
<img class="user-avatar" src="{{ comment.user.profile.pic_url }}" height="50" width="50" alt="Picture of {{ comment.user }}" title="{{ comment.user }}" />
|
||||||
{% else %}
|
{% else %}
|
||||||
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</span>
|
||||||
<span class="comment_username">{{comment.user.username }}</span>
|
<span class="comment_username">{{comment.user.username }}</span>
|
||||||
</a>
|
</a>
|
||||||
</span>
|
</span>
|
||||||
|
|
|
@ -21,13 +21,13 @@
|
||||||
<h1>{% trans "Preview your comment" %}</h1>
|
<h1>{% trans "Preview your comment" %}</h1>
|
||||||
<div class="work_supporter {% if content_object.last_campaign and user in content_object.last_campaign.managers.all %}official{% endif %}">
|
<div class="work_supporter {% if content_object.last_campaign and user in content_object.last_campaign.managers.all %}official{% endif %}">
|
||||||
<a href="{% url supporter supporter_username=user.username %}">
|
<a href="{% url supporter supporter_username=user.username %}">
|
||||||
<div class="work_supporter_avatar">
|
<span class="work_supporter_avatar">
|
||||||
{% if user.profile.pic_url %}
|
{% if user.profile.pic_url %}
|
||||||
<img class="user-avatar" src="{{ user.profile.pic_url }}" height="50" width="50" alt="Picture of {{ user }}" title="{{ user }}" />
|
<img class="user-avatar" src="{{ user.profile.pic_url }}" height="50" width="50" alt="Picture of {{ user }}" title="{{ user }}" />
|
||||||
{% else %}
|
{% else %}
|
||||||
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</span>
|
||||||
<span class="comment_username">{{user.username }}</span></a> <span>( [today's date] )</span> <br /><span class="comment">{{ comment|linebreaksbr }}<br /></span>
|
<span class="comment_username">{{user.username }}</span></a> <span>( [today's date] )</span> <br /><span class="comment">{{ comment|linebreaksbr }}<br /></span>
|
||||||
</div>
|
</div>
|
||||||
<br /><br /><br />
|
<br /><br /><br />
|
||||||
|
|
|
@ -32,19 +32,29 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="jsmodule rounded pledge">
|
<div>
|
||||||
<div class="jsmod-content">
|
<div class="thermometer">
|
||||||
${{ work.last_campaign.target|floatformat:0|intcomma }} needed by<br />
|
<div class="cover" style="width: {{ cover_width }}%;">
|
||||||
{{ work.last_campaign.deadline }}
|
|
||||||
</div>
|
</div>
|
||||||
|
<span>{{ work.percent_of_goal }}% of goal</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="pledged-info noborder">
|
||||||
<div class="pledged-info">
|
<div class="campaign-status-info">
|
||||||
<div class="pledged-group">
|
<span>${{ work.last_campaign.current_total|floatformat:0|intcomma }}</span> pledged
|
||||||
{{ work.last_campaign.supporters_count }} Ungluers have pledged ${{ work.last_campaign.current_total|intcomma }}
|
</div>
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
<span>${{ work.last_campaign.target|floatformat:0|intcomma }}</span> goal
|
||||||
|
</div>
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
{% if work.last_campaign.supporters_count == 1 %}
|
||||||
|
<span>1</span> ungluer
|
||||||
|
{% else %}
|
||||||
|
<span> {{ work.last_campaign.supporters_count }}</span> ungluers
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
<span>{{ work.last_campaign.countdown }}</span> to go
|
||||||
</div>
|
</div>
|
||||||
<div class="status">
|
|
||||||
<img src="/static/images/images/icon-book-37by25-{{ work.percent_unglued }}.png" title="book list status" alt="book list status" />
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -51,68 +51,6 @@
|
||||||
<div id="main-container">
|
<div id="main-container">
|
||||||
<div class="js-main">
|
<div class="js-main">
|
||||||
<div id="js-leftcol">
|
<div id="js-leftcol">
|
||||||
<div class="jsmodule rounded">
|
|
||||||
<div class="jsmod-content {{ status }}">
|
|
||||||
{% if work.first_ebook %}
|
|
||||||
AVAILABLE! <br />
|
|
||||||
{% if wishers == 1 %}
|
|
||||||
1 Ungluer is
|
|
||||||
{% else %}
|
|
||||||
{{ wishers }} Ungluers are
|
|
||||||
{% endif %} enjoying this book
|
|
||||||
{% else %}{% if work.last_campaign %}
|
|
||||||
{% if status == 'ACTIVE' %}
|
|
||||||
Unglue it! <br />
|
|
||||||
${{ work.last_campaign.current_total|floatformat:0|intcomma }}/${{ work.last_campaign.target|floatformat:0|intcomma }} <br />
|
|
||||||
Ending {{ countdown }}
|
|
||||||
{% else %}
|
|
||||||
{% if status == 'SUCCESSFUL' %}
|
|
||||||
Unglued on {{ work.last_campaign.success_date|date:"M j, Y"}}! <br />
|
|
||||||
${{ work.last_campaign.current_total|floatformat:0|intcomma }} raised of ${{ work.last_campaign.target|floatformat:0|intcomma }} goal<br />
|
|
||||||
Ebook in progress
|
|
||||||
{% else %}{% if status == 'INITIALIZED' %}
|
|
||||||
Campaign starting soon
|
|
||||||
{% else %}{% if status == 'SUSPENDED' %}
|
|
||||||
Campaign suspended. <br />See <a href="/faq">FAQ</a>.
|
|
||||||
{% else %}{% if status == 'WITHDRAWN' %}
|
|
||||||
Campaign withdrawn. <br />See <a href="/faq">FAQ</a>.
|
|
||||||
{% else %}{% if wishers == 0 %}
|
|
||||||
<span class="findtheungluers">No ungluers are wishing yet.</span>
|
|
||||||
<br />
|
|
||||||
Be the first!
|
|
||||||
{% else %}{% if wishers == 1 %}
|
|
||||||
<span class="findtheungluers">{{ wishers }} Ungluer is wishing</span>
|
|
||||||
<br />
|
|
||||||
You can too!
|
|
||||||
{% else %}
|
|
||||||
<span class="findtheungluers">{{ wishers }} Ungluers are wishing</span>
|
|
||||||
<br />
|
|
||||||
You can too!
|
|
||||||
{% endif %}{% endif %}{% endif %}{% endif %}{% endif %}{% endif %}
|
|
||||||
{% endif %}
|
|
||||||
{% else %}
|
|
||||||
{% if wishers == 0 %}
|
|
||||||
<span class="findtheungluers">
|
|
||||||
No ungluers are wishing yet.
|
|
||||||
</span>
|
|
||||||
<br />
|
|
||||||
Be the first!
|
|
||||||
{% else %}{% if wishers == 1 %}
|
|
||||||
<span class="findtheungluers">
|
|
||||||
{{ wishers }} Ungluer is wishing
|
|
||||||
</span>
|
|
||||||
<br />
|
|
||||||
You can too!
|
|
||||||
{% else %}
|
|
||||||
<span class="findtheungluers">
|
|
||||||
{{ wishers }} Ungluers are wishing
|
|
||||||
</span>
|
|
||||||
<br />
|
|
||||||
You can too!
|
|
||||||
{% endif %}{% endif %}
|
|
||||||
{% endif %}{% endif %}
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
{% include "explore.html" %}
|
{% include "explore.html" %}
|
||||||
</div>
|
</div>
|
||||||
<div id="js-maincol">
|
<div id="js-maincol">
|
||||||
|
@ -120,7 +58,8 @@
|
||||||
<div id="content-block" itemscope itemtype="http://schema.org/Book">
|
<div id="content-block" itemscope itemtype="http://schema.org/Book">
|
||||||
<div class="book-detail">
|
<div class="book-detail">
|
||||||
{% if work.googlebooks_id %}
|
{% if work.googlebooks_id %}
|
||||||
<div id="book-detail-img"><a href="{{ work.googlebooks_url }}">
|
<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>
|
<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>
|
||||||
{% else %}
|
{% else %}
|
||||||
|
@ -136,21 +75,65 @@
|
||||||
<h3 class="book-author" itemprop="author">{{ work.author }}</h3>
|
<h3 class="book-author" itemprop="author">{{ work.author }}</h3>
|
||||||
<h3 class="book-year" itemprop="datePublished">{{ work.publication_date_year }}</h3>
|
<h3 class="book-year" itemprop="datePublished">{{ work.publication_date_year }}</h3>
|
||||||
</div>
|
</div>
|
||||||
{% if status == 'ACTIVE' %}
|
</div>
|
||||||
{% if pledged %}
|
</div>
|
||||||
<div class="btn_support modify"><form action="{% url pledge_modify work_id %}" method="get"><input type="submit" value="Modify Pledge" /></form></div>
|
{% ifequal status 'ACTIVE' %}
|
||||||
|
<div class="thermometer" title="{{ work.percent_of_goal }}% of goal">
|
||||||
|
<div class="cover" style="width: {{ cover_width }}%;">
|
||||||
|
</div>
|
||||||
|
<span>{{ work.percent_of_goal }}% of goal</span>
|
||||||
|
</div>
|
||||||
|
<div class="pledged-info noborder">
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
<span>${{ work.last_campaign.current_total|floatformat:0|intcomma }}</span> pledged
|
||||||
|
</div>
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
<span>${{ work.last_campaign.target|floatformat:0|intcomma }}</span> goal
|
||||||
|
</div>
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
{% if work.last_campaign.supporters_count == 1 %}
|
||||||
|
<span>1</span> ungluer
|
||||||
{% else %}
|
{% else %}
|
||||||
<div class="btn_support"><form action="{% url pledge work_id %}" method="get"><input type="submit" value="Pledge" /></form></div>
|
<span>{{ work.last_campaign.supporters_count }}</span> ungluers
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
<span>{{ work.last_campaign.countdown }}</span> to go
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
{% if work.first_ebook %}
|
{% ifequal status 'SUCCESSFUL' %}
|
||||||
<div class="btn_support">
|
<div class="thermometer successful">
|
||||||
<a href="{% url download work_id %}" class="fakeinput hijax">Download</a>
|
This campaign succeeded on {{ work.last_campaign.success_date|date:"M j, Y" }}.
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
<div class="pledged-info noborder">
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
{% if work.last_campaign.supporters_count == 1 %}
|
||||||
|
<span>1</span> ungluer
|
||||||
|
{% else %}
|
||||||
|
<span>{{ work.last_campaign.supporters_count }}</span> ungluers
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
<span>${{ work.last_campaign.current_total|floatformat:0|intcomma }}</span> pledged
|
||||||
</div>
|
</div>
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
<span>${{ work.last_campaign.target|floatformat:0|intcomma }}</span> goal
|
||||||
|
</div>
|
||||||
|
<div class="campaign-status-info">
|
||||||
|
<span>Unglued!</span>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
{% endifequal %}
|
||||||
|
|
||||||
|
<div class="pledged-info">
|
||||||
|
{% if wishers == 1 %}
|
||||||
|
1 Ungluer has
|
||||||
|
{% else %}
|
||||||
|
{{ wishers }} Ungluers have
|
||||||
|
{% endif %} wished for this Work
|
||||||
|
</div>
|
||||||
|
{% endifequal %}
|
||||||
<div class="find-book">
|
<div class="find-book">
|
||||||
<label>Learn more at...</label>
|
<label>Learn more at...</label>
|
||||||
<div class="find-link">
|
<div class="find-link">
|
||||||
|
@ -171,26 +154,6 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if not work.first_ebook %}
|
|
||||||
<div class="pledged-info"><div class="pledged-group">
|
|
||||||
{% if status == 'ACTIVE' %}
|
|
||||||
{% if work.last_campaign.supporters_count == 1 %}
|
|
||||||
One Ungluer has
|
|
||||||
{% else %}
|
|
||||||
{{ work.last_campaign.supporters_count }} Ungluers have
|
|
||||||
{% endif %}
|
|
||||||
pledged ${{ work.last_campaign.current_total|floatformat:0|intcomma }}<br />toward a ${{ work.last_campaign.target|floatformat:0|intcomma }} goal
|
|
||||||
{% else %}
|
|
||||||
{% if wishers == 1 %}
|
|
||||||
1 Ungluer has
|
|
||||||
{% else %}
|
|
||||||
{{ wishers }} Ungluers have
|
|
||||||
{% endif %} wished for this Work
|
|
||||||
{% endif %}
|
|
||||||
</div>
|
|
||||||
<div class="status">{% if status == 'ACTIVE' %}{{ work.percent_of_goal }}% {% endif %}<img src="/static/images/images/icon-book-37by25-{% if work.first_ebook %}6{%else%}{{ work.percent_unglued }}{%endif%}.png" title="book list status" alt="book list status" /></div>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
<div class="btn_wishlist" id="wishlist_actions">
|
<div class="btn_wishlist" id="wishlist_actions">
|
||||||
{% if request.user.is_anonymous %}
|
{% if request.user.is_anonymous %}
|
||||||
<div class="create-account">
|
<div class="create-account">
|
||||||
|
@ -220,19 +183,18 @@
|
||||||
<li class="tabs3 {% if activetab == '3' %}active{% endif %}" id="supporters"><a href="#">Ungluers {% if wishers > 0 %}<br />({{ wishers }}){% endif %}</a></li>
|
<li class="tabs3 {% if activetab == '3' %}active{% endif %}" id="supporters"><a href="#">Ungluers {% if wishers > 0 %}<br />({{ wishers }}){% endif %}</a></li>
|
||||||
<li class="tabs4 {% if activetab == '4' %}active{% endif %}"><a href="#">Rights</a></li>
|
<li class="tabs4 {% if activetab == '4' %}active{% endif %}"><a href="#">Rights</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div id="content-block-content">
|
<div id="content-block-content">
|
||||||
<div id="tabs-1" class="tabs {% if activetab == '1' %}active{% endif %}">
|
<div id="tabs-1" class="tabs {% if activetab == '1' %}active{% endif %}">
|
||||||
<div class="tabs-content">
|
<div class="tabs-content">
|
||||||
{% if status == 'ACTIVE' or status == 'SUCCESSFUL' %}
|
{% if status == 'ACTIVE' or status == 'SUCCESSFUL' %}
|
||||||
<span itemprop="description">{{ work.last_campaign.description|safe }}</span>
|
<div itemprop="description">{{ work.last_campaign.description|safe }}</div>
|
||||||
{% else %}
|
{% else %}
|
||||||
<h3 class="tabcontent-title">{{work.title}}</h3>
|
<h3 class="tabcontent-title">{{work.title}}</h3>
|
||||||
<p itemprop="description">{{ work.description|safe }}
|
<p itemprop="description">{{ work.description|safe }}
|
||||||
{% endif %}
|
|
||||||
</p>
|
</p>
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="tabs-2" class="tabs {% if activetab == '2' %}active{% endif %}">
|
<div id="tabs-2" class="tabs {% if activetab == '2' %}active{% endif %}">
|
||||||
|
@ -256,13 +218,13 @@
|
||||||
{% with wish.wishlist.user as supporter %}
|
{% with wish.wishlist.user as supporter %}
|
||||||
<div class="work_supporter_wide">
|
<div class="work_supporter_wide">
|
||||||
<a href="{% url supporter supporter_username=supporter.username %}">
|
<a href="{% url supporter supporter_username=supporter.username %}">
|
||||||
<div class="work_supporter_avatar">
|
<span class="work_supporter_avatar">
|
||||||
{% if supporter.profile.pic_url %}
|
{% if supporter.profile.pic_url %}
|
||||||
<img class="user-avatar" src="{{ supporter.profile.pic_url }}" height="50" width="50" alt="Picture of {{ supporter }}" title="{{ supporter }}" />
|
<img class="user-avatar" src="{{ supporter.profile.pic_url }}" height="50" width="50" alt="Picture of {{ supporter }}" title="{{ supporter }}" />
|
||||||
{% else %}
|
{% else %}
|
||||||
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
<div class="show_supporter_contact_form" >
|
<div class="show_supporter_contact_form" >
|
||||||
<img src="/static/images/icons/email.png" title="contact supporter" />
|
<img src="/static/images/icons/email.png" title="contact supporter" />
|
||||||
|
@ -284,14 +246,14 @@
|
||||||
{% with wish.wishlist.user as supporter %}
|
{% with wish.wishlist.user as supporter %}
|
||||||
<div class="work_supporter_nocomment" itemscope itemtype="http://schema.org/Person">
|
<div class="work_supporter_nocomment" itemscope itemtype="http://schema.org/Person">
|
||||||
<a itemprop="url" href="{% url supporter supporter_username=supporter.username %}">
|
<a itemprop="url" href="{% url supporter supporter_username=supporter.username %}">
|
||||||
<div class="work_supporter_avatar">
|
<span class="work_supporter_avatar">
|
||||||
{% if supporter.profile.pic_url %}
|
{% if supporter.profile.pic_url %}
|
||||||
<img class="user-avatar" src="{{ supporter.profile.pic_url }}" height="50" width="50" alt="Picture of {{ supporter }}" title="{{ supporter }}" />
|
<img class="user-avatar" src="{{ supporter.profile.pic_url }}" height="50" width="50" alt="Picture of {{ supporter }}" title="{{ supporter }}" />
|
||||||
{% else %}
|
{% else %}
|
||||||
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
<img class="user-avatar" src="/static/images/header/avatar.png" height="50" width="50" alt="Generic Ungluer Avatar" title="Ungluer" />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</span>
|
||||||
<div class="work_supporter_name">{{ supporter }}</div>
|
<span class="work_supporter_name">{{ supporter }}</span>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
{% endwith %}
|
{% endwith %}
|
||||||
|
@ -352,12 +314,11 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
<p>If you'd like to contact us regarding rights for this work, please email <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>.</p>
|
<p>If you'd like to contact us regarding rights for this work, please email <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>.</p>
|
||||||
{% if user.is_staff %}<h4>Related Works</h4>
|
{% if user.is_staff %}
|
||||||
|
<h4>Related Works</h4>
|
||||||
<a href="{% url merge work_id %}">Merge other works into this one</a><br />
|
<a href="{% url merge work_id %}">Merge other works into this one</a><br />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if work.subjects.all.count > 0 %}
|
{% if work.subjects.all.count > 0 %}
|
||||||
<h4>Subjects</h4>
|
<h4>Subjects</h4>
|
||||||
<ul>
|
<ul>
|
||||||
|
@ -372,7 +333,9 @@
|
||||||
<div><a href="{% url new_edition work_id edition.id %}">Create a new edition for this work</a><br /><br /></div>
|
<div><a href="{% url new_edition work_id edition.id %}">Create a new edition for this work</a><br /><br /></div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% if alert %}<div class="alert"><b>Ebook Contribution:</b><br />{{ alert }}</div>{% endif %}
|
{% if alert %}
|
||||||
|
<div class="alert"><b>Ebook Contribution:</b><br />{{ alert }}</div>
|
||||||
|
{% endif %}
|
||||||
{% for edition in editions %}
|
{% for edition in editions %}
|
||||||
<div class="clearfix">
|
<div class="clearfix">
|
||||||
<div class="editions">
|
<div class="editions">
|
||||||
|
@ -381,10 +344,15 @@
|
||||||
<img src="{{ edition.cover_image_small }}" title="edition cover" alt="edition cover" />
|
<img src="{{ edition.cover_image_small }}" title="edition cover" alt="edition cover" />
|
||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div class="metadata" id="edition_{{edition.id}}">{% if edition.publisher %}Publisher: <a href="{% url bypub_list edition.publisher %}">{{edition.publisher}}</a><br />{% endif %}
|
<div class="metadata" id="edition_{{edition.id}}">
|
||||||
{% if edition.publication_date %}Published: {{edition.publication_date}}<br />{% endif %}
|
{% if edition.publisher %}
|
||||||
|
Publisher: <a href="{% url bypub_list edition.publisher %}">{{edition.publisher}}</a><br />
|
||||||
|
{% endif %}
|
||||||
|
{% if edition.publication_date %}
|
||||||
|
Published: {{ edition.publication_date }}<br />
|
||||||
|
{% endif %}
|
||||||
{% if edition.isbn_13 %}
|
{% if edition.isbn_13 %}
|
||||||
ISBN: <spam itemprop="isbn">{{ edition.isbn_13 }}</span><br />
|
ISBN: <span itemprop="isbn">{{ edition.isbn_13 }}</span><br />
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if edition.oclc %}
|
{% if edition.oclc %}
|
||||||
OCLC: <a href="http://www.worldcat.org/oclc/{{ edition.oclc }}">{{ edition.oclc }}</a><br />
|
OCLC: <a href="http://www.worldcat.org/oclc/{{ edition.oclc }}">{{ edition.oclc }}</a><br />
|
||||||
|
@ -397,9 +365,12 @@
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if edition.ebook_form %}{% ifnotequal status 'ACTIVE' %}
|
{% if edition.ebook_form %}
|
||||||
|
{% ifnotequal status 'ACTIVE' %}
|
||||||
{% if edition.hide_details %}
|
{% if edition.hide_details %}
|
||||||
<div class="show_more_edition" >more...</div>
|
<div class="show_more_edition" >
|
||||||
|
more...
|
||||||
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<div {% if edition.hide_details %} class="more_edition" {% endif %}>
|
<div {% if edition.hide_details %} class="more_edition" {% endif %}>
|
||||||
{% if edition.ebooks.count %}
|
{% if edition.ebooks.count %}
|
||||||
|
@ -408,8 +379,11 @@
|
||||||
<a href="{{ebook.url}}">{{ ebook.format }}</a> {{ebook.rights}} at {{ebook.provider}}<br />
|
<a href="{{ebook.url}}">{{ ebook.format }}</a> {{ebook.rights}} at {{ebook.provider}}<br />
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% 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>
|
<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}}">
|
<form method="POST" action="#edition_{{edition.id}}">
|
||||||
{% csrf_token %}{{ edition.ebook_form.edition.errors }}{{ edition.ebook_form.edition }}{{ edition.ebook_form.user.errors }}{{ edition.ebook_form.user }}{{ edition.ebook_form.provider.errors }}{{ edition.ebook_form.provider }}
|
{% csrf_token %}{{ edition.ebook_form.edition.errors }}{{ edition.ebook_form.edition }}{{ edition.ebook_form.user.errors }}{{ edition.ebook_form.user }}{{ edition.ebook_form.provider.errors }}{{ edition.ebook_form.provider }}
|
||||||
{{ edition.ebook_form.url.errors }}<span>URL: {{ edition.ebook_form.url }}</span><br />
|
{{ edition.ebook_form.url.errors }}<span>URL: {{ edition.ebook_form.url }}</span><br />
|
||||||
|
@ -418,7 +392,8 @@
|
||||||
<input type="submit" name="add_ebook" value="add ebook" />
|
<input type="submit" name="add_ebook" value="add ebook" />
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
{% endifnotequal %}{% endif %}
|
{% endifnotequal %}
|
||||||
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
|
@ -428,8 +403,23 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div id="js-rightcol">
|
<div id="js-rightcol">
|
||||||
|
<div class="clearfix">
|
||||||
|
{% if status == 'ACTIVE' %}
|
||||||
|
{% if pledged %}
|
||||||
|
<div class="btn_support modify"><form action="{% url pledge_modify work_id %}" method="get"><input type="submit" value="Modify Pledge" /></form></div>
|
||||||
|
{% else %}
|
||||||
|
<div class="btn_support"><form action="{% url pledge work_id %}" method="get"><input type="submit" value="Pledge" /></form></div>
|
||||||
|
{% endif %}
|
||||||
|
{% else %}
|
||||||
|
{% if work.first_ebook %}
|
||||||
|
<div class="btn_support">
|
||||||
|
<a href="{% url download work_id %}" class="hijax"><span>Download</span></a>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
{% endif %}
|
||||||
|
</div>
|
||||||
|
<br />
|
||||||
<div class="js-rightcol-pad rounded">
|
<div class="js-rightcol-pad rounded">
|
||||||
|
|
||||||
<div class="jsmodule">
|
<div class="jsmodule">
|
||||||
<h3 class="jsmod-title"><span>Share</span></h3>
|
<h3 class="jsmod-title"><span>Share</span></h3>
|
||||||
<div class="jsmod-content">
|
<div class="jsmod-content">
|
||||||
|
@ -447,7 +437,8 @@
|
||||||
{% if request.user.is_authenticated %}<a href="{% url emailshare '' %}?next={{request.build_absolute_uri|urlencode:""}}"><li class="email"><span>Email</span></li></a>{% endif %}
|
{% if request.user.is_authenticated %}<a href="{% url emailshare '' %}?next={{request.build_absolute_uri|urlencode:""}}"><li class="email"><span>Email</span></li></a>{% endif %}
|
||||||
<a href="#" id="embed"><li class="embed"><span>Embed</span></li></a>
|
<a href="#" id="embed"><li class="embed"><span>Embed</span></li></a>
|
||||||
</ul>
|
</ul>
|
||||||
<div id="widgetcode">Copy/paste this into your site:<br /><textarea rows="7" cols="22"><iframe src="https://{{request.META.HTTP_HOST}}/api/widget/{{work.first_isbn_13}}/" width="152" height="325" frameborder="0"></iframe></textarea></div>
|
<div id="widgetcode">
|
||||||
|
Copy/paste this into your site:<br /><textarea rows="7" cols="22"><iframe src="https://{{request.META.HTTP_HOST}}/api/widget/{{work.first_isbn_13}}/" width="152" height="325" frameborder="0"></iframe></textarea></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% if status == 'ACTIVE' %}
|
{% if status == 'ACTIVE' %}
|
||||||
|
|
|
@ -116,6 +116,14 @@ def safe_get_work(work_id):
|
||||||
raise Http404
|
raise Http404
|
||||||
return work
|
return work
|
||||||
|
|
||||||
|
def cover_width(work):
|
||||||
|
if work.percent_of_goal() < 100:
|
||||||
|
cover_width = 100 - work.percent_of_goal()
|
||||||
|
else:
|
||||||
|
cover_width = 0
|
||||||
|
|
||||||
|
return cover_width
|
||||||
|
|
||||||
def home(request, landing=False):
|
def home(request, landing=False):
|
||||||
if request.user.is_authenticated() and landing == False:
|
if request.user.is_authenticated() and landing == False:
|
||||||
return HttpResponseRedirect(reverse('supporter',
|
return HttpResponseRedirect(reverse('supporter',
|
||||||
|
@ -161,7 +169,8 @@ def work(request, work_id, action='display'):
|
||||||
except:
|
except:
|
||||||
pledged = None
|
pledged = None
|
||||||
|
|
||||||
countdown = ""
|
logger.info("pledged: {0}".format(pledged))
|
||||||
|
cover_width_number = 0
|
||||||
|
|
||||||
try:
|
try:
|
||||||
assert not (work.last_campaign_status() == 'ACTIVE' and work.first_ebook())
|
assert not (work.last_campaign_status() == 'ACTIVE' and work.first_ebook())
|
||||||
|
@ -169,25 +178,7 @@ def work(request, work_id, action='display'):
|
||||||
logger.warning("Campaign running for %s when ebooks are already available: why?" % work.title )
|
logger.warning("Campaign running for %s when ebooks are already available: why?" % work.title )
|
||||||
|
|
||||||
if work.last_campaign_status() == 'ACTIVE':
|
if work.last_campaign_status() == 'ACTIVE':
|
||||||
from math import ceil
|
cover_width_number = cover_width(work)
|
||||||
time_remaining = campaign.deadline - now()
|
|
||||||
|
|
||||||
'''
|
|
||||||
we want to round up on all of these; if it's the 3rd and the
|
|
||||||
campaign ends the 8th, users expect to see 5 days remaining,
|
|
||||||
not 4 (as an artifact of 4 days 11 hours or whatever)
|
|
||||||
time_remaining.whatever is an int, so just adding 1 will do
|
|
||||||
that for us (except in the case where .days exists and both other
|
|
||||||
fields are 0, which is unlikely enough I'm not defending against it)
|
|
||||||
'''
|
|
||||||
if time_remaining.days:
|
|
||||||
countdown = "in %s days" % str(time_remaining.days + 1)
|
|
||||||
elif time_remaining.seconds > 3600:
|
|
||||||
countdown = "in %s hours" % str(time_remaining.seconds/3600 + 1)
|
|
||||||
elif time_remaining.seconds > 60:
|
|
||||||
countdown = "in %s minutes" % str(time_remaining.seconds/60 + 1)
|
|
||||||
else:
|
|
||||||
countdown = "right now"
|
|
||||||
|
|
||||||
if action == 'preview':
|
if action == 'preview':
|
||||||
work.last_campaign_status = 'ACTIVE'
|
work.last_campaign_status = 'ACTIVE'
|
||||||
|
@ -250,7 +241,7 @@ def work(request, work_id, action='display'):
|
||||||
'alert': alert,
|
'alert': alert,
|
||||||
'claimstatus': claimstatus,
|
'claimstatus': claimstatus,
|
||||||
'rights_holder_name': rights_holder_name,
|
'rights_holder_name': rights_holder_name,
|
||||||
'countdown': countdown,
|
'cover_width': cover_width_number
|
||||||
})
|
})
|
||||||
|
|
||||||
def new_edition(request, work_id, edition_id, by=None):
|
def new_edition(request, work_id, edition_id, by=None):
|
||||||
|
@ -763,6 +754,7 @@ class PledgeView(FormView):
|
||||||
'faqmenu': 'modify' if self.transaction else 'pledge',
|
'faqmenu': 'modify' if self.transaction else 'pledge',
|
||||||
'transaction': self.transaction,
|
'transaction': self.transaction,
|
||||||
'tid': self.transaction.id if self.transaction else None,
|
'tid': self.transaction.id if self.transaction else None,
|
||||||
|
'cover_width': cover_width(self.work)
|
||||||
})
|
})
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -59,36 +59,16 @@
|
||||||
width: auto;
|
width: auto;
|
||||||
padding-bottom: 7px;
|
padding-bottom: 7px;
|
||||||
}
|
}
|
||||||
|
|
||||||
div.btn_support {
|
|
||||||
float: right;
|
|
||||||
margin-top: 9px;
|
|
||||||
|
|
||||||
input {
|
|
||||||
font-size: @font-size-larger;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.modify input {
|
|
||||||
background:@blue-grey;
|
|
||||||
font-size: @font-size-default;
|
|
||||||
border: double white;
|
|
||||||
line-height: 17px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn_wishlist span {
|
.btn_wishlist span {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
|
||||||
.find-book {
|
.find-book label {
|
||||||
margin-top:15px;
|
|
||||||
|
|
||||||
label {
|
|
||||||
float:left;
|
float:left;
|
||||||
line-height:31px;
|
line-height:31px;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.find-link {
|
.find-link {
|
||||||
float:right;
|
float:right;
|
||||||
|
@ -100,13 +80,80 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
.pledged-info {
|
.pledged-info {
|
||||||
padding:0;
|
padding:10px 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
||||||
|
&.noborder {
|
||||||
|
border-top: none;
|
||||||
|
padding-top: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.pledged-group {
|
.campaign-status-info {
|
||||||
padding:10px 40px 10px 0;
|
|
||||||
float: left;
|
float: left;
|
||||||
|
width: 50%;
|
||||||
|
margin-top: @font-size-default;
|
||||||
|
|
||||||
|
span {
|
||||||
|
font-size: @font-size-larger;
|
||||||
|
color: @medium-blue;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.thermometer {
|
||||||
|
.one-border-radius(10px);
|
||||||
|
border: solid 2px @blue-grey;
|
||||||
|
width: 291px;
|
||||||
|
padding: 7px;
|
||||||
|
position: relative;
|
||||||
|
overflow: visible;
|
||||||
|
|
||||||
|
/* looks better if we start the gradient a little closer to the success color */
|
||||||
|
@greener-than-alert: #CF6944;
|
||||||
|
|
||||||
|
background: -webkit-gradient(linear, left top, right top, from(@call-to-action), to(@greener-than-alert));
|
||||||
|
background: -webkit-linear-gradient(left, @greener-than-alert, @call-to-action);
|
||||||
|
background: -moz-linear-gradient(left, @greener-than-alert, @call-to-action);
|
||||||
|
background: -ms-linear-gradient(left, @greener-than-alert, @call-to-action);
|
||||||
|
background: -o-linear-gradient(left, @greener-than-alert, @call-to-action);
|
||||||
|
background: linear-gradient(left, @greener-than-alert, @call-to-action);
|
||||||
|
|
||||||
|
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='@alert', endColorstr='@call-to-action'); /* IE6 & IE7 */
|
||||||
|
-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr='@alert', endColorstr='@call-to-action')"; /* IE8+ */
|
||||||
|
|
||||||
|
&.successful {
|
||||||
|
border-color: @bright-blue;
|
||||||
|
background: @pale-blue;
|
||||||
|
}
|
||||||
|
|
||||||
|
.cover {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
.border-radius(0, 10px, 10px, 0);
|
||||||
|
width: 50px;
|
||||||
|
height: 14px;
|
||||||
|
margin-top: -7px;
|
||||||
|
background: lighten(@blue-grey, 10%);
|
||||||
|
}
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:hover span {
|
||||||
|
display: block;
|
||||||
|
position: absolute;
|
||||||
|
z-index: 200;
|
||||||
|
right: 0;
|
||||||
|
top:-7px;
|
||||||
|
font-size: @font-size-header;
|
||||||
|
color: @medium-blue;
|
||||||
|
background: white;
|
||||||
|
border: 2px solid @blue-grey;
|
||||||
|
.one-border-radius(10px);
|
||||||
|
padding: 5px;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.status {
|
.status {
|
||||||
|
|
|
@ -298,6 +298,18 @@ div#content-block-content {
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Right column */
|
/* Right column */
|
||||||
|
|
||||||
|
/* Right - add/remove actions below big green button */
|
||||||
|
#js-rightcol {
|
||||||
|
.add-wishlist, .on-wishlist, .create-account {
|
||||||
|
float: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.on-wishlist {
|
||||||
|
margin-left: 20px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#js-rightcol, #pledge-rightcol {
|
#js-rightcol, #pledge-rightcol {
|
||||||
float:right;
|
float:right;
|
||||||
width:235px;
|
width:235px;
|
||||||
|
@ -347,6 +359,57 @@ div#content-block-content {
|
||||||
padding:10px;
|
padding:10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.btn_support {
|
||||||
|
margin: 10px;
|
||||||
|
width: 215px;
|
||||||
|
|
||||||
|
a, form input, > span {
|
||||||
|
font-size: @font-size-shout;
|
||||||
|
border: 4px solid @blue-grey;
|
||||||
|
.one-border-radius(10px);
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
padding-top: @font-size-header*.75;
|
||||||
|
padding-bottom: @font-size-header*.75;
|
||||||
|
background-color: @call-to-action;
|
||||||
|
|
||||||
|
span {
|
||||||
|
color: white !important;
|
||||||
|
font-weight: bold;
|
||||||
|
padding-left: 0;
|
||||||
|
margin-left: 0 !important;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&.create-account span {
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
background: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a:hover, form input:hover {
|
||||||
|
background-color: darken(@call-to-action, 7%);
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
width: 207px;
|
||||||
|
}
|
||||||
|
|
||||||
|
form input {
|
||||||
|
width: 215px;
|
||||||
|
}
|
||||||
|
|
||||||
|
&.modify a, &.modify form input {
|
||||||
|
background-color: @medium-blue-grey;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: darken(@medium-blue-grey, 7%);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Right column - support tiers */
|
/* Right column - support tiers */
|
||||||
ul.support li {
|
ul.support li {
|
||||||
border-bottom:1px solid @blue-grey;
|
border-bottom:1px solid @blue-grey;
|
||||||
|
|
|
@ -28,6 +28,11 @@
|
||||||
border-color: @blue-grey;
|
border-color: @blue-grey;
|
||||||
font-size: @font-size-default;
|
font-size: @font-size-default;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
&.alert {
|
||||||
|
border-color: @alert;
|
||||||
|
font-size: @font-size-default;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.preview_content {
|
.preview_content {
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
@font-size-default: 13px;
|
@font-size-default: 13px;
|
||||||
@font-size-larger: 15px;
|
@font-size-larger: 15px;
|
||||||
@font-size-header: 19px;
|
@font-size-header: 19px;
|
||||||
|
@font-size-shout: 22px;
|
||||||
@link-color: #6994a3;
|
@link-color: #6994a3;
|
||||||
|
|
||||||
.header-text {
|
.header-text {
|
||||||
|
|
Loading…
Reference in New Issue