CINXE.COM
The expert corner - GeneWeb
<!DOCTYPE html> <html class="client-nojs" lang="en" dir="ltr"> <head> <meta charset="UTF-8"/> <title>The expert corner - GeneWeb</title> <script>document.documentElement.className="client-js";RLCONF={"wgBreakFrames":!1,"wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgRequestId":"448d116943f797b83b616736","wgCSPNonce":!1,"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":!1,"wgNamespaceNumber":0,"wgPageName":"expert","wgTitle":"expert","wgCurRevisionId":4151,"wgRevisionId":4151,"wgArticleId":264,"wgIsArticle":!0,"wgIsRedirect":!1,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["Manual"],"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgRelevantPageName":"expert","wgRelevantArticleId":264,"wgIsProbablyEditable":!1,"wgRelevantPageIsProbablyEditable":!1,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgVisualEditor":{"pageLanguageCode":"en","pageLanguageDir":"ltr","pageVariantFallbacks":"en"}, "wgEditSubmitButtonLabelPublish":!1};RLSTATE={"site.styles":"ready","noscript":"ready","user.styles":"ready","user":"ready","user.options":"loading","skins.vector.styles.legacy":"ready","mediawiki.toc.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready"};RLPAGEMODULES=["site","mediawiki.page.startup","mediawiki.page.ready","mediawiki.toc","skins.vector.legacy.js","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.implement("user.options@1hzgi",function($,jQuery,require,module){/*@nomin*/mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); });});</script> <link rel="stylesheet" href="/w/load.php?lang=en&modules=ext.visualEditor.desktopArticleTarget.noscript%7Cmediawiki.toc.styles%7Cskins.vector.styles.legacy&only=styles&skin=vector"/> <script async="" src="/w/load.php?lang=en&modules=startup&only=scripts&raw=1&skin=vector"></script> <meta name="ResourceLoaderDynamicStyles" content=""/> <link rel="stylesheet" href="/w/load.php?lang=en&modules=site.styles&only=styles&skin=vector"/> <meta name="generator" content="MediaWiki 1.35.13"/> <link rel="shortcut icon" href="/w/favicon.ico"/> <link rel="search" type="application/opensearchdescription+xml" href="/w/opensearch_desc.php" title="GeneWeb (en)"/> <link rel="EditURI" type="application/rsd+xml" href="https://geneweb.tuxfamily.org/w/api.php?action=rsd"/> <link rel="license" href="http://creativecommons.org/licenses/by-sa/3.0/"/> <link rel="alternate" type="application/atom+xml" title="GeneWeb Atom feed" href="/w/index.php?title=Special:RecentChanges&feed=atom"/> <!--[if lt IE 9]><script src="/w/resources/lib/html5shiv/html5shiv.js"></script><![endif]--> </head> <body class="mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-expert rootpage-expert skin-vector action-view skin-vector-legacy"> <div id="mw-page-base" class="noprint"></div> <div id="mw-head-base" class="noprint"></div> <div id="content" class="mw-body" role="main"> <a id="top"></a> <div id="siteNotice" class="mw-body-content"></div> <div class="mw-indicators mw-body-content"> </div> <h1 id="firstHeading" class="firstHeading" lang="en">The expert corner</h1> <div id="bodyContent" class="mw-body-content"> <div id="siteSub" class="noprint">From GeneWeb</div> <div id="contentSub"></div> <div id="contentSub2"></div> <div id="jump-to-nav"></div> <a class="mw-jump-link" href="#mw-head">Jump to navigation</a> <a class="mw-jump-link" href="#searchInput">Jump to search</a> <div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><div class="mw-parser-output"><table class="nmbox" style="border:0px solid #AAA; border-collapse:collapse; clear:both; font-size:85%; margin: 0.5em"> <tbody><tr style="background:#EEF3E2"> <th class="mbox-image" style="white-space:nowrap; padding:4px 2px; border-right :1px solid #aaa"><a href="/wiki/File:150px-Geographylogo_svg.png" class="image"><img alt="150px-Geographylogo svg.png" src="https://download.tuxfamily.org/geneweb/wiki/images/thumb/8/8a/150px-Geographylogo_svg.png/25px-150px-Geographylogo_svg.png" decoding="async" width="25" height="25" srcset="https://download.tuxfamily.org/geneweb/wiki/images/thumb/8/8a/150px-Geographylogo_svg.png/38px-150px-Geographylogo_svg.png 1.5x, https://download.tuxfamily.org/geneweb/wiki/images/thumb/8/8a/150px-Geographylogo_svg.png/50px-150px-Geographylogo_svg.png 2x" /></a> <b><a href="/wiki/GeneWeb:Language_policy" title="GeneWeb:Language policy">Language:</a></b> </th> <td class="mbox-text" style="background:#F6F9ED;"> <b><a href="/wiki/Expert" class="mw-redirect" title="Expert">English</a></b><span class="autonym"></span><span class="autonym"></span></td> </tr></tbody></table> <div id="toc" class="toc" role="navigation" aria-labelledby="mw-toc-heading"><input type="checkbox" role="button" id="toctogglecheckbox" class="toctogglecheckbox" style="display:none" /><div class="toctitle" lang="en" dir="ltr"><h2 id="mw-toc-heading">Contents</h2><span class="toctogglespan"><label class="toctogglelabel" for="toctogglecheckbox"></label></span></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#Template_programming_.28.25if.3B_..._.25end.3B.29"><span class="tocnumber">1</span> <span class="toctext">Template programming (%if; ... %end;)</span></a> <ul> <li class="toclevel-2 tocsection-2"><a href="#List_of_commands"><span class="tocnumber">1.1</span> <span class="toctext">List of commands</span></a></li> <li class="toclevel-2 tocsection-3"><a href="#Note_for_has_event_.28v7.29"><span class="tocnumber">1.2</span> <span class="toctext">Note for has_event (v7)</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-4"><a href="#JavaScript"><span class="tocnumber">2</span> <span class="toctext">JavaScript</span></a></li> <li class="toclevel-1 tocsection-5"><a href="#Macros_.28.25x.29"><span class="tocnumber">3</span> <span class="toctext">Macros (%x)</span></a></li> <li class="toclevel-1 tocsection-6"><a href="#Commands_.28m.3DXXX.29"><span class="tocnumber">4</span> <span class="toctext">Commands (m=XXX)</span></a></li> <li class="toclevel-1 tocsection-7"><a href="#Environnement_and_configuration"><span class="tocnumber">5</span> <span class="toctext">Environnement and configuration</span></a> <ul> <li class="toclevel-2 tocsection-8"><a href="#Configuration_variables"><span class="tocnumber">5.1</span> <span class="toctext">Configuration variables</span></a> <ul> <li class="toclevel-3 tocsection-9"><a href="#Personal_variables"><span class="tocnumber">5.1.1</span> <span class="toctext">Personal variables</span></a></li> </ul> </li> <li class="toclevel-2 tocsection-10"><a href="#Environment_variables_.28evar.2Fe.29"><span class="tocnumber">5.2</span> <span class="toctext">Environment variables (evar/e)</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-11"><a href="#Bvar_variables_used_in_templates"><span class="tocnumber">6</span> <span class="toctext">Bvar variables used in templates</span></a></li> <li class="toclevel-1 tocsection-12"><a href="#Bvar_variables_used_by_Gwd"><span class="tocnumber">7</span> <span class="toctext">Bvar variables used by Gwd</span></a></li> <li class="toclevel-1 tocsection-13"><a href="#Building_trees_through_direct_url_construction"><span class="tocnumber">8</span> <span class="toctext">Building trees through direct url construction</span></a></li> </ul> </div> <h2><span id="Template_programming_(%if;_..._%end;)"></span><span class="mw-headline" id="Template_programming_.28.25if.3B_..._.25end.3B.29">Template programming (%if; ... %end;)</span></h2> <p>The template mechanism provides a very powerful mechanism to construct HTML (or other) pages according to the content of a GeneWeb base. This section is not intending to give an exhaustive description of the corresponding language. Through some examples extracted from <code>gw/etc/perso.txt</code>, it provides a glimpse of the possibility. The last two examples are extracted from a template that generates LaTeX rather than HTML. </p><p>For further analysis, explore the various other <a href="/wiki/templates" title="templates">template</a> files, and on last resort, explore the Ocaml source files!! </p><p>WARNING: one of the main issue with template programming is that all functions are not permanently available on all pages! Describing which are available where is beyond reach, and trial and error is the only solution, but being aware of the problem is important!! </p><p>Programming constructs: </p> <pre> %define(p1, p2) ... %end; %if;(cond) [%elseif;] [%else;] %end; %let;xxx;zzz%in; %foreach; ... %end; %for;i;0;n;... %end; %apply;xxxx(p1, p2) or %apply; ... [%with;... [%and;] ...%end;] %nl; %nn; %sp; %sq; </pre> <p>Functions callable with %apply: </p> <pre> a_of_b ("aaa", "bbb") a_of_b2 ("aaa", "bbb", "ccc") test vowel at beginning of "ccc" a_of_b_gr_eq_lev (??) capitalize ("aaa") language_name ("fr") nth("aaa"/"bbb"/"ccc"/"ddd", n) nth_c("abcdef", n) blue_of_hsv red_of_hsv green_of_hsv </pre> <p>Arithmetic and booleans: </p> <pre> +, -, /, *, %, =, !=, <, <=, >, >=, "and", "or", "not", "is_substr" or "in" </pre> <p>WARNING: all functions may not be fully available depending on the execution context! </p> <pre> <title>%nn; %if;has_public_name; %if;has_qualifiers;%public_name; %qualifier; %else;%public_name; %surname;%end; %else; %if;has_qualifiers;%first_name; %qualifier; %else;%first_name; %surname;%end; %end; </title> </pre> <pre>%define;married_to(sexx, date_place) %if;(sexx = 0 or sexx = 2) %if;are_married;[*married%t to:::date_place]0%nn; %elseif;are_not_married;[*relationship%t to:::date_place]0%nn; %elseif;are_engaged;[*engaged%t to:::date_place]0%nn; %elseif;is_no_sexes_check;[*relationship%t to:::date_place]0%nn; %elseif;is_no_mention;date_place [*with]%nn; %end; %else; %if;are_married;[*married%t to:::date_place]1%nn; %elseif;are_not_married;[*relationship%t to:::date_place]1%nn; %elseif;are_engaged;[*engaged%t to:::date_place]1%nn; %elseif;is_no_sexes_check;[*relationship%t to:::date_place]1%nn; %elseif;is_no_mention;date_place [*with]%nn; %end; %end; %end; </pre> <pre>%if;(bvar.can_send_image != "no" and image = "" and first_name != "?" and surname != "?") <li><a href="%prefix;m=SND_IMAGE;i=%index;" class="add_portrait"> %if;(auto_image_file_name != "")[*modify picture]%else;[*add picture]%end; </a> </li> %end; </pre> <pre>%define;hgindex(alxx, snxx, fnxx, occxx) %if;(alxx = "0") %if;(occxx = "0") \index{snxx, fnxx} %else; \index{snxx, fnxx (occxx)} %end; %else; %if;(occxx = "0") \index{alxx, voir snxx, fnxx} %else; \index{alxx, voir snxx, fnxx (occxx)} %end; %end; %end </pre> <pre>%foreach;alias; {\it {\bf %alias;}}%apply;hgindex(alias, surname, first_name, occ)\\%nl; %end; </pre> <h3><span class="mw-headline" id="List_of_commands">List of commands</span></h3> <p>This list does not claim to be exhaustive (but pretty close!!). A good way to understand the semantic of these commands is to explore the template files and observe how they are used (grep is your friend). </p><p>Most of the commands are interpreted by the files perso.ml or templ.ml. When this is not the case, the name of the interpreter file is associated with the command. </p> <div style="column-count:1;-moz-column-count:1;-webkit-column-count:1"> <pre> "a_of_b" "a_of_b2" "a_of_b_gr_eq_lev" "acc_if_titles", updateInd.ml "acc_private", updateInd.ml "acc_public", updateInd.ml "acces", historyDiffDisplay.ml "access", dagDisplay.ml, history.ml, historyDiffDisplay.ml "access_by_key" "action" "add_in_sorted_list" "add_in_sorted_listb" "add_in_sorted_listc" "add_in_sorted_listd" "add_in_sorted_liste" "after", historyDiffDisplay.ml "age" "alias", updateInd.ml "aliases", historyDiffDisplay.ml "align", dagDisplay.ml "all" "anc1" "anc2" "anc_f_list" "anc_level" "anc_paths" "anc_paths_at_level" "anc_paths_at_level_cnt" "anc_paths_at_level_cnt_raw" "anc_paths_cnt" "anc_paths_cnt_raw" "anc_sosa" "ancestor" "ancestor_at_level" "ancestor_level" "ancestor_surname" "ancestor_tree_line" "and" "approx_birth_place" "approx_death_place" "are_divorced" "are_engaged" "are_marriage_banns" "are_marriage_contract" "are_marriage_license" "are_married" "are_not_married" "are_pacs" "are_residence" "are_separated" "auto_image_file_name" "bapt", updateInd.ml "bapt_note", updateInd.ml "bapt_place", updateInd.ml "bapt_src", updateInd.ml "baptism", historyDiffDisplay.ml "baptism_date" "baptism_note", historyDiffDisplay.ml "baptism_place", historyDiffDisplay.ml "baptism_source" "baptism_src", historyDiffDisplay.ml "baptism_witness" "bar_link", dagDisplay.ml "base", srcfileDisplay.ml "base_header" "base_trailer" "bases_list" "bdo", dagDisplay.ml "before", historyDiffDisplay.ml "birth", historyDiffDisplay.ml, updateInd.ml "birth_date" "birth_day", updateFam.ml "birth_month", updateFam.ml "birth_note", historyDiffDisplay.ml, updateInd.ml "birth_place", historyDiffDisplay.ml, updateFam.ml, updateInd.ml "birth_source" "birth_src", historyDiffDisplay.ml, updateInd.ml "birth_witness" "birth_year", updateFam.ml "birthday" "blue_of_hsv" "bname_prefix" "body_prop" "border" "browsing_with_sosa_ref", dagDisplay.ml, srcfileDisplay.ml "bt_buried", updateInd.ml "bt_cremated", updateInd.ml "bt_unknown_burial", updateInd.ml "burial", historyDiffDisplay.ml, updateInd.ml "burial_date" "burial_note", historyDiffDisplay.ml, updateInd.ml "burial_place", historyDiffDisplay.ml, updateInd.ml "burial_source" "burial_src", historyDiffDisplay.ml, updateInd.ml "burial_witness" "bvar", updateFam.ml "cal_french", update_util.ml "cal_gregorian", update_util.ml "cal_hebrew", update_util.ml "cal_julian", update_util.ml "calendar", update_util.ml "cancel_links" "canton", util.ml "capitalize" "cell" "cell_nbr", dagDisplay.ml "center", dagDisplay.ml "cgi" "charset" "child", updateFam.ml "child_cnt" "child_name" "children", historyDiffDisplay.ml "clean_comment_tags" "clean_html_tags" "cnt", updateDataDisplay.ml, updateFam.ml, updateInd.ml "colspan", dagDisplay.ml "comment", historyDiffDisplay.ml, updateFam.ml "computable_age" "computable_death_age" "computable_marriage_age" "connections" "consanguinity" "copyright" "count", history.ml, updateDataDisplay.ml "count1" "count2" "count3" "country", util.ml "county", util.ml "cous_paths" "cous_paths_cnt" "cous_paths_cnt_raw" "cous_paths_max_date" "cous_paths_min_date" "cousin" "cousin_level" "cousins" "cousins_cnt" "create", updateFam.ml, updateInd.ml, updateIndOk.ml, update_util.ml "cremated_date" "cremation_place" "cremation_witness" "dag", dagDisplay.ml "dag_cell", dagDisplay.ml "dag_cell_pre", dagDisplay.ml "dag_line", dagDisplay.ml "dag_line_pre", dagDisplay.ml "date", historyDiffDisplay.ml, hutil.ml "date_begin" "date_end" "date_s" "dates", history.ml "day", templDate.ml, update_util.ml "day2" "ddmmyyyy", dateDisplay.ml "dead_dont_know_when", updateInd.ml "death", historyDiffDisplay.ml, updateInd.ml "death_age" "death_date" "death_day", updateFam.ml "death_month", updateFam.ml "death_note", historyDiffDisplay.ml, updateInd.ml "death_place", historyDiffDisplay.ml, updateFam.ml, updateInd.ml "death_source" "death_src", historyDiffDisplay.ml, updateInd.ml "death_witness" "death_year", updateFam.ml "debug" "desc_cnt" "desc_level" "desc_paths" "desc_paths_at_level" "desc_paths_at_level_cnt" "desc_paths_at_level_cnt_raw" "desc_paths_cnt" "desc_paths_cnt_raw" "descendant" "descendant_cnt" "descendant_level" "died" "died_young", updateInd.ml "digest", updateFam.ml, updateInd.ml "district", util.ml "divorce", historyDiffDisplay.ml, updateFam.ml "divorce_date" "dmyyyy", dateDisplay.ml "doctype" "dont_know_if_dead", updateInd.ml "dr_disappeared", updateInd.ml "dr_executed", updateInd.ml "dr_killed", updateInd.ml "dr_murdered", updateInd.ml "dr_unspecified", updateInd.ml "e_name", updateFam.ml, updateInd.ml "e_note", updateFam.ml, updateInd.ml "e_place", updateFam.ml, updateInd.ml "e_src", updateFam.ml, updateInd.ml "empty_sorted_list" "empty_sorted_listb" "empty_sorted_listc" "empty_sorted_listd" "empty_sorted_liste" "enclosing" "encode", updateDataDisplay.ml "entry", updateDataDisplay.ml "entry_ini", updateDataDisplay.ml "entry_key", updateDataDisplay.ml "entry_value", updateDataDisplay.ml "entry_value_rev", updateDataDisplay.ml "env" "env_binding" "evar", historyDiffDisplay.ml, updateDataDisplay.ml "evar_cur" "event", updateFam.ml, updateInd.ml "event_date", updateFam.ml, updateInd.ml "event_str", updateFam.ml, updateInd.ml "event_witness" "event_witness_kind" "event_witness_relation" "event_witness_relation_kind" "f_of_index" "false" "family", historyDiffDisplay.ml "family_cnt" "father", dagDisplay.ml, updateFam.ml "father_age_at_birth" "father_sosa" "fevent", historyDiffDisplay.ml, updateFam.ml "fevent_date", historyDiffDisplay.ml "fevent_name", historyDiffDisplay.ml "fevent_note", historyDiffDisplay.ml "fevent_place", historyDiffDisplay.ml "fevent_src", historyDiffDisplay.ml "fevent_witness", historyDiffDisplay.ml "first", updateDataDisplay.ml "first_name", history.ml, historyDiffDisplay.ml, updateFam.ml, updateInd.ml "first_name_alias", updateInd.ml "first_name_key" "first_name_key_strip" "first_name_key_val" "first_names_aliases", historyDiffDisplay.ml "found", history.ml "french", templDate.ml "friend" "fsources", historyDiffDisplay.ml, updateFam.ml "fwitness", updateFam.ml "fwitness_kind", updateFam.ml "get_var", dagDisplay.ml "green_of_hsv" "gregorian", templDate.ml "has_aliases", updateInd.ml "has_approx_birth_date" "has_approx_birth_place" "has_approx_death_date" "has_approx_death_place" "has_baptism_date" "has_baptism_note" "has_baptism_place" "has_baptism_source" "has_baptism_witnesses" "has_birth_date", updateInd.ml "has_birth_note" "has_birth_place" "has_birth_source" "has_birth_witnesses" "has_burial_date" "has_burial_note" "has_burial_place" "has_burial_source" "has_burial_witnesses" "has_children" "has_comment" "has_consanguinity" "has_cremation_date" "has_cremation_place" "has_cremation_witnesses" "has_date" "has_death_date" "has_death_note" "has_death_place" "has_death_source" "has_death_witnesses" "has_event" "has_families" "has_fevents", updateFam.ml "has_first_names_aliases", updateInd.ml "has_fsources" "has_fwitness", updateFam.ml "has_history", history.ml, srcfileDisplay.ml "has_image" "has_image_url" "has_linked_page" "has_linked_pages" "has_marriage_note" "has_marriage_source" "has_misc_notes", srcfileDisplay.ml "has_nephews_or_nieces" "has_next_sibling", dagDisplay.ml "has_nobility_titles" "has_note" "has_notes", srcfileDisplay.ml "has_occupation" "has_parents" "has_pevent_baptism", updateInd.ml "has_pevent_birth", updateInd.ml "has_pevent_burial", updateInd.ml "has_pevent_cremation", updateInd.ml "has_pevent_death", updateInd.ml "has_pevents", updateInd.ml "has_place" "has_possible_duplications" "has_prev_sibling", dagDisplay.ml "has_primary_pevents", updateInd.ml "has_psources" "has_public_name" "has_qualifiers", updateInd.ml "has_referer" "has_relation_her" "has_relation_him" "has_relations", updateInd.ml "has_secondary_pevents", updateInd.ml "has_siblings" "has_sosa" "has_sources" "has_spouse" "has_src" "has_surnames_aliases", updateInd.ml "has_titles", updateInd.ml "has_witness", updateInd.ml "has_witnesses" "head_title", dagDisplay.ml "hebrew", templDate.ml "hexa" "hidden" "highlight" "himher", updateFam.ml "history_file", history.ml "history_len", historyDiffDisplay.ml "history_line", history.ml, historyDiffDisplay.ml "hour", templDate.ml "hours" "ident" "ident_key" "image", historyDiffDisplay.ml, updateInd.ml "image_html_url" "image_medium_size" "image_prefix" "image_size" "image_small_size" "image_url" "include" "include_perso_header", updateFam.ml, updateInd.ml "incr_count", history.ml, updateDataDisplay.ml "incr_count1" "incr_count2" "incr_count3" "incr_next_pevent", updateInd.ml "index", dagDisplay.ml, templDate.ml, updateInd.ml "ini", updateDataDisplay.ml "init", srcfileDisplay.ml "init_cache" "initial", updateDataDisplay.ml "integer", hutil.ml "integer_range", hutil.ml "interp" "interval" "is_bar", dagDisplay.ml "is_buried" "is_center" "is_certainly_dead" "is_cremated" "is_dead" "is_descendant" "is_empty" "is_female", updateInd.ml "is_first", dagDisplay.ml, updateFam.ml, updateInd.ml "is_hr", dagDisplay.ml "is_hr_center", dagDisplay.ml "is_hr_left", dagDisplay.ml "is_hr_right", dagDisplay.ml "is_invisible", history.ml "is_last", dagDisplay.ml, updateFam.ml, updateInd.ml "is_left" "is_main" "is_male", updateInd.ml "is_modified", updateDataDisplay.ml "is_no_mention" "is_no_sexes_check" "is_note", history.ml "is_nothing", dagDisplay.ml "is_printed_by_template" "is_private" "is_public" "is_restricted" "is_right" "is_self" "is_sibling_after" "is_sibling_before" "is_substr" "is_top" "item", dagDisplay.ml "iz" "julian", templDate.ml "julian_day", templDate.ml "just_friend_wizard" "key", history.ml "lang" "language_name" "lazy_force" "lazy_print" "lazy_printed" "left" "length", updateDataDisplay.ml "lev_cnt" "level" "line", historyDiffDisplay.ml "line_nbr", dagDisplay.ml "link", updateInd.ml "link_next", dagDisplay.ml "linked_page" "list_size" "listb_size" "listc_size" "listd_size" "liste_size" "lvl" "manitou" "mark_descendants" "marriage", historyDiffDisplay.ml, updateFam.ml "marriage_age" "marriage_date" "marriage_note", updateFam.ml "marriage_place", historyDiffDisplay.ml, updateFam.ml "marriage_places" "marriage_source" "marriage_src", historyDiffDisplay.ml, updateFam.ml "marriage_type", historyDiffDisplay.ml "max", dagDisplay.ml, updateDataDisplay.ml "max_a" "max_anc_level" "max_cous_level" "max_d" "max_desc_level" "max_wid", dagDisplay.ml "message_to_wizard" "min", dagDisplay.ml "min_wid", dagDisplay.ml "minute", templDate.ml "minutes" "misc_names" "mmddyyyy", dateDisplay.ml "mn", history.ml "mode" "month", templDate.ml, update_util.ml "month2" "moon_age", templDate.ml "moon_phase", templDate.ml "mother", dagDisplay.ml "mother_age_at_birth" "mother_sosa" "mrel", updateFam.ml "name", srcfileDisplay.ml "nb_accesses", srcfileDisplay.ml "nb_accesses_to_welcome", srcfileDisplay.ml "nb_children" "nb_children_total" "nb_events" "nb_families", historyDiffDisplay.ml "nb_fevents", updateFam.ml "nb_ind" "nb_persons", srcfileDisplay.ml "nb_pevents", updateInd.ml "nb_results", updateDataDisplay.ml "nb_times" "nb_witnesses_attending" "nb_witnesses_civilofficer" "nb_witnesses_godparent" "nb_witnesses_informant" "nb_witnesses_mentioned" "nb_witnesses_other" "nb_witnesses_religiousofficer" "nb_witnesses_witness" "nbr" "nbr_a" "nbr_a_l" "ncol", dagDisplay.ml "next_item" "next_pevent", updateInd.ml "next_sibling", dagDisplay.ml "nn" "nob_title" "nobility_title" "not" "not_dead", updateInd.ml "note", history.ml "notes", historyDiffDisplay.ml, updateInd.ml "nth" "nth_c" "number_of_ancestors" "number_of_ancestors_at_level" "number_of_bases" "number_of_descendants" "number_of_descendants_at_level" "number_of_subitems" "occ", history.ml, historyDiffDisplay.ml, updateFam.ml, updateInd.ml "occupation", historyDiffDisplay.ml, updateFam.ml, updateInd.ml "octal" "of_course_dead", updateInd.ml "on_baptism_date" "on_birth_date" "on_burial_date" "on_cremation_date" "on_date" "on_death_date" "on_marriage_date" "or" "orday", update_util.ml "origin_file", historyDiffDisplay.ml, updateFam.ml "ormonth", update_util.ml "oryear", update_util.ml "other", updateDataDisplay.ml "p", updateDataDisplay.ml "p_of_index" "parent", updateFam.ml "part", history.ml "path" "path_at_level" "path_end" "person", history.ml, historyDiffDisplay.ml "person_index" "pevent", historyDiffDisplay.ml, updateInd.ml "pevent_date", historyDiffDisplay.ml "pevent_name", historyDiffDisplay.ml "pevent_note", historyDiffDisplay.ml "pevent_place", historyDiffDisplay.ml "pevent_src", historyDiffDisplay.ml "pevent_witness", historyDiffDisplay.ml "place" "place_key" "places" "plugin" "plugins" "pos", history.ml "prec", update_util.ml "prec_about", update_util.ml "prec_after", update_util.ml "prec_before", update_util.ml "prec_maybe", update_util.ml "prec_no", update_util.ml "prec_oryear", update_util.ml "prec_sure", update_util.ml "prec_yearint", update_util.ml "prefix" "prefix_base" "prefix_base_password" "prefix_no_all" "prefix_no_iz" "prefix_no_lang" "prefix_no_pmod" "prefix_no_templ" "prefix_no_wide" "prefix_set" "prev_fam_father" "prev_fam_index" "prev_fam_mother" "prev_family" "prev_item" "prev_sibling", dagDisplay.ml "printable", updateDataDisplay.ml "psources", historyDiffDisplay.ml "public_name", historyDiffDisplay.ml, updateInd.ml "pvar" "qualifier", updateInd.ml "qualifiers", historyDiffDisplay.ml "qvar" "r_father", updateInd.ml "r_mother", updateInd.ml "random", srcfileDisplay.ml "real_nb_persons", srcfileDisplay.ml "red_of_hsv" "referer" "region", util.ml "related" "related_type" "relation", updateInd.ml "relation_her" "relation_him" "relation_type" "relations", historyDiffDisplay.ml "reset_count", history.ml, updateDataDisplay.ml "reset_count1" "reset_count2" "reset_count3" "reset_desc_level" "right" "roman", templDate.ml "rt_adoption", updateInd.ml "rt_candidate_parent", updateInd.ml "rt_empty", updateInd.ml "rt_foster_parent", updateInd.ml "rt_godparent", updateInd.ml "rt_recognition", updateInd.ml "safe", updateDataDisplay.ml "same" "seconds" "self" "sep1000", templDate.ml "sep_date_s" "set_count" "set_infinite_desc_level" "set_var", dagDisplay.ml "setup_link" "sex", historyDiffDisplay.ml, updateFam.ml, updateInd.ml "slash_approx_birth_date" "slash_approx_death_date" "slash_baptism_date" "slash_birth_date" "slash_burial_date" "slash_cremation_date" "slash_death_date" "slash_divorce_date" "slash_marriage_date" "sorted_list_item" "sorted_listb_item" "sorted_listc_item" "sorted_listd_item" "sorted_liste_item" "sosa" "sosa_access" "sosa_anc" "sosa_anc_p" "sosa_in_list" "sosa_link" "sosa_next" "sosa_prev" "sosa_ref", srcfileDisplay.ml "sosa_ref_max_anc_level" "source" "source_type" "sources", updateInd.ml "sp" "spouse", historyDiffDisplay.ml "src" "start_date", srcfileDisplay.ml "static_max_anc_level", dagDisplay.ml "static_max_desc_level", dagDisplay.ml "static_path" "subs", updateDataDisplay.ml "substr", updateDataDisplay.ml "substr_start" "substr_start_e" "suburb", updateDataDisplay.ml "suffix" "supervisor" "surname", history.ml, historyDiffDisplay.ml, updateFam.ml, updateInd.ml "surname_alias", updateInd.ml "surname_begin" "surname_end" "surname_key" "surname_key_strip" "surname_key_val" "surnames_aliases", historyDiffDisplay.ml "svar" "t_estate", updateInd.ml "t_ident", updateInd.ml "t_main", updateInd.ml "t_name", updateInd.ml "t_nth", updateInd.ml "table", srcfileDisplay.ml "tail", updateDataDisplay.ml "text", dagDisplay.ml, update_util.ml "time", history.ml "title", history.ml, updateDataDisplay.ml, updateInd.ml "title_date_end", updateInd.ml "title_date_start", updateInd.ml "titles", historyDiffDisplay.ml "today", hutil.ml "town", util.ml "township", util.ml "transl_date", historyDiffDisplay.ml "true" "type" "update", history.ml "url" "url_no_pwd" "url_set" "url_set2" "url_set3" "url_set_pn" "user", history.ml "v", history.ml "val" "value", updateDataDisplay.ml "var", history.ml "version" "wcnt", updateFam.ml, updateInd.ml "wedding_birthday" "week_day", templDate.ml "witness", updateFam.ml, updateInd.ml "witness_attending" "witness_civilofficer" "witness_godparent" "witness_informant" "witness_kind", updateInd.ml "witness_mentioned" "witness_other" "witness_relation" "witness_religiousofficer" "witnesses", historyDiffDisplay.ml "wizard", historyDiffDisplay.ml "wiznotes_dir_exists", srcfileDisplay.ml "year", templDate.ml, update_util.ml "year2" "yymmdd", dateDisplay.ml "yyyymmdd", dateDisplay.ml </pre> </div> <h3><span id="Note_for_has_event_(v7)"></span><span class="mw-headline" id="Note_for_has_event_.28v7.29">Note for has_event (v7)</span></h3> <p>Note that the <code>has_event</code> function does not consider birth, baptism, death and burial as "events" per se (as they are often already listed in the personnal data of the individual). If you want those events to be taken into account in this function, then you have to add <code>has_events=always</code> in your <code>.gwf</code> parameter file. </p><p>Note also that if <code>has_events=never</code>, then <code>has_event</code> always returns <code>False</code>. </p> <h2><span class="mw-headline" id="JavaScript">JavaScript</span></h2> <p>JavaScript can be inserted anytime within templates. JavaScript code may contain template commands as in: </p> <pre><script type="text/javascript"> <!-- function over1(xx) { document.getElementById(xx).style.%if;(evarso="on")outline="#C0FEFF solid 6px"%else;backgroundColor="#CBFECE"%end;; return false; } function out1(xx) { document.getElementById(xx).style.%if;(evarso="on")outline="none"%else;backgroundColor=""%end;; return false; } --> </script> </pre> <p>Note that GeneWeb does not perform any language interpretation ([text to be translated]) within HTML comments! </p> <h2><span id="Macros_(%x)"></span><span class="mw-headline" id="Macros_.28.25x.29">Macros (%x)</span></h2> <p>See <a href="/wiki/Macros" class="mw-redirect" title="Macros">Macros</a> for a description of their use and a better/updated table. </p><p>Below is the result of calling all 26 lower case possible macros: This table is automatically generated by inserting a bit of HTML/GeneWeb code into the notes of one person in your base. The corresponding code is <a href="/wiki/Macro-table/fr" title="Macro-table/fr">here</a> </p> <div class="center"><div class="floatnone"><a href="/wiki/File:Macros-table.png" class="image" title="Table of GeneWeb macros."><img alt="Table of GeneWeb macros." src="https://download.tuxfamily.org/geneweb/wiki/images/thumb/8/84/Macros-table.png/700px-Macros-table.png" decoding="async" width="700" height="641" srcset="https://download.tuxfamily.org/geneweb/wiki/images/thumb/8/84/Macros-table.png/1050px-Macros-table.png 1.5x, https://download.tuxfamily.org/geneweb/wiki/images/thumb/8/84/Macros-table.png/1400px-Macros-table.png 2x" /></a></div></div> <h2><span id="Commands_(m=XXX)"></span><span class="mw-headline" id="Commands_.28m.3DXXX.29">Commands (m=XXX)</span></h2> <p>List of the commands appearing in URL with the form: </p> <pre>%prefix;m=COMMAND;p=param1;n=param2; (or %sm=COMMAND... in notes and m=SRC .txt files) </pre> <p>This list does not claim to be exhaustive, and does not "explain" what each command does! </p> <div style="column-count:4;-moz-column-count:4;-webkit-column-count:4"> <pre> "A" "AD" "ADD_FAM" "ADD_FAM_OK" "ADD_IND" "ADD_IND_OK" "ADD_PAR" "ADD_PAR_OK" "AM" "AN" "ANM" "AS_OK" "C" "CAL" "CAST" "CHANGE_WIZ_VIS" "CHG_CHN" "CHG_CHN_OK" "CHG_EVT_FAM_ORD" "CHG_EVT_FAM_ORD_OK" "CHG_EVT_IND_ORD" "CHG_EVT_IND_ORD_OK" "CHG_FAM_ORD" "CHG_FAM_ORD_OK" "CONN_WIZ" "D" "DAG" * "DATE" "DEL_FAM" "DEL_FAM_OK" "DEL_IMAGE" "DEL_IMAGE_OK" "DEL_IND" "DEL_IND_OK" "F" "FIXBASE" "FIXBASE_OK" "FORUM_ADD" "FORUM_ADD_OK" "FORUM_DEL" "FORUM_P_P" "FORUM_SEARCH" "FORUM_VAL" "FORUM_VIEW" "H" "HIST" "HIST_CLEAN" "HIST_CLEAN_OK" "HIST_DIFF" "HIST_SEARCH" "IM" * "IMH" * "INV_FAM" "INV_FAM_OK" "KILL_ANC" "L" "LB" "LD" "LINKED" "LL" "LM" "LOG" "MISC_NOTES" "MISC_NOTES_SEARCH" "MOD_DATA" "MOD_DATA_OK" "MOD_FAM" "MOD_FAM_OK" "MOD_IND" "MOD_IND_OK" "MOD_NOTES" "MOD_NOTES_OK" "MOD_WIZNOTES" "MOD_WIZNOTES_OK" "MRG" "MRG_DUP" "MRG_DUP_FAM_Y_N" "MRG_DUP_IND_Y_N" "MRG_FAM" "MRG_FAM_OK" "MRG_IND" "MRG_IND_OK" "MRG_MOD_FAM_OK" "MRG_MOD_IND_OK" "N" "NAME" "NG" "NOTES" "OA" "OE" "OPT" "P" "POP_PYR" "PPS" "PS" "R" "REQUEST" "RL" "RLM" * "S" "SND_IMAGE" "SND_IMAGE_OK" "SRC" * "STAT" "TP" "TT" "U" "VIEW_WIZNOTES" * "WIZNOTES" * "WIZNOTES_SEARCH" * </pre> </div> <p>Commands marked with a * are documented below: </p> <ul><li><a href="/wiki/image" title="image">IM</a> and <a href="/wiki/image" title="image">IMH</a></li> <li><a href="/wiki/trees" title="trees">RLM</a> and <a href="/wiki/trees" title="trees">DAG</a></li> <li><a href="/wiki/image" title="image">SRC</a></li> <li><a href="/wiki/wiznotes" title="wiznotes">WIZNOTES</a> and the various WIZ related commands.</li></ul> <h2><span class="mw-headline" id="Environnement_and_configuration">Environnement and configuration</span></h2> <p>GeneWeb propose a general-purpose mechanism allowing the user/programmer to extend at will the notion of variable described here. </p> <h3><span class="mw-headline" id="Configuration_variables">Configuration variables</span></h3> <p>If a new variable is defined in the <a href="/w/index.php?title=gwf&action=edit&redlink=1" class="new" title="gwf (page does not exist)"><code>.gwf</code></a> configuration file, then it will be possible to test for the value of this variable in the context of a template file. For instance, if we have added </p> <pre>new_var=some-text </pre> <p>in <code>.gwf</code>, then the following code in the template will be able to perform some specific action: </p> <pre>%if; (bvar.new_var = "sometext" ) ... perform some specific action ... %end; </pre> <h4><span class="mw-headline" id="Personal_variables">Personal variables</span></h4> <p>The special variable <i>var</i> is treated in the following fashion within notes, sources and comments: If you define in the <code>.gwf</code> file a variable <code>var_text=some_text</code>, then calling the macro <code>%vtext;</code> in a note or a template will produce the text <code>some_text</code> as in the following example: </p> <pre>var_who=Bond, James Bond </pre> <p><code>"My name is %vwho;."</code> in a note will be transformed into <code>"My name is Bond, James Bond."</code>. </p><p>This feature is used by some to facilitate the signature of sources. The <code>.gwf</code> file contains a list of <code>var_nickname</code> definitions whose value is a full name and possibly a pointer to a page containing more detailed information: </p> <pre>var_henri=<a href="<a target="_blank" rel="nofollow noreferrer noopener" class="external free" href="http://site/base?p=Firstname;n=lastname">http://site/base?p=Firstname;n=lastname</a>">First_name Lastname</a> </pre> <p>(no %x or %macro; in the value of the parameter!!). </p><p>Note: in latest version 7 of GeneWeb, the wiki syntax can be used in the parameter as in: </p> <pre>var_who=[[james/bond/James Bond]] </pre> <p>which will include the text "James Bond" and a link to the corresponding page. </p> <h3><span id="Environment_variables_(evar/e)"></span><span class="mw-headline" id="Environment_variables_.28evar.2Fe.29">Environment variables (evar/e)</span></h3> <p>Environment variables are variables used by templates to modify the behaviour of pages. They are available in the query string of the URL and can be called to obtain their value with “{c|%evar.variable_name;}} or shorter <a href="/w/index.php?title=Template:%25e.variable_name;&action=edit&redlink=1" class="new" title="Template:%e.variable name; (page does not exist)">Template:%e.variable name;</a> since v7.1. </p><p>Examples with a query string that is <code>?lang=fr&m=A&t=T&p=first_name&n=lastname&v=7</code>, to check if… </p> <ul><li>… the language is English: <code>%if;(evar.lang="en")…%end;</code>.</li> <li>… the individual has a first_name and a surname defined: <code>%if;(e.p!="" and e.n!="")…%end;</code>.</li> <li>… the number of generations is lower than 10: <code>%if;(e.v<10)…%end;</code>.</li></ul> <p>Out of templates, there are potentially few environment variables used in <code>.ml</code> code that are parts of <code>conf.env</code> (to be searched with <code>p_getenv</code> in files. </p><p>See also “<a href="/wiki/gwd#Some_frequently_used_evars" title="gwd">gwd#Some frequently used evars</a>” for more examples. </p> <h2><span class="mw-headline" id="Bvar_variables_used_in_templates">Bvar variables used in templates</span></h2> <div style="column-count:3;-moz-column-count:3;-webkit-column-count:3"> <pre> access_by_key always_surname auth_file authorized_wizards_notes base_notes_title birth_symbol can_kill_ancestors can_send_image carrousel com counter css css_prop datalist_fn datalist_occu datalist_place datalist_sn datalist_src datalist_z death_symbol default_fnav_images default_fnav_semi default_fnav_spouse default_image default_image_no default_lang default_sosa_ref defaut_lang disable_forum display_sosa display_timeline event_age fn_sn_switch friend_passwd friend_passwd_file full_siblings hide_advanced_request history history_diff jquery latest_event max_anc_level max_anc_tree max_cousins_level max_dates max_desc_level max_desc_tree max_rlm_nbr maxlev menu misc module_perso_ix module_perso_tplnb motd move_comment moved multi_parents no_image_for_visitor no_note_for_visitor notextarea origin_file p_mod particles perso_module_modnum perso_module_tplnum plugins propose_add_family propose_alias propose_place_surnames propose_qualifier propose_titles setup_http setup_link show_consang show_flag show_invisible static_path template timeline tuxfamily txt uppercase use_cdn var_img_ext var_t_BIRTHA var_t_DEATHA var_t_MARRIAGEA visitor_access visitor_access_msg_en visitor_access_msg_lg welcome_logo welcome_logo_style wide wizard_descr_file wizard_just_friend wizard_passwd wizard_passwd_file </pre> </div> <h2><span class="mw-headline" id="Bvar_variables_used_by_Gwd">Bvar variables used by Gwd</span></h2> <div style="column-count:2;-moz-column-count:2;-webkit-column-count:2"> <pre>always_surname, yes auth_file base_notes_title body_prop can_kill_ancestors can_send_image, no conf.base_env counter, no death_symbol, † default_sosa_ref disable_forum, yes dump_bad_images, yes expand_env fast_alphabetic, yes forum_exclude_file friend_passwd friend_passwd_file has_events history, yes history_diff history_path image_prefix images_path latest_event long_date, yes max_anc_tree max_ancestor_implex max_cousins max_desc_level max_desc_tree max_images_size max_nb_update max_rlm_nbr moderator_file no notes_alias_file notify_change passwd_ place place_surname_link_to_ind, yes places_inverted, yes print_advanced_title, yes propose_add_family, no ptempl, yes red_if_not_exist short_place_threshold show_query_time static_path template var_ visitor_access, no wizard_descr_file wizard_passwd_file </pre> </div> <p>The bvar name is sometimes followed by one of its options (yes/no) </p> <h2><span class="mw-headline" id="Building_trees_through_direct_url_construction">Building trees through direct url construction</span></h2> <p>See <a href="/wiki/trees" title="trees">trees</a> or <a href="/wiki/trees/fr" title="trees/fr">trees/fr</a> </p> <p><br /></p><div style="margin:0 auto 1em; clear:both; width:90%; background-color:#f7f9ff; border:1px solid #8888aa; padding:3px;"> <p><big><b>GeneWeb Manual</b></big> </p> <div class="floatright"><a href="/wiki/File:Rembrandt_Old_Man_Reading_a_Book.jpg" class="image"><img alt="Rembrandt Old Man Reading a Book.jpg" src="https://download.tuxfamily.org/geneweb/wiki/images/thumb/a/ae/Rembrandt_Old_Man_Reading_a_Book.jpg/210px-Rembrandt_Old_Man_Reading_a_Book.jpg" decoding="async" width="210" height="293" srcset="https://download.tuxfamily.org/geneweb/wiki/images/thumb/a/ae/Rembrandt_Old_Man_Reading_a_Book.jpg/315px-Rembrandt_Old_Man_Reading_a_Book.jpg 1.5x, https://download.tuxfamily.org/geneweb/wiki/images/thumb/a/ae/Rembrandt_Old_Man_Reading_a_Book.jpg/420px-Rembrandt_Old_Man_Reading_a_Book.jpg 2x" /></a></div> <ul><li><a href="/wiki/Download" class="mw-redirect" title="Download">Download</a> and install GeneWeb program under <a href="/wiki/Linux" title="Linux">GNU/Linux</a>, <a href="/wiki/OSX" title="OSX">Mac OS X</a>, <a href="/wiki/Windows" title="Windows">Microsoft Windows</a>, <a href="/wiki/FreeBSD" title="FreeBSD">FreeBSD</a>; on Mac OS X, Linux or Windows <a href="/wiki/Docker" title="Docker">using Docker</a>; or in <a href="/wiki/CGI" title="CGI">CGI mode behind a web server</a>.</li> <li>Understand <a href="/wiki/gwd" title="gwd">GeneWeb server</a>, <a href="/wiki/namesake" title="namesake">homonym</a>, <a href="/wiki/consang" title="consang">consanguinity</a>.</li></ul> <p><b>Use and manage genealogical databases</b> </p> <ul><li>Import Gedcom <code>.ged</code> or <a href="/wiki/GWformat" class="mw-redirect" title="GWformat">GeneWeb <code>.gw</code></a> files with <a href="/wiki/gwsetup" title="gwsetup">gwsetup</a> or in <a href="/wiki/man" title="man">command-line</a>.</li> <li><a href="/wiki/Update" class="mw-redirect" title="Update">Update datas</a> (add/remove individuals and families), <a href="/wiki/Fusion" class="mw-redirect" title="Fusion">merge duplicates</a>, type <a href="/wiki/date" title="date">dates</a>.</li> <li>Use <a href="/wiki/wikitext" title="wikitext">wikitext syntax</a>, <a href="/wiki/macros" title="macros">macros</a>, <a href="/wiki/shortcuts" title="shortcuts">keyboard shortcuts</a>.</li> <li><a href="/wiki/Clean" class="mw-redirect" title="Clean">Clean</a>, <a href="/wiki/recover" title="recover">recover</a>, <a href="/wiki/rename" title="rename">rename</a>, <a href="/wiki/save" title="save">save</a>, <a href="/wiki/archive" title="archive">archive</a> a database.</li> <li><a href="/wiki/Merge" class="mw-redirect" title="Merge">Merge</a> and <a href="/wiki/Divide" class="mw-redirect" title="Divide">split</a> multiples databases.</li></ul> <p><b>Technical annex</b> </p> <ul><li>Personalize <a href="/wiki/CSS" title="CSS">CSS</a>, <a href="/wiki/header/fr" title="header/fr">header and trailer</a>, <a href="/wiki/templates" title="templates">templates</a>, <a href="/wiki/lexicon" title="lexicon">lexicon</a> and <a href="/wiki/declension" title="declension">declension</a>.</li> <li><a href="/wiki/configuration" title="configuration">Configuration file <code>.gwf</code></a> (for <a href="/wiki/templm" title="templm">templm</a>), <a href="/wiki/wiznotes" title="wiznotes">wizard notes</a>, <a href="/wiki/password" title="password">passwords for friends/wizards</a> and <a href="/wiki/access" title="access">access restrictions</a> to databases.</li> <li>Add <a href="/wiki/image" title="image">images</a> in notes, further remarks for <a class="mw-selflink selflink">experts</a>.</li></ul> </div> <!-- NewPP limit report Cached time: 20241126164248 Cache expiry: 86400 Dynamic content: false Complications: [] CPU time usage: 0.270 seconds Real time usage: 0.507 seconds Preprocessor visited node count: 2278/1000000 Post‐expand include size: 4363/2097152 bytes Template argument size: 3582/2097152 bytes Highest expansion depth: 21/40 Expensive parser function count: 69/100 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 18923/5000000 bytes --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 337.839 1 -total 93.69% 316.531 1 Template:languages 72.45% 244.766 1 Template:nmbox 39.51% 133.485 138 Template:languages/lang 24.17% 81.659 1 Template:Languages/Title 16.46% 55.599 1 Template:LangSwitch 7.72% 26.086 2 Template:GetFallback 3.60% 12.167 1 Template:dir 3.56% 12.011 5 Template:Uselang 3.23% 10.900 27 Template:c --> <!-- Saved in parser cache with key geneweb_mw2:pcache:idhash:264-0!canonical and timestamp 20241126164248 and revision id 4151 --> </div></div><div class="printfooter">Retrieved from "<a dir="ltr" href="https://geneweb.tuxfamily.org/w/index.php?title=expert&oldid=4151">https://geneweb.tuxfamily.org/w/index.php?title=expert&oldid=4151</a>"</div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="/wiki/Category:Manual" title="Category:Manual">Manual</a></li></ul></div></div> </div> </div> <div id="mw-navigation"> <h2>Navigation menu</h2> <div id="mw-head"> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-personal" class="vector-menu" aria-labelledby="p-personal-label" role="navigation" > <h3 id="p-personal-label"> <span>Personal tools</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="vector-menu-content-list"><li id="pt-createaccount"><a href="/w/index.php?title=Special:CreateAccount&returnto=expert" title="You are encouraged to create an account and log in; however, it is not mandatory">Create account</a></li><li id="pt-login"><a href="/w/index.php?title=Special:UserLogin&returnto=expert" title="You are encouraged to log in; however, it is not mandatory [o]" accesskey="o">Log in</a></li></ul> </div> </nav> <div id="left-navigation"> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-namespaces" class="vector-menu vector-menu-tabs vectorTabs" aria-labelledby="p-namespaces-label" role="navigation" > <h3 id="p-namespaces-label"> <span>Namespaces</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="vector-menu-content-list"><li id="ca-nstab-main" class="selected"><a href="/wiki/expert" title="View the content page [c]" accesskey="c">Page</a></li><li id="ca-talk" class="new"><a href="/w/index.php?title=Talk:expert&action=edit&redlink=1" rel="discussion" title="Discussion about the content page (page does not exist) [t]" accesskey="t">Discussion</a></li></ul> </div> </nav> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-variants" class="vector-menu-empty emptyPortlet vector-menu vector-menu-dropdown vectorMenu" aria-labelledby="p-variants-label" role="navigation" > <input type="checkbox" class="vector-menu-checkbox vectorMenuCheckbox" aria-labelledby="p-variants-label" /> <h3 id="p-variants-label"> <span>Variants</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="menu vector-menu-content-list"></ul> </div> </nav> </div> <div id="right-navigation"> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-views" class="vector-menu vector-menu-tabs vectorTabs" aria-labelledby="p-views-label" role="navigation" > <h3 id="p-views-label"> <span>Views</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="vector-menu-content-list"><li id="ca-view" class="collapsible selected"><a href="/wiki/expert">Read</a></li><li id="ca-viewsource" class="collapsible"><a href="/w/index.php?title=expert&action=edit" title="This page is protected. You can view its source [e]" accesskey="e">View source</a></li><li id="ca-history" class="collapsible"><a href="/w/index.php?title=expert&action=history" title="Past revisions of this page [h]" accesskey="h">View history</a></li></ul> </div> </nav> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-cactions" class="vector-menu-empty emptyPortlet vector-menu vector-menu-dropdown vectorMenu" aria-labelledby="p-cactions-label" role="navigation" > <input type="checkbox" class="vector-menu-checkbox vectorMenuCheckbox" aria-labelledby="p-cactions-label" /> <h3 id="p-cactions-label"> <span>More</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="menu vector-menu-content-list"></ul> </div> </nav> <div id="p-search" role="search"> <h3 > <label for="searchInput">Search</label> </h3> <form action="/w/index.php" id="searchform"> <div id="simpleSearch"> <input type="search" name="search" placeholder="Search GeneWeb" title="Search GeneWeb [f]" accesskey="f" id="searchInput"/> <input type="hidden" name="title" value="Special:Search"> <input type="submit" name="fulltext" value="Search" title="Search the pages for this text" id="mw-searchButton" class="searchButton mw-fallbackSearchButton"/> <input type="submit" name="go" value="Go" title="Go to a page with this exact name if it exists" id="searchButton" class="searchButton"/> </div> </form> </div> </div> </div> <div id="mw-panel"> <div id="p-logo" role="banner"> <a title="Visit the main page" class="mw-wiki-logo" href="/wiki/GeneWeb"></a> </div> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-GeneWeb" class="vector-menu vector-menu-portal portal portal-first" aria-labelledby="p-GeneWeb-label" role="navigation" > <h3 id="p-GeneWeb-label"> <span>GeneWeb</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="vector-menu-content-list"><li id="n-News"><a href="/wiki/news">News</a></li><li id="n-Download"><a href="/wiki/Download">Download</a></li><li id="n-Contribute"><a href="/wiki/contribute">Contribute</a></li></ul> </div> </nav> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-Support" class="vector-menu vector-menu-portal portal" aria-labelledby="p-Support-label" role="navigation" > <h3 id="p-Support-label"> <span>Support</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="vector-menu-content-list"><li id="n-Demo-7.1-beta"><a href="https://demo.geneweb.tuxfamily.org/gw71/" rel="nofollow" target="_blank">Demo 7.1 beta</a></li><li id="n-Live-test-master"><a href="https://colab.research.google.com/github/geneweb/geneweb/blob/master/geneweb_colab.ipynb" rel="nofollow" target="_blank">Live test master</a></li><li id="n-Manual"><a href="/wiki/manual">Manual</a></li><li id="n-FAQ"><a href="/wiki/FAQ">FAQ</a></li></ul> </div> </nav> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-Development" class="vector-menu vector-menu-portal portal" aria-labelledby="p-Development-label" role="navigation" > <h3 id="p-Development-label"> <span>Development</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="vector-menu-content-list"><li id="n-Issues"><a href="https://github.com/geneweb/geneweb/issues" rel="nofollow" target="_blank">Issues</a></li><li id="n-Sources"><a href="https://github.com/geneweb/geneweb" rel="nofollow" target="_blank">Sources</a></li><li id="n-Changelog"><a href="/wiki/changelog">Changelog</a></li><li id="n-Roadmap"><a href="/wiki/TODO">Roadmap</a></li></ul> </div> </nav> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-Wiki" class="vector-menu vector-menu-portal portal" aria-labelledby="p-Wiki-label" role="navigation" > <h3 id="p-Wiki-label"> <span>Wiki</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="vector-menu-content-list"><li id="n-All-Pages"><a href="/wiki/Special:AllPages">All Pages</a></li><li id="n-recentchanges"><a href="/wiki/Special:RecentChanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li><li id="n-help"><a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents" target="_blank" title="The place to find out">Help</a></li></ul> </div> </nav> <!-- Please do not use role attribute as CSS selector, it is deprecated. --> <nav id="p-tb" class="vector-menu vector-menu-portal portal" aria-labelledby="p-tb-label" role="navigation" > <h3 id="p-tb-label"> <span>Tools</span> </h3> <!-- Please do not use the .body class, it is deprecated. --> <div class="body vector-menu-content"> <!-- Please do not use the .menu class, it is deprecated. --> <ul class="vector-menu-content-list"><li id="t-whatlinkshere"><a href="/wiki/Special:WhatLinksHere/expert" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li><li id="t-recentchangeslinked"><a href="/wiki/Special:RecentChangesLinked/expert" rel="nofollow" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li><li id="t-specialpages"><a href="/wiki/Special:SpecialPages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li><li id="t-print"><a href="javascript:print();" rel="alternate" title="Printable version of this page [p]" accesskey="p">Printable version</a></li><li id="t-permalink"><a href="/w/index.php?title=expert&oldid=4151" title="Permanent link to this revision of the page">Permanent link</a></li><li id="t-info"><a href="/w/index.php?title=expert&action=info" title="More information about this page">Page information</a></li></ul> </div> </nav> </div> </div> <footer id="footer" class="mw-footer" role="contentinfo" > <ul id="footer-info" > <li id="footer-info-lastmod"> This page was last edited on 6 November 2023, at 15:04.</li> <li id="footer-info-copyright">Content is available under <a class="external" rel="nofollow" href="http://creativecommons.org/licenses/by-sa/3.0/">CC BY-SA 3.0 License</a> unless otherwise noted.</li> </ul> <ul id="footer-places" > <li id="footer-places-privacy"><a href="/wiki/GeneWeb:Privacy_policy" title="GeneWeb:Privacy policy">Privacy policy</a></li> <li id="footer-places-about"><a href="/wiki/GeneWeb:About" title="GeneWeb:About">About GeneWeb</a></li> <li id="footer-places-disclaimer"><a href="/wiki/GeneWeb:General_disclaimer" title="GeneWeb:General disclaimer">Disclaimers</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="http://creativecommons.org/licenses/by-sa/3.0/" target="_blank"><img src="/w/resources/assets/licenses/cc-by-sa.png" alt="CC BY-SA 3.0 License" width="88" height="31" loading="lazy"/></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" target="_blank"><img src="/w/resources/assets/poweredby_mediawiki_88x31.png" alt="Powered by MediaWiki" srcset="/w/resources/assets/poweredby_mediawiki_132x47.png 1.5x, /w/resources/assets/poweredby_mediawiki_176x62.png 2x" width="88" height="31" loading="lazy"/></a></li> </ul> <div style="clear: both;"></div> </footer> <script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgPageParseReport":{"limitreport":{"cputime":"0.270","walltime":"0.507","ppvisitednodes":{"value":2278,"limit":1000000},"postexpandincludesize":{"value":4363,"limit":2097152},"templateargumentsize":{"value":3582,"limit":2097152},"expansiondepth":{"value":21,"limit":40},"expensivefunctioncount":{"value":69,"limit":100},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":18923,"limit":5000000},"timingprofile":["100.00% 337.839 1 -total"," 93.69% 316.531 1 Template:languages"," 72.45% 244.766 1 Template:nmbox"," 39.51% 133.485 138 Template:languages/lang"," 24.17% 81.659 1 Template:Languages/Title"," 16.46% 55.599 1 Template:LangSwitch"," 7.72% 26.086 2 Template:GetFallback"," 3.60% 12.167 1 Template:dir"," 3.56% 12.011 5 Template:Uselang"," 3.23% 10.900 27 Template:c"]},"cachereport":{"timestamp":"20241126164248","ttl":86400,"transientcontent":false}}});mw.config.set({"wgBackendResponseTime":2341});});</script></body></html>