diff --git a/app/assets/javascripts/controllers/home.js b/app/assets/javascripts/controllers/home.js index a4110c975..dfbfae97c 100644 --- a/app/assets/javascripts/controllers/home.js +++ b/app/assets/javascripts/controllers/home.js @@ -10,22 +10,16 @@ */ 'use strict'; -Application.Controllers.controller('HomeController', ['$scope', '$stateParams', 'lastMembersPromise', 'lastProjectsPromise', 'upcomingEventsPromise', 'homeBlogpostPromise', 'twitterNamePromise', - function ($scope, $stateParams, lastMembersPromise, lastProjectsPromise, upcomingEventsPromise, homeBlogpostPromise, twitterNamePromise) { +Application.Controllers.controller('HomeController', ['$scope', '$stateParams', 'lastMembersPromise', 'upcomingEventsPromise', 'twitterNamePromise', + function ($scope, $stateParams, lastMembersPromise, upcomingEventsPromise, twitterNamePromise) { /* PUBLIC SCOPE */ // The last registered members who confirmed their addresses $scope.lastMembers = lastMembersPromise; - // The last projects published/documented on the plateform - $scope.lastProjects = lastProjectsPromise; - // The closest upcoming events $scope.upcomingEvents = upcomingEventsPromise; - // The admin blogpost - $scope.homeBlogpost = homeBlogpostPromise.setting.value; - // Twitter username $scope.twitterName = twitterNamePromise.setting.value; diff --git a/app/assets/javascripts/directives/news.js.erb b/app/assets/javascripts/directives/news.js.erb new file mode 100644 index 000000000..fa7902557 --- /dev/null +++ b/app/assets/javascripts/directives/news.js.erb @@ -0,0 +1,26 @@ +Application.Directives.directive('news', [ 'Setting', + function (Setting) { + return ({ + restrict: 'E', + templateUrl: '<%= asset_path "home/news.html" %>', + link ($scope, element, attributes) { + // The admin blogpost + $scope.homeBlogpost = null; + + /* PRIVATE SCOPE */ + + /** + * Kind of constructor: these actions will be realized first when the directive is loaded + */ + const initialize = function () { + Setting.get({ name: 'home_blogpost' }, function (data) { + $scope.homeBlogpost = data.setting.value; + }) + }; + + // !!! MUST BE CALLED AT THE END of the directive + return initialize(); + } + }); + } +]); diff --git a/app/assets/javascripts/directives/projects.js.erb b/app/assets/javascripts/directives/projects.js.erb new file mode 100644 index 000000000..e70751a84 --- /dev/null +++ b/app/assets/javascripts/directives/projects.js.erb @@ -0,0 +1,26 @@ +Application.Directives.directive('projects', [ 'Project', + function (Project) { + return ({ + restrict: 'E', + templateUrl: '<%= asset_path "home/projects.html" %>', + link ($scope, element, attributes) { + // The last projects published/documented on the plateform + $scope.lastProjects = null; + + /* PRIVATE SCOPE */ + + /** + * Kind of constructor: these actions will be realized first when the directive is loaded + */ + const initialize = function () { + Project.lastPublished(function (data) { + $scope.lastProjects = data; + }) + }; + + // !!! MUST BE CALLED AT THE END of the directive + return initialize(); + } + }); + } +]); diff --git a/app/assets/javascripts/directives/twitter.js.erb b/app/assets/javascripts/directives/twitter.js.erb index 3c3c63dc8..049a3bd3a 100644 --- a/app/assets/javascripts/directives/twitter.js.erb +++ b/app/assets/javascripts/directives/twitter.js.erb @@ -10,9 +10,9 @@ Application.Directives.directive('twitter', [ function () { scope: { profile: '@' }, - templateUrl: '<%= asset_path "shared/_twitter.html" %>', + templateUrl: '<%= asset_path "home/_twitter.html" %>', link ($scope, element, attributes) { - var configProfile = { + const configProfile = { 'profile': { 'screenName': $scope.profile }, 'domId': 'twitter', 'maxTweets': 1, diff --git a/app/assets/javascripts/router.js.erb b/app/assets/javascripts/router.js.erb index eb3ae0b05..6ad47821d 100644 --- a/app/assets/javascripts/router.js.erb +++ b/app/assets/javascripts/router.js.erb @@ -99,10 +99,8 @@ angular.module('application.router', ['ui.router']) }, resolve: { lastMembersPromise: ['Member', function (Member) { return Member.lastSubscribed({ limit: 4 }).$promise; }], - lastProjectsPromise: ['Project', function (Project) { return Project.lastPublished().$promise; }], upcomingEventsPromise: ['Event', function (Event) { return Event.upcoming({ limit: 3 }).$promise; }], - homeBlogpostPromise: ['Setting', function (Setting) { return Setting.get({ name: 'home_blogpost' }).$promise; }], - twitterNamePromise: ['Setting', function (Setting) { return Setting.get({ name: 'twitter_name' }).$promise; }], + twitterNamePromise: ['Setting', function (Setting) { return Setting.get({ name: 'twitter_name' }).$promise; }] } }) .state('app.public.privacy', { diff --git a/app/assets/templates/home.html.erb b/app/assets/templates/home.html.erb index 188737e26..f2d2e77e1 100644 --- a/app/assets/templates/home.html.erb +++ b/app/assets/templates/home.html.erb @@ -1,22 +1,10 @@ - -
- +
+
-
-

{{ 'app.public.home.latest_documented_projects' }}

- - - - - - - -
+ +
@@ -24,7 +12,6 @@
-

{{ 'app.public.home.latest_registered_members' }}

diff --git a/app/assets/templates/shared/_twitter.html.erb b/app/assets/templates/home/_twitter.html.erb similarity index 100% rename from app/assets/templates/shared/_twitter.html.erb rename to app/assets/templates/home/_twitter.html.erb diff --git a/app/assets/templates/home/news.html b/app/assets/templates/home/news.html new file mode 100644 index 000000000..ba5c3fb4e --- /dev/null +++ b/app/assets/templates/home/news.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/app/assets/templates/home/projects.html b/app/assets/templates/home/projects.html new file mode 100644 index 000000000..e258617a6 --- /dev/null +++ b/app/assets/templates/home/projects.html @@ -0,0 +1,11 @@ +
+

{{ 'app.public.home.latest_documented_projects' }}

+ + + + + + +
diff --git a/db/seeds.rb b/db/seeds.rb index cfe973cd6..93dce5e8b 100644 --- a/db/seeds.rb +++ b/db/seeds.rb @@ -654,20 +654,20 @@ end unless Setting.find_by(name: 'home_content').try(:value) setting = Setting.find_or_initialize_by(name: 'home_content') setting.value = <<~HTML -
-
Brève
+
+
#{I18n.t('app.admin.settings.item_news')}
-
+
-
Derniers projets
+
#{I18n.t('app.admin.settings.item_projects')}
-
Dernier tweet
-
Derniers membres
+
#{I18n.t('app.admin.settings.item_twitter')}
+
#{I18n.t('app.admin.settings.item_members')}
-
Prochains événements
+
#{I18n.t('app.admin.settings.item_events')}
HTML setting.save