@@ -16,7 +16,7 @@ |
||
16 | 16 | <div class="card-body"> |
17 | 17 | <p> |
18 | 18 | <?= /* I18N: %s is a URL/link to the project website */ |
19 | - I18N::translate('Support and documentation can be found at %s.', '<a href="https://webtrees.net/">webtrees.net</a>') ?> |
|
19 | + I18N::translate('Support and documentation can be found at %s.', '<a href="https://webtrees.net/">webtrees.net</a>') ?> |
|
20 | 20 | </p> |
21 | 21 | </div> |
22 | 22 | </div> |
@@ -31,10 +31,10 @@ |
||
31 | 31 | <?= csrf_field() ?> |
32 | 32 | <p class="form-inline"> |
33 | 33 | <?= I18N::translate(/* I18N: Copy all the records from [family tree 1] into [family tree 2] */ |
34 | - 'Copy all the records from %1$s into %2$s.', |
|
35 | - Bootstrap4::select($tree_list, $tree1 ? $tree1->getName() : '', ['name' => 'tree1_name']), |
|
36 | - Bootstrap4::select($tree_list, $tree2 ? $tree2->getName() : '', ['name' => 'tree2_name']) |
|
37 | - ) ?> |
|
34 | + 'Copy all the records from %1$s into %2$s.', |
|
35 | + Bootstrap4::select($tree_list, $tree1 ? $tree1->getName() : '', ['name' => 'tree1_name']), |
|
36 | + Bootstrap4::select($tree_list, $tree2 ? $tree2->getName() : '', ['name' => 'tree2_name']) |
|
37 | + ) ?> |
|
38 | 38 | </p> |
39 | 39 | |
40 | 40 | <button type="submit" class="btn btn-primary"> |
@@ -65,7 +65,7 @@ |
||
65 | 65 | <div class="row form-group my-3"> |
66 | 66 | <div class="form-row mx-auto"> |
67 | 67 | <input type="submit" class="btn btn-primary" value="<?= /* I18N: A button label. */ |
68 | - I18N::translate('search') ?>"> |
|
68 | + I18N::translate('search') ?>"> |
|
69 | 69 | </div> |
70 | 70 | </div> |
71 | 71 | </form> |
@@ -43,7 +43,7 @@ |
||
43 | 43 | <div class="col-form-label col-sm-3 wt-page-options-label"></div> |
44 | 44 | <div class="col-sm-9 wt-page-options-value"> |
45 | 45 | <input class="btn btn-primary" type="submit" value="<?= /* I18N: A button label. */ |
46 | - I18N::translate('view') ?>"> |
|
46 | + I18N::translate('view') ?>"> |
|
47 | 47 | </div> |
48 | 48 | </div> |
49 | 49 | </form> |
@@ -20,9 +20,9 @@ discard block |
||
20 | 20 | </label> |
21 | 21 | <div class="col-sm-9 wt-page-options-value"> |
22 | 22 | <?= FunctionsEdit::formControlIndividual($tree, null, [ |
23 | - 'id' => 'xref-add', |
|
24 | - 'name' => 'xrefs[]', |
|
25 | - ]) ?> |
|
23 | + 'id' => 'xref-add', |
|
24 | + 'name' => 'xrefs[]', |
|
25 | + ]) ?> |
|
26 | 26 | </div> |
27 | 27 | </div> |
28 | 28 | |
@@ -30,7 +30,7 @@ discard block |
||
30 | 30 | <div class="col-form-label col-sm-3 wt-page-options-label"></div> |
31 | 31 | <div class="col-sm-9 wt-page-options-value"> |
32 | 32 | <input class="btn btn-primary" type="submit" value="<?= /* I18N: A button label. */ |
33 | - I18N::translate('add') ?>"> |
|
33 | + I18N::translate('add') ?>"> |
|
34 | 34 | <a class="btn btn-secondary" href="<?= e(route('timeline', ['ged' => $tree->getName()])) ?>"> |
35 | 35 | <?= /* I18N: A button label. */ I18N::translate('reset') ?> |
36 | 36 | </a> |
@@ -6,26 +6,26 @@ |
||
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_sources = Database::prepare( |
15 | - "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" |
|
15 | + "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" |
|
16 | 16 | )->execute(['tree_id' => $tree->getTreeId()])->fetchAssoc(); |
17 | 17 | ?> |
18 | 18 | |
19 | 19 | <table |
20 | 20 | class="table table-bordered table-sm wt-table-media datatables" |
21 | 21 | data-columns="<?= e(json_encode([ |
22 | - null, |
|
23 | - null, |
|
24 | - ['visible' => array_sum($count_individuals) > 0], |
|
25 | - ['visible' => array_sum($count_families) > 0], |
|
26 | - ['visible' => array_sum($count_sources) > 0], |
|
27 | - ['visible' => (bool) $tree->getPreference('SHOW_LAST_CHANGE'), 'searchable' => false], |
|
28 | - ])) ?>" |
|
22 | + null, |
|
23 | + null, |
|
24 | + ['visible' => array_sum($count_individuals) > 0], |
|
25 | + ['visible' => array_sum($count_families) > 0], |
|
26 | + ['visible' => array_sum($count_sources) > 0], |
|
27 | + ['visible' => (bool) $tree->getPreference('SHOW_LAST_CHANGE'), 'searchable' => false], |
|
28 | + ])) ?>" |
|
29 | 29 | data-state-save="true" |
30 | 30 | > |
31 | 31 | <caption class="sr-only"> |
@@ -4,12 +4,12 @@ discard block |
||
4 | 4 | $count = 0; |
5 | 5 | $vmax = 0; |
6 | 6 | foreach ($data as $v) { |
7 | - $n = strlen($v); |
|
8 | - $vmax = max($vmax, $n); |
|
9 | - $count += $n; |
|
7 | + $n = strlen($v); |
|
8 | + $vmax = max($vmax, $n); |
|
9 | + $count += $n; |
|
10 | 10 | } |
11 | 11 | if ($count < 1) { |
12 | - return ''; |
|
12 | + return ''; |
|
13 | 13 | } |
14 | 14 | $chart_url = 'https://chart.googleapis.com/chart?cht=bvs'; // chart type |
15 | 15 | $chart_url .= '&chs=360x150'; // size |
@@ -20,36 +20,36 @@ discard block |
||
20 | 20 | $chart_url .= '&chxt=x,y,r'; // axis labels specification |
21 | 21 | $chart_url .= '&chxl=0:|<|||'; // <1570 |
22 | 22 | for ($y = 1600; $y < 2030; $y += 50) { |
23 | - $chart_url .= $y . '|||||'; // x axis |
|
23 | + $chart_url .= $y . '|||||'; // x axis |
|
24 | 24 | } |
25 | 25 | $chart_url .= '|1:||' . rawurlencode(I18N::percentage($vmax / $count)); // y axis |
26 | 26 | $chart_url .= '|2:||'; |
27 | 27 | $step = $vmax; |
28 | 28 | for ($d = $vmax; $d > 0; $d--) { |
29 | - if ($vmax < ($d * 10 + 1) && ($vmax % $d) == 0) { |
|
30 | - $step = $d; |
|
31 | - } |
|
29 | + if ($vmax < ($d * 10 + 1) && ($vmax % $d) == 0) { |
|
30 | + $step = $d; |
|
31 | + } |
|
32 | 32 | } |
33 | 33 | if ($step == $vmax) { |
34 | - for ($d = $vmax - 1; $d > 0; $d--) { |
|
35 | - if (($vmax - 1) < ($d * 10 + 1) && (($vmax - 1) % $d) == 0) { |
|
36 | - $step = $d; |
|
37 | - } |
|
38 | - } |
|
34 | + for ($d = $vmax - 1; $d > 0; $d--) { |
|
35 | + if (($vmax - 1) < ($d * 10 + 1) && (($vmax - 1) % $d) == 0) { |
|
36 | + $step = $d; |
|
37 | + } |
|
38 | + } |
|
39 | 39 | } |
40 | 40 | for ($n = $step; $n < $vmax; $n += $step) { |
41 | - $chart_url .= $n . '|'; |
|
41 | + $chart_url .= $n . '|'; |
|
42 | 42 | } |
43 | 43 | $chart_url .= rawurlencode($vmax . ' / ' . $count); // r axis |
44 | 44 | $chart_url .= '&chg=100,' . round(100 * $step / $vmax, 1) . ',1,5'; // grid |
45 | 45 | $chart_url .= '&chd=s:'; // data : simple encoding from A=0 to 9=61 |
46 | 46 | $CHART_ENCODING61 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; |
47 | 47 | for ($y = 1570; $y < 2030; $y += 10) { |
48 | - $chart_url .= $CHART_ENCODING61[(int) (substr_count($data[$y], 'M') * 61 / $vmax)]; |
|
48 | + $chart_url .= $CHART_ENCODING61[(int) (substr_count($data[$y], 'M') * 61 / $vmax)]; |
|
49 | 49 | } |
50 | 50 | $chart_url .= ','; |
51 | 51 | for ($y = 1570; $y < 2030; $y += 10) { |
52 | - $chart_url .= $CHART_ENCODING61[(int) (substr_count($data[$y], 'F') * 61 / $vmax)]; |
|
52 | + $chart_url .= $CHART_ENCODING61[(int) (substr_count($data[$y], 'F') * 61 / $vmax)]; |
|
53 | 53 | } |
54 | 54 | $html = '<img src="' . $chart_url . '" alt="' . $title . '" title="' . $title . '" class="gchart">'; |
55 | 55 |
@@ -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> |