Connect with us

Oklahoma

Oklahoma Senate passes bill to ban any ‘unauthorized camp’ on state land

Published

on

Oklahoma Senate passes bill to ban any ‘unauthorized camp’ on state land


A bill that critics say would effectively push homeless people off public rights-of-way and state-owned land passed the Oklahoma Senate on Tuesday, despite an impassioned plea by one senator who grilled the bill’s sponsor with questions for more than 15 minutes before the vote.

By a 37-6 vote, the Senate approved Senate Bill 1854, which was cast by its author, Sen. Darrell Weaver, R-Moore, as a safety issue. The bill now can be considered by the state House of Representatives.

The bill would prohibit any “unauthorized camp” – defined as “any tent, shelter, or bedding constructed or arranged for the purpose of or in such a way to permit overnight use on a property not designated as a campsite” – on public rights-of-way or state-owned lands.

The bill would subject violators to a misdemeanor charge, but says the first violation would be considered as a warning, “and a citation may not be issued unless the person refuses any assistance offered to them by the arresting officer. Such assistance may include, but is not limited to, transportation to a shelter, food pantry, or other place where resources are made available to assist the indigent and homeless.”

Advertisement

Weaver, a former director of the Oklahoma Bureau of Narcotics and Dangerous Drugs Control and an inductee into the Oklahoma Law Enforcement Hall of Fame, had a back-and-forth exchange with Sen. Julia Kirt, D-Oklahoma City, about the bill on the Senate floor. Kirt has a passion for addressing issues involving the homeless and served as a founding member and co-chair of the Legislative Mental Health Caucus.

“What I am concerned about is criminalizing someone who doesn’t have a home,” Kirt said. “That’s not solving our problem. We talk about moving someone across the street (to non-state-owned land) but that is still in our community. We’ve not solved the challenge that that individual is facing. This is written in a very broad manner that makes it difficult to analyze who would be impacted.”

She added: “What I see is we need to flip the way we’re approaching the challenge of people who are unsheltered. If somebody is sleeping under a bridge, they have nowhere else to sleep.”

Bill’s author says it won’t apply to local municipalities, only state-owned properties

Under questioning, Weaver said the bill won’t apply to municipalities in Oklahoma, only state-owned land, although he frequently referenced people staying near highway underpasses. He specifically mentioned people who often can be seen camping around Interstate 240 underpasses in south Oklahoma City.

Advertisement

“We’ve had a lot of challenges in our community, one of which is safety,” Weaver said. “This has to do with safety. This is not a ‘solve all the problem for homelessness.’ That’s not what the intent of this bill is. The intent of this bill is very specifically a safety issue when it comes to these roads and … where we have jurisdiction in this body, on state-owned lands. I don’t want no member to believe that this is going to solve our homelessness (issue).”

Weaver said, “At some point, even individuals that are homeless have some level of responsibility for the safety of themselves and the people around them. … It’s something we maybe don’t want to talk about, but it’s true.”

Asked how many people would be affected by the bill, Weaver said he didn’t specifically know, saying only “several.”

According to the annual “point in time” count in Oklahoma City in 2023, the city had 1,436 homeless people counted, up about 100 from the 2022 count. About 20% of that number are families with children, about 9% are military veterans, about 28% are considered chronically homeless and 31% are unsheltered. Kirt said homeless people often wouldn’t have the financial resources to pay any fine that might be levied if the bill becomes law.

“As a general rule, criminalizing homelessness is counterproductive,” said Dan Straughan, the executive director of the Homeless Alliance in Oklahoma City. “Misdemeanors generate fines that people experiencing homelessness can’t easily pay, which leads to a failure to appear in court, which leads to needless bench warrants. All this to say, making the infraction a misdemeanor doesn’t really prevent it from leading to jail time. Once an individual has entered the criminal justice system, that creates yet another barrier to getting back into housing. Housing is the proper response to homelessness. Needless fines are simply a step backward.”

Advertisement

The six senators who voted against the bill included five Democrats – Kirt, Kay Floyd of Oklahoma City, Jo Anna Dossett of Tulsa, George Young of Oklahoma City and Kevin Matthews of Tulsa – along with Republican Dave Rader of Tulsa.



