From 3c18306e07229415fe7eef00169959e211a5fbc9 Mon Sep 17 00:00:00 2001 From: Snorre lothar von Gohren Edwin Date: Mon, 10 Oct 2016 00:16:19 +0200 Subject: [PATCH] clean history --- .firebaserc | 5 ++ 404.html | 81 +++++++++++++++++++++++++ database.rules.json | 6 ++ date-picker.css | 3 + date-picker.html | 18 ++++++ date-picker.js | 50 ++++++++++++++++ firebase.json | 19 ++++++ images/icon-gray.svg | 38 ++++++++++++ images/icon-white.svg | 38 ++++++++++++ images/logo-old.png | Bin 0 -> 26952 bytes images/logo.png | Bin 0 -> 37087 bytes images/nps.svg | 1 + index.html | 4 ++ manifest.json | 21 +++++++ server/.gitignore | 1 + server/Procfile | 1 + server/package.json | 17 ++++++ server/schedule-card-task.js | 111 +++++++++++++++++++++++++++++++++++ settings.html | 15 +++++ settings.js | 41 +++++++++++++ snooze.js | 39 ++++++++++++ 21 files changed, 509 insertions(+) create mode 100644 .firebaserc create mode 100644 404.html create mode 100644 database.rules.json create mode 100644 date-picker.css create mode 100644 date-picker.html create mode 100644 date-picker.js create mode 100644 firebase.json create mode 100644 images/icon-gray.svg create mode 100644 images/icon-white.svg create mode 100644 images/logo-old.png create mode 100644 images/logo.png create mode 100644 images/nps.svg create mode 100644 index.html create mode 100644 manifest.json create mode 100644 server/.gitignore create mode 100644 server/Procfile create mode 100644 server/package.json create mode 100644 server/schedule-card-task.js create mode 100644 settings.html create mode 100644 settings.js create mode 100644 snooze.js diff --git a/.firebaserc b/.firebaserc new file mode 100644 index 0000000..bff1c9c --- /dev/null +++ b/.firebaserc @@ -0,0 +1,5 @@ +{ + "projects": { + "prod": "trello-snooze-8c244" + } +} \ No newline at end of file diff --git a/404.html b/404.html new file mode 100644 index 0000000..01ec007 --- /dev/null +++ b/404.html @@ -0,0 +1,81 @@ + + + + + Page Not Found + + + +

Page Not Found

+

This specified file was not found on this website. Please check the URL for mistakes and try again.

+

Why am I seeing this?

+

This page was generated by the Firebase Command-Line Interface. To modify it, edit the 404.html file in your project's configured public directory.

+ + + diff --git a/database.rules.json b/database.rules.json new file mode 100644 index 0000000..d2b8268 --- /dev/null +++ b/database.rules.json @@ -0,0 +1,6 @@ +{ + "rules": { + ".read": true, + ".write": true + } +} diff --git a/date-picker.css b/date-picker.css new file mode 100644 index 0000000..a68c79b --- /dev/null +++ b/date-picker.css @@ -0,0 +1,3 @@ +#snooze { + margin-top:15px; +} diff --git a/date-picker.html b/date-picker.html new file mode 100644 index 0000000..e4b40cb --- /dev/null +++ b/date-picker.html @@ -0,0 +1,18 @@ + + + + + + + + + + + + +
+

You have to authenticate yourself through the powerup settings

