From 1b19fdb64a2cd78ee37bba69e5ec18487caecb64 Mon Sep 17 00:00:00 2001 From: Fabian Becker Date: Fri, 20 Dec 2013 14:36:00 +0100 Subject: [PATCH] New Post UX behaviour. refs #1351 - Make generateSlug a static method on base model - Change client behaviour (unfinished) - Add new getSlug API method --- ghost/admin/views/editor.js | 3 +++ ghost/admin/views/post-settings.js | 23 ++++++++++++++++------- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/ghost/admin/views/editor.js b/ghost/admin/views/editor.js index 1a32618d90..d6ce674ff6 100644 --- a/ghost/admin/views/editor.js +++ b/ghost/admin/views/editor.js @@ -396,6 +396,9 @@ if (rawTitle !== trimmedTitle) { $title.val(trimmedTitle); } + + // Trigger title change for post-settings.js + this.model.set('title', trimmedTitle); }, renderTitle: function () { diff --git a/ghost/admin/views/post-settings.js b/ghost/admin/views/post-settings.js index 5fcf43c5f0..efdcd55a87 100644 --- a/ghost/admin/views/post-settings.js +++ b/ghost/admin/views/post-settings.js @@ -21,6 +21,7 @@ this.listenTo(this.model, 'change:status', this.render); this.listenTo(this.model, 'change:published_at', this.render); this.listenTo(this.model, 'change:page', this.render); + this.listenTo(this.model, 'change:title', this.updateSlugPlaceholder); } }, @@ -49,6 +50,19 @@ $pubDateEl.val(pubDate); }, + // Requests a new slug when the title was changed + updateSlugPlaceholder: function () { + var title = this.model.get('title'); + + $.ajax({ + url: Ghost.paths.apiRoot + '/posts/getSlug/' + encodeURIComponent(title), + success: function (result){ + // ToDo: Find better selector + $('.post-setting-slug')[0].placeholder = result; + } + }); + }, + selectSlug: function (e) { e.currentTarget.select(); }, @@ -60,8 +74,8 @@ slugEl = e.currentTarget, newSlug = slugEl.value; - // Ignore empty or unchanged slugs - if (newSlug.length === 0 || slug === newSlug) { + // Ignore unchanged slugs + if (slug === newSlug) { slugEl.value = slug === undefined ? '' : slug; return; } @@ -102,11 +116,6 @@ pubDateMoment, newPubDateMoment; - // Ignore empty or unchanged dates - if (!newPubDate) { - return; - } - // Check for missing time stamp on new data // If no time specified, add a 12:00 if (newPubDate && !newPubDate.slice(-5).match(/\d+:\d\d/)) {