Source link

Oklahoma

182 inmates relocated after issue at Oklahoma prison

Published

on

182 inmates relocated after issue at Oklahoma prison


TAFT, Okla. –

A total of 182 inmates were relocated early Saturday morning after a structural issue was identified inside a housing unit at the Jess Dunn Correctional Center in Taft.

The Oklahoma Department of Corrections said inmates housed in the D East unit were moved to other facilities as a precaution after a compromised area was discovered on the second floor. Officials said at no point were the inmates in danger.

Officials said the issue was discovered early April 11, prompting an immediate decision to relocate inmates.

Advertisement

The affected unit, originally built in 1935, is among the older structures on the facility’s campus.

The Oklahoma Department of Corrections said a structural engineer will inspect the building to determine whether repairs are possible and to guide next steps.

Inmates who were moved will be placed in more permanent housing as space becomes available across the prison system.

The agency said safety and security remain its top priority and that updates will be provided as more information becomes available.

Advertisement

Officials also noted they appreciated the cooperation of the inmates during the relocation process.





Source link

Continue Reading

Oklahoma

TIMELINE: Rounds of storms in Oklahoma continue throughout weekend

Published

on

TIMELINE: Rounds of storms in Oklahoma continue throughout weekend


TIMELINE: Rounds of storms in Oklahoma continue Saturday and throughout weekend

Advertisement

NA

Advertisement

TIMELINE: Rounds of storms in Oklahoma continue Saturday and throughout weekend

Updated: 9:21 AM CDT Apr 11, 2026

Editorial Standards

Advertisement

It’s day two of a six-day stretch of storm risks in Oklahoma, as rain chances are increasing. >> Go to the KOCO weather page | Get KOCO on the Go | Subscribe to KOCO 5’s YouTube channel | Sign up for KOCO 5’s Morning NewsletterKOCO 5 Meteorologist Mikayla Smith says heavy rain is likely Saturday night and into Sunday morning, which could cause flooding. Below is what you need to know. Saturday Storm Risk A level 1 has been issued for western and north-central Oklahoma. The risk zone stretches north to Ponca City and stays west of the OKC metro. A few scattered showers are possible Saturday afternoon, but the bulk of the storms won’t come in until late Saturday heading into your Sunday. Showers start to develop around 1 p.m. and continue east by 5:30 p.m. A second round with heavier rain comes into western Oklahoma around 11 p.m. and midnight. That second wave will continue into central Oklahoma, bringing the heavy ran to the OKC metro around 4:30 a.m. Sunday. The heavy rain will linger in central Oklahoma throughout the morning before moving to the east by the late morning and early afternoon. Sunday Storm Risk The severe weather risk is a little bit higher on Sunday, with a level 2 slight risk in western and central Oklahoma. The OKC metro is included in the risk zone. There’s also a level 1 marginal risk in eastern Oklahoma and near Woodward in northwestern Oklahoma. The big thing with Sunday’s storm threat is that it’s a conditional risk. If the storms move out fast enough in the morning, then we’ll see severe weather in the afternoon. KOCO 5 First Alert Weather Team, led by Chief Meteorologist Damon Lane, has been certified by WeatheRate as providing the Most Accurate Forecast in Oklahoma City for 14 consecutive years. This outstanding achievement underscores KOCO 5’s unwavering dedication to delivering reliable weather forecasts to viewers.

It’s day two of a six-day stretch of storm risks in Oklahoma, as rain chances are increasing.

>> Go to the KOCO weather page | Get KOCO on the Go | Subscribe to KOCO 5’s YouTube channel | Sign up for KOCO 5’s Morning Newsletter

Advertisement

KOCO 5 Meteorologist Mikayla Smith says heavy rain is likely Saturday night and into Sunday morning, which could cause flooding. Below is what you need to know.

Saturday Storm Risk

A level 1 has been issued for western and north-central Oklahoma. The risk zone stretches north to Ponca City and stays west of the OKC metro.

april 11, 2026, oklahoma storm risk

Advertisement

A few scattered showers are possible Saturday afternoon, but the bulk of the storms won’t come in until late Saturday heading into your Sunday.

