Skip to content

Commit

Permalink
Improve firm ("other org") sign-up workflow (#3595)
Browse files Browse the repository at this point in the history
* Update signup menu options

* Update copy on signup page for individuals

* Fix CSS for signup nav bar

* Update copy on signup page for other orgs

* Redirect firm signup contact link on Accounts page

* Update quote request form for firms

* Fix other orgs link on landing page

* Simplify other org form dropdown options

* Fix bug wherein checking 'Would you be admin' checkbox was required

* Update firm request form submission email

* Update new form names for clarity

* Update email body template for clarity

* Get org name from org form; make sign_up_firm logic easier to parse

* Get broken tests working again

* Fix spurious test failures due to closed DB connection after exception

* New CSS rules need to go in SCSS source, not compiled bundle

* target_user -> existing_user in template

* Update success page to use org (not firm) language

* would_be_org_admin: checkbox -> dropdown

* Fix test for new firm failure

* Fix test failing due to would_be_org_admin widget change
  • Loading branch information
cmsetzer authored Sep 5, 2024
1 parent 6bcf8d2 commit 469d69e
Show file tree
Hide file tree
Showing 15 changed files with 288 additions and 144 deletions.
32 changes: 28 additions & 4 deletions perma_web/perma/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
from django.conf import settings
from django.contrib.auth.forms import SetPasswordForm
from django.db.models.fields import BLANK_CHOICE_DASH
from django.forms import ModelForm
from django.forms import Form, ModelForm
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.utils.html import mark_safe
Expand Down Expand Up @@ -94,6 +94,28 @@ def __init__(self, *args, **kwargs):
self.fields['website'].label = "Library website"
self.fields['address'].label = "Library physical address"

### FIRM (OTHER ORG) QUOTE FORMS ###

class FirmOrganizationForm(ModelForm):
class Meta:
model = Registrar
fields = ['name', 'email', 'website']
labels = {
'name': 'Organization name',
'email': 'Organization email',
'website': 'Organization website',
}


class FirmUsageForm(Form):
estimated_number_of_accounts = forms.ChoiceField(
choices=[(option, option) for option in ['1 - 10', '10 - 50', '50 - 100', '100+']],
label='Number of individual accounts',
)
estimated_perma_links_per_month = forms.ChoiceField(
choices=[(option, option) for option in ['< 10', '10 - 50', '50 - 100', '100+']],
label='Number of Perma Links created each month (per user)',
)

### ORGANIZATION FORMS ###

Expand Down Expand Up @@ -271,18 +293,20 @@ class CreateUserFormWithFirm(UserForm):
add firm to the create user form
"""

requested_account_note = forms.CharField(required=True)
would_be_org_admin = forms.ChoiceField(
widget=forms.Select, choices=[(True, 'Yes'), (False, 'No')], initial=(False, 'No')
)

class Meta:
model = LinkUser
fields = ["first_name", "last_name", "email", "requested_account_note"]
fields = ['first_name', 'last_name', 'email', 'would_be_org_admin']

def __init__(self, *args, **kwargs):
super(CreateUserFormWithFirm, self).__init__(*args, **kwargs)
self.fields['requested_account_note'].label = "Your firm"
self.fields['first_name'].label = "Your first name"
self.fields['last_name'].label = "Your last name"
self.fields['email'].label = "Your email"
self.fields['would_be_org_admin'].label = 'Would you be an administrator on this account?'


class CreateUserFormWithUniversity(UserForm):
Expand Down
2 changes: 1 addition & 1 deletion perma_web/perma/templates/docs/accounts.html
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ <h3 id="free-usage-plans" class="body-bh">Free Usage Plans</h3>
<p class="body-text">Perma also is free for use by state and federal courts and their employees, including reporters of decisions, judges, clerks and other court staff. If your court is interested in using Perma, you can use this page to learn more and contact us about signing up: <a href="{% url 'sign_up_courts' %}">https://perma.cc/signup/courts</a>.</p>

<h3 id="paid-usage-groups" class="body-bh">Paid Usage Plans for Groups</h3>
<p class="body-text">Law firms, publishers, news organizations and other entities may become registrars through a paid usage plan, which will give them access to Perma's collaboration and administrative tools and allow them to make Perma available to their employees. To learn more about paid plans, please <a href="{% url 'contact' %}?upgrade=organization">contact us</a>.</p>
<p class="body-text">Law firms, publishers, news organizations and other entities may become registrars through a paid usage plan, which will give them access to Perma's collaboration and administrative tools and allow them to make Perma available to their employees. To learn more about paid plans, please <a href="{% url 'sign_up_firm' %}">contact us</a>.</p>

<h3 id="paid-usage-individuals" class="body-bh">Paid Usage Plans for Individuals</h3>
<p class="body-text">For individuals who are not affiliated with Perma registrars, or who want independent access to Perma, we offer paid usage plans. There are two options, based on different types of usage:</p>
Expand Down
13 changes: 11 additions & 2 deletions perma_web/perma/templates/email/admin/firm_request.txt
Original file line number Diff line number Diff line change
@@ -1,3 +1,12 @@
{{ email }}{% if first_name or last_name %} ({{ first_name }} {{ last_name }}){% endif %} has requested more information about creating a law firm account for {{ firm_name }}.
{{ user_form.data.email }}{% if user_form.data.first_name or user_form.data.last_name %} ({{ user_form.data.first_name }} {{ user_form.data.last_name }}){% endif %} has requested more information about creating an account for a law firm or other organization:

This user {% if has_account %}has{% else %}does not have{% endif %} an account.
Organization name: {{ organization_form.cleaned_data.name }}
Organization email: {{ organization_form.cleaned_data.email }}
Organization website: {{ organization_form.cleaned_data.website }}

Estimated number of individual accounts: {{ usage_form.cleaned_data.estimated_number_of_accounts }}
Estimated number of Perma Links created each month (per user): {{ usage_form.cleaned_data.estimated_perma_links_per_month }}

User would be an administrator on the account: {{ user_form.data.would_be_org_admin | yesno }}

This user currently {% if existing_user %}has{% else %}does not have{% endif %} an account.
18 changes: 9 additions & 9 deletions perma_web/perma/templates/landing.html
Original file line number Diff line number Diff line change
Expand Up @@ -280,28 +280,28 @@ <h3 class="section-ah">Articles and awards</h3>

<section id="landing-signup" class="container-fluid cont-bg">
<div class="container cont-fixed">
<h2 class="section-title-alt">Sign up for free</h2>
<p class="section-subtitle-alt">It only takes a minute to sign up with Perma.cc. Select your organization and get&nbsp;started.</p>
<h2 class="section-title-alt">Sign up</h2>
<p class="section-subtitle-alt">It only takes a minute to sign up with Perma.cc. Select your organization type and get&nbsp;started.</p>
<div class="row row-modules">
<div class="col-xs-12 col-sm-3 _isCentered signup-module">
<img class="img-responsive signup-image" loading="lazy" src="{{ STATIC_URL }}img/signup-libraries-bg.png" aria-hidden="true" alt="" />
<p class="caption"><strong>Libraries<span class="_verbose">.</span></strong> Libraries play a critical role in powering and supporting Perma.cc.</p>
<a href="{% url 'libraries' %}" class="btn btn-small center">Perma.cc for libraries</a>
</div>
<div class="col-xs-12 col-sm-3 _isCentered signup-module">
<img class="img-responsive signup-image" loading="lazy" src="{{ STATIC_URL }}img/signup-academics-bg.png" aria-hidden="true" alt="" />
<p class="caption"><strong>Faculty and journals<span class="_verbose">.</span></strong> Over 150 academic law journals use Perma.cc.</p>
<a href="{% url 'sign_up_journals' %}" class="btn btn-small center">Perma.cc for journals</a>
</div>
<div class="col-xs-12 col-sm-3 _isCentered signup-module">
<img class="img-responsive signup-image" loading="lazy" src="{{ STATIC_URL }}img/signup-courts-bg.png" aria-hidden="true" alt="" />
<p class="caption"><strong>Courts<span class="_verbose">.</span></strong> Courts demand long-term reliability from the links in their decisions.</p>
<a href="{% url 'sign_up_courts' %}" class="btn btn-small center">Perma.cc for courts</a>
</div>
<div class="col-xs-12 col-sm-3 _isCentered signup-module">
<img class="img-responsive signup-image" loading="lazy" src="{{ STATIC_URL }}img/signup-everyone-bg.png" aria-hidden="true" alt="" />
<p class="caption"><strong>Everyone<span class="_verbose">.</span></strong> Anyone can create a free account and start creating Perma Links.</p>
<a href="{% url 'sign_up' %}" class="btn btn-small center">Perma.cc for everyone</a>
<p class="caption"><strong>Other organizations<span class="_verbose">.</span></strong> There are wide-ranging applications for Perma.cc tools.</p>
<a href="{% url 'sign_up_firm' %}" class="btn btn-small center">Perma.cc for other orgs</a>
</div>
<div class="col-xs-12 col-sm-3 _isCentered signup-module">
<img class="img-responsive signup-image" loading="lazy" src="{{ STATIC_URL }}img/signup-individuals-bg.png" aria-hidden="true" alt="" />
<p class="caption"><strong>Individuals<span class="_verbose">.</span></strong> Anyone can register a free account and start creating Perma Links.</p>
<a href="{% url 'sign_up' %}" class="btn btn-small center">Perma.cc for individuals</a>
</div>
</div>
</div>
Expand Down
6 changes: 3 additions & 3 deletions perma_web/perma/templates/registration/firm_request.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<div class="container cont-fixed">
<div class="row">
<div class="col-sm-12">
<h1 class="page-title">Thanks for requesting more information for your law firm.</h1>
<p class="page-dek">We will shortly follow up with more information about how Perma.cc could work in your firm.</p>
<h1 class="page-title">Thanks for requesting more information for your organization.</h1>
<p class="page-dek">We will shortly follow up with more information about how Perma.cc could work in your organization.</p>
</div>
</div>
</div>
{% endblock mainContent %}
{% endblock mainContent %}
Original file line number Diff line number Diff line change
@@ -1,40 +1,28 @@
<div class="container cont-full-bleed overview">
<div class="container cont-full-bleed cont-sm-fixed">
<div class="row row-no-bleed">
<div class="col col-sm-by6 overview-module col-no-gutter {% if this_page == 'individual' %}_active{% endif %}">
<div class="col col-sm-by4 overview-module col-no-gutter {% if this_page == 'individual' %}_active{% endif %}">
<a class="overview-module-content" href="{% url 'sign_up' %}">
<strong class="overview-module-title">Individual</strong>
<p class="overview-module-description">Anyone can create an account and start creating Perma Links.</p>
</a>
</div>
<div class="col col-sm-by6 overview-module col-no-gutter {% if this_page == 'libraries' %}_active{% endif %}">
<div class="col col-sm-by4 overview-module col-no-gutter {% if this_page == 'libraries' %}_active{% endif %}">
<a class="overview-module-content" href="{% url 'libraries' %}">
<strong class="overview-module-title">Libraries</strong>
<p class="overview-module-description">Libraries play a critical role in powering and supporting Perma.cc.</p>
</a>
</div>
<div class="col col-sm-by6 overview-module col-no-gutter {% if this_page == 'journals' %}_active{% endif %}">
<a class="overview-module-content" href="{% url 'sign_up_journals' %}">
<strong class="overview-module-title">Journals</strong>
<p class="overview-module-description">Over 150 academic law journals prevent link rot with Perma.cc.</p>
</a>
</div>
<div class="col col-sm-by6 overview-module col-no-gutter {% if this_page == 'faculty' %}_active{% endif %}">
<a class="overview-module-content" href="{% url 'sign_up_faculty' %}">
<strong class="overview-module-title">Faculty</strong>
<p class="overview-module-description">Faculty use Perma.cc to prevent link rot in their scholarship.</p>
</a>
</div>
<div class="col col-sm-by6 overview-module col-no-gutter {% if this_page == 'courts' %}_active{% endif %}">
<div class="col col-sm-by4 overview-module col-no-gutter {% if this_page == 'courts' %}_active{% endif %}">
<a class="overview-module-content" href="{% url 'sign_up_courts' %}">
<strong class="overview-module-title">Courts</strong>
<p class="overview-module-description">Courts care about the accuracy, integrity and reliability of the citations in their opinions.</p>
</a>
</div>
<div class="col col-sm-by6 overview-module col-no-gutter {% if this_page == 'firms' %}_active{% endif %}">
<div class="col col-sm-by4 overview-module col-no-gutter {% if this_page == 'firms' %}_active{% endif %}">
<a class="overview-module-content" href="{% url 'sign_up_firm' %}">
<strong class="overview-module-title">Law Firms</strong>
<p class="overview-module-description">Law firms use Perma.cc to prevent link rot in their court filings and marketing materials.</p>
<strong class="overview-module-title">Other Organizations</strong>
<p class="overview-module-description">There are many applications for Perma.cc citation preservation tools.</p>
</a>
</div>
</div>
Expand Down
28 changes: 17 additions & 11 deletions perma_web/perma/templates/registration/sign-up-firms.html
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
{% extends "base-responsive.html" %}

{% block meta_description %}Perma.cc for courts{% endblock %}
{% block meta_description %}Perma.cc for other organizations{% endblock %}

{% block bodyFlags %}_signup _courts{% endblock %}
{% block bodyFlags %}_signup _firms{% endblock %}
{% block mainFlags %}{% endblock %}

{% block mainContent %}
<div class="container cont-fixed">
<div class="row">
<div class="col-sm-12">
<h1 class="page-title">Perma.cc for law firms</h1>
<p class="page-dek">Law firms use Perma.cc to protect links in court filings and marketing materials.</p>
<h1 class="page-title">Perma.cc for other organizations</h1>
<p class="page-dek">There are many applications for Perma.cc citation preservation tools.</p>
</div>
</div>
</div>
Expand All @@ -20,11 +20,17 @@ <h1 class="page-title">Perma.cc for law firms</h1>
<div class="container cont-reading cont-fixed">
<div class="row signup-info">
<div class="col-sm-4 signup-learnMore-form">
<h2 class="body-ah">Request information for firms</h2>
<h2 class="body-ah">Request team subscription quote</h2>
<form method="post" action="">
{% csrf_token %}
<h3 class="body-bh">Your team information</h3>
{% include "includes/fieldset.html" with form=organization_form %}
<h3 class="body-bh">Estimated usage information</h3>
<p>Quotes are based on the expected volume of use by your whole team.</p>
{% include "includes/fieldset.html" with form=usage_form %}
<h3 class="body-bh">Your information</h3>
<fieldset>
{% for field in form %}
{% for field in user_form %}
<div class="form-group{% if field.errors %} _error{% endif %}">
<label for="id_{{ field.name }}">{{ field.label }}</label>
{{ field }}
Expand All @@ -47,17 +53,17 @@ <h2 class="body-ah">Request information for firms</h2>
</form>
</div>
<div class="col-sm-8 reading-body">
<h2 class="body-ah">Why should lawyers and law firms use Perma.cc?</h2>
<p class="body-text">Link rot ruins citations in briefs and other court filings. It also harms links in blog posts, white papers and any materials used to attract and inform clients. If law firms are using links, they should be concerned about link rot.</p>
<h2 class="body-ah">Why should you use Perma.cc?</h2>
<p class="body-text">Link rot ruins citations in any context: from briefs to blog posts, reports, news articles, and court filings. If you are using links in your publications, you should be concerned about link rot.</p>

<h3 class="body-bh">Trusted by courts and lawyers</h3>
<p class="body-text">Many state and federal courts rely on Perma.cc to protect links in their opinions, and lawyers have used Perma in briefs filed in the U.S. Supreme Court, in multiple U.S. Courts of Appeals and in state appellate courts across the country. Perma also has been relied on by the Law Library of Congress, the Department of Justice and the ABA, and Perma links are encouraged by the Bluebook.<p class="body-text">
<p class="body-text">Many state and federal courts rely on Perma.cc to protect links in their opinions, and lawyers have used Perma.cc in briefs filed in the U.S. Supreme Court, in multiple U.S. Courts of Appeals, and in state appellate courts across the country. Perma.cc has also been relied upon by the Law Library of Congress, the Department of Justice, and the ABA, and Perma Links are encouraged by the Bluebook.</p>

<h3 class="body-bh">Paid option now available</h3>
<p class="body-text">Right now, individual lawyers can use Perma.cc on a trial basis, for free, to protect 10 links. For those who need to protect more links, we offer usage through paid subscriptions. Paid subscription prices are based off of the size of your team and how many links per month your organization would like to create. If you’d like to learn more about how Perma.cc can help your firm, please fill out this form and we’ll follow up soon.<p class="body-text">
<p class="body-text">For organizations wishing to use Perma.cc as a team, there are now options to become a Perma Registrar and administer individual accounts. Currently we offer subscriptions that can be billed monthly or annually. Subscription prices are quoted based on the number of individual accounts and how many links per month your organization would like to create. If you ever were to cancel or suspend the subscription, you would still have access to your accounts, and links would continue being preserved as part of our collection. If you’d like to learn more about how Perma.cc can help your team, please fill out this form and we’ll follow up soon.</p>

<h3 class="body-bh">Try it now</h3>
<p class="body-text">Individual accounts are also available. New users can create 10 Perma Links for free to try out the service. <a href="{% url 'sign_up' %}">Create an account</a> now to start your free trial.<p class="body-text">
<p class="body-text">Individual accounts are also available. New users can create 10 Perma Links for free to try out the service. <a href="{% url 'sign_up' %}">Create an account</a> now to start your free trial.</p>
</div>
</div>
</div>
Expand Down
6 changes: 4 additions & 2 deletions perma_web/perma/templates/registration/sign-up.html
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,11 @@ <h2 class="body-ah">Create an individual account</h2>
<div class="col-sm-8 reading-body">
<h2 class="body-ah">Perma.cc for individual users</h2>
<p class="body-text">Anyone can create an individual Perma.cc account, which will allow you to create records to be preserved by The Harvard Law School Library. Just complete this form to get started.</p>
<p class="body-text">New users are able to create ten free links on a trial basis. Once you've used your trial, individuals not affiliated with a registrar must sign up for a paid subscription.</p>
<p class="body-text">New users are able to create ten free links on a trial basis. After using the trial, individuals must either be affiliated with a registrar or sign up for a paid subscription.</p>
<p class="body-text">Many organizations qualify for free, unlimited service. To see if your organization qualifies, check out our <a href="{% url 'docs_accounts' %}">accounts page</a>.</p>
<p class="body-text">To learn more about how Perma.cc works, please review our <a href="{% url 'docs' %}">user guide</a>.</p>

<h3 class="body-bh">Contact your library for an affiliated account</h3>
<p class="body-text">If your library or organization is already registered with us, we’ll let you know in your welcome email so you can contact them for an affiliation. If not, invite your library to visit our <a href="{% url 'libraries' %}">library resource page</a> to request membership, and we’ll help them get started.</p>
</div>
</div>
</div>
Expand Down
Loading

0 comments on commit 469d69e

Please sign in to comment.