mirror of
https://github.com/typemill/typemill.git
synced 2025-07-30 19:00:32 +02:00
test changes
This commit is contained in:
@@ -164,6 +164,37 @@ class ContentApiController extends ContentController
|
||||
}
|
||||
}
|
||||
|
||||
public function discardArticleChanges(Request $request, Response $response, $args)
|
||||
{
|
||||
# get params from call
|
||||
$this->params = $request->getParams();
|
||||
$this->uri = $request->getUri();
|
||||
|
||||
# set structure
|
||||
if(!$this->setStructure($draft = true)){ return $response->withJson($this->errors, 404); }
|
||||
|
||||
# set item
|
||||
if(!$this->setItem()){ return $response->withJson($this->errors, 404); }
|
||||
|
||||
# set redirect url to edit page
|
||||
$url = $this->uri->getBaseUrl() . '/tm/content/' . $this->settings['editor'] . $this->item->urlRel;
|
||||
|
||||
# remove the unpublished changes
|
||||
$delete = $this->deleteContentFiles(['txt']);
|
||||
|
||||
if($delete)
|
||||
{
|
||||
# update the backend structure
|
||||
$this->setStructure($draft = true, $cache = false);
|
||||
|
||||
return $response->withJson(['data' => $this->structure, 'errors' => false, 'url' => $url], 200);
|
||||
}
|
||||
else
|
||||
{
|
||||
return $response->withJson(['data' => $this->structure, 'errors' => $this->errors], 404);
|
||||
}
|
||||
}
|
||||
|
||||
public function deleteArticle(Request $request, Response $response, $args)
|
||||
{
|
||||
# get params from call
|
||||
|
@@ -11,6 +11,7 @@ $app->post('/api/v1/article/markdown', ContentApiController::class . ':getArticl
|
||||
$app->post('/api/v1/article/html', ContentApiController::class . ':getArticleHtml')->setName('api.article.html')->add(new RestrictApiAccess($container['router']));
|
||||
$app->post('/api/v1/article/publish', ContentApiController::class . ':publishArticle')->setName('api.article.publish')->add(new RestrictApiAccess($container['router']));
|
||||
$app->delete('/api/v1/article/unpublish', ContentApiController::class . ':unpublishArticle')->setName('api.article.unpublish')->add(new RestrictApiAccess($container['router']));
|
||||
$app->delete('/api/v1/article/discard', ContentApiController::class . ':discardArticleChanges')->setName('api.article.discard')->add(new RestrictApiAccess($container['router']));
|
||||
$app->post('/api/v1/article', ContentApiController::class . ':createArticle')->setName('api.article.create')->add(new RestrictApiAccess($container['router']));
|
||||
$app->put('/api/v1/article', ContentApiController::class . ':updateArticle')->setName('api.article.update')->add(new RestrictApiAccess($container['router']));
|
||||
$app->delete('/api/v1/article', ContentApiController::class . ':deleteArticle')->setName('api.article.delete')->add(new RestrictApiAccess($container['router']));
|
||||
|
@@ -1,6 +1,7 @@
|
||||
<div class="editor buttonset" id="publishController" data-published="{{ item.published }}" data-drafted="{{ item.drafted }}" v-cloak>
|
||||
<div v-if="errors.message" class="message error">${ errors.message }</div>
|
||||
<button v-if="raw" @click.prevent="saveDraft" id="draft" :class="draftResult" :disabled="draftDisabled"><span class="desktop">Save </span>Draft</button><button @click.prevent="publishDraft" id="publish" :class="publishResult" :disabled="publishDisabled">Publish</button>
|
||||
<button @click.prevent="discardDraft" v-if="visual && !publishStatus" id="discard" :class="discardResult" :disabled="publishDisabled">Discard</button>
|
||||
<div class="secondary">
|
||||
<button @click.prevent="depublishArticle" class="button--secondary" :disabled="publishStatus"><span class="desktop">${publishLabel}</span><span class="mobile">${publishLabelMobile}</span></button>
|
||||
<button @click.prevent="showModal" class="button--secondary danger"><span class="desktop">delete</span><span class="mobile">X</span></button>
|
||||
|
@@ -21,6 +21,7 @@ let editor = new Vue({
|
||||
publishController.publishDisabled = false;
|
||||
publishController.draftResult = "";
|
||||
publishController.publishResult = "";
|
||||
publishController.discardResult = "";
|
||||
},
|
||||
}
|
||||
});
|
@@ -19,6 +19,7 @@ let publishController = new Vue({
|
||||
deleteDisabled: false,
|
||||
draftResult: "",
|
||||
publishResult: "",
|
||||
discardResult: "",
|
||||
deleteResult: "",
|
||||
publishStatus: document.getElementById("publishController").dataset.published ? false : true,
|
||||
publishLabel: document.getElementById("publishController").dataset.published ? "online" : "offline",
|
||||
@@ -83,6 +84,53 @@ let publishController = new Vue({
|
||||
}
|
||||
}, method, url, this.form );
|
||||
},
|
||||
discardDraft: function(e) {
|
||||
var self = this;
|
||||
|
||||
self.errors.message = false;
|
||||
editor.errors = {title: false, content: false};
|
||||
|
||||
self.discardResult = "load";
|
||||
self.publishDisabled = "disabled";
|
||||
|
||||
var url = self.root + '/api/v1/article/discard';
|
||||
var method = 'DELETE';
|
||||
|
||||
sendJson(function(response, httpStatus)
|
||||
{
|
||||
if(httpStatus == 400)
|
||||
{
|
||||
self.publishDisabled = false;
|
||||
self.discardResult = "fail";
|
||||
self.errors.message = "You are probably logged out. Please backup your changes, login and then try again."
|
||||
}
|
||||
else if(response)
|
||||
{
|
||||
var result = JSON.parse(response);
|
||||
|
||||
if(result.errors)
|
||||
{
|
||||
self.publishDisabled = false;
|
||||
self.discardResult = "fail";
|
||||
|
||||
if(result.errors.title){ editor.errors.title = result.errors.title[0] }
|
||||
if(result.errors.content){ editor.errors.content = result.errors.content[0] }
|
||||
if(result.errors.message){ self.errors.message = result.errors.message }
|
||||
}
|
||||
else
|
||||
{
|
||||
window.location.replace(result.url);
|
||||
}
|
||||
}
|
||||
else if(httpStatus != 200)
|
||||
{
|
||||
self.publishDisabled = false;
|
||||
self.discardResult = "fail";
|
||||
self.errors.message = "Something went wrong, please refresh the page and try again."
|
||||
}
|
||||
|
||||
}, method, url, this.form);
|
||||
},
|
||||
saveDraft: function(e){
|
||||
|
||||
var self = this;
|
||||
@@ -93,7 +141,7 @@ let publishController = new Vue({
|
||||
self.draftResult = "load";
|
||||
|
||||
var url = this.root + '/api/v1/article';
|
||||
var method = 'PUT';
|
||||
var method = 'PUT';
|
||||
|
||||
this.form.title = editor.form.title;
|
||||
this.form.content = editor.form.content;
|
||||
@@ -107,7 +155,7 @@ let publishController = new Vue({
|
||||
self.errors.message = "You are probably logged out. Please backup your changes, login and then try again."
|
||||
}
|
||||
else if(response)
|
||||
{
|
||||
{
|
||||
var result = JSON.parse(response);
|
||||
|
||||
if(result.errors)
|
||||
|
Reference in New Issue
Block a user