app/assets/javascripts/components/posts.js.cjsx in octodmin-0.2.1 vs app/assets/javascripts/components/posts.js.cjsx in octodmin-0.3.0
- old
+ new
@@ -77,11 +77,11 @@
@form()[0].reset()
$(document).trigger("fetchPosts")
@transitionTo("post_edit", post_id: response.posts.identifier)
handleError: (error) ->
- $.growl(error.responseJSON?.errors.join(", "), growlError)
+ $.growl(error.responseJSON?.errors.join(", ") || error.statusText, growlError)
render: ->
<div className="panel panel-default">
<div className="panel-body">
<form ref="form" className="form-inline" onSubmit={@handleSubmit}>
@@ -209,10 +209,34 @@
fetchPost: ->
return if @state.loading
@setState(loading: true)
$.getq("default", "/api/posts/#{@getParams().post_id}").always(@handleResponse).done(@handleSuccess).fail(@handleError)
+ handleUpload: (event)->
+ form = $("<form><input type='file' name='file' /></form>")
+ event.disableButtons("cmdUpload")
+
+ form.find("input").on("change", (->
+ data = new FormData(form[0])
+ $.ajaxq("default",
+ type: "POST"
+ url: "/api/posts/#{@state.post.identifier}/upload"
+ data: data
+ cache: false
+ contentType: false
+ processData: false
+ ).always(->
+ event.enableButtons("cmdUpload")
+ ).done(((result) ->
+ @handleUploadSuccess(event, result)
+ ).bind(this)).fail(@handleError)
+ ).bind(this))
+ form.find("input").click()
+
+ handleUploadSuccess: (event, response) ->
+ event.replaceSelection(response.uploads[0])
+
handleBack: (event) ->
event.preventDefault()
@transitionTo("app")
handleSubmit: (event) ->
@@ -235,11 +259,11 @@
handleFormSuccess: (response) ->
$.growl("Post is updated", growlSuccess)
@transitionTo("post_edit", post_id: response.posts.identifier)
handleError: (error) ->
- $.growl(error.responseJSON?.errors.join(", "), growlError)
+ $.growl(error.responseJSON?.errors.join(", ") || error.statusText, growlError)
componentWillMount: ->
@fetchPost()
componentDidUpdate: ->
@@ -251,9 +275,20 @@
savable: false
iconlibrary: "fa"
resize: "vertical"
fullscreen:
enable: false
+ additionalButtons: [
+ [{
+ name: "customGroup"
+ data: [{
+ name: "cmdUpload"
+ title: "Upload"
+ icon: "fa fa-upload"
+ callback: @handleUpload
+ }]
+ }]
+ ]
)
render: ->
<Loader loaded={!!@state.post}>
{if @state.post