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

parent d7b5a4e4
...@@ -74,15 +74,78 @@ class Typos extends CI_Controller { ...@@ -74,15 +74,78 @@ class Typos extends CI_Controller {
return; 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() { function getSiteList() {
return $this->output return $this->output
->set_content_type('application/json') ->set_content_type('application/json')
->set_status_header(200) ->set_status_header(200)
->set_output(json_encode($this->typo->getSitesList($this->login_id))); ->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() { function getListTypos() {
log_message("debug", "get_list_messages()"); log_message("debug", "get_list_messages()");
...@@ -100,18 +163,10 @@ class Typos extends CI_Controller { ...@@ -100,18 +163,10 @@ class Typos extends CI_Controller {
echo json_encode($this->typo->getMessagesList($data)); echo json_encode($this->typo->getMessagesList($data));
} }
function getSiteTypos($siteId = null) { /**
if (is_null($siteId)) { * Управление сайтами
return $this->output->set_status_header(400) * OLD
->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)));
}
/*Управление сайтами*/
function panel_sites() { function panel_sites() {
$id_site = $this->input->get("id"); $id_site = $this->input->get("id");
$oper = $this->input->get("oper"); $oper = $this->input->get("oper");
...@@ -131,7 +186,9 @@ class Typos extends CI_Controller { ...@@ -131,7 +186,9 @@ class Typos extends CI_Controller {
} }
/*Управление сообщениями*/ /**
* OLD
*/
function panel_messages() { function panel_messages() {
$oper = $this->input->post('oper'); $oper = $this->input->post('oper');
......
...@@ -246,11 +246,18 @@ class Typo extends CI_Model { ...@@ -246,11 +246,18 @@ class Typo extends CI_Model {
} }
} }
/* Обновляем статус сообщения */ /**
*
* @param $data
*/
function editMessage($data) { function editMessage($data) {
if ($this->getMessageRights($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"]); $this->correctTypo($data["id_message"]);
} }
...@@ -354,16 +361,6 @@ class Typo extends CI_Model { ...@@ -354,16 +361,6 @@ class Typo extends CI_Model {
curl_close($curl); 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 { ...@@ -78,11 +78,18 @@ export default class SiteList extends React.Component {
); );
} }
return( if (this.state.activeTab === index) {
<TabPane key={index} tabId={index}> return (
<TypoList typos={this.typos}/> <TabPane key={index} tabId={index}>
</TabPane> <TypoList siteId={site.id} typos={this.typos}/>
); </TabPane>
);
} else { // Если не активная вкладка - то не рендерим содержимое
return (
<TabPane key={index} tabId={index}>
</TabPane>
);
}
}); });
return ( return (
......
...@@ -10,14 +10,20 @@ export default class Typo extends Component { ...@@ -10,14 +10,20 @@ export default class Typo extends Component {
}; };
render() { 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 textColor = "text-white";
const backgroundColor = "bg-primary"; const backgroundColor = "bg-primary";
const className = `TypoCard text-center ${display} ${backgroundColor} ${textColor}`; 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 ( return (
<Card className={className}> <Card className={className}>
<CardHeader> <CardHeader>
......
...@@ -3,7 +3,8 @@ import Typo from "./Typo/index"; ...@@ -3,7 +3,8 @@ import Typo from "./Typo/index";
export default class TypoList extends Component { export default class TypoList extends Component {
state = { state = {
currentTypo: 0 currentTypo: 0,
siteId: 0,
}; };
/** /**
...@@ -13,9 +14,10 @@ export default class TypoList extends Component { ...@@ -13,9 +14,10 @@ export default class TypoList extends Component {
* @param typoId Идентификатор опечатки * @param typoId Идентификатор опечатки
*/ */
acceptCorrection(typoId) { acceptCorrection(typoId) {
alert("Accept"); this._setTypoStatus(1, typoId, this.state.siteId, () => {
this.state.currentTypo++; this.state.currentTypo++;
this.forceUpdate(); this.forceUpdate();
});
} }
/** /**
...@@ -25,22 +27,52 @@ export default class TypoList extends Component { ...@@ -25,22 +27,52 @@ export default class TypoList extends Component {
* @param typoId Идентификатор опечатки. * @param typoId Идентификатор опечатки.
*/ */
declineCorrection(typoId) { declineCorrection(typoId) {
alert("Decline"); this._setTypoStatus(0, typoId, this.state.siteId, () => {
this.state.currentTypo++; this.state.currentTypo++;
this.forceUpdate(); 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() { render() {
const {typos} = this.props; 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) => 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} show={this.state.currentTypo === index}
acceptCallback={this.acceptCorrection.bind(this, typo.id)} acceptCallback={this.acceptCorrection.bind(this, typo.id)}
declineCallback={this.declineCorrection.bind(this, typo.id)}/> declineCallback={this.declineCorrection.bind(this, typo.id)}/>
); );
console.log(typoCards);
return ( return (
<div> <div>
{typoCards} {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