Browse Source

read page.extended.slack

sou 7 years ago
parent
commit
85f312ae57

+ 0 - 9
lib/routes/page.js

@@ -271,15 +271,6 @@ module.exports = function(crowi, app) {
         return res.redirect(encodeURI(page.redirectTo + '?redirectFrom=' + pagePathUtil.encodePagePath(page.path)));
         return res.redirect(encodeURI(page.redirectTo + '?redirectFrom=' + pagePathUtil.encodePagePath(page.path)));
       }
       }
 
 
-      let slackChannels = '';
-      UpdatePost.findSettingsByPath(path)
-      .then(function(data) {
-        slackChannels = data[0].channel;
-        page.updateSlackChannel(slackChannels).then(function() {}).catch(function() {});
-      }).catch(function(err) {
-        debug('Error occured while get setting', err);
-      });
-
       renderVars.page = page;
       renderVars.page = page;
 
 
       if (page) {
       if (page) {

+ 10 - 1
resource/js/app.js

@@ -47,11 +47,13 @@ let pagePath;
 let pageContent = '';
 let pageContent = '';
 let markdown = '';
 let markdown = '';
 let pageGrant = null;
 let pageGrant = null;
+let slackChannels = '';
 if (mainContent !== null) {
 if (mainContent !== null) {
   pageId = mainContent.getAttribute('data-page-id');
   pageId = mainContent.getAttribute('data-page-id');
   pageRevisionId = mainContent.getAttribute('data-page-revision-id');
   pageRevisionId = mainContent.getAttribute('data-page-revision-id');
   pageRevisionCreatedAt = +mainContent.getAttribute('data-page-revision-created');
   pageRevisionCreatedAt = +mainContent.getAttribute('data-page-revision-created');
   pagePath = mainContent.attributes['data-path'].value;
   pagePath = mainContent.attributes['data-path'].value;
+  slackChannels = mainContent.getAttribute('data-slack-channels');
   const rawText = document.getElementById('raw-text-original');
   const rawText = document.getElementById('raw-text-original');
   if (rawText) {
   if (rawText) {
     pageContent = rawText.innerHTML;
     pageContent = rawText.innerHTML;
@@ -175,7 +177,14 @@ if (writeCommentElem) {
     }
     }
   };
   };
   ReactDOM.render(
   ReactDOM.render(
-    <CommentForm crowi={crowi} crowiOriginRenderer={crowiRenderer} pageId={pageId} revisionId={pageRevisionId} pagePath={pagePath} onPostComplete={postCompleteHandler} editorOptions={editorOptions}/>,
+    <CommentForm crowi={crowi}
+      crowiOriginRenderer={crowiRenderer}
+      pageId={pageId}
+      revisionId={pageRevisionId}
+      pagePath={pagePath}
+      onPostComplete={postCompleteHandler}
+      editorOptions={editorOptions}
+      slackChannels = {slackChannels}/>,
     writeCommentElem);
     writeCommentElem);
 }
 }
 
 

+ 6 - 4
resource/js/components/PageComment/CommentForm.js

@@ -42,7 +42,7 @@ export default class CommentForm extends React.Component {
       errorMessage: undefined,
       errorMessage: undefined,
       hasSlackConfig: config.hasSlackConfig,
       hasSlackConfig: config.hasSlackConfig,
       isNotification: false,
       isNotification: false,
-      notifSlackChannel: '',
+      slackChannels: this.props.slackChannels,
     };
     };
 
 
     this.growiRenderer = new GrowiRenderer(this.props.crowi, this.props.crowiOriginRenderer, {mode: 'comment'});
     this.growiRenderer = new GrowiRenderer(this.props.crowi, this.props.crowiOriginRenderer, {mode: 'comment'});
