Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-74235

[JiraTestResultReporter] Extract inline script blocks and event handlers in org/jenkinsci/plugins/JiraTestResultReporter/JiraTestAction/badge.jelly

    • 245.v5a_2d45c771c9

      Problems

      == Inline Script Block
      Line: 3
      ----
      <script>
              /*
              Create a map of proxies, since this file will be included once for every test
              */
              if (typeof proxyMap === 'undefined') {
                  var proxyMap = [];
              }
              proxyMap["${it}"] = <st:bind value="${it}"/>;
          </script>
      ----
      
      == Inline Script Block
      Line: 34
      ----
      <script>
              function hideshow(which){
                  if (!document.getElementById)
                      return;
                  if (which.style.display=="block")
                      which.style.display="none";
                  else
                      which.style.display="block";
              }
      
      
              function doSubmit(issueLink, spinner, proxyString, errorsDiv) {
                  if(!issueLink.value)
                      return;
                  spinner.style.display="inline";
                  var proxy = proxyMap[proxyString];
                  proxy.setIssueKey(issueLink.value, function(t) {
                      if(t.responseText != "null") {
                          spinner.style.display="none"
                          applyErrorMessage(errorsDiv, t);
                      }
                      else {
                          location.reload();
                      }
                  });
              }
      
      
              function doClear(proxyString) {
                  var proxy = proxyMap[proxyString];
                  proxy.clearIssueKey(function(t) {
                      location.reload();
                  })
              }
      
              function createNewIssue(spinner, proxyString, errorsDiv) {
                  spinner.style.display="inline";
                  var proxy = proxyMap[proxyString];
                  var socketTimeout = setTimeout( function() {
                      spinner.style.display="none";
                      errorsDiv.innerHTML = "Error: Socket Timeout. The issue was probably created, but the server did not respond in a timely manner. Check JIRA to avoid creating duplicated issues.";
                      }, 30000);
                  proxy.createIssue( function(t) {
                      clearTimeout(socketTimeout);
                      if(t.responseText != "null") {
                          spinner.style.display="none";
                          applyErrorMessage(errorsDiv, t);
                      }
                      else {
                          location.reload();
                      }
                  });
              }
      
          </script>
      ----
      
      == Inline Event Handler
      Line: 15
      ----
      <l:icon class="icon-notepad icon-sm" onclick="hideshow(document.getElementById('jira-${it}'))" style="cursor:pointer"/>
      ----
      
      == Inline Event Handler
      Line: 18
      ----
      <a href="#jira" onClick="createNewIssue(document.getElementById('spinner-${it}'), '${it}', document.getElementById('jiraErrors-${it}'))">
      ----
      
      == Inline Event Handler
      Line: 20
      ----
      <img src="${resURL}/plugin/JiraTestResultReporter/submit.png" height="16" width="16" style="cursor:pointer"
                           onClick="doSubmit(document.getElementById('issueKeyInput-${it}'), document.getElementById('spinner-${it}'), '${it}', document.getElementById('jiraErrors-${it}'))" />
      ----
      
      == Inline Event Handler
      Line: 27
      ----
      <img src="${resURL}/plugin/JiraTestResultReporter/remove.png" onClick="doClear('${it}')"  height="16" width="16" style="cursor:pointer"/>
      ----
      

      Solutions

      https://www.jenkins.io/doc/developer/security/csp/#inline-javascript-blocks
      https://www.jenkins.io/doc/developer/security/csp/#inline-event-handlers

          [JENKINS-74235] [JiraTestResultReporter] Extract inline script blocks and event handlers in org/jenkinsci/plugins/JiraTestResultReporter/JiraTestAction/badge.jelly

          Basil Crow created issue -
          Basil Crow made changes -
          Assignee Original: Catalin Luta [ catalinluta ]
          Basil Crow made changes -
          Description Original: h4. Problems

          {noformat}
          == Inline Event Handler
          Line: 15
          ----
          <l:icon class="icon-notepad icon-sm" onclick="hideshow(document.getElementById('jira-${it}'))" style="cursor:pointer"/>
          ----

          == Inline Event Handler
          Line: 18
          ----
          <a href="#jira" onClick="createNewIssue(document.getElementById('spinner-${it}'), '${it}', document.getElementById('jiraErrors-${it}'))">
          ----

          == Inline Event Handler
          Line: 20
          ----
          <img src="${resURL}/plugin/JiraTestResultReporter/submit.png" height="16" width="16" style="cursor:pointer"
                               onClick="doSubmit(document.getElementById('issueKeyInput-${it}'), document.getElementById('spinner-${it}'), '${it}', document.getElementById('jiraErrors-${it}'))" />
          ----

          == Inline Event Handler
          Line: 27
          ----
          <img src="${resURL}/plugin/JiraTestResultReporter/remove.png" onClick="doClear('${it}')" height="16" width="16" style="cursor:pointer"/>
          ----

          == Inline Script Block
          Line: 3
          ----
          <script>
                  /*
                  Create a map of proxies, since this file will be included once for every test
                  */
                  if (typeof proxyMap === 'undefined') {
                      var proxyMap = [];
                  }
                  proxyMap["${it}"] = <st:bind value="${it}"/>;
              </script>
          ----

          == Inline Script Block
          Line: 34
          ----
          <script>
                  function hideshow(which){
                      if (!document.getElementById)
                          return;
                      if (which.style.display=="block")
                          which.style.display="none";
                      else
                          which.style.display="block";
                  }


                  function doSubmit(issueLink, spinner, proxyString, errorsDiv) {
                      if(!issueLink.value)
                          return;
                      spinner.style.display="inline";
                      var proxy = proxyMap[proxyString];
                      proxy.setIssueKey(issueLink.value, function(t) {
                          if(t.responseText != "null") {
                              spinner.style.display="none"
                              applyErrorMessage(errorsDiv, t);
                          }
                          else {
                              location.reload();
                          }
                      });
                  }


                  function doClear(proxyString) {
                      var proxy = proxyMap[proxyString];
                      proxy.clearIssueKey(function(t) {
                          location.reload();
                      })
                  }

                  function createNewIssue(spinner, proxyString, errorsDiv) {
                      spinner.style.display="inline";
                      var proxy = proxyMap[proxyString];
                      var socketTimeout = setTimeout( function() {
                          spinner.style.display="none";
                          errorsDiv.innerHTML = "Error: Socket Timeout. The issue was probably created, but the server did not respond in a timely manner. Check JIRA to avoid creating duplicated issues.";
                          }, 30000);
                      proxy.createIssue( function(t) {
                          clearTimeout(socketTimeout);
                          if(t.responseText != "null") {
                              spinner.style.display="none";
                              applyErrorMessage(errorsDiv, t);
                          }
                          else {
                              location.reload();
                          }
                      });
                  }

              </script>
          ----

          == Inline Event Handler
          Line: 15
          ----
          <l:icon class="icon-notepad icon-sm" onclick="hideshow(document.getElementById('jira-${it}'))" style="cursor:pointer"/>
          ----

          == Inline Event Handler
          Line: 18
          ----
          <a href="#jira" onClick="createNewIssue(document.getElementById('spinner-${it}'), '${it}', document.getElementById('jiraErrors-${it}'))">
          ----

          == Inline Event Handler
          Line: 20
          ----
          <img src="${resURL}/plugin/JiraTestResultReporter/submit.png" height="16" width="16" style="cursor:pointer"
                               onClick="doSubmit(document.getElementById('issueKeyInput-${it}'), document.getElementById('spinner-${it}'), '${it}', document.getElementById('jiraErrors-${it}'))" />
          ----

          == Inline Event Handler
          Line: 27
          ----
          <img src="${resURL}/plugin/JiraTestResultReporter/remove.png" onClick="doClear('${it}')" height="16" width="16" style="cursor:pointer"/>
          ----

          == Inline Script Block
          Line: 3
          ----
          <script>
                  /*
                  Create a map of proxies, since this file will be included once for every test
                  */
                  if (typeof proxyMap === 'undefined') {
                      var proxyMap = [];
                  }
                  proxyMap["${it}"] = <st:bind value="${it}"/>;
              </script>
          ----

          == Inline Script Block
          Line: 34
          ----
          <script>
                  function hideshow(which){
                      if (!document.getElementById)
                          return;
                      if (which.style.display=="block")
                          which.style.display="none";
                      else
                          which.style.display="block";
                  }


                  function doSubmit(issueLink, spinner, proxyString, errorsDiv) {
                      if(!issueLink.value)
                          return;
                      spinner.style.display="inline";
                      var proxy = proxyMap[proxyString];
                      proxy.setIssueKey(issueLink.value, function(t) {
                          if(t.responseText != "null") {
                              spinner.style.display="none"
                              applyErrorMessage(errorsDiv, t);
                          }
                          else {
                              location.reload();
                          }
                      });
                  }


                  function doClear(proxyString) {
                      var proxy = proxyMap[proxyString];
                      proxy.clearIssueKey(function(t) {
                          location.reload();
                      })
                  }

                  function createNewIssue(spinner, proxyString, errorsDiv) {
                      spinner.style.display="inline";
                      var proxy = proxyMap[proxyString];
                      var socketTimeout = setTimeout( function() {
                          spinner.style.display="none";
                          errorsDiv.innerHTML = "Error: Socket Timeout. The issue was probably created, but the server did not respond in a timely manner. Check JIRA to avoid creating duplicated issues.";
                          }, 30000);
                      proxy.createIssue( function(t) {
                          clearTimeout(socketTimeout);
                          if(t.responseText != "null") {
                              spinner.style.display="none";
                              applyErrorMessage(errorsDiv, t);
                          }
                          else {
                              location.reload();
                          }
                      });
                  }

              </script>
          ----
          {noformat}

          h4. Solutions

          [https://www.jenkins.io/doc/developer/security/csp/#inline-javascript-blocks]
          [https://www.jenkins.io/doc/developer/security/csp/#inline-event-handlers]
          New: h4. Problems

          {noformat}
          == Inline Script Block
          Line: 3
          ----
          <script>
                  /*
                  Create a map of proxies, since this file will be included once for every test
                  */
                  if (typeof proxyMap === 'undefined') {
                      var proxyMap = [];
                  }
                  proxyMap["${it}"] = <st:bind value="${it}"/>;
              </script>
          ----

          == Inline Script Block
          Line: 34
          ----
          <script>
                  function hideshow(which){
                      if (!document.getElementById)
                          return;
                      if (which.style.display=="block")
                          which.style.display="none";
                      else
                          which.style.display="block";
                  }


                  function doSubmit(issueLink, spinner, proxyString, errorsDiv) {
                      if(!issueLink.value)
                          return;
                      spinner.style.display="inline";
                      var proxy = proxyMap[proxyString];
                      proxy.setIssueKey(issueLink.value, function(t) {
                          if(t.responseText != "null") {
                              spinner.style.display="none"
                              applyErrorMessage(errorsDiv, t);
                          }
                          else {
                              location.reload();
                          }
                      });
                  }


                  function doClear(proxyString) {
                      var proxy = proxyMap[proxyString];
                      proxy.clearIssueKey(function(t) {
                          location.reload();
                      })
                  }

                  function createNewIssue(spinner, proxyString, errorsDiv) {
                      spinner.style.display="inline";
                      var proxy = proxyMap[proxyString];
                      var socketTimeout = setTimeout( function() {
                          spinner.style.display="none";
                          errorsDiv.innerHTML = "Error: Socket Timeout. The issue was probably created, but the server did not respond in a timely manner. Check JIRA to avoid creating duplicated issues.";
                          }, 30000);
                      proxy.createIssue( function(t) {
                          clearTimeout(socketTimeout);
                          if(t.responseText != "null") {
                              spinner.style.display="none";
                              applyErrorMessage(errorsDiv, t);
                          }
                          else {
                              location.reload();
                          }
                      });
                  }

              </script>
          ----

          == Inline Event Handler
          Line: 15
          ----
          <l:icon class="icon-notepad icon-sm" onclick="hideshow(document.getElementById('jira-${it}'))" style="cursor:pointer"/>
          ----

          == Inline Event Handler
          Line: 18
          ----
          <a href="#jira" onClick="createNewIssue(document.getElementById('spinner-${it}'), '${it}', document.getElementById('jiraErrors-${it}'))">
          ----

          == Inline Event Handler
          Line: 20
          ----
          <img src="${resURL}/plugin/JiraTestResultReporter/submit.png" height="16" width="16" style="cursor:pointer"
                               onClick="doSubmit(document.getElementById('issueKeyInput-${it}'), document.getElementById('spinner-${it}'), '${it}', document.getElementById('jiraErrors-${it}'))" />
          ----

          == Inline Event Handler
          Line: 27
          ----
          <img src="${resURL}/plugin/JiraTestResultReporter/remove.png" onClick="doClear('${it}')" height="16" width="16" style="cursor:pointer"/>
          ----
          {noformat}

          h4. Solutions

          [https://www.jenkins.io/doc/developer/security/csp/#inline-javascript-blocks]
          [https://www.jenkins.io/doc/developer/security/csp/#inline-event-handlers]
          Yaroslav Afenkin made changes -
          Assignee New: Yaroslav Afenkin [ yafenkin ]
          Yaroslav Afenkin made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]
          Yaroslav Afenkin made changes -
          Remote Link New: This issue links to "jenkinsci/JiraTestResultReporter-plugin/pull/183 (Web Link)" [ 30210 ]
          Yaroslav Afenkin made changes -
          Status Original: In Progress [ 3 ] New: In Review [ 10005 ]

          Basil Crow added a comment -

          Basil Crow added a comment - Fixed in jenkinsci/JiraTestResultReporter-plugin#183 . Released in 245.v5a_2d45c771c9 .
          Basil Crow made changes -
          Released As New: 245.v5a_2d45c771c9
          Resolution New: Fixed [ 1 ]
          Status Original: In Review [ 10005 ] New: Closed [ 6 ]

            yafenkin Yaroslav Afenkin
            basil Basil Crow
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: