From 4207064feb41688bc4c0b5a555466281ba4c4a48 Mon Sep 17 00:00:00 2001 From: Binnette Date: Wed, 3 Oct 2018 20:11:02 +0000 Subject: [PATCH 1/6] Add a simple favicon 'Cz' --- backend/src/main/resources/public/fav.ico | Bin 0 -> 109183 bytes backend/src/main/resources/public/index.html | 3 ++- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 backend/src/main/resources/public/fav.ico diff --git a/backend/src/main/resources/public/fav.ico b/backend/src/main/resources/public/fav.ico new file mode 100644 index 0000000000000000000000000000000000000000..a92e9801d07a846d1ec7922ff70112cbbd26dffe GIT binary patch literal 109183 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 Cotize + @@ -43,4 +44,4 @@

Cotize
- \ No newline at end of file + From 3684cae0d43ebcd709182f824d7889ce3eb62b29 Mon Sep 17 00:00:00 2001 From: Binnette Date: Wed, 3 Oct 2018 20:17:24 +0000 Subject: [PATCH 2/6] add boolean param 'use_ssl' to be able to disable ssl in smtp --- .../java/net/bons/comptes/integration/VertxModule.java | 4 ++-- infra/run-config.json | 9 +++++---- 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/backend/src/main/java/net/bons/comptes/integration/VertxModule.java b/backend/src/main/java/net/bons/comptes/integration/VertxModule.java index 444cbf5..aac9052 100644 --- a/backend/src/main/java/net/bons/comptes/integration/VertxModule.java +++ b/backend/src/main/java/net/bons/comptes/integration/VertxModule.java @@ -128,8 +128,8 @@ MongoClient provideMongoClient(Vertx vertx) { MailClient provideMailClient() { JsonObject mailConfig = this.config.getJsonObject("mail"); MailConfig config = new MailConfig().setHostname(mailConfig.getString("host")) - .setSsl(true) - .setPort(mailConfig.getInteger("port")) + .setSsl(mailConfig.getBoolean("use_ssl", true)) + .setPort(mailConfig.getInteger("port", 587)) .setUsername(mailConfig.getString("user")) .setPassword(mailConfig.getString("password")); diff --git a/infra/run-config.json b/infra/run-config.json index 5d12668..258d11a 100644 --- a/infra/run-config.json +++ b/infra/run-config.json @@ -1,11 +1,12 @@ { - "root_secret" : "azerty", + "root_secret" : "azerty", "base_url": "http://localhost:5000", "mail" : { - "user" : "@gmail.com", + "user" : "", "password" : "", "port" : 465, - "host" : "smtp.gmail.com" + "host" : "", + "use_ssl" : true }, "mongo" : { "host" : "localhost", @@ -13,4 +14,4 @@ "collection" : "CotizeEvents", "dbname" : "bonscomptes" } -} \ No newline at end of file +} From 65260927bbd891d1315faba8fa5360aa0db798fa Mon Sep 17 00:00:00 2001 From: Binnette Date: Wed, 3 Oct 2018 22:02:51 +0000 Subject: [PATCH 3/6] UI adjustment --- backend/src/main/resources/public/index.html | 4 +- .../public/partials/contribution.html | 22 +++---- .../main/resources/public/partials/main.html | 58 ++++++++----------- .../resources/public/partials/project.html | 28 ++++----- 4 files changed, 49 insertions(+), 63 deletions(-) diff --git a/backend/src/main/resources/public/index.html b/backend/src/main/resources/public/index.html index b746046..3338187 100644 --- a/backend/src/main/resources/public/index.html +++ b/backend/src/main/resources/public/index.html @@ -1,5 +1,5 @@ - + - - +
+
+ +
-
-
- -
- -
+
+
+ +
-
- + +
+ +
+ + +
- \ No newline at end of file + diff --git a/backend/src/main/resources/public/partials/project.html b/backend/src/main/resources/public/partials/project.html index 40ed071..0c6f0f4 100644 --- a/backend/src/main/resources/public/partials/project.html +++ b/backend/src/main/resources/public/partials/project.html @@ -30,36 +30,28 @@

Contributions

Participez

-
-
+
+
-
- -
+
-
+
- +
-
+
@ - +
-

- Permet d'éditer votre contribution -

-
-
-
-
- + Permet d'éditer votre contribution.
-
+
+
From 6078731f3c85141ac8ef7ee4027f928afd75b246 Mon Sep 17 00:00:00 2001 From: Binnette Date: Wed, 3 Oct 2018 22:55:55 +0000 Subject: [PATCH 4/6] Add ngSanitize module. use ng-bind-html for project.content.description --- .../resources/cotize-js/event_store-proxy.js | 75 +++++++++++++++++++ .../main/resources/cotize-js/event_store.js | 59 +++++++++++++++ backend/src/main/resources/public/index.html | 5 +- .../main/resources/public/js/cotizeModule.js | 3 +- .../public/partials/contribution.html | 2 +- .../resources/public/partials/project.html | 2 +- 6 files changed, 141 insertions(+), 5 deletions(-) create mode 100644 backend/src/main/resources/cotize-js/event_store-proxy.js create mode 100644 backend/src/main/resources/cotize-js/event_store.js diff --git a/backend/src/main/resources/cotize-js/event_store-proxy.js b/backend/src/main/resources/cotize-js/event_store-proxy.js new file mode 100644 index 0000000..02387bc --- /dev/null +++ b/backend/src/main/resources/cotize-js/event_store-proxy.js @@ -0,0 +1,75 @@ +/* + * Copyright 2014 Red Hat, Inc. + * + * Red Hat licenses this file to you under the Apache License, version 2.0 + * (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +/** @module cotize-js/event_store */ +!function (factory) { + if (typeof require === 'function' && typeof module !== 'undefined') { + factory(); + } else if (typeof define === 'function' && define.amd) { + // AMD loader + define('cotize-js/event_store-proxy', [], factory); + } else { + // plain old include + EventStore = factory(); + } +}(function () { + + /** + @class + */ + var EventStore = function(eb, address) { + + var j_eb = eb; + var j_address = address; + var closed = false; + var that = this; + var convCharCollection = function(coll) { + var ret = []; + for (var i = 0;i < coll.length;i++) { + ret.push(String.fromCharCode(coll[i])); + } + return ret; + }; + + /** + + @public + @param projectId {string} + @param resultHandler {function} + */ + this.loadEvents = function(projectId, resultHandler) { + var __args = arguments; + if (__args.length === 2 && typeof __args[0] === 'string' && typeof __args[1] === 'function') { + if (closed) { + throw new Error('Proxy is closed'); + } + j_eb.send(j_address, {"projectId":__args[0]}, {"action":"loadEvents"}, function(err, result) { __args[1](err, result &&result.body); }); + return; + } else throw new TypeError('function invoked with invalid arguments'); + }; + + }; + + if (typeof exports !== 'undefined') { + if (typeof module !== 'undefined' && module.exports) { + exports = module.exports = EventStore; + } else { + exports.EventStore = EventStore; + } + } else { + return EventStore; + } +}); \ No newline at end of file diff --git a/backend/src/main/resources/cotize-js/event_store.js b/backend/src/main/resources/cotize-js/event_store.js new file mode 100644 index 0000000..f6e7aa6 --- /dev/null +++ b/backend/src/main/resources/cotize-js/event_store.js @@ -0,0 +1,59 @@ +/* + * Copyright 2014 Red Hat, Inc. + * + * Red Hat licenses this file to you under the Apache License, version 2.0 + * (the "License"); you may not use this file except in compliance with the + * License. You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +/** @module cotize-js/event_store */ +var utils = require('vertx-js/util/utils'); + +var io = Packages.io; +var JsonObject = io.vertx.core.json.JsonObject; +var JEventStore = net.bons.comptes.service.EventStore; +var DecisionProjectionProject = net.bons.comptes.service.model.DecisionProjectionProject; + +/** + @class +*/ +var EventStore = function(j_val) { + + var j_eventStore = j_val; + var that = this; + + /** + + @public + @param projectId {string} + @param resultHandler {function} + */ + this.loadEvents = function(projectId, resultHandler) { + var __args = arguments; + if (__args.length === 2 && typeof __args[0] === 'string' && typeof __args[1] === 'function') { + j_eventStore["loadEvents(java.lang.String,io.vertx.core.Handler)"](projectId, function(ar) { + if (ar.succeeded()) { + resultHandler(utils.convReturnDataObject(ar.result()), null); + } else { + resultHandler(null, ar.cause()); + } + }); + } else throw new TypeError('function invoked with invalid arguments'); + }; + + // A reference to the underlying Java delegate + // NOTE! This is an internal API and must not be used in user code. + // If you rely on this property your code is likely to break if we change it / remove it without warning. + this._jdel = j_eventStore; +}; + +// We export the Constructor function +module.exports = EventStore; \ No newline at end of file diff --git a/backend/src/main/resources/public/index.html b/backend/src/main/resources/public/index.html index 3338187..7942264 100644 --- a/backend/src/main/resources/public/index.html +++ b/backend/src/main/resources/public/index.html @@ -19,8 +19,9 @@ - - + + + diff --git a/backend/src/main/resources/public/js/cotizeModule.js b/backend/src/main/resources/public/js/cotizeModule.js index 4c31309..eae749d 100644 --- a/backend/src/main/resources/public/js/cotizeModule.js +++ b/backend/src/main/resources/public/js/cotizeModule.js @@ -1,5 +1,6 @@ var cotizeModule = angular.module('cotizeApp', [ 'ngRoute', + 'ngSanitize', 'cotizeControllers' ]); @@ -29,4 +30,4 @@ cotizeModule.config(['$routeProvider', otherwise({ redirectTo: '/index' }); - }]); \ No newline at end of file + }]); diff --git a/backend/src/main/resources/public/partials/contribution.html b/backend/src/main/resources/public/partials/contribution.html index c7202da..d06780b 100644 --- a/backend/src/main/resources/public/partials/contribution.html +++ b/backend/src/main/resources/public/partials/contribution.html @@ -4,7 +4,7 @@ -->

{{ project.content.name }}

-

{{ project.content.description }}

+

Contributions

Le projet a déjà réunis {{ project.content.amount }} € !

diff --git a/backend/src/main/resources/public/partials/project.html b/backend/src/main/resources/public/partials/project.html index 0c6f0f4..554733b 100644 --- a/backend/src/main/resources/public/partials/project.html +++ b/backend/src/main/resources/public/partials/project.html @@ -4,7 +4,7 @@ -->

{{project.content.name}}

-

{{project.content.description}}

+

Contributions

Le projet a déjà réunis {{project.content.amount}} € !

From f960fef015b34146d5b9eb81c41322e5374ebd18 Mon Sep 17 00:00:00 2001 From: Binnette Date: Thu, 4 Oct 2018 21:47:25 +0000 Subject: [PATCH 5/6] Add a rich text editor for description --- backend/src/main/resources/public/index.html | 21 +++++++++---------- .../resources/public/js/angular-trix.min.js | 4 ++++ .../main/resources/public/js/cotizeModule.js | 1 + .../main/resources/public/partials/main.html | 4 ++-- 4 files changed, 17 insertions(+), 13 deletions(-) create mode 100644 backend/src/main/resources/public/js/angular-trix.min.js diff --git a/backend/src/main/resources/public/index.html b/backend/src/main/resources/public/index.html index 7942264..91df2ff 100644 --- a/backend/src/main/resources/public/index.html +++ b/backend/src/main/resources/public/index.html @@ -15,22 +15,21 @@ Cotize - - - + + + + + + + + + - - - + - - -
diff --git a/backend/src/main/resources/public/js/angular-trix.min.js b/backend/src/main/resources/public/js/angular-trix.min.js new file mode 100644 index 0000000..7f092be --- /dev/null +++ b/backend/src/main/resources/public/js/angular-trix.min.js @@ -0,0 +1,4 @@ +/*! angular-trix - v1.0.0 - 2015-12-09 +* https://github.com/sachinchoolur/angular-trix +* Copyright (c) 2015 Sachin; Licensed MIT */ +!function(){"use strict";angular.module("angularTrix",[]).directive("angularTrix",function(){return{restrict:"A",require:"ngModel",scope:{trixInitialize:"&",trixChange:"&",trixSelectionChange:"&",trixFocus:"&",trixBlur:"&",trixFileAccept:"&",trixAttachmentAdd:"&",trixAttachmentRemove:"&"},link:function(a,b,c,d){b.on("trix-initialize",function(){d.$modelValue&&b[0].editor.loadHTML(d.$modelValue)}),d.$render=function(){b[0].editor&&b[0].editor.loadHTML(d.$modelValue),b.on("trix-change",function(){d.$setViewValue(b.html())})};var e=function(d,e){b[0].addEventListener(d,function(f){"trix-file-accept"===d&&"true"===c.preventTrixFileAccept&&f.preventDefault(),a[e]({e:f,editor:b[0].editor})})};e("trix-initialize","trixInitialize"),e("trix-change","trixChange"),e("trix-selection-change","trixSelectionChange"),e("trix-focus","trixFocus"),e("trix-blur","trixBlur"),e("trix-file-accept","trixFileAccept"),e("trix-attachment-add","trixAttachmentAdd"),e("trix-attachment-remove","trixAttachmentRemove")}}})}(); \ No newline at end of file diff --git a/backend/src/main/resources/public/js/cotizeModule.js b/backend/src/main/resources/public/js/cotizeModule.js index eae749d..5d63bc9 100644 --- a/backend/src/main/resources/public/js/cotizeModule.js +++ b/backend/src/main/resources/public/js/cotizeModule.js @@ -1,6 +1,7 @@ var cotizeModule = angular.module('cotizeApp', [ 'ngRoute', 'ngSanitize', + 'angularTrix', 'cotizeControllers' ]); diff --git a/backend/src/main/resources/public/partials/main.html b/backend/src/main/resources/public/partials/main.html index 36905b9..865fc3d 100644 --- a/backend/src/main/resources/public/partials/main.html +++ b/backend/src/main/resources/public/partials/main.html @@ -49,8 +49,8 @@

Créer un projet

- +
From 0c32300f453631df07ddc6d8323f793d96580a31 Mon Sep 17 00:00:00 2001 From: Binnette Date: Sun, 14 Oct 2018 18:37:07 +0200 Subject: [PATCH 6/6] Update README.md Make README.md look pretty --- README.md | 52 ++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index db533a2..033d6b4 100644 --- a/README.md +++ b/README.md @@ -1,34 +1,41 @@ -# How start the project +## Cotize -## Prerequises +Also known as "Bons comptes" is a java web app that helps friends to collect pledges in order to buy gift for birthday or other events. +- Cotize do not collect any money, just pledges. So make sure your friends are trustworthy :) +- Cotize is released under a derivate licence of the [WTFPL](http://www.wtfpl.net). So you can do anything you want to with it -- Java 8 +### Installation +#### Prerequises +- JDK8 +- Maven - MongoDB -## Actions +#### Get, Build, Run +1. Get: `git clone https://github.com/barmic/cotize.git` +2. Go to main folder: `cd cotize` +3. Configure by editing file: `./infra/run-config.json` (See below for config examples) +4. Buid: `mvn clean package` +5. Run: `java -jar target/BonsComptes-jar-with-dependencies.jar -conf run-config.json` +6. Test by accessing: http://localhost:5000/ -- Require : JDK8, Apache Maven -- To build run : mvn clean package -- Run application : java -jar target/BonsComptes-jar-with-dependencies.jar -conf run-config.json -- Access http://localhost:5000/ - -### Example of run-config.json +#### Example of run-config.json ```json { - "root_secret" : "abcdefghijkl", + "root_secret" : "abcdefghijkl", "base_url": "http://localhost:5000", "mail" : { "user" : "user@example.com", "password" : "", "port" : 465, - "host" : "smtp.example.com" + "host" : "smtp.example.com", + "use_ssl" : true }, "mongo" : { - "host" : "localhost", - "port" : 27017, - "collection" : "CotizeEvents", - "dbname" : "bonscomptes" + "host" : "localhost", + "port" : 27017, + "collection" : "CotizeEvents", + "dbname" : "bonscomptes" } } ``` @@ -37,3 +44,16 @@ - base_url : url used for link send by mail - mail : informations for send email - mongo : informations to access to mongodb + +#### Mail settings in run-config.js + +| | Gmail | Lilo | +|----------|----------------|---------------| +| user | user@gmail.com | user@lilo.org | +| password | password | password | +| port | 465 | 587 | +| host | smtp.gmail.com | mail.lilo.org | +| use_ssl | true | false | + +### Install Cotize as a Linux service +TODO