Sunday Storm Risk

The severe weather risk is a little bit higher on Sunday, with a level 2 slight risk in western and central Oklahoma. The OKC metro is included in the risk zone.

There’s also a level 1 marginal risk in eastern Oklahoma and near Woodward in northwestern Oklahoma.

april 11, 2026, oklahoma storm risk

Advertisement

The big thing with Sunday’s storm threat is that it’s a conditional risk. If the storms move out fast enough in the morning, then we’ll see severe weather in the afternoon.


KOCO 5 First Alert Weather Team, led by Chief Meteorologist Damon Lane, has been certified by WeatheRate as providing the Most Accurate Forecast in Oklahoma City for 14 consecutive years. This outstanding achievement underscores KOCO 5’s unwavering dedication to delivering reliable weather forecasts to viewers.

Advertisement

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

Advertisement

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

Advertisement

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

Advertisement

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.koco.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.koco.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

Advertisement

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

Advertisement

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

`;
}

Advertisement

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

Advertisement

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

Advertisement

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.koco.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.koco.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

Advertisement

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

Advertisement

updateWeatherBackground(weatherData.current.icon_name);
}
}

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

Advertisement

Loading more articles…



Source link

Continue Reading

Oklahoma

Oklahoma City artist returns with Thunder-themed window art for NBA playoffs

Published

on

Oklahoma City artist returns with Thunder-themed window art for NBA playoffs


Melissa Griggs-Hendricks and her team are back to paint Thunder-inspired designs on windows across Oklahoma City, spreading excitement for the NBA playoffs

Advertisement

Oklahoma City artist returns with Thunder-themed window art for NBA playoffs

Melissa Griggs-Hendricks and her team are back to paint Thunder-inspired designs on windows across Oklahoma City, spreading excitement for the NBA playoffs

Advertisement

WELL, OKLAHOMA CITY, IT IS ALMOST TIME FOR THE NBA PLAYOFFS AND WE ARE READY TO THUNDER UP. I’LL TELL YOU WHAT, OUR CITY SURE KNOWS HOW TO SHOW UP AND SHOW OUT. FROM WATCH PARTIES TO HOUSE DECORATIONS, OKC HAS GOT IT GOING ON AND THAT INCLUDES A LOCAL PAINTER. YOU MIGHT REMEMBER FROM LAST SEASON. OUR KOCO EVAN ONSTOT JOINING US LIVE IN THE NEWSROOM. WE HAVE THIS IN OUR NEWSROOM. EVAN, WE’RE ABOUT TO SEE BLUE AND ORANGE ALL OVER OKC. RIGHT. AND A LOT OF IT IS GOING TO BE THANKS TO ARTIST MELISSA GRIGGS HENDRICKS. WE WATCHED MELISSA AND HER TEAM CREATE THUNDER MAGIC ALL OVER OKLAHOMA LAST YEAR, AND NOW SHE IS BACK. AND MAYBE EVEN BETTER THAN BEFORE. MELISSA AND HER ASSISTANT CANDACE PAINT THUNDER IMAGES ON WINDOWS. ABBY, YOU MENTIONED WE HAD ONE RIGHT HERE IN THE KOCO NEWSROOM. AND SO THIS YEAR, THESE LADIES ARE BACK TO SPREAD SOME THUNDER EXCITEMENT. THEY SAY THEY’VE GOT EVEN MORE DESIGNS THIS YEAR AND THEY BELIEVE THEY CAN DOUBLE THE ART THIS SEASON. THEY JUST CAN’T WAIT FOR THE PLAYOFFS TO START. LAST YEAR FOR THE PLAYOFFS, WITHIN A TWO AND A HALF MONTH SPAN, WE PAINTED 157 LOCATIONS. SOME OF THOSE WERE HUGE AND SOME WERE SMALL. AS ONE WINDOW, WE HAVE A GUESS OF ABOUT 25 GALLONS. WE MAY HAVE MISSED A FEW. IT DOESN’T TAKE A TON OF PAPER FOR DESIGN TYPICALLY, BUT YEAH, ABOUT 25 GALLONS LAST YEAR. THIS YEAR I THINK WE’RE GOING TO DO A WHOLE LOT MORE. IT FEELS AMAZING TO BE BACK. I’M SO EXCITED. WE JUST HAD SUCH A GREAT TIME LAST YEAR AND I’VE REALLY MISSED THIS COMMUNITY OF JUST GETTING TO SEE EVERYBODY AND JUST BE A HUGE PART OF ALL THE EXCITEMENT FOR THE PLAYOFFS. YEAH, THEY DO INCREDIBLE WORK. NOW. MELISSA SAYS THAT IF YOU ARE INTERESTED IN HAVING ANY OF YOUR WINDOWS PAINTED, YOU JUST GOT TO CONTACT HER THROUGH EMAIL. WE’RE GOING TO POST A

Advertisement

Oklahoma City artist returns with Thunder-themed window art for NBA playoffs

Melissa Griggs-Hendricks and her team are back to paint Thunder-inspired designs on windows across Oklahoma City, spreading excitement for the NBA playoffs

Updated: 7:52 PM CDT Apr 10, 2026

Editorial Standards

Advertisement

Oklahoma City is preparing for the NBA playoffs, and artist Melissa Griggs-Hendricks is bringing Thunder spirit to life with her signature window art. >> Download the KOCO 5 app | Subscribe to KOCO 5’s YouTube channel | Sign up for KOCO 5’s Morning NewsletterGriggs-Hendricks, along with her assistant Candace, is painting Thunder-themed images on windows throughout the city, including one at the KOCO newsroom. “Last year for the playoffs, within a two-and-a-half-month span, we painted 157 locations. Some of those were huge and some were small as one window,” Griggs-Hendricks said. “We have a guess of about 25 gallons. We may have missed it. It doesn’t take a ton of paint for a design. Typically, they get about 25 this year. I think we’re going to do a whole lot more.” She expressed her enthusiasm for returning this season. “It feels amazing to be back. I’m so excited. We just had such a great time last year, and I really miss this community of just getting to see everybody and just be a huge part of all the excitement for the playoffs,” Griggs-Hendricks said. Get the latest news stories of interest by clicking here.Griggs-Hendricks and her team say they have even more designs planned this year and believe they can double their output from last season. Top HeadlinesWoman dies after being hit by a train in Pauls Valley, OHP saysOut-of-this-world playlist: Here’s what the Artemis II astronauts have been listening in spaceOHP releases details of deadly crash involving Oklahoma State softball team’s busRollover crash involving multiple vehicles causes significant traffic on SB I-35 near GoldsbyPennsylvania woman’s Ring camera captures machete-wielding neighbor

Oklahoma City is preparing for the NBA playoffs, and artist Melissa Griggs-Hendricks is bringing Thunder spirit to life with her signature window art.

Advertisement

>> Download the KOCO 5 app | Subscribe to KOCO 5’s YouTube channel | Sign up for KOCO 5’s Morning Newsletter

Griggs-Hendricks, along with her assistant Candace, is painting Thunder-themed images on windows throughout the city, including one at the KOCO newsroom.

“Last year for the playoffs, within a two-and-a-half-month span, we painted 157 locations. Some of those were huge and some were small as one window,” Griggs-Hendricks said. “We have a guess of about 25 gallons. We may have missed it. It doesn’t take a ton of paint for a design. Typically, they get about 25 this year. I think we’re going to do a whole lot more.”

Advertisement

She expressed her enthusiasm for returning this season.

“It feels amazing to be back. I’m so excited. We just had such a great time last year, and I really miss this community of just getting to see everybody and just be a huge part of all the excitement for the playoffs,” Griggs-Hendricks said.

Get the latest news stories of interest by clicking here.

Griggs-Hendricks and her team say they have even more designs planned this year and believe they can double their output from last season.


Top Headlines

Advertisement
Advertisement

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

Advertisement

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

Advertisement

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.koco.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.koco.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

Advertisement

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

Advertisement

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

Advertisement

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

Advertisement

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

Advertisement

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

Advertisement

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.koco.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.koco.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

Advertisement

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

Advertisement

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

Loading more articles…



Source link

Advertisement
Continue Reading

Trending