branch develop updated (cf4f833 -> bec58be)
This is an automated email from the git hooks/post-receive script. New change to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git from cf4f833 better filter for document edit and delete new 949faa6 i18n menu and document part new c7383c1 i18n question part new 0429979 i18n question part new 987afe4 i18n users part new 6220fb4 i18n french translation new bec58be fixes #6202 Merge branch 'feature/6202-add-multiliguage' into develop The 6 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference. Detailed log of new commits: commit bec58be049f0839efe9f231ffcc1b5e927c25c7c Merge: cf4f833 6220fb4 Author: Yannick Martel <martel@©odelutin.com> Date: Fri Jan 23 15:20:40 2015 +0100 fixes #6202 Merge branch 'feature/6202-add-multiliguage' into develop commit 6220fb4517925d89d3eb5c5fe3dfb1d9b9b7e2fb Author: Yannick Martel <martel@©odelutin.com> Date: Fri Jan 23 15:14:27 2015 +0100 i18n french translation commit 987afe439f3e425bceafd8250e90d87dba11d395 Author: Yannick Martel <martel@©odelutin.com> Date: Fri Jan 23 10:45:19 2015 +0100 i18n users part commit 0429979fb6bd8929572fe7348098e7ef0d52dae1 Author: Yannick Martel <martel@©odelutin.com> Date: Thu Jan 22 17:56:39 2015 +0100 i18n question part commit c7383c1e45910545c25c213e9c8417de613852a3 Author: Yannick Martel <martel@©odelutin.com> Date: Thu Jan 22 17:52:22 2015 +0100 i18n question part commit 949faa6a7668b239cc0bc61144022812614175ca Author: Yannick Martel <martel@©odelutin.com> Date: Thu Jan 22 16:37:59 2015 +0100 i18n menu and document part Summary of changes: coselmar-ui/pom.xml | 6 + coselmar-ui/src/main/webapp/i18n/en.js | 210 +++++++++++++++++++++ coselmar-ui/src/main/webapp/i18n/fr.js | 210 +++++++++++++++++++++ coselmar-ui/src/main/webapp/img/en.png | Bin 0 -> 599 bytes coselmar-ui/src/main/webapp/img/fr.png | Bin 0 -> 545 bytes coselmar-ui/src/main/webapp/index.html | 58 +++--- .../src/main/webapp/js/coselmar-constants.js | 3 +- .../src/main/webapp/js/coselmar-controllers.js | 37 +++- coselmar-ui/src/main/webapp/js/coselmar.js | 13 +- .../src/main/webapp/views/admin/admintools.html | 12 +- .../src/main/webapp/views/documents/documents.html | 22 +-- .../main/webapp/views/documents/editDocument.html | 44 ++--- .../webapp/views/documents/modalDocumentEdit.html | 55 +++--- .../views/documents/modalDocumentSearch.html | 17 +- .../main/webapp/views/documents/newdocument.html | 64 +++---- .../main/webapp/views/documents/viewDocument.html | 44 ++--- .../main/webapp/views/questions/closeQuestion.html | 14 +- .../main/webapp/views/questions/editquestion.html | 56 +++--- .../views/questions/modalQuestionSearch.html | 12 +- .../webapp/views/questions/newDocumentsPart.html | 12 +- .../main/webapp/views/questions/newquestion.html | 4 +- .../src/main/webapp/views/questions/question.html | 16 +- .../src/main/webapp/views/questions/questions.html | 24 +-- .../views/questions/viewRestrictedQuestion.html | 6 +- .../main/webapp/views/questions/viewquestion.html | 52 ++--- .../main/webapp/views/referential/referential.html | 33 ++-- .../src/main/webapp/views/users/adminUsers.html | 49 +++-- .../src/main/webapp/views/users/edituser.html | 49 +++-- .../src/main/webapp/views/users/newuser.html | 12 +- .../main/webapp/views/users/supervisorUsers.html | 48 ++--- coselmar-ui/src/main/webapp/views/users/user.html | 26 +-- coselmar-ui/src/main/webapp/views/users/users.html | 2 +- pom.xml | 8 + 33 files changed, 847 insertions(+), 371 deletions(-) create mode 100644 coselmar-ui/src/main/webapp/i18n/en.js create mode 100644 coselmar-ui/src/main/webapp/i18n/fr.js create mode 100644 coselmar-ui/src/main/webapp/img/en.png create mode 100644 coselmar-ui/src/main/webapp/img/fr.png -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git commit 949faa6a7668b239cc0bc61144022812614175ca Author: Yannick Martel <martel@©odelutin.com> Date: Thu Jan 22 16:37:59 2015 +0100 i18n menu and document part --- coselmar-ui/pom.xml | 6 ++ coselmar-ui/src/main/webapp/i18n/en.js | 80 +++++++++++++++++++++ coselmar-ui/src/main/webapp/i18n/fr.js | 21 ++++++ coselmar-ui/src/main/webapp/img/en.png | Bin 0 -> 599 bytes coselmar-ui/src/main/webapp/img/fr.png | Bin 0 -> 545 bytes coselmar-ui/src/main/webapp/index.html | 52 +++++++++----- .../src/main/webapp/js/coselmar-constants.js | 3 +- .../src/main/webapp/js/coselmar-controllers.js | 35 ++++++++- coselmar-ui/src/main/webapp/js/coselmar.js | 13 +++- .../src/main/webapp/views/documents/documents.html | 22 +++--- .../main/webapp/views/documents/editDocument.html | 44 ++++++------ .../webapp/views/documents/modalDocumentEdit.html | 55 +++++++------- .../views/documents/modalDocumentSearch.html | 17 ++--- .../main/webapp/views/documents/newdocument.html | 64 ++++++++--------- .../main/webapp/views/documents/viewDocument.html | 42 +++++------ pom.xml | 8 +++ 16 files changed, 312 insertions(+), 150 deletions(-) diff --git a/coselmar-ui/pom.xml b/coselmar-ui/pom.xml index 27df992..872db46 100644 --- a/coselmar-ui/pom.xml +++ b/coselmar-ui/pom.xml @@ -79,6 +79,12 @@ <scope>runtime</scope> </dependency> + <dependency> + <groupId>org.webjars</groupId> + <artifactId>angular-translate</artifactId> + <scope>runtime</scope> + </dependency> + </dependencies> <build> diff --git a/coselmar-ui/src/main/webapp/i18n/en.js b/coselmar-ui/src/main/webapp/i18n/en.js new file mode 100644 index 0000000..b922b0b --- /dev/null +++ b/coselmar-ui/src/main/webapp/i18n/en.js @@ -0,0 +1,80 @@ +var translateEN = { + +"application.title" : "Coselmar Platform", + +"menu.item.users" : "Users", +"menu.item.users.list" : "List", +"menu.item.users.add" : "Add an user", +"menu.item.users.add.client" : "Add a client", +"menu.item.questions" : "Questions", +"menu.item.questions.list" : "List", +"menu.item.questions.add" : "Add a question", +"menu.item.documents" : "Documents", +"menu.item.documents.list" : "List", +"menu.item.documents.add" : "Add a document", +"menu.item.referential" : "Referential Search", + +"menu.button.login" : "Sign in", +"menu.button.profile" : "Profile", +"menu.button.logout" : "Logout", + +"document.list.title" : "All documents", +"document.modalSearch.title" : "Search Documents", +"document.button.add" : "Add a document", +"document.message.delete" : "Do you really want to delete this document ?", +"document.create.title" : "New document", +"document.create.info" : "Here you can add a new document in the repository. For each document,\ + some keywords are needed to make easier search of the document, and you\ + can specify a privacy :\ + <ul>\ + <li>Public : all members can see the document</li>\ + <li>Private : only you can see the document</li>\ + <li>Restricted : you can specify who can see the document specifically</li>\ + </ul>", + +"document.metadata.name" : "Title", +"document.metadata.authors" : "Authors", +"document.metadata.privacy" : "Privacy", +"document.metadata.keywords" : "Keywords", +"document.metadata.depositor" : "Depositor", +"document.metadata.depositDate" : "Deposit Date", +"document.metadata.relatedQuestions" : "Related Questions", +"document.metadata.view.relatedQuestions" : "Questions with this document", +"document.metadata.type" : "Type", +"document.metadata.file" : "File", +"document.metadata.externalUrl" : "External URL", +"document.metadata.copyright" : "Copyright", +"document.metadata.licence" : "Licence", +"document.metadata.language" : "Language", +"document.metadata.publicationDate" : "Publication Date", +"document.metadata.summary" : "Summary", +"document.metadata.comment" : "Comment", +"document.metadata.fileName" : "Document File", +"document.metadata.externalLink" : "External Link", + +"document.message.requiredName" : "Document name is required.", +"document.message.requiredType" : "Document type is required.", +"document.message.requiredExternalUrlOrFile" : "A File or an external URL is required.", +"document.message.requiredExternalUrl" : "For this document, an external URL is required.", +"document.message.requiredKeywords" : "At least one keyword is required.", +"document.message.requiredAuthors" : "Document authors is required.", +"document.message.requiredCopyright" : "Document copyright is required.", +"document.message.requiredSummary" : "A summary is required.", +"document.privacy.questionRestricted" : "Restricted to current Question", + +"document.button.download" : "Download", +"document.button.openLink" : "Open link", + +"common.privacy.private" : "Private", +"common.privacy.public" : "Public", +"common.privacy.restricted" : "Restricted", + +"common.button.delete" : "Delete", +"common.button.edit" : "Modify", +"common.button.add" : "Add", +"common.button.cancel" : "Cancel", +"common.message.missingMandatoryFields" : "Some mandatory field (*) have not been filled.", +"common.message.notYetAvailable" : "Not yet available.", +"common.message.mandatoryFieldsInfo" : "Field with <strong><big>*</big></strong> are mandatory.", + +} \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/i18n/fr.js b/coselmar-ui/src/main/webapp/i18n/fr.js new file mode 100644 index 0000000..8667b78 --- /dev/null +++ b/coselmar-ui/src/main/webapp/i18n/fr.js @@ -0,0 +1,21 @@ +var translateFR = { + +"application.title" : "Coselmar Plateforme", + +"menu.item.users" : "Utilisateurs", +"menu.item.users.list" : "Liste", +"menu.item.users.add" : "Ajouter un utilisateur", +"menu.item.users.add.client" : "Ajouter un client", +"menu.item.questions" : "Questions", +"menu.item.questions.list" : "Liste", +"menu.item.questions.add" : "Ajouter une question", +"menu.item.documents" : "Documents", +"menu.item.documents.list" : "Liste", +"menu.item.documents.add" : "Ajouter un document", +"menu.item.referential" : "Référentiel", + +"menu.button.login" : "Connexion", +"menu.button.profile" : "Profil", +"menu.button.logout" : "Déconnexion" + +} \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/img/en.png b/coselmar-ui/src/main/webapp/img/en.png new file mode 100644 index 0000000..ff701e1 Binary files /dev/null and b/coselmar-ui/src/main/webapp/img/en.png differ diff --git a/coselmar-ui/src/main/webapp/img/fr.png b/coselmar-ui/src/main/webapp/img/fr.png new file mode 100644 index 0000000..8332c4e Binary files /dev/null and b/coselmar-ui/src/main/webapp/img/fr.png differ diff --git a/coselmar-ui/src/main/webapp/index.html b/coselmar-ui/src/main/webapp/index.html index c7c1808..d3d788d 100644 --- a/coselmar-ui/src/main/webapp/index.html +++ b/coselmar-ui/src/main/webapp/index.html @@ -37,6 +37,7 @@ <script src="webjars/angularjs/1.3.6/angular-messages.js"></script> <!--<script src="nuiton-js/angular-ui-bootstrap.js"></script>--> <script src="webjars/bootstrap/3.3.1/js/bootstrap.js"></script> + <script src="webjars/angular-translate/2.5.2/angular-translate.js"></script> <!--TODO ymartel 20141203 : extract version, or use wro --> <script src="webjars/angular-ui-select/0.9.0/select.js"></script> @@ -45,6 +46,8 @@ <script src="webjars/angular-ui-bootstrap/0.12.0/ui-bootstrap-tpls.js"></script> <script src="js/angular-jwt.js"></script> + <script src="i18n/en.js"></script> + <script src="i18n/fr.js"></script> <script src="js/coselmar.js"></script> <script src="js/coselmar-constants.js"></script> <script src="js/coselmar-controllers.js"></script> @@ -70,34 +73,34 @@ <span class="icon-bar"></span> <span class="icon-bar"></span> </button> - <a class="navbar-brand visible-xs" href="#">Coselmar Referential</a> + <a class="navbar-brand visible-xs" href="#" translate="application.title">Coselmar Referential</a> </div> <nav class="hidden-xs"> <ul class="nav navbar-nav"> - <a href="#" role="button" class="navbar-brand">Coselmar Platform</a> + <a href="#" role="button" class="navbar-brand">{{ 'application.title' | translate}}</a> <li class="dropdown" ng-if="currentUser.role == 'ADMIN' || currentUser.role == 'SUPERVISOR'"> - <a class="dropdown-toggle" data-toggle="dropdown">Users<span class="caret"></span></a> + <a class="dropdown-toggle" data-toggle="dropdown">{{ 'menu.item.users' | translate}}<span class="caret"></span></a> <ul class="dropdown-menu" role="menu"> - <li><a href="#/users" role="menuitem">List</a></li> - <li><a href="#/users/new" role="menuitem" ng-if="currentUser.role == 'ADMIN'">Add an user</a></li> - <li><a href="#/users/new" role="menuitem" ng-if="currentUser.role == 'SUPERVISOR'">Add a client</a></li> + <li><a href="#/users" role="menuitem">{{ 'menu.item.users.list' | translate}}</a></li> + <li><a href="#/users/new" role="menuitem" ng-if="currentUser.role == 'ADMIN'">{{ 'menu.item.users.add' | translate}}</a></li> + <li><a href="#/users/new" role="menuitem" ng-if="currentUser.role == 'SUPERVISOR'">{{ 'menu.item.users.add.client' | translate}}</a></li> </ul> </li> <li ng-if="currentUser"> - <a href="#/documents" role="button" class="dropdown-toggle">Documents</a> + <a href="#/documents" role="button" class="dropdown-toggle">{{ 'menu.item.documents' | translate}}</a> </li> <li class="dropdown" ng-if="currentUser"> - <a class="dropdown-toggle" data-toggle="dropdown">Questions<span class="caret"></span></a> + <a class="dropdown-toggle" data-toggle="dropdown">{{ 'menu.item.questions' | translate}}<span class="caret"></span></a> <ul class="dropdown-menu" role="menu"> - <li><a href="#/questions" role="menuitem">List</a></li> - <li><a href="#/questions/new" role="menuitem" ng-if="currentUser.role == 'SUPERVISOR'">Add a question</a></li> + <li><a href="#/questions" role="menuitem">{{ 'menu.item.questions.list' | translate}}</a></li> + <li><a href="#/questions/new" role="menuitem" ng-if="currentUser.role == 'SUPERVISOR'">{{ 'menu.item.questions.add' | translate}}</a></li> </ul> </li> <li ng-if="currentUser"> - <a href="#/referential" role="button" class="dropdown-toggle">Referential Search</a> + <a href="#/referential" role="button" class="dropdown-toggle">{{ 'menu.item.referential' | translate}}</a> </li> </ul> @@ -109,33 +112,44 @@ <div class="form-group"> <input type="password" placeholder="Password" class="form-control" ng-model="loginPassword"> </div> - <button type="submit" class="btn btn-action" ng-click="login(loginMail, loginPassword)">Sign in</button> + <button type="submit" class="btn btn-action" ng-click="login(loginMail, loginPassword)">{{ 'menu.button.login' | translate}}</button> </form> <form class="navbar-form navbar-right" role="form" ng-if="currentUser"> <div class="form-group">{{currentUser.firstName}} {{currentUser.lastName}} <a href="#/users/{{currentUser.userId}}?edit" class="btn btn-action"> - <span class="glyphicon glyphicon-user" aria-hidden="true"></span>Profile + <span class="glyphicon glyphicon-user" aria-hidden="true"></span>{{ 'menu.button.profile' | translate}} </a> </div> <button type="submit" class="btn btn-action" ng-click="logout()"> - <span class="glyphicon glyphicon-log-out" aria-hidden="true"></span>Logout + <span class="glyphicon glyphicon-log-out" aria-hidden="true"></span>{{ 'menu.button.logout' | translate}} </button> </form> + + <ul class="nav navbar-nav navbar-right"> + <li class="dropdown-toggle"> + <a class="dropdown-toggle" data-toggle="dropdown"> <img ng:attr-src="img/{{locale}}.png" /><span class="caret"></span></a> + <ul class="dropdown-menu" role="menu"> + <li><a ng-click="switchLocale('fr')" role="menuitem"><img src="img/fr.png" /> Français </a></li> + <li><a ng-click="switchLocale('en')" role="menuitem"><img src="img/en.png" /> English </a> </li> + </ul> + </li> + </ul> + </nav> <nav class="visible-xs" collapse="!isCollapsed"> <ul class="nav navbar-nav"> - <li ng-if="currentUser.role == 'ADMIN'"> - <a href="#users" ng-click="isCollapsed = !isCollapsed">Users</a> + <li ng-if="currentUser.role == 'ADMIN' || currentUser.role == 'SUPERVISOR'"> + <a href="#users" ng-click="isCollapsed = !isCollapsed">{{ 'menu.item.users' | translate}}</a> </li> <li ng-if="currentUser"> - <a href="#documents" ng-click="isCollapsed = !isCollapsed">Documents</a> + <a href="#documents" ng-click="isCollapsed = !isCollapsed">{{ 'menu.item.documents' | translate}}</a> </li> <li ng-if="currentUser"> - <a href="#question" ng-click="isCollapsed = !isCollapsed">Questions</a> + <a href="#questions" ng-click="isCollapsed = !isCollapsed">{{ 'menu.item.questions' | translate}}</a> </li> <li ng-if="currentUser"> - <a href="#referential" ng-click="isCollapsed = !isCollapsed">Referential</a> + <a href="#referential" ng-click="isCollapsed = !isCollapsed">{{ 'menu.item.referential' | translate}}</a> </li> </ul> </nav> diff --git a/coselmar-ui/src/main/webapp/js/coselmar-constants.js b/coselmar-ui/src/main/webapp/js/coselmar-constants.js index db0633c..f1ea0b2 100644 --- a/coselmar-ui/src/main/webapp/js/coselmar-constants.js +++ b/coselmar-ui/src/main/webapp/js/coselmar-constants.js @@ -22,5 +22,6 @@ * #L% */ coselmarApp.constant('coselmar-config', { - BASE_URL : "http://localhost:8081/services/v1" + BASE_URL : "http://localhost:8081/services/v1", + SUPPORTED_LOCALE : ["en", "fr"] }); \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js index a46cd87..8f328e9 100644 --- a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js +++ b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js @@ -24,8 +24,8 @@ var coselmarControllers = angular.module('coselmarControllers', ['ui.bootstrap', 'ui.select', 'ui.bootstrap.tooltip']); // Controller when the main page/view loads -coselmarControllers.controller("HomeCtrl", ['$scope', '$http', '$location', '$routeParams', 'userService', 'jwtHelper', - function ($scope, $http, $location, $routeParams, userService, jwtHelper) { +coselmarControllers.controller("HomeCtrl", ['$scope', '$http', '$location', '$routeParams', '$locale', '$translate', 'userService', 'jwtHelper', 'coselmar-config', + function ($scope, $http, $location, $routeParams, $locale, $translate, userService, jwtHelper, coselmarConfig) { var jwtToken = localStorage.getItem('coselmar-jwt'); if (jwtToken && !jwtHelper.isTokenExpired(jwtToken)) { @@ -60,6 +60,35 @@ coselmarControllers.controller("HomeCtrl", ['$scope', '$http', '$location', '$ro $location.path('/'); } + // i18n Management + $scope.locale = localStorage.getItem('coselmar-locale'); + + console.log($scope.locale); + + if (angular.isUndefined($scope.locale)) { + // set locale with browser preference + $scope.locale = navigator.language || navigator.userLanguage; + $scope.locale = $scope.locale.substring(0,2); + + // get locale supported + if (coselmarConfig.SUPPORTED_LOCALE.indexOf($scope.locale) == -1) { + $scope.locale = coselmarConfig.SUPPORTED_LOCALE[0]; + } + + } + $translate.use($scope.locale); + + + $scope.switchLocale = function (locale) { + // switch locale + if (locale != $scope.locale) { + // Store locale in localStorage + localStorage.setItem('coselmar-locale', locale); + $scope.locale = locale; + $translate.use(locale); + } + } + }]); // Controller when got 401 @@ -1186,7 +1215,7 @@ coselmarControllers.directive('ngConfirmClick', ['$modal', function($modal) { var message = attrs.ngConfirmMessage || "Are you sure ?"; var modalHtml = '<div class="modal-title"><h2>Confirm Action</h2></div>'; - modalHtml += '<div class="modal-body">' + message + '</div>'; + modalHtml += '<div class="modal-body"> {{\'' + message + '\' | translate}}</div>'; modalHtml += '<div class="modal-footer"><button class="btn btn-primary" ng-click="ok()">OK</button><button class="btn btn-warning" ng-click="cancel()">Cancel</button></div>'; var modalInstance = $modal.open({ diff --git a/coselmar-ui/src/main/webapp/js/coselmar.js b/coselmar-ui/src/main/webapp/js/coselmar.js index 12e3435..eb3b393 100644 --- a/coselmar-ui/src/main/webapp/js/coselmar.js +++ b/coselmar-ui/src/main/webapp/js/coselmar.js @@ -21,7 +21,8 @@ * <http://www.gnu.org/licenses/gpl-3.0.html>. * #L% */ -var coselmarApp = angular.module("coselmarApp", ['ngRoute', 'ngResource', 'ngMessages', 'angular-jwt', 'coselmarControllers', 'coselmarServices']); +var coselmarApp = angular.module("coselmarApp", ['ngRoute', 'ngResource', 'ngMessages', 'pascalprecht.translate', + 'angular-jwt', 'coselmarControllers', 'coselmarServices']); coselmarApp.config(['$routeProvider', function($routeProvider) { $routeProvider @@ -129,4 +130,14 @@ coselmarApp.config(function($httpProvider) { // edit content-type for send data to the server $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; +}); + +// i18n provider +coselmarApp.config(function($translateProvider) { + // define translations variables + $translateProvider.translations('en', translateEN); + $translateProvider.translations('fr', translateFR); + // defined default + $translateProvider.preferredLanguage('en'); + $translateProvider.fallbackLanguage('en'); }); \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/views/documents/documents.html b/coselmar-ui/src/main/webapp/views/documents/documents.html index 5fa2d56..9fe4165 100644 --- a/coselmar-ui/src/main/webapp/views/documents/documents.html +++ b/coselmar-ui/src/main/webapp/views/documents/documents.html @@ -25,14 +25,14 @@ <div class="page-header" style="margin: 0"> <h1> <!-- Heading goes here --> - All Documents + {{ 'document.list.title' | translate}} </h1> </div> <div> <div> <div class="form-group" ng-if="currentUser.role == 'EXPERT'"> - <a href="#/documents/new" class="form-inline navbar-left btn btn-primary">Add a document</a> + <a href="#/documents/new" class="form-inline navbar-left btn btn-primary">{{ 'application.title' | translate}}</a> </div> <form class="form-inline pull-right" role="documentOptions" ng-submit="searchDocuments()"> <div class="form-group"> @@ -46,13 +46,13 @@ <br/> <table class="table"> <tr> - <th>Name</th> - <th>Authors</th> - <th>Privacy</th> - <th>Keywords</th> - <th>Depositor</th> - <th>Deposit Date</th> - <th>Related Question</th> + <th>{{ 'document.metadata.name' | translate }}</th> + <th>{{ 'document.metadata.authors' | translate }}</th> + <th>{{ 'document.metadata.privacy' | translate }}</th> + <th>{{ 'document.metadata.keywords' | translate }}</th> + <th>{{ 'document.metadata.depositor' | translate }}</th> + <th>{{ 'document.metadata.depositDate' | translate }}</th> + <th>{{ 'document.metadata.relatedQuestions' | translate }}</th> <th></th> </tr> <tr ng-repeat="document in documents"> @@ -64,9 +64,9 @@ <td>{{document.depositDate | date:'mediumDate'}}</td> <td class="text-center">{{document.relatedQuestions.length || 0}}</td> <td ng-if="currentUser.role == 'ADMIN'"><a class="btn btn-action btn-disable" - ng-confirm-message="Do you really want to delete this document ?" + ng-confirm-message="document.message.delete" ng-confirm-click="deleteDocument(document.id)"> - <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>Delete</a> + <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>{{ 'common.button.delete' | translate }}</a> </td> </tr> </table> diff --git a/coselmar-ui/src/main/webapp/views/documents/editDocument.html b/coselmar-ui/src/main/webapp/views/documents/editDocument.html index af40a5f..7a9df02 100644 --- a/coselmar-ui/src/main/webapp/views/documents/editDocument.html +++ b/coselmar-ui/src/main/webapp/views/documents/editDocument.html @@ -11,7 +11,7 @@ <!-- Line with Title, type and privacy --> <div class="form-group row"> <div ng-class="{'has-error' : documentForm.name.$invalid && !documentForm.name.$pristine}"> - <label class="col-md-2 control-label">Name *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.name' | translate }} *</label> <div class="col-md-4"> <input type="text" class="form-control" name="name" @@ -19,20 +19,20 @@ ng-model="document.name" required/> <p ng-show="documentForm.name.$invalid && !documentForm.name.$pristine" - class="help-block">Document name is required.</p> + class="help-block">{{ 'document.message.requiredName' | translate }}</p> </div> </div> <div class="" ng-class="{'has-error' : documentForm.type.$invalid && !documentForm.type.$pristine}"> - <label class="col-md-1 control-label">Type *</label> + <label class="col-md-1 control-label">{{ 'document.metadata.type' | translate }} *</label> <div class="col-md-2"> <input type="text" class="form-control" name="type" data-ng-model="document.type" list="existingTypes" required/> <p ng-show="documentForm.type.$invalid && !documentForm.type.$pristine" - class="help-block">Document type is required.</p> + class="help-block">{{ 'document.message.requiredType' | translate }}</p> </div> <datalist id="existingTypes"> <option data-ng-repeat="type in existing.types" value="{{type}}"> @@ -41,7 +41,7 @@ <div> - <label class="col-md-1 control-label">Privacy</label> + <label class="col-md-1 control-label">{{ 'document.metadata.privacy' | translate }}</label> <div class="col-md-2"> <input type="text" class="form-control" name="type" @@ -56,7 +56,7 @@ && !documentForm.externalUrl.$pristine && !document.fileName}"> <div> - <label class="col-md-2 control-label">File</label> + <label class="col-md-2 control-label">{{ 'document.metadata.file' | translate }}</label> <div class="col-md-4"> <input type="text" class="form-control" name="fileName" @@ -65,7 +65,7 @@ </div> <div> - <label class="col-md-2 control-label">External URL</label> + <label class="col-md-2 control-label">{{ 'document.metadata.externalUrl' | translate }}</label> <div class="col-md-4"> <input type="input" class="form-control" name="externalUrl" @@ -75,7 +75,7 @@ </div> </div> <p ng-show="!document.externalUrl && !documentForm.externalUrl.$pristine && !document.fileName" - class="help-block text-center clear">For this document, an external URL is required.</p> + class="help-block text-center clear">{{ 'document.message.requiredExternalUrl' | translate }}</p> </div> <!-- Line with Keywords --> @@ -83,7 +83,7 @@ <div ng-class="{'has-error' : documentForm.keywords.$invalid && !documentForm.keywords.$pristine}"> - <label class="col-md-2 control-label">keywords *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.keywords' | translate }} *</label> <div class="col-md-2"> <input type="text" class="form-control" name="keywords" @@ -91,7 +91,7 @@ ng-model="toAddKeyword" list="existingKeywords" /> <p ng-show="document.keywords.length < 1 && !documentForm.keywords.$pristine" - class="help-block">At least one keyword is required.</p> + class="help-block">{{ 'document.message.requiredKeywords' | translate }}</p> </div> <datalist id="existingKeywords"> <option data-ng-repeat="keyword in existing.keywords" value="{{keyword}}"> @@ -100,7 +100,7 @@ <div class="col-md-1"> <button class="btn btn-primary" value="add" - ng-click="addKeyword(toAddKeyword); toAddKeyword=''">add</button> + ng-click="addKeyword(toAddKeyword); toAddKeyword=''">{{ 'common.button.add' | translate }}</button> </div> @@ -119,7 +119,7 @@ <div class="form-group"> <div ng-class="{'has-error' : documentForm.authors.$invalid && !documentForm.authors.$pristine}"> - <label class="col-md-2 control-label">Authors *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.authors' | translate }} *</label> <div class="col-md-4"> <input type="text" class="form-control" name="authors" @@ -127,14 +127,14 @@ ng-model="document.authors" required/> <p ng-show="documentForm.authors.$invalid && !documentForm.authors.$pristine" - class="help-block">Document authors is required.</p> + class="help-block">{{ 'document.message.requiredAuthors' | translate }}</p> </div> </div> <div ng-class="{'has-error' : documentForm.copyright.$invalid && !documentForm.copyright.$pristine}"> - <label class="col-md-2 control-label">Copyright *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.copyright' | translate }} *</label> <div class="col-md-4"> <input type="text" class="form-control" name="copyright" @@ -142,7 +142,7 @@ ng-model="document.copyright" required/> <p ng-show="documentForm.copyright.$invalid && !documentForm.copyright.$pristine" - class="help-block">Copyright is required.</p> + class="help-block">{{ 'document.message.requiredCopyright' | translate }}</p> </div> </div> </div> @@ -150,7 +150,7 @@ <!-- Line with License, publication date and language --> <div class="form-group"> <div > - <label class="col-md-2 control-label">Licence</label> + <label class="col-md-2 control-label">{{ 'document.metadata.licence' | translate }}</label> <div class="col-md-4"> <input type="text" class="form-control" name="licence" @@ -160,7 +160,7 @@ </div> <div> - <label class="col-md-1 control-label">Language</label> + <label class="col-md-1 control-label">{{ 'document.metadata.language' | translate }}</label> <div class="col-md-1"> <input type="text" class="form-control" name="language" @@ -170,7 +170,7 @@ </div> <div> - <label class="col-md-2 control-label">Publication date</label> + <label class="col-md-2 control-label">{{ 'document.metadata.publicationDate' | translate }}</label> <div class="col-md-2"> <div class="input-group"> @@ -189,7 +189,7 @@ <!-- Summary --> <div class="form-group" ng-class="{'has-error' : documentForm.summary.$invalid && !documentForm.summary.$pristine}"> - <label class="col-md-2 control-label">Summary *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.summary' | translate }} *</label> <div class="col-md-10"> <textarea type="text" class="form-control" name="summary" rows="5" @@ -197,13 +197,13 @@ ng-model="document.summary" required/> <p ng-show="documentForm.summary.$invalid && !documentForm.summary.$pristine" - class="help-block">A summary is required.</p> + class="help-block">{{ 'document.message.requiredSummary' | translate }}</p> </div> </div> <!-- Comment --> <div class="form-group" > - <label class="col-md-2 control-label">Comment</label> + <label class="col-md-2 control-label">{{ 'document.metadata.comment' | translate }}</label> <div class="col-md-10"> <textarea type="text" class="form-control" name="comment" rows="5" @@ -214,7 +214,7 @@ <div class="form-group"> <div ng-if="hasErrors" class="has-error"> - <div class="text-center help-block">Some mandatory fields (*) have not been filled.</div> + <div class="text-center help-block">{{ 'common.message.missingMandatoryFields' | translate }}</div> </div> <div class="float-right col-md-4"> <input type="submit" value="Submit" class="btn btn-action btn-success" diff --git a/coselmar-ui/src/main/webapp/views/documents/modalDocumentEdit.html b/coselmar-ui/src/main/webapp/views/documents/modalDocumentEdit.html index 03920ac..668f4bc 100644 --- a/coselmar-ui/src/main/webapp/views/documents/modalDocumentEdit.html +++ b/coselmar-ui/src/main/webapp/views/documents/modalDocumentEdit.html @@ -23,8 +23,8 @@ --> <div xmlns="http://www.w3.org/1999/html"> <div class="modal-title"> - <h2>New Document</h2> - Field with <strong><big>*</big></strong> are mandatory. + <h2>{{ 'document.create.title' | translate }}</h2> + <span translate="common.message.mandatoryFieldsInfo"></span> </div> <form class="form-horizontal" name="documentForm" role="form" @@ -38,7 +38,7 @@ <div class="" ng-class="{'has-error' : documentForm.name.$invalid && !documentForm.name.$pristine}"> - <label class="col-md-2 control-label">Name *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.name' | translate }} *</label> <div class="col-md-4"> <input type="text" class="form-control" name="name" @@ -46,20 +46,20 @@ ng-model="document.name" required /> <p ng-show="documentForm.name.$invalid && !documentForm.name.$pristine" - class="help-block">Document name is required.</p> + class="help-block">{{ 'document.message.requiredName' | translate }}</p> </div> </div> <div class="" ng-class="{'has-error' : documentForm.type.$invalid && !documentForm.type.$pristine}"> - <label class="col-md-2 control-label">Type *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.type' | translate }} *</label> <div class="col-md-4"> <input type="text" class="form-control" name="type" data-ng-model="document.type" list="modalExistingTypes" required/> <p ng-show="documentForm.type.$invalid && !documentForm.type.$pristine" - class="help-block">Document type is required.</p> + class="help-block">{{ 'document.message.requiredType' | translate }}</p> </div> <datalist id="modalExistingTypes"> <option data-ng-repeat="type in modalExisting.types" value="{{type}}"> @@ -74,7 +74,7 @@ documentForm.externalUrl.$invalid && !documentForm.externalUrl.$pristine && !upload.file}"> <div class=""> - <label class="col-md-2 control-label">File</label> + <label class="col-md-2 control-label">{{ 'document.metadata.file' | translate }}</label> <div class="col-md-4"> <input type="file" class="form-control" name="uploadFile" @@ -83,7 +83,7 @@ </div> <div class=""> - <label class="col-md-2 control-label">External URL</label> + <label class="col-md-2 control-label">{{ 'document.metadata.externalUrl' | translate }}</label> <div class="col-md-4"> <input type="input" class="form-control" name="externalUrl" @@ -93,8 +93,7 @@ </div> </div> <p ng-show="!document.externalUrl && !file.upload" - class="help-block text-center">A File or an external URL is - required.</p> + class="help-block text-center">{{ 'document.message.requiredExternalUrlOrFile' | translate }}</p> </div> <!-- End Line with file and externalURL --> @@ -104,7 +103,7 @@ <div ng-class="{'has-error' : documentForm.keywords.$invalid && !documentForm.keywords.$pristine}"> - <label class="col-md-2 control-label">keywords *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.keywords' | translate }} *</label> <div class="col-md-2"> <input type="text" class="form-control" name="keywords" @@ -112,7 +111,7 @@ data-ng-model="modalToAddKeyword" list="modalExistingKeywords"/> <p ng-show="document.keywords.length < 1 && !documentForm.keywords.$pristine" - class="help-block">At least one keyword is required.</p> + class="help-block">{{ 'document.message.requiredKeywords' | translate }}</p> </div> <datalist id="modalExistingKeywords"> <option data-ng-repeat="keyword in modalExisting.keywords" value="{{keyword}}"> @@ -121,7 +120,7 @@ <div class="col-md-1"> <button class="btn btn-primary" value="add" - ng-click="addKeyword(modalToAddKeyword); modalToAddKeyword=''">add</button> + ng-click="addKeyword(modalToAddKeyword); modalToAddKeyword=''">{{ 'common.button.add' | translate }}</button> </div> @@ -140,7 +139,7 @@ <!-- Line with Publication Date and privacy --> <div class="form-group"> <div class=""> - <label class="col-md-2 control-label">Publication date</label> + <label class="col-md-2 control-label">{{ 'document.metadata.publicationDate' | translate }}</label> <div class="col-md-4"> <div class="input-group"> @@ -157,14 +156,14 @@ </div> <div class=""> - <label class="col-md-2 control-label">Privacy</label> + <label class="col-md-2 control-label">{{ 'document.metadata.privacy' | translate }}</label> <div class="col-md-4"> <select class="form-control" name="privacy" ng-model="document.privacy"> - <option value="PRIVATE">Private</option> - <option value="PUBLIC">Public</option> - <option value="RESTRICTED">Restricted to current Question</option> + <option value="PRIVATE">{{ 'common.privacy.private' | translate }}</option> + <option value="PUBLIC">{{ 'common.privacy.public' | translate }}</option> + <option value="RESTRICTED">{{ 'document.privacy.questionRestricted' | translate }}</option> </select> </div> @@ -178,7 +177,7 @@ <div class="" ng-class="{'has-error' : documentForm.authors.$invalid && !documentForm.authors.$pristine}"> - <label class="col-md-2 control-label">Authors *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.authors' | translate }} *</label> <div class="col-md-5"> <input type="text" class="form-control" name="authors" @@ -186,12 +185,12 @@ ng-model="document.authors" required/> <p ng-show="documentForm.authors.$invalid && !documentForm.authors.$pristine" - class="help-block">Document authors is required.</p> + class="help-block">{{ 'document.message.requiredAuthors' | translate }}</p> </div> </div> <div class=""> - <label class="col-md-2 control-label">Language</label> + <label class="col-md-2 control-label">{{ 'document.metadata.language' | translate }}</label> <div class="col-md-3"> <input type="text" class="form-control" name="language" @@ -206,7 +205,7 @@ <div class="form-group"> <div ng-class="{'has-error' : documentForm.copyright.$invalid && !documentForm.copyright.$pristine}"> - <label class="col-md-2 control-label">Copyright *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.copyright' | translate }} *</label> <div class="col-md-4"> <input type="text" class="form-control" name="copyright" @@ -214,12 +213,12 @@ ng-model="document.copyright" required/> <p ng-show="documentForm.copyright.$invalid && !documentForm.copyright.$pristine" - class="help-block">Copyright is required.</p> + class="help-block">{{ 'document.message.requiredCopyright' | translate }}</p> </div> </div> <div class="form-group"> - <label class="col-md-2 control-label">Licence</label> + <label class="col-md-2 control-label">{{ 'document.metadata.licence' | translate }}</label> <div class="col-md-4"> <input type="text" class="form-control" name="licence" @@ -233,7 +232,7 @@ <!-- Line with Summary --> <div class="form-group" ng-class="{'has-error' : documentForm.summary.$invalid && !documentForm.summary.$pristine}"> - <label class="col-md-2 control-label">Summary *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.summary' | translate }} *</label> <div class="col-md-10"> <textarea type="text" class="form-control" name="summary" rows="5" @@ -241,14 +240,14 @@ ng-model="document.summary" required/> <p ng-show="documentForm.summary.$invalid && !documentForm.summary.$pristine" - class="help-block">A summary is required.</p> + class="help-block">{{ 'document.message.requiredSummary' | translate }}</p> </div> </div> <!-- End Line with Summary --> <!-- Line with Comment --> <div class="form-group" > - <label class="col-md-2 control-label">Comment</label> + <label class="col-md-2 control-label">{{ 'document.metadata.comment' | translate }}</label> <div class="col-md-10"> <textarea type="text" class="form-control" name="comment" rows="5" @@ -262,7 +261,7 @@ <div class="modal-footer"> <input type="submit" class="btn btn-primary" /> - <button class="btn btn-warning" ng-click="cancel()">Cancel</button> + <button class="btn btn-warning" ng-click="cancel()">{{ 'common.button.cancel' | translate }}</button> </div> </form> diff --git a/coselmar-ui/src/main/webapp/views/documents/modalDocumentSearch.html b/coselmar-ui/src/main/webapp/views/documents/modalDocumentSearch.html index 1e74a48..227c9a2 100644 --- a/coselmar-ui/src/main/webapp/views/documents/modalDocumentSearch.html +++ b/coselmar-ui/src/main/webapp/views/documents/modalDocumentSearch.html @@ -26,7 +26,7 @@ <div class="page-header"> <h1> <!-- Heading goes here --> - Search Documents + {{ 'document.modalSearch.title' | translate }} </h1> </div> @@ -44,12 +44,13 @@ <br/> <table class="table"> <tr> - <th>Name</th> - <th>Authors</th> - <th>Privacy</th> - <th>Keywords</th> - <th>Depositor</th> - <th>Deposit Date</th> + <th>{{ 'document.metadata.name' | translate }}</th> + <th>{{ 'document.metadata.authors' | translate }}</th> + <th>{{ 'document.metadata.privacy' | translate }}</th> + <th>{{ 'document.metadata.keywords' | translate }}</th> + <th>{{ 'document.metadata.depositor' | translate }}</th> + <th>{{ 'document.metadata.depositDate' | translate }}</th> + <th>{{ 'document.metadata.relatedQuestions' | translate }}</th> <th></th> </tr> <tr ng-repeat="document in documents"> @@ -65,6 +66,6 @@ </table> </div> <div class="modal-footer"> - <button class="btn btn-warning" ng-click="cancel()">Cancel</button> + <button class="btn btn-warning" ng-click="cancel()">{{ 'common.button.cancel' | translate }}</button> </div> </div> \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/views/documents/newdocument.html b/coselmar-ui/src/main/webapp/views/documents/newdocument.html index d8e2306..05cc70b 100644 --- a/coselmar-ui/src/main/webapp/views/documents/newdocument.html +++ b/coselmar-ui/src/main/webapp/views/documents/newdocument.html @@ -23,20 +23,13 @@ --> <div style="padding: 0px 0px 0px 30px"> <div class="page-header" style="margin: 0"> - <h2>New Document</h2> + <h2>{{ 'document.create.title' | translate }}</h2> + <span translate="common.message.mandatoryFieldsInfo"></span> </div> <div class="info-panel"> <!-- Summary goes here --> - Here you can add a new document in the repository. For each document, - some keywords are needed to make easier search of the document, and you - can specify a privacy : - <ul> - <li>Public : all members can see the document</li> - <li>Private : only you can see the document</li> - <li>Restricted : you can specify who can see the document specifically - </li> - </ul> + <p translate="document.create.info"></p> </div> <div style="padding-bottom: 50px"> @@ -49,7 +42,7 @@ <div class="form-group row"> <div class="" ng-class="{'has-error' : documentForm.name.$invalid && !documentForm.name.$pristine}"> - <label class="col-md-2 control-label">Name *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.name' | translate }} *</label> <div class="col-md-4"> <input type="text" class="form-control" name="name" @@ -57,20 +50,20 @@ ng-model="document.name" required/> <p ng-show="documentForm.name.$invalid && !documentForm.name.$pristine" - class="help-block">Document name is required.</p> + class="help-block">{{ 'document.message.requiredName' | translate }}</p> </div> </div> <div class="" ng-class="{'has-error' : documentForm.type.$invalid && !documentForm.type.$pristine}"> - <label class="col-md-1 control-label">Type *</label> + <label class="col-md-1 control-label">{{ 'document.metadata.type' | translate }} *</label> <div class="col-md-2"> <input type="text" class="form-control" name="type" data-ng-model="document.type" list="existingTypes" required/> <p ng-show="documentForm.type.$invalid && !documentForm.type.$pristine" - class="help-block">Document type is required.</p> + class="help-block">{{ 'document.message.requiredType' | translate }}</p> </div> <datalist id="existingTypes"> <option data-ng-repeat="type in existing.types" value="{{type}}"> @@ -79,18 +72,18 @@ <div> - <label class="col-md-1 control-label">Privacy</label> + <label class="col-md-1 control-label">{{ 'document.metadata.privacy' | translate }}</label> <div class="col-md-2"> <select class="form-control" name="privacy" ng-model="document.privacy"> - <option value="PRIVATE">private</option> - <option value="PUBLIC">public</option> - <option value="RESTRICTED">restricted</option> + <option value="PRIVATE">{{ 'common.privacy.private' | translate }}</option> + <option value="PUBLIC">{{ 'common.privacy.public' | translate }}</option> + <option value="RESTRICTED">{{ 'common.privacy.restricted' | translate }}</option> </select> <div ng-if="document.privacy == 'RESTRICTED'"> - Not Yet available + {{ 'common.message.notYetAvailable' | translate }} </div> </div> </div> @@ -102,7 +95,7 @@ && !documentForm.externalUrl.$pristine && !upload.file}"> <div> - <label class="col-md-2 control-label">File</label> + <label class="col-md-2 control-label">{{ 'document.metadata.file' | translate }}</label> <div class="col-md-4"> <input type="file" class="form-control" name="uploadFile" @@ -111,7 +104,7 @@ </div> <div> - <label class="col-md-2 control-label">External URL</label> + <label class="col-md-2 control-label">{{ 'document.metadata.externalUrl' | translate }}</label> <div class="col-md-4"> <input type="input" class="form-control" name="externalUrl" @@ -121,8 +114,7 @@ </div> </div> <p ng-show="!document.externalUrl && !file.upload" - class="help-block text-center clear">At least a File or an external URL is - required.</p> + class="help-block text-center clear">{{ 'document.message.requiredExternalUrlOrFile' | translate }}</p> </div> <!-- Line with Keywords --> @@ -130,7 +122,7 @@ <div ng-class="{'has-error' : documentForm.keywords.$invalid && !documentForm.keywords.$pristine}"> - <label class="col-md-2 control-label">keywords *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.keywords' | translate }} *</label> <div class="col-md-2"> <input type="text" class="form-control" name="keywords" @@ -138,7 +130,7 @@ ng-model="toAddKeyword" list="existingKeywords" /> <p ng-show="document.keywords.length < 1 && !documentForm.keywords.$pristine" - class="help-block">At least one keyword is required.</p> + class="help-block">{{ 'document.message.requiredKeywords' | translate }}</p> </div> <datalist id="existingKeywords"> <option data-ng-repeat="keyword in existing.keywords" value="{{keyword}}"> @@ -147,7 +139,7 @@ <div class="col-md-1"> <button class="btn btn-primary" value="add" - ng-click="addKeyword(toAddKeyword); toAddKeyword=''">add</button> + ng-click="addKeyword(toAddKeyword); toAddKeyword=''">{{ 'common.button.add' | translate }}</button> </div> @@ -166,7 +158,7 @@ <div class="form-group"> <div ng-class="{'has-error' : documentForm.authors.$invalid && !documentForm.authors.$pristine}"> - <label class="col-md-2 control-label">Authors *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.authors' | translate }} *</label> <div class="col-md-4"> <input type="text" class="form-control" name="authors" @@ -174,14 +166,14 @@ ng-model="document.authors" required/> <p ng-show="documentForm.authors.$invalid && !documentForm.authors.$pristine" - class="help-block">Document authors is required.</p> + class="help-block">{{ 'document.message.requiredAuthors' | translate }}</p> </div> </div> <div ng-class="{'has-error' : documentForm.copyright.$invalid && !documentForm.copyright.$pristine}"> - <label class="col-md-2 control-label">Copyright *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.copyright' | translate }} *</label> <div class="col-md-4"> <input type="text" class="form-control" name="copyright" @@ -189,7 +181,7 @@ ng-model="document.copyright" required/> <p ng-show="documentForm.copyright.$invalid && !documentForm.copyright.$pristine" - class="help-block">Copyright is required.</p> + class="help-block">{{ 'document.message.requiredCopyright' | translate }}</p> </div> </div> </div> @@ -197,7 +189,7 @@ <!-- Line with License, publication date and language --> <div class="form-group"> <div > - <label class="col-md-2 control-label">Licence</label> + <label class="col-md-2 control-label">{{ 'document.metadata.licence' | translate }}</label> <div class="col-md-4"> <input type="text" class="form-control" name="licence" @@ -207,7 +199,7 @@ </div> <div> - <label class="col-md-1 control-label">Language</label> + <label class="col-md-1 control-label">{{ 'document.metadata.language' | translate }}</label> <div class="col-md-1"> <input type="text" class="form-control" name="language" @@ -217,7 +209,7 @@ </div> <div> - <label class="col-md-2 control-label">Publication date</label> + <label class="col-md-2 control-label">{{ 'document.metadata.publicationDate' | translate }}</label> <div class="col-md-2"> <div class="input-group"> @@ -236,7 +228,7 @@ <!-- Summary --> <div class="form-group" ng-class="{'has-error' : documentForm.summary.$invalid && !documentForm.summary.$pristine}"> - <label class="col-md-2 control-label">Summary *</label> + <label class="col-md-2 control-label">{{ 'document.metadata.summary' | translate }} *</label> <div class="col-md-10"> <textarea type="text" class="form-control" name="summary" rows="5" @@ -244,13 +236,13 @@ ng-model="document.summary" required/> <p ng-show="documentForm.summary.$invalid && !documentForm.summary.$pristine" - class="help-block">A summary is required.</p> + class="help-block">{{ 'document.message.requiredSummary' | translate }}</p> </div> </div> <!-- Comment --> <div class="form-group" > - <label class="col-md-2 control-label">Comment</label> + <label class="col-md-2 control-label">{{ 'document.metadata.comment' | translate }}</label> <div class="col-md-10"> <textarea type="text" class="form-control" name="comment" rows="5" diff --git a/coselmar-ui/src/main/webapp/views/documents/viewDocument.html b/coselmar-ui/src/main/webapp/views/documents/viewDocument.html index 34313b4..3a92f53 100644 --- a/coselmar-ui/src/main/webapp/views/documents/viewDocument.html +++ b/coselmar-ui/src/main/webapp/views/documents/viewDocument.html @@ -8,79 +8,79 @@ <div> <table class="table table-striped"> <tr> - <td>File Name</td> + <td>{{ 'document.metadata.name' | translate }}</td> <td>{{document.name}}</td> </tr> <tr> - <td>Depositor</td> + <td>{{ 'document.metadata.depositor' | translate }}</td> <td>{{document.ownerName}}</td> </tr> <tr> - <td>Type</td> + <td>{{ 'document.metadata.type' | translate }}</td> <td>{{document.type}}</td> </tr> <tr> - <td>Keywords</td> + <td>{{ 'document.metadata.keywords' | translate }}</td> <td>{{document.keywords}}</td> </tr> <tr> - <td>Privacy</td> + <td>{{ 'document.metadata.privacy' | translate }}</td> <td>{{document.privacy}}</td> </tr> <tr> - <td>Deposite Date</td> + <td>{{ 'document.metadata.depositDate' | translate }}</td> <td>{{document.depositDate | date:'mediumDate'}}</td> </tr> <tr> - <td>Summary</td> + <td>{{ 'document.metadata.summary' | translate }}</td> <td>{{document.summary}}</td> </tr> <tr> - <td>Authors</td> + <td>{{ 'document.metadata.authors' | translate }}</td> <td>{{document.authors}}</td> </tr> <tr> - <td>Copyright</td> + <td>{{ 'document.metadata.copyright' | translate }}</td> <td>{{document.copyright}}</td> </tr> <tr> - <td>License</td> + <td>{{ 'document.metadata.licence' | translate }}</td> <td>{{document.license}}</td> </tr> <tr> - <td>Language</td> + <td>{{ 'document.metadata.language' | translate }}</td> <td>{{document.language}}</td> </tr> <tr> - <td>PublicationDate</td> + <td>{{ 'document.metadata.publicationDate' | translate }}</td> <td>{{document.publicationDate | date:'mediumDate'}}</td> </tr> <tr> - <td>Document type</td> + <td>{{ 'document.metadata.type' | translate }}</td> <td ng-if="document.withFile">{{document.mimeType}}</td> - <td ng-if="!document.withFile">External Link</td> + <td ng-if="!document.withFile">{{ 'document.metadata.externalLink' | translate }}</td> </tr> <tr ng-if="document.withFile && document.fileName"> - <td>Document File</td> + <td>{{ 'document.metadata.fileName' | translate }}</td> <td>{{document.fileName}}</td> </tr> <tr> - <td>Comment</td> + <td>{{ 'document.metadata.comment' | translate }}</td> <td>{{document.comment}}</td> </tr> <tr> - <td>Questions with the document</td> + <td>{{ 'document.metadata.view.relatedQuestions' | translate }}</td> <td>{{document.relatedQuestions.length || 0}}</td> </tr> </table> <div class="float-right"> <a class="btn btn-action btn-edit" ng-click="edit()" ng-if="editSession != true && canEdit"> - <span class="fa fa-edit" aria-hidden="true"></span>Edit + <span class="fa fa-edit" aria-hidden="true"></span>{{ 'common.button.edit' | translate }} </a> - <a href="{{container.baseUrl}}/documents/{{document.id}}/file" class="btn btn-action btn-success" ng-if="document.withFile">Download</a> - <a href="{{document.externalUrl}}" target="_blank" class="btn btn-action btn-success" ng-if="document.externalUrl">Open Link</a> + <a href="{{container.baseUrl}}/documents/{{document.id}}/file" class="btn btn-action btn-success" ng-if="document.withFile">{{ 'document.button.download' | translate }}</a> + <a href="{{document.externalUrl}}" target="_blank" class="btn btn-action btn-success" ng-if="document.externalUrl">{{ 'document.button.openLink' | translate }}</a> <a class="btn btn-action btn-disable" ng-if="currentUser.role == 'ADMIN'" ng-confirm-message="Do you really want to delete this document ?" - ng-confirm-click="deleteDocument(document.id)">Delete</a> + ng-confirm-click="deleteDocument(document.id)">{{ 'common.button.delete' | translate }}</a> </div> </div> \ No newline at end of file diff --git a/pom.xml b/pom.xml index cca7369..6785227 100644 --- a/pom.xml +++ b/pom.xml @@ -147,6 +147,7 @@ <angularUiSelectVersion>0.9.0</angularUiSelectVersion> <angularUiBootstrapVersion>0.12.0</angularUiBootstrapVersion> + <angularTranslateVersion>2.5.2</angularTranslateVersion> </properties> @@ -389,6 +390,13 @@ <scope>runtime</scope> </dependency> + <dependency> + <groupId>org.webjars</groupId> + <artifactId>angular-translate</artifactId> + <version>${angularTranslateVersion}</version> + <scope>runtime</scope> + </dependency> + <!-- Others --> <dependency> <groupId>com.github.spullara.mustache.java</groupId> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git commit c7383c1e45910545c25c213e9c8417de613852a3 Author: Yannick Martel <martel@©odelutin.com> Date: Thu Jan 22 17:52:22 2015 +0100 i18n question part --- coselmar-ui/src/main/webapp/i18n/en.js | 44 ++++++++++++++++++ .../main/webapp/views/documents/viewDocument.html | 2 +- .../main/webapp/views/questions/closeQuestion.html | 14 +++--- .../main/webapp/views/questions/editquestion.html | 44 +++++++++--------- .../views/questions/modalQuestionSearch.html | 12 ++--- .../webapp/views/questions/newDocumentsPart.html | 12 ++--- .../main/webapp/views/questions/newquestion.html | 4 +- .../src/main/webapp/views/questions/question.html | 16 +++---- .../src/main/webapp/views/questions/questions.html | 24 +++++----- .../views/questions/viewRestrictedQuestion.html | 6 +-- .../main/webapp/views/questions/viewquestion.html | 52 +++++++++++----------- 11 files changed, 137 insertions(+), 93 deletions(-) diff --git a/coselmar-ui/src/main/webapp/i18n/en.js b/coselmar-ui/src/main/webapp/i18n/en.js index b922b0b..663f472 100644 --- a/coselmar-ui/src/main/webapp/i18n/en.js +++ b/coselmar-ui/src/main/webapp/i18n/en.js @@ -22,6 +22,7 @@ var translateEN = { "document.modalSearch.title" : "Search Documents", "document.button.add" : "Add a document", "document.message.delete" : "Do you really want to delete this document ?", +"document.view.title" : "Document's details", "document.create.title" : "New document", "document.create.info" : "Here you can add a new document in the repository. For each document,\ some keywords are needed to make easier search of the document, and you\ @@ -65,6 +66,49 @@ var translateEN = { "document.button.download" : "Download", "document.button.openLink" : "Open link", +//Questions part + +"question.list.title" : "Questions", +"question.add.title" : "Add a question", +"question.newDocument.title" : "Contribute with new documents", +"question.modal.parents.title" : "Assign parent question", + +"question.metadata.title" : "Title", +"question.metadata.type" : "Type", +"question.metadata.privacy" : "Visibility", +"question.metadata.themes" : "Themes", +"question.metadata.submissionDate" : "Submission date", +"question.metadata.deadline" : "Deadline", +"question.metadata.summary" : "Summary", +"question.metadata.status" : "Status", +"question.metadata.supervisors" : "Supervisors", +"question.metadata.experts" : "Experts", +"question.metadata.externalExperts" : "External experts", +"question.metadata.clients" : "Clients", +"question.metadata.contributors" : "Contributors", +"question.metadata.relatedDocuments" : "Related documents", +"question.metadata.conclusion" : "Conclusion", +"question.metadata.conclusionDocuments" : "Conclusion Documents", +"question.metadata.parents" : "Parent questions", +"question.metadata.parentsPhrase" : "Produced or inspired by", +"question.metadata.childrenPhrase" : "Has produced or inspired", +"question.metadata.participants" : "Participants", + +"question.button.add" : "Add a question", +"question.button.reopen" : "Reopen", +"question.button.close" : "Close", +"question.button.close.fullText" : "Close this question", +"question.button.adjourn" : "Adjourn", +"question.button.validateChanges" : "Valide changes", +"question.button.validateNewDocuments" : "Valide new documents", + +"question.message.notAvailable" : "Cette question n'est pas disponible à la consultation.", +"question.message.notAllowedToCreate" : "You're not allowed to create question", +"question.message.delete" : "Do you really want to delete this question ?", +"question.message.closedOn" : "Closed on ", + +//Common part + "common.privacy.private" : "Private", "common.privacy.public" : "Public", "common.privacy.restricted" : "Restricted", diff --git a/coselmar-ui/src/main/webapp/views/documents/viewDocument.html b/coselmar-ui/src/main/webapp/views/documents/viewDocument.html index 3a92f53..9c641e9 100644 --- a/coselmar-ui/src/main/webapp/views/documents/viewDocument.html +++ b/coselmar-ui/src/main/webapp/views/documents/viewDocument.html @@ -2,7 +2,7 @@ <div class="page-header" style="margin: 0"> <h1> <!-- Heading goes here --> - Document's Details + {{ 'document.view.title' | translate }} </h1> </div> <div> diff --git a/coselmar-ui/src/main/webapp/views/questions/closeQuestion.html b/coselmar-ui/src/main/webapp/views/questions/closeQuestion.html index 11ead0d..583e98d 100644 --- a/coselmar-ui/src/main/webapp/views/questions/closeQuestion.html +++ b/coselmar-ui/src/main/webapp/views/questions/closeQuestion.html @@ -28,7 +28,7 @@ ng-class="{'has-error' : questionForm.summary.$invalid && !questionForm.summary.$pristine}"> <dl> - <dt>Conclusion</dt> + <dt>{{ 'question.metadata.conclusion' | translate }}</dt> </dl> <dd> @@ -41,15 +41,15 @@ <dl> - <dt>Conclusion Documents</dt> + <dt>{{ 'question.metadata.conclusionDocuments' | translate }}</dt> <dd> <table class="table table-bordered table-condensed"> <tr> - <th>Name</th> - <th>Owner</th> - <th>Keywords</th> - <th>Deposit Date</th> + <th>{{ 'document.metadata.name' | translate }}</th> + <th>{{ 'document.metadata.depositor' | translate }}</th> + <th>{{ 'document.metadata.keywords' | translate }}</th> + <th>{{ 'document.metadata.depositDate' | translate }}</th> <th> <a class="btn fa fa-search" title="Search document" ng-click="modalSearchDocuments(question.closingDocuments)"/> @@ -73,7 +73,7 @@ </div> <a class="btn btn-action btn-success" ng-click="closeQuestion()"> - <span class="fa fa-check-square-o" aria-hidden="true"></span>Close this question + <span class="fa fa-check-square-o" aria-hidden="true"></span>{{ 'question.button.close.fullText' | translate }} </a> </div> \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/views/questions/editquestion.html b/coselmar-ui/src/main/webapp/views/questions/editquestion.html index e5a90b0..89fe5ba 100644 --- a/coselmar-ui/src/main/webapp/views/questions/editquestion.html +++ b/coselmar-ui/src/main/webapp/views/questions/editquestion.html @@ -24,7 +24,7 @@ <!-- Line with Title --> <div class="form-group row" ng-class="{'has-error' : questionForm.title.$invalid && !questionForm.title.$pristine }"> - <label class="col-md-2 control-label">Title *</label> + <label class="col-md-2 control-label">{{ 'question.metadata.title' | translate }} *</label> <div class="col-md-10"> <input type="text" class="form-control" name="title" ng-minlength="10" @@ -42,7 +42,7 @@ <div class="form-group row"> <div class="" ng-class="{'has-error' : questionForm.type.$invalid && !questionForm.type.$pristine}"> - <label class="col-md-2 control-label">Type *</label> + <label class="col-md-2 control-label">{{ 'question.metadata.type' | translate }} *</label> <div class="col-md-2 "> <input type="text" class="form-control" name="type" @@ -56,7 +56,7 @@ </div> <div class=""> - <label class="col-md-2 control-label">Visibility</label> + <label class="col-md-2 control-label">{{ 'question.metadata.privacy' | translate }}</label> <div class="col-md-2"> <select class="form-control" name="privacy" ng-model="question.privacy"> @@ -68,7 +68,7 @@ </div> <div class="" > - <label class="col-md-2 control-label">Deadline</label> + <label class="col-md-2 control-label">{{ 'question.metadata.deadline' | translate }}</label> <div class="col-md-2"> <input type="text" class="form-control" name="deadline" @@ -87,7 +87,7 @@ <div class="form-group" ng-class="{'has-error' : questionForm.summary.$invalid && !questionForm.summary.$pristine}"> - <label class="col-md-2 control-label">Summary *</label> + <label class="col-md-2 control-label">{{ 'question.metadata.summary' | translate }} *</label> <div class="col-md-10"> <textarea type="text" class="form-control" name="summary" rows="8" @@ -108,7 +108,7 @@ ng-class="{'has-error' : question.themes.$invalid && question.themes.length < 1 && !questionForm.themes.$pristine}"> - <label class="col-md-2 control-label">Themes *</label> + <label class="col-md-2 control-label">{{ 'question.metadata.themes' | translate }} *</label> <div class="col-md-2"> <input type="text" class="form-control" name="themes" @@ -123,7 +123,7 @@ </datalist> <div class="col-md-1"> - <button class="btn btn-primary" value="add" ng-click="addTheme(toAddTheme); toAddTheme=''">add</button> + <button class="btn btn-primary" value="add" ng-click="addTheme(toAddTheme); toAddTheme=''">{{ 'common.button.add' | translate }}</button> </div> @@ -147,7 +147,7 @@ <div class=""> - <label class="col-md-2 control-label">Experts</label> + <label class="col-md-2 control-label">{{ 'question.metadata.experts' | translate }}</label> <div class="col-md-4"> @@ -172,7 +172,7 @@ </div> <div class=""> - <label class="col-md-2 control-label">Clients</label> + <label class="col-md-2 control-label">{{ 'question.metadata.clients' | translate }}</label> <div class="col-md-4"> @@ -208,7 +208,7 @@ <div class=""> - <label class="col-md-2 control-label">External Experts</label> + <label class="col-md-2 control-label">{{ 'question.metadata.externalExperts' | translate }}</label> <div class="col-md-4"> @@ -220,7 +220,7 @@ </div> <div class=""> - <label class="col-md-2 control-label">Supervisors</label> + <label class="col-md-2 control-label">{{ 'question.metadata.supervisors' | translate }}</label> <div class="col-md-4"> @@ -255,15 +255,15 @@ <div class="form-group" > - <label class="col-md-2 control-label">Parent Questions</label> + <label class="col-md-2 control-label">{{ 'question.metadata.parents' | translate }}</label> <div class="col-md-10"> <table class="table table-bordered table-condensed"> <tr> - <th>Title</th> - <th>Submission Date</th> - <th>Themes</th> - <th>Status</th> + <th>{{ 'question.metadata.title' | translate }}</th> + <th>{{ 'question.metadata.submissionDate' | translate }}</th> + <th>{{ 'question.metadata.themes' | translate }}</th> + <th>{{ 'question.metadata.status' | translate }}</th> <th> <a class="btn fa fa-search" title="Search parent question" ng-click="modalSearchParents()" /> @@ -292,16 +292,16 @@ <div class="form-group" > - <label class="col-md-2 control-label">Related Documents</label> + <label class="col-md-2 control-label">{{ 'question.metadata.relatedDocuments' | translate }}</label> <div class="col-md-10"> <table class="table table-bordered table-condensed"> <tr> - <th>Name</th> - <th>Authors</th> - <th>Keywords</th> - <th>Depositor</th> - <th>Deposit Date</th> + <th>{{ 'document.metadata.name' | translate }}</th> + <th>{{ 'document.metadata.authors' | translate }}</th> + <th>{{ 'document.metadata.keywords' | translate }}</th> + <th>{{ 'document.metadata.depositor' | translate }}</th> + <th>{{ 'document.metadata.depositDate' | translate }}</th> <th> <a class="btn fa fa-search" title="Search document" ng-click="modalSearchDocuments(question.relatedDocuments)" /> diff --git a/coselmar-ui/src/main/webapp/views/questions/modalQuestionSearch.html b/coselmar-ui/src/main/webapp/views/questions/modalQuestionSearch.html index 68a2ce8..14c986e 100644 --- a/coselmar-ui/src/main/webapp/views/questions/modalQuestionSearch.html +++ b/coselmar-ui/src/main/webapp/views/questions/modalQuestionSearch.html @@ -25,7 +25,7 @@ <div class="page-header"> <h1> <!-- Heading goes here --> - Assign Parent Question + {{ 'question.modal.parents.title' | translate }} </h1> </div> @@ -43,10 +43,10 @@ <br/> <table class="table"> <tr> - <th>Title</th> - <th>Submission Date</th> - <th>Theme</th> - <th>Status</th> + <th>{{ 'question.metadata.title' | translate }}</th> + <th>{{ 'question.metadata.submissionDate' | translate }}</th> + <th>{{ 'question.metadata.themes' | translate }}</th> + <th>{{ 'question.metadata.status' | translate }}</th> <th></th> </tr> <tr ng-repeat="question in questions"> @@ -66,6 +66,6 @@ </table> </div> <div class="modal-footer"> - <button class="btn btn-warning" ng-click="cancel()">Cancel</button> + <button class="btn btn-warning" ng-click="cancel()">{{ 'common.button.cancel' | translate }}</button> </div> </div> \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/views/questions/newDocumentsPart.html b/coselmar-ui/src/main/webapp/views/questions/newDocumentsPart.html index 2e67586..f08d889 100644 --- a/coselmar-ui/src/main/webapp/views/questions/newDocumentsPart.html +++ b/coselmar-ui/src/main/webapp/views/questions/newDocumentsPart.html @@ -27,16 +27,16 @@ <dl> - <dt>Contribute with new Documents</dt> + <dt>{{ 'question.newDocument.title' | translate }}</dt> <dd> <table class="table table-bordered table-condensed"> <tr> - <th>Name</th> - <th>Authors</th> - <th>Keywords</th> - <th>Depositor</th> - <th>Deposit Date</th> + <th>{{ 'document.metadata.name' | translate }}</th> + <th>{{ 'document.metadata.authors' | translate }}</th> + <th>{{ 'document.metadata.keywords' | translate }}</th> + <th>{{ 'document.metadata.depositor' | translate }}</th> + <th>{{ 'document.metadata.depositDate' | translate }}</th> <th> <a class="btn fa fa-search" title="Search document" ng-click="modalSearchDocuments(question.newRelatedDocuments)"/> diff --git a/coselmar-ui/src/main/webapp/views/questions/newquestion.html b/coselmar-ui/src/main/webapp/views/questions/newquestion.html index 93e0e54..03a33bc 100644 --- a/coselmar-ui/src/main/webapp/views/questions/newquestion.html +++ b/coselmar-ui/src/main/webapp/views/questions/newquestion.html @@ -23,7 +23,7 @@ --> <div style="padding: 0px 0px 0px 30px"> <div class="page-header" style="margin: 0"> - <h2>Add a question</h2> + <h2>{{ 'question.add.title' | translate }}</h2> </div> <div style="padding-bottom: 50px" ng-if="currentUser.role == 'SUPERVISOR'"> @@ -41,7 +41,7 @@ </div> <div style="padding-bottom: 50px" ng-if="currentUser.role != 'SUPERVISOR'"> - You are not allowed to create question. + {{ 'question.message.notAllowedToCreate' | translate }} </div> </div> \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/views/questions/question.html b/coselmar-ui/src/main/webapp/views/questions/question.html index 0cf8ad8..d7bc855 100644 --- a/coselmar-ui/src/main/webapp/views/questions/question.html +++ b/coselmar-ui/src/main/webapp/views/questions/question.html @@ -26,7 +26,7 @@ <h2> {{question.title}} <a class="btn btn-action btn-edit pull-right" ng-click="edit()" ng-if="editSession != true && currentUser.role == 'SUPERVISOR'"> - <span class="fa fa-edit" aria-hidden="true"></span>Edit + <span class="fa fa-edit" aria-hidden="true"></span>{{ 'common.button.edit' | translate }} </a> </h2> </div> @@ -45,14 +45,14 @@ <form name="questionForm" class="form-horizontal" role="form"> <div ng-include="src='views/questions/editquestion.html'"></div> <div class="form-group" style="padding-left: 200px"><a class="btn btn-action btn-success" ng-click="saveQuestion(true)"> - <span class="fa fa-check-square-o" aria-hidden="true"></span>Validate changes + <span class="fa fa-check-square-o" aria-hidden="true"></span>{{ 'question.button.validateChanges' | translate }} </a></div> </form> </div> <!-- bottom part : close and action --> <div class="text-center" ng-if="question.closingDate"> - Closed on {{question.closingDate | date:'medium' }}. + {{ 'question.message.closedOn' | translate }} {{question.closingDate | date:'medium' }}. </div> <div ng-include="src='views/questions/closeQuestion.html'" @@ -61,29 +61,29 @@ <div class="text-center" ng-if="question.closingDate && currentUser.role == 'SUPERVISOR' && editSession == false"> <a class="btn btn-action btn-success" ng-click="reopenQuestion()"> - <span class="fa fa-check-square-o" aria-hidden="true"></span>Reopen + <span class="fa fa-check-square-o" aria-hidden="true"></span>{{ 'question.button.reopen' | translate }} </a> </div> <div class="text-center" ng-if="!question.closingDate && currentUser.role == 'SUPERVISOR' && editSession == false && !closeSession"> <a class="btn btn-action btn-success" ng-click="openCloseQuestionSession()"> - <span class="fa fa-check-square-o" aria-hidden="true"></span>Close + <span class="fa fa-check-square-o" aria-hidden="true"></span>{{ 'question.button.close' | translate }} </a> - <a class="btn btn-action btn-edit" ng-click="adjournQuestion()"> - <span class="fa fa-edit" aria-hidden="true"></span>Adjourn + <span class="fa fa-edit" aria-hidden="true"></span>{{ 'question.button.adjourn' | translate }} </a> - <a class="btn btn-action btn-disable" ng-confirm-message="Do you really want to delete this question ?" ng-confirm-click="deleteQuestion()"> - <span class="fa fa-remove" aria-hidden="true"></span>Delete + <span class="fa fa-remove" aria-hidden="true"></span>{{ 'common.button.delete' | translate }} </a> </div> <div class="text-center" ng-if="!question.closingDate && isCurrentParticipant && editSession == false && question.newRelatedDocuments.length > 0"> <a class="btn btn-action btn-success" ng-click="validateNewDocuments()"> - <span class="fa fa-check-square-o" aria-hidden="true"></span>Validate new documents + <span class="fa fa-check-square-o" aria-hidden="true"></span>{{ 'question.button.validateNewDocuments' | translate }} </a> </div> diff --git a/coselmar-ui/src/main/webapp/views/questions/questions.html b/coselmar-ui/src/main/webapp/views/questions/questions.html index 4eb4578..b1b565a 100644 --- a/coselmar-ui/src/main/webapp/views/questions/questions.html +++ b/coselmar-ui/src/main/webapp/views/questions/questions.html @@ -26,14 +26,14 @@ <div class="page-header"> <h1> <!-- Heading goes here --> - Questions + {{ 'question.list.title' | translate }} </h1> </div> <div> <div> <div class="form-group" ng-if="currentUser.role == 'SUPERVISOR'"> - <a href="#/questions/new" class="form-inline navbar-left btn btn-primary">Add a Question</a> + <a href="#/questions/new" class="form-inline navbar-left btn btn-primary">{{ 'question.button.add' | translate }}</a> </div> <form class="form-inline pull-right" role="questionOptions" ng-submit="searchQuestions()"> <div class="form-group"> @@ -47,14 +47,14 @@ <br/> <table class="table"> <tr> - <th>Title</th> - <th>Submission Date</th> - <th>Themes</th> - <th>DeadLine</th> - <th ng-if="currentUser.role != 'MEMBER' && currentUser.role != 'CLIENT'">Clients</th> - <th ng-if="currentUser.role != 'MEMBER' && currentUser.role != 'CLIENT'">Participants</th> - <th ng-if="currentUser.role != 'MEMBER' && currentUser.role != 'CLIENT'">Documents</th> - <th ng-if="currentUser.role == 'MEMBER' || currentUser.role == 'CLIENT'">Status</th> + <th>{{ 'question.metadata.title' | translate }}</th> + <th>{{ 'question.metadata.submissionDate' | translate }}</th> + <th>{{ 'question.metadata.themes' | translate }}</th> + <th>{{ 'question.metadata.deadline' | translate }}</th> + <th ng-if="currentUser.role != 'MEMBER' && currentUser.role != 'CLIENT'">{{ 'question.metadata.clients' | translate }}</th> + <th ng-if="currentUser.role != 'MEMBER' && currentUser.role != 'CLIENT'">{{ 'question.metadata.participants' | translate }}</th> + <th ng-if="currentUser.role != 'MEMBER' && currentUser.role != 'CLIENT'">{{ 'question.metadata.relatedDocuments' | translate }}</th> + <th ng-if="currentUser.role == 'MEMBER' || currentUser.role == 'CLIENT'">{{ 'question.metadata.status' | translate }}</th> <th></th> </tr> <tr ng-repeat="question in questions" > @@ -92,10 +92,10 @@ <!--ng-if="currentUser.role == 'SUPERVISOR'">--> <!--<span class="fa fa-close" aria-hidden="true"></span>Close</a>--> <a class="btn btn-action btn-disable" - ng-confirm-message="Do you really want to delete this question ?" + ng-confirm-message="question.message.delete" ng-confirm-click="deleteQuestion(question.id)" ng-if="currentUser.role == 'SUPERVISOR' || currentUser.role == 'ADMIN'"> - <span class="fa fa-close" aria-hidden="true"></span>Delete</a> + <span class="fa fa-close" aria-hidden="true"></span>{{ 'common.button.delete' | translate }}</a> </td> </tr> </table> diff --git a/coselmar-ui/src/main/webapp/views/questions/viewRestrictedQuestion.html b/coselmar-ui/src/main/webapp/views/questions/viewRestrictedQuestion.html index a2e31cb..b73dcb0 100644 --- a/coselmar-ui/src/main/webapp/views/questions/viewRestrictedQuestion.html +++ b/coselmar-ui/src/main/webapp/views/questions/viewRestrictedQuestion.html @@ -25,13 +25,13 @@ <div class=""> <div class="form-group col-md-12"> - <h4>Cette question n'est pas disponible à la consultation.</h4> + <h4>{{ 'question.message.notAvailable' | translate }}</h4> </div> <div class="form-group col-md-12"> <div class="col-md-6"> <dl> - <dt>Produced or inspired by</dt> + <dt>{{ 'question.metadata.parentsPhrase' | translate }}</dt> <dd> <ul> <li ng-repeat="parent in question.parents"> @@ -43,7 +43,7 @@ </div> <div class="col-md-6"> <dl> - <dt>Has produced or inspired</dt> + <dt>{{ 'question.metadata.childrenPhrase' | translate }}</dt> <dd> <ul> <li ng-repeat="child in question.children"> diff --git a/coselmar-ui/src/main/webapp/views/questions/viewquestion.html b/coselmar-ui/src/main/webapp/views/questions/viewquestion.html index 1bb35cb..a9efc6c 100644 --- a/coselmar-ui/src/main/webapp/views/questions/viewquestion.html +++ b/coselmar-ui/src/main/webapp/views/questions/viewquestion.html @@ -27,25 +27,25 @@ <div class="form-group col-md-12"> <div class="col-md-3"> <dl> - <dt>Question Type</dt> + <dt>{{ 'question.metadata.type' | translate }}</dt> <dd>{{question.type}}</dd> </dl> </div> <div class="col-md-3"> <dl> - <dt>Privacy</dt> + <dt>{{ 'question.metadata.privacy' | translate }}</dt> <dd>{{question.privacy | lowercase}}</dd> </dl> </div> <div class="col-md-3"> <dl> - <dt>Submission Date</dt> + <dt>{{ 'question.metadata.submissionDate' | translate }}</dt> <dd>{{question.submissionDate | date:'mediumDate'}}</dd> </dl> </div> <div class="col-md-3" ng-if="question.deadline"> <dl> - <dt>Deadline</dt> + <dt>{{ 'question.metadata.deadline' | translate }}</dt> <dd>{{question.deadline | date:'mediumDate'}}</dd> </dl> </div> @@ -54,7 +54,7 @@ <div class="form-group col-md-12"> <div class="col-md-12" > <dl> - <dt>Summary</dt> + <dt>{{ 'question.metadata.summary' | translate }}</dt> <dd>{{question.summary}}</dd> </dl> </div> @@ -63,7 +63,7 @@ <div class="form-group col-md-12"> <div class="col-md-4"> <dl> - <dt>Themes</dt> + <dt>{{ 'question.metadata.themes' | translate }}</dt> <dd> <ul> <li ng-if="question.themes" ng-repeat="theme in question.themes"> @@ -76,7 +76,7 @@ <div class="col-md-4"> <dl> - <dt>Supervisors</dt> + <dt>{{ 'question.metadata.supervisors' | translate }}</dt> <dd> <ul> <li ng-if="question.supervisors" ng-repeat="supervisor in question.supervisors"> @@ -89,7 +89,7 @@ <div class="cold-md-4"> <dl> - <dt>Status</dt> + <dt>{{ 'question.metadata.status' | translate }}</dt> <dd>{{question.status}}</dd> </dl> </div> @@ -98,7 +98,7 @@ <div class="form-group col-md-12"> <div class="col-md-4"> <dl> - <dt>Experts</dt> + <dt>{{ 'question.metadata.experts' | translate }}</dt> <dd> <ul> <li ng-if="question.participants" ng-repeat="participant in question.participants"> @@ -113,7 +113,7 @@ <div class="col-md-4"> <dl> - <dt>Clients</dt> + <dt>{{ 'question.metadata.clients' | translate }}</dt> <dd> <ul> <li ng-if="question.clients" ng-repeat="client in question.clients"> @@ -126,7 +126,7 @@ <div class="col-md-4"> <dl> - <dt>Contributors</dt> + <dt>{{ 'question.metadata.contributors' | translate }}</dt> <dd> <ul> <li ng-if="question.contributors" ng-repeat="contributor in question.contributors"> @@ -142,16 +142,16 @@ ng-if="currentUser.role == 'SUPERVISOR' || isCurrentParticipant "> <dl> - <dt>Related Documents</dt> + <dt>{{ 'question.metadata.relatedDocuments' | translate }}</dt> <dd> <table class="table table-bordered table-condensed"> <tr> - <th>Name</th> - <th>Authors</th> - <th>Keywords</th> - <th>Depositor</th> - <th>Deposit Date</th> + <th>{{ 'document.metadata.name' | translate }}</th> + <th>{{ 'document.metadata.authors' | translate }}</th> + <th>{{ 'document.metadata.keywords' | translate }}</th> + <th>{{ 'document.metadata.depositor' | translate }}</th> + <th>{{ 'document.metadata.depositDate' | translate }}</th> </tr> <tr ng-repeat="document in question.relatedDocuments"> <td><a href="#/documents/{{document.id}}" target="_blank">{{document.name}}</a></td> @@ -170,7 +170,7 @@ ng-if="question.closingDate && question.conclusion"> <div class="col-md-12" > <dl> - <dt>Conclusion</dt> + <dt>{{ 'question.metadata.conclusion' | translate }}</dt> <dd>{{question.conclusion}}</dd> </dl> </div> @@ -181,16 +181,16 @@ && question.closingDocuments.length > 0"> <dl> - <dt>Conclusion Documents</dt> + <dt>{{ 'question.metadata.conclusionDocuments' | translate }}</dt> <dd> <table class="table table-bordered table-condensed"> <tr> - <th>Name</th> - <th>Authors</th> - <th>Keywords</th> - <th>Depositor</th> - <th>Deposit Date</th> + <th>{{ 'document.metadata.name' | translate }}</th> + <th>{{ 'document.metadata.authors' | translate }}</th> + <th>{{ 'document.metadata.keywords' | translate }}</th> + <th>{{ 'document.metadata.depositor' | translate }}</th> + <th>{{ 'document.metadata.depositDate' | translate }}</th> </tr> <tr ng-repeat="document in question.closingDocuments"> <td><a href="#/documents/{{document.id}}" target="_blank">{{document.name}}</a></td> @@ -208,7 +208,7 @@ <div class="form-group col-md-12"> <div class="col-md-6"> <dl> - <dt>Produced or inspired by</dt> + <dt>{{ 'question.metadata.parentsPhrase' | translate }}</dt> <dd> <ul> <li ng-repeat="parent in question.parents"> @@ -220,7 +220,7 @@ </div> <div class="col-md-6"> <dl> - <dt>Has produced or inspired</dt> + <dt>{{ 'question.metadata.childrenPhrase' | translate }}</dt> <dd> <ul> <li ng-repeat="child in question.children"> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git commit 0429979fb6bd8929572fe7348098e7ef0d52dae1 Author: Yannick Martel <martel@©odelutin.com> Date: Thu Jan 22 17:56:39 2015 +0100 i18n question part --- coselmar-ui/src/main/webapp/i18n/en.js | 5 +++++ .../src/main/webapp/views/questions/editquestion.html | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/coselmar-ui/src/main/webapp/i18n/en.js b/coselmar-ui/src/main/webapp/i18n/en.js index 663f472..5f9efa7 100644 --- a/coselmar-ui/src/main/webapp/i18n/en.js +++ b/coselmar-ui/src/main/webapp/i18n/en.js @@ -94,6 +94,11 @@ var translateEN = { "question.metadata.childrenPhrase" : "Has produced or inspired", "question.metadata.participants" : "Participants", +"question.message.requiredTitle" : "Title is required, minimum 10 characters.", +"question.message.requiredType" : "Type is required.", +"question.message.requiredSummary" : "A summary is required.", +"question.message.requiredThemes" : "At least one theme is required.", + "question.button.add" : "Add a question", "question.button.reopen" : "Reopen", "question.button.close" : "Close", diff --git a/coselmar-ui/src/main/webapp/views/questions/editquestion.html b/coselmar-ui/src/main/webapp/views/questions/editquestion.html index 89fe5ba..b29f2d7 100644 --- a/coselmar-ui/src/main/webapp/views/questions/editquestion.html +++ b/coselmar-ui/src/main/webapp/views/questions/editquestion.html @@ -30,7 +30,7 @@ <input type="text" class="form-control" name="title" ng-minlength="10" placeholder="Question Title" ng-model="question.title" required/> - <p ng-show="questionForm.title.$invalid && !questionForm.title.$pristine" class="help-block">Title is required, minimum 10 characters.</p> + <p ng-show="questionForm.title.$invalid && !questionForm.title.$pristine" class="help-block">{{ 'question.message.requiredTitle' | translate }}</p> </div> </div> @@ -47,7 +47,7 @@ <div class="col-md-2 "> <input type="text" class="form-control" name="type" data-ng-model="question.type" list="existingTypes" required/> - <p ng-show="questionForm.type.$invalid && !questionForm.type.$pristine" class="help-block">Type is required.</p> + <p ng-show="questionForm.type.$invalid && !questionForm.type.$pristine" class="help-block">{{ 'question.message.requiredType' | translate }}</p> </div> <datalist id="existingTypes"> <option data-ng-repeat="type in existing.types" value="{{type}}"> @@ -60,8 +60,8 @@ <div class="col-md-2"> <select class="form-control" name="privacy" ng-model="question.privacy"> - <option value="PRIVATE">private</option> - <option value="PUBLIC">public</option> + <option value="PRIVATE">{{ 'common.privacy.private' | translate }}</option> + <option value="PUBLIC">{{ 'common.privacy.public' | translate }}</option> </select> </div> @@ -95,7 +95,7 @@ ng-model="question.summary" required/> <p ng-show="questionForm.summary.$invalid && !questionForm.summary.$pristine" - class="help-block">A summary is required.</p> + class="help-block">{{ 'question.message.requiredSummary' | translate }}</p> </div> </div> @@ -116,7 +116,7 @@ data-ng-model="toAddTheme" list="existingThemes" /> <p ng-show="question.themes.length < 1 && !questionForm.themes.$pristine" - class="help-block">At least one theme is required.</p> + class="help-block">{{ 'question.message.requiredThemes' | translate }}</p> </div> <datalist id="existingThemes"> <option data-ng-repeat="theme in existing.themes" value="{{theme}}"> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git commit 987afe439f3e425bceafd8250e90d87dba11d395 Author: Yannick Martel <martel@©odelutin.com> Date: Fri Jan 23 10:45:19 2015 +0100 i18n users part --- coselmar-ui/src/main/webapp/i18n/en.js | 55 +++++++++++++++++++++- .../src/main/webapp/views/users/adminUsers.html | 49 ++++++++++--------- .../src/main/webapp/views/users/edituser.html | 49 ++++++++++--------- .../src/main/webapp/views/users/newuser.html | 12 ++--- .../main/webapp/views/users/supervisorUsers.html | 48 +++++++++---------- coselmar-ui/src/main/webapp/views/users/user.html | 26 +++++----- coselmar-ui/src/main/webapp/views/users/users.html | 2 +- 7 files changed, 143 insertions(+), 98 deletions(-) diff --git a/coselmar-ui/src/main/webapp/i18n/en.js b/coselmar-ui/src/main/webapp/i18n/en.js index 5f9efa7..6ed10bb 100644 --- a/coselmar-ui/src/main/webapp/i18n/en.js +++ b/coselmar-ui/src/main/webapp/i18n/en.js @@ -112,6 +112,56 @@ var translateEN = { "question.message.delete" : "Do you really want to delete this question ?", "question.message.closedOn" : "Closed on ", +//Users part + +"user.list.title" : "All users", +"user.create.title" : "Add an user", +"user.create.info" : "Create new user, with one of following roles :\ + <ul>\ + <li>Supervisor : Kind of big manager, who relays member/client question and assigns expert on questions</li>\ + <li>Expert : Scientist, who can add new document in the repository and see other scientist documents (according file permission)</li>\ + <li>Member</li>\ + <li>Client</li>\ + </ul>", +"user.create.client.info" : "Create new user with Client role", + +"user.metadata.name" : "Name", +"user.metadata.firstName" : "First name", +"user.metadata.mail" : "Contact", +"user.metadata.phone" : "Phone number", +"user.metadata.qualification" : "Qualification", +"user.metadata.organization" : "Organization", +"user.metadata.role" : "role", +"user.metadata.status" : "Status", +"user.metadata.status.disable" : "Disable", +"user.metadata.status.enable" : "Active", +"user.metadata.password" : "Password", +"user.metadata.password.new" : "New Password", +"user.metadata.role.all" : "All", +"user.metadata.role.admin" : "Admin", +"user.metadata.role.supervisor" : "Supervisor", +"user.metadata.role.expert" : "Expert", +"user.metadata.role.member" : "Member", +"user.metadata.role.client" : "Client", + +"user.message.disable" : "Do you really want to disable this user ?", +"user.message.delete" : "Do you really want to delete this user ?", +"user.message.requiredFirsName" : "First name is required.", +"user.message.requiredName" : "Name is required.", +"user.message.invalidMail" : "Enter a valid mail.", +"user.message.requiredQualification" : "Qualification is required.", +"user.message.requiredPassword" : "Password is required to validate modification.", +"user.label.currentPasswordToValidate" : "Tape your current password to validate the modifications", +"user.message.wannaChangePassword" : "I want to change the password", +"user.message.tooShortPassword" : "New password should contain at least 6 characters.", +"user.message.passwordsNoMatch" : "The two new passwords don't match.", + +"user.button.add" : "Add an user", +"user.button.add.client" : "Add a client", +"user.button.disable" : "Disable", +"user.button.enable" : "Enable", +"user.button.showDisable" : "Show disable", + //Common part "common.privacy.private" : "Private", @@ -121,7 +171,10 @@ var translateEN = { "common.button.delete" : "Delete", "common.button.edit" : "Modify", "common.button.add" : "Add", -"common.button.cancel" : "Cancel", +"common.button.cancel" : "Cancel", +"common.button.search" : "Search", +"common.button.advanceSearch" : "Advance search", +"common.button.simpleSearch" : "Simple search", "common.message.missingMandatoryFields" : "Some mandatory field (*) have not been filled.", "common.message.notYetAvailable" : "Not yet available.", "common.message.mandatoryFieldsInfo" : "Field with <strong><big>*</big></strong> are mandatory.", diff --git a/coselmar-ui/src/main/webapp/views/users/adminUsers.html b/coselmar-ui/src/main/webapp/views/users/adminUsers.html index 766faa2..26dd36c 100644 --- a/coselmar-ui/src/main/webapp/views/users/adminUsers.html +++ b/coselmar-ui/src/main/webapp/views/users/adminUsers.html @@ -25,12 +25,12 @@ <div class="table-responsive" ng-if="currentUser.role == 'ADMIN'"> <div class="row"> <div class="form-group col-md-5"> - <a href="#/users/new" class="form-inline navbar-left btn btn-primary">Add an user</a> + <a href="#/users/new" class="form-inline navbar-left btn btn-primary">{{ 'user.button.add' | translate }}</a> </div> <form class="form-inline cold-md-7" name="userOptions" role="userOptions" ng-submit="searchUsers()" ng-if="!advanced"> <div class="form-group"> <input type="checkbox" class="form-control" ng-model="search.showDisable" /> - <span>Show Disable</span> + <span>{{ 'user.button.showDisable' | translate }}</span> </div> <div class="form-group"> <input type="search" class="form-control" placeholder="Search an user" ng-model="search.searchKeyword" /> @@ -42,10 +42,10 @@ </div> <div class="row"> <div class="form-group col-md-5" ng-show="!advanced"> - <a ng-click="advanced=true" class="fa fa-sort-down">Advanced Search</a> + <a ng-click="advanced=true" class="fa fa-sort-down">{{ 'common.button.advanceSearch' | translate }}</a> </div> <div class="form-group col-md-5" ng-show="advanced"> - <a ng-click="advanced=false" class="fa fa-sort-up">Simple Search</a> + <a ng-click="advanced=false" class="fa fa-sort-up">{{ 'common.button.simpleSearch' | translate }}</a> </div> </div> @@ -67,18 +67,18 @@ </td> <td class="form-group"> <select class="form-control" name="role" ng-model="example.role" title="role" > - <option value="ALL">All</option> - <option value="ADMIN">Admin</option> - <option value="SUPERVISOR">Supervisor</option> - <option value="EXPERT">Expert</option> - <option value="MEMBER">Member</option> - <option value="CLIENT">Client</option> + <option value="ALL">{{ 'user.metadata.role.all' | translate }}</option> + <option value="ADMIN">{{ 'user.metadata.role.admin' | translate }}</option> + <option value="SUPERVISOR">{{ 'user.metadata.role.supervisor' | translate }}</option> + <option value="EXPERT">{{ 'user.metadata.role.expert' | translate }}</option> + <option value="MEMBER">{{ 'user.metadata.role.member' | translate }}</option> + <option value="CLIENT">{{ 'user.metadata.role.client' | translate }}</option> </select> </td> <td class="form-group"> <select class="form-control" name="active" ng-model="example.active" title="active" > - <option value="true">Active</option> - <option value="false">Inactive</option> + <option value="true">{{ 'user.metadata.status.enable' | translate }}</option> + <option value="false">{{ 'user.metadata.status.disable' | translate }}</option> </select> </td> <td class="form-group text-center"> @@ -87,12 +87,12 @@ </form> </tr> <tr> - <th class="col-md-2">Name</th> - <th class="col-md-2">Mail</th> - <th class="col-md-2">Qualification</th> - <th class="col-md-2">Organization</th> - <th class="col-md-2">Role</th> - <th class="col-md-1">Status</th> + <th class="col-md-2">{{ 'user.metadata.name' | translate }}</th> + <th class="col-md-2">{{ 'user.metadata.mail' | translate }}</th> + <th class="col-md-2">{{ 'user.metadata.qualification' | translate }}</th> + <th class="col-md-2">{{ 'user.metadata.organization' | translate }}</th> + <th class="col-md-2">{{ 'user.metadata.role' | translate }}</th> + <th class="col-md-1">{{ 'user.metadata.status' | translate }}</th> <th class="col-md-1"></th> </tr> <tr ng-repeat="user in users"> @@ -101,22 +101,21 @@ <td>{{user.qualification}}</td> <td>{{user.organization}}</td> <td>{{user.role}}</td> - <td ng-if="user.active">Active</td> - <td ng-if="!user.active">Disable</td> + <td ng-if="user.active">{{ 'user.metadata.status.enable' | translate }}</td> + <td ng-if="!user.active">{{ 'user.metadata.status.disable' | translate }}</td> <td> <a class="btn btn-action btn-edit" href="#/users/{{user.id}}?edit"> - <span class="glyphicon glyphicon-edit" aria-hidden="true"></span>Modify + <span class="glyphicon glyphicon-edit" aria-hidden="true"></span>{{ 'common.button.edit' | translate }} </a> <a class="btn btn-action btn-disable" ng-if="user.active" - ng-confirm-message="Do you really want to disable this user ?" + ng-confirm-message="user.message.disable" ng-confirm-click="disableUser(user)"> - <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>Disable + <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>{{ 'user.button.disable' | translate }} </a> <a class="btn btn-action" ng-if="!user.active" ng-click="enableUser(user)"> - <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>Enable + <span class="glyphicon glyphicon-remove" aria-hidden="true"></span>{{ 'user.button.enable' | translate }} </a> - <!--<a class="btn btn-primary" ng-if="!user.active" ng-click="enableUser(user.id)">Enable</a>--> </td> </tr> </table> diff --git a/coselmar-ui/src/main/webapp/views/users/edituser.html b/coselmar-ui/src/main/webapp/views/users/edituser.html index 4faee3c..68f884b 100644 --- a/coselmar-ui/src/main/webapp/views/users/edituser.html +++ b/coselmar-ui/src/main/webapp/views/users/edituser.html @@ -32,67 +32,67 @@ <form name="userForm" class="form-horizontal" role="form" ng-submit="saveUser(userForm.$valid)"> <div class="form-group" ng-class="{'has-error' : userForm.firstName.$invalid && !userForm.firstName.$pristine }"> - <label class="col-md-4 control-label">First Name *</label> + <label class="col-md-4 control-label">{{ 'user.metadata.firsName' | translate }} *</label> <div class="col-md-5"> <input type="text" class="form-control" name="firstName" placeholder="FirstName" ng-model="user.firstName" required/> - <p ng-show="userForm.firstName.$invalid && !userForm.firstName.$pristine" class="help-block">First name is required.</p> + <p ng-show="userForm.firstName.$invalid && !userForm.firstName.$pristine" class="help-block">{{ 'user.message.requiredFirsName' | translate }}</p> </div> </div> <div class="form-group" ng-class="{'has-error' : userForm.name.$invalid && !userForm.name.$pristine}"> - <label class="col-md-4 control-label">Name *</label> + <label class="col-md-4 control-label">{{ 'user.metadata.name' | translate }} *</label> <div class="col-md-5"> <input type="text" class="form-control" name="name" placeholder="Name" ng-model="user.name" required/> - <p ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">Name is required.</p> + <p ng-show="userForm.name.$invalid && !userForm.name.$pristine" class="help-block">{{ 'user.message.requiredName' | translate }}</p> </div> </div> <div class="form-group" ng-if="currentUser.role == 'ADMIN'"> - <label class="col-md-4 control-label">Role *</label> + <label class="col-md-4 control-label">{{ 'user.metadata.role' | translate }} *</label> <div class="col-md-5"> <select class="form-control" name="role" ng-model="user.role" required> - <option value="ADMIN">Admin</option> - <option value="SUPERVISOR">Supervisor</option> - <option value="EXPERT">Expert</option> - <option value="MEMBER">Member</option> - <option value="CLIENT">Client</option> + <option value="ADMIN">{{ 'user.metadata.role.admin' | translate }}</option> + <option value="SUPERVISOR">{{ 'user.metadata.role.supervisor' | translate }}</option> + <option value="EXPERT">{{ 'user.metadata.role.expert' | translate }}</option> + <option value="MEMBER">{{ 'user.metadata.role.member' | translate }}</option> + <option value="CLIENT">{{ 'user.metadata.role.client' | translate }}</option> </select> </div> </div> <div class="form-group" ng-if="currentUser.role == 'SUPERVISOR' && currentUser.id != user.userId"> - <label class="col-md-4 control-label">Role *</label> + <label class="col-md-4 control-label">{{ 'user.metadata.role' | translate }} *</label> <div class="col-md-5"> <select class="form-control" name="role" ng-model="user.role" required> - <option value="CLIENT">Client</option> + <option value="CLIENT">{{ 'user.metadata.role.client' | translate }}</option> </select> </div> </div> <div class="form-group" ng-class="{'has-error' : userForm.mail.$invalid && !userForm.mail.$pristine}"> - <label class="col-md-4 control-label">Mail *</label> + <label class="col-md-4 control-label">{{ 'user.metadata.mail' | translate }} *</label> <div class="col-md-5"> <input type="email" class="form-control" name="mail" placeholder="example@provider.mail" ng-model="user.mail" required/> - <p ng-show="userForm.mail.$invalid && !userForm.mail.$pristine" class="help-block">Enter a valid mail.</p> + <p ng-show="userForm.mail.$invalid && !userForm.mail.$pristine" class="help-block">{{ 'user.message.invalidMail' | translate }}</p> </div> </div> <div class="form-group" > - <label class="col-md-4 control-label">Phone Number</label> + <label class="col-md-4 control-label">{{ 'user.metadata.phone' | translate }}</label> <div class="col-md-5"> <input type="text" class="form-control" name="phoneNumber" @@ -103,7 +103,7 @@ </div> <div class="form-group"> - <label class="col-md-4 control-label">Organization</label> + <label class="col-md-4 control-label">{{ 'user.metadata.organization' | translate }}</label> <div class="col-md-5"> <input type="text" class="form-control" name="organization" @@ -114,13 +114,13 @@ </div> <div class="form-group" ng-class="{'has-error' : userForm.qualification.$invalid && !userForm.qualification.$pristine}"> - <label class="col-md-4 control-label">Qualification *</label> + <label class="col-md-4 control-label">{{ 'user.metadata.qualification' | translate }} *</label> <div class="col-md-5"> <input type="text" class="form-control" name="qualification" placeholder="qualification" ng-model="user.qualification" required/> - <p ng-show="userForm.qualification.$invalid && !userForm.qualification.$pristine" class="help-block">Qualification is required.</p> + <p ng-show="userForm.qualification.$invalid && !userForm.qualification.$pristine" class="help-block">{{ 'user.message.requiredFirsName' | translate }}</p> </div> </div> @@ -128,13 +128,13 @@ <div class="form-group" ng-if="currentUser && currentUser.userId == user.id" ng-class="{'has-error' : userForm.password.$invalid && !userForm.password.$pristine}"> - <label class="col-md-4 control-label">Tape your current password to validate the modifications *</label> + <label class="col-md-4 control-label">{{ 'user.label.currentPasswordToValidate' | translate }} *</label> <div class="col-md-5"> <input type="password" class="form-control" name="password" placeholder="current password" ng-model="user.password" required/> - <p ng-show="userForm.password.$invalid && !userForm.password.$pristine" class="help-block">Password is required to validate modification.</p> + <p ng-show="userForm.password.$invalid && !userForm.password.$pristine" class="help-block">{{ 'user.message.requiredPassword' | translate }}</p> </div> </div> @@ -144,10 +144,10 @@ && !userForm.newPassword.$pristine ) || userForm.confirmNewPassword.$error.identicalmatch }"> - <label class="col-md-4 control-label">New Password</label> + <label class="col-md-4 control-label">{{ 'user.metadata.password.new' | translate }}</label> <div class="col-md-5"> - <input type="checkbox" ng-model="newPasswordAsked">I want to change the password<br/> + <input type="checkbox" ng-model="newPasswordAsked">{{ 'user.message.wannaChangePassword' | translate }}<br/> <div ng-show="newPasswordAsked"> <input type="password" class="form-control" name="newPassword" @@ -161,11 +161,10 @@ ng-class="{'has-error' : userForm.confirmNewPassword.$error.identicalmatch }"/> <p ng-show="userForm.newPassword.$invalid && !userForm.newPassword.$pristine" class="help-block"> - New password should contain at least 6 characters. - {{userForm.newPassword.$error}} + {{ 'user.message.tooShortPassword' | translate }} </p> <p ng-show="userForm.confirmNewPassword.$error.identicalmatch" class="help-block"> - The two new passwords don't match. + {{ 'user.message.passwordsNoMatch' | translate }} </p> </div> </div> diff --git a/coselmar-ui/src/main/webapp/views/users/newuser.html b/coselmar-ui/src/main/webapp/views/users/newuser.html index bf6d60b..32ed5b8 100644 --- a/coselmar-ui/src/main/webapp/views/users/newuser.html +++ b/coselmar-ui/src/main/webapp/views/users/newuser.html @@ -23,20 +23,14 @@ --> <div style="padding: 0px 0px 0px 30px"> <div class="page-header" style="margin: 0"> - <h2>Add new user</h2> + <h2>{{ 'user.create.title' | translate }}</h2> </div> <div class="info-panel" ng-if="currentUser.role == 'ADMIN'"> - Create new user, with one of following roles : - <ul> - <li>Supervisor : Kind of big manager, who relays member/client question and assigns expert on questions</li> - <li>Expert : Scientist, who can add new document in the repository and see other scientist documents (according file permission)</li> - <li>Member</li> - <li>Client</li> - </ul> + <p translate="user.create.info"></p> </div> <div class="info-panel" ng-if="currentUser.role == 'SUPERVISOR'"> - Create new user with Client role + {{ 'user.create.client.info' | translate }} </div> <div style="padding-bottom: 50px" ng-include="src='views/users/edituser.html'"> diff --git a/coselmar-ui/src/main/webapp/views/users/supervisorUsers.html b/coselmar-ui/src/main/webapp/views/users/supervisorUsers.html index cfc613b..ea327fa 100644 --- a/coselmar-ui/src/main/webapp/views/users/supervisorUsers.html +++ b/coselmar-ui/src/main/webapp/views/users/supervisorUsers.html @@ -2,12 +2,12 @@ <div class="table-responsive" ng-if="currentUser.role == 'SUPERVISOR'"> <div class="row"> <div class="form-group col-md-5"> - <a href="#/users/new" class="form-inline navbar-left btn btn-primary">Add a client</a> + <a href="#/users/new" class="form-inline navbar-left btn btn-primary">{{ 'user.button.add.client' | translate }}</a> </div> <form class="form-inline cold-md-7" name="userOptions" role="userOptions" ng-submit="searchUsers()" ng-if="!advanced"> <div class="form-group"> <input type="checkbox" class="form-control" ng-model="search.showDisable" /> - <span>Show Disable</span> + <span>{{ 'user.button.showDisable' | translate }}</span> </div> <div class="form-group"> <input type="search" class="form-control" placeholder="Search an user" ng-model="search.searchKeyword" /> @@ -19,10 +19,10 @@ </div> <div class="row"> <div class="form-group col-md-5" ng-show="!advanced"> - <a ng-click="advanced=true" class="fa fa-sort-down">Advanced Search</a> + <a ng-click="advanced=true" class="fa fa-sort-down">{{ 'common.button.advanceSearch' | translate }}</a> </div> <div class="form-group col-md-5" ng-show="advanced"> - <a ng-click="advanced=false" class="fa fa-sort-up">Simple Search</a> + <a ng-click="advanced=false" class="fa fa-sort-up">{{ 'common.button.simpleSearch' | translate }}</a> </div> </div> @@ -44,18 +44,18 @@ </td> <td class="form-group"> <select class="form-control" name="role" ng-model="example.role" title="role" > - <option value="ALL">All</option> - <option value="ADMIN">Admin</option> - <option value="SUPERVISOR">Supervisor</option> - <option value="EXPERT">Expert</option> - <option value="MEMBER">Member</option> - <option value="CLIENT">Client</option> + <option value="ALL">{{ 'user.metadata.role.all' | translate }}</option> + <option value="ADMIN">{{ 'user.metadata.role.admin' | translate }}</option> + <option value="SUPERVISOR">{{ 'user.metadata.role.supervisor' | translate }}</option> + <option value="EXPERT">{{ 'user.metadata.role.expert' | translate }}</option> + <option value="MEMBER">{{ 'user.metadata.role.member' | translate }}</option> + <option value="CLIENT">{{ 'user.metadata.role.client' | translate }}</option> </select> </td> <td class="form-group"> <select class="form-control" name="active" ng-model="example.active" title="active" > - <option value="true">Active</option> - <option value="false">Inactive</option> + <option value="true">{{ 'user.metadata.status.enable' | translate }}</option> + <option value="false">{{ 'user.metadata.status.disable' | translate }}</option> </select> </td> <td class="form-group text-center"> @@ -64,12 +64,12 @@ </form> </tr> <tr> - <th class="col-md-2">Name</th> - <th class="col-md-2">Mail</th> - <th class="col-md-2">Qualification</th> - <th class="col-md-2">Organization</th> - <th class="col-md-2">Role</th> - <th class="col-md-1">Status</th> + <th class="col-md-2">{{ 'user.metadata.name' | translate }}</th> + <th class="col-md-2">{{ 'user.metadata.mail' | translate }}</th> + <th class="col-md-2">{{ 'user.metadata.qualification' | translate }}</th> + <th class="col-md-2">{{ 'user.metadata.organization' | translate }}</th> + <th class="col-md-2">{{ 'user.metadata.role' | translate }}</th> + <th class="col-md-1">{{ 'user.metadata.status' | translate }}</th> <th class="col-md-1"></th> </tr> <tr ng-repeat="user in users"> @@ -78,20 +78,20 @@ <td>{{user.qualification}}</td> <td>{{user.organization}}</td> <td>{{user.role}}</td> - <td ng-if="user.active">Active</td> - <td ng-if="!user.active">Disable</td> + <td ng-if="user.active">{{ 'user.metadata.status.enable' | translate }}</td> + <td ng-if="!user.active">{{ 'user.metadata.status.disable' | translate }}</td> <td ng-if="user.role == 'CLIENT'"> <a class="btn btn-action btn-edit" href="#/users/{{user.id}}?edit"> - <span class="fa fa-edit" aria-hidden="true"></span>Modify + <span class="fa fa-edit" aria-hidden="true"></span>{{ 'common.button.edit' | translate }} </a> <a class="btn btn-action btn-disable" ng-if="user.active" - ng-confirm-message="Do you really want to disable this user ?" + ng-confirm-message="user.message.disable" ng-confirm-click="disableUser(user)"> - <span class="fa fa-remove" aria-hidden="true"></span>Disable + <span class="fa fa-remove" aria-hidden="true"></span>{{ 'user.button.disable' | translate }} </a> <a class="btn btn-action" ng-if="!user.active" ng-click="enableUser(user)"> - <span class="fa fa-remove" aria-hidden="true"></span>Enable + <span class="fa fa-remove" aria-hidden="true"></span>{{ 'user.button.enable' | translate }} </a> </td> <td ng-if="user.role != 'CLIENT'"></td> diff --git a/coselmar-ui/src/main/webapp/views/users/user.html b/coselmar-ui/src/main/webapp/views/users/user.html index eebbedb..68292a8 100644 --- a/coselmar-ui/src/main/webapp/views/users/user.html +++ b/coselmar-ui/src/main/webapp/views/users/user.html @@ -30,41 +30,41 @@ <div ng-if="!editMode" > <table class="table table-striped"> <tr> - <td>Contact</td> + <td>{{ 'user.metadata.mail' | translate }}</td> <td>{{user.mail}}</td> </tr> <tr> - <td>Phone Number</td> + <td>{{ 'user.metadata.phone' | translate }}</td> <td>{{user.phoneNumber}}</td> </tr> <tr> - <td>Qualification</td> + <td>{{ 'user.metadata.qualification' | translate }}</td> <td>{{user.qualification}}</td> </tr> <tr> - <td>Organization</td> + <td>{{ 'user.metadata.organization' | translate }}</td> <td>{{user.organization}}</td> </tr> <tr> - <td>Role</td> + <td>{{ 'user.metadata.role' | translate }}</td> <td>{{user.role}}</td> </tr> <tr> - <td>Status</td> - <td ng-if="user.active">Active</td> - <td ng-if="!user.active">Disable</td> + <td>{{ 'user.metadata.status' | translate }}</td> + <td ng-if="user.active">{{ 'user.metadata.status.enable' | translate }}</td> + <td ng-if="!user.active">{{ 'user.metadata.status.disable' | translate }}</td> </tr> </table> <div class="float-right"> - <a class="btn btn-action btn-edit" ng-click="modifyUser()" ng-if="user.active">Modify</a> + <a class="btn btn-action btn-edit" ng-click="modifyUser()" ng-if="user.active">{{ 'common.button.edit' | translate }}</a> <a class="btn btn-action btn-edit" - ng-confirm-message="Do you really want to disable this user ?" + ng-confirm-message="user.message.disable" ng-confirm-click="disableUser()" - ng-if="currentUser.role == 'ADMIN' && user.active">Disable</a> + ng-if="currentUser.role == 'ADMIN' && user.active">{{ 'user.button.disable' | translate }}</a> <a class="btn btn-action" ng-click="enableUser()" - ng-if="currentUser.role == 'ADMIN' && !user.active">Enable</a> + ng-if="currentUser.role == 'ADMIN' && !user.active">{{ 'user.button.enable' | translate }}</a> <a class="btn btn-action btn-disable" - ng-confirm-message="Do you really want to delete this user ?" + ng-confirm-message="user.message.delete" ng-confirm-click="deleteUser(user.id)" ng-if="currentUser.role == 'ADMIN'">Delete</a> </div> diff --git a/coselmar-ui/src/main/webapp/views/users/users.html b/coselmar-ui/src/main/webapp/views/users/users.html index 3ca0c0e..6989a53 100644 --- a/coselmar-ui/src/main/webapp/views/users/users.html +++ b/coselmar-ui/src/main/webapp/views/users/users.html @@ -2,7 +2,7 @@ <div class="page-header" style="margin: 0"> <h1> <!-- Heading goes here --> - All Users + {{ 'user.list.title' | translate }} </h1> </div> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git commit 6220fb4517925d89d3eb5c5fe3dfb1d9b9b7e2fb Author: Yannick Martel <martel@©odelutin.com> Date: Fri Jan 23 15:14:27 2015 +0100 i18n french translation --- coselmar-ui/src/main/webapp/i18n/en.js | 32 +++- coselmar-ui/src/main/webapp/i18n/fr.js | 191 ++++++++++++++++++++- coselmar-ui/src/main/webapp/index.html | 6 +- .../src/main/webapp/js/coselmar-controllers.js | 2 +- .../src/main/webapp/views/admin/admintools.html | 12 +- .../main/webapp/views/referential/referential.html | 33 ++-- 6 files changed, 248 insertions(+), 28 deletions(-) diff --git a/coselmar-ui/src/main/webapp/i18n/en.js b/coselmar-ui/src/main/webapp/i18n/en.js index 6ed10bb..75e7453 100644 --- a/coselmar-ui/src/main/webapp/i18n/en.js +++ b/coselmar-ui/src/main/webapp/i18n/en.js @@ -18,11 +18,19 @@ var translateEN = { "menu.button.profile" : "Profile", "menu.button.logout" : "Logout", +//Footer + +"footer.item.licence" : "Licence", +"footer.item.report" : "Bug report", +"footer.item.support" : "User support", + +//Documents part + "document.list.title" : "All documents", "document.modalSearch.title" : "Search Documents", "document.button.add" : "Add a document", "document.message.delete" : "Do you really want to delete this document ?", -"document.view.title" : "Document's details", +"document.view.title" : "Document's details", "document.create.title" : "New document", "document.create.info" : "Here you can add a new document in the repository. For each document,\ some keywords are needed to make easier search of the document, and you\ @@ -61,7 +69,7 @@ var translateEN = { "document.message.requiredAuthors" : "Document authors is required.", "document.message.requiredCopyright" : "Document copyright is required.", "document.message.requiredSummary" : "A summary is required.", -"document.privacy.questionRestricted" : "Restricted to current Question", +"document.privacy.questionRestricted" : "Restricted to Question participants", "document.button.download" : "Download", "document.button.openLink" : "Open link", @@ -162,6 +170,26 @@ var translateEN = { "user.button.enable" : "Enable", "user.button.showDisable" : "Show disable", +//Referential part + +"referential.search.title" : "Ask the Referential", +"referential.search.keywords" : "Keywords", +"referential.search.documents" : "Documents", +"referential.search.questions" : "Questions", +"referential.search.singleDocumentFound" : "document found.", +"referential.search.multipleDocumentsFound" : "documents found.", +"referential.search.singleQuestionFound" : "question found.", +"referential.search.multipleQuestionsFound" : "questions found.", + +//Admin part + +"admin.tools.title" : "Admin tools", +"admin.tools.label.luceneRefresh" : "Refresh Search Index", +"admin.tools.button.refresh" : "Refresh !", +"admin.tools.message.refresh.inprogress" : "Refresh in progress.", +"admin.tools.message.refresh.done" : "Search index has been well refreshed !", +"admin.tools.message.refresh.errors" : "Error during search index refresh. Please try again. If problem persist, see server administrator.", + //Common part "common.privacy.private" : "Private", diff --git a/coselmar-ui/src/main/webapp/i18n/fr.js b/coselmar-ui/src/main/webapp/i18n/fr.js index 8667b78..979cfbd 100644 --- a/coselmar-ui/src/main/webapp/i18n/fr.js +++ b/coselmar-ui/src/main/webapp/i18n/fr.js @@ -16,6 +16,195 @@ var translateFR = { "menu.button.login" : "Connexion", "menu.button.profile" : "Profil", -"menu.button.logout" : "Déconnexion" +"menu.button.logout" : "Déconnexion", + +//Footer + +"footer.item.licence" : "License", +"footer.item.report" : "Rapport de bug", +"footer.item.support" : "Support utilisateur", + +//Documents part + +"document.list.title" : "Liste des documents", +"document.modalSearch.title" : "Recherche de documents", +"document.button.add" : "Ajouter un document", +"document.message.delete" : "Êtes vous sûrs de vouloir supprimer ce document ?", +"document.view.title" : "Détails du document", +"document.create.title" : "Nouveau document", +"document.create.info" : "Vous pouvez ajouter un nouveau document à la base de connaissance. Pour chaque document,\ + des mots clefs sont nécessaires pour facilier la recherche des documents, et vous pouvez\ + précisez la visibilité :\ + <ul>\ + <li>Publique : tous les membres peuvent accéder au document</li>\ + <li>Privé : vous seul pouvez accéder au document</li>\ + <li>Restreint : le document ne sera accessible qu'aux participants d'une question ou est attaché le document</li>\ + </ul>", + +"document.metadata.name" : "Titre", +"document.metadata.authors" : "Auteurs", +"document.metadata.privacy" : "Visibilité", +"document.metadata.keywords" : "Mots clefs", +"document.metadata.depositor" : "Déposant", +"document.metadata.depositDate" : "Date de dépôt", +"document.metadata.relatedQuestions" : "Questions relatives", +"document.metadata.view.relatedQuestions" : "Questions utilisant ce document", +"document.metadata.type" : "Type", +"document.metadata.file" : "Fichier", +"document.metadata.externalUrl" : "URL externe", +"document.metadata.copyright" : "Copyright", +"document.metadata.licence" : "License", +"document.metadata.language" : "Langue", +"document.metadata.publicationDate" : "Date de publication", +"document.metadata.summary" : "Résumé", +"document.metadata.comment" : "Commentaire", +"document.metadata.fileName" : "Nom du fichier associé", +"document.metadata.externalLink" : "Lien externe", + +"document.message.requiredName" : "Le nom du document est requis.", +"document.message.requiredType" : "Le type du document est requis.", +"document.message.requiredExternalUrlOrFile" : "Un fichier ou un lien externe est requis.", +"document.message.requiredExternalUrl" : "Pour ce document, une URL externe est requise.", +"document.message.requiredKeywords" : "Au moins un mot clef est requis.", +"document.message.requiredAuthors" : "Le ou les auteur(s) du document est requis.", +"document.message.requiredCopyright" : "Le copyright du document est requis.", +"document.message.requiredSummary" : "Un résumé est requis.", +"document.privacy.questionRestricted" : "Restreint aux participants de question.", + +"document.button.download" : "Télécharger", +"document.button.openLink" : "Ouvrir le lien", + +//Questions part + +"question.list.title" : "Questions", +"question.add.title" : "Ajouter une question", +"question.newDocument.title" : "Contribuer avec de nouveaux documents", +"question.modal.parents.title" : "Désigner une question parente", + +"question.metadata.title" : "Titre", +"question.metadata.type" : "Type", +"question.metadata.privacy" : "Visibilité", +"question.metadata.themes" : "Thèmes", +"question.metadata.submissionDate" : "Date de soumission", +"question.metadata.deadline" : "Date limite", +"question.metadata.summary" : "Résumé", +"question.metadata.status" : "Status", +"question.metadata.supervisors" : "Superviseurs", +"question.metadata.experts" : "Experts", +"question.metadata.externalExperts" : "Experts extérieurs", +"question.metadata.clients" : "Clients", +"question.metadata.contributors" : "Contributeurs", +"question.metadata.relatedDocuments" : "Documents associés", +"question.metadata.conclusion" : "Conclusion", +"question.metadata.conclusionDocuments" : "Documents de conclusion", +"question.metadata.parents" : "Questions parentes", +"question.metadata.parentsPhrase" : "Provoquée ou inspirée par", +"question.metadata.childrenPhrase" : "A provoqué ou inspiré", +"question.metadata.participants" : "Participants", + +"question.message.requiredTitle" : "Le titre est requis, avec au minimum 10 caractères.", +"question.message.requiredType" : "Le type est requis..", +"question.message.requiredSummary" : "Un résumé est requis.", +"question.message.requiredThemes" : "Au moins un thème est requis.", + +"question.button.add" : "Ajouter une question", +"question.button.reopen" : "Réouvrir", +"question.button.close" : "Fermer", +"question.button.close.fullText" : "Fermer cette question", +"question.button.adjourn" : "Ajourner", +"question.button.validateChanges" : "Valider les modifications", +"question.button.validateNewDocuments" : "Valider les nouveaux documents", + +"question.message.notAvailable" : "Cette question n'est pas disponible à la consultation.", +"question.message.notAllowedToCreate" : "Vous n'êtes pas autorisé à déposer une question", +"question.message.delete" : "Êtes vous sûr de vouloir supprimer cette question ?", +"question.message.closedOn" : "Fermé le ", + +//Users part + +"user.list.title" : "Liste des utilisateurs", +"user.create.title" : "Ajouter un utilisateur", +"user.create.info" : "Créer un nouvel utilisateur, avec l'un des rôles suivants :\ + <ul>\ + <li>Superviseur : Manager qui relaie les questions de clients et qui assigne les experts aux questions</li>\ + <li>Expert : Scientifique, qui peut ajouter des nouveaux documents à la base de connaissance et voir les documents des autres scientifiques (en fonction des permissions)</li>\ + <li>Membre</li>\ + <li>Client</li>\ + </ul>", +"user.create.client.info" : "Créer un nouvel utilisateur de rôle \"Client\"", + +"user.metadata.name" : "Nom", +"user.metadata.firstName" : "Prénom", +"user.metadata.mail" : "Contact", +"user.metadata.phone" : "Numéro de téléphone", +"user.metadata.qualification" : "Profession", +"user.metadata.organization" : "Organisation", +"user.metadata.role" : "Rôle", +"user.metadata.status" : "Status", +"user.metadata.status.disable" : "Désactivé", +"user.metadata.status.enable" : "Activé", +"user.metadata.password" : "Mot de passe", +"user.metadata.password.new" : "Nouveau mot de passe", +"user.metadata.role.all" : "Tous", +"user.metadata.role.admin" : "Admin", +"user.metadata.role.supervisor" : "Superviseur", +"user.metadata.role.expert" : "Expert", +"user.metadata.role.member" : "Membre", +"user.metadata.role.client" : "Client", + +"user.message.disable" : "Êtes vous sûr de vouloir désactiver cet utilisateur ?", +"user.message.delete" : "Êtes vous sûr de vouloir supprimer cet utilisateur ", +"user.message.requiredFirsName" : "Le prénom est obligatoire.", +"user.message.requiredName" : "Le nom est obligatoire.", +"user.message.invalidMail" : "Entrer une adresse courriel valide.", +"user.message.requiredQualification" : "La profession est obligatoire.", +"user.message.requiredPassword" : "Le mot de passe est obligatoire pour valider les modifications.", +"user.label.currentPasswordToValidate" : "Entrer votre mot de passe pour valider les modifications", +"user.message.wannaChangePassword" : "Je veux changer mon mot de passe", +"user.message.tooShortPassword" : "Le nouveau mot de passe doit contenir au moins 6 caractères.", +"user.message.passwordsNoMatch" : "Les deux mots de passe entrés sont différents.", + +"user.button.add" : "Ajouter un utilisateur", +"user.button.add.client" : "Ajouter un client", +"user.button.disable" : "Désactiver", +"user.button.enable" : "Activer", +"user.button.showDisable" : "Montrer les désactivés", + +//Referential part + +"referential.search.title" : "Rerchercher dans le référentiel", +"referential.search.keywords" : "Mots clefs", +"referential.search.documents" : "Documents", +"referential.search.questions" : "Questions", +"referential.search.singleDocumentFound" : "document trouvé.", +"referential.search.multipleDocumentsFound" : "documents trouvés.", +"referential.search.singleQuestionFound" : "question trouvée.", +"referential.search.multipleQuestionsFound" : "questions trouvées.", + +//Admin part + +"admin.tools.title" : "Outils Admin", +"admin.tools.label.luceneRefresh" : "Rafraichir l'index de rechercher", +"admin.tools.button.refresh" : "Rafraichir !", +"admin.tools.message.refresh.inprogress" : "Mise à jour en cours.", +"admin.tools.message.refresh.done" : "L'index de recherche à bien été raffraichi !", +"admin.tools.message.refresh.errors" : "Une erreur est survenue durant la mise à jour de l'index de recherche. Veuillez contacter l'administrateur serveur.", + +//Common part + +"common.privacy.private" : "Privé", +"common.privacy.public" : "Publique", +"common.privacy.restricted" : "Restreint", + +"common.button.delete" : "Supprimer", +"common.button.edit" : "Éditer", +"common.button.add" : "Ajouter", +"common.button.cancel" : "Annuler", +"common.button.search" : "Rechercher", +"common.button.advanceSearch" : "Recherche avancée", +"common.button.simpleSearch" : "Recherche simple", +"common.message.missingMandatoryFields" : "Certains champs obligatoires (*) n'ont pas été remplis.", +"common.message.notYetAvailable" : "Pas encore disponible.", +"common.message.mandatoryFieldsInfo" : "Les champs avec un <strong><big>*</big></strong> sont obligatoires.", } \ No newline at end of file diff --git a/coselmar-ui/src/main/webapp/index.html b/coselmar-ui/src/main/webapp/index.html index d3d788d..413540f 100644 --- a/coselmar-ui/src/main/webapp/index.html +++ b/coselmar-ui/src/main/webapp/index.html @@ -168,16 +168,16 @@ <a href="http://www.coselmar.fr" target="_blank">Coselmar</a> <a href="https://forge.codelutin.com/projects/coselmar/files" target="_blank">{{version}}</a> <span class="separator">-</span> - <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">Licence</a> + <a href="http://www.gnu.org/licenses/gpl.html" target="_blank">{{ 'footer.item.licence' | translate}}</a> <span class="separator">-</span> ©2014 <a href="http://wwz.ifremer.fr/" target="_blank">Ifremer</a> & <a href="http://www.codelutin.com/" target="_blank">Code Lutin</a> <span class="separator">-</span> - <a href="https://forge.codelutin.com/projects/coselmar/issues" target="_blank">Rapport de bug</a> + <a href="https://forge.codelutin.com/projects/coselmar/issues" target="_blank">{{ 'footer.item.report' | translate}}</a> <span class="separator">-</span> - <a href="http://list.forge.codelutin.com/cgi-bin/mailman/listinfo/coselmar-users" target="_blank">Support utilisateur</a> + <a href="http://list.forge.codelutin.com/cgi-bin/mailman/listinfo/coselmar-users" target="_blank">{{ 'footer.item.support' | translate}}</a> </div> </footer> diff --git a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js index 8f328e9..2312bea 100644 --- a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js +++ b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js @@ -1216,7 +1216,7 @@ coselmarControllers.directive('ngConfirmClick', ['$modal', function($modal) { var modalHtml = '<div class="modal-title"><h2>Confirm Action</h2></div>'; modalHtml += '<div class="modal-body"> {{\'' + message + '\' | translate}}</div>'; - modalHtml += '<div class="modal-footer"><button class="btn btn-primary" ng-click="ok()">OK</button><button class="btn btn-warning" ng-click="cancel()">Cancel</button></div>'; + modalHtml += '<div class="modal-footer"><button class="btn btn-primary" ng-click="ok()">OK</button><button class="btn btn-warning" ng-click="cancel()">{{ \'common.button.cancel\' | translate }}</button></div>'; var modalInstance = $modal.open({ template: modalHtml, diff --git a/coselmar-ui/src/main/webapp/views/admin/admintools.html b/coselmar-ui/src/main/webapp/views/admin/admintools.html index 09779c9..2c41cec 100644 --- a/coselmar-ui/src/main/webapp/views/admin/admintools.html +++ b/coselmar-ui/src/main/webapp/views/admin/admintools.html @@ -25,29 +25,29 @@ <div class="page-header" style="margin: 0"> <h1> <!-- Heading goes here --> - Admin Tools + {{ 'admin.tools.title' | translate }} </h1> </div> <div class="form-group"> <div class="form-group"> - <label class="col-md-5 control-label">Refresh Search Index</label> + <label class="col-md-5 control-label">{{ 'admin.tools.label.luceneRefresh' | translate }}</label> <div class="col-md-7 "> - <a class="form-inline btn btn-primary" ng-click="refreshIndex()">Refresh !</a> + <a class="form-inline btn btn-primary" ng-click="refreshIndex()">{{ 'admin.tools.button.refresh' | translate }}</a> </div> </div> <div ng-show="status.indexRefresh != 'none'" > <div ng-show="status.indexRefresh === 'inprogress'"> - Refresh in progress. + {{ 'admin.tools.message.refresh.inprogress' | translate }} </div> <div ng-show="status.indexRefresh === 'finish'"> - Search index has been well refreshed ! + {{ 'admin.tools.message.refresh.done' | translate }} </div> <div ng-show="status.indexRefresh === 'error'"> - Error during search index refresh. Please try again. If problem persist, see server administrator. + {{ 'admin.tools.message.refresh.error' | translate }} </div> </div> <br/> diff --git a/coselmar-ui/src/main/webapp/views/referential/referential.html b/coselmar-ui/src/main/webapp/views/referential/referential.html index 5a32ab4..bf8351e 100644 --- a/coselmar-ui/src/main/webapp/views/referential/referential.html +++ b/coselmar-ui/src/main/webapp/views/referential/referential.html @@ -23,12 +23,12 @@ --> <div style="padding: 0px 0px 0px 30px"> <div class="page-header" style="margin: 0"> - <h2>Ask the Referential</h2> + <h2>{{ 'referential.search.title' | translate }}</h2> </div> <!-- Search Line --> <div class="form-group row"> - <label class="col-md-2 control-label">Keywords</label> + <label class="col-md-2 control-label">{{ 'referential.search.keywords' | translate }}</label> <div class="col-md-4"> <input type="text" class="form-control" name="keywords" @@ -38,20 +38,20 @@ <div class="col-md-2"> <label> <input type="checkbox" name="onDocuments" ng-model="search.onDocuments" /> - documents + {{ 'referential.search.documents' | translate }} </label> </div> <div class="col-md-2"> <label> <input type="checkbox" name="onQuestions" ng-model="search.onQuestions" /> - questions + {{ 'referential.search.questions' | translate }} </label> </div> <div class="col-md-2"> <a class="btn btn-action btn-success" ng-click="searchInReferential()"> - <span class="fa fa-search" aria-hidden="true"></span>Search + <span class="fa fa-search" aria-hidden="true"></span>{{ 'common.button.search' | translate }} </a> </div> @@ -64,14 +64,15 @@ <!-- Documents Table --> <div class="" ng-if="result.documents && result.documents.length > 0"> - <h3>{{result.documents.length}} document<span ng-if="result.documents.length > 1">s</span> found</h3> + <h3 ng-if="result.documents.length > 1">{{result.documents.length}} {{ 'referential.search.multipleDocumentsFound' | translate }}</h3> + <h3 ng-if="result.documents.length < 2">{{result.documents.length}} {{ 'referential.search.singleDocumentFound' | translate }}</h3> <table class="table" title="Documents"> <tr> - <th>Name</th> - <th>Deposit Date</th> - <th>Authors</th> - <th>Keywords</th> + <th>{{ 'document.metadata.name' | translate }}</th> + <th>{{ 'document.metadata.depositDate' | translate }}</th> + <th>{{ 'document.metadata.authors' | translate }}</th> + <th>{{ 'document.metadata.keywords' | translate }}</th> </tr> <tr ng-repeat="document in result.documents"> <td> @@ -91,14 +92,16 @@ <!-- Questions Table --> <div class="" ng-if="result.questions && result.questions.length > 0"> - <h3>{{result.questions.length}} question<span ng-if="result.questions.length > 1">s</span> found</h3> + <h3 ng-if="result.questions.length > 1">{{result.questions.length}} {{ 'referential.search.multipleQuestionsFound' | translate }}</h3> + <h3 ng-if="result.questions.length < 2">{{result.questions.length}} {{ 'referential.search.singleQuestionFound' | translate }}</h3> + <table class="table" title="Questions"> <tr> - <th>Title</th> - <th>Deposit Date</th> - <th>Themes</th> - <th>Status</th> + <th>{{ 'question.metadata.title' | translate }}</th> + <th>{{ 'question.metadata.submissionDate' | translate }}</th> + <th>{{ 'question.metadata.themes' | translate }}</th> + <th>{{ 'question.metadata.status' | translate }}</th> </tr> <tr ng-repeat="question in result.questions"> <td ng-if="currentUser.role != 'MEMBER'"> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository coselmar. See http://git.codelutin.com/coselmar.git commit bec58be049f0839efe9f231ffcc1b5e927c25c7c Merge: cf4f833 6220fb4 Author: Yannick Martel <martel@©odelutin.com> Date: Fri Jan 23 15:20:40 2015 +0100 fixes #6202 Merge branch 'feature/6202-add-multiliguage' into develop coselmar-ui/pom.xml | 6 + coselmar-ui/src/main/webapp/i18n/en.js | 210 +++++++++++++++++++++ coselmar-ui/src/main/webapp/i18n/fr.js | 210 +++++++++++++++++++++ coselmar-ui/src/main/webapp/img/en.png | Bin 0 -> 599 bytes coselmar-ui/src/main/webapp/img/fr.png | Bin 0 -> 545 bytes coselmar-ui/src/main/webapp/index.html | 58 +++--- .../src/main/webapp/js/coselmar-constants.js | 3 +- .../src/main/webapp/js/coselmar-controllers.js | 37 +++- coselmar-ui/src/main/webapp/js/coselmar.js | 13 +- .../src/main/webapp/views/admin/admintools.html | 12 +- .../src/main/webapp/views/documents/documents.html | 22 +-- .../main/webapp/views/documents/editDocument.html | 44 ++--- .../webapp/views/documents/modalDocumentEdit.html | 55 +++--- .../views/documents/modalDocumentSearch.html | 17 +- .../main/webapp/views/documents/newdocument.html | 64 +++---- .../main/webapp/views/documents/viewDocument.html | 44 ++--- .../main/webapp/views/questions/closeQuestion.html | 14 +- .../main/webapp/views/questions/editquestion.html | 56 +++--- .../views/questions/modalQuestionSearch.html | 12 +- .../webapp/views/questions/newDocumentsPart.html | 12 +- .../main/webapp/views/questions/newquestion.html | 4 +- .../src/main/webapp/views/questions/question.html | 16 +- .../src/main/webapp/views/questions/questions.html | 24 +-- .../views/questions/viewRestrictedQuestion.html | 6 +- .../main/webapp/views/questions/viewquestion.html | 52 ++--- .../main/webapp/views/referential/referential.html | 33 ++-- .../src/main/webapp/views/users/adminUsers.html | 49 +++-- .../src/main/webapp/views/users/edituser.html | 49 +++-- .../src/main/webapp/views/users/newuser.html | 12 +- .../main/webapp/views/users/supervisorUsers.html | 48 ++--- coselmar-ui/src/main/webapp/views/users/user.html | 26 +-- coselmar-ui/src/main/webapp/views/users/users.html | 2 +- pom.xml | 8 + 33 files changed, 847 insertions(+), 371 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm