Commit 771a3874 authored by Sebastien Moretti's avatar Sebastien Moretti

Fix webhint security issue: External links disown opener

parent 0b06febb
......@@ -139,7 +139,7 @@ Example:
```java
//in a HTML view
this.writeln("<h1>Bgee: Gene Expression Evolution</h1>");
this.writeln("<a href='http://www.isb-sib.ch/' target='_blank' "
this.writeln("<a href='http://www.isb-sib.ch/' target='_blank' rel='noopener noreferrer' "
+ "title='Link to the SIB Swiss Institute of Bioinformatics'>SIB</a>");
//in a JSON view
......
......@@ -29,10 +29,10 @@ public class HtmlAboutDisplay extends HtmlParentDisplay implements AboutDisplay
/**
* Default constructor.
*
* @param response A {@code HttpServletResponse} that will be used to display the
* @param response A {@code HttpServletResponse} that will be used to display the
* page to the client.
* @param requestParameters A {@code RequestParameters} handling the parameters of the
* current request, to determine the requested displayType,
* @param requestParameters A {@code RequestParameters} handling the parameters of the
* current request, to determine the requested displayType,
* and for display purposes.
* @param prop A {@code BgeeProperties} instance that contains the properties
* to use.
......@@ -48,7 +48,7 @@ public class HtmlAboutDisplay extends HtmlParentDisplay implements AboutDisplay
@Override
public void displayAboutPage() {
log.entry();
RequestParameters urlDownloadCallsGenerator = this.getNewRequestParameters();
urlDownloadCallsGenerator.setPage(RequestParameters.PAGE_DOWNLOAD);
urlDownloadCallsGenerator.setAction(RequestParameters.ACTION_DOWLOAD_CALL_FILES);
......@@ -94,25 +94,25 @@ public class HtmlAboutDisplay extends HtmlParentDisplay implements AboutDisplay
+ "integrated along with information of gene orthology, and of homology "
+ "between organs. This allows comparisons of expression patterns "
+ "between species.</p>");
this.writeln("<p>Data can be browsed through <a href='" + urlGeneSearchGenerator.getRequestURL() +
"'>gene search</a> or <a href='" + urlTopAnatGenerator.getRequestURL() +
"'>expression enrichment analysis</a>. It is also possible to download <a href='" +
urlDownloadCallsGenerator.getRequestURL() + "'>gene expression calls</a>, <a href='" +
this.writeln("<p>Data can be browsed through <a href='" + urlGeneSearchGenerator.getRequestURL() +
"'>gene search</a> or <a href='" + urlTopAnatGenerator.getRequestURL() +
"'>expression enrichment analysis</a>. It is also possible to download <a href='" +
urlDownloadCallsGenerator.getRequestURL() + "'>gene expression calls</a>, <a href='" +
urlDownloadProcsGenerator.getRequestURL() + "'>processed expression values</a>, or " +
"<a href='" + urlDownloadMysqlGenerator.getRequestURL() + "'>MySQL dumps</a>.</p>");
this.writeln("<p>More information is provided in the <a href='" +
this.writeln("<p>More information is provided in the <a href='" +
urlDocumentationGenerator.getRequestURL() + "'>documentation</a>.</p>");
this.writeln("<h2>Who are we?</h2>");
this.writeln("<p>Bgee is developed by the " +
"<a href='http://bioinfo.unil.ch' title='External link to the Robinson-Rechavi " +
"group webpage' target='_blank'>Evolutionary Bioinformatics group</a>, part of " +
"the <a href='https://www.sib.swiss/' title='External link to SIB' target='_blank'>" +
"group webpage' target='_blank' rel='noopener noreferrer'>Evolutionary Bioinformatics group</a>, part of " +
"the <a href='https://www.sib.swiss/' title='External link to SIB' target='_blank' rel='noopener noreferrer'>" +
"SIB Swiss Institute of Bioinformatics</a>, at the "
+ "<a href='http://www.unil.ch/central/en/home.html' title='External link to UNIL' "
+ "target='_blank'>University of Lausanne</a>.</p>" +
+ "target='_blank' rel='noopener noreferrer'>University of Lausanne</a>.</p>" +
"<p>Our main interest is in the evolution of animal genomes in the context of " +
"organismal function and development. We have special interests in the early " +
"evolution of chordates and fishes. We have the aim of producing a database "
......@@ -131,7 +131,7 @@ public class HtmlAboutDisplay extends HtmlParentDisplay implements AboutDisplay
+ "<br><em>in</em> " + this.getPeriodical("DILS: Data Integration in Life Sciences")
+ " <strong>Lecture Notes in Computer Science</strong>. "
+ "5109:124-131. [<a href='http://www.springerlink.com/content/92q428161616w8r5/' "
+ "title='Bgee paper in LNCS' target='_blank' property='schema:url'>url</a>] "
+ "title='Bgee paper in LNCS' target='_blank' rel='noopener noreferrer' property='schema:url'>url</a>] "
+ "<a href='ftp://ftp.bgee.org/general/citation01.ris' property='schema:sameAs'>RIS</a></li>");
this.writeln("<li typeof='schema:ScholarlyArticle'>For UBERON: "
+ "<br>" + this.getAuthors(Arrays.asList("Haendel MA", "Balhoff JP", "Bastian FB",
......@@ -140,34 +140,34 @@ public class HtmlAboutDisplay extends HtmlParentDisplay implements AboutDisplay
"Robinson-Rechavi M", "Sereno PC", "Mungall CJ"))
+ "<br>" + this.getTitle("Unification of multi-species vertebrate anatomy ontologies for comparative biology in Uberon")
+ "<br><em>in</em> " + this.getPeriodical("J Biomed Semantics") + " (2014): 5:21. "
+ "[<a target='_blank' href='https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4089931/' "
+ "[<a target='_blank' rel='noopener noreferrer' href='https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4089931/' "
+ "title='Unification of multi-species vertebrate anatomy ontologies for comparative biology in Uberon'>url</a>] "
+ "<a href='ftp://ftp.bgee.org/general/citation04.ris'>RIS</a></li>");
this.writeln("<li typeof='schema:ScholarlyArticle'>For the use of the BgeeDB R package: "
+ "<br>" + this.getAuthors(Arrays.asList("Komljenovic A", "Roux J", "Wollbrett J",
"Robinson-Rechavi M", "Bastian F"))
"Robinson-Rechavi M", "Bastian F"))
+ "<br>" + this.getTitle("BgeeDB, an R package for retrieval of curated expression datasets and "
+ "for gene list enrichment tests")
+ "<br><em>in</em> " + this.getPeriodical("F1000Research") + " 2018, 5:2748. "
+ "[<a target='_blank' href='https://f1000research.com/articles/5-2748/v2' "
+ "[<a target='_blank' rel='noopener noreferrer' href='https://f1000research.com/articles/5-2748/v2' "
+ "title='BgeeDB, an R package for retrieval of curated expression datasets and "
+ "for gene list enrichment tests' property='schema:url'>url</a>] "
+ "<a href='ftp://ftp.bgee.org/general/citation05.ris' property='schema:sameAs'>RIS</a></li>");
this.writeln("</ul>");
this.writeln("<h2>Which license did we choose?</h2>");
this.writeln("<p>" +
" To the extent possible under law, Bgee team has waived all copyright and related " +
" or neighboring rights to Bgee project. This work is published under the " +
" <a href='" + LICENCE_CC0_URL + "' target='_blank'>" +
" <a href='" + LICENCE_CC0_URL + "' target='_blank' rel='noopener noreferrer'>" +
" Creative Commons Zero license (CC0)</a> from Switzerland. " +
" Although CC0 doesn’t legally require users of the data to cite the source, " +
" if you intend to use data from Bgee, it would be nice to cite us." +
"</p>" +
"<p>" +
" <a href='" + LICENCE_CC0_URL + "' target='_blank'>" +
" <img src='" + this.prop.getBgeeRootDirectory() +
" <a href='" + LICENCE_CC0_URL + "' target='_blank' rel='noopener noreferrer'>" +
" <img src='" + this.prop.getBgeeRootDirectory() +
this.prop.getImagesRootDirectory() + "cc-zero-large.png' alt='CC0' />" +
" </a>" +
"</p>" +
......@@ -182,13 +182,13 @@ public class HtmlAboutDisplay extends HtmlParentDisplay implements AboutDisplay
"<a href='" + urlPrivacyPolicy.getRequestURL() + "'>Bgee privacy notice</a></p>");
this.writeln("<h2>More</h2>");
this.writeln("<p>Our pipeline source code, as well as our curation and ontology resources "
+ "can be browsed on <a title='External link to BgeeDB on GitHub' "
+ "href='" + BGEE_GITHUB_URL + "' target='_blank'>our GitHub page</a>.</p>");
+ "href='" + BGEE_GITHUB_URL + "' target='_blank' rel='noopener noreferrer'>our GitHub page</a>.</p>");
this.writeln("<p>More information about data analyses and database content is available " +
"in the <a href='" + urlDocumentationGenerator.getRequestURL() +
"in the <a href='" + urlDocumentationGenerator.getRequestURL() +
"'>documentation</a>.</p>");
this.writeln("</div>"); // close specific class
......@@ -229,9 +229,10 @@ public class HtmlAboutDisplay extends HtmlParentDisplay implements AboutDisplay
protected void includeCss() {
log.entry();
super.includeCss();
//If you ever add new files, you need to edit bgee-webapp/pom.xml
//If you ever add new files, you need to edit bgee-webapp/pom.xml
//to correctly merge/minify them.
this.includeCss("documentation.css");
log.exit();
}
}
......@@ -89,7 +89,7 @@ public class HtmlAnatomicalSimilarityDisplay extends HtmlParentDisplay
this.writeln("<p>Retrieve anatomical homologies from a list of species and a list of Uberon IDs. "
+ "Retrieve Uberon IDs from organ names <a href='https://www.ebi.ac.uk/ols/ontologies/uberon' "
+ "title='Retrieve Uberon IDs from organ names' class='external_link' "
+ "target='_blank'>here</a>.</p>");
+ "target='_blank' rel='noopener noreferrer'>here</a>.</p>");
this.writeln("</div>");
......
......@@ -56,28 +56,28 @@ public class HtmlCollaborationDisplay extends HtmlParentDisplay implements Colla
this.writeln("<h2>BioSODA</h2>");
this.writeln("<p><a target='_blank' title='BioSODA project description' href='" +
this.writeln("<p><a target='_blank' rel='noopener noreferrer' title='BioSODA project description' href='" +
"https://www.zhaw.ch/no_cache/en/research/research-database/project-detailview/projektid/1493/'>" +
"BioSODA project</a> aims at enabling sophisticated semantic queries across large, " +
"decentralized and heterogeneous databases via an intuitive interface. " +
"The system will enable scientists, without prior training, to perform powerful " +
"joint queries across resources in ways that cannot be anticipated and " +
"therefore goes far and above the query functionality of specialized knowledge bases. " +
"It is supported by <a href='http://www.nfp75.ch/en' target='_blank' " +
"It is supported by <a href='http://www.nfp75.ch/en' target='_blank' rel='noopener noreferrer' " +
"title='NFP75 Big Data website'>NFP75 'Big Data'</a>.<p>");
this.writeln("<p>For this project, we created a sub-database of Bgee called " + BGEE_LITE_NAME +
". The MySQL dump is available on <a target='_blank' title='Download the dump' href='" +
". The MySQL dump is available on <a target='_blank' rel='noopener noreferrer' title='Download the dump' href='" +
this.prop.getFTPRootDirectory() +"sql_lite_dump.tar.gz'>Bgee FTP</a>. " +
"You can see the description of " + BGEE_LITE_NAME + " in <a title='" + BGEE_LITE_NAME +
" description' href='" + DEVELOP_BGEE_PIPELINE_GITHUB_URL + "/pipeline/dblite_creation" +
"#information-about-the-bgee-lite-database' target='_blank'>" +
"#information-about-the-bgee-lite-database' target='_blank' rel='noopener noreferrer'>" +
"Bgee pipeline documentation</a><p>");
this.writeln("<p>BioSODA uses the " + BGEE_LITE_NAME + " relational database to expose a " +
"Bgee SPARQL endpoint reachable through the following URL: " +
"<span class='copyable-url'>http://biosoda.expasy.org:8080/rdf4j-server/repositories/bgeelight</span>. " +
"In the context of this project, the <a href='http://biosoda.expasy.org' target='_blank'>" +
"In the context of this project, the <a href='http://biosoda.expasy.org' target='_blank' rel='noopener noreferrer'>" +
"BioQuery web application</a> provides a user-friendly interface to query " +
BGEE_LITE_NAME + " database based on the SPARQL query language.<p>");
......@@ -86,7 +86,7 @@ public class HtmlCollaborationDisplay extends HtmlParentDisplay implements Colla
this.writeln("<h2>OMA</h2>");
this.writeln("<p>The <a href='https://omabrowser.org/oma/home/' target='_blank'>OMA " +
this.writeln("<p>The <a href='https://omabrowser.org/oma/home/' target='_blank' rel='noopener noreferrer'>OMA " +
"(Orthologous MAtrix) project</a> is a method and database " +
"for the inference of orthologs among complete genomes.<p>");
......@@ -101,17 +101,17 @@ public class HtmlCollaborationDisplay extends HtmlParentDisplay implements Colla
this.writeln("<h2>OncoMX</h2>");
this.writeln("<p><a href='https://www.oncomx.org/' target='_blank'>OncoMX</a> is " +
this.writeln("<p><a href='https://www.oncomx.org/' target='_blank' rel='noopener noreferrer'>OncoMX</a> is " +
"a knowledgebase of unified cancer genomics data from integrated mutation, " +
"expression, literature, and biomarker databases, accessible through web portal. " +
"It is supported by <a href='https://www.cancer.gov/' target='_blank'>NIH NCI</a>.<p>");
"It is supported by <a href='https://www.cancer.gov/' target='_blank' rel='noopener noreferrer'>NIH NCI</a>.<p>");
this.writeln("<p>For this project, we generated files containing a subset of calls of " +
"presence/absence of expression with expression level categories specific to OncoMX. " +
"Files are available on <a href='" + this.prop.getFTPRootDirectory() +
"/collaboration/oncoMX/'>Bgee FTP</a>. You can see the description of these files in " +
"<a href='" + DEVELOP_BGEE_PIPELINE_GITHUB_URL + "/pipeline/collaboration/oncoMX" +
"#information-about-the-files-generated-for-oncomx' target='_blank'>" +
"#information-about-the-files-generated-for-oncomx' target='_blank' rel='noopener noreferrer'>" +
"Bgee pipeline documentation</a><p>");
this.writeln("</div>"); // close CENTERED_ELEMENT_CLASS
......@@ -132,3 +132,4 @@ public class HtmlCollaborationDisplay extends HtmlParentDisplay implements Colla
log.exit();
}
}
......@@ -618,7 +618,7 @@ public class HtmlDocumentationCallFile extends HtmlDocumentationDownloadFile {
log.entry();
return log.exit("<p>Unique identifier of the OMA gene orthology group. Note that "
+ "these identifiers are not stable between releases, and cannot be used "
+ "to retrieve data from <a target='_blank' "
+ "to retrieve data from <a target='_blank' rel='noopener noreferrer' "
+ "href='http://omabrowser.org/oma/hogs/' title='External link to OMA browser'>"
+ "the OMA browser</a>. They are provided solely to group data "
+ "from orthologous genes belonging to a same orthology group. "
......@@ -1793,7 +1793,7 @@ public class HtmlDocumentationCallFile extends HtmlDocumentationDownloadFile {
+ "derived from an organ existing before the divergence of the species compared. "
+ "This requires careful annotations of the homology history of animal anatomy. "
+ "These annotations are described in a separate project maintained "
+ "by the Bgee team, see <a target='_blank' "
+ "by the Bgee team, see <a target='_blank' rel='noopener noreferrer' "
+ "href='" + BGEE_GITHUB_URL + "/anatomical-similarity-annotations/' "
+ "title='See anatomical-similarity-annotations project on GitHub'>"
+ "homology annotation project on GitHub</a>. <br />"
......@@ -1810,7 +1810,7 @@ public class HtmlDocumentationCallFile extends HtmlDocumentationDownloadFile {
+ "than the LCA would be discarded, such as the annotation to the \"forelimb\" "
+ "structure (UBERON:0002102), homologous in the <i>Tetrapoda</i> lineage.</li> "
+ "<li><span class='list_element_title'>orthology of genes</span>: relations of "
+ "orthology between genes are retrieved using <a target='_blank' "
+ "orthology between genes are retrieved using <a target='_blank' rel='noopener noreferrer' "
+ "href='http://omabrowser.org/oma/hogs/' title='External link to OMA browser'>"
+ "OMA</a>; when comparing several species, "
+ "Bgee identifies their Least Common Ancestor (LCA), and retrieve genes "
......@@ -3323,13 +3323,13 @@ public class HtmlDocumentationCallFile extends HtmlDocumentationDownloadFile {
+ "_col21'>" + ANAT_HOMOLOGY_CIO_ID_COL_NAME
+ " (column 21)</h5>");
this.writeln("<p>Unique identifier from the "
+ "<a target='_blank' title='External link to CIO in OBO' "
+ "<a target='_blank' rel='noopener noreferrer' title='External link to CIO in OBO' "
+ "href='" + BGEE_GITHUB_URL + "/confidence-information-ontology/blob/master/src/ontology/cio-simple.obo'>"
+ "Confidence Information Ontology</a>, providing the confidence "
+ "in the annotation of homology of anatomical entities defined in <code>"
+ MULTI_ANAT_ENTITY_IDS_COL_NAME + "</code> (column 4). This ontology is an attempt "
+ "to provide a mean to capture the confidence in annotations. "
+ "See <a target='_blank' title='External link to CIO project' "
+ "See <a target='_blank' rel='noopener noreferrer' title='External link to CIO project' "
+ "href='" + BGEE_GITHUB_URL + "/confidence-information-ontology'>"
+ "project home</a> for more details.</p>");
this.writeln("<h5 id='" + RequestParameters.HASH_DOC_CALL_MULTI_DIFF_COMPLETE
......
......@@ -70,7 +70,7 @@ public class HtmlDocumentationDataSets extends HtmlDocumentationDownloadFile {
+ "<p>In addition to the continuous growth of transcriptomics datasets, "
+ "some specific projects produce large amounts of data, generated and accessible "
+ "in a consistent manner, as, notably, "
+ "the <a href='https://www.gtexportal.org/home/' title='GTEx portal' target='_blank'>" +
+ "the <a href='https://www.gtexportal.org/home/' title='GTEx portal' target='_blank' rel='noopener noreferrer'>" +
"GTEx project</a>. The GTEx project aims at building a comprehensive resource for tissue-specific "
+ "gene expression in human. Here we describe how this dataset was integrated into Bgee.</p></div>");
......@@ -94,7 +94,7 @@ public class HtmlDocumentationDataSets extends HtmlDocumentationDownloadFile {
"consistently with all other healthy RNA-seq from human and other species. " +
"These data are being made available both through the website, " +
"and through <a href='https://bioconductor.org/packages/release/bioc/html/BgeeDB.html' " +
"class='external_link' target='_blank'>BgeeDB R package</a> " +
"class='external_link' target='_blank' rel='noopener noreferrer'>BgeeDB R package</a> " +
"(with sensitive information hidden).</p>");
this.writeln("</div>");
......@@ -122,7 +122,7 @@ public class HtmlDocumentationDataSets extends HtmlDocumentationDownloadFile {
this.writeln("<h3>GTEx data using BgeeDB R package</h3>");
this.writeln("<div class='doc_content'>");
this.writeln("<p>More information and examples can be found on the <a href='https://bioconductor.org/packages/BgeeDB/' "
+ "title='Link to BgeeDB on Bioconductor' target='_blank'>BgeeDB R package page</a>.</p>");
+ "title='Link to BgeeDB on Bioconductor' target='_blank' rel='noopener noreferrer'>BgeeDB R package page</a>.</p>");
this.writeln("<ul>");
this.writeln(" <li>Annotations can be retrieved from RNA-Seq human experiments/libraries " +
"information. Experiment ID of GTEx is 'SRP012682'.");
......
......@@ -164,10 +164,10 @@ public class HtmlDocumentationRefExprFile extends HtmlDocumentationDownloadFile
this.writeln("<h2 id='single'>Affymetrix data download files</h2>");
this.writeln("<div class='doc_content'>"
+ "<p>Affymetrix data used in Bgee are retrieved from <a target='_blank' "
+ "<p>Affymetrix data used in Bgee are retrieved from <a target='_blank' rel='noopener noreferrer' "
+ "title='External link to ArrayExpress' "
+ "href='https://www.ebi.ac.uk/arrayexpress/'>ArrayExpress</a> and "
+ "<a target='_blank' title='External link to GEO' "
+ "<a target='_blank' rel='noopener noreferrer' title='External link to GEO' "
+ "href='https://www.ncbi.nlm.nih.gov/geo/'>GEO</a>. They are annotated "
+ "to anatomical and developmental stage ontologies, filtered by quality controls "
+ "and analyzed to produce expression data. Only \"normal\" "
......
......@@ -67,7 +67,7 @@ public class HtmlDocumentationTopAnat extends HtmlDocumentationDownloadFile {
+ "rather than their GO functional annotations.</p>");
this.writeln("<p>See also our "
+ "<a href='https://bgeedb.wordpress.com/category/topanat/' "
+ "title='Link to the Bgee Wordpress blog' target='_blank'>blog post</a> "
+ "title='Link to the Bgee Wordpress blog' target='_blank' rel='noopener noreferrer'>blog post</a> "
+ "about TopAnat for more information.</p>");
this.writeln("<p><strong>Please note that the results can be slow to compute</strong>, "
+ "typically from 5 to 30 minutes, depending on the amount of data to process.</p>");
......@@ -119,7 +119,7 @@ public class HtmlDocumentationTopAnat extends HtmlDocumentationDownloadFile {
this.writeln("<h2>More information</h2>");
this.writeln("<p>TopAnat is based on "
+ "<a href='http://www.bioconductor.org/packages/release/bioc/html/topGO.html' "
+ "title='topGO package in Bioconductor' target='_blank'>topGO</a>. "
+ "title='topGO package in Bioconductor' target='_blank' rel='noopener noreferrer'>topGO</a>. "
+ "Adaptation of topGO courtesy of Adrian Alexa.</p>");
log.exit();
......
......@@ -320,7 +320,7 @@ public class HtmlDownloadDisplay extends HtmlParentDisplay implements DownloadDi
}
intro.append(" It is possible to download these data directly into "
+ "R using our <a href='https://bioconductor.org/packages/release/bioc/html/BgeeDB.html' "
+ "class='external_link' target='_blank'>R package</a>.");
+ "class='external_link' target='_blank' rel='noopener noreferrer'>R package</a>.");
intro.append(" See also ");
if (pageType == DownloadPageType.EXPR_CALLS) {
......@@ -337,7 +337,7 @@ public class HtmlDownloadDisplay extends HtmlParentDisplay implements DownloadDi
.append("' title='See Bgee gene expression calls'>gene expression calls</a>");
}
intro.append(". All data are available under the " +
"<a rel='license' href='" + LICENCE_CC0_URL + "' target='_blank'>" +
"<a rel='license' href='" + LICENCE_CC0_URL + "' target='_blank' rel='noopener noreferrer'>" +
" Creative Commons Zero license (CC0)</a>.");
intro.append("</p>");
// FIXME enable link to statistics TSV file
......
......@@ -99,20 +99,20 @@ public class HtmlFaqDisplay extends HtmlParentDisplay implements FaqDisplay {
"<p>We use as input one specific developmental stage ontology for each species, " +
"and we then merge all these species-specific developmental ontologies into " +
"one single multi-species ontology. To do that, we use broad developmental stages " +
"described in the <a href='http://uberon.org' class='external_link' target='_blank'>" +
"described in the <a href='http://uberon.org' class='external_link' target='_blank' rel='noopener noreferrer'>" +
"Uberon ontology</a>: either we map some of the species-specific stages " +
"to these Uberon broad developmental stages (i.e., equivalent classes), " +
"or we attach some of the species-specific stages as children of " +
"these Uberon developmental stages (i.e., subclasses).</p>" +
"<p>You can find all 'source' species-specific ontologies we develop " +
" <a href='https://github.com/obophenotype/developmental-stage-ontologies/tree/master/src' " +
" class='external_link' target='_blank'>here</a>. " +
" class='external_link' target='_blank' rel='noopener noreferrer'>here</a>. " +
" For <i>C. elegans</i>, we rely on the " +
" <a href='http://www.obofoundry.org/ontology/wbls.html' class='external_link' target='_blank'>" +
" <a href='http://www.obofoundry.org/ontology/wbls.html' class='external_link' target='_blank' rel='noopener noreferrer'>" +
" WBls ontology</a> developed by WormBase " +
" (we also rely on external ontologies for fly, zebrafish, and xenopus).</p>" +
"<p>You can find the ontology merging all these species-specific ontologies with Uberon " +
" <a href='https://github.com/obophenotype/developmental-stage-ontologies/blob/master/external/bgee/dev_stage_ontology.obo' class='external_link' target='_blank'>" +
" <a href='https://github.com/obophenotype/developmental-stage-ontologies/blob/master/external/bgee/dev_stage_ontology.obo' class='external_link' target='_blank' rel='noopener noreferrer'>" +
" here</a>. " +
" You can find an overview of the resulting merge for <i>C. elegans</i> " +
" <a href='https://github.com/obophenotype/developmental-stage-ontologies/blob/master/external/bgee/report.md#caenorhabditis-elegans'>" +
......@@ -141,7 +141,7 @@ public class HtmlFaqDisplay extends HtmlParentDisplay implements FaqDisplay {
"that provides annotations and experiment information or processed expression values " +
"(see <a href='" + urlValuePage.getRequestURL() + "'>"+PROCESSED_EXPR_VALUES_PAGE_NAME+"</a>). " +
"It is also possible to download these data directly into R using " +
"<a href='https://bioconductor.org/packages/release/bioc/html/BgeeDB.html' class='external_link' target='_blank'>" +
"<a href='https://bioconductor.org/packages/release/bioc/html/BgeeDB.html' class='external_link' target='_blank' rel='noopener noreferrer'>" +
"our R package </a>, or in the <a href='" + this.prop.getFTPRootDirectory() +
"sql_dump.tar.gz'>full Bgee database dump file</a>.",
"MoreInfo"));
......@@ -155,7 +155,7 @@ public class HtmlFaqDisplay extends HtmlParentDisplay implements FaqDisplay {
"You can also visualize enrichment of expression of your list relative to " +
"a random background using <a href='" + urlTopAnat.getRequestURL() + "'>TopAnat</a>. " +
"All associated data can be downloaded using our " +
"<a href='https://www.bioconductor.org/packages/BgeeDB/' class='external_link' target='_blank'>R package</a>. " +
"<a href='https://www.bioconductor.org/packages/BgeeDB/' class='external_link' target='_blank' rel='noopener noreferrer'>R package</a>. " +
"Note that there is at present no way to visualize a list of genes.",
"OneGene"));
......
......@@ -517,7 +517,7 @@ public class HtmlGeneDisplay extends HtmlParentDisplay implements GeneDisplay {
StringJoiner sj = new StringJoiner(", ");
for (Source source : e.getValue().stream()
.sorted(Comparator.comparing(NamedEntity::getName)).collect(Collectors.toList())) {
String target = source.getName().toLowerCase().equals("bgee")? "" : " target='_blank'";
String target = source.getName().toLowerCase().equals("bgee")? "" : " target='_blank' rel='noopener noreferrer'";
sj.add("<a href='"
//XXX: We should think about how to handle this display better,
//because maybe this base URL contains illegal chars :/
......@@ -788,7 +788,7 @@ public class HtmlGeneDisplay extends HtmlParentDisplay implements GeneDisplay {
.collect(Collectors.groupingBy(XRef::getSource,
LinkedHashMap::new,
Collectors.mapping(x -> "<a typeof='bs:Gene' property='bs:sameAs' href='"
+ x.getXRefUrl(true, s -> this.urlEncode(s)) + "' target='_blank'>"
+ x.getXRefUrl(true, s -> this.urlEncode(s)) + "' target='_blank' rel='noopener noreferrer'>"
+ htmlEntities(x.getXRefId()) + "</a>" + htmlEntities(getFormattedXRefName(x)),
Collectors.toList())));
StringBuilder display = new StringBuilder("<div class='info-content'>");
......
......@@ -290,7 +290,7 @@ public class HtmlGeneralDisplay extends HtmlParentDisplay implements GeneralDisp
+ "in multiple animal species, produced from multiple data types "
+ "(RNA-Seq, Affymetrix, <em>in situ</em> hybridization, and EST data) "
+ "and from multiple data sets (including <a href='https://www.gtexportal.org/home/'" +
" title='GTEx portal' target='_blank'>GTEx data</a>).</p>");
" title='GTEx portal' target='_blank' rel='noopener noreferrer'>GTEx data</a>).</p>");
this.writeln("</div>");
this.writeln("<div class='col-sm-4'>");
......@@ -565,7 +565,7 @@ public class HtmlGeneralDisplay extends HtmlParentDisplay implements GeneralDisp
+ " </li>"
+ "</ul>"
+ "You can still access to Bgee 13 at <a title='Archive site Bgee version 13' "
+ "href='" + this.prop.getBgeeRootDirectory() + "bgee13' target='_blank'>"
+ "href='" + this.prop.getBgeeRootDirectory() + "bgee13' target='_blank' rel='noopener noreferrer'>"
+ this.prop.getBgeeRootDirectory() + "bgee13</a>.");
this.writeOneNews("2017-05-16", "Release of Bgee version 14-beta:"
......@@ -589,7 +589,7 @@ public class HtmlGeneralDisplay extends HtmlParentDisplay implements GeneralDisp
+ " <li>Update of download pages to make it easier to chose files to retrieve; inclusion of gene ranks (as used in gene pages) in call files..</li>"
+ "</ul>"
+ "You can still access to Bgee 13 at <a title='Archive site Bgee version 13' "
+ "href='" + this.prop.getBgeeRootDirectory() + "bgee13' target='_blank'>"
+ "href='" + this.prop.getBgeeRootDirectory() + "bgee13' target='_blank' rel='noopener noreferrer'>"
+ this.prop.getBgeeRootDirectory() + "bgee13</a>.");
this.writeOneNews("2016-07-06", "Release of Bgee version 13.2: "
......@@ -612,11 +612,11 @@ public class HtmlGeneralDisplay extends HtmlParentDisplay implements GeneralDisp
+ "</ul>");
this.writeOneNews("2016-05-09", "Release of our new "
+ "<a href='https://bioconductor.org/packages/release/bioc/html/BgeeDB.html' class='external_link' target='_blank'>"
+ "<a href='https://bioconductor.org/packages/release/bioc/html/BgeeDB.html' class='external_link' target='_blank' rel='noopener noreferrer'>"
+ "BgeeDB R package</a>, a package for the annotation and gene expression "
+ "data download from Bgee database into R, and TopAnat analysis (see also "
+ "<a href='https://bioconductor.org/packages/release/bioc/html/BgeeDB.html' "
+ "class='external_link' target='_blank'>Bioconductor website</a>).");
+ "class='external_link' target='_blank' rel='noopener noreferrer'>Bioconductor website</a>).");
this.writeOneNews("2016-03-22", "Various improvements of our new interface.");
......@@ -696,11 +696,11 @@ public class HtmlGeneralDisplay extends HtmlParentDisplay implements GeneralDisp
this.writeln("<div class='col-xs-12 col-lg-3 archive_site'>");
this.writeln("View archive sites:");
this.writeln("<a title='Archive site Bgee version 12' href='" +
this.prop.getBgeeRootDirectory() + "bgee12' target='_blank'>version 12</a>");
this.prop.getBgeeRootDirectory() + "bgee12' target='_blank' rel='noopener noreferrer'>version 12</a>");
this.writeln("<a title='Archive site Bgee version 13' href='" +
this.prop.getBgeeRootDirectory() + "bgee13' target='_blank'>version 13</a>");
this.prop.getBgeeRootDirectory() + "bgee13' target='_blank' rel='noopener noreferrer'>version 13</a>");
this.writeln("<a title='Archive site Bgee version 14.0' href='" +
this.prop.getBgeeRootDirectory() + "bgee14_0' target='_blank'>version 14.0</a>");
this.prop.getBgeeRootDirectory() + "bgee14_0' target='_blank' rel='noopener noreferrer'>version 14.0</a>");
this.writeln("</div>");
this.writeln("</div>"); // close bgee_more_info row
......
......@@ -411,7 +411,7 @@ public class HtmlRawDataDisplay extends HtmlParentDisplay implements RawDataDisp
return annotation.getRawDataCondition().getAnatEntity().getName() +
" [<a href='http://purl.obolibrary.org/obo/" +
this.urlEncode(annotation.getRawDataCondition().getAnatEntityId().replace(':', '_'))
+ "' target='_blank'>" +annotation.getRawDataCondition().getAnatEntityId() + "</a>]";
+ "' target='_blank' rel='noopener noreferrer'>" +annotation.getRawDataCondition().getAnatEntityId() + "</a>]";
}
private String getDevStageField(RawDataAnnotation annotation) {
......@@ -420,20 +420,20 @@ public class HtmlRawDataDisplay extends HtmlParentDisplay implements RawDataDisp
return log.exit(annotation.getRawDataCondition().getDevStage().getName() +
" [<a href='FIXME" +
this.urlEncode(annotation.getRawDataCondition().getDevStageId().replace(':', '_'))
+ "' target='_blank'>" +annotation.getRawDataCondition().getDevStageId() + "</a>]");
+ "' target='_blank' rel='noopener noreferrer'>" +annotation.getRawDataCondition().getDevStageId() + "</a>]");
}
private String getSourceEvidenceLink(Source source, String id) {
log.entry(source, id);
return log.exit("<a href='" + source.getEvidenceUrl().replace("[evidence_id]", String.valueOf(id))
+ "' target='_blank'>" + id + "</a>");
+ "' target='_blank' rel='noopener noreferrer'>" + id + "</a>");
}
private String getSourceExperimentField(Experiment exp) {
log.entry(exp);
return log.exit(exp.getDataSource().getName() + " [<a href='" +
exp.getDataSource().getExperimentUrl().replace("[experiment_id]", String.valueOf(exp.getId()))
+ "' target='_blank'>" + exp.getId() + "</a>]");
+ "' target='_blank' rel='noopener noreferrer'>" + exp.getId() + "</a>]");
}
@Override
......
......@@ -192,8 +192,8 @@ public class HtmlResourcesDisplay extends HtmlParentDisplay implements Resources
devStageDesc + " The custom version of this ontology generated for Bgee and "
+ "information on how to create it are available "
+ "<a href='https://github.com/obophenotype/developmental-stage-ontologies/tree/master/external/bgee'"
+ " title = 'Link to custom version explanations' class='external_link' "
+ "target = '_blank'>here.</a>"));
+ " title='Link to custom version explanations' class='external_link' "
+ "target='_blank' rel='noopener noreferrer'>here.</a>"));
this.writeln(HtmlParentDisplay.getSingleFeatureLogo(
cioUrl, true, "Confidence Information Ontology (CIO)", "Confidence Information Ontology (CIO)",
......@@ -209,13 +209,13 @@ public class HtmlResourcesDisplay extends HtmlParentDisplay implements Resources
"Bgee uses the cross-species ontology Uberon covering anatomical "
+ "structures in animals. A "
+ "<a href='" + MASTER_BGEE_PIPELINE_GITHUB_URL + "/generated_files/uberon' "
+ "title = 'Link to custom composite version of Uberon' "
+ "class='external_link' target = '_blank'>custom version</a> is "
+ "title='Link to custom composite version of Uberon' "
+ "class='external_link' target='_blank' rel='noopener noreferrer'>custom version</a> is "
+ "generated for Bgee. Steps explaining how and why this custom "
+ "version is generated are described "
+ "<a href='" + MASTER_BGEE_PIPELINE_GITHUB_URL + "/pipeline/uberon#anatomical-ontology-todos-before-pipeline-run'"
+ " title = 'Link to custom version explanations' class='external_link' "
+ "target = '_blank'>here</a>. We also manually modified mapping to terms"
+ " title='Link to custom version explanations' class='external_link' "
+ "target='_blank' rel='noopener noreferrer'>here</a>. We also manually modified mapping to terms"
+ "from external ontologies."));
this.writeln(HtmlParentDisplay.getSingleFeatureLogo(
......@@ -225,11 +225,11 @@ public class HtmlResourcesDisplay extends HtmlParentDisplay implements Resources
"Bgee uses the NCBITaxon ontology. A "
+ "<a href='" + MASTER_BGEE_PIPELINE_GITHUB_URL + "/generated_files/species' "
+ "title = 'Link to custom ncbitaxon ontology' class='external_link' "
+ "target = '_blank'>custom version</a> is generated for Bgee. Steps "
+ "target='_blank' rel='noopener noreferrer'>custom version</a> is generated for Bgee. Steps "
+ "explaining how and why this custom version is generated are described "
+ "<a href='" + MASTER_BGEE_PIPELINE_GITHUB_URL + "/pipeline/species#details'"
+ " title = 'Link to custom version explanations' class='external_link' "
+ "target = '_blank'>here.</a>"));
+ " title='Link to custom version explanations' class='external_link' "
+ "target='_blank' rel='noopener noreferrer'>here.</a>"));
......
......@@ -101,7 +101,7 @@ public class HtmlSourceDisplay extends HtmlParentDisplay implements SourceDispla
}
sb.append("<div class='source row ").append(border).append("'>");
sb.append(" <div class='source-name col-sm-3 col-md-2'>");
sb.append(" <a href='").append(source.getBaseUrl()).append("' target='_blank'>");
sb.append(" <a href='").append(source.getBaseUrl()).append("' target='_blank' rel='noopener noreferrer'>");
sb.append( source.getName());
sb.append(" </a>");
sb.append(" </div>"); // close source-name
......
......@@ -80,7 +80,7 @@ public class HtmlSparqlDisplay extends HtmlParentDisplay implements SparqlDispla
this.writeln("<h1 property='schema:name'>Bgee SPARQL endpoint</h1>");
this.writeln("<p property='schema:description'>Bgee has a SPARQL endpoint which is based on the " +
"<a href='" + bgeeLiteDocUrl + "' class='external_link' target='_blank' " +
"<a href='" + bgeeLiteDocUrl + "' class='external_link' target='_blank' rel='noopener noreferrer' " +
"title='Link to Bgee lite documentation'>" + BGEE_LITE_NAME + " database</a>. " +
BGEE_LITE_NAME + " is a lighter version of Bgee database, " +
"that contains most useful, and explicit information.</p>");
......@@ -91,7 +91,7 @@ public class HtmlSparqlDisplay extends HtmlParentDisplay implements SparqlDispla
this.writeln("<h2>Web interface to query the Bgee SPARQL endpoint</h2>");
this.writeln("<p>Bgee SPARQL queries can be run using the web interface "
+ "<a href='http://biosoda.expasy.org:8080/build_biosodafrontend/' "
+ "title='Link to Bio-Query' class='external_link' target='_blank'>Bio-Query</a> "
+ "title='Link to Bio-Query' class='external_link' target='_blank' rel='noopener noreferrer'>Bio-Query</a> "
+ "search created for the <a href='"+urlCollabs.getRequestURL()+"' "
+ "title='Bgee collaborations'>BioSODA project</a>. "
+ "Bgee specific queries are present under the category <span class='bioquery-section'>"
......@@ -126,33 +126,33 @@ public class HtmlSparqlDisplay extends HtmlParentDisplay implements SparqlDispla
"</code></pre>");
this.writeln("It's possible to download result of this query in <a href='" + SPARQL_QUERY_JSON_URL + "' "
+ "title='SPARQL example query' class='external_link' target='_blank'>JSON format</a> "
+ "title='SPARQL example query' class='external_link' target='_blank' rel='noopener noreferrer'>JSON format</a> "
+ "or in <a href='" + SPARQL_QUERY_XML_URL + "' title='SPARQL example query' "
+ "class='external_link' target='_blank'>XML format</a>.</p>");
+ "class='external_link' target='_blank' rel='noopener noreferrer'>XML format</a>.</p>");
this.writeln("<h2>Virtual RDF serialisation and semantic models</h2>");
this.writeln("<p>The Bgee SPARQL endpoint was created using an Ontology Based Data Access (OBDA) "
+ "approach allowing to create a virtual RDF serialisation without exporting data "
+ "from the original relational database. It queries data stored in the "
+ "<a href='" + bgeeLiteDocUrl + "' class='external_link' target='_blank' "
+ "<a href='" + bgeeLiteDocUrl + "' class='external_link' target='_blank' rel='noopener noreferrer' "
+ "title='Link to Bgee lite documentation'>" + BGEE_LITE_NAME + "</a> relational database.");
this.writeln("The virtual RDF serialisation of the " + BGEE_LITE_NAME
+ " is based on the <a href='https://biosoda.github.io/genex/' class='external_link' "
+ "title ='Link to GenEx specification' target='_blank'>GenEx semantic model "
+ "title ='Link to GenEx specification' target='_blank' rel='noopener noreferrer'>GenEx semantic model "
+ "specification</a> and the OBDA mappings defined in <a href="
+ "'https://github.com/biosoda/bioquery/tree/master/Bgee_OBDA_mappings'"
+ "title='Link to OBDA mapping' target='_blank' class='external_link'>"
+ "title='Link to OBDA mapping' target='_blank' rel='noopener noreferrer' class='external_link'>"
+ "OBDA mappings</a>. The mappings are defined with the "
+ "<a href='https://github.com/ontop/ontop/wiki/ontopOBDAModel' "
+ "title='Link to Ontop mapping language' target = '_blank' class='external_link'>"
+ "title='Link to Ontop mapping language' target='_blank' rel='noopener noreferrer' class='external_link'>"
+ "Ontop mapping language</a>.</p>");
this.writeln("<p>To cross-reference other resources, this SPARQL endpoint contains annotation "
+ "property assertions defined by a first draft of the life-sciences "
+ "cross-reference (LSCR) ontology that is available to download at the "
+ "<a href='https://github.com/qfo/OrthologyOntology' target='_blank' class='external_link'"
+ "<a href='https://github.com/qfo/OrthologyOntology' target='_blank' rel='noopener noreferrer' class='external_link'"
+ "title='Link to Quest for Orthologs github'> Quest for Orthologs GitHub</a> repository "
+ "<a href='https://github.com/qfo/OrthologyOntology/blob/master/lscr.ttl' "
+ "target='_blank' class='external_link' title='link to LSCR ontology'> "
+ "target='_blank' rel='noopener noreferrer' class='external_link' title='link to LSCR ontology'> "
+ "here</a>.</p>");
this.writeln("</div>"); // close CENTERED_ELEMENT_CLASS class
......@@ -175,3 +175,4 @@ public class HtmlSparqlDisplay extends HtmlParentDisplay implements SparqlDispla
log.exit();
}
}
......@@ -215,13 +215,13 @@ public class HtmlSpeciesDisplay extends HtmlParentDisplay implements SpeciesDisp
.append(htmlEntities(species.getName())).append("</td></tr>");
}
table.append("<tr><th scope='row'>Species ID</th><td>")
.append("<a class='external_link' target='_blank' href='" +
.append("<a class='external_link' target='_blank' rel='noopener noreferrer' href='" +
"https://www.ncbi.nlm.nih.gov/Taxonomy/Browser/wwwtax.cgi?lvl=0&amp;id=")
.append(species.getId()).append("'>")
.append(htmlEntities(String.valueOf(species.getId()))).append("</a></td></tr>");
String speciesSourceURL = species.getGenomeSource().getBaseUrl() +
species.getScientificName().replace(" ", "_");
table.append("<tr><th scope='row'>Genome source</th><td><a class='external_link' target='_blank' " +
table.append("<tr><th scope='row'>Genome source</th><td><a class='external_link' target='_blank' rel='noopener noreferrer' " +
"href='").append(speciesSourceURL).append("'>")
.append(htmlEntities(species.getGenomeSource().getName())).append("</a></td></tr>");
table.append("<tr><th scope='row'>Genome version</th><td>")
......
......@@ -60,7 +60,7 @@ public class HtmlTopAnatDisplay extends HtmlParentDisplay implements TopAnatDisp
// this.writeln("<div id='bgee_introduction'>");
// this.writeln("<p>GO-like enrichment of anatomical terms, mapped to genes by expression patterns</p>");
// this.writeln("<p class='alert alert-danger'>While we are solving issues with TopAnat in Bgee 14, we invite you to use TopAnat in "
// + "<a title='TopAnat page of Bgee 13' href='http://bgee.org/bgee13/?page=top_anat' target='_blank'>"
// + "<a title='TopAnat page of Bgee 13' href='http://bgee.org/bgee13/?page=top_anat' target='_blank' rel='noopener noreferrer'>"
// + "Bgee 13</a>.</p>");
// this.writeln("</div>");
......
......@@ -575,7 +575,7 @@
vm.gridApi.grid.registerRowsProcessor(vm.resultFilter, 200);
},
columnDefs: [
{field: 'anatEntityId', width: "14%", cellTemplate: '<div style="text-align:center; position: relative; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%);"><a href="http://purl.obolibrary.org/obo/{{row.entity[col.field].replace(\':\',\'_\')}}" target="_blank">{{row.entity[col.field]}}</a></div>' },
{field: 'anatEntityId', width: "14%", cellTemplate: '<div style="text-align:center; position: relative; top: 50%; -webkit-transform: translateY(-50%); -ms-transform: translateY(-50%); transform: translateY(-50%);"><a href="http://purl.obolibrary.org/obo/{{row.entity[col.field].replace(\':\',\'_\')}}" target="_blank" rel="noopener noreferrer">{{row.entity[col.field]}}</a></div>' },
{field: 'anatEntityName', width: "34%" },
{field: 'annotated', width: "8%", type: 'number'},
{field: 'significant', width: "8%", type: 'number'},
......@@ -1031,7 +1031,7 @@
if (data.data.code == 429) {
vm.message = data.data.message
+ " Please note that we also propose a R package for performing programmatic TopAnat analyses, "
+ "see <a href='https://www.bioconductor.org/packages/BgeeDB/' target='_blank'>"
+ "see <a href='https://www.bioconductor.org/packages/BgeeDB/' target='_blank' rel='noopener noreferrer'>"
+ "BgeeDB Bioconductor package</a>";
cancel = 1;
} else if (!vm.message.match(matcherJobStopped)) {
......
......@@ -6,11 +6,11 @@
<p>GO-like enrichment of anatomical terms, mapped to genes by expression patterns.
It is possible to run TopAnat using our
<a href='https://bioconductor.org/packages/release/bioc/html/BgeeDB.html' class='external_link'
target='_blank'>BgeeDB R package</a>.
target='_blank' rel='noopener noreferrer'>BgeeDB R package</a>.
This is the same as this web-service, but with more flexibility in
the choice of parameters and developmental stages, and is based on the
<a href='http://www.bioconductor.org/packages/release/bioc/html/topGO.html' class='external_link'
title='topGO package in Bioconductor' target='_blank'>topGO package</a>.
title='topGO package in Bioconductor' target='_blank' rel='noopener noreferrer'>topGO package</a>.
</p>
</div>
......@@ -451,7 +451,7 @@
<!-- 2 buttons to display when job is running,
one for canceling job, one fake button that is a link for opening a new TopAnat windows -->
<a class="btn btn-success btn-lg col-md-2 col-sm-3 col-xs-12"
target="_blank" href="?page=top_anat" </