From ee9cc9b0026a41bd1f77b704848057204005f7ac Mon Sep 17 00:00:00 2001 From: febbweiss Date: Mon, 19 Oct 2015 08:07:20 +0000 Subject: [PATCH] Feature: managing projects --- .meteor/.finished-upgraders | 12 ++++ .meteor/.gitignore | 1 + .meteor/.id | 7 +++ .meteor/packages | 21 +++++++ .meteor/platforms | 2 + .meteor/release | 1 + .meteor/versions | 67 ++++++++++++++++++++ README.md | 1 + project-deployer.css | 1 + project-deployer.html | 119 ++++++++++++++++++++++++++++++++++++ project-deployer.js | 109 +++++++++++++++++++++++++++++++++ 11 files changed, 341 insertions(+) create mode 100644 .meteor/.finished-upgraders create mode 100644 .meteor/.gitignore create mode 100644 .meteor/.id create mode 100644 .meteor/packages create mode 100644 .meteor/platforms create mode 100644 .meteor/release create mode 100644 .meteor/versions create mode 100644 README.md create mode 100644 project-deployer.css create mode 100644 project-deployer.html create mode 100644 project-deployer.js diff --git a/.meteor/.finished-upgraders b/.meteor/.finished-upgraders new file mode 100644 index 0000000..61ee313 --- /dev/null +++ b/.meteor/.finished-upgraders @@ -0,0 +1,12 @@ +# This file contains information which helps Meteor properly upgrade your +# app when you run 'meteor update'. You should check it into version control +# with your project. + +notices-for-0.9.0 +notices-for-0.9.1 +0.9.4-platform-file +notices-for-facebook-graph-api-2 +1.2.0-standard-minifiers-package +1.2.0-meteor-platform-split +1.2.0-cordova-changes +1.2.0-breaking-changes diff --git a/.meteor/.gitignore b/.meteor/.gitignore new file mode 100644 index 0000000..4083037 --- /dev/null +++ b/.meteor/.gitignore @@ -0,0 +1 @@ +local diff --git a/.meteor/.id b/.meteor/.id new file mode 100644 index 0000000..8c5b0e1 --- /dev/null +++ b/.meteor/.id @@ -0,0 +1,7 @@ +# This file contains a token that is unique to your project. +# Check it into your repository along with the rest of this directory. +# It can be used for purposes such as: +# - ensuring you don't accidentally deploy one app on top of another +# - providing package authors with aggregated statistics + +1oqmnsh166tutx1vyzaml diff --git a/.meteor/packages b/.meteor/packages new file mode 100644 index 0000000..8783d0b --- /dev/null +++ b/.meteor/packages @@ -0,0 +1,21 @@ +# Meteor packages used by this project, one per line. +# Check this file (and the other files in this directory) into your repository. +# +# 'meteor add' and 'meteor remove' will edit this file for you, +# but you can also edit it by hand. + +meteor-base # Packages every Meteor app needs to have +mobile-experience # Packages for a great mobile UX +mongo # The database Meteor supports right now +blaze-html-templates # Compile .html files into Meteor Blaze views +session # Client-side reactive dictionary for your app +jquery # Helpful client-side library +tracker # Meteor's client-side reactive programming library + +standard-minifiers # JS/CSS minifiers run for production mode +es5-shim # ECMAScript 5 compatibility for older browsers. +ecmascript # Enable ECMAScript2015+ syntax in app code + +insecure # Allow all DB writes from clients (for prototyping) +twbs:bootstrap-noglyph +fortawesome:fontawesome diff --git a/.meteor/platforms b/.meteor/platforms new file mode 100644 index 0000000..efeba1b --- /dev/null +++ b/.meteor/platforms @@ -0,0 +1,2 @@ +server +browser diff --git a/.meteor/release b/.meteor/release new file mode 100644 index 0000000..0f46733 --- /dev/null +++ b/.meteor/release @@ -0,0 +1 @@ +METEOR@1.2.0.4-logging.0 diff --git a/.meteor/versions b/.meteor/versions new file mode 100644 index 0000000..9dfac0d --- /dev/null +++ b/.meteor/versions @@ -0,0 +1,67 @@ +autoupdate@1.2.4-logging +babel-compiler@5.8.24_1 +babel-runtime@0.1.4 +base64@1.0.4 +binary-heap@1.0.4 +blaze@2.1.3 +blaze-html-templates@1.0.1 +blaze-tools@1.0.4 +boilerplate-generator@1.0.4 +caching-compiler@1.0.0 +caching-html-compiler@1.0.2 +callback-hook@1.0.4 +check@1.0.6 +ddp@1.2.2 +ddp-client@1.2.1 +ddp-common@1.2.1 +ddp-server@1.2.1 +deps@1.0.9 +diff-sequence@1.0.1 +ecmascript@0.1.5 +ecmascript-collections@0.1.6 +ejson@1.0.7 +es5-shim@4.1.13 +fastclick@1.0.7 +fortawesome:fontawesome@4.4.0 +geojson-utils@1.0.4 +hot-code-push@1.0.0 +html-tools@1.0.5 +htmljs@1.0.5 +http@1.1.1 +id-map@1.0.4 +insecure@1.0.4 +jquery@1.11.4 +launch-screen@1.0.4 +livedata@1.0.15 +logging@1.0.8 +meteor@1.1.9 +meteor-base@1.0.1 +minifiers@1.1.7 +minimongo@1.0.10 +mobile-experience@1.0.1 +mobile-status-bar@1.0.6 +mongo@1.1.2 +mongo-id@1.0.1 +npm-mongo@1.4.39_1 +observe-sequence@1.0.7 +ordered-dict@1.0.4 +promise@0.5.0 +random@1.0.4 +reactive-dict@1.1.2 +reactive-var@1.0.6 +reload@1.1.4 +retry@1.0.4 +routepolicy@1.0.6 +session@1.1.1 +spacebars@1.0.7 +spacebars-compiler@1.0.7 +standard-minifiers@1.0.1 +templating@1.1.4 +templating-tools@1.0.0 +tracker@1.0.9 +twbs:bootstrap-noglyph@3.3.5 +ui@1.0.8 +underscore@1.0.4 +url@1.0.5 +webapp@1.2.2 +webapp-hashing@1.0.5 diff --git a/README.md b/README.md new file mode 100644 index 0000000..01ee763 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +Work in progress \ No newline at end of file diff --git a/project-deployer.css b/project-deployer.css new file mode 100644 index 0000000..b6b4052 --- /dev/null +++ b/project-deployer.css @@ -0,0 +1 @@ +/* CSS declarations go here */ diff --git a/project-deployer.html b/project-deployer.html new file mode 100644 index 0000000..8a56d6f --- /dev/null +++ b/project-deployer.html @@ -0,0 +1,119 @@ + + project-deployer + + + + +
+
+ +
+ +
+
+

