Example #1
0
/**
 * Print a new fact box on details pages
 * @param string $id	the id of the person,family,source etc the fact will be added to
 * @param array $usedfacts	an array of facts already used in this record
 * @param string $type	the type of record INDI, FAM, SOUR etc
 */
function print_add_new_fact($id, $usedfacts, $type)
{
    global $factarray, $pgv_lang;
    global $INDI_FACTS_ADD, $FAM_FACTS_ADD, $SOUR_FACTS_ADD, $REPO_FACTS_ADD;
    global $INDI_FACTS_UNIQUE, $FAM_FACTS_UNIQUE, $SOUR_FACTS_UNIQUE, $REPO_FACTS_UNIQUE;
    global $INDI_FACTS_QUICK, $FAM_FACTS_QUICK, $SOUR_FACTS_QUICK, $REPO_FACTS_QUICK;
    switch ($type) {
        case "INDI":
            $addfacts = preg_split("/[, ;:]+/", $INDI_FACTS_ADD, -1, PREG_SPLIT_NO_EMPTY);
            $uniquefacts = preg_split("/[, ;:]+/", $INDI_FACTS_UNIQUE, -1, PREG_SPLIT_NO_EMPTY);
            $quickfacts = preg_split("/[, ;:]+/", $INDI_FACTS_QUICK, -1, PREG_SPLIT_NO_EMPTY);
            break;
        case "FAM":
            $addfacts = preg_split("/[, ;:]+/", $FAM_FACTS_ADD, -1, PREG_SPLIT_NO_EMPTY);
            $uniquefacts = preg_split("/[, ;:]+/", $FAM_FACTS_UNIQUE, -1, PREG_SPLIT_NO_EMPTY);
            $quickfacts = preg_split("/[, ;:]+/", $FAM_FACTS_QUICK, -1, PREG_SPLIT_NO_EMPTY);
            break;
        case "SOUR":
            $addfacts = preg_split("/[, ;:]+/", $SOUR_FACTS_ADD, -1, PREG_SPLIT_NO_EMPTY);
            $uniquefacts = preg_split("/[, ;:]+/", $SOUR_FACTS_UNIQUE, -1, PREG_SPLIT_NO_EMPTY);
            $quickfacts = preg_split("/[, ;:]+/", $SOUR_FACTS_QUICK, -1, PREG_SPLIT_NO_EMPTY);
            break;
        case "REPO":
            $addfacts = preg_split("/[, ;:]+/", $REPO_FACTS_ADD, -1, PREG_SPLIT_NO_EMPTY);
            $uniquefacts = preg_split("/[, ;:]+/", $REPO_FACTS_UNIQUE, -1, PREG_SPLIT_NO_EMPTY);
            $quickfacts = preg_split("/[, ;:]+/", $REPO_FACTS_QUICK, -1, PREG_SPLIT_NO_EMPTY);
            break;
        default:
            return;
    }
    $addfacts = array_merge(CheckFactUnique($uniquefacts, $usedfacts, $type), $addfacts);
    $quickfacts = array_intersect($quickfacts, $addfacts);
    usort($addfacts, "factsort");
    print "<tr><td class=\"descriptionbox\">";
    print_help_link("add_new_facts_help", "qm");
    print $pgv_lang["add_fact"] . "</td>";
    print "<td class=\"optionbox\">";
    print "<form method=\"get\" name=\"newfactform\" action=\"\" onsubmit=\"return false;\">\n";
    print "<select id=\"newfact\" name=\"newfact\">\n";
    foreach ($addfacts as $indexval => $fact) {
        print PrintReady("<option value=\"{$fact}\">" . $factarray[$fact] . " [" . $fact . "]</option>\n");
    }
    if ($type == "INDI" || $type == "FAM") {
        print "<option value=\"EVEN\">" . $pgv_lang["custom_event"] . " [EVEN]</option>\n";
    }
    if (!empty($_SESSION["clipboard"])) {
        foreach ($_SESSION["clipboard"] as $key => $fact) {
            if ($fact["type"] == $type || $fact["type"] == 'all') {
                print "<option value=\"clipboard_{$key}\">" . $pgv_lang["add_from_clipboard"] . " " . $factarray[$fact["fact"]] . "</option>\n";
            }
        }
    }
    print "</select>";
    print "<input type=\"button\" value=\"" . $pgv_lang["add"] . "\" onclick=\"add_record('{$id}', 'newfact');\" />\n";
    foreach ($quickfacts as $k => $v) {
        echo "&nbsp;<small><a href='javascript://{$v}' onclick=\"add_new_record('{$id}', '{$v}');return false;\">" . $factarray["{$v}"] . "</a></small>&nbsp;";
    }
    print "</form>\n";
    print "</td></tr>\n";
}
Example #2
0
/**
 * Print a new fact box on details pages
 *
 * @param string $id        the id of the person, family, source etc the fact will be added to
 * @param array  $usedfacts an array of facts already used in this record
 * @param string $type      the type of record INDI, FAM, SOUR etc
 */
