Revert "Merge branch 'master' into production"

This reverts commit b344de4f19, reversing
changes made to 58cb070d31.
pull/91/head
eric 2017-11-18 18:28:58 -05:00
parent b344de4f19
commit a383876b25
66 changed files with 828 additions and 1217 deletions

View File

@ -42,7 +42,7 @@ def header(facet=None):
header_node = etree.Element("Header")
sender_node = etree.Element("Sender")
sender_node.append(text_node("SenderName", "unglue.it"))
sender_node.append(text_node("EmailAddress", "unglueit@ebookfoundation.org"))
sender_node.append(text_node("EmailAddress", "support@gluejar.com"))
header_node.append(sender_node)
header_node.append(text_node("SentDateTime", pytz.utc.localize(datetime.datetime.utcnow()).strftime('%Y%m%dT%H%M%SZ')))
header_node.append(text_node("MessageNote", facet.title if facet else "Unglue.it Editions"))

View File

@ -76,20 +76,6 @@ XML: <a href="/api/v1/identifier/?format=xml&amp;api_key={{api_key}}&amp;usernam
<h3>OPDS Catalog Feeds</h3>
<p>We have a basic implementation of <a href="http://opds-spec.org/specs/opds-catalog-1-1-20110627/">OPDS</a> feeds. You don't need a key to use them. The starting point is <code><a href="{% url 'opds' %}">{{base_url}}{% url 'opds' %}</a></code></p>
<p>
Examples:
<dl>
<dt>filtered by format</dt>
<dd><code><a href="{% url 'opds_acqusition' 'epub' %}">{{base_url}}{% url 'opds_acqusition' 'epub' %}</a></code></dd>
<dt>filtered by license</dt>
<dd><code><a href="{% url 'opds_acqusition' 'by-sa' %}">{{base_url}}{% url 'opds_acqusition' 'by-sa' %}</a></code></dd>
<dt>filtered by title search</dt>
<dd><code><a href="{% url 'opds_acqusition' 's.open' %}">{{base_url}}{% url 'opds_acqusition' 's.open' %}</a></code></dd>
<dt>filtered by keyword</dt>
<dd><code><a href="{% url 'opds_acqusition' 'kw.fiction' %}">{{base_url}}{% url 'opds_acqusition' 'kw.fiction' %}</a></code></dd>
<dt>filtered by ungluer</dt>
<dd><code><a href="{% url 'opds_acqusition' '@eric' %}">{{base_url}}{% url 'opds_acqusition' '@eric' %}</a></code></dd>
</p>
<p>There's also an OPDS record available for every work on unglue.it. For example, requesting, <code><a href="{% url 'opds_acqusition' 'all'%}?work=13950">{{base_url}}{% url 'opds_acqusition' 'all'%}?work=13950</a></code> get you to the web page or opds record for <i>A Christmas Carol</i>.</p>
<h3>ONIX Catalog Feeds</h3>

View File

@ -1,8 +1,7 @@
from django.apps import apps
from django.contrib.auth.models import User
from django.db.models import Q
from regluit.core import cc
class BaseFacet(object):
facet_name = 'all'
model_filters ={}
@ -277,42 +276,6 @@ class SearchFacetGroup(FacetGroup):
def description(self):
return "eBooks for {}".format(self.term)
return KeywordFacet
class SupporterFacetGroup(FacetGroup):
def __init__(self):
super(FacetGroup,self).__init__()
self.title = 'Supporter Faves'
# make facets in TOPKW available for display
self.facets = []
self.label = '{} are ...'.format(self.title)
def has_facet(self, facet_name):
# recognize any facet_name that starts with "@" as a valid facet name
return facet_name.startswith('@')
def get_facet_class(self, facet_name):
class SupporterFacet(NamedFacet):
def set_name(self):
self.facet_name = facet_name
self.username = self.facet_name[1:]
try:
user = User.objects.get(username=self.username)
self.fave_set = user.wishlist.works.all()
except User.DoesNotExist:
self.fave_set = self.model.objects.none()
def get_query_set(self):
return self._get_query_set().filter(pk__in=self.fave_set)
def template(self):
return 'facets/supporter.html'
@property
def description(self):
return "eBooks faved by @{}".format(self.username)
return SupporterFacet
class PublisherFacetGroup(FacetGroup):
@ -362,7 +325,7 @@ class PublisherFacetGroup(FacetGroup):
return PublisherFacet
# order of groups in facet_groups determines order of display on /free/
facet_groups = [KeywordFacetGroup(), FormatFacetGroup(), LicenseFacetGroup(), PublisherFacetGroup(), IdFacetGroup(), SearchFacetGroup(), SupporterFacetGroup()]
facet_groups = [KeywordFacetGroup(), FormatFacetGroup(), LicenseFacetGroup(), PublisherFacetGroup(), IdFacetGroup(), SearchFacetGroup()]
def get_facet(facet_name):
for facet_group in facet_groups:

View File

@ -1,59 +0,0 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('core', '0010_userprofile_works'),
]
operations = [
migrations.RenameField(
model_name='rightsholder',
old_name='can_sell',
new_name='approved',
),
migrations.AddField(
model_name='rightsholder',
name='address',
field=models.CharField(default=b'', max_length=400),
),
migrations.AddField(
model_name='rightsholder',
name='mailing',
field=models.CharField(default=b'', max_length=400),
),
migrations.AddField(
model_name='rightsholder',
name='signature',
field=models.CharField(default=b'', max_length=100),
),
migrations.AddField(
model_name='rightsholder',
name='signer',
field=models.CharField(default=b'', max_length=100),
),
migrations.AddField(
model_name='rightsholder',
name='signer_ip',
field=models.CharField(max_length=40, null=True),
),
migrations.AddField(
model_name='rightsholder',
name='signer_title',
field=models.CharField(default=b'', max_length=30),
),
migrations.AddField(
model_name='rightsholder',
name='telephone',
field=models.CharField(max_length=30, blank=True),
),
migrations.AlterField(
model_name='rightsholder',
name='email',
field=models.CharField(default=b'', max_length=100),
),
]

View File

@ -93,7 +93,6 @@ from .bibmodels import (
WorkRelation,
)
from .rh_models import Claim, RightsHolder
pm = PostMonkey(settings.MAILCHIMP_API_KEY)
logger = logging.getLogger(__name__)
@ -149,6 +148,65 @@ class CeleryTask(models.Model):
f = getattr(regluit.core.tasks, self.function_name)
return f.AsyncResult(self.task_id).info
class Claim(models.Model):
STATUSES = ((u'active', u'Claim has been accepted.'),
(u'pending', u'Claim is pending acceptance.'),
(u'release', u'Claim has not been accepted.'),
)
created = models.DateTimeField(auto_now_add=True)
rights_holder = models.ForeignKey("RightsHolder", related_name="claim", null=False)
work = models.ForeignKey("Work", related_name="claim", null=False)
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="claim", null=False)
status = models.CharField(max_length=7, choices=STATUSES, default='active')
@property
def can_open_new(self):
# whether a campaign can be opened for this claim
#must be an active claim
if self.status != 'active':
return False
#can't already be a campaign
for campaign in self.campaigns:
if campaign.status in ['ACTIVE', 'INITIALIZED']:
return 0 # cannot open a new campaign
if campaign.status in ['SUCCESSFUL']:
return 2 # can open a THANKS campaign
return 1 # can open any type of campaign
def __unicode__(self):
return self.work.title
@property
def campaign(self):
return self.work.last_campaign()
@property
def campaigns(self):
return self.work.campaigns.all()
def notify_claim(sender, created, instance, **kwargs):
if 'example.org' in instance.user.email or hasattr(instance, 'dont_notify'):
return
try:
(rights, new_rights) = User.objects.get_or_create(email='rights@gluejar.com', defaults={'username':'RightsatUnglueit'})
except:
rights = None
if instance.user == instance.rights_holder.owner:
ul = (instance.user, rights)
else:
ul = (instance.user, instance.rights_holder.owner, rights)
notification.send(ul, "rights_holder_claim", {'claim': instance,})
post_save.connect(notify_claim, sender=Claim)
class RightsHolder(models.Model):
created = models.DateTimeField(auto_now_add=True)
email = models.CharField(max_length=100, blank=True)
rights_holder_name = models.CharField(max_length=100, blank=False)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="rights_holder", null=False)
can_sell = models.BooleanField(default=False)
def __unicode__(self):
return self.rights_holder_name
class Premium(models.Model):
PREMIUM_TYPES = ((u'00', u'Default'), (u'CU', u'Custom'), (u'XX', u'Inactive'))

View File

@ -1,113 +0,0 @@
from notification import models as notification
from django.conf import settings
from django.contrib.auth.models import User
from django.db import models
from django.db.models.signals import post_save
from django.template.loader import render_to_string
from django.utils.html import strip_tags
class Claim(models.Model):
STATUSES = ((u'active', u'Claim has been accepted.'),
(u'pending', u'Claim is pending acceptance.'),
(u'release', u'Claim has not been accepted.'),
)
created = models.DateTimeField(auto_now_add=True)
rights_holder = models.ForeignKey("RightsHolder", related_name="claim", null=False)
work = models.ForeignKey("Work", related_name="claim", null=False)
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="claim", null=False)
status = models.CharField(max_length=7, choices=STATUSES, default='active')
@property
def can_open_new(self):
# whether a campaign can be opened for this claim
#must be an active claim
if self.status != 'active':
return False
#can't already be a campaign
for campaign in self.campaigns:
if campaign.status in ['ACTIVE', 'INITIALIZED']:
return 0 # cannot open a new campaign
if campaign.status in ['SUCCESSFUL']:
return 2 # can open a THANKS campaign
return 1 # can open any type of campaign
def __unicode__(self):
return self.work.title
@property
def campaign(self):
return self.work.last_campaign()
@property
def campaigns(self):
return self.work.campaigns.all()
def notify_claim(sender, created, instance, **kwargs):
if 'example.org' in instance.user.email or hasattr(instance, 'dont_notify'):
return
try:
(rights, new_rights) = User.objects.get_or_create(
email='rights@ebookfoundation.org',
defaults={'username':'RightsatFEF'}
)
except:
rights = None
if instance.user == instance.rights_holder.owner:
user_list = (instance.user, rights)
else:
user_list = (instance.user, instance.rights_holder.owner, rights)
notification.send(user_list, "rights_holder_claim", {'claim': instance,})
post_save.connect(notify_claim, sender=Claim)
class RightsHolder(models.Model):
created = models.DateTimeField(auto_now_add=True)
email = models.CharField(max_length=100, blank=False, default='')
rights_holder_name = models.CharField(max_length=100, blank=False)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, related_name="rights_holder", null=False)
approved = models.BooleanField(default=False)
address = models.CharField(max_length=400, blank=False, default='')
mailing = models.CharField(max_length=400, blank=False, default='')
telephone = models.CharField(max_length=30, blank=True)
signer = models.CharField(max_length=100, blank=False, default='')
signer_ip = models.CharField(max_length=40, null=True)
signer_title = models.CharField(max_length=30, blank=False, default='')
signature = models.CharField(max_length=100, blank=False, default='' )
def __unicode__(self):
return self.rights_holder_name
def notify_rh(sender, created, instance, **kwargs):
# don't notify for tests or existing rights holders
if 'example.org' in instance.email or instance.id < 47:
return
try:
(rights, new_rights) = User.objects.get_or_create(
email='rights@ebookfoundation.org',
defaults={'username':'RightsatFEF'}
)
except:
rights = None
user_list = (instance.owner, rights)
if created:
notification.send(user_list, "rights_holder_created", {'rights_holder': instance,})
elif instance.approved:
agreement = strip_tags(
render_to_string(
'accepted_agreement.html',
{'rights_holder': instance,}
)
)
signature = ''
notification.send(
user_list,
"rights_holder_accepted",
{'rights_holder': instance, 'agreement':agreement, 'signature':signature, }
)
for claim in instance.claim.filter(status='pending'):
claim.status = 'active'
claim.save()
post_save.connect(notify_rh, sender=RightsHolder)

View File

@ -81,8 +81,7 @@ def create_notice_types( **kwargs):
notification.create_notice_type("pledge_status_change", _("Your Pledge Has Been Modified"), _("Your ungluing pledge has been modified."))
notification.create_notice_type("pledge_charged", _("Your Pledge has been Executed"), _("You have contributed to a successful ungluing campaign."))
notification.create_notice_type("pledge_failed", _("Unable to charge your credit card"), _("A charge to your credit card did not go through."))
notification.create_notice_type("rights_holder_created", _("Agreement Accepted"), _("You have applied to become an Unglue.it rights holder."))
notification.create_notice_type("rights_holder_accepted", _("Agreement Accepted"), _("You have become a verified Unglue.it rights holder."))
notification.create_notice_type("rights_holder_created", _("Agreement Accepted"), _("You have become a verified Unglue.it rights holder."))
notification.create_notice_type("rights_holder_claim", _("Claim Entered"), _("A claim has been entered."))
notification.create_notice_type("wishlist_unsuccessful_amazon", _("Campaign shut down"), _("An ungluing campaign that you supported had to be shut down due to an Amazon Payments policy change."))
notification.create_notice_type("pledge_gift_credit", _("Gift Credit Balance"), _("You have a gift credit balance"))

View File

@ -4,7 +4,7 @@ WSGISocketPrefix /opt/regluit
<VirtualHost *:80>
ServerName localvm
ServerAdmin info@ebookfoundation.org
ServerAdmin info@gluejar.com
Redirect permanent / https://192.168.33.10.xip.io:443/

View File

@ -64,8 +64,6 @@ from regluit.utils.fields import ISBNField
from .bibforms import EditionForm, IdentifierForm
from .rh_forms import RightsHolderForm, UserClaimForm
from questionnaire.models import Questionnaire
logger = logging.getLogger(__name__)
@ -176,6 +174,50 @@ class EbookForm(forms.ModelForm):
self.cleaned_data['url'] = ''
return self.cleaned_data
def UserClaimForm ( user_instance, *args, **kwargs ):
class ClaimForm(forms.ModelForm):
i_agree = forms.BooleanField(error_messages={'required': 'You must agree to the Terms in order to claim a work.'})
rights_holder = forms.ModelChoiceField(queryset=user_instance.rights_holder.all(), empty_label=None)
class Meta:
model = Claim
exclude = ('status',)
widgets = {
'user': forms.HiddenInput,
'work': forms.HiddenInput,
}
def __init__(self):
super(ClaimForm, self).__init__(*args, **kwargs)
return ClaimForm()
class RightsHolderForm(forms.ModelForm):
owner = AutoCompleteSelectField(
OwnerLookup,
label='Owner',
widget=AutoCompleteSelectWidget(OwnerLookup),
required=True,
error_messages={'required': 'Please ensure the owner is a valid Unglue.it account.'},
)
email = forms.EmailField(
label=_("notification email address for rights holder"),
max_length=100,
error_messages={'required': 'Please enter an email address for the rights holder.'},
)
class Meta:
model = RightsHolder
exclude = ()
def clean_rights_holder_name(self):
rights_holder_name = self.data["rights_holder_name"]
try:
RightsHolder.objects.get(rights_holder_name__iexact=rights_holder_name)
except RightsHolder.DoesNotExist:
return rights_holder_name
raise forms.ValidationError(_("Another rights holder with that name already exists."))
class ProfileForm(forms.ModelForm):
clear_facebook = forms.BooleanField(required=False)
clear_twitter = forms.BooleanField(required=False)

View File

@ -1,90 +0,0 @@
from django import forms
from regluit.core.models import RightsHolder, Claim
class RightsHolderForm(forms.ModelForm):
email = forms.EmailField(
help_text='notification email address for rights holder',
max_length=100,
error_messages={
'required': 'Please enter a contact email address for the rights holder.'
},
)
use4both = forms.BooleanField(label='use business address as mailing address', required=False)
def clean_rights_holder_name(self):
rights_holder_name = self.data["rights_holder_name"]
try:
RightsHolder.objects.get(rights_holder_name__iexact=rights_holder_name)
except RightsHolder.DoesNotExist:
return rights_holder_name
raise forms.ValidationError('Another rights holder with that name already exists.')
class Meta:
model = RightsHolder
exclude = ('approved', 'signer_ip')
widgets = {
'address': forms.Textarea(attrs={'rows': 4}),
'mailing': forms.Textarea(attrs={'rows': 4}),
'owner': forms.HiddenInput()
}
help_texts = {
'signature': 'Type your name to enter your electronic signature.',
'rights_holder_name': 'Enter the rights holder\'s legal name.',
}
error_messages = {
'address': {
'required': 'A business address for the rights holder is required.'
},
'mailing': {
'required': 'Enter a mailing address for the rights holder, if different from the \
business address.'
},
'rights_holder_name': {
'required': 'Enter the rights holder\'s legal name.'
},
'signature': {
'required': 'Type your name to enter your electronic signature.'
},
'signer': {
'required': 'Please enter the name of the person signing on behalf of the rights \
holder.'
},
'signer_title': {
'required': 'Please enter the signer\'s title. (Use \'self\' if you are \
personally the rights holder.)'
},
}
class UserClaimForm (forms.ModelForm):
i_agree = forms.BooleanField(
error_messages={'required': 'You must agree to the Terms in order to claim a work.'}
)
def __init__(self, user_instance, *args, **kwargs):
super(UserClaimForm, self).__init__(*args, **kwargs)
self.fields['rights_holder'] = forms.ModelChoiceField(
queryset=user_instance.rights_holder.filter(approved=False),
empty_label=None,
)
def clean_work(self):
work = self.cleaned_data.get('work', None)
if not work:
try:
workids = self.data['claim-work']
if workids:
work = models.WasWork.objects.get(was = workids[0]).work
else:
raise forms.ValidationError('That work does not exist.')
except models.WasWork.DoesNotExist:
raise forms.ValidationError('That work does not exist.')
return work
class Meta:
model = Claim
exclude = ('status',)
widgets = {
'user': forms.HiddenInput,
'work': forms.HiddenInput,
}

View File

@ -36,7 +36,6 @@ base.html extra_css(empty) extra_js(empty) extra_head(empty)
about.html
about_smashwords.html
admins_only.html
agreed.html
api_help.html
ask_rh.html
campaign_admin.html extra_extra_head
@ -70,13 +69,7 @@ base.html extra_css(empty) extra_js(empty) extra_head(empty)
press_new.html
press_submitterator.html
privacy.html
programs.html
rh_agree.html
rh_tools.html extra_extra_head
rh_campaigns.html
rh_intro.html
rh_works.html
rh_yours.html
rights_holders.html extra_extra_head
surveys.html
terms.html extra_css
@ -138,9 +131,7 @@ base.html extra_css(empty) extra_js(empty) extra_head(empty)
recommended.html
COMPONENT TEMPLATES
about_lightbox_footer.html
accepted_agreement.html
add_your_books.html
about_lightbox_footer.html
book_plain.html
book_panel_addbutton.html
cardform.html
@ -167,7 +158,6 @@ registration/login_form.html
registration/password_reset_email.html
registration/registration_closed.html
registration/test_template_name.html
rights_holder_agreement.html
sidebar_pledge_complete.html
slideshow.html
split.html

View File

@ -0,0 +1,51 @@
{% extends "basedocumentation.html" %}
{% block title %} Everything You Always Wanted to Know {% endblock %}
{% block doccontent %}
<h2>About</h2>
<p><a href="https://unglue.it">Unglue.it</a> is a service provided by <a href="https://ebookfoundation.org">The Free Ebook Foundation</a> It's a place for individuals and institutions to join together to liberate specific ebooks and other types of digital content by paying authors and publishers to relicense their works under <a href="https://creativecommons.org">Creative Commons</a> licenses.</p>
<p>What does this mean?</p>
<ul>
<li>Book-lovers and libraries everywhere can join together to set books free.</li>
<li>Authors and publishers get the compensation they deserve.</li>
<li>Books that are out of print, not available as ebooks, or otherwise hard to enjoy will be available for everyone to read, share, learn from, and love -- freely and legally.</li>
</ul>
<p>You can learn more about us in our <a href="{% url 'faq' %}">FAQs</a> and our <a href="{% url 'press' %}">press page</a>.
<h3>Team</h3>
<div class="pressimages">
<div class="outer">
<div><img src="/static/images/headshots/eric.jpg" class="mediaborder" alt="eric" /></div>
<div class="text"><b>Eric Hellman</b>, President of the Free Ebook Foundation, is a technologist, entrepreneur, and writer. After 10 years at Bell Labs in physics research, Eric became interested in technologies surrounding e-journals and libraries. His first business, Openly Informatics, developed OpenURL linking software and knowledgebases, and was acquired by OCLC in 1996. At OCLC, he led the effort to productize and expand the xISBN service, and began the development of OCLC's Electronic Resource Management offerings. After leaving OCLC, Eric began blogging at <a href="https://go-to-hellman.blogspot.com">Go To Hellman</a>. He covers the intersection of technology, libraries and ebooks, and has written extensively on the Semantic Web and Linked Data. Eric has a B.S.E. from Princeton University, and a Ph. D. in Electrical Engineering from Stanford University</div>
</div>
<div class="outer">
<div><img src="/static/images/headshots/amanda2.jpg" class="mediaborder" alt="amanda" /></div>
<div class="text"><b>Amanda Mecke</b> is an expert in literary rights management. Before founding her own <a href="http://www.ameckeco.com/">literary agency</a>, Amanda was VP, Director of Subsidiary Rights for Bantam Dell, a division of Random House Inc. from 1989-2003, where she led a department that sold international and domestic book rights and pioneered early electronic licenses for subscription databases, CD-ROMs, audiobooks, and ebooks. She was also a co-leader of the Random House/SAP Contracts and Royalties software development team. Prior to joining Bantam Dell, Amanda ran the New York marketing office of the University of California Press. While there she served the board of the American Association of University Presses and was President of Women in Scholarly Publishing. Amanda has been a speaker at the Frankfurt Book Messe Rights Workshop, NYU Summer Publishing Program, American Independent Writers conference, and the International Womens Writers Guild. She has a B.A. from Pitzer College, Claremont, California and a Ph.D. in English from UCLA. Amanda continues to represent original work by her literary agency clients.<br /><br />
Amanda will be spending much of her time reaching out to authors, publishers, and other rights holders and identifying works that will attract financial support from book lovers who want to see the ebooks available for free to anyone, anywhere. </div>
</div>
<div class="outer">
<div><img src="/static/images/headshots/raymond.jpg" class="mediaborder" alt="raymond" /></div>
<div class="text"><b>Raymond Yee</b> is a data architect, author, consultant, and teacher. He is author of the leading book on web mashups, <a href="http://blog.mashupguide.net/2008/02/29/the-book-is-available-now/">Pro Web 2.0 Mashups: Remixing Data and Web Services</a> (published by Apress and licensed under a Creative Commons license), and has numerous blogs at his <a href="http://raymondyee.net/">personal site</a>. At the UC Berkeley School of Information, he taught Mixing and Remixing Information, a course on using APIs to create mashups. An open data and open government afficionado, he recently co-wrote three influential reports on how the US government can improve its efforts to make data and services available through APIs. Raymond served as the Integration Advisor for the Zotero Project (a widely used open source research tool) and managed the <a href="https://www.archive.org/details/zoterocommons">Zotero Commons</a>, a collaboration between George Mason University and the Internet Archive. Raymond has been an invited speaker about web technology at the Library of Congress, Fashion Institute of Technology, the O'Reilly Emerging Technology Conference, American Library Association, the Open Education conference, Code4lib, Educause, and NISO. While earning a Ph.D. in biophysics, he taught computer science, philosophy, and personal development to middle and high school students in the Academic Talent Development Program on the Berkeley campus. Raymond is an erstwhile tubaist, admirer of J. S. Bach, and son of industrious Chinese-Canadian restaurateurs.<br /><br />
Recently, Raymond has been teaching a course at UC Berkeley's School of Information science on working with Open Data; with any luck, the textbook he's working on will be a subject of a future ungluing campaign!</div>
</div>
<h3>Past Team</h3>
<div class="outer">
<div class="text"><b>Andromeda Yelton</b> was one of Unglue.it's founding staff members; she's gone on to pursue another passion, <a href="https://blog.unglue.it/2013/07/24/teaching-libraries-to-code/">teaching libraries to code</a>. She blogs at <a href="http://andromedayelton.com/">Across Divided Networks</a>. Check out her web site if you think she can help you!</div>
</div>
<div class="outer">
<div class="text"><b><a href="http://www.designanthem.com/">Design Anthem</a></b> helped us make the site pretty. </div>
</div>
<div class="outer">
<div class="text"><b>Jason Kace</b> wrote code. <b>Ed Summers</b> wrote some more code. Both of them helped us write even more code.
</div>
</div>
</div>
{% endblock %}

