callback(xhr, state);
} else {
xhr.setstatus = true;
- setstatus('Could not connect;<br>check your ' +
- '<a href="' + chrome.extension.getURL('options.html') + '" target=_blank>settings</a>');
+ setstatus(
+ 'Could not connect;<br>check your ' +
+ '<a id="open-settings" href="">settings</a>'
+ );
+ document.getElementById('open-settings').onclick = open_settings_page;
console.log('connect error', state);
}
}
// There is no clean API for extracting the current state.
// Example result:
+ /*
+ <tr>
+ <th bgcolor="#DDDDFF" align=left>
+ Controller: !!!Web Power Switch 6
+ </th>
+ </tr>
+ */
+
+ var th, ths = state.currentTarget.responseXML.querySelectorAll('th');
+ for (var i = 0; th = ths[i]; ++i) {
+ if (th.bgColor != '#DDDDFF')
+ continue;
+
+ var controller_name = trim(th.innerText);
+ if (controller_name.slice(0, 12) != 'Controller: ')
+ continue;
+
+ row = tbl.insertRow(-1);
+ cell = row.insertCell(-1);
+ cell.colSpan = 2;
+ cell.align = 'center';
+ cell.innerText = controller_name.slice(12);
+ cell.innerHTML = '<a href="' + url_base + '" target="_blank">' + cell.innerHTML + '</a>'
+ }
+
/*
<tr bgcolor="#F4F4F4"><td align=center>1</td>
<td>Outlet 1</td><td>
row = tbl.insertRow(-1);
cell = row.insertCell(-1);
- cell.innerText = outlet_name + ':';
+ if (outlet_name === '')
+ cell.innerHTML = '<i>unnamed</i>';
+ else
+ cell.innerText = outlet_name + ':';
cell = row.insertCell(-1);
button = document.createElement('input');
button.type = 'button';
status.style.position = msg ? '' : 'absolute';
}
+function open_settings_page() {
+ chrome.runtime.openOptionsPage();
+}
+
document.addEventListener('DOMContentLoaded', function() {
storage.get(settings_keys, function(settings) {
url_base = settings['url'] || settings_defaults['url'];
user = settings['user'] || settings_defaults['user'];
pass = settings['pass'] || settings_defaults['pass'];
- fetchpage('index.htm', initpopup);
+ chrome.permissions.contains({
+ origins: [url_base + '/*']
+ }, function(granted) {
+ if (granted) {
+ fetchpage('index.htm', initpopup);
+ } else {
+ setstatus(
+ 'Missing permissions;<br>please visit the ' +
+ '<a id="open-settings" href="">settings page</a>' +
+ '<br>to grant access.<br>' +
+ '<center><input id=retry type=submit value=Retry></center>'
+ );
+ document.getElementById('open-settings').onclick = open_settings_page;
+ // Work around http://crbug.com/125706.
+ document.getElementById('retry').onclick = function() {
+ chrome.permissions.request({origins: [url_base + '/*']});
+ fetchpage('index.htm', initpopup);
+ };
+ }
+ });
});
});