Redirector is an extension for Firefox that allows you to automatically redirect from
- one webpage to another. For example, every time you visit http://abc.com you will automatically
- load http://def.com instead. This can be useful for instance to always redirect articles to printer friendly
- versions, redirect http:// to https:// for sites that support both, bypass advertising pages that appear before
- being able to view certain pages and more.
-
-
-
Basic usage
-
To add a new redirect you can go to the Tools menuitem and select Redirector. That will
- open the Redirector settings window which shows all your redirects. The window can also be opened
- by right clicking on the R icon in your statusbar.
- There you can press the Add... button and then you can enter the details for the new redirect. A redirect
- consists of a few things:
-
-
Example url: This is an example of an url you want to redirect. It is not really used for anything,
- it's just there to show what types of urls you're targetting. You can leave this out, but then you can't use the Test pattern button.
-
-
Include pattern: This is pattern for the urls you want to redirect. In the simplest case, where you just want
- to redirect one specific url to another then this will just be the exact url you want to redirect. For instance, if you just want http://aaa.com to
- redirect to http://bbb.com then Include pattern will just be http://aaa.com. For more complex patterns that match many
- urls you can use either wildcards or regular expressions.
-
-
Exclude pattern: Urls that match this pattern will never be redirected. This is not necessary to
- fill out, but can be useful when you want to redirect all urls that contain some text except if they contain some other text.
- Redirects like that can often be done with a complex regular expression, but using an exclude pattern makes it much simpler. The exclude
- patterns can use wildcard characters or regular expressions like the include patterns.
-
-
Redirect to: This is the url that you will be redirected to when you open any page where the url matches the
- include pattern. You can use the special signs $1, $2, $3 etc. in the url, they will be replaced by the results of captures with regular
- expressions or stars with wildcards. For instance, if you have the include pattern http://google.com/*, redirect to http://froogle.com/$1
- and you open the page http://google.com/foobar, then you will be redireced to http://froogle.com/foobar, since 'foobar' was what the star replaced. $1 is for the
- first star in the pattern, $2 for the second and so on. For regular expression $1 is for the first parantheses, $2 for the second etc.
-
-
Pattern type: This specifies how Redirector should interpret the patterns, either as
- wildcards or regular expressions.
-
-
Unescape matches: A common usage of Redirector is to catch urls like
- http://foo.com/redirect.php?url=http%3A%2F%2Fbar%2Ecom%2Fpath and try to catch the url parameter and redirect to it. A pattern
- like http://foo.com/redirect.php?url=* might be used for that purpose. However, if the url parameter is escaped (also known
- as urlencoded) then that won't work. In the url above we see that it starts with http%3A%2F%2F instead of http://, and Firefox
- won't accept this as a new url to redirect to. So, in cases like these you can check the Unescape matches option and then all
- matches will be unescaped (turned from e.g. http%3A%2F%2Fbar%2Ecom to http://bar.com) before being inserted into the target url.
-
-
-
-
-
-
-
Wildcards
-
-
Wildcards are the simplest way to specify include and exclude patterns. When you create a wildcard pattern there
- is just one special character, the asterisk *. An asterisk in your pattern will match zero or more characters and you can
- have more than one star in your pattern. Some examples:
-
-
http://example.com/* matches http://example.com/, http://example.com/foo, http://example.com/bar and all other urls that start with http://example.com/.
-
http://*.example.com matches all subdomains of example.com, like http://www.example.com, http://mail.example.com.
-
http*://example.com matches both http://example.com and https://example.com.
- $1, $2, $3 in the redirect urls will match the text that the stars matched. Examples:
-
-
http://example.com/* matches http://example.com/foobar, $1 is foobar.
-
http://*.example.com/* matches http://www.example.com/foobar, $1 is www, $2 is foobar.
-
-
-
-
-
Regular expressions
-
-
Regular expressions allow for more complicated patterns but they are a lot harder to learn than wildcards. I'm not gonna
- create a regex tutorial here but normal javascript regex syntax works, look at http://regular-expressions.info for
- an introduction to regular expressions. $1,$2 etc. can be used in the redirect url and will be replaced with contents of captures in
- the regular expressions. Captures are specified with parantheses. Example: http://example.com/index.asp\?id=(\d+) will match the url
- http://example.com/index.asp?id=12345 and $1 will be replaced by 12345. (A common mistake in regex patterns is to forget to escape
- the ? sign in the querystring of the url. ? is a special character in regular expressions so if you want to match an url with a querystring
- you should escape it as \?).
-
-
-
Examples
-
-
-
- Static redirect
- Redirects from http://example.com/foo to http://example.com/bar
-
- Include pattern: http://example.com/foo
- Exclude pattern:
- Redirect to: http://example.com/bar
- Pattern type: Wildcard
-
-
-
-
- Redirect using query string parameter and wildcards
- Redirects from http://example.com/index.php?id=12345&a=b to http://example.com/printerfriendly.php?id=12345&a=b
- where 12345 could be any number.
-
- Include pattern: http://example.com/index.php?id=*&a=b
- Exclude pattern:
- Redirect to: http://example.com/printerfriendly.com?id=$1&a=b
- Pattern type: Wildcard
-
-
-
- Redirect using query string parameter and regular expressions
- Redirects from http://example.com/index.php?id=12345&a=b to http://example.com/printerfriendly.php?id=12345&a=b
- where 12345 could be any number.
-
- Include pattern: http://example.com/index.php\?id=(\d+)&a=b
- Exclude pattern:
- Redirect to: http://example.com/printerfriendly.com?id=$1&a=b
- Pattern type: Regular Expression
-
-
-
- Redirect to a different folder using wildcards
- Redirects from http://example.com/category/fish/index.php to http://example.com/category/cats/index.php
- where fish could be any word. The exclude pattern makes sure that there is only one
- folder there, so for instance http://example.com/category/fish/cat/mouse/index.php would not match.
-
- Include pattern: http://example.com/category/*/index.php
- Exclude pattern: http://example.com/category/*/*/index.php
- Redirect to: http://example.com/category/cats/index.php
- Pattern type: Wildcard
-
-
-
- Redirect http to https using wildcards
- Redirects from http://mail.google.com/randomcharacters to https://mail.google.com/randomcharacters
- where randomcharacters could be anything.
-
- Include pattern: http://mail.google.com*
- Exclude pattern:
- Redirect to: https://mail.google.com$1
- Pattern type: Wildcard
-
a",d=a.getElementsByTagName("*"),e=a.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=a.getElementsByTagName("input")[0],k={leadingWhitespace:a.firstChild.nodeType===3,tbody:!a.getElementsByTagName("tbody").length,htmlSerialize:!!a.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55$/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:a.className!=="t",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,k.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,k.optDisabled=!h.disabled;try{delete a.test}catch(v){k.deleteExpando=!1}!a.addEventListener&&a.attachEvent&&a.fireEvent&&(a.attachEvent("onclick",function(){k.noCloneEvent=!1}),a.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),k.radioValue=i.value==="t",i.setAttribute("checked","checked"),a.appendChild(i),l=c.createDocumentFragment(),l.appendChild(a.firstChild),k.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,a.innerHTML="",a.style.width=a.style.paddingLeft="1px",m=c.getElementsByTagName("body")[0],o=c.createElement(m?"div":"body"),p={visibility:"hidden",width:0,height:0,border:0,margin:0},m&&f.extend(p,{position:"absolute",left:-1e3,top:-1e3});for(t in p)o.style[t]=p[t];o.appendChild(a),n=m||b,n.insertBefore(o,n.firstChild),k.appendChecked=i.checked,k.boxModel=a.offsetWidth===2,"zoom"in a.style&&(a.style.display="inline",a.style.zoom=1,k.inlineBlockNeedsLayout=a.offsetWidth===2,a.style.display="",a.innerHTML="",k.shrinkWrapBlocks=a.offsetWidth!==2),a.innerHTML="
Redirector is an extension for Firefox that allows you to automatically redirect from
+ one webpage to another. For example, every time you visit http://abc.com you will automatically
+ load http://def.com instead. This can be useful for instance to always redirect articles to printer friendly
+ versions, redirect http:// to https:// for sites that support both, bypass advertising pages that appear before
+ being able to view certain pages and more.
+
+
+
Basic usage
+
To add a new redirect you can go to the Tools menuitem and select Redirector. That will
+ open the Redirector settings window which shows all your redirects. The window can also be opened
+ by right clicking on the R icon in your statusbar.
+ There you can press the Add... button and then you can enter the details for the new redirect. A redirect
+ consists of a few things:
+
+
Example url: This is an example of an url you want to redirect. It is not really used for anything,
+ it's just there to show what types of urls you're targetting. You can leave this out, but then you can't use the Test pattern button.
+
+
Include pattern: This is pattern for the urls you want to redirect. In the simplest case, where you just want
+ to redirect one specific url to another then this will just be the exact url you want to redirect. For instance, if you just want http://aaa.com to
+ redirect to http://bbb.com then Include pattern will just be http://aaa.com. For more complex patterns that match many
+ urls you can use either wildcards or regular expressions.
+
+
Exclude pattern: Urls that match this pattern will never be redirected. This is not necessary to
+ fill out, but can be useful when you want to redirect all urls that contain some text except if they contain some other text.
+ Redirects like that can often be done with a complex regular expression, but using an exclude pattern makes it much simpler. The exclude
+ patterns can use wildcard characters or regular expressions like the include patterns.
+
+
Redirect to: This is the url that you will be redirected to when you open any page where the url matches the
+ include pattern. You can use the special signs $1, $2, $3 etc. in the url, they will be replaced by the results of captures with regular
+ expressions or stars with wildcards. For instance, if you have the include pattern http://google.com/*, redirect to http://froogle.com/$1
+ and you open the page http://google.com/foobar, then you will be redireced to http://froogle.com/foobar, since 'foobar' was what the star replaced. $1 is for the
+ first star in the pattern, $2 for the second and so on. For regular expression $1 is for the first parantheses, $2 for the second etc.
+
+
Pattern type: This specifies how Redirector should interpret the patterns, either as
+ wildcards or regular expressions.
+
+
Unescape matches: A common usage of Redirector is to catch urls like
+ http://foo.com/redirect.php?url=http%3A%2F%2Fbar%2Ecom%2Fpath and try to catch the url parameter and redirect to it. A pattern
+ like http://foo.com/redirect.php?url=* might be used for that purpose. However, if the url parameter is escaped (also known
+ as urlencoded) then that won't work. In the url above we see that it starts with http%3A%2F%2F instead of http://, and Firefox
+ won't accept this as a new url to redirect to. So, in cases like these you can check the Unescape matches option and then all
+ matches will be unescaped (turned from e.g. http%3A%2F%2Fbar%2Ecom to http://bar.com) before being inserted into the target url.
+
+
+
+
+
+
+
Wildcards
+
+
Wildcards are the simplest way to specify include and exclude patterns. When you create a wildcard pattern there
+ is just one special character, the asterisk *. An asterisk in your pattern will match zero or more characters and you can
+ have more than one star in your pattern. Some examples:
+
+
http://example.com/* matches http://example.com/, http://example.com/foo, http://example.com/bar and all other urls that start with http://example.com/.
+
http://*.example.com matches all subdomains of example.com, like http://www.example.com, http://mail.example.com.
+
http*://example.com matches both http://example.com and https://example.com.
+ $1, $2, $3 in the redirect urls will match the text that the stars matched. Examples:
+
+
http://example.com/* matches http://example.com/foobar, $1 is foobar.
+
http://*.example.com/* matches http://www.example.com/foobar, $1 is www, $2 is foobar.
+
+
+
+
+
Regular expressions
+
+
Regular expressions allow for more complicated patterns but they are a lot harder to learn than wildcards. I'm not gonna
+ create a regex tutorial here but normal javascript regex syntax works, look at http://regular-expressions.info for
+ an introduction to regular expressions. $1,$2 etc. can be used in the redirect url and will be replaced with contents of captures in
+ the regular expressions. Captures are specified with parantheses. Example: http://example.com/index.asp\?id=(\d+) will match the url
+ http://example.com/index.asp?id=12345 and $1 will be replaced by 12345. (A common mistake in regex patterns is to forget to escape
+ the ? sign in the querystring of the url. ? is a special character in regular expressions so if you want to match an url with a querystring
+ you should escape it as \?).
+
+
+
Examples
+
+
+
+ Static redirect
+ Redirects from http://example.com/foo to http://example.com/bar
+
+ Include pattern: http://example.com/foo
+ Exclude pattern:
+ Redirect to: http://example.com/bar
+ Pattern type: Wildcard
+
+
+
+
+ Redirect using query string parameter and wildcards
+ Redirects from http://example.com/index.php?id=12345&a=b to http://example.com/printerfriendly.php?id=12345&a=b
+ where 12345 could be any number.
+
+ Include pattern: http://example.com/index.php?id=*&a=b
+ Exclude pattern:
+ Redirect to: http://example.com/printerfriendly.com?id=$1&a=b
+ Pattern type: Wildcard
+
+
+
+ Redirect using query string parameter and regular expressions
+ Redirects from http://example.com/index.php?id=12345&a=b to http://example.com/printerfriendly.php?id=12345&a=b
+ where 12345 could be any number.
+
+ Include pattern: http://example.com/index.php\?id=(\d+)&a=b
+ Exclude pattern:
+ Redirect to: http://example.com/printerfriendly.com?id=$1&a=b
+ Pattern type: Regular Expression
+
+
+
+ Redirect to a different folder using wildcards
+ Redirects from http://example.com/category/fish/index.php to http://example.com/category/cats/index.php
+ where fish could be any word. The exclude pattern makes sure that there is only one
+ folder there, so for instance http://example.com/category/fish/cat/mouse/index.php would not match.
+
+ Include pattern: http://example.com/category/*/index.php
+ Exclude pattern: http://example.com/category/*/*/index.php
+ Redirect to: http://example.com/category/cats/index.php
+ Pattern type: Wildcard
+
+
+
+ Redirect http to https using wildcards
+ Redirects from http://mail.google.com/randomcharacters to https://mail.google.com/randomcharacters
+ where randomcharacters could be anything.
+
+ Include pattern: http://mail.google.com*
+ Exclude pattern:
+ Redirect to: https://mail.google.com$1
+ Pattern type: Wildcard
+
+
+
+
+
\ No newline at end of file
diff --git a/images/redirector.png b/images/redirector.png
new file mode 100644
index 0000000..f8de12c
Binary files /dev/null and b/images/redirector.png differ
diff --git a/images/statusactive.png b/images/statusactive.png
new file mode 100644
index 0000000..3127229
Binary files /dev/null and b/images/statusactive.png differ
diff --git a/images/statusinactive.png b/images/statusinactive.png
new file mode 100644
index 0000000..4c0438e
Binary files /dev/null and b/images/statusinactive.png differ
diff --git a/install.rdf b/install.rdf
deleted file mode 100644
index 6ab60a0..0000000
--- a/install.rdf
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
- redirector@einaregilsson.com
- Redirector
- 2.9.3
- Einar Egilsson
- Noah Luck Easterly
- https://github.com/gitoffthelawn
- https://github.com/Frogomeli
- Automatically redirects to user-defined urls on certain pages
- http://einaregilsson.com/redirector/
- chrome://redirector/content/redirector.html
- 3
- chrome://redirector/content/images/redirector.png
- 2
- true
-
-
- {ec8030f7-c20a-464f-9b0e-13a3a9e97384}
- 17.0
- 38.*
-
-
-
-
\ No newline at end of file
diff --git a/js/angular.min.js b/js/angular.min.js
new file mode 100644
index 0000000..85409f6
--- /dev/null
+++ b/js/angular.min.js
@@ -0,0 +1,293 @@
+/*
+ AngularJS v1.4.4
+ (c) 2010-2015 Google, Inc. http://angularjs.org
+ License: MIT
+*/
+(function(O,W,t){'use strict';function L(b){return function(){var a=arguments[0],c;c="["+(b?b+":":"")+a+"] http://errors.angularjs.org/1.4.4/"+(b?b+"/":"")+a;for(a=1;a").append(b).html();try{return b[0].nodeType===Pa?M(c):c.match(/^(<[^>]+>)/)[1].replace(/^<([\w\-]+)/,function(a,b){return"<"+M(b)})}catch(d){return M(c)}}function wc(b){try{return decodeURIComponent(b)}catch(a){}}function xc(b){var a={};m((b||"").split("&"),function(b){var d,e,f;b&&(e=
+b=b.replace(/\+/g,"%20"),d=b.indexOf("="),-1!==d&&(e=b.substring(0,d),f=b.substring(d+1)),e=wc(e),x(e)&&(f=x(f)?wc(f):!0,Na.call(a,e)?G(a[e])?a[e].push(f):a[e]=[a[e],f]:a[e]=f))});return a}function Pb(b){var a=[];m(b,function(b,d){G(b)?m(b,function(b){a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))}):a.push(ma(d,!0)+(!0===b?"":"="+ma(b,!0)))});return a.length?a.join("&"):""}function nb(b){return ma(b,!0).replace(/%26/gi,"&").replace(/%3D/gi,"=").replace(/%2B/gi,"+")}function ma(b,a){return encodeURIComponent(b).replace(/%40/gi,
+"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%3B/gi,";").replace(/%20/g,a?"%20":"+")}function Yd(b,a){var c,d,e=Qa.length;for(d=0;d/,">"));}a=a||[];a.unshift(["$provide",function(a){a.value("$rootElement",b)}]);c.debugInfoEnabled&&a.push(["$compileProvider",function(a){a.debugInfoEnabled(!0)}]);a.unshift("ng");d=eb(a,c.strictDi);d.invoke(["$rootScope","$rootElement","$compile","$injector",function(a,b,c,d){a.$apply(function(){b.data("$injector",
+d);c(b)(a)})}]);return d},e=/^NG_ENABLE_DEBUG_INFO!/,f=/^NG_DEFER_BOOTSTRAP!/;O&&e.test(O.name)&&(c.debugInfoEnabled=!0,O.name=O.name.replace(e,""));if(O&&!f.test(O.name))return d();O.name=O.name.replace(f,"");aa.resumeBootstrap=function(b){m(b,function(b){a.push(b)});return d()};C(aa.resumeDeferredBootstrap)&&aa.resumeDeferredBootstrap()}function $d(){O.name="NG_ENABLE_DEBUG_INFO!"+O.name;O.location.reload()}function ae(b){b=aa.element(b).injector();if(!b)throw Ea("test");return b.get("$$testability")}
+function zc(b,a){a=a||"_";return b.replace(be,function(b,d){return(d?a:"")+b.toLowerCase()})}function ce(){var b;if(!Ac){var a=ob();la=O.jQuery;x(a)&&(la=null===a?t:O[a]);la&&la.fn.on?(z=la,Q(la.fn,{scope:Ra.scope,isolateScope:Ra.isolateScope,controller:Ra.controller,injector:Ra.injector,inheritedData:Ra.inheritedData}),b=la.cleanData,la.cleanData=function(a){var d;if(Qb)Qb=!1;else for(var e=0,f;null!=(f=a[e]);e++)(d=la._data(f,"events"))&&d.$destroy&&la(f).triggerHandler("$destroy");b(a)}):z=R;aa.element=
+z;Ac=!0}}function pb(b,a,c){if(!b)throw Ea("areq",a||"?",c||"required");return b}function Sa(b,a,c){c&&G(b)&&(b=b[b.length-1]);pb(C(b),a,"not a function, got "+(b&&"object"===typeof b?b.constructor.name||"Object":typeof b));return b}function Ta(b,a){if("hasOwnProperty"===b)throw Ea("badname",a);}function Bc(b,a,c){if(!a)return b;a=a.split(".");for(var d,e=b,f=a.length,g=0;g$2>")+d[2];for(d=d[0];d--;)c=c.lastChild;f=cb(f,c.childNodes);c=e.firstChild;c.textContent=""}else f.push(a.createTextNode(b));e.textContent="";e.innerHTML="";m(f,function(a){e.appendChild(a)});return e}function R(b){if(b instanceof R)return b;var a;I(b)&&(b=T(b),a=!0);if(!(this instanceof R)){if(a&&"<"!=b.charAt(0))throw Tb("nosel");return new R(b)}if(a){a=W;var c;b=(c=Df.exec(b))?[a.createElement(c[1])]:
+(c=Lc(b,a))?c.childNodes:[]}Mc(this,b)}function Ub(b){return b.cloneNode(!0)}function tb(b,a){a||ub(b);if(b.querySelectorAll)for(var c=b.querySelectorAll("*"),d=0,e=c.length;dk&&this.remove(r.key);
+return b}},get:function(a){if(k").parent()[0])});var f=S(a,b,a,c,d,e);V.$$addScopeClass(a);var g=null;return function(b,c,d){pb(b,"scope");d=d||{};
+var e=d.parentBoundTranscludeFn,h=d.transcludeControllers;d=d.futureParentElement;e&&e.$$boundTransclude&&(e=e.$$boundTransclude);g||(g=(d=d&&d[0])?"foreignobject"!==ta(d)&&d.toString().match(/SVG/)?"svg":"html":"html");d="html"!==g?z(Xb(g,z("