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