generator-cui-portlet
v1.0.1
Published
Starting point for CUI based liferay portlets.
Downloads
6
Keywords
Readme
generator-cui-portlet
Starting point for CUI based liferay portlets.
Installation
Prerequisites
- Node and npm - https://nodejs.org/en/ (every step after this requires npm)
- Bower - run
npm install -g bower
from your command line - Grunt cli - run
npm install -g grunt-cli
- Yeoman - run
npm install -g yo
Get started
- Install the cui-ng generator -
npm install -g generator-cui-portlet
- Make a new folder, this is where your project will live
- Open a command line on that folder and run
yo cui-portlet
- You will be asked a few questions. Don't worry if you make a mistake, you can always start over (by deleting everything in that new folder and re-doing step 3) or just change things later.
- Copy the appConfig-example.json file into another file with the name appConfig.json, with the required customizations.
How it works
This generator enables you to always get the newest features of cui-idm-b2x without risking overwriting any of your customizations. The way we do that is by splitting your project into 2 main folders - app and app-custom.
app/
will always have the most up to date b2x code - the common-templates and modules folders specifically. To update it, all you have to do is run yo cui-ng:update from your new project's root.
app-custom/
is where your custom code should live. The grunt copy task is setup so that any files in this folder that have the same path and file name as the ones in the app folder will be the ones that your app uses.
How to customize the app
In this example, say we want to change the way the applications are being shown in the 'My applications' screen. What you would do is:
- Make an applications folder within
app-custom/modules/
- Inside that folder, make another folder called
myApplications
(mimicking the structure withing the app folder) - Create a file called
myApplications.html
in that folder. This file will always override the one in the app folder, no matter what updates come in the future.
NOTES:
- Every time you want to reference an asset in
app-custom
, be it an image or html template, make sure to point toapp
instead ofapp-custom
, since everything gets moved to theapp
folder during the build process - All html files in app-custom get concatenated and merged in with the rest of your js files, using ng-templates. This helps reduce the number of http requests. If for some reason you need an html file to carry over (maybe to open in a new tab), simply create a
non-concat
folder in app-custom and put your html files in there (remember to follow the first note when referencing them)
The benefits of this yeoman generator should be clear now: You can change pieces in a file by file fashion without compromising your ability to get updates to the other moving pieces.
How to run the app
- Running
grunt
from the root of the project will start browsersync which is a grunt task that starts an auto-reloaded browser page. Every time you make a change to any file in app-custom the page will refresh with the newest changes grunt build
concatenates and minifies all the assets needed to run this app and puts it into a 'build/' folder. Note that if you add image assets or any sort of assets that is not javascript or html you will need to change the build task (Thetasks/
folder does not get updated when you runyo cui-ng:update
)grunt demo
launches a browsersync window from the build folder, giving you an accurate representation of what the app will look like once it's deployedyo cui-portlet:build-portlets
will take you through the process of generating portletsyo cui-portlet:demo
will let you demo what a portlet will look like based on a certain config
Other features
- From your
app-custom/modules/
folder you can runyo cui-ng:add-module
to kick start a new module structure with a basic state configuration. - Likewise, from within a nested module folder (for example,
app-custom/modules/applications/myApplications/
) you can kick start a new feature by runningyo cui-ng:add-controller
. This will create a new controller attached to the applications module and, optionally, a new html template file that matches the name of the controller.
License
Copyright (c) 2015 Covisint Corporation. All Rights Reserved.