Close Menu
    Facebook X (Twitter) Instagram
    • Home
    • Contact Us
    • About Us
    • Privacy Policy
    • Terms Of Service
    • Advertisement
    Friday, July 3
    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»Features»President Yoweri Museveni backs single East African visa for 2027 AFCON
    Features

    President Yoweri Museveni backs single East African visa for 2027 AFCON

    Billy JohnsonBy Billy JohnsonJuly 3, 2026No Comments8 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    President Yoweri Museveni backs single East African visa for 2027 AFCON
    Share
    Facebook Twitter LinkedIn Pinterest Email
    Post Views: 2

    President Yoweri Museveni backs single East African visa for 2027 AFCON

    President Yoweri Museveni backs single East African visa for 2027 AFCON

    Ugandan President Yoweri Museveni at a past event. (Photo: PCS)

    Read this story aloud

    Listen to the clean text version of this article

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

    The proposed visa would allow football fans, tourists, match officials and participating teams to travel freely across the three host countries for up to four months without requiring separate entry permits

    Ugandan President Yoweri Museveni has endorsed a proposal to introduce a single East African entry visa for the 2027 Africa Cup of Nations (AFCON), which Uganda will co-host with Kenya and Tanzania.
    Museveni, according to a State House statement issued on Thursday, directed officials to begin consultations with their counterparts in Kenya and Tanzania to advance the proposal ahead of the tournament.
    The proposed visa would allow football fans, tourists, match officials and participating teams to travel freely across the three host countries for up to four months without requiring separate entry permits.

    More To Read

    • Countdown begins as expanded WAFCON 2026 nears kick‑off in Morocco
    • Kenya, Uganda and Tanzania gear up for historic 2027 AFCON
    • Victor Wanyama backs AFCON 2027 to usher in new era for Kenyan football
    • Odemba hails team response after Harambee Starlets’ six-goal demolition of Lesotho
    • Bajaber and Okoth braces power Harambee Stars to emphatic victory over Lesotho
    • Harambee Stars out to end 11-year wait for victory over Lesotho

    “This is common sense. I support it [single entry visa],” Museveni said during a meeting with Uganda’s AFCON local organising committee at State House in Entebbe, about 40 km south of the capital, Kampala, on Wednesday.
    The proposal was presented by the committee as it briefed the president on progress in Uganda’s preparations for the tournament.
    Museveni also reaffirmed the government’s commitment to ensuring the successful hosting of the tournament, pledging full financial support, accelerated infrastructure development and closer regional cooperation to deliver Africa’s premier football competition.

    Latest Stories

    • Kenya’s diplomatic missions under review as MPs adopt oversight reports
    • UNICEF cautions that children are adopting AI three times faster than adults
    • UN raises alarm over escalating attacks on Sudan’s besieged El Obeid
    • Uganda welcomes first batch of evacuees from South Africa

    Other Topics To Read

    Top Stories Today

    • Kenya’s diplomatic missions under review as MPs adopt oversight reports
    • 151 Kenyans evacuated from South Africa amid xenophobic violence, intimidation
    • UNICEF cautions that children are adopting AI three times faster than adults
    • UN raises alarm over escalating attacks on Sudan’s besieged El Obeid
    • Uganda welcomes first batch of evacuees from South Africa
    • President Yoweri Museveni backs single East African visa for 2027 AFCON

    `;
    }

    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

    UN raises alarm over escalating attacks on Sudan's besieged El Obeid
    UN raises alarm over escalating attacks on Sudan’s besieged El ObeidNews
    |UN News
    |32 minutes ago
    President Yoweri Museveni backs single East African visa for 2027 AFCONSports
    |XINHUA
    |1 hour ago
    Rwanda to use Kenya's fuel storage under new import deal
    Rwanda to use Kenya’s fuel storage under new import dealBusiness
    |The New Times
    |4 hours ago
    KFS announces public participation on Imenti Forest airstrip despite court case
    KFS announces public participation on Imenti Forest airstrip despite court caseNews
    |Rachael Mutabasi
    |1 hour ago
    Uganda welcomes first batch of evacuees from South Africa
    Uganda welcomes first batch of evacuees from South AfricaNews
    |Mary Wambui
    |50 minutes ago
    Portugal edge Croatia in dramatic finish to book last-16 spot
    Portugal edge Croatia in dramatic finish to book last-16 spotSports
    |The New Times
    |4 hours ago
    UNICEF cautions that children are adopting AI three times faster than adults
    UNICEF cautions that children are adopting AI three times faster than adultsNews
    |Mary Wambui
    |15 minutes ago
    Cancer tumors turn immune cells from fighters into feeders - study
    Cancer tumors turn immune cells from fighters into feeders – studyHealth
    |XINHUA
    |1 hour ago
    World Cup of firsts: How 2026 edition in US, Canada and Mexico is rewriting history
    World Cup of firsts: How 2026 edition in US, Canada and Mexico is rewriting historyNews
    |Erick Kariuki
    |4 hours ago
    Rabies outbreak triggers disputed mass dog killings in Ethiopian townEthiopia
    |Bashir Mbuthia
    |1 hour ago

    backs Museveni president single Yoweri
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Billy Johnson
    • Website

    Related Posts

    Hugo Broos backs FIFA World Cup experience to fuel Bafana Bafana’s 2027 AFCON charge – ‘We can certainly become better’

    July 3, 2026

    AFC’s new Eurobond attracts central bank participation

    July 3, 2026

    What the age of electricity could mean for South Africa

    July 3, 2026
    Leave A Reply Cancel Reply

    Search
    Latest Post

    Saudi Arabia’s TourismX Platform: How AI Is Transforming Tourism Boards Into Digital Business Partners in 2026

    July 3, 2026

    What’s next for South Africa’s gigawatt

    July 3, 2026

    New online travel rule for South Africa starts 1 July 2026

    July 3, 2026

    REG – Inqo Investments Ltd

    July 3, 2026

    The World Economy in 2050: Why GDP Alone Won’t Decide the Winner

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

    Travel

    Saudi Arabia’s TourismX Platform: How AI Is Transforming Tourism Boards Into Digital Business Partners in 2026

    Environment

    What’s next for South Africa’s gigawatt

    Travel

    New online travel rule for South Africa starts 1 July 2026

    Most Popular

    Environment

    REG – Inqo Investments Ltd

    Business

    The World Economy in 2050: Why GDP Alone Won’t Decide the Winner

    Business

    Payments First: Why The SARB Is Prioritising Digital Infrastructure Over A Retail CBDC

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