You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nodebb/public/src/modules/coverPhoto.js

89 lines
2.1 KiB
JavaScript

"use strict";
define('coverPhoto', [
'vendor/jquery/draggable-background/backgroundDraggable',
], function () {
var coverPhoto = {
coverEl: null,
saveFn: null,
};
coverPhoto.init = function (coverEl, saveFn, uploadFn, removeFn) {
coverPhoto.coverEl = coverEl;
coverPhoto.saveFn = saveFn;
coverEl.find('.upload').on('click', uploadFn);
coverEl.find('.resize').on('click', function () {
9 years ago
enableDragging(coverEl);
});
coverEl.find('.remove').on('click', removeFn);
coverEl
.on('dragover', coverPhoto.onDragOver)
.on('drop', coverPhoto.onDrop);
coverEl.find('.save').on('click', coverPhoto.save);
coverEl.addClass('initialised');
};
coverPhoto.onDragOver = function (e) {
e.stopPropagation();
e.preventDefault();
e.originalEvent.dataTransfer.dropEffect = 'copy';
};
coverPhoto.onDrop = function (e) {
e.stopPropagation();
e.preventDefault();
var files = e.originalEvent.dataTransfer.files;
var reader = new FileReader();
if (files.length && files[0].type.match('image.*')) {
reader.onload = function (e) {
coverPhoto.coverEl.css('background-image', 'url(' + e.target.result + ')');
coverPhoto.newCover = e.target.result;
};
reader.readAsDataURL(files[0]);
9 years ago
enableDragging(coverPhoto.coverEl);
}
};
9 years ago
function enableDragging(coverEl) {
coverEl.toggleClass('active', 1)
.backgroundDraggable({
axis: 'y',
units: 'percent',
9 years ago
});
9 years ago
app.alert({
alert_id: 'drag_start',
title: '[[modules:cover.dragging_title]]',
message: '[[modules:cover.dragging_message]]',
timeout: 5000,
9 years ago
});
9 years ago
}
coverPhoto.save = function () {
coverPhoto.coverEl.addClass('saving');
coverPhoto.saveFn(coverPhoto.newCover || undefined, coverPhoto.coverEl.css('background-position'), function (err) {
if (!err) {
coverPhoto.coverEl.toggleClass('active', 0);
coverPhoto.coverEl.backgroundDraggable('disable');
coverPhoto.coverEl.off('dragover', coverPhoto.onDragOver);
coverPhoto.coverEl.off('drop', coverPhoto.onDrop);
9 years ago
app.alertSuccess('[[modules:cover.saved]]');
} else {
app.alertError(err.message);
}
coverPhoto.coverEl.removeClass('saving');
});
};
return coverPhoto;
});