mirror of
https://gitlab.com/bmcgonag/get_my.git
synced 2026-03-27 00:08:49 +00:00
Merge branch 'dev' into 'main'
Updated My Tasks to have multiple entry like Tasks view. Added Clean Up for Tasks. See merge request bmcgonag/get_my!3
This commit is contained in:
commit
d0398ddc32
10 changed files with 152 additions and 45 deletions
|
|
@ -3,7 +3,7 @@
|
||||||
<h3>Clean Up System Data</h3>
|
<h3>Clean Up System Data</h3>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col s12 m6 l4">
|
<div class="col s12 m6 l4">
|
||||||
<div class="card">
|
<div class="card grey darken-4 white-text">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<span class="card-title">Clean Up List Items</span>
|
<span class="card-title">Clean Up List Items</span>
|
||||||
<a class="btn waves-effect waves-light blue white-text modal-trigger" href="#cleanUpConfirm" id="cleanLists">Clean Lists</a>
|
<a class="btn waves-effect waves-light blue white-text modal-trigger" href="#cleanUpConfirm" id="cleanLists">Clean Lists</a>
|
||||||
|
|
@ -13,7 +13,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s12 m6 l4">
|
<div class="col s12 m6 l4">
|
||||||
<div class="card">
|
<div class="card grey darken-4 white-text">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<span class="card-title">Clean Up Menus</span>
|
<span class="card-title">Clean Up Menus</span>
|
||||||
<a class="btn waves-effect waves-light blue white-text modal-trigger" href="#cleanUpConfirm" id="cleanMenus">Clean Menus</a>
|
<a class="btn waves-effect waves-light blue white-text modal-trigger" href="#cleanUpConfirm" id="cleanMenus">Clean Menus</a>
|
||||||
|
|
@ -23,7 +23,7 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s12 m6 l4">
|
<div class="col s12 m6 l4">
|
||||||
<div class="card">
|
<div class="card grey darken-4 white-text">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<span class="card-title">Clean Up Products</span>
|
<span class="card-title">Clean Up Products</span>
|
||||||
<a class="btn waves-effect waves-light blue white-text" id="cleanProducts">Clean Products</a>
|
<a class="btn waves-effect waves-light blue white-text" id="cleanProducts">Clean Products</a>
|
||||||
|
|
@ -33,17 +33,31 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s12 m6 l4">
|
<div class="col s12 m6 l4">
|
||||||
<div class="card">
|
<div class="card grey darken-4 white-text">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<span class="card-title">Clean Up Tasks</span>
|
<span class="card-title">Clean Up Tasks</span>
|
||||||
<a class="btn waves-effect waves-light blue white-text" id="cleanTasks">Clean Tasks</a>
|
<form class="row" style="gap: 1em;">
|
||||||
|
<div class="col s12 input-field">
|
||||||
|
<select name="removeOverDueTasks" id="removeOverdueTasks" class="removeOverDueTasks">
|
||||||
|
<option value="1-week">1 Week</option>
|
||||||
|
<option value="2-weeks">2 Weeks</option>
|
||||||
|
<option value="1-month">1 Month</option>
|
||||||
|
<option value="3-months">3 Months</option>
|
||||||
|
<option value="all">All Overdue Tasks</option>
|
||||||
|
</select>
|
||||||
|
<label for="removeOverdueTasks">Remove Overdue Tasks Older Than</label>
|
||||||
|
</div>
|
||||||
|
<div class="col s12">
|
||||||
|
<a class="btn waves-effect waves-light blue white-text modal-trigger" href="#cleanUpConfirm" id="cleanTasks">Clean Tasks</a>
|
||||||
<i class="material-icons tooltipped right" data-html="true" data-position="top" data-tooltip-id="tooltip-tasks">info</i>
|
<i class="material-icons tooltipped right" data-html="true" data-position="top" data-tooltip-id="tooltip-tasks">info</i>
|
||||||
<div id="tooltip-tasks" style="display: none;">This will clean up all tasks where the date has past, or the task is marked completed. For completed tasks to be cleared, today must also be past the due date on the task.</div>
|
<div id="tooltip-tasks" style="display: none;">This will clean up all tasks where the date has past, or the task is marked completed. For completed tasks to be cleared, today must also be past the due date on the task.</div>
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s12 m6 l4">
|
<div class="col s12 m6 l4">
|
||||||
<div class="card">
|
<div class="card grey darken-4 white-text">
|
||||||
<div class="card-content">
|
<div class="card-content">
|
||||||
<span class="card-title">Clean Up Stores</span>
|
<span class="card-title">Clean Up Stores</span>
|
||||||
<a class="btn waves-effect waves-light blue white-text" id="cleanStores">Clean Stores</a>
|
<a class="btn waves-effect waves-light blue white-text" id="cleanStores">Clean Stores</a>
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,14 @@ Template.cleanUp.onRendered(function() {
|
||||||
|
|
||||||
var elemsm = document.querySelectorAll('.modal');
|
var elemsm = document.querySelectorAll('.modal');
|
||||||
var instancesm = M.Modal.init(elemsm, {});
|
var instancesm = M.Modal.init(elemsm, {});
|
||||||
|
|
||||||
|
var elemse = document.querySelectorAll('select');
|
||||||
|
var instancese = M.FormSelect.init(elemse, {});
|
||||||
|
|
||||||
|
setTimeout(function() {
|
||||||
|
var instances = M.Tooltip.init(elems, {});
|
||||||
|
var instancese = M.FormSelect.init(elemse, {});
|
||||||
|
}, 300);
|
||||||
});
|
});
|
||||||
|
|
||||||
Template.cleanUp.helpers({
|
Template.cleanUp.helpers({
|
||||||
|
|
@ -45,5 +53,7 @@ Template.cleanUp.events({
|
||||||
'click #cleanTasks' (event) {
|
'click #cleanTasks' (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
Session.set("cleanWhat", "Tasks");
|
Session.set("cleanWhat", "Tasks");
|
||||||
|
let timeFrame = $("#removeOverdueTasks").val();
|
||||||
|
Session.set("overdueVal", timeFrame);
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -25,27 +25,40 @@ Template.cleanUpModalConfirm.events({
|
||||||
|
|
||||||
switch(whatItems) {
|
switch(whatItems) {
|
||||||
case "Lists":
|
case "Lists":
|
||||||
cleanUp("clean.Lists");
|
cleanUp("clean.Lists", whatItems);
|
||||||
case "Menus":
|
case "Menus":
|
||||||
cleanUp("clean.Menus");
|
cleanUp("clean.Menus", whatItems);
|
||||||
case "Products":
|
case "Products":
|
||||||
// cleanUp("clean.Products");
|
// cleanUp("clean.Products", whatItems);
|
||||||
case "Stores":
|
case "Stores":
|
||||||
// cleanUp("clean.Stores");
|
// cleanUp("clean.Stores", whatItems);
|
||||||
case "Tasks":
|
case "Tasks":
|
||||||
// cleanUp("clean.Tasks");
|
cleanTasks("clean.Tasks", whatItems);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
cleanUp = function(methodName) {
|
cleanUp = function(methodName, whatItems) {
|
||||||
Meteor.call(methodName, function(err, result) {
|
Meteor.call(methodName, function(err, result) {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(" ERROR cleaning lists: " + err)
|
console.log(" ERROR cleaning " + whatItems + ": " + err);
|
||||||
} else {
|
} else {
|
||||||
showSnackbar("Lists have been cleaned up!", "green");
|
showSnackbar(whatItems + " have been cleaned up!", "green");
|
||||||
|
let confirmModal = document.getElementById('cleanUpConfirm');
|
||||||
|
M.Modal.getInstance(confirmModal).close();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanTasks = function(methodName, whatItems) {
|
||||||
|
let timeFrame = Session.get("overdueVal");
|
||||||
|
Meteor.call(methodName, timeFrame, function(err, result) {
|
||||||
|
if (err) {
|
||||||
|
console.log(" ERROR cleaning " + whatItems + ": " + err);
|
||||||
|
} else {
|
||||||
|
showSnackbar(whatItems + " have been cleaned up!", "green");
|
||||||
let confirmModal = document.getElementById('cleanUpConfirm');
|
let confirmModal = document.getElementById('cleanUpConfirm');
|
||||||
M.Modal.getInstance(confirmModal).close();
|
M.Modal.getInstance(confirmModal).close();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -69,13 +69,13 @@ Template.taskForm.events({
|
||||||
let taskDateErr = false;
|
let taskDateErr = false;
|
||||||
let userInfo;
|
let userInfo;
|
||||||
let actDate = [];
|
let actDate = [];
|
||||||
console.dir(taskNameArr);
|
// console.dir(taskNameArr);
|
||||||
|
|
||||||
if (taskNameArr == null || taskNameArr == []) {
|
if (taskNameArr == null || taskNameArr == []) {
|
||||||
taskNameErr = true;
|
taskNameErr = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (taskDate == null || taskDate == []) {
|
if (taskDateArr == null || taskDateArr == []) {
|
||||||
taskDateErr = true;
|
taskDateErr = true;
|
||||||
} else {
|
} else {
|
||||||
for (i = 0; i < taskDateArr.length; i++) {
|
for (i = 0; i < taskDateArr.length; i++) {
|
||||||
|
|
@ -97,7 +97,6 @@ Template.taskForm.events({
|
||||||
console.log(" ERROR adding the new task: " + err);
|
console.log(" ERROR adding the new task: " + err);
|
||||||
} else {
|
} else {
|
||||||
console.log(" SUCCESS adding the new task.");
|
console.log(" SUCCESS adding the new task.");
|
||||||
M.Chips.getInstance($("#taskName")).deleteChip();
|
|
||||||
Session.set("taskDateArr", []);
|
Session.set("taskDateArr", []);
|
||||||
$("#taskDate").val("");
|
$("#taskDate").val("");
|
||||||
$("#taskUser").val("");
|
$("#taskUser").val("");
|
||||||
|
|
|
||||||
|
|
@ -1,16 +1,20 @@
|
||||||
<template name="myTasksForm">
|
<template name="myTasksForm">
|
||||||
<h4>MyTasks</h4>
|
<h4>MyTasks</h4>
|
||||||
<div class="row">
|
<form class="row" style="gap: 1em;">
|
||||||
<div class="col s12 m6 l6 input-field">
|
<div class="col s12 m6 l6 chips chips-placeholder" id="taskName">
|
||||||
<input type="text" class="myTaskName" id="myTaskName" />
|
|
||||||
<label for="myTaskName">Task Name</label>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="col s12 m6 l6 input-field">
|
<div class="col s12 m6 l6 input-field">
|
||||||
<input type="text" class="datepicker" id="myTaskDate" />
|
<input type="text" class="datepicker" id="myTaskDate" />
|
||||||
<label for="myTaskDate">Due Date</label>
|
<label for="myTaskDate">Due Date</label>
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
{{#each taskDate in taskDates}}
|
||||||
|
<div class="col s4 l2 m3">
|
||||||
|
<span>{{taskDate}}</span>
|
||||||
|
</div>
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="col s6 m4 l4">
|
<div class="col s6 m4 l4">
|
||||||
<p>
|
<p>
|
||||||
<label>
|
<label>
|
||||||
|
|
@ -28,8 +32,8 @@
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="col s12 m4 l4">
|
<div class="col s12 m4 l4">
|
||||||
<a class="waves-effect waves-light btn addNewTask green right">Add</a>
|
<a class="waves-effect waves-light btn addNewTask green white-text right">Add</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
</form>
|
||||||
{{> snackbar}}
|
{{> snackbar}}
|
||||||
</template>
|
</template>
|
||||||
|
|
@ -8,42 +8,70 @@ Template.myTasksForm.onCreated(function() {
|
||||||
Template.myTasksForm.onRendered(function() {
|
Template.myTasksForm.onRendered(function() {
|
||||||
var elems = document.querySelectorAll('.datepicker');
|
var elems = document.querySelectorAll('.datepicker');
|
||||||
var instances = M.Datepicker.init(elems, {});
|
var instances = M.Datepicker.init(elems, {});
|
||||||
|
|
||||||
|
var elemsd = document.querySelectorAll('.chips');
|
||||||
|
var instancesd = M.Chips.init(elemsd, {});
|
||||||
|
|
||||||
Session.set("hideComplete", true);
|
Session.set("hideComplete", true);
|
||||||
Session.set("onlyToday", true);
|
Session.set("onlyToday", true);
|
||||||
|
Session.set("taskDateArr", []);
|
||||||
});
|
});
|
||||||
|
|
||||||
Template.myTasksForm.helpers({
|
Template.myTasksForm.helpers({
|
||||||
|
taskDates: function() {
|
||||||
|
return Session.get("taskDateArr");
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
Template.myTasksForm.events({
|
Template.myTasksForm.events({
|
||||||
'click .addNewTask' (event) {
|
'click .addNewTask' (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
let taskName = $("#myTaskName").val();
|
let taskNameErr = false;
|
||||||
let taskDate = $("#myTaskDate").val();
|
let taskDateErr = false;
|
||||||
let actDate = new Date(taskDate);
|
let elemsc = document.getElementById('taskName');
|
||||||
|
let taskNameArray = M.Chips.getInstance(elemsc).chipsData;
|
||||||
|
let taskDateArray = Session.get("taskDateArr");
|
||||||
|
let actDate = [];
|
||||||
|
|
||||||
if (taskName == null || taskName == "" || taskDate == "" || taskDate == null) {
|
if (taskNameArray == null || taskNameArray == [] || taskNameArray == "") {
|
||||||
taskEntryErr = true;
|
taskNameErr = true;
|
||||||
showSnackbar("Task Name and Date are Required!", "red");
|
}
|
||||||
return;
|
|
||||||
|
if (taskDateArray == null || taskDateArray == []|| taskDateArray == "") {
|
||||||
|
taskDateErr = true;
|
||||||
} else {
|
} else {
|
||||||
Meteor.call("add.mytask", taskName, "self", "selfId", taskDate, actDate, function(err, result) {
|
for (i = 0; i < taskDateArray.length; i++) {
|
||||||
|
// console.log(taskDateArray[i]);
|
||||||
|
let actDateTask = new Date(taskDateArray[i]);
|
||||||
|
actDate.push(actDateTask);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
console.log("Date Error: " + taskDateErr + " - Name Error: " + taskNameErr);
|
||||||
|
if (taskDateErr == false && taskNameErr == false) {
|
||||||
|
Meteor.call("add.task", taskNameArray, "self", "selfId", taskDateArray, actDate, function(err, result) {
|
||||||
if (err) {
|
if (err) {
|
||||||
console.log(" ERROR adding task for self: " + err);
|
console.log(" ERROR adding task for self: " + err);
|
||||||
showSnackbar("ERROR adding task for self!", "red");
|
showSnackbar("ERROR adding task for self!", "red");
|
||||||
} else {
|
} else {
|
||||||
console.log(" SUCCESS adding task for self.");
|
console.log(" SUCCESS adding task for self.");
|
||||||
|
Session.set("taskDateArr", []);
|
||||||
$("#myTaskName").val("");
|
$("#myTaskName").val("");
|
||||||
$("#myTaskDate").val("");
|
$("#myTaskDate").val("");
|
||||||
|
showSnackbar("Added Tasks Successfully!", "green");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
} else {
|
||||||
|
showSnackbar("Error! Both Task & Date are Required!", "red");
|
||||||
}
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
'click #showMyCompletedTasks' (event) {
|
'click #showMyCompletedTasks' (event) {
|
||||||
let hide = $("#showMyCompletedTasks").prop('checked');
|
let hide = $("#showMyCompletedTasks").prop('checked');
|
||||||
if (hide == true) {
|
if (hide == true) {
|
||||||
Session.set("hideComplete", false);
|
Session.set("hideComplete", false);
|
||||||
|
Session.set("onlyToday", false);
|
||||||
|
$("#showAllTasks").prop('checked', true);
|
||||||
} else {
|
} else {
|
||||||
Session.set("hideComplete", true);
|
Session.set("hideComplete", true);
|
||||||
}
|
}
|
||||||
|
|
@ -56,5 +84,11 @@ Template.myTasksForm.events({
|
||||||
Session.set("onlyToday", true);
|
Session.set("onlyToday", true);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
},
|
||||||
|
'change #myTaskDate' (event) {
|
||||||
|
let taskDate = $("#myTaskDate").val();
|
||||||
|
let taskDateArr = Session.get("taskDateArr");
|
||||||
|
taskDateArr.push(taskDate);
|
||||||
|
Session.set("taskDateArr", taskDateArr);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
<ul class="collapsible">
|
<ul class="collapsible">
|
||||||
{{#each tasks}}
|
{{#each tasks}}
|
||||||
<li>
|
<li>
|
||||||
<div class="collapsible-header {{#if $eq passedDate false}}yellow{{/if}}{{#if $eq isComplete true}}green lighten-2{{/if}}"><h5>{{taskName}} </h5></div>
|
<div class="collapsible-header {{#if $eq passedDate false}}yellow black-text{{/if}}{{#if $eq isComplete true}}green{{/if}}"><h5>{{taskName}} </h5></div>
|
||||||
<div class="collapsible-body">
|
<div class="collapsible-body">
|
||||||
<span>
|
<span>
|
||||||
<ul class="collection">
|
<ul class="collection">
|
||||||
|
|
|
||||||
|
|
@ -94,7 +94,6 @@ Meteor.methods({
|
||||||
let srvDate = moment(items[j].serveDateActual);
|
let srvDate = moment(items[j].serveDateActual);
|
||||||
let today = moment();
|
let today = moment();
|
||||||
let expired = moment(today).isAfter(srvDate);
|
let expired = moment(today).isAfter(srvDate);
|
||||||
// console.log("Expired: " + expired);
|
|
||||||
if (expired != true) {
|
if (expired != true) {
|
||||||
removeMenu = false;
|
removeMenu = false;
|
||||||
}
|
}
|
||||||
|
|
@ -108,16 +107,12 @@ Meteor.methods({
|
||||||
|
|
||||||
// next let's add the ids of any menus that are marked complete
|
// next let's add the ids of any menus that are marked complete
|
||||||
let markedComplete = Menus.find({ menuComplete: true }).fetch();
|
let markedComplete = Menus.find({ menuComplete: true }).fetch();
|
||||||
// console.log("---- ---- ----");
|
|
||||||
// console.dir(markedComplete);
|
|
||||||
for (k = 0; k < markedComplete.length; k++) {
|
for (k = 0; k < markedComplete.length; k++) {
|
||||||
let menuId = markedComplete[k]._id;
|
let menuId = markedComplete[k]._id;
|
||||||
removeMenuIds.push(menuId);
|
removeMenuIds.push(menuId);
|
||||||
}
|
}
|
||||||
|
|
||||||
// console.log(" ----- Need to remove Menus: ");
|
// finally we'll cycle through the ids and remove the items we collected up.
|
||||||
console.dir(removeMenuIds);
|
|
||||||
|
|
||||||
for (l = 0; l < removeMenuIds.length; l++) {
|
for (l = 0; l < removeMenuIds.length; l++) {
|
||||||
Menus.remove({ _id: removeMenuIds[l] });
|
Menus.remove({ _id: removeMenuIds[l] });
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { Meteor } from 'meteor/meteor';
|
import { Meteor } from 'meteor/meteor';
|
||||||
import { Mongo } from 'meteor/mongo';
|
import { Mongo } from 'meteor/mongo';
|
||||||
import { check } from 'meteor/check';
|
import { check } from 'meteor/check';
|
||||||
|
import moment from 'moment';
|
||||||
|
|
||||||
export const TaskItems = new Mongo.Collection('taskitems');
|
export const TaskItems = new Mongo.Collection('taskitems');
|
||||||
|
|
||||||
|
|
@ -139,4 +140,40 @@ Meteor.methods({
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
'clean.Tasks' (timeFrame) {
|
||||||
|
check(timeFrame, String);
|
||||||
|
|
||||||
|
if (!this.userId) {
|
||||||
|
throw new Meteor.Error('You are not allowed to clean up old Tasks. Make sure you are logged in with valid user credentials.');
|
||||||
|
}
|
||||||
|
|
||||||
|
let d = new Date();
|
||||||
|
let upToDate = "";
|
||||||
|
switch(timeFrame) {
|
||||||
|
case "1-week":
|
||||||
|
console.log("1 Week");
|
||||||
|
upToDate = 7 * 24 * 60 * 60 * 1000;
|
||||||
|
break;
|
||||||
|
case "2-weeks":
|
||||||
|
console.log("2 Week");
|
||||||
|
upToDate = 14 * 24 * 60 * 60 * 1000;
|
||||||
|
break;
|
||||||
|
case '1-month':
|
||||||
|
console.log("1 month");
|
||||||
|
upToDate = 30 * 24 * 60 * 60 * 1000;
|
||||||
|
break;
|
||||||
|
case '3-months':
|
||||||
|
console.log("3 months");
|
||||||
|
upToDate = 90 * 24 * 60 * 60 * 1000;
|
||||||
|
break;
|
||||||
|
case 'all':
|
||||||
|
console.log("all");
|
||||||
|
upToDate = 1 * 24 * 60 * 60 * 1000;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return TaskItems.remove({ actualDate: { $lt: new Date((new Date()) - upToDate )}});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import { Meteor } from 'meteor/meteor';
|
import { Meteor } from 'meteor/meteor';
|
||||||
import { Mongo } from 'meteor/mongo';
|
import { Mongo } from 'meteor/mongo';
|
||||||
import { check } from 'meteor/check';
|
import { check } from 'meteor/check';
|
||||||
|
import { TaskItems } from '../imports/api/tasks';
|
||||||
|
|
||||||
Meteor.methods({
|
Meteor.methods({
|
||||||
'addToRole' (role) {
|
'addToRole' (role) {
|
||||||
|
|
@ -57,5 +58,5 @@ Meteor.methods({
|
||||||
check(role, String);
|
check(role, String);
|
||||||
|
|
||||||
return Roles.setUserRoles(userId, role);
|
return Roles.setUserRoles(userId, role);
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
Loading…
Add table
Add a link
Reference in a new issue