115 lines
3.8 KiB
CoffeeScript

Template.registerHelper('AdminTables', AdminTables);
adminCollections = ->
collections = {}
if typeof AdminConfig != 'undefined' and typeof AdminConfig.collections == 'object'
collections = AdminConfig.collections
collections.Users =
collectionObject: Meteor.users
icon: 'user'
label: 'Users'
_.map collections, (obj, key) ->
obj = _.extend obj, {name: key}
obj = _.defaults obj, {label: key, icon: 'plus', color: 'blue'}
obj = _.extend obj,
viewPath: Router.path "adminDashboard#{key}View"
newPath: Router.path "adminDashboard#{key}New"
UI.registerHelper 'AdminConfig', ->
AdminConfig if typeof AdminConfig != 'undefined'
UI.registerHelper 'admin_skin', ->
AdminConfig?.skin or 'blue'
UI.registerHelper 'admin_collection_name', ->
Session.get 'admin_collection_name'
UI.registerHelper 'admin_current_id', ->
Session.get 'admin_id'
UI.registerHelper 'admin_current_doc', ->
Session.get 'admin_doc'
UI.registerHelper 'admin_is_users_collection', ->
Session.get('admin_collection_name') == 'Users'
UI.registerHelper 'admin_sidebar_items', ->
AdminDashboard.sidebarItems
UI.registerHelper 'admin_collection_items', ->
items = []
_.each AdminDashboard.collectionItems, (fn) =>
item = fn @name, '/admin/' + @name
if item?.title and item?.url
items.push item
items
UI.registerHelper 'admin_omit_fields', ->
if typeof AdminConfig.autoForm != 'undefined' and typeof AdminConfig.autoForm.omitFields == 'object'
global = AdminConfig.autoForm.omitFields
if not Session.equals('admin_collection_name','Users') and typeof AdminConfig != 'undefined' and typeof AdminConfig.collections[Session.get 'admin_collection_name'].omitFields == 'object'
collection = AdminConfig.collections[Session.get 'admin_collection_name'].omitFields
if typeof global == 'object' and typeof collection == 'object'
_.union global, collection
else if typeof global == 'object'
global
else if typeof collection == 'object'
collection
UI.registerHelper 'AdminSchemas', ->
AdminDashboard.schemas
UI.registerHelper 'adminGetSkin', ->
if typeof AdminConfig.dashboard != 'undefined' and typeof AdminConfig.dashboard.skin == 'string'
AdminConfig.dashboard.skin
else
'blue'
UI.registerHelper 'adminIsUserInRole', (_id,role)->
Roles.userIsInRole _id, role
UI.registerHelper 'adminGetUsers', ->
Meteor.users
UI.registerHelper 'adminGetUserSchema', ->
if _.has(AdminConfig, 'userSchema')
schema = AdminConfig.userSchema
else if typeof Meteor.users._c2 == 'object'
schema = Meteor.users.simpleSchema()
return schema
UI.registerHelper 'adminCollectionLabel', (collection)->
AdminDashboard.collectionLabel(collection) if collection?
UI.registerHelper 'adminCollectionCount', (collection)->
if collection == 'Users'
Meteor.users.find().count()
else if collection == 'admins'
Meteor.users.find({roles: {$elemMatch: {$eq: "admin"}}}).count()
else
AdminCollectionsCount.findOne({collection: collection})?.count
UI.registerHelper 'adminTemplate', (collection, mode)->
if collection?.toLowerCase() != 'users' && typeof AdminConfig?.collections?[collection]?.templates != 'undefined'
AdminConfig.collections[collection].templates[mode]
UI.registerHelper 'adminGetCollection', (collection)->
_.find adminCollections(), (item) -> item.name == collection
UI.registerHelper 'adminWidgets', ->
if typeof AdminConfig.dashboard != 'undefined' and typeof AdminConfig.dashboard.widgets != 'undefined'
AdminConfig.dashboard.widgets
UI.registerHelper 'adminUserEmail', (user) ->
if user && user.emails && user.emails[0] && user.emails[0].address
user.emails[0].address
else if user && user.services && user.services.facebook && user.services.facebook.email
user.services.facebook.email
else if user && user.services && user.services.google && user.services.google.email
user.services.google.email