Close Menu
    Facebook X (Twitter) Instagram
    • Home
    • Contact Us
    • About Us
    • Privacy Policy
    • Terms Of Service
    • Advertisement
    Tuesday, July 21
    Facebook X (Twitter) Instagram Pinterest Vimeo
    ABS Africa TV
    • Breaking News
    • Trending
    • Africa News
    • World News
    • Features
    • Technology
    • More
      • Sports
      • Politics
      • Culture
      • Lifestyle
      • Travel
      • Business
      • Environment
      • Legal
      • Health
      • Cameroon
      • Ambazonia
      • AfroSingles
      • Environ/Climate
      • Editorial
      • The Leak Magazine
    • Donate
    Subscription
    ABS Africa TV
    Home»Travel»π„πšπ¬π­π₯𝐞𝐒𝐠𝐑 π•π¨π’πœπž 𝐍𝐞𝐰𝐬 – Health workers begin nationwide strike over CBA implementation
    Travel

    π„πšπ¬π­π₯𝐞𝐒𝐠𝐑 π•π¨π’πœπž 𝐍𝐞𝐰𝐬 – Health workers begin nationwide strike over CBA implementation

    Martin AkumaBy Martin AkumaJuly 20, 2026No Comments8 Mins Read
    Facebook Twitter Pinterest LinkedIn Tumblr Email
    Share
    Facebook Twitter LinkedIn Pinterest Email
    Post Views: 8

    Listen to article

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

    Thanks for listening. Continue with a related story, or tap the speaker icon on the next page to listen.

    Coast leaders accuse Gachagua of undermining region’s economy over tourism remarks

    Farhiya Hussein

    Β Β·Β 

    2 hours agoRead nextOpens a fresh page.

    Health workers launch a nationwide strike, Isiolo commissions its long-awaited Sh1 billion abattoir, Coast leaders condemn remarks they say threaten tourism, and Kenya mourns former IEBC commissioner Mohammed Sharawe.

    Health workers down tools over CBA row
    Health workers have begun a nationwide strike, demanding the full implementation of their Collective Bargaining Agreement and improved working conditions.
    Isiolo abattoir opens after 17 years

    More To Read

    • Coast leaders accuse Gachagua of undermining region’s economy over tourism remarks
    • Fort Jesus history updated as Mombasa unveils plaque honouring Italian architect Giovanni Battista Cairati
    • Nairobi County labels health workers’ strike β€˜unnecessary’ amid partial grievance resolution

    Isiolo County has officially opened its Sh1 billion export abattoir, ending a 17-year wait for a project expected to boost the livestock sector.
    Coast leaders defend tourism sector
    Coast leaders have criticised Rigathi Gachagua’s remarks on tourism, warning that calls discouraging travel to Kenya could damage jobs, businesses and the regional economy.

    Latest Stories

    • Health unions threaten prolonged strike over Sh8.9 billion UHC workers employment plan
    • Team Kenya fired up for Commonwealth Games as athletes receive rallying call
    • Talk therapy keeps depression at bay for up to eight years, major study finds
    • Judiciary rejects LSK boycott call, insists courts will remain open as it defends reforms and independence

    Ex-IEBC commissioner Sharawe dies
    Former Independent Electoral and Boundaries Commission commissioner Mohammed Sharawe has died, with leaders paying tribute to his contribution to Kenya’s electoral process.

    Other Topics To Read

    Top Stories Today

    • Health workers to down tools over delayed absorption of UHC staff
    • Team Kenya vows to fight for gold at 2026 Commonwealth Games
    • Study finds talk therapy offers years of protection against depression
    • Judiciary rejects LSK boycott, confirms all courts will sit on July 22
    • Coast leaders fire back at Gachagua over tourist boycott call
    • One year later, LSK ex-boss pushes police to explain Njoki’s killing

    `;
    }

    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

    Ol Kalou aftermath: How by-election has bolstered Gachagua’s strength but dimmed Uhuru’s Jubilee PartyNews
    |Barack Oduor
    |8 hours ago
    π„πšπ¬π­π₯𝐞𝐒𝐠𝐑 π•π¨π’πœπž 𝐍𝐞𝐰𝐬 – Health workers begin nationwide strike over CBA implementationVideos
    |Zawadi Charity
    |30 minutes ago
    Coast leaders accuse Gachagua of undermining region’s economy over tourism remarksCoast
    |Farhiya Hussein
    |2 hours ago

    Court orders arrest of Nairobi County official over deadly South B building collapse

    Court orders arrest of Nairobi County official over deadly South B building collapseCity Affairs
    |Carolyne Kubwa
    |10 hours ago

    Attorney-General directed to advise on impeached officials’ eligibility in elections

    Attorney-General directed to advise on impeached officials’ eligibility in electionsNews
    |Carolyne Kubwa
    |9 hours ago
    Inside the record Sh112 billion 2026 FIFA World Cup prize potInfographics
    |Charity Pancras
    |5 hours ago
    Health unions threaten prolonged strike over Sh8.9 billion UHC workers employment planHealth
    |Charity Kilei
    |14 minutes ago

    Maraga unveils presidential campaign secretariat ahead of 2027 General Election

    Maraga unveils presidential campaign secretariat ahead of 2027 General ElectionPolitics
    |Lucy Mumbi
    |7 hours ago

    Teens who can't control social media use more likely to develop ADHD symptoms

    Teens who can’t control social media use more likely to develop ADHD symptomsHealth
    |Charity Kilei
    |1 day ago

    KUCCPS launches instant university admission portal for C+ and above KCSE graduates

    KUCCPS launches instant university admission portal for C+ and above KCSE graduatesEducation
    |Lucy Mumbi
    |13 hours ago

    Begin Health nationwide strike workers
    Share. Facebook Twitter Pinterest LinkedIn Tumblr Email
    Martin Akuma
    • Website

    Related Posts

    South Africa Makes SATMS Online Traveller Declarations Mandatory Before Air, Land, Sea and Rail Journeys as the 24-Hour Filing Rule Creates New Compliance Steps for Travellers and Travel Businesses

    July 21, 2026

    GAEHP Conducts Mega Chhattisgarh FAM Tour in Association with Chhattisgarh Tourism Board

    July 21, 2026

    Brazil Surges Ahead of Belgium, Switzerland, France and Other Global Leading Markets as South Africa Tourism Records Thirty Seven Point Five Percent Visitor Growth Between April 2025 and April Twenty Twenty Six, Boosting Global Travel Demand and International Tourism Growth

    July 21, 2026
    Leave A Reply Cancel Reply

    Search
    Latest Post

    South Africa Makes SATMS Online Traveller Declarations Mandatory Before Air, Land, Sea and Rail Journeys as the 24-Hour Filing Rule Creates New Compliance Steps for Travellers and Travel Businesses

    July 21, 2026

    Global hunger declines across continents but climate, trade risks loom, UN says

    July 21, 2026

    School assembly news headlines today- July 22: Top national, sports and world news curated for you

    July 21, 2026

    Ghana gold mine changes hands in $66.5 million deal between South African and Australian firms

    July 21, 2026

    Study identifies key risk factors for stillbirth across three African countries

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

    South Africa Makes SATMS Online Traveller Declarations Mandatory Before Air, Land, Sea and Rail Journeys as the 24-Hour Filing Rule Creates New Compliance Steps for Travellers and Travel Businesses

    Global hunger declines across continents but climate, trade risks loom, UN says

    School assembly news headlines today- July 22: Top national, sports and world news curated for you

    Most Popular

    Ghana gold mine changes hands in $66.5 million deal between South African and Australian firms

    Study identifies key risk factors for stillbirth across three African countries

    Supreme Court ruling hands Trump sweeping new powers and limits Congressional oversight

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