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

pull/1/head
Raymond Yee 2012-05-21 08:54:05 -07:00
commit 2f232c29fd
23 changed files with 360 additions and 132 deletions

View File

@ -23,7 +23,7 @@
<a href="/api/v1/campaign/?format=json&amp;api_key={{api_key}}&amp;username={{user.username}}">{{base_url}}/api/v1/campaign/?format=json&amp;api_key={api_key}&amp;username={username}</a>
<h3>Identifier Resolution</h3>
<p>JSON to get work/edition data for an isbn</p>
<a href="/api/v1/identifier/?format=json&amp;api_key={{api_key}}&amp;type=isbn&amp;value=9780441012039">{{base_url}}/api/v1/identifier/?format=json&amp;api_key={api_key}&amp;ype=isbn&amp;value=9780441012039</a>
<a href="/api/v1/identifier/?format=json&amp;api_key={{api_key}}&amp;username={{user.username}}&amp;type=isbn&amp;value=9780441012039">{{base_url}}/api/v1/identifier/?format=json&amp;api_key={api_key}&amp;username={username}&amp;ype=isbn&amp;value=9780441012039</a>
<p> In addition to isbn, you can use 'goog' if you have a google books id, and 'oclc' for oclc numbers.</p>
{% endif %}

View File

@ -70,6 +70,16 @@ class ApiTests(TestCase):
self.assertEqual(j['meta']['logged_in_username'], None)
self.assertEqual(j['objects'][0]['in_wishlist'], False)
def test_identifier_lookup(self):
r = self.client.get('/api/v1/identifier/', data={
'format': 'json',
'value': regluit.core.isbn.convert_10_to_13('0441012035'),
'type': 'isbn',
'username': self.user.username,
'api_key': self.user.api_key.key
})
self.assertEqual(r.status_code, 200)
def test_logged_in_user_info(self):
# login and see if adding a work to the users wishlist causes
# it to show up as in_wishlist in the campaign info

View File