View File

@ -8,7 +8,7 @@
<ul>
<li>Make sure your book meets Smashwords' <a href="http://www.smashwords.com/distribution">standards for inclusion</a> in their Premium Catalog. Consult the <a href="http://www.smashwords.com/books/view/52">Smashwords Style Guide</a> for details.</li>
<li>Contact <a href="mailto:rights@ebookfoundation.org">rights@ebookfoundation.org</a> about signing a Platform Services Agreement with Unglue.it, and follow the instructions on the <a href="/rightsholders/">rights holder tools page</a> to claim your book, develop a publicity strategy, and start a campaign.</li>
<li>Contact <a href="mailto:rights@gluejar.com">rights@gluejar.com</a> about signing a Platform Services Agreement with Unglue.it, and follow the instructions on the <a href="/rightsholders/">rights holder tools page</a> to claim your book, develop a publicity strategy, and start a campaign.</li>
</ul>
<h2>Why Unglue Your Book?</h2>

View File

@ -1,3 +0,0 @@
{% with form=rights_holder rights_holder_name=rights_holder.rights_holder_name signer_title=rights_holder.signer_title owner=rights_holder.owner.username created=rights_holder.created fef_sig='ERIC HELLMAN' %}
{% include 'rights_holder_agreement.html' %}
{% endwith %}

View File

@ -1,20 +0,0 @@
<p id="add_your_books"><b>Claiming a work</b></p>
<p>If your book is indexed in Google books, we can add it to our database automagically. Click on the result list to add your book to our database.</p>
<form action="{% url 'search' %}" method="get">
<div class="inputalign">
<input type="text" id="watermark" size="25" onfocus="imgfocus()" onblur="imgblur(15)" class="inputbox" name="q" value="{{ q }}"><input type="hidden" name="page" value="2">
<input type="submit" class="button">
</div>
</form>
<ul class="bullets">
<li>Use the Claim option on the More... tab of each book's page.</li>
<li>Agree to our <a href="{% url 'terms' %}">Terms</a> on the following page. This includes agreeing that you are making the claim in good faith.</li>
<li>If you have any questions or you claim a work by mistake, <a href="mailto:rights@ebookfoundation.org?subject=claiming%20works">email us</a>.</li>
</ul>
<p><b>Entering a work</b></p>
<p>If your book is not in Google books, you'll need to enter the metadata yourself.</p>
<ul class="bullets">
<li>Use <a href="{% url 'new_edition' '' '' %}">this form</a> to enter the metadata.</li>
<li>Your metadata should have title, authors, language, description.</li>
<li>If you have a lot of books to enter, <a href="{% url 'feedback' %}?page={{request.build_absolute_uri|urlencode:""}}">contact us</a> to load ONIX or CSV files for you.</li>
</ul>

View File

@ -1,19 +0,0 @@
{% extends 'basedocumentation.html' %}
{% block title %} Agreement Submitted {% endblock %}
{% block extra_extra_head %}
{{ block.super }}
<link rel="stylesheet" href="/static/css/ui-lightness/jquery-ui-1.8.16.custom.css" type="text/css" media="screen">
<script type="text/javascript" src="{{ jquery_ui_home }}"></script>
{% endblock %}
{% block topsection %}
{% endblock %}
{% block doccontent %}
<h2>You're a pending Unglue.it Rights Holder!</h2>
Your Unglue.it Rights Holder Agreement has been submitted. Our staff will verify your existence and email you a countersigned agreement. At that point, you'll be able to use all of the Unglue.it rights holder tools.
{% endblock %}

View File

@ -124,6 +124,7 @@
<span>About Unglue.it</span>
<ul>
<li><a href="{% url 'about_specific' 'main' %}" class="hijax">Concept</a></li>
<li><a href="{% url 'about' %}">Team</a></li>
<li><a href="https://blog.unglue.it">Blog</a></li>
<li><a href="{% url 'press' %}">Press</a></li>
<li><a href="http://eepurl.com/fKLfI">Newsletter</a></li>
@ -134,9 +135,8 @@
<ul>
{% if user.is_authenticated %}
<li><a href="{% url 'manage_account' %}">Account Settings</a></li>
<li><a href="{% url 'new_edition' '' '' %}">Add Books to Unglue.it</a></li>
{% endif %}
<li><a href="{% url 'rightsholders' %}">For Rights Holders</a></li>
<li><a href="{% url 'rightsholders' %}">Rights Holder Tools</a></li>
<li><a href="{% url 'privacy' %}">Privacy</a></li>
<li><a href="{% url 'terms' %}">Terms of Use</a></li>
{% for library in user.libraries.all %}
@ -144,6 +144,7 @@
{% endfor %}
{% if user.is_staff %}
<li><a href="{% url 'rh_admin' %}">Unglue.it Administration</a></li>
<li><a href="{% url 'new_edition' '' '' %}">Create New Editions</a></li>
{% endif %}
</ul>
</div>
@ -154,13 +155,16 @@
<li><a href="{% url 'faq_location' 'rightsholders' %}">Author/Publisher FAQ</a></li>
<li><a href="{% url 'api_help' %}">API</a></li>
<li><a href="{% url 'feedback' %}?page={{request.build_absolute_uri|urlencode:""}}">Support</a>
<li><a href="{% url 'libraries' %}">Unglue.it for Libraries</a>
<li><a href="{% url 'libraries' %}">Unglue.it &hearts; Libraries</a>
</ul>
</div>
<div class="column">
<span>Contact</span>
<ul>
<li> <a href="mailto:info@ebookfoundation.org"><i class="fa fa-envelope fa-2x"></i></a> <a href="https://twitter.com/unglueit"><i class="fa fa-twitter fa-2x"></i></a> <a href="https://facebook/com/unglueit"><i class="fa fa-facebook fa-2x"></i></a></li>
<li>General inquiries</li>
<li><a href="mailto:faq@gluejar.com">faq@gluejar.com</a></li>
<li>Rights Holders</li>
<li><a href="mailto:rights@gluejar.com">rights@gluejar.com</a></li>
</ul>
</div>
</div>

View File

@ -29,10 +29,6 @@
{% endifequal %}
{% endfor %}
<h3> Interfering claims </h3>
<p>
When a rights holder claims a work in unglue.it, they warrant and represent that they have sufficient rights to administer the work. Mistakes and umisunderstandings can occur, especially for older works with unclear contracts and hard-to-find rights holders. For that reason, rights holders also agree to respond promptly to rights inquiries, and unglue.it reserves the right to suspend campaigns if disputes over rights arise. If you have a question about claims for this work, please contact rights@ebookfoundation.org
</p>
{% else %}
<form method="POST" action="#">
@ -42,4 +38,8 @@
<input type="submit" name="submit" value="Confirm Claim">
</form>
{% endif %}
<h3> Interfering claims </h3>
<p>
When a rights holder claims a work in unglue.it, they warrant and represent that they have sufficient rights to release a Creative Commons edition of that work. Unfortunately, mistakes can occur, especially for older works with unclear contracts and hard-to-find rights holders. For that reason, rights holders also agree to respond promptly to rights inquiries, and unglue.it reserves the right to suspend campaigns when disputes over rights arise. If you have a question about claims for this work, please contact rights@gluejar.com
</p>
{% endblock %}

View File

@ -1,3 +1,3 @@
<h3> Terms and Conditions for Claiming Works </h3>
<p>By claiming this work, you agree that your claim is governed by a Rights Holder Agreement in effect between you (or an entity that you act as agent for) and the Free Ebook Foundation, Inc., the operator of the Unglue.it website, and by the <a href="{% url 'terms' %}">unglue.it Website Terms </a>.</p>
<p>By claiming this work, you agree that your claim is governed by a Platform Services Agreement in effect between you (or an entity that you act as agent for) and the Free Ebook Foundation, Inc., the operator of the Unglue.it website, and by the <a href="{% url 'terms' %}">unglue.it Website Terms </a>.</p>

View File

@ -1,6 +1,7 @@
<ul class="terms">
<li><i>For Thanks-For-Ungluing Campaigns</i>, the rightsholder is responsible for providing valid, high-quality EPUB, MOBI, and PDF files.</li>
<li><i>For Buy-To-Unglue Campaigns</i> and <i>Pledge Campaigns</i> ebook files should use the EPUB standard format format according to best practice at time of submission. At minimum, the files should pass the <a href=https://code.google.com/p/epubcheck/">epubcheck</a> tool. Exceptions will be made for content requiring more page layout than available in prevailing EPUB implementations; in those cases, the files will usually be PDF.</li>
<li>Files shall be compliant where ever reasonable with the QED inspection checklist specified at <a href="http://qed.digitalbookworld.com/why-qed/criteria">http://qed.digitalbookworld.com/why-qed/criteria</a> </li>
<li>The file should have no more than 0.2 typographical or scanning errors per page of English text.</li>
<li>The file shall contain front matter which includes the following:
<ul class="terms">

View File

@ -1,5 +0,0 @@
<div>
<p style="">
These books were faved by <a href="{% url 'supporter' facet.username %}"> {{ facet.username }}</a>
</p>
</div>

View File

