1
0
mirror of https://github.com/fazo96/markcloud.git synced 2025-01-25 13:24:20 +01:00
markcloud/client/client.coffee
2014-10-06 10:28:05 +02:00

98 lines
3.0 KiB
CoffeeScript

docs = new Meteor.Collection 'docs'
Meteor.subscribe 'user'
UI.registerHelper 'mail', -> Meteor.user().emails[0].address
Router.configure
layoutTemplate: 'layout'
loadingTemplate: 'loading'
docController = RouteController.extend
template: 'doc'
layoutTemplate: 'docLayout'
waitOn: -> Meteor.subscribe 'doc', @params._id
data: -> docs.findOne @params._id
action: ->
if @ready() then @render()
else @render 'loading'
Router.map ->
@route 'home',
path: '/'
waitOn: -> Meteor.subscribe 'docs'
action: ->
if !@ready()
@render(); @render 'spinner', to: 'outside'
else @render()
@route 'doc',
path: '/d/:_id'
controller: docController
@route 'src',
path:'/src/:_id'
controller: docController
@route 'verify',
path: '/verify/:token'
template: 'loading'
onBeforeAction: ->
Accounts.verifyEmail @params.token, (err) ->
if err then errCallback err else Router.go 'home'
@route 'new'
@route 'signup'
@route 'signin', path: 'login'
@route '404', path: '*'
notification = new ReactiveVar()
share.notify = notify = (opt) ->
if !opt then notification.set undefined
else
opt.type ?= "danger"
notification.set opt
errCallback = (err) ->
return unless err
if err.reason then notify msg: err.reason else notify msg: err
Template.notifications.notification = -> notification.get()
Template.notifications.events
'click .close': -> notify()
Template.layout.showSpinner = ->
Meteor.status().connected is no or Router.current().ready() is no
Template.home.ndocs = -> docs.find().count()
Template.new.events
'click #new-btn': (e,t) ->
if t.find('#title').value is ''
return notify msg: 'please insert a title'
if t.find('#editor').value is ''
return notify msg: "can't create empty document"
docs.insert {
title: t.find('#title').value
text: t.find('#editor').value
showTitle: $('#show-title').is(':checked')
dateCreated: moment().unix()
}, (err,id) ->
errCallback err
if id then Router.go 'doc', _id: id
Template.doc.source = -> Router.current().route.name is 'src'
Template.doc.rows = -> ""+@text.split('\n').length
Template.doc.canEdit = -> "disabled" unless Meteor.user()._id is @owner
Template.doc.events
'click #src-doc': ->
if Router.current().route.name is 'src'
Router.go 'doc', _id: @_id
else Router.go 'src', _id: @_id
Template.signup.events
'click #signup': (e,t) ->
if not t.find('#mail').value
return notify msg: 'please enter an email'
else if not t.find('#pw').value
return notify msg: "Please enter a password"
else if t.find('#pw').value isnt t.find('#rpw').value
return notify msg: "The passwords don't match"
else # Sending actual registration request
console.log t.find('#mail').value
Accounts.createUser {
email: t.find('#mail').value
password: t.find('#pw').value
}, (err) -> if err then errCallback err
else notify type: 'success', msg: 'check your email'