696 lines
28 KiB
HTML
696 lines
28 KiB
HTML
<html lang="en">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<link rel="stylesheet" type="text/css" href="https://cdn.datatables.net/1.10.15/css/dataTables.bootstrap4.min.css"/>
|
||
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">
|
||
<style>
|
||
/* general */
|
||
body {
|
||
margin: 3em;
|
||
}
|
||
.tab-content {
|
||
margin-top: 2em;
|
||
}
|
||
|
||
table th {
|
||
width: auto !important;
|
||
}
|
||
code {
|
||
line-height: 1.5;
|
||
}
|
||
|
||
.location {
|
||
font-size:.8em;font-family:monospace;overflow-wrap:break-word
|
||
}
|
||
|
||
.snippet {
|
||
font-size:.8em;
|
||
}
|
||
.snippet code {
|
||
display: block;
|
||
font-size:1em;
|
||
font-family:monospace;overflow-wrap:break-word;
|
||
margin-top: 1em;
|
||
}
|
||
|
||
.tab-pane{
|
||
margin-top: 1.5em;
|
||
margin-left: 1em;
|
||
margin-bottom: 2em; /* useful for javascriptless (tab-less) linear display mode */
|
||
}
|
||
|
||
.pagenav {
|
||
font-style: italic;
|
||
font-size: small;
|
||
margin-top: 1em;
|
||
}
|
||
|
||
.sectionnav {
|
||
font-style: italic;
|
||
font-size: small;
|
||
margin-top: 1em;
|
||
margin-bottom: 2em;
|
||
}
|
||
/* metadata */
|
||
#metadata-table tr td:first-child {
|
||
font-family: 'Courier New';
|
||
font-weight: bold;
|
||
}
|
||
.metadata-name {
|
||
font-family: 'Courier New';
|
||
font-weight: bold;
|
||
}
|
||
.metadata-name:after {
|
||
content: ", ";
|
||
}
|
||
.metadata-name:last-child::after {
|
||
content: "";
|
||
}
|
||
#a11y-metadata {
|
||
margin-top: 1em;
|
||
}
|
||
#metadata-table_wrapper {
|
||
padding-left: 0 !important;
|
||
}
|
||
|
||
/* TOC outline */
|
||
.toc-h1:before,.toc-h2:before,.toc-h3:before,.toc-h4:before,.toc-h5:before,.toc-h6:before,.toc-missing{
|
||
display:inline-block;
|
||
height:1.5em;
|
||
padding:0 .4em;
|
||
background-color:#449d44;
|
||
border-radius:4px;
|
||
color:#fff;
|
||
font-size:.8em;
|
||
font-family:monospace;
|
||
margin:0 .5em 0 0;
|
||
}
|
||
|
||
.toc-h1:before{content:'h1'}
|
||
.toc-h2:before{content:'h2'}
|
||
.toc-h3:before{content:'h3'}
|
||
.toc-h4:before{content:'h4'}
|
||
.toc-h5:before{content:'h5'}
|
||
.toc-h6:before{content:'h6'}
|
||
.toc-missing{font-family:inherit;background-color:#c9302c}
|
||
|
||
#toc-outline ol, #html-outline ol {
|
||
list-style: disc;
|
||
}
|
||
|
||
/* images */
|
||
#images td {
|
||
text-align: center;
|
||
font-family: serif;
|
||
}
|
||
#images td.image{
|
||
/*text-align:center;*/
|
||
padding:.2em;
|
||
}
|
||
#images td.missing{
|
||
/*text-align:center;*/
|
||
color:#888;
|
||
font-style:italic;
|
||
}
|
||
#images td.alt {border:1px solid #ddd}
|
||
#images td.alt.missing{background-color:#f2dede}
|
||
#images td.alt,td.image.presentation+td.alt.missing{background-color:#dff0d8}
|
||
#images img {
|
||
max-height: 300px;
|
||
max-width: 300px;
|
||
}
|
||
|
||
/* violations */
|
||
#violations-summary-stats-table {
|
||
width: 30%;
|
||
}
|
||
#violations ul:not(.pagination) {
|
||
list-style-type: circle;
|
||
}
|
||
|
||
#filters select {
|
||
margin-left: 10px;
|
||
margin-right: 30px;
|
||
}
|
||
|
||
.filter-label {
|
||
text-transform: capitalize;
|
||
}
|
||
|
||
.engine {
|
||
font-style: italic;
|
||
}
|
||
.engine:before{content: '(via '}
|
||
.engine:after{content: ')'}
|
||
.css:before{content: 'CSS: '}
|
||
.cfi:before{content: 'CFI: '}
|
||
|
||
/* make the list and KB link the same padding */
|
||
td.details p{
|
||
padding-left: 40px;
|
||
}
|
||
|
||
span.critical, span.serious, span.moderate, span.minor {
|
||
display:inline-block;
|
||
height:1.5em;
|
||
padding: .4em;
|
||
border-radius:4px;
|
||
font-family:monospace;
|
||
font-weight: bold;
|
||
}
|
||
|
||
span.critical {
|
||
background-color: #9c2b2e;
|
||
color: #fff;
|
||
}
|
||
span.serious {
|
||
background-color: #ffa500;
|
||
color: #000;
|
||
}
|
||
span.moderate {
|
||
background-color: #7b5000;
|
||
color: #fff;
|
||
}
|
||
span.minor {
|
||
background-color: #ffff7f;
|
||
color: #000;
|
||
}
|
||
#message {
|
||
margin-left: 1em;
|
||
}
|
||
#violations-table_wrapper {
|
||
padding-left: 0 !important;
|
||
}
|
||
|
||
</style>
|
||
|
||
<title>EPUB Accessibility Report by DAISY Ace</title>
|
||
</head>
|
||
<body>
|
||
|
||
<header>
|
||
<noscript>
|
||
<div class="alert alert-info">Please enable javascript for best performance.</div>
|
||
</noscript>
|
||
|
||
<h1>EPUB Accessibility Report</h1>
|
||
<p class="font-italic">Generated by DAISY Ace (1.1.1) on 24/1/2020 15:10:26</p>
|
||
<p><span class="font-weight-bold">Title:</span> El creador y lo creado</p>
|
||
</header>
|
||
|
||
<nav>
|
||
<ul id="navlist" role="tablist">
|
||
<li class="nav-item"><a class="nav-link active" data-toggle="list" href="#violations" role="tab" aria-controls="violations" id="nav-violations">Violations</a></li>
|
||
<li class="nav-item"><a class="nav-link" data-toggle="list" href="#metadata" role="tab" aria-controls="metadata" id="nav-metadata">Metadata</a></li>
|
||
<li class="nav-item"><a class="nav-link" data-toggle="list" href="#outlines" role="tab" aria-controls="outlines" id="nav-outlines">Outlines</a></li>
|
||
<li class="nav-item"><a class="nav-link" data-toggle="list" href="#images" role="tab" aria-controls="images" id="nav-images">Images</a></li>
|
||
</ul>
|
||
</nav>
|
||
|
||
|
||
<!-- Tab panes -->
|
||
<div class="tab-content">
|
||
|
||
<!-- VIOLATIONS TAB -->
|
||
<div id="violations" role="tabpanel">
|
||
<h2>Violations</h2>
|
||
<p class="sectionnav">Go to: <a href="#summary_of_violations">Summary of violations</a> | <a href="#all-violations">All violations</a> </p>
|
||
|
||
<h3 id="summary_of_violations">Summary of violations</h3>
|
||
<table id="violations-summary-stats-table" class="table table-striped">
|
||
<caption>Violation count, by ruleset and severity.</caption>
|
||
<thead class="thead-inverse">
|
||
<tr>
|
||
<th></th>
|
||
<th scope="col">Critical</th>
|
||
<th scope="col">Serious</th>
|
||
<th scope="col">Moderate</th>
|
||
<th scope="col">Minor</th>
|
||
<th scope="col">Total</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<th scope="row">WCAG 2.0 A</th>
|
||
<td>0</td><td>0</td><td>1</td><td>0</td><td>1</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">WCAG 2.0 AA</th>
|
||
<td>0</td><td>0</td><td>0</td><td>0</td><td>0</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">EPUB</th>
|
||
<td>0</td><td>0</td><td>1</td><td>0</td><td>1</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">Best Practice</th>
|
||
<td>0</td><td>0</td><td>0</td><td>0</td><td>0</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">Other</th>
|
||
<td>0</td><td>0</td><td>0</td><td>0</td><td>0</td>
|
||
</tr>
|
||
<tr>
|
||
<th scope="row">Total</th>
|
||
<td>0</td><td>0</td><td>2</td><td>0</td><td>2</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<h3 id="all-violations">All violations</h3>
|
||
|
||
<div id="filters" class="d-none py-4">
|
||
<span class="filter-label">Impact</span>
|
||
<select name="impact" aria-label="impact">
|
||
<option value="all" selected>All</option>
|
||
<option value='moderate'>Moderate</option>
|
||
</select>
|
||
<span class="filter-label">Ruleset</span>
|
||
<select name="ruleset" aria-label="ruleset">
|
||
<option value="all" selected>All</option>
|
||
<option value='EPUB'>EPUB</option><option value='wcag2a'>WCAG 2.0 A</option>
|
||
</select>
|
||
<span class="filter-label">Rule</span>
|
||
<select name="rule" aria-label="rule">
|
||
<option value="all" selected>All</option>
|
||
<option value='metadata-accessibilityfeature-invalid'>metadata-accessibilityfeature-invalid</option><option value='aria-dpub-role-fallback'>aria-dpub-role-fallback</option>
|
||
</select>
|
||
<span class="filter-label">File</span>
|
||
<select name="file" aria-label="file">
|
||
<option value="all" selected>All</option>
|
||
<option value='OPS/content.opf'>OPS/content.opf</option><option value='xhtml/000-portada.xhtml'>xhtml/000-portada.xhtml</option>
|
||
</select>
|
||
<a href="#" onclick="resetFilters()" class="ml-4">Reset filters</a>
|
||
</div>
|
||
|
||
<table id="violations-table" class="table table-bordered">
|
||
<caption>Violations in the EPUB, with references to severity, guidelines and specific location of problem.</caption>
|
||
<thead class="thead-inverse">
|
||
<tr>
|
||
<th>Impact</th>
|
||
<th>Ruleset</th>
|
||
<th>Rule</th>
|
||
<th>Location</th>
|
||
<th>Details</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><span class='moderate'>Moderate</span></td>
|
||
<td><span class='ruleset'>EPUB</span></td>
|
||
<td>metadata-accessibilityfeature-invalid<br/><br/><span class='engine'>Ace</span></td>
|
||
<td><em>"El creador y lo creado"</em><br/><br/><code class='location'>OPS/content.opf</code></td><td class='details'>
|
||
<ul><li>'schema:accessibilityFeature' metadata must be set to one of the expected values</li></ul>
|
||
<p><a href='http://kb.daisy.org/publishing/docs/metadata/schema-org.html' target='_blank'>Learn more about: Schema.org Accessibility Metadata</a></p>
|
||
</td></tr><tr>
|
||
<td><span class='moderate'>Moderate</span></td>
|
||
<td><span class='ruleset'>WCAG 2.0 A</span></td>
|
||
<td>aria-dpub-role-fallback<br/><br/><span class='engine'>aXe</span></td>
|
||
<td><em>"Portada"</em><br/><br/><code class='location'>xhtml/000-portada.xhtml#epubcfi(/4/2)</code><br/><br/><div class='snippet'>Snippet:<code><section xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" epub:type="cover" role="doc-cover">
|
||
<img id="cover-image" class="forro" alt="Imagen de portada" src="../img/portada.png" />
|
||
</section></code></div></td><td class='details'>
|
||
<ul><li>Element’s implicit ARIA role is not a good fallback for the (unsupported) role</li></ul>
|
||
<p><a href='http://kb.daisy.org/publishing/' target='_blank'>Learn more about: (no specific entry)</a></p>
|
||
</td></tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
<p class="pagenav">Go to: <a href="#violations">Top of section</a> | <a href="#navlist">Page navigation</a></p>
|
||
</div>
|
||
|
||
<!-- METADATA TAB -->
|
||
<div id="metadata" role="tabpanel">
|
||
<h2>Metadata</h2>
|
||
|
||
<p class="sectionnav">Go to: <a href="#all-metadata">All Metadata</a> | <a href="#a11y-metadata">Accessibility Metadata</a> </p>
|
||
|
||
<h3 id="all-metadata">All Metadata</h3>
|
||
<table id="metadata-table" class="table table-bordered">
|
||
<caption>Publication metadata.</caption>
|
||
<thead class="thead-inverse">
|
||
<tr>
|
||
<th>Name</th>
|
||
<th>Value</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td>dc:language</td>
|
||
<td>es</td>
|
||
</tr>
|
||
<tr>
|
||
<td>dc:title</td>
|
||
<td>El creador y lo creado</td>
|
||
</tr>
|
||
<tr>
|
||
<td>dc:creator</td>
|
||
<td>Santa Ana Anguiano, Ramiro</td>
|
||
</tr>
|
||
<tr>
|
||
<td>dc:publisher</td>
|
||
<td>UNAM-FFyL</td>
|
||
</tr>
|
||
<tr>
|
||
<td>dc:description</td>
|
||
<td>Tesis para la obtención del grado de Maestro en Filosofía.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>dc:subject</td>
|
||
<td>Filosofía,Filosofía de la cultura,Propiedad intelectual,Bienes comunes</td>
|
||
</tr>
|
||
<tr>
|
||
<td>dc:identifier</td>
|
||
<td>1_0_0-4243de603c894ba39dad7a142126cdbf</td>
|
||
</tr>
|
||
<tr>
|
||
<td>schema:accessibilitySummary</td>
|
||
<td>Este EPUB está optimizado para personas con deficiencias visuales; cualquier observación por favor póngase en contacto.</td>
|
||
</tr>
|
||
<tr>
|
||
<td>schema:accessMode</td>
|
||
<td>textual,visual</td>
|
||
</tr>
|
||
<tr>
|
||
<td>schema:accessModeSufficient</td>
|
||
<td>textual, visual,textual</td>
|
||
</tr>
|
||
<tr>
|
||
<td>schema:accessibilityFeature</td>
|
||
<td>structuralNavigation,alternativeText,resizeText</td>
|
||
</tr>
|
||
<tr>
|
||
<td>schema:accessibilityAPI</td>
|
||
<td>ARIA</td>
|
||
</tr>
|
||
<tr>
|
||
<td>schema:accessibilityHazard</td>
|
||
<td>none</td>
|
||
</tr>
|
||
<tr>
|
||
<td>dcterms:modified</td>
|
||
<td>2020-01-24T15:01:20Z</td>
|
||
</tr>
|
||
<tr>
|
||
<td>rendition:layout</td>
|
||
<td>reflowable</td>
|
||
</tr>
|
||
<tr>
|
||
<td>ibooks:specified-fonts</td>
|
||
<td>true</td>
|
||
</tr>
|
||
|
||
</tbody>
|
||
</table>
|
||
|
||
<h3 id="a11y-metadata">Accessibility Metadata</h3>
|
||
|
||
<p>The following accessibility metadata is present:
|
||
<span class="metadata-name">schema:accessMode</span>
|
||
<span class="metadata-name">schema:accessibilityFeature</span>
|
||
<span class="metadata-name">schema:accessibilityHazard</span>
|
||
<span class="metadata-name">schema:accessibilitySummary</span>
|
||
<span class="metadata-name">schema:accessModeSufficient</span>
|
||
<span class="metadata-name">schema:accessibilityAPI</span>
|
||
</p>
|
||
|
||
<p>The following accessibility metadata is missing:
|
||
<span class="metadata-name">schema:accessibilityControl</span>
|
||
<span class="metadata-name">a11y:certifiedBy</span>
|
||
<span class="metadata-name">dcterms:conformsTo</span>
|
||
.
|
||
</p>
|
||
<p class="pagenav">Go to: <a href="#metadata">Top of section</a> | <a href="#navlist">Page navigation</a></p>
|
||
</div>
|
||
|
||
<!-- OUTLINES TAB -->
|
||
<div id="outlines" role="tabpanel">
|
||
<h2>Outlines</h2>
|
||
<p class="sectionnav">Go to: <a href="#toc-outline">TOC Outline</a> | <a href="#headings-outline">Headings Outline</a> | <a href="#html-outline">HTML Outline</a> </p>
|
||
|
||
<div class="row">
|
||
|
||
<div class="col-sm" id="toc-outline">
|
||
<h3>TOC Outline</h3>
|
||
<ol xmlns="http://www.w3.org/1999/xhtml">
|
||
<li>Portada</li>
|
||
<li>Agradecimientos</li>
|
||
<li>Lista de siglas y acrónimos</li>
|
||
<li>Introducción. Un tema filosófico desatendido</li>
|
||
<li>Teorías de la propiedad intelectual</li>
|
||
<li>Críticas de los bienes comunes</li>
|
||
<li>Puntos de encuentro</li>
|
||
<li>Conclusión. Temas a explorar</li>
|
||
<li>Bibliografía</li>
|
||
</ol>
|
||
</div>
|
||
|
||
<div class="col-sm" id="headings-outline">
|
||
<h3>Headings Outline</h3>
|
||
<ul><li><span class="toc-h1">El creador y lo creado</span><li><span class="toc-h1">Agradecimientos</span><li><span class="toc-h1">Lista de siglas y acrónimos</span><li><span class="toc-h1">Introducción. Un tema filosófico desatendido</span><ul><li><span class="toc-h2">Estructura de la investigación</span><li><span class="toc-h2">Tipos de propiedad intelectual</span></li></ul></li><li><span class="toc-h1">Teorías de la propiedad intelectual</span><ul><li><span class="toc-h2">1. En la búsqueda de una definición</span><li><span class="toc-h2">2. En la búsqueda de una teoría</span><li><span class="toc-h2">3. La teoría progresista: el utilitarismo de la legislación estadunidense</span><li><span class="toc-h2">4. La teoría personalista: Hegel, Kant y ¿más Hegel?</span><li><span class="toc-h2">5. La teoría laborista: la defensa de la propiedad de Locke</span><li><span class="toc-h2">6. La posibilidad de una teoría</span></li></ul></li><li><span class="toc-h1">Críticas de los bienes comunes</span><ul><li><span class="toc-h2">7. El familiar incómodo</span><li><span class="toc-h2">8. El resurgimiento: el software libre</span><li><span class="toc-h2">9. La bifurcación: el código abierto</span><li><span class="toc-h2">10. La amplificación: la cultura libre y el acceso abierto</span><li><span class="toc-h2">11. La crítica interna: el copyfarleft</span><li><span class="toc-h2">12. En la búsqueda de una definición</span></li></ul></li><li><span class="toc-h1">Puntos de encuentro</span><ul><li><span class="toc-h2">13. Del problema de la interpretación al de la teorización</span><li><span class="toc-h2">14. El pacto para una alianza ¿tripartita?</span><li><span class="toc-h2">15. El surgimiento de las esferas del distribuidor y del público</span><li><span class="toc-h2">16. El surgimiento, la transferencia y la individuación de la esfera del creador</span><li><span class="toc-h2">17. La implosión de las esferas</span><li><span class="toc-h2">18. Una teoría común de la producción cultural</span></li></ul></li><li><span class="toc-h1">Conclusión. Temas a explorar</span><li><span class="toc-h1">Bibliografía</span></li></ul>
|
||
</div>
|
||
|
||
<div class="col-sm" id="html-outline">
|
||
<h3>HTML Outline</h3>
|
||
<ol><li><ol><li><i>Untitled BODY</i><ol><li><i>Untitled SECTION</i></li></ol></li></ol></li><li><ol><li><i>Untitled BODY</i><ol><li>El creador y lo creado</li></ol></li></ol></li><li><ol><li><i>Untitled BODY</i><ol><li><i>Untitled SECTION</i></li></ol></li></ol></li><li><ol><li>Agradecimientos</li></ol></li><li><ol><li>Lista de siglas y acrónimos</li></ol></li><li><ol><li>Introducción. Un tema filosófico desatendido<ol><li>Estructura de la investigación</li><li>Tipos de propiedad intelectual</li></ol></li></ol></li><li><ol><li>Teorías de la propiedad intelectual<ol><li>1. En la búsqueda de una definición</li><li>2. En la búsqueda de una teoría</li><li>3. La teoría progresista: el utilitarismo de la legislación estadunidense</li><li>4. La teoría personalista: Hegel, Kant y ¿más Hegel?</li><li>5. La teoría laborista: la defensa de la propiedad de Locke</li><li>6. La posibilidad de una teoría</li></ol></li></ol></li><li><ol><li>Críticas de los bienes comunes<ol><li>7. El familiar incómodo</li><li>8. El resurgimiento: el software libre</li><li>9. La bifurcación: el código abierto</li><li>10. La amplificación: la cultura libre y el acceso abierto</li><li>11. La crítica interna: el copyfarleft</li><li>12. En la búsqueda de una definición</li></ol></li></ol></li><li><ol><li>Puntos de encuentro<ol><li>13. Del problema de la interpretación al de la teorización</li><li>14. El pacto para una alianza ¿tripartita?</li><li>15. El surgimiento de las esferas del distribuidor y del público</li><li>16. El surgimiento, la transferencia y la individuación de la esfera del creador</li><li>17. La implosión de las esferas</li><li>18. Una teoría común de la producción cultural</li></ol></li></ol></li><li><ol><li>Conclusión. Temas a explorar</li></ol></li><li><ol><li>Bibliografía</li></ol></li><li><ol><li><i>Untitled BODY</i><ol><li><i>Untitled SECTION</i></li></ol></li></ol></li></ol>
|
||
</div>
|
||
</div>
|
||
<p class="pagenav">Go to: <a href="#outlines">Top of section</a> | <a href="#navlist">Page navigation</a></p>
|
||
</div>
|
||
|
||
<!-- IMAGES TAB -->
|
||
<div id="images" role="tabpanel">
|
||
<h2>Images</h2>
|
||
<table id="image-table" class="table table-striped table-bordered">
|
||
<caption>Images in the EPUB, with their description</caption>
|
||
<thead class="thead-inverse">
|
||
<tr>
|
||
<th>Image</th>
|
||
<th><code>alt</code>
|
||
</th>
|
||
<th><code>aria-describedby</code>
|
||
</th>
|
||
<th><code>figcaption</code></th>
|
||
<th>Location</th>
|
||
<th>Role</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td class="image">
|
||
<a href="data/OPS/img/portada.png">
|
||
<img src = "data/OPS/img/portada.png"/>
|
||
</a>
|
||
</td>
|
||
|
||
<td>Imagen de portada</td>
|
||
|
||
<td class="missing">N/A</td>
|
||
|
||
<td class="missing">N/A</td>
|
||
|
||
<td class="location">xhtml/000-portada.xhtml#epubcfi(/4/2/2[cover-image])</td>
|
||
|
||
<td class="missing">N/A</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
<p class="pagenav">Go to: <a href="#images">Top of section</a> | <a href="#navlist">Page navigation</a></p>
|
||
</div>
|
||
|
||
</div> <!-- end div for tabs' contents -->
|
||
|
||
|
||
<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
|
||
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
|
||
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/js/bootstrap.min.js" integrity="sha384-alpBpkh1PFOepccYVYDB4do5UnbKysX5WZXm3XxPqe5iKTfUKjNkCk9SaVuEZflJ" crossorigin="anonymous"></script>
|
||
<script type="text/javascript" src="https://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js"></script>
|
||
<script type="text/javascript" src="https://cdn.datatables.net/1.10.15/js/dataTables.bootstrap4.min.js"></script>
|
||
|
||
<script type="text/javascript">
|
||
|
||
// https://datatables.net/reference/option/language
|
||
// https://datatables.net/examples/basic_init/language.html
|
||
// https://datatables.net/manual/i18n
|
||
const dataTableInit = {
|
||
"language": {
|
||
"decimal": "",
|
||
"emptyTable": 'No data available in table',
|
||
"info": 'Showing: _START_ - _END_ / _TOTAL_',
|
||
"infoEmpty": 'Showing: 0 - 0 / 0',
|
||
"infoFiltered": '(filtered from _MAX_ total entries)',
|
||
"infoPostFix": "",
|
||
"thousands": ",",
|
||
"lengthMenu": 'Display _MENU_ records per page',
|
||
"loadingRecords": 'Loading...',
|
||
"processing": 'Processing...',
|
||
"search": 'Search:',
|
||
"zeroRecords": 'No matching records found',
|
||
"paginate": {
|
||
"first": 'First',
|
||
"last": 'Last',
|
||
"next": 'Next',
|
||
"previous": 'Previous'
|
||
},
|
||
"aria": {
|
||
"sortAscending": ': activate to sort column ascending',
|
||
"sortDescending": ': activate to sort column descending'
|
||
}
|
||
}
|
||
};
|
||
|
||
// keep a flat list of the violations in memory for table filtering
|
||
var violations = [{"file":"OPS/content.opf","fileTitle":"El creador y lo creado","engine":"Ace","kburl":"http://kb.daisy.org/publishing/docs/metadata/schema-org.html","kbtitle":"Schema.org Accessibility Metadata","rule":"metadata-accessibilityfeature-invalid","desc":"'schema:accessibilityFeature' metadata must be set to one of the expected values","impact":"moderate","location":"OPS/content.opf","rulesetTags":["EPUB"],"applicableRulesetTag":"EPUB"},{"file":"xhtml/000-portada.xhtml","fileTitle":"Portada","engine":"aXe","kburl":"http://kb.daisy.org/publishing/","kbtitle":"(no specific entry)","rule":"aria-dpub-role-fallback","desc":"Element’s implicit ARIA role is not a good fallback for the (unsupported) role","pointer":{"cfi":["/4/2"],"css":["section"]},"impact":"moderate","location":"xhtml/000-portada.xhtml#epubcfi(/4/2)","rulesetTags":["cat.aria","wcag2a","wcag131"],"applicableRulesetTag":"wcag2a","html":"<section xmlns="http://www.w3.org/1999/xhtml" xmlns:epub="http://www.idpf.org/2007/ops" epub:type="cover" role="doc-cover">\n <img id="cover-image" class="forro" alt="Imagen de portada" src="../img/portada.png" />\n </section>"}];
|
||
|
||
// update the contents of the table to reflec the filtering
|
||
function updateTableContents(violationSubset) {
|
||
// anything else is 'other'
|
||
var rulesetTagLabels = {
|
||
'wcag2a': 'WCAG 2.0 A',
|
||
'wcag2aa': 'WCAG 2.0 AA',
|
||
'EPUB': 'EPUB',
|
||
'best-practice': 'Best Practice',
|
||
'other': 'Other'
|
||
};
|
||
|
||
$('#violations-table').dataTable().fnDestroy();
|
||
$("#message").remove();
|
||
if (violationSubset.length == 0) {
|
||
$("<p id='message'>No matching violations found.</p>").insertBefore("#violations .pagenav");
|
||
$("#violations-table").hide();
|
||
return;
|
||
}
|
||
|
||
$("#violations-table").show();
|
||
$("#filters").show();
|
||
|
||
var tablebody = $("#violations-table > tbody");
|
||
tablebody.empty();
|
||
|
||
violationSubset.forEach(function(violation) {
|
||
|
||
var tr = $("<tr></tr>");
|
||
var tdImpact = $("<td><span class='" + violation["impact"] + "'>" + violation["impact"] + "</span></td>");
|
||
var tdRuleset = $("<td><span class='ruleset'>" + rulesetTagLabels[violation["applicableRulesetTag"]] + "</span></td>");
|
||
var tdLocation = $("<td><em>\"" + violation["fileTitle"] + "\"</em><br/><br/><code class='location'>" + violation["location"] + "</code></td>");
|
||
if (violation.html) {
|
||
var tdSnippet = $('<br/><br/><div class=\'snippet\'>Snippet: <code>'+ violation.html.trim() + "</code></div>");
|
||
tdLocation.append(tdSnippet);
|
||
}
|
||
var tdRule = $("<td>" + violation["rule"] + "<br/><br/><span class='engine'>" + violation["engine"] + "</span></td>");
|
||
|
||
var desc = violation["desc"];
|
||
|
||
var detailsArr = desc.split("\n");
|
||
var tdDetails = $("<td class='details'></td>");
|
||
|
||
var ul = $("<ul></ul>");
|
||
tdDetails.append(ul);
|
||
detailsArr.forEach(function(item) {
|
||
if (item != "") {
|
||
var elm = $("<li></li>");
|
||
elm.text(decodeEntities(item));
|
||
ul.append(elm);
|
||
}
|
||
});
|
||
var link = $("<p><a href='"
|
||
+ violation["kburl"]
|
||
+ '\' target=\'_blank\'>Learn more about: ' + violation["kbtitle"] + "</a></p>");
|
||
tdDetails.append(link);
|
||
|
||
tr.append(tdImpact);
|
||
tr.append(tdRuleset);
|
||
tr.append(tdRule);
|
||
tr.append(tdLocation);
|
||
tr.append(tdDetails);
|
||
tablebody.append(tr);
|
||
});
|
||
|
||
$('#violations-table').DataTable(dataTableInit);
|
||
}
|
||
|
||
function filterSelected() {
|
||
var filters = [];
|
||
$("#filters select").each(function(idx, elm) {
|
||
$(elm).children("option").each(function (idx, optElm) {
|
||
if (optElm.selected) {
|
||
filters[elm.name] = optElm.value;
|
||
}
|
||
});
|
||
});
|
||
var filteredData = filterViolations(filters);
|
||
updateTableContents(filteredData, true);
|
||
}
|
||
|
||
// expects:
|
||
// {"rule": "all", "impact": "serious", "file": "p1.xhtml"}
|
||
function filterViolations(filters) {
|
||
var filteredList = [];
|
||
violations.forEach(function(item) {
|
||
if (
|
||
(filters["rule"] == "all" || item["rule"] === filters["rule"])
|
||
&&
|
||
(filters["impact"] == "all" || item["impact"] === filters["impact"])
|
||
&&
|
||
(filters["file"] == "all" || item["file"] === filters["file"])
|
||
&&
|
||
(filters["ruleset"] == "all" || item["applicableRulesetTag"] === filters["ruleset"])
|
||
)
|
||
{
|
||
filteredList.push(item);
|
||
}
|
||
});
|
||
return filteredList;
|
||
}
|
||
|
||
function resetFilters() {
|
||
$("#filters select").each(function(idx, elm) {
|
||
$(elm).children("option").each(function (idx, optElm) {
|
||
optElm.selected = optElm.value == "all";
|
||
});
|
||
});
|
||
filterSelected();
|
||
}
|
||
|
||
function decodeEntities(text) {
|
||
// The entities tend to appear in violation descriptions, and there are just a few named ones involved
|
||
var namedEntities = {
|
||
"<": "<",
|
||
">": ">",
|
||
""": "\"",
|
||
" ": " "
|
||
};
|
||
// process entities
|
||
var str = text.replace(/&#(\d+);/g, function(match, dec) {
|
||
return String.fromCharCode(dec);
|
||
});
|
||
|
||
//process named entities
|
||
Object.keys(namedEntities).forEach(k => {
|
||
str = str.replace(new RegExp(k, 'g'), namedEntities[k]);
|
||
});
|
||
return str;
|
||
}
|
||
|
||
// certain classes need to be added to elements if we're using javascript in the browser
|
||
function prepareForJS() {
|
||
$('#filters').removeClass('d-none');
|
||
$('#navlist').addClass('nav-tabs nav');
|
||
$('#violations').addClass('tab-pane active');
|
||
$('#metadata').addClass('tab-pane');
|
||
$('#outlines').addClass('tab-pane');
|
||
$('#images').addClass('tab-pane');
|
||
}
|
||
$(document).ready(function() {
|
||
prepareForJS();
|
||
$('#metadata-table').DataTable(dataTableInit);
|
||
//updateTableContents(violations, false);
|
||
$('#violations-table').DataTable(dataTableInit);
|
||
$('#filters > select').change(filterSelected);
|
||
});
|
||
|
||
</script>
|
||
|
||
|
||
</body>
|
||
</html>
|