Vulcan/packages/telescope-embedly/lib/client/autoform-postthumbnail.js

96 lines
2.8 KiB
JavaScript
Raw Normal View History

AutoForm.addInputType("bootstrap-postthumbnail", {
template: "afPostThumbnail"
});
var fillEmbedlyData = function (instance) {
// note: the following fields are *not* in the current template
var $urlField = $('[name="url"]');
var $titleField = $('[name="title"]');
var $bodyField = $('[name="body"]');
var url = $urlField.val();
var $thumbnailContainer = instance.$('.post-thumbnail-container');
var $img = instance.$('.post-thumbnail-preview');
var $thumbnailUrlField = instance.$('[name="thumbnailUrl"]');
if (!!url) {
$thumbnailContainer.addClass('loading');
Messages.clearSeen();
console.log('getting embedly data for '+url);
Meteor.call('getEmbedlyData', url, function (error, data) {
if (error) {
console.log(error);
Messages.flash(error.message, 'error');
$thumbnailContainer.removeClass('loading');
return;
}
if (data) {
// set thumbnail and fill in thumbnailUrl field
$img.attr('src', data.thumbnailUrl);
$thumbnailUrlField.val(data.thumbnailUrl);
// remove loading class
$thumbnailContainer.removeClass('loading');
if (!$titleField.val()) // if title field is empty, fill in title
$titleField.val(data.title);
if (!$bodyField.val()) // if body field is empty, fill in body
$bodyField.val(data.description);
}
});
}
};
Template.afPostThumbnail.created = function () {
var instance = this;
instance.embedlyKeyExists = new ReactiveVar(false);
// embedly key is not published to client, so we need a method to test if it has been provided or not
Meteor.call('embedlyKeyExists', function (error, result) {
if (result)
instance.embedlyKeyExists.set(result);
});
};
Template.afPostThumbnail.helpers({
atts: function addFormControlAtts() {
var atts = _.clone(this.atts);
// Add bootstrap class
atts = AutoForm.Utility.addClass(atts, "form-control");
return atts;
},
style: function () {
var thumbnailWidth = Settings.get('thumbnailWidth', 200);
var thumbnailHeight = Settings.get('thumbnailHeight', 125);
2015-07-17 16:17:26 +09:00
return "max-width: "+thumbnailWidth+"px; max-height: "+thumbnailHeight+"px;";
},
embedlyKeyExists: function () {
// haven't found a better way to do this yet…
return Template.instance().embedlyKeyExists.get();
}
});
Template.afPostThumbnail.rendered = function () {
var instance = this;
var $urlField = $('[name="url"]');
$urlField.change(function () {
fillEmbedlyData(instance);
});
};
Template.afPostThumbnail.events({
'click .remove-thumbnail-link': function (e, t) {
e.preventDefault();
t.$('.post-thumbnail-preview').attr('src', '');
t.$('input').val('');
},
'click .regenerate-thumbnail-link': function (e, instance) {
e.preventDefault();
fillEmbedlyData(instance);
}
});