[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