diff options
Diffstat (limited to 'python/fatcat_web/templates')
27 files changed, 516 insertions, 325 deletions
diff --git a/python/fatcat_web/templates/auth_account.html b/python/fatcat_web/templates/auth_account.html index 4a51241a..86b60b25 100644 --- a/python/fatcat_web/templates/auth_account.html +++ b/python/fatcat_web/templates/auth_account.html @@ -8,17 +8,23 @@ <i class="settings icon"></i> Account Settings </h1> +<h1 class="ui header"> + <span class="sub header"><code>editor_{{ current_user.editor_id }}</code></span></h1> +</h1> -<p><b>Username:</b> <code>{{ current_user.username }}</code> -<p><b>Editor Id:</b> <code><a href="/editor/{{ current_user.editor_id }}">{{ current_user.editor_id }}</a></code> +<a href="/editor/{{ current_user.editor_id }}/editgroups">Edit History</a> - +<a href="/editor/{{ current_user.editor_id }}/annotations">Comments and Annotation History</a> <br> + +<div class="ui raised segments" style="max-width: 30em; margin-top: 2em; margin-bottom: 2em;"> + <div class="ui segment"> -<h3 class="ui header">Change Username</h3> +<h4 class="ui header">Change Username</h4> <form class="" role="change_username" action="/auth/change_username" method="post"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> <div class="ui form"> - <div class="ui action input medium"> + <div class="ui action input"> <input type="text" name="username" value="{{ current_user.username }}" aria-label="account username"> <button class="ui red button">Update</button> </div> @@ -27,7 +33,7 @@ </div> <div class="ui segment"> -<h3 class="ui header">Create API Token</h3> +<h4 class="ui header">Create API Token</h4> <form class="" role="change_username" action="/auth/create_token" method="post"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> <div class="ui form"> @@ -40,10 +46,14 @@ </form> </div> -<br> -<p>In the future, you will be able to... -<ul> - <li>Create and manage bot accounts -</ul> +</div> +<div class="ui info small message"> + <div class="header"> + In the future, you will be able to... + </div> + <ul> + <li>Create and manage bot accounts + </ul> +</div> {% endblock %} diff --git a/python/fatcat_web/templates/base.html b/python/fatcat_web/templates/base.html index 8cdc3fbf..73f33d0d 100644 --- a/python/fatcat_web/templates/base.html +++ b/python/fatcat_web/templates/base.html @@ -101,14 +101,17 @@ <main class="ui main container" style="margin-top: 6em; margin-bottom: 2em;" {% block main_extra_attr %}{% endblock %}> {% with messages = get_flashed_messages() %} {% if messages %} - <div class="ui message"> + <div class="ui info message" style="margin: 1em auto; max-width: 45em;"> {# Needs more javascript: <i class="close icon"></i> #} - <div class="header">Flash Message!</div> - <ul class="list"> - {% for message in messages %} - <li>{{ message|safe }} - {% endfor %} - </ul> + {% if messages|length == 1 %} + <div class="header">{{ messages[0]|safe }}</div> + {% else %} + <ul class="list"> + {% for message in messages %} + <li>{{ message|safe }} + {% endfor %} + </ul> + {% endif %} </div> {% endif %} {% endwith %} diff --git a/python/fatcat_web/templates/changelog.html b/python/fatcat_web/templates/changelog.html index 8b899d38..322f3e3b 100644 --- a/python/fatcat_web/templates/changelog.html +++ b/python/fatcat_web/templates/changelog.html @@ -7,9 +7,11 @@ <h1 class="ui header">Recent Changes <div class="sub header"><code>changelog</code></div></h1> -Limited to the most recent entries. +<p>This is a feed of all the changes to the catalog, in the order that they are +accepted. Only the most recent entries are shown, but the API can be used to +inspect every change all the way back to the start. -<table class="ui table"> +<table class="ui small table"> <thead><tr><th>Changelog<br>Index <th>Editgroup <th>Description @@ -19,7 +21,7 @@ Limited to the most recent entries. <br>{{ entry.timestamp.strftime("%Y-%m-%d %H:%M:%S") }} <td> {% if entry.editgroup.editor.is_bot %} - <i class="icon bug"></i> + <i class="icon server"></i> {% else %} <i class="icon user"></i> {% endif %} @@ -28,10 +30,14 @@ Limited to the most recent entries. </a></code> <br> <small><code><a href="/editgroup/{{ entry.editgroup.editgroup_id }}"> - {{ entry.editgroup.editgroup_id }} + editgroup_{{ entry.editgroup.editgroup_id }} </a></code></small> <td>{% if entry.editgroup.description != None %}{{ entry.editgroup.description }}{% endif %} {% endfor %} </table> +<div style="float: right; font-size: smaller;"> + <a href="{{ config.FATCAT_API_HOST }}/changelog">As JSON via API</a> +</div> + {% endblock %} diff --git a/python/fatcat_web/templates/container_edit.html b/python/fatcat_web/templates/container_edit.html index 99f77d53..1885197c 100644 --- a/python/fatcat_web/templates/container_edit.html +++ b/python/fatcat_web/templates/container_edit.html @@ -2,19 +2,14 @@ {% extends "base.html" %} {% block body %} + {% block edit_form_prefix %} +{{ edit_macros.edit_link_bar('container', existing_ident, 'form') }} <div class="ui segment"> <h1 class="ui header">Edit Container Entity</h1> <form class="ui form" id="edit_container_form" method="POST" action="{% if editgroup %}/editgroup/{{ editgroup.editgroup_id }}{% endif %}/container/{{ existing_ident }}/edit"> - <p>Experienced users can also use the <a href="{% if editgroup - %}/editgroup/{{ editgroup.editgroup_id }}{% endif %}/container/{{ - existing_ident }}/edit/toml">TOML editing form</a> to access all metadata - fields in a raw format. - {% if not editgroup %} - You can also <a href="/container/{{ existing_ident }}/delete">delete this entity</a>. - {% endif %} {% endblock %} <p>See <a href="https://guide.fatcat.wiki/entity_container.html">the catalog diff --git a/python/fatcat_web/templates/container_search.html b/python/fatcat_web/templates/container_search.html index bd92dc2b..ec25fa8d 100644 --- a/python/fatcat_web/templates/container_search.html +++ b/python/fatcat_web/templates/container_search.html @@ -1,3 +1,4 @@ +{% import "entity_macros.html" as entity_macros %} {% import "search_macros.html" as search_macros %} {% extends "base.html" %} @@ -18,7 +19,7 @@ <form class="" role="search" action="/container/search" method="get"> <div class="ui form"> <div class="ui action input huge fluid"> - <input type="text" placeholder="Query..." name="q" value="{% if query.q %}{{ query.q }}{% endif %}" aria-label="search container metadata"> <button class="ui button">Search</button> + <input type="text" placeholder="Query..." name="q" value="{% if query.q %}{{ query.q }}{% endif %}" aria-label="search container metadata"> <button class="ui primary button">Search</button> </div> <br>Can also lookup by <b><a href="/container/lookup">identifier</a></b> or search <b><a href="/release/search?q={{ query.q or "" }}">releases</a></b>. </div> @@ -35,6 +36,7 @@ {{ search_macros.top_results(query, found) }} {% for entity in found.results %} + {{ entity_macros.container_search_result_row(entity) }} <div> <h4 style="margin-top: 1em; margin-bottom: 4px; font-size: 1.1em;"> <a href="/container/{{ entity.ident }}" style="color: #2224c7;">{{ entity['name'] }}</a> diff --git a/python/fatcat_web/templates/container_view.html b/python/fatcat_web/templates/container_view.html index bdde6715..128741e5 100644 --- a/python/fatcat_web/templates/container_view.html +++ b/python/fatcat_web/templates/container_view.html @@ -46,14 +46,8 @@ </div> <div class="column" style="flex: 0 0 24em;"> -{% if container._es and container._es.is_oa == True %} -<div class="ui segment top attached"> - <i class="icon unlock huge orange"></i><b>Open Access Publication</b> -</div> -{% endif %} - {% if container._stats %} -<div class="ui segment attached"> +<div class="ui segment top attached"> <div style="text-align: center;"> <div class="ui small statistic"> <div class="value">{{ "{:,}".format(container._stats.total) }}</div> @@ -61,6 +55,13 @@ </div> </div> </div> + +{% if container._es and container._es.is_oa == True %} +<div class="ui segment center aligned attached"> + <i class="icon unlock large orange"></i><b>Open Access Publication</b> +</div> + +{% endif %} {% if container._stats.total >= 1 %} <div class="ui segment attached"> <b>Preservation Status</b><br> @@ -122,7 +123,8 @@ {% endif %} {% if container._es.any_kbart == True %} - <i class="icon check green"></i> In <a href="https://keepers.issn.org/?q=api/search&search[]=MUST=allissn={{ container.issnl }}&search[]=MUST_EXIST=keepers">Keepers Registery</a><br> + <i class="icon check green"></i> In <a href="https://keepers.issn.org/?q=api/search&search[]=MUST=allissn={{ container.issnl }}&search[]=MUST_EXIST=keepers">Keepers Registery</a> + <br> {% elif container._es.any_kbart == False %} <i class="icon times grey"></i> Not in <a href="https://keepers.issn.org/?q=api/search&search[]=MUST=allissn={{ container.issnl }}&search[]=MUST_EXIST=keepers">Keepers Registry</a><br> {% endif %} @@ -133,6 +135,23 @@ </div> {% endif %} +<div class="ui segment attached"> +<b>Preservation Holdings</b><br> +{%- if container.extra and container.extra.kbart %} + {% for k, v in container.extra.kbart.items() %} + <p><span style="text-transform: uppercase;">{{ k }}:</span> + {% for span in v.year_spans %} + {% if span|length >= 2 %} + {{ span[0] }}-{{ span[1] }} + {% elif span|length == 1 %} + {{ span[0] }} + {% endif %} + {{ ", " if not loop.last }} + {% endfor %} + {% endfor %} +{% endif %} +</div> + <div class="ui segment attached accordion"> <div class="title" style="padding: 0px;"><i class="dropdown icon"></i><b>Lookup Links</b></div> <div class="content"> diff --git a/python/fatcat_web/templates/edit_macros.html b/python/fatcat_web/templates/edit_macros.html index d4839373..a7cf725b 100644 --- a/python/fatcat_web/templates/edit_macros.html +++ b/python/fatcat_web/templates/edit_macros.html @@ -1,4 +1,17 @@ +{% macro edit_link_bar(entity_type, existing_ident, view) -%} + {% set has_form = entity_type in ['release', 'file', 'container'] %} + <div class="ui {% if has_form %}four{% else %}three{% endif %} item menu"> + <a class="item" href="/{{ entity_type }}/{{ existing_ident }}">View</a> + {% if has_form %} + <a class="item {% if view == 'form' %}active{% endif %}" href="/{{ entity_type }}/{{ existing_ident }}/edit">Edit Form</a> + {% endif %} + <a class="item {% if view == 'toml' %}active{% endif %}" href="/{{ entity_type }}/{{ existing_ident }}/edit/toml">Edit TOML</a> + <a class="red item {% if view == 'delete' %}active{% endif %}" href="/{{ entity_type }}/{{ existing_ident }}/delete">Delete</a> + </div> +{% endmacro %} + + {% macro form_field_errors(field) -%} {% if field.errors %} <div class="ui pointing red label"> @@ -71,7 +84,7 @@ <div class="menu"> {% for peg in potential_editgroups %} <div class="item" data-value="{{ peg.editgroup_id }}"> - <div class="right floated">{{ peg.created }}</div> + <div class="right floated">{{ peg.created.strftime('%Y-%m-%d %X') }}</div> <code><b>editgroup_{{ peg.editgroup_id }}</b></code> {% if peg.description %} <br>{{ peg.description[:200] }} diff --git a/python/fatcat_web/templates/editgroup_reviewable.html b/python/fatcat_web/templates/editgroup_reviewable.html index 4cfea697..ec1fc1f5 100644 --- a/python/fatcat_web/templates/editgroup_reviewable.html +++ b/python/fatcat_web/templates/editgroup_reviewable.html @@ -16,7 +16,7 @@ Limited to the most recent entries. {% for editgroup in entries %} <tr><td> {% if editgroup.editor.is_bot %} - <i class="icon bug"></i> + <i class="icon server"></i> {% else %} <i class="icon user"></i> {% endif %} diff --git a/python/fatcat_web/templates/editgroup_view.html b/python/fatcat_web/templates/editgroup_view.html index a36dc3e5..6a9793f7 100644 --- a/python/fatcat_web/templates/editgroup_view.html +++ b/python/fatcat_web/templates/editgroup_view.html @@ -12,9 +12,20 @@ <div class="ui divided list"> {% for edit in edits %} <div class="item"> - <div class="content"> + <div class="content" style="padding-bottom: 0.5em;"> + <div style="float: right; font-weight: bold;"> + <a href="/editgroup/{{ editgroup.editgroup_id }}/{{ entity_type }}/{{ edit.ident }}">[view]</a> + {% if auth_to.edit and not editgroup.changelog_index and not editgroup.submitted %} + <br><a href="/editgroup/{{ editgroup.editgroup_id }}/{{ entity_type }}/{{ edit.ident }}/edit" style="color: green;">[re-edit]</a> + <br> + <form id="submit_edit_delete" method="POST" action="/editgroup/{{ editgroup.editgroup_id }}/{{ entity_type }}/edit/{{ edit.edit_id }}/delete" style="display:inline;"> + <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> + <input type="submit" value="[delete]" style="background:none; color: red; border: none; font-weight:bold; cursor:pointer; padding: 0;"></input> + </form> + {% endif %} + </div> <div class="header"> - <a href="/{{ entity_type }}/{{ edit.ident }}">{{ entity_type }}/{{ edit.ident }}</a> + <a href="/{{ entity_type }}/{{ edit.ident }}">{{ entity_type }}_{{ edit.ident }}</a> {% if edit.redirect_ident %} => redirect to <a href="/{{ entity_type }}/{{ edit.redirect_ident }}">{{ entity_type }}/{{ edit.redirect_ident }}</a> {% elif not edit.revision %} @@ -24,14 +35,6 @@ {% else %} updated {% endif %} - <a href="/editgroup/{{ editgroup.editgroup_id }}/{{ entity_type }}/{{ edit.ident }}">[view edit]</a> - {% if auth_to.edit and not editgroup.changelog_index and not editgroup.submitted %} - <a href="/editgroup/{{ editgroup.editgroup_id }}/{{ entity_type }}/{{ edit.ident }}/edit" style="color: green;">[re-edit]</a> - <form id="submit_edit_delete" method="POST" action="/editgroup/{{ editgroup.editgroup_id }}/{{ entity_type }}/edit/{{ edit.edit_id }}/delete" style="display:inline;"> - <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> - <input type="submit" value="[delete-edit]" style="background:none; color: red; border: none; padding:9;font-weight:bold;cursor:pointer;"></input> - </form> - {% endif %} </div> {% if edit.revision %} Revision: <small><code><a href="/{{ entity_type }}/rev/{{ edit.revision }}">{{ edit.revision }}</a></code></small> @@ -48,65 +51,126 @@ {# extended by changelog_entry #} {% block editgroupheader %} -{% if not editgroup.changelog_index %} - <div class="ui right floated center aligned segment"> - {% if auth_to.accept %} - <form id="submit_editgroup_form" method="POST" action="/editgroup/{{ editgroup.editgroup_id }}/accept"> - <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> - <button class="ui orange button">Accept Edits</button> - </form><br> - {% endif %} - {% if auth_to.submit %} - {% if editgroup.submitted %} - <form id="submit_editgroup_form" method="POST" action="/editgroup/{{ editgroup.editgroup_id }}/unsubmit"> - <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> - <button class="ui button">Un-Submit</button> - </form><br> - <form id="submit_editgroup_form" method="POST" action="/editgroup/{{ editgroup.editgroup_id }}/submit"> - <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> - <button class="ui button">Re-Submit</button> - </form> - {% else %} - <form id="submit_editgroup_form" method="POST" action="/editgroup/{{ editgroup.editgroup_id }}/submit"> - <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> - <button class="ui primary button">Submit</button> - </form> - {% endif %} - {% endif %} + +<h1 class="ui header">Editgroup +<span class="sub header"><code>editgroup_{{ editgroup.editgroup_id }}</code></span></h1> + +{% if not auth_to.submit %} +<br clear="all"> +<div class="ui info small message"> + <div class="header"> + What is an editgroup? </div> + <p>An editgroup is a set of entity edits, bundled together into a coherent, reviewable bundle. +</div> {% endif %} -<h1 class="ui header">Editgroup -<span class="sub header"><code>editgroup {{ editgroup.editgroup_id }}</code></span></h1> -{% endblock %} +<div class="ui three top attached ordered steps"> -<p><b>What is an editgroup?</b> -An editgroup is a set of entity edits, bundled together into a coherent, -reviewable bundle. -<br> + {% if editgroup.changelog_index %} + {% set editing_status = "completed" %} + {% set submit_status = "completed" %} + {% set accept_status = "completed" %} + {% elif editgroup.submitted %} + {% set editing_status = "completed" %} + {% set submit_status = "completed" %} + {% set accept_status = "active" %} + {% else %} + {% set editing_status = "completed" %} + {% set submit_status = "active" %} + {% set accept_status = "" %} + {% endif %} -<br><b>Status:</b> -{% if editgroup.changelog_index %} - Merged (<a href="/changelog/{{ editgroup.changelog_index }}">Changelog #{{ editgroup.changelog_index }}</a>) -{% elif editgroup.submitted %} - Submitted ({{ editgroup.submitted.strftime("%Y-%m-%d %H:%M:%S") }}) -{% else %} - Not Submitted -{% endif %} + <div class="{{ editing_status }} step"> + <div class="content"> + <div class="title"> + {% if not editgroup.changelog_index and auth_to.submit and editgroup.submitted %} + <form id="submit_editgroup_form" method="POST" action="/editgroup/{{ editgroup.editgroup_id }}/unsubmit"> + <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> + <button class="ui primary compact small button" type="submit">Edit</button> + </form> + {% else %} + Edit + {% endif %} + </div> + <div class="description">Make changes to entities</div> + </div> + </div> + + <div class="{{ submit_status }} step"> + <div class="content"> + <div class="title"> + {% if not editgroup.changelog_index and auth_to.submit and not editgroup.submitted %} + <form id="submit_editgroup_form" method="POST" action="/editgroup/{{ editgroup.editgroup_id }}/submit"> + <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> + <button class="ui primary compact small button" type="submit">Submit</button> + </form> + {% else %} + Submitted + {% endif %} + </div> + <div class="description">For review and feedback from others</div> + </div> + </div> + + <div class="{{ accept_status }} step"> + <div class="content"> + <div class="title"> + {% if not editgroup.changelog_index and auth_to.accept %} + <form id="submit_editgroup_form" method="POST" action="/editgroup/{{ editgroup.editgroup_id }}/accept"> + <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> + <button class="ui primary compact small button" type="submit">Accept</button> + </form> + {% else %} + Accepted + {% endif %} + </div> + <div class="description">Changes added to catalog</div> + </div> + </div> + +</div> + +{% endblock %} + +<table class="ui fixed compact small definition table"> + <tbody> + <tr> + <td class="three wide right aligned">Status</td> + <td class="seven wide"> + {% if editgroup.changelog_index %} + Merged (<a href="/changelog/{{ editgroup.changelog_index }}">Changelog #{{ editgroup.changelog_index }}</a>) + {% elif editgroup.submitted %} + Submitted ({{ editgroup.submitted.strftime("%Y-%m-%d %H:%M:%S") }}) + {% else %} + Not Submitted + {% endif %} + </td> + </tr> + <tr> + <td class="right aligned">Editor</td> + <td> + <a href="/editor/{{editgroup.editor_id}}">{{ editgroup.editor.username }}</a> + </td> + </tr> + <tr> + <td class="right aligned">Description</td> + <td> + {% if editgroup.description %} + {{ editgroup.description }} + {% else %} + <i>none</i> + {% endif %} + </td> + </tr> +</tbody></table> -<br><b>Editor:</b> <a href="/editor/{{editgroup.editor_id}}">{{ editgroup.editor.username }}</a> -<br><b>Description:</b> -{% if editgroup.description %} - {{ editgroup.description }} -{% else %} - <i>none</i> -{% endif %} {% if editgroup.extra %} <h4>Extra Metadata (raw JSON)</h4> {{ entity_macros.extra_metadata(editgroup.extra) }} {% endif %} -<br><br style="clear: both;"> +<h3 class="ui header">All Entity Changes</h3> <div class="ui styled fluid accordion"> {{ edit_list(auth_to, editgroup, editgroup.edits.releases, "release", "Release") }} {{ edit_list(auth_to, editgroup, editgroup.edits.works, "work", "Work") }} @@ -116,14 +180,17 @@ reviewable bundle. {{ edit_list(auth_to, editgroup, editgroup.edits.filesets, "fileset", "File Set") }} {{ edit_list(auth_to, editgroup, editgroup.edits.webcaptures, "webcapture", "Web Capture") }} </div> +<div style="float: right; font-size: smaller;"> + <a href="{{ config.FATCAT_API_HOST }}/editgroup/{{ editgroup.editgroup_id }}">As JSON via API</a> +</div> <br> -<h2 class="ui header">Comments and Annotations</h2> +<h3 class="ui header">Comments and Annotations</h3> {% for annotation in editgroup.annotations|reverse %} <div class="ui segments"> <div class="ui top attached secondary segment"> {% if annotation.editor.is_bot %} - <i class="icon bug"></i> + <i class="icon server"></i> {% else %} <i class="icon user"></i> {% endif %} @@ -168,7 +235,7 @@ reviewable bundle. </div> <i>Markdown is allowed</i> <button class="ui right floated primary button"> - <i class="icon edit"></i> Submit + <i class="icon edit"></i> Post </button> <br> </form><br> diff --git a/python/fatcat_web/templates/editor_annotations.html b/python/fatcat_web/templates/editor_annotations.html index c46039f5..7a8b53cf 100644 --- a/python/fatcat_web/templates/editor_annotations.html +++ b/python/fatcat_web/templates/editor_annotations.html @@ -1,16 +1,16 @@ {% extends "base.html" %} {% block body %} -<h1 class="ui header">Comments and Annotations +<h1 class="ui header">{{ editor.username }}: Comments and Annotations <div class="sub header"> - <code>editor - <a href="/editor/{{editor.editor_id}}">{{ editor.username }}</a> - </code> - </a> + <code>editor_{{ editor.editor_id }}</code> </div> </h1> +<a href="/editor/{{ editor.editor_id }}/editgroups">Edit History</a> - +<a href="/editor/{{ editor.editor_id }}/annotations">Comments and Annotation History</a> <br> +<br> {% for annotation in annotations %} <div class="ui segments"> <div class="ui top attached secondary segment"> @@ -29,7 +29,7 @@ </div> </div> {% else %} - <i>None!</i> + <i>No comments or annotations for this editor!</i> {% endfor %} {% endblock %} diff --git a/python/fatcat_web/templates/editor_editgroups.html b/python/fatcat_web/templates/editor_editgroups.html index 3c3dd20d..756b3a02 100644 --- a/python/fatcat_web/templates/editor_editgroups.html +++ b/python/fatcat_web/templates/editor_editgroups.html @@ -1,15 +1,15 @@ {% extends "base.html" %} {% block body %} -<h1 class="ui header">Edit History +<h1 class="ui header">{{ editor.username }}: Edit History <div class="sub header"> - <code>editor - <a href="/editor/{{editor.editor_id}}">{{ editor.username }}</a> - </code> - </a> + <code>editor_{{editor.editor_id}}</code> </div> </h1> +<a href="/editor/{{ editor.editor_id }}/editgroups">Edit History</a> - +<a href="/editor/{{ editor.editor_id }}/annotations">Comments and Annotation History</a> +<br> <table class="ui table"> <thead><tr>{# <th>Created (UTC) #} <th>Status @@ -28,7 +28,7 @@ Work in Progress {% endif %} <td><small><code><a href="/editgroup/{{ editgroup.editgroup_id }}"> - {{ editgroup.editgroup_id }} + editgroup_{{ editgroup.editgroup_id }} </a></code></small> <td>{% if editgroup.description != None %}{{ editgroup.description }}{% endif %} {% endfor %} diff --git a/python/fatcat_web/templates/editor_view.html b/python/fatcat_web/templates/editor_view.html index 6ac58e3d..5906af75 100644 --- a/python/fatcat_web/templates/editor_view.html +++ b/python/fatcat_web/templates/editor_view.html @@ -6,11 +6,20 @@ <h1 class="ui header">{{ editor.username }} <div class="sub header"> - <code>editor {{ editor.editor_id }}</code> + <code>editor_{{ editor.editor_id }}</code> </div> </h1> -<p><b><a href="/editor/{{ editor.editor_id }}/editgroups">Edit History</a></b> -<p><b><a href="/editor/{{ editor.editor_id }}/annotations">Comments and Annotation History</a></b> +<a href="/editor/{{ editor.editor_id }}/editgroups">Edit History</a> - +<a href="/editor/{{ editor.editor_id }}/annotations">Comments and Annotation History</a> + +<br> +<br> +<div class="ui small info message"> + <div class="header"> + This page is intentionally bare + </div> + <p>We don't have much to share about individual editors. +</div> {% endblock %} diff --git a/python/fatcat_web/templates/entity_delete.html b/python/fatcat_web/templates/entity_delete.html index b2e13af4..5f677992 100644 --- a/python/fatcat_web/templates/entity_delete.html +++ b/python/fatcat_web/templates/entity_delete.html @@ -2,6 +2,9 @@ {% extends "base.html" %} {% block body %} + +{{ edit_macros.edit_link_bar(entity_type, existing_ident, 'delete') }} + {% block edit_form_prefix %} <div class="ui segment"> <h1 class="ui header">Delete Entity</h1> diff --git a/python/fatcat_web/templates/entity_edit_toml.html b/python/fatcat_web/templates/entity_edit_toml.html index 64768d6e..1ff9010d 100644 --- a/python/fatcat_web/templates/entity_edit_toml.html +++ b/python/fatcat_web/templates/entity_edit_toml.html @@ -2,15 +2,14 @@ {% extends "base.html" %} {% block body %} + {% block edit_form_prefix %} + {{ edit_macros.edit_link_bar(entity_type, existing_ident, 'toml') }} <div class="ui segment"> - <h1 class="ui header">Edit Entity (TOML mode)</h1> + <h1 class="ui header">Edit Entity</h1> <form class="ui form" id="edit_toml_form" method="POST" action="{% if editgroup and editgroup.editgroup_id %}/editgroup/{{ editgroup.editgroup_id }}{% endif %}/{{ entity_type }}/{{ existing_ident }}/edit/toml"> - {% if not editgroup %} - <p>You can also <a href="/{{ entity_type }}/{{ existing_ident }}/delete">delete this entity</a>. - {% endif %} {% endblock %} <p>See <a href="https://guide.fatcat.wiki/entity_release.html">the catalog diff --git a/python/fatcat_web/templates/entity_history.html b/python/fatcat_web/templates/entity_history.html index c9f45d84..0115b845 100644 --- a/python/fatcat_web/templates/entity_history.html +++ b/python/fatcat_web/templates/entity_history.html @@ -3,9 +3,9 @@ {% block entity_main %} -<h3 class="ui header">Edit History</h3> +<h3 class="ui header">Entity Edit History</h3> -This table only shows <i>merged</i> edits, not work-in-progress. +This table only shows <i>accepted</i> edits included in the catalog, not any work-in-progress. <table class="ui table"> <thead><tr><th>Changelog @@ -17,7 +17,7 @@ This table only shows <i>merged</i> edits, not work-in-progress. <br>{{ entry.changelog_entry.timestamp.strftime("%Y-%m-%d %H:%M") }} <td> {% if entry.editgroup.editor.is_bot %} - <i class="icon bug"></i> + <i class="icon server"></i> {% else %} <i class="icon user"></i> {% endif %} @@ -34,5 +34,9 @@ This table only shows <i>merged</i> edits, not work-in-progress. <td>{% if entry.editgroup.description != None %}{{ entry.editgroup.description }}{% endif %} {% endfor %} </table> +<div style="float: right; font-size: smaller;"> + <a href="{{ config.FATCAT_API_HOST }}/{{ entity_type }}/{{ entity.ident }}/history">As JSON via API</a> +</div> + {% endblock %} diff --git a/python/fatcat_web/templates/entity_macros.html b/python/fatcat_web/templates/entity_macros.html index e8a763d2..45f00362 100644 --- a/python/fatcat_web/templates/entity_macros.html +++ b/python/fatcat_web/templates/entity_macros.html @@ -5,15 +5,15 @@ <div class="ui segment pink inverted attached"> {% if editgroup.changelog_index %} <b>Accepted Edit Version</b> - <p>This is the version of the entity as of a specific merged editgroup: + <p>This is the version of the entity as of a specific point in time: {% elif editgroup.submitted %} <b>Submitted Edit Version</b> - <p>This is a version of the entity that has been submitted for approval as part of an editgroup: + <p>This is a version of the entity that has been submitted for approval as part of: {% else %} <b>Edit In Progress</b> - <p>This is a version of the entity that has not yet been submitted for approval, part of an editgroup: + <p>This is a version of the entity that has not yet been submitted for approval. Part of: {% endif %} - <b><a href="/editgroup/{{ editgroup.editgroup_id }}" style="color: white; font-weight: bold;">{{ editgroup.editgroup_id }}</a></b> + <a href="/editgroup/{{ editgroup.editgroup_id }}" style="color: white; font-weight: bold; font-size: smaller;"><code>editgroup_{{ editgroup.editgroup_id }}</code></a> </div> {% elif entity.state == None and entity.ident == None %} <div class="ui segment pink inverted attached"> @@ -27,17 +27,15 @@ </div> {% endif %} -<div class="ui segment attached"> - <b>Fatcat Bits</b> - <p> - {% if entity.state %} - State is "{{ entity.state }}". +<div class="ui segment attached" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> + <b>Catalog Record</b> + {% if entity.state and entity.state != "active" %} + <br>State: <code>{{ entity.state }}</code> {% endif %} {% if entity.revision %} - Revision: - <br><small><code><a href="/{{ entity_type }}/rev/{{ entity.revision }}">{{ entity.revision }}</a></code></small> + <br>Revision: <small><code><a href="/{{ entity_type }}/rev/{{ entity.revision }}">{{ entity.revision }}</a></code></small> {% endif %} - <br><a href=" + <br>API URL: <a href=" {%- if config.FATCAT_DOMAIN == 'dev.fatcat.wiki' -%} http://localhost:9411 {%- else -%} @@ -52,7 +50,7 @@ /{{ entity_type }}/rev/{{ entity.revision }} {% endif %} {% if expand %}?expand={{ expand}}{% endif %}"> - As JSON object via API + JSON </a> </div> @@ -180,11 +178,20 @@ </h4> - {% if paper.best_pdf_url %} <div style="float: right; padding: 4px;"> - <a href="{{ paper.best_pdf_url }}" class="ui violet tag label"><i class="file icon"></i>fulltext</a> + + {% if paper.preservation == "bright" %} + {% if paper.best_pdf_url %} + <a href="{{ paper.best_pdf_url }}" class="ui green label" style="background-color: #2ca048;"><i class="file icon"></i>bright archive</a> + {% else %} + <span class="ui green label" style="background-color: #2ca048;">bright archive</span> + {% endif %} + {% elif paper.preservation == "dark" %} + <span class="ui green label" style="background-color: #6e7b71;">dark archive</span> + {% else %} + <span class="ui grey label" style="background-color: #b71818;">no archive</span> + {% endif %} </div> - {% endif %} {# ### AUTHOR ROW #} {% if paper.contrib_names %} @@ -232,15 +239,23 @@ {% if paper.doi %} <a href="https://doi.org/{{paper.doi }}" style="color: green;">doi:{{ paper.doi }}</a> {% endif %} - {% if paper.pmid %} - <a href="https://www.ncbi.nlm.nih.gov/pubmed/{{paper.pmid }}" style="color: green;">pmid:{{ paper.pmid }}</a> - {% endif %} {% if paper.pmcid %} <a href="https://pubmed.ncbi.nlm.nih.gov/{{paper.pmcid }}/" style="color: green;">pmcid:{{ paper.pmcid }}</a> + {% elif paper.pmid %} + <a href="https://www.ncbi.nlm.nih.gov/pubmed/{{paper.pmid }}" style="color: green;">pmid:{{ paper.pmid }}</a> {% endif %} {% if paper.arxiv_id %} <a href="https://arxiv.org/abs/{{paper.arxiv_id }}" style="color: green;">arXiv:{{ paper.arxiv_id }}</a> {% endif %} + {% if paper.jstor_id %} + <a href="https://jstor.org/stable/{{paper.jstor_id }}/" style="color: green;">jstor:{{ paper.jstor_id }}</a> + {% endif %} + {% if paper.doaj_id %} + <a href="https://doaj.org/article/{{paper.doaj_id }}/" style="color: green;">doaj:{{ paper.doaj_id }}</a> + {% endif %} + {% if paper.doaj_id %} + <a href="https://dblp.org/rec/{{ paper.dblp_id }}.html" style="color: green;">dblp:{{ paper.dblp_id }}</a> + {% endif %} {# WIP: elastic release work grouping searches <br> @@ -250,6 +265,26 @@ </div> {% endmacro %} + +{% macro container_search_result_row(entity) -%} + <div> + <h4 style="margin-top: 1em; margin-bottom: 4px; font-size: 1.1em;"> + <a href="/container/{{ entity.ident }}" style="color: #2224c7;">{{ entity['name'] }}</a> + {% if entity.is_oa %}<i class="icon unlock orange small"></i>{% endif %} + </h4> + {% if entity.publisher %} + <h5 style="margin-top: 4px; margin-bottom: 0px; font-size: 1em;">{{ entity.publisher }}</h5> + {% endif %} + {% if entity.issnl %} + <a href="https://portal.issn.org/resource/ISSN/{{entity.issnl }}" style="color: green;">issn:{{ entity.issnl }}</a> + {% endif %} + {% if entity.container_type %} + {{ entity.container_type }} + {% endif %} + </div> +{% endmacro %} + + {% macro progress_color(frac) -%} {% if frac >= 1 %} green diff --git a/python/fatcat_web/templates/entity_view_metadata.html b/python/fatcat_web/templates/entity_view_metadata.html index 5ce97d10..90ce25d9 100644 --- a/python/fatcat_web/templates/entity_view_metadata.html +++ b/python/fatcat_web/templates/entity_view_metadata.html @@ -4,13 +4,16 @@ {% block entity_main %} +<h3>Entity Metadata (schema)</h3> +{{ entity_macros.extra_metadata(entity._metadata) }} +<div style="float: right;"> + <a href="{{ config.FATCAT_API_HOST }}/{{ entity_type }}/{{ entity.ident }}">As JSON via API</a> +</div> + {% if entity.extra %} <h3>Extra Metadata (raw JSON)</h3> {{ entity_macros.extra_metadata(entity.extra) }} {% endif %} -<h3>Entity Metadata (schema)</h3> -{{ entity_macros.extra_metadata(entity._metadata) }} - {% endblock %} diff --git a/python/fatcat_web/templates/file_edit.html b/python/fatcat_web/templates/file_edit.html index 745b0c41..b7ff1d72 100644 --- a/python/fatcat_web/templates/file_edit.html +++ b/python/fatcat_web/templates/file_edit.html @@ -2,19 +2,14 @@ {% extends "base.html" %} {% block body %} + {% block edit_form_prefix %} +{{ edit_macros.edit_link_bar(entity_type, existing_ident) }} <div class="ui segment"> <h1 class="ui header">Edit File Entity</h1> <form class="ui form" id="edit_file_form" method="POST" action="{% if editgroup %}/editgroup/{{ editgroup.editgroup_id }}{% endif %}/file/{{ existing_ident }}/edit"> - <p>Experienced users can also use the <a href="{% if editgroup - %}/editgroup/{{ editgroup.editgroup_id }}{% endif %}/file/{{ - existing_ident }}/edit/toml">TOML editing form</a> to access all metadata - fields in a raw format. - {% if not editgroup %} - You can also <a href="/file/{{ existing_ident }}/delete">delete this entity</a>. - {% endif %} {% endblock %} <p>See <a href="https://guide.fatcat.wiki/entity_file.html">the catalog diff --git a/python/fatcat_web/templates/file_view.html b/python/fatcat_web/templates/file_view.html index 02f47a91..608a2a0a 100644 --- a/python/fatcat_web/templates/file_view.html +++ b/python/fatcat_web/templates/file_view.html @@ -8,23 +8,23 @@ <div class="ui stackable mobile reversed grid centered"> <div class="column" style="font-size: 16px; flex: 1;"> -<h3>Releases</h3> +<h3>Associated Releases</h3> {% if entity.releases != [] %} {{ entity_macros.release_list(entity.releases) }} {% else %} <p> - This file is not associated with any fatcat release. + This file is not associated with any release entity! This makes a is a stub entry in the catalog. {% endif %} -<h3>URLs</h3> +<h3>Public Access URLs</h3> {% if file.urls != None %} {{ entity_macros.url_list(file.urls) }} {% else %} -No known public URL, mirror, or archive for this file. +No known archives or mirrors of this file. {% endif %} -<h3>Checksums</h3> +<h3>Data Integrity Checksums</h3> <table class="ui definition single line fixed compact small unstackable table"> <tbody> {% if file.sha1 != None %} @@ -45,22 +45,23 @@ No known public URL, mirror, or archive for this file. <div class="column" style="flex: 0 0 24em;"> {% if file._es and file._es.best_url %} -<a href="{{ file._es.best_url }}" class="ui top attached fluid huge green button"><i class="file icon"></i>Download File</a> + {# TODO: this currently shows *any* file, though prefers archive.org #} + <a href="{{ file._es.best_url }}" class="ui fluid huge black button" style="text-decoration: underline;"> + <i class="file icon"></i>View Archived File + </a> {% else %} -<span class="ui top attached fluid huge grey button"><i class="file cross icon"></i>No Download Available</span> + <span class="ui fluid huge grey segment"><i class="file cross icon"></i>No Public URL</span> {% endif %} +<br> -{% if file.size != None %} -<div class="ui segment attached"> - <p><b>Size</b> {{ file.size|filesizeformat }} +<div class="ui top segment attached"> + {% if file.size != None %} + <b>Size</b> {{ file.size|filesizeformat }}<br> + {% endif %} + {% if file.mimetype != None %} + <b>MIME Type</b> <code>{{ file.mimetype }}</code><br> + {% endif %} </div> -{% endif %} - -{% if file.mimetype != None %} -<div class="ui segment attached"> - <p><b>File Type</b> <code>{{ file.mimetype }}</code> -</div> -{% endif %} {{ entity_macros.fatcat_bits(entity, "file", "", editgroup) }} diff --git a/python/fatcat_web/templates/fileset_view.html b/python/fatcat_web/templates/fileset_view.html index 27d5b6da..4e8bfbad 100644 --- a/python/fatcat_web/templates/fileset_view.html +++ b/python/fatcat_web/templates/fileset_view.html @@ -8,14 +8,20 @@ <div class="ui stackable mobile reversed grid centered"> <div class="column" style="font-size: 16px; flex: 1;"> -<h3>Releases</h3> +<h3>Associated Releases</h3> {% if entity.releases != [] %} {{ entity_macros.release_list(entity.releases) }} {% else %} <p> This File Set is not associated with any fatcat release. {% endif %} - + +<h3>Public Access URLs</h3> +{% if entity.urls %} + {{ entity_macros.url_list(entity.urls) }} +{% else %} +No known public URL, mirror, or archive for this File Set. +{% endif %} <h3>File Manifest ({{ fileset.manifest|count }})</h3> {% if fileset.manifest %} @@ -40,14 +46,6 @@ This File Set is empty (contains no files). {% endif %} -<br> -<h3>Base URLs</h3> -{% if entity.urls %} - {{ entity_macros.url_list(entity.urls) }} -{% else %} -No known public URL, mirror, or archive for this File Set. -{% endif %} - </div> <div class="column" style="flex: 0 0 24em;"> diff --git a/python/fatcat_web/templates/home.html b/python/fatcat_web/templates/home.html index 4288017e..a90b0fb7 100644 --- a/python/fatcat_web/templates/home.html +++ b/python/fatcat_web/templates/home.html @@ -32,17 +32,17 @@ <div class="row"> <div class="four wide mobile three wide center aligned column"> <a href="/stats" style="color: black;"> - <h4>110,814,532<br>Papers</h4> + <h4>116,741,069<br>Papers</h4> </a> </div> <div class="four wide mobile three wide center aligned column"> <a href="/stats" style="color: black;"> - <h4>26,173,743<br>Fulltext</h4> + <h4>28,751,063<br>Accessible</h4> </a> </div> <div class="four wide mobile three wide center aligned column"> <a href="/stats" style="color: black;"> - <h4>151,707<br>Journals</h4> + <h4>177,158<br>Journals</h4> </a> </div> </div> @@ -53,20 +53,19 @@ <div class="ui vertical stripe segment" style="padding-top: 2em; padding-bottom: 2em;"> <div class="ui text container" style="max-width: 800px!important;"> <div class="ui centered grid"> - <div class="row"> + <div class="stackable row"> <div class="four wide column"> <!-- TODO: don't let it scale down --> <img src="/static/paper_man_confused.gif" width="130" alt="confused paper man"> </div> <div class="twelve wide column" style="font-size: 1.2rem;"> - <p><b>Fatcat is a versioned, user-editable catalog of research + <p>Fatcat is a versioned, user-editable catalog of research publications including journal articles, conference proceedings, and - datasets</b> + datasets. <p>Features include archival file-level metadata (verified digests and - long-term copies), an - <b><a href="https://api.{{ config.FATCAT_DOMAIN }}">open, documented API</a></b>, - and work/release indexing (eg, distinguishing between and linking - pre-prints, manuscripts, and version-of-record). + long-term copies), a <b><a href="/coverage/search">preservation coverage visualizer</a></b>, work/edition grouping, an + <b><a href="https://api.{{ config.FATCAT_DOMAIN }}">open API</a></b>, + and public metadata dumps. <a href="/about">Read more...</a> </div> </div> @@ -74,18 +73,37 @@ </div> </div> +<div class="ui vertical stripe segment" style="padding-top: 2em; padding-bottom: 2em;"> + <div class="ui text container" style="max-width: 1200px!important;"> + <div class="ui middle aligned divided centered grid"> + <div class="stackable row"> + <div class="eight wide column" style="font-size: 1.6rem; text-align: center;"> + <p>Our goal is to ensure long-term access to research content on the + "scholarly web" by tracking holes in preservation coverage across + digital preservation efforts + </div> + <div class="seven wide column"> + <a href="/coverage/search?q=is_oa%3Atrue+year%3A%3E1995+year%3A%3C%3D2019+%28type%3Aarticle-journal+OR+type%3Aarticle+OR+type%3Apaper-conference%29+%21doi_prefix%3A10.5281+%21doi_prefix%3A10.6084"> + <img alt="coverage visualization tool" src="/static/fatcat_oa_preservation_jan2021.svg" style="width: 100%;"> + </a> + </div> + </div> + </div> + </div> +</div> + <div class="ui vertical stripe segment" style="padding-top: 2em; padding-bottom: 2em; background-color: #F5F5F5;"> <div class="ui text container" style="max-width: 800px!important;"> <div class="ui centered grid"> - <div class="row"> + <div class="stackable row"> <div class="twelve wide column" style="font-size: 1.2rem;"> <p>This service is hosted at the <b><a href="https://archive.org">Internet Archive</a></b>, a US non-profit digital library dedicated to providing Universal Access to All Knowledge. <a href="https://archive.org/donate/">Donations welcome!</a> - <p>Development funding comes from - <b><a href="https://blog.archive.org/2018/03/05/andrew-w-mellon-foundation-awards-grant-to-the-internet-archive-for-long-tail-journal-preservation/">The Andrew Mellon Foundation</a></b> - to improve preservation and access to "long-tail" open access works on + <p>Development for this project funding comes from + <b><a href="https://blog.archive.org/2018/03/05/andrew-w-mellon-foundation-awards-grant-to-the-internet-archive-for-long-tail-journal-preservation/">The Andrew Mellon Foundation</a></b>, + specifically to capture "long-tail" open access works on the public web which might otherwise be lost. </div> <div class="four wide column"> @@ -96,6 +114,26 @@ </div> </div> +<div class="ui vertical stripe segment" style="padding-top: 2em; padding-bottom: 2em;"> + <div class="ui text container" style="max-width: 800px!important;"> + <div class="ui centered grid"> + <div class="stackable row"> + <div class="four wide column"> + <a href="https://scholar-qa.archive.org"> + <img src="/static/scholar-vaporwave-logo-small.png" width="170" alt="IA scholar logo"> + </a> + </div> + <div class="twelve wide column" style="font-size: 1.2rem;"> + <p><b><a href="https://scholar-qa.archive.org">Internet Archive Scholar</a></b> + is a sibling service, built on the Fatcat catalog, providing end-user + access to and full-text search over research content across the + Internet Archive's various holdings. + </div> + </div> + </div> + </div> +</div> + <div class="ui vertical stripe segment" style="background-color: #fffaf3; color: #573a08;"> <div class="ui text container"> <div class="ui centered grid"> @@ -110,6 +148,8 @@ </div> </div> +</div> + <div class="ui center aligned container"> <br> @@ -118,7 +158,6 @@ </h2> <br> - {# this div makes the table scrollable on mobile #} <div style="max-width: 100%; overflow-x: auto;"> <table class="ui single line unstackable table centered" style="max-width: 800px; font-size: 1.1rem; margin-right: auto; margin-left: auto;"> diff --git a/python/fatcat_web/templates/release_edit.html b/python/fatcat_web/templates/release_edit.html index c26c9850..0ac94be9 100644 --- a/python/fatcat_web/templates/release_edit.html +++ b/python/fatcat_web/templates/release_edit.html @@ -2,7 +2,9 @@ {% extends "base.html" %} {% block body %} + {% block edit_form_prefix %} +{{ edit_macros.edit_link_bar('release', existing_ident, 'form') }} <div class="ui segment"> <h1 class="ui header">Edit Release Entity</h1> diff --git a/python/fatcat_web/templates/release_save.html b/python/fatcat_web/templates/release_save.html index 29875d3d..7dd01fc0 100644 --- a/python/fatcat_web/templates/release_save.html +++ b/python/fatcat_web/templates/release_save.html @@ -13,14 +13,14 @@ {% if spn_status == "not-configured" %} -<div class="ui error message" style="margin: 2em;"> - <div class="header">Error</div> +<div class="ui error message" style="margin-top: 2em;"> + <div class="header">Not Available</div> <p>Save Paper Now feature isn't configured, sorry about that. </div> {% elif spn_status == "kafka-error" %} -<div class="ui error message" style="margin: 2em;"> +<div class="ui error message" style="margin-top: 2em;"> <div class="header">Error</div> <p>Whoops, something went wrong and we couldn't enqueue your request. This didn't have anything to do with the URL you supplied; please try again later. @@ -28,7 +28,7 @@ {% elif spn_status == "success" %} -<div class="ui positive message" style="margin: 2em;"> +<div class="ui positive message" style="margin-top: 2em;"> <div class="header">Success</div> <p>URL has been submitted to the bot queue for crawling. If fulltext content is found, it will be imported into the catalog for review. Keep an eye on the @@ -40,15 +40,24 @@ <form class="ui form" id="save_release_form" method="POST" action="/release/{{ release.ident }}/save"> <input type="hidden" name="csrf_token" value="{{ csrf_token() }}"/> - <br> - <p>Know of a legit fulltext copy of this publication on the public web? - Tell us the URL and we will crawl it and provide free perpetual access. + <p>If you know of a legitimate public web access option for this work, you + can help us preserve it by filling out the form below. Using the Wayback + Machine's <a href="https://web.archive.org/save">"Save Page Now"</a> feature, + we will attempt to crawl, process, and verify the content and add it to the + catalog. - {{ edit_macros.form_field_basic(form.base_url) }} + <p style="margin-top: 1em; margin-bottom: 1em;">If you are the author of this + work, and the published version is not publicly available, another option is + to upload an version to an institutional or discipline repository. The + <a href="https://shareyourpaper.org/">Share Your Paper</a> tool can help with + this process. - <p style="margin-top: 2em; margin-bottom: 2em;"><b>Important:</b> check the publication stage of the file you are - submitting. We distinguish between pre-prints, manuscripts, and the - published version of record (if applicable). + <p style="margin-top: 1em; margin-bottom: 1em;"><b>Important:</b> + double-check the publication stage of the file you are submitting. We + distinguish between pre-prints, manuscripts, and the published version of + record (if applicable). + + {{ edit_macros.form_field_basic(form.base_url) }} <div class="ui equal width fields"> {{ edit_macros.form_field_basic(form.release_stage) }} diff --git a/python/fatcat_web/templates/release_search.html b/python/fatcat_web/templates/release_search.html index b1021322..59a234c0 100644 --- a/python/fatcat_web/templates/release_search.html +++ b/python/fatcat_web/templates/release_search.html @@ -24,7 +24,7 @@ </div> <div class="ui checkbox" style="float: right; margin: 1em;"> <input type="checkbox" name="fulltext_only" id="fulltext_only" value="true" {% if query.fulltext_only %}checked{% endif %}> - <label for="fulltext_only">Fulltext Available Only</label> + <label for="fulltext_only">Only public full-text</label> </div> <br>Can also lookup by <b><a href="/release/lookup">identifier</a></b> or search for <b><a href="/container/search?q={{ query.q or "" }}">containers</a></b> (eg, journals). </div> @@ -35,6 +35,16 @@ <div class="ui container text"> <br> +{% if container_found and container_found.results %} + <div class="ui tiny info floating message" style="margin: 0em auto; max-width: 40em;"> + <div class="header">Were you looking for this journal, instead of publications?</div> + <div style="padding-left: 0.5em;"> + {{ entity_macros.container_search_result_row(container_found.results[0]) }} + </div> + </div> + <br clear="all"> +{% endif %} + {% if found %} {% if found.results %} diff --git a/python/fatcat_web/templates/release_view.html b/python/fatcat_web/templates/release_view.html index cc9cf5fe..9464fda2 100644 --- a/python/fatcat_web/templates/release_view.html +++ b/python/fatcat_web/templates/release_view.html @@ -79,23 +79,16 @@ <div class="ui stackable mobile reversed grid centered"> <div class="column" style="font-size: 16px; flex: 1;"> -{% if release.abstracts != [] %} -<h3>Abstract</h3> -<p><span itemprop="description">{{ release.abstracts[0].content }}</span> -<br><small><i>In <code>{{ release.abstracts[0].mimetype }}</code> format</i></small> -{% endif %} - -<div class="ui accordion"> <div class="title" itemprop="isPartOf" itemscope itemtype="http://schema.org/Periodical" itemid="#container"> {% if release.release_stage == 'published' %} - <i class="dropdown icon"></i>Published + Published {% if release.container.ident %} in <a href="/container/{{ release.container.ident }}"><span itemprop="name">{{ release.container.name }}</span></a> {% elif release.extra and release.extra.container_name %} in <span itemprop="name">{{ release.extra.container_name }}</span> {% endif %} {% else %} - <i class="dropdown icon"></i>Released + Released {% if release.release_type %} as a <i>{{ release.release_type }}</i> {% endif %} @@ -105,84 +98,41 @@ {% endif %} {% if release.publisher %} by <span itemprop="publisher">{{ release.publisher }}</span> - {% endif %} -</div><div class="content" itemscope itemtype="http://schema.org/Periodical" itemid="#container"> - <table class="ui definition single line fixed compact small collapsing unstackable table" style="width: 100%;"> - <tbody> - {% if release.number != None %} - <tr><td class="three wide right aligned">Number</td> - <td class="seven wide">{{ release.number }} - {% endif %} - {% if release.version != None %} - <tr><td class="three wide right aligned">Version</td> - <td class="seven wide">{{ release.version }} - {% endif %} - {% if release.container != None and release.container.issnl != None %} - <tr><td class="three wide right aligned">ISSN-L</td> - <td class="seven wide" itemprop="issn">{{ release.container.issnl }} - {% endif %} - {% if release.volume != None %} - <tr itemprop="isPartOf" itemscope itemtype="http://schema.org/PublicationVolume"> - <td class="right aligned">Volume</td> - <td class="" itemprop="volumeNumber">{{ release.volume }} - {% endif %} - {% if release.issue != None %} - <tr itemprop="isPartOf" itemscope itemtype="http://schema.org/PublicationIssue"> - <td class="right aligned">Issue</td> - <td class="" itemprop="issueNumber">{{ release.issue }} - {% endif %} - {% if release.pages != None %} - <tr itemprop="isPartOf" itemscope itemtype="http://schema.org/PublicationIssue"> - <td class="right aligned">Page(s)</td> - <td class="" itemprop="pagination">{{ release.pages }} - {% endif %} - {% if release.release_date != None %} - <tr><td class="right aligned">Release Date</td> - <td class="">{{ release.release_date }} - {% elif release.release_year != None %} - <tr><td class="three wide right aligned">Release Year</td> - <td class="seven wide">{{ release.release_year }} - {% endif %} - {% if release.container != None and release.container.container_type != None %} - <tr><td class="right aligned">Container Type</td> - <td class="">{{ release.container.container_type }} - {% endif %} - {% if release.publisher != None %} - <tr><td class="three wide right aligned">Publisher</td> - <td class="seven wide">{{ release.publisher }} - {% endif %} - {% if release.language != None %} - <tr><td class="right aligned">Primary Language</td> - <td class=""><code>{{ release.language }}</code> - (<a href="https://www.loc.gov/standards/iso639-2/php/langcodes_name.php?iso_639_1={{ release.language }}">lookup</a>) - {% endif %} + {% endif %}. - </tbody> - </table> -</div> + <p> + {% if release.volume != None %} + Volume {{ release.volume }} + {%- if release.issue != None %}, {% endif %} + {% endif %} + {% if release.issue != None %} + Issue {{ release.issue}} + {% endif %} + {% if release.pages != None %} + {% if release.pages[0].isdigit() %}p{% endif -%} + {{ release.pages }} + {% endif %} + {% if release.release_year != None %} + ({{ release.release_year }}) + {% endif %} </div> +{% if release.abstracts != [] %} + <h3>Abstract</h3> + <p><span itemprop="description">{{ release.abstracts[0].content }}</span> + <br><small><i>In <code>{{ release.abstracts[0].mimetype }}</code> format</i></small> +{% endif %} + {% if entity.state == 'active' %} -<h3>Known Files and URLs</h3> +<h3>Archived Files and Locations</h3> {% if entity.files != [] %} <table class="ui compact fixed table"> -<!-- - <thead> - <tr><th>SHA-1 - <th>Size (bytes) - <th>File Type - <th>Links - </thead> ---> <tbody> {% for file in entity.files %} <tr><td>{% if file.mimetype != None %}{{ file.mimetype }} {% endif %} {% if file.size != None %}{{ file.size|filesizeformat }}{% endif %} <br><small><code><a href="/file/{{ file.ident }}"> - {% if file.sha1 != None %}sha1:{{ file.sha1[:20] + "..." }} - {% elif file.sha256!= None %}sha256:{{ file.md5[:20] + "..." }} - {% elif file.md5 != None %}md5:{{ file.md5[:20] + "..." }} - {% endif %} + file_{{ file.ident }} </a></code></small> <td class="single line"> {% for url in file.urls[:5] %} @@ -208,7 +158,7 @@ accessible version. <tbody> {% for fileset in entity.filesets %} <tr><td>{{ fileset.manifest|count }} files {{ fileset._total_size|filesizeformat }} - <br><small><code><a href="/fileset/{{ fileset.ident }}">fileset:{{ fileset.ident }}</a></code></small> + <br><small><code><a href="/fileset/{{ fileset.ident }}">fileset_{{ fileset.ident }}</a></code></small> <td class="single line"> {% for url in fileset.urls[:5] %} {% if url.rel == "dweb" %} @@ -234,7 +184,7 @@ accessible version. {% for webcapture in entity.webcaptures %} <tr><td><b><a href="{{ webcapture.original_url }}" style="color: black;">{{ webcapture.original_url }}</a></b> <br>{{ webcapture.timestamp.strftime("%Y-%m-%d %H:%M:%S") }} | {{ webcapture.cdx|count }} resources - <br><small><code><a href="/webcapture/{{ webcapture.ident }}">webcapture:{{ webcapture.ident }}</a></code></small> + <br><small><code><a href="/webcapture/{{ webcapture.ident }}">webcapture_{{ webcapture.ident }}</a></code></small> <td class="single line"> {% for url in webcapture.archive_urls[:5] %} <a href="{{ url.url }}{% if url.rel == "wayback" %}{{ webcapture._wayback_suffix }}{% endif %}">{{ url.url.split('/')[2] }}</a> ({{ url.rel }})<br> @@ -247,41 +197,42 @@ accessible version. </table> {% endif %} {% endif %} +</div> -</div> <div class="column" style="flex: 0 0 24em;"> -{% if entity.state == 'active' and entity._es and entity._es.best_pdf_url %} -<a href="{{ entity._es.best_pdf_url }}" class="ui top attached fluid huge green button"><i class="file pdf outline icon"></i>Read Full Text</a> +{% if entity.state == 'active' and entity._es and entity._es.ia_pdf_url %} + <a href="{{ entity._es.ia_pdf_url }}" class="ui top attached fluid huge black button" style="text-decoration: underline;"> + <i class="file pdf outline icon"></i>Read Archived PDF + </a> {% elif entity.state == 'active' and entity.webcaptures != [] and entity.webcaptures[0].archive_urls != [] and entity.webcaptures[0].archive_urls[0].rel == "wayback" %} -<a href="{{ entity.webcaptures[0].archive_urls[0].url }}{{ entity.webcaptures[0]._wayback_suffix }}" class="ui top attached fluid huge green button"><i class="file archive outline icon"></i>View Web Archive</a> -{% elif entity.state == 'active' %} -<span class="ui top attached fluid huge grey button"><i class="ban icon"></i>No Full Text Available</span> - -<a href="/release/{{ release.ident }}/save" class="ui attached fluid huge blue button"> - <i class="cloud download icon"></i>"Save Paper Now" - <div style="margin-top: 0.8em; font-size: smaller; text-align: left;"> - Know of a fulltext copy of on the public web? Submit a URL and we will archive it - </div> -</a> - -{# alternative SPN -<div class="ui segment attached"> - <center> - <a class="ui blue huge button" href="/release/{{ release.ident }}/save" title="save paper now">Save Paper Now</a> - </center> - <p style="margin-top: 0.5em;">Know of a fulltext copy on the public web? Submit a URL and we'll archive it -</div> -#} + <a href="{{ entity.webcaptures[0].archive_urls[0].url }}{{ entity.webcaptures[0]._wayback_suffix }}" class="ui fluid huge black button" style="text-decoration: underline;"> + <i class="university icon"></i>Visit Web Archive + </a> +{% endif %} -{# alternative SPN -<div class="ui segment attached yellow inverted accordion"> - <b><a href="/release/{{ release.ident }}/save" title="save paper now" style="color: black;">Save Paper Now</a></b> - <br>know of a fulltext copy on the public web? submit a URL and we'll archive it -</div> -#} +{% if entity.state == 'active' and entity._es %} + {% if entity._es.preservation == 'bright' %} + <div class="ui top attached fluid compact green inverted center aligned segment" style="padding: 0.5em; border-color: #5550; background-color: #2ca048;"> + <b>Archived</b> + </div> + {% elif entity._es.preservation == 'dark' %} + <div class="ui top attached fluid large green inverted center aligned segment" style="padding: 0.5em; border-color: #5550; background-color: ##6e7b71;"> + <b>"Dark" Archived</b> + </div> + {% else %} + <div class="ui top attached fluid large red inverted center aligned segment" style="padding: 0.5em; border-color: #5550; background-color: #b71818;"> + <b>Not Preserved</b> + </div> + <div class="ui segment attached"> + <a href="/release/{{ release.ident }}/save"> + <b><i class="cloud download icon"></i>Save Paper Now!</b> + </a> + <p>Know of a fulltext copy of on the public web? Submit a URL and we will archive it + </div> + {% endif %} {% endif %} {% if release.release_type or release.release_stage or release.release_year %} @@ -305,6 +256,10 @@ accessible version. {% if release.version %} <b>Version</b> <code>{{ release.version }}</code><br> {% endif %} + {% if release.language != None %} + <b>Language</b> <code>{{ release.language}}</code> + <sup><a href="https://www.loc.gov/standards/iso639-2/php/langcodes_name.php?iso_639_1={{ release.language }}">?</a></sup> + {% endif %} </div> {% endif %} @@ -357,7 +312,19 @@ accessible version. {% if release.container != None and release.container._es %} <div class="ui segment attached"> -<b>Container Metadata</b><br> +<b><a href="/container/{{ release.container.ident }}"> +{% if release.container.container_type == "journal" %} + Journal Metadata +{% elif release.container.container_type == "proceedings" %} + Proceedings Metadata +{% elif release.container.container_type == "book-series" %} + Book Series Metadata +{% elif release.container.container_type == "blog" %} + Blog Metadata +{% else %} + Container Metadata +{% endif %} +</a></b><br> {% if release.container._es.is_oa == True %} <i class="icon unlock orange"></i>Open Access Publication<br> {% endif %} @@ -370,7 +337,9 @@ accessible version. {% if release.container._es.in_road == True %} <i class="icon check green"></i> In <a href="http://road.issn.org/issn/{{ release.container.issnl }}">ISSN ROAD</a><br> {% elif release.container._es.in_road == False %} + {# skip 'not in ROAD' display, to reduce UI clutter <i class="icon times grey"></i> Not in <a href="https://road.issn.org">ISSN ROAD</a><br> + #} {% endif %} {% if release.container._es.any_kbart == True %} <i class="icon check green"></i> In <a href="https://keepers.issn.org/?q=api/search&search[]=MUST=allissn={{ release.container.issnl }}&search[]=MUST_EXIST=keepers">Keepers Registery</a><br> @@ -380,19 +349,18 @@ accessible version. {% if release.container.issnl != None %} <i class="icon linkify"></i>ISSN-L: <code>{{ release.container.issnl }}</code><br> {% endif %} - <a href="/container/{{ release.container.ident }}" title="container {{ release.container.ident }}"><i class="icon share"></i>Fatcat Entry</a> </div> {% endif %} -<div class="ui segment attached accordion"> +<div class="ui segment attached"> <b><a href="/work/{{ release.work_id }}" title="work {{ release.work_id }}">Work Entity</a></b> - <br>grouping other versions (eg, pre-print) and variants of this release + <br>access all versions, variants, and formats of this works (eg, pre-prints) </div> {% if release.state == "active" and release._can_citeproc %} <div class="ui segment attached accordion"> <div class="title" style="padding: 0px;"> - <i class="dropdown icon"></i><b>Cite This Release</b> + <i class="dropdown icon"></i><b>Cite This</b> </div> <div class="content"> <a href="/release/{{ release.ident }}.bib">BibTeX</a> diff --git a/python/fatcat_web/templates/search_macros.html b/python/fatcat_web/templates/search_macros.html index a207bfbc..cb917c5f 100644 --- a/python/fatcat_web/templates/search_macros.html +++ b/python/fatcat_web/templates/search_macros.html @@ -9,7 +9,7 @@ {% endif %} {{ found.offset + found.count_returned }} - out of {{ found.count_found }} results + out of {{ '{0:,}'.format(found.count_found) }} results </i> {%- endmacro %} @@ -28,7 +28,7 @@ {% endif %} <i>Showing results {{ found.offset }} — {{ found.offset + -found.count_returned }} out of {{ found.count_found }} results</i> +found.count_returned }} out of {{ '{0:,}'.format(found.count_found) }} results</i> {% if found.offset + found.limit < found.count_found and found.offset + found.limit < found.deep_page_limit %} <a href="{{ url_for(endpoint, q=query.q, offset=found.offset + found.limit) }}">Next »</a> diff --git a/python/fatcat_web/templates/webcapture_view.html b/python/fatcat_web/templates/webcapture_view.html index f2f689f3..b35ee0e2 100644 --- a/python/fatcat_web/templates/webcapture_view.html +++ b/python/fatcat_web/templates/webcapture_view.html @@ -8,7 +8,7 @@ <div class="ui stackable mobile reversed grid centered"> <div class="column" style="font-size: 16px; flex: 1;"> -<h3>Releases</h3> +<h3>Associated Releases</h3> {% if entity.releases != [] %} {{ entity_macros.release_list(entity.releases) }} {% else %} @@ -16,8 +16,7 @@ This Web Capture is not associated with any fatcat release. {% endif %} -<br> -<h3>Archive URLs</h3> +<h3>Public Archive URLs</h3> {% if webcapture.archive_urls != None %} <table class="ui very basic compact single line fixed table"> <tbody> @@ -42,7 +41,7 @@ No known public archive for this webcapture. {% endif %} -<h3>CDX Rows ({{ webcapture.cdx|count }})</h3> +<h3>Captured Resources ({{ webcapture.cdx|count }})</h3> {% if webcapture.cdx %} <div class="ui celled list"> {% for row in webcapture.cdx %} @@ -53,7 +52,7 @@ No known public archive for this webcapture. </div> <div style="margin-left: 1em;"> {{ row.timestamp.strftime("%Y-%m-%d %H:%M:%S") }} - {% if row.mimetype %}| {{ row.mimetype }} {% endif %} + {% if row.mimetype %}| <code style="font-size: smaller;">{{ row.mimetype }}</code> {% endif %} {% if row.size %}| {{ row.size|filesizeformat }} {% endif %} <br> <code><small style="color: #666;"> @@ -73,11 +72,13 @@ This web capture is empty (contains no resources). <div class="column" style="flex: 0 0 24em;"> {% if webcapture.state == 'active' and webcapture.archive_urls != [] and webcapture.archive_urls[0].rel == "wayback" %} -<a href="{{ webcapture.archive_urls[0].url }}{{ webcapture._wayback_suffix }}" class="ui top attached fluid huge green button"><i class="file archive outline icon"></i>View Web Archive</a> + <a href="{{ webcapture.archive_urls[0].url }}{{ webcapture._wayback_suffix }}" class="ui fluid huge black button" style="text-decoration: underline;"> + <i class="university icon"></i>View Web Archive + </a> {% endif %} {% if webcapture.timestamp != None %} -<div class="ui segment attached"> +<div class="ui segment top attached"> <p><b>Capture Time</b> {{ webcapture.timestamp.strftime("%Y-%m-%d %H:%M:%S") }} </div> {% endif %} |