@ -111,9 +111,10 @@ class CampaignAction(models.Model):
type = models.CharField(max_length=15)
comment = models.TextField(null=True, blank=True)
campaign = models.ForeignKey("Campaign", related_name="actions", null=False)
class Campaign(models.Model):
LICENSE_CHOICES = (('CC BY-NC-ND','CC BY-NC-ND'),
class CCLicense():
CCCHOICES = (
('CC BY-NC-ND','CC BY-NC-ND'),
('CC BY-ND','CC BY-ND'),
('CC BY','CC BY'),
('CC BY-NC','CC BY-NC'),
@ -121,6 +122,53 @@ class Campaign(models.Model):
( 'CC BY-SA','CC BY-SA'),
( 'CC0','CC0'),
)
CHOICES = CCCHOICES+(('PD-US', 'Public Domain, US'),)
@classmethod
def url(klass, license):
if license == 'PD-US':
return 'http://creativecommons.org/publicdomain/mark/1.0/'
elif license == 'CC0':
return 'http://creativecommons.org/publicdomain/zero/1.0/'
elif license == 'CC BY':
return 'http://creativecommons.org/licenses/by/3.0/'
elif license == 'CC BY-NC-ND':
return 'http://creativecommons.org/licenses/by-nc-nd/3.0/'
elif license == 'CC BY-NC-SA':
return 'http://creativecommons.org/licenses/by-nc-sa/3.0/'
elif license == 'CC BY-NC':
return 'http://creativecommons.org/licenses/by-nc/3.0/'
elif license == 'CC BY-SA':
return 'http://creativecommons.org/licenses/by-sa/3.0/'
elif license == 'CC BY-ND':
return 'http://creativecommons.org/licenses/by-nd/3.0/'
else:
return ''
@classmethod
def badge(klass,license):
if license == 'PD-US':
return 'https://i.creativecommons.org/p/mark/1.0/88x31.png'
elif license == 'CC0':
return 'https://i.creativecommons.org/p/zero/1.0/88x31.png'
elif license == 'CC BY':
return 'https://i.creativecommons.org/l/by/3.0/88x31.png'
elif license == 'CC BY-NC-ND':
return 'https://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png'
elif license == 'CC BY-NC-SA':
return 'https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png'
elif license == 'CC BY-NC':
return 'https://i.creativecommons.org/l/by-nc/3.0/88x31.png'
elif license == 'CC BY-SA':
return 'https://i.creativecommons.org/l/by-sa/3.0/88x31.png'
elif license == 'CC BY-ND':
return 'https://i.creativecommons.org/l/by-nd/3.0/88x31.png'
else:
return ''
class Campaign(models.Model):
LICENSE_CHOICES = CCLicense.CCCHOICES
created = models.DateTimeField(auto_now_add=True)
name = models.CharField(max_length=500, null=True, blank=False)
description = models.TextField(null=True, blank=False)
@ -269,13 +317,22 @@ class Campaign(models.Model):
def rightsholder(self):
"""returns the name of the rights holder for an active or initialized campaign"""
try:
if self.status=='ACTIVE' or self.status=='INITIALIZED':
q = Q(status='ACTIVE') | Q(status='INITIALIZED')
rh = self.work.claim.filter(q)[0].rights_holder.rights_holder_name
return rh
if self.status=='ACTIVE' or self.status=='INITIALIZED':
q = Q(status='ACTIVE') | Q(status='INITIALIZED')
rh = self.work.claim.filter(q)[0].rights_holder.rights_holder_name
return rh
except:
pass
return ''
@property
def license_url(self):
return CCLicense.url(self.license)
@property
def license_badge(self):
return CCLicense.badge(self.license)
class Identifier(models.Model):
# olib, ltwk, goog, gdrd, thng, isbn, oclc, olwk, olib, gute, glue
@ -610,15 +667,7 @@ class WasWork(models.Model):
class Ebook(models.Model):
FORMAT_CHOICES = (('pdf','PDF'),( 'epub','EPUB'), ('html','HTML'), ('text','TEXT'), ('mobi','MOBI'))
RIGHTS_CHOICES = (('PD-US', 'Public Domain, US'),
('CC BY-NC-ND','CC BY-NC-ND'),
('CC BY-ND','CC BY-ND'),
('CC BY','CC BY'),
('CC BY-NC','CC BY-NC'),
( 'CC BY-NC-SA','CC BY-NC-SA'),
( 'CC BY-SA','CC BY-SA'),
( 'CC0','CC0'),
)
RIGHTS_CHOICES = CCLicense.CHOICES
url = models.URLField(max_length=1024)
created = models.DateTimeField(auto_now_add=True)
format = models.CharField(max_length=25, choices = FORMAT_CHOICES)
@ -635,27 +684,9 @@ class Ebook(models.Model):
@property
def rights_badge(self):
my_rights=self.rights
if not my_rights:
return 'https://i.creativecommons.org/p/mark/1.0/88x31.png'
if my_rights == 'PD-US':
return 'https://i.creativecommons.org/p/mark/1.0/88x31.png'
elif my_rights == 'CC0':
return 'https://i.creativecommons.org/p/zero/1.0/88x31.png'
elif my_rights == 'CC BY':
return 'https://i.creativecommons.org/l/by/3.0/88x31.png'
elif my_rights == 'CC BY-NC-ND':
return 'https://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png'
elif my_rights == 'CC BY-NC-SA':
return 'https://i.creativecommons.org/l/by-nc-sa/3.0/88x31.png'
elif my_rights == 'CC BY-NC':
return 'https://i.creativecommons.org/l/by-nc/3.0/88x31.png'
elif my_rights == 'CC BY-SA':
return 'https://i.creativecommons.org/l/by-sa/3.0/88x31.png'
elif my_rights == 'CC BY-ND':
return 'https://i.creativecommons.org/l/by-nd/3.0/88x31.png'
else:
return ''
if self.rights is None :
return CCLicense.badge('PD-US')
return CCLicense.badge(self.rights)
@classmethod
def infer_provider(klass, url):

View File

@ -350,7 +350,11 @@ class CampaignTests(TestCase):
w = Work()
w.save()
c = Campaign(target=D('1000.00'), deadline=datetime(2013, 1, 1), work=w)
c.license = 'CC BY-NC'
c.save()
self.assertEqual(c.license_url, 'http://creativecommons.org/licenses/by-nc/3.0/')
self.assertEqual(c.license_badge, 'https://i.creativecommons.org/l/by-nc/3.0/88x31.png')
def test_campaign_status(self):

View File

@ -241,7 +241,21 @@ def getManageCampaignForm ( instance, data=None, *args, **kwargs ):
new_license = self.cleaned_data['license']
if self.instance:
if self.instance.status == 'ACTIVE' and self.instance.license != new_license:
raise forms.ValidationError(_('The license for an ACTIVE campaign cannot be changed.'))
# should only allow change to a less restrictive license
if self.instance.license == 'CC BY-ND' and new_license in ['CC BY-NC-ND','CC BY-NC-SA','CC BY-NC']:
raise forms.ValidationError(_('The proposed license for an ACTIVE campaign may not add restrictions.'))
elif self.instance.license == 'CC BY' and new_license != 'CC0':
raise forms.ValidationError(_('The proposed license for an ACTIVE campaign may not add restrictions.'))
elif self.instance.license == 'CC BY-NC' and new_license in ['CC BY-NC-ND','CC BY-NC-SA','CC BY-SA','CC BY-ND']:
raise forms.ValidationError(_('The proposed license for an ACTIVE campaign may not add restrictions.'))
elif self.instance.license == 'CC BY-ND' and new_license in ['CC BY-NC-ND','CC BY-NC-SA','CC BY-SA','CC BY-NC']:
raise forms.ValidationError(_('The proposed license for an ACTIVE campaign may not add restrictions.'))
elif self.instance.license == 'CC BY-SA' and new_license in ['CC BY-NC-ND','CC BY-NC-SA','CC BY-ND','CC BY-NC']:
raise forms.ValidationError(_('The proposed license for an ACTIVE campaign may not add restrictions.'))
elif self.instance.license == 'CC BY-NC-SA' and new_license in ['CC BY-NC-ND','CC BY-ND']:
raise forms.ValidationError(_('The proposed license for an ACTIVE campaign may not add restrictions.'))
elif self.instance.license == 'CC0' :
raise forms.ValidationError(_('The proposed license for an ACTIVE campaign may not add restrictions.'))
return new_license
return ManageCampaignForm(instance = instance, data=data)

View File

@ -0,0 +1,25 @@
<div id="about_expandable">
<div id="about_collapser" class="collapser_x">X</div>
<p>
<b>What if you could</b> buy an ebook and read it on any device, in any format, forever? What if you could give an ebook to your library, for them to share? What if you could have DRM-free ebooks, legally? What if you could have free ebooks, and know their creators had been fairly paid?
</p>
<p>
At Unglue.it, you can pledge toward creating ebooks that will be legally free, worldwide. These books have already been traditionally published, but they're stuck: legal restrictions keep you from being able to enjoy and share them.
</p>
<p>
Unglue.it gets them unstuck. We work with authors and publishers to choose a fair licensing fee. When we raise that money here through crowdfunding -- people like you chipping in -- the rights holders get paid, and they issue a free electronic edition under a <a href=http://creativecommons.org">Creative Commons</a> license.
</p>
<p>
What if you could buy a book for yourself -- and give a copy to everyone on earth?
</p>
<p class="last">
What if you could <b>unglue it</b>?
</p>
<div class="right_border"><a href="{{ faqurl }}">Read the FAQ</a></div>
<div class="right_border"><a href="{% url faq_location 'rightsholders' %}">Read the FAQ for authors and publishers</a></div>
<div class="right_border"><a href="{% url press %}">Our press coverage</a></div>
{% if not user.is_authenticated %}
<div class="signuptoday"><a href="{% url registration_register %}">Sign up today</a></div>
{% endif %}
</div>
</div>

View File

@ -25,6 +25,27 @@
{% endblock %}
<script type="text/javascript" src="/static/js/watermark_init.js"></script>
<script type="text/javascript" src="/static/js/watermark_change.js"></script>
<script type="text/javascript">
var $j = jQuery.noConflict();
$j(document).ready(function(){
$j('#about_expander').click(function(){
$j('#js-topsection').css({"opacity": "0.07"});
$j('.launch_top').css({"opacity": "0.07"});
$j('#main-container').css({"opacity": "0.07"});
$j('#js-rightcol').css({"opacity": "0.07"});
$j('#js-header').css({"opacity": "0.07"});
$j('#about_expandable').fadeTo("slow", 1);
});
$j('#about_collapser').click(function(){
$j('#js-topsection').fadeTo("slow", 1);
$j('.launch_top').fadeTo("slow", 1);
$j('#main-container').fadeTo("slow", 1);
$j('#js-rightcol').fadeTo("slow", 1);
$j('#js-header').fadeTo("slow", 1);
$j('#about_expandable').css({"display": "none"});
});
});
</script>
{% block extra_head %}
{% endblock %}
</head>
@ -34,6 +55,9 @@
<div id="feedback">
<p><a href="/feedback/?page={{request.build_absolute_uri|urlencode:""}}" class="nounderline">Feedback</a></p>
</div>
{% include "about_lightbox.html" %}
<div id="js-page-wrap">
<div id="js-header">
<div class="js-main">
@ -68,7 +92,7 @@
<li class="first"><a href="{% url auth_login %}?next={% firstof request.path '/' %}"><span>Sign In</span></a></li>
{% endif %}
<li><a href="{{ faqurl }}"><span>FAQs</span></a></li>
<li><a href="{{ pressurl }}"><span>Press</span></a></li>
<li id="about_expander"><a href="#"><span>About</span></a></li>
<li><a href="/"><span>Home</span></a></li>
{% if not user.is_authenticated %}
<li class="last" id="expander"><a href="{% url registration_register %}"><span>sign up</span></a></li>
@ -95,7 +119,7 @@ Unglue.it has launched! Please consider supporting our <a href="/campaigns/endi
<div class="column">
<span>About Unglue.it</span>
<ul>
<li><a href="{{ abouturl }}">About</a></li>
<li><a href="{{ abouturl }}">Team</a></li>
<li><a href="http://blog.unglue.it">Blog</a></li>
<li><a href="{{ pressurl }}">Press</a></li>
<li><a href="http://eepurl.com/fKLfI">Newsletter</a></li>

View File

@ -172,7 +172,7 @@
<div class="booklist-status-img">
<img src="/static/images/images/icon-book-37by25-{{ work.percent_unglued }}.png" title="book list status" alt="book list status" />
</div>
<div class="booklist-status-label panel">{{ work.percent_of_goal }}%</div>
{% if status == 'ACTIVE' or status == 'SUCCESSFUL' %}<div class="booklist-status-label panel">{{ work.percent_of_goal }}%</div>{% endif %}
{% endif %}{% endif %}
</div>
<div class="listview panelfront side1 ebooks">

View File

@ -40,7 +40,9 @@ To fund a campaign, you'll need a valid credit card. To start a campaign, you'l
<dd>No. When you unglue a book, the copyright stays with its current owner. A <a href="http://creativecommons.org">Creative Commons</a> license is a licensing agreement. As with other licensing agreements, it grants certain rights to others but does not affect the status of the copyright.<br /><br />
Therefore, if you are a copyright holder, you retain your copyright when you unglue a book. Creative Commons licenses are non-exclusive, so you also retain the right to enter into separate licensing agreements. This means you may still, if you have the rights, sell print and electronic versions of your work and license derivative works such as translations and films. You can read more about these licenses at the <a href="http://wiki.creativecommons.org/Frequently_Asked_Questions">Creative Commons FAQ</a>.</dd>
Just like many traditional publishing transactions, ungluing is about licensing rights. We use <a href="http://creativecommons.org">Creative Commons</a> licenses to make ebooks available to the world while respecting and protecting copyright.<br /><br />
If you are a copyright holder, you retain your copyright when you unglue a book. Creative Commons licenses are non-exclusive, so you also retain the right to enter into separate licensing agreements. You can read more about these licenses at the <a href="http://wiki.creativecommons.org/Frequently_Asked_Questions">Creative Commons FAQ</a>.</dd>
<dt>If I'm a rights holder and I unglue my book, does that mean I can never make money from it again?</dt>
@ -311,7 +313,8 @@ Unglued ebooks are a win-win solution for readers, libraries, and authors, publi
<h4>Using Your Unglued Ebook</h4>
<dl>
<dt>What can I do, legally, with an unglued ebook? What can I <I>not</I> do?</dt>
<dd>All unglued ebooks are released under a Creative Commons license. Unless otherwise indicated for specific books, we use the <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-NonCommercial-NoDerivatives license (CC BY-NC-ND) license</a>. The rights holder chooses which Creative Commons license to apply.<br /><br />
<dd>All unglued ebooks are released under a Creative Commons license. Unless otherwise indicated for specific books, we use the <a href="creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons Attribution-NonCommercial-NoDerivatives license (CC BY-NC-ND) license</a>. The rights holder chooses which Creative Commons license to apply.<br /><br />
Creative Commons licenses mean that you <b>can</b>: make copies; keep them for as long as you like; shift them to other formats (like .mobi or PDF); share them with friends or on the internet; download them for free.<br /><br />
@ -322,7 +325,9 @@ Under ND (no derivatives) licenses, you <b>cannot</b>: make derivative works, s
Under all CC licenses (except CC0), you <b>cannot</b>: remove the author's name from the book, or otherwise pass it off as someone else's work; or remove or change the CC license.</dd>
<dt>What does non-commercial mean under Creative Commons?</dt>
<dd>Creative Commons doesn't define "commercial" thoroughly (though it's worth reading what <a href="http://wiki.creativecommons.org/FAQ#Does_my_use_violate_the_NonCommercial_clause_of_the_licenses.3F">they have to say on the topic</a>). So as part of the Unglue.it process, ungluing rights holders agree that "For purposes of interpreting the CC License, Rights Holder agrees that 'non-commercial' use shall include, without limitation, distribution by a commercial entity without charge for access to the Work."<br /><br />
Unglue.it can't provide legal advice about how to interpret Creative Commons licenses, and we encourage you to read about the licenses yourself and, if necessary, seek qualified legal advice.</dd>
<dt>Are the unglued ebooks compatible with my device? Do I need to own an ereader, like a Kindle or a Nook, to read them?</dt>
@ -483,6 +488,7 @@ Need more ideas? We're happy to work with rights holders personally to craft a
<h4>Funding</h4>
<dt>Is a PayPal account required to launch a campaign?</dt>
<dd>At this time, Unglue.it requires that rights holders have PayPal accounts as it will simplify the process of paying you when a campaign succeeds. </dd>
<dt>Is an Amazon account required to launch a campaign?</dt>