@ -16,37 +16,48 @@
</dl>
{% endif %}
{% if location == 'basics' or location == 'faq' %}
<h3>About the site</h3>
<h3>Basics</h3>
{% if sublocation == 'howitworks' or sublocation == 'all' %}
<h4>About Unglue.it</h4>
<h4>How It Works</h4>
<dl>
<dt>What is Unglue.it?</dt>
<dd><a href="/">Unglue.it</a> is a place for individuals and institutions to join together in support of free ebooks. We work together to support authors, publishers, or other rights holders who want their ebooks to be free. We work together to provide durable and effective distribution for ebooks that are free. We support <a href="https://creativecommons.org">Creative Commons</a> licensing as an enabling tool to "unglue" the ebooks. We are part of the <a href="https://ebookfoundation.org">Free Ebook Foundation</a>, a non-profit charitable organization.</dd>
<dd><a href="/">Unglue.it</a> is a place for individuals and institutions to join together to make ebooks free to the world. We work together to support authors, publishers, or other rights holders who want their ebooks to be free. We support <a href="https://creativecommons.org">Creative Commons</a> licensing as an enabling tool to "unglue" the ebooks. </dd>
<dt>Why are all these ebooks free?</dt>
<dt>What are Ungluing Campaigns?</dt>
<dd>The ebooks available on Unglue.it have missions to accomplish. There are textbooks to help you learn. There is literature to open up your mind. There are books on technology to help you create. There are academic books that are spreading ideas. There are books that want to change your mind. And there are books that belong to all of us, that want to live into the future.<br /><br />
Freedom can help a book accomplish its mission, and that why the ebook is free. We call these books "unglued" and we call the process of making them free, "ungluing".</dd>
<dt>So how do you make money?</dt>
<dd>We don't - we're an non-profit. If you like what we do, <a href="{% url 'newdonation' %}">you can donate!</a></dd>
<dt>What about the authors and publishers, how do they make money?</dt>
<dd>That's the million dollar question. You don't make money by giving away ebooks. Many authors make money other ways - by teaching, by consulting, by getting tenure. Some authors do well be selling printed books alongside their free ebooks. We started Unglue.it because we hoped to give ebook creators additional ways to support their work: <a href="{% url 'faq_location' 'campaigns' %}">Ungluing Campaigns</a>.
<br /><br /> We hope you'll choose to support some of these Campaigns, but if you like an ebook you find on Unglue.it, don't hesitate to lend your support in other ways.
<dd>We have three types of Ungluing Campaigns: Pledge Campaigns, Buy-to-Unglue Campaigns and Thanks-for-Ungluing campaigns.
<ul class="bullets">
<li> In a <i><a href="{% url 'faq_sublocation' 'campaigns' 'supporting' %}">Pledge Campaign</a></i>, book lovers pledge their support for ungluing a book. If enough support is found to reach the goal (and only then), the supporter's credit cards are charged, and an unglued ebook is released.</li>
<li> In a <i><a href="{% url 'faq_sublocation' 'campaigns' 'b2u' %}">Buy-to-Unglue Campaign</a></i>, every ebook copy sold moves the book's ungluing date closer to the present. And you can donate ebooks to your local library- that's something you can't do in the Kindle or Apple Stores!</li>
<li> In a <i><a href="{% url 'faq_sublocation' 'campaigns' 't4u' %}">Thanks-for-Ungluing Campaign</a></i>, the ebook is already released with a Creative Commons license. Supporters can express their thanks by paying what they wish for the license and the ebook.</li>
</ul>
We also support distribution and preservation of free ebooks through our growing catalog of free-licensed ebooks.
</dd>
<a id="crowdfunding"></a><dt>What is Crowdfunding?</dt>
<dd>Crowdfunding is collectively pooling contributions (or pledges) to support some cause. Using the internet for coordination means that complete strangers can work together, drawn by a common cause. This also means the number of supporters can be vast, so individual contributions can be as large or as small as people are comfortable with, and still add up to enough to do something amazing.<br /><br />
Want to see some examples? <a href="http://www.kickstarter.com/">Kickstarter</a> lets artists and inventors solicit funds to make their projects a reality. For instance, webcomic artist Rich Burlew sought $57,750 to reprint his comics in paper form -- and raised <a href="http://www.kickstarter.com/projects/599092525/the-order-of-the-stick-reprint-drive">close to a million</a>.<br /><br />
In other words, crowdfunding is working together to support something you love. By pooling resources, big and small, from all over the world, we can make huge things happen.</dd>
<dt>What does it cost?</dt>
<dd>Unglue.it is free to join. Many of the things you can do here -- discovering books, adding them to your ebook list, downloading unglued books, commenting, sharing -- are free too.
<br /><br /> If you choose to support a Campaign, please do so!.<br /><br /> If you choose to buy or download an unglue.it ebook, you can read it anywhere you like - there's no restrictive DRM.
<br /><br />
If you hold the electronic rights to a book, starting campaigns or listing your ebooks is free, too. You only pay Unglue.it a fraction of your revenue. For the basics on campaigns, see the FAQ on <a href="/faq/campaigns/">Campaigns</a>; for more details, see the <a href="/faq/rightsholders/">FAQ for Rights Holders</a>.</dd>
<dt>Who can use Unglue.it?</dt>
<dd>Anyone! We're located in the United States, but we welcome participants from all over the world.<br /><br />
To fund a campaign, or buy an ebook, you'll need a valid credit card. To use our fund raising tools for your books, you'll need to establish yourself with us as a <a href="{% url 'rightsholders' %}">rights holder</a>. </dd>
To fund a campaign, or buy an ebook, you'll need a valid credit card. To start a campaign, you'll need to establish yourself with us as a rights holder, including demonstrating that you have the rights to the content you want to unglue. See the FAQs <a href="/faq/rightsholders/">for Rights Holders</a> for more.</dd>
<dt>Why should I support a book at Unglue.it when I can just buy it somewhere else?</dt>
<dd>When you buy a book, you get a copy for yourself. When you unglue it, you give a copy to yourself, reward its creators and contribute towards making it free to everyone.</dd>
<dt>What do I get when I help unglue a book?</dt>
<dd>You get a better ebook. Your unglued ebook has no restrictive DRM: you can put it on any device you want, in any format you want. You can read it on the network or off, with no one tracking your reading.<br /><br />
@ -54,31 +65,48 @@ You may get premiums as part of a Pledge Campaign, depending on the amount you p
<dt>Does Unglue.it own the copyright of unglued books?</dt>
<dd>No. Books available on unglue.it are licensed by the the copyright owner. <a href="https://creativecommons.org">Creative Commons</a> licenses are licensing agreements. They grant certain rights but do not affect the status of the copyright. You can read more about these licenses at the <a href="https://wiki.creativecommons.org/Frequently_Asked_Questions">Creative Commons FAQ</a>.</dd>
<dd>No. When you unglue a book, the copyright stays with its current owner. Unglue.it does not buy copyrights. A <a href="https://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 />
<dt>If I'm a rights holder and unglue my book, can I still offer it for sale?</dt>
Just like many traditional publishing transactions, ungluing is about licensing rights. We use <a href="https://creativecommons.org">Creative Commons</a> licenses which allow creators to choose the ways in which their works can be copied, shared and re-used.<br /><br />
<dd>Yes. You are free to enter into additional licensing agreements for the work and its derivatives, including translation and film adaptations. You may continue to sell both print and ebook editions. Unglued ebooks can be free samples to market you and your work -- for instance, later works in the same series.
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="https://wiki.creativecommons.org/Frequently_Asked_Questions">Creative Commons FAQ</a>.</dd>
<dt>If I'm a rights holder and my book is unglued, does that mean I can never make money from it again?</dt>
<dd>No! You are free to enter into additional licensing agreements for other, non-unglued, editions of the work, including translation and film rights. You may continue to sell both print and ebook editions. You may use your unglued books as free samples to market your other works -- for instance, later works in the same series. You can use them to attract fans who may be interested in your speaking engagements, merchandise, or other materials. You absolutely may continue to profit from ungluing books -- and we hope you do!
</dd>
<dt>Why do authors, publishers, and other rights holders want their books unglued?</dt>
<dd>
Lots of reasons:
<ul class="bullets">
<li>To publicize their other books, gain new fans, or otherwise increase the value of an author's brand.</li>
<li>To get income from books that are no longer in print.</li>
<li>To have a digital strategy that pays for itself, even if they don't have expertise in producing ebooks.</li>
<li>To advance a cause, add to the public conversation, or increase human knowledge.</li>
<li>To leave a legacy that enriches everyone, now and in the future.</li>
</ul>
</dd>
<dt>Does Unglue.it publish books? Can I self-publish here?</dt>
<dd>Unglue.it is a distributor, not a publisher. If you self-publish and want your books to be free, Unglue.it can help you distribute your ebooks. </dd>
<dd>Unglue.it is not a publisher. If you self-publish, Unglue.it can help you distribute your ebooks, if they meet our technical quality standards. </dd>
<dt>What's a rights holder? How can I tell if I'm one?</dt>
<dd>A rights holder is a person (or entity) that has a right to copy, distribute, or sell a book in some way. There may be one entity with all the rights to a work, or the rights may be split up among different entities: for example, one who publishes the print edition in the United States, another who publishes the print edition in the EU, another who holds electronic rights, et cetera. For ungluing purposes, the rights holder is the entity who has uncontested worldwide commercial rights to a work.<br /><br />
<dd>A rights holder is the person (or entity) that holds the legal right to copy, distribute, or sell a book in some way. There may be one entity with all the rights to a work, or the rights may be split up among different entities: for example, one who publishes the print edition in the United States, another who publishes the print edition in the EU, another who holds electronic rights, et cetera. For ungluing purposes, the rights holder is the entity who has uncontested worldwide commercial rights to a work.<br /><br />
If you have written a book and not signed any contracts about it, you hold all the rights. If you have signed a contract with a publisher to produce, distribute, publish, or sell your work in a particular format or a particular territory, whether or not you still hold rights depends on the language of that contract. We encourage you to check your contracts. It may be in your interest to explore launching an Unglue.it campaign jointly with your publisher.<br /><br />
If you haven't written a book but you have had business or family relationships with someone who has, it's possible that you are a rights holder (for instance, you may have inherited rights from the author's estate, or your company may have acquired them during a merger). Again, this all depends on the specific language of your contracts. We encourage you to read them closely. Unglue.it cannot provide legal advice.<br /><br />
If you believe you are a rights holder and would like us to help unglue your works, get started at <a href="{% url 'rightsholders' %}">the right holder tools page</a>.</dd>
If you believe you are a rights holder and would like to your works to be unglued, please contact us at <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>.</dd>
<dt>I know a book that should be unglued.</dt>
<dd>Great! Find it in our database (using the search box above) and add it to your favorites, so we know it should be on our list, too. And encourage your friends to add it to their favorites. You can also contact us at <a href="mailto:rights@ebookfoundation.org">rights@ebookfoundation.org</a>.</dd>
<dd>Great! Find it in our database (using the search box above) and add it to your favorites, so we know it should be on our list, too. And encourage your friends to add it to their favorites. The more people that fave a book on Unglue.it, the more attractive it will be for authors and publishers to launch an ungluing campaign. You can also contact us at <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>.</dd>
<dt>I know a book that should be unglued, and it's mine!</dt>
<dt>I know a book that should be unglued, and I own the commercial rights.</dt>
<dd>Fabulous! Please refer to the <a href="/faq/rightsholders/">FAQ for Rights Holders</a> and then contact us at <a href="mailto:rights@ebookfoundation.org">rights@ebookfoundation.org</a>. </dd>
<dd>Fabulous! Please refer to the <a href="/faq/rightsholders/">FAQ for Rights Holders</a> and then contact us at <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>. Let's talk.</dd>
<dt>Is there a widget that can be put on my own site to share my favorite books or campaigns?</dt>
@ -122,40 +150,33 @@ If you receive our newsletter, there's a link at the bottom of every message to
<dt>Is my personal information shared?</dt>
<dd>Short version: no, except as absolutely required to deliver services you have opted into. If you have pledged to a campaign and are owed a premium, we will share your email with campaign managers so that they can deliver premiums to you; you are not required to share any further information and they are required to comply with our privacy policy in handling your information. We do use third-party providers to support some of our business functions, but they are only allowed to use your information in order to enable your use of the service. For a long, opinionated version of this answer, please read our <a href="{% url 'privacy' %}">privacy policy</a>.
<dd>Short version: no, except as absolutely required to deliver services you have opted into. If you have pledged to a campaign and are owed a premium, we will share your email with campaign managers so that they can deliver premiums to you; you are not required to share any further information and they are required to comply with our privacy policy in handling your information. We do use third-party providers to support some of our business functions, but they are only allowed to use your information in order to enable your use of the service. For the long version, please read our <a href="/privacy/">privacy policy</a>.
</dl>
{% endif %}
{% if sublocation == 'company' or sublocation == 'all' %}
<h4>The Organization</h4>
<h4>The Company</h4>
<dl>
<dt>How can I contact Unglue.it?</dt>
<dd>For support requests, <a href="{% url 'feedback' %}?page=need+support">use our feedback form</a>. You can also contact us on <a href="mailto:info@ebookfoundation.org">email</a>, <a href="https://twitter.com/unglueit">Twitter</a> or <a href="https://facebook/com/unglueit">Facebook</a>.
<dd>For support requests, <a href="{% url 'feedback' %}?page=need+support">use our feedback form</a>. For general inquiries, use our Ask Questions Frequently account, <a href="mailto:aqf@gluejar.com">aqf@gluejar.com</a>. For rights inquiries, <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>. Media requests, <a href="mailto:press@gluejar.com">press@gluejar.com</a></dd>
</dd>
<dt>Who is Unglue.it?</dt>
<dd>We are a small group that believes strongly that ebooks can make the world richer in new and diverse ways, and that we all benefit from the hard work of their creators. 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 <a href="/about">about page</a> or our Unglue.it supporter profiles: <a href="{% url 'supporter' 'eric' %}">Eric Hellman</a>, <a href="{% url 'supporter' 'AmandaM' %}">Amanda Mecke</a> and <a href="{% url 'supporter' 'rdhyee' %}">Raymond Yee</a>. Our alumni include <a href="{% url 'supporter' 'luclewitanski' %}">Luc Lewitanski</a> and <a href="{% url 'supporter' 'andromeda' %}">Andromeda Yelton</a>.</dd>
<dt>Are you a non-profit company?</dt>
<dd>Yes. Unglue.it is a program of the <a href="https://ebookfoundation.org">Free Ebook Foundation</a>, which is a charitable, not-for-profit corporation. We work with both non-profit and commercial partners.</dd>
<dd>Yes. Unglue.it is a program of the Free Ebook Foundation, which is a not-for-profit corporation. We work with both non-profit and commercial partners.</dd>
<dt>Why does Unglue.it exist?</dt>
<dd>Because legal stickiness means you can't reliably lend or share your ebooks, borrow them from the library, or read them on the device of your choice. Because -- like public radio -- ebooks are expensive to create but cheap to distribute, so covering their fixed costs and reasonable profit up front can be an appealing system for authors, publishers, readers, and libraries. Because we all have books we love so much we want to give them to the world.</dd>
</dl>
{% endif %}
{% endif %}
{% if location == 'campaigns' or location == 'faq' %}
<h3>Campaigns</h3>
<dl>
<dt>What are Ungluing Campaigns?</dt>
<dd>Unglue.it has three programs that support ebook creators: Pledge Campaigns, Buy-to-Unglue Campaigns and Thanks-for-Ungluing Campaigns.
<ul class="bullets">
<li> In a <i><a href="{% url 'faq_sublocation' 'campaigns' 'supporting' %}">Pledge Campaign</a></i>, book lovers pledge their support for ungluing a book. If enough support is found to reach the goal (and only then), the supporter's credit cards are charged, and an unglued ebook is released.</li>
<li> In a <i><a href="{% url 'faq_sublocation' 'campaigns' 'b2u' %}">Buy-to-Unglue Campaign</a></i>, every ebook copy sold moves the book's ungluing date closer to the present. And you can donate ebooks to your local library- that's something you can't do in the Kindle or Apple Stores!</li>
<li> In a <i><a href="{% url 'faq_sublocation' 'campaigns' 't4u' %}">Thanks-for-Ungluing Campaign</a></i>, the ebook is already released with a Creative Commons license. Supporters can express their thanks by paying what they wish for the license and the ebook.</li>
</ul>
We also support distribution and preservation of free ebooks through our growing catalog of free-licensed ebooks.
</dd>
</dl>
{% if sublocation == 'all' %}
{% include "faq_t4u.html" %}
@ -170,7 +191,6 @@ We also support distribution and preservation of free ebooks through our growing
{% endif %}
{% if sublocation == 'supporting' or sublocation == 'all' %}
<a class="more_featured_books short" href="{% url 'campaign_list' 'pledge' %}" title="Pledge to Unglue list"><i class="fa fa-arrow-circle-o-right fa-3x"></i></a>
<h4>Pledge Campaigns</h4>
<div class="faq_tldr">
Support the books you've loved and make them free to everyone.
@ -186,23 +206,23 @@ Support the books you've loved and make them free to everyone.
<dt>How do I pledge?</dt>
<dd>When the creators of a book have been persuaded to launch a campaign, there will be a "Support" button on the book's unglue.it page. You'll be asked to select your premium and specify your pledge amount; choose how you'd like to be acknowledged, if your pledge is $25 or more; and enter your credit card information. If tax deductions are important to you, consider donating instead.</dd>
<dt>How do I support a campaign with a donation?</dt>
<dd>Campaigns that meet the Free Ebook Foundation's guidelines for charitable support are eligible for support via donations to the Foundation. Essentially, the Foundation will pledge to the campaign based on your direction. </dd>
<dd>When the creators of a book have been persuaded to launch a campaign, there will be a "Support" button on the book's unglue.it page. You'll be asked to select your premium and specify your pledge amount; choose how you'd like to be acknowledged, if your pledge is $25 or more; and enter your credit card information.</dd>
<dt>When will I be charged?</dt>
<dd>For pledges, your account will be charged by the end of the next business day after a Pledge Campaign succeeds. If a campaign doesn't succeed, you won't be charged. For donations, your account will be charged immediately. If a campaign doesn't succeed, the Foundation will use your donation in support of other ebooks.</dd>
<dd>In most cases, your account will be charged by the end of the next business day after a Pledge Campaign succeeds. If a campaign doesn't succeed, you won't be charged.</dd>
<dt>What if I want to change or cancel a pledge?</dt>
<dd>You can modify your pledge by going to the book's page and clicking on the "Modify Pledge" button. (The "Support" button you clicked on to make a pledge is replaced by the "Modify Pledge" button after you pledge.) You can't modify a donation, but you can make another.</dd>
<dd>You can modify your pledge by going to the book's page and clicking on the "Modify Pledge" button. (The "Support" button you clicked on to make a pledge is replaced by the "Modify Pledge" button after you pledge.)</dd>
<dt>What happens to my pledge if a Pledge Campaign does not succeed?</dt>
<dd>Your credit card will only be charged when campaigns succeed. If they do not, your pledge will expire and you will not be charged.</dd>
<dt>How will I be recognized for my support?</dt>
<dd>Pledgers and donors are indicated on the book's page. In addition, when ungluing campaigns are successful, you'll be acknowledged in the unglued ebook as follows:<br />
<dd>Pledgers are indicated on the book's page. In addition, when ungluing campaigns are successful, you'll be acknowledged in the unglued ebook as follows:<br />
<ul class="terms">
<li>$25+ // Your name under "supporters" in the acknowledgements section.</li>
<li>$50+ // Your name and link to your profile page under "benefactors"</li>
@ -213,9 +233,13 @@ Support the books you've loved and make them free to everyone.
<dd>Yes. Anonymous donors are included in the total count of supporters, but their names and links are not included in the acknowledgements.</dd>
<dt>If I have pledged to a suspended or withdrawn Pledge Campaign, what happens to my pledge?</dt>
<dd>Your pledge will time out according to its original time limit. If the campaign is resolved and reactivated before your pledge has timed out, your pledge will become active again. If the campaign is not reactivated before your pledge's time limit, your pledge will expire and you will not be charged. As always, you will only be charged if a campaign is successful, within its original time limit.</dd>
<dt>Is my contribution tax deductible?</dt>
<dd>Donations to the Free Ebook Foundation are tax-deductible. Pledges to campaigns might be tax-deductible if the recipient of funds is a charity, otherwise probably not. Consult your tax advisor. </dd>
<dd>If the campaign manager for the work you're supporting is a nonprofit, please contact them directly to inquire. Unglue.it cannot offer tax deductions.</dd>
</dl>
{% endif %}
{% if sublocation == 'premiums' or sublocation == 'all' %}
@ -236,10 +260,6 @@ Support the books you've loved and make them free to everyone.
<dt>Is there a minimum or maximum for how much a premium can cost?</dt>
<dd>There's a $1 minimum and a $2000 maximum.</dd>
<dt>Do I get a premium for a donation?</dt>
<dd>No, just the good feeling you get for doing your part.</dd>
</dl>
{% endif %}
{% endif %}
@ -251,15 +271,30 @@ Support the books you've loved and make them free to everyone.
<dl>
<dt>So what is an unglued ebook?</dt>
<dd>
An unglued ebook is a <i>free</i> ebook, not an ebook that you <i>don't pay for</i>!
<br /><br />
<dd>An unglued ebook is a book that's added a <a href="https://creativecommons.org">Creative Commons</a> license, after payments to the author, publisher, or other rights holder.<br /><br />
Unglued ebooks use a <a href="https://creativecommons.org">Creative Commons</a> or other free license to counteract the stucked-ness of "all rights reserved" copyrights. Sometimes, payments are made to the author, publisher, or other rights holder to facilitate the ungluing.<br /><br />
What does this mean for you? If you're a book lover, you can read unglued ebooks for free, on the device of your choice, in the format of your choice, and share them with all your friends. If you're a library, you can lend them to your patrons with no checkout limits or simultaneous user restrictions, and preserve them however you think best. If you're a rights holder, you retain copyright in your work.
What does this mean for you? If you're a book lover, you can read unglued ebooks for free, on the device of your choice, in the format of your choice, and share them with all your friends. If you're a library, you can lend them to your patrons with no checkout limits or simultaneous user restrictions, and preserve them however you think best. If you're a rights holder, you get a payments in lieu of further royalties, while retaining copyright and all interests in your work.
</dd>
<dt>Is the unglued ebook edition the same as one of the existing editions?</dt>
<dd>Not necessarily. Sometimes the existing editions include content that we can't get the rights to include in the unglued ebook, especially cover art or illustrations. Sometimes the unglued ebook edition will have improvements, like copy-editing fixes or bonus features. These differences, if any, will be specified in the More... tab of the campaign page. In addition, unglued ebooks may include acknowledgements of supporters and information on their Creative Commons license.</dd>
<dt>How much does a book need to earn?</dt>
<dd>For Pledge and Buy-to-Unglue Campaigns, the author or publisher sets an earnings total for making the book free. Once you and your fellow ungluers raise enough money to meet that price through pledges or spend enough money on paid copies, the unglued ebook becomes available at no charge, for everyone, everywhere! Thanks-for-Ungluing books can be downloaded for free now, but the creators would love to have your support.</dd>
<dt>Will Unglue.it have campaigns for all kinds of books?</dt>
<dd>Yes. You choose what books to support. </dd>
<dt>Does an unglued book have to be out-of-print?</dt>
<dd>No. Unglued books can be anything in copyright, whether 75 years or 7 days old, whether they sell in paperback or hardcover and or can only be found in used bookstores -- or nowhere. But the copyright owners and any one else with a claim on the book need to agree.</dd>
<dt>Will Unglue.it help raise funds for books not yet written?</dt>
<dd>No. There are other crowdfunding sites devoted to the creative process, and we encourage you to investigate them. Once your book is ready to sell as an ebook, we'd love to talk to you.</dd>
</dl>
{% endif %}
{% if sublocation == 'using' or sublocation == 'all' %}
@ -267,7 +302,7 @@ What does this mean for you? If you're a book lover, you can read unglued ebook
<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 or other free license. The rights holder chooses which license to apply. Books that we distribute in a Buy-to-Unglue Campaign have creative commons licenses, but the effective date of these licenses is set in the future.<br /><br />
<dd>All unglued ebooks are released under a Creative Commons license. The rights holder chooses which Creative Commons license to apply. Books that we distribute in a Buy-to-Unglue Campaign also have creative commons licenses, but the effective date of these licenses is set in the future.<br /><br />
Creative Commons licenses mean that once the license is effective 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 />
@ -277,41 +312,49 @@ 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="https://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>
<dd>Unglued ebooks are distributed with NO RESTRICTIVE DRM, so they'll work on Kindle, iPad, Kobo, Nook, Android, Mac, Windows, Linux... you get the idea. Whether you have an ereader, a tablet, a desktop or laptop computer, or a smartphone, there are reading apps that work for you. </dd>
<dd>Unglued ebooks are distributed with NO RESTRICTIVE DRM, so they'll work on Kindle, iPad, Kobo, Nook, Android, Mac, Windows, Linux... you get the idea. Whether you have an ereader, a tablet, a desktop or laptop computer, or a smartphone, there are reading apps that work for you. Ebook editions issued through Unglue.it will be available in ePub format. If this format doesn't work for you, today or in the future, you are welcome to shift unglued books to one that does, and to copy and distribute it in that format.</dd>
<dt>Do I need to have a library card to read an unglued ebook?</dt>
<dd>No. (Though we hope you have a library card anyway!) <br /><br />If your library has bought an ebook as part of a Buy-to-Unglue Campaign, you may need your library card if you want to borrow them. </dd>
<dt>How long do I have to read my "buy-to-unglue" ebook? When does it expire?</dt>
<dt>How long do I have to read my unglued book? When does it expire?</dt>
<dd>If you're reading a "buy-to-unglue" book purchased by a library, your borrowing license expires after 2 weeks. But otherwise there's no expiration. And you delete the file on the honor system.<br /><br />
If you're reading a "buy-to-unglue" book you've purchased , you may keep it as long as you like. There's no need to return it, and it won't stop working after some deadline. You own it.<br /><br />
<dd>If you're reading a book purchased from unglue.it by a library, your borrowing license expires after 2 weeks. But otherwise there's no expiration. And you delete the file on the honor system.<br /><br />
If you're reading a book you've purchased from unglue.it, you may keep it as long as you like. There's no need to return it, and it won't stop working after some deadline. You own it.<br /><br />
If you're reading a book that's been unglued, you can keep the file forever AND you can make copies for friends.</dd>
<dt>Can I download ebooks directly from Unglue.it?</dt>
<dd>If you've purchased an ebook from unglue.it, you'll by able to download it through the website. All formats are included (where available), and you can download the ebooks for your personal use as many times as you need to.<br /><br />
Unglue.it provides links to download thousands of previously unglued books, creative commons licensed books, and public domain ebooks. You don't need our permission to host these free ebooks on your own site, but you must abide by the book's license terms</dd>
Unglue.it also provides links to download previously unglued books, creative commons licensed books, and public domain ebooks. You don't need our permission to host these free ebooks on your own site.</dd>
</dl>
{% endif %}
{% if sublocation == 'copyright' or sublocation == 'all' %}
<h4>Ungluing and Copyright</h4>
<dl>
<dt>Are Unglued Ebooks in the Public Domain?</dt>
<dt>Why does an unglued book have to be in copyright?</dt>
<dd>No. Books in the public domain, because their copyrights have expired, or because they were created by the US government, are already free for you to copy, remix, and share! If a book is in the <a href="https://en.wikipedia.org/wiki/Public_domain">public domain</a>, it doesn't need to be unglued, it's already unglued. But lots of other books are free-licensed even though their copyrights are still in force; if you don't adhere to the license terms, you are infringing that copyright.</dd>
<dd>Because books out of copyright are already free for you to copy, remix, and share! If a book is in the <a href="https://en.wikipedia.org/wiki/Public_domain">public domain</a>, it doesn't need to be unglued.</dd>
<dt>How can I tell if a book is in copyright or not?</dt>
<dd>Unfortunately, it can be complicated -- which is why Unglue.it wants to simplify things, by making unglued ebooks unambiguously legal to use in certain ways. The laws governing copyright and the public domain vary by country, so a book can be copyrighted in one place and not in another. In the United States, the <a href="http://www.librarycopyright.net/digitalslider/">Library Copyright Slider</a> gives a quick estimate. <br /><br />
Unglue.it signs agreements assuring the copyright status of every work we unglue, so you can be confident when reading and sharing an unglued ebook.</dd>
<dt>Unglue.it lists a book that I know is already Creative Commons licensed or available in the public domain. How can I get the link included?</dt>
<dd>If you are logged in to Unglue.it, the "More..." tab for every work lists the edition we know about. There is a link for every edition that you can use to tell us about Creative Commons or public domain downloads. We require that these books be hosted at certain known, reputable repositories such as Internet Archive, Wikisources, Hathi Trust, Project Gutenberg, Github or Google Books.</dd></dl>
<dd>If you are logged in to Unglue.it, the "Rights" page for every work lists the edition we know about. There a link for every edition that you can use to tell us about Creative Commons or public domain downloads. We do require that these books be hosted at certain known, reputable repositories: Internet Archive, Wikisources, Hathi Trust, Project Gutenberg, or Google Books.</dd></dl>
{% endif %}
{% endif %}
@ -320,15 +363,23 @@ Unglue.it provides links to download thousands of previously unglued books, cre
{% if sublocation == 'authorization' or sublocation == 'all' %}
<h4>Becoming Authorized</h4>
<dl>
<dt>What do I need to do to become a Rights Holder on Unglue.it?</dt>
<dt>Who is eligible to start a campaign or sell ebooks on Unglue.it?</dt>
<dd>To start a campaign, you need to be a verified rights holder who has signed a Rights Holder Agreement with us. <br /><br />
<dd>To start a campaign, you need to be a verified rights holder who has signed a Platform Services Agreement with us. </dd>
<dt>What do I need to do to become an authorized Rights Holder on Unglue.it?</dt>
Start by visiting the <a href="{% url 'rightsholders' %}">Rights Holders Tools</a> page.You'll sign our <a href="{% url 'agree' %}">Rights Holder Agreement (RHA)</a> and learn about our various programs.</dd>
<dd>Contact our Rights Holder Relations team, <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>, to discuss signing our <a href="https://www.docracy.com/1mud3ve9w8/unglue-it-non-exclusive-platform-services-agreement">Platform Services Agreement (PSA)</a>, setting a revenue goal, and running a campaign on Unglue.it to release your book under a <a href="https://creativecommons.org">Creative Commons</a> license, or to raise money for a book you've already released under such a license.</dd>
<dt>I haven't signed an agreement, but my books are listed on Unglue.it. What's going on?</dt>
<dd>If your book is listed on Unglue.it, it's either because an unglue.it user has indicated some interested in the book, or it's because we've determined that your book is already available with a free license.
<dd>If your book is listed on Unglue.it, it's because an unglue.it user has indicated some interested in the book. Perhaps your book has been added to a user's favorites list. Users can also use the site to post links to Creative Commons licensed or public domain books. Unglue.it works with non-profit sites such as Internet Archive to improve their coverage and preservation of Creative Commons licensed books.
</dd>
<dt>I didn't give you permission to offer my CC-licensed book for download. Why is it there?</dt>
<dd>When we don't have an agreement with a rights-holder, our download links lead to sites such as Internet Archive, Project Gutenberg, or Google Books that facilitate this linking and free use of the works by our users. We strive to keep our information accurate, so if the license we report is inaccurate, please <a href="mailto:rights@gluejar.com?subject=corrections">let us know</a> immediately. If for some reason you don't want us to provide download links, let us know using the "feedback" tab next to your book's page and we'll make a notation to that effect in our metadata. We may require evidence that you are authorized to act for the rights holders of the book.
</dd>
<dt>Do I need to know the exact titles I might want to unglue before I sign the Platform Services Agreement?</dt>
<dd>No. You only need to agree to the terms under which you will use Unglue.it to raise money. You can decide which specific titles you wish to make available for licensing later. However, before you start a campaign, you must claim a specific title (through the More... tab of its book page) and plan how you will attract ungluers to pledge toward your goal.</dd>
<dt>Can I run more than one campaign?</dt>
<dd>You can run campaigns for as many, or as few, titles at a time as you like. </dd>
@ -338,17 +389,22 @@ Start by visiting the <a href="{% url 'rightsholders' %}">Rights Holders Tools</
<h4>Claiming Works</h4>
<dl>
<dt>How can I claim a work for which I am a rights holder?</dt>
<dt>How can I claim a work for which I am the rights holder?</dt>
<dd>On every book page there is a More... tab. If you have a signed Rights Holder Agreement on file, one of the options on the More... tab will be "Claim This Work". If you represent more than one rights holder, choose the correct one for this work and click "Claim".
<dd>On every book page there is a More... tab. If you have a signed Platform Services Agreement on file, one of the options on the More... tab will be "Claim This Work". If you represent more than one rights holder, choose the correct one for this work and click "Claim".
<br /><br />If the book is not already in Unglue.it or in Google Books, you'll need to enter the metatadata for the book by hand or work with us to load the data from a spreadsheet or Onix file.
<ul class="bullets">
<li>Use <a href="{% url 'new_edition' '' '' %}">this form</a> to enter the metadata.</li>
<li>Your metadata should have title, identifiers, authors, language, description.</li>
<li>Your ebooks must have ISBNs or OCLC numbers assigned.</li>
<li>Your metadata should have title, authors, language, description.</li>
<li>If you have a lot of books to enter, <a href="{% url 'feedback' %}?page={{request.build_absolute_uri|urlencode:""}}">contact us</a> to load ONIX or CSV files for you.</li>
</ul>
<br /><br />If you expect to see a "Claim" button and do not, either we do not have a RHA from you yet, or we have not yet verified and filed it. Please contact us at <a href="mailto:rights@ebookfoundation.org">rights@ebookfoundation.org</a>.</dd>
<br /><br />If you expect to see a "Claim" button and do not, either we do not have a PSA from you yet, or we have not yet verified and filed it. Please contact us at <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>.</dd>
<dt>Why should I claim my works?</dt>
<dd>You need to claim a work before you will be able to start a campaign for it. Additionally, we're adding features for verified rights holders which will help you show off your works and connect to your readers. Claiming your works will let you take advantage of these features in the future.</dd>
<dt>Where can I find a campaign page?</dt>
@ -362,12 +418,15 @@ If you want to find an interesting campaign and don't have a specific book in mi
<dl>
<dt>What do I need to create a campaign?</dt>
<dd>First, you need to be an authorized rights holder with a signed Rights Holder Agreement on file. Please contact <a href="mailto:rights@ebookfoundation.org">rights@ebookfoundation.org</a> to start this process. Once we have your RHA on file, you'll be able to claim your works and you'll have access to tools for launching and monitoring campaigns.
</dd>
<dd>First, you need to be an authorized rights holder with a signed Platform Services Agreement on file. Please contact <a href="mailto:rights@gluejar.com">rights@gluejar.com</a> to start this process. Once we have your PSA on file, you'll be able to claim your works and you'll have access to tools for launching and monitoring campaigns. We'll be happy to walk you through the process personally.</dd>
<dt>Can I unglue only one of my books? Can I unglue all of them?</dt>
<dd>Yes! It's entirely up to you. Each Campaign is for a individual title and a separate fundraising parameters.</dd>
<dt>Can I raise any amount of money I want?</dt>
<dd>You can set any goal that you want in a Campaign. But don't be ridiculous! Unglue.it cannot guarantee that a goal will be reached. Also, Campaigns with excessive goals will not be eligible for support via donations.</dd>
<dd>You can set any goal that you want in a Campaign. But don't be ridiculous! Unglue.it cannot guarantee that a goal will be reached.</dd>
<dt>What should I include in my campaign page?</dt>
@ -475,15 +534,15 @@ Need more ideas? We're happy to work with rights holders personally to craft a
<dl>
<dt>I am a copyright holder. Do I need to already have a digital file for a book I want to unglue?</dt>
<dd>For a Buy-to-Unglue Campaign, yes, you'll need to upload an EPUB file for each book. For Pledge Campaigns, no, you may run campaigns for books that exist only in print copies or are out of print. Any print book can be scanned to create a digital file that can then become an EPUB-format unglued ebook. For Thanks-for-Ungluing campaigns, you can use EPUB, MOBI, pdf and html files.</dd>
<dd>For a Buy-to-Unglue Campaign, yes, you'll need to upload an epub file for each book. For Pledge Campaigns, no, you may run campaigns for books that exist only in print copies or are out of print. Any print book can be scanned to create a digital file that can then become an ePub-format unglued ebook. For Thanks-for-Ungluing campaigns, you can use ePub, Mobi, pdf and html files.</dd>
<dt>Will Unglue.it scan books and produce EPUB files?</dt>
<dt>Will Unglue.it scan books and produce ePub files?</dt>
<dd>No. We can help you find third parties who will contract for conversion services.</dd>
<dt>Will Unglue.it raise money to help pay for conversion costs?</dt>
<dd>A Pledge campaign target should include conversion costs. For a Buy-to-Unglue and Thanks-for-Ungluing campaigns, you'll need to have pre-existing files.</dd>
<dd>A Pledge campaign target should include conversion costs. For a Buy-to-Unglue and Thanks-for-Ungluing campaigns, you'll need to have pre-existing epub files.</dd>
<dt>What are the requirements for my ebook files?</dt>
@ -510,12 +569,12 @@ Need more ideas? We're happy to work with rights holders personally to craft a
<dt>Are contributions refundable?</dt>
<dd>Unglue.it contributions are non-refundable. Once a campaign succeeds, supporters' credit cards will be charged the full amount of their pledge. However, they will not be charged until, and unless, the campaign succeeds. Before that time they may modify or cancel their pledges without charge. Buy-to-Unglue license purchases are not returnable or refundable by Unglue.it, but rights holders need to keep customers happy with respect to the products they buy, as customers are free to post comments on the work page. Donations are not refundable.
<dd>Unglue.it contributions are non-refundable. Once a campaign succeeds, supporters' credit cards will be charged the full amount of their pledge. However, they will not be charged until, and unless, the campaign succeeds. Before that time they may modify or cancel their pledges without charge. Buy-to-Unglue license purchases are not returnable or refundable by Unglue.it, but rights holders need to keep customers happy with respect to the products they buy, as customers are free to post comments on the work page.
</dd>
<dt>What if an ungluer contests a charge?</dt>
<dd>Ungluers may contest charges, either with the payment processor or with their credit card issuer. Unglue.it is not liable for this and rights holders are liable for any pledge chargebacks. We encourage rights holders to provide clear, timely communication to their supporters throughout the campaign to ensure they remember what they pledged to and why.</dd>
<dd>Ungluers may contest charges, either with the payment processor or with their credit card issuer. Unglue.it is not liable for this and rights holders are liable for any chargebacks. We encourage rights holders to provide clear, timely communication to their supporters throughout the campaign to ensure they remember what they pledged to and why.</dd>
<dt>What happens if a supporter's credit card is declined?</dt>
@ -523,19 +582,19 @@ Need more ideas? We're happy to work with rights holders personally to craft a
<dt>What happens if a buyer wants a refund?</dt>
<dd>Our policy is for 100% supporter satisfaction. We may hold back a 30% reserve for 90 days to cover possible customer refunds.</dd>
<dd>Our policy is for 100% buyer satisfaction. We hold back a 30% reserve for 90 days to cover possible customer refunds.</dd>
<dt>Can I offer tax deductions to people who pledge to my campaign?</dt>
<dd>If you are a 501(c)3 or similar, please consult your own attorneys and accountants about the tax deductibility of ungluers' pledged. Donations to the Free Ebook Foundation are tax deductible in the USA; rights holders are not involved. </dd>
<dd>If you are a 501(c)3 or similar, please consult your own attorneys and accountants about the tax deductibility of ungluers' contributions. Unglue.it cannot offer tax deductions or advice.</dd>
<dt>How do I know when I have started fundraising?</dt>
<dd>Unglue.it will be in communication with you about when campaigns should go live. On your <a href="{% url 'rightsholders' %}">rights holder tools page</a>, you will be able to see all works you have claimed and the status of any associated campaigns.</dd>
<dd>Unglue.it will be in communication with you about when campaigns should go live. On your <a href="/rightsholders/">rights holder dashboard</a>, you will be able to see all works you have claimed and the status of any associated campaigns.</dd>
<dt>When and how will I be paid?</dt>
<dd><ul><li>For <i>Pledge Campaigns</i>: After we reach the threshold price Unglue.it will issue you a closing memo, which will cover your gross and net proceeds. Unglue.it will hold the proceeds until you deliver an EPUB file meeting Unglue.it's quality standards, at which point Unglue.it will send you a check. If Unglue.it does not receive a suitable EPUB file within 90 days, we will deduct conversion costs from your funds and release the rest to you.</li>
<dd><ul><li>For <i>Pledge Campaigns</i>: After we reach the threshold price Unglue.it will issue you a closing memo, which will cover your gross and net proceeds. Unglue.it will hold the proceeds until you deliver an ePub file meeting Unglue.it's quality standards, at which point Unglue.it will send you a check. If Unglue.it does not receive a suitable ePub file within 90 days, we will deduct conversion costs from your funds and release the rest to you.</li>
<li>For <i>Buy-to-Unglue Campaigns</i> and <i>Thanks-for-Ungluing Campaigns</i>: We make payments quarterly to rights holders who have accrued more than $100 in earnings. If we are able to set you up with ACH transfers, we will send payments more frequently. 70% of earnings accrue immediately; the rest accrues after 90 days.</li>
</ul></dd>
@ -556,9 +615,17 @@ If you're concerned a campaign may not reach its goal you have several options.
<dd>Yes, the minimum funding goal is $500.</dd>
<dt>What fees does Unglue.it charge in a Fundraising Campaign?</dt>
<dt>What fees does Unglue.it charge in a Pledge Campaign?</dt>
<dd>Fees and terms for each type of campaign are detailed on the <a href="{% url 'programs'%}">program terms page</a>.</dd>
<dd>When a campaign succeeds, Unglue.it will deduct a 6% commission (or $60, whichever is greater) on the funds raised. Our payment processor also charges a separate small fee on each transaction, plus (where relevant) currency conversion costs. If you do not have a suitable ePub version of your book available, you will also need to cover ebook conversion costs; please price this into your goal for a campaign. Details are spelled out in the Platform Services Agreement that rights holders must sign before launching an Unglue.it campaign.</dd>
<dt>What fees does Unglue.it charge in a Buy-to-Unglue Campaign?</dt>
<dd>For Buy-to-Unglue Campaigns, Unglue.it charges (1) a flat 25% of of revenue from ebook licenses it provides through its site or through partner sites and (2) a per-transaction charge of $0.25. These amounts <i>include</i> payment processor fees and any fees due to partner sites.</dd>
<dt>What fees does Unglue.it charge in a Thanks-for-Ungluing Campaign?</dt>
<dd>For Buy-to-Unglue Campaigns, Unglue.it charges (1) a flat 8% of of revenue from "thanks" payments it receives through its site and (2) a per-transaction charge of $0.25. These amounts <i>include</i> payment processor fees.</dd>
<dt>Does it cost money to start a campaign on Unglue.it?</dt>
@ -581,9 +648,9 @@ If you're concerned a campaign may not reach its goal you have several options.
<dd>It is your responsibility to get advice on the current status of any contracts you may have ever had for the right to publish your work, whether or not a book is in print now. <a href="https://creativecommons.org">Creative Commons</a> licenses are media neutral and worldwide (English). You may need waivers from other parties who have exclusive licenses for this book.</dd>
<dt>If I am a publisher, but I do not have an ebook royalty in my contract, can I sign your Rights Holder Agreement?</dt>
<dt>If I am a publisher, but I do not have an ebook royalty in my contract, can I sign your Platform Services Agreement?</dt>
<dd>We can't interpret your particular contract regarding subsidiary rights and your ability to use a Creative Commons license. Please seek qualified independent advice regarding the terms of your contract. In any event, you will also want the author to cooperate with you on a successful fundraising campaign, and you can work together to meet the warranties of the RHA.</dd>
<dd>We can't interpret your particular contract regarding subsidiary rights and your ability to use a Creative Commons license. Please seek qualified independent advice regarding the terms of your contract. In any event, you will also want the author to cooperate with you on a successful fundraising campaign, and you can work together to meet the warranties of the PSA.</dd>
<dt>Are the copyright holder, and the rights holder who is eligible to start an Unglue.it campaign, the same person?</dt>

View File

@ -7,24 +7,15 @@
<a href="/faq/"><span>All</span></a>
</li>
<li class="parent {% if location != 'basics' %}collapse{% endif %}">
<a href="{% url 'faq_location' 'basics' %}"><span>About the site</span></a>
<li class="parent {% if location != 'basics' %}collapse{% endif %}">
<a href="{% url 'faq_location' 'basics' %}"><span>Basics</span></a>
<ul class="menu level2">
<li class="first"><a href="{% url 'faq_sublocation' 'basics' 'howitworks' %}"><span>About Unglue.it</span></a></li>
<li class="first"><a href="{% url 'faq_sublocation' 'basics' 'howitworks' %}"><span>How it Works</span></a></li>
<li><a href="{% url 'faq_sublocation' 'basics' 'account' %}"><span>Your Account</span></a></li>
<li class="last"><a href="{% url 'faq_sublocation' 'basics' 'company' %}"><span>The Organization</span></a></li>
<li class="last"><a href="{% url 'faq_sublocation' 'basics' 'company' %}"><span>The Company</span></a></li>
</ul>
</li>
<li class="parent {% if location != 'unglued_ebooks' %}collapse{% endif %}">
<a href="{% url 'faq_location' 'unglued_ebooks' %}"><span>Unglued Ebooks</span></a>
<ul class="menu level2">
<li class="first"><a href="{% url 'faq_sublocation' 'unglued_ebooks' 'general' %}"><span>General Questions</span></a></li>
<li><a href="{% url 'faq_sublocation' 'unglued_ebooks' 'using' %}"><span>Using Your Unglued Ebook</span></a></li>
<li class="last"><a href="{% url 'faq_sublocation' 'unglued_ebooks' 'copyright' %}"><span>Ungluing and Copyright</span></a></li>
</ul>
</li>
<li class="parent {% if location != 'campaigns' %}collapse{% endif %}">
<a href="{% url 'faq_location' 'campaigns' %}"><span>Campaigns</span></a>
<ul class="menu level2">
@ -35,6 +26,14 @@
</ul>
</li>
<li class="parent {% if location != 'unglued_ebooks' %}collapse{% endif %}">
<a href="{% url 'faq_location' 'unglued_ebooks' %}"><span>Unglued Ebooks</span></a>
<ul class="menu level2">
<li class="first"><a href="{% url 'faq_sublocation' 'unglued_ebooks' 'general' %}"><span>General Questions</span></a></li>
<li><a href="{% url 'faq_sublocation' 'unglued_ebooks' 'using' %}"><span>Using Your Unglued Ebook</span></a></li>
<li class="last"><a href="{% url 'faq_sublocation' 'unglued_ebooks' 'copyright' %}"><span>Ungluing and Copyright</span></a></li>
</ul>
</li>
<li class="parent {% if location != 'rightsholders' and 'smashwords' not in request.path %}collapse{% endif %}">
<a href="{% url 'faq_location' 'rightsholders' %}"><span>For Rights Holders</span></a>

View File

@ -6,7 +6,7 @@
<p>Love something? Hate something? Found something broken or confusing? Thanks for telling us!</p>
To: support@ebookfoundation.org<br /><br />
To: support@gluejar.com<br /><br />
<form method="POST" action="{% url 'feedback' %}">
{% csrf_token %}
{{ form.sender.errors }}
@ -29,5 +29,5 @@
<input type="submit" value="Submit" />
</form>
<p>If for some reason this form doesn't work, you can send email to unglue.it support at <a href="mailto:unglueit@ebookfoundation.org">unglueit@ebookfoundation.org</a>.</p>
<p>If for some reason this form doesn't work, you can send email to unglue.it support at <a href="mailto:support@gluejar.com">support@gluejar.com</a>.</p>
{% endblock %}

View File

@ -60,7 +60,7 @@ The library license gives download access to one library member at a time for 14
<dt>Support <a href="{% url 'campaign_list' 'ending' %}">our active campaigns</a>.</dt>
<dd>Ultimately ebooks can't be unglued unless authors and publishers are paid for their work. Many of our staunchest supporters are librarians. There are also several libraries which have supported campaigns, including Leddy Library (University of Windsor, Ontario); the University of Alberta library ; and the Z. Smith Reynolds library (Wake Forest University).</dd>
<dt>Give feedback and ask questions.</dt>
<dd>Want to know more? Need help? Have ideas for how we could improve the site or make it more library-friendly? Contact us at: <a href="mailto:info@ebookfoundation.org">info@ebookfoundation.org</a>.</dd>
<dd>Want to know more? Need help? Have ideas for how we could improve the site or make it more library-friendly? Contact us at: <a href="mailto:libraries@gluejar.com">libraries@gluejar.com</a>.</dd>
</dl>
</div>
{% endblock %}

View File

@ -117,6 +117,7 @@ Please fix the following before launching your campaign:
{% csrf_token %}
{{ form.media }}
<h3>Edit the editions (if needed)</h3>
{% if campaign.rh.can_sell %}
{% if campaign.work.ebookfiles.0 %}
<p>You have uploaded ebook files for this work. </p>
{% else %}
@ -127,6 +128,7 @@ Please fix the following before launching your campaign:
<p> To distribute ebooks as part of a thanks for ungluing campaign, you will need to upload the ebook files to unglue.it. </p>
{% endifequal %}
{% endif %}
{% endif %}
<p> Please choose the edition that most closely matches the edition to be unglued. This is the edition whose cover image will display on your book's page. Your unglued edition should be identical to this edition if possible; you should note any differences under Rights Details below.</p>
{{ form.edition.errors }}
@ -136,11 +138,13 @@ Please fix the following before launching your campaign:
<ul style="text-indent:1em">
<li style="text-indent:2.5em"><a href="{% url 'new_edition' edition.work_id edition.id %}"> Edit </a> this edition</li>
{% ifnotequal campaign.type 1 %}
{% if campaign.rh.can_sell %}
{% if edition.ebook_files.all.0 %}
<li style="text-indent:2.5em">You have uploaded ebook files for this edition. You can <a href="{% url 'edition_uploads' edition.id %}"> manage its ebooks or upload another</a></li>
{% else %}
<li style="text-indent:2.5em">You can <a href="{% url 'edition_uploads' edition.id %}"> Manage ebooks</a> for this edition.</li>
{% endif %}
{% endif %}
{% endifnotequal %}
</ul>
</p>

View File

@ -5,7 +5,7 @@ You are subscribed to the Unglue.it Newsletter. It comes roughly twice a month.
<input type="submit" name="ml_unsubscribe" value="Unsubscribe" />
</form>
{% else %}
You are NOT subscribed to the Unglue.it Newsletter. It comes roughly twice a month. If you have just become an ungluer, your list invitation should be on its way. Put "unglueit@ebookfoundation.org" in your contact list to make sure you get it.<br />
You are NOT subscribed to the Unglue.it Newsletter. It comes roughly twice a month. If you have just become an ungluer, your list invitation should be on its way. Put "gluenews@gluejar.com" in your contact list to make sure you get it.<br />
<form id="ml_subscribe" action="{% url 'ml_subscribe' %}" method="POST">
{% csrf_token %}
<input type="submit" name="ml_subscribe" value="Subscribe" />

View File

@ -1,7 +1,7 @@
{% load humanize %}
As you requested, we've updated your account with the payment method you provided.
If you have any questions, we are happy to help. Simply email us at unglueit@ebookfoundation.org.
If you have any questions, we are happy to help. Simply email us at support@gluejar.com.
{% if user.profile.account %}
The current card we have on file:

View File

@ -3,7 +3,7 @@ We want to let you know that your {{ user.profile.account.card_type }} card endi
When you receive your new card, simply go to https://{{ site.domain }}{% url 'manage_account' %} to enter your card information. Thank you!
If you have any questions, we are happy to help. Simply email us at unglueit@ebookfoundation.org.
If you have any questions, we are happy to help. Simply email us at support@gluejar.com.
{% if user.profile.account %}
The current card we have on file:

View File

@ -3,7 +3,7 @@ We want to give you advance notice that your {{ user.profile.account.card_type }
When you receive your new card, simply go to https://{{ site.domain }}{% url 'manage_account' %} to enter your card information. Thank you!
If you have any questions, we are happy to help. Simply email us at unglueit@ebookfoundation.org.
If you have any questions, we are happy to help. Simply email us at support@gluejar.com.
{% if user.profile.account %}
The current card we have on file:

View File

@ -17,7 +17,7 @@ Or the best idea: talk about it with those you love. We'll need lots of help fr
If you want to change your pledge, just use the button at https://{{ current_site.domain }}{% url 'work' transaction.campaign.work_id %}
If you have any problems with your pledge, don't hesitate to contact us at unglueit@ebookfoundation.org
If you have any problems with your pledge, don't hesitate to contact us at support@gluejar.com
Thanks for being part of Unglue.it.

View File

@ -14,7 +14,7 @@ You can send the link yourself to make sure that it gets to the right place.
You can also "regift" the ebook to a different email address. To do so, FIRST log in to the {{ gift.giver }} account on Unglue.it, and then click on
https://{{ current_site.domain }}{% url 'receive_gift' gift.acq.nonce %}
If you have any problems or questions, don't hesitate to contact Unglue.it support at unglueit@ebookfoundation.org
If you have any problems or questions, don't hesitate to contact Unglue.it support at support@gluejar.com
the Unglue.it team

View File

@ -1,14 +0,0 @@
The Rights Holder Agreement, reproduced in plain text below, for {{ rights_holder.rights_holder_name }} has been accepted and is now an official Unglue.it rights holder.
Here's what to do next: Find on Unglue.it. On the More... tab of the book page, you'll now see an option to claim the book. Once you've claimed the book, you can edit its metadata.
If you can't find your books Unglue.it, that's okay. You can add your books to Unglue.it directly - use this link: https://unglue.it{% url 'rightsholders' %}#add_your_books
Need help with any of this? Email us at rights@ebookfoundation.org and we'll do our best to help.
The Unglue.it team
##################
{{ agreement }}
##################
{{ signature }}

View File

@ -1,4 +0,0 @@
{% extends "notification/notice_template.html" %}
{% block comments_textual %}
You are now an approved rights holder on Unglue.it. For your next step, <a href="{% url 'rightsholders' %}#add_your_books">find your works in our database and claim them or add them directly</a>.
{% endblock %}

View File

@ -1 +0,0 @@
You're now an accepted rights holder on Unglue.it.

View File

@ -3,7 +3,7 @@
You are now free to start a campaign to sell or unglue your work. If you're logged in, you will see the option to open a campaign at https://{{ current_site.domain }}/rightsholders . (You can also find this page by clicking on "Rights Holder Tools" at the bottom of any Unglue.it page.)
To run a campaign, you'll need to set up campaign parameters. You'll also need to write a pitch. For Pledge-to-Unglue and Buy-to-Unglue campaigns, this will appear in the Description tab on your book's page (https://{{ current_site.domain }}{% url 'work' claim.work_id %}). Think about who your book's audience is, and remind them why they'll love this book -- your pitch is not a catalog page! We encourage video, audio, and links to make your pitch come alive. For Thanks-for-Ungluing, your pitch will occur when the user clicks a Download button. You should emphasize how the ungluer's support enables you to keep doing what you do. Feel free to email us (rights@ebookfoundation.org) if you need any help with this.
To run a campaign, you'll need to set up campaign parameters. You'll also need to write a pitch. For Pledge-to-Unglue and Buy-to-Unglue campaigns, this will appear in the Description tab on your book's page (https://{{ current_site.domain }}{% url 'work' claim.work_id %}). Think about who your book's audience is, and remind them why they'll love this book -- your pitch is not a catalog page! We encourage video, audio, and links to make your pitch come alive. For Thanks-for-Ungluing, your pitch will occur when the user clicks a Download button. You should emphasize how the ungluer's support enables you to keep doing what you do. Feel free to email us (rights@gluejar.com) if you need any help with this.
If you're running a Buy-to-Unglue or Thanks-for-Ungluing Campaign, now is the time to upload your digital files. For Buy-to-Unglue, you need to decide on revenue targets and pricing for individual and library licenses.
@ -11,12 +11,13 @@ If you're running a Pledge Campaign, you need to decide on a funding target, and
Finally, think about how you're going to publicize your campaign: social media, newsletters, media contacts, professional organizations, et cetera. Have a plan for how to reach out to these potential supporters before you launch your campaign. Your supporters' sense of connection with you and your book is key to your campaign's success. Again, email us if you'd like help.
We're thrilled to be working with you.
{% endifequal %}
{% ifequal claim.status 'pending' %}
{{ claim.rights_holder }}'s claim to {{ claim.work.title }} (https://{{ current_site.domain }}{% url 'work' claim.work_id %}) on Unglue.it has been entered.
{{ claim.rights_holder }}'s claim to {{ claim.work.title }} (https://{{ current_site.domain }}{% url 'work' claim.work_id %}) on Unglue.it has been entered. Our team will examine the claim and get back to you soon.
{% endifequal %}
{% ifequal claim.status 'release' %}
{{ claim.rights_holder }}'s claim to {{ claim.work.title }} (https://{{ current_site.domain }}{% url 'work' claim.work_id %}) on Unglue.it has been released. email us (rights@ebookfoundation.org) if you have any questions about this.
{{ claim.rights_holder }}'s claim to {{ claim.work.title }} (https://{{ current_site.domain }}{% url 'work' claim.work_id %}) on Unglue.it has been released. email us (rights@gluejar.com) if you have any questions about this.
{% endifequal %}
The Unglue.it team

View File

@ -17,7 +17,7 @@
<br /><br />
You are now free to start a campaign to sell or unglue your work. If you're logged in, you can <a href="{% url 'rightsholders' %}">open a campaign</a>. (You can also find this page by clicking on "Rights Holder Tools" at the bottom of any Unglue.it page.)
<br /><br />
To run a campaign, you'll need to set up campaign parameters. You'll also need to write a pitch. For Pledge-to-Unglue and Buy-to-Unglue campaigns, this will appear in the Description tab on your book's <a href="{% url 'work' claim.work_id %}">work page</a>. Think about who your book's audience is, and remind them why they'll love this book -- your pitch is not a catalog page! We encourage video, audio, and links to make your pitch come alive. For Thanks-for-Ungluing, your pitch will occur when the user clicks a Download button. You should emphasize how the ungluer's support enables you to keep doing what you do. Feel free to email us (rights@ebookfoundation.org) if you need any help with this.
To run a campaign, you'll need to set up campaign parameters. You'll also need to write a pitch. For Pledge-to-Unglue and Buy-to-Unglue campaigns, this will appear in the Description tab on your book's <a href="{% url 'work' claim.work_id %}">work page</a>. Think about who your book's audience is, and remind them why they'll love this book -- your pitch is not a catalog page! We encourage video, audio, and links to make your pitch come alive. For Thanks-for-Ungluing, your pitch will occur when the user clicks a Download button. You should emphasize how the ungluer's support enables you to keep doing what you do. Feel free to email us (rights@gluejar.com) if you need any help with this.
<br /><br />
If you're running a Buy-to-Unglue or Thanks-for-Ungluing Campaign, now is the time to upload your digital files. For Buy-to-Unglue, you need to decide on revenue targets and pricing for individual and library licenses.
<br /><br />
@ -25,11 +25,12 @@ If you're running a Pledge Campaign, you need to decide on a funding target, and
<br /><br />
Finally, think about how you're going to publicize your campaign: social media, newsletters, media contacts, professional organizations, et cetera. Have a plan for how to reach out to these potential supporters before you launch your campaign. Your supporters' sense of connection with you and your book is key to your campaign's success. Again, email us if you'd like help.
We're thrilled to be working with you.
{% endifequal %}
{% ifequal claim.status 'pending' %}
The claim for <a href="{% url 'work' claim.work_id %}">{{ claim.work.title }}</a> will be examined, and we'll email you. <a href="{% url 'feedback' %}?page={{request.build_absolute_uri|urlencode:""}}">Contact us</a> if you need any help.
{% endifequal %}
{% ifequal claim.status 'release' %}
The claim for <a href="{% url 'work' claim.work_id %}">{{ claim.work.title }}</a> has been released. Contact us at rights@ebookfoundation.org if you have questions.
The claim for <a href="{% url 'work' claim.work_id %}">{{ claim.work.title }}</a> has been released. Contact us at rights@gluejar.com if you have questions.
{% endifequal %}
{% endblock %}

View File

@ -1,20 +1,11 @@
Your Rights Holder Agreement for {{ rights_holder.rights_holder_name }} has been received and Unglue.it staff is reviewing it.
Your Platform Services Agreement has been accepted and you're now an official Unglue.it rights holder.
Here's the information we received - we'll use this to verify that you really exist and can be relied upon to fulfill your obligations. Once we've reviewed and approved the agreement, you'll receive by email a digitally signed copy for your reference.
Here's what to do next. Find your book(s) on Unglue.it. On the More... tab of the book page, you'll now see an option to claim the book. Do this. We'll follow up. Once we've approved your claim, you'll be able to run campaigns for the book.
Rights Holder: {{ rights_holder.rights_holder_name }}
Unglue.it Username for Rights Holder: {{ rights_holder.owner.username }}
Business Address:
{{ rights_holder.address }}
Mailing Address:
{{ rights_holder.mailing }}
Tel: {{ rights_holder.telephone }}
Email: {{ rights_holder.email }}
Signer Name: {{ rights_holder.signer }}
Signer Title: {{ rights_holder.signer_title }}
Signature: {{ rights_holder.signature }}
If your book isn't listed in Google Books (which powers our search), you won't be able to find it at Unglue.it. That's okay. You can submit your books for inclusion in Google's search results: https://books.google.com/googlebooks/publishers.html . We can also create a custom page for you; just notify us.
You can also start thinking ahead about what you'd like your campaigns to look like and how you'd like to publicize them. Some good things to brainstorm: your campaign pitch; any photos or video you can include; compelling premiums you might be able to offer; what you want your target to be and how long you think your campaign should last; and how to share your campaign with your social networks (online and off) and media contacts.
Need help with any of this? Email us at rights@ebookfoundation.org.
Need help with any of this? We'd be delighted. Email us at rights@gluejar.com. We're thrilled to be working with you.
The Unglue.it team

View File

@ -1,4 +1,4 @@
{% extends "notification/notice_template.html" %}
{% block comments_textual %}
The Unglue.it rights holder agreement for {{ rights_holder.rights_holder_name }} has been received. Unglue.it staff will use the information you've supplied to verify that you really exist and can be relied upon to fulfill your obligations. Once we've reviewed and approved the agreement, you'll receive by email a digitally signed copy for your reference.
You are now an approved rights holder on Unglue.it. For your next step, find your works in our database and claim them (under the More... tab). See your email for more details.
{% endblock %}

View File

@ -1 +1 @@
Your Unglue.it rights holder agreement has been received.
You're now a confirmed rights holder on Unglue.it.

View File

@ -24,9 +24,9 @@ The Creative Commons licensing terms for {{ work.title }} allow you to redistrib
{% endif %}
{% if work.last_campaign_status == 'SUCCESSFUL' %}
If you have any problems with this unglued ebook, please don't hesitate to let us know at unglueit@ebookfoundation.org. And if you love being able to give this ebook for free to all of your friends, please consider supporting other ebooks for ungluing.
If you have any problems with this unglued ebook, please don't hesitate to let us know at support@gluejar.com. And if you love being able to give this ebook for free to all of your friends, please consider supporting other ebooks for ungluing.
{% else %}
If you have any problems with these ebook files, please don't hesitate to let us know at unglueit@ebookfoundation.org. For example, if the file isn't what it says it is, or if the licensing or copyright status is misrepresented, we want to know as soon as possble.
If you have any problems with these ebook files, please don't hesitate to let us know at support@gluejar.com. For example, if the file isn't what it says it is, or if the licensing or copyright status is misrepresented, we want to know as soon as possble.
{% endif %}
Thanks,

View File

@ -21,7 +21,7 @@
<a href="#releases">Press Releases</a><br />
</div>
<div class="pressemail">
Additional press questions? Please email <a href="mailto:info@ebookfoundation.org">info@ebookfoundation.org</a>.
Additional press questions? Please email <a href="mailto:press@gluejar.com">press@gluejar.com</a>.
</div>
<div class="spacer"></div>
{% if request.user.is_staff %}
@ -58,7 +58,7 @@ When books have a clear, established legal license which promotes use, they can
<dt>When?</dt>
<dd>Unglue.it launched its first crowdfunding campaign on May 17, 2012. Buy-to-Unglue launched in January of 2014, and Thanks-for-Ungluing launched in April of 2014.</dd>
<dt>Where?</dt>
<dd>The Free Ebook Foundation is a New Jersey non-for-profit corporation, but its employees and contractors live and work across North America. The best way to contact us is by email, <a href="mailto:info@ebookfoundation.org">info@ebookfoundation.org</a>.</dd>
<dd>The Free Ebook Foundation is a New Jersey non-for-profit 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">freeebookfoundation@gmail.com</a>.</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="https://code.google.com/apis/books/docs/v1/getting_started.html">Google Books</a>, <a href="https://openlibrary.org/developers/api">Open Library</a>, <a href="https://www.librarything.com/api">LibraryThing</a>, and <a href="https://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://stripe.com/">Stripe</a>. We collaborate on our code at <a href="https://github.com/">GitHub</a> and deploy to the cloud with <a href="https://aws.amazon.com/ec2/">Amazon EC2</a>.</dd>
<dt>What licenses are supported? </dt>
@ -68,7 +68,7 @@ We support a additional Free Licenses in our Thanks-for-Ungluing program.
</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="info@ebookfoundation.org">info@ebookfoundation.org</a>.</dd>
<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>Media Highlights</h2>
<div class="pressarticles">

View File

@ -90,7 +90,7 @@ We use avatar images from <a href="https://twitter.com/">Twitter</a>, <a href="h
</li>
<li>
When you download an ebook via Unglue.it, it often comes from a third party. When that happens, the third party can see what you're downloading and can set tracking cookies. If you interact with that site in other ways, they may know who you are. Here are links to their privacy information:
When you download an ebook via Unglue.it, it usually comes from a third party. When that happens, the third party can see what you're downloading and can set tracking cookies. If you interact with that site in other ways, they may know who you are. Here are links to their privacy information:
<ul class="bullets">
<li><a href="https://archive.org/about/terms.php">Internet Archive</a> (Excellent privacy!) </li>
@ -115,7 +115,7 @@ We have used a small number of third party services that do not set cookies to t
<ul class="bullets">
<li>
<a href="https://aws.amazon.com/s3/">Amazon S3</a>. We disable logging for our S3 buckets, but we're not aware of any privacy commitment by Amazon Web Services regarding their logging practices for S3 (Simple Storage Service) separate from the Amazon privacy policies. But we can verify that S3 sets no tracking cookies.
We've worked to pare this list down to one. <a href="https://aws.amazon.com/s3/">Amazon S3</a>. We disable logging for our S3 buckets, but we're not aware of any privacy commitment by Amazon Web Services regarding their logging practices for S3 (Simple Storage Service) separate from the Amazon privacy policies. But we can verify that S3 sets no tracking cookies.
</li>
</ul>

View File

@ -1,37 +0,0 @@
{% extends 'basedocumentation.html' %}
{% block title %} Programs {% endblock %}
{% block doccontent %}
<h2>Unglue Program Terms</h2>
<h3><strong><em>Pledge-to-Unglue Program</em></strong></h3>
<p><strong>1. Description. </strong>Under the Pledge-to-Unglue program, the Rights Holder conducts a pledge campaign to raise a designated level of donated funds to facilitate the immediate Ungluing of an Uploaded Uploaded Work. The Ungluing Date shall be scheduled no later than 90 days after the Campaign Goal has been met.</p>
<p><strong>2. Campaign Goal Specifications</strong>. The Rights Holder will designate, for each Uploaded Work:</p>
<p style="text-indent: 36pt">(a) the dollar amount for the Campaign Goal;</p>
<p style="text-indent: 36pt">(b) the date upon which the campaign will commence;</p>
<p style="text-indent: 36pt">(c) the date upon which the campaign will end.</p>
<p style="text-indent: 36pt">Once an Unglue.it campaign has been launched, the Campaign Goal cannot be increased at any time for any reason.</p>
<p style="text-align: left;"><strong>3. Unglue.it Service Fees.</strong></p>
<p style="text-align: left;"><em> <strong>Processing Fee</strong></em> in the amount of the greater of $60 or six percent (6%) of total gross aggregate contributions received in connection with the campaign. All Processing Fees shall be payable out of the proceeds of a successfully completed campaign, and shall be payable in addition to third party payment processing fees.</p>
<h3><strong><em>Buy-to-Unglue Program</em></strong></h3>
<p><strong>1. Description.</strong> Under the Buy-to-Unglue program, the Rights Holder charges a <strong><em>License Fee </em></strong>to make copies of a Uploaded Work available to individuals, libraries and institutions through Unglue.it and agrees to Unglue the Uploaded Work once the Rights Holders designated sales target has been met. The Ungluing Date is determined by the fraction of the Campaign goal that has been met, together with the Campaign Goal Specifications.</p>
<p><strong>2. Campaign Goal Specifications</strong>. The Rights Holder will designate, for each Uploaded Work:</p>
<p style="text-indent: 36pt">(a) the dollar amount for the Campaign Goal;</p>
<p style="text-indent: 36pt">(b) the initial Ungluing Date*;</p>
<p style="text-indent: 36pt">(c) the date upon which the campaign will commence;</p>
<p style="text-indent: 36pt">(d) the License Fees.</p>
<p style="text-indent: 36pt">Once an Unglue.it campaign has been launched, the Campaign Goal cannot be increased at any time for any reason, and the initial Ungluing Date cannot be changed. Notwithstanding the above, the License Fees can be increased or decreased at any time at the sole discretion of the Rights Holder.</p>
<p style="text-indent: 36pt"><em>*In the case of the Buy-to-Unglue program, the Ungluing Date advances according to the progress towards the Campaign Goal. The mechanism of advance shall be determined by the website terms of service in effect on the date of the launch of the campaign.</em></p>
<p><strong><em>3</em>. Unglue.it Service Fees</strong></p>
<p>(a) <strong><em>Distribution Fee</em></strong> in the amount of twenty-five percent (25%) of the gross revenues received by the Distributor from (i) the sale of the Uploaded Works through the Program; (ii) the licensing of the Uploaded Works by the Distributor to libraries and other third party distributors; and (iii) from any other sources in connection with the distribution of the Uploaded Work by the Distributor.</p>
<p>(b) <strong><em>Transaction Fee</em></strong> in the amount of twenty-five cents ($0.25) per transaction.</p>
<p>The Distribution Fee and Transaction Fee shall be deducted from proceeds of sale and other license fees collected by the Distributor, and paid to the Distributor prior to the remission of revenues to the Rights Holder. The Distribution Fee is inclusive of third party processing fees up to a cap of 3% of the gross amount plus 33 cents ($0.33) per transaction.</p>
<h3><strong><em>Thanks-for-Ungluing Program</em></strong></h3>
<p><strong>1. Description.</strong> Under the Thanks-for-Ungluing program, the Rights Holder immediately releases an Unglued Edition to the licensee, but suggests a “Thank-You” donation amount. The licensee has the option of paying the suggested “Thank You” donation, or a greater or lesser amount (may be zero).</p>
<p><strong>2. Campaign Goal Specifications</strong>. The Rights Holder will designate a suggested “Thank You” donation amount for each Uploaded Work.</p>
<p><strong>3. Unglue.it Service Fees</strong></p>
<p style="text-indent: 36pt">(a) <strong><em>Distribution Fee</em></strong> in the amount of eight percent (8%) of the gross revenues received by the Distributor from payments made as “Thank You” donations.</p>
<p style="text-indent: 36pt">(b) <strong><em>Transaction Fee</em></strong> in the amount of twenty-five cents ($0.25) per transaction.</p>
<p style="text-indent: 36pt">The Distribution Fee and Transaction Fee shall be deducted from the donations collected by the Distributor, and paid to the Distributor prior to the remission of revenues to the Rights Holder. The Distribution Fee is inclusive of third party payment processing fees up to a cap of 3% of the gross amount plus 33 cents ($0.33) per transaction.</p>
{% endblock %}

View File

@ -6,7 +6,7 @@
{% if not user.is_authenticated %}
<p>
An account activation email has been sent. Please check your email and click on the link to activate your account. We're also sending you an invitation to our email newsletter. It comes out about twice a month. Put "unglueit@ebookfoundation.org" in your contact list to make sure you get it.
An account activation email has been sent. Please check your email and click on the link to activate your account. We're also sending you an invitation to our email newsletter. It comes out about twice a month. Put "gluenews@gluejar.com" in your contact list to make sure you get it.
</p>
{% if request.COOKIES.next %}

View File

@ -1,50 +0,0 @@
{% extends 'basedocumentation.html' %}
{% block title %} Rights Holder Agreement {% endblock %}
{% block extra_extra_head %}
{{ block.super }}
<link rel="stylesheet" href="/static/css/ui-lightness/jquery-ui-1.8.16.custom.css" type="text/css" media="screen">
<script type="text/javascript" src="{{ jquery_ui_home }}"></script>
<script type="text/javascript">
onload = function(){
var rhInput = document.getElementById('id_rights_holder_name');
var rhDisplay = document.getElementById('rh_name');
var rhstInput = document.getElementById('id_signer_title');
var rhstDisplay = document.getElementById('rh_signer_title');
var rhaInput = document.getElementById('id_address');
var use4both = document.getElementById('id_use4both');
var rhmInput = document.getElementById('id_mailing');
rhaInput.oninput = function(){
if (use4both.checked == true) {rhmInput.value = rhaInput.value;};
};
use4both.onchange = function(){
if (use4both.checked == true) {rhmInput.value = rhaInput.value;};
};
rhInput.oninput = function(){
rhDisplay.innerHTML = rhInput.value;
};
rhstInput.oninput = function(){
rhstDisplay.innerHTML = rhstInput.value;
};
};
</script>
{% endblock %}
{% block topsection %}
{% endblock %}
{% block doccontent %}
{% with rights_holder_name='[Rights Holder]' signer_title='[Signer Title]' signer_note='(Type your name to enter your electronic signature.)' %}
{% if request.user.is_authenticated %}
{% with owner=request.user.username%}
{% include 'rights_holder_agreement.html' %}
{% endwith %}
{% else %}
Please <a href="{% url 'superlogin' %}?next={{ request.get_full_path|urlencode }}">log in or create an account</a> to use the rights holder agreement.
{% with owner='[unglue.it username]'%}
{% include 'rights_holder_agreement.html' %}
{% endwith %}
{% endif %}
{% endwith %}
{% endblock %}

View File

@ -1,58 +0,0 @@
{% extends 'rh_tools.html' %}
{% block toolcontent %}
{% if campaigns %}
<h2 id="managed_campaigns">Campaigns You Manage</h2>
<dl>
{% for campaign in campaigns %}
<dt><a href="{% url 'work' work_id=campaign.work_id %}">{{campaign.name }}</a></dt>
<dd>
<div class="work_campaigns clearfix">
<div class="campaign_info">
{% ifequal campaign.type 1 %}
<b>Pledge Campaign</b><br />
Campaign status: {{ campaign.status }} <br />
Created: {{ campaign.created }}<br />
${{ campaign.current_total }} pledged of ${{ campaign.target }}, {{ campaign.supporters_count }} supporters
{% endifequal %}
{% ifequal campaign.type 2 %}
<b>Buy-to-Unglue Campaign</b><br />
Campaign status: {{ campaign.status }} <br />
Created: {{ campaign.created }}<br />
${{ campaign.current_total }} sold. ${{ campaign.target }} to go. Ungluing Date: {{ campaign.cc_date }}<br />
{% with campaign.work.preferred_edition as edition %}
<a href="{% url 'new_edition' edition.work_id edition.id %}"> Edit </a> the preferred edition<br />
You can also <a href="{% url 'edition_uploads' edition.id %}"> Load a file</a> for this edition.<br />
{% endwith %}
{% endifequal %}
{% ifequal campaign.type 3 %}
<b>Thanks-for-Ungluing Campaign</b><br />
Campaign status: {{ campaign.status }} <br />
Created: {{ campaign.created }}<br />
${{ campaign.current_total }} raised from {{ campaign.supporters_count }} ungluers, {{ campaign.anon_count }} others.
{% with campaign.work.preferred_edition as edition %}
<a href="{% url 'new_edition' edition.work_id edition.id %}"> Edit </a> the preferred edition<br />
You can also <a href="{% url 'edition_uploads' edition.id %}"> Load a file</a> for this edition.<br />
{% endwith %}
{% endifequal %}
</div>
{% if campaign.status = 'ACTIVE' or campaign.status = 'INITIALIZED' %}
<div>
<a href="{% url 'manage_campaign' campaign.id %}" class="manage">Manage This Campaign</a>
</div>
{% endif %}
{% if campaign.clone_form %}
<div>
<form method="POST" action="#">
{% csrf_token %}
{{ campaign.clone_form }}{{ campaign.clone_form.errors }}
<input type="submit" name="clone" value="Clone this Campaign">
</form>
</div>
{% endif %}
</div>
</dd>
{% endfor %}
</dl>
{% endif %}
{% endblock %}

View File

@ -1,74 +0,0 @@
{% extends 'rh_tools.html' %}
{% block toolcontent %}
<h2 id="getting_started">Getting Started</h2>
<p>
If you're an author, publisher, or other rights holder, you can participate more fully in Unglue.it by registering as a rights holder. Participating rights holders can:
<ul class="bullets">
<li> Add books to the unglue.it database.</li>
<li> Set metadata and descriptions for their books.</li>
<li> Create campaigns for their books. </li>
</ul>
</p>
<h2 id="distributing">Distributing Free Books Through Unglue.it</h2>
<p> Much of the "supply chain" for ebooks is fueled by a percentage of the ebook's purchase price. When the ebook is free, this supply chain stops running. When we started ungluing ebooks, we were were surprised that even library vendors had minimum prices for their ebooks. Working with partners such as the Internet Archive, the Digital Public Library of America, and New York Public Library, we set out to build a new supply chain that helps free ebooks have their potential impact.
</p>
<p>By adding a free-licensed ebook to the unglue.it database, you do a lot more than just add it to Unglue.it. We promote free ebooks on our website and on social networks. Our metadata syndication feeds help propagate that book around the world, into libraries, archives and communities.
</p>
<h2 id="how_to">Becoming an Unglue.it Rights Holder</h2>
<ol>
{% if not request.user.is_authenticated %}
<li>Set up an Unglue.it account. (<a href="{% url 'registration_register' %}?next={% url 'rightsholders' %}">Click here</a> or use the Sign Up button at the top of the page).</li>
{% else %}
<li class="checked">You've already set up an Unglue.it account.</li>
{% endif %}
{% if not request.user.rights_holder.count %}<li>{% else %}<li class="checked">{% endif %}Sign a <a href="{% url 'agree' %}">Unglue.it Rights Holder Agreement</a>. If you have any questions, <a href="mailto:info@ebookfoundation.org?subject=agreement">ask us</a>.</li>
{% if claims %}
<li class="checked"><i>You have claimed {{ claims.count }}</i> work(s). You can claim more.
{% else %}
<li><i>Claim</i> your work(s) or send us metadata for books you have rights to.
{% endif %}
{% include 'add_your_books.html' %}
</li>
{% if campaigns %}
<li class="checked">You've set up {{ campaigns.count }} campaign(s). Manage them <a href="{% url 'rh_campaigns' %}#managed_campaigns">here.</a></li>
{% else %}
<li>{% if claims %}<a href="#open_campaigns">Set up a campaign</a> for for your book.{% else %} Set up a campaign. All the campaigns you can manage will be listed on this page, above.{% endif %}</li>
{% endif %}
</ol>
<h2 id="about_campaigns">About Campaigns </h2>
<p>
Free licenses help ebooks accomplish their missions, but that doesn't mean their creators don't need financial support. Unglue.it has three programs to help creators find that support.
</p>
<p> If you have already released your work under a Creative Commons license, you can use the "Thanks for Ungluing" program. If you have an EPUB file ready to sell, you can use the "Buy to Unglue" program. If you need to raise money to complete your ebook, you can offer rewards through the "Pledge-to-Unglue" program. To use one of these programs, you launch a "campaign".</p>
<h2>Thanks-for-Ungluing Campaigns</h2>
<p>Thanks-for-Ungluing is a program designed to help rights holders promote and monetize their Creative Commons licensed books. Rights holders participating in the Thanks-for-Ungluing program can request payment for their books on a pay-what-you-want basis. They can also set suggested prices as well as metadata and descriptions for books that they claim. </p>
<h2>Buy-to-Unglue Campaigns</h2>
<p>Buy-to-Unglue is a program that sells ebook licenses to reach the campaign goal. To enable ebook sales, you'll need to upload an epub file for each book.
There are no “rewards” for a “Buy to Unglue” campaign, but you may offer time-limited, special price promotions for the ebook.</p>
<p>
A Buy-to-Unglue Campaign provides long-term promotion and sales opportunities for your ebook before it becomes an Unglued Ebook. Until the revenue goal is reached, supporters and libraries know that every book that gets purchased through Unglue.it brings the ungluing date closer to the present.
</p>
<h2>Pledge-to-Unglue Campaigns</h2>
<p>For Pledge campaigns, you can run campaigns for books that are incomplete or haven't been converted to digital.
Any print book can be scanned to create a digital file that can then become an unglued ebook to be released after the Pledge Campaign succeeds.</p>
<p>Rewards</p>
<p>Campaigns run for a short period (2-6 months) and can have rewards as a way to motivate and thank supporters for helping to reach your goal. You are strongly encouraged to add rewards - they are given special prominence on the campaign page.</p>
<p>What should you add as rewards? Anything (legal) that you think you can reasonably deliver that will get supporters excited about the book. For example: other books, whether electronic or physical; artwork or multimedia relating to the book, its author, or its themes; in-person or online chats with the author; memorabilia.</p>
<p>Acknowledgements for Pledge Campaigns</p>
<p>Here are the standard acknowledgements. These automatically combine with your rewards. For example, if you offer a $30 reward, ungluers who pledge $30 will receive the $25 acknowledgement as well.</p>
<ul class="terms">
<li><em>Any amount</em> &#8212; The unglued ebook</li>
<li><em>$25 and above</em> &#8212; Their name in the acknowledgements section under "supporters"</li>
<li><em>$50 and above</em> &#8212; Their name &amp; profile link under "benefactors"</li>
<li><em>$100 and above</em> &#8212; Their name, profile link, &amp; a dedication under "bibliophiles"</li>
</ul>
{% endblock %}

View File

@ -1,6 +1,6 @@
{% extends 'basedocumentation.html' %}
{% block title %} for Rightsholders {% endblock %}
{% block title %}Tools for Rightsholders {% endblock %}
{% block extra_extra_head %}
{{ block.super }}
<link rel="stylesheet" href="/static/css/ui-lightness/jquery-ui-1.8.16.custom.css" type="text/css" media="screen">
@ -15,30 +15,279 @@
{% block doccontent %}
<h1>Unglue.it for Rightsholders</h1>
<h1>unglue.it Tools for Rightsholders</h1>
<div class="presstoc"><div class="pressemail">
Any questions not covered here? Please email us at <a href="mailto:rights@ebookfoundation.org">rights@ebookfoundation.org</a>.
Any questions not covered here? Please email us at <a href="mailto:rights@gluejar.com">rights@gluejar.com</a>.
</div></div>
<h2>Contents</h2>
<ul class="bullets">
<li><a href="{% url 'rightsholders' %}#getting_started">Getting Started</a></li>
<li><a href="{% url 'rightsholders' %}#distributing">Distributing Free Books Through Unglue.it</a></li>
<li><a href="{% url 'rightsholders' %}#how_to">Becoming an Unglue.it Rights Holder</a></li>
<li><a href="{% url 'rightsholders' %}#about_campaigns">About Campaigns</a></li>
</ul>
{% if request.user.rights_holder.count %}
<h2>Other tools</h2>
<ul class="bullets">
<li><a href="{% url 'rh_yours' %}#your_rhs">Rights Holders That You Administer</a></li>
<li><a href="{% url 'rh_campaigns' %}#managed_campaigns">Books/Campaigns You Manage</a></li>
<li><a href="{% url 'rh_works' %}#open_campaigns">Works You Have Claimed</a></li>
</ul>
<li><a href="#getting_started">Getting Started</a></li>
{% if campaigns %}
<li><a href="#managed_campaigns">Books/Campaigns You Manage</a></li>
{% endif %}
{% block toolcontent %}{% endblock %}
{% if request.user.rights_holder.count %}
<li><a href="#open_campaigns">Works You Have Claimed</a></li>
{% endif %}
{% if request.user.rights_holder.count %}
<li><a href="#your_rhs">Rights Holders That You Administer</a></li>
{% endif %}
<li><a href="#how_to">Registering your Rights</a></li>
<li><a href="#about_campaigns">About Campaigns</a></li>
</ul>
<h2 id="getting_started">Getting Started</h2>
<p>
If you're an author, publisher, or other rights holder, you can participate more fully in Unglue.it by registering as a rights holder. Registered rights holders can:
<ul class="bullets">
<li> Add books to the unglue.it database.</li>
<li> Set metadata and descriptions for their books.</li>
<li> Create campaigns for their books. </li>
</ul>
</p>
{% if campaigns %}
<h2 id="managed_campaigns">Campaigns You Manage</h2>
<dl>
{% for campaign in campaigns %}
<dt><a href="{% url 'work' work_id=campaign.work_id %}">{{campaign.name }}</a></dt>
<dd>
<div class="work_campaigns clearfix">
<div class="campaign_info">
{% ifequal campaign.type 1 %}
<b>Pledge Campaign</b><br />
Campaign status: {{ campaign.status }} <br />
Created: {{ campaign.created }}<br />
${{ campaign.current_total }} pledged of ${{ campaign.target }}, {{ campaign.supporters_count }} supporters
{% endifequal %}
{% ifequal campaign.type 2 %}
<b>Buy-to-Unglue Campaign</b><br />
Campaign status: {{ campaign.status }} <br />
Created: {{ campaign.created }}<br />
${{ campaign.current_total }} sold. ${{ campaign.target }} to go. Ungluing Date: {{ campaign.cc_date }}<br />
{% with campaign.work.preferred_edition as edition %}
<a href="{% url 'new_edition' edition.work_id edition.id %}"> Edit </a> the preferred edition<br />
You can also <a href="{% url 'edition_uploads' edition.id %}"> Load a file</a> for this edition.<br />
{% endwith %}
{% endifequal %}
{% ifequal campaign.type 3 %}
<b>Thanks-for-Ungluing Campaign</b><br />
Campaign status: {{ campaign.status }} <br />
Created: {{ campaign.created }}<br />
${{ campaign.current_total }} raised from {{ campaign.supporters_count }} ungluers, {{ campaign.anon_count }} others.
{% with campaign.work.preferred_edition as edition %}
<a href="{% url 'new_edition' edition.work_id edition.id %}"> Edit </a> the preferred edition<br />
You can also <a href="{% url 'edition_uploads' edition.id %}"> Load a file</a> for this edition.<br />
{% endwith %}
{% endifequal %}
</div>
{% if campaign.status = 'ACTIVE' or campaign.status = 'INITIALIZED' %}
<div>
<a href="{% url 'manage_campaign' campaign.id %}" class="manage">Manage This Campaign</a>
</div>
{% endif %}
{% if campaign.clone_form %}
<div>
<form method="POST" action="#">
{% csrf_token %}
{{ campaign.clone_form }}{{ campaign.clone_form.errors }}
<input type="submit" name="clone" value="Clone this Campaign">
</form>
</div>
{% endif %}
</div>
</dd>
{% endfor %}
</dl>
{% endif %}
{% if request.user.rights_holder.count %}
<h2 id="open_campaigns">Works You Have Claimed</h2>
<dl>
{% for claim in claims %}
<dt>Title: <a href="{% url 'work' work_id=claim.work_id %}">{{claim.work.title }}</a>&nbsp;&nbsp;&nbsp;(work #{{ claim.work_id }})</dt>
<dd>Author: {{claim.work.authors_short }}
<br />On Behalf of: {{ claim.rights_holder.rights_holder_name }}
<br />PSA #: {{ claim.rights_holder.id }}
<br />Date of Claim : {{ claim.created }}
<br />Status of Claim: {{ claim.get_status_display }}
{% if claim.campaign_form %}
<h3>Initialize a campaign for this work</h3>
<div class="work_campaigns clearfix" style="padding: 5px;">
<form method="POST" action="#managed_campaigns">
{% csrf_token %}
{{ claim.campaign_form.name }}{{ claim.campaign_form.name.errors }}
{% if claim.rights_holder.can_sell %}
{% ifequal claim.can_open_new 1 %}
<p>Choose the Campaign Type: {{ claim.campaign_form.type }}{{ claim.campaign_form.type.errors }}</p>
<ol>
<li> <i>Pledge-To-Unglue</i>: These campaigns have a fixed end date. When your pledges reach the target you set, the campaign succeeds and the ebook is released in an open-access <i>unglued</i> edition.</li>
<li> <i>Buy-To-Unglue</i>: These campaigns start with a date on which the ebook will become open access. Each sale advances this "ungluing date" an increment based on you funding target.</li>
<li> <i>Thanks-For-Ungluing</i>: These campaigns are for books that <i>already</i> have a Creative Commons license.</li>
</ol>
{% else %}
Your previous campaign succeeded, but you can open a new <i>Thanks-For-Ungluing</i> campaign. <input type="hidden" id="cl_{{ claim.id }}-type" name="cl_{{ claim.id }}-type" value="3" />
{{ claim.campaign_form.type.errors }}
{% endifequal %}
{% else %}
<input type="hidden" id="cl_{{ claim.id }}-type" name="cl_{{ claim.id }}-type" value="1" />
{% endif %}
<p>Add another Campaign Manager(s) by their Unglue.it username: </p>
<div style="width:220px; padding-left:20px" >{{ claim.campaign_form.managers }}{{ claim.campaign_form.managers.errors }}
<br />
<input type="submit" name="submit" value="Initialize Campaign">
</div>
<p>
{{ claim.campaign_form.work }}{{ claim.campaign_form.work.errors }}
{{ claim.campaign_form.userid }}{{ claim.campaign_form.userid.errors }}
</p>
</form>
</div>
{% else %}{%if claim.campaign %}
<h3>Campaign for this work</h3>
{% with claim.campaign as campaign %}
<div class="work_campaigns clearfix">
{% if campaign.status = 'ACTIVE' or campaign.status = 'INITIALIZED' %}
<div class="campaign_info">
Your {{ campaign.get_type_display }}, "{{ campaign.name }}", is {{ campaign.status }}<br />
Created: {{ campaign.created }}<br />
Manager(s): {% for user in campaign.managers.all %} <a href="{% url 'supporter' user.username %}">{{ user.username }} </a> {% endfor %}
<form method="POST" action="#">{% csrf_token %}
<div style="width:220px; padding-left:20px" >
Add/Remove Managers:
{{ campaign.edit_managers_form.managers }}{{ campaign.edit_managers_form.managers.errors }}
<input type="submit" name="edit_managers_{{campaign.id}}" value="Save Managers">
</div>
</form>
</div>
{% if request.user in campaign.managers.all %}
<div>
<a href="{% url 'manage_campaign' campaign.id %}" class="manage">Manage This Campaign</a>
</div>
{% endif %}
{% else %}
<div class="campaign_info">
Name: Your campaign, "{{ campaign.name }}", is {{ campaign.status }}<br />
Created: {{ campaign.created }}<br />
Manager(s): {% for user in campaign.managers.all %} <a href="{% url 'supporter' user.username %}">{{ user.username }} </a> {% endfor %}
<br />
{% ifequal campaign.type 1 %}
${{ campaign.current_total }} pledged of ${{ campaign.target }}, {{ campaign.supporters_count }} supporters
{% else %}
${{ campaign.current_total }} sold. ${{ campaign.target }} to go, Ungluing Date: {{ campaign.cc_date }}
{% endifequal %}
<br /> <a href="{% url 'campaign_results' campaign.id %}">Transaction Details</a>
</div>
{% endif %}
</div>
{% endwith %}
{% endif %}
{% endif %}
{% if claim.work.first_ebook %}
<h4> Ebooks for this work </h4>
<p>{{ claim.work.download_count }} total downloads</p>
<div class="work_campaigns">
<ul>
{% for ebook in claim.work.ebooks_all %}
<li> edition #{{ebook.edition_id}} {{ ebook.format }} {% if not ebook.active %}(inactive){% endif %}
{{ ebook.download_count }} downloads
</li>
{% endfor %}
</ul>
</div>
{% endif %}
</dd>
{% endfor %}
</dl>
{% endif %}
{% if request.user.rights_holder.count %}
<h2 id="your_rhs">Rights Holders That You Administer</h2>
<dl>
{% for rights_holder in request.user.rights_holder.all %}
<dt>Name: {{ rights_holder.rights_holder_name }}&nbsp;&nbsp;&nbsp;(rights holder #{{ rights_holder.id }})</dt>
<dd>PSA #: {{ rights_holder.id }}
<br />contact email: {{ rights_holder.email }}</dd>
{% endfor %}
</dl>
{% else %}
<h2 id="your_rhs">Your Books/Campaigns</h2>
<I>If you were a registered rights holder with Unglue.it, you'd be able to see and manage your campaigns here. </I>
{% endif %}
<h2 id="how_to">Registering Your Rights</h2>
<ol>
{% if not request.user.is_authenticated %}
<li>Set up an Unglue.it account. (<a href="{% url 'registration_register' %}?next={% url 'rightsholders' %}">Click here</a> or use the Sign Up button at the top of the page).</li>
{% else %}
<li class="checked">You've already set up an Unglue.it account.</li>
{% endif %}
{% if not request.user.rights_holder.count %}<li>{% else %}<li class="checked">{% endif %}Sign a <a href="https://www.docracy.com/1mud3ve9w8/unglue-it-non-exclusive-platform-services-agreement">Platform Services Agreement</a>. Unglue.it uses Docracy.com to manage rights holder agreements. If you have any questions, <a href="mailto:rights@gluejar.com?subject=agreement">ask us</a>.</li>
{% if claims %}
<li class="checked"><i>You have claimed {{ claims.count }}</i> work(s). You can claim more.
{% else %}
<li><i>Claim</i> your work(s) or send us metadata for books you have rights to.
{% endif %}
<p><b>Claiming a work</b></p>
<p>If your book is indexed in Google books, we can add it to our database automagically. Click on the result list to add your book to our database.</p>
<form action="{% url 'search' %}" method="get">
<div class="inputalign">
<input type="text" id="watermark" size="25" onfocus="imgfocus()" onblur="imgblur(15)" class="inputbox" name="q" value="{{ q }}"><input type="hidden" name="page" value="2">
<input type="submit" class="button">
</div>
</form>
<ul class="bullets">
<li>Use the Claim option on the More... tab of each book's page.</li>
<li>Agree to our <a href="{% url 'terms' %}">Terms</a> on the following page. This includes agreeing that you are making the claim in good faith and can substantiate that you have legal control over worldwide electronic rights to the work.</li>
<li>If you have any questions or you claim a work by mistake, <a href="mailto:rights@gluejar.com?subject=claiming%20works">email us</a>.</li>
<li>We will review your claim. We may contact you at {{ request.user.email }} if we have any questions. If this is the wrong email address, please <a href="{% url 'edit_user' %}">change the email address</a> for your account.</li>
</ul>
<p><b>Entering a work</b></p>
<p>If your book is not in Google books, you'll need to enter the metadata yourself.</p>
<ul class="bullets">
<li>Use <a href="{% url 'new_edition' '' '' %}">this form</a> to enter the metadata.</li>
<li>Your ebooks must have ISBNs or OCLC numbers assigned.</li>
<li>Your metadata should have title, authors, language, description.</li>
<li>If you have a lot of books to enter, <a href="{% url 'feedback' %}?page={{request.build_absolute_uri|urlencode:""}}">contact us</a> to load ONIX or CSV files for you.</li>
</ul></li>
{% if campaigns %}
<li class="checked">You've set up {{ campaigns.count }} campaign(s). Manage them <a href="#managed_campaigns">above.</a></li>
{% else %}
<li>{% if claims %}<a href="#open_campaigns">Set up a campaign</a> for for your book.{% else %} Set up a campaign. All the campaigns you can manage will be listed on this page, above.{% endif %}</li>
{% endif %}
</ol>
<h2 id="about_campaigns">About Campaigns </h2>
<p> If you have already released your work under a Creative Commons license, you need to use a "Thanks for Ungluing" campaign. If you have an EPUB file ready to sell, you should use a "Buy to Unglue" campaign. Otherwise, you'll want to offer rewards in a "Pledge-to-Unglue" campaign. </p>
<h2>Thanks-for-Ungluing Campaigns</h2>
<p>Thanks-for-Ungluing is a program designed to help rights holders promote and monetize their Creative Commons licensed books. Rights holders participating in the Thanks-for-Ungluing program can request payment for their books on a pay-what-you-want basis. They can also set suggested prices as well as metadata and descriptions for books that they claim. </p>
<h2>Buy-to-Unglue Campaigns</h2>
<p>Buy-to-Unglue is a program that sells ebook licenses to reach the campaign goal. To enable ebook sales, you'll need to upload an epub file for each book.
There are no “rewards” for a “Buy to Unglue” campaign, but you may offer time-limited, special price promotions for the ebook.</p>
<p>
A Buy-to-Unglue Campaign provides long-term promotion and sales opportunities for your ebook before it becomes an Unglued Ebook. Until the revenue goal is reached, supporters and libraries know that every book that gets purchased through Unglue.it brings the ungluing date closer to the present.
</p>
<h2>Pledge-to-Unglue Campaigns</h2>
<p>For Pledge campaigns, you can run campaigns for books that haven't been converted to digital.
Any print book can be scanned to create a digital file that can then become an ePub-format unglued ebook to be released after the Pledge Campaign succeeds.</p>
<p>Rewards</p>
<p>Campaigns run for a short period (2-6 months) and can have rewards as a way to motivate and thank supporters for helping to reach your goal. You are strongly encouraged to add rewards - they are given special prominence on the campaign page.</p>
<p>What should you add as rewards? Anything (legal) that you think you can reasonably deliver that will get supporters excited about the book. For example: other books, whether electronic or physical; artwork or multimedia relating to the book, its author, or its themes; in-person or online chats with the author; memorabilia.</p>
<p>Acknowledgements for Pledge Campaigns</p>
<p>Here are the standard acknowledgements. These automatically combine with your rewards. For example, if you offer a $30 reward, ungluers who pledge $30 will receive the $25 acknowledgement as well.</p>
<ul class="terms">
<li><em>Any amount</em> &#8212; The unglued ebook</li>
<li><em>$25 and above</em> &#8212; Their name in the acknowledgements section under "supporters"</li>
<li><em>$50 and above</em> &#8212; Their name &amp; profile link under "benefactors"</li>
<li><em>$100 and above</em> &#8212; Their name, profile link, &amp; a dedication under "bibliophiles"</li>
</ul>
<h2>More Questions</h2>
<p> Check the FAQ to the left, or <a href="{% url 'feedback' %}?page={{request.build_absolute_uri|urlencode:""}}">send us feedback.</a>
{% endblock %}

View File

@ -1,102 +0,0 @@
{% extends 'rh_tools.html' %}
{% block toolcontent %}
{% if request.user.rights_holder.count %}
<h2 id="open_campaigns">Works You Have Claimed</h2>
<dl>
{% for claim in claims %}
<dt>Title: <a href="{% url 'work' work_id=claim.work_id %}">{{claim.work.title }}</a>&nbsp;&nbsp;&nbsp;(work #{{ claim.work_id }})</dt>
<dd style='margin-left: 2em'>Author: {{claim.work.authors_short }}
<br />On Behalf of: {{ claim.rights_holder.rights_holder_name }}
<br />Agreement #: {{ claim.rights_holder.id }}
<br />Date of Claim : {{ claim.created }}
<br />Status of Claim: {{ claim.get_status_display }}
{% if claim.campaign_form %}
<h3>Initialize a campaign for this work</h3>
<div class="work_campaigns clearfix" style="padding: 5px;">
<form method="POST" action="#managed_campaigns">
{% csrf_token %}
{{ claim.campaign_form.name }}{{ claim.campaign_form.name.errors }}
{% ifequal claim.can_open_new 1 %}
<p>Choose the Campaign Type: {{ claim.campaign_form.type }}{{ claim.campaign_form.type.errors }}</p>
<ol>
<li> <i>Pledge-To-Unglue</i>: These campaigns have a fixed end date. When your pledges reach the target you set, the campaign succeeds and the ebook is released in an open-access <i>unglued</i> edition.</li>
<li> <i>Buy-To-Unglue</i>: These campaigns start with a date on which the ebook will become open access. Each sale advances this "ungluing date" an increment based on you funding target.</li>
<li> <i>Thanks-For-Ungluing</i>: These campaigns are for books that <i>already</i> have a Creative Commons license.</li>
</ol>
{% else %}
Your previous campaign succeeded, but you can open a new <i>Thanks-For-Ungluing</i> campaign. <input type="hidden" id="cl_{{ claim.id }}-type" name="cl_{{ claim.id }}-type" value="3" />
{{ claim.campaign_form.type.errors }}
{% endifequal %}
<p>Add another Campaign Manager(s) by their Unglue.it username: </p>
<div style="width:220px; padding-left:20px" >{{ claim.campaign_form.managers }}{{ claim.campaign_form.managers.errors }}
<br />
<input type="submit" name="submit" value="Initialize Campaign">
</div>
<p>
{{ claim.campaign_form.work }}{{ claim.campaign_form.work.errors }}
{{ claim.campaign_form.userid }}{{ claim.campaign_form.userid.errors }}
</p>
</form>
</div>
{% else %}{%if claim.campaign %}
<h3>Campaign for this work</h3>
{% with claim.campaign as campaign %}
<div class="work_campaigns clearfix">
{% if campaign.status = 'ACTIVE' or campaign.status = 'INITIALIZED' %}
<div class="campaign_info">
Your {{ campaign.get_type_display }}, "{{ campaign.name }}", is {{ campaign.status }}<br />
Created: {{ campaign.created }}<br />
Manager(s): {% for user in campaign.managers.all %} <a href="{% url 'supporter' user.username %}">{{ user.username }} </a> {% endfor %}
<form method="POST" action="#">{% csrf_token %}
<div style="width:220px; padding-left:20px" >
Add/Remove Managers:
{{ campaign.edit_managers_form.managers }}{{ campaign.edit_managers_form.managers.errors }}
<input type="submit" name="edit_managers_{{campaign.id}}" value="Save Managers">
</div>
</form>
</div>
{% if request.user in campaign.managers.all %}
<div>
<a href="{% url 'manage_campaign' campaign.id %}" class="manage">Manage This Campaign</a>
</div>
{% endif %}
{% else %}
<div class="campaign_info">
Name: Your campaign, "{{ campaign.name }}", is {{ campaign.status }}<br />
Created: {{ campaign.created }}<br />
Manager(s): {% for user in campaign.managers.all %} <a href="{% url 'supporter' user.username %}">{{ user.username }} </a> {% endfor %}
<br />
{% ifequal campaign.type 1 %}
${{ campaign.current_total }} pledged of ${{ campaign.target }}, {{ campaign.supporters_count }} supporters
{% else %}
${{ campaign.current_total }} sold. ${{ campaign.target }} to go, Ungluing Date: {{ campaign.cc_date }}
{% endifequal %}
<br /> <a href="{% url 'campaign_results' campaign.id %}">Transaction Details</a>
</div>
{% endif %}
</div>
{% endwith %}
{% endif %}
{% endif %}
{% if claim.work.first_ebook %}
<h4> Ebooks for this work </h4>
<p>{{ claim.work.download_count }} total downloads</p>
<div class="work_campaigns">
<ul>
{% for ebook in claim.work.ebooks_all %}
<li> edition #{{ebook.edition_id}} {{ ebook.format }} {% if not ebook.active %}(inactive){% endif %}
{{ ebook.download_count }} downloads
</li>
{% endfor %}
</ul>
</div>
{% endif %}
</dd>
{% empty %}
<dd> You have not claimed any works. </dd>
{% endfor %}
</dl>
{% endif %}
{% endblock %}

View File

@ -1,22 +0,0 @@
{% extends 'rh_tools.html' %}
{% block toolcontent %}
{% if request.user.rights_holder.count %}
<h2 id="your_rhs">Rights Holders That You Administer</h2>
<dl>
{% for rights_holder in request.user.rights_holder.all %}
<dt>Name: {{ rights_holder.rights_holder_name }}&nbsp;&nbsp;&nbsp;(rights holder #{{ rights_holder.id }}
{% if not rights_holder.approved %}<i>pending approval</i>{% endif %}) </dt>
<dd>Agreement #: {{ rights_holder.id }}
<br />contact email: {{ rights_holder.email }}
</dd>
{% empty %}
<dt>You haven't signed a <a href="{% url 'agree' %}">Unglue.it Rights Holder Agreement</a>.</dt>
{% endfor %}
</dl>
{% else %}
<h2 id="your_rhs">Your Books/Campaigns</h2>
<I>You haven't signed a <a href="{% url 'agree' %}">Unglue.it Rights Holder Agreement</a>. If you were a registered rights holder with Unglue.it, you'd see your agreement status here. </I>
{% endif %}
{% endblock %}

View File

@ -1,107 +0,0 @@
<div id="doc-wrapper"><div class="doc-sign" id="doc-content"> <!--{{ form.errors }}--><form method="POST" action="#" > {% csrf_token %}
<p style="text-align: center;"><strong>UNGLUE.IT RIGHTS HOLDER AGREEMENT</strong></p>
{{ form.rights_holder_name.errors }}
<p style="text-align: justify;"><strong>Date:</strong> {{ created }}</p>
<p style="text-align: justify;"><strong>Rights Holder:</strong> {{ form.rights_holder_name }}</p>
<p style="text-align: justify;"><strong>Unglue.it Username for Rights Holder:</strong> <span class="rh_data">{{ form.owner }}{{ request.user.username }}</span></p>
{{ form.address.errors }}
<p style="text-align: justify;"><strong>Business Address: </strong> <br /> {{ form.address }}</p>
{{ form.mailing.errors }}
<p style="text-align: justify;"><strong>Mailing Address: </strong>{% if form.use4both %} copy from Business Address {{ form.use4both }}{% endif %}<br /> {{ form.mailing }}</p>
{{ form.telephone.errors }}{{ form.email.errors }}
<p style="text-align: justify;"> <strong>Tel:</strong> {{ form.telephone }} <strong>Email:</strong> {{ form.email }}</p>
{{ form.signer.errors }}
<p style="text-align: justify;">Signer Name: {{ form.signer }}</p>
{{ form.signer_title.errors }}
<p style="text-align: justify;">Signer Title: {{ form.signer_title }}</p>
<p><strong>FREE EBOOK FOUNDATION, INC.</strong>, a New Jersey Not-for-profit corporation (<strong><em>Distributor</em></strong>), and the above described <strong><em>Rights Holder</em></strong>, agree as follows:</p>
<p style="text-indent: 0pt"><strong>1. Parties.</strong> The Distributor is the owner and operator of <strong><em>Unglue.it</em></strong>, a platform for the digital distribution of written materials via the unglue.it website and any other URLs designated by the Distributor for such purpose. The Rights Holder is the copyright owner or authorized publisher or licensed distributor of certain published written materials which the Rights Holder wants to distribute on Unglue.it.</p>
<p style="text-indent: 0pt"><strong style="text-indent: 0pt">2. Purpose.</strong> This Agreement sets forth the rights and obligations of the parties and applies to all written materials uploaded by the Rights Holder onto the Unglue.it platform using the Unglue.it web interface (individually, a <strong style="text-indent: 0pt"><em>Uploaded Work</em></strong><em style="text-indent: 0pt"> </em>and collectively, <strong style="text-indent: 0pt"><em>Uploaded Works</em></strong>). The parties intend to collaborate in the release and distribution of the Uploaded Works under a Creative Commons License or such other "free" license as shall then pertain to release of creative works (<strong style="text-indent: 0pt"><em>CC License</em></strong>). For works not yet released under such a license, the date that the Rights Holder agrees, as determined by terms of the applicable Programs, to release a Uploaded Work under a CC License pursuant to this Agreement shall be referred to as the <strong style="text-indent: 0pt"><em>Ungluing Date.</em></strong></p>
<p style="text-indent: 0pt"><strong style="text-indent: 0pt">3. Term and Termination.</strong> The term of this Agreement shall begin on the Effective Date. Either party may terminate this Agreement at any time upon thirty (30) days notice to the other party. All licenses issued to third parties during the Term are irrevocable (except in the case of a breach by the third party licensee) and shall survive termination. In particular, the Rights Holder must release of the Uploaded Works pursuant to a CC License on or before the determined Ungluing Date, even if the Ungluing Date occurs after the termination of this Agreement.</p>
<p style="text-indent: 0pt"><strong style="text-indent: 0pt">4. Programs. </strong>The Distributor has one or more models for the distribution and release of Uploaded Works on Unglue.it, as specified in the <strong><em>Program Terms</em></strong> at <a href="{% url 'programs' %}">https://unglue.it{% url 'programs' %}</a>. Under each Program, the Rights Holder agrees to release and distribute the Uploaded Work in a digital format under a CC License (<strong><em>Unglue</em></strong> the Uploaded Work) pursuant to the applicable Program Terms.</p>
<p style="text-indent: 0pt"><strong style="text-indent: 0pt">5. Grant of Rights.</strong> The Rights Holder hereby authorizes the Distributor as follows:</p>
<p style="text-indent: 0pt">(a) to display and market Uploaded Works on the Platform, and to copy and transmit Uploaded Works as may be required in order to fulfill its obligations to Ungluers and other licensees pursuant to the terms of use set forth on the Unglue.it website or any applicable licensing agreement or CC License as applicable;</p>
<p style="text-indent: 36pt">(b) to use the Rights Holders name or trademark in association with Uploaded Works or for promotional or editorial purposes in connection with the Programs;</p>
<p style="text-indent: 36pt">(c) to collect revenues on behalf of the Rights Holder from supporters, purchasers and licensees of Uploaded Works (<strong><em>Ungluers</em></strong>) using a third party payment processor selected in the sole discretion of the Distributor;</p>
<p style="text-indent: 36pt">(d) to retain, reserve and distribute payments to the Rights Holder and to the Distributor or otherwise pursuant to the terms of this Agreement, or to any agreement that the Distributor may have with a third party payment processor (including, but not limited to, a reasonable reserve against chargebacks or returns for a period of up to six months);</p>
<p style="text-indent: 36pt">(e) to convey licenses for the Uploaded Works to individuals pursuant to the terms set forth in the Terms of Use set forth on the Unglue.it website (as amended from time to time in the sole discretion of the Distributor);</p>
<p style="text-indent: 36pt">(f) to convey licenses for the Uploaded Works to libraries and similar non-profit institutions based on the terms set forth in the then current version of the Unglue.it Library License Agreement, a copy of which shall be provided to the Rights Holder upon request; and</p>
<p style="text-indent: 36pt">(g) to insert the corresponding license notices into the Uploaded Works that reflect the then current Ungluing Date and other applicable license terms.</p>
<p><strong style="text-indent: 0pt">6. Service Fees.</strong> As full compensation for the services provided by the Distributor in connection with the Programs, the Rights Holder shall pay to the Distributor, and hereby authorizes the Distributor to withhold from revenues collected by the Distributor on behalf of the Rights Holder the fees set forth in the applicable Program Terms.</p>
<p style="text-indent: 0pt"><strong>7. Payments to Rights Holder.</strong></p>
<p>(a) In no event shall payment be made until the Rights Holder has delivered to the Distributor a digital file for the applicable Uploaded Work that complies with the delivery specifications set forth on the then-current Unglue.it website terms of use.</p>
<p>(b) The Distributor shall pay the Rights Holder the proceeds due and owing pursuant to the applicable Program Terms no less than quarterly (or more frequently at the discretion of the Distributor) in arrears, payable on the fifteenth day of the month following the close of each calendar quarter, such payment to cover the previous calendar quarter. For example, payments due in connection with transactions that occur January 1 through March 31 will be paid to the Rights Holder on April 15 of the same year. Each payment shall be accompanied by a statement detailing sales and licensing data, revenues received, return data, reserve and Distribution Fees withheld. Notwithstanding the above, quarterly payments may be deferred until the following pay period in the event that the amount payable to the Rights Holder for any given pay period is less than $100.</p>
<p><strong>8. Rights Holder Warrantees and Representations.</strong> The Rights Holder warrants and represents as follows:</p>
<p style="text-indent: 36pt">(a) The Rights Holder is the sole owner of the copyright in the each Uploaded Work, or has the full power and authority to enter into this Agreement on behalf of the copyright owners of each Uploaded Work.</p>
<p style="text-indent: 36pt">(b) The signer of this Agreement has full authority to enter into this Agreement on behalf of this Rights Holder and to bind the Rights Holder by their signature.</p>
<p style="text-indent: 36pt">(c) The Rights Holder has all rights necessary to grant the rights granted to the Distributor pursuant to this Agreement, including but not limited to the right to display, market, copy, distribute and transmit the Uploaded Works on the Unglue.it website, the right to license the Uploaded Works to third party individuals, libraries and institutions as contemplated under this Agreement, and to release digital copies of the Uploaded Works under a Creative Commons license upon the successful completion of a campaign.</p>
<p style="text-indent: 36pt">(d) Neither the Rights Holder nor the copyright owner has entered any agreements with any third party that impact the ability of the Rights Holder to enter into this Agreement or to comply with its obligations hereunder, including but not limited to the obligation to release the Uploaded Work under a CC License on the Ungluing Date.</p>
<p style="text-indent: 36pt">(e) The Rights Holder assumes sole responsibility for the payment of any royalties or other fees that may be due to third parties in connection with revenues collected by the Distributor in connection with the Uploaded Work.</p>
<p style="text-indent: 36pt">(f) Each Uploaded Work is original to the copyright owner or the credited author and does not infringe on any statutory or common law copyright or any proprietary right of any third party.</p>
<p style="text-indent: 36pt">(g) Each Uploaded Work does not invade the privacy of any third party, or contain matter libelous or otherwise in contravention of the rights of any third person.</p>
<p style="text-indent: 36pt">(h) Each Uploaded Work contains no matter the publication or distribution of which would otherwise violate any federal or state statute or regulation, nor is the Uploaded Work in any manner unlawful, and nothing in the Uploaded Work shall be injurious to the health of a reader of the Uploaded Work.</p>
<p style="text-indent: 36pt">(i) There is no threatened or pending litigation or third party claim that relates to any Uploaded Work.</p>
<p style="text-indent: 36pt">(j) The Rights Holder shall comply with the terms set forth in the then current Terms of Use set forth on the Unglue.it website pertaining to the content that may be posted on the Unglue.it site in connection with any campaign.</p>
<p style="text-indent: 36pt">(k) The Rights Holder shall timely pay any sales taxes, withholding or other taxes relating to revenues processed by the Distributor on behalf of the Rights Holder.</p>
<p style="text-indent: 36pt">(l) The Rights Holder agrees that any data obtained from Unglue.it or the distributor must always be handled in accordance with the Unglue.it Terms of Service and Privacy Notice.</p>
<p style="text-indent: 0pt"><strong>9. Reliance of the Distributor on the Rights Holder Representations and Warrantees.</strong> Each of the representations and warrantees of the Rights Holder set forth in this Agreement is true as of the date of this Agreement and shall remain true during the Term. The Distributor may rely on the truth of such representations and warrantees in dealing with any third party including but not limited to Ungluers and licensees. The Distributor is under no obligation to make an independent investigation to determine whether the above representations are true and accurate. Upon the Distributors request, the Rights Holder shall provide the Distributor with copies of any and all prior publishing agreements and rights agreements, assignments, releases and consents relating to any Uploaded Work submitted to the Distributor in connection with a Program. The Distributor may, in its sole discretion, decline to accept any Uploaded Work as part of any Program, for any reason or for no reason.</p>
<p style="text-indent: 0pt"><strong>10. Indemnification.</strong> The Rights Holder shall indemnify and hold harmless the Distributor, its officers, directors, employees, agents, licensees and assigns (<strong><em>Indemnified Parties</em></strong>) from any losses, liabilities, damages, costs and expenses (including reasonable attorneys fees) that may arise out of any claim by the Distributor or any third party relating to the alleged breach of any of the Rights Holders warrantees and representation as set forth in this Agreement.</p>
<p style="text-indent: 0pt"><strong>11. Limitation of Liability. </strong>Under no circumstances, including, without limitation, negligence, shall the Distributor or its directors, affiliates, officers, employees, or agents be responsible for any indirect, incidental, special, or consequential damages arising from or in connection with the use of or the inability to use the Program or the web interface, or any content contained on the Unglue.it website, including, without limitation, damages for loss of profits, use, data, or other intangibles.</p>
<p style="text-indent: 0pt"><strong>12. No Joint Venture.</strong> This Agreement shall not be deemed to have created an agency relationship, partnership or joint venture between the parties.</p>
<p style="text-indent: 0pt"><strong>13. Entire Understanding.</strong> This Agreement, together with the Terms of Service contained on the Distributors website as updated by the Distributor from time to time without notice to the Rights Holder, and any applicable CC licenses, constitute the entire agreement between the parties and supersedes any previous agreements and understandings had between the parties with respect to the Uploaded Works.</p>
<p style="text-indent: 0pt"><strong>14. Governing Law; Venue.</strong> This Agreement is governed by and shall be interpreted and construed according to the laws of the United States with respect to copyright law and the laws of New York with regard to all other matters. At the Distributors option, any claim arising out of or related to this Agreement shall be settled by arbitration administered by a neutral arbitrator selected by the parties. If the Distributor elects to use the court system as its preferred mode of dispute resolution, then the dispute shall be subject to the exclusive jurisdiction of New York State. Prior to the commencement of any arbitration or litigation proceeding, the Distributor may elect to require that the parties participate in good faith effort to resolve the dispute through mediation. The venue for all dispute resolution proceedings shall be the city and state of New York.</p>
<p style="text-indent: 0pt"><strong>15. Execution.</strong> This Agreement may be executed by exchange of emails. Electronic signatures, faxed or scanned signatures shall be as binding as an original signature.</p>
<p><strong>AGREED AND ACCEPTED:</strong></p>
<p style="text-align: justify;">For <strong>FREE EBOOK FOUNDATION, INC. </strong>, Distributor</p>
<p style="text-align: justify;">Eric Hellman, President<strong> </strong></p>
<p style="text-align: justify;"><em>Signature:{{ fef_sig }}</em></p>
{{ form.rh_name.errors }}
<p style="text-align: justify;">For <strong><span id="rh_name">{{ rights_holder_name }}</span></strong>, Rights Holder </p>
{{ form.signature.errors }}
<p style="text-align: justify;"><em>Signature: {{ form.signature }}</em>, <span id="rh_signer_title">{{ signer_title }}</span></p>
<p style="text-align: justify;"><em>{{ signer_note }}</p>
<input type='submit' name='submit' value='Enter Signature' />
</form>
</div>
</div>

View File

@ -18,60 +18,69 @@
<li><a href="{% url 'subjects' %}">Subjects</a> (set keywords)</li>
{% if facet = 'top' %}
<li><a href="{% url 'accepted' %}">Accepted Rights Holders</a></li>
<li><a href="{% url 'claims' %}">Active Claims</a></li>
{% else %}
<li><a href="{% url 'rh_admin' %}">Unglue.it Admin</a></li>
{% endif %}
</ul>
{% if facet = 'top' %}
<h2>Rights Holder Admin</h2>
<h3> Create New Rights Holder </h3>
<form method="POST" action="#">
{% csrf_token %}
{{ form.as_p }}
<input type="submit" name="create_rights_holder" value="Create" id="submit">
</form>
{% endif %}
{% if facet = 'accepted' %}
<h3> Accepted Rights Holders </h3>
<dl>
{% for rights_holder in rights_holders %}
<dt>{{ rights_holder.rights_holder_name }}</dt>
<dd>Agreement #: {{ rights_holder.id }}
<dd>PSA #: {{ rights_holder.id }}
<br />email: {{ rights_holder.email }}
<br />owner: <a href="{% url 'supporter' rights_holder.owner %}">{{ rights_holder.owner }}</a></dd>
{% empty %}
<p>No rights holders have been accepted yet</p>
{% endfor %}
</dl>
{% else %}
<h2>Rights Holder Admin</h2>
{% endif %}
{% if pending %}
<h3> Pending Rights Holders </h3>
{% if pending and facet = 'top' %}
<h3> Pending Claims </h3>
<form method="POST" action="#">
{{ pending_formset.management_form }}
{% csrf_token %}
<dl>
{% for rights_holder, rh_form in pending %}
<dt>Rights Holder: {{ rights_holder.rights_holder_name }} <a href="{% url 'admin:core_rightsholder_change' rights_holder.id %}">edit</a></dt>
<dd style='margin-left: 2em'>Unglue.it Username for Rights Holder: {{ rights_holder.owner.username }}<br />
Business Address: <br />
<pre>{{ rights_holder.address }}</pre><br />
Mailing Address: <br />
<pre>{{ rights_holder.mailing }}</pre><br />
Tel: {{ rights_holder.telephone }} <br />
Email: {{ rights_holder.email }}<br />
Signer Name: {{ rights_holder.signer }}<br />
Signer Title: {{ rights_holder.signer_title }}<br />
Signature: {{ rights_holder.signature }}<br />
{% if rights_holder.claim.all.count %}
Claims:
<ul>
{% for claim in rights_holder.claim.all %}
<li><a href='{% url 'work' claim.work_id %}'>{{ claim.work.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{{ rh_form.as_p }}
</dd>
{% for claim, claim_form in pending %}
<dt>Title: <a href="{% url 'work' work_id=claim.work_id %}">{{claim.work.title }}</a></dt>
<dd>Author: {{claim.work.authors_short }}</dd>
<dd>By: {{ claim.user.username }}</dd>
<dd>On Behalf of: {{ claim.rights_holder.rights_holder_name }}</dd>
<dd>PSA #: {{ claim.rights_holder.id }}</dd>
<dd>Date of Claim : {{ claim.created }}</dd>
<dd>Status of Claim: {{ claim.status }}</dd>
<dd>Change to:</dd> {{ claim_form.as_p }}
<input type="submit" name="set_claim_status" value="Set Claim Status" id="submit">
{% endfor %}
</dl>
<input type="submit" name="approve_rights_holder" value="Approve Rights Holders" id="submit">
</form>
{% else %}
No rightsholders pending.
{% endif %}
{% if active_data.count and facet = 'claims' %}
<h3> Active Claims: {{ active_data.count }} </h3>
<dl>
{% for claim in active_data %}
<dt>Title: <a href="{% url 'work' work_id=claim.work_id %}">{{claim.work.title }}</a></dt>
<dd>Author: {{claim.work.authors_short }}</dd>
<dd>By: {{ claim.user.username }}</dd>
<dd>On Behalf of: {{ claim.rights_holder.rights_holder_name }}</dd>
<dd>PSA #: {{ claim.rights_holder.id }}</dd>
<dd>Date of Claim : {{ claim.created }}</dd>
<dd>Status of Claim: {{ claim.status }}</dd>
{% endfor %}
</dl>
{% endif %}
{% endblock %}

View File

@ -52,7 +52,7 @@
<a id="use"><h3>Use of the Service</h3></a>
<p>Unless you are a Rights Holder who has entered into a Rights Holder Agreement with the Company (the “RHA”), and in which case only as expressly authorized by the RHA, the Service is provided only for your personal, non-commercial use, and for use by libraries and similar non-profit entities. </p>
<p>Unless you are a Rights Holder who has entered into a Platform Services Agreement with the Company (the “PSA”), and in which case only as expressly authorized by the PSA, the Service is provided only for your personal, non-commercial use, and for use by libraries and similar non-profit entities. </p>
<p>You are solely responsible for all of your activity in connection with the Service and for any consequences (whether or not intended) of your posting or uploading of any material on the Website.</p>
@ -256,7 +256,7 @@ The Free Ebook Foundation.<br />
41 Watchung Plaza, #132<br />
Montclair, NJ 07042<br />
USA<br />
info@ebookfoundation.org<br />
dmca@gluejar.com<br />
<a id="notice"><h3>Electronic Delivery/Notice Policy and Your Consent</h3></a>

View File

@ -425,7 +425,7 @@
{% if request.user.rights_holder.all.count %}
Is this work yours? Claim it: <br /><br />
<form method="POST" action="{% url 'claim' %}">
<form method="GET" action="{% url 'claim' %}">
{% csrf_token %}
{{ claimform.user }}
{{ claimform.work }}

View File

@ -5,9 +5,11 @@ from django.contrib.auth.decorators import login_required
from django.contrib.sites.models import Site
from django.views.generic import ListView, DetailView
from django.views.generic.base import TemplateView
#from django.views.generic.simple import direct_to_template
from django.views.decorators.csrf import csrf_exempt
from regluit.core.feeds import SupporterWishlistFeed
from regluit.core.models import Campaign
from regluit.frontend import views
@ -23,12 +25,6 @@ urlpatterns = [
url(r"^privacy/$", TemplateView.as_view(template_name="privacy.html"), name="privacy"),
url(r"^terms/$", TemplateView.as_view(template_name="terms.html"), name="terms"),
url(r"^rightsholders/$", views.rh_tools, name="rightsholders"),
url(r"^rightsholders/yours/$", views.rh_tools, {'template_name': 'rh_yours.html'}, name="rh_yours"),
url(r"^rightsholders/campaigns/$", views.rh_tools, {'template_name': 'rh_campaigns.html'}, name="rh_campaigns"),
url(r"^rightsholders/works/$", views.rh_tools, {'template_name': 'rh_works.html'},name="rh_works"),
url(r"^rightsholders/agree/$", views.RHAgree.as_view(), name="agree"),
url(r"^rightsholders/programs/$", TemplateView.as_view(template_name='programs.html'), name="programs"),
url(r"^rightsholders/agree/submitted$", TemplateView.as_view(template_name='agreed.html'), name="agreed"),
url(r"^rightsholders/campaign/(?P<id>\d+)/$", views.manage_campaign, name="manage_campaign"),
url(r"^rightsholders/campaign/(?P<id>\d+)/results/$", views.manage_campaign, {'action': 'results'}, name="campaign_results"),
url(r"^rightsholders/campaign/(?P<id>\d+)/(?P<ebf>\d+)/makemobi/$", views.manage_campaign, {'action': 'makemobi'}, name="makemobi"),
@ -42,6 +38,7 @@ urlpatterns = [
url(r"^rightsholders/surveys/summary_(?P<qid>\d+)_(?P<work_id>\d*).csv$", views.surveys_summary, name="survey_summary"),
url(r"^rh_admin/$", views.rh_admin, name="rh_admin"),
url(r"^rh_admin/accepted/$", views.rh_admin, {'facet': 'accepted'}, name="accepted"),
url(r"^rh_admin/claims/$", views.rh_admin, {'facet': 'claims'}, name="claims"),
url(r"^campaign_admin/$", views.campaign_admin, name="campaign_admin"),
url(r"^faq/$", views.FAQView.as_view(), {'location':'faq', 'sublocation':'all'}, name="faq"),
url(r"^faq/(?P<location>\w*)/$", views.FAQView.as_view(), {'sublocation':'all'}, name="faq_location"),
@ -121,7 +118,7 @@ urlpatterns = [
url(r"^feedback/campaign/(?P<campaign_id>\d+)/?$", views.ask_rh, name="ask_rh"),
url(r"^feedback/$", views.feedback, name="feedback"),
url(r"^feedback/thanks/$", TemplateView.as_view(template_name="thanks.html")),
url(r"^about/$", TemplateView.as_view(template_name="about_main.html"),
url(r"^about/$", TemplateView.as_view(template_name="about.html"),
name="about"),
url(r"^comments/$", views.comment, name="comment"),
url(r"^info/(?P<template_name>[\w\.]*)$", views.InfoPageView.as_view()),

View File

@ -33,7 +33,7 @@ from django.core.urlresolvers import reverse, reverse_lazy
from django.core.validators import validate_email
from django.db.models import Q, Count, Sum
from django.forms import Select
from django.forms.models import inlineformset_factory
from django.forms.models import modelformset_factory, inlineformset_factory
from django.http import (
HttpResponseRedirect,
Http404,
@ -81,6 +81,7 @@ from regluit.frontend.forms import (
RightsHolderForm,
UserClaimForm,
LibraryThingForm,
OpenCampaignForm,
getManageCampaignForm,
CampaignAdminForm,
EmailShareForm,
@ -136,7 +137,6 @@ from questionnaire.models import Landing, Questionnaire
from questionnaire.views import export_summary as answer_summary, export_csv as export_answers
from .bibedit import edit_edition, user_can_edit_work, safe_get_work, get_edition
from .rh_views import RHAgree, rh_admin, claim, rh_tools
logger = logging.getLogger(__name__)
@ -1632,6 +1632,30 @@ class PledgeCancelView(FormView):
logger.error("Exception from attempt to cancel pledge for campaign id {0} for username {1}: {2}".format(campaign_id, user.username, e))
return HttpResponse("Sorry, something went wrong in canceling your campaign pledge. We have logged this error.")
def claim(request):
if request.method == 'GET':
data = request.GET
else:
data = request.POST
form = UserClaimForm(request.user, data=data, prefix='claim')
if form.is_valid():
# make sure we're not creating a duplicate claim
if not models.Claim.objects.filter(work=form.cleaned_data['work'], rights_holder=form.cleaned_data['rights_holder']).exclude(status='release').count():
form.save()
return HttpResponseRedirect(reverse('rightsholders'))
else:
try:
work = models.Work.objects.get(id=data['claim-work'])
except models.Work.DoesNotExist:
try:
work = models.WasWork.objects.get(was = data['claim-work']).work
except models.WasWork.DoesNotExist:
raise Http404
rights_holder = models.RightsHolder.objects.get(id=data['claim-rights_holder'])
active_claims = work.claim.exclude(status = 'release')
context = {'form': form, 'work': work, 'rights_holder':rights_holder , 'active_claims':active_claims}
return render(request, "claim.html", context)
def works_user_can_admin(user):
return models.Work.objects.filter(
Q(claim__user = user) | Q(claim__rights_holder__owner = user)
@ -1727,6 +1751,94 @@ def surveys(request):
surveys = Questionnaire.objects.filter(landings__object_id__in=work_ids).distinct()
return render(request, "surveys.html", {"works":works, "surveys":surveys})
def rh_tools(request):
if not request.user.is_authenticated() :
return render(request, "rh_tools.html")
claims = request.user.claim.filter(user=request.user)
campaign_form = "xxx"
if not claims:
return render(request, "rh_tools.html")
for claim in claims:
if claim.can_open_new:
if request.method == 'POST' and request.POST.has_key('cl_%s-work' % claim.id) and int(request.POST['cl_%s-work' % claim.id]) == claim.work_id :
claim.campaign_form = OpenCampaignForm(data = request.POST, prefix = 'cl_'+str(claim.id),)
if claim.campaign_form.is_valid():
new_campaign = claim.campaign_form.save(commit=False)
if new_campaign.type == BUY2UNGLUE:
new_campaign.target = D(settings.UNGLUEIT_MAXIMUM_TARGET)
new_campaign.set_cc_date_initial()
elif new_campaign.type == REWARDS:
new_campaign.deadline = date_today() + timedelta(days=int(settings.UNGLUEIT_LONGEST_DEADLINE))
new_campaign.target = D(settings.UNGLUEIT_MINIMUM_TARGET)
elif new_campaign.type == THANKS:
new_campaign.target = D(settings.UNGLUEIT_MINIMUM_TARGET)
new_campaign.save()
claim.campaign_form.save_m2m()
claim.campaign_form = None
else:
c_type = 2 if claim.rights_holder.can_sell else 1
claim.campaign_form = OpenCampaignForm(
initial={'work': claim.work, 'name': claim.work.title, 'userid': request.user.id, 'managers': [request.user.id], 'type': c_type},
prefix = 'cl_'+str(claim.id),
)
if claim.campaign:
if claim.campaign.status in ['ACTIVE','INITIALIZED']:
if request.method == 'POST' and request.POST.has_key('edit_managers_%s'% claim.campaign.id) :
claim.campaign.edit_managers_form = EditManagersForm(instance=claim.campaign, data=request.POST, prefix=claim.campaign.id)
if claim.campaign.edit_managers_form.is_valid():
claim.campaign.edit_managers_form.save()
claim.campaign.edit_managers_form = EditManagersForm(instance=claim.campaign, prefix=claim.campaign.id)
else:
claim.campaign.edit_managers_form = EditManagersForm(instance=claim.campaign, prefix=claim.campaign.id)
campaigns = request.user.campaigns.all()
new_campaign = None
for campaign in campaigns:
if campaign.clonable():
if request.method == 'POST' and request.POST.has_key('c%s-campaign_id'% campaign.id):
clone_form = CloneCampaignForm(data=request.POST, prefix = 'c%s' % campaign.id)
if clone_form.is_valid():
campaign.clone()
else:
campaign.clone_form = CloneCampaignForm(initial={'campaign_id':campaign.id}, prefix='c%s' % campaign.id)
return render(request, "rh_tools.html", {'claims': claims , 'campaigns': campaigns})
def rh_admin(request, facet='top'):
if not request.user.is_authenticated() :
return render(request, "admins_only.html")
if not request.user.is_staff :
return render(request, "admins_only.html")
PendingFormSet = modelformset_factory(models.Claim, fields=['status'], extra=0)
pending_data = models.Claim.objects.filter(status = 'pending')
active_data = models.Claim.objects.filter(status = 'active')
if request.method == 'POST':
if 'create_rights_holder' in request.POST.keys():
form = RightsHolderForm(data=request.POST)
pending_formset = PendingFormSet (queryset=pending_data)
if form.is_valid():
form.save()
form = RightsHolderForm()
if 'set_claim_status' in request.POST.keys():
pending_formset = PendingFormSet (request.POST, request.FILES, queryset=pending_data)
form = RightsHolderForm()
if pending_formset.is_valid():
pending_formset.save()
pending_formset = PendingFormSet(queryset=pending_data)
else:
form = RightsHolderForm()
pending_formset = PendingFormSet(queryset=pending_data)
rights_holders = models.RightsHolder.objects.all()
context = {
'request': request,
'rights_holders': rights_holders,
'form': form,
'pending': zip(pending_data, pending_formset),
'pending_formset': pending_formset,
'active_data': active_data,
'facet': facet,
}
return render(request, "rights_holders.html", context)
def campaign_admin(request):
if not request.user.is_authenticated() :
return render(request, "admins_only.html")
@ -2571,7 +2683,7 @@ def ask_rh(request, campaign_id):
redirect_url = reverse('work', args=[campaign.work_id]),
extra_context={'campaign':campaign, 'subject':campaign })
def feedback(request, recipient='unglueit@ebookfoundation.org', template='feedback.html', message_template='feedback.txt', extra_context=None, redirect_url=None):
def feedback(request, recipient='support@gluejar.com', template='feedback.html', message_template='feedback.txt', extra_context=None, redirect_url=None):
context = extra_context or {}
context['num1'] = randint(0, 10)
context['num2'] = randint(0, 10)
@ -2891,7 +3003,7 @@ def about(request, facet):
try:
return render(request, template)
except TemplateDoesNotExist:
return render(request, "about_main.html")
return render(request, "about.html")
def receive_gift(request, nonce):
try:

View File

@ -24,8 +24,6 @@ from regluit.core.parameters import WORK_IDENTIFIERS
from regluit.core.loaders.utils import ids_from_urls
from regluit.frontend.forms import EditionForm, IdentifierForm
from .rh_views import user_is_rh
def user_can_edit_work(user, work):
'''
@ -37,7 +35,7 @@ def user_can_edit_work(user, work):
return True
elif work and work.last_campaign():
return user in work.last_campaign().managers.all()
elif user_is_rh(user) and (work == None or not work.last_campaign()):
elif user.rights_holder.count() and (work == None or not work.last_campaign()):
# allow rights holders to edit unless there is a campaign
return True
elif work and work.claim.all():

View File

@ -1,133 +0,0 @@
from django.core.urlresolvers import reverse,reverse_lazy
from django.forms.models import modelformset_factory
from django.http import HttpResponseRedirect, Http404
from django.shortcuts import render
from django.views.generic.edit import CreateView
from regluit.core import models
from regluit.frontend.forms import RightsHolderForm, UserClaimForm, OpenCampaignForm
class RHAgree(CreateView):
template_name = "rh_agree.html"
form_class = RightsHolderForm
success_url = reverse_lazy('agreed')
def get_initial(self):
return {'owner':self.request.user.id, 'signature':''}
def form_valid(self, form):
form.instance.signer_ip = self.request.META['REMOTE_ADDR']
return super(RHAgree, self).form_valid(form)
def rh_admin(request, facet='top'):
if not request.user.is_authenticated() or not request.user.is_staff:
return render(request, "admins_only.html")
PendingFormSet = modelformset_factory(models.RightsHolder, fields=['approved'], extra=0)
pending_data = models.RightsHolder.objects.filter(approved=False)
if request.method == 'POST':
if 'approve_rights_holder' in request.POST.keys():
pending_formset = PendingFormSet (request.POST, request.FILES, queryset=pending_data)
if pending_formset.is_valid():
pending_formset.save()
pending_formset = PendingFormSet(queryset=pending_data)
else:
pending_formset = PendingFormSet(queryset=pending_data)
rights_holders = models.RightsHolder.objects.filter(approved=True)
context = {
'rights_holders': rights_holders,
'pending': zip(pending_data, pending_formset),
'pending_formset': pending_formset,
'facet': facet,
}
return render(request, "rights_holders.html", context)
def user_is_rh(user):
if user.is_anonymous():
return False
for rh in user.rights_holder.filter(approved=True):
return True
return False
class ClaimView(CreateView):
template_name = "claim.html"
def get_form(self):
return UserClaimForm(self.request.user, data=self.request.POST, prefix='claim')
def form_valid(self, form):
print form.cleaned_data
work = form.cleaned_data['work']
rights_holder = form.cleaned_data['rights_holder']
if not rights_holder.approved:
form.instance.status = 'pending'
# make sure we're not creating a duplicate claim
if not models.Claim.objects.filter(
work=work,
rights_holder=rights_holder,
).exclude(status='release').count():
form.save()
return HttpResponseRedirect(reverse('rightsholders'))
def get_context_data(self, form):
work = form.cleaned_data['work']
rights_holder = form.cleaned_data['rights_holder']
active_claims = work.claim.exclude(status = 'release')
return {'form': form, 'work': work, 'rights_holder':rights_holder , 'active_claims':active_claims}
def claim(request):
return ClaimView.as_view()(request)
def rh_tools(request, template_name='rh_intro.html'):
if not request.user.is_authenticated() :
return render(request, "rh_tools.html")
claims = request.user.claim.filter(user=request.user)
campaign_form = "xxx"
if not claims:
return render(request, template_name)
for claim in claims:
if claim.can_open_new:
if request.method == 'POST' and request.POST.has_key('cl_%s-work' % claim.id) and int(request.POST['cl_%s-work' % claim.id]) == claim.work_id :
claim.campaign_form = OpenCampaignForm(data = request.POST, prefix = 'cl_'+str(claim.id),)
if claim.campaign_form.is_valid():
new_campaign = claim.campaign_form.save(commit=False)
if new_campaign.type == BUY2UNGLUE:
new_campaign.target = D(settings.UNGLUEIT_MAXIMUM_TARGET)
new_campaign.set_cc_date_initial()
elif new_campaign.type == REWARDS:
new_campaign.deadline = date_today() + timedelta(days=int(settings.UNGLUEIT_LONGEST_DEADLINE))
new_campaign.target = D(settings.UNGLUEIT_MINIMUM_TARGET)
elif new_campaign.type == THANKS:
new_campaign.target = D(settings.UNGLUEIT_MINIMUM_TARGET)
new_campaign.save()
claim.campaign_form.save_m2m()
claim.campaign_form = None
else:
c_type = 2
claim.campaign_form = OpenCampaignForm(
initial={'work': claim.work, 'name': claim.work.title, 'userid': request.user.id, 'managers': [request.user.id], 'type': c_type},
prefix = 'cl_'+str(claim.id),
)
if claim.campaign:
if claim.campaign.status in ['ACTIVE','INITIALIZED']:
if request.method == 'POST' and request.POST.has_key('edit_managers_%s'% claim.campaign.id) :
claim.campaign.edit_managers_form = EditManagersForm(instance=claim.campaign, data=request.POST, prefix=claim.campaign.id)
if claim.campaign.edit_managers_form.is_valid():
claim.campaign.edit_managers_form.save()
claim.campaign.edit_managers_form = EditManagersForm(instance=claim.campaign, prefix=claim.campaign.id)
else:
claim.campaign.edit_managers_form = EditManagersForm(instance=claim.campaign, prefix=claim.campaign.id)
campaigns = request.user.campaigns.all()
new_campaign = None
for campaign in campaigns:
if campaign.clonable():
if request.method == 'POST' and request.POST.has_key('c%s-campaign_id'% campaign.id):
clone_form = CloneCampaignForm(data=request.POST, prefix = 'c%s' % campaign.id)
if clone_form.is_valid():
campaign.clone()
else:
campaign.clone_form = CloneCampaignForm(initial={'campaign_id':campaign.id}, prefix='c%s' % campaign.id)
return render(request, template_name, {'claims': claims , 'campaigns': campaigns})

View File

@ -233,8 +233,8 @@ LOGGING = {
# django-registration
EMAIL_HOST = 'smtp.gluejar.com'
DEFAULT_FROM_EMAIL = 'notices@gluejar.com'
SERVER_EMAIL = 'unglueit@ebookfoundation.org'
SUPPORT_EMAIL = 'unglueit@ebookfoundation.org'
SERVER_EMAIL = 'notices@gluejar.com'
SUPPORT_EMAIL = 'support@gluejar.com'
ACCOUNT_ACTIVATION_DAYS = 30
SESSION_COOKIE_AGE = 3628800 # 6 weeks

View File

@ -47,7 +47,7 @@ EMAIL_HOST = 'smtp.gmail.com'
# EMAIL_HOST_USER is in keys/host
# EMAIL_HOST_PASSWORD is in keys/host
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = 'info@ebookfoundation.org'
DEFAULT_FROM_EMAIL = 'info@gluejar.com'
# for use with test google account only
GOOGLE_DISPLAY_NAME = 'Unglue.It'

View File

@ -34,7 +34,7 @@ EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'me@gmail.com'
EMAIL_HOST_PASSWORD = 'my-password'
EMAIL_PORT = 587
DEFAULT_FROM_EMAIL = 'info@ebookfoundation.org'
DEFAULT_FROM_EMAIL = 'info@gluejar.com'
# formerly of settings/common.py to surface old vars

File diff suppressed because one or more lines are too long

View File

@ -856,9 +856,9 @@ a.nounderline {
}
li.checked {
list-style-type:decimal;
list-style-type:none;
background:transparent url(/static/images/checkmark_small.png) no-repeat 0 0;
margin-left: 0px;
margin-left: -20px;
padding-left: 20px;
}

View File

@ -17,7 +17,7 @@ LOCALITY="Montclair";
ORGNAME="Gluejar, Inc.";
ORGUNIT="";
CNAME="*.unglue.it";
EMAIL="unglueit@ebookfoundation.org";
EMAIL="support@gluejar.com";
PASSWORD="";
OPTION_COMPANY_NAME="";

View File

@ -7,7 +7,7 @@ WSGISocketPrefix /opt/regluit
ServerName {% if class == 'prod' %}unglue.it{% else %}{{class}}.unglue.it{% endif %}
ServerAdmin info@ebookfoundation.org
ServerAdmin info@gluejar.com
Redirect permanent / {% if class == 'prod' %}https://unglue.it{% else %}https://{{class}}.unglue.it{% endif %}
@ -18,7 +18,7 @@ Redirect permanent / {% if class == 'prod' %}https://unglue.it{% else %}https://
ServerName {% if class == 'prod' %}unglue.it:443{% else %}{{class}}.unglue.it:443{% endif %}
ServerAdmin info@ebookfoundation.org
ServerAdmin info@gluejar.com
SSLEngine on
SSLProtocol All -SSLv2 -SSLv3