Discussion on Fortress - React Admin Template

Discussion on Fortress - React Admin Template

Cart 408 sales
Well Documented

FortressThemes supports this item

Supported

This author's response time can be up to 1 business day.

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,

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.js

Ok, 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,

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/1903

Another 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.

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,

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.json

Hi,

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!

8) 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. 8) 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.1

npm 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.md

Got 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/standard

When we can expect login auth for this theme?

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”

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

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

by
by
by
by
by
by

Tell us what you think!

We'd like to ask you a few questions to help improve ThemeForest.

Sure, take me to the survey