diff --git a/README.md b/README.md index 3a58c14..83b4b77 100644 --- a/README.md +++ b/README.md @@ -33,9 +33,10 @@ Bitcoin Crowdfunding Platform ##### Client Configuration You can configure: -* Google Analytics ID in the **/client/index.html** -* Addthis user ID in the **/client/index.html** -* Disquss App name in the **/client/app/app.js** +* Google Analytics ID in the **/client/index.html** file +* Addthis user ID in the **/client/index.html** file +* Disquss App name in the **/client/app/app.js** file +* $scope.fee Withdrawal fee in the **/client/app/account/settings/settings.controller.js** file ## Platform Workflow : User 1. A user create is account diff --git a/bower.json b/bower.json index 0c325c1..18ff6a9 100644 --- a/bower.json +++ b/bower.json @@ -21,7 +21,8 @@ "angular-loading-bar": "~0.6.0", "angular-disqus": "~1.1.0", "angular-slugify": "~1.0.0", - "angular-utils-pagination": "~0.4.0" + "angular-utils-pagination": "~0.4.0", + "angucomplete-alt": "~0.0.31" }, "devDependencies": { "angular-mocks": ">=1.2.*", diff --git a/client/app/account/dashboard/dashboard.jade b/client/app/account/dashboard/dashboard.jade index 221ebe6..8b280ce 100644 --- a/client/app/account/dashboard/dashboard.jade +++ b/client/app/account/dashboard/dashboard.jade @@ -53,14 +53,14 @@ div(ng-include='"components/navbar/navbar.html"') tr(ng-repeat="proj in projects") td i.fa.fa-book.text-muted -    + |    a(ng-href="/projects/{{proj.slug}}") {{proj.name}} td span.label.label-success(ng-show="proj.amountRaised >= proj.amountToRaise") Finished span.label.label-warning(ng-show="proj.amountRaised !== 0 && proj.amountRaised < proj.amountToRaise") Ongoing span.label.label-default(ng-show="proj.amountRaised === 0") Not started td - {{proj.amountRaised | toBTC}} / {{proj.amountToRaise | toBTC}} BTC + span {{proj.amountRaised | toBTC}} / {{proj.amountToRaise | toBTC}} BTC td.text-center a(ng-href='/projects/{{proj.slug}}/edit') span.glyphicon.glyphicon-pencil diff --git a/client/app/account/profile/profile.jade b/client/app/account/profile/profile.jade index a7dbb18..d8e3b39 100644 --- a/client/app/account/profile/profile.jade +++ b/client/app/account/profile/profile.jade @@ -30,17 +30,17 @@ div(ng-include='"components/navbar/navbar.html"') div(ng-show="user.bitcointalkLogin != ''") i.fa.fa-comment.text-muted.space-right span {{user.bitcointalkLogin}} @ -    + |    a(href="https://bitcointalk.org") BitcoinTalk div(ng-show="user.githubLogin != ''") i.fa.fa-github-alt.text-muted.space-right span {{user.githubLogin}} @ -    + |    a(href="https://github.com/{{user.githubLogin}}") GitHub div(ng-show="user.stackexchangeLogin != ''") i.fa.fa-stack-exchange.text-muted.space-right span {{user.stackexchangeLogin}} @ -    + |    a(href="http://stackexchange.com/") StackExchange .col-md-9 .col-md-6 diff --git a/client/app/account/settings/settings.jade b/client/app/account/settings/settings.jade index 641ab8b..5cf272d 100644 --- a/client/app/account/settings/settings.jade +++ b/client/app/account/settings/settings.jade @@ -30,25 +30,25 @@ div(ng-include='"components/navbar/navbar.html"') .form-group label span Your -   + |   a(href="https://bitcointalk.org/", target="_blank") Bitcointalk -   + |   span account name input.form-control(type='text', name='bitcointalkLogin', ng-model='user.bitcointalkLogin', mongoose-error='', placeholder='') .form-group label span Your -   + |   a(href="https://github.com", target="_blank") Github -   + |   span account name input.form-control(type='text', name='githubLogin', ng-model='user.githubLogin', mongoose-error='', placeholder='') .form-group label span Your -   + |   a(href="https://stackexchange.com", target="_blank") StackExchange -   + |   span login input.form-control(type='text', name='stackexchangeLogin', ng-model='user.stackexchangeLogin', mongoose-error='', placeholder='') hr @@ -57,7 +57,7 @@ div(ng-include='"components/navbar/navbar.html"') .form-group label input(type='checkbox', ng-model="user.privateContrib") -    + |    b Anonymous contributions br span If you enable this option, your contributions won't be displayed with your name along. diff --git a/client/app/admin/admin.jade b/client/app/admin/admin.jade index a4f90fe..218f964 100644 --- a/client/app/admin/admin.jade +++ b/client/app/admin/admin.jade @@ -5,25 +5,25 @@ div(ng-include='"components/navbar/navbar.html"') tab tab-heading span.glyphicon.glyphicon-user.text-muted -   + |   b Users Management ul.list-group.well li.list-group-item(ng-repeat='user in users | orderBy:"role"') span.pull-left a.text-muted(href="/profile/{{user.name}}") img.avatar(gravatar-src="'{{user.email}}'", width=40) -     + |     span strong a.text-muted(href="/profile/{{user.name}}") {{user.name}} -   + |   span.label.label-danger(ng-show="user.role == 'admin'") Admin span.label.label-info(ng-show="user.role == 'user'") User br small.text-warning {{user.balance | toBTC}} BTC small.text-muted -    - {{user.email}} + |    + | {{user.email}} div.pull-right a.trash(ng-href='/admin/{{user._id}}/editUser') span.glyphicon.glyphicon-edit   @@ -35,7 +35,7 @@ div(ng-include='"components/navbar/navbar.html"') tab tab-heading span.fa.fa-book.text-muted -   + |   b Projects Management ul.list-group.well tabset(justified='true', type="'pills'") @@ -45,21 +45,21 @@ div(ng-include='"components/navbar/navbar.html"') span.label.label-success(ng-show="project.amountRaised >= project.amountToRaise") Finished span.label.label-warning(ng-show="project.amountRaised !== 0 && project.amountRaised < project.amountToRaise") Ongoing span.label.label-default(ng-show="project.amountRaised === 0") Not started -    + |    span {{project.name}} ({{project.amountRaised | toBTC}} / {{project.amountToRaise | toBTC}}) br small.text-muted span Project created -   + |   b(am-time-ago="project.dateCreat") -   + |   span and finishing -   + |   b(am-time-ago="project.dateEndCampaign") .pull-right a(ng-href='/projects/{{project.slug}}/edit') span.glyphicon.glyphicon-pencil -      + |      a.trash(ng-click='deleteProject(project)') span.glyphicon.glyphicon-trash tab(heading='Not Started').label-default.tabText @@ -68,21 +68,21 @@ div(ng-include='"components/navbar/navbar.html"') span.label.label-success(ng-show="project.amountRaised >= project.amountToRaise") Finished span.label.label-warning(ng-show="project.amountRaised !== 0 && project.amountRaised < project.amountToRaise") Ongoing span.label.label-default(ng-show="project.amountRaised === 0") Not started -    + |    span {{project.name}} ({{project.amountRaised | toBTC}} / {{project.amountToRaise | toBTC}}) br small.text-muted span Project created -   + |   b(am-time-ago="project.dateCreat") -   + |   span and finishing -   + |   b(am-time-ago="project.dateEndCampaign") .pull-right a(ng-href='/projects/{{project.slug}}/edit') span.glyphicon.glyphicon-pencil -      + |      a.trash(ng-click='deleteProject(project)') span.glyphicon.glyphicon-trash tab(heading='Ongoing').label-warning.tabText @@ -91,21 +91,21 @@ div(ng-include='"components/navbar/navbar.html"') span.label.label-success(ng-show="project.amountRaised >= project.amountToRaise") Finished span.label.label-warning(ng-show="project.amountRaised !== 0 && project.amountRaised < project.amountToRaise") Ongoing span.label.label-default(ng-show="project.amountRaised === 0") Not started -    + |    span {{project.name}} ({{project.amountRaised | toBTC}} / {{project.amountToRaise | toBTC}}) br small.text-muted span Project created -   + |   b(am-time-ago="project.dateCreat") -   + |   span and finishing -   + |   b(am-time-ago="project.dateEndCampaign") .pull-right a(ng-href='/projects/{{project.slug}}/edit') span.glyphicon.glyphicon-pencil -      + |      a.trash(ng-click='deleteProject(project)') span.glyphicon.glyphicon-trash tab(heading='Expired').label-danger.tabText @@ -115,21 +115,21 @@ div(ng-include='"components/navbar/navbar.html"') span.label.label-success(ng-show="project.amountRaised >= project.amountToRaise") Finished span.label.label-warning(ng-show="project.amountRaised !== 0 && project.amountRaised < project.amountToRaise") Ongoing span.label.label-default(ng-show="project.amountRaised === 0") Not started -    + |    span {{project.name}} ({{project.amountRaised | toBTC}} / {{project.amountToRaise | toBTC}}) br small.text-muted span Project created -   + |   b(am-time-ago="project.dateCreat") -   + |   span and finishing -   + |   b(am-time-ago="project.dateEndCampaign") .pull-right a(ng-href='/projects/{{project.slug}}/edit') span.glyphicon.glyphicon-pencil -      + |      a.trash(ng-click='deleteProject(project)') span.glyphicon.glyphicon-trash tab(heading='Finished').label-success.tabText @@ -138,21 +138,21 @@ div(ng-include='"components/navbar/navbar.html"') span.label.label-success(ng-show="project.amountRaised >= project.amountToRaise") Finished span.label.label-warning(ng-show="project.amountRaised !== 0 && project.amountRaised < project.amountToRaise") Ongoing span.label.label-default(ng-show="project.amountRaised === 0") Not started -    + |    span {{project.name}} ({{project.amountRaised | toBTC}} / {{project.amountToRaise | toBTC}}) br small.text-muted span Project created -   + |   b(am-time-ago="project.dateCreat") -   + |   span and finishing -   + |   b(am-time-ago="project.dateEndCampaign") .pull-right a(ng-href='/projects/{{project.slug}}/edit') span.glyphicon.glyphicon-pencil -      + |      a.trash(ng-click='deleteProject(project)') span.glyphicon.glyphicon-trash tab(heading='Done').label-info.tabText @@ -161,21 +161,21 @@ div(ng-include='"components/navbar/navbar.html"') span.label.label-success(ng-show="project.amountRaised >= project.amountToRaise") Finished span.label.label-warning(ng-show="project.amountRaised !== 0 && project.amountRaised < project.amountToRaise") Ongoing span.label.label-default(ng-show="project.amountRaised === 0") Not started -    + |    span {{project.name}} ({{project.amountRaised | toBTC}} / {{project.amountToRaise | toBTC}}) br small.text-muted span Project created -   + |   b(am-time-ago="project.dateCreat") -   + |   span and finishing -   + |   b(am-time-ago="project.dateEndCampaign") .pull-right a(ng-href='/projects/{{project.slug}}/edit') span.glyphicon.glyphicon-pencil -      + |      a.trash(ng-click='deleteProject(project)') span.glyphicon.glyphicon-trash diff --git a/client/app/app.js b/client/app/app.js index 44d21fd..d9970c2 100644 --- a/client/app/app.js +++ b/client/app/app.js @@ -14,7 +14,8 @@ angular.module('bitCrowdFundsApp', [ 'angular-loading-bar', 'ngDisqus', 'slugifier', - 'angularUtils.directives.dirPagination' + 'angularUtils.directives.dirPagination', + 'angucomplete-alt' ]) .config(['cfpLoadingBarProvider', function(cfpLoadingBarProvider) { cfpLoadingBarProvider.includeSpinner = false; diff --git a/client/app/main/main.jade b/client/app/main/main.jade index 18592a4..8dac590 100644 --- a/client/app/main/main.jade +++ b/client/app/main/main.jade @@ -16,7 +16,7 @@ header#banner.hero-unit br br a.btn.btn-default.btn-lg(href='/addproject') Create a project -    + |    a.btn.btn-success.btn-lg(href='/projects') Explore projects br br @@ -29,12 +29,12 @@ header#banner.hero-unit .panel-heading h3.panel-title i.fa.fa-book.text-muted -    + |    a(ng-href="/projects/{{proj.slug}}") {{proj.name}} -   + |   small.text-muted span by -   + |   a(href="/profile/{{proj.Owner}}") {{proj.Owner}} span.pull-right div.progress @@ -43,17 +43,17 @@ header#banner.hero-unit div.row .col-lg-8 span {{proj.description | limitTo: 1000}}. -   + |   a(ng-href="/projects/{{proj.slug}}") See project page. br br span.text-muted span Project started -   + |   b(am-time-ago="proj.dateCreat") -   + |   span and finishing -   + |   b(am-time-ago="proj.dateEndCampaign") .col-lg-3.text-right div.project-state.well.text-center diff --git a/client/app/projects/list/projects.jade b/client/app/projects/list/projects.jade index 74a8cbc..3662141 100644 --- a/client/app/projects/list/projects.jade +++ b/client/app/projects/list/projects.jade @@ -10,12 +10,12 @@ div(ng-include='"components/navbar/navbar.html"') .panel-heading h3.panel-title i.fa.fa-book.text-muted -    + |    a(ng-href="/projects/{{proj.slug}}") {{proj.name}} -   + |   small.text-muted span by -   + |   a(href="/profile/{{proj.Owner}}") {{proj.Owner}} span.pull-right div.progress @@ -24,17 +24,17 @@ div(ng-include='"components/navbar/navbar.html"') div.row .col-lg-8 span {{proj.description | limitTo: 1000}}. -   + |   a(ng-href="/projects/{{proj.slug}}") See project page. br br span.text-muted span Project started -   + |   b(am-time-ago="proj.dateCreat") -   + |   span and finishing -   + |   b(am-time-ago="proj.dateEndCampaign") .col-lg-3.text-right div.project-state.well.text-center diff --git a/client/app/projects/project/project.jade b/client/app/projects/project/project.jade index bb2dbcf..94c2af1 100644 --- a/client/app/projects/project/project.jade +++ b/client/app/projects/project/project.jade @@ -6,34 +6,34 @@ div(ng-include='"components/navbar/navbar.html"') .col-md-12 h1.page-header i.fa.fa-book.text-muted -    + |    span {{currentProject.name}} -   + |   small by -   + |   a(href="/profile/{{currentProject.Owner}}") small {{currentProject.Owner}} -   + |   img.avatar(gravatar-src="currentProject.OwnerDatas.email", width=20) span.pull-right a.btn.btn-xs.btn-default(ng-show="currentProject.OwnerDatas.name == currentUser.name", ng-href="/projects/{{currentProject.slug}}/edit") i.fa.fa-edit -    + |    span Edit project -    + |    a.btn.btn-xs.btn-primary(ng-href="mailto:{{currentProject.Owner}}", ng-show="currentProject.OwnerDatas.name != currentUser.name") i.fa.fa-envelope -    + |    span Contact .row .col-md-8 span.text-muted span Project started -   + |   b(am-time-ago="currentProject.dateCreat") -   + |   span and finishing -   + |   b(am-time-ago="currentProject.dateEndCampaign") br br @@ -94,7 +94,7 @@ div(ng-include='"components/navbar/navbar.html"') div(ng-repeat="contributor in filteredContributors") .col-sm-4 span(ng-show="contributor.isPrivate == false").badge.badge-success.pull-right - a(ng-href="/profile/{{contributor.userName}}", style="color: white;"){{contributor.userName}} + a(ng-href="/profile/{{contributor.userName}}", style="color: white;") {{contributor.userName}} span(ng-show="contributor.isPrivate == true").badge.badge-success.pull-right Private .col-sm-8.pull-left span     Amount:   diff --git a/client/app/projects/search/search.controller.js b/client/app/projects/search/search.controller.js index 20898e9..c02eb66 100644 --- a/client/app/projects/search/search.controller.js +++ b/client/app/projects/search/search.controller.js @@ -8,7 +8,7 @@ angular.module('bitCrowdFundsApp') $http.get('/api/projects/search/'+ $routeParams.name) .success(function (data) { - $scope.projectsList = data; + $scope.projectsList = data.data; }) .error(function (data) { diff --git a/client/components/footer/footer.jade b/client/components/footer/footer.jade index 153b796..f8d523d 100644 --- a/client/components/footer/footer.jade +++ b/client/components/footer/footer.jade @@ -16,28 +16,28 @@ .col-md-12 a.btn.btn-warning.btn-xs(href="http://coindesk.com", target="_blank") img(src="http://www.coindesk.com/wp-content/themes/coindesk2/images/header-logo.png", height="15") -    + |    span real time BTC price -   + |   span.text-muted span (updated -   + |   span(am-time-ago="current_prices.time.updated") span ) ul.list-inline span.label.label-primary span {{current_prices.bpi.USD.rate}} -    + |    i.fa.fa-dollar -     + |     span.label.label-primary span {{current_prices.bpi.EUR.rate}} -    + |    i.fa.fa-euro -     + |     span.label.label-primary span {{current_prices.bpi.GBP.rate}} -    + |    i.fa.fa-gbp br diff --git a/client/components/navbar/navbar.controller.js b/client/components/navbar/navbar.controller.js index 3c57120..9e2ea8c 100644 --- a/client/components/navbar/navbar.controller.js +++ b/client/components/navbar/navbar.controller.js @@ -27,8 +27,17 @@ angular.module('bitCrowdFundsApp') { if ($scope.valueSearch === '') { + console.log('value search empty'); return; } + if (!_.isString($scope.valueSearch)) + { + if (!$scope.valueSearch.title) + { + return $location.path('/projects/search/' + $scope.valueSearch.originalObject); + } + return $location.path('/projects/search/' + $scope.valueSearch.title); + } $location.path('/projects/search/' + $scope.valueSearch); }; }); diff --git a/client/components/navbar/navbar.jade b/client/components/navbar/navbar.jade index e4b9efb..78d4d36 100644 --- a/client/components/navbar/navbar.jade +++ b/client/components/navbar/navbar.jade @@ -22,8 +22,19 @@ div.navbar.navbar-default.navbar-static-top(ng-controller='NavbarCtrl') form.navbar-form.navbar-nav div#searchbar.form-group - input#search.form-control(type='text', name='searchInput', ng-model='valueSearch', placeholder='Search projects...') -   + angucomplete-alt(id="search", + placeholder="Search projects...", + pause="100", + selected-object="valueSearch", + remote-url="http://localhost:9000/api/projects/search/", + remote-url-data-field="data", + title-field="name", + description-field="description", + minlength=2, + override-suggestions="true", + inputclass="form-control") + //- input#search.form-control(type='text', name='searchInput', ng-model='valueSearch', placeholder='Search projects...') + |   button.btn.btn-warning.btn-xs(type='submit', ng-click='search()') i.fa.fa-search @@ -39,7 +50,7 @@ div.navbar.navbar-default.navbar-static-top(ng-controller='NavbarCtrl') p.navbar-text img.avatar(gravatar-src="'{{getCurrentUser().email}}'") a(ng-href="/profile/{{getCurrentUser().name}}") {{ getCurrentUser().name }} -    + |    span.label.label-danger(ng-show='isAdmin()') STAFF li(ng-show='isLoggedIn()', ng-class='{active: isActive("/addproject")}', tooltip-placement="bottom", tooltip="New project") a(ng-href='/addproject') diff --git a/client/index.html b/client/index.html index 6b86ffa..f705054 100644 --- a/client/index.html +++ b/client/index.html @@ -18,6 +18,7 @@ + @@ -86,6 +87,7 @@ + diff --git a/server/api/project/project.controller.js b/server/api/project/project.controller.js index 03c01bb..5607e00 100644 --- a/server/api/project/project.controller.js +++ b/server/api/project/project.controller.js @@ -202,6 +202,8 @@ exports.search = function(req, res) .exec(function(err, projects) { if (err || !projects) return handleError(res, err); - res.json(200, projects); + var obj = {secret: 'lol', data: projects}; + //console.log(JSON.stringify(obj)); + res.json(200, obj); }); };