Vulcan/packages/nova-demo/demo-app.jsx
Comus Leong 464e20a96c eslint & clean up code, also fixed some bugs (#1515)
* [eslint] update eslint rules & add .eslintignore to ignore non-ready nova packages

* [clean-up] nova-voting

* [clean-up] [bug] nova-users: missing user parameter

* [clean-up] nova-users

* [clean-up] nova-subscribe

* [clean-up] nova-settings

* [clean-up] nova-rss

* [clean-up] [bug] nova-posts: correct UsersRemoveDeletePosts

* [clean-up] nova-posts

* [clean-up] nova-notifications

* [clean-up] [bug] nova-newsletter: no error.message on throw error

* [clean-up] nova-newsletter

* [clean-up] nova-lib

* [clean-up] nova-kadira

* [clean-up] nova-inject-data

* [clean-up] nova-getting-started

* [clean-up] nova-forms

* [clean-up] nova-events

* [clean-up] [bug] nova-embedly: no FlowRouter

* [clean-up] nova-embedly

* [clean-up] nova-email-templates

* [clean-up] nova-email

* [clean-up] nova-debug

* [clean-up] nova-core

* [clean-up] [bug] nova-comments: correct UsersRemoveDeleteComments

* [clean-up] nova-comments

* [clean-up] [bug] nova-cloudinary: use Telescope.settings.collection instand

* [clean-up] nova-cloudinary

* [clean-up] nova-categories

* [clean-up] nova-base-components

* [clean-up] nova-api

* [eslint] extends react recommended

* [clean-up] for jsx files

* [eslint] extends meteor recommended

* i forgot this one little change
2016-11-25 13:46:55 -05:00

91 lines
2.3 KiB
JavaScript

/* global Movies:true */
import Telescope from 'meteor/nova:lib';
import Users from 'meteor/nova:users';
import { SimpleSchema } from 'meteor/aldeed:simple-schema';
import React, { PropTypes, Component } from 'react';
import MoviesWrapper from './demo-components.jsx';
// import {mount} from 'react-mounter';
// import Core from 'meteor/nova:core';
// import { Route } from 'react-router';
//////////////////////////////////////////////////////
// Collection & Schema //
//////////////////////////////////////////////////////
Movies = new Mongo.Collection("movies");
const isLoggedIn = user => !!user;
const isOwner = (user, document) => user._id === document.userId;
const schema = new SimpleSchema({
name: {
type: String,
publish: true,
control: "text",
insertableIf: isLoggedIn,
editableIf: isOwner
},
createdAt: {
type: Date,
publish: true,
},
year: {
type: String,
publish: true,
optional: true,
control: "text",
insertableIf: isLoggedIn,
editableIf: isOwner
},
review: {
type: String,
publish: true,
control: "textarea",
insertableIf: isLoggedIn,
editableIf: isOwner
},
userId: {
type: String,
publish: true,
join: {
collection: () => Users,
joinAs: "user",
fields: ["_id", "username"]
}
}
});
Movies.attachSchema(schema);
//////////////////////////////////////////////////////
// Route //
//////////////////////////////////////////////////////
// Telescope.routes.add(<Route name="demo" path="/demo" component={MoviesWrapper} />);
Telescope.routes.add({name:"demo", path:"/demo", component:MoviesWrapper});
//////////////////////////////////////////////////////
// Methods //
//////////////////////////////////////////////////////
Movies.smartMethods({
createName: "movies.create",
editName: "movies.edit",
createCallback: function (user, document) {
document = _.extend(document, {
createdAt: new Date(),
userId: Meteor.userId()
});
return document;
},
deleteCallback: isOwner
});
//////////////////////////////////////////////////////
// Publications //
//////////////////////////////////////////////////////
if (Meteor.isServer) {
Movies.smartPublish("movies.list");
}