Revision c5294246
Added by Andreas Kohlbecker over 7 years ago
modules/cdm_dataportal/includes/taxon.inc | ||
---|---|---|
84 | 84 |
$sensu_citation_footnote_str = null; |
85 | 85 |
|
86 | 86 |
if(isset($taxonRelation->fromTaxon->sec)) { |
87 |
|
|
87 | 88 |
$sensu_citation_footnote_str = theme('cdm_reference', array('reference' => $taxonRelation->fromTaxon->sec)); |
88 | 89 |
$authorteam = cdm_ws_get(CDM_WS_REFERENCE_AUTHORTEAM, $taxonRelation->fromTaxon->sec->uuid); |
89 | 90 |
|
modules/cdm_dataportal/theme/cdm_dataportal.name.theme | ||
---|---|---|
76 | 76 |
$out = '<ul class="typeDesignations">'; |
77 | 77 |
$typeDesignation_footnotes = FALSE; |
78 | 78 |
$is_lectotype = FALSE; |
79 |
$specimenTypeDesignations = array();
|
|
79 |
$specimen_type_designations = array();
|
|
80 | 80 |
$separator = ','; |
81 | 81 |
foreach ($typeDesignations as $typeDesignation) { |
82 | 82 |
if ($typeDesignation->class == 'SpecimenTypeDesignation') { |
83 | 83 |
// SpecimenTypeDesignations should be ordered. Collect theme here only. |
84 |
$specimenTypeDesignations[] = $typeDesignation;
|
|
84 |
$specimen_type_designations[] = $typeDesignation;
|
|
85 | 85 |
} |
86 | 86 |
// It is a lectotype? |
87 | 87 |
else { |
... | ... | |
109 | 109 |
} |
110 | 110 |
} |
111 | 111 |
|
112 |
if (!empty($specimenTypeDesignations)) {
|
|
112 |
if (!empty($specimen_type_designations)) {
|
|
113 | 113 |
// Sorting might be different for dataportals so this has to be |
114 | 114 |
// parameterized. |
115 |
usort($specimenTypeDesignations, "compare_specimenTypeDesignationStatus");
|
|
116 |
foreach ($specimenTypeDesignations as $std) {
|
|
115 |
usort($specimen_type_designations, "compare_specimenTypeDesignationStatus");
|
|
116 |
foreach ($specimen_type_designations as $type_designation) {
|
|
117 | 117 |
$typeReference = ''; |
118 |
if (!empty($std->citation)) { |
|
119 |
$author_team = cdm_ws_get(CDM_WS_REFERENCE_AUTHORTEAM, $std->citation->uuid); |
|
120 |
$shortCitation = $author_team->titleCache; |
|
121 |
|
|
122 |
$shortCitation .= (strlen($shortCitation) > 0 ? ' ' : '') . partialToYear($std->citation->datePublished->start); |
|
123 |
$missingShortCitation = FALSE; |
|
124 |
if (strlen($shortCitation) == 0) { |
|
125 |
$shortCitation = theme('cdm_reference', array('reference' => $std->citation)); |
|
126 |
$missingShortCitation = TRUE; |
|
118 |
|
|
119 |
if (!empty($type_designation->citation)) { |
|
120 |
|
|
121 |
$citation_footnote_str = theme('cdm_reference', array('reference' => $type_designation->citation)); |
|
122 |
$author_team = cdm_ws_get(CDM_WS_REFERENCE_AUTHORTEAM, $type_designation->citation->uuid); |
|
123 |
|
|
124 |
if(isset($author_team->titleCache)){ |
|
125 |
$authorteam_str = $author_team->titleCache . partialToYear($type_designation->citation->datePublished->start); |
|
126 |
if($authorteam_str == $type_designation->citation->titleCache){ |
|
127 |
$citation_footnote_str = ''; |
|
128 |
} |
|
129 |
} else { |
|
130 |
$authorteam_str = $citation_footnote_str; |
|
131 |
// no need for a footnote in case in case it is used as replacement for missing author teams |
|
132 |
$citation_footnote_str = ''; |
|
127 | 133 |
} |
128 | 134 |
|
129 |
$typeReference .= ' (' . t('designated by'); |
|
130 |
$typeReference .= ' <span class="typeReference">'; |
|
131 |
$typeReference .= $shortCitation . '</span>'; |
|
132 |
if (!empty($std->citationMicroReference)) { |
|
133 |
$typeReference .= ':' . $std->citationMicroReference; |
|
135 |
$footnote_key_markup = ''; |
|
136 |
if($citation_footnote_str) { |
|
137 |
// footnotes should be rendered in the parent element so we |
|
138 |
// are relying on the FootnoteListKey set there |
|
139 |
$_fkey2 = FootnoteManager::addNewFootnote(RenderHints::getFootnoteListKey(), $citation_footnote_str); |
|
140 |
$footnote_key_markup = theme('cdm_footnote_key', array( |
|
141 |
'footnoteKey' => $_fkey2, |
|
142 |
'separator' => $separator, |
|
143 |
'highlightable' => TRUE, |
|
144 |
'separator_off' => TRUE, |
|
145 |
)); |
|
146 |
|
|
134 | 147 |
} |
135 |
$typeReference .= ')'; |
|
136 |
|
|
137 |
// footnotes should be rendered in the parent element so we |
|
138 |
// are relying on the FootnoteListKey set there |
|
139 |
$_fkey2 = FootnoteManager::addNewFootnote(RenderHints::getFootnoteListKey(), $std->citation->titleCache); |
|
140 |
$typeReference .= theme('cdm_footnote_key', array( |
|
141 |
'footnoteKey' => $_fkey2, |
|
142 |
'separator' => $separator, |
|
143 |
'highlightable' => TRUE, |
|
144 |
'separator_off' => TRUE, |
|
145 |
)); |
|
148 |
|
|
149 |
$typeReference .= ' (' . t('designated by') . ' <span class="typeReference">'. $authorteam_str . '</span>'; |
|
150 |
if (!empty($type_designation->citationMicroReference)) { |
|
151 |
$typeReference .= ':' . $type_designation->citationMicroReference; |
|
152 |
} |
|
153 |
$typeReference .= $footnote_key_markup . ')'; |
|
154 |
|
|
146 | 155 |
} |
147 | 156 |
|
148 | 157 |
$derivedUnitFacadeInstance = null; |
149 | 158 |
|
150 | 159 |
$out .= '<li class="specimenTypeDesignation">'; |
151 | 160 |
$out .= '<span class="status">' |
152 |
. ((isset($std->typeStatus->representation_L10n)) ? $std->typeStatus->representation_L10n : t('Type'))
|
|
161 |
. ((isset($type_designation->typeStatus->representation_L10n)) ? $type_designation->typeStatus->representation_L10n : t('Type'))
|
|
153 | 162 |
. $typeReference |
154 | 163 |
. '</span>'; |
155 | 164 |
|
156 | 165 |
|
157 |
if (isset($std->typeSpecimen)) {
|
|
158 |
$derivedUnitFacadeInstance = cdm_ws_get(CDM_WS_DERIVEDUNIT_FACADE, $std->typeSpecimen->uuid);
|
|
166 |
if (isset($type_designation->typeSpecimen)) {
|
|
167 |
$derivedUnitFacadeInstance = cdm_ws_get(CDM_WS_DERIVEDUNIT_FACADE, $type_designation->typeSpecimen->uuid);
|
|
159 | 168 |
} |
160 | 169 |
if ( isset($derivedUnitFacadeInstance ) ){ |
161 | 170 |
$out .= ': ' . $derivedUnitFacadeInstance->titleCache; // . ': ' . theme('cdm_specimen', array('specimenTypeDesignation' => $derivedUnitFacadeInstance)); |
src/test/java/eu/etaxonomy/dataportal/selenium/tests/cichorieae/Cichorieae_TypeTest.java | ||
---|---|---|
9 | 9 |
*/ |
10 | 10 |
package eu.etaxonomy.dataportal.selenium.tests.cichorieae; |
11 | 11 |
|
12 |
import static org.junit.Assert.assertEquals; |
|
13 |
|
|
14 | 12 |
import java.net.MalformedURLException; |
15 | 13 |
import java.util.List; |
16 | 14 |
import java.util.UUID; |
... | ... | |
34 | 32 |
@DataPortalContexts( { DataPortalContext.cichorieae }) |
35 | 33 |
public class Cichorieae_TypeTest extends CdmDataPortalTestBase{ |
36 | 34 |
|
37 |
|
|
38 | 35 |
static UUID cichorium_uuid = UUID.fromString("21d7161a-455e-4f4d-9d61-7f0100c38ff3"); |
39 | 36 |
|
40 | 37 |
static UUID scorzonera_tuzgoluensis_Uuid = UUID.fromString("296b4758-048a-47bb-a394-affca64dfc40"); |
41 | 38 |
|
42 | 39 |
static UUID lactuca_glandulifera_Uuid = UUID.fromString("6ece0be7-ba4a-4363-b103-4e60429988e5"); |
43 | 40 |
|
41 |
static UUID hypochaeris_uuid = UUID.fromString("79d6b29a-7a73-42b6-a024-2ab35fbd60ff"); |
|
42 |
|
|
43 |
static UUID hypochaeris_maculata_uuid = UUID.fromString("90943959-f2ef-4a3a-8744-c8bcd935c8c2"); |
|
44 | 44 |
|
45 | 45 |
@Test |
46 | 46 |
public void cichorium() throws MalformedURLException { |
... | ... | |
85 | 85 |
assertEquals("Syntype: [Cameroon], Maitland 226", typeDesignations.get(0).getText()); |
86 | 86 |
assertEquals("Syntype: [Cameroon], Mildbraed 10814", typeDesignations.get(1).getText()); |
87 | 87 |
assertEquals("Syntype: [Cameroon] \"Cameroons Mt., 6,000 ft.\", Dunlap 47", typeDesignations.get(2).getText()); |
88 |
} |
|
88 | 89 |
|
90 |
@Test |
|
91 |
public void hypochaeris_maculata() throws MalformedURLException { |
|
92 |
TaxonSynonymyPage p = new TaxonSynonymyPage(driver, getContext(), hypochaeris_maculata_uuid); |
|
93 |
assertEquals(getContext().prepareTitle("Hypochaeris maculata"), driver.getTitle()); |
|
94 |
assertEquals("Hypochaeris maculata L., Sp. Pl.: 810. 1753", p.getAcceptedNameText()); |
|
95 |
List<TypeDesignationElement> typeDesignations = p.getHomotypicalGroupTypeDesignations(); |
|
96 |
assertEquals("Expecting two Typedesignation", 2, typeDesignations.size()); |
|
97 |
assertEquals(TypeDesignationType.specimenTypeDesignation, typeDesignations.get(0).getTypeDesignationType()); |
|
98 |
assertEquals("Type: \"Habitat in Europae frigidioris pratis asperis.\"", typeDesignations.get(0).getText()); |
|
99 |
assertEquals(TypeDesignationType.specimenTypeDesignation, typeDesignations.get(1).getTypeDesignationType()); |
|
100 |
assertEquals("Lectotype (designated by Iamonico 2012:??1): [s. loc.], Herb. Linnaeus, no. 959.1", typeDesignations.get(1).getText()); |
|
101 |
} |
|
89 | 102 |
|
103 |
@Test |
|
104 |
public void hypochaeris() throws MalformedURLException { |
|
105 |
TaxonSynonymyPage p = new TaxonSynonymyPage(driver, getContext(), hypochaeris_uuid); |
|
106 |
assertEquals(getContext().prepareTitle("Hypochaeris"), driver.getTitle()); |
|
107 |
assertEquals("Hypochaeris L., Sp. Pl.: 810. 17531", p.getAcceptedNameText()); |
|
108 |
|
|
109 |
List<TypeDesignationElement> typeDesignations = p.getHomotypicalGroupTypeDesignations(); |
|
110 |
assertEquals("Expecting two Typedesignation", 1, typeDesignations.size()); |
|
111 |
assertEquals(TypeDesignationType.nameTypeDesignation, typeDesignations.get(0).getTypeDesignationType()); |
|
112 |
assertEquals("Lectotype (designated by M. L. Green: 1783): Hypochaeris radicata L.", typeDesignations.get(0).getText()); |
|
113 |
|
|
114 |
typeDesignations = p.getHeterotypicalGroupTypeDesignations(2); |
|
115 |
assertEquals("Expecting two Typedesignation", 1, typeDesignations.size()); |
|
116 |
assertEquals(TypeDesignationType.nameTypeDesignation, typeDesignations.get(0).getTypeDesignationType()); |
|
117 |
assertEquals("Lectotype (designated by Steudel 1841: 5685): Seriola laevigata L.", typeDesignations.get(0).getText()); |
|
90 | 118 |
} |
91 | 119 |
|
92 | 120 |
} |
Also available in: Unified diff
ref #3061 fixing position of footnote