+
+ + + diff --git a/date-picker.js b/date-picker.js new file mode 100644 index 0000000..1e57313 --- /dev/null +++ b/date-picker.js @@ -0,0 +1,50 @@ +var Promise = TrelloPowerUp.Promise; +var t = TrelloPowerUp.iframe(); + +var now = moment.tz(moment.now().valueOf(),moment.tz.guess()) +var fixedFuture = now.add(1,'day').hour(8).minute(0).format() +var rightShit = moment(fixedFuture).format('YYYY-MM-DDTHH:mm') + +t.get('board', 'private', 'auth', null).then(function(auth) { + console.log(auth); + if(auth) { + document.getElementById('content').innerHTML ='

Pick a date

'; + document.getElementById('date').value = rightShit; + document.getElementById('snooze').addEventListener('click', function(){ + var time = document.getElementById('date').value + t.get('board', 'private', 'id', null).then(function(secret) { + var date = moment(time); + t.card('id').then(function(obj) { + $.ajax({ + method: "GET", + url: "https://trello-snooze-webhook.herokuapp.com/close?userid="+secret+"&id="+obj.id+"&unix="+date.valueOf(), + timeout:5500 + }) + .done(function( msg ) { + if(msg.error) { + if(msg.errorobj.status === 401) { + Trello.deauthorize(); + t.popup({ + title: "Authorize", + url: './settings.html' + }); + } + } else { + t.closePopup(); + } + }) + }) + }) + }) + } +}) + +document.getElementById('auth').addEventListener('click', function(){ + t.get('board', 'private', 'auth', null).then(function(auth) { + console.log("BOARD AUTH") + console.log(auth); + t.get('board', 'private', 'id', null).then(function(id) { + console.log(id); + }) + }) +}) diff --git a/firebase.json b/firebase.json new file mode 100644 index 0000000..dd6825b --- /dev/null +++ b/firebase.json @@ -0,0 +1,19 @@ +{ + "database": { + "rules": "database.rules.json" + }, + "hosting": { + "public": "./", + "headers": [ { + "source" : "**", + "headers" : [ { + "key" : "Access-Control-Allow-Origin", + "value" : "*" + } ] + } ], + "ignore" : [ + "server/*", + ".git/" + ] + } +} diff --git a/images/icon-gray.svg b/images/icon-gray.svg new file mode 100644 index 0000000..77774c9 --- /dev/null +++ b/images/icon-gray.svg @@ -0,0 +1,38 @@ + + + Layer 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/icon-white.svg b/images/icon-white.svg new file mode 100644 index 0000000..fa7329f --- /dev/null +++ b/images/icon-white.svg @@ -0,0 +1,38 @@ + + + Layer 1 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/images/logo-old.png b/images/logo-old.png new file mode 100644 index 0000000000000000000000000000000000000000..788e4d792ad4fdba53a8ab5afdb7d1789ecf1a11 GIT binary patch literal 26952 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 Yz{e|5zuRO)0r~{aJSW>+mPg$G01eVy-~a#s literal 0 HcmV?d00001 diff --git a/images/logo.png b/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8b3d9eceeaa73cce342fc33d9441842cf82307fc GIT binary patch literal 37087 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 z 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 literal 0 HcmV?d00001 diff --git a/images/nps.svg b/images/nps.svg new file mode 100644 index 0000000..97a470e --- /dev/null +++ b/images/nps.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..1616d02 --- /dev/null +++ b/index.html @@ -0,0 +1,4 @@ + + + + diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..690fc4f --- /dev/null +++ b/manifest.json @@ -0,0 +1,21 @@ +{ + "name": "Snooze Cards", + "details": "This power-up will allow you to hide Trello cards for a set amount of time then return to your list.", + "icon": { + "url": "./images/logo.png" + }, + "author": "Snorre Lothar von Gohren Edwin", + "capabilities": [ + "board-buttons", + "card-buttons", + "callback", + "card-badges", + "card-detail-badges", + "show-settings" + ], + "connectors": { + "iframe": { + "url": "./index.html" + } + } +} diff --git a/server/.gitignore b/server/.gitignore new file mode 100644 index 0000000..3c3629e --- /dev/null +++ b/server/.gitignore @@ -0,0 +1 @@ +node_modules diff --git a/server/Procfile b/server/Procfile new file mode 100644 index 0000000..09f379e --- /dev/null +++ b/server/Procfile @@ -0,0 +1 @@ +web: node schedule-card-task.js diff --git a/server/package.json b/server/package.json new file mode 100644 index 0000000..b33771b --- /dev/null +++ b/server/package.json @@ -0,0 +1,17 @@ +{ + "name": "server", + "version": "1.0.0", + "description": "backendserver for mye trellotask", + "main": "schedule-card-task.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "Snorrre Lothar von Gohren Edwin (https://github.com/Snorlock)", + "license": "ISC", + "dependencies": { + "body-parser": "^1.15.2", + "express": "^4.14.0", + "firebase": "2.4.2", + "superagent": "^2.3.0" + } +} diff --git a/server/schedule-card-task.js b/server/schedule-card-task.js new file mode 100644 index 0000000..75ee9c3 --- /dev/null +++ b/server/schedule-card-task.js @@ -0,0 +1,111 @@ +var Express = require('express'); +// var Webtask = require('webtask-tools'); +var firebase = require('firebase'); +var bodyParser = require('body-parser'); +var request = require('superagent'); +var app = Express(); + +var myFirebaseRef = new Firebase(process.env.FIREBASEURL); +var timeoutlist = {}; +var appKey = process.env.APPKEY; + +var allowCrossDomain = function(req, res, next) { + res.header('Access-Control-Allow-Origin', '*'); + res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); + res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With'); + + // intercept OPTIONS method + if ('OPTIONS' == req.method) { + res.send(200); + } + else { + next(); + } +}; + +app.use(allowCrossDomain); + +app.set('port', (process.env.PORT || 3000)); +app.use(bodyParser.json()); + +// GET +app.get('/', function (req, res) { + myFirebaseRef.child(req.query.id).set({ + token: req.query.value ? req.query.value : "" + }); + res.json({ id: req.query }); +}); + +app.get('/status', function (req, res) { + res.json({ timeouts: timeoutlist }) +}); + +app.get('/close', function (req, res) { + myFirebaseRef.child(req.query.userid).once('value') + .then(function(snapshot) { + console.log(snapshot.val().token) + closeCard(true, req.query.id, snapshot.val().token) + .end(function(err,response){ + if(err) { + console.log(err) + res.json({error:true, errorobj:err}) + } else { + console.log("setting inteervaltask") + postCommentOnCard(req.query.id, snapshot.val().token, 'Card have been archived by SnoozeCards powerup'); + setIntervalTask(req.query.id, snapshot.val().token, req.query.unix) + res.json({error:false}) + } + }) + }) +}); + +var setIntervalTask = function(cardId, token, unix) { + var now = new Date(); + var ms = unix-now.valueOf() + var timoutId = setTimeout(openCardAfterTimeoutExpiration, ms, cardId, token); + timeoutlist[cardId] = timoutId; +} + +var closeCard = function(closed, cardId, token) { + + return request('PUT', 'https://api.trello.com/1/cards/'+cardId+'/closed?key='+appKey+'&token='+token) + .set('Content-Type', 'application/json') + .send({ "value" : closed }) + +} + +var openCardAfterTimeoutExpiration = function(cardId, token) { + request('PUT', 'https://api.trello.com/1/cards/'+cardId+'/closed?key='+appKey+'&token='+token) + .set('Content-Type', 'application/json') + .send({ "value" : false }) + .end(function(err, response) { + if(err) { + console.log("Error on reopening the card"); + console.log(err); + postCommentOnCard(cardId, token, 'Card could not be woken up, because error'); + } else { + console.log("Card reopened"); + postCommentOnCard(cardId, token, 'Card have succesfully been woken up'); + } + }) +} + +var postCommentOnCard = function(cardId, token, message) { + request('POST', 'https://api.trello.com/1/cards/'+cardId+'/actions/comments?key='+appKey+'&token='+token) + .set('Content-Type', 'application/json') + .send({ "text" : message }) + .end(function(err, response) { + if(err) { + console.log("Fallback method did not work!!!!!") + console.log(err) + } else { + console.log("commented on card to keep it updated!") + } + }) +} + +app.listen(app.get('port'), function () { + console.log('Example app listening on port '+app.get('port')); +}); + +// module.exports = Webtask.fromExpress(app); diff --git a/settings.html b/settings.html new file mode 100644 index 0000000..fbd5d29 --- /dev/null +++ b/settings.html @@ -0,0 +1,15 @@ + + + + + + + + +
+

Authorize your account to be able to have the Snooze service hide and show cards for you

+ +
+ + + diff --git a/settings.js b/settings.js new file mode 100644 index 0000000..89f13cb --- /dev/null +++ b/settings.js @@ -0,0 +1,41 @@ +var Promise = TrelloPowerUp.Promise; +var t = TrelloPowerUp.iframe(); + +t.render(function(){ + +}); +console.log(Trello.authorized()) + +var authenticationSuccess = function() { + var secret = TrelloPowerUp.PostMessageIO.randomId(); + console.log("Successful authentication. Token is:" + Trello.token()); + $.ajax({ + method: "GET", + url: "https://trello-snooze-webhook.herokuapp.com?id="+secret+"&value="+Trello.token() + }) + .done(function( msg ) { + t.set('board', 'private', 'auth', 'true') + .then(function() { + t.set('board', 'private', 'id', secret) + .then(function() { + t.closePopup(); + }) + }) + }) +}; +var authenticationFailure = function() { + console.log("Failed authentication"); +}; + +document.getElementById('authorize').addEventListener('click', function(){ + Trello.authorize({ + type: "popup", + name: "SnoozeCards", + scope: { + read: true, + write: true }, + expiration: "never", + success: authenticationSuccess, + error: authenticationFailure + }); +}) diff --git a/snooze.js b/snooze.js new file mode 100644 index 0000000..18e646a --- /dev/null +++ b/snooze.js @@ -0,0 +1,39 @@ +TrelloPowerUp.initialize({ + 'card-buttons': function(t, card) { + return [ + // Button with a nested popup callback + { + icon: './images/logo.png', + text: "Snooze Card", + callback: function(t, card) { + return t.popup({ + title:"Choose date", + url:"./date-picker.html" + }) + } + }]; + }, + 'format-url': function(t, options) { + if(options.url.length > 20) { + return { + icon: './images/trello-icon.png' + + }; + } else { + throw t.NotHandled("Not a handled URL"); + } + }, + 'card-from-url': function(t, options) { + return { + name: 'All New Cards have this name', + desc: 'All New cards have this description' + }; + }, + 'show-settings': function(t, options) { + t.popup({ + title: "Authorize Account", + url: 'settings.html', + height: 250 + }); + } +});