branch develop updated (aba84cc -> caeb07f)
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 aba84cc Merge branch 'feature/6017-edit-question' into develop new 1c8848a question delete is not a delete, juste make question unavailable new 43249fb can add conclusion and file with question close new caeb07f Merge branch 'feature/6020-close-question' into develop The 3 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 caeb07fe58e895f72c1706097ce6da04d61a27d6 Merge: aba84cc 43249fb Author: Yannick Martel <martel@©odelutin.com> Date: Thu Dec 11 10:39:22 2014 +0100 Merge branch 'feature/6020-close-question' into develop commit 43249fb297d6583611a8eb471cac509869b0b71a Author: Yannick Martel <martel@©odelutin.com> Date: Thu Dec 11 10:38:49 2014 +0100 can add conclusion and file with question close commit 1c8848a90fe0ebbed6ad99e1d94a0bd4bfafe7d3 Author: Yannick Martel <martel@©odelutin.com> Date: Wed Dec 10 19:24:26 2014 +0100 question delete is not a delete, juste make question unavailable Summary of changes: .../src/main/xmi/coselmar-model.properties | 3 +- .../src/main/xmi/coselmar-model.zargo | Bin 9741 -> 10090 bytes .../fr/ifremer/coselmar/beans/QuestionBean.java | 27 +++++++++++++++ .../coselmar/converter/BeanEntityConverter.java | 22 ++++++++++++ .../coselmar/services/v1/QuestionsWebService.java | 27 +++++++++++++-- .../src/main/webapp/js/coselmar-controllers.js | 10 +++++- .../src/main/webapp/views/questions/question.html | 22 +++++++----- .../views/questions/viewRestrictedQuestion.html | 2 -- .../main/webapp/views/questions/viewquestion.html | 37 +++++++++++++++++++++ 9 files changed, 136 insertions(+), 14 deletions(-) -- 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 1c8848a90fe0ebbed6ad99e1d94a0bd4bfafe7d3 Author: Yannick Martel <martel@©odelutin.com> Date: Wed Dec 10 19:24:26 2014 +0100 question delete is not a delete, juste make question unavailable --- .../src/main/xmi/coselmar-model.zargo | Bin 9741 -> 10020 bytes .../coselmar/converter/BeanEntityConverter.java | 2 ++ .../coselmar/services/v1/QuestionsWebService.java | 7 ++++++- 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/coselmar-persistence/src/main/xmi/coselmar-model.zargo b/coselmar-persistence/src/main/xmi/coselmar-model.zargo index 9e32b2a..7b908f2 100644 Binary files a/coselmar-persistence/src/main/xmi/coselmar-model.zargo and b/coselmar-persistence/src/main/xmi/coselmar-model.zargo differ diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java index 1875092..67682d6 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java @@ -188,6 +188,7 @@ public class BeanEntityConverter { } } + result.setRestricted(question.isUnavailable()); return result; } @@ -229,6 +230,7 @@ public class BeanEntityConverter { } } + result.setRestricted(question.isUnavailable()); return result; } diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java index 92706ff..eafd6c7 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java @@ -77,6 +77,8 @@ public class QuestionsWebService extends CoselmarWebServiceSupport { // let's go Question questionEntity = getQuestionDao().create(); + questionEntity.setUnavailable(false); + // Question basics questionEntity.setTitle(question.getTitle()); @@ -273,7 +275,10 @@ public class QuestionsWebService extends CoselmarWebServiceSupport { document.removeRestrictedList(participantGroup); } - getQuestionDao().delete(question); + // Question become unavailable + question.addAllContributors(participantGroup.getMembers()); + question.setUnavailable(true); + getPersistenceContext().getCoselmarUserGroupDao().delete(participantGroup); commit(); -- 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 43249fb297d6583611a8eb471cac509869b0b71a Author: Yannick Martel <martel@©odelutin.com> Date: Thu Dec 11 10:38:49 2014 +0100 can add conclusion and file with question close --- .../src/main/xmi/coselmar-model.properties | 3 +- .../src/main/xmi/coselmar-model.zargo | Bin 10020 -> 10090 bytes .../fr/ifremer/coselmar/beans/QuestionBean.java | 27 +++++++++++++++ .../coselmar/converter/BeanEntityConverter.java | 20 +++++++++++ .../coselmar/services/v1/QuestionsWebService.java | 20 ++++++++++- .../src/main/webapp/js/coselmar-controllers.js | 10 +++++- .../src/main/webapp/views/questions/question.html | 22 +++++++----- .../views/questions/viewRestrictedQuestion.html | 2 -- .../main/webapp/views/questions/viewquestion.html | 37 +++++++++++++++++++++ 9 files changed, 128 insertions(+), 13 deletions(-) diff --git a/coselmar-persistence/src/main/xmi/coselmar-model.properties b/coselmar-persistence/src/main/xmi/coselmar-model.properties index 6f8eef4..1d2db03 100644 --- a/coselmar-persistence/src/main/xmi/coselmar-model.properties +++ b/coselmar-persistence/src/main/xmi/coselmar-model.properties @@ -28,4 +28,5 @@ model.tagvalue.useEnumerationName=true # Text fr.ifremer.coselmar.persistence.entity.Document.attribute.summary.tagValue.hibernateAttributeType=text -fr.ifremer.coselmar.persistence.entity.Question.attribute.summary.tagValue.hibernateAttributeType=text \ No newline at end of file +fr.ifremer.coselmar.persistence.entity.Question.attribute.summary.tagValue.hibernateAttributeType=text +fr.ifremer.coselmar.persistence.entity.Question.attribute.conclusion.tagValue.hibernateAttributeType=text \ No newline at end of file diff --git a/coselmar-persistence/src/main/xmi/coselmar-model.zargo b/coselmar-persistence/src/main/xmi/coselmar-model.zargo index 7b908f2..a776669 100644 Binary files a/coselmar-persistence/src/main/xmi/coselmar-model.zargo and b/coselmar-persistence/src/main/xmi/coselmar-model.zargo differ diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/QuestionBean.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/QuestionBean.java index ff9e9d2..3126de1 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/QuestionBean.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/beans/QuestionBean.java @@ -44,6 +44,10 @@ public class QuestionBean implements Serializable { protected Boolean isRestricted; + protected String conclusion; + + protected Set<DocumentBean> closingDocuments; + public String getId() { return id; @@ -245,4 +249,27 @@ public class QuestionBean implements Serializable { public void setRestricted(boolean isRestricted) { this.isRestricted = isRestricted; } + + public String getConclusion() { + return conclusion; + } + + public void setConclusion(String conclusion) { + this.conclusion = conclusion; + } + + public Set<DocumentBean> getClosingDocuments() { + return this.closingDocuments; + } + + public void setClosingDocuments(Set<DocumentBean> closingDocuments) { + this.closingDocuments = closingDocuments; + } + + public void addClosingDocument(DocumentBean closingDocument) { + if (this.closingDocuments == null) { + this.closingDocuments = new HashSet<>(); + } + this.closingDocuments.add(closingDocument); + } } //Question diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java index 67682d6..faa27c8 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/converter/BeanEntityConverter.java @@ -188,6 +188,16 @@ public class BeanEntityConverter { } } + result.setConclusion(question.getConclusion()); + Collection<Document> closingDocuments = question.getClosingDocuments(); + if (closingDocuments != null && !closingDocuments.isEmpty()) { + for (Document relatedDocument : closingDocuments) { + String lightId = idFactory.getRandomPart(relatedDocument.getTopiaId()); + DocumentBean documentBean = toBean(lightId, relatedDocument); + result.addClosingDocument(documentBean); + } + } + result.setRestricted(question.isUnavailable()); return result; } @@ -220,6 +230,16 @@ public class BeanEntityConverter { Date closingDate = question.getClosingDate(); if (closingDate != null){ result.setClosingDate(new Date(closingDate.getTime())); + result.setConclusion(question.getConclusion()); + } + + Collection<Document> closingDocuments = question.getClosingDocuments(); + if (closingDocuments != null && !closingDocuments.isEmpty()) { + for (Document relatedDocument : closingDocuments) { + String lightId = idFactory.getRandomPart(relatedDocument.getTopiaId()); + DocumentBean documentBean = toBean(lightId, relatedDocument); + result.addClosingDocument(documentBean); + } } Collection<Question> parents = question.getParents(); diff --git a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java index eafd6c7..59b3f39 100644 --- a/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java +++ b/coselmar-rest/src/main/java/fr/ifremer/coselmar/services/v1/QuestionsWebService.java @@ -200,7 +200,6 @@ public class QuestionsWebService extends CoselmarWebServiceSupport { } else if (StringUtils.equalsIgnoreCase(CoselmarUserRole.EXPERT.name(), currentUserRole)) { questionList = getQuestionDao().findForExpert(currentUser); - //TODO ymartel : manage privacy for experts } else if (StringUtils.equalsIgnoreCase(CoselmarUserRole.CLIENT.name(), currentUserRole)) { questionList = getQuestionDao().forClientsContains(currentUser).findAll(); @@ -609,6 +608,25 @@ public class QuestionsWebService extends CoselmarWebServiceSupport { questionEntity.clearRelatedDocuments(); } + questionEntity.setConclusion(question.getConclusion()); + + // Documents on init + Set<DocumentBean> closingDocuments = question.getClosingDocuments(); + if (closingDocuments != null && !closingDocuments.isEmpty()) { + Set<Document> documents = retrieveDocuments(closingDocuments); + // Manage restriction list for document with Privacy.RESTRICTED + for (Document document : documents) { + if (document.getPrivacy() == Privacy.RESTRICTED) { + document.addRestrictedList(participantGroup); + } + } + + questionEntity.clearClosingDocuments(); + questionEntity.addAllClosingDocuments(documents); + } else if (inEdition) { + questionEntity.clearClosingDocuments(); + } + commit(); } diff --git a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js index e655776..16017d1 100644 --- a/coselmar-ui/src/main/webapp/js/coselmar-controllers.js +++ b/coselmar-ui/src/main/webapp/js/coselmar-controllers.js @@ -323,7 +323,7 @@ coselmarControllers.controller("QuestionsCtrl", ['$scope', '$route', '$routePara coselmarControllers.controller("QuestionCtrl", ['$scope', '$route', '$routeParams', '$location', '$modal', 'questionsService', function($scope, $route, $routeParams, $location, $modal, questionsService){ - $scope.editMode = $routeParams.edit ? $routeParams.edit : false; + $scope.editSession = $routeParams.edit ? $routeParams.edit : false; $scope.isCurrentParticipant = false; $scope.question = {'privacy' : 'PUBLIC', @@ -510,6 +510,14 @@ coselmarControllers.controller("QuestionCtrl", ['$scope', '$route', '$routeParam }); }; + $scope.openCloseQuestionSession = function(){ + if (!$scope.question.closingDocuments) { + $scope.question.closingDocuments = []; + } + + $scope.closeSession = true; + }; + $scope.reopenQuestion = function(){ $scope.question.status = "IN_PROGRESS"; questionsService.saveQuestion($scope.question, function() { diff --git a/coselmar-ui/src/main/webapp/views/questions/question.html b/coselmar-ui/src/main/webapp/views/questions/question.html index 3093209..7f49861 100644 --- a/coselmar-ui/src/main/webapp/views/questions/question.html +++ b/coselmar-ui/src/main/webapp/views/questions/question.html @@ -2,22 +2,23 @@ <div class="page-header" style="margin: 0"> <h2> {{question.title}} - <a class="btn btn-action btn-edit pull-right" ng-click="edit()" ng-if="editMode != true && currentUser.role == 'SUPERVISOR'"> + <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 </a> </h2> </div> - <div style="padding-bottom: 50px" ng-if="editMode == false && question.isRestricted"> + <!-- Main part : View or edit --> + <div style="padding-bottom: 50px" ng-if="editSession == false && question.isRestricted"> <div ng-include="src='views/questions/viewRestrictedQuestion.html'"></div> </div> - <div style="padding-bottom: 50px" ng-if="editMode == false && !question.isRestricted"> + <div style="padding-bottom: 50px" ng-if="editSession == false && !question.isRestricted"> <div ng-include="src='views/questions/viewquestion.html'"></div> <div ng-include="src='views/questions/newDocumentsPart.html'" ng-if="isCurrentParticipant"></div> </div> - <div style="padding-bottom: 50px" ng-if="editMode == true"> + <div style="padding-bottom: 50px" ng-if="editSession == true"> <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)"> @@ -26,18 +27,23 @@ </form> </div> + <!-- bottom part : close and action --> <div class="text-center" ng-if="question.closingDate"> Closed on {{question.closingDate | date:'medium' }}. </div> - <div class="text-center" ng-if="question.closingDate && currentUser.role == 'SUPERVISOR' && editMode == false"> + <div ng-include="src='views/questions/closeQuestion.html'" + ng-if="currentUser.role == 'SUPERVISOR' && closeSession"> + </div> + + <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 </a> </div> - <div class="text-center" ng-if="!question.closingDate && currentUser.role == 'SUPERVISOR' && editMode == false"> - <a class="btn btn-action btn-success" ng-click="closeQuestion()"> + <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 </a> - @@ -50,7 +56,7 @@ </a> </div> - <div class="text-center" ng-if="!question.closingDate && isCurrentParticipant && editMode == false && question.newRelatedDocuments.length > 0"> + <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 </a> diff --git a/coselmar-ui/src/main/webapp/views/questions/viewRestrictedQuestion.html b/coselmar-ui/src/main/webapp/views/questions/viewRestrictedQuestion.html index f48f801..adf827e 100644 --- a/coselmar-ui/src/main/webapp/views/questions/viewRestrictedQuestion.html +++ b/coselmar-ui/src/main/webapp/views/questions/viewRestrictedQuestion.html @@ -3,8 +3,6 @@ Cette question n'est pas disponible à la consultation. - </div> - <!-- TODO ymartel 20141208 : manage parents and children <div class="form-group col-md-12"> <div class="col-md-6">TODO Parents</div> diff --git a/coselmar-ui/src/main/webapp/views/questions/viewquestion.html b/coselmar-ui/src/main/webapp/views/questions/viewquestion.html index 69e088c..94adbc6 100644 --- a/coselmar-ui/src/main/webapp/views/questions/viewquestion.html +++ b/coselmar-ui/src/main/webapp/views/questions/viewquestion.html @@ -141,6 +141,43 @@ </div> + <div class="form-group col-md-12" + ng-if="question.closingDate && question.conclusion"> + <div class="col-md-12" > + <dl> + <dt>Conclusion</dt> + <dd>{{question.conclusion}}</dd> + </dl> + </div> + </div> + + <div class="form-group col-md-12" + ng-if="question.closingDate && question.closingDocuments + && question.closingDocuments.length > 0"> + + <dl> + <dt>Conclusion Documents</dt> + + <dd> + <table class="table table-bordered table-condensed"> + <tr> + <th>Name</th> + <th>Owner</th> + <th>Keywords</th> + <th>Deposit Date</th> + </tr> + <tr ng-repeat="document in question.closingDocuments"> + <td><a href="#/documents/{{document.id}}" target="_blank">{{document.name}}</a></td> + <td>{{document.ownerName}}</td> + <td><span ng-repeat="keyword in document.keywords">{{keyword}}, </span></td> + <td>{{document.depositDate | date:'mediumDate'}}</td> + </tr> + </table> + </dd> + </dl> + + </div> + <!-- TODO ymartel 20141208 : manage parents and children <div class="form-group col-md-12"> <div class="col-md-6">TODO Parents</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 caeb07fe58e895f72c1706097ce6da04d61a27d6 Merge: aba84cc 43249fb Author: Yannick Martel <martel@©odelutin.com> Date: Thu Dec 11 10:39:22 2014 +0100 Merge branch 'feature/6020-close-question' into develop .../src/main/xmi/coselmar-model.properties | 3 +- .../src/main/xmi/coselmar-model.zargo | Bin 9741 -> 10090 bytes .../fr/ifremer/coselmar/beans/QuestionBean.java | 27 +++++++++++++++ .../coselmar/converter/BeanEntityConverter.java | 22 ++++++++++++ .../coselmar/services/v1/QuestionsWebService.java | 27 +++++++++++++-- .../src/main/webapp/js/coselmar-controllers.js | 10 +++++- .../src/main/webapp/views/questions/question.html | 22 +++++++----- .../views/questions/viewRestrictedQuestion.html | 2 -- .../main/webapp/views/questions/viewquestion.html | 37 +++++++++++++++++++++ 9 files changed, 136 insertions(+), 14 deletions(-) -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.
participants (1)
-
codelutin.com scm