From 07c0a03c62907a958cbac8bc73efadd555dc0c32 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 26 Jan 2016 10:37:31 -0300 Subject: [PATCH 1/5] [Ivan Diaz] - Remove app folder --- app/fonts/.gitkeep | 0 app/images/.gitkeep | 0 app/index.html | 20 ----- app/js/App.js | 57 ------------ app/js/Routes.js | 23 ----- app/js/actions/.gitkeep | 0 app/js/actions/CurrentUserActions.js | 13 --- app/js/components-app/Footer.js | 16 ---- app/js/components-app/Header.js | 16 ---- .../components-core/__tests__/button-test.js | 35 -------- app/js/components-core/button.js | 44 ---------- app/js/components-core/widget.js | 28 ------ app/js/index.js | 15 ---- app/js/mixins/.gitkeep | 0 app/js/mixins/AuthenticatedRouteMixin.js | 28 ------ app/js/pages/HomePage.js | 33 ------- app/js/pages/NotFoundPage.js | 26 ------ app/js/pages/SearchPage.js | 33 ------- app/js/pages/component-demo-page.js | 61 ------------- app/js/pages/home-page.js | 13 --- app/js/stores/.gitkeep | 0 app/js/stores/CurrentUserStore.js | 60 ------------- app/js/utils/.gitkeep | 0 app/js/utils/APIUtils.js | 87 ------------------- app/js/utils/AuthAPI.js | 21 ----- 25 files changed, 629 deletions(-) delete mode 100644 app/fonts/.gitkeep delete mode 100644 app/images/.gitkeep delete mode 100644 app/index.html delete mode 100644 app/js/App.js delete mode 100644 app/js/Routes.js delete mode 100644 app/js/actions/.gitkeep delete mode 100644 app/js/actions/CurrentUserActions.js delete mode 100644 app/js/components-app/Footer.js delete mode 100644 app/js/components-app/Header.js delete mode 100644 app/js/components-core/__tests__/button-test.js delete mode 100644 app/js/components-core/button.js delete mode 100644 app/js/components-core/widget.js delete mode 100644 app/js/index.js delete mode 100644 app/js/mixins/.gitkeep delete mode 100644 app/js/mixins/AuthenticatedRouteMixin.js delete mode 100644 app/js/pages/HomePage.js delete mode 100644 app/js/pages/NotFoundPage.js delete mode 100644 app/js/pages/SearchPage.js delete mode 100644 app/js/pages/component-demo-page.js delete mode 100644 app/js/pages/home-page.js delete mode 100644 app/js/stores/.gitkeep delete mode 100644 app/js/stores/CurrentUserStore.js delete mode 100644 app/js/utils/.gitkeep delete mode 100644 app/js/utils/APIUtils.js delete mode 100644 app/js/utils/AuthAPI.js diff --git a/app/fonts/.gitkeep b/app/fonts/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/images/.gitkeep b/app/images/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/index.html b/app/index.html deleted file mode 100644 index 6aff3455..00000000 --- a/app/index.html +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - App Name - - - - - -
- - - - - \ No newline at end of file diff --git a/app/js/App.js b/app/js/App.js deleted file mode 100644 index af81a6d5..00000000 --- a/app/js/App.js +++ /dev/null @@ -1,57 +0,0 @@ -'use strict'; - -import React from 'react/addons'; -import {ListenerMixin} from 'reflux'; -import {RouteHandler} from 'react-router'; - -import CurrentUserActions from './actions/CurrentUserActions'; -import CurrentUserStore from './stores/CurrentUserStore'; -import Header from './components-app/Header'; -import Footer from './components-app/Footer'; - -var App = React.createClass({ - - mixins: [ListenerMixin], - - getInitialState() { - return { - currentUser: {} - }; - }, - - _onUserChange(err, user) { - if ( err ) { - this.setState({ error: err }); - } else { - this.setState({ currentUser: user || {}, error: null }); - } - }, - - componentWillMount() { - console.log('About to mount App'); - }, - - componentDidMount() { - this.listenTo(CurrentUserStore, this._onUserChange); - CurrentUserActions.checkLoginStatus(); - }, - - render() { - return ( -
- -
- - - -
- -
- ); - } - -}); - -export default App; \ No newline at end of file diff --git a/app/js/Routes.js b/app/js/Routes.js deleted file mode 100644 index a96c4fcf..00000000 --- a/app/js/Routes.js +++ /dev/null @@ -1,23 +0,0 @@ -'use strict'; - -import React from 'react/addons'; -import {Route, NotFoundRoute, DefaultRoute} from 'react-router'; - -import App from './App'; -import HomePage from './pages/HomePage'; -import SearchPage from './pages/SearchPage'; -import NotFoundPage from './pages/NotFoundPage'; -import DemoPage from './pages/component-demo-page'; - -export default ( - - - - - - - - - - -); \ No newline at end of file diff --git a/app/js/actions/.gitkeep b/app/js/actions/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/js/actions/CurrentUserActions.js b/app/js/actions/CurrentUserActions.js deleted file mode 100644 index 3701b74e..00000000 --- a/app/js/actions/CurrentUserActions.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -import Reflux from 'reflux'; - -var CurrentUserActions = Reflux.createActions([ - - 'checkLoginStatus', - 'login', - 'logout' - -]); - -export default CurrentUserActions; \ No newline at end of file diff --git a/app/js/components-app/Footer.js b/app/js/components-app/Footer.js deleted file mode 100644 index 3bc42db2..00000000 --- a/app/js/components-app/Footer.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -import React from 'react/addons'; - -var Footer = React.createClass({ - - render() { - return ( -
-
- ); - } - -}); - -export default Footer; \ No newline at end of file diff --git a/app/js/components-app/Header.js b/app/js/components-app/Header.js deleted file mode 100644 index e9c44faa..00000000 --- a/app/js/components-app/Header.js +++ /dev/null @@ -1,16 +0,0 @@ -'use strict'; - -import React from 'react/addons'; - -var Header = React.createClass({ - - render() { - return ( -
-
- ); - } - -}); - -export default Header; \ No newline at end of file diff --git a/app/js/components-core/__tests__/button-test.js b/app/js/components-core/__tests__/button-test.js deleted file mode 100644 index 1fd7a257..00000000 --- a/app/js/components-core/__tests__/button-test.js +++ /dev/null @@ -1,35 +0,0 @@ -/** - * Created by ivan on 16/08/15. - */ -jest.dontMock('../button.js'); - -import React from 'react/addons'; -import Button from '../button.js'; -var TestUtils = React.addons.TestUtils; - -describe('Button', () => { - it('should render children', () => { - var button = TestUtils.renderIntoDocument( - - ); - - expect(button.getDOMNode().textContent).toEqual('testcontent'); - }); - - it('should add passed types to class', () => { - var types = [ - 'primary' - ]; - - types.forEach((type) => { - var button = TestUtils.renderIntoDocument( - - ); - expect(button.getDOMNode().getAttribute('class')).toContain('button-' + type); - }); - }); -}); \ No newline at end of file diff --git a/app/js/components-core/button.js b/app/js/components-core/button.js deleted file mode 100644 index 6ae24dca..00000000 --- a/app/js/components-core/button.js +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Created by ivan on 16/08/15. - */ -'use strict'; - -import React from 'react/addons'; -import classNames from 'classnames'; - -var Button = React.createClass({ - - propTypes: { - children: React.PropTypes.node, - type: React.PropTypes.oneOf([ - 'primary' - ]) - }, - - getDefaultProps() { - return { - type: 'primary' - } - }, - - render() { - return ( - - ); - }, - - getClass() { - var classes = { - 'button': true - }; - - classes['button-' + this.props.type] = (this.props.type); - classes[this.props.className] = (this.props.className); - - return classNames(classes); - } -}); - -export default Button; \ No newline at end of file diff --git a/app/js/components-core/widget.js b/app/js/components-core/widget.js deleted file mode 100644 index 098bccf7..00000000 --- a/app/js/components-core/widget.js +++ /dev/null @@ -1,28 +0,0 @@ -import React from 'react/addons'; -import classNames from 'classnames'; - -var Widget = React.createClass({ - propTypes: { - children: React.PropTypes.node.isRequired - }, - - render() { - return ( -
- {this.props.children} -
- ); - }, - - getClass() { - var classes = { - 'widget': true - }; - - classes[this.props.className] = (this.props.className); - - return classNames(classes); - } -}); - -export default Widget; \ No newline at end of file diff --git a/app/js/index.js b/app/js/index.js deleted file mode 100644 index 38f06b80..00000000 --- a/app/js/index.js +++ /dev/null @@ -1,15 +0,0 @@ -'use strict'; - -import React from 'react/addons'; -import Router from 'react-router'; - -import routes from './Routes'; - -if ( process.env.NODE_ENV !== 'production' ) { - // Enable React devtools - window.React = React; -} - -Router.run(routes, Router.HistoryLocation, (Handler, state) => { - React.render(, document.getElementById('app')); -}); \ No newline at end of file diff --git a/app/js/mixins/.gitkeep b/app/js/mixins/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/js/mixins/AuthenticatedRouteMixin.js b/app/js/mixins/AuthenticatedRouteMixin.js deleted file mode 100644 index 90ce5ab4..00000000 --- a/app/js/mixins/AuthenticatedRouteMixin.js +++ /dev/null @@ -1,28 +0,0 @@ -'use strict'; - -import _ from 'lodash'; -import {Navigation} from 'react-router'; - -import CurrentUserStore from '../stores/CurrentUserStore'; - -var AuthenticatedRouteMixin = { - - mixins: [Navigation], - - _checkIfRedirect() { - if ( _.isEmpty(CurrentUserStore.user) && CurrentUserStore.hasBeenChecked && this.isMounted() ) { - this.replaceWith('Home'); - } - }, - - componentDidMount() { - this._checkIfRedirect(); - }, - - componentDidUpdate() { - this._checkIfRedirect(); - } - -}; - -export default AuthenticatedRouteMixin; \ No newline at end of file diff --git a/app/js/pages/HomePage.js b/app/js/pages/HomePage.js deleted file mode 100644 index de1cbd48..00000000 --- a/app/js/pages/HomePage.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -import React from 'react/addons'; -import {Link} from 'react-router'; -import DocumentTitle from 'react-document-title'; - -var HomePage = React.createClass({ - - propTypes: { - currentUser: React.PropTypes.object.isRequired - }, - - render() { - return ( - -
- -
- Home -
- -
- Search -
- -
-
- ); - } - -}); - -export default HomePage; \ No newline at end of file diff --git a/app/js/pages/NotFoundPage.js b/app/js/pages/NotFoundPage.js deleted file mode 100644 index 9040afe8..00000000 --- a/app/js/pages/NotFoundPage.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -import React from 'react/addons'; -import DocumentTitle from 'react-document-title'; - -var NotFoundPage = React.createClass({ - - propTypes: { - currentUser: React.PropTypes.object.isRequired - }, - - render() { - return ( - -
- - Page Not Found - -
-
- ); - } - -}); - -export default NotFoundPage; \ No newline at end of file diff --git a/app/js/pages/SearchPage.js b/app/js/pages/SearchPage.js deleted file mode 100644 index 41dc117e..00000000 --- a/app/js/pages/SearchPage.js +++ /dev/null @@ -1,33 +0,0 @@ -'use strict'; - -import React from 'react/addons'; -import {Link} from 'react-router'; -import DocumentTitle from 'react-document-title'; - -var SearchPage = React.createClass({ - - propTypes: { - currentUser: React.PropTypes.object.isRequired - }, - - render() { - return ( - -
- -
- Search -
- -
- Back to Home -
- -
-
- ); - } - -}); - -export default SearchPage; \ No newline at end of file diff --git a/app/js/pages/component-demo-page.js b/app/js/pages/component-demo-page.js deleted file mode 100644 index d9490870..00000000 --- a/app/js/pages/component-demo-page.js +++ /dev/null @@ -1,61 +0,0 @@ -'use strict'; - -import React from 'react/addons'; -import {Link} from 'react-router'; -import DocumentTitle from 'react-document-title'; - -import Button from '../components-core/button.js'; -import Widget from '../components-core/widget.js'; - -var DemoPage = React.createClass({ - - propTypes: { - currentUser: React.PropTypes.object.isRequired - }, - - elements: [ - { - title: 'Primary Button', - render: ( - - ) - }, - { - title: 'Widget', - render: ( - -

Register here!

- - -
- ) - } - ], - - render() { - return ( - -
- {this.renderElements()} -
-
- ); - }, - - renderElements: function () { - return this.elements.map((element) => { - return ( -
-

- {element.title} -

-
- {element.render} -
-
- ); - }); - } -}); - -export default DemoPage; \ No newline at end of file diff --git a/app/js/pages/home-page.js b/app/js/pages/home-page.js deleted file mode 100644 index 7c584535..00000000 --- a/app/js/pages/home-page.js +++ /dev/null @@ -1,13 +0,0 @@ -'use strict'; - -import React from 'react/addons'; -import DocumentTitle from 'react-document-title'; - -var HomePage = React.createClass({ - - render() { - return ( - null - ); - } -}); \ No newline at end of file diff --git a/app/js/stores/.gitkeep b/app/js/stores/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/js/stores/CurrentUserStore.js b/app/js/stores/CurrentUserStore.js deleted file mode 100644 index 16e2f741..00000000 --- a/app/js/stores/CurrentUserStore.js +++ /dev/null @@ -1,60 +0,0 @@ -'use strict'; - -import Reflux from 'reflux'; - -import CurrentUserActions from '../actions/CurrentUserActions'; -import AuthAPI from '../utils/AuthAPI'; - -var CurrentUserStore = Reflux.createStore({ - - init() { - this.user = null; - this.hasBeenChecked = false; - - this.listenTo(CurrentUserActions.checkLoginStatus, this.checkLoginStatus); - this.listenTo(CurrentUserActions.login, this.loginUser); - this.listenTo(CurrentUserActions.logout, this.logoutUser); - }, - - setUser(user, cb = function(){}) { - this.user = user; - cb(null, this.user); - this.trigger(null, this.user); - }, - - throwError(err, cb) { - cb(err); - this.trigger(err); - }, - - checkLoginStatus(cb = function(){}) { - if ( this.user ) { - this.setUser(this.user, cb); - } else { - AuthAPI.checkLoginStatus().then(user => { - this.hasBeenChecked = true; - this.setUser(user, cb); - }).catch(err => { - this.hasBeenChecked = true; - this.throwError(err, cb); - }); - } - }, - - loginUser(user, cb = function(){}) { - AuthAPI.login(user).then(user => { - this.setUser(user, cb); - }).catch(err => { - this.throwError(err, cb); - }); - }, - - logoutUser(cb = function(){}) { - AuthAPI.logout(this.user).then(() => { - this.setUser(null, cb); - }); - } - -}); - -export default CurrentUserStore; \ No newline at end of file diff --git a/app/js/utils/.gitkeep b/app/js/utils/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/app/js/utils/APIUtils.js b/app/js/utils/APIUtils.js deleted file mode 100644 index f85b139d..00000000 --- a/app/js/utils/APIUtils.js +++ /dev/null @@ -1,87 +0,0 @@ -'use strict'; - -import {camelizeKeys} from 'humps'; -import request from 'superagent'; - -var APIUtils = { - - root: '//localhost:3000/api/', - - normalizeResponse(response) { - return camelizeKeys(response.body); - }, - - get(path) { - return new Promise((resolve, reject) => { - request.get(this.root + path) - .withCredentials() - .end((err, res) => { - if ( err || !res.ok ) { - reject(this.normalizeResponse(err || res)); - } else { - resolve(this.normalizeResponse(res)); - } - }); - }); - }, - - post(path, body) { - return new Promise((resolve, reject) => { - request.post(this.root + path, body) - .withCredentials() - .end((err, res) => { - console.log(err, res); - if ( err || !res.ok ) { - reject(this.normalizeResponse(err || res)); - } else { - resolve(this.normalizeResponse(res)); - } - }); - }); - }, - - patch(path, body) { - return new Promise((resolve, reject) => { - request.patch(this.root + path, body) - .withCredentials() - .end((err, res) => { - if ( err || !res.ok ) { - reject(this.normalizeResponse(err || res)); - } else { - resolve(this.normalizeResponse(res)); - } - }); - }); - }, - - put(path, body) { - return new Promise((resolve, reject) => { - request.put(this.root + path, body) - .withCredentials() - .end((err, res) => { - if ( err || !res.ok ) { - reject(this.normalizeResponse(err || res)); - } else { - resolve(this.normalizeResponse(res)); - } - }); - }); - }, - - del(path) { - return new Promise((resolve, reject) => { - request.del(this.root + path) - .withCredentials() - .end((err, res) => { - if ( err || !res.ok ) { - reject(this.normalizeResponse(err || res)); - } else { - resolve(this.normalizeResponse(res)); - } - }); - }); - } - -}; - -export default APIUtils; \ No newline at end of file diff --git a/app/js/utils/AuthAPI.js b/app/js/utils/AuthAPI.js deleted file mode 100644 index 34d8a402..00000000 --- a/app/js/utils/AuthAPI.js +++ /dev/null @@ -1,21 +0,0 @@ -'use strict'; - -import APIUtils from './APIUtils'; - -var AuthAPI = { - - checkLoginStatus() { - return APIUtils.get('auth/check'); - }, - - login(user) { - return APIUtils.post('auth/login', user); - }, - - logout() { - return APIUtils.post('auth/logout'); - } - -}; - -export default AuthAPI; \ No newline at end of file From bd5e14d5a185689aefb10c88d4d90e46d3db4f00 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 26 Jan 2016 10:39:36 -0300 Subject: [PATCH 2/5] [Ivan Diaz] - Fix indentation of unit test [skip ci] --- src/core-components/__tests__/button-test.js | 49 ++++++++++---------- src/core-components/__tests__/form-test.js | 16 +++---- 2 files changed, 33 insertions(+), 32 deletions(-) diff --git a/src/core-components/__tests__/button-test.js b/src/core-components/__tests__/button-test.js index 5e6154b5..0d5f14ba 100644 --- a/src/core-components/__tests__/button-test.js +++ b/src/core-components/__tests__/button-test.js @@ -3,33 +3,34 @@ jest.dontMock('../button.js'); import React from 'react/addons'; import Button from '../button.js'; -var TestUtils = React.addons.TestUtils; +let TestUtils = React.addons.TestUtils; -describe('Button', () => { - it('should render children', () => { - var button = TestUtils.renderIntoDocument( - - ); +describe('Button', function () { + it('should render children', function () { + let button = TestUtils.renderIntoDocument( + + ); - expect(button.getDOMNode().textContent).toEqual('testcontent'); - }); + expect(button.getDOMNode().textContent).toEqual('testcontent'); + }); - it('should add passed types to class', () => { - var types = [ - 'primary', + it('should add passed types to class', function () { + let types = [ + 'primary', 'clean', 'link' - ]; + ]; - types.forEach((type) => { - var button = TestUtils.renderIntoDocument( - - ); - expect(button.getDOMNode().getAttribute('class')).toContain('button-' + type); - }); - }); -}); \ No newline at end of file + types.forEach(function (type) { + let button = TestUtils.renderIntoDocument( + + ); + + expect(button.getDOMNode().getAttribute('class')).toContain('button-' + type); + }); + }); +}); diff --git a/src/core-components/__tests__/form-test.js b/src/core-components/__tests__/form-test.js index 83f6851b..3eda4d3d 100644 --- a/src/core-components/__tests__/form-test.js +++ b/src/core-components/__tests__/form-test.js @@ -5,10 +5,10 @@ import React from 'react/addons'; import Form from 'core-components/form.js'; import Input from 'core-components/input.js'; -var TestUtils = React.addons.TestUtils; +let TestUtils = React.addons.TestUtils; -describe('Form', () => { - var results = TestUtils.renderIntoDocument( +describe('Form', function () { + let results = TestUtils.renderIntoDocument(
@@ -17,9 +17,9 @@ describe('Form', () => { ); - var inputs = TestUtils.scryRenderedComponentsWithType(results, Input); + let inputs = TestUtils.scryRenderedComponentsWithType(results, Input); - it('should store input value in form state', () => { + it('should store input value in form state', function () { expect(results.state.form).toEqual({ first: 'value1', second: 'value2', @@ -27,7 +27,7 @@ describe('Form', () => { }); }); - it('should update form state if an input value changes', () => { + it('should update form state if an input value changes', function () { inputs[0].props.onChange({ target: {value: 'value4'}}); expect(results.state.form).toEqual({ @@ -37,7 +37,7 @@ describe('Form', () => { }); }); - it('should update input value if state value changes', () => { + it('should update input value if state value changes', function () { results.setState({ form: { first: 'value6', @@ -51,7 +51,7 @@ describe('Form', () => { expect(inputs[2].props.value).toEqual('value8'); }); - it('should call onSubmit callback when form is submitted', () => { + it('should call onSubmit callback when form is submitted', function () { TestUtils.Simulate.submit(results.getDOMNode()); expect(results.props.onSubmit).toBeCalledWith(results.state.form); From 9b297712e4685e358fc77a61d91319b19d82aa0d Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 26 Jan 2016 10:40:35 -0300 Subject: [PATCH 3/5] [Ivan Diaz] - Replace var with let [skip ci] --- src/actions/common-actions.js | 2 +- src/actions/user-actions.js | 2 +- src/app/App.js | 2 +- src/app/demo/components-demo-page.js | 4 ++-- .../main/main-home/main-home-page-login-widget.js | 2 +- src/app/main/main-home/main-home-page.js | 2 +- src/app/main/main-layout-footer.js | 2 +- src/app/main/main-layout-header.js | 8 ++++---- src/app/main/main-layout.js | 2 +- src/app/main/main-signup/main-signup-page.js | 2 +- src/core-components/button.js | 6 +++--- src/core-components/checkbox.js | 8 ++++---- src/core-components/drop-down.js | 12 ++++++------ src/core-components/form.js | 12 ++++++------ src/core-components/icon.js | 4 ++-- src/core-components/input.js | 8 ++++---- src/core-components/widget-transition.js | 8 ++++---- src/core-components/widget.js | 8 ++++---- src/data/i18n-data.js | 6 +++--- src/lib/callback.js | 4 ++-- src/lib/get-icon.js | 2 +- src/lib/i18n.js | 8 ++++---- src/lib/react-dfs.js | 8 ++++---- src/stores/common-store.js | 2 +- src/stores/user-store.js | 2 +- 25 files changed, 63 insertions(+), 63 deletions(-) diff --git a/src/actions/common-actions.js b/src/actions/common-actions.js index 4d50c050..e15290ef 100644 --- a/src/actions/common-actions.js +++ b/src/actions/common-actions.js @@ -1,6 +1,6 @@ import Reflux from 'reflux'; -var CommonActions = Reflux.createActions([ +let CommonActions = Reflux.createActions([ 'changeLanguage' ]); diff --git a/src/actions/user-actions.js b/src/actions/user-actions.js index 3d0313ef..ef6b8ae9 100644 --- a/src/actions/user-actions.js +++ b/src/actions/user-actions.js @@ -1,6 +1,6 @@ import Reflux from 'reflux'; -var UserActions = Reflux.createActions([ +let UserActions = Reflux.createActions([ 'checkLoginStatus', 'login', 'logout' diff --git a/src/app/App.js b/src/app/App.js index c4a1b1b5..d06978b6 100644 --- a/src/app/App.js +++ b/src/app/App.js @@ -6,7 +6,7 @@ import {RouteHandler} from 'react-router'; import CommonActions from 'actions/common-actions'; import CommonStore from 'stores/common-store'; -var App = React.createClass({ +let App = React.createClass({ mixins: [Reflux.listenTo(CommonStore, 'onCommonStoreChanged')], diff --git a/src/app/demo/components-demo-page.js b/src/app/demo/components-demo-page.js index 2bb7e7bb..9b499a6f 100644 --- a/src/app/demo/components-demo-page.js +++ b/src/app/demo/components-demo-page.js @@ -10,9 +10,9 @@ import Checkbox from 'core-components/checkbox'; import Widget from 'core-components/widget'; import DropDown from 'core-components/drop-down'; -var dropDownItems = [{content: 'English'}, {content: 'Spanish'}, {content: 'German'}, {content: 'Portuguese'}, {content: 'Japanese'}]; +let dropDownItems = [{content: 'English'}, {content: 'Spanish'}, {content: 'German'}, {content: 'Portuguese'}, {content: 'Japanese'}]; -var DemoPage = React.createClass({ +let DemoPage = React.createClass({ propTypes: { currentUser: React.PropTypes.object.isRequired diff --git a/src/app/main/main-home/main-home-page-login-widget.js b/src/app/main/main-home/main-home-page-login-widget.js index 9e1cb772..2066a0c1 100644 --- a/src/app/main/main-home/main-home-page-login-widget.js +++ b/src/app/main/main-home/main-home-page-login-widget.js @@ -10,7 +10,7 @@ import Checkbox from 'core-components/checkbox'; import Widget from 'core-components/widget'; import WidgetTransition from 'core-components/widget-transition'; -var MainHomePageLoginWidget = React.createClass({ +let MainHomePageLoginWidget = React.createClass({ getInitialState() { return { diff --git a/src/app/main/main-home/main-home-page.js b/src/app/main/main-home/main-home-page.js index 6a16a442..291b4a3d 100644 --- a/src/app/main/main-home/main-home-page.js +++ b/src/app/main/main-home/main-home-page.js @@ -4,7 +4,7 @@ import {RouteHandler} from 'react-router'; import MainHomePageLoginWidget from 'app/main/main-home/main-home-page-login-widget'; -var MainHomePage = React.createClass({ +let MainHomePage = React.createClass({ render() { return ( diff --git a/src/app/main/main-layout-footer.js b/src/app/main/main-layout-footer.js index 532cfa1d..6e53ab2b 100644 --- a/src/app/main/main-layout-footer.js +++ b/src/app/main/main-layout-footer.js @@ -1,6 +1,6 @@ import React from 'react/addons'; -var MainLayoutFooter = React.createClass({ +let MainLayoutFooter = React.createClass({ render() { return ( diff --git a/src/app/main/main-layout-header.js b/src/app/main/main-layout-header.js index 23dceac7..f170f267 100644 --- a/src/app/main/main-layout-header.js +++ b/src/app/main/main-layout-header.js @@ -7,8 +7,8 @@ import Button from 'core-components/button'; import DropDown from 'core-components/drop-down'; import Icon from 'core-components/icon'; -var languageList = ['English', 'Spanish', 'Portuguese', 'German', 'Turkish', 'Indian']; -var codeLanguages = { +let languageList = ['English', 'Spanish', 'Portuguese', 'German', 'Turkish', 'Indian']; +let codeLanguages = { 'English': 'us', 'Spanish': 'es', 'Portuguese': 'pt', @@ -17,7 +17,7 @@ var codeLanguages = { 'Indian': 'in' }; -var MainLayoutHeader = React.createClass({ +let MainLayoutHeader = React.createClass({ render() { return ( @@ -44,7 +44,7 @@ var MainLayoutHeader = React.createClass({ }, changeLanguage(event) { - var language = languageList[event.index]; + let language = languageList[event.index]; CommonActions.changeLanguage(codeLanguages[language]); } diff --git a/src/app/main/main-layout.js b/src/app/main/main-layout.js index 61a77603..a5fcf55f 100644 --- a/src/app/main/main-layout.js +++ b/src/app/main/main-layout.js @@ -4,7 +4,7 @@ import {RouteHandler} from 'react-router'; import MainHeader from 'app/main/main-layout-header'; import MainFooter from 'app/main/main-layout-footer'; -var MainLayout = React.createClass({ +let MainLayout = React.createClass({ render() { return ( diff --git a/src/app/main/main-signup/main-signup-page.js b/src/app/main/main-signup/main-signup-page.js index 19808e58..b4a7f1ad 100644 --- a/src/app/main/main-signup/main-signup-page.js +++ b/src/app/main/main-signup/main-signup-page.js @@ -11,7 +11,7 @@ import Input from 'core-components/input'; import Widget from 'core-components/widget'; import WidgetTransition from 'core-components/widget-transition'; -var MainSignUpPageWidget = React.createClass({ +let MainSignUpPageWidget = React.createClass({ render() { return ( diff --git a/src/core-components/button.js b/src/core-components/button.js index 67204801..d0c58b29 100644 --- a/src/core-components/button.js +++ b/src/core-components/button.js @@ -4,7 +4,7 @@ import {Navigation} from 'react-router'; import callback from 'lib/callback'; -var Button = React.createClass({ +let Button = React.createClass({ mixins: [Navigation], @@ -37,7 +37,7 @@ var Button = React.createClass({ }, getClass() { - var classes = { + let classes = { 'button': true }; @@ -54,4 +54,4 @@ var Button = React.createClass({ } }); -export default Button; \ No newline at end of file +export default Button; diff --git a/src/core-components/checkbox.js b/src/core-components/checkbox.js index 2295415f..1bfff8c4 100644 --- a/src/core-components/checkbox.js +++ b/src/core-components/checkbox.js @@ -5,7 +5,7 @@ import _ from 'lodash'; import callback from 'lib/callback'; import getIcon from 'lib/get-icon'; -var CheckBox = React.createClass({ +let CheckBox = React.createClass({ propTypes: { alignment: React.PropTypes.string, @@ -38,7 +38,7 @@ var CheckBox = React.createClass({ }, getProps() { - var props = _.clone(this.props); + let props = _.clone(this.props); props.type = 'checkbox'; @@ -52,7 +52,7 @@ var CheckBox = React.createClass({ }, getClass() { - var classes = { + let classes = { 'checkbox': true, 'checkbox_checked': this.state.checked, @@ -95,4 +95,4 @@ var CheckBox = React.createClass({ } }); -export default CheckBox; \ No newline at end of file +export default CheckBox; diff --git a/src/core-components/drop-down.js b/src/core-components/drop-down.js index 8bfa95de..3e17069f 100644 --- a/src/core-components/drop-down.js +++ b/src/core-components/drop-down.js @@ -5,7 +5,7 @@ import {Motion, spring} from 'react-motion'; import callback from 'lib/callback'; -var DropDown = React.createClass({ +let DropDown = React.createClass({ propTypes: { defaultSelectedIndex: React.PropTypes.number, @@ -31,11 +31,11 @@ var DropDown = React.createClass({ }, getAnimationStyles() { - var closedStyle = { + let closedStyle = { opacity: spring(0, [200, 20]), translateY: spring(20, [200, 20]) }; - var openedStyle = { + let openedStyle = { opacity: spring(1, [200, 20]), translateY: spring(0, [200, 20]) }; @@ -47,7 +47,7 @@ var DropDown = React.createClass({ }, render() { - var animation = this.getAnimationStyles(); + let animation = this.getAnimationStyles(); return (
@@ -62,7 +62,7 @@ var DropDown = React.createClass({ }, renderList({opacity, translateY}) { - var style = { opacity: opacity, transform: `translateY(${translateY}px)`}; + let style = { opacity: opacity, transform: `translateY(${translateY}px)`}; return (
@@ -82,7 +82,7 @@ var DropDown = React.createClass({ }, getClass() { - var classes = { + let classes = { 'drop-down': true, [this.props.className]: (this.props.className) diff --git a/src/core-components/form.js b/src/core-components/form.js index b67a1536..7014b7e6 100644 --- a/src/core-components/form.js +++ b/src/core-components/form.js @@ -6,7 +6,7 @@ import {reactDFS, renderChildrenWithProps} from 'lib/react-dfs'; import Input from 'core-components/input'; import Checkbox from 'core-components/checkbox'; -var Form = React.createClass({ +let Form = React.createClass({ validations: {}, @@ -17,7 +17,7 @@ var Form = React.createClass({ }, componentDidMount() { - var formState = {}; + let formState = {}; reactDFS(this.props.children, (child) => { if (child.type === Input) { @@ -42,7 +42,7 @@ var Form = React.createClass({ }, getProps() { - var props = _.clone(this.props); + let props = _.clone(this.props); props.onSubmit = this.handleSubmit; @@ -50,7 +50,7 @@ var Form = React.createClass({ }, getInputProps({props, type}) { - var additionalProps = {}; + let additionalProps = {}; if (type === Input || type === Checkbox) { let inputName = props.name; @@ -75,7 +75,7 @@ var Form = React.createClass({ }, handleInputChange(inputName, type, event) { - var form = _.clone(this.state.form); + let form = _.clone(this.state.form); form[inputName] = event.target.value; @@ -89,4 +89,4 @@ var Form = React.createClass({ } }); -export default Form; \ No newline at end of file +export default Form; diff --git a/src/core-components/icon.js b/src/core-components/icon.js index bb4cb283..0ead35eb 100644 --- a/src/core-components/icon.js +++ b/src/core-components/icon.js @@ -1,6 +1,6 @@ import React from 'react'; -var Icon = React.createClass({ +let Icon = React.createClass({ propTypes: { name: React.PropTypes.string.isRequired @@ -14,4 +14,4 @@ var Icon = React.createClass({ }); -export default Icon; \ No newline at end of file +export default Icon; diff --git a/src/core-components/input.js b/src/core-components/input.js index a107eadf..06765483 100644 --- a/src/core-components/input.js +++ b/src/core-components/input.js @@ -2,7 +2,7 @@ import React from 'react'; import classNames from 'classnames'; import _ from 'lodash'; -var Input = React.createClass({ +let Input = React.createClass({ propTypes: { value: React.PropTypes.string, @@ -28,7 +28,7 @@ var Input = React.createClass({ }, getProps() { - var props = _.clone(this.props); + let props = _.clone(this.props); props.type = (this.props.password) ? 'password' : 'text'; @@ -36,7 +36,7 @@ var Input = React.createClass({ }, getClass() { - var classes = { + let classes = { 'input': true, ['input_' + this.props.inputType]: true, @@ -47,4 +47,4 @@ var Input = React.createClass({ } }); -export default Input; \ No newline at end of file +export default Input; diff --git a/src/core-components/widget-transition.js b/src/core-components/widget-transition.js index 0a5bd537..8f234e4b 100644 --- a/src/core-components/widget-transition.js +++ b/src/core-components/widget-transition.js @@ -5,7 +5,7 @@ import {Motion, spring} from 'react-motion'; import Widget from 'core-components/widget'; -var WidgetTransition = React.createClass({ +let WidgetTransition = React.createClass({ propTypes: { sideToShow: React.PropTypes.string @@ -35,7 +35,7 @@ var WidgetTransition = React.createClass({ return (
{React.Children.map(this.props.children, function (child, index) { - var modifiedChild; + let modifiedChild; if (index === 0) { modifiedChild = React.cloneElement(child, { @@ -60,7 +60,7 @@ var WidgetTransition = React.createClass({ }, getClass() { - var classes = { + let classes = { 'widget-transition': true, [this.props.className]: (this.props.className) }; @@ -75,4 +75,4 @@ var WidgetTransition = React.createClass({ } }); -export default WidgetTransition; \ No newline at end of file +export default WidgetTransition; diff --git a/src/core-components/widget.js b/src/core-components/widget.js index bef7d665..0c4bc48d 100644 --- a/src/core-components/widget.js +++ b/src/core-components/widget.js @@ -1,7 +1,7 @@ import React from 'react/addons'; import classNames from 'classnames'; -var Widget = React.createClass({ +let Widget = React.createClass({ propTypes: { title: React.PropTypes.string, children: React.PropTypes.node.isRequired @@ -23,7 +23,7 @@ var Widget = React.createClass({ }, renderTitle() { - var titleNode = null; + let titleNode = null; if (this.props.title) { titleNode =

{this.props.title}

; @@ -33,7 +33,7 @@ var Widget = React.createClass({ }, getClass() { - var classes = { + let classes = { 'widget': true }; @@ -43,4 +43,4 @@ var Widget = React.createClass({ } }); -export default Widget; \ No newline at end of file +export default Widget; diff --git a/src/data/i18n-data.js b/src/data/i18n-data.js index 0b3f54f2..9fa00759 100644 --- a/src/data/i18n-data.js +++ b/src/data/i18n-data.js @@ -1,13 +1,13 @@ import keys from 'data/i18n-keys' -var languages = [ +let languages = [ 'en', 'es' ]; -var i18nData = function (key, lang) { - var langIndex = languages.indexOf(lang); +let i18nData = function (key, lang) { + let langIndex = languages.indexOf(lang); return keys[key][langIndex]; }; diff --git a/src/lib/callback.js b/src/lib/callback.js index db0115d5..f54d3cf2 100644 --- a/src/lib/callback.js +++ b/src/lib/callback.js @@ -2,8 +2,8 @@ import _ from 'lodash'; export default function (defaultFunction, callback, options = {}, extraPreventions = []) { return function (nativeEvent) { - var preventions = {'default': false}; - var event = _.extend({}, nativeEvent, options, { + let preventions = {'default': false}; + let event = _.extend({}, nativeEvent, options, { preventDefault() { nativeEvent.preventDefault(); preventions['default'] = true; diff --git a/src/lib/get-icon.js b/src/lib/get-icon.js index f3a0e331..6e53b22b 100644 --- a/src/lib/get-icon.js +++ b/src/lib/get-icon.js @@ -2,7 +2,7 @@ import React from 'react'; import _ from 'lodash'; export default function () { - var className = 'fa'; + let className = 'fa'; _.each(arguments, (arg) => { className += ' fa-' + arg; diff --git a/src/lib/i18n.js b/src/lib/i18n.js index 12396fdb..8334c99c 100644 --- a/src/lib/i18n.js +++ b/src/lib/i18n.js @@ -3,11 +3,11 @@ import MessageFormat from 'messageformat'; import CommonStore from 'stores/common-store'; import i18nData from 'data/i18n-data'; -var mf = new MessageFormat('en'); +let mf = new MessageFormat('en'); -var i18n = function (key, params = null) { - var i18nKey = i18nData(key, CommonStore.language); - var message = mf.compile(i18nKey); +let i18n = function (key, params = null) { + let i18nKey = i18nData(key, CommonStore.language); + let message = mf.compile(i18nKey); return message(params); }; diff --git a/src/lib/react-dfs.js b/src/lib/react-dfs.js index 8c349113..b1d23482 100644 --- a/src/lib/react-dfs.js +++ b/src/lib/react-dfs.js @@ -1,8 +1,8 @@ import React from 'react/addons'; import _ from 'lodash'; -var reactDFS = function (children, visitFunction) { - var stack = []; +let reactDFS = function (children, visitFunction) { + let stack = []; React.Children.forEach(children, child => stack.push(child)); stack.reverse(); @@ -20,13 +20,13 @@ var reactDFS = function (children, visitFunction) { } }; -var renderChildrenWithProps = function(children, mapFunction) { +let renderChildrenWithProps = function(children, mapFunction) { if (typeof children !== 'object' || children === null) { return children; } return React.Children.map(children, function (child) { - var props = mapFunction(child); + let props = mapFunction(child); if (typeof child !== 'object' || child === null) { return child; diff --git a/src/stores/common-store.js b/src/stores/common-store.js index a70d1c67..de0a0a66 100644 --- a/src/stores/common-store.js +++ b/src/stores/common-store.js @@ -2,7 +2,7 @@ import Reflux from 'reflux'; import CommonActions from 'actions/common-actions'; -var CommonStore = Reflux.createStore({ +let CommonStore = Reflux.createStore({ init() { this.language = 'en'; diff --git a/src/stores/user-store.js b/src/stores/user-store.js index 6afcfd8c..c5f3227c 100644 --- a/src/stores/user-store.js +++ b/src/stores/user-store.js @@ -3,7 +3,7 @@ import APIUtils from 'lib/APIUtils'; import UserActions from 'actions/user-actions'; -var UserStore = Reflux.createStore({ +let UserStore = Reflux.createStore({ init() { this.user = null; From 75305126633d26cc5aacfd04c801e2092f0d6dd1 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Tue, 26 Jan 2016 18:05:09 -0300 Subject: [PATCH 4/5] [Ivan Diaz] - Update React version and fix i18n issues --- README.md | 29 ++++++------ package.json | 44 ++++++++----------- src/app/App.js | 8 ++-- src/app/Routes.js | 24 +++++----- src/app/demo/components-demo-page.js | 2 +- src/app/index.js | 7 ++- .../main-home/main-home-page-login-widget.js | 2 +- src/app/main/main-home/main-home-page.js | 2 +- src/app/main/main-layout-footer.js | 2 +- src/app/main/main-layout-header.js | 6 +-- src/app/main/main-layout.js | 8 ++-- src/app/main/main-signup/main-signup-page.js | 2 +- src/core-components/__tests__/button-test.js | 2 +- src/core-components/__tests__/form-test.js | 2 +- src/core-components/button.js | 11 ++--- src/core-components/drop-down.js | 21 ++++++--- src/core-components/form.js | 2 +- src/core-components/widget-transition.js | 2 +- src/core-components/widget.js | 2 +- src/data/i18n-data.js | 4 +- src/lib/react-dfs.js | 2 +- src/lib/route-transition.js | 2 +- src/stores/common-store.js | 4 +- 23 files changed, 94 insertions(+), 96 deletions(-) mode change 100755 => 100644 package.json diff --git a/README.md b/README.md index 1c8c086b..3e3d5131 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ OpenSupports v4.0 -[![Build Status](https://codeship.com/projects/3faec3f0-908d-0133-1dce-661fcf0def08/status?branch=master)](https://codeship.com/projects/124436/) +[![Build Status](https://codeship.com/projects/3faec3f0-908d-0133-1dce-661fcf0def08/status?branch=master)](https://codeship.com/projects/124436/) ============ ### Getting up and running FRONT-END @@ -13,23 +13,20 @@ OpenSupports v4.0 3. Install npm `sudo apt-get install npm` 4. Install gulp `sudo npm install -g gulp` 5. Go to repo `cd os4-react` -6. Install dependences `sudo npm install` -7. Rebuild node-sass `sudo npm rebuild node-sass` +6. Install dependences `npm install` +7. Rebuild node-sass `npm rebuild node-sass` 8. Run `gulp dev` 9. Go to the main app: `http://localhost:3000/app` or the component demo `http://localhost:3000/demo` - -### Getting up and running - -1. [Create MySQL Database](#markdown-header-create-mysql-database) -2. Clone this repo -3. Run `npm install` from the root directory -4. Create a mysql database -5. Run `gulp dev` (may require installing Gulp globally `npm install gulp -g`) -6. Your browser will automatically be opened and directed to the browser-sync proxy address -7. To prepare assets for production, run the `gulp prod` task (Note: the production task does not fire up the express server, and won't provide you with browser-sync's live reloading. Simply use `gulp dev` during development. More information below) +10. Your browser will automatically be opened and directed to the browser-sync proxy address Now that `gulp dev` is running, the server is up as well and serving files from the `/build` directory. Any changes in the `/src` directory will be automatically processed by Gulp and the changes will be injected to any open browsers pointed at the proxy address. +### Getting up and running BACK-END + +1. Clone this repo +2. [Create MySQL Database](#markdown-header-create-mysql-database) +TODO + ### Create MySQL Database 1. Install mysql-server @@ -37,13 +34,13 @@ Now that `gulp dev` is running, the server is up as well and serving files from Ubuntu `sudo apt-get install mysql-server` - + Cent OS `sudo yum install mysql-server` `/etc/init.d/mysqld start` -2. Access the mysql shell +2. Access the mysql shell `mysql -u root -p` @@ -63,4 +60,4 @@ Now that `gulp dev` is running, the server is up as well and serving files from Just as there is the `gulp dev` task for development, there is also a `gulp prod` task for putting your project into a production-ready state. This will run each of the tasks, while also adding the image minification task discussed above. There is also an empty `gulp deploy` task that is included when running the production task. This deploy task can be fleshed out to automatically push your production-ready site to your hosting setup. -**Reminder:** When running the production task, gulp will not fire up the express server and serve your index.html. This task is designed to be run before the `deploy` step that may copy the files from `/build` to a production web server. \ No newline at end of file +**Reminder:** When running the production task, gulp will not fire up the express server and serve your index.html. This task is designed to be run before the `deploy` step that may copy the files from `/build` to a production web server. diff --git a/package.json b/package.json old mode 100755 new mode 100644 index 6bf33f94..96a8b771 --- a/package.json +++ b/package.json @@ -1,19 +1,12 @@ { - "name": "react-rocket-boilerplate", - "version": "0.2.0", - "author": "Jake Marsh ", - "description": "Boilerplate using React, Browserify, SASS, and Gulp.", + "name": "os4-react", + "version": "4.0.0", + "author": "Ivan Diaz ", + "description": "OpenSupports version 4 with reactjs", "repository": { "type": "git", - "url": "https://github.com/jakemmarsh/react-rocket-boilerplate.git" + "url": "https://github.com/ivandiazwm/opensupports.git" }, - "keywords": [ - "gulp", - "browserify", - "react", - "sass", - "boilerplate" - ], "private": true, "engines": { "node": "^0.12.x", @@ -46,20 +39,25 @@ "gulp-util": "^3.0.6", "humps": "^0.6.0", "jest-cli": "^0.5.10", - "jquery": "^2.1.4", - "lodash": "^3.10.0", - "messageformat": "^0.2.2", "morgan": "^1.6.1", - "react": "^0.13.x", - "react-document-title": "^1.0.2", - "react-google-recaptcha": "^0.4.0", - "react-motion": "^0.3.0", - "react-router": "^0.13.x", - "reflux": "^0.2.9", "run-sequence": "^1.1.1", "vinyl-source-stream": "^1.1.0", "watchify": "^3.2.x" }, + "dependencies": { + "app-module-path": "^1.0.3", + "classnames": "^2.1.3", + "jquery": "^2.1.4", + "lodash": "^3.10.0", + "messageformat": "^0.2.2", + "react": "^0.14.6", + "react-document-title": "^1.0.2", + "react-dom": "^0.14.6", + "react-google-recaptcha": "^0.5.2", + "react-motion": "^0.3.0", + "react-router": "^2.0.0-rc5", + "reflux": "^0.2.9" + }, "jest": { "scriptPreprocessor": "./preprocessor.js", "testFileExtensions": [ @@ -74,9 +72,5 @@ "unmockedModulePathPatterns": [ "react" ] - }, - "dependencies": { - "app-module-path": "^1.0.3", - "classnames": "^2.1.3" } } diff --git a/src/app/App.js b/src/app/App.js index d06978b6..cb34adc4 100644 --- a/src/app/App.js +++ b/src/app/App.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; import Reflux from 'reflux'; import {ListenerMixin} from 'reflux'; import {RouteHandler} from 'react-router'; @@ -13,8 +13,7 @@ let App = React.createClass({ render() { return (
- + {React.cloneElement(this.props.children, {})}
); }, @@ -24,7 +23,6 @@ let App = React.createClass({ this.forceUpdate(); } } - }); -export default App; \ No newline at end of file +export default App; diff --git a/src/app/Routes.js b/src/app/Routes.js index aa3898c2..a2ea0d90 100644 --- a/src/app/Routes.js +++ b/src/app/Routes.js @@ -1,5 +1,5 @@ -import React from 'react/addons'; -import {Route, NotFoundRoute, DefaultRoute} from 'react-router'; +import React from 'react'; +import {Router, Route, IndexRoute, browserHistory} from 'react-router'; import App from 'app/App'; import DemoPage from 'app/demo/components-demo-page'; @@ -10,14 +10,14 @@ import MainSignUpPage from 'app/main/main-signup/main-sign export default ( - + + + + + + - - - - - - - - -); \ No newline at end of file + + + +); diff --git a/src/app/demo/components-demo-page.js b/src/app/demo/components-demo-page.js index 9b499a6f..f32e42d0 100644 --- a/src/app/demo/components-demo-page.js +++ b/src/app/demo/components-demo-page.js @@ -1,6 +1,6 @@ 'use strict'; -import React from 'react/addons'; +import React from 'react'; import {Link} from 'react-router'; import DocumentTitle from 'react-document-title'; diff --git a/src/app/index.js b/src/app/index.js index 647b0627..a3ed6c9c 100644 --- a/src/app/index.js +++ b/src/app/index.js @@ -1,4 +1,5 @@ -import React from 'react/addons'; +import React from 'react'; +import {render} from 'react-dom' import Router from 'react-router'; import routes from './Routes'; @@ -8,6 +9,4 @@ if ( process.env.NODE_ENV !== 'production' ) { window.React = React; } -Router.run(routes, Router.HistoryLocation, (Handler, state) => { - React.render(, document.getElementById('app')); -}); \ No newline at end of file +render(routes, document.getElementById('app')); diff --git a/src/app/main/main-home/main-home-page-login-widget.js b/src/app/main/main-home/main-home-page-login-widget.js index 2066a0c1..e592ffaf 100644 --- a/src/app/main/main-home/main-home-page-login-widget.js +++ b/src/app/main/main-home/main-home-page-login-widget.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; import UserActions from 'actions/user-actions'; import UserStore from 'stores/user-store'; diff --git a/src/app/main/main-home/main-home-page.js b/src/app/main/main-home/main-home-page.js index 291b4a3d..d1d7c67c 100644 --- a/src/app/main/main-home/main-home-page.js +++ b/src/app/main/main-home/main-home-page.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; import {ListenerMixin} from 'reflux'; import {RouteHandler} from 'react-router'; diff --git a/src/app/main/main-layout-footer.js b/src/app/main/main-layout-footer.js index 6e53ab2b..89de858a 100644 --- a/src/app/main/main-layout-footer.js +++ b/src/app/main/main-layout-footer.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; let MainLayoutFooter = React.createClass({ diff --git a/src/app/main/main-layout-header.js b/src/app/main/main-layout-header.js index f170f267..c1be8026 100644 --- a/src/app/main/main-layout-header.js +++ b/src/app/main/main-layout-header.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; import i18n from 'lib/i18n'; import CommonActions from 'actions/common-actions'; @@ -24,7 +24,7 @@ let MainLayoutHeader = React.createClass({
- +
@@ -50,4 +50,4 @@ let MainLayoutHeader = React.createClass({ } }); -export default MainLayoutHeader; \ No newline at end of file +export default MainLayoutHeader; diff --git a/src/app/main/main-layout.js b/src/app/main/main-layout.js index a5fcf55f..89e4ff50 100644 --- a/src/app/main/main-layout.js +++ b/src/app/main/main-layout.js @@ -1,5 +1,4 @@ -import React from 'react/addons'; -import {RouteHandler} from 'react-router'; +import React from 'react'; import MainHeader from 'app/main/main-layout-header'; import MainFooter from 'app/main/main-layout-footer'; @@ -13,8 +12,7 @@ let MainLayout = React.createClass({
- + {this.props.children}
@@ -23,4 +21,4 @@ let MainLayout = React.createClass({ } }); -export default MainLayout; \ No newline at end of file +export default MainLayout; diff --git a/src/app/main/main-signup/main-signup-page.js b/src/app/main/main-signup/main-signup-page.js index b4a7f1ad..316ab717 100644 --- a/src/app/main/main-signup/main-signup-page.js +++ b/src/app/main/main-signup/main-signup-page.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; import {ListenerMixin} from 'reflux'; import ReCAPTCHA from 'react-google-recaptcha'; diff --git a/src/core-components/__tests__/button-test.js b/src/core-components/__tests__/button-test.js index 0d5f14ba..4650ee06 100644 --- a/src/core-components/__tests__/button-test.js +++ b/src/core-components/__tests__/button-test.js @@ -1,6 +1,6 @@ jest.dontMock('../button.js'); -import React from 'react/addons'; +import React from 'react'; import Button from '../button.js'; let TestUtils = React.addons.TestUtils; diff --git a/src/core-components/__tests__/form-test.js b/src/core-components/__tests__/form-test.js index 3eda4d3d..8e11ac6d 100644 --- a/src/core-components/__tests__/form-test.js +++ b/src/core-components/__tests__/form-test.js @@ -1,7 +1,7 @@ jest.dontMock('core-components/form.js'); jest.dontMock('core-components/form.js'); -import React from 'react/addons'; +import React from 'react'; import Form from 'core-components/form.js'; import Input from 'core-components/input.js'; diff --git a/src/core-components/button.js b/src/core-components/button.js index d0c58b29..1884cf6b 100644 --- a/src/core-components/button.js +++ b/src/core-components/button.js @@ -1,12 +1,13 @@ -import React from 'react/addons'; +import React from 'react'; import classNames from 'classnames'; -import {Navigation} from 'react-router'; - +import Router from 'react-router'; import callback from 'lib/callback'; let Button = React.createClass({ - mixins: [Navigation], + contextTypes: { + router: React.PropTypes.object + }, propTypes: { children: React.PropTypes.node, @@ -49,7 +50,7 @@ let Button = React.createClass({ handleClick() { if (this.props.route) { - this.transitionTo(this.props.route.to, this.props.route.param, this.props.route.query); + this.context.router.push(this.props.route.to); } } }); diff --git a/src/core-components/drop-down.js b/src/core-components/drop-down.js index 3e17069f..db276b1f 100644 --- a/src/core-components/drop-down.js +++ b/src/core-components/drop-down.js @@ -12,7 +12,7 @@ let DropDown = React.createClass({ selectedIndex: React.PropTypes.number, items: React.PropTypes.arrayOf(React.PropTypes.shape({ - content: React.PropTypes.string.isRequired, + content: React.PropTypes.node.isRequired, icon: React.PropTypes.string })).isRequired }, @@ -52,7 +52,7 @@ let DropDown = React.createClass({ return (
- {this.props.items[this.getSelectedIndex()]} + {this.props.items[this.getSelectedIndex()].content}
{this.renderList} @@ -75,7 +75,7 @@ let DropDown = React.createClass({ renderItem(item, index) { return ( -
  • +
  • {item.content}
  • ); @@ -91,6 +91,15 @@ let DropDown = React.createClass({ return classNames(classes); }, + getItemProps(index) { + return { + className: 'drop-down--list-item', + onClick: this.handleItemClick.bind(this, index), + onMouseDown: this.handleItemMouseDown, + key: index + }; + }, + handleBlur() { this.setState({ opened: false @@ -110,7 +119,9 @@ let DropDown = React.createClass({ }); if (this.props.onChange) { - this.props.onChange(index); + this.props.onChange({ + index + }); } }, @@ -123,4 +134,4 @@ let DropDown = React.createClass({ } }); -export default DropDown; \ No newline at end of file +export default DropDown; diff --git a/src/core-components/form.js b/src/core-components/form.js index 7014b7e6..c1b65fe0 100644 --- a/src/core-components/form.js +++ b/src/core-components/form.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; import _ from 'lodash'; import {reactDFS, renderChildrenWithProps} from 'lib/react-dfs'; diff --git a/src/core-components/widget-transition.js b/src/core-components/widget-transition.js index 8f234e4b..36f3709b 100644 --- a/src/core-components/widget-transition.js +++ b/src/core-components/widget-transition.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; import classNames from 'classnames'; import _ from 'lodash'; import {Motion, spring} from 'react-motion'; diff --git a/src/core-components/widget.js b/src/core-components/widget.js index 0c4bc48d..08e4ef5a 100644 --- a/src/core-components/widget.js +++ b/src/core-components/widget.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; import classNames from 'classnames'; let Widget = React.createClass({ diff --git a/src/data/i18n-data.js b/src/data/i18n-data.js index 9fa00759..34c7ad82 100644 --- a/src/data/i18n-data.js +++ b/src/data/i18n-data.js @@ -1,7 +1,7 @@ import keys from 'data/i18n-keys' let languages = [ - 'en', + 'us', 'es' ]; @@ -12,4 +12,4 @@ let i18nData = function (key, lang) { return keys[key][langIndex]; }; -export default i18nData \ No newline at end of file +export default i18nData diff --git a/src/lib/react-dfs.js b/src/lib/react-dfs.js index b1d23482..4cfb6c38 100644 --- a/src/lib/react-dfs.js +++ b/src/lib/react-dfs.js @@ -1,4 +1,4 @@ -import React from 'react/addons'; +import React from 'react'; import _ from 'lodash'; let reactDFS = function (children, visitFunction) { diff --git a/src/lib/route-transition.js b/src/lib/route-transition.js index 13c633c1..61ee6686 100644 --- a/src/lib/route-transition.js +++ b/src/lib/route-transition.js @@ -1,4 +1,4 @@ -const React = require('react/addons'); +const React = require('react'); const { PropTypes } = React; const { TransitionMotion, spring } = require('react-motion'); diff --git a/src/stores/common-store.js b/src/stores/common-store.js index de0a0a66..b24f1fd8 100644 --- a/src/stores/common-store.js +++ b/src/stores/common-store.js @@ -5,7 +5,7 @@ import CommonActions from 'actions/common-actions'; let CommonStore = Reflux.createStore({ init() { - this.language = 'en'; + this.language = 'us'; this.listenTo(CommonActions.changeLanguage, this.changeLanguage); }, @@ -16,4 +16,4 @@ let CommonStore = Reflux.createStore({ } }); -export default CommonStore; \ No newline at end of file +export default CommonStore; From b9eefa32134da5baa91f6dda2e3f905d0d1a0994 Mon Sep 17 00:00:00 2001 From: Ivan Diaz Date: Wed, 27 Jan 2016 13:40:25 -0300 Subject: [PATCH 5/5] [Ivan Diaz] - Remaname server folder to api --- .gitignore | 4 +- {server => api}/composer.json | 0 {server => api}/config.php | 0 {server => api}/controllers/user.php | 0 {server => api}/index.php | 0 {server => api}/libs/Controller.php | 0 {server => api}/models/DataStore.php | 0 {server => api}/models/ERRORS.php | 0 {server => api}/models/Response.php | 0 {server => api}/models/Session.php | 0 {server => api}/models/User.php | 0 {server => api}/tests/__lib__/Mock.php | 0 .../tests/__mocks__/RedBeanMock.php | 0 {server => api}/tests/__mocks__/SlimMock.php | 0 api/tests/controllers/.gitkeep | 0 api/tests/lib/.gitkeep | 0 .../tests/models/DataStoreTest.php | 0 {server => api}/tests/models/ResponseTest.php | 0 gulp/tasks/server.js | 4 +- server/tests/lib/Mock.php | 75 ------------------- src/lib/APIUtils.js | 2 +- 21 files changed, 5 insertions(+), 80 deletions(-) rename {server => api}/composer.json (100%) rename {server => api}/config.php (100%) rename {server => api}/controllers/user.php (100%) rename {server => api}/index.php (100%) rename {server => api}/libs/Controller.php (100%) rename {server => api}/models/DataStore.php (100%) rename {server => api}/models/ERRORS.php (100%) rename {server => api}/models/Response.php (100%) rename {server => api}/models/Session.php (100%) rename {server => api}/models/User.php (100%) rename {server => api}/tests/__lib__/Mock.php (100%) rename {server => api}/tests/__mocks__/RedBeanMock.php (100%) rename {server => api}/tests/__mocks__/SlimMock.php (100%) create mode 100644 api/tests/controllers/.gitkeep create mode 100644 api/tests/lib/.gitkeep rename {server => api}/tests/models/DataStoreTest.php (100%) rename {server => api}/tests/models/ResponseTest.php (100%) delete mode 100644 server/tests/lib/Mock.php diff --git a/.gitignore b/.gitignore index 62803556..417ddcd4 100644 --- a/.gitignore +++ b/.gitignore @@ -21,11 +21,11 @@ build/Release # Dependency directories node_modules bower_components -server/vendor +api/vendor # Build files build -server/composer.lock +api/composer.lock .idea .jshintrc diff --git a/server/composer.json b/api/composer.json similarity index 100% rename from server/composer.json rename to api/composer.json diff --git a/server/config.php b/api/config.php similarity index 100% rename from server/config.php rename to api/config.php diff --git a/server/controllers/user.php b/api/controllers/user.php similarity index 100% rename from server/controllers/user.php rename to api/controllers/user.php diff --git a/server/index.php b/api/index.php similarity index 100% rename from server/index.php rename to api/index.php diff --git a/server/libs/Controller.php b/api/libs/Controller.php similarity index 100% rename from server/libs/Controller.php rename to api/libs/Controller.php diff --git a/server/models/DataStore.php b/api/models/DataStore.php similarity index 100% rename from server/models/DataStore.php rename to api/models/DataStore.php diff --git a/server/models/ERRORS.php b/api/models/ERRORS.php similarity index 100% rename from server/models/ERRORS.php rename to api/models/ERRORS.php diff --git a/server/models/Response.php b/api/models/Response.php similarity index 100% rename from server/models/Response.php rename to api/models/Response.php diff --git a/server/models/Session.php b/api/models/Session.php similarity index 100% rename from server/models/Session.php rename to api/models/Session.php diff --git a/server/models/User.php b/api/models/User.php similarity index 100% rename from server/models/User.php rename to api/models/User.php diff --git a/server/tests/__lib__/Mock.php b/api/tests/__lib__/Mock.php similarity index 100% rename from server/tests/__lib__/Mock.php rename to api/tests/__lib__/Mock.php diff --git a/server/tests/__mocks__/RedBeanMock.php b/api/tests/__mocks__/RedBeanMock.php similarity index 100% rename from server/tests/__mocks__/RedBeanMock.php rename to api/tests/__mocks__/RedBeanMock.php diff --git a/server/tests/__mocks__/SlimMock.php b/api/tests/__mocks__/SlimMock.php similarity index 100% rename from server/tests/__mocks__/SlimMock.php rename to api/tests/__mocks__/SlimMock.php diff --git a/api/tests/controllers/.gitkeep b/api/tests/controllers/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/api/tests/lib/.gitkeep b/api/tests/lib/.gitkeep new file mode 100644 index 00000000..e69de29b diff --git a/server/tests/models/DataStoreTest.php b/api/tests/models/DataStoreTest.php similarity index 100% rename from server/tests/models/DataStoreTest.php rename to api/tests/models/DataStoreTest.php diff --git a/server/tests/models/ResponseTest.php b/api/tests/models/ResponseTest.php similarity index 100% rename from server/tests/models/ResponseTest.php rename to api/tests/models/ResponseTest.php diff --git a/gulp/tasks/server.js b/gulp/tasks/server.js index 4ff87948..eef6a3bb 100644 --- a/gulp/tasks/server.js +++ b/gulp/tasks/server.js @@ -17,7 +17,7 @@ gulp.task('server', function() { server.use(express.static(config.buildDir)); // Proxy php server api - server.use('/server', proxy('http://localhost:8080/', { + server.use('/api', proxy('http://localhost:8080/', { forwardPath: function(req, res) { return require('url').parse(req.url).path; } @@ -41,4 +41,4 @@ gulp.task('server', function() { s.listen(config.serverport); -}); \ No newline at end of file +}); diff --git a/server/tests/lib/Mock.php b/server/tests/lib/Mock.php deleted file mode 100644 index 1e8318a9..00000000 --- a/server/tests/lib/Mock.php +++ /dev/null @@ -1,75 +0,0 @@ -function = ($function === null) ? function (){} : $function; - } - - public function __invoke() { - $this->timesCalled++; - $this->lastArgs = func_get_args(); - - return call_user_func_array($this->function, func_get_args()); - } - - public function returns($arg) { - $this->function = function () use ($arg) { - return $arg; - }; - - return $this; - } - - public function hasBeenCalled() { - return !!$this->timesCalled; - } - - public function reset() { - $this->timesCalled = 0; - $this->lastArgs = null; - } - - public function hasBeenCalledWithArgs() { - $argumentsMatchAssertion = serialize(func_get_args()) === serialize($this->lastArgs); - - return $this->timesCalled && $argumentsMatchAssertion; - } -} - -class Mock { - public static function stub() { - return new Stub; - } - - public function __construct($arguments = array()) { - if (!empty($arguments)) { - foreach ($arguments as $property => $argument) { - if ($argument instanceOf Closure) { - $this->{$property} = self::stub($argument); - } else { - $this->{$property} = $argument; - } - } - } - } - - public function __set($key, $value){ - if ($value instanceOf Closure) { - $this->{$key} = self::stub($value); - } else { - $this->{$key} = $value; - } - } - - public function __call($method, $arguments) { - if (isset($this->{$method}) && is_callable($this->{$method})) { - return call_user_func_array($this->{$method}, $arguments); - } else { - throw new Exception("Fatal error: Call to undefined method stdObject::{$method}()"); - } - } -} diff --git a/src/lib/APIUtils.js b/src/lib/APIUtils.js index 2b25530b..d8d5350e 100644 --- a/src/lib/APIUtils.js +++ b/src/lib/APIUtils.js @@ -4,7 +4,7 @@ import $ from 'jquery'; const APIUtils = { - root: 'http://localhost:3000/server/', + root: 'http://localhost:3000/api/', getPromise(path, method, data) { return (resolve, reject) => {