summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorSoniEx2 <endermoneymod@gmail.com>2019-04-28 18:50:52 -0300
committerSoniEx2 <endermoneymod@gmail.com>2019-04-28 18:50:52 -0300
commit63a5e3f8c9fbc3f961198e4bfa55f6321870be39 (patch)
treea9e713585ef38901c1046b08367613311eec168b
parent32b581a6c40f362fade02fd6b7efe19abca09237 (diff)
Add protocol handler
-rwxr-xr-xganarchy.py3
-rw-r--r--index.js29
2 files changed, 30 insertions, 2 deletions
diff --git a/ganarchy.py b/ganarchy.py
index d698f7e..3889d0b 100755
--- a/ganarchy.py
+++ b/ganarchy.py
@@ -60,8 +60,7 @@ TEMPLATE = """<!DOCTYPE html>
         <p>Powered by <a href="https://ganarchy.autistic.space/">GAnarchy</a>. AGPLv3-licensed. <a href="https://cybre.tech/SoniEx2/ganarchy">Source Code</a>.</p>
         <p>
             <a href="/">Main page</a>.
-            <!-- commented out because browsers suck :( -->
-            <!--<a href="{{ base_url|e }}" onclick="event.preventDefault(); navigator.registerProtocolHandler('web+ganarchy', this.href + 'project/%s', 'GAnarchy');">Register web+ganarchy: URI handler</a>.-->
+            <a href="{{ base_url|e }}" onclick="event.preventDefault(); navigator.registerProtocolHandler('web+ganarchy', this.href + '?url=%s', 'GAnarchy');">Register web+ganarchy: URI handler</a>.
         </p>
     </body>
 </html>
diff --git a/index.js b/index.js
new file mode 100644
index 0000000..c47b7f6
--- /dev/null
+++ b/index.js
@@ -0,0 +1,29 @@
+// GAnarchy - project homepage generator
+// Copyright (C) 2019  Soni L.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU Affero General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+// GNU Affero General Public License for more details.
+//
+// You should have received a copy of the GNU Affero General Public License
+// along with this program.  If not, see <https://www.gnu.org/licenses/>.
+
+(function() {
+	var url = new URL(document.location.href);
+	var target = url.searchParams.get("url");
+	if (target !== null) {
+		var project = target.match(/^web\+ganarchy\:([a-fA-F0-9]+)$/);
+		if (project !== null) {
+			// some browsers don't like it when you set this directly
+			url.search = "";
+			url.pathname = "/project/" + project[1];
+			document.location = url.href;
+		}
+	}
+})();