/** * get edit menu */ public function getEditMenu() { if (!$this->record || $this->record->isPendingDeletion()) { return null; } // edit menu $menu = new Menu(I18N::translate('Edit'), '#', 'menu-sour'); if (Auth::isEditor($this->record->getTree())) { $fact = $this->record->getFirstFact('TITL'); if ($fact) { // Edit existing name $menu->addSubmenu(new Menu(I18N::translate('Edit the source'), '#', 'menu-sour-edit', array('onclick' => 'return edit_record("' . $this->record->getXref() . '", "' . $fact->getFactId() . '");'))); } else { // Add new name $menu->addSubmenu(new Menu(I18N::translate('Edit the source'), '#', 'menu-sour-edit', array('onclick' => 'return add_fact("' . $this->record->getXref() . '", "TITL");'))); } // delete $menu->addSubmenu(new Menu(I18N::translate('Delete'), '#', 'menu-sour-del', array('onclick' => "return delete_record('" . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($this->record->getFullName()))) . "', '" . $this->record->getXref() . "');"))); } // edit raw if (Auth::isAdmin() || Auth::isEditor($this->record->getTree()) && $this->record->getTree()->getPreference('SHOW_GEDCOM_RECORD')) { $menu->addSubmenu(new Menu(I18N::translate('Edit the raw GEDCOM'), '#', 'menu-sour-editraw', array('onclick' => 'return edit_raw("' . $this->record->getXref() . '");'))); } return $menu; }
/** * get edit menu */ public function getEditMenu() { if (!$this->record || $this->record->isPendingDeletion()) { return null; } // edit menu $menu = new Menu(I18N::translate('Edit'), '#', 'menu-obje'); if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Edit the media object'), '#', 'menu-obje-edit', array('onclick' => 'window.open("addmedia.php?action=editmedia&pid=' . $this->record->getXref() . '", "_blank", edit_window_specs)'))); // main link displayed on page if (Module::getModuleByName('GEDFact_assistant')) { $menu->addSubmenu(new Menu(I18N::translate('Manage the links'), '#', 'menu-obje-link', array('onclick' => 'return ilinkitem("' . $this->record->getXref() . '","manage");'))); } else { $menu->addSubmenu(new Menu(I18N::translate('Link this media object to an individual'), '#', 'menu-obje-link-indi', array('onclick' => 'return ilinkitem("' . $this->record->getXref() . '","person");'))); $menu->addSubmenu(new Menu(I18N::translate('Link this media object to a family'), '#', 'menu-obje-link-fam', array('onclick' => 'return ilinkitem("' . $this->record->getXref() . '","family");'))); $menu->addSubmenu(new Menu(I18N::translate('Link this media object to a source'), '#', 'menu-obje-link-sour', array('onclick' => 'return ilinkitem("' . $this->record->getXref() . '","source");'))); } // delete $menu->addSubmenu(new Menu(I18N::translate('Delete'), '#', 'menu-obje-del', array('onclick' => 'return delete_record("' . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($this->record->getFullName()))) . '", "' . $this->record->getXref() . '");'))); } // edit raw if (Auth::isAdmin() || Auth::isEditor($this->record->getTree()) && $this->record->getTree()->getPreference('SHOW_GEDCOM_RECORD')) { $menu->addSubmenu(new Menu(I18N::translate('Edit the raw GEDCOM'), '#', 'menu-obje-editraw', array('onclick' => 'return edit_raw("' . $this->record->getXref() . '");'))); } return $menu; }
/** * get edit menu */ public function getEditMenu() { if (!$this->record || $this->record->isPendingDeletion()) { return null; } // edit menu $menu = new Menu(I18N::translate('Edit'), '#', 'menu-note'); if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Edit note'), '#', 'menu-note-edit', array('onclick' => 'return edit_note("' . $this->record->getXref() . '");'))); } // delete if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Delete'), '#', 'menu-note-del', array('onclick' => 'return delete_record("' . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($this->record->getFullName()))) . '", "' . $this->record->getXref() . '");'))); } // add to favorites if (Module::getModuleByName('user_favorites')) { $menu->addSubmenu(new Menu(I18N::translate('Add to favorites'), '#', 'menu-note-addfav', array('onclick' => 'jQuery.post("module.php?mod=user_favorites&mod_action=menu-add-favorite",{xref:"' . $this->record->getXref() . '"},function(){location.reload();})'))); } // Get the link for the first submenu and set it as the link for the main menu if ($menu->getSubmenus()) { $submenus = $menu->getSubmenus(); $menu->setLink($submenus[0]->getLink()); $menu->setAttrs($submenus[0]->getAttrs()); } return $menu; }
/** * get edit menu */ public function getEditMenu() { if (!$this->record || $this->record->isPendingDeletion()) { return null; } // edit menu $menu = new Menu(I18N::translate('Edit'), '#', 'menu-repo'); if (Auth::isEditor($this->record->getTree())) { $fact = $this->record->getFirstFact('NAME'); if ($fact) { // Edit existing name $menu->addSubmenu(new Menu(I18N::translate('Edit the repository'), '#', 'menu-repo-edit', array('onclick' => 'return edit_record("' . $this->record->getXref() . '", "' . $fact->getFactId() . '");'))); } else { // Add new name $menu->addSubmenu(new Menu(I18N::translate('Edit the repository'), '#', 'menu-repo-edit', array('onclick' => 'return add_fact("' . $this->record->getXref() . '", "NAME");'))); } } // delete if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Delete'), '#', 'menu-repo-del', array('onclick' => 'return delete_record("' . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($this->record->getFullName()))) . '", "' . $this->record->getXref() . '");'))); } // edit raw if (Auth::isAdmin() || Auth::isEditor($this->record->getTree()) && $this->record->getTree()->getPreference('SHOW_GEDCOM_RECORD')) { $menu->addSubmenu(new Menu(I18N::translate('Edit the raw GEDCOM'), '#', 'menu-repo-editraw', array('onclick' => 'return edit_raw("' . $this->record->getXref() . '");'))); } // add to favorites if (Module::getModuleByName('user_favorites')) { $menu->addSubmenu(new Menu(I18N::translate('Add to favorites'), '#', 'menu-repo-addfav', array('onclick' => 'jQuery.post("module.php?mod=user_favorites&mod_action=menu-add-favorite" ,{xref:"' . $this->record->getXref() . '"},function(){location.reload();})'))); } return $menu; }
/** * get edit menu */ public function getEditMenu() { if (!$this->record || $this->record->isPendingDeletion()) { return null; } // edit menu $menu = new Menu(I18N::translate('Edit'), '#', 'menu-note'); if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Edit the note'), '#', 'menu-note-edit', array('onclick' => 'return edit_note("' . $this->record->getXref() . '");'))); // delete $menu->addSubmenu(new Menu(I18N::translate('Delete'), '#', 'menu-note-del', array('onclick' => 'return delete_record("' . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($this->record->getFullName()))) . '", "' . $this->record->getXref() . '");'))); } return $menu; }
/** * get edit menu */ public function getEditMenu() { if (!$this->record || $this->record->isPendingDeletion()) { return null; } // edit menu $menu = new Menu(I18N::translate('Edit'), '#', 'menu-obje'); if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Edit media object'), '#', 'menu-obje-edit', array('onclick' => 'window.open("addmedia.php?action=editmedia&pid=' . $this->record->getXref() . '", "_blank", edit_window_specs)'))); // main link displayed on page if (Module::getModuleByName('GEDFact_assistant')) { $menu->addSubmenu(new Menu(I18N::translate('Manage links'), '#', 'menu-obje-link', array('onclick' => 'return ilinkitem("' . $this->record->getXref() . '","manage");'))); } else { $menu->addSubmenu(new Menu(I18N::translate('Link this media object to an individual'), '#', 'menu-obje-link-indi', array('onclick' => 'return ilinkitem("' . $this->record->getXref() . '","person");'))); $menu->addSubmenu(new Menu(I18N::translate('Link this media object to a family'), '#', 'menu-obje-link-fam', array('onclick' => 'return ilinkitem("' . $this->record->getXref() . '","family");'))); $menu->addSubmenu(new Menu(I18N::translate('Link this media object to a source'), '#', 'menu-obje-link-sour', array('onclick' => 'return ilinkitem("' . $this->record->getXref() . '","source");'))); } } // delete if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Delete'), '#', 'menu-obje-del', array('onclick' => 'return delete_record("' . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($this->record->getFullName()))) . '", "' . $this->record->getXref() . '");'))); } // edit raw if (Auth::isAdmin() || Auth::isEditor($this->record->getTree()) && $this->record->getTree()->getPreference('SHOW_GEDCOM_RECORD')) { $menu->addSubmenu(new Menu(I18N::translate('Edit raw GEDCOM'), '#', 'menu-obje-editraw', array('onclick' => 'return edit_raw("' . $this->record->getXref() . '");'))); } // add to favorites if (Module::getModuleByName('user_favorites')) { $menu->addSubmenu(new Menu(I18N::translate('Add to favorites'), '#', 'menu-obje-addfav', array('onclick' => 'jQuery.post("module.php?mod=user_favorites&mod_action=menu-add-favorite",{xref:"' . $this->record->getXref() . '"},function(){location.reload();})'))); } // Get the link for the first submenu and set it as the link for the main menu if ($menu->getSubmenus()) { $submenus = $menu->getSubmenus(); $menu->setLink($submenus[0]->getLink()); $menu->setAttrs($submenus[0]->getAttrs()); } return $menu; }
/** * get edit menu */ public function getEditMenu() { if (!$this->record || $this->record->isPendingDeletion()) { return null; } // edit menu $menu = new Menu(I18N::translate('Edit'), '#', 'menu-sour'); if (Auth::isEditor($this->record->getTree())) { $fact = $this->record->getFirstFact('TITL'); if ($fact) { // Edit existing name $menu->addSubmenu(new Menu(I18N::translate('Edit source'), '#', 'menu-sour-edit', array('onclick' => 'return edit_record("' . $this->record->getXref() . '", "' . $fact->getFactId() . '");'))); } else { // Add new name $menu->addSubmenu(new Menu(I18N::translate('Edit source'), '#', 'menu-sour-edit', array('onclick' => 'return add_fact("' . $this->record->getXref() . '", "TITL");'))); } } // delete if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Delete'), '#', 'menu-sour-del', array('onclick' => "return delete_record('" . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($this->record->getFullName()))) . "', '" . $this->record->getXref() . "');"))); } // edit raw if (Auth::isAdmin() || Auth::isEditor($this->record->getTree()) && $this->record->getTree()->getPreference('SHOW_GEDCOM_RECORD')) { $menu->addSubmenu(new Menu(I18N::translate('Edit raw GEDCOM'), '#', 'menu-sour-editraw', array('onclick' => 'return edit_raw("' . $this->record->getXref() . '");'))); } // add to favorites if (Module::getModuleByName('user_favorites')) { $menu->addSubmenu(new Menu(I18N::translate('Add to favorites'), '#', 'menu-sour-addfav', array('onlick' => 'jQuery.post("module.php?mod=user_favorites&mod_action=menu-add-favorite",{xref:"' . $this->record->getXref() . '"},function(){location.reload();})'))); } // Get the link for the first submenu and set it as the link for the main menu if ($menu->getSubmenus()) { $submenus = $menu->getSubmenus(); $menu->setLink($submenus[0]->getLink()); $menu->setAttrs($submenus[0]->getAttrs()); } return $menu; }
/** * Display family members with clickable links * * @param Family $family * @param Individual $individual */ function print_navigator_family(Family $family, Individual $individual) { foreach ($family->getSpouses() as $spouse) { ?> <tr class="fact_value"> <td class="facts_value"> <a href="edit_interface.php?action=addmedia_links&noteid=newnote&pid=<?php echo $spouse->getXref(); ?> &gedcom=<?php echo $spouse->getTree()->getNameUrl(); ?> "> <i class="headimg vmiddle icon-button_head"></i> </a> </td> <td class="facts_value" > <a href="#" onclick="opener.insertRowToTable('<?php echo $spouse->getXref(); ?> ', '<?php echo Filter::escapeJs($spouse->getFullName()); ?> ', '', '', '', '', '', '', '', '');"> <?php echo $spouse === $individual ? '<b>' : ''; ?> <?php echo $spouse->getFullName(); ?> <?php echo $spouse->getLifeSpan(); ?> <?php echo $spouse === $individual ? '</b>' : ''; ?> </a> </td> <tr> <?php } foreach ($family->getChildren() as $child) { ?> <tr> <td class="facts_value" > <a href="edit_interface.php?action=addmedia_links&noteid=newnote&pid=<?php echo $child->getXref(); ?> &gedcom=<?php echo $child->getTree()->getNameUrl(); ?> "> <i class="headimg vmiddle icon-button_head"></i> </a> </td> <td class="facts_value"> <a href="#" onclick="opener.insertRowToTable('<?php echo $child->getXref(); ?> ', '<?php echo Filter::escapeJs($child->getFullName()); ?> ', '', '', '', '', '', '', '', '');"> <?php echo $child === $individual ? '<b>' : ''; ?> <?php echo $child->getFullName(); ?> <?php echo $child->getLifeSpan(); ?> <?php echo $child === $individual ? '</b>' : ''; ?> </a> </td> </tr> <?php } }
/** * SosaList@index */ public function index() { global $WT_TREE; $controller = new PageController(); $controller->setPageTitle(I18N::translate('Sosa Ancestors')); $this->view_bag->set('title', $controller->getPageTitle()); if ($this->view_bag->get('is_setup', false)) { $this->view_bag->set('has_sosa', $this->generation > 0 && $this->sosa_provider->getSosaCountAtGeneration($this->generation) > 0); $this->view_bag->set('url_module', $this->module->getName()); $this->view_bag->set('url_action', 'SosaList'); $this->view_bag->set('url_ged', $WT_TREE->getNameUrl()); $this->view_bag->set('min_gen', 1); if ($this->view_bag->get('has_sosa', false)) { $controller->addInlineJavascript(' jQuery("#sosalist-tabs").tabs(); jQuery("#sosalist-tabs").css("visibility", "visible"); jQuery.get( "module.php", { "mod" : "' . $this->module->getName() . '", "mod_action": "SosaList@sosalist", "ged" : "' . $WT_TREE->getNameUrl() . '", "type" : "indi", "gen" : "' . $this->generation . '" }, "html" ).success( function(data){ if(data){ jQuery("#sosalist-indi-data").html(data); /* datatablesosaindi(); */ } jQuery("#loading-indi").hide(); } ).error( function(){ jQuery("#sosalist-indi-data").html("' . Filter::escapeJs('<p class="warning">' . I18N::translate('An error occurred while retrieving data...') . '</p>') . '"); jQuery("#loading-indi").hide(); } ); jQuery.get( "module.php", { "mod" : "' . $this->module->getName() . '", "mod_action": "SosaList@sosalist", "ged" : "' . $WT_TREE->getNameUrl() . '", "type" : "fam", "gen" : "' . $this->generation . '" }, "html" ).success( function(data){ if(data){ jQuery("#sosalist-fam-data").html(data); } jQuery("#loading-fam").hide(); } ).error( function(){ jQuery("#sosalist-fam-data").html("' . Filter::escapeJs('<p class="warning">' . I18N::translate('An error occurred while retrieving data...') . '</p>') . '"); jQuery("#loading-fam").hide(); } ); '); } } ViewFactory::make('SosaList', $this, $controller, $this->view_bag)->render(); }
</a> <form name="delete_form<?php echo $tree->getTreeId(); ?> " method="post"> <input type="hidden" name="action" value="delete"> <input type="hidden" name="gedcom_id" value="<?php echo $tree->getTreeId(); ?> "> <?php echo Filter::getCsrf(); ?> <!-- A11Y - forms need submit buttons, but they look ugly here --> <button class="sr-only" onclick="return confirm('<?php echo I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs($tree->getTitle())); ?> ')" type="submit"> <?php echo I18N::translate('Delete'); ?> </button> </form> </li> <!-- SET AS DEFAULT --> <?php if (count(Tree::getAll()) > 1) { ?> <li> <i class="fa fa-li fa-star"></i> <?php
/** * Create a family on the census navigator. * * @param CensusInterface $census * @param Family $family * @param Individual $head * * @return string */ public static function censusNavigatorFamily(CensusInterface $census, Family $family, Individual $head) { $headImg2 = '<i class="icon-button_head" title="' . I18N::translate('Head of household') . '"></i>'; foreach ($family->getSpouses() as $spouse) { $menu = new Menu(Functions::getCloseRelationshipName($head, $spouse)); foreach ($spouse->getChildFamilies() as $grandparents) { foreach ($grandparents->getSpouses() as $grandparent) { $submenu = new Menu(Functions::getCloseRelationshipName($head, $grandparent) . ' - ' . $grandparent->getFullName(), '#', '', array('onclick' => 'return appendCensusRow("' . Filter::escapeJs(self::censusTableRow($census, $grandparent, $head)) . '");')); $submenu->addClass('submenuitem', ''); $menu->addSubmenu($submenu); $menu->addClass('', 'submenu'); } } ?> <tr> <td class="optionbox"> <?php echo $menu->getMenu(); ?> </td> <td class="facts_value nowrap"> <a href="#" onclick="return appendCensusRow('<?php echo Filter::escapeJs(self::censusTableRow($census, $spouse, $head)); ?> ');"> <?php echo $spouse->getFullName(); ?> </a> </td> <td class="facts_value"> <?php if ($head !== $spouse) { ?> <a href="edit_interface.php?action=addnewnote_assisted&noteid=newnote&xref=<?php echo $spouse->getXref(); ?> &gedcom=<?php echo $spouse->getTree()->getNameUrl(); ?> &census=<?php echo get_class($census); ?> "> <?php echo $headImg2; ?> </a> <?php } ?> </td> </tr> <?php } foreach ($family->getChildren() as $child) { $menu = new Menu(Functions::getCloseRelationshipName($head, $child)); foreach ($child->getSpouseFamilies() as $spouse_family) { foreach ($spouse_family->getSpouses() as $spouse_family_spouse) { if ($spouse_family_spouse != $child) { $submenu = new Menu(Functions::getCloseRelationshipName($head, $spouse_family_spouse) . ' - ' . $spouse_family_spouse->getFullName(), '#', '', array('onclick' => 'return appendCensusRow("' . Filter::escapeJs(self::censusTableRow($census, $spouse_family_spouse, $head)) . '");')); $submenu->addClass('submenuitem', ''); $menu->addSubmenu($submenu); $menu->addClass('', 'submenu'); } } foreach ($spouse_family->getChildren() as $spouse_family_child) { $submenu = new Menu(Functions::getCloseRelationshipName($head, $spouse_family_child) . ' - ' . $spouse_family_child->getFullName(), '#', '', array('onclick' => 'return appendCensusRow("' . Filter::escapeJs(self::censusTableRow($census, $spouse_family_child, $head)) . '");')); $submenu->addClass('submenuitem', ''); $menu->addSubmenu($submenu); $menu->addClass('', 'submenu'); } } ?> <tr> <td class="optionbox"> <?php echo $menu->getMenu(); ?> </td> <td class="facts_value"> <a href="#" onclick="return appendCensusRow('<?php echo Filter::escapeJs(self::censusTableRow($census, $child, $head)); ?> ');"> <?php echo $child->getFullName(); ?> </a> </td> <td class="facts_value"> <?php if ($head !== $child) { ?> <a href="edit_interface.php?action=addnewnote_assisted&noteid=newnote&xref=<?php echo $child->getXref(); ?> &gedcom=<?php echo $child->getTree()->getNameUrl(); ?> &census=<?php echo get_class($census); ?> "> <?php echo $headImg2; ?> </a> <?php } ?> </td> </tr> <?php } echo '<tr><td><br></td></tr>'; }
/** * Generate consistent I18N for datatables.js * * @param array|null $lengths An optional array of page lengths * * @return string */ public static function datatablesI18N(array $lengths = null) { if ($lengths === null) { $lengths = array(10, 20, 30, 50, 100, -1); } $length_menu = ''; foreach ($lengths as $length) { $length_menu .= '<option value="' . $length . '">' . ($length === -1 ? self::translate('All') : self::number($length)) . '</option>'; } $length_menu = '<select>' . $length_menu . '</select>'; $length_menu = self::translate('Display %s', $length_menu); $digits = self::$locale->digits('0123456789'); if ($digits === '0123456789') { $callback = ''; } else { $callback = ', "infoCallback": function(oSettings, iStart, iEnd, iMax, iTotal, sPre) { return sPre .replace(/0/g, "' . mb_substr($digits, 0, 1) . '") .replace(/1/g, "' . mb_substr($digits, 1, 1) . '") .replace(/2/g, "' . mb_substr($digits, 2, 1) . '") .replace(/3/g, "' . mb_substr($digits, 3, 1) . '") .replace(/4/g, "' . mb_substr($digits, 4, 1) . '") .replace(/5/g, "' . mb_substr($digits, 5, 1) . '") .replace(/6/g, "' . mb_substr($digits, 6, 1) . '") .replace(/7/g, "' . mb_substr($digits, 7, 1) . '") .replace(/8/g, "' . mb_substr($digits, 8, 1) . '") .replace(/9/g, "' . mb_substr($digits, 9, 1) . '"); }, "formatNumber": function(iIn) { return String(iIn) .replace(/0/g, "' . mb_substr($digits, 0, 1) . '") .replace(/1/g, "' . mb_substr($digits, 1, 1) . '") .replace(/2/g, "' . mb_substr($digits, 2, 1) . '") .replace(/3/g, "' . mb_substr($digits, 3, 1) . '") .replace(/4/g, "' . mb_substr($digits, 4, 1) . '") .replace(/5/g, "' . mb_substr($digits, 5, 1) . '") .replace(/6/g, "' . mb_substr($digits, 6, 1) . '") .replace(/7/g, "' . mb_substr($digits, 7, 1) . '") .replace(/8/g, "' . mb_substr($digits, 8, 1) . '") .replace(/9/g, "' . mb_substr($digits, 9, 1) . '"); } '; } return '"language": {' . ' "paginate": {' . ' "first": "' . self::translate('first') . '",' . ' "last": "' . self::translate('last') . '",' . ' "next": "' . self::translate('next') . '",' . ' "previous": "' . self::translate('previous') . '"' . ' },' . ' "emptyTable": "' . self::translate('No records to display') . '",' . ' "info": "' . self::translate('Showing %1$s to %2$s of %3$s', '_START_', '_END_', '_TOTAL_') . '",' . ' "infoEmpty": "' . self::translate('Showing %1$s to %2$s of %3$s', 0, 0, 0) . '",' . ' "infoFiltered": "' . self::translate('(filtered from %s total entries)', '_MAX_') . '",' . ' "infoPostfix": "",' . ' "lengthMenu": "' . Filter::escapeJs($length_menu) . '",' . ' "loadingRecords": "' . self::translate('Loading…') . '",' . ' "processing": "' . self::translate('Loading…') . '",' . ' "search": "' . self::translate('Filter') . '",' . ' "url": "",' . ' "zeroRecords": "' . self::translate('No records to display') . '"' . '}' . $callback; }
header('Location: ' . WT_BASE_URL . WT_SCRIPT_NAME); break; default: $controller->setPageTitle(I18N::translate('User administration'))->addExternalJavascript(WT_JQUERY_DATATABLES_JS_URL)->addExternalJavascript(WT_DATATABLES_BOOTSTRAP_JS_URL)->addInlineJavascript(' jQuery(".table-user-list").dataTable({ ' . I18N::datatablesI18N() . ', stateSave: true, stateDuration: 300, processing: true, serverSide: true, ajax: { "url": "' . WT_SCRIPT_NAME . '?action=load_json", "type": "POST" }, search: { search: "' . Filter::escapeJs(Filter::get('filter')) . '" }, autoWidth: false, pageLength: ' . Auth::user()->getPreference('admin_users_page_size', 10) . ', sorting: [[2, "asc"]], columns: [ /* details */ { sortable: false }, /* user-id */ { visible: false }, /* user_name */ null, /* real_name */ null, /* email */ null, /* language */ null, /* registered (sort) */ { visible: false }, /* registered */ { dataSort: 7 }, /* last_login (sort) */ { visible: false }, /* last_login */ { dataSort: 9 },
?> <p class="small text-muted"> <?php echo I18N::translate('This checkbox controls your visibility to other users while you’re online. It also controls your ability to see other online users who are configured to be visible.<br><br>When this box is unchecked, you will be completely invisible to others, and you will also not be able to see other online users. When this box is checked, exactly the opposite is true. You will be visible to others, and you will also be able to see others who are configured to be visible.'); ?> </p> </div> </div> <div id="edituser_submit"> <input type="submit" value="<?php echo I18N::translate('save'); ?> "> </div> <?php if (!Auth::user()->getPreference('canadmin')) { ?> <a href="#" onclick="if (confirm('<?php echo I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Auth::user()->getUserName())); ?> ')) {jQuery('#form_action').val('delete'); document.editform.submit(); }"> <?php echo I18N::translate('Delete your account'); ?> </a> <?php } ?> </form> </div> <?php
} echo '</div>'; } // Output Sources if ($type == "source") { echo '<div id="find-output">'; if ($filter) { $mysourcelist = FunctionsDb::searchSources($filter_array, array($WT_TREE)); } else { $mysourcelist = FunctionsDb::getSourceList($WT_TREE); } if ($mysourcelist) { usort($mysourcelist, '\\Fisharebest\\Webtrees\\GedcomRecord::compare'); echo '<ul>'; foreach ($mysourcelist as $source) { echo '<li><a href="', $source->getHtmlUrl(), '" onclick="pasteid(\'', $source->getXref(), '\', \'', Filter::escapeJs($source->getFullName()), '\');"><span class="list_item">', $source->getFullName(), '</span></a></li>'; } echo '</ul> <p>', I18N::translate('Total sources: %s', count($mysourcelist)), '</p>'; } else { echo '<p>', I18N::translate('No results found.'), '</p>'; } echo '</div>'; } // Output Special Characters if ($type == "specialchar") { echo '<div id="find-output-special"><p>'; // lower case special characters foreach (SpecialChars::create($language_filter)->upper() as $special_character) { echo '<a class="largechars" href="#" onclick="return window.opener.paste_char(\'', $special_character, '\');">', $special_character, '</a> '; }
list3.selectedIndex = -1; } if (list_name=="available_select") { list1.selectedIndex = -1; list3.selectedIndex = -1; } if (list_name=="right_select") { list1.selectedIndex = -1; list2.selectedIndex = -1; } } var block_descr = new Array(); '); // Load Block Description array for use by javascript foreach ($all_blocks as $block_name => $block) { $controller->addInlineJavascript('block_descr["' . $block_name . '"] = "' . Filter::escapeJs($block->getDescription()) . '";'); } $controller->addInlineJavascript('block_descr["advice1"] = "' . I18N::translate('Select a block and use the arrows to move it.') . '";'); ?> <h2><?php echo $controller->getPageTitle(); ?> </h2> <form name="config_setup" method="post" action="index_edit.php?action=update" onsubmit="select_options();" > <input type="hidden" name="user_id" value="<?php echo $user_id; ?> "> <input type="hidden" name="gedcom_id" value="<?php
/** * get edit menu */ public function getEditMenu() { if (!$this->record || $this->record->isPendingDeletion()) { return null; } // edit menu $menu = new Menu(I18N::translate('Edit'), '#', 'menu-record'); // edit raw if (Auth::isAdmin() || Auth::isEditor($this->record->getTree()) && $this->record->getTree()->getPreference('SHOW_GEDCOM_RECORD')) { $menu->addSubmenu(new Menu(I18N::translate('Edit the raw GEDCOM'), '#', 'menu-record-editraw', array('onclick' => 'return edit_raw("' . $this->record->getXref() . '");'))); } // delete if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Delete'), '#', 'menu-record-del', array('onclick' => 'return delete_record("' . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($this->record->getFullName()))) . '", "' . $this->record->getXref() . '");'))); } return $menu; }
/** * get edit menu */ public function getEditMenu() { if (!$this->record || $this->record->isPendingDeletion()) { return null; } // edit menu $menu = new Menu(I18N::translate('Edit'), '#', 'menu-indi', array('onclick' => 'return false;')); // What behaviour shall we give the main menu? If we leave it blank, the framework // will copy the first submenu - which may be edit-raw or delete. // As a temporary solution, make it edit the name if (Auth::isEditor($this->record->getTree())) { foreach ($this->record->getFacts() as $fact) { if ($fact->getTag() === 'NAME' && $fact->canEdit()) { $menu->setAttrs(array('onclick' => 'return edit_name("' . $this->record->getXref() . '", "' . $fact->getFactId() . '");')); break; } } $menu->addSubmenu(new Menu(I18N::translate('Add a new name'), '#', 'menu-indi-addname', array('onclick' => 'return add_name("' . $this->record->getXref() . '");'))); $has_sex_record = false; foreach ($this->record->getFacts() as $fact) { if ($fact->getTag() === 'SEX' && $fact->canEdit()) { $menu->addSubmenu(new Menu(I18N::translate('Edit gender'), '#', 'menu-indi-editsex', array('onclick' => 'return edit_record("' . $this->record->getXref() . '", "' . $fact->getFactId() . '");'))); $has_sex_record = true; break; } } if (!$has_sex_record) { $menu->addSubmenu(new Menu(I18N::translate('Edit gender'), '#', 'menu-indi-editsex', array('return add_new_record("' . $this->record->getXref() . '", "SEX");'))); } if (count($this->record->getSpouseFamilies()) > 1) { $menu->addSubmenu(new Menu(I18N::translate('Re-order families'), '#', 'menu-indi-orderfam', array('onclick' => 'return reorder_families("' . $this->record->getXref() . '");'))); } } // delete if (Auth::isEditor($this->record->getTree())) { $menu->addSubmenu(new Menu(I18N::translate('Delete'), '#', 'menu-indi-del', array('onclick' => 'return delete_record("' . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($this->record->getFullName()))) . '", "' . $this->record->getXref() . '");'))); } // edit raw if (Auth::isAdmin() || Auth::isEditor($this->record->getTree()) && $this->record->getTree()->getPreference('SHOW_GEDCOM_RECORD')) { $menu->addSubmenu(new Menu(I18N::translate('Edit raw GEDCOM'), '#', 'menu-indi-editraw', array('onclick' => 'return edit_raw("' . $this->record->getXref() . '");'))); } // add to favorites if (Module::getModuleByName('user_favorites')) { $menu->addSubmenu(new Menu(I18N::translate('Add to favorites'), '#', 'menu-indi-addfav', array('onclick' => 'jQuery.post("module.php?mod=user_favorites&mod_action=menu-add-favorite",{xref:"' . $this->record->getXref() . '"},function(){location.reload();})'))); } return $menu; }
/** * Generate some useful information and links about a media object. * * @param Media $media * * @return string HTML */ function mediaObjectInfo(Media $media) { $xref = $media->getXref(); $gedcom = $media->getTree()->getName(); $html = '<div class="btn-group"><button type="button" class="btn btn-primary dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-pencil"></i> <span class="caret"></span></button><ul class="dropdown-menu" role="menu">' . '<li><a href="#" onclick="window.open(\'addmedia.php?action=editmedia&pid=' . $xref . '&ged=' . Filter::escapeJs($gedcom) . '\', \'_blank\', edit_window_specs);"><i class="fa fa-fw fa-pencil"></i> ' . I18N::translate('Edit') . '</a></li>' . '<li><a href="#" onclick="return delete_record(\'' . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($media->getFullName()))) . '\', \'' . $media->getXref() . '\', \'' . Filter::escapeJs($gedcom) . '\');"><i class="fa fa-fw fa-trash-o"></i> ' . I18N::translate('Delete') . '</a></li>' . '<li><a href="#" onclick="return ilinkitem(\'' . $media->getXref() . '\', \'person\', WT_GEDCOM)"><i class="fa fa-fw fa-link"></i> ' . I18N::translate('Link this media object to an individual') . '</a></li>' . '<li><a href="#" onclick="return ilinkitem(\'' . $media->getXref() . '\', \'family\', WT_GEDCOM)"><i class="fa fa-fw fa-link"></i> ' . I18N::translate('Link this media object to a family') . '</a></li>' . '<li><a href="#" onclick="return ilinkitem(\'' . $media->getXref() . '\', \'source\', WT_GEDCOM)"><i class="fa fa-fw fa-link"></i> ' . I18N::translate('Link this media object to a source') . '</a></li>'; if (Module::getModuleByName('GEDFact_assistant')) { $html .= '<li><a href="#" onclick="return ilinkitem(\'' . $media->getXref() . '\', \'manage\', WT_GEDCOM)"><i class="fa fa-fw fa-link"></i> ' . I18N::translate('Manage the links') . '</a></li>'; } $html .= '</ul></div> ' . '<b><a href="' . $media->getHtmlUrl() . '">' . $media->getFullName() . '</a></b>' . '<div><i>' . Filter::escapeHtml($media->getNote()) . '</i></div>'; $html .= '<br>'; $linked = array(); foreach ($media->linkedIndividuals('OBJE') as $link) { $linked[] = '<a href="' . $link->getHtmlUrl() . '">' . $link->getFullName() . '</a>'; } foreach ($media->linkedFamilies('OBJE') as $link) { $linked[] = '<a href="' . $link->getHtmlUrl() . '">' . $link->getFullName() . '</a>'; } foreach ($media->linkedSources('OBJE') as $link) { $linked[] = '<a href="' . $link->getHtmlUrl() . '">' . $link->getFullName() . '</a>'; } foreach ($media->linkedNotes('OBJE') as $link) { // Invalid GEDCOM - you cannot link a NOTE to an OBJE $linked[] = '<a href="' . $link->getHtmlUrl() . '">' . $link->getFullName() . '</a>'; } foreach ($media->linkedRepositories('OBJE') as $link) { // Invalid GEDCOM - you cannot link a REPO to an OBJE $linked[] = '<a href="' . $link->getHtmlUrl() . '">' . $link->getFullName() . '</a>'; } if ($linked) { $html .= '<ul>'; foreach ($linked as $link) { $html .= '<li>' . $link . '</li>'; } $html .= '</ul>'; } else { $html .= '<div class="alert alert-danger">' . I18N::translate('This media object is not linked to any other record.') . '</div>'; } return $html; }
tr.cells[7].childNodes[0].style.background = '#ffffff'; tr.cells[12].childNodes[0].style.background = '#ffffff'; } else { // alert(tr.cells[2].childNodes[0].value+" - Not Born Yet"); tr.cells[2].childNodes[0].style.background = '#ffaaaa'; tr.cells[7].childNodes[0].style.background = '#ffaaaa'; tr.cells[12].childNodes[0].style.background = '#ffaaaa'; } } } } var cens_ctry_a = document.getElementById('censCtry'); var cens_ctry = cens_ctry_a.value; document.getElementById('Titl').value = '<?php echo I18N::translate('Census transcript'), ' - ', Filter::escapeJs($wholename), ' - ', I18N::translate('Household'); ?> '; var prev = document.getElementById('prevYear'); prev.value = cenyear; } // Add or Remove columns =========================== function changeCols(cenyear) { var cens_ctry = document.getElementById('censCtry').value; var cols_0 = document.getElementsByName('col_0'); var cols_1 = document.getElementsByName('col_1'); var cols_2 = document.getElementsByName('col_2'); var cols_3 = document.getElementsByName('col_3'); var cols_4 = document.getElementsByName('col_4');
/** * Edit places. */ private function placesEdit() { $GM_MAX_ZOOM = $this->getSetting('GM_MAX_ZOOM'); $action = Filter::post('action', null, Filter::get('action')); $placeid = Filter::post('placeid', null, Filter::get('placeid')); $place_name = Filter::post('place_name', null, Filter::get('place_name')); $placeid = (int) $placeid; // Convert empty string to zero $place_icon = ''; // Update Street View fields fields if ($action === 'update_sv_params' && Auth::isAdmin() && Filter::checkCsrf()) { Database::prepare("UPDATE `##placelocation`" . " SET sv_lati = :sv_latitude, sv_long = :sv_longitude, sv_bearing = :sv_bearing, sv_elevation = :sv_elevation, sv_zoom = :sv_zoom" . " WHERE pl_id = :place_id")->execute(array('sv_latitude' => (double) Filter::post('sv_latiText'), 'sv_longitude' => (double) Filter::post('sv_longText'), 'sv_bearing' => (double) Filter::post('sv_bearText'), 'sv_elevation' => (double) Filter::post('sv_elevText'), 'sv_zoom' => (double) Filter::post('sv_zoomText'), 'place_id' => $placeid)); // TODO - submit this data via AJAX, so we won't need to redraw the page. header('Location: ' . Filter::post('destination', null, 'index.php')); return; } $controller = new SimpleController(); $controller->restrictAccess(Auth::isAdmin())->setPageTitle(I18N::translate('Geographic data'))->addInlineJavascript('jQuery("<link>", {rel: "stylesheet", type: "text/css", href: "' . WT_STATIC_URL . WT_MODULES_DIR . 'googlemap/css/wt_v3_googlemap.css"}).appendTo("head");')->pageHeader(); $where_am_i = $this->placeIdToHierarchy($placeid); $level = count($where_am_i); if ($action == 'addrecord' && Auth::isAdmin()) { $statement = Database::prepare("INSERT INTO `##placelocation` (pl_id, pl_parent_id, pl_level, pl_place, pl_long, pl_lati, pl_zoom, pl_icon) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); if (Filter::post('LONG_CONTROL') == '' || Filter::post('NEW_PLACE_LONG') == '' || Filter::post('NEW_PLACE_LATI') == '') { $statement->execute(array($this->getHighestIndex() + 1, $placeid, $level, Filter::post('NEW_PLACE_NAME'), null, null, Filter::post('NEW_ZOOM_FACTOR'), Filter::post('icon'))); } else { $statement->execute(array($this->getHighestIndex() + 1, $placeid, $level, Filter::post('NEW_PLACE_NAME'), Filter::post('LONG_CONTROL') . Filter::post('NEW_PLACE_LONG'), Filter::post('LATI_CONTROL') . Filter::post('NEW_PLACE_LATI'), Filter::post('NEW_ZOOM_FACTOR'), Filter::post('icon'))); } $controller->addInlineJavascript('closePopupAndReloadParent();'); return; } if ($action == 'updaterecord' && Auth::isAdmin()) { $statement = Database::prepare("UPDATE `##placelocation` SET pl_place=?, pl_lati=?, pl_long=?, pl_zoom=?, pl_icon=? WHERE pl_id=?"); if (Filter::post('LONG_CONTROL') == '' || Filter::post('NEW_PLACE_LONG') == '' || Filter::post('NEW_PLACE_LATI') == '') { $statement->execute(array(Filter::post('NEW_PLACE_NAME'), null, null, (int) Filter::post('NEW_ZOOM_FACTOR'), Filter::post('icon'), $placeid)); } else { $statement->execute(array(Filter::post('NEW_PLACE_NAME'), Filter::post('LATI_CONTROL') . Filter::post('NEW_PLACE_LATI'), Filter::post('LONG_CONTROL') . Filter::post('NEW_PLACE_LONG'), Filter::post('NEW_ZOOM_FACTOR'), Filter::post('icon'), $placeid)); } $controller->addInlineJavascript('closePopupAndReloadParent();'); return; } if ($action === 'update') { // --- find the place in the file $row = Database::prepare("SELECT pl_place, pl_lati, pl_long, pl_icon, pl_parent_id, pl_level, pl_zoom FROM `##placelocation` WHERE pl_id=?")->execute(array($placeid))->fetchOneRow(); $place_name = $row->pl_place; $place_icon = $row->pl_icon; $selected_country = explode("/", $place_icon); if (isset($selected_country[1]) && $selected_country[1] !== 'flags') { $selected_country = $selected_country[1]; } else { $selected_country = 'Countries'; } $parent_id = $row->pl_parent_id; $level = $row->pl_level; $zoomfactor = $row->pl_zoom; $parent_lati = 0.0; $parent_long = 0.0; if ($row->pl_lati !== null && $row->pl_long !== null) { $place_lati = (double) str_replace(array('N', 'S', ','), array('', '-', '.'), $row->pl_lati); $place_long = (double) str_replace(array('E', 'W', ','), array('', '-', '.'), $row->pl_long); } else { $place_lati = 0.0; $place_long = 0.0; $zoomfactor = 1; } do { $row = Database::prepare("SELECT pl_lati, pl_long, pl_parent_id, pl_zoom FROM `##placelocation` WHERE pl_id=?")->execute(array($parent_id))->fetchOneRow(); if (!$row) { break; } if ($row->pl_lati !== null && $row->pl_long !== null) { $parent_lati = (double) str_replace(array('N', 'S', ','), array('', '-', '.'), $row->pl_lati); $parent_long = (double) str_replace(array('E', 'W', ','), array('', '-', '.'), $row->pl_long); if ($zoomfactor == 1) { $zoomfactor = $row->pl_zoom; } } $parent_id = $row->pl_parent_id; } while ($row->pl_parent_id != 0 && $row->pl_lati === null && $row->pl_long === null); echo '<b>', Filter::escapeHtml(str_replace('Unknown', I18N::translate('unknown'), implode(I18N::$list_separator, array_reverse($where_am_i, true)))), '</b><br>'; } if ($action === 'add') { // --- find the parent place in the file if ($placeid != 0) { $place_lati = 0.0; $place_long = 0.0; $zoomfactor = 1; $parent_lati = 0.0; $parent_long = 0.0; $parent_id = $placeid; do { $row = Database::prepare("SELECT pl_lati, pl_long, pl_parent_id, pl_zoom, pl_level FROM `##placelocation` WHERE pl_id=?")->execute(array($parent_id))->fetchOneRow(); if ($row->pl_lati !== null && $row->pl_long !== null) { $parent_lati = strtr($row->pl_lati, array('N' => '', 'S' => '-', ',' => '.')); $parent_long = strtr($row->pl_long, array('E' => '', 'W' => '-', ',' => '.')); $zoomfactor = min($row->pl_zoom, $GM_MAX_ZOOM); $level = $row->pl_level + 1; } $parent_id = $row->pl_parent_id; } while ($row->pl_parent_id != 0 && $row->pl_lati === null && $row->pl_long === null); } else { $place_lati = 0.0; $place_long = 0.0; $parent_lati = 0.0; $parent_long = 0.0; $parent_id = 0; $level = 0; $zoomfactor = $this->getSetting('GM_MIN_ZOOM'); } $selected_country = 'Countries'; if ($place_name == '') { echo '<b>', I18N::translate('unknown'); } else { echo '<b>', $place_name; } if (count($where_am_i) > 0) { echo ', ', Filter::escapeHtml(str_replace('Unknown', I18N::translate('unknown'), implode(I18N::$list_separator, array_reverse($where_am_i, true)))), '</b><br>'; } echo '</b><br>'; } ?> <script src="<?php echo $this->googleMapsScript(); ?> "></script> <script> var map; var marker; var zoom; var pl_name = '<?php echo Filter::escapeJs($place_name); ?> '; <?php if ($place_lati !== 0.0 && $place_long !== 0.0) { ?> var latlng = new google.maps.LatLng(<?php echo $place_lati; ?> , <?php echo $place_long; ?> ); <?php } else { ?> var latlng = new google.maps.LatLng(<?php echo $parent_lati; ?> , <?php echo $parent_long; ?> ); <?php } ?> var pl_zoom = <?php echo $zoomfactor; ?> ; var polygon1; var polygon2; var geocoder; var mapType; var infowindow = new google.maps.InfoWindow({ // }); function geocodePosition(pos) { geocoder.geocode({ latLng: pos }, function(responses) { if (responses && responses.length > 0) { updateMarkerAddress(responses[0].formatted_address); } else { updateMarkerAddress('Cannot determine address at this location.'); } }); } /** * Redraw the map, centered and zoomed on the selected point. * * @param event */ function updateMap(event) { var point; var zoom = parseInt(document.editplaces.NEW_ZOOM_FACTOR.value); var latitude; var longitude; if ((document.editplaces.NEW_PLACE_LATI.value == '') || (document.editplaces.NEW_PLACE_LONG.value == '')) { latitude = parseFloat(document.editplaces.parent_lati.value).toFixed(5); longitude = parseFloat(document.editplaces.parent_long.value).toFixed(5); point = new google.maps.LatLng(latitude, longitude); } else { latitude = parseFloat(document.editplaces.NEW_PLACE_LATI.value).toFixed(5); longitude = parseFloat(document.editplaces.NEW_PLACE_LONG.value).toFixed(5); document.editplaces.NEW_PLACE_LATI.value = latitude; document.editplaces.NEW_PLACE_LONG.value = longitude; if (event == 'flag_drag') { if (longitude < 0.0 ) { longitude = longitude * -1; document.editplaces.NEW_PLACE_LONG.value = longitude; document.editplaces.LONG_CONTROL.value = 'W'; } else { document.editplaces.NEW_PLACE_LONG.value = longitude; document.editplaces.LONG_CONTROL.value = 'E'; } if (latitude < 0.0 ) { latitude = latitude * -1; document.editplaces.NEW_PLACE_LATI.value = latitude; document.editplaces.LATI_CONTROL.value = 'S'; } else { document.editplaces.NEW_PLACE_LATI.value = latitude; document.editplaces.LATI_CONTROL.value = 'N'; } if (document.editplaces.LATI_CONTROL.value == 'S') { latitude = latitude * -1; } if (document.editplaces.LONG_CONTROL.value == 'W') { longitude = longitude * -1; } point = new google.maps.LatLng(latitude, longitude); } else { if (latitude < 0.0) { latitude = latitude * -1; document.editplaces.NEW_PLACE_LATI.value = latitude; } if (longitude < 0.0) { longitude = longitude * -1; document.editplaces.NEW_PLACE_LONG.value = longitude; } if (document.editplaces.LATI_CONTROL.value == 'S') { latitude = latitude * -1; } if (document.editplaces.LONG_CONTROL.value == 'W') { longitude = longitude * -1; } point = new google.maps.LatLng(latitude, longitude); } } map.setCenter(point); map.setZoom(zoom); marker.setPosition(point); } // === Create Borders for the UK Countries ========================================================= function overlays() { // Define place LatLng arrays <?php $coordsAsStr = array(); switch (strtoupper($place_name)) { case 'ENGLAND': $coordsAsStr[] = '-4.74361,50.66750|-4.78361,50.59361|-4.91584,50.57722|-5.01750,50.54264|-5.02569,50.47271|-5.04729,50.42750|-5.15208,50.34374|-5.26805,50.27389|-5.43194,50.19326|-5.49584,50.21695|-5.54639,50.20527|-5.71000,50.12916|-5.71681,50.06083|-5.66174,50.03631|-5.58278,50.04777|-5.54166,50.07055|-5.53416,50.11569|-5.47055,50.12499|-5.33361,50.09138|-5.27666,50.05972|-5.25674,50.00514|-5.19306,49.95527|-5.16070,50.00319|-5.06555,50.03750|-5.07090,50.08166|-5.04806,50.17111|-4.95278,50.19333|-4.85750,50.23166|-4.76250,50.31138|-4.67861,50.32583|-4.54334,50.32222|-4.48278,50.32583|-4.42972,50.35139|-4.38000,50.36388|-4.16555,50.37028|-4.11139,50.33027|-4.05708,50.29791|-3.94389,50.31346|-3.87764,50.28139|-3.83653,50.22972|-3.78944,50.21222|-3.70666,50.20972|-3.65195,50.23111|-3.55139,50.43833|-3.49416,50.54639|-3.46181,50.58792|-3.41139,50.61610|-3.24416,50.67444|-3.17347,50.68833|-3.09445,50.69222|-2.97806,50.70638|-2.92750,50.73125|-2.88278,50.73111|-2.82305,50.72027|-2.77139,50.70861|-2.66195,50.67334|-2.56305,50.63222|-2.45861,50.57500|-2.44666,50.62639|-2.39097,50.64166|-2.19722,50.62611|-2.12195,50.60722|-2.05445,50.58569|-1.96437,50.59674|-1.95441,50.66536|-2.06681,50.71430|-1.93416,50.71277|-1.81639,50.72306|-1.68445,50.73888|-1.59278,50.72416|-1.33139,50.79138|-1.11695,50.80694|-1.15889,50.84083|-1.09445,50.84584|-0.92842,50.83966|-0.86584,50.79965|-0.90826,50.77396|-0.78187,50.72722|-0.74611,50.76583|-0.67528,50.78111|-0.57722,50.79527|-0.25500,50.82638|-0.19084,50.82583|-0.13805,50.81833|0.05695,50.78083|0.12334,50.75944|0.22778,50.73944|0.28695,50.76500|0.37195,50.81638|0.43084,50.83111|0.56722,50.84777|0.67889,50.87681|0.71639,50.90500|0.79334,50.93610|0.85666,50.92556|0.97125,50.98111|0.99778,51.01903|1.04555,51.04944|1.10028,51.07361|1.26250,51.10166|1.36889,51.13583|1.41111,51.20111|1.42750,51.33111|1.38556,51.38777|1.19195,51.37861|1.05278,51.36722|0.99916,51.34777|0.90806,51.34069|0.70416,51.37749|0.61972,51.38304|0.55945,51.40596|0.64236,51.44042|0.69750,51.47084|0.59195,51.48777|0.53611,51.48806|0.48916,51.48445|0.45215,51.45562|0.38894,51.44822|0.46500,51.50306|0.65195,51.53680|0.76695,51.52138|0.82084,51.53556|0.87528,51.56110|0.95250,51.60923|0.94695,51.72556|0.90257,51.73465|0.86306,51.71166|0.76140,51.69164|0.70111,51.71847|0.86211,51.77361|0.93236,51.80583|0.98278,51.82527|1.03569,51.77416|1.08834,51.77056|1.13222,51.77694|1.18139,51.78972|1.22361,51.80888|1.26611,51.83916|1.28097,51.88096|1.20834,51.95083|1.16347,52.02361|1.27750,51.98555|1.33125,51.92875|1.39028,51.96999|1.58736,52.08388|1.63000,52.19527|1.68576,52.32630|1.73028,52.41138|1.74945,52.45583|1.74590,52.62021|1.70250,52.71583|1.64528,52.77111|1.50361,52.83749|1.43222,52.87472|1.35250,52.90972|1.28222,52.92750|1.18389,52.93889|0.99472,52.95111|0.94222,52.95083|0.88472,52.96638|0.66722,52.97611|0.54778,52.96618|0.49139,52.93430|0.44431,52.86569|0.42903,52.82403|0.36334,52.78027|0.21778,52.80694|0.16125,52.86250|0.05778,52.88916|0.00211,52.87985|0.03222,52.91722|0.20389,53.02805|0.27666,53.06694|0.33916,53.09236|0.35389,53.18722|0.33958,53.23472|0.23555,53.39944|0.14347,53.47527|0.08528,53.48638|0.02694,53.50972|-0.10084,53.57306|-0.20722,53.63083|-0.26445,53.69083|-0.30166,53.71319|-0.39022,53.70794|-0.51972,53.68527|-0.71653,53.69638|-0.65445,53.72527|-0.60584,53.72972|-0.54916,53.70611|-0.42261,53.71755|-0.35728,53.73056|-0.29389,53.73666|-0.23139,53.72166|-0.10584,53.63166|-0.03472,53.62555|0.04416,53.63916|0.08916,53.62666|0.14945,53.58847|0.12639,53.64527|0.06264,53.70389|-0.12750,53.86388|-0.16916,53.91847|-0.21222,54.00833|-0.20569,54.05153|-0.16111,54.08806|-0.11694,54.13222|-0.20053,54.15171|-0.26250,54.17444|-0.39334,54.27277|-0.42166,54.33222|-0.45750,54.37694|-0.51847,54.44749|-0.56472,54.48000|-0.87584,54.57027|-1.06139,54.61722|-1.16528,54.64972|-1.30445,54.77138|-1.34556,54.87138|-1.41278,54.99944|-1.48292,55.08625|-1.51500,55.14972|-1.56584,55.28722|-1.58097,55.48361|-1.63597,55.58194|-1.69000,55.60556|-1.74695,55.62499|-1.81764,55.63306|-1.97681,55.75416|-2.02166,55.80611|-2.08361,55.78054|-2.22000,55.66499|-2.27916,55.64472|-2.27416,55.57527|-2.21528,55.50583|-2.18278,55.45985|-2.21236,55.42777|-2.46305,55.36111|-2.63055,55.25500|-2.69945,55.17722|-2.96278,55.03889|-3.01500,55.05222|-3.05103,54.97986|-3.13292,54.93139|-3.20861,54.94944|-3.28931,54.93792|-3.39166,54.87639|-3.42916,54.81555|-3.56916,54.64249|-3.61306,54.48861|-3.49305,54.40333|-3.43389,54.34806|-3.41056,54.28014|-3.38055,54.24444|-3.21472,54.09555|-3.15222,54.08194|-2.93097,54.15333|-2.81361,54.22277|-2.81750,54.14277|-2.83361,54.08500|-2.93250,53.95055|-3.05264,53.90764|-3.03708,53.74944|-2.99278,53.73277|-2.89979,53.72499|-2.97729,53.69382|-3.07306,53.59805|-3.10563,53.55993|-3.00678,53.41738|-2.95389,53.36027|-2.85736,53.32083|-2.70493,53.35062|-2.77639,53.29250|-2.89972,53.28916|-2.94250,53.31056|-3.02889,53.38191|-3.07248,53.40936|-3.16695,53.35708|-3.12611,53.32500|-3.08860,53.26001|-3.02000,53.24722|-2.95528,53.21555|-2.91069,53.17014|-2.89389,53.10416|-2.85695,53.03249|-2.77792,52.98514|-2.73109,52.96873|-2.71945,52.91902|-2.79278,52.90207|-2.85069,52.93875|-2.99389,52.95361|-3.08639,52.91611|-3.13014,52.88486|-3.13708,52.79312|-3.06806,52.77027|-3.01111,52.71166|-3.06666,52.63527|-3.11750,52.58666|-3.07089,52.55702|-3.00792,52.56902|-2.98028,52.53083|-3.02736,52.49792|-3.11916,52.49194|-3.19514,52.46722|-3.19611,52.41027|-3.02195,52.34027|-2.95486,52.33117|-2.99750,52.28139|-3.05125,52.23347|-3.07555,52.14804|-3.12222,52.11805|-3.11250,52.06945|-3.08500,52.01930|-3.04528,51.97639|-2.98889,51.92555|-2.91757,51.91569|-2.86639,51.92889|-2.77861,51.88583|-2.65944,51.81806|-2.68334,51.76957|-2.68666,51.71889|-2.66500,51.61500|-2.62916,51.64416|-2.57889,51.67777|-2.46056,51.74666|-2.40389,51.74041|-2.47166,51.72445|-2.55305,51.65722|-2.65334,51.56389|-2.77055,51.48916|-2.85278,51.44472|-2.96000,51.37499|-3.00695,51.30722|-3.01278,51.25632|-3.02834,51.20611|-3.30139,51.18111|-3.39361,51.18138|-3.43729,51.20638|-3.50722,51.22333|-3.57014,51.23027|-3.63222,51.21805|-3.70028,51.23000|-3.79250,51.23916|-3.88389,51.22416|-3.98472,51.21695|-4.11666,51.21222|-4.22805,51.18777|-4.22028,51.11054|-4.23702,51.04659|-4.30361,51.00416|-4.37639,50.99110|-4.42736,51.00958|-4.47445,51.01416|-4.52132,51.01424|-4.54334,50.92694|-4.56139,50.77625|-4.65139,50.71527|-4.74361,50.66750'; break; case 'SCOTLAND': $coordsAsStr[] = '-2.02166,55.80611|-2.07972,55.86722|-2.13028,55.88583|-2.26028,55.91861|-2.37528,55.95694|-2.65722,56.05972|-2.82028,56.05694|-2.86618,56.02840|-2.89555,55.98861|-2.93500,55.96944|-3.01805,55.94944|-3.06750,55.94444|-3.25472,55.97166|-3.45472,55.99194|-3.66416,56.00652|-3.73722,56.05555|-3.57139,56.05360|-3.44111,56.01916|-3.39584,56.01083|-3.34403,56.02333|-3.13903,56.11084|-2.97611,56.19472|-2.91666,56.20499|-2.84695,56.18638|-2.78805,56.18749|-2.67937,56.21465|-2.58403,56.28264|-2.67208,56.32277|-2.76861,56.33180|-2.81528,56.37360|-2.81208,56.43958|-2.91653,56.45014|-2.99555,56.41416|-3.19042,56.35958|-3.27805,56.35750|-3.04055,56.45472|-2.95861,56.45611|-2.72084,56.48888|-2.64084,56.52250|-2.53126,56.57611|-2.48861,56.61416|-2.47805,56.71527|-2.39000,56.77166|-2.31986,56.79638|-2.21972,56.86777|-2.19708,56.94388|-2.16695,57.00055|-2.09334,57.07027|-2.05416,57.21861|-1.95889,57.33250|-1.85584,57.39889|-1.77334,57.45805|-1.78139,57.50555|-1.82195,57.57861|-1.86000,57.62138|-1.92972,57.67777|-2.02222,57.69388|-2.07555,57.69944|-2.14028,57.69056|-2.18611,57.66861|-2.39626,57.66638|-2.51000,57.67166|-2.78639,57.70222|-2.89806,57.70694|-2.96750,57.68027|-3.03847,57.66249|-3.12334,57.67166|-3.22334,57.69166|-3.28625,57.72499|-3.33972,57.72333|-3.48805,57.70945|-3.52222,57.66333|-3.59542,57.63666|-3.64063,57.63881|-3.75414,57.62504|-4.03986,57.55569|-4.19666,57.48584|-4.22889,57.51554|-4.17945,57.56249|-4.11139,57.59833|-4.08078,57.66533|-4.19139,57.67139|-4.25945,57.65527|-4.34361,57.60777|-4.41639,57.60166|-4.29666,57.67444|-4.08528,57.72611|-4.01908,57.70226|-3.96861,57.70250|-3.86556,57.76861|-3.81945,57.80458|-3.80681,57.85819|-3.85055,57.82000|-3.92639,57.80749|-4.04322,57.81438|-4.14973,57.82527|-4.29750,57.84638|-4.36250,57.89777|-4.24306,57.87028|-4.10666,57.85195|-4.01500,57.86777|-3.99166,57.90611|-3.99695,57.95056|-3.84500,58.02000|-3.56611,58.13916|-3.51319,58.16374|-3.45916,58.20305|-3.42028,58.24361|-3.33750,58.27694|-3.20555,58.30625|-3.10972,58.38166|-3.05792,58.45083|-3.02264,58.64653|-3.17639,58.64944|-3.35389,58.66055|-3.36931,58.59555|-3.57611,58.62194|-3.66028,58.61972|-3.71166,58.60374|-3.78264,58.56750|-3.84834,58.56000|-4.08056,58.55527|-4.27722,58.53361|-4.43653,58.54902|-4.50666,58.56777|-4.56055,58.57584|-4.59910,58.53027|-4.66805,58.48833|-4.76146,58.44604|-4.70195,58.50999|-4.70166,58.55861|-4.77014,58.60264|-5.00153,58.62416|-5.10945,58.50833|-5.16472,58.32527|-5.12639,58.28750|-5.07166,58.26472|-5.20361,58.25083|-5.39764,58.25055|-5.27389,58.11722|-5.31514,58.06416|-5.38416,58.08361|-5.45285,58.07416|-5.39805,58.03111|-5.26278,57.97111|-5.19334,57.95069|-5.12750,57.86944|-5.21750,57.90084|-5.33861,57.92083|-5.42876,57.90104|-5.45750,57.85889|-5.64445,57.89972|-5.62555,57.85222|-5.58153,57.81945|-5.60674,57.76618|-5.66305,57.78889|-5.71695,57.86944|-5.76695,57.86472|-5.81708,57.81944|-5.81084,57.63958|-5.69555,57.55944|-5.64361,57.55222|-5.53084,57.52833|-5.65305,57.50875|-5.75000,57.54834|-5.81569,57.57923|-5.85042,57.54972|-5.86695,57.46777|-5.81806,57.36250|-5.75111,57.34333|-5.50334,57.40111|-5.45126,57.41805|-5.49250,57.37083|-5.59884,57.33049|-5.57116,57.28411|-5.51266,57.27745|-5.40514,57.23097|-5.44972,57.22138|-5.49472,57.23888|-5.56066,57.25477|-5.64611,57.23499|-5.64751,57.16161|-5.55028,57.11639|-5.48166,57.11222|-5.40305,57.11062|-5.55945,57.09250|-5.65111,57.11611|-5.72472,57.11306|-5.77361,57.04556|-5.63139,56.98499|-5.56916,56.98972|-5.52403,56.99735|-5.57916,56.98000|-5.64611,56.97222|-5.73374,57.00909|-5.82584,57.00346|-5.91958,56.88708|-5.86528,56.87944|-5.74278,56.89374|-5.66292,56.86924|-5.73306,56.83916|-5.78584,56.83955|-5.85590,56.81430|-5.80208,56.79180|-5.84958,56.74444|-5.90500,56.75666|-5.96694,56.78027|-6.14000,56.75777|-6.19208,56.74888|-6.23452,56.71673|-6.19139,56.67972|-5.91916,56.67388|-5.82622,56.69156|-5.73945,56.71166|-5.55240,56.68886|-5.64861,56.68027|-5.69916,56.68278|-5.88261,56.65666|-5.97472,56.65138|-5.99584,56.61138|-5.93056,56.56972|-5.88416,56.55333|-5.79056,56.53805|-5.67695,56.49389|-5.56389,56.54056|-5.36334,56.66195|-5.23416,56.74333|-5.13236,56.79403|-5.31473,56.65666|-5.37405,56.55925|-5.31826,56.55633|-5.25080,56.55753|-5.37718,56.52112|-5.39866,56.47866|-5.19111,56.46194|-5.11556,56.51277|-5.07014,56.56069|-5.13555,56.48499|-5.22084,56.43583|-5.32764,56.43574|-5.42439,56.43091|-5.52611,56.37360|-5.57139,56.32833|-5.59653,56.25695|-5.57389,56.16000|-5.52000,56.16485|-5.56334,56.11333|-5.60139,56.07638|-5.64222,56.04305|-5.66039,55.98263|-5.62555,56.02055|-5.58014,56.01319|-5.63361,55.96611|-5.67697,55.88844|-5.64750,55.78139|-5.60986,55.75930|-5.66916,55.66166|-5.70166,55.58861|-5.71805,55.51500|-5.75916,55.41750|-5.79528,55.36027|-5.78166,55.29902|-5.73778,55.29222|-5.56694,55.31666|-5.51528,55.36347|-5.55520,55.41440|-5.48639,55.64306|-5.44597,55.70680|-5.38000,55.75027|-5.41889,55.90666|-5.39924,55.99972|-5.33895,56.03456|-5.30594,56.06922|-5.23889,56.11889|-5.03222,56.23250|-4.92229,56.27111|-4.97416,56.23333|-5.07222,56.18695|-5.20069,56.11861|-5.30906,56.00570|-5.34000,55.90201|-5.29250,55.84750|-5.20805,55.84444|-5.22458,55.90175|-5.17334,55.92916|-5.11000,55.90306|-5.01222,55.86694|-4.96195,55.88000|-4.89824,55.98145|-4.84623,56.08632|-4.86636,56.03178|-4.85461,55.98648|-4.77659,55.97977|-4.62723,55.94555|-4.52305,55.91861|-4.70972,55.93403|-4.75166,55.94611|-4.82406,55.94950|-4.87826,55.93653|-4.91639,55.70083|-4.87584,55.68194|-4.81361,55.64555|-4.68722,55.59750|-4.61361,55.49069|-4.63958,55.44264|-4.68250,55.43388|-4.74847,55.41055|-4.83715,55.31882|-4.84778,55.26944|-4.86542,55.22340|-4.93500,55.17860|-5.01250,55.13347|-5.05361,55.04902|-5.17834,54.98888|-5.18563,54.93622|-5.17000,54.89111|-5.11666,54.83180|-5.00500,54.76333|-4.96229,54.68125|-4.92250,54.64055|-4.85723,54.62958|-4.96076,54.79687|-4.92431,54.83708|-4.85222,54.86861|-4.80125,54.85556|-4.74055,54.82166|-4.68084,54.79972|-4.59861,54.78027|-4.55792,54.73903|-4.49639,54.69888|-4.37584,54.67666|-4.34569,54.70916|-4.35973,54.77111|-4.41111,54.82583|-4.42445,54.88152|-4.38479,54.90555|-4.35056,54.85903|-4.09555,54.76777|-3.95361,54.76749|-3.86972,54.80527|-3.81222,54.84888|-3.69250,54.88110|-3.61584,54.87527|-3.57111,54.99083|-3.44528,54.98638|-3.36056,54.97138|-3.14695,54.96500|-3.05103,54.97986|-3.01500,55.05222|-2.96278,55.03889|-2.69945,55.17722|-2.63055,55.25500|-2.46305,55.36111|-2.21236,55.42777|-2.18278,55.45985|-2.21528,55.50583|-2.27416,55.57527|-2.27916,55.64472|-2.22000,55.66499|-2.08361,55.78054|-2.02166,55.80611'; break; case 'IRELAND': $coordsAsStr[] = '-8.17166,54.46388|-8.06555,54.37277|-7.94139,54.29944|-7.87576,54.28499|-7.86834,54.22764|-7.81805,54.19916|-7.69972,54.20250|-7.55945,54.12694|-7.31334,54.11250|-7.14584,54.22527|-7.17555,54.28916|-7.16084,54.33666|-7.05834,54.41000|-6.97445,54.40166|-6.92695,54.37916|-6.87305,54.34208|-6.85111,54.28972|-6.73473,54.18361|-6.65556,54.06527|-6.60584,54.04444|-6.44750,54.05833|-6.33889,54.11555|-6.26697,54.09983|-6.17403,54.07222|-6.10834,54.03638|-6.04389,54.03139|-5.96834,54.06389|-5.88500,54.11639|-5.87347,54.20916|-5.82500,54.23958|-5.74611,54.24806|-5.65556,54.22701|-5.60834,54.24972|-5.55916,54.29084|-5.57334,54.37704|-5.64502,54.49267|-5.70472,54.53361|-5.68055,54.57306|-5.59972,54.54194|-5.55097,54.50083|-5.54216,54.44903|-5.54643,54.40527|-5.50672,54.36444|-5.46111,54.38555|-5.43132,54.48596|-5.47945,54.53638|-5.53521,54.65090|-5.57431,54.67722|-5.62916,54.67945|-5.73674,54.67383|-5.80305,54.66138|-5.88257,54.60652|-5.92445,54.63180|-5.86681,54.68972|-5.81903,54.70972|-5.74672,54.72452|-5.68775,54.76335|-5.70931,54.83166|-5.74694,54.85361|-5.79139,54.85139|-6.03611,55.05778|-6.04250,55.10277|-6.03444,55.15458|-6.10125,55.20945|-6.14584,55.22069|-6.25500,55.21194|-6.37639,55.23916|-6.51556,55.23305|-6.61334,55.20722|-6.73028,55.18027|-6.82472,55.16806|-6.88972,55.16777|-6.96695,55.15611|-6.99416,55.11027|-7.05139,55.04680|-7.09500,55.03694|-7.25251,55.07059|-7.32639,55.04527|-7.40639,54.95333|-7.45805,54.85777|-7.55334,54.76277|-7.73916,54.71054|-7.82576,54.73416|-7.92639,54.70054|-7.85236,54.63388|-7.77750,54.62694|-7.83361,54.55389|-7.95084,54.53222|-8.04695,54.50722|-8.17166,54.46388'; break; case 'WALES': $coordsAsStr[] = '-3.08860,53.26001|-3.33639,53.34722|-3.38806,53.34361|-3.60986,53.27944|-3.73014,53.28944|-3.85445,53.28444|-4.01861,53.23750|-4.06639,53.22639|-4.15334,53.22556|-4.19639,53.20611|-4.33028,53.11222|-4.36097,53.02888|-4.55278,52.92889|-4.61889,52.90916|-4.72195,52.83611|-4.72778,52.78139|-4.53945,52.79306|-4.47722,52.85500|-4.41416,52.88472|-4.31292,52.90499|-4.23334,52.91499|-4.13569,52.87888|-4.13056,52.77777|-4.05334,52.71666|-4.10639,52.65084|-4.12597,52.60375|-4.08056,52.55333|-4.05972,52.48584|-4.09666,52.38583|-4.14305,52.32027|-4.19361,52.27638|-4.23166,52.24888|-4.52722,52.13083|-4.66945,52.13027|-4.73695,52.10361|-4.76778,52.06444|-4.84445,52.01388|-5.09945,51.96056|-5.23916,51.91638|-5.25889,51.87056|-5.18500,51.86958|-5.11528,51.83333|-5.10257,51.77895|-5.16111,51.76222|-5.24694,51.73027|-5.19111,51.70888|-5.00739,51.70349|-4.90875,51.71249|-4.86111,51.71334|-4.97061,51.67577|-5.02128,51.66861|-5.05139,51.62028|-5.00528,51.60638|-4.94139,51.59416|-4.89028,51.62694|-4.83569,51.64534|-4.79063,51.63340|-4.69028,51.66666|-4.64584,51.72666|-4.57445,51.73416|-4.43611,51.73722|-4.26222,51.67694|-4.19750,51.67916|-4.06614,51.66804|-4.11639,51.63416|-4.17750,51.62235|-4.25055,51.62861|-4.29208,51.60743|-4.27778,51.55666|-4.20486,51.53527|-3.94972,51.61278|-3.83792,51.61999|-3.78166,51.56750|-3.75160,51.52931|-3.67194,51.47388|-3.54250,51.39777|-3.40334,51.37972|-3.27097,51.38014|-3.16458,51.40909|-3.15166,51.45305|-3.11875,51.48750|-3.02111,51.52527|-2.95472,51.53972|-2.89278,51.53861|-2.84778,51.54500|-2.71472,51.58083|-2.66500,51.61500|-2.68666,51.71889|-2.68334,51.76957|-2.65944,51.81806|-2.77861,51.88583|-2.86639,51.92889|-2.91757,51.91569|-2.98889,51.92555|-3.04528,51.97639|-3.08500,52.01930|-3.11250,52.06945|-3.12222,52.11805|-3.07555,52.14804|-3.05125,52.23347|-2.99750,52.28139|-2.95486,52.33117|-3.02195,52.34027|-3.19611,52.41027|-3.19514,52.46722|-3.11916,52.49194|-3.02736,52.49792|-2.98028,52.53083|-3.00792,52.56902|-3.07089,52.55702|-3.11750,52.58666|-3.06666,52.63527|-3.01111,52.71166|-3.06806,52.77027|-3.13708,52.79312|-3.13014,52.88486|-3.08639,52.91611|-2.99389,52.95361|-2.85069,52.93875|-2.79278,52.90207|-2.71945,52.91902|-2.73109,52.96873|-2.77792,52.98514|-2.85695,53.03249|-2.89389,53.10416|-2.91069,53.17014|-2.95528,53.21555|-3.02000,53.24722|-3.08860,53.26001'; break; case 'NC': $coordsAsStr[] = '-81.65876,36.60938|-81.70390,36.55513|-81.70639,36.50804|-81.74665,36.39777|-81.90723,36.30804|-82.03195,36.12694|-82.08416,36.10146|-82.12826,36.11020|-82.21500,36.15833|-82.36375,36.11347|-82.43472,36.06013|-82.46236,36.01708|-82.56006,35.96263|-82.60042,35.99638|-82.62308,36.06121|-82.73500,36.01833|-82.84612,35.94944|-82.90451,35.88819|-82.93555,35.83846|-83.16000,35.76236|-83.24222,35.71944|-83.49222,35.57111|-83.56847,35.55861|-83.64416,35.56471|-83.73499,35.56638|-83.88222,35.51791|-83.98361,35.44944|-84.03639,35.35444|-84.04964,35.29117|-84.09042,35.25986|-84.15084,35.25388|-84.20521,35.25722|-84.29284,35.22596|-84.32471,34.98701|-83.09778,35.00027|-82.77722,35.09138|-82.59639,35.14972|-82.37999,35.21500|-82.27362,35.20583|-81.41306,35.17416|-81.05915,35.15333|-80.92666,35.10695|-80.78751,34.95610|-80.79334,34.82555|-79.66777,34.80694|-79.11555,34.34527|-78.57222,33.88166|-78.51806,33.87999|-78.43721,33.89804|-78.23735,33.91986|-78.15389,33.91471|-78.06974,33.89500|-78.02597,33.88936|-77.97611,33.94276|-77.95299,33.99243|-77.94499,34.06499|-77.92728,34.11756|-77.92250,33.99194|-77.92264,33.93715|-77.88215,34.06166|-77.86222,34.15083|-77.83501,34.19194|-77.75724,34.28527|-77.68222,34.36555|-77.63667,34.39805|-77.57363,34.43694|-77.45527,34.50403|-77.38173,34.51646|-77.37905,34.56294|-77.38572,34.61260|-77.40944,34.68916|-77.38847,34.73304|-77.33097,34.63992|-77.35024,34.60099|-77.30958,34.55972|-77.09424,34.67742|-76.75994,34.76659|-76.68325,34.79749|-76.66097,34.75781|-76.62611,34.71014|-76.50063,34.73617|-76.48138,34.77638|-76.38305,34.86423|-76.34326,34.88194|-76.27181,34.96263|-76.35125,35.02221|-76.32354,34.97429|-76.45319,34.93524|-76.43395,34.98782|-76.45356,35.06676|-76.52917,35.00444|-76.63382,34.98242|-76.69722,34.94887|-76.75306,34.90526|-76.81636,34.93944|-76.89000,34.95388|-76.93180,34.96957|-76.96501,34.99777|-77.06816,35.14978|-76.97639,35.06806|-76.86722,35.00000|-76.80531,34.98559|-76.72708,35.00152|-76.60402,35.07416|-76.56555,35.11486|-76.57305,35.16013|-76.66489,35.16694|-76.56361,35.23361|-76.48750,35.22582|-76.46889,35.27166|-76.50298,35.30791|-76.83251,35.39222|-77.02305,35.48694|-77.04958,35.52694|-76.91292,35.46166|-76.65250,35.41499|-76.61611,35.45888|-76.63195,35.52249|-76.58820,35.55104|-76.51556,35.53194|-76.56711,35.48494|-76.52251,35.40416|-76.46195,35.37221|-76.13319,35.35986|-76.04111,35.42416|-76.00223,35.46610|-75.97958,35.51666|-75.89362,35.57555|-75.83834,35.56694|-75.78944,35.57138|-75.74076,35.61846|-75.72084,35.69263|-75.72084,35.81451|-75.74917,35.87791|-75.78333,35.91972|-75.85083,35.97527|-75.94333,35.91777|-75.98944,35.88054|-75.98854,35.79110|-75.99388,35.71027|-76.02875,35.65409|-76.10320,35.66041|-76.13563,35.69239|-76.04475,35.68436|-76.04167,35.74916|-76.05305,35.79361|-76.05305,35.87375|-76.02653,35.96222|-76.07751,35.99319|-76.17472,35.99596|-76.27917,35.91915|-76.37986,35.95763|-76.42014,35.97874|-76.55375,35.93971|-76.66222,35.93305|-76.72952,35.93984|-76.73392,36.04760|-76.75384,36.09477|-76.76028,36.14513|-76.74610,36.22818|-76.70458,36.24673|-76.72764,36.16736|-76.71021,36.11752|-76.69117,36.07165|-76.65979,36.03312|-76.49527,36.00958|-76.37138,36.07694|-76.37084,36.14999|-76.21417,36.09471|-76.07591,36.17910|-76.18361,36.26915|-76.19965,36.31739|-76.13986,36.28805|-76.04274,36.21974|-76.00465,36.18110|-75.95287,36.19241|-75.97604,36.31138|-75.93895,36.28381|-75.85271,36.11069|-75.79315,36.07385|-75.79639,36.11804|-75.88333,36.29554|-75.94665,36.37194|-75.98694,36.41166|-76.03473,36.49666|-76.02899,36.55000|-78.44234,36.54986|-78.56594,36.55799|-80.27556,36.55110|-81.15361,36.56499|-81.38722,36.57695|-81.65876,36.60938'; break; default: } ?> var coordStr = <?php echo json_encode($coordsAsStr); ?> ; jQuery.each(coordStr, function(index, value) { var coordXY = value.split('|'); var coords = []; var points = []; jQuery.each(coordXY, function(i, v) { coords = v.split(','); points.push(new google.maps.LatLng(parseFloat(coords[1]), parseFloat(coords[0]))); }); // Construct the polygon new google.maps.Polygon({ paths: points, strokeColor: "#888888", strokeOpacity: 0.8, strokeWeight: 1, fillColor: "#ff0000", fillOpacity: 0.15 }).setMap(map); }); } function loadMap(zoom, mapType) { var mapTyp; if (mapType) { mapTyp = mapType; } else { mapTyp = google.maps.MapTypeId.ROADMAP; } geocoder = new google.maps.Geocoder(); if (!zoom) { zoom = pl_zoom; } // Define map var myOptions = { zoom: zoom, center: latlng, mapTypeId: mapTyp,// ROADMAP, SATELLITE, HYBRID, TERRAIN // mapTypeId: google.maps.MapTypeId.ROADMAP, // ROADMAP, SATELLITE, HYBRID, TERRAIN mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU // DEFAULT, DROPDOWN_MENU, HORIZONTAL_BAR }, navigationControlOptions: { position: google.maps.ControlPosition.TOP_RIGHT, // BOTTOM, BOTTOM_LEFT, LEFT, TOP, etc style: google.maps.NavigationControlStyle.SMALL // ANDROID, DEFAULT, SMALL, ZOOM_PAN }, streetViewControl: false, // Show Pegman or not scrollwheel: true }; map = new google.maps.Map(document.querySelector('.gm-map'), myOptions); overlays(); // Close any infowindow when map is clicked google.maps.event.addListener(map, 'click', function() { infowindow.close(); }); // Check for zoom changes google.maps.event.addListener(map, 'zoom_changed', function() { document.editplaces.NEW_ZOOM_FACTOR.value = map.zoom; }); // Create the Main Location Marker <?php if ($level < 3 && $place_icon != '') { echo 'var image = { "url" : WT_STATIC_URL + WT_MODULES_DIR + "googlemap/" + "' . $place_icon . '", "size" : new google.maps.Size(25, 15), // Image size "origin" : new google.maps.Point(0, 0), // Image origin "anchor" : new google.maps.Point(12, 15) // Image anchor };'; echo 'marker = new google.maps.Marker({'; echo 'icon: image,'; echo 'position: latlng,'; echo 'map: map,'; echo 'title: pl_name,'; echo 'draggable: true,'; echo 'zIndex:1'; echo '});'; } else { echo 'marker = new google.maps.Marker({'; echo 'position: latlng,'; echo 'map: map,'; echo 'title: pl_name,'; echo 'draggable: true,'; echo 'zIndex: 1'; echo '});'; } ?> // Set marker by clicking on map --- google.maps.event.addListener(map, 'click', function(event) { clearMarks(); latlng = event.latLng; marker = new google.maps.Marker({ position: latlng, map: map, title: pl_name, draggable: true, zIndex: 1 }); document.getElementById('NEW_PLACE_LATI').value = marker.getPosition().lat().toFixed(5); document.getElementById('NEW_PLACE_LONG').value = marker.getPosition().lng().toFixed(5); updateMap('flag_drag'); var currzoom = parseInt(document.editplaces.NEW_ZOOM_FACTOR.value); mapType = map.getMapTypeId(); loadMap(currzoom, mapType); }); // If the marker is moved, update the location fields google.maps.event.addListener(marker, 'drag', function() { document.getElementById('NEW_PLACE_LATI').value = marker.getPosition().lat().toFixed(5); document.getElementById('NEW_PLACE_LONG').value = marker.getPosition().lng().toFixed(5); }); google.maps.event.addListener(marker, 'dragend', function() { updateMap('flag_drag'); }); } function clearMarks() { marker.setMap(null); } /** * Called when we select one of the search results. * * @param lat * @param lng */ function setLoc(lat, lng) { if (lat < 0.0) { document.editplaces.NEW_PLACE_LATI.value = (lat.toFixed(5) * -1); document.editplaces.LATI_CONTROL.value = 'S'; } else { document.editplaces.NEW_PLACE_LATI.value = lat.toFixed(5); document.editplaces.LATI_CONTROL.value = 'N'; } if (lng < 0.0) { document.editplaces.NEW_PLACE_LONG.value = (lng.toFixed(5) * -1); document.editplaces.LONG_CONTROL.value = 'W'; } else { document.editplaces.NEW_PLACE_LONG.value = lng.toFixed(5); document.editplaces.LONG_CONTROL.value = 'E'; } new google.maps.LatLng (lat.toFixed(5), lng.toFixed(5)); infowindow.close(); updateMap(); } function createMarker(i, point, name) { var image = { url: WT_STATIC_URL + WT_MODULES_DIR + 'googlemap/images/marker_yellow.png', size: new google.maps.Size(20, 34), // Image size origin: new google.maps.Point(0, 0), // Image origin anchor: new google.maps.Point(10, 34) // Image anchor }; var marker = new google.maps.Marker({ icon: image, map: map, position: point, zIndex: 0 }); google.maps.event.addListener(marker, 'click', function() { infowindow.close(); infowindow.setContent(name); infowindow.open(map, marker); }); google.maps.event.addListener(map, 'click', function() { infowindow.close(); }); return marker; } function change_icon() { window.open('module.php?mod=googlemap&mod_action=flags&countrySelected=<?php echo $selected_country; ?> ', '_blank', indx_window_specs); return false; } function remove_icon() { document.editplaces.icon.value = ''; document.getElementById('flagsDiv').innerHTML = '<a href="#" onclick="change_icon();return false;"><?php echo I18N::translate('Change flag'); ?> </a>'; } function addAddressToMap(response) { var bounds = new google.maps.LatLngBounds(); if (!response) { alert('<?php echo I18N::translate('No places found'); ?> '); } else { if (response.length > 0) { for (var i=0; i<response.length; i++) { // 5 decimal places is approx 1 metre accuracy. var name = '<div>' + response[i].address_components[0].short_name + '<br><a href="#" onclick="setLoc(' + response[i].geometry.location.lat() + ', ' + response[i].geometry.location.lng() + ');">' + '<?php echo I18N::translate('Use this value'); ?> </a>' + '</div>'; var point = response[i].geometry.location; var marker = createMarker(i, point, name); bounds.extend(response[i].geometry.location); } <?php if ($level > 0) { ?> map.fitBounds(bounds); <?php } ?> var zoomlevel = map.getZoom(); if (zoomlevel < <?php echo $this->getSetting('GM_MIN_ZOOM'); ?> ) { zoomlevel = <?php echo $this->getSetting('GM_MIN_ZOOM'); ?> ; } if (zoomlevel > <?php echo $this->getSetting('GM_MAX_ZOOM'); ?> ) { zoomlevel = <?php echo $this->getSetting('GM_MAX_ZOOM'); ?> ; } if (document.editplaces.NEW_ZOOM_FACTOR.value < zoomlevel) { zoomlevel = document.editplaces.NEW_ZOOM_FACTOR.value; if (zoomlevel < <?php echo $this->getSetting('GM_MIN_ZOOM'); ?> ) { zoomlevel = <?php echo $this->getSetting('GM_MIN_ZOOM'); ?> ; } if (zoomlevel > <?php echo $this->getSetting('GM_MAX_ZOOM'); ?> ) { zoomlevel = <?php echo $this->getSetting('GM_MAX_ZOOM'); ?> ; } } map.setCenter(bounds.getCenter()); map.setZoom(zoomlevel); } } } function showLocation_level(address) { <?php if ($level > 0) { ?> address += '<?php echo ', ', addslashes(implode(', ', array_reverse($where_am_i, true))); ?> '; <?php } ?> geocoder.geocode({'address': address}, addAddressToMap); } function showLocation_all(address) { geocoder.geocode({'address': address}, addAddressToMap); } function paste_char(value) { document.editplaces.NEW_PLACE_NAME.value += value; } window.onload = function() { loadMap(); }; </script> <form method="post" id="editplaces" name="editplaces" action="module.php?mod=googlemap&mod_action=places_edit"> <input type="hidden" name="action" value="<?php echo $action; ?> record"> <input type="hidden" name="placeid" value="<?php echo $placeid; ?> "> <input type="hidden" name="level" value="<?php echo $level; ?> "> <input type="hidden" name="icon" value="<?php echo $place_icon; ?> "> <input type="hidden" name="parent_id" value="<?php echo $parent_id; ?> "> <input type="hidden" name="place_long" value="<?php echo $place_long; ?> "> <input type="hidden" name="place_lati" value="<?php echo $place_lati; ?> "> <input type="hidden" name="parent_long" value="<?php echo $parent_long; ?> "> <input type="hidden" name="parent_lati" value="<?php echo $parent_lati; ?> "> <table class="facts_table"> <tr> <td class="optionbox" colspan="3"> <div class="gm-map" style="width: 100%; height: 300px;"></div> </td> </tr> <tr> <td class="descriptionbox"><?php echo GedcomTag::getLabel('PLAC'); ?> </td> <td class="optionbox"><input type="text" id="new_pl_name" name="NEW_PLACE_NAME" value="<?php echo Filter::escapeHtml($place_name); ?> " size="25" class="address_input"> <div id="INDI_PLAC_pop" style="display: inline;"> <?php echo FunctionsPrint::printSpecialCharacterLink('new_pl_name'); ?> </div></td><td class="optionbox"> <label for="new_pl_name"><a href="#" onclick="showLocation_all(document.getElementById('new_pl_name').value); return false"><?php echo I18N::translate('Search globally'); ?> </a></label> | <label for="new_pl_name"><a href="#" onclick="showLocation_level(document.getElementById('new_pl_name').value); return false"><?php echo I18N::translate('Search locally'); ?> </a></label> </td> </tr> <tr> <td class="descriptionbox"><?php echo GedcomTag::getLabel('LATI'); ?> </td> <td class="optionbox" colspan="2"> <input type="text" id="NEW_PLACE_LATI" name="NEW_PLACE_LATI" placeholder="<?php echo I18N::translate('degrees'); ?> " value="<?php echo abs($place_lati); ?> " size="20" onchange="updateMap();"> <select name="LATI_CONTROL" id="LATI_CONTROL" onchange="updateMap();"> <option value="N"<?php echo $place_lati >= 0 ? ' selected' : ''; ?> ><?php echo I18N::translate('north'); ?> </option> <option value="S"<?php echo $place_lati < 0 ? ' selected' : ''; ?> ><?php echo I18N::translate('south'); ?> </option> </select> </td> </tr> <tr> <td class="descriptionbox"><?php echo GedcomTag::getLabel('LONG'); ?> </td> <td class="optionbox" colspan="2"> <input type="text" id="NEW_PLACE_LONG" name="NEW_PLACE_LONG" placeholder="<?php echo I18N::translate('degrees'); ?> " value="<?php echo abs($place_long); ?> " size="20" onchange="updateMap();"> <select name="LONG_CONTROL" id="LONG_CONTROL" onchange="updateMap();"> <option value="E"<?php echo $place_long >= 0 ? ' selected' : ''; ?> ><?php echo I18N::translate('east'); ?> </option> <option value="W"<?php echo $place_long < 0 ? ' selected' : ''; ?> ><?php echo I18N::translate('west'); ?> </option> </select> </td> </tr> <tr> <td class="descriptionbox"> <label for="NEW_ZOOM_FACTOR"> <?php echo I18N::translate('Zoom level'); ?> </label> </td> <td class="optionbox" colspan="2"> <input type="text" id="NEW_ZOOM_FACTOR" name="NEW_ZOOM_FACTOR" value="<?php echo $zoomfactor; ?> " size="20" onchange="updateMap();"> </td> </tr> <tr> <td class="descriptionbox"> <?php echo I18N::translate('Flag'); ?> </td> <td class="optionbox" colspan="2"> <div id="flagsDiv"> <?php if ($place_icon) { ?> <img alt="<?php echo I18N::translate('Flag'); ?> " src="<?php echo WT_STATIC_URL, WT_MODULES_DIR, 'googlemap/', $place_icon; ?> "> <a href="#" onclick="change_icon();return false;"><?php echo I18N::translate('Change flag'); ?> </a> <a href="#" onclick="remove_icon();return false;"><?php echo I18N::translate('Remove flag'); ?> </a> <?php } else { ?> <a href="#" onclick="change_icon();return false;"><?php echo I18N::translate('Change flag'); ?> </a> <?php } ?> </div> </td> </tr> </table> <p id="save-cancel"> <input type="submit" class="save" value="<?php echo I18N::translate('save'); ?> "> <input type="button" class="cancel" value="<?php echo I18N::translate('close'); ?> " onclick="window.close();"> </p> </form> <br> <br> <br> <?php }
/** * Edit places. */ private function placesEdit() { $GM_MAX_ZOOM = $this->getSetting('GM_MAX_ZOOM'); $action = Filter::post('action', null, Filter::get('action')); $placeid = Filter::post('placeid', null, Filter::get('placeid')); $place_name = Filter::post('place_name', null, Filter::get('place_name')); $controller = new SimpleController(); $controller->restrictAccess(Auth::isAdmin())->setPageTitle(I18N::translate('Geographic data'))->addInlineJavascript('$("<link>", {rel: "stylesheet", type: "text/css", href: "' . WT_STATIC_URL . WT_MODULES_DIR . 'googlemap/css/wt_v3_googlemap.css"}).appendTo("head");')->pageHeader(); $where_am_i = $this->placeIdToHierarchy($placeid); $level = count($where_am_i); if ($action == 'addrecord' && Auth::isAdmin()) { $statement = Database::prepare("INSERT INTO `##placelocation` (pl_id, pl_parent_id, pl_level, pl_place, pl_long, pl_lati, pl_zoom, pl_icon) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"); if ($_POST['LONG_CONTROL'] == '' || $_POST['NEW_PLACE_LONG'] == '' || $_POST['NEW_PLACE_LATI'] == '') { $statement->execute(array($this->getHighestIndex() + 1, $placeid, $level, $_POST['NEW_PLACE_NAME'], null, null, $_POST['NEW_ZOOM_FACTOR'], $_POST['icon'])); } else { $statement->execute(array($this->getHighestIndex() + 1, $placeid, $level, $_POST['NEW_PLACE_NAME'], $_POST['LONG_CONTROL'][3] . $_POST['NEW_PLACE_LONG'], $_POST['LATI_CONTROL'][3] . $_POST['NEW_PLACE_LATI'], $_POST['NEW_ZOOM_FACTOR'], $_POST['icon'])); } $controller->addInlineJavaScript('closePopupAndReloadParent();'); echo "<div class=\"center\"><button onclick=\"closePopupAndReloadParent();return false;\">", I18N::translate('close'), "</button></div>"; exit; } if ($action == 'updaterecord' && Auth::isAdmin()) { $statement = Database::prepare("UPDATE `##placelocation` SET pl_place=?, pl_lati=?, pl_long=?, pl_zoom=?, pl_icon=? WHERE pl_id=?"); if ($_POST['LONG_CONTROL'] == '' || $_POST['NEW_PLACE_LONG'] == '' || $_POST['NEW_PLACE_LATI'] == '') { $statement->execute(array($_POST['NEW_PLACE_NAME'], null, null, $_POST['NEW_ZOOM_FACTOR'], $_POST['icon'], $placeid)); } else { $statement->execute(array($_POST['NEW_PLACE_NAME'], $_POST['LATI_CONTROL'][3] . $_POST['NEW_PLACE_LATI'], $_POST['LONG_CONTROL'][3] . $_POST['NEW_PLACE_LONG'], $_POST['NEW_ZOOM_FACTOR'], $_POST['icon'], $placeid)); } $controller->addInlineJavaScript('closePopupAndReloadParent();'); echo "<div class=\"center\"><button onclick=\"closePopupAndReloadParent();return false;\">", I18N::translate('close'), "</button></div>"; exit; } // Update placelocation STREETVIEW fields // TODO: This ought to be a POST request, rather than a GET request if ($action == 'update_sv_params' && Auth::isAdmin()) { Database::prepare("UPDATE `##placelocation` SET sv_lati=?, sv_long=?, sv_bearing=?, sv_elevation=?, sv_zoom=? WHERE pl_id=?")->execute(array(Filter::get('svlati'), Filter::get('svlong'), Filter::get('svbear'), Filter::get('svelev'), Filter::get('svzoom'), $placeid)); $controller->addInlineJavaScript('window.close();'); exit; } if ($action === 'update') { // --- find the place in the file $row = Database::prepare("SELECT pl_place, pl_lati, pl_long, pl_icon, pl_parent_id, pl_level, pl_zoom FROM `##placelocation` WHERE pl_id=?")->execute(array($placeid))->fetchOneRow(); $place_name = $row->pl_place; $place_icon = $row->pl_icon; $selected_country = explode("/", $place_icon); if (isset($selected_country[1]) && $selected_country[1] != "flags") { $selected_country = $selected_country[1]; } else { $selected_country = "Countries"; } $parent_id = $row->pl_parent_id; $level = $row->pl_level; $zoomfactor = $row->pl_zoom; $parent_lati = 0.0; $parent_long = 0.0; if ($row->pl_lati !== null && $row->pl_long !== null) { $place_lati = (double) str_replace(array('N', 'S', ','), array('', '-', '.'), $row->pl_lati); $place_long = (double) str_replace(array('E', 'W', ','), array('', '-', '.'), $row->pl_long); } else { $place_lati = 0.0; $place_long = 0.0; $zoomfactor = 1; } do { $row = Database::prepare("SELECT pl_lati, pl_long, pl_parent_id, pl_zoom FROM `##placelocation` WHERE pl_id=?")->execute(array($parent_id))->fetchOneRow(); if (!$row) { break; } if ($row->pl_lati !== null && $row->pl_long !== null) { $parent_lati = (double) str_replace(array('N', 'S', ','), array('', '-', '.'), $row->pl_lati); $parent_long = (double) str_replace(array('E', 'W', ','), array('', '-', '.'), $row->pl_long); if ($zoomfactor == 1) { $zoomfactor = $row->pl_zoom; } } $parent_id = $row->pl_parent_id; } while ($row->pl_parent_id != 0 && $row->pl_lati === null && $row->pl_long === null); echo '<b>', Filter::escapeHtml(str_replace('Unknown', I18N::translate('unknown'), implode(I18N::$list_separator, array_reverse($where_am_i, true)))), '</b><br>'; } if ($action === 'add') { // --- find the parent place in the file if ($placeid != 0) { $place_lati = 0.0; $place_long = 0.0; $zoomfactor = 1; $parent_lati = 0.0; $parent_long = 0.0; $place_icon = ''; $parent_id = $placeid; do { $row = Database::prepare("SELECT pl_lati, pl_long, pl_parent_id, pl_zoom, pl_level FROM `##placelocation` WHERE pl_id=?")->execute(array($parent_id))->fetchOneRow(); if ($row->pl_lati !== null && $row->pl_long !== null) { $parent_lati = str_replace(array('N', 'S', ','), array('', '-', '.'), $row->pl_lati); $parent_long = str_replace(array('E', 'W', ','), array('', '-', '.'), $row->pl_long); $zoomfactor = $row->pl_zoom; if ($zoomfactor > $GM_MAX_ZOOM) { $zoomfactor = $GM_MAX_ZOOM; } $level = $row->pl_level + 1; } $parent_id = $row->pl_parent_id; } while ($row->pl_parent_id != 0 && $row->pl_lati === null && $row->pl_long === null); } else { $place_lati = 0.0; $place_long = 0.0; $parent_lati = 0.0; $parent_long = 0.0; $place_icon = ''; $parent_id = 0; $level = 0; $zoomfactor = $this->getSetting('GM_MIN_ZOOM'); } $selected_country = 'Countries'; if ($place_name == '') { echo '<b>', I18N::translate('unknown'); } else { echo '<b>', $place_name; } if (count($where_am_i) > 0) { echo ', ', Filter::escapeHtml(str_replace('Unknown', I18N::translate('unknown'), implode(I18N::$list_separator, array_reverse($where_am_i, true)))), '</b><br>'; } echo '</b><br>'; } ?> <script src="<?php echo $this->googleMapsScript(); ?> "></script> <script> var map; var marker; var zoom; var pl_name = '<?php echo Filter::escapeJs($place_name); ?> '; if (<?php echo $place_lati; ?> !== 0.0 && <?php echo $place_long; ?> !== 0.0) { var latlng = new google.maps.LatLng(<?php echo $place_lati; ?> , <?php echo $place_long; ?> ); } else { var latlng = new google.maps.LatLng(<?php echo $parent_lati; ?> , <?php echo $parent_long; ?> ); } var pl_zoom = <?php echo $zoomfactor; ?> ; var polygon1; var polygon2; var geocoder; var mapType; var infowindow = new google.maps.InfoWindow({ // }); function geocodePosition(pos) { geocoder.geocode({ latLng: pos }, function(responses) { if (responses && responses.length > 0) { updateMarkerAddress(responses[0].formatted_address); } else { updateMarkerAddress('Cannot determine address at this location.'); } }); } function updateMap(event) { var point; var zoom = parseInt(document.editplaces.NEW_ZOOM_FACTOR.value); var latitude; var longitude; var i; var prec = 20; for (i=0;i<document.editplaces.NEW_PRECISION.length;i++) { if (document.editplaces.NEW_PRECISION[i].checked) { prec = document.editplaces.NEW_PRECISION[i].value; } } if ((document.editplaces.NEW_PLACE_LATI.value == '') || (document.editplaces.NEW_PLACE_LONG.value == '')) { latitude = parseFloat(document.editplaces.parent_lati.value).toFixed(prec); longitude = parseFloat(document.editplaces.parent_long.value).toFixed(prec); point = new google.maps.LatLng(latitude, longitude); } else { latitude = parseFloat(document.editplaces.NEW_PLACE_LATI.value).toFixed(prec); longitude = parseFloat(document.editplaces.NEW_PLACE_LONG.value).toFixed(prec); document.editplaces.NEW_PLACE_LATI.value = latitude; document.editplaces.NEW_PLACE_LONG.value = longitude; if (event == 'flag_drag') { if (longitude < 0.0 ) { longitude = longitude * -1; document.editplaces.NEW_PLACE_LONG.value = longitude; document.editplaces.LONG_CONTROL.value = 'PL_W'; } else { document.editplaces.NEW_PLACE_LONG.value = longitude; document.editplaces.LONG_CONTROL.value = 'PL_E'; } if (latitude < 0.0 ) { latitude = latitude * -1; document.editplaces.NEW_PLACE_LATI.value = latitude; document.editplaces.LATI_CONTROL.value = 'PL_S'; } else { document.editplaces.NEW_PLACE_LATI.value = latitude; document.editplaces.LATI_CONTROL.value = 'PL_N'; } if (document.editplaces.LATI_CONTROL.value == 'PL_S') { latitude = latitude * -1; } if (document.editplaces.LONG_CONTROL.value == 'PL_W') { longitude = longitude * -1; } point = new google.maps.LatLng(latitude, longitude); } else { if (latitude < 0.0) { latitude = latitude * -1; document.editplaces.NEW_PLACE_LATI.value = latitude; } if (longitude < 0.0) { longitude = longitude * -1; document.editplaces.NEW_PLACE_LONG.value = longitude; } if (document.editplaces.LATI_CONTROL.value == 'PL_S') { latitude = latitude * -1; } if (document.editplaces.LONG_CONTROL.value == 'PL_W') { longitude = longitude * -1; } point = new google.maps.LatLng(latitude, longitude); } } map.setCenter(point); map.setZoom(zoom); marker.setPosition(point); } // === Create Borders for the UK Countries ========================================================= function overlays() { // Define place LatLng arrays var polygon1; var num_arrays = ""; if (pl_name == 'Scotland') { var returnGeom1 = '-2.02166,55.80611|-2.07972,55.86722|-2.13028,55.88583|-2.26028,55.91861|-2.37528,55.95694|-2.65722,56.05972|-2.82028,56.05694|-2.86618,56.02840|-2.89555,55.98861|-2.93500,55.96944|-3.01805,55.94944|-3.06750,55.94444|-3.25472,55.97166|-3.45472,55.99194|-3.66416,56.00652|-3.73722,56.05555|-3.57139,56.05360|-3.44111,56.01916|-3.39584,56.01083|-3.34403,56.02333|-3.13903,56.11084|-2.97611,56.19472|-2.91666,56.20499|-2.84695,56.18638|-2.78805,56.18749|-2.67937,56.21465|-2.58403,56.28264|-2.67208,56.32277|-2.76861,56.33180|-2.81528,56.37360|-2.81208,56.43958|-2.91653,56.45014|-2.99555,56.41416|-3.19042,56.35958|-3.27805,56.35750|-3.04055,56.45472|-2.95861,56.45611|-2.72084,56.48888|-2.64084,56.52250|-2.53126,56.57611|-2.48861,56.61416|-2.47805,56.71527|-2.39000,56.77166|-2.31986,56.79638|-2.21972,56.86777|-2.19708,56.94388|-2.16695,57.00055|-2.09334,57.07027|-2.05416,57.21861|-1.95889,57.33250|-1.85584,57.39889|-1.77334,57.45805|-1.78139,57.50555|-1.82195,57.57861|-1.86000,57.62138|-1.92972,57.67777|-2.02222,57.69388|-2.07555,57.69944|-2.14028,57.69056|-2.18611,57.66861|-2.39626,57.66638|-2.51000,57.67166|-2.78639,57.70222|-2.89806,57.70694|-2.96750,57.68027|-3.03847,57.66249|-3.12334,57.67166|-3.22334,57.69166|-3.28625,57.72499|-3.33972,57.72333|-3.48805,57.70945|-3.52222,57.66333|-3.59542,57.63666|-3.64063,57.63881|-3.75414,57.62504|-4.03986,57.55569|-4.19666,57.48584|-4.22889,57.51554|-4.17945,57.56249|-4.11139,57.59833|-4.08078,57.66533|-4.19139,57.67139|-4.25945,57.65527|-4.34361,57.60777|-4.41639,57.60166|-4.29666,57.67444|-4.08528,57.72611|-4.01908,57.70226|-3.96861,57.70250|-3.86556,57.76861|-3.81945,57.80458|-3.80681,57.85819|-3.85055,57.82000|-3.92639,57.80749|-4.04322,57.81438|-4.14973,57.82527|-4.29750,57.84638|-4.36250,57.89777|-4.24306,57.87028|-4.10666,57.85195|-4.01500,57.86777|-3.99166,57.90611|-3.99695,57.95056|-3.84500,58.02000|-3.56611,58.13916|-3.51319,58.16374|-3.45916,58.20305|-3.42028,58.24361|-3.33750,58.27694|-3.20555,58.30625|-3.10972,58.38166|-3.05792,58.45083|-3.02264,58.64653|-3.17639,58.64944|-3.35389,58.66055|-3.36931,58.59555|-3.57611,58.62194|-3.66028,58.61972|-3.71166,58.60374|-3.78264,58.56750|-3.84834,58.56000|-4.08056,58.55527|-4.27722,58.53361|-4.43653,58.54902|-4.50666,58.56777|-4.56055,58.57584|-4.59910,58.53027|-4.66805,58.48833|-4.76146,58.44604|-4.70195,58.50999|-4.70166,58.55861|-4.77014,58.60264|-5.00153,58.62416|-5.10945,58.50833|-5.16472,58.32527|-5.12639,58.28750|-5.07166,58.26472|-5.20361,58.25083|-5.39764,58.25055|-5.27389,58.11722|-5.31514,58.06416|-5.38416,58.08361|-5.45285,58.07416|-5.39805,58.03111|-5.26278,57.97111|-5.19334,57.95069|-5.12750,57.86944|-5.21750,57.90084|-5.33861,57.92083|-5.42876,57.90104|-5.45750,57.85889|-5.64445,57.89972|-5.62555,57.85222|-5.58153,57.81945|-5.60674,57.76618|-5.66305,57.78889|-5.71695,57.86944|-5.76695,57.86472|-5.81708,57.81944|-5.81084,57.63958|-5.69555,57.55944|-5.64361,57.55222|-5.53084,57.52833|-5.65305,57.50875|-5.75000,57.54834|-5.81569,57.57923|-5.85042,57.54972|-5.86695,57.46777|-5.81806,57.36250|-5.75111,57.34333|-5.50334,57.40111|-5.45126,57.41805|-5.49250,57.37083|-5.59884,57.33049|-5.57116,57.28411|-5.51266,57.27745|-5.40514,57.23097|-5.44972,57.22138|-5.49472,57.23888|-5.56066,57.25477|-5.64611,57.23499|-5.64751,57.16161|-5.55028,57.11639|-5.48166,57.11222|-5.40305,57.11062|-5.55945,57.09250|-5.65111,57.11611|-5.72472,57.11306|-5.77361,57.04556|-5.63139,56.98499|-5.56916,56.98972|-5.52403,56.99735|-5.57916,56.98000|-5.64611,56.97222|-5.73374,57.00909|-5.82584,57.00346|-5.91958,56.88708|-5.86528,56.87944|-5.74278,56.89374|-5.66292,56.86924|-5.73306,56.83916|-5.78584,56.83955|-5.85590,56.81430|-5.80208,56.79180|-5.84958,56.74444|-5.90500,56.75666|-5.96694,56.78027|-6.14000,56.75777|-6.19208,56.74888|-6.23452,56.71673|-6.19139,56.67972|-5.91916,56.67388|-5.82622,56.69156|-5.73945,56.71166|-5.55240,56.68886|-5.64861,56.68027|-5.69916,56.68278|-5.88261,56.65666|-5.97472,56.65138|-5.99584,56.61138|-5.93056,56.56972|-5.88416,56.55333|-5.79056,56.53805|-5.67695,56.49389|-5.56389,56.54056|-5.36334,56.66195|-5.23416,56.74333|-5.13236,56.79403|-5.31473,56.65666|-5.37405,56.55925|-5.31826,56.55633|-5.25080,56.55753|-5.37718,56.52112|-5.39866,56.47866|-5.19111,56.46194|-5.11556,56.51277|-5.07014,56.56069|-5.13555,56.48499|-5.22084,56.43583|-5.32764,56.43574|-5.42439,56.43091|-5.52611,56.37360|-5.57139,56.32833|-5.59653,56.25695|-5.57389,56.16000|-5.52000,56.16485|-5.56334,56.11333|-5.60139,56.07638|-5.64222,56.04305|-5.66039,55.98263|-5.62555,56.02055|-5.58014,56.01319|-5.63361,55.96611|-5.67697,55.88844|-5.64750,55.78139|-5.60986,55.75930|-5.66916,55.66166|-5.70166,55.58861|-5.71805,55.51500|-5.75916,55.41750|-5.79528,55.36027|-5.78166,55.29902|-5.73778,55.29222|-5.56694,55.31666|-5.51528,55.36347|-5.55520,55.41440|-5.48639,55.64306|-5.44597,55.70680|-5.38000,55.75027|-5.41889,55.90666|-5.39924,55.99972|-5.33895,56.03456|-5.30594,56.06922|-5.23889,56.11889|-5.03222,56.23250|-4.92229,56.27111|-4.97416,56.23333|-5.07222,56.18695|-5.20069,56.11861|-5.30906,56.00570|-5.34000,55.90201|-5.29250,55.84750|-5.20805,55.84444|-5.22458,55.90175|-5.17334,55.92916|-5.11000,55.90306|-5.01222,55.86694|-4.96195,55.88000|-4.89824,55.98145|-4.84623,56.08632|-4.86636,56.03178|-4.85461,55.98648|-4.77659,55.97977|-4.62723,55.94555|-4.52305,55.91861|-4.70972,55.93403|-4.75166,55.94611|-4.82406,55.94950|-4.87826,55.93653|-4.91639,55.70083|-4.87584,55.68194|-4.81361,55.64555|-4.68722,55.59750|-4.61361,55.49069|-4.63958,55.44264|-4.68250,55.43388|-4.74847,55.41055|-4.83715,55.31882|-4.84778,55.26944|-4.86542,55.22340|-4.93500,55.17860|-5.01250,55.13347|-5.05361,55.04902|-5.17834,54.98888|-5.18563,54.93622|-5.17000,54.89111|-5.11666,54.83180|-5.00500,54.76333|-4.96229,54.68125|-4.92250,54.64055|-4.85723,54.62958|-4.96076,54.79687|-4.92431,54.83708|-4.85222,54.86861|-4.80125,54.85556|-4.74055,54.82166|-4.68084,54.79972|-4.59861,54.78027|-4.55792,54.73903|-4.49639,54.69888|-4.37584,54.67666|-4.34569,54.70916|-4.35973,54.77111|-4.41111,54.82583|-4.42445,54.88152|-4.38479,54.90555|-4.35056,54.85903|-4.09555,54.76777|-3.95361,54.76749|-3.86972,54.80527|-3.81222,54.84888|-3.69250,54.88110|-3.61584,54.87527|-3.57111,54.99083|-3.44528,54.98638|-3.36056,54.97138|-3.14695,54.96500|-3.05103,54.97986|-3.01500,55.05222|-2.96278,55.03889|-2.69945,55.17722|-2.63055,55.25500|-2.46305,55.36111|-2.21236,55.42777|-2.18278,55.45985|-2.21528,55.50583|-2.27416,55.57527|-2.27916,55.64472|-2.22000,55.66499|-2.08361,55.78054|-2.02166,55.80611'; num_arrays = 1; } else if (pl_name == 'England') { // England var returnGeom1 = '-4.74361,50.66750|-4.78361,50.59361|-4.91584,50.57722|-5.01750,50.54264|-5.02569,50.47271|-5.04729,50.42750|-5.15208,50.34374|-5.26805,50.27389|-5.43194,50.19326|-5.49584,50.21695|-5.54639,50.20527|-5.71000,50.12916|-5.71681,50.06083|-5.66174,50.03631|-5.58278,50.04777|-5.54166,50.07055|-5.53416,50.11569|-5.47055,50.12499|-5.33361,50.09138|-5.27666,50.05972|-5.25674,50.00514|-5.19306,49.95527|-5.16070,50.00319|-5.06555,50.03750|-5.07090,50.08166|-5.04806,50.17111|-4.95278,50.19333|-4.85750,50.23166|-4.76250,50.31138|-4.67861,50.32583|-4.54334,50.32222|-4.48278,50.32583|-4.42972,50.35139|-4.38000,50.36388|-4.16555,50.37028|-4.11139,50.33027|-4.05708,50.29791|-3.94389,50.31346|-3.87764,50.28139|-3.83653,50.22972|-3.78944,50.21222|-3.70666,50.20972|-3.65195,50.23111|-3.55139,50.43833|-3.49416,50.54639|-3.46181,50.58792|-3.41139,50.61610|-3.24416,50.67444|-3.17347,50.68833|-3.09445,50.69222|-2.97806,50.70638|-2.92750,50.73125|-2.88278,50.73111|-2.82305,50.72027|-2.77139,50.70861|-2.66195,50.67334|-2.56305,50.63222|-2.45861,50.57500|-2.44666,50.62639|-2.39097,50.64166|-2.19722,50.62611|-2.12195,50.60722|-2.05445,50.58569|-1.96437,50.59674|-1.95441,50.66536|-2.06681,50.71430|-1.93416,50.71277|-1.81639,50.72306|-1.68445,50.73888|-1.59278,50.72416|-1.33139,50.79138|-1.11695,50.80694|-1.15889,50.84083|-1.09445,50.84584|-0.92842,50.83966|-0.86584,50.79965|-0.90826,50.77396|-0.78187,50.72722|-0.74611,50.76583|-0.67528,50.78111|-0.57722,50.79527|-0.25500,50.82638|-0.19084,50.82583|-0.13805,50.81833|0.05695,50.78083|0.12334,50.75944|0.22778,50.73944|0.28695,50.76500|0.37195,50.81638|0.43084,50.83111|0.56722,50.84777|0.67889,50.87681|0.71639,50.90500|0.79334,50.93610|0.85666,50.92556|0.97125,50.98111|0.99778,51.01903|1.04555,51.04944|1.10028,51.07361|1.26250,51.10166|1.36889,51.13583|1.41111,51.20111|1.42750,51.33111|1.38556,51.38777|1.19195,51.37861|1.05278,51.36722|0.99916,51.34777|0.90806,51.34069|0.70416,51.37749|0.61972,51.38304|0.55945,51.40596|0.64236,51.44042|0.69750,51.47084|0.59195,51.48777|0.53611,51.48806|0.48916,51.48445|0.45215,51.45562|0.38894,51.44822|0.46500,51.50306|0.65195,51.53680|0.76695,51.52138|0.82084,51.53556|0.87528,51.56110|0.95250,51.60923|0.94695,51.72556|0.90257,51.73465|0.86306,51.71166|0.76140,51.69164|0.70111,51.71847|0.86211,51.77361|0.93236,51.80583|0.98278,51.82527|1.03569,51.77416|1.08834,51.77056|1.13222,51.77694|1.18139,51.78972|1.22361,51.80888|1.26611,51.83916|1.28097,51.88096|1.20834,51.95083|1.16347,52.02361|1.27750,51.98555|1.33125,51.92875|1.39028,51.96999|1.58736,52.08388|1.63000,52.19527|1.68576,52.32630|1.73028,52.41138|1.74945,52.45583|1.74590,52.62021|1.70250,52.71583|1.64528,52.77111|1.50361,52.83749|1.43222,52.87472|1.35250,52.90972|1.28222,52.92750|1.18389,52.93889|0.99472,52.95111|0.94222,52.95083|0.88472,52.96638|0.66722,52.97611|0.54778,52.96618|0.49139,52.93430|0.44431,52.86569|0.42903,52.82403|0.36334,52.78027|0.21778,52.80694|0.16125,52.86250|0.05778,52.88916|0.00211,52.87985|0.03222,52.91722|0.20389,53.02805|0.27666,53.06694|0.33916,53.09236|0.35389,53.18722|0.33958,53.23472|0.23555,53.39944|0.14347,53.47527|0.08528,53.48638|0.02694,53.50972|-0.10084,53.57306|-0.20722,53.63083|-0.26445,53.69083|-0.30166,53.71319|-0.39022,53.70794|-0.51972,53.68527|-0.71653,53.69638|-0.65445,53.72527|-0.60584,53.72972|-0.54916,53.70611|-0.42261,53.71755|-0.35728,53.73056|-0.29389,53.73666|-0.23139,53.72166|-0.10584,53.63166|-0.03472,53.62555|0.04416,53.63916|0.08916,53.62666|0.14945,53.58847|0.12639,53.64527|0.06264,53.70389|-0.12750,53.86388|-0.16916,53.91847|-0.21222,54.00833|-0.20569,54.05153|-0.16111,54.08806|-0.11694,54.13222|-0.20053,54.15171|-0.26250,54.17444|-0.39334,54.27277|-0.42166,54.33222|-0.45750,54.37694|-0.51847,54.44749|-0.56472,54.48000|-0.87584,54.57027|-1.06139,54.61722|-1.16528,54.64972|-1.30445,54.77138|-1.34556,54.87138|-1.41278,54.99944|-1.48292,55.08625|-1.51500,55.14972|-1.56584,55.28722|-1.58097,55.48361|-1.63597,55.58194|-1.69000,55.60556|-1.74695,55.62499|-1.81764,55.63306|-1.97681,55.75416|-2.02166,55.80611|-2.08361,55.78054|-2.22000,55.66499|-2.27916,55.64472|-2.27416,55.57527|-2.21528,55.50583|-2.18278,55.45985|-2.21236,55.42777|-2.46305,55.36111|-2.63055,55.25500|-2.69945,55.17722|-2.96278,55.03889|-3.01500,55.05222|-3.05103,54.97986|-3.13292,54.93139|-3.20861,54.94944|-3.28931,54.93792|-3.39166,54.87639|-3.42916,54.81555|-3.56916,54.64249|-3.61306,54.48861|-3.49305,54.40333|-3.43389,54.34806|-3.41056,54.28014|-3.38055,54.24444|-3.21472,54.09555|-3.15222,54.08194|-2.93097,54.15333|-2.81361,54.22277|-2.81750,54.14277|-2.83361,54.08500|-2.93250,53.95055|-3.05264,53.90764|-3.03708,53.74944|-2.99278,53.73277|-2.89979,53.72499|-2.97729,53.69382|-3.07306,53.59805|-3.10563,53.55993|-3.00678,53.41738|-2.95389,53.36027|-2.85736,53.32083|-2.70493,53.35062|-2.77639,53.29250|-2.89972,53.28916|-2.94250,53.31056|-3.02889,53.38191|-3.07248,53.40936|-3.16695,53.35708|-3.12611,53.32500|-3.08860,53.26001|-3.02000,53.24722|-2.95528,53.21555|-2.91069,53.17014|-2.89389,53.10416|-2.85695,53.03249|-2.77792,52.98514|-2.73109,52.96873|-2.71945,52.91902|-2.79278,52.90207|-2.85069,52.93875|-2.99389,52.95361|-3.08639,52.91611|-3.13014,52.88486|-3.13708,52.79312|-3.06806,52.77027|-3.01111,52.71166|-3.06666,52.63527|-3.11750,52.58666|-3.07089,52.55702|-3.00792,52.56902|-2.98028,52.53083|-3.02736,52.49792|-3.11916,52.49194|-3.19514,52.46722|-3.19611,52.41027|-3.02195,52.34027|-2.95486,52.33117|-2.99750,52.28139|-3.05125,52.23347|-3.07555,52.14804|-3.12222,52.11805|-3.11250,52.06945|-3.08500,52.01930|-3.04528,51.97639|-2.98889,51.92555|-2.91757,51.91569|-2.86639,51.92889|-2.77861,51.88583|-2.65944,51.81806|-2.68334,51.76957|-2.68666,51.71889|-2.66500,51.61500|-2.62916,51.64416|-2.57889,51.67777|-2.46056,51.74666|-2.40389,51.74041|-2.47166,51.72445|-2.55305,51.65722|-2.65334,51.56389|-2.77055,51.48916|-2.85278,51.44472|-2.96000,51.37499|-3.00695,51.30722|-3.01278,51.25632|-3.02834,51.20611|-3.30139,51.18111|-3.39361,51.18138|-3.43729,51.20638|-3.50722,51.22333|-3.57014,51.23027|-3.63222,51.21805|-3.70028,51.23000|-3.79250,51.23916|-3.88389,51.22416|-3.98472,51.21695|-4.11666,51.21222|-4.22805,51.18777|-4.22028,51.11054|-4.23702,51.04659|-4.30361,51.00416|-4.37639,50.99110|-4.42736,51.00958|-4.47445,51.01416|-4.52132,51.01424|-4.54334,50.92694|-4.56139,50.77625|-4.65139,50.71527|-4.74361,50.66750'; //|-3.08860,53.26001|-3.33639,53.34722|-3.38806,53.34361|-3.60986,53.27944|-3.73014,53.28944|-3.85445,53.28444|-4.01861,53.23750|-4.06639,53.22639|-4.15334,53.22556|-4.19639,53.20611|-4.33028,53.11222|-4.36097,53.02888|-4.55278,52.92889|-4.61889,52.90916|-4.72195,52.83611|-4.72778,52.78139|-4.53945,52.79306|-4.47722,52.85500|-4.41416,52.88472|-4.31292,52.90499|-4.23334,52.91499|-4.13569,52.87888|-4.13056,52.77777|-4.05334,52.71666|-4.10639,52.65084|-4.12597,52.60375|-4.08056,52.55333|-4.05972,52.48584|-4.09666,52.38583|-4.14305,52.32027|-4.19361,52.27638|-4.23166,52.24888|-4.52722,52.13083|-4.66945,52.13027|-4.73695,52.10361|-4.76778,52.06444|-4.84445,52.01388|-5.09945,51.96056|-5.23916,51.91638|-5.25889,51.87056|-5.18500,51.86958|-5.11528,51.83333|-5.10257,51.77895|-5.16111,51.76222|-5.24694,51.73027|-5.19111,51.70888|-5.00739,51.70349|-4.90875,51.71249|-4.86111,51.71334|-4.97061,51.67577|-5.02128,51.66861|-5.05139,51.62028|-5.00528,51.60638|-4.94139,51.59416|-4.89028,51.62694|-4.83569,51.64534|-4.79063,51.63340|-4.69028,51.66666|-4.64584,51.72666|-4.57445,51.73416|-4.43611,51.73722|-4.26222,51.67694|-4.19750,51.67916|-4.06614,51.66804|-4.11639,51.63416|-4.17750,51.62235|-4.25055,51.62861|-4.29208,51.60743|-4.27778,51.55666|-4.20486,51.53527|-3.94972,51.61278|-3.83792,51.61999|-3.78166,51.56750|-3.75160,51.52931|-3.67194,51.47388|-3.54250,51.39777|-3.40334,51.37972|-3.27097,51.38014|-3.16458,51.40909|-3.15166,51.45305|-3.11875,51.48750|-3.02111,51.52527|-2.95472,51.53972|-2.89278,51.53861|-2.84778,51.54500|-2.71472,51.58083|-2.66500,51.61500|-2.68666,51.71889|-2.68334,51.76957|-2.65944,51.81806|-2.77861,51.88583|-2.86639,51.92889|-2.91757,51.91569|-2.98889,51.92555|-3.04528,51.97639|-3.08500,52.01930|-3.11250,52.06945|-3.12222,52.11805|-3.07555,52.14804|-3.05125,52.23347|-2.99750,52.28139|-2.95486,52.33117|-3.02195,52.34027|-3.19611,52.41027|-3.19514,52.46722|-3.11916,52.49194|-3.02736,52.49792|-2.98028,52.53083|-3.00792,52.56902|-3.07089,52.55702|-3.11750,52.58666|-3.06666,52.63527|-3.01111,52.71166|-3.06806,52.77027|-3.13708,52.79312|-3.13014,52.88486|-3.08639,52.91611|-2.99389,52.95361|-2.85069,52.93875|-2.79278,52.90207|-2.71945,52.91902|-2.73109,52.96873|-2.77792,52.98514|-2.85695,53.03249|-2.89389,53.10416|-2.91069,53.17014|-2.95528,53.21555|-3.02000,53.24722|-3.08860,53.26001'; // Wales Test // var returnGeom2 = '-3.08860,53.26001|-3.33639,53.34722|-3.38806,53.34361|-3.60986,53.27944|-3.73014,53.28944|-3.85445,53.28444|-4.01861,53.23750|-4.06639,53.22639|-4.15334,53.22556|-4.19639,53.20611|-4.33028,53.11222|-4.36097,53.02888|-4.55278,52.92889|-4.61889,52.90916|-4.72195,52.83611|-4.72778,52.78139|-4.53945,52.79306|-4.47722,52.85500|-4.41416,52.88472|-4.31292,52.90499|-4.23334,52.91499|-4.13569,52.87888|-4.13056,52.77777|-4.05334,52.71666|-4.10639,52.65084|-4.12597,52.60375|-4.08056,52.55333|-4.05972,52.48584|-4.09666,52.38583|-4.14305,52.32027|-4.19361,52.27638|-4.23166,52.24888|-4.52722,52.13083|-4.66945,52.13027|-4.73695,52.10361|-4.76778,52.06444|-4.84445,52.01388|-5.09945,51.96056|-5.23916,51.91638|-5.25889,51.87056|-5.18500,51.86958|-5.11528,51.83333|-5.10257,51.77895|-5.16111,51.76222|-5.24694,51.73027|-5.19111,51.70888|-5.00739,51.70349|-4.90875,51.71249|-4.86111,51.71334|-4.97061,51.67577|-5.02128,51.66861|-5.05139,51.62028|-5.00528,51.60638|-4.94139,51.59416|-4.89028,51.62694|-4.83569,51.64534|-4.79063,51.63340|-4.69028,51.66666|-4.64584,51.72666|-4.57445,51.73416|-4.43611,51.73722|-4.26222,51.67694|-4.19750,51.67916|-4.06614,51.66804|-4.11639,51.63416|-4.17750,51.62235|-4.25055,51.62861|-4.29208,51.60743|-4.27778,51.55666|-4.20486,51.53527|-3.94972,51.61278|-3.83792,51.61999|-3.78166,51.56750|-3.75160,51.52931|-3.67194,51.47388|-3.54250,51.39777|-3.40334,51.37972|-3.27097,51.38014|-3.16458,51.40909|-3.15166,51.45305|-3.11875,51.48750|-3.02111,51.52527|-2.95472,51.53972|-2.89278,51.53861|-2.84778,51.54500|-2.71472,51.58083|-2.66500,51.61500|-2.68666,51.71889|-2.68334,51.76957|-2.65944,51.81806|-2.77861,51.88583|-2.86639,51.92889|-2.91757,51.91569|-2.98889,51.92555|-3.04528,51.97639|-3.08500,52.01930|-3.11250,52.06945|-3.12222,52.11805|-3.07555,52.14804|-3.05125,52.23347|-2.99750,52.28139|-2.95486,52.33117|-3.02195,52.34027|-3.19611,52.41027|-3.19514,52.46722|-3.11916,52.49194|-3.02736,52.49792|-2.98028,52.53083|-3.00792,52.56902|-3.07089,52.55702|-3.11750,52.58666|-3.06666,52.63527|-3.01111,52.71166|-3.06806,52.77027|-3.13708,52.79312|-3.13014,52.88486|-3.08639,52.91611|-2.99389,52.95361|-2.85069,52.93875|-2.79278,52.90207|-2.71945,52.91902|-2.73109,52.96873|-2.77792,52.98514|-2.85695,53.03249|-2.89389,53.10416|-2.91069,53.17014|-2.95528,53.21555|-3.02000,53.24722|-3.08860,53.26001'; num_arrays = 2; } else if (pl_name == 'Wales') { var returnGeom1 = '-3.08860,53.26001|-3.33639,53.34722|-3.38806,53.34361|-3.60986,53.27944|-3.73014,53.28944|-3.85445,53.28444|-4.01861,53.23750|-4.06639,53.22639|-4.15334,53.22556|-4.19639,53.20611|-4.33028,53.11222|-4.36097,53.02888|-4.55278,52.92889|-4.61889,52.90916|-4.72195,52.83611|-4.72778,52.78139|-4.53945,52.79306|-4.47722,52.85500|-4.41416,52.88472|-4.31292,52.90499|-4.23334,52.91499|-4.13569,52.87888|-4.13056,52.77777|-4.05334,52.71666|-4.10639,52.65084|-4.12597,52.60375|-4.08056,52.55333|-4.05972,52.48584|-4.09666,52.38583|-4.14305,52.32027|-4.19361,52.27638|-4.23166,52.24888|-4.52722,52.13083|-4.66945,52.13027|-4.73695,52.10361|-4.76778,52.06444|-4.84445,52.01388|-5.09945,51.96056|-5.23916,51.91638|-5.25889,51.87056|-5.18500,51.86958|-5.11528,51.83333|-5.10257,51.77895|-5.16111,51.76222|-5.24694,51.73027|-5.19111,51.70888|-5.00739,51.70349|-4.90875,51.71249|-4.86111,51.71334|-4.97061,51.67577|-5.02128,51.66861|-5.05139,51.62028|-5.00528,51.60638|-4.94139,51.59416|-4.89028,51.62694|-4.83569,51.64534|-4.79063,51.63340|-4.69028,51.66666|-4.64584,51.72666|-4.57445,51.73416|-4.43611,51.73722|-4.26222,51.67694|-4.19750,51.67916|-4.06614,51.66804|-4.11639,51.63416|-4.17750,51.62235|-4.25055,51.62861|-4.29208,51.60743|-4.27778,51.55666|-4.20486,51.53527|-3.94972,51.61278|-3.83792,51.61999|-3.78166,51.56750|-3.75160,51.52931|-3.67194,51.47388|-3.54250,51.39777|-3.40334,51.37972|-3.27097,51.38014|-3.16458,51.40909|-3.15166,51.45305|-3.11875,51.48750|-3.02111,51.52527|-2.95472,51.53972|-2.89278,51.53861|-2.84778,51.54500|-2.71472,51.58083|-2.66500,51.61500|-2.68666,51.71889|-2.68334,51.76957|-2.65944,51.81806|-2.77861,51.88583|-2.86639,51.92889|-2.91757,51.91569|-2.98889,51.92555|-3.04528,51.97639|-3.08500,52.01930|-3.11250,52.06945|-3.12222,52.11805|-3.07555,52.14804|-3.05125,52.23347|-2.99750,52.28139|-2.95486,52.33117|-3.02195,52.34027|-3.19611,52.41027|-3.19514,52.46722|-3.11916,52.49194|-3.02736,52.49792|-2.98028,52.53083|-3.00792,52.56902|-3.07089,52.55702|-3.11750,52.58666|-3.06666,52.63527|-3.01111,52.71166|-3.06806,52.77027|-3.13708,52.79312|-3.13014,52.88486|-3.08639,52.91611|-2.99389,52.95361|-2.85069,52.93875|-2.79278,52.90207|-2.71945,52.91902|-2.73109,52.96873|-2.77792,52.98514|-2.85695,53.03249|-2.89389,53.10416|-2.91069,53.17014|-2.95528,53.21555|-3.02000,53.24722|-3.08860,53.26001'; num_arrays = 1; } else if (pl_name == 'Ireland') { var returnGeom1 = '-8.17166,54.46388|-8.06555,54.37277|-7.94139,54.29944|-7.87576,54.28499|-7.86834,54.22764|-7.81805,54.19916|-7.69972,54.20250|-7.55945,54.12694|-7.31334,54.11250|-7.14584,54.22527|-7.17555,54.28916|-7.16084,54.33666|-7.05834,54.41000|-6.97445,54.40166|-6.92695,54.37916|-6.87305,54.34208|-6.85111,54.28972|-6.73473,54.18361|-6.65556,54.06527|-6.60584,54.04444|-6.44750,54.05833|-6.33889,54.11555|-6.26697,54.09983|-6.17403,54.07222|-6.10834,54.03638|-6.04389,54.03139|-5.96834,54.06389|-5.88500,54.11639|-5.87347,54.20916|-5.82500,54.23958|-5.74611,54.24806|-5.65556,54.22701|-5.60834,54.24972|-5.55916,54.29084|-5.57334,54.37704|-5.64502,54.49267|-5.70472,54.53361|-5.68055,54.57306|-5.59972,54.54194|-5.55097,54.50083|-5.54216,54.44903|-5.54643,54.40527|-5.50672,54.36444|-5.46111,54.38555|-5.43132,54.48596|-5.47945,54.53638|-5.53521,54.65090|-5.57431,54.67722|-5.62916,54.67945|-5.73674,54.67383|-5.80305,54.66138|-5.88257,54.60652|-5.92445,54.63180|-5.86681,54.68972|-5.81903,54.70972|-5.74672,54.72452|-5.68775,54.76335|-5.70931,54.83166|-5.74694,54.85361|-5.79139,54.85139|-6.03611,55.05778|-6.04250,55.10277|-6.03444,55.15458|-6.10125,55.20945|-6.14584,55.22069|-6.25500,55.21194|-6.37639,55.23916|-6.51556,55.23305|-6.61334,55.20722|-6.73028,55.18027|-6.82472,55.16806|-6.88972,55.16777|-6.96695,55.15611|-6.99416,55.11027|-7.05139,55.04680|-7.09500,55.03694|-7.25251,55.07059|-7.32639,55.04527|-7.40639,54.95333|-7.45805,54.85777|-7.55334,54.76277|-7.73916,54.71054|-7.82576,54.73416|-7.92639,54.70054|-7.85236,54.63388|-7.77750,54.62694|-7.83361,54.55389|-7.95084,54.53222|-8.04695,54.50722|-8.17166,54.46388'; num_arrays = 1; } else if (pl_name == 'NC') { var returnGeom1 = '-81.65876,36.60938|-81.70390,36.55513|-81.70639,36.50804|-81.74665,36.39777|-81.90723,36.30804|-82.03195,36.12694|-82.08416,36.10146|-82.12826,36.11020|-82.21500,36.15833|-82.36375,36.11347|-82.43472,36.06013|-82.46236,36.01708|-82.56006,35.96263|-82.60042,35.99638|-82.62308,36.06121|-82.73500,36.01833|-82.84612,35.94944|-82.90451,35.88819|-82.93555,35.83846|-83.16000,35.76236|-83.24222,35.71944|-83.49222,35.57111|-83.56847,35.55861|-83.64416,35.56471|-83.73499,35.56638|-83.88222,35.51791|-83.98361,35.44944|-84.03639,35.35444|-84.04964,35.29117|-84.09042,35.25986|-84.15084,35.25388|-84.20521,35.25722|-84.29284,35.22596|-84.32471,34.98701|-83.09778,35.00027|-82.77722,35.09138|-82.59639,35.14972|-82.37999,35.21500|-82.27362,35.20583|-81.41306,35.17416|-81.05915,35.15333|-80.92666,35.10695|-80.78751,34.95610|-80.79334,34.82555|-79.66777,34.80694|-79.11555,34.34527|-78.57222,33.88166|-78.51806,33.87999|-78.43721,33.89804|-78.23735,33.91986|-78.15389,33.91471|-78.06974,33.89500|-78.02597,33.88936|-77.97611,33.94276|-77.95299,33.99243|-77.94499,34.06499|-77.92728,34.11756|-77.92250,33.99194|-77.92264,33.93715|-77.88215,34.06166|-77.86222,34.15083|-77.83501,34.19194|-77.75724,34.28527|-77.68222,34.36555|-77.63667,34.39805|-77.57363,34.43694|-77.45527,34.50403|-77.38173,34.51646|-77.37905,34.56294|-77.38572,34.61260|-77.40944,34.68916|-77.38847,34.73304|-77.33097,34.63992|-77.35024,34.60099|-77.30958,34.55972|-77.09424,34.67742|-76.75994,34.76659|-76.68325,34.79749|-76.66097,34.75781|-76.62611,34.71014|-76.50063,34.73617|-76.48138,34.77638|-76.38305,34.86423|-76.34326,34.88194|-76.27181,34.96263|-76.35125,35.02221|-76.32354,34.97429|-76.45319,34.93524|-76.43395,34.98782|-76.45356,35.06676|-76.52917,35.00444|-76.63382,34.98242|-76.69722,34.94887|-76.75306,34.90526|-76.81636,34.93944|-76.89000,34.95388|-76.93180,34.96957|-76.96501,34.99777|-77.06816,35.14978|-76.97639,35.06806|-76.86722,35.00000|-76.80531,34.98559|-76.72708,35.00152|-76.60402,35.07416|-76.56555,35.11486|-76.57305,35.16013|-76.66489,35.16694|-76.56361,35.23361|-76.48750,35.22582|-76.46889,35.27166|-76.50298,35.30791|-76.83251,35.39222|-77.02305,35.48694|-77.04958,35.52694|-76.91292,35.46166|-76.65250,35.41499|-76.61611,35.45888|-76.63195,35.52249|-76.58820,35.55104|-76.51556,35.53194|-76.56711,35.48494|-76.52251,35.40416|-76.46195,35.37221|-76.13319,35.35986|-76.04111,35.42416|-76.00223,35.46610|-75.97958,35.51666|-75.89362,35.57555|-75.83834,35.56694|-75.78944,35.57138|-75.74076,35.61846|-75.72084,35.69263|-75.72084,35.81451|-75.74917,35.87791|-75.78333,35.91972|-75.85083,35.97527|-75.94333,35.91777|-75.98944,35.88054|-75.98854,35.79110|-75.99388,35.71027|-76.02875,35.65409|-76.10320,35.66041|-76.13563,35.69239|-76.04475,35.68436|-76.04167,35.74916|-76.05305,35.79361|-76.05305,35.87375|-76.02653,35.96222|-76.07751,35.99319|-76.17472,35.99596|-76.27917,35.91915|-76.37986,35.95763|-76.42014,35.97874|-76.55375,35.93971|-76.66222,35.93305|-76.72952,35.93984|-76.73392,36.04760|-76.75384,36.09477|-76.76028,36.14513|-76.74610,36.22818|-76.70458,36.24673|-76.72764,36.16736|-76.71021,36.11752|-76.69117,36.07165|-76.65979,36.03312|-76.49527,36.00958|-76.37138,36.07694|-76.37084,36.14999|-76.21417,36.09471|-76.07591,36.17910|-76.18361,36.26915|-76.19965,36.31739|-76.13986,36.28805|-76.04274,36.21974|-76.00465,36.18110|-75.95287,36.19241|-75.97604,36.31138|-75.93895,36.28381|-75.85271,36.11069|-75.79315,36.07385|-75.79639,36.11804|-75.88333,36.29554|-75.94665,36.37194|-75.98694,36.41166|-76.03473,36.49666|-76.02899,36.55000|-78.44234,36.54986|-78.56594,36.55799|-80.27556,36.55110|-81.15361,36.56499|-81.38722,36.57695|-81.65876,36.60938'; num_arrays = 1; } else { // show nothing } /* // Set borders and fill parameters ------- Not finished yet. --------------- if (map.mapTypeId == 'roadmap') { var colorStroke = "#444444"; var weightStroke = 1.2; var opacityFill = 0.1; } else if (map.mapTypeId == 'satellite') { var colorStroke = "#000000"; var weightStroke = 0.1; var opacityFill = 0; } else if (map.mapTypeId == 'hybrid') { var colorStroke = "#ffffff"; var weightStroke = 1.2; var opacityFill = 0; } else if (map.mapTypeId == 'terrain') { var colorStroke = "#ffffff"; var weightStroke = 1.2; var opacityFill = 0; } // ------------------------------------------------------------------------- */ // If showing one country only (num_arrays == 1) --------------------------- // Calculate polygon if (num_arrays == 1 ) { var geomAry1 = returnGeom1.split('|'); var XY1 = []; var points1 = []; for (var i = 0; i < geomAry1.length; i++) { XY1 = geomAry1[i].split(','); points1.push( new google.maps.LatLng(parseFloat(XY1[1]),parseFloat(XY1[0]))) ; } // Construct the polygon polygon1 = new google.maps.Polygon({ paths: points1, strokeColor: "#888888", strokeOpacity: 0.8, strokeWeight: 1, fillColor: "#ff0000", fillOpacity: 0.15 }); polygon1.setMap(map); } // If showing two countries at the same time (num_arrays == 2) -------------- if (num_arrays == 2) { // Calculate polygon1 var geomAry1 = returnGeom1.split('|'); var XY1 = []; var points1 = []; for (var i = 0; i < geomAry1.length; i++) { XY1 = geomAry1[i].split(','); points1.push( new google.maps.LatLng(parseFloat(XY1[1]),parseFloat(XY1[0]))) ; } // Construct polygon1 polygon1 = new google.maps.Polygon({ paths: points1, strokeColor: "#888888", strokeOpacity: 0.8, strokeWeight: 1, fillColor: "#ff0000", fillOpacity: 0.15 }); polygon1.setMap(map); // Calculate polygon2 var geomAry2 = returnGeom2.split('|'); var XY2 = []; var points2 = []; for (var i = 0; i < geomAry2.length; i++) { XY2 = geomAry2[i].split(','); points2.push( new google.maps.LatLng(parseFloat(XY2[1]),parseFloat(XY2[0]))) ; } // Construct polygon2 polygon2 = new google.maps.Polygon({ paths: points2, strokeColor: "#888888", strokeOpacity: 0.8, strokeWeight: 1, fillColor: "#ff0000", fillOpacity: 0.15 }); polygon2.setMap(map); } } // The HomeControl returns user to original position and style ================= function HomeControl(controlDiv, map) { // Set CSS styles for the DIV containing the control // Setting padding to 5 px will offset the control from the edge of the map controlDiv.style.paddingTop = '5px'; controlDiv.style.paddingRight = '0px'; // Set CSS for the control border var controlUI = document.createElement('DIV'); controlUI.style.backgroundColor = 'white'; controlUI.style.color = 'black'; controlUI.style.borderColor = 'black'; controlUI.style.borderColor = 'black'; controlUI.style.borderStyle = 'solid'; controlUI.style.borderWidth = '2px'; controlUI.style.cursor = 'pointer'; controlUI.style.textAlign = 'center'; controlUI.title = ''; controlDiv.appendChild(controlUI); // Set CSS for the control interior var controlText = document.createElement('DIV'); controlText.style.fontFamily = 'Arial,sans-serif'; controlText.style.fontSize = '12px'; controlText.style.paddingLeft = '15px'; controlText.style.paddingRight = '15px'; controlText.innerHTML = '<b><?php echo I18N::translate('Redraw map'); ?> <\/b>'; controlUI.appendChild(controlText); // Setup the click event listeners: simply set the map to original LatLng google.maps.event.addDomListener(controlUI, 'click', function() { map.setCenter(latlng); map.setZoom(pl_zoom); map.setMapTypeId(google.maps.MapTypeId.ROADMAP); }); } function loadMap(zoom, mapType) { var mapTyp; if (mapType) { mapTyp = mapType; } else { mapTyp = google.maps.MapTypeId.ROADMAP; } geocoder = new google.maps.Geocoder(); if (!zoom) { zoom = pl_zoom; } // Define map var myOptions = { zoom: zoom, center: latlng, mapTypeId: mapTyp,// ROADMAP, SATELLITE, HYBRID, TERRAIN // mapTypeId: google.maps.MapTypeId.ROADMAP, // ROADMAP, SATELLITE, HYBRID, TERRAIN mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.DROPDOWN_MENU // DEFAULT, DROPDOWN_MENU, HORIZONTAL_BAR }, navigationControlOptions: { position: google.maps.ControlPosition.TOP_RIGHT, // BOTTOM, BOTTOM_LEFT, LEFT, TOP, etc style: google.maps.NavigationControlStyle.SMALL // ANDROID, DEFAULT, SMALL, ZOOM_PAN }, streetViewControl: false, // Show Pegman or not scrollwheel: true }; map = new google.maps.Map(document.getElementById('map_pane'), myOptions); overlays(); // Close any infowindow when map is clicked google.maps.event.addListener(map, 'click', function() { infowindow.close(); }); // Create the DIV to hold the control and call HomeControl() passing in this DIV. -- var homeControlDiv = document.createElement('DIV'); var homeControl = new HomeControl(homeControlDiv, map); homeControlDiv.index = 1; map.controls[google.maps.ControlPosition.TOP_RIGHT].push(homeControlDiv); // --------------------------------------------------------------------------------- // Check for zoom changes google.maps.event.addListener(map, 'zoom_changed', function() { document.editplaces.NEW_ZOOM_FACTOR.value = map.zoom; }); // Create the Main Location Marker <?php if ($level < 3 && $place_icon != '') { echo 'var image = new google.maps.MarkerImage("', WT_STATIC_URL, WT_MODULES_DIR, 'googlemap/', $place_icon, '",'; echo 'new google.maps.Size(25, 15),'; // Image size echo 'new google.maps.Point(0, 0),'; // Image origin echo 'new google.maps.Point(12, 15)'; // Image anchor echo ');'; echo 'var iconShadow = new google.maps.MarkerImage("', WT_STATIC_URL, WT_MODULES_DIR, 'googlemap/images/flag_shadow.png",'; echo 'new google.maps.Size(35, 45),'; // Shadow size echo 'new google.maps.Point(0,0),'; // Shadow origin echo 'new google.maps.Point(1, 45)'; // Shadow anchor is base of flagpole echo ');'; echo 'marker = new google.maps.Marker({'; echo 'icon: image,'; echo 'shadow: iconShadow,'; echo 'position: latlng,'; echo 'map: map,'; echo 'title: pl_name,'; echo 'draggable: true,'; echo 'zIndex:1'; echo '});'; } else { echo 'marker = new google.maps.Marker({'; echo 'position: latlng,'; echo 'map: map,'; echo 'title: pl_name,'; echo 'draggable: true,'; echo 'zIndex: 1'; echo '});'; } ?> var prec = 20; for (var i=0;i<document.editplaces.NEW_PRECISION.length;i++) { if (document.editplaces.NEW_PRECISION[i].checked) { prec = document.editplaces.NEW_PRECISION[i].value; } } // Set marker by clicking on map --- google.maps.event.addListener(map, 'click', function(event) { clearMarks(); latlng = event.latLng; <?php echo 'marker = new google.maps.Marker({'; echo 'position: latlng,'; echo 'map: map,'; echo 'title: pl_name,'; echo 'draggable: true,'; echo 'zIndex: 1'; echo '});'; ?> var pos3 = marker.getPosition(); document.getElementById('NEW_PLACE_LATI').value = parseFloat(pos3.lat()).toFixed(prec); document.getElementById('NEW_PLACE_LONG').value = parseFloat(pos3.lng()).toFixed(prec); updateMap('flag_drag'); var currzoom = parseInt(document.editplaces.NEW_ZOOM_FACTOR.value); mapType = map.getMapTypeId(); loadMap(currzoom, mapType); }); // Set marker by drag-n-drop on map --- google.maps.event.addListener(marker, 'drag', function() { var pos1 = marker.getPosition(); document.getElementById('NEW_PLACE_LATI').value = parseFloat(pos1.lat()).toFixed(prec); document.getElementById('NEW_PLACE_LONG').value = parseFloat(pos1.lng()).toFixed(prec); }); google.maps.event.addListener(marker, 'dragend', function() { var pos2 = marker.getPosition(); document.getElementById('NEW_PLACE_LATI').value = parseFloat(pos2.lat()).toFixed(prec); document.getElementById('NEW_PLACE_LONG').value = parseFloat(pos2.lng()).toFixed(prec); updateMap('flag_drag'); }); } function clearMarks() { marker.setMap(null); } function setLoc(lat, lng) { var prec = 20; for (var i=0;i<document.editplaces.NEW_PRECISION.length;i++) { if (document.editplaces.NEW_PRECISION[i].checked) { prec = document.editplaces.NEW_PRECISION[i].value; } } if (lat < 0.0) { document.editplaces.NEW_PLACE_LATI.value = (lat.toFixed(prec) * -1); document.editplaces.LATI_CONTROL.value = 'PL_S'; } else { document.editplaces.NEW_PLACE_LATI.value = lat.toFixed(prec); document.editplaces.LATI_CONTROL.value = 'PL_N'; } if (lng < 0.0) { document.editplaces.NEW_PLACE_LONG.value = (lng.toFixed(prec) * -1); document.editplaces.LONG_CONTROL.value = 'PL_W'; } else { document.editplaces.NEW_PLACE_LONG.value = lng.toFixed(prec); document.editplaces.LONG_CONTROL.value = 'PL_E'; } new google.maps.LatLng (lat.toFixed(prec), lng.toFixed(prec)); updateMap(); } function createMarker(i, point, name) { var contentString = '<div id="iwcontent_edit">'+name+'<\/div>'; <?php echo 'var image = new google.maps.MarkerImage("', WT_STATIC_URL, WT_MODULES_DIR, 'googlemap/images/marker_yellow.png",'; echo 'new google.maps.Size(20, 34),'; // Image size echo 'new google.maps.Point(0, 0),'; // Image origin echo 'new google.maps.Point(10, 34)'; // Image anchor echo ');'; echo 'var iconShadow = new google.maps.MarkerImage("', WT_STATIC_URL, WT_MODULES_DIR, 'googlemap/images/shadow50.png",'; echo 'new google.maps.Size(37, 34),'; // Shadow size echo 'new google.maps.Point(0, 0),'; // Shadow origin echo 'new google.maps.Point(10, 34)'; // Shadow anchor is base of image echo ');'; ?> var marker = new google.maps.Marker({ icon: image, shadow: iconShadow, map: map, position: point, zIndex: 0 }); google.maps.event.addListener(marker, 'click', function() { infowindow.close(); infowindow.setContent(contentString); infowindow.open(map, marker); }); google.maps.event.addListener(map, 'click', function() { infowindow.close(); }); return marker; } function change_icon() { window.open('module.php?mod=googlemap&mod_action=flags&countrySelected=<?php echo $selected_country; ?> ', '_blank', indx_window_specs); return false; } function remove_icon() { document.editplaces.icon.value = ''; document.getElementById('flagsDiv').innerHTML = '<a href="#" onclick="change_icon();return false;"><?php echo I18N::translate('Change flag'); ?> </a>'; } function addAddressToMap(response) { var bounds = new google.maps.LatLngBounds(); if (!response ) { alert('<?php echo I18N::translate('No places found'); ?> '); } else { if (response.length > 0) { for (var i=0; i<response.length; i++) { // 5 decimal places is approx 1 metre accuracy. var name = '<div id="gname" class="iwstyle">'+response[i].address_components[0].short_name+'<br>('+response[i].geometry.location.lng().toFixed(5)+','+response[i].geometry.location.lat().toFixed(5)+''; name += '<br><a href="#" onclick="setLoc(' + response[i].geometry.location.lat() + ', ' + response[i].geometry.location.lng() + ');"><div id="namelink"><?php echo I18N::translate('Use this value'); ?> </div></a>'; name += '</div>'; var point = response[i].geometry.location; var marker = createMarker(i, point, name); bounds.extend(response[i].geometry.location); } <?php if ($level > 0) { ?> map.fitBounds(bounds); <?php } ?> var zoomlevel = map.getZoom(); if (zoomlevel < <?php echo $this->getSetting('GM_MIN_ZOOM'); ?> ) { zoomlevel = <?php echo $this->getSetting('GM_MIN_ZOOM'); ?> ; } if (zoomlevel > <?php echo $this->getSetting('GM_MAX_ZOOM'); ?> ) { zoomlevel = <?php echo $this->getSetting('GM_MAX_ZOOM'); ?> ; } if (document.editplaces.NEW_ZOOM_FACTOR.value < zoomlevel) { zoomlevel = document.editplaces.NEW_ZOOM_FACTOR.value; if (zoomlevel < <?php echo $this->getSetting('GM_MIN_ZOOM'); ?> ) { zoomlevel = <?php echo $this->getSetting('GM_MIN_ZOOM'); ?> ; } if (zoomlevel > <?php echo $this->getSetting('GM_MAX_ZOOM'); ?> ) { zoomlevel = <?php echo $this->getSetting('GM_MAX_ZOOM'); ?> ; } } map.setCenter(bounds.getCenter()); map.setZoom(zoomlevel); } } } function showLocation_level(address) { address += '<?php if ($level > 0) { echo ', ', addslashes(implode(', ', array_reverse($where_am_i, true))); } ?> '; geocoder.geocode({'address': address}, addAddressToMap); } function showLocation_all(address) { geocoder.geocode({'address': address}, addAddressToMap); } function paste_char(value) { document.editplaces.NEW_PLACE_NAME.value += value; } window.onload = function() { loadMap(); }; </script> <table><tr><td align="center"> </td></tr></table> </body> <form method="post" id="editplaces" name="editplaces" action="module.php?mod=googlemap&mod_action=places_edit"> <input type="hidden" name="action" value="<?php echo $action; ?> record"> <input type="hidden" name="placeid" value="<?php echo $placeid; ?> "> <input type="hidden" name="level" value="<?php echo $level; ?> "> <input type="hidden" name="icon" value="<?php echo $place_icon; ?> "> <input type="hidden" name="parent_id" value="<?php echo $parent_id; ?> "> <input type="hidden" name="place_long" value="<?php echo $place_long; ?> "> <input type="hidden" name="place_lati" value="<?php echo $place_lati; ?> "> <input type="hidden" name="parent_long" value="<?php echo $parent_long; ?> "> <input type="hidden" name="parent_lati" value="<?php echo $parent_lati; ?> "> <table class="facts_table"> <tr> <td class="optionbox" colspan="3"> <center><div id="map_pane" style="width: 100%; height: 300px;"></div></center> </td> </tr> <tr> <td class="descriptionbox"><?php echo GedcomTag::getLabel('PLAC'); ?> </td> <td class="optionbox"><input type="text" id="new_pl_name" name="NEW_PLACE_NAME" value="<?php echo Filter::escapeHtml($place_name); ?> " size="25" class="address_input"> <div id="INDI_PLAC_pop" style="display: inline;"> <?php echo FunctionsPrint::printSpecialCharacterLink('new_pl_name'); ?> </div></td><td class="optionbox"> <label for="new_pl_name"><a href="#" onclick="showLocation_all(document.getElementById('new_pl_name').value); return false"> <?php echo I18N::translate('Search globally'); ?> </a></label> | <label for="new_pl_name"><a href="#" onclick="showLocation_level(document.getElementById('new_pl_name').value); return false"> <?php echo I18N::translate('Search locally'); ?> </a></label> </td> </tr> <tr> <td class="descriptionbox"> <?php echo I18N::translate('Precision'); ?> </td> <?php $exp = explode(".", $place_lati); if (isset($exp[1])) { $precision1 = strlen($exp[1]); } else { $precision1 = -1; } $exp = explode(".", $place_long); if (isset($exp[1])) { $precision2 = strlen($exp[1]); } else { $precision2 = -1; } $precision1 > $precision2 ? $precision = $precision1 : ($precision = $precision2); if ($precision == -1) { $level > 3 ? $precision = 3 : ($precision = $level); } elseif ($precision > 5) { $precision = 5; } ?> <td class="optionbox" colspan="2"> <input type="radio" id="new_prec_0" name="NEW_PRECISION" onchange="updateMap();" <?php if ($precision == $this->getSetting('GM_PRECISION_0')) { echo 'checked'; } ?> value="<?php echo $this->getSetting('GM_PRECISION_0'); ?> "> <label for="new_prec_0"><?php echo I18N::translate('Country'); ?> </label> <input type="radio" id="new_prec_1" name="NEW_PRECISION" onchange="updateMap();" <?php if ($precision == $this->getSetting('GM_PRECISION_1')) { echo 'checked'; } ?> value="<?php echo $this->getSetting('GM_PRECISION_1'); ?> "> <label for="new_prec_1"><?php echo I18N::translate('State'); ?> </label> <input type="radio" id="new_prec_2" name="NEW_PRECISION" onchange="updateMap();" <?php if ($precision == $this->getSetting('GM_PRECISION_2')) { echo 'checked'; } ?> value="<?php echo $this->getSetting('GM_PRECISION_2'); ?> "> <label for="new_prec_2"><?php echo I18N::translate('City'); ?> </label> <input type="radio" id="new_prec_3" name="NEW_PRECISION" onchange="updateMap();" <?php if ($precision == $this->getSetting('GM_PRECISION_3')) { echo 'checked'; } ?> value="<?php echo $this->getSetting('GM_PRECISION_3'); ?> "> <label for="new_prec_3"><?php echo I18N::translate('Neighborhood'); ?> </label> <input type="radio" id="new_prec_4" name="NEW_PRECISION" onchange="updateMap();" <?php if ($precision == $this->getSetting('GM_PRECISION_4')) { echo 'checked'; } ?> value="<?php echo $this->getSetting('GM_PRECISION_4'); ?> "> <label for="new_prec_4"><?php echo I18N::translate('House'); ?> </label> <input type="radio" id="new_prec_5" name="NEW_PRECISION" onchange="updateMap();" <?php if ($precision >= $this->getSetting('GM_PRECISION_5')) { echo 'checked'; } ?> value="<?php echo $this->getSetting('GM_PRECISION_5'); ?> "> <label for="new_prec_5"><?php echo I18N::translate('Max'); ?> </label> <p class="small text-muted"> <?php echo I18N::translate('Here you can enter the precision. Based on this setting the number of digits that will be used in the latitude and longitude is determined.'); ?> </p> </td> </tr> <tr> <td class="descriptionbox"><?php echo GedcomTag::getLabel('LATI'); ?> </td> <td class="optionbox" colspan="2"> <input type="text" id="NEW_PLACE_LATI" name="NEW_PLACE_LATI" placeholder="<?php echo I18N::translate('degrees'); ?> " value="<?php echo abs($place_lati); ?> " size="20" onchange="updateMap();"> <select name="LATI_CONTROL" onchange="updateMap();"> <option value="PL_N" <?php if ($place_lati >= 0) { echo "selected"; } echo ">", I18N::translate('north'); ?> </option> <option value="PL_S" <?php if ($place_lati < 0) { echo "selected"; } echo ">", I18N::translate('south'); ?> </option> </select> </td> </tr> <tr> <td class="descriptionbox"><?php echo GedcomTag::getLabel('LONG'); ?> </td> <td class="optionbox" colspan="2"> <input type="text" id="NEW_PLACE_LONG" name="NEW_PLACE_LONG" placeholder="<?php echo I18N::translate('degrees'); ?> " value="<?php echo abs($place_long); ?> " size="20" onchange="updateMap();"> <select name="LONG_CONTROL" onchange="updateMap();"> <option value="PL_E" <?php if ($place_long >= 0) { echo "selected"; } echo ">", I18N::translate('east'); ?> </option> <option value="PL_W" <?php if ($place_long < 0) { echo "selected"; } echo ">", I18N::translate('west'); ?> </option> </select> </td> </tr> <tr> <td class="descriptionbox"> <?php echo I18N::translate('Zoom level'); ?> </td> <td class="optionbox" colspan="2"> <input type="text" id="NEW_ZOOM_FACTOR" name="NEW_ZOOM_FACTOR" value="<?php echo $zoomfactor; ?> " size="20" onchange="updateMap();"> <p class="small text-muted"> <?php echo I18N::translate('Here the zoom level can be entered. This value will be used as the minimal value when displaying this geographic location on a map.'); ?> </p> </td> </tr> <tr> <td class="descriptionbox"> <?php echo I18N::translate('Flag'); ?> </td> <td class="optionbox" colspan="2"> <div id="flagsDiv"> <?php if ($place_icon) { ?> <img alt="<?php echo I18N::translate('Flag'); ?> " src="<?php echo WT_STATIC_URL, WT_MODULES_DIR, 'googlemap/', $place_icon; ?> "> <a href="#" onclick="change_icon();return false;"><?php echo I18N::translate('Change flag'); ?> </a> <a href="#" onclick="remove_icon();return false;"><?php echo I18N::translate('Remove flag'); ?> </a> <?php } else { ?> <a href="#" onclick="change_icon();return false;"><?php echo I18N::translate('Change flag'); ?> </a> <?php } ?> </div> <p class="small text-muted"> <?php echo I18N::translate('Here an icon can be set or removed. Using this link a flag can be selected. When this geographic location is shown, this flag will be displayed.'); ?> </p> </td> </tr> </table> <p id="save-cancel"> <input type="submit" class="save" value="<?php echo I18N::translate('save'); ?> "> <input type="button" class="cancel" value="<?php echo I18N::translate('close'); ?> " onclick="window.close();"> </p> </form> <?php }
sel.rownum = numfields; sel.onchange = function() { showDate(this, this.rownum); }; // all of the field options <?php foreach ($controller->getOtherFields() as $field => $label) { ?> opt = document.createElement('option'); opt.value='<?php echo $field; ?> '; opt.text='<?php echo Filter::escapeJs($label); ?> '; sel.options.add(opt); <?php } ?> label.appendChild(sel); trow.appendChild(label); // create the new value cell var val = document.createElement('td'); val.id = 'vcell'+numfields; val.className='list_value'; var inp = document.createElement('input'); inp.name='values['+numfields+']';
/** * Print the page header, using the theme * * @param bool $popup Is this a popup window * * @return $this */ public function pageHeader($popup = false) { global $WT_TREE; $this->popup = $popup; // Give Javascript access to some PHP constants $this->addInlineJavascript(' var WT_STATIC_URL = "' . Filter::escapeJs(WT_STATIC_URL) . '"; var WT_MODULES_DIR = "' . Filter::escapeJs(WT_MODULES_DIR) . '"; var WT_GEDCOM = "' . Filter::escapeJs($WT_TREE ? $WT_TREE->getName() : '') . '"; var textDirection = "' . Filter::escapeJs(I18N::direction()) . '"; var WT_SCRIPT_NAME = "' . Filter::escapeJs(WT_SCRIPT_NAME) . '"; var WT_LOCALE = "' . Filter::escapeJs(WT_LOCALE) . '"; var WT_CSRF_TOKEN = "' . Filter::escapeJs(Filter::getCsrfToken()) . '"; ', self::JS_PRIORITY_HIGH); // Temporary fix for access to main menu hover elements on android/blackberry touch devices $this->addInlineJavascript(' if(navigator.userAgent.match(/Android|PlayBook/i)) { jQuery(".primary-menu > li > a").attr("href", "#"); } '); Theme::theme()->sendHeaders(); echo Theme::theme()->doctype(); echo Theme::theme()->html(); echo Theme::theme()->head($this); if ($this->popup) { echo Theme::theme()->bodyHeaderPopupWindow(); // We've displayed the header - display the footer automatically register_shutdown_function(array($this, 'pageFooterPopupWindow'), $this->popup); } else { echo Theme::theme()->bodyHeader(); // We've displayed the header - display the footer automatically register_shutdown_function(array($this, 'pageFooter'), $this->popup); } // Flush the output, so the browser can render the header and load javascript // while we are preparing data for the page if (ini_get('output_buffering')) { ob_flush(); } flush(); return $this; }
/** * Who is currently logged in? * * @param string $type * * @return string */ private function usersLoggedInQuery($type = 'nolist') { $content = ''; // List active users $NumAnonymous = 0; $loggedusers = array(); foreach (User::allLoggedIn() as $user) { if (Auth::isAdmin() || $user->getPreference('visibleonline')) { $loggedusers[] = $user; } else { $NumAnonymous++; } } $LoginUsers = count($loggedusers); if ($LoginUsers == 0 && $NumAnonymous == 0) { return I18N::translate('No logged-in and no anonymous users'); } if ($NumAnonymous > 0) { $content .= '<b>' . I18N::plural('%s anonymous logged-in user', '%s anonymous logged-in users', $NumAnonymous, I18N::number($NumAnonymous)) . '</b>'; } if ($LoginUsers > 0) { if ($NumAnonymous) { if ($type == 'list') { $content .= "<br><br>"; } else { $content .= " " . I18N::translate('and') . " "; } } $content .= '<b>' . I18N::plural('%s logged-in user', '%s logged-in users', $LoginUsers, I18N::number($LoginUsers)) . '</b>'; if ($type == 'list') { $content .= '<ul>'; } else { $content .= ': '; } } if (Auth::check()) { foreach ($loggedusers as $user) { if ($type == 'list') { $content .= '<li>' . Filter::escapeHtml($user->getRealName()) . ' - ' . Filter::escapeHtml($user->getUserName()); } else { $content .= Filter::escapeHtml($user->getRealName()) . ' - ' . Filter::escapeHtml($user->getUserName()); } if (Auth::id() != $user->getUserId() && $user->getPreference('contactmethod') != 'none') { if ($type == 'list') { $content .= '<br><a class="icon-email" href="#" onclick="return message(\'' . $user->getUserId() . '\', \'\', \'' . Filter::escapeJs(Functions::getQueryUrl()) . '\');" title="' . I18N::translate('Send a message') . '"></a>'; } else { $content .= ' <a class="icon-email" href="#" onclick="return message(\'' . $user->getUserId() . '\', \'\', \'' . Filter::escapeJs(Functions::getQueryUrl()) . '\');" title="' . I18N::translate('Send a message') . '"></a>'; } } if ($type == 'list') { $content .= '</li>'; } } } if ($type == 'list') { $content .= '</ul>'; } return $content; }
/** * Generate the HTML content of this block. * * @param int $block_id * @param bool $template * @param string[] $cfg * * @return string */ public function getBlock($block_id, $template = true, $cfg = array()) { global $ctype, $WT_TREE; $block = $this->getBlockSetting($block_id, 'block', '1'); foreach (array('block') as $name) { if (array_key_exists($name, $cfg)) { ${$name} = $cfg[$name]; } } $messages = Database::prepare("SELECT message_id, sender, subject, body, UNIX_TIMESTAMP(created) AS created FROM `##message` WHERE user_id=? ORDER BY message_id DESC")->execute(array(Auth::id()))->fetchAll(); $count = count($messages); $id = $this->getName() . $block_id; $class = $this->getName() . '_block'; $title = I18N::plural('%s message', '%s messages', $count, I18N::number($count)); $users = array_filter(User::all(), function (User $user) { return $user->getUserId() !== Auth::id() && $user->getPreference('verified_by_admin') && $user->getPreference('contactmethod') !== 'none'; }); $content = '<form id="messageform" name="messageform" method="post" action="module.php?mod=user_messages&mod_action=delete" onsubmit="return confirm(\'' . I18N::translate('Are you sure you want to delete this message? It cannot be retrieved later.') . '\');">'; $content .= '<input type="hidden" name="ged" value="' . $ctype . '">'; $content .= '<input type="hidden" name="ctype" value="' . $WT_TREE->getNameHtml() . '">'; if ($users) { $content .= '<label for="touser">' . I18N::translate('Send a message') . '</label>'; $content .= '<select id="touser" name="touser">'; $content .= '<option value="">' . I18N::translate('<select>') . '</option>'; foreach ($users as $user) { $content .= sprintf('<option value="%1$s">%2$s - %1$s</option>', Filter::escapeHtml($user->getUserName()), Filter::escapeHtml($user->getRealName())); } $content .= '</select>'; $content .= '<input type="button" value="' . I18N::translate('Send') . '" onclick="return message(document.messageform.touser.options[document.messageform.touser.selectedIndex].value, \'messaging2\', \'\');"><br><br>'; } if ($messages) { $content .= '<table class="list_table"><tr>'; $content .= '<th class="list_label">' . I18N::translate('Delete') . '<br><a href="#" onclick="jQuery(\'#' . $this->getName() . $block_id . ' :checkbox\').prop(\'checked\', true); return false;">' . I18N::translate('All') . '</a></th>'; $content .= '<th class="list_label">' . I18N::translate('Subject') . '</th>'; $content .= '<th class="list_label">' . I18N::translate('Date sent') . '</th>'; $content .= '<th class="list_label">' . I18N::translate('Email address') . '</th>'; $content .= '</tr>'; foreach ($messages as $message) { $content .= '<tr>'; $content .= '<td class="list_value_wrap"><input type="checkbox" name="message_id[]" value="' . $message->message_id . '" id="cb_message' . $message->message_id . '"></td>'; $content .= '<td class="list_value_wrap"><a href="#" onclick="return expand_layer(\'message' . $message->message_id . '\');"><i id="message' . $message->message_id . '_img" class="icon-plus"></i> <b dir="auto">' . Filter::escapeHtml($message->subject) . '</b></a></td>'; $content .= '<td class="list_value_wrap">' . FunctionsDate::formatTimestamp($message->created + WT_TIMESTAMP_OFFSET) . '</td>'; $content .= '<td class="list_value_wrap">'; $user = User::findByIdentifier($message->sender); if ($user) { $content .= $user->getRealNameHtml(); $content .= ' - <span dir="auto">' . $user->getEmail() . '</span>'; } else { $content .= '<a href="mailto:' . Filter::escapeHtml($message->sender) . '">' . Filter::escapeHtml($message->sender) . '</a>'; } $content .= '</td>'; $content .= '</tr>'; $content .= '<tr><td class="list_value_wrap" colspan="4"><div id="message' . $message->message_id . '" style="display:none;">'; $content .= '<div dir="auto" style="white-space: pre-wrap;">' . Filter::expandUrls($message->body) . '</div><br>'; if (strpos($message->subject, I18N::translate('RE: ')) !== 0) { $message->subject = I18N::translate('RE: ') . $message->subject; } if ($user) { $content .= '<button type="button" onclick="reply(\'' . Filter::escapeJs($message->sender) . '\', \'' . Filter::escapeJs($message->subject) . '\'); return false;">' . I18N::translate('Reply') . '</button> '; } $content .= '<button type="button" onclick="if (confirm(\'' . I18N::translate('Are you sure you want to delete this message? It cannot be retrieved later.') . '\')) {jQuery(\'#messageform :checkbox\').prop(\'checked\', false); jQuery(\'#cb_message' . $message->message_id . '\').prop(\'checked\', true); document.messageform.submit();}">' . I18N::translate('Delete') . '</button></div></td></tr>'; } $content .= '</table>'; $content .= '<p><button type="submit">' . I18N::translate('Delete selected messages') . '</button></p>'; } $content .= '</form>'; if ($template) { if ($block) { $class .= ' small_inner_block'; } return Theme::theme()->formatBlock($id, $title, $class, $content); } else { return $content; } }
</div> </form> <script> function findindi() { var findInput = document.getElementById('personid'); var txt = findInput.value; if (txt === "") { alert("<?php echo I18N::translate('You must enter a name'); ?> "); } else { var win02 = window.open( "module.php?mod=GEDFact_assistant&mod_action=census_find&callback=paste_id&census=<?php echo Filter::escapeJs(get_class($census)); ?> &action=filter&filter=" + txt, "win02", "resizable=1, menubar=0, scrollbars=1, top=180, left=600, height=400, width=450 "); if (window.focus) { win02.focus(); } } } /* Add an HTML row to the table */ function appendCensusRow(row) { jQuery("#tblSample tbody").append(row); return false; }
/** * Print a table of repositories * * @param Repository[] $repositories * * @return string */ public static function repositoryTable($repositories) { global $WT_TREE, $controller; // Count the number of linked records. These numbers include private records. // It is not good to bypass privacy, but many servers do not have the resources // to process privacy for every record in the tree $count_sources = Database::prepare("SELECT CONCAT(l_to, '@', l_file), COUNT(*) FROM `##sources` JOIN `##link` ON l_from = s_id AND l_file = s_file AND l_type = 'REPO' GROUP BY l_to, l_file")->fetchAssoc(); $html = ''; $table_id = 'table-repo-' . Uuid::uuid4(); // lists requires a unique ID in case there are multiple lists per page $controller->addExternalJavascript(WT_JQUERY_DATATABLES_JS_URL)->addInlineJavascript(' jQuery.fn.dataTableExt.oSort["unicode-asc" ]=function(a,b) {return a.replace(/<[^<]*>/, "").localeCompare(b.replace(/<[^<]*>/, ""))}; jQuery.fn.dataTableExt.oSort["unicode-desc"]=function(a,b) {return b.replace(/<[^<]*>/, "").localeCompare(a.replace(/<[^<]*>/, ""))}; jQuery("#' . $table_id . '").dataTable({ dom: \'<"H"pf<"dt-clear">irl>t<"F"pl>\', ' . I18N::datatablesI18N() . ', jQueryUI: true, autoWidth: false, processing: true, columns: [ /* 0 name */ { type: "unicode" }, /* 1 #sour */ { dataSort: 2, class: "center" }, /* 2 #SOUR */ { type: "num", visible: false }, /* 3 CHAN */ { dataSort: 4, visible: ' . ($WT_TREE->getPreference('SHOW_LAST_CHANGE') ? 'true' : 'false') . ' }, /* 4 CHAN_sort */ { visible: false }, /* 5 DELETE */ { visible: ' . (Auth::isManager($WT_TREE) ? 'true' : 'false') . ', sortable: false } ], displayLength: 20, pagingType: "full_numbers" }); jQuery(".repo-list").css("visibility", "visible"); jQuery(".loading-image").css("display", "none"); '); //--table wrapper $html .= '<div class="loading-image"> </div>'; $html .= '<div class="repo-list">'; //-- table header $html .= '<table id="' . $table_id . '"><thead><tr>'; $html .= '<th>' . I18N::translate('Repository name') . '</th>'; $html .= '<th>' . I18N::translate('Sources') . '</th>'; $html .= '<th>#SOUR</th>'; $html .= '<th' . ($WT_TREE->getPreference('SHOW_LAST_CHANGE') ? '' : '') . '>' . GedcomTag::getLabel('CHAN') . '</th>'; $html .= '<th' . ($WT_TREE->getPreference('SHOW_LAST_CHANGE') ? '' : '') . '>CHAN</th>'; $html .= '<th></th>'; //delete $html .= '</tr></thead>'; //-- table body $html .= '<tbody>'; foreach ($repositories as $repository) { if (!$repository->canShow()) { continue; } if ($repository->isPendingAddtion()) { $class = ' class="new"'; } elseif ($repository->isPendingDeletion()) { $class = ' class="old"'; } else { $class = ''; } $html .= '<tr' . $class . '>'; //-- Repository name(s) $html .= '<td>'; foreach ($repository->getAllNames() as $n => $name) { if ($n) { $html .= '<br>'; } if ($n == $repository->getPrimaryName()) { $html .= '<a class="name2" href="' . $repository->getHtmlUrl() . '">' . FunctionsPrint::highlightSearchHits($name['full']) . '</a>'; } else { $html .= '<a href="' . $repository->getHtmlUrl() . '">' . FunctionsPrint::highlightSearchHits($name['full']) . '</a>'; } } $html .= '</td>'; $key = $repository->getXref() . '@' . $repository->getTree()->getTreeId(); //-- Linked SOURces $num = array_key_exists($key, $count_sources) ? $count_sources[$key] : 0; $html .= '<td>' . I18N::number($num) . '</td><td>' . $num . '</td>'; //-- Last change if ($WT_TREE->getPreference('SHOW_LAST_CHANGE')) { $html .= '<td>' . $repository->LastChangeTimestamp() . '</td>'; } else { $html .= '<td></td>'; } //-- Last change hidden sort column if ($WT_TREE->getPreference('SHOW_LAST_CHANGE')) { $html .= '<td>' . $repository->LastChangeTimestamp(true) . '</td>'; } else { $html .= '<td></td>'; } //-- Delete if (Auth::isManager($WT_TREE)) { $html .= '<td><div title="' . I18N::translate('Delete') . '" class="deleteicon" onclick="return delete_repository(\'' . I18N::translate('Are you sure you want to delete “%s”?', Filter::escapeJs(Filter::unescapeHtml($repository->getFullName()))) . "', '" . $repository->getXref() . '\');"><span class="link_text">' . I18N::translate('Delete') . '</span></div></td>'; } else { $html .= '<td></td>'; } $html .= '</tr>'; } $html .= '</tbody></table></div>'; return $html; }
/** * Generate the HTML content of this tab. * * @return string */ public function getTabContent() { global $WT_TREE, $controller; $html = '<div id="' . $this->getName() . '_content">'; //Show Lightbox-Album header Links if (Auth::isEditor($WT_TREE)) { $html .= '<table class="facts_table"><tr><td class="descriptionbox rela">'; // Add a new media object if ($WT_TREE->getPreference('MEDIA_UPLOAD') >= Auth::accessLevel($WT_TREE)) { $html .= '<span><a href="#" onclick="window.open(\'addmedia.php?action=showmediaform&linktoid=' . $controller->record->getXref() . '\', \'_blank\', \'resizable=1,scrollbars=1,top=50,height=780,width=600\');return false;">'; $html .= '<img src="' . Theme::theme()->assetUrl() . 'images/image_add.png" id="head_icon" class="icon" title="' . I18N::translate('Add a new media object') . '" alt="' . I18N::translate('Add a new media object') . '">'; $html .= I18N::translate('Add a new media object'); $html .= '</a></span>'; // Link to an existing item $html .= '<span><a href="#" onclick="window.open(\'inverselink.php?linktoid=' . $controller->record->getXref() . '&linkto=person\', \'_blank\', \'resizable=1,scrollbars=1,top=50,height=300,width=450\');">'; $html .= '<img src="' . Theme::theme()->assetUrl() . 'images/image_link.png" id="head_icon" class="icon" title="' . I18N::translate('Link to an existing media object') . '" alt="' . I18N::translate('Link to an existing media object') . '">'; $html .= I18N::translate('Link to an existing media object'); $html .= '</a></span>'; } if (Auth::isManager($WT_TREE) && $this->getMedia()) { // Popup Reorder Media $html .= '<span><a href="#" onclick="reorder_media(\'' . $controller->record->getXref() . '\')">'; $html .= '<img src="' . Theme::theme()->assetUrl() . 'images/images.png" id="head_icon" class="icon" title="' . I18N::translate('Re-order media') . '" alt="' . I18N::translate('Re-order media') . '">'; $html .= I18N::translate('Re-order media'); $html .= '</a></span>'; } $html .= '</td></tr></table>'; } // Used when sorting media on album tab page $html .= '<table class="facts_table"><tr><td class="facts_value">'; // one-cell table - for presentation only $html .= '<ul class="album-list">'; foreach ($this->getMedia() as $media) { //View Edit Menu ---------------------------------- //Get media item Notes $haystack = $media->getGedcom(); $needle = '1 NOTE'; $before = substr($haystack, 0, strpos($haystack, $needle)); $after = substr(strstr($haystack, $needle), strlen($needle)); $notes = FunctionsPrint::printFactNotes($before . $needle . $after, 1, true); // Prepare Below Thumbnail menu ---------------------------------------------------- $menu = new Menu('<div style="overflow: hidden; text-overflow: ellipsis; white-space: nowrap">' . $media->getFullName() . '</div>'); $menu->addClass('', 'submenu'); // View Notes if (strpos($media->getGedcom(), "\n1 NOTE")) { $submenu = new Menu(I18N::translate('View notes'), '#', '', array('onclick' => 'modalNotes("' . Filter::escapeJs($notes) . '","' . I18N::translate('View notes') . '"); return false;')); $submenu->addClass("submenuitem"); $menu->addSubmenu($submenu); } //View Details $submenu = new Menu(I18N::translate('View details'), $media->getHtmlUrl()); $submenu->addClass("submenuitem"); $menu->addSubmenu($submenu); //View Sources foreach ($media->getFacts('SOUR') as $source_fact) { $source = $source_fact->getTarget(); if ($source && $source->canShow()) { $submenu = new Menu(I18N::translate('Source') . ' – ' . $source->getFullName(), $source->getHtmlUrl()); $submenu->addClass('submenuitem'); $menu->addSubmenu($submenu); } } if (Auth::isEditor($media->getTree())) { // Edit Media $submenu = new Menu(I18N::translate('Edit media'), '#', '', array('onclick' => 'return window.open("addmedia.php?action=editmedia&pid=' . $media->getXref() . '", "_blank", edit_window_specs);')); $submenu->addClass("submenuitem"); $menu->addSubmenu($submenu); if (Auth::isAdmin()) { if (Module::getModuleByName('GEDFact_assistant')) { $submenu = new Menu(I18N::translate('Manage links'), '#', '', array('onclick' => 'return window.open("inverselink.php?mediaid=' . $media->getXref() . '&linkto=manage", "_blank", find_window_specs);')); $submenu->addClass("submenuitem"); $menu->addSubmenu($submenu); } else { $submenu = new Menu(I18N::translate('Link this media object to an individual'), '#', 'menu-obje-link-indi', array('onclick' => 'return ilinkitem("' . $media->getXref() . '","person");')); $submenu->addClass('submenuitem'); $menu->addSubmenu($submenu); $submenu = new Menu(I18N::translate('Link this media object to a family'), '#', 'menu-obje-link-fam', array('onclick' => 'return ilinkitem("' . $media->getXref() . '","family");')); $submenu->addClass('submenuitem'); $menu->addSubmenu($submenu); $submenu = new Menu(I18N::translate('Link this media object to a source'), '#', 'menu-obje-link-sour', array('onclick' => 'return ilinkitem("' . $media->getXref() . '","source");')); $submenu->addClass('submenuitem'); $menu->addSubmenu($submenu); } $submenu = new Menu(I18N::translate('Unlink media'), '#', '', array('onclick' => 'return unlink_media("' . I18N::translate('Are you sure you want to remove links to this media object?') . '", "' . $controller->record->getXref() . '", "' . $media->getXref() . '");')); $submenu->addClass("submenuitem"); $menu->addSubmenu($submenu); } } $html .= '<li class="album-list-item">'; $html .= '<div class="album-image">' . $media->displayImage() . '</div>'; $html .= '<div class="album-title">' . $menu->getMenu() . '</div>'; $html .= '</li>'; } $html .= '</ul>'; $html .= '</td></tr></table>'; return $html; }
/** * Print the page header, using the theme * * @param bool $popup Is this a popup window * * @return $this */ public function pageHeader($popup = false) { global $WT_TREE; $this->popup = $popup; // Give Javascript access to some PHP constants $this->addInlineJavascript(' var WT_STATIC_URL = "' . Filter::escapeJs(WT_STATIC_URL) . '"; var WT_MODULES_DIR = "' . Filter::escapeJs(WT_MODULES_DIR) . '"; var WT_GEDCOM = "' . Filter::escapeJs($WT_TREE ? $WT_TREE->getName() : '') . '"; var textDirection = "' . Filter::escapeJs(I18N::direction()) . '"; var WT_SCRIPT_NAME = "' . Filter::escapeJs(WT_SCRIPT_NAME) . '"; var WT_LOCALE = "' . Filter::escapeJs(WT_LOCALE) . '"; var WT_CSRF_TOKEN = "' . Filter::escapeJs(Filter::getCsrfToken()) . '"; ', self::JS_PRIORITY_HIGH); Theme::theme()->sendHeaders(); echo Theme::theme()->doctype(); echo Theme::theme()->html(); echo Theme::theme()->head($this); if ($this->popup) { echo Theme::theme()->bodyHeaderPopupWindow(); // We've displayed the header - display the footer automatically register_shutdown_function(array($this, 'pageFooterPopupWindow'), $this->popup); } else { echo Theme::theme()->bodyHeader(); // We've displayed the header - display the footer automatically register_shutdown_function(array($this, 'pageFooter'), $this->popup); } return $this; }