From 899827917ad86125990c2c94d6da83346cd8cd16 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Tue, 30 Jul 2019 14:42:50 +0800 Subject: [PATCH 1/7] =?UTF-8?q?=E6=89=80=E9=80=89=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E5=88=86=E7=8F=AD=E8=87=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coursesPublic/form/SchoolSelect.js | 2 +- .../courses/members/modal/AddStudentModal.js | 19 ++++++++++--------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/public/react/src/modules/courses/coursesPublic/form/SchoolSelect.js b/public/react/src/modules/courses/coursesPublic/form/SchoolSelect.js index e1a9062e3..67cf3c842 100644 --- a/public/react/src/modules/courses/coursesPublic/form/SchoolSelect.js +++ b/public/react/src/modules/courses/coursesPublic/form/SchoolSelect.js @@ -57,7 +57,7 @@ class SchoolSelect extends Component{ const { value, onChange } = this.props; return ( 姓名: {this.setState({name: e.target.value})}} - style={{ width: '242px'}} + style={{ width: '221px'}} > 单位: {/* {this.setState({school_name: e.target.value})}} @@ -210,14 +210,7 @@ class AddStudentModal extends Component{ >搜索 {/* */} - {course_groups && course_groups.length &&
- 分班: - -
} +

@@ -271,6 +264,14 @@ class AddStudentModal extends Component{ + {course_groups && course_groups.length &&

+ 所选学生分班至(选填): + +
} : } From b728139be22d7e7196d01695515e4de0a822cf74 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Tue, 30 Jul 2019 16:25:50 +0800 Subject: [PATCH 2/7] login --- .../src/modules/courses/members/modal/AddStudentModal.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/public/react/src/modules/courses/members/modal/AddStudentModal.js b/public/react/src/modules/courses/members/modal/AddStudentModal.js index 34af1d01a..1ad02c9f4 100644 --- a/public/react/src/modules/courses/members/modal/AddStudentModal.js +++ b/public/react/src/modules/courses/members/modal/AddStudentModal.js @@ -240,7 +240,12 @@ class AddStudentModal extends Component{ 12 }> - + From f0e6da586ad340b22241b3799a5be7696d939f1e Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Wed, 31 Jul 2019 16:59:08 +0800 Subject: [PATCH 3/7] foruM --- public/react/src/modules/forums/MemoDetail.js | 36 ++++++++++--------- public/react/src/modules/forums/MemoNew.js | 14 ++++---- public/react/src/modules/forums/Post.css | 3 ++ public/react/src/modules/forums/PostItem.js | 4 +-- .../src/modules/forums/PostPaginationHOC.js | 14 ++++---- .../react/src/modules/forums/UserSection.js | 2 +- .../src/modules/forums/shixun/MemoShixun.js | 10 +++--- 7 files changed, 45 insertions(+), 38 deletions(-) diff --git a/public/react/src/modules/forums/MemoDetail.js b/public/react/src/modules/forums/MemoDetail.js index e504dae77..f2be85ffe 100644 --- a/public/react/src/modules/forums/MemoDetail.js +++ b/public/react/src/modules/forums/MemoDetail.js @@ -54,12 +54,12 @@ class MemoDetail extends Component { const { match } = this.props - const memoUrl = `/api/v1/memos/${match.params.memoId}`; + const memoUrl = `/memos/${match.params.memoId}.json`; this.setState({ memoLoading: true }) axios.get(memoUrl,{ - withCredentials: true, + // withCredentials: true, }) .then((response) => { const memo = response.data.memo @@ -91,9 +91,9 @@ class MemoDetail extends Component { }) delete response.data.memo_replies; this.props.initForumState(response.data) - const user = response.data.current_user; - user.tidding_count = response.data.tidding_count; - this.props.initCommonState(user) + // const user = response.data.current_user; + // user.tidding_count = response.data.tidding_count; + // this.props.initCommonState(user) } this.setState({ memoLoading: false @@ -119,7 +119,7 @@ class MemoDetail extends Component { const deleteUrl = `/api/v1/memos/${memo.id}`; // 获取memo list axios.delete(deleteUrl, { - withCredentials: true, + // withCredentials: true, }) .then((response) => { const status = response.data.status @@ -587,7 +587,7 @@ class MemoDetail extends Component { const set_top_or_down_Url = `/api/v1/memos/${memo.id}/set-top-or-down?${paramsUrl}`; // 获取memo list axios.get(set_top_or_down_Url, { - withCredentials: true, + // withCredentials: true, }) .then((response) => { const status = response.data.status @@ -619,7 +619,7 @@ class MemoDetail extends Component { score: _reward, user_id: author_info.user_id }, { - withCredentials: true, + // withCredentials: true, }) .then((response) => { const { code } = response.data; @@ -659,10 +659,14 @@ class MemoDetail extends Component { const { memo, recommend_shixun, current_user,author_info } = this.props; const { comments, hasMoreComments, goldRewardDialogOpen } = this.state; - if (this.state.memoLoading) { + if (!memo || this.state.memoLoading) { return
} - current_user.user_url = `/users/${current_user.login}`; + let _current_user = {} + if (current_user) { + _current_user = current_user + } + (_current_user.user_url = `/users/${_current_user.login}`); memo.isDetailPage = true; // TODO 图片上传地址 return ( @@ -681,11 +685,11 @@ class MemoDetail extends Component { data-tip-down={`获得平台奖励金币:${memo.reward}`} > {memo.reward}
} - { current_user && (current_user.admin === true || current_user.user_id === author_info.user_id) && + { _current_user && (_current_user.admin === true || _current_user.user_id === author_info.user_id) &&
    - { current_user.admin === true && + { _current_user.admin === true && ( memo.sticky === true ?
  • this.setTop(memo)}>取消置顶
  • : @@ -701,15 +705,15 @@ class MemoDetail extends Component {
} - + 返回
{moment(memo.time).fromNow()} 发布
- { current_user.admin && + { _current_user.admin && @@ -770,7 +774,7 @@ class MemoDetail extends Component { {memo.replies_count}
- { const { status, message, memo_id } = response.data; @@ -281,7 +281,7 @@ class MemoNew extends Component { }, attachments: attachmentsMap }, { - withCredentials: true, + // withCredentials: true, }) .then((response) => { const { status, message, memo_id } = response.data; @@ -298,7 +298,7 @@ class MemoNew extends Component { componentDidMount() { const newMemoUrl = `/api/v1/memos/new` axios.get(newMemoUrl,{ - withCredentials: true, + // withCredentials: true, }) .then((response) => { const data = response.data; @@ -319,9 +319,9 @@ class MemoNew extends Component { // repertoiresTagMap }) - const user = response.data.current_user; - user.tidding_count = response.data.tidding_count; - this.props.initCommonState(user) + // const user = response.data.current_user; + // user.tidding_count = response.data.tidding_count; + // this.props.initCommonState(user) // 初始化 csrf meta const $ = window.$ @@ -338,7 +338,7 @@ class MemoNew extends Component { if (memoId) { const memoUrl = `/api/v1/memos/${match.params.memoId}/edit`; axios.get(memoUrl,{ - withCredentials: true, + // withCredentials: true, }) .then((response) => { const tag_list = response.data.tag_list diff --git a/public/react/src/modules/forums/Post.css b/public/react/src/modules/forums/Post.css index d10857a60..7b9792dea 100644 --- a/public/react/src/modules/forums/Post.css +++ b/public/react/src/modules/forums/Post.css @@ -8,6 +8,9 @@ min-height: 400px; position: relative; } + #forum_index_list .forum_table .forum_table_item { + background: #fff; + } .noMemosTip { position: absolute; right: 10px; diff --git a/public/react/src/modules/forums/PostItem.js b/public/react/src/modules/forums/PostItem.js index aa610184f..a56badb80 100644 --- a/public/react/src/modules/forums/PostItem.js +++ b/public/react/src/modules/forums/PostItem.js @@ -46,11 +46,11 @@ class PostItem extends Component {

- {memo.username} + {memo.user_name} {/*最后回复:todo{memo.username} memo.language && memo.language != 'other' && {memo.language} */} - {moment(memo.updated_at).fromNow()} + {/* {moment(memo.updated_at).fromNow()} */} {memo.tag && memo.tag.length ? 来自 {memo.tag.join('/')} : ''} {/*C++*/} diff --git a/public/react/src/modules/forums/PostPaginationHOC.js b/public/react/src/modules/forums/PostPaginationHOC.js index 25e397318..8e16f2e50 100644 --- a/public/react/src/modules/forums/PostPaginationHOC.js +++ b/public/react/src/modules/forums/PostPaginationHOC.js @@ -165,7 +165,7 @@ return function wrap(WrappedComponent) { let paramsUrl = queryString.stringify(params) - const memosUrl = '/api/v1/memos?' + paramsUrl // /${challenge.identifier}/star + const memosUrl = '/memos.json?' + paramsUrl // /${challenge.identifier}/star this.setState({ currentPage, @@ -174,7 +174,7 @@ return function wrap(WrappedComponent) { }) // 获取memo list axios.get(memosUrl,{ - withCredentials: true, + // withCredentials: true, }) .then((response) => { const memo_count = response.data.memo_count @@ -186,9 +186,9 @@ return function wrap(WrappedComponent) { this.fetchMemos(maxPage); return; } - const user = response.data.current_user; - user.tidding_count = response.data.tidding_count; - this.props.initCommonState(user) + // const user = response.data.current_user; + // user.tidding_count = response.data.tidding_count; + // this.props.initCommonState(user) this.props.initForumState(response.data) this.setState({ p_forum_id: params.forum, @@ -245,7 +245,7 @@ return function wrap(WrappedComponent) { const set_top_or_down_Url = `/api/v1/memos/${memo.id}/set-top-or-down?${paramsUrl}`; // 获取memo list axios.get(set_top_or_down_Url, { - withCredentials: true, + // withCredentials: true, }) .then((response) => { const status = response.data.status @@ -268,7 +268,7 @@ return function wrap(WrappedComponent) { const deleteUrl = `/api/v1/memos/${memo.id}`; // 获取memo list axios.delete(deleteUrl, { - withCredentials: true, + // withCredentials: true, }) .then((response) => { const status = response.data.status diff --git a/public/react/src/modules/forums/UserSection.js b/public/react/src/modules/forums/UserSection.js index 8ea9bad2a..4e8bdb45c 100644 --- a/public/react/src/modules/forums/UserSection.js +++ b/public/react/src/modules/forums/UserSection.js @@ -41,7 +41,7 @@ class UserSection extends Component { render() { const { match, history, author_info , current_user } = this.props - if (!author_info) { + if (!author_info || !current_user) { return
} return ( diff --git a/public/react/src/modules/forums/shixun/MemoShixun.js b/public/react/src/modules/forums/shixun/MemoShixun.js index 9d75da00d..f82ed2e34 100644 --- a/public/react/src/modules/forums/shixun/MemoShixun.js +++ b/public/react/src/modules/forums/shixun/MemoShixun.js @@ -83,7 +83,7 @@ class MemoShixun extends Component { } const stringifid = queryString.stringify(paramsObject); - const url = `/api/v1/discusses?${stringifid}` // /${challenge.identifier}/star + const url = `/discusses.json?${stringifid}` // /${challenge.identifier}/star // 获取memo list this.setState({ @@ -91,13 +91,13 @@ class MemoShixun extends Component { loadingMemos: true }) axios.get(url,{ - withCredentials: true, + // withCredentials: true, }) .then((response) => { if (response.data) { - const user = response.data.current_user; - user.tidding_count = response.data.tidding_count; - this.props.initCommonState(user) + // const user = response.data.current_user; + // user.tidding_count = response.data.tidding_count; + // this.props.initCommonState(user) this.props.initForumState(response.data) // const { hot_tags } = response.data; From b313d0627151c6300d51bfdcb8219089412156fc Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Wed, 31 Jul 2019 17:22:51 +0800 Subject: [PATCH 4/7] huifu --- public/react/src/modules/forums/MemoDetail.js | 10 +++++----- public/react/src/modules/forums/PostPaginationHOC.js | 10 ++++++---- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/public/react/src/modules/forums/MemoDetail.js b/public/react/src/modules/forums/MemoDetail.js index f2be85ffe..d340a5014 100644 --- a/public/react/src/modules/forums/MemoDetail.js +++ b/public/react/src/modules/forums/MemoDetail.js @@ -223,7 +223,7 @@ class MemoDetail extends Component { this.createNewComment(commentContent, id, editor); return; } - const url = `/api/v1/memos/${id}/reply`; + const url = `/memos/${id}/reply.json`; const { comments } = this.state; const user = this._getUser(); /* @@ -473,14 +473,14 @@ class MemoDetail extends Component { return; } } - const url = `/api/v1/memos/${memo.id}/reply`; + const url = `/memos/${memo.id}/reply.json`; let { comments } = this.state; const user = this._getUser(); axios.post(url, { content: content }, { - withCredentials: true + // withCredentials: true } ).then((response) => { if (response.data.status === -1) { @@ -584,9 +584,9 @@ class MemoDetail extends Component { params.forum_id = this.state.p_forum_id; } let paramsUrl = urlStringify(params) - const set_top_or_down_Url = `/api/v1/memos/${memo.id}/set-top-or-down?${paramsUrl}`; + const set_top_or_down_Url = `/memos/${memo.id}/sticky_or_cancel.json?${paramsUrl}`; // 获取memo list - axios.get(set_top_or_down_Url, { + axios.post(set_top_or_down_Url, { // withCredentials: true, }) .then((response) => { diff --git a/public/react/src/modules/forums/PostPaginationHOC.js b/public/react/src/modules/forums/PostPaginationHOC.js index 8e16f2e50..3922eae41 100644 --- a/public/react/src/modules/forums/PostPaginationHOC.js +++ b/public/react/src/modules/forums/PostPaginationHOC.js @@ -242,16 +242,18 @@ return function wrap(WrappedComponent) { params.forum_id = this.state.p_forum_id; } let paramsUrl = urlStringify(params) - const set_top_or_down_Url = `/api/v1/memos/${memo.id}/set-top-or-down?${paramsUrl}`; + const set_top_or_down_Url = `/memos/${memo.id}/sticky_or_cancel.json?${paramsUrl}`; // 获取memo list - axios.get(set_top_or_down_Url, { + axios.post(set_top_or_down_Url, { // withCredentials: true, }) .then((response) => { const status = response.data.status if (status === 0) { - const { memo_list } = response.data; - this.props.initForumState({ memo_list }) + this.fetchMemos(1, '') + + // const { memo_list } = response.data; + // this.props.initForumState({ memo_list }) // 刷新列表 // TODO 服务端直接返回第一页列表 // this.props.history.replace('/') From 85861a339681da0d2d66cd0c9b8e40d43a751a8a Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Thu, 1 Aug 2019 16:16:03 +0800 Subject: [PATCH 5/7] =?UTF-8?q?detail=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/src/App.js | 8 ++- public/react/src/modules/forums/MemoDetail.js | 43 ++++++++------- .../src/modules/forums/MemoDetailMDEditor.js | 2 +- public/react/src/modules/forums/MemoNew.js | 53 +++++++++++-------- 4 files changed, 64 insertions(+), 42 deletions(-) diff --git a/public/react/src/App.js b/public/react/src/App.js index 895016ff7..6e7ba3330 100644 --- a/public/react/src/App.js +++ b/public/react/src/App.js @@ -349,8 +349,12 @@ class App extends Component { {/*课堂*/} - {/* - */} + () + } + > + diff --git a/public/react/src/modules/forums/MemoDetail.js b/public/react/src/modules/forums/MemoDetail.js index d340a5014..f950037f4 100644 --- a/public/react/src/modules/forums/MemoDetail.js +++ b/public/react/src/modules/forums/MemoDetail.js @@ -90,6 +90,8 @@ class MemoDetail extends Component { comments: memo_replies }) delete response.data.memo_replies; + // reset + response.data.memo.praise_count = response.data.memo.memo_praise_count this.props.initForumState(response.data) // const user = response.data.current_user; // user.tidding_count = response.data.tidding_count; @@ -116,7 +118,7 @@ class MemoDetail extends Component { $('body>#root').off('onMemoDelete') } onMemoDelete(memo) { - const deleteUrl = `/api/v1/memos/${memo.id}`; + const deleteUrl = `/memos/${memo.id}.json`; // 获取memo list axios.delete(deleteUrl, { // withCredentials: true, @@ -158,14 +160,14 @@ class MemoDetail extends Component { clickPraise(){ const { memo } = this.props; - const url = `/api/v1/discusses/${memo.id}/plus`; + const url = `/discusses/${memo.id}/plus.json`; console.log(url) axios.post(url, { container_type: 'Memo', type: 1 // "踩0;赞1" }, { - withCredentials: true + // withCredentials: true } ).then((response) => { console.log(response); @@ -223,7 +225,8 @@ class MemoDetail extends Component { this.createNewComment(commentContent, id, editor); return; } - const url = `/memos/${id}/reply.json`; + // /${id} + const url = `/memos/reply.json`; const { comments } = this.state; const user = this._getUser(); /* @@ -235,12 +238,14 @@ class MemoDetail extends Component { commentContent = commentContent.replace(/(\n

\n\t
\n<\/p>)*$/g,''); } axios.post(url, { + parent_id: id, content: commentContent }, { - withCredentials: true + // withCredentials: true } ).then((response) => { + response.data.memo = response.data if (response.data.memo) { let newDiscuss = response.data.memo; @@ -303,12 +308,12 @@ class MemoDetail extends Component { if (childCommentId) { deleteCommentId = childCommentId; } - const url = `/api/v1/memos/${deleteCommentId}` + const url = `/memos/${deleteCommentId}.json` let comments = this.state.comments; axios.delete(url, { - withCredentials: true + // withCredentials: true } ).then((response) => { // TODO 删除成功或失败 @@ -346,7 +351,7 @@ class MemoDetail extends Component { const { comments } = this.state; const commentIndex = this._findById(discussId, comments); - const url = `/api/v1/discusses/${discussId}/plus` + const url = `/discusses/${discussId}/plus.json` axios.post(url, { // id: discussId, // container_id: challenge.id, @@ -354,7 +359,7 @@ class MemoDetail extends Component { type: comments[commentIndex].user_praise === true ? 0 : 1, // "踩0;赞1" }, { - withCredentials: true + // withCredentials: true } ).then((response) => { if (response.data.praise_count === 0 || response.data.praise_count) { @@ -379,7 +384,7 @@ class MemoDetail extends Component { handleComment = childComment; } let handleCommentId = handleComment.id; - const url = `/api/v1/discusses/${handleCommentId}/reward_code` + const url = `/discusses/${handleCommentId}/reward_code.json` axios.post(url, { id: handleCommentId, @@ -389,7 +394,7 @@ class MemoDetail extends Component { user_id: handleComment.user_id }, { - withCredentials: true + // withCredentials: true } ).then((response) => { if (response.data && response.data.code) { @@ -423,7 +428,7 @@ class MemoDetail extends Component { const id = item.id const { showSnackbar } = this.props; const user = this._getUser(); - const url = `/api/v1/memos/${id}/hidden` + const url = `/memos/${id}/hidden.json` const { comments } = this.state; const commentIndex = this._findById(id, comments); @@ -432,7 +437,7 @@ class MemoDetail extends Component { hidden: !comment.hidden ? "1" : "0" }, { - withCredentials: true + // withCredentials: true } ).then((response) => { if (response.data.status === -1) { @@ -473,10 +478,12 @@ class MemoDetail extends Component { return; } } - const url = `/memos/${memo.id}/reply.json`; + // /${memo.id} + const url = `/memos/reply.json`; let { comments } = this.state; const user = this._getUser(); axios.post(url, { + parent_id: memo.id, content: content }, { @@ -488,6 +495,7 @@ class MemoDetail extends Component { return; } if (response.data) { + response.data.memo = response.data const newMemo = response.data.memo; // ke editor.html && editor.html(''); @@ -536,12 +544,12 @@ class MemoDetail extends Component { let { comments, pageCount } = this.state; let { memo } = this.props; const user = this._getUser(); - const url = `/api/v1/memos/${memo.id}/more_reply?page=${pageCount}`; + const url = `/memos/${memo.id}/more_reply.json?page=${pageCount}`; axios.get(url, { }, { - withCredentials: true + // withCredentials: true } ).then((response) => { if (response.data.status === -1) { @@ -608,9 +616,8 @@ class MemoDetail extends Component { const { memo, author_info } = this.props; const newMemo = Object.assign({}, memo); const _reward = parseInt(inputVal) - const newMemoUrl = `/api/v1/memos/${memo.id}/update` - const url = `/api/v1/discusses/${memo.id}/reward_code` + const url = `/discusses/${memo.id}/reward_code.json` axios.post(url, { id: memo.id, diff --git a/public/react/src/modules/forums/MemoDetailMDEditor.js b/public/react/src/modules/forums/MemoDetailMDEditor.js index f15a19e20..00a87274d 100644 --- a/public/react/src/modules/forums/MemoDetailMDEditor.js +++ b/public/react/src/modules/forums/MemoDetailMDEditor.js @@ -42,7 +42,7 @@ class MemoDetailMDEditor extends Component { window.__tt = 400; setTimeout(() => { var commentMDEditor = window.create_editorMD_4comment("memo_comment_editorMd", '', this.props.height || 240, placeholder, imageUrl, () => { - commentMDEditor.focus() + // commentMDEditor.focus() this.isMDInited = true this.initDrag() diff --git a/public/react/src/modules/forums/MemoNew.js b/public/react/src/modules/forums/MemoNew.js index 3e7464dc1..98d95ddce 100644 --- a/public/react/src/modules/forums/MemoNew.js +++ b/public/react/src/modules/forums/MemoNew.js @@ -15,6 +15,7 @@ import Upload from 'rc-upload'; import axios from 'axios' import 'antd/lib/select/style/index.css' +import TPMMDEditor from '../tpm/challengesnew/TPMMDEditor' import { getUrl } from 'educoder' const Option = Select.Option; @@ -130,6 +131,7 @@ const languageSeparator = '/' class MemoNew extends Component { constructor(props) { super(props) + this.mdRef = React.createRef(); // https://testbdweb.trustie.net/uploads.js?attachment_id=1&filename=jqui.js // https://ant.design/components/upload-cn/ @@ -179,7 +181,7 @@ class MemoNew extends Component { } let mdVal; try { - mdVal = this.taskpass_editormd.getValue() + mdVal = this.mdRef.current.getValue() } catch (e) { showSnackbar('编辑器还未加载完毕,请稍后') @@ -205,6 +207,7 @@ class MemoNew extends Component { // collect attachments const $ = window.$; const attachmentsMap = {}; + const attachmentIds = [] $('#attachments_fields .attachment').each(( index, item ) => { const filename = $(item).find('.upload_filename').val(); // $($('#attachments_fields .attachment')[0]).find('input:nth-child(6)').val() @@ -215,13 +218,14 @@ class MemoNew extends Component { token, attachment_id } + attachmentIds.push(attachment_id) }) if (currentMemoId) { - this.updateMemo(attachmentsMap) + this.updateMemo(attachmentIds) } else { - this.newMemo(attachmentsMap) + this.newMemo(attachmentIds) } } onCancel() { @@ -235,20 +239,20 @@ class MemoNew extends Component { } updateMemo(attachmentsMap) { const { memoSubject, memoRepertoire, memoLanguage, memoType, currentMemoId, content } = this.state; - const mdVal = this.taskpass_editormd.getValue() + const mdVal = this.mdRef.current.getValue() console.log('isContentEdit: ', mdVal === content); - const newMemoUrl = `/api/v1/memos/${currentMemoId}/update` - axios.post(newMemoUrl, { + const newMemoUrl = `/memos/${currentMemoId}.json` + axios.put(newMemoUrl, { content_changed: this.contentChanged, tags: memoLanguage, - memo:{ + // memo:{ subject: memoSubject , content: mdVal, forum_id: memoType, repertoire_name: memoRepertoire, // language: memoLanguage.join(languageSeparator), // - }, + // }, attachments: attachmentsMap }, { // withCredentials: true, @@ -267,18 +271,18 @@ class MemoNew extends Component { } newMemo(attachmentsMap) { const { memoSubject, memoRepertoire, memoLanguage, memoType } = this.state; - const mdVal = this.taskpass_editormd.getValue() + const mdVal = this.mdRef.current.getValue() - const newMemoUrl = `/api/v1/memos/create` + const newMemoUrl = `/memos.json` axios.post(newMemoUrl, { tags: memoLanguage, - memo:{ + // memo:{ subject: memoSubject , content: mdVal, forum_id: memoType, - repertoire_name: memoRepertoire, + // repertoire_name: memoRepertoire, - }, + // }, attachments: attachmentsMap }, { // withCredentials: true, @@ -296,7 +300,7 @@ class MemoNew extends Component { }) } componentDidMount() { - const newMemoUrl = `/api/v1/memos/new` + const newMemoUrl = `/memos/new.json` axios.get(newMemoUrl,{ // withCredentials: true, }) @@ -336,7 +340,7 @@ class MemoNew extends Component { const { match } = this.props const memoId = match.params.memoId; if (memoId) { - const memoUrl = `/api/v1/memos/${match.params.memoId}/edit`; + const memoUrl = `/memos/${match.params.memoId}/edit.json`; axios.get(memoUrl,{ // withCredentials: true, }) @@ -344,10 +348,12 @@ class MemoNew extends Component { const tag_list = response.data.tag_list if (tag_list) { // this.setState({...response.data}) - const { content, forum_id, id, tag, repertoire_name, subject, - current_user, tag_list, attachments_url } = response.data; + const { content, forum_id, id, repertoire_name, subject, + current_user, tag_list, attachments_url, memo_tags } = response.data; this.initMD(content); // this.onRepertoiresChange(repertoire_name) + // tag -> memo_tags + const tag = memo_tags; let memoLanguage = [] if (tag) { memoLanguage = tag.map((item, index) => { @@ -355,7 +361,7 @@ class MemoNew extends Component { }) } this.setState({ - currentMemoId: id, + currentMemoId: memoId, memoSubject: subject, memoType: forum_id, memoRepertoire: repertoire_name, @@ -377,7 +383,7 @@ class MemoNew extends Component { window.$("html,body").animate({"scrollTop":0}) this.props.initForumState({ - current_user, + // current_user, tag_list }) } @@ -394,6 +400,8 @@ class MemoNew extends Component { } initMD(initValue) { + return; + this.contentChanged = false; const placeholder = ""; // amp; @@ -566,9 +574,12 @@ class MemoNew extends Component {

*
-
+ + + {/*
-
+
*/}

From 25036be1e075f1a1c1bd4c1f0fc413f509097c70 Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Thu, 1 Aug 2019 16:27:17 +0800 Subject: [PATCH 6/7] 2 --- public/react/src/modules/forums/MemoDetail.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/public/react/src/modules/forums/MemoDetail.js b/public/react/src/modules/forums/MemoDetail.js index f950037f4..15e412981 100644 --- a/public/react/src/modules/forums/MemoDetail.js +++ b/public/react/src/modules/forums/MemoDetail.js @@ -44,7 +44,7 @@ class MemoDetail extends Component { this.state = { memoLoading: true, hasMoreComments: false, - pageCount: 1, + pageCount: 2, goldRewardDialogOpen: false } @@ -86,7 +86,7 @@ class MemoDetail extends Component { } this.setState({ hasMoreComments, - pageCount: 1, + pageCount: 2, comments: memo_replies }) delete response.data.memo_replies; From fef63f7786a4a81ead58ea8d1c06c8d838769e8f Mon Sep 17 00:00:00 2001 From: hjm <63528605@qq.com> Date: Fri, 2 Aug 2019 14:15:02 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E5=85=B3=E6=B3=A8=20=E5=AE=9E=E8=AE=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../react/src/modules/forums/ForumsIndex.css | 3 + public/react/src/modules/forums/MemoDetail.js | 23 ++++++-- public/react/src/modules/forums/PostItem.js | 4 +- .../src/modules/forums/RecommendShixun.js | 4 +- .../react/src/modules/forums/UserSection.js | 55 ++++++++++++++----- .../src/modules/forums/shixun/MemoShixun.css | 2 +- .../src/modules/forums/shixun/MemoShixun.js | 2 +- .../modules/forums/shixun/ShiXunPostItem.js | 2 +- 8 files changed, 68 insertions(+), 27 deletions(-) diff --git a/public/react/src/modules/forums/ForumsIndex.css b/public/react/src/modules/forums/ForumsIndex.css index c4af188eb..22925f882 100644 --- a/public/react/src/modules/forums/ForumsIndex.css +++ b/public/react/src/modules/forums/ForumsIndex.css @@ -5,6 +5,9 @@ .discuss-tab { height: 90px; } + .discuss-tab ._forum_tab a.navItem { + line-height: 2; + } .discuss-tab ._forum_tab a.navItem:hover { color: #4CACFF !important; border-bottom: none !important; diff --git a/public/react/src/modules/forums/MemoDetail.js b/public/react/src/modules/forums/MemoDetail.js index 15e412981..0b53d9507 100644 --- a/public/react/src/modules/forums/MemoDetail.js +++ b/public/react/src/modules/forums/MemoDetail.js @@ -444,7 +444,7 @@ class MemoDetail extends Component { showSnackbar(response.data.message) return; } - if (response.data.status === 1) { + if (response.data.status === 0) { if (!childCommentId) { comment.hidden = !comment.hidden; @@ -677,7 +677,13 @@ class MemoDetail extends Component { memo.isDetailPage = true; // TODO 图片上传地址 return ( -
{/* fl with100 */} +
{/* fl with100 */} + + {memo.reward} } { _current_user && (_current_user.admin === true || _current_user.user_id === author_info.user_id) && -
+
    { _current_user.admin === true && @@ -713,13 +719,20 @@ class MemoDetail extends Component {
} + || _current_user.user_id === author_info.user_id) ? '': 'no_mr'} `} to="/forums" + style={{ marginRight: '10px'}} + > 返回
{moment(memo.time).fromNow()} 发布 -
+
+ { _current_user.admin && diff --git a/public/react/src/modules/forums/PostItem.js b/public/react/src/modules/forums/PostItem.js index a56badb80..02d9fa273 100644 --- a/public/react/src/modules/forums/PostItem.js +++ b/public/react/src/modules/forums/PostItem.js @@ -29,7 +29,7 @@ class PostItem extends Component { 用户头像
-

+

{/* target="_blank" */} @@ -55,7 +55,7 @@ class PostItem extends Component { {/*C++*/} -

+

{/* data-tip-down="回复数" {memo.replies_count} {memo.praise_count}*/} {memo.replies_count ? diff --git a/public/react/src/modules/forums/RecommendShixun.js b/public/react/src/modules/forums/RecommendShixun.js index 9ebaf3cae..aa9dec952 100644 --- a/public/react/src/modules/forums/RecommendShixun.js +++ b/public/react/src/modules/forums/RecommendShixun.js @@ -33,7 +33,7 @@ class RecommendShixun extends Component {

+ className="color-grey-6 task-hide mb10 recomment-name" style={{maxWidth:'147px'}}> {_shixun.name}

{_shixun.myshixuns_count} 人学习

@@ -50,7 +50,7 @@ class RecommendShixun extends Component { // 参考 TPMShixunDiscuss.js 推荐实训, 页面路径:http://localhost:3007/shixuns/uznmbg54/shixun_discuss return (
-

推荐实训

+

推荐实训

{this.showRecommandShixun()}
diff --git a/public/react/src/modules/forums/UserSection.js b/public/react/src/modules/forums/UserSection.js index 4e8bdb45c..8376a2369 100644 --- a/public/react/src/modules/forums/UserSection.js +++ b/public/react/src/modules/forums/UserSection.js @@ -21,21 +21,46 @@ class UserSection extends Component { const { author_info } = this.props /*http://localhost:3000/api/v1/users/155/watch?object_id=156&object_type=user*/ - const focusUrl = `/api/v1/users/${author_info.user_id}/${this.props.author_info.watched ? 'unwatch' : 'watch'}?object_id=${author_info.user_id}&object_type=user` - - axios.get(focusUrl,{ - }) - .then((response) => { - const status = response.data.status; - console.log(status); - if(status == 1){ - const new_author_info = Object.assign({}, this.props.author_info) - new_author_info.watched = !new_author_info.watched - this.props.initForumState({author_info: new_author_info}) - } - }).catch((error) => { - console.log(error) - }) + // const focusUrl = `/api/v1/users/${author_info.user_id}/${this.props.author_info.watched ? 'unwatch' : 'watch'}?object_id=${author_info.user_id}&object_type=user` + + // axios.get(focusUrl,{ + // }) + // .then((response) => { + // const status = response.data.status; + // console.log(status); + // if(status == 1){ + // const new_author_info = Object.assign({}, this.props.author_info) + // new_author_info.watched = !new_author_info.watched + // this.props.initForumState({author_info: new_author_info}) + // } + // }).catch((error) => { + // console.log(error) + // }) + + let url=`/users/${author_info.user_id}/watch.json`; + // 取消关注 + if(author_info.watched){ + axios.delete(url).then((result)=>{ + if(result){ + const new_author_info = Object.assign({}, this.props.author_info) + new_author_info.watched = !new_author_info.watched + this.props.initForumState({author_info: new_author_info}) + } + }).catch((error)=>{ + console.log(error) + }) + }else{ + // 关注 + axios.post(url).then((result)=>{ + if(result){ + const new_author_info = Object.assign({}, this.props.author_info) + new_author_info.watched = !new_author_info.watched + this.props.initForumState({author_info: new_author_info}) + } + }).catch((error)=>{ + console.log(error); + }) + } } diff --git a/public/react/src/modules/forums/shixun/MemoShixun.css b/public/react/src/modules/forums/shixun/MemoShixun.css index c76000ccf..c1421e02f 100644 --- a/public/react/src/modules/forums/shixun/MemoShixun.css +++ b/public/react/src/modules/forums/shixun/MemoShixun.css @@ -11,7 +11,7 @@ height:48px; width: 48px; float: left; - margin-top: 7px; + margin-top: 4px; } .shixunReply{ max-width: 604px; diff --git a/public/react/src/modules/forums/shixun/MemoShixun.js b/public/react/src/modules/forums/shixun/MemoShixun.js index f82ed2e34..664b844ac 100644 --- a/public/react/src/modules/forums/shixun/MemoShixun.js +++ b/public/react/src/modules/forums/shixun/MemoShixun.js @@ -83,7 +83,7 @@ class MemoShixun extends Component { } const stringifid = queryString.stringify(paramsObject); - const url = `/discusses.json?${stringifid}` // /${challenge.identifier}/star + const url = `/discusses/forum_discusses.json?${stringifid}` // /${challenge.identifier}/star // 获取memo list this.setState({ diff --git a/public/react/src/modules/forums/shixun/ShiXunPostItem.js b/public/react/src/modules/forums/shixun/ShiXunPostItem.js index 1f8c0d379..961e16ff1 100644 --- a/public/react/src/modules/forums/shixun/ShiXunPostItem.js +++ b/public/react/src/modules/forums/shixun/ShiXunPostItem.js @@ -39,7 +39,7 @@ class ShiXunPostItem extends Component width="48px" height="48px" className="radius"/>
-
+

{memo.subject}