יחידה:LinkPhone

Example Usage עריכה

TextCodeResult
+1 234 567 890{{#invoke:LinkPhone|LinkPhone|+1 234 567 890}}+1 234 567 890
+1 234-567-890{{#invoke:LinkPhone|LinkPhone|+1 234-567-890}}+1 234-567-890
+1 234-567-890 ext 12{{#invoke:LinkPhone|LinkPhone|+1 234-567-890 ext 12}}+1 234-567-890 ext 12
+1 (234) 567 890{{#invoke:LinkPhone|LinkPhone|+1 (234) 567 890}}+1 (234) 567 890
+1 234.567.890{{#invoke:LinkPhone|LinkPhone|+1 234.567.890}}+1 234.567.890Category:רשומות עם בעיות בפורמט הטלפון
234 567 890{{#invoke:LinkPhone|LinkPhone|234 567 890}}234 567 890Category:מדריכים עם רשומות בהן למספר טלפון אין קוד מדינה
+1 234 567 WIKI{{#invoke:LinkPhone|LinkPhone|+1 234 567 WIKI}}+1 234 567 WIKI (9454)
+44 20 7890 1234 reservations, +44 20 7890 1235 general enquiries{{#invoke:LinkPhone|LinkPhone|+44 20 7890 1234 reservations, +44 20 7890 1235 general enquiries}}+44 20 7890 1234 reservationsCategory:רשומות עם בעיות בפורמט הטלפון, +44 20 7890 1235 general enquiriesCategory:רשומות עם בעיות בפורמט הטלפון
+44 20 7890 1234 (reservations), +44 20 7890 1235 (general enquiries){{#invoke:LinkPhone|LinkPhone|+44 20 7890 1234 (reservations), +44 20 7890 1235 (general enquiries)}}+44 20 7890 1234 (reservations), +44 20 7890 1235 (general enquiries)
+44 20 7890 1234, +44 20 7890 1235{{#invoke:LinkPhone|LinkPhone|+44 20 7890 1234, +44 20 7890 1235}}+44 20 7890 1234, +44 20 7890 1235
+44 20 7890 1234{{#invoke:LinkPhone|LinkPhone|''+44'' 20 7890 1234}}+44 20 7890 1234
+44 (0)234 567 890{{#invoke:LinkPhone|LinkPhone|+44 (0)234 567 890}}+44 (0)234 567 890Category:רשומות עם בעיות בפורמט הטלפון
0844 123 4567 (high cost){{#invoke:LinkPhone|LinkPhone|0844 123 4567 (high cost)}}0844 123 4567 (high cost)
[email protected] (museum and tours), [email protected] (rocket launches){{#invoke:LinkPhone|LinkEmail|[email protected] (museum and tours), [email protected] (rocket launches)}}[email protected] (museum and tours), [email protected] (rocket launches)
blank{{#invoke:LinkPhone|LinkPhone| }}

Highlighting issues עריכה

To make it easier to find phone numbers that may have issues, enable the "ErrorHighlighter" gadget from your user preferences. After enabling the gadget, phone numbers with issues will display followed by a very noticeable warning message.

Alternately, if you prefer not to use a gadget then you can add the following to your own common.css page.

.phoneinfo{    color: red;    background: yellow;    display: inline !important;}

local i = {} function i.LinkOnePhone(txt, demo, fax, tollfree)    local link = txt;    local othertxt = "";    local catprefix = '';    local catMissingCountryCode = '';    local catFormatIssue = '';    local output;    if demo == 'true' then    catprefix = ':';    end    -- any other text in brackets at the end is stored separately and ignored for the dialing number    if mw.ustring.gsub(txt, "(.*)( %(.*%))$", "%2") ~= txt then        othertxt = mw.ustring.gsub(txt, "(.*)( %(.*%))$", "%2");        txt = mw.ustring.gsub(txt, "(.*)( %(.*%))$", "%1");    end    -- Don't include "ext NNNN" in the link    link = mw.ustring.gsub(txt, " +[Ee][Xx][Tt] +%d+$", "");    -- Don't include " xNNNN" in the link    link = mw.ustring.gsub(link, " +x%d+$", "");    link = mw.ustring.gsub(link, " ", "");    link = mw.ustring.gsub(link, "'", "");    if link == "" then        return "";    end    if mw.ustring.sub(link, 1, 1) ~= '+' and mw.ustring.len(link) > 4 then    catMissingCountryCode = '[[' .. catprefix .. 'Category:מדריכים עם רשומות בהן למספר טלפון אין קוד מדינה]]<span class="phoneinfo" style="display:none;" title="Phone number does not have country code">NOCC</span>';        if tollfree == 'yes' and mw.ustring.sub(link, 1, 3) == '800' then           catMissingCountryCode = '';        end        if tollfree == 'yes' and mw.ustring.sub(link, 1, 4) == '0508' then           catMissingCountryCode = '';        end        if tollfree == 'yes' and mw.ustring.sub(link, 1, 4) == '0800' then           catMissingCountryCode = '';        end        if tollfree == 'yes' and mw.ustring.sub(link, 1, 4) == '1300' then           catMissingCountryCode = '';        end        if tollfree == 'yes' and mw.ustring.sub(link, 1, 4) == '1800' then           catMissingCountryCode = '';        end        if tollfree == 'yes' and mw.ustring.sub(link, 1, 5) == '01800' then           catMissingCountryCode = '';        end        if mw.ustring.match(mw.ustring.lower(othertxt),"high cost") ~= nil then           catMissingCountryCode = '';        end        if mw.ustring.match(mw.ustring.lower(othertxt),"extra charge") ~= nil then           catMissingCountryCode = '';        end        if mw.ustring.match(mw.ustring.lower(othertxt),"premium") ~= nil then           catMissingCountryCode = '';        end        if mw.ustring.match(mw.ustring.lower(othertxt),"local rate") ~= nil then           catMissingCountryCode = '';        end        if mw.ustring.match(mw.ustring.lower(othertxt),"in country only") ~= nil then           catMissingCountryCode = '';        end        if mw.ustring.match(mw.ustring.lower(othertxt),"domestic") ~= nil then           catMissingCountryCode = '';        end        if mw.ustring.match(mw.ustring.lower(othertxt),"emergency") ~= nil then           catMissingCountryCode = '';        end        if mw.ustring.match(mw.ustring.lower(othertxt),"non%-emergency") ~= nil then           catMissingCountryCode = '';        end        if mw.ustring.match(mw.ustring.lower(othertxt),"non%-geographic number") ~= nil then           catMissingCountryCode = '';        end    end    if mw.ustring.match(link,"^%+[%d-() ]+$") ~= nil thenoutput = '<span class="plainlinks nourlexpansion">';if fax == 'true' thenoutput = output .. txt .. '</span>' .. othertxt;elseoutput = output .. '[tel:' .. link .. ' ' .. txt .. ']</span>' .. othertxt;end    elseif mw.ustring.match(link,"^%+[%d%u- ]+$") ~= nil then        local extra = mw.ustring.match(link, "%u[%d%u- ]+")        link = mw.ustring.gsub(link, "[A-C]", "2");        link = mw.ustring.gsub(link, "[D-F]", "3");        link = mw.ustring.gsub(link, "[G-I]", "4");        link = mw.ustring.gsub(link, "[J-L]", "5");        link = mw.ustring.gsub(link, "[M-O]", "6");        link = mw.ustring.gsub(link, "[P-S]", "7");        link = mw.ustring.gsub(link, "[T-V]", "8");        link = mw.ustring.gsub(link, "[W-Z]", "9");        extra = mw.ustring.gsub(extra, "[A-C]", "2");        extra = mw.ustring.gsub(extra, "[D-F]", "3");        extra = mw.ustring.gsub(extra, "[G-I]", "4");        extra = mw.ustring.gsub(extra, "[J-L]", "5");        extra = mw.ustring.gsub(extra, "[M-O]", "6");        extra = mw.ustring.gsub(extra, "[P-S]", "7");        extra = mw.ustring.gsub(extra, "[T-V]", "8");        extra = mw.ustring.gsub(extra, "[W-Z]", "9");output = '<span class="plainlinks nourlexpansion">';if fax == 'true' thenoutput = output .. txt .. ' (' .. extra .. ')' .. '</span>' .. othertxt;elseoutput = output .. '[tel:' .. link .. ' ' .. txt .. ' (' .. extra .. ')' .. ']</span>' .. othertxt;end    else        output = txt .. othertxt;        if mw.ustring.match('+' .. link,"^%+[%d-() ]+$") == nil then            catFormatIssue = '[[' .. catprefix .. 'Category:רשומות עם בעיות בפורמט הטלפון]]<span class="phoneinfo" style="display:none;" title="Phone number has formatting issue">FORMAT</span>';        end    end    if mw.ustring.match(link,"%(0%)") ~= nil then        catFormatIssue = '[[' .. catprefix .. 'Category:רשומות עם בעיות בפורמט הטלפון]]<span class="phoneinfo" style="display:none;" title="Phone number has formatting issue">FORMAT</span>';    end    if mw.title.getCurrentTitle().namespace == 0 or demo == 'true' then        output = output .. catFormatIssue .. catMissingCountryCode;    end    return output;endfunction i.LinkPhone(frame)    local demo = frame.args["demo"] or '';local fax = frame.args["fax"] or '';    local txtall = frame.args[1] or '' .. ',';    local tollfree = frame.args["tollfree"] or '';    local txt = "";    local result = "";    -- replace or / and with comma    txtall = mw.ustring.gsub(txtall, " or %+", ", +");    txtall = mw.ustring.gsub(txtall, " and %+", ", +");    for txt in mw.ustring.gmatch(txtall, "([^,]+)") do        result = result .. ", " .. i.LinkOnePhone(txt, demo, fax, tollfree)    end    result = mw.ustring.sub(result, 3, mw.ustring.len(result) );    return result;end function i.LinkOneEmail(txt, demo)    local othertxt = "";    local catprefix = '';    local catFormatIssue = '';    local output;    if demo == 'true' then    catprefix = ':';    end    -- any other text in brackets at the end is stored separately and ignored for the dialing number    if mw.ustring.gsub(txt, "(.*)( %(.*%))$", "%2") ~= txt then        othertxt = mw.ustring.gsub(txt, "(.*)( %(.*%))$", "%2");        txt = mw.ustring.gsub(txt, "(.*)( %(.*%))$", "%1");    end    txt = mw.ustring.gsub(txt, " ", "");    output = '[mailto:' .. txt .. ' ' .. txt .. ']' .. othertxt;    if mw.ustring.match(txt,"@.+@") ~= nil then        catFormatIssue = '[[' .. catprefix .. 'Category:רשומות עם בעיות בפורמט כתובת המייל]]<span class="phoneinfo" style="display:none;" title="Email has formatting issue">FORMAT</span>';    end    if mw.ustring.match(txt,"@[^.]+%.%.") ~= nil then        catFormatIssue = '[[' .. catprefix .. 'Category:רשומות עם בעיות בפורמט כתובת המייל]]<span class="phoneinfo" style="display:none;" title="Email has formatting issue">FORMAT</span>';    end    if mw.ustring.match(txt,"@") == nil then        catFormatIssue = '[[' .. catprefix .. 'Category:רשומות עם בעיות בפורמט כתובת המייל]]<span class="phoneinfo" style="display:none;" title="Email has formatting issue">FORMAT</span>';    end    if mw.ustring.match(txt,"@[^.]+%.[^.]+") == nil then        catFormatIssue = '[[' .. catprefix .. 'Category:רשומות עם בעיות בפורמט כתובת המייל]]<span class="phoneinfo" style="display:none;" title="Email has formatting issue">FORMAT</span>';    end    if mw.title.getCurrentTitle().namespace == 0 or demo == 'true' then        output = output .. catFormatIssue;    end    return output;endfunction i.LinkEmail(frame)    local demo = frame.args["demo"] or '';    local txtall = frame.args[1] or '' .. ',';    local txt = "";    local result = "";    -- replace semicolon with comma    txtall = mw.ustring.gsub(txtall, "; ", ", ");    for txt in mw.ustring.gmatch(txtall, "([^,]+)") do        result = result .. ", " .. i.LinkOneEmail(txt, demo)    end    result = mw.ustring.sub(result, 3, mw.ustring.len(result) );    return result;end return i;