Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .babelrc
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
"plugins": [
"transform-function-bind",
"transform-object-rest-spread",
"transform-es2015-modules-commonjs"
"transform-es2015-modules-commonjs",
"transform-class-properties"
]
}
1 change: 1 addition & 0 deletions .npmignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,4 @@
.travis.yml
src
test
*.tgz
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ to provide admin prefixes for routes ("/admin/model-identity") and templates ("m

## Parameters (in addition to EditController parameters)

- `icon` - icon class for nav - defaults to fa-files-o
- `icon` - [deprecated] icon class for nav - defaults to fa-files-o
- `order` - optional ordering for nav
- `uploadType` - dataManager import type (e.g. csv, json), if set an Import action is available.
- `uploadOptions` - options to pass to dataManager parser
Expand Down
30 changes: 17 additions & 13 deletions src/AdminController.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,15 @@ import {application as app} from 'nxus-core'
* to provide admin prefixes for routes ("/admin/model-identity") and templates ("model-identity-admin"), and by default wraps templates in 'admin-page' rather than 'page'.
*
* # Parameters (in addition to EditController parameters)
* * `icon` - icon class for nav - defaults to fa-files-o
* * `icon` - [deprecated] icon class for nav - defaults to fa-files-o
* * `order` - optional ordering for nav
* * `uploadType` - dataManager import type (e.g. csv, json), if set an Import action is available.
* * `uploadOptions` - options to pass to dataManager parser
*/


class AdminController extends EditController {

constructor(opts) {
let _modelIdentity = opts.model || opts.modelIdentity || morph.toDashed(new.target.name)
opts.modelIdentity = _modelIdentity
Expand All @@ -42,7 +43,6 @@ class AdminController extends EditController {
super(opts)

this.displayName = opts.displayName || morph.toTitle(this.modelIdentity)
this.icon = opts.icon || 'fa fa-files-o'
this.order = opts.order || 0

this.uploadOptions = opts.uploadOptions || {}
Expand All @@ -54,23 +54,25 @@ class AdminController extends EditController {
this.adminGroup = morph.toTitle(_modelIdentity.split('-')[0])
}

if (opts.icon) this.log.warn('icon option is deprecated')

if(this.routePrefix[0] != '/') this.routePrefix = '/'+this.routePrefix

let menu = 'admin-sidebar'
if (this.adminGroup) {
menu = "admin-"+this.adminGroup+'-submenu'
admin.addNav(this.adminGroup, "", {subMenu: menu, icon: 'fa fa-folder-open-o', order: this.order})
admin.addNav(this.adminGroup, "", {subMenu: menu, icon: 'group', order: this.order})
}
this._subMenu = this.prefix+'-submenu'
nav.add(menu, this.displayName, this.routePrefix, {subMenu: this._subMenu, icon: this.icon, order: this.order})
nav.add(menu, this.displayName, this.routePrefix, {subMenu: this._subMenu, icon: 'submenu', order: this.order, override: opts.icon})

this.addNav('View', '', {icon: 'fa fa-list'})
this.addNav('Create', 'create', {icon: 'fa fa-plus'})
this.addNav('View', '', {icon: 'view'})
this.addNav('Create', 'create', {icon: 'create'})

this.addAction('list', 'Add', "/create", {icon: 'fa fa-plus'})
this.addInstanceAction("Edit", "/edit/", {icon: "fa fa-edit"})
this.addAction('list', 'Add', "/create", {icon: 'add'})
this.addInstanceAction("Edit", "/edit/", {icon: 'edit'})
this.addInstanceAction("Delete", "/delete/", {
icon: "fa fa-remove",
icon: 'delete',
template: 'actions-button-post',
templateMinimal: 'actions-icon-post'
})
Expand All @@ -90,6 +92,8 @@ class AdminController extends EditController {
}
}



/**
* Register an admin nav menu item under this model
*
Expand Down Expand Up @@ -131,9 +135,9 @@ class AdminController extends EditController {
nav: false,
directHandler: true
}, ::this._download)
nav.add(this.prefix+'-submenu', 'Download', exportRoute, {icon: 'fa fa-download'})
nav.add(this.prefix+'-submenu', 'Download', exportRoute, {icon: 'download'})
actions.add(this.templatePrefix+"-list", "Download", "/export", {
icon: "fa fa-download"
icon: 'download'
})
}

Expand All @@ -157,9 +161,9 @@ class AdminController extends EditController {

templater.default().template(__dirname+"/templates/admin-import.ejs", this.pageTemplate, this.templatePrefix+"-import")

nav.add(this.prefix+'-submenu', 'Import', importRoute, {icon: 'fa fa-upload'})
nav.add(this.prefix+'-submenu', 'Import', importRoute, {icon: 'upload'})
actions.add(this.templatePrefix+"-list", "Import", "/import", {
icon: "fa fa-upload"
icon: 'upload'
})

}
Expand Down
2 changes: 1 addition & 1 deletion src/modules/admin-theme-default/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ class AdminDefaultTheme extends NxusModule {
super()
templater.template(__dirname+'/layouts/admin-default.ejs')
templater.template(__dirname+'/layouts/admin-page.ejs', 'admin-default')
templater.template(__dirname+'/partials/admin-nav-menu.ejs')
templater.templateDir(__dirname+'/partials/')

router.staticRoute('/admin/assets', __dirname+'/assets')
}
Expand Down
11 changes: 3 additions & 8 deletions src/modules/admin-theme-default/layouts/admin-default.ejs
Original file line number Diff line number Diff line change
@@ -1,17 +1,12 @@
<!DOCTYPE html>
<html lang="en">

<%- include('../partials/head.ejs') %>

<%- render('admin-head') %>
<body>

<div id="wrapper">
<%- include('../partials/nav.ejs') %>

<%- render('admin-nav') %>
<%- content %>
</div>
<!-- /#wrapper -->
<%- include('../partials/scripts.ejs') %>
<%- render('admin-scripts') %>
</body>

</html>
18 changes: 15 additions & 3 deletions src/modules/admin-theme-default/partials/admin-nav-menu.ejs
Original file line number Diff line number Diff line change
@@ -1,9 +1,21 @@
<%
const navIcons = {
submenu: 'fa fa-files-o',
group: 'fa fa-folder-open-o',
view: 'fa fa-list',
create: 'fa fa-plus',
add: 'fa fa-plus',
download: 'fa fa-download',
upload: 'fa fa-upload',
}
function navIcon(icon, override) { return override || navIcons[icon] || icon }
%>
<ul class="nav nav-pills nav-stacked" id="<%- menu %>">
<% items.forEach((i) => { %>
<li class="nav-item">
<a href="<%- i.link %>" class="nav-link">
<% if(i.icon) { %>
<i class="<%- i.icon %>"></i>
<i class="<%- navIcon(i.icon, i.override) %>"></i>
<% } %>
<%- i.label %>
</a>
Expand All @@ -13,7 +25,7 @@
<li class="nav-item">
<a href="<%- s.link %>" class="nav-link">
<% if(s.icon) { %>
<i class="<%- s.icon %>"></i>
<i class="<%- navIcon(s.icon) %>"></i>
<% } %>
<%- s.label %>
</a>
Expand All @@ -23,7 +35,7 @@
<li class="nav-item">
<a href="<%- g.link %>" class="nav-link">
<% if(g.icon) { %>
<i class="<%- g.icon %>"></i>
<i class="<%- navIcon(g.icon) %>"></i>
<% } %>
<%- g.label %></a>
</li>
Expand Down