[wp-trac] [WordPress Trac] #44417: Text widget breaks code sometimes, and it's inconsistent
WordPress Trac
noreply at wordpress.org
Wed Jun 20 22:27:44 UTC 2018
#44417: Text widget breaks code sometimes, and it's inconsistent
--------------------------------------------+-----------------------------
Reporter: programmin | Owner: (none)
Type: defect (bug) | Status: new
Priority: normal | Milestone: Awaiting Review
Component: Widgets | Version: trunk
Severity: normal | Keywords:
Focuses: ui, javascript, administration |
--------------------------------------------+-----------------------------
I add the following in a text widget:
{{{
<script type="text/javascript">
loadCountdown = function(data){
var seconds_till;
$("#churchonline_counter").show();
if (data.response.item.isLive) {
return goLive();
} else {
// Parse ISO 8601 date string
date =
data.response.item.eventStartTime.match(/^(\d{4})-0?(\d+)-0?(\d+)[T
]0?(\d+):0?(\d+):0?(\d+)Z$/)
dateString = date[2] + "/" + date[3] + "/" + date[1] + " " +
date[4] + ":" + date[5] + ":" + date[6] + " +0000"
seconds_till = ((new Date(dateString)) - (new Date())) / 1000;
days = Math.floor(seconds_till / 86400);
hours = Math.floor((seconds_till % 86400) / 3600);
minutes = Math.floor((seconds_till % 3600) / 60);
seconds = Math.floor(seconds_till % 60);
return intervalId = setInterval(function() {
if (--seconds < 0) {
seconds = 59;
if (--minutes < 0) {
minutes = 59;
if (--hours < 0) {
hours = 23;
if (--days < 0) {
days = 0;
}
}
}
}
$("#churchonline_counter .days").html((days.toString().length <
2) ? "0" + days : days);
$("#churchonline_counter .hours").html((hours.toString().length
< 2 ? "0" + hours : hours));
$("#churchonline_counter
.minutes").html((minutes.toString().length < 2 ? "0" + minutes :
minutes));
$("#churchonline_counter
.seconds").html((seconds.toString().length < 2 ? "0" + seconds :
seconds));
if (seconds === 0 && minutes === 0 && hours === 0 && days === 0)
{
goLive();
return clearInterval(intervalId);
}
}, 1000);
}
}
</script>
}}}
and it breaks all js on the page, turns && into odd ampersand characters.
The odd thing is that adding a text widget with this code inside it, does
not break and change it into odd ampersand characters:
{{{
<script type="text/javascript">
loadCountdown = function(data){
if (seconds === 0 && minutes === 0 && hours === 0 && days === 0)
{
goLive();
}
}
</script>
}}}
Tested on 4.9.7 and 4.9.6. Some regex/processing must be corrupting it in
more complex cases like this.
--
Ticket URL: <https://core.trac.wordpress.org/ticket/44417>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform
More information about the wp-trac
mailing list