function print_add_new_fact($id, $usedfacts, $type)
{
    global $WT_SESSION;
    // -- Add from clipboard
    if ($WT_SESSION->clipboard) {
        $newRow = true;
        foreach (array_reverse($WT_SESSION->clipboard, true) as $fact_id => $fact) {
            if ($fact["type"] == $type || $fact["type"] == 'all') {
                if ($newRow) {
                    $newRow = false;
                    echo '<tr><td class="descriptionbox">';
                    echo WT_I18N::translate('Add from clipboard'), '</td>';
                    echo '<td class="optionbox wrap"><form method="get" name="newFromClipboard" action="?" onsubmit="return false;">';
                    echo '<select id="newClipboardFact">';
                }
                echo '<option value="', WT_Filter::escapeHtml($fact_id), '">', WT_Gedcom_Tag::getLabel($fact['fact']);
                // TODO use the event class to store/parse the clipboard events
                if (preg_match('/^2 DATE (.+)/m', $fact['factrec'], $match)) {
                    $tmp = new WT_Date($match[1]);
                    echo '; ', $tmp->minDate()->format('%Y');
                }
                if (preg_match('/^2 PLAC ([^,\\n]+)/m', $fact['factrec'], $match)) {
                    echo '; ', $match[1];
                }
                echo '</option>';
            }
        }
        if (!$newRow) {
            echo '</select>';
            echo '&nbsp;&nbsp;<input type="button" value="', WT_I18N::translate('Add'), "\" onclick=\"return paste_fact('{$id}', '#newClipboardFact');\"> ";
            echo '</form></td></tr>', "\n";
        }
    }
    // -- Add from pick list
    switch ($type) {
        case "INDI":
            $addfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'INDI_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
            $uniquefacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'INDI_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
            $quickfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'INDI_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
            break;
        case "FAM":
            $addfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'FAM_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
            $uniquefacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'FAM_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
            $quickfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'FAM_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
            break;
        case "SOUR":
            $addfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'SOUR_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
            $uniquefacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'SOUR_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
            $quickfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'SOUR_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
            break;
        case "NOTE":
            $addfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'NOTE_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
            $uniquefacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'NOTE_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
            $quickfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'NOTE_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
            break;
        case "REPO":
            $addfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'REPO_FACTS_ADD'), -1, PREG_SPLIT_NO_EMPTY);
            $uniquefacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'REPO_FACTS_UNIQUE'), -1, PREG_SPLIT_NO_EMPTY);
            $quickfacts = preg_split("/[, ;:]+/", get_gedcom_setting(WT_GED_ID, 'REPO_FACTS_QUICK'), -1, PREG_SPLIT_NO_EMPTY);
            break;
        default:
            return;
    }
    $addfacts = array_merge(CheckFactUnique($uniquefacts, $usedfacts, $type), $addfacts);
    $quickfacts = array_intersect($quickfacts, $addfacts);
    $translated_addfacts = array();
    foreach ($addfacts as $addfact) {
        $translated_addfacts[$addfact] = WT_Gedcom_Tag::getLabel($addfact);
    }
    uasort($translated_addfacts, function ($x, $y) {
        return WT_I18N::strcasecmp(WT_I18N::translate($x), WT_I18N::translate($y));
    });
    echo '<tr><td class="descriptionbox">';
    echo WT_I18N::translate('Fact or event');
    echo help_link('add_facts'), '</td>';
    echo '<td class="optionbox wrap">';
    echo '<form method="get" name="newfactform" action="?" onsubmit="return false;">';
    echo '<select id="newfact" name="newfact">';
    echo '<option value="" disabled selected>' . WT_I18N::translate('&lt;select&gt;') . '</option>';
    foreach ($translated_addfacts as $fact => $fact_name) {
        echo '<option value="', $fact, '">', $fact_name, '</option>';
    }
    if ($type == 'INDI' || $type == 'FAM') {
        echo '<option value="FACT">', WT_I18N::translate('Custom fact'), '</option>';
        echo '<option value="EVEN">', WT_I18N::translate('Custom event'), '</option>';
    }
    echo '</select>';
    echo '<input type="button" value="', WT_I18N::translate('Add'), '" onclick="add_record(\'' . $id . '\', \'newfact\');">';
    echo '<span class="quickfacts">';
    foreach ($quickfacts as $fact) {
        echo '<a href="#" onclick="add_new_record(\'' . $id . '\', \'' . $fact . '\');return false;">', WT_Gedcom_Tag::getLabel($fact), '</a>';
    }
    echo '</span></form>';
    echo '</td></tr>';
}