View File

@ -9,6 +9,7 @@
<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" />
<link type="text/css" rel="stylesheet" href="/static/css/learn_more.css" />
{% endblock %}
{% block base_js %}
@ -41,7 +42,7 @@
<div id="js-rightcol2">
<div id="js-rightcol-padd2">
<div class="jsmodule">
<div id="collapser">X</div>
<div id="collapser" class="collapser_x">X</div>
<h3 class="module-title">Start Ungluing Now!</h3>
<div class="jsmod-content">
<form action='/accounts/register/' method='post'>{% csrf_token %}

View File

@ -169,8 +169,9 @@ Please fix the following before launching your campaign:
${{ form.target.errors }}{{ form.target }}
<h3>License being offered</h3>
<p>If your campaign succeeds, you will be offering your ebook under a <b>{{ campaign.license }}</b> license.</p>
{{ form.license.errors }}<span style="display: none">{{ form.license }}</span>
<p>If your campaign succeeds, you will be offering your ebook under a <b><a href="{{campaign.license_url }}">{{ campaign.license }}</a></b> license.</p>
<p>During a campaign, you may only change the license to remove restrictions. For more info on the licenses you can use, see <a href="http://creativecommons.org/licenses">Creative Commons: About the Licenses</a>.</p></p>
{{ form.license.errors }}<span>{{ form.license }}</span>
<h3>Ending date</h3>
<p>The ending date of your campaign is <b>{{ campaign.deadline }}</b>. Your campaign will conclude on this date or when you meet your target price, whichever is earlier. You may not change the ending date of an active campaign.</p>
{{ form.deadline.errors }}<span style="display: none">{{ form.deadline }}</span>

