diff --git a/.gitignore b/.gitignore index 1c9a6b8c5..65d3c2649 100644 --- a/.gitignore +++ b/.gitignore @@ -54,7 +54,6 @@ tmp/ .byebug_history .sass-cache/ .DS_Store -.idea .redcar .stgit* *.swap @@ -73,6 +72,8 @@ capybara-*.html *.rbc # IDE +.idea +.vscode diaspora.iml # Dolphin's directory's preferences files diff --git a/app/assets/javascripts/app/pages/settings.js b/app/assets/javascripts/app/pages/settings.js index be522514f..6592c1b8c 100644 --- a/app/assets/javascripts/app/pages/settings.js +++ b/app/assets/javascripts/app/pages/settings.js @@ -15,6 +15,10 @@ app.pages.Settings = Backbone.View.extend({ form: $("#post-default-aspects") }); $("#update_profile_form").areYouSure(); + + $("#register-protocol-handler").click(function() { + Diaspora.ProtocolHandler.register(); + }); } }); // @license-end diff --git a/app/assets/javascripts/helpers/protocol_handler.js b/app/assets/javascripts/helpers/protocol_handler.js new file mode 100644 index 000000000..090362f27 --- /dev/null +++ b/app/assets/javascripts/helpers/protocol_handler.js @@ -0,0 +1,21 @@ +// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later + +Diaspora.ProtocolHandler = { + register: function() { + if (!window.navigator.registerProtocolHandler) { + return false; + } + + try { + window.navigator.registerProtocolHandler( + "web+diaspora", + [window.location.protocol, "//", window.location.host, "/link?q=%s"].join(""), + document.title + ); + } catch (_) { + return false; + } + + return true; + } +}; diff --git a/app/assets/javascripts/main.js b/app/assets/javascripts/main.js index 985933b02..a0518761c 100644 --- a/app/assets/javascripts/main.js +++ b/app/assets/javascripts/main.js @@ -45,7 +45,7 @@ //= require api/authorization_page //= require bootstrap-markdown/bootstrap-markdown //= require helpers/markdown_editor +//= require helpers/protocol_handler //= require jquery.are-you-sure //= require cropperjs/dist/cropper.js //= require pica -//= require protocol-handler diff --git a/app/assets/javascripts/protocol-handler.js b/app/assets/javascripts/protocol-handler.js deleted file mode 100644 index 6afedf409..000000000 --- a/app/assets/javascripts/protocol-handler.js +++ /dev/null @@ -1,17 +0,0 @@ -// @license magnet:?xt=urn:btih:0b31508aeb0634b347b8270c7bee4d411b5d4109&dn=agpl-3.0.txt AGPL-v3-or-Later - -function registerDiasporaLinksProtocol() { - var protocol = location.protocol; - var slashes = protocol.concat("//"); - var host = slashes.concat(window.location.hostname); - - if (location.port) { - host = host.concat(":" + location.port); - } - - window.navigator.registerProtocolHandler("web+diaspora", host.concat("/link?q=%s"), document.title); -} - -if (typeof (window.navigator.registerProtocolHandler) === "function") { - registerDiasporaLinksProtocol(); -} diff --git a/app/views/users/_edit.haml b/app/views/users/_edit.haml index 0ec3102b7..65bf97f0e 100644 --- a/app/views/users/_edit.haml +++ b/app/views/users/_edit.haml @@ -180,6 +180,16 @@ .clearfix= f.submit t(".change"), class: "btn btn-primary pull-right", id: "change_email_preferences" %hr + .row + .col-md-12 + %h3#protocol-handler + = t(".protocol_handler.title") + %p= t(".protocol_handler.description") + .form-group + %button.btn.btn-default#register-protocol-handler + = t(".protocol_handler.register") + %hr + .row .col-md-6.account-data %h3= t(".export_data") diff --git a/config/locales/diaspora/en.yml b/config/locales/diaspora/en.yml index f28b8f551..e6d80d0b1 100644 --- a/config/locales/diaspora/en.yml +++ b/config/locales/diaspora/en.yml @@ -1242,6 +1242,11 @@ en: lock_username: "Your username will be locked. You will not be able to create a new account on this pod with the same ID." no_turning_back: "There is no turning back! If you’re really sure, enter your password below." + protocol_handler: + title: "web+diaspora:// protocol handler" + description: "Clicking this button will ask your browser to install a handler that allows us to open web+diaspora:// URLs on your home pod. This is currently experimental and interactions will depend on your browser." + register: "Register" + privacy_settings: title: "Privacy settings" strip_exif: "Strip metadata such as location, author, and camera model from uploaded images (recommended)"