{"id":6867,"date":"2026-09-11T15:49:46","date_gmt":"2026-09-11T13:49:46","guid":{"rendered":"https:\/\/weblearning.co.za\/blog\/?p=6867"},"modified":"2026-09-12T19:08:39","modified_gmt":"2026-09-12T17:08:39","slug":"images-wanted","status":"publish","type":"post","link":"https:\/\/weblearning.co.za\/blog\/images-wanted\/","title":{"rendered":"Images wanted"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"692\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402-1-1024x692.png\" alt=\"\" class=\"wp-image-6880\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402-1-1024x692.png 1024w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402-1-300x203.png 300w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402-1-768x519.png 768w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402-1.png 1192w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Introduction<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">I&#8217;ve often wondered where our statesmen choose to go once they have retired. Cecil John Rhodes, for example, died at 49 in a modest cottage at 246 Main road (<a href=\"https:\/\/www.wikidata.org\/wiki\/Q20617285\">Q20617285<\/a>), on the way to Vishoek. Poor bloke. His Groote Schuur Mansion had burnt down about 10 years before. Today, Rhodes Cottage is a thatched building, but originally structure had an asbestos roof. The warrior \/ statemen Jan Smuts lived in wood-and-iron building. This pre-fabricated structure was made of wood and iron components and was once used as an officers\u2019 mess. It was bought in Middelburg and re-erected on the farm Doornkloof. The house was also known as die GROOT HUIS*. (<a href=\"https:\/\/en.wikipedia.org\/wiki\/Big_House,_Irene\">Q61930814<\/a>) and is also known as the Smuts House Museum. Dr AB Xuma, medical doctor, leader, activist, president-general of the African National Congress (ANC) and signatory of the doctors pact, had a home on the corner of Toby and Thornton street. (Q20981521) in Sophia Town. Forced to leave in 1959, the house is known as Empilweni (the place of healing) is the Sophiatown Heritage Centre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These are places worth visiting. <\/p>\n\n\n\n<table>\n<tr><td>\n<a title=\"William Thomas Stead, Public domain, via Wikimedia Commons\" href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Muizenberg_Cottage.jpg\"><img decoding=\"async\" width=\"330\" alt=\"The cottage at Muizenberg where Mr Rhodes died\" src=\"https:\/\/thumb.wikimedia.org\/wikipedia\/commons\/thumb\/8\/81\/Muizenberg_Cottage.jpg\/330px-Muizenberg_Cottage.jpg?utm_source=commons.wikimedia.org&amp;utm_campaign=index&amp;utm_content=thumbnail\"><\/a><\/td>\n<td><a title=\"See page for author, Public domain, via Wikimedia Commons\" href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Smuts_farm.jpg\"><img decoding=\"async\" width=\"330\" alt=\"&quot;General Smuts\u2019 Irene house in course of reerection&quot;\" src=\"https:\/\/thumb.wikimedia.org\/wikipedia\/commons\/thumb\/1\/1a\/Smuts_farm.jpg\/330px-Smuts_farm.jpg?utm_source=commons.wikimedia.org&#038;utm_campaign=index&#038;utm_content=thumbnail\"><\/a>\n<\/td>\n<\/tr>\n<\/table>\n\n\n\n<p class=\"wp-block-paragraph\">When Nelson Mandela was released from prison he moved in to a house in <em>13th street<\/em> in Houghton. After he and Winnie were divorced, he moved to a place in <em>12th street<\/em> in Houghton in 1998.  Madiba moved to 12th avenue when he married Gra\u00e7a Machel. Sanctuary Mandela is the name of the boutique hotel that now sits where Madiba&#8217;s house is.  The hotel was amazing. I was a guest there of the Wikimedia Foundation and we had a superb lunch. The hotel has 9 rooms and each is centred around the decades he lived. I wish I&#8217;d taken more pics. This was also his last residence, any my kids left flowers outside. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\"> I&#8217;d like to take pictures of these stateman&#8217;s places. For example, what about  Thabo Mbeki&#8217;s house bordering on <em>Riverlea and Houghton Estate<\/em>. There is also Kgalema Motlanthe&#8217;s place in <em>8th Street, Houghton Estate<\/em>.  Each of these houses are an important part of our countries heritage. We can&#8217;t only have early colonists and nationalists on Wikipedia. This is part of the my (unpaid) work about communities that I  am doing as a Wikipedian in Residence for Code for Africa (and my almost completed WIR).       <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Upload Images Features<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Within the set of stylesheets I put together for Heritage Month, I&#8217;ve created place for something  called &#8220;Images Wanted&#8221;, or &#8220;Upload images&#8221;. This is a function that allows the average Wikipedian to upload images when the template is called. Some have suggested that this function be placed on talk pages, while others put it right on the page that needs a picture. I&#8217;m going to suggest that this function can also be located in the Sandbox. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"660\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-9-1024x660.png\" alt=\"\" class=\"wp-image-6876\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-9-1024x660.png 1024w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-9-300x193.png 300w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-9-768x495.png 768w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-9.png 1277w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Screen shot of Template:\u753b\u50cf\u52df\u96c6\u4e2d<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"> I saw this function originally in Japanese (see Template:\u753b\u50cf\u52df\u96c6\u4e2d) and Korean (see  \ud2c0:\uc774\ubbf8\uc9c0<em>\uc5c5\ub85c\ub4dc<\/em>\uc694\uccad). It looks complicated, but there is a simple explanation. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can initiate the function by writing familiar words in curly braces{{\u753b\u50cf\u52df\u96c6\u4e2d}} . No, I don&#8217;t speak Japanese or write it. Neither do I speak vernacular languages. I can however code switch.  For example, what does \u5229\u7528\u8005:Derek J Moore mean. Look at this in context.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"945\" height=\"472\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-10.png\" alt=\"\" class=\"wp-image-6877\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-10.png 945w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-10-300x150.png 300w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-10-768x384.png 768w\" sizes=\"auto, (max-width: 945px) 100vw, 945px\" \/><figcaption class=\"wp-element-caption\">On Japanese Wikipedia in my sandbox I added {{\u753b\u50cf\u52df\u96c6\u4e2d}} and I call this function<br><\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">After  adding {{\u753b\u50cf\u52df\u96c6\u4e2d}} and saving it, I can use the upload images function. You can upload images by pressing a hyperlink (or a blue button) or clicking the image of photographs and magnifying glass. This takes you to the <a href=\"https:\/\/commons.wikimedia.org\/wiki\/Special:UploadWizard\">upload wizard<\/a> and you can there upload the desired pictures. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The template also permits you to place pictures into categories (Wikipedia:\u753b\u50cf\u63d0\u4f9b\u4f9d\u983c\/\u30ab\u30c6\u30b4\u30ea\u4e00\u89a7). But I still need to figure this out.  <\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Schema<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">We talked about blocks recently. Wikipedia allows you to create blocks too. If you write this on Wikipedia, then you&#8217;ll get a block.   <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{| class=\"infobox\"\n|This is an infobox\n|}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"> Below is a more complicated block. The diagram shows how  an infobox is combined with the function {{laisa setshwantsho}} and the associated parameters.<br><\/p>\n\n\n\n<style data-wp-block-html=\"css\">\n:root {\n      --bg: #f8f9fa;\n      --card: #fff;\n      --border: #a2a9b1;\n      --text: #202122;\n      --muted: #54595d;\n      --blue: #36c;\n      --green: #14866d;\n      --code-bg: #f8f9fa;\n      --shadow: 0 2px 8px rgba(0, 0, 0, .08);\n    }\n\n    * {\n      box-sizing: border-box;\n    }\n\n    body {\n      margin: 0;\n      font-family:\n        -apple-system, BlinkMacSystemFont,\n        \"Segoe UI\", \"Noto Sans\",\n        Arial, sans-serif;\n      color: var(--text);\n      background: var(--bg);\n      line-height: 1.6;\n    }\n\n    .page {\n      max-width: 1100px;\n      margin: 0 auto;\n      padding: 40px 24px 64px;\n    }\n\n    .header {\n      margin-bottom: 28px;\n    }\n\n    .header h1 {\n      margin: 0 0 8px;\n      font-size: 2rem;\n      font-weight: 600;\n    }\n\n    .header p {\n      margin: 0;\n      color: var(--muted);\n    }\n\n    .badge {\n      display: inline-block;\n      margin-top: 14px;\n      padding: 4px 10px;\n      border: 1px solid #c8ccd1;\n      border-radius: 4px;\n      background: #eaecf0;\n      font-family: monospace;\n      font-size: .9rem;\n    }\n\n    .grid {\n      display: grid;\n      grid-template-columns: 1fr 1.4fr;\n      gap: 24px;\n      align-items: start;\n    }\n\n    .card {\n      background: var(--card);\n      border: 1px solid var(--border);\n      border-radius: 6px;\n      box-shadow: var(--shadow);\n      overflow: hidden;\n    }\n\n    .card-header {\n      padding: 14px 18px;\n      border-bottom: 1px solid #eaecf0;\n      background: #f8f9fa;\n      font-weight: 600;\n    }\n\n    .card-body {\n      padding: 20px;\n    }\n\n    \/* Template preview *\/\n\n    .template-preview {\n      display: flex;\n      align-items: center;\n      gap: 18px;\n      min-height: 150px;\n    }\n\n    .placeholder {\n      width: 110px;\n      height: 110px;\n      flex: 0 0 110px;\n      border: 2px dashed #72777d;\n      border-radius: 4px;\n      display: grid;\n      place-items: center;\n      background: #f8f9fa;\n      color: #72777d;\n      text-align: center;\n      font-size: 12px;\n    }\n\n    .placeholder-icon {\n      font-size: 34px;\n      display: block;\n      margin-bottom: 4px;\n    }\n\n    .preview-text h2 {\n      margin: 0 0 5px;\n      font-size: 1.15rem;\n    }\n\n    .preview-text p {\n      margin: 0;\n      color: var(--muted);\n      font-size: .92rem;\n    }\n\n    \/* Code *\/\n\n    pre {\n      margin: 0;\n      padding: 18px;\n      overflow-x: auto;\n      background: #1f2328;\n      color: #e6edf3;\n      border-radius: 5px;\n      font-family: \"SFMono-Regular\", Consolas, monospace;\n      font-size: 13px;\n      line-height: 1.7;\n    }\n\n    .token {\n      color: #79c0ff;\n    }\n\n    .value {\n      color: #a5d6ff;\n    }\n\n    \/* Parameter table *\/\n\n    .parameters {\n      margin-top: 24px;\n    }\n\n    table {\n      width: 100%;\n      border-collapse: collapse;\n    }\n\n    th,\n    td {\n      padding: 13px 14px;\n      border-bottom: 1px solid #eaecf0;\n      text-align: left;\n      vertical-align: top;\n    }\n\n    th {\n      background: #f8f9fa;\n      font-weight: 600;\n      font-size: .9rem;\n    }\n\n    td {\n      font-size: .92rem;\n    }\n\n    tr:last-child td {\n      border-bottom: 0;\n    }\n\n    code {\n      padding: 2px 5px;\n      border: 1px solid #eaecf0;\n      border-radius: 3px;\n      background: var(--code-bg);\n      font-family: monospace;\n    }\n\n    .type {\n      color: var(--blue);\n      font-family: monospace;\n    }\n\n    .recommended {\n      color: var(--green);\n      font-size: .8rem;\n      font-weight: 600;\n    }\n\n    .optional {\n      color: var(--muted);\n      font-size: .8rem;\n    }\n\n    \/* Flow diagram *\/\n\n    .diagram {\n      margin-top: 24px;\n    }\n\n    .flow {\n      display: flex;\n      align-items: stretch;\n      justify-content: center;\n      gap: 12px;\n      flex-wrap: wrap;\n    }\n\n    .node {\n      min-width: 145px;\n      padding: 15px;\n      border: 1px solid #a2a9b1;\n      border-radius: 6px;\n      background: #fff;\n      text-align: center;\n    }\n\n    .node.main {\n      border-color: var(--blue);\n      background: #eef3ff;\n    }\n\n    .node strong {\n      display: block;\n      margin-bottom: 5px;\n    }\n\n    .node small {\n      color: var(--muted);\n    }\n\n    .arrow {\n      display: flex;\n      align-items: center;\n      color: #72777d;\n      font-size: 20px;\n    }\n\n    .footer {\n      margin-top: 28px;\n      padding-top: 18px;\n      border-top: 1px solid #c8ccd1;\n      color: var(--muted);\n      font-size: .85rem;\n    }\n\n    @media (max-width: 760px) {\n      .grid {\n        grid-template-columns: 1fr;\n      }\n\n      .template-preview {\n        align-items: flex-start;\n      }\n\n      th:nth-child(3),\n      td:nth-child(3) {\n        display: none;\n      }\n\n      .arrow {\n        transform: rotate(90deg);\n      }\n    }\n<\/style>\n\n <main class=\"page\">\n    <header class=\"header\">\n      <h1>laisa setshwantsho<\/h1>\n      <p>\n        A Wikimedia Template.\n      <\/p>\n      <span class=\"badge\">{{laisa setshwantsho}}<\/span>\n    <\/header>\n\n    <section class=\"grid\">\n\n      <!-- Visual preview -->\n      <article class=\"card\">\n        <div class=\"card-header\">Template Preview<\/div>\n\n        <div class=\"card-body\">\n          <div class=\"template-preview\">\n\n            <div class=\"placeholder\">\n              <div>\n                <span class=\"placeholder-icon\">\u25a7<\/span>\n                laisa setshwantsho\n              <\/div>\n            <\/div>\n\n            <div class=\"preview-text\">\n              <h2>laisa setshwantsho<\/h2>\n              <p>\n                Please provide an image related to these parameters.\n              <\/p>\n            <\/div>\n\n          <\/div>\n        <\/div>\n      <\/article>\n\n      <!-- Usage -->\n      <article class=\"card\">\n        <div class=\"card-header\">Usage Example<\/div>\n\n        <div class=\"card-body\">\n<pre><span class=\"token\">{{Infobox<\/span>\n|name    = Derek J Moore\n|title   = Laisa setshwantsho\n|data1   = <pre><span class=\"token\">{{laisa setshwantsho<\/span>\n |type=<span class=\"value\">2<\/span>\n |size=<span class=\"value\">100px<\/span>\n |cat=<span class=\"value\">People<\/span>\n |cat2=<span class=\"value\">Cities<\/span>\n}}<\/pre>\n|label2  = Instructions\n|data2   = {{{item_four|weblearning.co.za}}}\n}}<\/div><\/article><\/section>\n\n    <!-- Parameter table -->\n    <section class=\"card parameters\">\n      <div class=\"card-header\">TemplateData Parameters<\/div>\n\n      <div class=\"card-body\" style=\"padding:0\">\n\n        <table>\n          <thead>\n            <tr>\n              <th>Parameter<\/th>\n              <th>Type<\/th>\n              <th>Default<\/th>\n              <th>Description<\/th>\n            <\/tr>\n          <\/thead>\n\n          <tbody>\n            <tr>\n              <td>\n                <code>type<\/code><br>\n                <span class=\"recommended\">Recommended<\/span>\n              <\/td>\n              <td><span class=\"type\">number<\/span><\/td>\n              <td>1<\/td>\n              <td>\n                Placeholder image type.\n                <br>1 = General\n                <br>2 = People\n                <br>3 = Buildings\n              <\/td>\n            <\/tr>\n\n            <tr>\n              <td>\n                <code>size<\/code><br>\n                <span class=\"optional\">Optional<\/span>\n              <\/td>\n              <td><span class=\"type\">string<\/span><\/td>\n              <td>\u2014<\/td>\n              <td>\n                Image width.\n                Example: <code>100px<\/code>\n              <\/td>\n            <\/tr>\n\n            <tr>\n              <td><code>cat<\/code><\/td>\n              <td><span class=\"type\">string<\/span><\/td>\n              <td>\u2014<\/td>\n              <td>Image request category.<\/td>\n            <\/tr>\n\n            <tr>\n              <td><code>cat2<\/code><\/td>\n              <td><span class=\"type\">string<\/span><\/td>\n              <td>\u2014<\/td>\n              <td>Second category.<\/td>\n            <\/tr>\n\n            <tr>\n              <td><code>cat3<\/code><\/td>\n              <td><span class=\"type\">string<\/span><\/td>\n              <td>\u2014<\/td>\n              <td>Third category.<\/td>\n            <\/tr>\n\n            <tr>\n              <td><code>cat4<\/code><\/td>\n              <td><span class=\"type\">string<\/span><\/td>\n              <td>\u2014<\/td>\n              <td>Fourth category.<\/td>\n            <\/tr>\n\n            <tr>\n              <td><code>cat5<\/code><\/td>\n              <td><span class=\"type\">string<\/span><\/td>\n              <td>\u2014<\/td>\n              <td>Fifth category.<\/td>\n            <\/tr>\n          <\/tbody>\n        <\/table>\n\n      <\/div>\n    <\/section>\n\n    <!-- Diagram -->\n    <section class=\"card diagram\">\n      <div class=\"card-header\">Template Structure<\/div>\n\n      <div class=\"card-body\">\n        <div class=\"flow\">\n\n          <div class=\"node main\">\n            <strong>{{laisa setshwantsho}}<\/strong>\n            <small>Template<\/small>\n          <\/div>\n\n          <div class=\"arrow\">\u2192<\/div>\n\n          <div class=\"node\">\n            <strong>type<\/strong>\n            <small>Image type<\/small>\n          <\/div>\n\n          <div class=\"arrow\">\u2192<\/div>\n\n          <div class=\"node\">\n            <strong>size<\/strong>\n            <small>Image size<\/small>\n          <\/div>\n\n          <div class=\"arrow\">\u2192<\/div>\n\n          <div class=\"node\">\n            <strong>cat \u2013 cat5<\/strong>\n            <small>Request categories<\/small>\n          <\/div>\n\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <footer class=\"footer\">\n      Prompted with Chat GPT\n    <\/footer>\n\n  <\/main>\n\n\n\n<h4 class=\"wp-block-heading\">Notable code<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The function consists of two words that describe the action you want to perform. Here are these words in the various languages. Please feel free to correct me (and Aunty Google) if we have made mistakes. <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>nr<\/strong> <a href=\"https:\/\/nr.wikipedia.org\/wiki\/Umhlahlandlelasakhiwo:Layisha_isithombe\">Umhlahlandlelasakhiwo:Layisha isithombe<\/a><\/li>\n\n\n\n<li><strong>nso<\/strong> <a href=\"https:\/\/nso.wikipedia.org\/wiki\/Template:Kenya_setshwantsho\">Template:Kenya setshwantsho<\/a><\/li>\n\n\n\n<li><strong>ss<\/strong> <a href=\"https:\/\/ss.wikipedia.org\/wiki\/iThempleti:Layisha_sitfombe\">iThempleti:Layisha sitfombe<\/a><\/li>\n\n\n\n<li><strong>st<\/strong> <a href=\"https:\/\/st.wikipedia.org\/wiki\/Template:Kenya_set%C5%A1oant%C5%A1o\">Template:Kenya set\u0161oant\u0161o<\/a><\/li>\n\n\n\n<li><strong>tn<\/strong><a href=\"https:\/\/tn.wikipedia.org\/wiki\/Tempolete:Laisa_setshwantsho\"> Tempolete:Laisa setshwantsho<\/a><\/li>\n\n\n\n<li><strong>ts<\/strong> <a href=\"https:\/\/ts.wikipedia.org\/wiki\/Template:Upload_xifaniso\">Template:Upload xifaniso<\/a><\/li>\n\n\n\n<li><strong>ve<\/strong> <a href=\"https:\/\/ve.wikipedia.org\/wiki\/Template:Dzhenisa\">Template:Dzhenisa<\/a><\/li>\n\n\n\n<li><strong>xh<\/strong><a href=\"https:\/\/xh.wikipedia.org\/wiki\/iThemplethi:Layisha_umfanekiso\" data-type=\"page\" data-id=\"4733\"> iThemplethi:Layisha umfanekiso<\/a><\/li>\n\n\n\n<li><strong>zu<\/strong> <a href=\"https:\/\/zu.wikipedia.org\/wiki\/Template:Layisha_isithombe\">Template:Layisha isithombe<\/a><\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">For illustration purposes, I'm just going to focus on one language  - Setswana. The same principles apply in all languages<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Detailed Specifications<\/h4>\n\n\n\n<h5 class=\"wp-block-heading\">Step 1: Create the shell<\/h5>\n\n\n\n<p class=\"wp-block-paragraph\">\"Upload images\" (according to Google translate) in Setswana is  \"laisa setshwantsho\". Go to the vernacular Wikipedia (e.g. tn.wikipedia.org) and enter the URL <a href=\"https:\/\/tn.wikipedia.org\/wiki\/Tempolete:\">https:\/\/tn.wikipedia.org\/wiki\/Tempolete:<\/a>  followed by \"laisa setshwantsho\"<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"662\" height=\"593\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-2.png\" alt=\"\" class=\"wp-image-6868\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-2.png 662w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-2-300x269.png 300w\" sizes=\"auto, (max-width: 662px) 100vw, 662px\" \/><figcaption class=\"wp-element-caption\">Screenshot of the <strong>template:laisa setshwantsho<\/strong> being created<\/figcaption><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Some people (like me) cannot understand this message that I highlighted in blue, but  aunty Google knows the answer: <em>\"No text on this page. You can search for the title of this page on other pages\"<\/em>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Go ahead and press <strong>Dira motswedi<\/strong> (Create source).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You might see another message. \"O setse morago kgolagano ya tsebe e, ise e nne teng gompieno. Go dira tsebe ye, simolola ka go kwala mo lebokosong le le latelang (bona&nbsp;<a href=\"https:\/\/www.mediawiki.org\/wiki\/Special:MyLanguage\/Help:Contents\">tsebe ya thuso<\/a>&nbsp;go itse thata). Ga o lefa ka phoso tobetsa&nbsp;<strong>boelamorago<\/strong>\".  Aunty Google translates this and says <em>\"You are following the link to this page, it is not available today. To create this page, start by filling in the following box (see the help page to know more). If you pay by mistake click reverse\"<\/em>. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is a bit garbled and it probably means that the instance is not being maintained.   When I find confusing code,  I look for other examples to draw on. The function  is called <a href=\"https:\/\/www.wikidata.org\/wiki\/Q26127718\">https:\/\/www.wikidata.org\/wiki\/Q26127718<\/a> on wikidata. When I click on the Japanese version, I see the following <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"771\" height=\"670\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-3.png\" alt=\"\" class=\"wp-image-6869\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-3.png 771w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-3-300x261.png 300w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-3-768x667.png 768w\" sizes=\"auto, (max-width: 771px) 100vw, 771px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">This might look a bit unfamiliar to some, but you can see the code in the tab called \" <a href=\"https:\/\/ja.wikipedia.org\/w\/index.php?title=Template:%E7%94%BB%E5%83%8F%E5%8B%9F%E9%9B%86%E4%B8%AD&amp;action=edit\" class=\"\">\u30bd\u30fc\u30b9\u3092\u95b2\u89a7<\/a>\" Go ahead and view the code there. What I do is I copy and past this code into a text editor. Then I translated bits of it. <\/p>\n\n\n\n<pre class=\"wp-block-code has-background\" style=\"background-color:#f4f4f4\"><code>&#91;&#91;File:{{#switch: {{{1|{{{type|}}}}}} | 1 = Gthumb.svg | 2 = Replace this image JA.svg | 3 = Requestpicture.JPG | #default = Gthumb.svg }}|{{#if: {{{2|{{{size|}}}}}} | {{{2|{{{size}}}}}} | {{#switch: {{{1|{{{type|}}}}}} | 2 = 150px | 3 = 230px | #default = {{{size}}} }} }}|link=commons:Special:UploadWizard]]<br>{{Clickable button|c:Special:UploadWizard|Upload Image|class=mw-ui-progressive}}<br><br>{{#switch: {{NAMESPACE}} | {{ns:0}} | {{ns:1}} = {{#if:{{{cat|}}} | &#91;&#91;Category:{{{cat}}} Image Request]] }} | #default= }}{{#if: {{{cat1|}}} | &#91;&#91;Category:{{{cat1}}} Image Request]] }}{{#if: {{{cat2|}}} | &#91;&#91;Category:{{{cat2}}} Image Request]] }}{{#if: {{{cat3|}}} | &#91;&#91;Image Request for Category:{{{cat3}}}]] }}{{#if: {{{cat4|}}} | &#91;&#91;Image Request for Category:{{{cat4}}}]] }}{{#if: {{{cat5|}}} | &#91;&#91;Image Request for Category:{{{cat5}}}]] }} {{Documentation}}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Step 2 | Copy and paste code for templates  and modules<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">After pasting the code into the code frame, you can see a clickable picture in the view frame. This takes you to the Upload Wizard. <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"624\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-4-1024x624.png\" alt=\"\" class=\"wp-image-6870\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-4-1024x624.png 1024w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-4-300x183.png 300w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-4-768x468.png 768w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-4.png 1258w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We want to also have a clickable button below (see the red link). So we create a <strong>Module:Clickable button<\/strong> and enter this code<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>-- This module implements {{clickable button 2}}.\n\nlocal yesno = require('Module:Yesno')\nlocal delink = require('Module:Delink')._delink\n\nlocal p = {}\n\nfunction p.main(frame)\nlocal getArgs = require('Module:Arguments').getArgs\nlocal args = getArgs(frame)\nreturn p._main(args)\nend\n\nfunction p._main(args)\n-- If first arg or a url is not provided,\n-- but we have a second arg, make a button.\n-- Otherwise, return nothing.\nargs.originalInput = args&#91;1]\nargs&#91;1] = delink({args&#91;1]})\nif args&#91;1] == \"\" then\nargs&#91;1] = nil\nend\n\nif not args&#91;1] and not args.url then\n    if args&#91;2] then\n        p.nolink = true\n    else\n        return ''\n    end\nend\n\nlocal data = p.makeLinkData(args)\nlocal link = p.renderLink(args.originalInput, data)\nlocal trackingCategories = p.renderTrackingCategories(args)\nreturn link .. trackingCategories\n\nend\n\nfunction p.makeLinkData(args)\nlocal data = {}\n\n-- Get the link and display values,\n-- and find whether we are outputting\n-- a wikilink or a URL.\nif args.url then\n    data.isUrl = true\n    data.link = args.url\n    if args&#91;1] then\n        data.display = args&#91;1]\n    elseif args&#91;2] then\n        data.display = args&#91;2]\n    else\n        data.display = args.url\n        p.urlisdisplay = true\n    end\nelse\n    data.isUrl = false\n    p.urlisdisplay = false\n    data.link = args&#91;1]\n    if args&#91;2] then\n        data.display = args&#91;2]\n    else\n        data.display = args&#91;1]\n    end\n    if args&#91;1] and args&#91;1]:find('http') then\n        data.isUrl = true\n    end\nend\n\nif yesno(args.link) == false then\n    p.nolink = true\nend\n\n-- Colours\n-- For the merge with {{clickable button}}\nlocal colour = args.color and args.color:lower()\n\n-- Classes\nlocal class = args.class and args.class:lower()\ndata.classes = {}\nif class == 'ui-button-green'\n    or class == 'ui-button-blue'\n    or class == 'ui-button-red'\nthen\n    table.insert(\n        data.classes,\n        'submit ui-button ui-widget ui-state-default ui-corner-all'\n            .. ' ui-button-text-only ui-button-text'\n    )\nelse\n    table.insert(data.classes, 'mw-ui-button')\nend\n\n--If class is unset,\n--then let color determine class\nif not class then\n    if colour == 'blue' then\n        class = 'mw-ui-progressive'\n    elseif colour == 'red' then\n        class = 'mw-ui-destructive'\n    elseif colour == 'green' then\n        class = 'mw-ui-constructive'\n    end\nend\n\nif class then\n    table.insert(data.classes, class)\nend\n\n-- Styles\ndo\n    --&#91;&#91;\n    -- Check whether we are on the same page as we have specified in\n    -- args&#91;1], but not if we are using a URL link, as then args&#91;1] is only\n    -- a display value. If we are currently on the page specified in\n    -- args&#91;1] make the button colour darker so that it stands out from\n    -- other buttons on the page.\n    --]]\n    local success, linkTitle, currentTitle\n    if not data.isUrl then\n        currentTitle = mw.title.getCurrentTitle()\n        success, linkTitle = pcall(mw.title.new, args&#91;1])\n    elseif p.urlisdisplay then\n        currentTitle = mw.title.getCurrentTitle()\n    end\n    if success\n        and linkTitle\n        and mw.title.equals(currentTitle, linkTitle)\n        and not p.urlisdisplay\n    then\n        if class == 'ui-button-blue'\n            or class == 'mw-ui-progressive'\n            or class == 'mw-ui-constructive'\n        then\n            data.backgroundColor = '#2962CB'\n            data.color = '#fff'\n        elseif class == 'ui-button-green' then\n            data.backgroundColor = '#008B6D'\n        elseif class == 'ui-button-red' or class == 'mw-ui-destructive' then\n            data.backgroundColor = '#A6170F'\n        else\n            data.backgroundColor = '#CCC'\n            data.color = '#666'\n        end\n    elseif p.urlisdisplay then\n        data.dummyLink = tostring(currentTitle)\n    end\n    -- Add user-specified styles.\n    data.style = args.style\nend\nreturn data\n\nend\n\nfunction p.renderLink(originalInput, data)\n-- Render the display span tag.\nlocal display\ndo\nlocal displaySpan = mw.html.create('span')\nfor i, class in ipairs(data.classes or {}) do\ndisplaySpan:addClass(class)\nend\n\n displaySpan\n        :css{\n            &#91;'background-color'] = data.backgroundColor,\n            color = data.color\n        }\n    if data.style then\n        displaySpan:cssText(data.style)\n    end\n    displaySpan:wikitext(data.display)\n    display = tostring(displaySpan)\nend\n\n-- Render the link\nlocal link\nif originalInput and originalInput:find('|') then\n    link = string.format('&#91;&#91;%s|%s]]', delink({originalInput, wikilinks = 'target'}), display)\nelseif p.nolink then\n    if p.urlisdisplay then\n        link = string.format('&#91;&#91;%s|%s]]', data.dummyLink, display)\n    else\n        link = string.format('%s', display)\n    end\nelse\n    if data.isUrl then\n        link = string.format('&#91;%s %s]', data.link, display)\n    else\n        link = string.format('&#91;&#91;%s |%s]]', data.link, display)\n    end\nend\n\nreturn string.format('&lt;span class=\"plainlinks clickbutton\"&gt;%s&lt;\/span&gt;', link)\n\nend\n\nfunction p.renderTrackingCategories(args)\nif yesno(args.category) == false then\nreturn ''\nend\nlocal class = args.class and args.class:lower()\nif class == 'ui-button-green'\nor class == 'ui-button-blue'\nor class == 'ui-button-red'\nthen\nreturn '&#91;&#91;Category:Pages using old style ui-button-color]]'\nelse\nreturn ''\nend\nend\n\nreturn p<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\"><br><a href=\"https:\/\/tn.wikipedia.org\/w\/index.php?title=Tempolete:Laisa_setshwantsho&amp;action=watch\" id=\"\"><\/a>Step 3 | Where are we ?  <\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Done | We have written the template shell called Laisa setshwantsho<\/li>\n\n\n\n<li>Done | We have added the code to go into the template shell called Laisa setshwantsho which calls on many pre-installed modules. It works but...<\/li>\n\n\n\n<li>Oops | The red line suggests tha there is a missing module called Clickable button <\/li>\n\n\n\n<li>Done |We have added the code to go into the Clickable button module. <\/li>\n\n\n\n<li>Todo | We now need a template with instructions to also call (or invoke) the Clickable button module<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">If you go back to https:\/\/tn.wikipedia.org\/wiki\/Tempolete:Laisa_setshwantsho you will still see two big gaps. A red link and no documentation.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"766\" height=\"825\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-5.png\" alt=\"\" class=\"wp-image-6871\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-5.png 766w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-5-279x300.png 279w\" sizes=\"auto, (max-width: 766px) 100vw, 766px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">We need to create a Template called Clickable button. Click on the red links and then add this code. Check to see if everything works <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{{#invoke:Clickable button|main}}<br>{{documentation}}<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Step 4 | Register the template on Wikidata<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Now  go to Wikidata and register this template: <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"390\" height=\"372\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-7.png\" alt=\"\" class=\"wp-image-6873\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-7.png 390w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-7-300x286.png 300w\" sizes=\"auto, (max-width: 390px) 100vw, 390px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Step 5 | Lets use {{Laisa setshwantsho}}<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">A template by the name Laisa setshwantsho has been created. You call a template with curly braces {{}}.  <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"815\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-6.png\" alt=\"\" class=\"wp-image-6872\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-6.png 750w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/image-6-276x300.png 276w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\" \/><\/figure>\n\n\n\n<h4 class=\"wp-block-heading\">Step 6 | Application, testing and documentation <\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">You can include and upload images function by referring to {{Laisa setshwantsho}}. The  Template documentation (as you can see) is blank and it needs to be created, preferably in vernacular. I'll leave that for a person who writes in Setswana (aunty Google gets things wrong often) . <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I'm going to demonstrate how I included this function in my sandbox.  First I go to Derek J Moore in Setswana. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"937\" height=\"767\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-150757.png\" alt=\"\" class=\"wp-image-6878\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-150757.png 937w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-150757-300x246.png 300w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-150757-768x629.png 768w\" sizes=\"auto, (max-width: 937px) 100vw, 937px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">I turn on code view, look for the {{Infobox}} and insert the function {{Laisa setshwantsho}}. <\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1192\" height=\"806\" src=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402.png\" alt=\"\" class=\"wp-image-6879\" srcset=\"https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402.png 1192w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402-300x203.png 300w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402-1024x692.png 1024w, https:\/\/weblearning.co.za\/blog\/wp-content\/uploads\/2026\/09\/Screenshot-2026-09-11-151402-768x519.png 768w\" sizes=\"auto, (max-width: 1192px) 100vw, 1192px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">There, the upload image function now sits in my pretty sandbox.  Would appreciate it if you can improve the documentation. <\/p>\n\n\n\n<p class=\"wp-block-paragraph\">*Thanks to Mario for the spell checking<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">References<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Statesmen and their websites: Rhodes, <a href=\"https:\/\/rhodescottage.co.za\/\">https:\/\/rhodescottage.co.za\/<\/a>, Smuts, <a href=\"https:\/\/www.smutshouse.co.za\/\">https:\/\/www.smutshouse.co.za\/<\/a> , Xaba, <a href=\"https:\/\/www.trevorhuddleston.net\/\">https:\/\/www.trevorhuddleston.net\/<\/a> Mandela <a href=\"https:\/\/www.nelsonmandela.org\/news\/entry\/a-tale-of-two-houghton-houses\">https:\/\/www.nelsonmandela.org\/news\/entry\/a-tale-of-two-houghton-houses<\/a>, Mbeki <a href=\"https:\/\/mbeki.org\/\">https:\/\/mbeki.org\/<\/a> and  Motlante <a href=\"https:\/\/motlanthe.org\/\">https:\/\/motlanthe.org\/<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introduction I&#8217;ve often wondered where our statesmen choose to go once they have retired. Cecil John Rhodes, for example, died at 49 in a modest cottage at 246 Main road (Q20617285), on the way to Vishoek. Poor bloke. His Groote Schuur Mansion had burnt down about 10 years before. Today, Rhodes Cottage is a thatched &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/weblearning.co.za\/blog\/images-wanted\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Images wanted&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"episode_type":"","audio_file":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","filesize_raw":"","date_recorded":"","explicit":"","block":"","itunes_episode_number":"","itunes_title":"","itunes_season_number":"","itunes_episode_type":"","_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-6867","post","type-post","status-publish","format-standard","hentry","category-file","entry"],"jetpack_publicize_connections":[],"jetpack_sharing_enabled":true,"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/posts\/6867","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/comments?post=6867"}],"version-history":[{"count":6,"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/posts\/6867\/revisions"}],"predecessor-version":[{"id":6901,"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/posts\/6867\/revisions\/6901"}],"wp:attachment":[{"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/media?parent=6867"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/categories?post=6867"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/weblearning.co.za\/blog\/wp-json\/wp\/v2\/tags?post=6867"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}