@@ -6,30 +6,30 @@ |
||
6 | 6 | // It is not good to bypass privacy, but many servers do not have the resources |
7 | 7 | // to process privacy for every record in the tree |
8 | 8 | $count_individuals = Database::prepare( |
9 | - "SELECT l_to, COUNT(*) FROM `##individuals` JOIN `##link` ON l_from = i_id AND l_file = i_file AND l_type = 'SOUR' AND l_file = :tree_id GROUP BY l_to" |
|
9 | + "SELECT l_to, COUNT(*) FROM `##individuals` JOIN `##link` ON l_from = i_id AND l_file = i_file AND l_type = 'SOUR' AND l_file = :tree_id GROUP BY l_to" |
|
10 | 10 | )->execute(['tree_id' => $tree->getTreeId()])->fetchAssoc(); |
11 | 11 | $count_families = Database::prepare( |
12 | - "SELECT l_to, COUNT(*) FROM `##families` JOIN `##link` ON l_from = f_id AND l_file = f_file AND l_type = 'SOUR' AND l_file = :tree_id GROUP BY l_to" |
|
12 | + "SELECT l_to, COUNT(*) FROM `##families` JOIN `##link` ON l_from = f_id AND l_file = f_file AND l_type = 'SOUR' AND l_file = :tree_id GROUP BY l_to" |
|
13 | 13 | )->execute(['tree_id' => $tree->getTreeId()])->fetchAssoc(); |
14 | 14 | $count_media = Database::prepare( |
15 | - "SELECT l_to, COUNT(*) FROM `##media` JOIN `##link` ON l_from = m_id AND l_file = m_file AND l_type = 'SOUR' AND l_file = :tree_id GROUP BY l_to" |
|
15 | + "SELECT l_to, COUNT(*) FROM `##media` JOIN `##link` ON l_from = m_id AND l_file = m_file AND l_type = 'SOUR' AND l_file = :tree_id GROUP BY l_to" |
|
16 | 16 | )->execute(['tree_id' => $tree->getTreeId()])->fetchAssoc(); |
17 | 17 | $count_notes = Database::prepare( |
18 | - "SELECT l_to, COUNT(*) FROM `##other` JOIN `##link` ON l_from = o_id AND l_file = o_file AND o_type = 'NOTE' AND l_type = 'SOUR' AND l_file = :tree_id GROUP BY l_to" |
|
18 | + "SELECT l_to, COUNT(*) FROM `##other` JOIN `##link` ON l_from = o_id AND l_file = o_file AND o_type = 'NOTE' AND l_type = 'SOUR' AND l_file = :tree_id GROUP BY l_to" |
|
19 | 19 | )->execute(['tree_id' => $tree->getTreeId()])->fetchAssoc(); |
20 | 20 | ?> |
21 | 21 | |
22 | 22 | <table |
23 | 23 | class="table table-bordered table-sm wt-table-source datatables d-none" |
24 | 24 | data-columns="<?= e(json_encode([ |
25 | - null, |
|
26 | - null, |
|
27 | - ['visible' => array_sum($count_individuals) > 0], |
|
28 | - ['visible' => array_sum($count_families) > 0], |
|
29 | - ['visible' => array_sum($count_media) > 0], |
|
30 | - ['visible' => array_sum($count_notes) > 0], |
|
31 | - ['visible' => (bool) $tree->getPreference('SHOW_LAST_CHANGE'), 'searchable' => false], |
|
32 | - ])) ?>" |
|
25 | + null, |
|
26 | + null, |
|
27 | + ['visible' => array_sum($count_individuals) > 0], |
|
28 | + ['visible' => array_sum($count_families) > 0], |
|
29 | + ['visible' => array_sum($count_media) > 0], |
|
30 | + ['visible' => array_sum($count_notes) > 0], |
|
31 | + ['visible' => (bool) $tree->getPreference('SHOW_LAST_CHANGE'), 'searchable' => false], |
|
32 | + ])) ?>" |
|
33 | 33 | data-state-save="true" |
34 | 34 | > |
35 | 35 | <caption class="sr-only"> |
@@ -78,13 +78,13 @@ discard block |
||
78 | 78 | // Inititialise chart data |
79 | 79 | $deat_by_age = []; |
80 | 80 | for ($age = 0; $age <= $max_age; $age++) { |
81 | - $deat_by_age[$age] = ''; |
|
81 | + $deat_by_age[$age] = ''; |
|
82 | 82 | } |
83 | 83 | $birt_by_decade = []; |
84 | 84 | $deat_by_decade = []; |
85 | 85 | for ($year = 1550; $year < 2030; $year += 10) { |
86 | - $birt_by_decade[$year] = ''; |
|
87 | - $deat_by_decade[$year] = ''; |
|
86 | + $birt_by_decade[$year] = ''; |
|
87 | + $deat_by_decade[$year] = ''; |
|
88 | 88 | } |
89 | 89 | ?> |
90 | 90 | |
@@ -197,7 +197,7 @@ discard block |
||
197 | 197 | <th><?= I18N::translate('Given names') ?></th> |
198 | 198 | <th><?= I18N::translate('Surname') ?></th> |
199 | 199 | <th><?= /* I18N: Abbreviation for “Sosa-Stradonitz number”. This is an individual’s surname, so may need transliterating into non-latin alphabets. */ |
200 | - I18N::translate('Sosa') ?></th> |
|
200 | + I18N::translate('Sosa') ?></th> |
|
201 | 201 | <th><?= I18N::translate('Birth') ?></th> |
202 | 202 | <th> |
203 | 203 | <i class="icon-reminder" title="<?= I18N::translate('Anniversary') ?>"></i> |
@@ -13,10 +13,10 @@ |
||
13 | 13 | <table |
14 | 14 | class="table table-bordered table-sm wt-table-source datatables d-none" |
15 | 15 | data-columns="<?= e(json_encode([ |
16 | - null, |
|
17 | - ['visible' => array_sum($count_sources) > 0], |
|
18 | - ['visible' => (bool) $tree->getPreference('SHOW_LAST_CHANGE'), 'searchable' => false], |
|
19 | - ])) ?>" |
|
16 | + null, |
|
17 | + ['visible' => array_sum($count_sources) > 0], |
|
18 | + ['visible' => (bool) $tree->getPreference('SHOW_LAST_CHANGE'), 'searchable' => false], |
|
19 | + ])) ?>" |
|
20 | 20 | data-state-save="true" |
21 | 21 | > |
22 | 22 | <caption class="sr-only"> |
@@ -6,14 +6,14 @@ discard block |
||
6 | 6 | $vmax = 0; |
7 | 7 | $avg = 0; |
8 | 8 | foreach ($data as $age => $v) { |
9 | - $n = strlen($v); |
|
10 | - $vmax = max($vmax, $n); |
|
11 | - $agemax = max($agemax, $age); |
|
12 | - $count += $n; |
|
13 | - $avg += $age * $n; |
|
9 | + $n = strlen($v); |
|
10 | + $vmax = max($vmax, $n); |
|
11 | + $agemax = max($agemax, $age); |
|
12 | + $count += $n; |
|
13 | + $avg += $age * $n; |
|
14 | 14 | } |
15 | 15 | if ($count < 1) { |
16 | - return ''; |
|
16 | + return ''; |
|
17 | 17 | } |
18 | 18 | $avg = round($avg / $count); |
19 | 19 | $chart_url = 'https://chart.googleapis.com/chart?cht=bvs'; // chart type |
@@ -27,36 +27,36 @@ discard block |
||
27 | 27 | $chart_url .= '&chm=V,FF0000,0,' . ($avg - 0.3) . ',1'; // average age line marker |
28 | 28 | $chart_url .= '&chxl=0:|'; // label |
29 | 29 | for ($age = 0; $age <= $agemax; $age += 5) { |
30 | - $chart_url .= $age . '|||||'; // x axis |
|
30 | + $chart_url .= $age . '|||||'; // x axis |
|
31 | 31 | } |
32 | 32 | $chart_url .= '|1:||' . rawurlencode(I18N::percentage($vmax / $count)); // y axis |
33 | 33 | $chart_url .= '|2:||'; |
34 | 34 | $step = $vmax; |
35 | 35 | for ($d = $vmax; $d > 0; $d--) { |
36 | - if ($vmax < ($d * 10 + 1) && ($vmax % $d) == 0) { |
|
37 | - $step = $d; |
|
38 | - } |
|
36 | + if ($vmax < ($d * 10 + 1) && ($vmax % $d) == 0) { |
|
37 | + $step = $d; |
|
38 | + } |
|
39 | 39 | } |
40 | 40 | if ($step == $vmax) { |
41 | - for ($d = $vmax - 1; $d > 0; $d--) { |
|
42 | - if (($vmax - 1) < ($d * 10 + 1) && (($vmax - 1) % $d) == 0) { |
|
43 | - $step = $d; |
|
44 | - } |
|
45 | - } |
|
41 | + for ($d = $vmax - 1; $d > 0; $d--) { |
|
42 | + if (($vmax - 1) < ($d * 10 + 1) && (($vmax - 1) % $d) == 0) { |
|
43 | + $step = $d; |
|
44 | + } |
|
45 | + } |
|
46 | 46 | } |
47 | 47 | for ($n = $step; $n < $vmax; $n += $step) { |
48 | - $chart_url .= $n . '|'; |
|
48 | + $chart_url .= $n . '|'; |
|
49 | 49 | } |
50 | 50 | $chart_url .= rawurlencode($vmax . ' / ' . $count); // r axis |
51 | 51 | $chart_url .= '&chg=100,' . round(100 * $step / $vmax, 1) . ',1,5'; // grid |
52 | 52 | $chart_url .= '&chd=s:'; // data : simple encoding from A=0 to 9=61 |
53 | 53 | $CHART_ENCODING61 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; |
54 | 54 | for ($age = 0; $age <= $agemax; $age++) { |
55 | - $chart_url .= $CHART_ENCODING61[(int) (substr_count($data[$age], 'M') * 61 / $vmax)]; |
|
55 | + $chart_url .= $CHART_ENCODING61[(int) (substr_count($data[$age], 'M') * 61 / $vmax)]; |
|
56 | 56 | } |
57 | 57 | $chart_url .= ','; |
58 | 58 | for ($age = 0; $age <= $agemax; $age++) { |
59 | - $chart_url .= $CHART_ENCODING61[(int) (substr_count($data[$age], 'F') * 61 / $vmax)]; |
|
59 | + $chart_url .= $CHART_ENCODING61[(int) (substr_count($data[$age], 'F') * 61 / $vmax)]; |
|
60 | 60 | } |
61 | 61 | $html = '<img src="' . $chart_url . '" alt="' . $title . '" title="' . $title . '" class="gchart">'; |
62 | 62 |
@@ -6,29 +6,29 @@ |
||
6 | 6 | // It is not good to bypass privacy, but many servers do not have the resources |
7 | 7 | // to process privacy for every record in the tree |
8 | 8 | $count_individuals = Database::prepare( |
9 | - "SELECT l_to, COUNT(*) FROM `##individuals` JOIN `##link` ON l_from = i_id AND l_file = i_file AND l_type = 'NOTE' AND l_file = :tree_id GROUP BY l_to" |
|
9 | + "SELECT l_to, COUNT(*) FROM `##individuals` JOIN `##link` ON l_from = i_id AND l_file = i_file AND l_type = 'NOTE' AND l_file = :tree_id GROUP BY l_to" |
|
10 | 10 | )->execute(['tree_id' => $tree->getTreeId()])->fetchAssoc(); |
11 | 11 | $count_families = Database::prepare( |
12 | - "SELECT l_to, COUNT(*) FROM `##families` JOIN `##link` ON l_from = f_id AND l_file = f_file AND l_type = 'NOTE' AND l_file = :tree_id GROUP BY l_to" |
|
12 | + "SELECT l_to, COUNT(*) FROM `##families` JOIN `##link` ON l_from = f_id AND l_file = f_file AND l_type = 'NOTE' AND l_file = :tree_id GROUP BY l_to" |
|
13 | 13 | )->execute(['tree_id' => $tree->getTreeId()])->fetchAssoc(); |
14 | 14 | $count_media = Database::prepare( |
15 | - "SELECT l_to, COUNT(*) FROM `##media` JOIN `##link` ON l_from = m_id AND l_file = m_file AND l_type = 'NOTE' AND l_file = :tree_id GROUP BY l_to" |
|
15 | + "SELECT l_to, COUNT(*) FROM `##media` JOIN `##link` ON l_from = m_id AND l_file = m_file AND l_type = 'NOTE' AND l_file = :tree_id GROUP BY l_to" |
|
16 | 16 | )->execute(['tree_id' => $tree->getTreeId()])->fetchAssoc(); |
17 | 17 | $count_sources = Database::prepare( |
18 | - "SELECT l_to, COUNT(*) FROM `##sources` JOIN `##link` ON l_from = s_id AND l_file = s_file AND l_type = 'NOTE' AND l_file = :tree_id GROUP BY l_to" |
|
18 | + "SELECT l_to, COUNT(*) FROM `##sources` JOIN `##link` ON l_from = s_id AND l_file = s_file AND l_type = 'NOTE' AND l_file = :tree_id GROUP BY l_to" |
|
19 | 19 | )->execute(['tree_id' => $tree->getTreeId()])->fetchAssoc(); |
20 | 20 | ?> |
21 | 21 | |
22 | 22 | <table |
23 | 23 | class="table table-bordered table-sm wt-table-note datatables" |
24 | 24 | data-columns="<?= e(json_encode([ |
25 | - null, |
|
26 | - ['visible' => array_sum($count_individuals) > 0], |
|
27 | - ['visible' => array_sum($count_families) > 0], |
|
28 | - ['visible' => array_sum($count_media) > 0], |
|
29 | - ['visible' => array_sum($count_sources) > 0], |
|
30 | - ['visible' => (bool) $tree->getPreference('SHOW_LAST_CHANGE'), 'searchable' => false], |
|
31 | - ])) ?>" |
|
25 | + null, |
|
26 | + ['visible' => array_sum($count_individuals) > 0], |
|
27 | + ['visible' => array_sum($count_families) > 0], |
|
28 | + ['visible' => array_sum($count_media) > 0], |
|
29 | + ['visible' => array_sum($count_sources) > 0], |
|
30 | + ['visible' => (bool) $tree->getPreference('SHOW_LAST_CHANGE'), 'searchable' => false], |
|
31 | + ])) ?>" |
|
32 | 32 | data-state-save="true" |
33 | 33 | > |
34 | 34 | <caption class="sr-only"> |
@@ -70,13 +70,13 @@ discard block |
||
70 | 70 | // init chart data |
71 | 71 | $marr_by_age = []; |
72 | 72 | for ($age = 0; $age <= $max_age; $age++) { |
73 | - $marr_by_age[$age] = ''; |
|
73 | + $marr_by_age[$age] = ''; |
|
74 | 74 | } |
75 | 75 | $birt_by_decade = []; |
76 | 76 | $marr_by_decade = []; |
77 | 77 | for ($year = 1550; $year < 2030; $year += 10) { |
78 | - $birt_by_decade[$year] = ''; |
|
79 | - $marr_by_decade[$year] = ''; |
|
78 | + $birt_by_decade[$year] = ''; |
|
79 | + $marr_by_decade[$year] = ''; |
|
80 | 80 | } |
81 | 81 | ?> |
82 | 82 | |
@@ -244,18 +244,18 @@ discard block |
||
244 | 244 | |
245 | 245 | <!-- Husband age --> |
246 | 246 | <?php |
247 | - $mdate = $family->getMarriageDate(); |
|
248 | - $hdate = $husb->getBirthDate(); |
|
249 | - if ($hdate->isOK() && $mdate->isOK()) { |
|
250 | - if ($hdate->gregorianYear() >= 1550 && $hdate->gregorianYear() < 2030) { |
|
251 | - $birt_by_decade[(int) ($hdate->gregorianYear() / 10) * 10] .= $husb->getSex(); |
|
252 | - } |
|
253 | - $hage = Date::getAge($hdate, $mdate, 0); |
|
254 | - if ($hage >= 0 && $hage <= $max_age) { |
|
255 | - $marr_by_age[$hage] .= $husb->getSex(); |
|
256 | - } |
|
257 | - } |
|
258 | - ?> |
|
247 | + $mdate = $family->getMarriageDate(); |
|
248 | + $hdate = $husb->getBirthDate(); |
|
249 | + if ($hdate->isOK() && $mdate->isOK()) { |
|
250 | + if ($hdate->gregorianYear() >= 1550 && $hdate->gregorianYear() < 2030) { |
|
251 | + $birt_by_decade[(int) ($hdate->gregorianYear() / 10) * 10] .= $husb->getSex(); |
|
252 | + } |
|
253 | + $hage = Date::getAge($hdate, $mdate, 0); |
|
254 | + if ($hage >= 0 && $hage <= $max_age) { |
|
255 | + $marr_by_age[$hage] .= $husb->getSex(); |
|
256 | + } |
|
257 | + } |
|
258 | + ?> |
|
259 | 259 | <td class="center" data-sort="<?= Date::getAge($hdate, $mdate, 1) ?>"> |
260 | 260 | <?= Date::getAge($hdate, $mdate, 2) ?> |
261 | 261 | </td> |
@@ -280,17 +280,17 @@ discard block |
||
280 | 280 | |
281 | 281 | <!-- Wife age --> |
282 | 282 | <?php |
283 | - $wdate = $wife->getBirthDate(); |
|
284 | - if ($wdate->isOK() && $mdate->isOK()) { |
|
285 | - if ($wdate->gregorianYear() >= 1550 && $wdate->gregorianYear() < 2030) { |
|
286 | - $birt_by_decade[(int) ($wdate->gregorianYear() / 10) * 10] .= $wife->getSex(); |
|
287 | - } |
|
288 | - $wage = Date::getAge($wdate, $mdate, 0); |
|
289 | - if ($wage >= 0 && $wage <= $max_age) { |
|
290 | - $marr_by_age[$wage] .= $wife->getSex(); |
|
291 | - } |
|
292 | - } |
|
293 | - ?> |
|
283 | + $wdate = $wife->getBirthDate(); |
|
284 | + if ($wdate->isOK() && $mdate->isOK()) { |
|
285 | + if ($wdate->gregorianYear() >= 1550 && $wdate->gregorianYear() < 2030) { |
|
286 | + $birt_by_decade[(int) ($wdate->gregorianYear() / 10) * 10] .= $wife->getSex(); |
|
287 | + } |
|
288 | + $wage = Date::getAge($wdate, $mdate, 0); |
|
289 | + if ($wage >= 0 && $wage <= $max_age) { |
|
290 | + $marr_by_age[$wage] .= $wife->getSex(); |
|
291 | + } |
|
292 | + } |
|
293 | + ?> |
|
294 | 294 | |
295 | 295 | <td class="center" data-sort="<?= Date::getAge($wdate, $mdate, 1) ?>"> |
296 | 296 | <?= Date::getAge($wdate, $mdate, 2) ?> |
@@ -123,49 +123,49 @@ |
||
123 | 123 | |
124 | 124 | <p class="card-text"> |
125 | 125 | <?php |
126 | - // Show file details |
|
127 | - $mediatype = $media_file->type(); |
|
128 | - if ($mediatype) { |
|
129 | - echo GedcomTag::getLabelValue('TYPE', GedcomTag::getFileFormTypeValue($mediatype)); |
|
130 | - } |
|
131 | - echo FunctionsPrintFacts::printFactSources($tree, $media_object->getGedcom(), 1); |
|
132 | - echo FunctionsPrint::printFactNotes($tree, $media_object->getGedcom(), 1); |
|
133 | - if ($media_file->isExternal()) { |
|
134 | - echo GedcomTag::getLabelValue('URL', $media_file->filename()); |
|
135 | - } elseif ($media_file->fileExists()) { |
|
136 | - ?> |
|
126 | + // Show file details |
|
127 | + $mediatype = $media_file->type(); |
|
128 | + if ($mediatype) { |
|
129 | + echo GedcomTag::getLabelValue('TYPE', GedcomTag::getFileFormTypeValue($mediatype)); |
|
130 | + } |
|
131 | + echo FunctionsPrintFacts::printFactSources($tree, $media_object->getGedcom(), 1); |
|
132 | + echo FunctionsPrint::printFactNotes($tree, $media_object->getGedcom(), 1); |
|
133 | + if ($media_file->isExternal()) { |
|
134 | + echo GedcomTag::getLabelValue('URL', $media_file->filename()); |
|
135 | + } elseif ($media_file->fileExists()) { |
|
136 | + ?> |
|
137 | 137 | <button class="btn btn-secondary" type="button" data-toggle="collapse" data-target="#details-<?= e($n) ?>" aria-expanded="false" aria-controls="details-<?= e($n) ?>"> |
138 | 138 | <?= I18N::translate('Media file') ?> |
139 | 139 | </button> |
140 | 140 | <div class="collapse" id="details-<?= e($n) ?>"> |
141 | 141 | <?php |
142 | - if (Auth::isEditor($tree)) { |
|
143 | - echo GedcomTag::getLabelValue('FILE', $media_file->filename()); |
|
144 | - } |
|
145 | - echo GedcomTag::getLabelValue('FORM', $media_file->mimeType()); |
|
146 | - foreach ($media_file->attributes() as $tag => $value) { |
|
147 | - echo GedcomTag::getLabelValue($tag, $value); |
|
148 | - } |
|
149 | - ?> |
|
142 | + if (Auth::isEditor($tree)) { |
|
143 | + echo GedcomTag::getLabelValue('FILE', $media_file->filename()); |
|
144 | + } |
|
145 | + echo GedcomTag::getLabelValue('FORM', $media_file->mimeType()); |
|
146 | + foreach ($media_file->attributes() as $tag => $value) { |
|
147 | + echo GedcomTag::getLabelValue($tag, $value); |
|
148 | + } |
|
149 | + ?> |
|
150 | 150 | </div> |
151 | 151 | <?php |
152 | - } else { |
|
153 | - echo '<p class="alert alert-danger">', /* I18N: %s is a filename */ I18N::translate('The file “%s” does not exist.', $media_file->filename()), '</p>'; |
|
154 | - } |
|
155 | - ?> |
|
152 | + } else { |
|
153 | + echo '<p class="alert alert-danger">', /* I18N: %s is a filename */ I18N::translate('The file “%s” does not exist.', $media_file->filename()), '</p>'; |
|
154 | + } |
|
155 | + ?> |
|
156 | 156 | </p> |
157 | 157 | </div> |
158 | 158 | <div class="card-footer"> |
159 | 159 | <?php |
160 | - foreach ($media_object->linkedIndividuals('OBJE') as $individual) { |
|
161 | - echo '<a href="' . e($individual->url()) . '">' . FontAwesome::semanticIcon('individual', I18N::translate('Individual')) . ' ' . $individual->getFullName() . '</a><br>'; |
|
162 | - } |
|
163 | - foreach ($media_object->linkedFamilies('OBJE') as $family) { |
|
164 | - echo '<a href="' . e($family->url()) . '">' . FontAwesome::semanticicon('family', I18N::translate('Family')) . ' ' . $family->getFullName() . '</a><br>'; |
|
165 | - } |
|
166 | - foreach ($media_object->linkedSources('OBJE') as $source) { |
|
167 | - echo '<a href="' . e($source->url()) . '">' . FontAwesome::semanticIcon('source', I18N::translate('Source')) . ' ' . $source->getFullName() . '</a><br>'; |
|
168 | - } ?> |
|
160 | + foreach ($media_object->linkedIndividuals('OBJE') as $individual) { |
|
161 | + echo '<a href="' . e($individual->url()) . '">' . FontAwesome::semanticIcon('individual', I18N::translate('Individual')) . ' ' . $individual->getFullName() . '</a><br>'; |
|
162 | + } |
|
163 | + foreach ($media_object->linkedFamilies('OBJE') as $family) { |
|
164 | + echo '<a href="' . e($family->url()) . '">' . FontAwesome::semanticicon('family', I18N::translate('Family')) . ' ' . $family->getFullName() . '</a><br>'; |
|
165 | + } |
|
166 | + foreach ($media_object->linkedSources('OBJE') as $source) { |
|
167 | + echo '<a href="' . e($source->url()) . '">' . FontAwesome::semanticIcon('source', I18N::translate('Source')) . ' ' . $source->getFullName() . '</a><br>'; |
|
168 | + } ?> |
|
169 | 169 | </div> |
170 | 170 | </div> |
171 | 171 | </div> |
@@ -20,9 +20,9 @@ |
||
20 | 20 | </label> |
21 | 21 | <div class="col-sm-9 wt-page-options-value"> |
22 | 22 | <?= FunctionsEdit::formControlIndividual($tree, null, [ |
23 | - 'id' => 'addxref', |
|
24 | - 'name' => 'addxref', |
|
25 | - ]) ?> |
|
23 | + 'id' => 'addxref', |
|
24 | + 'name' => 'addxref', |
|
25 | + ]) ?> |
|
26 | 26 | |
27 | 27 | <?= Bootstrap4::checkbox(/* I18N: Label for a configuration option */ I18N::translate('Include the individual’s immediate family'), false, ['name' => 'addfam']) ?> |
28 | 28 | </div> |
@@ -122,7 +122,7 @@ |
||
122 | 122 | <?php if ($page_hits ?? 0 > 0): ?> |
123 | 123 | <div class="wt-page-views"> |
124 | 124 | <?= I18N::plural('This page has been viewed %s time.', 'This page has been viewed %s times.', $page_hits, |
125 | - '<span class="odometer">' . I18N::digits($page_hits) . '</span>') ?> |
|
125 | + '<span class="odometer">' . I18N::digits($page_hits) . '</span>') ?> |
|
126 | 126 | </div> |
127 | 127 | <?php endif ?> |
128 | 128 |