View File

@ -21,21 +21,18 @@
<div class="pressemail">
Additional press questions? Please email <a href="mailto:press@gluejar.com">press@gluejar.com</a>.
</div>
<div class="press_spacer"></div>
<div class="pressemail">
Thanks for your interest! As of January 2011 Unglue.it is in alpha release. Things are mostly working but they're rough around the edges and may change without notice. Please do kick the tires and forgive us any mess.
</div>
<div class="spacer"></div>
</div>
<a id="latest"></a><h2>Latest Press</h2>
<div class="pressarticles">
<div>
<a href="http://boingboing.net/2012/05/18/raising-money-to-free-classic.html">Raising money to free classic volume on Africa's oral literature</a><br />
Boing Boing - May 18, 2012<br />
<a href="http://www.huffingtonpost.com/2012/05/21/unglueit-free-ebooks-crowdfunding_n_1532644.html">Unglue.it Makes Free EBooks Through A Unique Crowdfunding Website</a><br />
Huffington Post - May 21, 2012
</div>
<div>
<a href="http://www.thedigitalshift.com/2012/05/roy-tennant-digital-libraries/pay-to-free-a-book/">Pay to Free a Book</a><br />
Roy Tennant: Digital Libraries (School Library Journal/Library Journal) - May 17, 2012<br />
<a href="http://boingboing.net/2012/05/18/raising-money-to-free-classic.html">Raising money to free classic volume on Africa's oral literature</a><br />
Boing Boing - May 18, 2012<br />
</div>
<div>
<a href="http://lj.libraryjournal.com/2012/05/publishing/ebook-crowdfunding-platform-unglue-it-launched/">Ebook Crowdfunding Platform Unglue.it Launched</a><br />
@ -47,28 +44,39 @@
<dl>
<dt>What?</dt>
<dd>Unglue.it offers a win-win solution to readers, who want to read and share their favorite books conveniently, and rights holders, who want to be rewarded for their work.<br /><br />
We will run <a href="http://en.wikipedia.org/wiki/Crowdfunding">crowdfunding</a> campaigns to raise money for specific, already-published books. When we reach goals set by the rights holders, we'll pay them to unglue their work. They'll issue an electronic edition with a <a href="http://creativecommons.org">Creative Commons</a> <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">BY-NC-ND</a> license. This license will make the edition free and legal for everyone to read, copy, and share, noncommercially, worldwide.<br /><br />
At present, in our alpha phase, we're not running live campaigns (though you may see some fake campaign data for testing purposes). However, most of the other features of the site -- such as searching for books, adding them to your wishlist, and personalizing your user profile -- work. We invite you to try them out and give us feedback.<br /><br />
Once we've fully tested our payment processes and user experience, we'll have a beta launch. At this point we'll announce our founding rights holders, run live campaigns, and invite everyone to join the site.</dd>
We run <a href="http://en.wikipedia.org/wiki/Crowdfunding">crowdfunding</a> campaigns to raise money for specific, already-published books. When we reach goals set by the rights holders, we'll pay them to unglue their work. They'll issue an electronic edition with a <a href="http://creativecommons.org">Creative Commons</a> license as specified during the campaign. These licenses will make the edition free and legal for everyone to read, copy, and share, worldwide.<br /><br />
At Unglue.it, book lovers can pledge money to support these campaigns; add books to their wishlist to tell the world about their favorites; discuss their favorite books; share their Unglue.it pages via social media; and find direct links to public domain and unglued ebooks that they can read right away.
<dt>Why?</dt>
<dd>As ereaders proliferate, more and more people are enjoying the ereading experience. However, their favorite books may not be available as ebooks. Their ebooks may come with DRM which makes them unreadable on certain devices, and difficult or impossible to lend to friends. Or they may not be able to tell if they have the legal right to use the book as they'd like. The situation is even more challenging for libraries, which may not be able to acquire ebooks at all, or can only acquire them under legal terms and DRM restrictions which run counter to library lending.<br /><br />
<dd>As ereaders proliferate, more and more people are enjoying the ereading experience. However, their favorite books may not be available as ebooks. Their ebooks may come with DRM which makes them unreadable on certain devices, and difficult or impossible to lend to friends. Or they may not be able to tell if they have the legal right to use the book as they'd like. The situation is even more challenging for libraries, which cannot acquire some ebooks at all, and can only acquire them under legal terms and DRM restrictions which run counter to library lending.<br /><br />
When books have a clear, established legal license which promotes use, they can be read more widely, leading to enjoyment, scholarship, and innovation. By raising money to compensate authors and publishers up front, Unglue.it encourages the benefits of openness while ensuring sustainability for creators.<br /><br />
For more background, read our president Eric Hellman's thoughts on <a href="http://go-to-hellman.blogspot.com/2011/04/public-broadcasting-model-for-ebooks.html">a public broadcasting model for ebooks</a> (on why the numbers work) and <a href="http://go-to-hellman.blogspot.com/search/label/Unglue.it">the development of Unglue.it</a>.</dd>
<dt>Who?</dt>
<dd>Unglue.it is a service of Gluejar, Inc. We are <a href="{% url supporter "eric" %}">Eric Hellman</a>, <a href="{% url supporter "AmandaM" %}">Amanda Mecke</a>, <a href="{% url supporter "RaymondYee" %}">Raymond Yee</a>, and <a href="{% url supporter "andromeda" %}">Andromeda Yelton</a>, with help from designer Stefan Fabry and software developers Jason Kace and <a href="{% url supporter "edsu" %}">Ed Summers</a>. We come from the worlds of entrepreneurship, linked data, physics, publishing, education, and library science, to name a few. You can learn more about us at our Unglue.it pages (linked above) or <a href="http://gluejar.com/team">the team page</a> of our corporate site.</dd>
<dd>Unglue.it is a service of Gluejar, Inc. We are <a href="{% url supporter "eric" %}">Eric Hellman</a>, <a href="{% url supporter "AmandaM" %}">Amanda Mecke</a>, <a href="{% url supporter "rdhyee" %}">Raymond Yee</a>, and <a href="{% url supporter "andromeda" %}">Andromeda Yelton</a>, with help from designer Stefan Fabry and software developers Jason Kace and <a href="{% url supporter "edsu" %}">Ed Summers</a>. We come from the worlds of entrepreneurship, linked data, physics, publishing, education, and library science, to name a few. You can learn more about us at our Unglue.it pages (linked above) or our <a href="/about/">about page</a>.</dd>
<dt>When?</dt>
<dd>Unglue.it is in alpha -- a limited release for testing purposes -- as of January 2011. If you <a href="http://eepurl.com/fKLfI">sign up for our newsletter</a>, we'll tell you the moment we're in beta. At that point we'll have active campaigns and we will open account signups to everyone.</dd>
<dd>Unglue.it launched May 17, 2012.</dd>
<dt>Where?</dt>
<dd>Gluejar is a New Jersey corporation, but its employees and contractors live and work across North America. The best way to contact us is by email, <a href="mailto:press@gluejar.com">press@gluejar.com</a>.</dd>
<dt>What does it cost?</dt>
<dd>Unglue.it is free to join and explore. Supporters pay only if they choose to support campaigns, and the amount is up to them. Unglue.it takes a small percentage from successful campaigns, with the remainder going to the rights holders.</dd>
<dd>Unglue.it is free to join and explore. Supporters pledge money only if they choose to support campaigns, and the amount is up to them. They are charged only if the campaigns reach their goal price. Unglue.it takes a small percentage from successful campaigns, with the remainder going to the rights holders.</dd>
<dt>What's your technology?</dt>
<dd>Unglue.it is built using <a href="http://python.org/">Python</a> and the <a href="https://www.djangoproject.com/">Django framework</a>. We use data from the <a href="http://code.google.com/apis/books/docs/v1/getting_started.html">Google Books</a>, <a href="http://openlibrary.org/developers/api">Open Library</a>, <a href="http://www.librarything.com/api">LibraryThing</a>, and <a href="http://www.goodreads.com/api">GoodReads</a> APIs; we appreciate that they've made these APIs available, and we're returning the favor with <a href="/api/help">our own API</a>. You're welcome to use it. We use <a href="http://lesscss.org/">Less</a> to organize our CSS. We collaborate on our code at <a href="https://github.com/">GitHub</a> and deploy to the cloud with <a href="http://aws.amazon.com/ec2/">Amazon EC2</a>.</dd>
<dd>Unglue.it is built using <a href="http://python.org/">Python</a> and the <a href="https://www.djangoproject.com/">Django framework</a>. We use data from the <a href="http://code.google.com/apis/books/docs/v1/getting_started.html">Google Books</a>, <a href="http://openlibrary.org/developers/api">Open Library</a>, <a href="http://www.librarything.com/api">LibraryThing</a>, and <a href="http://www.goodreads.com/api">GoodReads</a> APIs; we appreciate that they've made these APIs available, and we're returning the favor with <a href="/api/help">our own API</a>. You're welcome to use it. We use <a href="http://lesscss.org/">Less</a> to organize our CSS. We process pledges with <a href="https://payments.amazon.com/">Amazon Payments</a>. We collaborate on our code at <a href="https://github.com/">GitHub</a> and deploy to the cloud with <a href="http://aws.amazon.com/ec2/">Amazon EC2</a>.</dd>
<dt>How does the license work? Why did you choose this license?</dt>
<dd>
The default Unglue.it license is a <a href="http://creativecommons.org/licenses/by-nc-nd/3.0/">Creative Commons BY-NC-ND</a> license. This license makes the edition free and legal for everyone to read, copy, and share worldwide. It requires that the author be credited and does not allow commercial use or derivative works (such as film adaptations) without additional permission from the rights holder.<br /><br />
We chose this license because it's a worldwide standard that has been developed by legal experts and tested in court. It invites readers to enjoy the book while providing clarity about their legal rights. It strikes a balance between rights holders' interests in promoting their work today and retaining certain potentially valuable rights for the future.<br /><br />
Creative Commons offers a variety of other licenses, many of them with even less restrictive terms. Unglue.it is happy to use any of them, if the rights holder prefers.
</dd>
<dt>I have more questions...</dt>
<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>
</dl>
<a id="press"></a><h2>Press Coverage</h2>
<div class="pressarticles">
<div>
<a href="http://www.huffingtonpost.com/2012/05/21/unglueit-free-ebooks-crowdfunding_n_1532644.html">Unglue.it Makes Free EBooks Through A Unique Crowdfunding Website</a><br />
Huffington Post - May 21, 2012
</div>
<div>
<a href="http://lj.libraryjournal.com/2012/05/publishing/ebook-crowdfunding-platform-unglue-it-launched/">Ebook Crowdfunding Platform Unglue.it Launched</a><br />
Library Journal - May 17, 2012
@ -133,6 +141,10 @@ For more background, read our president Eric Hellman's thoughts on <a href="http
<a href="http://boingboing.net/2012/05/18/raising-money-to-free-classic.html">Raising money to free classic volume on Africa's oral literature</a><br />
Boing Boing - May 18, 2012<br />
</div>
<div>
<a href="http://dltj.org/article/unglueit-launches/">Unglue.It — a service to crowdsource book licensing fees — launches</a><br />
Disruptive Library Technology Jester - May 18, 2012<br />
</div>
<div>
<a href="http://www.scinoptica.com/pages/topics/unglue.it-befreit-buecher-mit-crowdfunding.php">unglue.it befreit Bücher mittels Crowdfunding</a> <I>(German)</I><br />
scinoptica - May 18, 2012<br />

