Skip to content

Commit

Permalink
Removed iconClasses option.
Browse files Browse the repository at this point in the history
Seems like this needs more thought. See Issue #29 for a discussion of
potential improvements to the admin module.
  • Loading branch information
davidkellerman committed Oct 24, 2018
1 parent 045b5d6 commit b0a4fbe
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 33 deletions.
43 changes: 13 additions & 30 deletions src/AdminController.js
Original file line number Diff line number Diff line change
Expand Up @@ -20,26 +20,13 @@ import {application as app} from 'nxus-core'
*
* # Parameters (in addition to EditController parameters)
* * `icon` - [deprecated] icon class for nav - defaults to fa-files-o
* * `iconClasses` - icon classes mapping (submenu, group, view, create, download, upload, edit, delete) to css classes
* * `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 {

iconClasses = {
submenu: 'fa fa-files-o',
group: 'fa fa-folder-open-o',
view: 'fa fa-list',
create: 'fa fa-plus',
download: 'fa fa-download',
upload: 'fa fa-upload',
edit: 'fa fa-edit',
delete: 'fa fa-remove'
}


constructor(opts) {
let _modelIdentity = opts.model || opts.modelIdentity || morph.toDashed(new.target.name)
Expand All @@ -58,12 +45,6 @@ class AdminController extends EditController {
this.displayName = opts.displayName || morph.toTitle(this.modelIdentity)
this.order = opts.order || 0

Object.assign(this.iconClasses, opts.iconClasses || {})
// deprecated options
if (opts.icon) {
this.iconClasses.submenu = opts.icon
}

this.uploadOptions = opts.uploadOptions || {}
this.uploadType = opts.uploadType || null
this.downloadType = opts.downloadType || null
Expand All @@ -73,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: this.iconClasses.group, 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.iconClasses.submenu, 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: this.iconClasses.view})
this.addNav('Create', 'create', {icon: this.iconClasses.create})
this.addNav('View', '', {icon: 'view'})
this.addNav('Create', 'create', {icon: 'create'})

this.addAction('list', 'Add', "/create", {icon: this.iconClasses.create})
this.addInstanceAction("Edit", "/edit/", {icon: this.iconClasses.edit})
this.addAction('list', 'Add', "/create", {icon: 'add'})
this.addInstanceAction("Edit", "/edit/", {icon: 'edit'})
this.addInstanceAction("Delete", "/delete/", {
icon: this.iconClasses.delete,
icon: 'delete',
template: 'actions-button-post',
templateMinimal: 'actions-icon-post'
})
Expand Down Expand Up @@ -152,9 +135,9 @@ class AdminController extends EditController {
nav: false,
directHandler: true
}, ::this._download)
nav.add(this.prefix+'-submenu', 'Download', exportRoute, {icon: this.iconClasses.download})
nav.add(this.prefix+'-submenu', 'Download', exportRoute, {icon: 'download'})
actions.add(this.templatePrefix+"-list", "Download", "/export", {
icon: this.iconClasses.download
icon: 'download'
})
}

Expand All @@ -178,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: this.iconClasses.upload})
nav.add(this.prefix+'-submenu', 'Import', importRoute, {icon: 'upload'})
actions.add(this.templatePrefix+"-list", "Import", "/import", {
icon: this.iconClasses.upload
icon: 'upload'
})

}
Expand Down
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

0 comments on commit b0a4fbe

Please sign in to comment.