errorReport.xul (5147B)
1 <?xml version="1.0"?> 2 3 <?xml-stylesheet href="chrome://global/skin/" type="text/css"?> 4 <?xml-stylesheet href="chrome://zotero/skin/errorReport.css" type="text/css"?> 5 6 <!DOCTYPE window SYSTEM "chrome://zotero/locale/zotero.dtd"> 7 8 <wizard xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul" 9 id="zotero-error-report" title="&zotero.errorReport.title;" 10 width="550" height="450"> 11 12 <script> 13 <![CDATA[ 14 Components.utils.import("resource://zotero/config.js"); 15 16 var Zotero_Error_Report = new function() { 17 var obj = window.arguments[0].wrappedJSObject; 18 var Zotero = obj.Zotero; 19 var data = obj.data; 20 var msg = data.msg; 21 var errorData = data.errorData; 22 var extraData = data.extraData ? data.extraData : ''; 23 var diagnosticInfo = false; 24 25 26 this.init = Zotero.Promise.coroutine(function* () { 27 var wizard = document.getElementById('zotero-error-report'); 28 var continueButton = wizard.getButton('next'); 29 continueButton.disabled = true; 30 31 diagnosticInfo = yield Zotero.getSystemInfo(); 32 var errorDataText = errorData.length 33 ? data.errorData.join('\n\n') 34 : Zotero.getString('errorReport.noErrorsLogged', Zotero.appName); 35 36 var logText = errorDataText + '\n\n' 37 + (extraData !== '' ? extraData + '\n\n' : '') 38 + diagnosticInfo; 39 40 if (document.getElementById('zotero-failure-message').hasChildNodes()) { 41 var textNode = document.getElementById('zotero-failure-message').firstChild; 42 document.getElementById('zotero-failure-message').removeChild(textNode); 43 } 44 45 document.getElementById('zotero-failure-message').appendChild(document.createTextNode(msg)); 46 document.getElementById('zotero-error-message').value = logText; 47 48 continueButton.disabled = false; 49 continueButton.focus(); 50 var str = Zotero.getString( 51 'errorReport.advanceMessage', continueButton.getAttribute('label') 52 ); 53 document.getElementById('zotero-advance-message').setAttribute('value', str); 54 }); 55 56 this.sendErrorReport = Zotero.Promise.coroutine(function* () { 57 var wizard = document.getElementById('zotero-error-report'); 58 var continueButton = wizard.getButton('next'); 59 continueButton.disabled = true; 60 61 var parts = { 62 error: "true", 63 errorData: errorData.join('\n'), 64 extraData: extraData, 65 diagnostic: diagnosticInfo 66 }; 67 68 var body = ''; 69 for (var key in parts) { 70 body += key + '=' + encodeURIComponent(parts[key]) + '&'; 71 } 72 body = body.substr(0, body.length - 1); 73 var req = yield Zotero.HTTP.request( 74 "POST", 75 ZOTERO_CONFIG.REPOSITORY_URL + "report", 76 { 77 body, 78 successCodes: false, 79 foreground: true 80 } 81 ); 82 _sendErrorReportCallback(req); 83 }); 84 85 86 function _sendErrorReportCallback(xmlhttp) { 87 var wizard = document.getElementById('zotero-error-report'); 88 if (!wizard) { 89 return; 90 } 91 92 var ps = Components.classes["@mozilla.org/embedcomp/prompt-service;1"] 93 .getService(Components.interfaces.nsIPromptService); 94 95 if (!xmlhttp.responseXML){ 96 try { 97 if (xmlhttp.status>1000){ 98 ps.alert( 99 null, 100 Zotero.getString('general.error'), 101 Zotero.getString('errorReport.noNetworkConnection') 102 ); 103 } 104 else { 105 ps.alert( 106 null, 107 Zotero.getString('general.error'), 108 Zotero.getString('errorReport.invalidResponseRepository') 109 ); 110 } 111 } 112 catch (e){ 113 ps.alert( 114 null, 115 Zotero.getString('general.error'), 116 Zotero.getString('errorReport.repoCannotBeContacted') 117 ); 118 } 119 120 wizard.rewind(); 121 return; 122 } 123 124 125 var reported = xmlhttp.responseXML.getElementsByTagName('reported'); 126 if (reported.length != 1) { 127 ps.alert( 128 null, 129 Zotero.getString('general.error'), 130 Zotero.getString('errorReport.invalidResponseRepository') 131 ); 132 wizard.rewind(); 133 return; 134 } 135 136 wizard.advance(); 137 wizard.getButton('cancel').disabled = true;; 138 wizard.canRewind = false; 139 var reportID = reported[0].getAttribute('reportID'); 140 document.getElementById('zotero-report-id').setAttribute('value', reportID); 141 document.getElementById('zotero-report-result').hidden = false; 142 } 143 } 144 ]]> 145 </script> 146 147 <wizardpage onpageshow="Zotero_Error_Report.init()" label=" "> 148 <description id="zotero-failure-message"/> 149 <textbox id="zotero-error-message" class="plain" readonly="true" multiline="true" flex="1"/> 150 <description id="zotero-advance-message"/> 151 </wizardpage> 152 153 <wizardpage onpageshow="Zotero_Error_Report.sendErrorReport()" label=" "> 154 <description>&zotero.errorReport.submissionInProgress;</description> 155 </wizardpage> 156 157 <wizardpage label=" "> 158 <description>&zotero.errorReport.submitted;</description> 159 <description id="zotero-report-result" hidden="true"> 160 &zotero.errorReport.reportID; 161 <textbox id="zotero-report-id" class="plain" readonly="true"/> 162 </description> 163 <description>&zotero.errorReport.postToForums;</description> 164 <description>&zotero.errorReport.notReviewed;</description> 165 </wizardpage> 166 </wizard>