Close Menu
    Facebook X (Twitter) Instagram
    • Home
    • Contact Us
    • About Us
    • Privacy Policy
    • Terms Of Service
    • Advertisement
    Saturday, July 4
    Facebook X (Twitter) Instagram Pinterest Vimeo
    ABS Africa TV
    • Breaking News
    • Trending
    • Africa News
    • World News
    • Features
    • Technology
    • Sports
    • Politics
    • More
      • Culture
      • Lifestyle
      • Travel
      • Business
      • Environment
      • Legal
      • Health
      • Cameroon
      • Ambazonia
      • AfroSingles
      • Environ/Climate
      • Editorial
      • The Leak Magazine
    • Donate
    Subscription
    ABS Africa TV
    Home»Travel»President Ruto returns from Kazakhstan, begins five-day coast development tour
    Travel

    President Ruto returns from Kazakhstan, begins five-day coast development tour

    Martin AkumaBy Martin AkumaJuly 4, 2026No Comments9 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    President Ruto returns from Kazakhstan, begins five-day coast development tour
    Share
    Facebook Twitter LinkedIn Pinterest Email
    Post Views: 17

    President Ruto returns from Kazakhstan, begins five-day coast development tour

    President Ruto returns from Kazakhstan, begins five-day coast development tour

    President William Ruto with Kazakhstan President Kassym-Jomart Tokayev in Astana during his State Visit on May 20, 2026. (Photo: PCS)

    Read this story aloud

    Listen to the clean text version of this article

    Ready
    3 min listen
    Audio reading is not supported on this browser.

    State House said the tour will focus on the inspection, commissioning and launch of infrastructure, electricity and housing projects across the six coastal counties

    President William Ruto has embarked on a five-day development tour of the coast region immediately after returning from a two-day State visit to Kazakhstan.
    President Ruto began the tour in Mombasa, where land ownership is expected to dominate part of his agenda through the launch of an accelerated title deeds issuance programme targeting residents across the Coast region.
    State House said the tour will focus on the inspection, commissioning and launch of infrastructure, electricity and housing projects across the six coastal counties.

    More To Read

    • Civil society groups warn Kenya’s Sh13 trillion debt hurting essential services
    • Court grants DCI three more days to hold woman over alleged posts tracking President Ruto’s flights
    • Construction of Naivasha–Kisumu–Malaba SGR begins in Narok
    • How the new Ngong Road flyover is fueling growth at Dagoretti Corner
    • Ruto told to fix Cabinet gender imbalance after court ruling, not reshuffle
    • Kenya secures Sh162 billion World Bank funding for governance, social protection reforms

    While in Mombasa, Ruto is also expected to inspect the Nyali Affordable Housing project before proceeding to Kilifi, where he will commission the Mariakani Power Sub-Station in Kaloleni Constituency and launch several last-mile electricity connectivity projects in Malindi, Ganze, Mariakani and Mjanaheri.
    In Kilifi, the President is also scheduled to break ground for the Tezo–Kakanjuni road project in Kilifi North and the upgrading of the Mjanaheri–Ngomeni road in Magarini.
    He will further preside over the laying of foundation stones for markets in Kaloleni and Ganze, as well as the proposed Kilifi Stadium.

    Latest Stories

    • Eight arrested in Marsabit over Sh1.2 million SIM swap fraud
    • What the World Cup hydration breaks reveal about who governs men’s football
    • Hope for patients as implant shows lasting benefits for treatment-resistant depression
    • Sudanese army intensify offensive to retake strategic city of Kurmuk on Ethiopia border

    The President is further expected to hand over fishing boats to groups in Malindi in efforts aimed at boosting the blue economy sector along the Coast.
    Ruto will then head to Garsen in Tana River County, where he is expected to launch the construction of the Garsen Teachers Training College and preside over the groundbreaking of the Minjila Affordable Housing project.
    The President’s itinerary will later take him to Lamu, where he is set to commission the completed Kizingitini Fish Market in Lamu East and inspect the Hindi Modern Market in Lamu West.
    He is also expected to launch electricity connectivity projects and break ground for the A7 Junction Safirisi–Ndeu road.
    Ruto will also tour Kwale, where he is scheduled to launch last-mile electricity projects in Kinango, Lunga Lunga and Diani in Msambweni Constituency.
    The President will also commission the Diani Modern Market and preside over the groundbreaking of student hostels at Lunga Lunga Technical and Vocational College.

    Other Topics To Read

    Top Stories Today

    • Government reaffirms commitment to inclusive development across all regions
    • Sudanese army intensify offensive to retake strategic city of Kurmuk on Ethiopia border
    • Weight-loss drug Wegovy approved in UK for MASH-related liver fibrosis
    • Hope for patients as implant shows lasting benefits for treatment-resistant depression
    • What the World Cup hydration breaks reveal about who governs men’s football
    • Families of Ethiopians on Saudi death row gripped by fear as executions loom

    `;
    }

    return “;
    }

    function commentActionsMarkup(comment, canComment) {
    const likeLabel = comment.liked_by_me ? ‘Liked’ : ‘Like’;
    const likeCount = Number(comment.like_count || 0) > 0
    ? “
    : ”;

    const likeButton = canComment && comment.status === ‘approved’
    ? “
    : “;

    const replyButton = canComment && comment.status === ‘approved’
    ? “
    : ”;

    return `

    `;
    }

    function commentMarkup(comment, canComment, isReply = false) {
    const pendingBadge = comment.status && comment.status !== ‘approved’
    ? “
    : ”;

    const edited = comment.is_edited
    ? “
    : ”;

    const repliesHtml = Array.isArray(comment.replies) && comment.replies.length
    ? `

    `
    : “;

    return `

    `;
    }

    function replyFormMarkup(commentId) {
    return `

    `;
    }

    function setNotice(widget, message, type = ‘info’) {
    const notice = widget.querySelector(‘[data-role=”notice”]’);
    if (!notice) return;

    if (!message) {
    notice.hidden = true;
    notice.textContent = ”;
    notice.classList.remove(‘is-error’);
    return;
    }

    notice.hidden = false;
    notice.textContent = message;
    notice.classList.toggle(‘is-error’, type === ‘error’);
    }

    function setCount(widget, total) {
    const count = widget.querySelector(‘[data-role=”count”]’);
    if (!count) return;

    const num = Number(total || 0);
    count.textContent = num === 1 ? ‘1 comment’ : `${num} comments`;
    }

    function openReplyBox(widget, commentId) {
    widget.querySelectorAll(‘[data-role=”reply-box”]’).forEach(box => {
    box.hidden = true;
    box.innerHTML = ”;
    });

    const targetItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
    if (!targetItem) return;

    const replyBox = targetItem.querySelector(‘[data-role=”reply-box”]’);
    if (!replyBox) return;

    replyBox.hidden = false;
    replyBox.innerHTML = replyFormMarkup(commentId);

    const textarea = replyBox.querySelector(‘textarea’);
    if (textarea) textarea.focus();
    }

    function closeReplyBox(container) {
    if (!container) return;
    container.hidden = true;
    container.innerHTML = ”;
    }

    async function initCommentsWidget(widget) {
    const state = {
    articleId: Number(widget.dataset.articleId),
    loadUrl: widget.dataset.loadUrl,
    storeUrl: widget.dataset.storeUrl,
    commentsBaseUrl: widget.dataset.commentsBaseUrl,
    canComment: widget.dataset.canComment === ‘1’,
    page: 1,
    perPage: 10,
    sort: ‘newest’,
    total: 0,
    hasMore: false,
    busy: false
    };

    const list = widget.querySelector(‘[data-role=”list”]’);
    const loading = widget.querySelector(‘[data-role=”loading”]’);
    const empty = widget.querySelector(‘[data-role=”empty”]’);
    const loadMoreBtn = widget.querySelector(‘[data-role=”load-more”]’);
    const sortSelect = widget.querySelector(‘[data-role=”sort”]’);
    const composerForm = widget.querySelector(‘[data-role=”composer-form”]’);

    async function loadComments(reset = true) {
    if (state.busy) return;

    state.busy = true;
    setNotice(widget, ”);
    loading.hidden = false;

    if (reset) {
    state.page = 1;
    list.innerHTML = ”;
    empty.hidden = true;
    }

    try {
    const url = new URL(state.loadUrl, window.location.origin);
    url.searchParams.set(‘page’, state.page);
    url.searchParams.set(‘per_page’, state.perPage);
    url.searchParams.set(‘sort’, state.sort);

    const response = await requestJson(url.toString(), {
    method: ‘GET’,
    headers: {
    ‘Accept’: ‘application/json’,
    ‘X-Requested-With’: ‘XMLHttpRequest’
    }
    });

    const items = Array.isArray(response.data) ? response.data : [];
    const meta = response.meta || {};

    state.total = Number(meta.total || 0);
    state.hasMore = !!meta.has_more;

    setCount(widget, state.total);

    if (reset) {
    list.innerHTML = ”;
    }

    if (!items.length && reset) {
    empty.hidden = false;
    } else {
    empty.hidden = true;
    list.insertAdjacentHTML(
    ‘beforeend’,
    items.map(item => commentMarkup(item, state.canComment, false)).join(”)
    );
    }

    loadMoreBtn.hidden = !state.hasMore;
    } catch (error) {
    if (!list.children.length) {
    empty.hidden = false;
    empty.textContent = ‘Unable to load comments right now.’;
    }
    setNotice(widget, error.message || ‘Unable to load comments.’, ‘error’);
    } finally {
    loading.hidden = true;
    state.busy = false;
    }
    }

    async function submitTopLevelComment(form) {
    const textarea = form.querySelector(‘textarea[name=”content”]’);
    const button = form.querySelector(‘[data-role=”submit-comment”]’);

    if (!textarea) return;

    const content = textarea.value.trim();
    if (!content) return;

    const originalText = button ? button.textContent : ”;

    try {
    if (button) {
    button.disabled = true;
    button.textContent = ‘Posting…’;
    }

    const response = await requestJson(state.storeUrl, {
    method: ‘POST’,
    headers: buildJsonHeaders(),
    body: JSON.stringify({
    article_id: state.articleId,
    content: content,
    source_url: window.location.href
    })
    });

    textarea.value = ”;

    if (response?.data) {
    list.insertAdjacentHTML(
    ‘afterbegin’,
    commentMarkup(response.data, state.canComment, false)
    );
    empty.hidden = true;

    if ((response.data.status || ”) === ‘approved’) {
    state.total += 1;
    setCount(widget, state.total);
    }
    }

    setNotice(widget, response.message || ‘Comment posted successfully.’);
    } catch (error) {
    setNotice(widget, error.message || ‘Unable to post comment.’, ‘error’);
    } finally {
    if (button) {
    button.disabled = false;
    button.textContent = originalText || ‘Post comment’;
    }
    }
    }

    async function submitReply(form) {
    const commentId = Number(form.dataset.commentId || 0);
    const textarea = form.querySelector(‘textarea[name=”content”]’);
    const button = form.querySelector(‘.ev-comments__reply-submit’);

    if (!commentId || !textarea) return;

    const content = textarea.value.trim();
    if (!content) return;

    const originalText = button ? button.textContent : ”;

    try {
    if (button) {
    button.disabled = true;
    button.textContent = ‘Posting…’;
    }

    const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/reply`, {
    method: ‘POST’,
    headers: buildJsonHeaders(),
    body: JSON.stringify({
    article_id: state.articleId,
    content: content,
    source_url: window.location.href
    })
    });

    if (response?.data) {
    const parentItem = widget.querySelector(`.ev-comments__item[data-comment-id=”${commentId}”]`);
    if (parentItem) {
    const repliesWrap = parentItem.querySelector(‘.ev-comments__replies’);
    if (repliesWrap) {
    repliesWrap.insertAdjacentHTML(
    ‘beforeend’,
    commentMarkup(response.data, state.canComment, true)
    );
    }
    }
    }

    closeReplyBox(form.closest(‘[data-role=”reply-box”]’));
    setNotice(widget, response.message || ‘Reply posted successfully.’);
    } catch (error) {
    setNotice(widget, error.message || ‘Unable to post reply.’, ‘error’);
    } finally {
    if (button) {
    button.disabled = false;
    button.textContent = originalText || ‘Post reply’;
    }
    }
    }

    async function toggleLike(button) {
    const commentId = Number(button.dataset.commentId || 0);
    if (!commentId) return;

    const originalHtml = button.innerHTML;

    try {
    button.disabled = true;
    button.innerHTML = ‘Working…’;

    const response = await requestJson(`${state.commentsBaseUrl}/${commentId}/like`, {
    method: ‘POST’,
    headers: buildJsonHeaders(),
    body: JSON.stringify({})
    });

    const liked = !!response?.data?.liked;
    const likeCount = Number(response?.data?.like_count || 0);

    button.classList.toggle(‘is-liked’, liked);
    button.innerHTML = `${liked ? ‘Liked’ : ‘Like’} ${likeCount > 0 ? “ : ”}`;
    } catch (error) {
    button.innerHTML = originalHtml;
    setNotice(widget, error.message || ‘Unable to update like.’, ‘error’);
    } finally {
    button.disabled = false;
    }
    }

    if (composerForm) {
    composerForm.addEventListener(‘submit’, function (e) {
    e.preventDefault();
    submitTopLevelComment(composerForm);
    });
    }

    if (sortSelect) {
    sortSelect.addEventListener(‘change’, function () {
    state.sort = this.value || ‘newest’;
    loadComments(true);
    });
    }

    if (loadMoreBtn) {
    loadMoreBtn.addEventListener(‘click’, function () {
    if (state.busy || !state.hasMore) return;
    state.page += 1;
    loadComments(false);
    });
    }

    widget.addEventListener(‘click’, function (e) {
    const likeBtn = e.target.closest(‘[data-action=”toggle-like”]’);
    if (likeBtn) {
    e.preventDefault();
    toggleLike(likeBtn);
    return;
    }

    const replyBtn = e.target.closest(‘[data-action=”toggle-reply”]’);
    if (replyBtn) {
    e.preventDefault();
    openReplyBox(widget, Number(replyBtn.dataset.commentId || 0));
    return;
    }

    const cancelReplyBtn = e.target.closest(‘[data-action=”cancel-reply”]’);
    if (cancelReplyBtn) {
    e.preventDefault();
    closeReplyBox(cancelReplyBtn.closest(‘[data-role=”reply-box”]’));
    }
    });

    widget.addEventListener(‘submit’, function (e) {
    const replyForm = e.target.closest(‘.ev-comments__reply-form’);
    if (replyForm) {
    e.preventDefault();
    submitReply(replyForm);
    }
    });

    loadComments(true);
    }

    document.addEventListener(‘DOMContentLoaded’, function () {
    document.querySelectorAll(‘.ev-comments’).forEach(initCommentsWidget);
    });
    })();

    Trending

    What the World Cup hydration breaks reveal about who governs men’s footballSports
    |The Conversation
    |48 minutes ago
    What Kenya's record Sh1.82 trillion forex reserves mean for the economy
    What Kenya’s record Sh1.82 trillion forex reserves mean for the economyBusiness
    |Alfred Onyango
    |5 hours ago
    Cape Verde vows to provide stern test for Argentina in round of 32Sports
    |XINHUA
    |1 day ago
    UK, France agree with Oman on multinational military mission to secure Strait of HormuzNews
    |Mary Wambui
    |4 hours ago
    Google to ban chrome extensions that ‘jailbreak’ AI chatbotsNews
    |Margaret Wanjiru
    |2 hours ago
    South Africa, Egypt and Morocco emerge as Africa’s leading hubs for the super richBusiness
    |Alfred Onyango
    |3 hours ago
    Colombia beats Ghana to complete World Cup round of 16 lineupSports
    |XINHUA
    |7 hours ago
    Messi makes history as Argentina survive Cape Verde’s unforgettable World Cup fightNews
    |Erick Kariuki
    |9 hours ago
    Portugal edge Croatia in dramatic finish to book last-16 spotSports
    |The New Times
    |1 day ago
    151 Kenyans evacuated from South Africa amid xenophobic violence, intimidation
    151 Kenyans evacuated from South Africa amid xenophobic violence, intimidationNews
    |Rachael Mutabasi
    |1 day ago

    From Kazakhstan president Returns Ruto
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Martin Akuma
    • Website

    Related Posts

    Kenya, Tanzania agree to resolve KQ flight ban within three days

    July 4, 2026

    Mthontsi Lodge and Conference Centre to boost Eastern Cape tourism

    July 4, 2026

    HMCA: Lagos hosts participants from 13 countries

    July 4, 2026
    Leave A Reply Cancel Reply

    Search
    Latest Post

    Kenya, Tanzania agree to resolve KQ flight ban within three days

    July 4, 2026

    Mthontsi Lodge and Conference Centre to boost Eastern Cape tourism

    July 4, 2026

    Kenya’s double climate crisis: It needs funds to adapt, and disaster aid is damaging environment

    July 4, 2026

    QORAY Mobility & Energies Formally Introduces Its Founding Executive Team

    July 4, 2026

    FIFA World Cup 2026 Round of 16 Schedule: Complete Fixtures, Match Timings and Business Impact

    July 4, 2026

    Subscribe to Updates

    Get the latest creative news from FooBar about art, design and business.

    • Facebook
    • Twitter
    • Pinterest
    • Instagram
    • YouTube
    • TikTok
    ABS TV and ABS Network News is a leading Pan-African 24/7 broadcasting network delivering nonstop news, talk shows, lifestyle programs, and digital media content worldwide through Satellite, Streaming Platforms, and Roku TV.
     
    Based in the United States, we connect Africa to the world while empowering creators, journalists, and brands through innovative media and broadcasting services.
    Facebook X (Twitter) Pinterest WhatsApp Instagram

    Our Picks

    Kenya, Tanzania agree to resolve KQ flight ban within three days

    Travel

    Mthontsi Lodge and Conference Centre to boost Eastern Cape tourism

    Environment

    Kenya’s double climate crisis: It needs funds to adapt, and disaster aid is damaging environment

    Most Popular

    Environment

    QORAY Mobility & Energies Formally Introduces Its Founding Executive Team

    Business

    FIFA World Cup 2026 Round of 16 Schedule: Complete Fixtures, Match Timings and Business Impact

    Business

    FIFA World Cup 2026 Round of 16 Schedule: Complete Fixtures, Match Timings and Business Impact

    © 2026 Copyright. All Rights Reserved by ABSAFRICATV
    • Privacy Policy
    • Terms of Services

    Type above and press Enter to search. Press Esc to cancel.

    We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.