summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/Functions/FunctionsEdit.php107
-rw-r--r--app/Module/CensusAssistantModule.php115
2 files changed, 97 insertions, 125 deletions
diff --git a/app/Functions/FunctionsEdit.php b/app/Functions/FunctionsEdit.php
index 424a97f3bf..110ae486ad 100644
--- a/app/Functions/FunctionsEdit.php
+++ b/app/Functions/FunctionsEdit.php
@@ -16,6 +16,13 @@
namespace Fisharebest\Webtrees\Functions;
use Fisharebest\Webtrees\Auth;
+use Fisharebest\Webtrees\Census\Census;
+use Fisharebest\Webtrees\Census\CensusOfDenmark;
+use Fisharebest\Webtrees\Census\CensusOfEngland;
+use Fisharebest\Webtrees\Census\CensusOfFrance;
+use Fisharebest\Webtrees\Census\CensusOfScotland;
+use Fisharebest\Webtrees\Census\CensusOfUnitedStates;
+use Fisharebest\Webtrees\Census\CensusOfWales;
use Fisharebest\Webtrees\Config;
use Fisharebest\Webtrees\Database;
use Fisharebest\Webtrees\Date;
@@ -618,6 +625,16 @@ class FunctionsEdit {
echo I18N::translate('yes');
}
+ if ($fact === 'CENS' && $value === 'Y') {
+ echo self::censusDateSelector(WT_LOCALE, $xref);
+ if (Module::getModuleByName('GEDFact_assistant') && GedcomRecord::getInstance($xref, $WT_TREE) instanceof Individual) {
+ echo
+ '<a href="#" style="display: none;" id="assistant-link" onclick="return activateCensusAssistant();">' .
+ I18N::translate('Create a new shared note using assistant') .
+ '</a>';
+ }
+ }
+
} elseif ($fact === 'TEMP') {
echo self::selectEditControl($element_name, GedcomCodeTemp::templeNames(), I18N::translate('No temple - living ordinance'), $value);
} elseif ($fact === 'ADOP') {
@@ -800,11 +817,6 @@ class FunctionsEdit {
switch ($fact) {
case 'DATE':
echo self::printCalendarPopup($element_id);
-
- // Allow the GEDFact_assistant module to show a census-date selector
- if (Module::getModuleByName('GEDFact_assistant')) {
- echo CensusAssistantModule::censusDateSelector($action, $upperlevel, $element_id);
- }
break;
case 'FAMC':
case 'FAMS':
@@ -878,11 +890,6 @@ class FunctionsEdit {
if ($value) {
echo ' ', self::printEditNoteLink($value);
}
-
- // Allow the GEDFact_assistant module to create a formatted shared note.
- if ($upperlevel === 'CENS' && Module::getModuleByName('GEDFact_assistant')) {
- echo CensusAssistantModule::addNoteWithAssistantLink($element_id, $xref, $action);
- }
}
break;
case 'OBJE':
@@ -956,6 +963,86 @@ class FunctionsEdit {
}
/**
+ * Genearate a <select> element, with the dates/places of all known censuses
+ *
+ *
+ * @param string $locale - Sort the censuses for this locale
+ * @param string $xref - The individual for whom we are adding a census
+ */
+ public static function censusDateSelector($locale, $xref) {
+ global $controller;
+
+ // Show more likely census details at the top of the list.
+ switch (WT_LOCALE) {
+ case 'en-AU':
+ case 'en-GB':
+ $census_places = array(new CensusOfEngland, new CensusOfWales, new CensusOfScotland);
+ break;
+ case 'en-US':
+ $census_places = array(new CensusOfUnitedStates);
+ break;
+ case 'fr':
+ case 'fr-CA':
+ $census_places = array(new CensusOfFrance);
+ break;
+ case 'da':
+ $census_places = array(new CensusOfDenmark);
+ break;
+ default:
+ $census_places = array();
+ break;
+ }
+ foreach (Census::allCensusPlaces() as $census_place) {
+ if (!in_array($census_place, $census_places)) {
+ $census_places[] = $census_place;
+ }
+ }
+
+ $controller->addInlineJavascript('
+ function selectCensus(el) {
+ var option = jQuery(":selected", el);
+ jQuery("input.DATE", jQuery(el).closest("table")).val(option.val());
+ jQuery("input.PLAC", jQuery(el).closest("table")).val(option.data("place"));
+ jQuery("#setctry").val(option.data("place"));
+ jQuery("#setyear").val(option.data("year"));
+ if (option.val()) {
+ jQuery("#assistant-link").show();
+ } else {
+ jQuery("#assistant-link").hide();
+ }
+ }
+ function set_pid_array(pa) {
+ jQuery("#pid_array").val(pa);
+ }
+ function activateCensusAssistant() {
+ if (jQuery("#newshared_note_img").hasClass("icon-plus")) {
+ expand_layer("newshared_note");
+ }
+ var field = jQuery("#newshared_note input.NOTE")[0];
+ var xref = jQuery("input[name=xref]").val();
+ return addnewnote_assisted(field, xref);
+ }
+ ');
+
+ $options = '<option value="">' . I18N::translate('Census date') . '</option>';
+
+ foreach ($census_places as $census_place) {
+ $options .= '<option value=""></option>';
+ foreach ($census_place->allCensusDates() as $census) {
+ $date = new Date($census->censusDate());
+ $year = $date->minimumDate()->format('%Y');
+ $options .= '<option value="' . $census->censusDate() . '" data-year="' . $year . '" data-place="' . $census->censusPlace() . '">' . $census->censusPlace() . ' ' . $year . '</option>';
+ }
+ }
+
+ return
+ '<input type="hidden" id="setctry" name="setctry" value="">' .
+ '<input type="hidden" id="setyear" name="setyear" value="">' .
+ '<input type="hidden" id="pid_array" name="pid_array" value="">' .
+ '<select onchange="selectCensus(this);">' . $options . '</select>';
+ }
+
+ /**
* Prints collapsable fields to add ASSO/RELA, SOUR, OBJE, etc.
*
* @param string $tag
diff --git a/app/Module/CensusAssistantModule.php b/app/Module/CensusAssistantModule.php
index aaeca89ffe..c445d95fd9 100644
--- a/app/Module/CensusAssistantModule.php
+++ b/app/Module/CensusAssistantModule.php
@@ -15,13 +15,6 @@
*/
namespace Fisharebest\Webtrees\Module;
-use Fisharebest\Webtrees\Census\Census;
-use Fisharebest\Webtrees\Census\CensusOfDenmark;
-use Fisharebest\Webtrees\Census\CensusOfEngland;
-use Fisharebest\Webtrees\Census\CensusOfFrance;
-use Fisharebest\Webtrees\Census\CensusOfScotland;
-use Fisharebest\Webtrees\Census\CensusOfUnitedStates;
-use Fisharebest\Webtrees\Census\CensusOfWales;
use Fisharebest\Webtrees\Controller\SimpleController;
use Fisharebest\Webtrees\Date;
use Fisharebest\Webtrees\Family;
@@ -30,7 +23,6 @@ use Fisharebest\Webtrees\Functions\FunctionsDb;
use Fisharebest\Webtrees\GedcomRecord;
use Fisharebest\Webtrees\GedcomTag;
use Fisharebest\Webtrees\I18N;
-use Fisharebest\Webtrees\Individual;
use Fisharebest\Webtrees\Note;
/**
@@ -480,111 +472,4 @@ class CensusAssistantModule extends AbstractModule {
return Filter::formatText($note->getNote(), $WT_TREE);
}
}
-
- /**
- * Modify the “add shared note” field, to create a note using the assistant
- *
- * @param string $element_id
- * @param string $xref
- * @param string $action
- *
- * @return string
- */
- public static function addNoteWithAssistantLink($element_id, $xref, $action) {
- global $controller, $WT_TREE;
-
- // We do not yet support family records
- if (!GedcomRecord::getInstance($xref, $WT_TREE) instanceof Individual) {
- return '';
- }
-
- // Only modify “add shared note” links on the add/edit actions.
- // TODO: does the “edit” action work?
- if ($action != 'add' && $action != 'edit') {
- return '';
- }
-
- $controller->addInlineJavascript('
- var pid_array=jQuery("#pid_array");
- function set_pid_array(pa) {
- pid_array.val(pa);
- }
- ');
-
- return
- '<br>' .
- '<input type="hidden" name="pid_array" id="pid_array" value="">' .
- '<a href="#" onclick="return addnewnote_assisted(document.getElementById(\'' . $element_id . '\'), \'' . $xref . '\');">' .
- I18N::translate('Create a new shared note using assistant') .
- '</a>';
- }
-
- /**
- * Add a selector containing UK/US/FR census dates
- *
- * @param string $action
- * @param string $tag
- * @param string $element_id
- *
- * @return string
- */
- public static function censusDateSelector($action, $tag, $element_id) {
- global $controller;
-
- if ($action == 'add' && $tag == 'CENS') {
- // Show more likely census details at the top of the list.
- switch (WT_LOCALE) {
- case 'en-AU':
- case 'en-GB':
- $census_places = array(new CensusOfEngland, new CensusOfWales, new CensusOfScotland);
- break;
- case 'en-US':
- $census_places = array(new CensusOfUnitedStates);
- break;
- case 'fr':
- case 'fr-CA':
- $census_places = array(new CensusOfFrance);
- break;
- case 'da':
- $census_places = array(new CensusOfDenmark);
- break;
- default:
- $census_places = array();
- break;
- }
- foreach (Census::allCensusPlaces() as $census_place) {
- if (!in_array($census_place, $census_places)) {
- $census_places[] = $census_place;
- }
- }
-
- $controller->addInlineJavascript('
- function selectCensus(el) {
- var option = jQuery(":selected", el);
- jQuery("input.DATE", jQuery(el).closest("table")).val(option.val());
- jQuery("input.PLAC", jQuery(el).closest("table")).val(option.data("place"));
- jQuery("#setctry").val(option.data("place"));
- jQuery("#setyear").val(option.data("year"));
- }
- ');
-
- $options = '<option value="">' . I18N::translate('Census date') . '</option>';
-
- foreach ($census_places as $census_place) {
- $options .= '<option value=""></option>';
- foreach ($census_place->allCensusDates() as $census) {
- $date = new Date($census->censusDate());
- $year = $date->minimumDate()->format('%Y');
- $options .= '<option value="' . $census->censusDate() . '" data-year="' . $year . '" data-place="' . $census->censusPlace() . '">' . $census->censusPlace() . ' ' . $year . '</option>';
- }
- }
-
- return
- '<input type="hidden" id="setctry" name="setctry" value="">' .
- '<input type="hidden" id="setyear" name="setyear" value="">' .
- '<select onchange="selectCensus(this);">' . $options . '</select>';
- } else {
- return '';
- }
- }
}