{"id":48546,"date":"2026-05-09T11:54:10","date_gmt":"2026-05-09T08:54:10","guid":{"rendered":"https:\/\/garipesa.com\/?page_id=48546"},"modified":"2026-05-09T20:09:49","modified_gmt":"2026-05-09T17:09:49","slug":"ad-posting-form","status":"publish","type":"page","link":"https:\/\/garipesa.com\/en\/ad-posting-form\/","title":{"rendered":"Ad Posting Form"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"48546\" class=\"elementor elementor-48546\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-d1ad088 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"d1ad088\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-d2f13d0\" data-id=\"d2f13d0\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-3a9c050 elementor-widget elementor-widget-spacer\" data-id=\"3a9c050\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-9137dcc elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"9137dcc\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-30f1d3a\" data-id=\"30f1d3a\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-c5b0f86 loginmuuzaji elementor-widget__width-inherit elementor-widget elementor-widget-shortcode\" data-id=\"c5b0f86\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><style>\r\n        .gp-sellerotp-inline-v1__wrap{width:100%}\r\n        .gp-sellerotp-inline-v1__card{width:min(100%,420px);background:#fff;border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.10);padding:18px;border:1px solid rgba(0,0,0,.08)}\r\n        .gp-sellerotp-inline-v1__title{font-size:18px;font-weight:800;margin:0 0 8px 0;text-align:center}\r\n        .gp-sellerotp-inline-v1__sub{font-size:14px;opacity:.85;margin:0 0 14px 0;text-align:center}\r\n        .gp-sellerotp-inline-v1__row{display:flex;flex-direction:column;gap:10px;margin:12px 0}\r\n        .gp-sellerotp-inline-v1__input{width:100%;padding:12px 12px;border-radius:10px;border:1px solid rgba(0,0,0,.18);font-size:15px}\r\n        .gp-sellerotp-inline-v1__actions{display:flex;gap:10px;align-items:center;margin-top:12px}\r\n        .gp-sellerotp-inline-v1__btn{flex:1;display:inline-flex;align-items:center;justify-content:center;padding:12px 14px;border-radius:10px;border:0;background:#111;color:#fff;font-weight:800;cursor:pointer}\r\n        .gp-sellerotp-inline-v1__btn[disabled]{opacity:.6;cursor:not-allowed}\r\n        .gp-sellerotp-inline-v1__btn-whatsapp{flex:1;display:inline-flex;align-items:center;justify-content:center;padding:12px 14px;border-radius:10px;border:0;background:#25D366;color:#fff;font-weight:800;cursor:pointer}\r\n        .gp-sellerotp-inline-v1__btn-whatsapp[disabled]{opacity:.6;cursor:not-allowed}\r\n        .gp-sellerotp-inline-v1__link{background:transparent;border:0;color:#111;text-decoration:underline;cursor:pointer;font-weight:700}\r\n        .gp-sellerotp-inline-v1__msg{margin-top:10px;font-size:14px;line-height:1.4;min-height:20px}\r\n        .gp-sellerotp-inline-v1__msg.is-error{color:#b00020}\r\n        .gp-sellerotp-inline-v1__msg.is-ok{color:#0b7a2a}\r\n        <\/style><script>(function(){\r\n\"use strict\";\r\nif(window.__gpSellerOtpInlineInit_v1) return;\r\nwindow.__gpSellerOtpInlineInit_v1 = true;\r\n\r\nvar cfg = {\"ns\":\"gp-sellerotp-inline-v1\",\"ajaxUrl\":\"https:\\\/\\\/garipesa.com\\\/wp-admin\\\/admin-ajax.php\",\"actionSend\":\"gp_sellerotp_send_v1\",\"actionVerify\":\"gp_sellerotp_verify_v1\",\"otpLen\":6,\"cooldownSec\":20,\"whatsappEnabled\":1,\"nonce\":\"25568dfffb\",\"nonceName\":\"nonce\",\"fallbackRedirect\":\"https:\\\/\\\/garipesa.com\\\/uza\\\/\"};\r\n\r\nfunction encodeBody(obj){\r\n  var parts = [];\r\n  for (var k in obj){\r\n    if(!Object.prototype.hasOwnProperty.call(obj,k)) continue;\r\n    parts.push(encodeURIComponent(k) + \"=\" + encodeURIComponent(String(obj[k])));\r\n  }\r\n  return parts.join(\"&\");\r\n}\r\n\r\nfunction postAjax(action, payload){\r\n  payload = payload || {};\r\n  payload.action = action;\r\n  payload[cfg.nonceName] = cfg.nonce;\r\n\r\n  return fetch(cfg.ajaxUrl, {\r\n    method: \"POST\",\r\n    credentials: \"same-origin\",\r\n    headers: { \"Content-Type\": \"application\/x-www-form-urlencoded; charset=UTF-8\" },\r\n    body: encodeBody(payload)\r\n  }).then(function(r){\r\n    return r.json().catch(function(){ return {}; }).then(function(j){ j._status = r.status; return j; });\r\n  }).catch(function(){\r\n    return { ok:false, error:\"network\", _status:0 };\r\n  });\r\n}\r\n\r\nfunction normalizePhoneInput(v){\r\n  return (v || \"\").replace(\/[^0-9+]\/g, \"\");\r\n}\r\n\r\nfunction initRoot(root){\r\n  if(!root || root.__gpInited) return;\r\n  root.__gpInited = true;\r\n\r\n  var state = { phone:\"\", sentToE164:\"\", cooldownUntil:0, channel:\"\" };\r\n\r\n  function el(sel){ return root.querySelector(sel); }\r\n  function setMsg(text, kind){\r\n    var m = el(\"[data-msg]\");\r\n    if(!m) return;\r\n    m.className = cfg.ns + \"__msg\" + (kind ? (\" is-\" + kind) : \"\");\r\n    m.textContent = text || \"\";\r\n  }\r\n\r\n  function showStep(step){\r\n    var a = el('[data-step=\"collect\"]');\r\n    var b = el('[data-step=\"verify\"]');\r\n    if(a) a.style.display = (step===\"collect\") ? \"\" : \"none\";\r\n    if(b) b.style.display = (step===\"verify\") ? \"\" : \"none\";\r\n    setMsg(\"\");\r\n  }\r\n\r\n  function startCooldown(sec){\r\n    state.cooldownUntil = Date.now() + (sec*1000);\r\n    renderCooldown();\r\n  }\r\n\r\n  function renderCooldown(){\r\n    var sendBtn = el(\"[data-send]\");\r\n    var resend = el(\"[data-resend]\");\r\n    var waBtn = el(\"[data-whatsapp]\");\r\n    if(!sendBtn || !resend) return;\r\n\r\n    var remain = Math.max(0, Math.ceil((state.cooldownUntil - Date.now())\/1000));\r\n    if(remain > 0){\r\n      sendBtn.disabled = true;\r\n      resend.disabled = true;\r\n      resend.textContent = \"Subiri (\" + remain + \"s)\";\r\n      if(waBtn) waBtn.style.display = \"none\";\r\n      setTimeout(renderCooldown, 500);\r\n    }else{\r\n      sendBtn.disabled = false;\r\n      resend.disabled = false;\r\n      resend.textContent = \"Tuma tena OTP\";\r\n      if(waBtn){\r\n        if(cfg.whatsappEnabled && state.channel === \"sms\"){\r\n          waBtn.style.display = \"\";\r\n          waBtn.disabled = false;\r\n        }else{\r\n          waBtn.style.display = \"none\";\r\n        }\r\n      }\r\n    }\r\n  }\r\n\r\n  function setChannelLabel(){\r\n    var lbl = el(\"[data-channel-label]\");\r\n    if(!lbl) return;\r\n    lbl.textContent = (state.channel === \"whatsapp\") ? \"WhatsApp\" : \"SMS\";\r\n  }\r\n\r\n  function setSentTo(){\r\n    var s = el(\"[data-sentto]\");\r\n    if(!s) return;\r\n    var full = String(state.sentToE164 || \"\");\r\n    s.textContent = full ? (\" \" + full) : \"\";\r\n  }\r\n\r\n  function sendOtp(opts){\r\n    opts = opts || {};\r\n    var viaWhatsapp = !!opts.forceWhatsapp || state.channel === \"whatsapp\";\r\n\r\n    var phoneEl = el(\"[data-phone]\");\r\n    var phone = phoneEl ? (phoneEl.value||\"\") : \"\";\r\n    phone = normalizePhoneInput(phone);\r\n\r\n    if(phone.length < 9){\r\n      setMsg(\"Weka namba sahihi, namba ya Tanzania (06\/07).\", \"error\");\r\n      return;\r\n    }\r\n\r\n    var sendBtn = el(\"[data-send]\");\r\n    if(sendBtn) sendBtn.disabled = true;\r\n    var waBtnBusy = el(\"[data-whatsapp]\");\r\n    if(waBtnBusy) waBtnBusy.disabled = true;\r\n\r\n    var payload = { phone: phone };\r\n    if(viaWhatsapp) payload.force_whatsapp = 1;\r\n\r\n    postAjax(cfg.actionSend, payload).then(function(res){\r\n      if(res && res.ok){\r\n        state.phone = phone;\r\n        state.sentToE164 = (res && res.phone) ? String(res.phone) : \"\";\r\n        state.channel = (res && res.channel === \"whatsapp\") ? \"whatsapp\" : \"sms\";\r\n        showStep(\"verify\");\r\n        setSentTo();\r\n        setChannelLabel();\r\n        setMsg(state.channel === \"whatsapp\" ? \"OTP imetumwa kupitia WhatsApp. Ingiza namba ya OTP.\" : \"OTP imetumwa. Ingiza namba ya OTP.\", \"ok\");\r\n        startCooldown(cfg.cooldownSec);\r\n\r\n        var otpEl = el(\"[data-otp]\");\r\n        if(otpEl){ try{ otpEl.focus({preventScroll:true}); }catch(e){} }\r\n        return;\r\n      }\r\n      var msg = (res && res.message) ? res.message : \"Imeshindikana kutuma OTP. Jaribu tena.\";\r\n      setMsg(msg, \"error\");\r\n      if(sendBtn) sendBtn.disabled = false;\r\n      var waBtnRetry = el(\"[data-whatsapp]\");\r\n      if(waBtnRetry && state.channel === \"sms\") waBtnRetry.disabled = false;\r\n    });\r\n  }\r\n\r\n  function verifyOtp(){\r\n    var otpEl = el(\"[data-otp]\");\r\n    var otp = otpEl ? (otpEl.value||\"\") : \"\";\r\n    otp = String(otp).replace(\/\\D+\/g,\"\");\r\n\r\n    if(otp.length !== cfg.otpLen){\r\n      setMsg(\"Weka OTP ya tarakimu \" + cfg.otpLen + \".\", \"error\");\r\n      return;\r\n    }\r\n\r\n    var vbtn = el(\"[data-verify]\");\r\n    if(vbtn) vbtn.disabled = true;\r\n\r\n    postAjax(cfg.actionVerify, { phone: state.phone, otp: otp }).then(function(res){\r\n      if(res && res.ok && res.logged_in){\r\n        setMsg(\"Umefanikiwa kuingia kama muuzaji. Inakupeleka...\", \"ok\");\r\n        var redirect = (res && res.redirect) ? String(res.redirect) : \"\";\r\n        setTimeout(function(){\r\n          window.location.href = redirect || cfg.fallbackRedirect;\r\n        }, 350);\r\n        return;\r\n      }\r\n      var msg = (res && res.message) ? res.message : \"OTP si sahihi. Jaribu tena.\";\r\n      setMsg(msg, \"error\");\r\n      if(vbtn) vbtn.disabled = false;\r\n    });\r\n  }\r\n\r\n  function backToPhone(){\r\n    state.channel = \"\";\r\n    showStep(\"collect\");\r\n    var phoneEl = el(\"[data-phone]\");\r\n    if(phoneEl){\r\n      phoneEl.value = state.phone || phoneEl.value || \"\";\r\n      try{ phoneEl.focus({preventScroll:true}); }catch(e){}\r\n    }\r\n  }\r\n\r\n  root.addEventListener(\"click\", function(e){\r\n    var t = e.target;\r\n    if(!t) return;\r\n\r\n    if(t.closest && t.closest(\"[data-send]\")){ e.preventDefault(); sendOtp(); return; }\r\n    if(t.closest && t.closest(\"[data-verify]\")){ e.preventDefault(); verifyOtp(); return; }\r\n    if(t.closest && t.closest(\"[data-resend]\")){\r\n      e.preventDefault();\r\n      var sendBtn = el(\"[data-send]\");\r\n      if(sendBtn && sendBtn.disabled) return;\r\n      sendOtp();\r\n      return;\r\n    }\r\n    if(t.closest && t.closest(\"[data-whatsapp]\")){\r\n      e.preventDefault();\r\n      var waBtn = t.closest(\"[data-whatsapp]\");\r\n      if(waBtn.disabled) return;\r\n      sendOtp({ forceWhatsapp:true });\r\n      return;\r\n    }\r\n    if(t.closest && t.closest(\"[data-back]\")){ e.preventDefault(); backToPhone(); return; }\r\n  });\r\n\r\n  root.addEventListener(\"keydown\", function(e){\r\n    if(e.key !== \"Enter\") return;\r\n    var collect = el('[data-step=\"collect\"]');\r\n    var verify  = el('[data-step=\"verify\"]');\r\n    if(collect && collect.style.display !== \"none\"){ sendOtp(); }\r\n    else if(verify && verify.style.display !== \"none\"){ verifyOtp(); }\r\n  });\r\n\r\n  showStep(\"collect\");\r\n}\r\n\r\nfunction scan(){\r\n  document.querySelectorAll(\"[data-gp-sellerotp-root]\").forEach(initRoot);\r\n}\r\nif(document.readyState === \"loading\"){\r\n  document.addEventListener(\"DOMContentLoaded\", scan);\r\n}else{\r\n  scan();\r\n}\r\n})();<\/script>        <div class=\"gp-sellerotp-inline-v1__wrap\" data-gp-sellerotp-root=\"gp-sellerotp-inline-v1-084bcef0-b28b-41fd-8e4e-42c4c1299d81\">\r\n            <div class=\"gp-sellerotp-inline-v1__card\">\r\n                <div class=\"gp-sellerotp-inline-v1__title\">Login Kwanza<\/div>\r\n\r\n                <div class=\"gp-sellerotp-inline-v1__step\" data-step=\"collect\">\r\n                    <div class=\"gp-sellerotp-inline-v1__sub\">Andika namba yako ya simu, tutakutumia OTP.<\/div>\r\n                    <div class=\"gp-sellerotp-inline-v1__row\">\r\n                        <input class=\"gp-sellerotp-inline-v1__input\" type=\"tel\" inputmode=\"tel\" autocomplete=\"tel\" placeholder=\"Namba ya simu: 0763XXXXXX\" data-phone \/>\r\n                    <\/div>\r\n                    <div class=\"gp-sellerotp-inline-v1__actions\">\r\n                        <button class=\"gp-sellerotp-inline-v1__btn\" type=\"button\" data-send> Tuma OTP<\/button>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"gp-sellerotp-inline-v1__step\" data-step=\"verify\" style=\"display:none\">\r\n                    <div class=\"gp-sellerotp-inline-v1__sub\">Ingiza OTP uliyotumiwa kwa <span data-channel-label>SMS<\/span> kwenda<span data-sentto><\/span>.<\/div>\r\n                    <div class=\"gp-sellerotp-inline-v1__row\">\r\n                        <input class=\"gp-sellerotp-inline-v1__input\" type=\"text\" inputmode=\"numeric\" autocomplete=\"one-time-code\" placeholder=\"Weka OTP\" data-otp \/>\r\n                    <\/div>\r\n                    <div class=\"gp-sellerotp-inline-v1__actions\">\r\n                        <button class=\"gp-sellerotp-inline-v1__btn\" type=\"button\" data-verify>Thibitisha<\/button>\r\n                    <\/div>\r\n                    <div class=\"gp-sellerotp-inline-v1__actions\" style=\"margin-top:8px\">\r\n                        <button class=\"gp-sellerotp-inline-v1__link\" type=\"button\" data-resend>Tuma tena OTP<\/button>\r\n                        <button class=\"gp-sellerotp-inline-v1__link\" type=\"button\" data-back>Badili namba<\/button>\r\n                    <\/div>\r\n                    <div class=\"gp-sellerotp-inline-v1__actions\" style=\"margin-top:4px\">\r\n                        <button class=\"gp-sellerotp-inline-v1__btn-whatsapp\" type=\"button\" data-whatsapp style=\"display:none\">Tuma OTP kupitia WhatsApp<\/button>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <div class=\"gp-sellerotp-inline-v1__msg\" data-msg><\/div>\r\n            <\/div>\r\n        <\/div>\r\n        <\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-aacbc76 elementor-widget elementor-widget-spacer\" data-id=\"aacbc76\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"spacer.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<div class=\"elementor-spacer\">\n\t\t\t<div class=\"elementor-spacer-inner\"><\/div>\n\t\t<\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Anza Upya<\/p>","protected":false},"author":4168,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-48546","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/garipesa.com\/en\/wp-json\/wp\/v2\/pages\/48546","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/garipesa.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/garipesa.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/garipesa.com\/en\/wp-json\/wp\/v2\/users\/4168"}],"replies":[{"embeddable":true,"href":"https:\/\/garipesa.com\/en\/wp-json\/wp\/v2\/comments?post=48546"}],"version-history":[{"count":17,"href":"https:\/\/garipesa.com\/en\/wp-json\/wp\/v2\/pages\/48546\/revisions"}],"predecessor-version":[{"id":48690,"href":"https:\/\/garipesa.com\/en\/wp-json\/wp\/v2\/pages\/48546\/revisions\/48690"}],"wp:attachment":[{"href":"https:\/\/garipesa.com\/en\/wp-json\/wp\/v2\/media?parent=48546"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}