mirror of
https://github.com/vale981/Vulcan
synced 2025-03-06 01:51:40 -05:00

* [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
91 lines
2.3 KiB
JavaScript
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");
|
|
}
|