Register or edit a project

+ {{> projectForm}} +
+
+

Your projects

+
    + {{#each projects}} + {{> project}} + {{/each}} +
+
+
+
+ + + + + + + diff --git a/project-deployer.js b/project-deployer.js new file mode 100644 index 0000000..26d20c7 --- /dev/null +++ b/project-deployer.js @@ -0,0 +1,109 @@ +Projects = new Mongo.Collection('projects'); + +if (Meteor.isClient) { + Meteor.subscribe('projects'); + + Template.body.helpers({ + projects: function () { + return Projects.find({}, {sort: {label: 1}}); + } + }); + + Template.projectForm.events({ + 'submit .new-project': function (event) { + event.preventDefault(); + var form = event.target; + if( form.id.value ) { + Meteor.call('editProject',form.id.value, form.label.value, form.git_url.value, form.public_url.value, form.commands.value); + form.id.value = ''; + } else { + Meteor.call('addProject', form.label.value, form.git_url.value, form.public_url.value, form.commands.value); + } + + Session.set('projectToEdit', undefined); + form.label.value = ''; + form.git_url.value = ''; + form.public_url.value = ''; + form.commands.value = ''; + }, + + 'click .cancel': function(event) { + event.preventDefault(); + + Session.set('projectToEdit', undefined); + }, + + 'click .trash': function(event) { + event.preventDefault(); + + Meteor.call('deleteProject', Session.get('projectToEdit')._id); + Session.set('projectToEdit', undefined); + } + }); + + Template.projectForm.helpers({ + project: function() { + return Session.get('projectToEdit'); + }, + + editionMode: function() { + return Session.get('projectToEdit') ? '' : 'hidden'; + }, + + deployLink: function() { + return Meteor.absoluteUrl('/deploy?token=XXXX&project_id=' + Session.get('projectToEdit')._id); + } + }); + + Template.project.events({ + 'click .edit': function(event) { + event.preventDefault(); + return Meteor.call('getProject', this._id, function(error, result) { + Session.set('projectToEdit', result); + }); + }, + }); + +} + +if (Meteor.isServer) { + Meteor.publish('projects', function() { + return Projects.find({}); + }); +} + +Meteor.methods({ + listProjects: function() { + return Projects.find({}, {sort: {label: 1}}); + }, + + getProject: function(id) { + return Projects.findOne({_id: id}); + }, + + addProject: function(label, git_url, public_url ,commands) { + Projects.insert({ + label: label, + git_url: git_url, + public_url: public_url, + commands: commands + }) + }, + + editProject: function(id, label, git_url, public_url ,commands) { + Projects.update( + id, + { $set: { + label: label, + git_url: git_url, + public_url: public_url, + commands: commands + } + } + ); + }, + + deleteProject: function(id) { + Projects.remove(id); + } +});