Close Menu
    Facebook X (Twitter) Instagram
    • Home
    • Contact Us
    • About Us
    • Privacy Policy
    • Terms Of Service
    • Advertisement
    Monday, July 6
    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»Sports»Salim Babu names provisional squad for AFCON U20 CECAFA qualifiers
    Sports

    Salim Babu names provisional squad for AFCON U20 CECAFA qualifiers

    Johnson BenguruBy Johnson BenguruJuly 5, 2026No Comments8 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Share
    Facebook Twitter LinkedIn Pinterest Email
    Post Views: 9

    Salim Babu names provisional squad for AFCON U20 CECAFA qualifiers

    Salim Babu names provisional squad for AFCON U20 CECAFA qualifiers

    Rising Stars defender Baron Ochieng in action against Tusker Youth (C) FKF Media

    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.

    Coach Salim Babu has announced the provisional squad for Kenya’s AFCON U-20 CECAFA qualifiers, set to take place in Dar es Salaam, Tanzania from October 6-20, 2024. The team will begin preparations with a residential training camp in Nairobi before facing tough competition in Group A, which includes hosts Tanzania, Rwanda, Sudan, and Djibouti

    Kenya U-20 head coach, Salim Babu, has released a provisional squad ahead of the upcoming AFCON U-20 CECAFA qualifiers. The tournament will be held in Dar es Salaam, Tanzania, from October 6-20, 2024.
    Drawn in Group A, Kenya will face Tanzania, Rwanda, Sudan, and Djibouti. The team will begin their residential camp in Nairobi on September 22 and travel to Tanzania on October 4.
    Coach Babu, with the assistance of Anthony Akhulia, is optimistic about securing a spot in the continental championship.
    Provisional Squad
    Goalkeepers
    Ibrahim Wanzala (Kakamega Homeboyz), Sammy Saboke (AFC Leopards), Benard Maeri (Ruiru Hot Stars), Joshua Keya (Kibera Black Stars), Peter Juma (Nakuru Bucks).

    Latest Stories

    • Coast leaders intensify unity drive, back 10-point agenda and urge end to divisive politics
    • 2026 FIFA World Cup claims seven national team coaches
    • Kiharu MP Ndindi Nyoro announces exit from UDA
    • Government releases Sh4 billion to settle NHIF hospital claims

    Defenders
    Joseph Bate (MOFA), Amos Wanjala (Athletic Club Tollerano), Manzur Okwaro, Baron Ochieng (Sofapaka), Collins Ochieng (Kariobangi Sharks), Rodgers Wasega (Nairobi City Stars), Francis Gethoi (Naivas), Mohammed Aden Kaire (Mombasa United), Meguel Osotsi (Highway Secondary School), Charles Auma (Sofapaka), Jackson Imbiakha (Mombasa United).
    Midfielders
    Stanley Wilson (A.I.K), Andres Odhiambo (Kariobangi Sharks), Elly Owande (Al Nasra), Kevin Wangaya (FC Tirana), Kelly Madada (AFC Leopards), Lucas Maina (Murang’a Seal), Benard Odhiambo (Nairobi United), William Gitamu (Bandari), Hamisi Otieno (Goseta High School), Irad Mushidi (Musingu High School), Houston Oluoch (Musingu High School).
    Forwards
    Tyron Kariuki, Aldrine Kibet (Nastic Soccer Academy), Louise Ingavi (Montverde Academy), Dalphene Omuri (Shabana), Mark Shaban (Gor Mahia), Austine Odongo (Shabana), Jeremy Bisau (Cheshunt FC), Abdalla Egesa (Bidco United), Javan Omondi (Ulinzi Stars), Syphas Otieno (MOFA), Isaac Oweri (Nairobi United/ Vasalund), Harrison Amalemba (Musingu High School), Linus Munyao (Riffa Sports Club), Hassan Beja (AFC Leopards), Nesta Olum (AFC Leopards), Adrian Oloo (Nairobi United), Dancan Odhiambo (Nairobi United), Humphrey Aroko (Kariobangi Sharks/ Highway Secondary School), Oliver Machaka (Kakamega Homeboyz), Lawrence Ouma (MOFA), Clinton Asiako (Bidco United), Henry Omollo (Fountain Gate), Izadin Mohammed (Bandari).

    Other Topics To Read

    • AFCON U20
    • Rising Stars
    • Salim Babu

    Top Stories Today

    • Coast leaders rally support for 10-point agenda, reject divisive politics
    • Government releases Sh4 billion to settle NHIF hospital claims
    • Kiharu MP Ndindi Nyoro announces exit from UDA
    • Rising political violence draws condemnation from Mombasa religious leaders
    • Pakistan to host next round of US-Iran talks on July 11
    • Somali Embassy hosts Kenya leaders, diplomats for 66th Independence Day celebrations

    `;
    }

    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

    Coast leaders intensify unity drive, back 10-point agenda and urge end to divisive politics
    Coast leaders intensify unity drive, back 10-point agenda and urge end to divisive politicsPolitics
    |Farhiya Hussein
    |34 minutes ago
    Rising political violence draws condemnation from Mombasa religious leaders
    Rising political violence draws condemnation from Mombasa religious leadersCoast
    |Farhiya Hussein
    |2 hours ago
    Mbappé fires France past Paraguay into World Cup quarter-finals
    Mbappé fires France past Paraguay into World Cup quarter-finalsSports
    |Erick Kariuki
    |8 hours ago
    Cherotich, Odira shine as Kenya dominates Prefontaine Classic despite rare Kipyegon defeat
    Cherotich, Odira shine as Kenya dominates Prefontaine Classic despite rare Kipyegon defeatSports
    |Erick Kariuki
    |9 hours ago
    Court declares Ruaraka School land public, rules Sh1.5 billion payout illegal
    Court declares Ruaraka School land public, rules Sh1.5 billion payout illegalNews
    |Carolyne Kubwa
    |20 hours ago
    Weekly new Ebola cases reach highest level since outbreak began: WHO
    Weekly new Ebola cases reach highest level since outbreak began: WHODemocratic Republic of Congo
    |XINHUA
    |18 hours ago
    Morocco continue historic rise with record-breaking World Cup victory against Canada
    Morocco continue historic rise with record-breaking World Cup victory against CanadaSports
    |Erick Kariuki
    |17 hours ago
    Government releases Sh4 billion to settle NHIF hospital claims
    Government releases Sh4 billion to settle NHIF hospital claimsHealth
    |Lucy Mumbi
    |1 hour ago
    Somalia intelligence agency kills Al-Shabaab mortar unit leader in Basra operation
    Somalia intelligence agency kills Al-Shabaab mortar unit leader in Basra operationSomalia
    |Bashir Mbuthia
    |19 hours ago
    Protest victims decry exclusion from government compensation programme despite registration
    Protest victims decry exclusion from government compensation programme despite registrationNews
    |Lucy Mumbi
    |4 hours ago

    Babu names Provisional Salim Squad
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Johnson Benguru
    • Website

    Related Posts

    Who Is Erling Haaland? Norway Striker Shining At FIFA World Cup 2026

    July 6, 2026

    Cape Verde hailed as national heroes after historic World Cup campaign

    July 6, 2026

    FIFA dismisses Belgium appeal over Folarin Balogun ban decision

    July 6, 2026
    Leave A Reply Cancel Reply

    Search
    Latest Post

    Fake Uber scam targets Cape Town airport travellers

    July 6, 2026

    South Africa Launches First National Science Month | Science

    July 6, 2026

    Emirates NBD backs AI startup adoption with Techstars

    July 6, 2026

    Why Pope Leo’s visit to Lampedusa matters for migrants, the church and global politics

    July 6, 2026

    US opens bidding for $200m Nigeria healthcare support

    July 6, 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

    Fake Uber scam targets Cape Town airport travellers

    South Africa Launches First National Science Month | Science

    Emirates NBD backs AI startup adoption with Techstars

    Most Popular

    Why Pope Leo’s visit to Lampedusa matters for migrants, the church and global politics

    US opens bidding for $200m Nigeria healthcare support

    Italy ordered to compensate woman after allegations of rape by partner dismissed as ‘normal’

    © 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.