@@ -65,7 +65,7 @@ export default class CommentForm extends React.Component {
   updateStateCheckbox(event) {
   updateStateCheckbox(event) {
     const value = event.target.checked;
     const value = event.target.checked;
     this.setState({isMarkdown: value});
     this.setState({isMarkdown: value});
-      // changeMode
+    // changeMode
     this.refs.editor.setGfmMode(value);
     this.refs.editor.setGfmMode(value);
   }
   }
 
 
@@ -79,7 +79,7 @@ export default class CommentForm extends React.Component {
   }
   }
 
 
   onChannelChange(value) {
   onChannelChange(value) {
-    this.setState({notifSlackChannel: value});
+    this.setState({slackChannels: value});
   }
   }
 
 
   /**
   /**
@@ -100,7 +100,7 @@ export default class CommentForm extends React.Component {
       },
       },
       slackNotificationForm: {
       slackNotificationForm: {
         isNotification: this.state.isNotification,
         isNotification: this.state.isNotification,
-        notifSlackChannel: this.state.notifSlackChannel,
+        slackChannels: this.state.slackChannels,
       }
       }
     })
     })
     .then((res) => {
     .then((res) => {
@@ -273,6 +273,7 @@ export default class CommentForm extends React.Component {
                       pagePath={this.props.pagePath}
                       pagePath={this.props.pagePath}
                       onSlackOnChange={this.onSlackOnChange}
                       onSlackOnChange={this.onSlackOnChange}
                       onChannelChange={this.onChannelChange}
                       onChannelChange={this.onChannelChange}
+                      slackChannels={this.state.slackChannels}
                     />
                     />
                   }
                   }
                   <Button type="submit" value="Submit" bsStyle="primary" className="fcbtn btn btn-sm btn-primary btn-outline btn-rounded btn-1b">
                   <Button type="submit" value="Submit" bsStyle="primary" className="fcbtn btn btn-sm btn-primary btn-outline btn-rounded btn-1b">
@@ -298,6 +299,7 @@ CommentForm.propTypes = {
   revisionId: PropTypes.string,
   revisionId: PropTypes.string,
   pagePath: PropTypes.string,
   pagePath: PropTypes.string,
   editorOptions: PropTypes.object,
   editorOptions: PropTypes.object,
+  slackChannels: PropTypes.string,
 };
 };
 CommentForm.defaultProps = {
 CommentForm.defaultProps = {
   editorOptions: {},
   editorOptions: {},

+ 8 - 31
resource/js/components/SlackNotification.js

@@ -17,46 +17,22 @@ export default class SlackNotification extends React.Component {
 
 
     this.state = {
     this.state = {
       isNotification: false,
       isNotification: false,
-      notifSlackChannel: '',
+      slackChannels: this.props.slackChannels,
     };
     };
 
 
-    this.init = this.init.bind(this);
     this.updateState = this.updateState.bind(this);
     this.updateState = this.updateState.bind(this);
     this.updateStateCheckbox = this.updateStateCheckbox.bind(this);
     this.updateStateCheckbox = this.updateStateCheckbox.bind(this);
   }
   }
 
 
-  componentWillMount() {
-    const pageId = this.props.pageId;
-
-    if (pageId) {
-      this.init();
-    }
-
-    this.retrieveData = this.retrieveData.bind(this);
-  }
-
-  init() {
-    if (!this.props.pageId) {
-      return ;
-    }
-    this.retrieveData();
-  }
-
-  /**
-   * Load data of comments and store them in state
-   */
-  retrieveData() {
-    // get data (desc order array)
-    this.props.crowi.apiGet('/pages.updatePost', {path: this.props.pagePath})
-    .then(res => {
-      if (res.ok) {
-        this.setState({notifSlackChannel: res.updatePost.join(',')});
-      }
+  componentWillReceiveProps(nextProps) {
+    this.setState({
+      slackChannels: nextProps.slackChannels
     });
     });
+    console.log('next props');
   }
   }
 
 
   updateState(value) {
   updateState(value) {
-    this.setState({notifSlackChannel: value});
+    this.setState({slackChannels: value});
     this.props.onChannelChange(value);
     this.props.onChannelChange(value);
   }
   }
 
 
@@ -75,7 +51,7 @@ export default class SlackNotification extends React.Component {
             <img id="slack-mark-black" src="/images/icons/slack/mark-monochrome_black.svg" width="18" height="18"/>
             <img id="slack-mark-black" src="/images/icons/slack/mark-monochrome_black.svg" width="18" height="18"/>
             <input className="comment-form-slack" type="checkbox" name="slack" value="1" onChange={this.updateStateCheckbox}/>
             <input className="comment-form-slack" type="checkbox" name="slack" value="1" onChange={this.updateStateCheckbox}/>
           </label>
           </label>
-          <input className="form-control" type="text" value={this.state.notifSlackChannel} placeholder="slack-channel-name"
+          <input className="form-control" type="text" value={this.state.slackChannels} placeholder="slack-channel-name"
             id="comment-form-slack-channel"
             id="comment-form-slack-channel"
             data-toggle="popover"
             data-toggle="popover"
             title="Slack通知"
             title="Slack通知"
@@ -98,4 +74,5 @@ SlackNotification.propTypes = {
   pagePath: PropTypes.string,
   pagePath: PropTypes.string,
   onChannelChange: PropTypes.func.isRequired,
   onChannelChange: PropTypes.func.isRequired,
   onSlackOnChange: PropTypes.func.isRequired,
   onSlackOnChange: PropTypes.func.isRequired,
+  slackChannels: PropTypes.string,
 };
 };