diff --git a/client/src/app-components/article-add-modal.js b/client/src/app-components/article-add-modal.js index 2ffe368e..36a160e2 100644 --- a/client/src/app-components/article-add-modal.js +++ b/client/src/app-components/article-add-modal.js @@ -12,7 +12,6 @@ import FormField from 'core-components/form-field'; import SubmitButton from 'core-components/submit-button'; import Button from 'core-components/button'; import TextEditor from 'core-components/text-editor'; -import Message from 'core-components/message'; class ArticleAddModal extends React.Component { static propTypes = { @@ -23,8 +22,7 @@ class ArticleAddModal extends React.Component { }; state = { - loading: false, - errorMessage: false + loading: false }; render() { @@ -33,7 +31,6 @@ class ArticleAddModal extends React.Component {
- {this.state.errorMessage ? {i18n(this.state.errorMessage)} : null} {i18n('SAVE')} - {this.state.errorMessage ? {i18n(this.state.errorMessage)} : null} @@ -143,12 +139,7 @@ class AdminPanelViewArticle extends React.Component { }).then(() => { this.props.dispatch(ArticlesActions.retrieveArticles()); this.setState({ - editable: false, - errorMessage: false - }) - }).catch((e) => { - this.setState({ - errorMessage: e.message + editable: false }); }); } diff --git a/client/src/data/languages/en.js b/client/src/data/languages/en.js index 5f338e78..cc7e7c8b 100644 --- a/client/src/data/languages/en.js +++ b/client/src/data/languages/en.js @@ -410,8 +410,6 @@ export default { 'INVALID_SUPERVISED_USERS': 'Invalid supervised users', 'SUPERVISOR_CAN_NOT_SUPERVISE_HIMSELF': 'Supervisor can not supervise himself', 'NAME_ALREADY_USED': 'Name already used', - 'CONTENT_ALREADY_USED': 'Content already used', - 'TITLE_ALREADY_USED': 'Title already used', //MESSAGES 'SIGNUP_SUCCESS': 'You have registered successfully in our support system.', diff --git a/server/controllers/article/add-topic.php b/server/controllers/article/add-topic.php index 3e8b30ae..c0446d32 100755 --- a/server/controllers/article/add-topic.php +++ b/server/controllers/article/add-topic.php @@ -19,10 +19,9 @@ DataValidator::with('CustomValidations', true); * @apiParam {String} iconColor Icon's color of the new topic. * @apiParam {Boolean} private Indicates if the topic is not shown to users. * - * @apiUse NO_PERMISSION - * @apiUse INVALID_TITLE - * @apiUse NAME_ALREADY_USED - * + * @apiUse NO_PERMISSION + * @apiUse INVALID_NAME + * * @apiSuccess {Object} data Topic info * @apiSuccess {Number} data.topicId Topic id * @@ -38,30 +37,19 @@ class AddTopicController extends Controller { 'requestData' => [ 'name' => [ 'validation' => DataValidator::notBlank()->length(LengthConfig::MIN_LENGTH_NAME, LengthConfig::MAX_LENGTH_NAME), - 'error' => ERRORS::INVALID_TITLE + 'error' => ERRORS::INVALID_NAME ], ] ]; } public function handler() { - - $name = Controller::request('name', true); - $icon = Controller::request('icon'); - $iconColor = Controller::request('iconColor'); - $private = Controller::request('private') ? 1 : 0; - $CreatedTopic = Topic::getDataStore($name, 'name'); - - if(!$CreatedTopic->isNull()){ - throw new RequestException(ERRORS::NAME_ALREADY_USED); - } - $topic = new Topic(); $topic->setProperties([ - 'name' => $name, - 'icon' => $icon, - 'iconColor' => $iconColor, - 'private' => $private + 'name' => Controller::request('name', true), + 'icon' => Controller::request('icon'), + 'iconColor' => Controller::request('iconColor'), + 'private' => Controller::request('private') ? 1 : 0 ]); Log::createLog('ADD_TOPIC', $topic->name); diff --git a/server/controllers/article/add.php b/server/controllers/article/add.php index 31fad345..c0433c6e 100755 --- a/server/controllers/article/add.php +++ b/server/controllers/article/add.php @@ -25,8 +25,6 @@ DataValidator::with('CustomValidations', true); * @apiUse INVALID_TITLE * @apiUse INVALID_CONTENT * @apiUse INVALID_TOPIC - * @apiUse TITLE_ALREADY_USED - * @apiUse CONTENT_ALREADY_USED * * @apiSuccess {Object} data Article info * @apiSuccess {Number} data.articleId Article id @@ -41,7 +39,7 @@ class AddArticleController extends Controller { 'permission' => 'staff_2', 'requestData' => [ 'title' => [ - 'validation' => DataValidator::notBlank()->length(LengthConfig::MIN_LENGTH_NAME, LengthConfig::MAX_LENGTH_NAME), + 'validation' => DataValidator::notBlank()->length(LengthConfig::MIN_LENGTH_TITLE, LengthConfig::MAX_LENGTH_TITLE), 'error' => ERRORS::INVALID_TITLE ], 'content' => [ @@ -58,26 +56,14 @@ class AddArticleController extends Controller { public function handler() { $content = Controller::request('content', true); - $title = Controller::request('title', true); - $createdArticleTookByTitle = Article::getDataStore($title,'title'); - $createdArticleTookByContent = Article::getDataStore($content,'content'); - if(!$createdArticleTookByTitle->isNull()){ - throw new RequestException(ERRORS::TITLE_ALREADY_USED); - } - - if(!$createdArticleTookByContent->isNull()){ - throw new RequestException(ERRORS::CONTENT_ALREADY_USED); - } - - $fileUploader = FileUploader::getInstance(); $fileUploader->setPermission(FileManager::PERMISSION_ARTICLE); $imagePaths = $this->uploadImages(true); $article = new Article(); $article->setProperties([ - 'title' => $title, + 'title' => Controller::request('title', true), 'content' => $this->replaceWithImagePaths($imagePaths, $content), 'lastEdited' => Date::getCurrentDate(), 'position' => Controller::request('position') || 1 diff --git a/server/controllers/article/edit-topic.php b/server/controllers/article/edit-topic.php index cc61d653..9090ecc9 100755 --- a/server/controllers/article/edit-topic.php +++ b/server/controllers/article/edit-topic.php @@ -22,8 +22,7 @@ DataValidator::with('CustomValidations', true); * * @apiUse NO_PERMISSION * @apiUse INVALID_TOPIC - * @apiUse INVALID_TITLE - * @apiUse NAME_ALREADY_USED + * @apiUse INVALID_NAME * * @apiSuccess {Object} data Empty object * @@ -43,7 +42,7 @@ class EditTopicController extends Controller { ], 'name' => [ 'validation' => DataValidator::notBlank()->length(LengthConfig::MIN_LENGTH_NAME, LengthConfig::MAX_LENGTH_NAME), - 'error' => ERRORS::INVALID_TITLE + 'error' => ERRORS::INVALID_NAME ] ] ]; @@ -51,29 +50,20 @@ class EditTopicController extends Controller { public function handler() { $topic = Topic::getDataStore(Controller::request('topicId')); - $name = Controller::request('name'); - $iconColor = Controller::request('iconColor'); - $private = Controller::request('private'); - $icon = Controller::request('icon'); - $createdArticleTookByName = Topic::getDataStore($name, 'name'); - if(!$createdArticleTookByName->isNull() && $topic->id !== $createdArticleTookByName->id){ - throw new RequestException(ERRORS::NAME_ALREADY_USED); - } - - if($name) { + if(Controller::request('name')) { $topic->name = Controller::request('name', true); } - if($iconColor) { - $topic->iconColor = $iconColor; + if(Controller::request('iconColor')) { + $topic->iconColor = Controller::request('iconColor'); } - if($icon) { - $topic->icon = $icon; + if(Controller::request('icon')) { + $topic->icon = Controller::request('icon'); } - if ($private !== null) { - $topic->private = $private; + if (Controller::request('private') !== null) { + $topic->private = Controller::request('private'); } $topic->store(); diff --git a/server/controllers/article/edit.php b/server/controllers/article/edit.php index a2b8fe60..cc46458a 100755 --- a/server/controllers/article/edit.php +++ b/server/controllers/article/edit.php @@ -26,9 +26,7 @@ DataValidator::with('CustomValidations', true); * @apiUse INVALID_TOPIC * @apiUse INVALID_FILE * @apiUse INVALID_TITLE - * @apiUse CONTENT_ALREADY_USED - * @apiUse TITLE_ALREADY_USED - * + * * @apiSuccess {Object} data Empty object * */ @@ -46,17 +44,14 @@ class EditArticleController extends Controller { 'error' => ERRORS::INVALID_TOPIC ], 'title' => [ - 'validation' => DataValidator::OneOf( - DataValidator::notBlank()->length(LengthConfig::MIN_LENGTH_NAME, LengthConfig::MAX_LENGTH_NAME), - DataValidator::nullType() - ), + 'validation' => DataValidator::oneOf( + DataValidator::notBlank()->length(LengthConfig::MIN_LENGTH_TITLE, LengthConfig::MAX_LENGTH_TITLE), + DataValidator::nullType() + ), 'error' => ERRORS::INVALID_TITLE ], 'content' => [ - 'validation' => DataValidator::oneOf( - DataValidator::content(), - DataValidator::nullType() - ), + 'validation' => DataValidator::oneOf(DataValidator::content(),DataValidator::nullType()), 'error' => ERRORS::INVALID_CONTENT ] ] @@ -64,24 +59,10 @@ class EditArticleController extends Controller { } public function handler() { - $topicId = Controller::request('topicId'); - $content = Controller::request('content', true); - $title = Controller::request('title'); - $article = Article::getDataStore(Controller::request('articleId')); - $createdArticleTookByTitle = Article::getDataStore($title, 'title'); - $createdArticleTookByContent = Article::getDataStore($content, 'content'); - if(!$createdArticleTookByTitle->isNull() && $article->title !== $createdArticleTookByTitle->title){ - throw new RequestException(ERRORS::TITLE_ALREADY_USED); - } - - if(!$createdArticleTookByContent->isNull() && $article->content !== $createdArticleTookByContent->content){ - throw new RequestException(ERRORS::CONTENT_ALREADY_USED); - } - - if ($topicId) { - $newArticleTopic = Topic::getDataStore($topicId); + if (Controller::request('topicId')) { + $newArticleTopic = Topic::getDataStore(Controller::request('topicId')); if (!$newArticleTopic->isNull()) { $article->topic = $newArticleTopic; @@ -91,17 +72,18 @@ class EditArticleController extends Controller { } } - if($content) { + if(Controller::request('content')) { $fileUploader = FileUploader::getInstance(); $fileUploader->setPermission(FileManager::PERMISSION_ARTICLE); + $content = Controller::request('content', true); $imagePaths = $this->uploadImages(true); $article->content = $this->replaceWithImagePaths($imagePaths, $content); } - if($title) { - $article->title = $title; + if(Controller::request('title')) { + $article->title = Controller::request('title'); } if(Controller::request('position')) { diff --git a/server/controllers/system/edit-department.php b/server/controllers/system/edit-department.php index 3b2279e4..7d96e81a 100755 --- a/server/controllers/system/edit-department.php +++ b/server/controllers/system/edit-department.php @@ -21,7 +21,6 @@ DataValidator::with('CustomValidations', true); * @apiUse NO_PERMISSION * @apiUse INVALID_NAME * @apiUse INVALID_DEPARTMENT - * @apiUse NAME_ALREADY_USED * * @apiSuccess {Object} data Empty object * @@ -40,7 +39,10 @@ class EditDepartmentController extends Controller { 'error' => ERRORS::INVALID_DEPARTMENT ], 'name' => [ - 'validation' => DataValidator::notBlank()->length(LengthConfig::MIN_LENGTH_NAME, LengthConfig::MAX_LENGTH_NAME), + 'validation' => DataValidator::AllOf( + DataValidator::notBlank()->length(LengthConfig::MIN_LENGTH_NAME, LengthConfig::MAX_LENGTH_NAME), + DataValidator::ValidDepartmentName() + ), 'error' => ERRORS::INVALID_NAME ], ] @@ -53,11 +55,6 @@ class EditDepartmentController extends Controller { $private = Controller::request('private'); $departmentInstance = Department::getDataStore($departmentId); - $createdDepartment = Department::getDataStore($newName, 'name'); - - if(!$createdDepartment->isNull() && $createdDepartment->name !== $departmentInstance->name){ - throw new RequestException(ERRORS::NAME_ALREADY_USED); - } if($private && $departmentId == Setting::getSetting('default-department-id')->getValue()){ throw new RequestException(ERRORS::DEFAULT_DEPARTMENT_CAN_NOT_BE_PRIVATE); diff --git a/server/data/ERRORS.php b/server/data/ERRORS.php index 5c77a446..90c61321 100755 --- a/server/data/ERRORS.php +++ b/server/data/ERRORS.php @@ -24,17 +24,9 @@ * @apiError {String} INVALID_TITLE The title is invalid, probably too short. */ /** - * @apiDefine TITLE_ALREADY_USED - * @apiError {String} TITLE_ALREADY_USED The title is already in use. - */ -/** - * @apiDefine INVALID_CONTENT + * @apiDefine INVALID_CONTENT * @apiError {String} INVALID_CONTENT The content is invalid, probably to short. */ -/** - * @apiDefine CONTENT_ALREADY_USED - * @apiError {String} CONTENT_ALREADY_USED The content is already in use. - */ /** * @apiDefine INVALID_EMAIL * @apiError {String} INVALID_EMAIL The email is invalid or already exists. @@ -343,9 +335,7 @@ class ERRORS { const TAG_EXISTS = 'TAG_EXISTS'; const NO_PERMISSION = 'NO_PERMISSION'; const INVALID_TITLE = 'INVALID_TITLE'; - const TITLE_ALREADY_USED = 'TITLE_ALREADY_USED'; const INVALID_CONTENT = 'INVALID_CONTENT'; - const CONTENT_ALREADY_USED = 'CONTENT_ALREADY_USED'; const INVALID_EMAIL = 'INVALID_EMAIL'; const INVALID_PASSWORD = 'INVALID_PASSWORD'; const INVALID_NAME = 'INVALID_NAME'; diff --git a/server/libs/validations/validArticleContent.php b/server/libs/validations/validArticleContent.php deleted file mode 100644 index 0dc5e1bb..00000000 --- a/server/libs/validations/validArticleContent.php +++ /dev/null @@ -1,13 +0,0 @@ -isNull(); - } -} diff --git a/server/libs/validations/validArticleName.php b/server/libs/validations/validArticleName.php deleted file mode 100644 index 1a9d17a0..00000000 --- a/server/libs/validations/validArticleName.php +++ /dev/null @@ -1,13 +0,0 @@ -isNull(); - } -} diff --git a/server/libs/validations/validTopicName.php b/server/libs/validations/validTopicName.php deleted file mode 100644 index 158d730f..00000000 --- a/server/libs/validations/validTopicName.php +++ /dev/null @@ -1,13 +0,0 @@ -isNull(); - } -} diff --git a/tests/article/article.rb b/tests/article/article.rb index 9116ddb3..5eb06bc1 100644 --- a/tests/article/article.rb +++ b/tests/article/article.rb @@ -48,32 +48,6 @@ describe 'Article path' do (lastLog['type']).should.equal('ADD_ARTICLE') end - it 'should fail if articles data already exists' do - - result = request('/article/add', { - title: 'Some article', - content: 'this content is unique', - topicId: @topic_id, - position: 1, - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - (result['status']).should.equal('fail') - (result['message']).should.equal('TITLE_ALREADY_USED') - - result = request('/article/add', { - title: 'unique title', - content: 'This is an article about server management.', - topicId: @topic_id, - position: 1, - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('fail') - (result['message']).should.equal('CONTENT_ALREADY_USED') - end - it 'should edit article' do result = request('/article/edit', { articleId: @article_id, @@ -93,77 +67,6 @@ describe 'Article path' do (lastLog['type']).should.equal('EDIT_ARTICLE') end - it 'should fail if edit article has already used data' do - result = request('/article/add', { - title: 'unique title1.5', - content: 'This is an article about server management1.5.', - topicId: @topic_id, - position: 1, - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('success') - - result = request('/article/add', { - title: 'unique title2', - content: 'This is an article about server management22.', - topicId: @topic_id, - position: 1, - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('success') - lastArticle = $database.getLastRow('article') - - result = request('/article/edit', { - articleId: lastArticle['id'], - content: 'This is an article about server management1.5.', - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('fail') - (result['message']).should.equal('CONTENT_ALREADY_USED') - - result = request('/article/edit', { - articleId: lastArticle['id'], - title: 'unique title1.5', - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('fail') - (result['message']).should.equal('TITLE_ALREADY_USED') - - end - - it 'should success if change for the same date' do - result = request('/article/add', { - title: 'unique article', - content: 'this content is unique pt2', - topicId: @topic_id, - position: 1, - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('success') - - lastArticle = $database.getLastRow('article') - - result = request('/article/edit', { - articleId: lastArticle['id'], - title: 'unique article', - content: 'this content is unique pt2', - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('success') - end - it 'should edit article topic' do request('/article/add-topic', { name: 'Software installation', @@ -204,44 +107,38 @@ describe 'Article path' do end it 'should retrieve all articles' do - + request('/article/add', { + title: 'Some article', + content: 'This is an article about server management.', + topicId: @topic_id, + position: 1, + csrf_userid: $csrf_userid, + csrf_token: $csrf_token + }) result = request('/article/get-all', { csrf_userid: $csrf_userid, csrf_token: $csrf_token }) (result['status']).should.equal('success') - (result['data'][0]['name']).should.equal('Valid name') - (result['data'][0]['icon']).should.equal('flag') - (result['data'][0]['iconColor']).should.equal('pink') - (result['data'][0]['private']).should.equal('1') - - (result['data'][1]['name']).should.equal('Server management') + (result['data'][0]['name']).should.equal('Server management') + (result['data'][0]['icon']).should.equal('cogs') + (result['data'][0]['iconColor']).should.equal('red') + (result['data'][0]['private']).should.equal('0') + (result['data'][1]['name']).should.equal('Private Topic') (result['data'][1]['icon']).should.equal('cogs') - (result['data'][1]['iconColor']).should.equal('red') - (result['data'][1]['private']).should.equal('0') + (result['data'][1]['iconColor']).should.equal('green') + (result['data'][1]['private']).should.equal('1') + (result['data'][2]['name']).should.equal('Software installation') + (result['data'][2]['icon']).should.equal('photo') + (result['data'][2]['iconColor']).should.equal('blue') + (result['data'][2]['private']).should.equal('0') - (result['data'][2]['name']).should.equal('Private Topic') - (result['data'][2]['icon']).should.equal('cogs') - (result['data'][2]['iconColor']).should.equal('green') - (result['data'][2]['private']).should.equal('1') - - (result['data'][3]['name']).should.equal('Software installation') - (result['data'][3]['icon']).should.equal('photo') - (result['data'][3]['iconColor']).should.equal('blue') - (result['data'][3]['private']).should.equal('0') + (result['data'][0]['articles'][0]['title']).should.equal('Some article') + (result['data'][0]['articles'][0]['content']).should.equal('This is an article about server management.') + (result['data'][0]['articles'][0]['position']).should.equal('1') - (result['data'][1]['articles'][0]['title']).should.equal('unique title1.5') - (result['data'][1]['articles'][0]['content']).should.equal('This is an article about server management1.5.') - (result['data'][1]['articles'][0]['position']).should.equal('1') - (result['data'][1]['articles'][1]['title']).should.equal('unique title2') - (result['data'][1]['articles'][1]['content']).should.equal('This is an article about server management22.') - (result['data'][1]['articles'][1]['position']).should.equal('1') - (result['data'][1]['articles'][2]['title']).should.equal('unique article') - (result['data'][1]['articles'][2]['content']).should.equal('this content is unique pt2') - (result['data'][1]['articles'][2]['position']).should.equal('1') end - it 'should retrieve public departments' do Scripts.logout() Scripts.login('tyrion@opensupports.com', 'tyrionl') diff --git a/tests/article/topic.rb b/tests/article/topic.rb index 07fb48f5..3510b99b 100644 --- a/tests/article/topic.rb +++ b/tests/article/topic.rb @@ -24,19 +24,6 @@ describe 'Topic paths' do (lastLog['type']).should.equal('ADD_TOPIC') end - it 'should success if topic has same name' do - result = request('/article/edit-topic', { - topicId: 1, - name: 'Server management', - iconColor: 'blue', - private: 1, - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('success') - end - it 'should edit topic correctly' do result = request('/article/edit-topic', { topicId: 1, @@ -56,47 +43,6 @@ describe 'Topic paths' do (topic['private']).should.equal(1) end - it 'should fail if data is already in use' do - result = request('/article/add-topic', { - name: 'Installation issues', - icon: 'cogs', - iconColor: 'red', - private: 0, - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('fail') - (result['message']).should.equal('NAME_ALREADY_USED') - end - - it 'should edit topic if data is right without name' do - result = request('/article/add-topic', { - name: 'Valid name', - icon: 'cogs', - iconColor: 'red', - private: 0, - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('success') - - topic = $database.getLastRow('topic') - - result = request('/article/edit-topic', { - name: 'Valid name', - topicId: topic['id'], - iconColor: 'pink', - icon: 'flag', - private: 1, - csrf_userid: $csrf_userid, - csrf_token: $csrf_token - }) - - (result['status']).should.equal('success') - end - it 'should delete topic correctly' do result = request('/article/delete-topic', { topicId: 1, diff --git a/tests/scripts.rb b/tests/scripts.rb index a7afbbee..925e0e47 100644 --- a/tests/scripts.rb +++ b/tests/scripts.rb @@ -162,12 +162,11 @@ class Scripts }) end - def self.createDepartment(nameDepartment, private = 0) + def self.createDepartment(nameDepartment = 'validnameDepartment') request('/system/add-department', { csrf_userid: $csrf_userid, csrf_token: $csrf_token, - name: nameDepartment, - private: private + name: nameDepartment }) end diff --git a/tests/system/edit-department.rb b/tests/system/edit-department.rb index ec748053..85700e40 100644 --- a/tests/system/edit-department.rb +++ b/tests/system/edit-department.rb @@ -44,39 +44,19 @@ describe'system/edit-department' do result['status'].should.equal('fail') result['message'].should.equal('INVALID_NAME') - end - - it 'should success if you change for the same name' do - Scripts.createDepartment('thisisAnewName') - department = $database.getLastRow('department') - - result = request('/system/edit-department', { - csrf_userid: $csrf_userid, - csrf_token: $csrf_token, - name: department['name'], - departmentId: department['id'], - private:1 - }) - - result['status'].should.equal('success') - - end - - it 'shouild fail if you use an used name' do - Scripts.createDepartment('thistitleisunique') - lastDepartment = $database.getLastRow('department') result = request('/system/edit-department', { csrf_userid: $csrf_userid, csrf_token: $csrf_token, - name: 'thisisAnewName', - departmentId: lastDepartment['id'], - private:1 + name: lastDepartment['name'], + departmentId: 4 }) + result['status'].should.equal('fail') - result['message'].should.equal('NAME_ALREADY_USED') + result['message'].should.equal('INVALID_NAME') + end end