aboutsummaryrefslogtreecommitdiff
path: root/chrome/js/redirector-ui.js
diff options
context:
space:
mode:
authorGitoffthelawn <Gitoffthelawn@users.noreply.github.com>2015-05-05 11:25:51 -0700
committerGitoffthelawn <Gitoffthelawn@users.noreply.github.com>2015-05-05 11:25:51 -0700
commit191d94f92f1c7746f129faeb84f3eb79bece0144 (patch)
tree014986703e849133b5ed5f0f69e2478f05293437 /chrome/js/redirector-ui.js
parent239262b5f3c44ea4f64cbd3509ba21cbd8c60f4d (diff)
Update redirector-ui.js
Improve usability, fix bug when testing rule, show description of each rule, show whether or not filter is enabled.
Diffstat (limited to 'chrome/js/redirector-ui.js')
-rw-r--r--chrome/js/redirector-ui.js30
1 files changed, 28 insertions, 2 deletions
diff --git a/chrome/js/redirector-ui.js b/chrome/js/redirector-ui.js
index 49526e3..3c03128 100644
--- a/chrome/js/redirector-ui.js
+++ b/chrome/js/redirector-ui.js
@@ -62,6 +62,30 @@ function validateRedirect(redirect) {
return true;
}
+function validateRedirectForTest(redirect) {
+ if (!/^\s*$/.test(redirect.exampleUrl)) {
+ var result = redirect.getMatch(redirect.exampleUrl);
+ if (!result.isMatch) {
+ return true;
+ } else {
+ var resultUrl = result.redirectTo;
+ if (!resultUrl.match(/https?:/)) {
+ var uri = IOService.newURI(redirect.exampleUrl, null, null);
+ resultUrl = uri.resolve(resultUrl);
+ }
+
+ var secondResult = redirect.getMatch(resultUrl);
+ if (secondResult.isMatch) {
+ title = tr('errorExampleUrlMatchesRecursiveTitle');
+ msg = tr('errorExampleUrlMatchesRecursive', [redirect.exampleUrl, resultUrl]);
+ alert(title, msg);
+ return false;
+ }
+ }
+ }
+ return true;
+}
+
function trPlural(name, count) {
name += count == 1 ? 'Singular' : '';
return strings.formatStringFromName(name, [count],1);
@@ -134,10 +158,12 @@ function databind() {
for (var i = 0; i < Redirector.redirectCount; i++) {
var redirect = Redirector.getRedirectAt(i);
var node = $(template);
+ node.find('.description').html(redirect.description);
node.find('.pattern').html(redirect.includePattern);
node.find('.redirectTo').html(redirect.redirectUrl);
node.find('.exampleUrl').html(redirect.exampleUrl);
node.find('.redirectResult').html(redirect.getMatch(redirect.exampleUrl).redirectTo);
+ if (redirect.disabled) { node.find('.disabled').html('[Disabled] '); }
node.appendTo('#redirect-list');
node.data('redirect', redirect);
}
@@ -182,7 +208,7 @@ function controlsToRedirect(redirect) {
redirect.description = $('#description').val();
redirect.exampleUrl = $('#example-url').val();
redirect.redirectUrl = $('#redirect-to').val();
- redirect.disabled = !$('#redirect-enabled').attr('checked');
+ redirect.disabled = !$('#redirect-enabled').attr('checked');
redirect.unescapeMatches = $('#unescape-matches').attr('checked');
redirect.escapeMatches = $('#escape-matches').attr('checked');
return true;
@@ -225,7 +251,7 @@ function testPattern() {
return;
}
var extName = tr('extensionName');
- if (!validateRedirect(redirect)) {
+ if (!validateRedirectForTest(redirect)) {
return;
}
var result = redirect.test();