1
0
mirror of https://github.com/2ec0b4/kaamelott-soundboard.git synced 2025-12-09 16:05:35 +00:00
Files
kaamelott-soundboard/js/app/views/share.js
Antoine f7982f2309 Partage de sons (#4)
* Permet la lecture d'un son passé en paramètre d'URL

* Remplace du code créé par l'utilisation d'un template

* Ajoute un bouton de partage

* Ajoute une région pour gérer une modal

* Affiche une modal de partage

* Améliore le style du flash de sélection de son

* Corrige un mauvais appel de fonction

* Supprime la destruction de la vue au scroll de la fenêtre : le comportement n'est pas idéal sur iOS quand il y a le focus sur l'input

* Ne joue pas automatiquement le son partagé sur iOS
(après avoir tenté : https://paulbakaus.com/tutorials/html5/web-audio-on-ios/ )

* Permet d'éviter le zoom au focus sur l'input

* Ajoute, dans le style, des préfixes manquants
2016-06-23 21:55:40 +02:00

75 lines
2.1 KiB
JavaScript

define("views/share", function(require) {
"use strict";
var Marionette = require("marionette"),
ShareTemplate = require("hbs!templates/share"),
ShareView;
require("likely");
ShareView = Marionette.LayoutView.extend({
template: ShareTemplate,
templateHelpers: function () {
return {
title: this.model.get("title"),
url: this.getAbsoluteUrl("#son/"+this.model.getSlug())
};
},
ui: {
background: "#modal-back",
body: ".share-link",
field: "input:text"
},
events: {
"click @ui.background": "destroy"
},
initialize: function(options) {
this.model = options.model;
$(window).on("resize", this.center.bind(this));
},
onDestroy: function() {
$(this.ui.background).remove();
$(window).off("resize", this.center.bind(this));
},
onBeforeShow: function() {
this.$el.append($("<div/>").attr("id", "modal-back"));
},
onShow: function() {
var that = this;
likely.initiate();
this.center();
window.setTimeout(function() {
that.$el
.find(that.ui.field)
.focus(function() {
$(this).select();
})
.focus();
}, 1000);
},
center: function() {
var $body = this.$el.find(this.ui.body);
$body.css({
"top": Math.max(0, (($(window).height() - $body.outerHeight()) / 2) + $(window).scrollTop()) + "px",
"left": Math.max(0, (($(window).width() - $body.outerWidth()) / 2) + $(window).scrollLeft()) + "px"
});
},
getAbsoluteUrl: function(url) {
var a = document.createElement('a');
this.getAbsoluteUrl = function(url) {
a.href=url;
return a.href;
}
return this.getAbsoluteUrl(url);
}
});
return ShareView;
});