View File

@ -4,13 +4,17 @@
{% if form.errors %}
<p class="errorlist">Your username and password didn't match. Please try again.</p>
Make sure the username box has your <b>username, not your email</b> -- some browsers automatically fill in your email. We're working on fixing this bug.
{% endif %}
<h3>Sign in to your account</h3>
{% include "login_form.html" %}
<br />
<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>?
<a href="{% url auth_password_reset %}">Forgot</a> your password? <a href="{% url registration_register %}">Need an account</a>? <a href="/faq/basics/account">Other questions</a>?
<br /><br />
<div class="google_signup">

View File

@ -21,7 +21,8 @@ $j(document).ready(function() {
next = next.replace(/[\x22\x27\x3c\x3e]/g,'');
$j.cookie('next', next, {path: '/'});
} else if(saved_next!=null){
$j('#link-to-next').html("<a href='"+saved_next+"'> Click to continue after logging in...</a>");
var do_next = $j('#link-to-next');
if (do_next.length) window.location.replace(saved_next);
}
});
</script>

View File

@ -278,7 +278,7 @@ $j(document).ready(function(){
{{ claim.rights_holder.rights_holder_name }}
{% endif %}
{% endfor %}
, has agreed to release <i>{{work.title}}</i> to the world as a Creative Commons licensed ebook ({{ work.last_campaign.license }}) if ungluers can join together to raise ${{ work.last_campaign.target|intcomma }} by {{ work.last_campaign.deadline }}.
, has agreed to release <i>{{work.title}}</i> to the world as a Creative Commons licensed ebook (<a href="{{ work.last_campaign.license_url }}">{{ work.last_campaign.license }}</a>) if ungluers can join together to raise ${{ work.last_campaign.target|intcomma }} by {{ work.last_campaign.deadline }}.
You can help!</p>
<h4>Campaign details: the fine print</h4>

View File

@ -27,7 +27,7 @@ urlpatterns = patterns(
url(r"^rh_admin/$", "rh_admin", name="rh_admin"),
url(r"^campaign_admin/$", "campaign_admin", name="campaign_admin"),
url(r"^faq/$", FAQView.as_view(), {'location':'faq', 'sublocation':'all'}, name="faq"),
url(r"^faq/(?P<location>\w*)/$", FAQView.as_view(), {'sublocation':'all'}),
url(r"^faq/(?P<location>\w*)/$", FAQView.as_view(), {'sublocation':'all'}, name="faq_location"),
url(r"^faq/(?P<location>\w*)/(?P<sublocation>\w*)/$", FAQView.as_view()),
url(r"^wishlist/$", "wishlist", name="wishlist"),
url(r"^campaigns/(?P<pk>\d+)/$",CampaignFormView.as_view(), name="campaign_by_id"),

View File

@ -214,14 +214,14 @@
list-style: none;
border: none;
}
#user-block-hide {
.learnmore_block {
float: left;
width: 100%;
clear: both;
border-top: solid 1px #8ac3d7;
margin-top: 20px;
}
#user-block-hide .quicktour {
.learnmore_block .quicktour {
width: 270px;
float: left;
font-style: italic;
@ -229,23 +229,24 @@
font-size: 13px;
margin-top: 20px;
}
#user-block-hide .quicktour .highlight {
.learnmore_block .quicktour .highlight {
font-weight: bold;
}
#user-block-hide .quicktour.last {
.learnmore_block .quicktour.last {
padding-right: 0px;
width: 270px;
}
#user-block-hide .quicktour.last .signup {
.learnmore_block .quicktour.last .signup {
color: #8dc63f;
font-weight: bold;
margin-top: 10px;
}
#user-block-hide .quicktour.last .signup img {
.learnmore_block .quicktour.last .signup img {
margin-left: 5px;
vertical-align: middle;
margin-bottom: 3px;
}
#user-block-hide .movingrightalong {
.learnmore_block .movingrightalong {
background: url("/static/images/landingpage/quicktour-arrow.png") no-repeat center;
height: 100px;
width: 75px;

View File

@ -214,14 +214,14 @@
list-style: none;
border: none;
}
#user-block-hide {
.learnmore_block {
float: left;
width: 100%;
clear: both;
border-top: solid 1px #8ac3d7;
margin-top: 20px;
}
#user-block-hide .quicktour {
.learnmore_block .quicktour {
width: 270px;
float: left;
font-style: italic;
@ -229,23 +229,24 @@
font-size: 13px;
margin-top: 20px;
}
#user-block-hide .quicktour .highlight {
.learnmore_block .quicktour .highlight {
font-weight: bold;
}
#user-block-hide .quicktour.last {
.learnmore_block .quicktour.last {
padding-right: 0px;
width: 270px;
}
#user-block-hide .quicktour.last .signup {
.learnmore_block .quicktour.last .signup {
color: #8dc63f;
font-weight: bold;
margin-top: 10px;
}
#user-block-hide .quicktour.last .signup img {
.learnmore_block .quicktour.last .signup img {
margin-left: 5px;
vertical-align: middle;
margin-bottom: 3px;
}
#user-block-hide .movingrightalong {
.learnmore_block .movingrightalong {
background: url("/static/images/landingpage/quicktour-arrow.png") no-repeat center;
height: 100px;
width: 75px;
@ -353,31 +354,6 @@
color: #3d4e53;
padding-right: 15px;
}
#collapser {
float: right;
height: 24px;
line-height: 24px;
height: 24px;
line-height: 24px;
width: 24px;
-moz-border-radius: 24px;
-webkit-border-radius: 24px;
border-radius: 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;
}
#js-rightcol, #js-rightcol2 {
float: right;
width: 230px;

View File

@ -90,14 +90,14 @@
list-style: none;
border: none;
}
#user-block-hide {
.learnmore_block {
float: left;
width: 100%;
clear: both;
border-top: solid 1px #8ac3d7;
margin-top: 20px;
}
#user-block-hide .quicktour {
.learnmore_block .quicktour {
width: 270px;
float: left;
font-style: italic;
@ -105,23 +105,24 @@
font-size: 13px;
margin-top: 20px;
}
#user-block-hide .quicktour .highlight {
.learnmore_block .quicktour .highlight {
font-weight: bold;
}
#user-block-hide .quicktour.last {
.learnmore_block .quicktour.last {
padding-right: 0px;
width: 270px;
}
#user-block-hide .quicktour.last .signup {
.learnmore_block .quicktour.last .signup {
color: #8dc63f;
font-weight: bold;
margin-top: 10px;
}
#user-block-hide .quicktour.last .signup img {
.learnmore_block .quicktour.last .signup img {
margin-left: 5px;
vertical-align: middle;
margin-bottom: 3px;
}
#user-block-hide .movingrightalong {
.learnmore_block .movingrightalong {
background: url("/static/images/landingpage/quicktour-arrow.png") no-repeat center;
height: 100px;
width: 75px;

View File

@ -659,3 +659,68 @@ a.nounderline {
.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;
position: absolute;
left: 12.5%;
width: 75%;
top: 25%;
margin-left: 0;
padding: 9px;
}
#about_expandable p {
padding: 9px 0;
font-size: 14px;
line-height: 18px;
}
#about_expandable p a {
font-size: 14px;
line-height: 18px;
}
#about_expandable p b {
color: #8dc63f;
}
#about_expandable p.last {
border-bottom: solid 2px #d6dde0;
margin-bottom: 5px;
}
#about_expandable .right_border {
border-right: solid 1px #d6dde0;
float: left;
padding: 9px;
}
#about_expandable .signuptoday {
float: right;
margin-top: 0;
clear: none;
}
#about_expandable .collapser_x {
margin-top: -27px;
margin-right: -27px;
}
.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;
}

