mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-29 13:52:10 +03:00
89b1ecd6f2
closes #370 - Added new Backbone view for post settings menu - Moved sass styles to global.scss for post settings menu items - Added field to change post slug (permalink) using existing slug validation
113 lines
4.2 KiB
JavaScript
113 lines
4.2 KiB
JavaScript
// The Post Settings Menu available in the content preview screen, as well as the post editor.
|
|
|
|
/*global window, document, $, _, Backbone, Ghost */
|
|
|
|
(function () {
|
|
"use strict";
|
|
|
|
Ghost.View.PostSettings = Ghost.View.extend({
|
|
|
|
events: {
|
|
'blur .post-setting-slug' : 'editSlug',
|
|
'click .post-setting-slug' : 'selectSlug',
|
|
'click .delete' : 'deletePost'
|
|
},
|
|
|
|
render: function () {
|
|
var slug = this.model ? this.model.get('slug') : '';
|
|
//var pubDate = this.model.get('published_at');
|
|
|
|
//pubDate = moment(pubDate).format('DD MMM YY');
|
|
|
|
$('.post-setting-slug').val(slug);
|
|
//$('.post-setting-date').val(pubDate);
|
|
},
|
|
|
|
selectSlug: function (e) {
|
|
e.currentTarget.select();
|
|
},
|
|
|
|
editSlug: function (e) {
|
|
e.preventDefault();
|
|
var self = this,
|
|
slug = self.model.get('slug'),
|
|
slugEl = e.currentTarget,
|
|
newSlug = slugEl.value;
|
|
|
|
// Ignore empty or unchanged slugs
|
|
if (newSlug.length === 0 || slug === newSlug) {
|
|
slugEl.value = slug === undefined ? '' : slug;
|
|
return;
|
|
}
|
|
|
|
this.model.save({
|
|
slug: newSlug
|
|
}, {
|
|
success : function (model, response, options) {
|
|
// Repopulate slug in case it changed on the server (e.g. 'new-slug-2')
|
|
slugEl.value = model.get('slug');
|
|
},
|
|
error : function (model, xhr) {
|
|
Ghost.notifications.addItem({
|
|
type: 'error',
|
|
message: Ghost.Views.Utils.getRequestErrorMessage(xhr),
|
|
status: 'passive'
|
|
});
|
|
}
|
|
});
|
|
},
|
|
|
|
deletePost: function (e) {
|
|
e.preventDefault();
|
|
var self = this;
|
|
this.addSubview(new Ghost.Views.Modal({
|
|
model: {
|
|
options: {
|
|
close: false,
|
|
confirm: {
|
|
accept: {
|
|
func: function () {
|
|
self.model.destroy({
|
|
wait: true
|
|
}).then(function () {
|
|
// Redirect to content screen if deleting post from editor.
|
|
if (window.location.pathname.indexOf('editor') > -1) {
|
|
window.location = '/ghost/content/';
|
|
}
|
|
Ghost.notifications.addItem({
|
|
type: 'success',
|
|
message: 'Your post has been deleted.',
|
|
status: 'passive'
|
|
});
|
|
}, function () {
|
|
Ghost.notifications.addItem({
|
|
type: 'error',
|
|
message: 'Your post could not be deleted. Please try again.',
|
|
status: 'passive'
|
|
});
|
|
});
|
|
},
|
|
text: "Yes"
|
|
},
|
|
reject: {
|
|
func: function () {
|
|
return true;
|
|
},
|
|
text: "No"
|
|
}
|
|
},
|
|
type: "action",
|
|
style: ["wide", "centered"],
|
|
animation: 'fade'
|
|
},
|
|
content: {
|
|
template: 'blank',
|
|
title: 'Are you sure you want to delete this post?'
|
|
}
|
|
}
|
|
}));
|
|
}
|
|
|
|
});
|
|
|
|
}()); |