LinkPhone
From Halal Explorer
This documentation is transcluded from Module:LinkPhone/doc. (edit | history)
Note to editors: Please don't categorize this template by editing it directly. Instead, place the category in its documentation page, in its "includeonly" section.
Note to editors: Please don't categorize this template by editing it directly. Instead, place the category in its documentation page, in its "includeonly" section.
Example Usage
Text | Code | Result |
---|---|---|
+1 234 567 890 | {{#invoke:LinkPhone|LinkPhone|+1 234 567 890}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+1 234-567-890 | {{#invoke:LinkPhone|LinkPhone|+1 234-567-890}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+1 234-567-890 ext 12 | {{#invoke:LinkPhone|LinkPhone|+1 234-567-890 ext 12}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+1 (234) 567 890 | {{#invoke:LinkPhone|LinkPhone|+1 (234) 567 890}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+1 234.567.890 | {{#invoke:LinkPhone|LinkPhone|+1 234.567.890}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
234 567 890 | {{#invoke:LinkPhone|LinkPhone|234 567 890}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+1 234 567 WIKI | {{#invoke:LinkPhone|LinkPhone|+1 234 567 WIKI}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+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}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+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)}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+44 20 7890 1234, +44 20 7890 1235 | {{#invoke:LinkPhone|LinkPhone|+44 20 7890 1234, +44 20 7890 1235}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+44 20 7890 1234 | {{#invoke:LinkPhone|LinkPhone|''+44'' 20 7890 1234}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
+44 (0)234 567 890 | {{#invoke:LinkPhone|LinkPhone|+44 (0)234 567 890}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
0844 123 4567 (high cost) | {{#invoke:LinkPhone|LinkPhone|0844 123 4567 (high cost)}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
visites.csg@cnes.fr (museum and tours), csg-accueil@cnes.fr (rocket launches) | {{#invoke:LinkPhone|LinkEmail|visites.csg@cnes.fr (museum and tours), csg-accueil@cnes.fr (rocket launches)}} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
blank | {{#invoke:LinkPhone|LinkPhone| }} | Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted |
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;
}
Script error: Lua error: Cannot create process: proc_open(/dev/null): Failed to open stream: Operation not permitted
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:Listing with phone missing country code]]<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 then output = '<span class="plainlinks nourlexpansion">'; if fax == 'true' then output = output .. txt .. '</span>' .. othertxt; else output = 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' then output = output .. txt .. ' (' .. extra .. ')' .. '</span>' .. othertxt; else output = output .. '[tel:' .. link .. ' ' .. txt .. ' (' .. extra .. ')' .. ']</span>' .. othertxt; end else output = txt .. othertxt; if mw.ustring.match('+' .. link,"^%+[%d-() ]+$") == nil then catFormatIssue = '[[' .. catprefix .. 'Category:Listing with phone format issue]]<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:Listing with phone format issue]]<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; end function 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:Listing with email format issue]]<span class="phoneinfo" style="display:none;" title="Email has formatting issue">FORMAT</span>'; end if mw.ustring.match(txt,"@[^.]+%.%.") ~= nil then catFormatIssue = '[[' .. catprefix .. 'Category:Listing with email format issue]]<span class="phoneinfo" style="display:none;" title="Email has formatting issue">FORMAT</span>'; end if mw.ustring.match(txt,"@") == nil then catFormatIssue = '[[' .. catprefix .. 'Category:Listing with email format issue]]<span class="phoneinfo" style="display:none;" title="Email has formatting issue">FORMAT</span>'; end if mw.ustring.match(txt,"@[^.]+%.[^.]+") == nil then catFormatIssue = '[[' .. catprefix .. 'Category:Listing with email format issue]]<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; end function 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;