View File

@ -78,24 +78,6 @@
}
}
#collapser {
float: right;
.height(24px);
width: 24px;
.one-border-radius(24px);
-moz-box-shadow: -1px 1px @text-blue;
-webkit-box-shadow: -1px 1px @text-blue;
box-shadow: -1px 1px @text-blue;
border: solid 3px white;
text-align: center;
color: white;
background: @text-blue;
font-size: 17px;
z-index:5000;
margin-top: -12px;
margin-right:-22px;
}
#js-rightcol, #js-rightcol2 {
float:right;
width:230px;

View File

@ -1,6 +1,6 @@
@import "variables.less";
#user-block-hide {
.learnmore_block {
float: left;
width:100%;
clear:both;
@ -31,6 +31,7 @@
img {
margin-left: 5px;
vertical-align: middle;
margin-bottom: 3px;
}
}
}

View File

@ -579,3 +579,72 @@ a.nounderline {
.slides_control {
height: 325px !important;
}
#about_expandable {
display: none;
.one-border-radius(5px);
border: solid 5px @blue-grey;
background: white;
z-index: 500;
position: absolute;
left: 12.5%;
width: 75%;
top: 25%;
margin-left: 0;
padding: 9px;
p {
padding: 9px 0;
font-size: 14px;
line-height: 18px;
a {
font-size: 14px;
line-height: 18px;
}
b {
color: @call-to-action;
}
&.last {
border-bottom: solid 2px @blue-grey;
margin-bottom: 5px;
}
}
.right_border {
border-right: solid 1px @blue-grey;
float: left;
padding: 9px;
}
.signuptoday {
float: right;
margin-top: 0;
clear: none;
}
.collapser_x {
margin-top: -27px;
margin-right: -27px;
}
}
.collapser_x {
float: right;
.height(24px);
width: 24px;
.one-border-radius(24px);
-moz-box-shadow: -1px 1px @text-blue;
-webkit-box-shadow: -1px 1px @text-blue;
box-shadow: -1px 1px @text-blue;
border: solid 3px white;
text-align: center;
color: white;
background: @text-blue;
font-size: 17px;
z-index:5000;
margin-top: -12px;
margin-right:-22px;
}