125 comments found.
Hi,
Thanks for the great template. I downloaded the code. It contains two major folder – Admin, Clean Admin. Both has same set of files. The designs which implemented in the demo site is not avaibale. Could you provide the code please ?
Thanks, Sathish
hello,
Are you refering to the theme? The demo site is the same version you downloaded. In order to change themes go to containers/App/reducer.js and change the theme property to any of the themes available. Refer to the quickstar guide included in the files you downloaded.
Hi , no , i am asking about the pages that implemented in template. Ex : grid page, API page, Form page, table page etc. These pages not available in the downloaded folder. Could you resend to me please ? Thanks – Sathish
ok, let us ckeck within the next hour and in case something is wrong we will reupload our latest version., sorry by the confusion
in the meantime, can you ckeck the cache? maybe clear the browser cache or use an incognito windows and try again. Inside the containers folder there should be a demo components folder.
Hi, yes i tried that too. It still same issue.
Hello,
We just downloaded directly from envato website the latest version of our template, we installed it, tested and everything works as expected.
themeforest-19568479-fortress-react-admin-template.zip
This is the path where you can find the page demos:
fortress-react-admin\app\containers\ComponentDemos
What you can do is re download from envato in order to check the zip file.
Hi, Sorry it was my mistake. i am new to React. Its available on the path that you mentioned. Thank you. Regards sathish.
No worries we are here to help 
Hi, After i put the app in production i observe a strange thing. On refresh the login page is loaded and not the page that i want to refresh it. How can i solve this issue. Thank you
Hello,
The containers/App/reducer.js has a property userIsAuthenticated, and you can set it to true with the action signIn. In a refresh page you could set this value to true by checkin if a token or session is still valid. The App actions and reducer are global.
Thank you for your response. It is any possibility to put the function that check it the token is valid to all components in one place? I think on react router… I saw in a react-router old version something with “onEnter”
You can place it in the containers/App/index.js for example
componentDidMount() {
const currentRoute = this.props.routes[this.props.routes.length - 1];
this.checkUserIsAuthenticate(currentRoute);
}
componentWillReceiveProps(nextProps) {
const nextRoute = nextProps.routes[nextProps.routes.length - 1];
const currentRoute = this.props.routes[this.props.routes.length - 1];
if (nextRoute !== currentRoute) {
this.checkUserIsAuthenticate(nextRoute);
}
}
Any change in the routes will call checkUserIsAuthenticate.
Hello, What are you using to run the app on the back-end? I would like to use a server with go to run the app, is that possible? the main reason is I want to use go websockets
Hello,
We use express.
Check the react boilerplate repo for more info. Our template is based in this boilerplate: https://github.com/react-boilerplate/react-boilerplate
https://github.com/react-boilerplate/react-boilerplate/blob/master/server/index.jsOk, tks… one more thing, does the header tabs on top, the way it was made saves the last state of the page if I change between the tabs? on your live page, if I select one box, leaving this the tab and come back to it, the check box is not selected anymore.
The tabs in the navbar are for navigation purpose only. In order to persists data in the pages, you have to store the values in a reducer. This template can have reducers by page. For example you can load data from an endpoint or the browser localstorage and set that data in a reducer, so everytime you load the page you can render data from the reducer.
Question about getting a particular Object property from API:
I used your API Demo Page example to get data from a different API and managed to log it to console just fine. However, my data has slightly different structure from your typicode example and I need to access just ONE property/attribute (whose value is an array), eg. “results” in the below example.
posts: {
"foo": "bar",
"results": [
{
"id": "xxxxxxx",
"title": "Post title 1",
"body": "Lorem ipsum dolor sit amet..."
}, {
"id": "xxxxxxy",
"title": "Post title 2",
"body": "Lorem ipsum dolor sit amet..."
}
]
}
Running this.props.apiDemoStore.posts.results.map((post) => ( ... )) in index.js created an error (Cannot read property 'map' of undefined) even though the loading has finished.
Can you please advise what to change? Thanks!
Hello,
Yes, that could be because your object is empty before the API response.
posts = {}
So the results property does not exists.
You can do two things, initialize the posts in your reducer like this:
const initialState = fromJS({ posts: { results: [] }, });
Or validate the results in your JSX:
<`div`> { this.props.apiDemoStore.posts && this.props.apiDemoStore.posts.results ? ( this.props.apiDemoStore.posts.results.map((post) => ( ... )) ) : null } </`div`>
Yes, this works, thanks!! Resolved.
Another API question: How do I include authorizaton header in API request?
I modified the code from eg. `updatePost` function in ApidemoPage/sagas.js, as well as some StackOverflow searches, but the header does not seem to be included (based on Dev Tools -> Network) and I got error 307 (Response for preflight is invalid (redirect)). Both the API URL and the credentials work; I checked through Postman.
Any advice what to change from the following code?
``` export function* getPosts() { const requestURL = `${root}/posts`; const requestHeaders = { method: ‘GET’, credentials: ‘include’, //mode: ‘no-cors’, headers: { ‘Content-Type’: ‘application/json’, ‘X-User-Email’: ‘foo@bar.com’, ‘X-User-Token’: ‘123456’, ‘X-Request-Token’: ‘654321’, }, }; try { // Call our request helper (see ‘utils/request’) const posts = yield call(request, requestURL, requestHeaders); yield delay(800); // You can delay API requests (optional) yield put(postsLoaded(posts)); } catch (err) { yield put(postsLoadingError(err)); } } ```
Thanks!
Hello,
Can you try from another app, a single index.html with javascript for example to discard if is something from the server?
https://github.com/react-boilerplate/react-boilerplate/issues/1903Another thing you can try is to remove yield take(LOCATION_CHANGE); yield cancel(watcher); from your saga.
I solved it by: - Changing request URL from http:// to https:// - Disabling Disconnect & AdBlock extensions (or similar)
My end code for getPosts() function (in case other users are implementing same use case):
export function* getPosts() {
const requestURL = `${root}/posts`;
const requestHeaders = {
method: 'GET',
credentials: 'include',
mode: 'cors',
headers: {
'Content-Type': 'application/json',
'X-User-Email': 'foo@bar.com', // change as needed
'X-User-Token': '12345', // change as needed
'X-Request-Token': '54321', // change as needed
'Access-Control-Allow-Origin': '*',
},
};
try {
// Call our request helper (see 'utils/request')
const posts = yield call(request, requestURL, requestHeaders);
yield delay(800); // You can delay API requests (optional)
yield put(postsLoaded(posts));
} catch (err) {
yield put(postsLoadingError(err));
}
}
Thanks for the response! Solved.
great! 
Hi, needing some help to run some code when Dialog is closed. Opening Dialog removes the overflow (scrollbar), which persists even after the Dialog is closed. Found the solution (set `overflow-y` to `auto` on dialog close—see: https://github.com/callemall/material-ui/issues/897). But where and in which part should I put the code? (eg. app/containers/ComponentDemos/ApidemoPage/index.js, in the `handleCloseDeleteDialog()` function or elsewhere?)
Thanks!
Hello,
Thanks for the feedback. It is a bug from material-ui. Try this workaround in the ApidemoPage/index.js:
import { updateContentDimensions } from '../../App/appUtils';
handleCloseAddEditDialog() {
setTimeout(() => {
updateContentDimensions();
}, 0);
}
The updateContentDimensions will set the body overflowY. The setTimeout will wait for the dialog to complete.
This fix will be included in our next release.
Perfect. Thank you for the helpful response! If I have more Support questions, is there a separate help desk for purchasers (eg. Ticksy) or can I just post here?
Note for other users who have the same problem: Don’t forget to copy the `setTimeout()` code in ALL other functions that involves closing Dialog box (eg. handleCloseDeleteDialog, deletePost, editPost in the Demo module).
hello,
Thank you 
This fix will be in our next release. If you have more questions post them here.
Hi again,
I’ve been having problem with cache. Any change I make to the code (eg. index.js or any other files) does not appear unless I stop the server and run `npm start` again. Running `npm cache clean` did not help. Do you have any advice? Thanks!
Hello,
Normally you don’t need to stop and start the server, it should show your changes in the browser, but if you are having troubles with that you can use an incognito window or while you have the dev tools open do an empty cache and hard reload. Also you can disable cache in the network tab (chrome).
http://www.code-pal.com/wp-content/uploads/2013/03/clear-cache-and-reload.pngUnfortunately (and oddly, since this was not a problem til several days ago, and I did not change/update my setup) the solutions did not work. Most likely nothing to do with this theme, not a major problem anyway. Thanks for the response though!
Hi again,
CSS-related questions:
1) Where is the recommended place to add module-level CSS customizations?
Example case: I want to style on all <IconButton> inside <TableRowColumn>. Not a good practice to put it in containers/ContainerName/index.js because it would have to be duplicated across all containers where Table is used. Should I put it in app/containers/App/styles.js, app/styles.js, or elsewhere?
2) How and where do I implement styled-components (https://www.styled-components.com/docs/basics#extending-styles) in an existing component? (eg. the PageBase component)
Thanks!
hello,
You can add custom css to the globalstyle.js file
I need to add CSS customizations beyond global-style.js and I already figured out the basics of styled-components from react-boilerplate app.
My question: For this theme, is it recommended practice to create individual components for each element (like in https://github.com/react-boilerplate/react-boilerplate/tree/master/app/components)—or is there a different implementation you’d recommend?
Thank you again.
Hello,
For material-ui components styling you can follow this documentation: http://www.material-ui.com/v0.18.7/#/customization/styles
- Notice that you can use inline style or className
For your components you can create their styles in a separate file styles.js inside of their folders like react boilerplate handles: https://github.com/react-boilerplate/react-boilerplate/tree/master/app/components/Button/StyledButton.js
Most of the time your component will have its own styling, but for those cases where you want to share styles between components, you can create css rules in the global-style.js and use them in the className attribute.
What version of react router does this template use? Thanks!
Hello,
The react router version we use is 3.0, you can check more libraries in the react boilerplate we used to create this template:
https://github.com/react-boilerplate/react-boilerplate/blob/master/package.jsonHi,
Is your theme supports the Server Side Rendering ?
I am looking at React Apps and this is one the most important feature.
Thank you.
Hello,
We don’t support SSR yet, but we already started working on it. We think is a must feature to have in our template 
Hi, does this theme include any task runner (Gulp/Grunt) and CSS preprocessor (SCSS/LESS/Sass)? Thanks!
Hello,
We use Webpack as a task runner and http://www.material-ui.com framework, which can be custom, also we have a global custom css file and also this template is based in react boilerplate which can use SASS https://github.com/react-boilerplate/react-boilerplate
Hi, About to buy this theme but wanted to know where I can get the documentation about the theme. - Is this theme has PSD files included on it. - Does this support any CSS preprocessor like LESS OR SASS/SCSS
Hello,
We use material-ui framework: http://www.material-ui.com/#/components/app-bar
Also, this template is based in one of the best react boilerplates: https://www.reactboilerplate.com/
1) it is difficult to implement pages with static data that do not require authentification. There is a switch ‘userIsAuthenticated’ which applied to all pages
2) Generally, it is better to split ‘App’ into several components. It is too massive and difficult to manage.
3) there are many lines like ‘yield fork(takeLatest, SIGN_IN, fetchSignIn);’ This will work with just ‘yield takeLatest(SIGN_IN, fetchSignIn);’
4) In ‘App/sagas’ you create actions like this:
yield put({ type: AUTHENTICATED,
user: {
name: 'John Smith',
email: action.payload.email,
},
});
in file ‘actions.js’ you created special constructors for this ))
5) ‘const selectGlobal = () => (state) => state.get(‘global’).toJS();’ Do not convert to JS object. You greatly decrease performance. And you mix plain JS objects and Immutable objects in your state (global->user).
6) ‘App/selectors.js’ contains selectors that do not fit structure of store and not used in code
7) Left drawer shows the name of signed in user. Right now the value is static – “User Admin”. But you have sagas to authenticate users and you put username into the store. Connect left drawer to the store!
router not connected to the store properly
If we have a link on the page <Link /> – router will change URL
But store do not process actions ”@@router/LOCATION_CHANGE”
Instead, there is some weird logic for action SELECT_MENU_ITEM
This is why when we open a direct link “mysite.com/aaa/bbb” – the menu is not opened on selected page.
For example, when we open a page http://react.adminwebtemplates.com/select – selected item highlighted only in Open views, but not in the main menu
(If Open Views disables – this confuse users)
9) Your LeftDrawer is smth very huge and unmanageable. Split it into several components
My conclusion: The idea is great, the demo works, but the actual implementation is poor. With all this code demo looks good, but it is not fast and easy to use this code for the real app. In general, you need to spend a week on refactoring of your code ))
Hello,
1) The template is for admin only, In which cases it won’t require authentication?
2, 3 Agree, we will improve it.
4) Yes, this is just guidance, you will have to put your own logic in order to change the fake data with your API calls.
5) Right, it is a bug. We will fix it.
6) We will clean up the unnecessary code here
7) We will add this feature.
We will add this feature.
9) Agree, we will improve it, divide and conquer 
Thank you for your comments, we will work on these tasks to keep improving this template. We will try to fix the bugs first and improve performance and then work on the features.
1) for example, we have an admin panel for a big number of people and registration is not public (via private email). We need a small page with explanation to the people how to obtain username/password
d98f30bc-2841-4177-99d1-23a38584e8aa Hello Cant run the page. Here what i got in cmd;
events.js:163 throw er; // Unhandled ‘error’ event
Error: spawn node-pre-gyp ENOENT at exports._errnoException (util.js:1050:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32) at onErrorNT (internal/child_process.js:367:16) at _combinedTickCallback (internal/process/next_tick.js:80:11) at process._tickCallback (internal/process/next_tick.js:104:9) at Module.runMain (module.js:607:11) at run (bootstrap_node.js:427:7) at startup (bootstrap_node.js:151:9) at bootstrap_node.js:542:3 react-boilerplate@3.4.0 /Users/sofiak/webTemples:Design/themeforest-19568479-fortress-react-admin-template/fortress-react-admin └── UNMET PEER DEPENDENCY react@15.4.1npm WARN react-addons-css-transition-group@15.6.0 requires a peer of react@15.4.2 but none was installed. npm WARN react-addons-transition-group@15.6.0 requires a peer of react@^15.4.2 but none was installed. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.2 (node_modules/fsevents): npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.1.2 install: `node install` npm WARN optional SKIPPING OPTIONAL DEPENDENCY: Exit status 1
Hello,
This error could be related with your environment setup. We are using node version 7.9 and npm version 5.02
Check this link: https://github.com/react-boilerplate/react-boilerplate/issues/1752
Also you can try this these commands in your project root in order to reinstall the packages:
rm -rf node_modules npm cache clean npm install
Hi,
Thanks for your product!
Just thought I would let you know that in app/containers/App/sagas.js you for the clean files, you are use a string value instead of referencing the constants. This is for AUTHENTICATION_FAILED, REGISTRATION_FAILED, and RESET_PASSWORD_FAILED.
Thanks, Greg
Hello,
Thanks, we just fixed it and it will be on the next release. It should work as it is now since is a string, but the correct way to do it is with the constant.
Thank you 
Hi, Any new update? Bogdan
Hello,
Not yet, but it will be a new one soon, we will let know all buyers when ready.
Why markdown for the docs? Just makes it needlessly complicated to get started, and makes me start my usage of the template with a negative experience. HTML would have been a safer and better choice.
Hello,
This template is based on the react boilerplate github project, you can see the documentation online here:
https://github.com/react-boilerplate/react-boilerplate/blob/master/docs/general/introduction.mdGot it. I thought those docs were template-specific. Thanks.
Your theme looks really nice. I would like to launch a web application on a freemium business model (most of the features would be free for everyone, and only specific features could be accessed through a small payment).
Does the regular license cover this case?
Thanks,
Hello,
Looks like if you are going to charge your users, you will need an extended licence. Check this link:
https://themeforest.net/licenses/standardWhen we can expect login auth for this theme?
hello,
latest version 2.0 includes login, forgot password and register forms. 
take a look here: http://preview.themeforest.net/item/fortress-react-admin-template/full_screen_preview/19568479?_ga=2.157767866.1074063923.1497441103-1542153758.1494680679
I was thinking more on protecting the routes with auth, rather than creating a view for login.
yes, routes are already protected.
in containers/App/reducer.js you will find the isAuthenticate property, if is false you won’t be able to navigate. The login/logoff change this state.
Try to set it to false and start your project.
Yep, it works. I suggest you make better documentation though!
great 
yeah, we will improve the documentation for these little details, thanks for the advice. Please give us a rate to keep supporting this template.
Hi My ideas for new component are : Users - A user profile page
For ecommerce: - pricing table - orders page - order view - products page - products view - checkout page - invoice page
For Blogs - Post add - Post view - Posts list (frontend) - Posts list (backend ..a table)
In my opinion a template that have a lot of example is very usefully in development because the developer can easy build a webapp.
Thank you again for the modification with login/register/recover .
Regards, Bogdan P.S: I sent you a message on “support page”
Thank you!
Do you think my suggestions are good? Do you intend to implement? In my opinion my suggestions help us, developers, to develop fast.
Yes, sounds good. We will see if we can include some of them in feature releases.
Thanks
Hi, I have a issue with switch (checkbox) and with list view. When I modify the checkbox the state is modified but the checkbox state isn’t change. When reload the module the checkbox state it is correct
You can see the in the video below http://recordit.co/bDN2xubnVY http://recordit.co/AzdbULh0skHello,
Check how we handle the checkbox component in the Auth/login page for the remember me field.
loginRememberMeChanged() {
const login = this.state.login;
login.rememberMe = !login.rememberMe;
this.setState({
login,
});
}
We have a demo for the select component too:
Containers/ComponentDemos/FormElements/SelectPage/index.js
And you can find more info here: http://www.material-ui.com/#/components/select-field
Thank you for your response. I build the code base on material-ui / fortress themes example but didn’t work.
I found the solution and please read carefully because my case is a specific one. My component is based on your example with Api (A component with a Dialog inside.) On Dialog i have a form with checkbox, switched… When i load the Dialog by pressing the “Edit” button i figure out values was stored previous and the objects are showing the correct value. My issue is the component it is not re-render when the state was change ..The state is something like : this.state.selectedCompany.property. I don’t know the actually what is the reason: maybe the react component detect the state change only on first level . (not see changes in json depth)
My issue was solved by forcing the component to rerender with this.foreUpdate().
If you have more details about what cause the issue please tell me 
Hello,
We are glad you found a workaround 
how do you use setState to change the switch property?
I use with setState function. I put the code below for check and changeSelectField
onCheck(event,checked) { const target = event.target ; const name = target.name ; let currentState = Object.assign({}, this.state); let objectName = target.name.split(’.’)[0]; //plans let propertyName = target.name.split(’.’)[1]; // hasMaxHoursPerDay currentStateobjectName = checked; this.setState(currentState); this.forceUpdate() ; }
onChangeSelectField(evt, key, payload, name) {
let value = payload ;
let currentState = Object.assign({}, this.state);
let objectName = name.split('.')[0]; // selectedSpace
let propertyName = name.split('.')[1]; // value
//console.log("objectName: "objectName " | propertyName: "propertyName" | value: "+value) ;
currentStateobjectName = value;
this.setState(currentState);
//console.log(this.state.selectedSpace.country) ;
this.forceUpdate() ;
}
I am very curios. Can you tell me when you intend to release the new update and what will be the new features ?
Ok,
This looks like a specific case as you mentioned, normally we set the property like this:
this.setState({ property: newValue });
For next release we will update some libraries versions, create a profile page and probably add more page components.
I have a running app using this template, but with the 1.8 version. How can I update it to 2 safely? Should I just replace the newer files or something?
Hello,
It should be not that difficult, since most changes happens in routes, containers and components and maybe the pacakage.json
I guess one way to do it could be moving your containers and components and other changes into this new version and let git compare to tell you if something changed.
Hi,
I like you theme and support very much . I am trying for almost a week to finish components for Auth process (Login, Recover password, Reset Password). Because this is an “Admin” theme these components are must have. I asked question in the past about and you told me to use in the componentWillReceiveProps() the function nextProps.location.path name. I tried to check if the route user is autentichated and make redirect with browserHistory but is not a good idea because the browserHistory dont change the location.pathname and the app enter in a infinite look. I don’t have a solution yet to do a think that in my opinion is a must have for any “admin” template. I appreciate if you think to implement components for Auth part or maybe to write an article about this topic. Any help is appreciated.
Thank you Bogdan
Hello,
Thanks for your suggestions to improve this template. We will include all the pages related with the auth process in the next release. We will let you know when done.
Thank you very much.
Hello,
We redesign the login, added forgot password and register components. Also containers/App/sagas and containers/App/reducer were changed in order to have actions from these components.
Go ahead and download version 2.0
Take a look of how is working here: http://preview.themeforest.net/item/fortress-react-admin-template/full_screen_preview/19568479
Hi, Thank you so much. Today I will test. Do you want to came with ideas for new component base on component that are present in popular admin templates? In my opinion a good template is a template that offer a lot of components I like you template very much as I said before. Bogdan
If you want I can come with code for other components.
Thank you,
Yeah, new component ideas are welcome
There’s a way to see the latest changes of the update?
Hello,
There is a changelog file where you can find the changes for each version, for version 1.9 these are the new changes:
Boxed Layout New Grid System Page Updated material-ui to 0.18.1 Removed recompose library