Browse Source

Add protocol handler

broken
SoniEx2 1 year ago
parent
commit
63a5e3f8c9
2 changed files with 30 additions and 2 deletions
  1. +1
    -2
      ganarchy.py
  2. +29
    -0
      index.js

+ 1
- 2
ganarchy.py View File

@@ -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>


+ 29
- 0
index.js View File

@@ -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;
}
}
})();

Loading…
Cancel
Save