[Задача 12794] Доделал изменение статуса опечаток

parent d7b5a4e4
......@@ -74,15 +74,78 @@ class Typos extends CI_Controller {
return;
}
/*Получить список сайтов для пользователя*/
function setTypoStatus($typoId = null, $siteId = null, $status = 0) {
$response = [
"error" => false,
"message" => "Success"
];
if (!$typoId || !$siteId) {
$response["error"] = true;
$response["message"] = "Invalid parameters passed";
return $this->output
->set_content_type('application/json')
->set_status_header(400)
->set_output(json_encode($response));
}
$data = [
"autoCorrection" => true,
"status" => $status,
"id_message" => $typoId,
"id_site" => $siteId,
"login_id" => $this->login_id
];
// Нужно в любом случае выставить статус 1
// Но если $status == 0, то необходимо выключить
// автоисправление текста статьи.
if ($status == 0) {
$data["autoCorrection"] = false;
$data["status"] = true;
}
$this->typo->editMessage($data);
return $this->output
->set_content_type('application/json')
->set_status_header(200)
->set_output(json_encode($response));
}
/**
* Получить список сайтов для пользователя
*/
function getSiteList() {
return $this->output
->set_content_type('application/json')
->set_status_header(200)
->set_output(json_encode($this->typo->getSitesList($this->login_id)));
}
/*Получить список сообщений об опечатках для пользователя*/
/**
* Возвращает список опечаток для данного сайта в
* формате json.
*
* @param integer $siteId Идентификатор сайта
* @return CI_Output Json результат
*/
function getSiteTypos($siteId = null) {
if (is_null($siteId)) {
return $this->output->set_status_header(400)
->set_output("Missing siteId parameter!");
}
return $this->output->set_content_type("application/json")
->set_status_header(200)
->set_output(json_encode($this->typo->getSiteTypos($siteId)));
}
/**
* Получить список сообщений об опечатках для пользователя
* OLD
*/
function getListTypos() {
log_message("debug", "get_list_messages()");
......@@ -100,18 +163,10 @@ class Typos extends CI_Controller {
echo json_encode($this->typo->getMessagesList($data));
}
function getSiteTypos($siteId = null) {
if (is_null($siteId)) {
return $this->output->set_status_header(400)
->set_output("Missing siteId parameter!");
}
return $this->output->set_content_type("application/json")
->set_status_header(200)
->set_output(json_encode($this->typo->getSiteTypos($siteId)));
}
/*Управление сайтами*/
/**
* Управление сайтами
* OLD
*/
function panel_sites() {
$id_site = $this->input->get("id");
$oper = $this->input->get("oper");
......@@ -131,7 +186,9 @@ class Typos extends CI_Controller {
}
/*Управление сообщениями*/
/**
* OLD
*/
function panel_messages() {
$oper = $this->input->post('oper');
......
......@@ -246,11 +246,18 @@ class Typo extends CI_Model {
}
}
/* Обновляем статус сообщения */
/**
*
* @param $data
*/
function editMessage($data) {
if ($this->getMessageRights($data)) {
if ( $data['status'] ) {
// По умолчанию ошибки исправляются
if (!isset($data["autoCorrection"])) {
$data["autoCorrection"] = true;
}
if ( $data['status'] && $data["autoCorrection"] ) {
$this->correctTypo($data["id_message"]);
}
......@@ -354,16 +361,6 @@ class Typo extends CI_Model {
curl_close($curl);
}
/**
* Устанавливает статус опечатки как исправлено,
* но при этом не вносит изменений в текст статьи.
*
* @param $typoId Идентификатор опечатки
*/
function declineTypo($typoId) {
}
}
/**/
\ No newline at end of file
......@@ -78,11 +78,18 @@ export default class SiteList extends React.Component {
);
}
return(
<TabPane key={index} tabId={index}>
<TypoList typos={this.typos}/>
</TabPane>
);
if (this.state.activeTab === index) {
return (
<TabPane key={index} tabId={index}>
<TypoList siteId={site.id} typos={this.typos}/>
</TabPane>
);
} else { // Если не активная вкладка - то не рендерим содержимое
return (
<TabPane key={index} tabId={index}>
</TabPane>
);
}
});
return (
......
......@@ -10,14 +10,20 @@ export default class Typo extends Component {
};
render() {
const {typo, acceptCallback, declineCallback} = this.props;
const {typo, acceptCallback, declineCallback, show} = this.props;
const display = this.state.show ? "d-block" : "d-none";
const display = show ? "d-block" : "d-none";
const textColor = "text-white";
const backgroundColor = "bg-primary";
const className = `TypoCard text-center ${display} ${backgroundColor} ${textColor}`;
if (show) {
console.log("Render typo #" + typo.id);
} else {
console.log("Render hidden typo #" + typo.id);
}
return (
<Card className={className}>
<CardHeader>
......
......@@ -3,7 +3,8 @@ import Typo from "./Typo/index";
export default class TypoList extends Component {
state = {
currentTypo: 0
currentTypo: 0,
siteId: 0,
};
/**
......@@ -13,9 +14,10 @@ export default class TypoList extends Component {
* @param typoId Идентификатор опечатки
*/
acceptCorrection(typoId) {
alert("Accept");
this.state.currentTypo++;
this.forceUpdate();
this._setTypoStatus(1, typoId, this.state.siteId, () => {
this.state.currentTypo++;
this.forceUpdate();
});
}
/**
......@@ -25,22 +27,52 @@ export default class TypoList extends Component {
* @param typoId Идентификатор опечатки.
*/
declineCorrection(typoId) {
alert("Decline");
this.state.currentTypo++;
this.forceUpdate();
this._setTypoStatus(0, typoId, this.state.siteId, () => {
this.state.currentTypo++;
this.forceUpdate();
});
}
/**
* Обновляет статус опечатки, в случае, если
* status true, то данная опечатка автоматически исправляется,
* если false, то данная опечатка помечается как решенная, но
* изменения в текст статьи не вносятся.
*
* @param status Новый статус опечатки
* @param typoId Идентификатор опечатки
* @param siteId Идентификатор сайта, на котором найдена опечатка
* @param then Колбэк функция
*/
_setTypoStatus(status, typoId, siteId, then) {
$.ajax({
url: `${window.baseUrl}users/typos/setTypoStatus/${typoId}/${siteId}/${status}`,
}).done(() => {
alert("Status changed");
then();
}).fail((error) => {
alert("Status change error");
console.error(error.message);
});
}
render() {
const {typos} = this.props;
this.state.siteId = this.props.siteId;
console.log("Render typolist for site " + this.state.siteId);
const typoCards = typos.map((typo, index) =>
<Typo key={typo.id} typo={typos[this.state.currentTypo]}
<Typo key={typo.id} typo={typo}
show={this.state.currentTypo === index}
acceptCallback={this.acceptCorrection.bind(this, typo.id)}
declineCallback={this.declineCorrection.bind(this, typo.id)}/>
);
console.log(typoCards);
return (
<div>
{typoCards}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment