Compare commits

...

2 Commits

Author SHA1 Message Date
SoniEx2 32b76dd2cf Update README.md 2019-04-28 18:55:02 -03:00
SoniEx2 63a5e3f8c9 Add protocol handler 2019-04-28 18:50:52 -03:00
3 changed files with 34 additions and 2 deletions

View File

@ -7,6 +7,10 @@ More importantly, it's a tool to help fight against BDFLs and other forms of cen
Usage
-----
Note: GAnarchy does not come with a main page. You need to provide one yourself. This should be in your website's `/` path (usually `index.html`).
The protocol handler uses the path `/?url=%s`. Additionally, your main page needs to include the `index.js` provided by GAnarchy
for the protocol handler to properly work.
First, initialize the database with `ganarchy.py initdb`. The database is stored in the XDG data home, as per XDG spec.
Then, set the project commit with `ganarchy.py set-commit COMMIT`, where `COMMIT` is the full commit hash.

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