Add protocol handler

This commit is contained in:
SoniEx2 2019-04-28 18:50:52 -03:00
parent 32b581a6c4
commit 63a5e3f8c9
2 changed files with 30 additions and 2 deletions

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>Powered by <a href="https://ganarchy.autistic.space/">GAnarchy</a>. AGPLv3-licensed. <a href="https://cybre.tech/SoniEx2/ganarchy">Source Code</a>.</p>
<p> <p>
<a href="/">Main page</a>. <a href="/">Main page</a>.
<!-- commented out because browsers suck :( --> <a href="{{ base_url|e }}" onclick="event.preventDefault(); navigator.registerProtocolHandler('web+ganarchy', this.href + '?url=%s', 'GAnarchy');">Register web+ganarchy: URI handler</a>.
<!--<a href="{{ base_url|e }}" onclick="event.preventDefault(); navigator.registerProtocolHandler('web+ganarchy', this.href + 'project/%s', 'GAnarchy');">Register web+ganarchy: URI handler</a>.-->
</p> </p>
</body> </body>
</html> </html>

29
index.js Normal file
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;
}
}
})();