diff options
Diffstat (limited to 'wikipedia/WikipediaWebView.js')
-rw-r--r-- | wikipedia/WikipediaWebView.js | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/wikipedia/WikipediaWebView.js b/wikipedia/WikipediaWebView.js deleted file mode 100644 index 03173b9..0000000 --- a/wikipedia/WikipediaWebView.js +++ /dev/null @@ -1,136 +0,0 @@ -const Gdk = imports.gi.Gdk; -const GLib = imports.gi.GLib; -const Gtk = imports.gi.Gtk; -const GObject = imports.gi.GObject; -const Lang = imports.lang; -const WebKit = imports.gi.WebKit2; -const Utils = imports.wikipedia.utils; - -const API_ENDPOINT = "http://127.0.0.1:3000"; -const API_VERSION = "v1"; -const getPageByIdURI = "getArticleById?"; -const getPageByTitleURI = "getArticleByTitle?"; -const getPageByQueryURI = "getTopArticleByQuery?"; -const getTitlesByQueryURI = "getArticleTitlesByQuery?"; - - -const WikipediaWebView = new Lang.Class({ - Name: 'EndlessWikipediaWebView', - Extends: WebKit.WebView, - Properties: { - 'hide-links': GObject.ParamSpec.boolean('hide-links', - 'Hide article links', - 'A boolean to determine whether links should be shown', - GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, - false), - 'system-personality': GObject.ParamSpec.string('system-personality', - 'System Personality string', - 'Specifies the system personality to be used in this wiki webview', - GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, - ""), - 'app-name': GObject.ParamSpec.string('app-name', - 'Application name', - 'Specifies the application that is using this wiki webview', - GObject.ParamFlags.READWRITE | GObject.ParamFlags.CONSTRUCT, - ""), - }, - - _init: function(params) { - this.parent(params); - // For debugging - //let settings = this.get_settings(); - //settings.set_enable_developer_extras(true); - //this.set_settings(settings); - this.connect('context-menu', Lang.bind(this, function() {return true;})); - - this.connect('decide-policy', - Lang.bind(this, this._onNavigation)); - this.connect('load-changed', - Lang.bind(this, this._onLoadChange)); - }, - - setShowableLinks: function(linked_articles){ - this._links_to_show = linked_articles; - }, - - _getFullURL: function(method, params){ - // We always include personality and - // app name on all requests. - let base_url = [API_ENDPOINT, API_VERSION, method].join("/"); - params["personality"] = this.system_personality; - params["appname"] = this.app_name; - let full_url = base_url; - for(let key in params){ - full_url += key + "=" + params[key] + "&"; - } - // Remove the final '&' - full_url = full_url.slice(0, -1); - return full_url; - }, - - loadArticleById: function (id) { - let params = { - id: id, - hideLinks: this.hide_links - }; - let url = this._getFullURL(getPageByIdURI, params); - this.load_uri(url); - }, - - loadArticleBySearchQuery: function (query, source) { - let params = { - query: query, - hideLinks: this.hide_links, - source: source - }; - let url = this._getFullURL(getPageByQueryURI, params); - this.load_uri(url); - }, - - loadTitlesBySearchQuery: function (query) { - let params = { query: query }; - let url = this._getFullURL(getTitlesByQueryURI, params); - this.load_uri(url); - }, - - scriptFinished: function(){ - // NO OP - }, - - setAllowedLinks: function(){ - // If you want to show all links, then - // no point in showing some subset of them as well - if(!this.hide_links || this._links_to_show.length === 0){ - return; - } - let str = JSON.stringify(this._links_to_show); - let script = "window.links_to_show = " + str; - this.run_javascript(script, null, this.scriptFinished, null); - }, - - _onNavigation: function(webview, decision, decision_type) { - if (decision_type == WebKit.PolicyDecisionType.NAVIGATION_ACTION) { - let uri = decision.request.uri; - if (uri.startsWith(API_ENDPOINT + "/wiki/")) { - let parts = uri.split("/"); - let suffix = parts[parts.length - 1]; - let id = decodeURI(suffix); - this.loadArticleById(id); - decision.ignore(); - return true; // handled - } else if (GLib.uri_parse_scheme(uri).startsWith('browser-')) { - // Open everything that starts with 'browser-' in the system - // browser - let realURI = uri.slice('browser-'.length); - Gtk.show_uri(null, realURI, Gdk.CURRENT_TIME); - decision.ignore(); - return true; // handled - } - } - return false; // not handled, default behavior - }, - - _onLoadChange: function(webview, load_event, data){ - this.setAllowedLinks(); - } -}); |