Skip to content

Commit

Permalink
Tag Cover Images
Browse files Browse the repository at this point in the history
Closes #4506

Works just like the Post Cover Images (and uses the same component)
Tiny changes to the component ensures that we can reuse it across Ghost
  • Loading branch information
felixrieseberg committed Dec 11, 2014
1 parent b81bde5 commit 028a64e
Show file tree
Hide file tree
Showing 8 changed files with 34 additions and 5 deletions.
4 changes: 4 additions & 0 deletions core/client/assets/lib/uploader.js
Original file line number Diff line number Diff line change
Expand Up @@ -147,6 +147,7 @@ UploadUi = function ($dropzone, settings) {

// This is the start point if no image exists
$dropzone.find('img.js-upload-target').css({display: 'none'});
$dropzone.find('div.description').show();
$dropzone.removeClass('pre-image-uploader image-uploader-url').addClass('image-uploader');
this.removeExtras();
this.buildExtras();
Expand All @@ -170,6 +171,7 @@ UploadUi = function ($dropzone, settings) {
$dropzone.find('.js-cancel').on('click', function () {
$dropzone.find('.js-url').remove();
$dropzone.find('.js-fileupload').removeClass('right');
$dropzone.trigger('imagecleared');
self.removeExtras();
self.initWithDropzone();
});
Expand Down Expand Up @@ -211,10 +213,12 @@ UploadUi = function ($dropzone, settings) {
// This is the start point if an image already exists
$dropzone.removeClass('image-uploader image-uploader-url').addClass('pre-image-uploader');
$dropzone.find('div.description').hide();
$dropzone.find('img.js-upload-target').show();
$dropzone.append($cancel);
$dropzone.find('.js-cancel').on('click', function () {
$dropzone.find('img.js-upload-target').attr({src: ''});
$dropzone.find('div.description').show();
$dropzone.trigger('imagecleared');
$dropzone.delay(2500).animate({opacity: 100}, 1000, function () {
self.init();
});
Expand Down
2 changes: 1 addition & 1 deletion core/client/components/gh-uploader.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ var PostImageUploader = Ember.Component.extend({
}
});

$this.find('.js-cancel').on('click', function () {
$this.on('imagecleared', function () {
self.sendAction('canceled');
});
}.on('didInsertElement'),
Expand Down
8 changes: 8 additions & 0 deletions core/client/controllers/settings/tags.js
Original file line number Diff line number Diff line change
Expand Up @@ -153,6 +153,14 @@ var TagsController = Ember.ArrayController.extend(PaginationMixin, {

closeSubview: function () {
this.set('isViewingSubview', false);
},

setCoverImage: function (image) {
this.saveActiveTagProperty('image', image);
},

clearCoverImage: function () {
this.saveActiveTagProperty('image', '');
}
}
});
Expand Down
3 changes: 2 additions & 1 deletion core/client/models/tag.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ var Tag = DS.Model.extend(NProgressSaveMixin, ValidationEngine, {
description: DS.attr('string'),
parent_id: DS.attr('number'),
meta_title: DS.attr('string'),
meta_description: DS.attr('string')
meta_description: DS.attr('string'),
image: DS.attr('string')
});

export default Tag;
2 changes: 1 addition & 1 deletion core/client/templates/components/gh-uploader.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@
<span class="hidden">Image Upload</span>
</span>
<img class="js-upload-target" {{bind-attr src=image}}>
<div class="description">Add post image <strong></strong></div>
<div class="description">{{description}}<strong></strong></div>
<input data-url="upload" class="js-fileupload main fileupload" type="file" name="uploadimage">
2 changes: 1 addition & 1 deletion core/client/templates/post-settings-menu.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<button class="close icon-x settings-menu-header-action" {{action "closeSettingsMenu"}}><span class="hidden">Close</span></button>
</div>
<div class="settings-menu-content">
{{gh-uploader uploaded="setCoverImage" canceled="clearCoverImage" image=image uploaderReference=uploaderReference tagName="section"}}
{{gh-uploader uploaded="setCoverImage" canceled="clearCoverImage" description="Add post image" image=image uploaderReference=uploaderReference tagName="section"}}
<form>
<div class="form-group">
<label for="url">Post URL</label>
Expand Down
3 changes: 2 additions & 1 deletion core/client/templates/settings/tags/settings-menu.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
</button>
</div>
<div class="settings-menu-content">
{{gh-uploader uploaded="setCoverImage" canceled="clearCoverImage" description="Add tag image" image=activeTag.image uploaderReference=uploaderReference tagName="section"}}
<form>
<div class="form-group">
<label>Tag Name</label>
Expand Down Expand Up @@ -72,4 +73,4 @@
</div>{{! .settings-menu-content }}
{{/gh-tab-pane}}
</div>{{! .settings-menu-pane }}
{{/gh-tabs-manager}}
{{/gh-tabs-manager}}
15 changes: 15 additions & 0 deletions core/client/views/settings/tags/settings-menu.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,21 @@ var TagsSettingsMenuView = Ember.View.extend({
return this.get('controller.model.isNew') ?
'Add Tag' :
'Save Tag';
}),

// This observer loads and resets the uploader whenever the active tag changes,
// ensuring that we can reuse the whole settings menu.
updateUploader: Ember.observer('controller.activeTag.image', 'controller.uploaderReference', function () {
var uploader = this.get('controller.uploaderReference'),
image = this.get('controller.activeTag.image');

if (uploader && uploader[0]) {
if (image) {
uploader[0].uploaderUi.initWithImage();
} else {
uploader[0].uploaderUi.initWithDropzone();
}
}
})
});

Expand Down

0 comments on commit 028a64e

Please sign in to comment.