Merge pull request #3416 from FinnStutzenstein/MotionCommentsFix2
Fixing special comments fields.
This commit is contained in:
commit
88fabd10ab
@ -70,6 +70,11 @@ angular.module('OpenSlidesApp.core', [
|
||||
console.error('The constant REALM is not set properly.');
|
||||
}
|
||||
|
||||
// Get a random retry timeout between 2000 and 5000 ms.
|
||||
var getTimeoutTime = function () {
|
||||
return Math.floor(Math.random() * 3000 + 2000);
|
||||
};
|
||||
|
||||
/* The callbacks are invoked if the ws connection closed and this factory tries to
|
||||
* reconnect after 1 second. The callbacks should return a promise. If the promise
|
||||
* resolves, the retry-process is stopped, so the callback can indicate whether it
|
||||
@ -81,7 +86,7 @@ angular.module('OpenSlidesApp.core', [
|
||||
$q.all(callbackPromises).then(function (success) {
|
||||
ErrorMessage.clearConnectionError();
|
||||
}, function (error) {
|
||||
$timeout(runRetryConnectCallbacks, 1000);
|
||||
$timeout(runRetryConnectCallbacks, getTimeoutTime());
|
||||
});
|
||||
};
|
||||
|
||||
@ -101,7 +106,7 @@ angular.module('OpenSlidesApp.core', [
|
||||
if (event.code !== 1000) { // 1000 is a normal close, like the close on logout
|
||||
ErrorMessage.setConnectionError();
|
||||
}
|
||||
$timeout(runRetryConnectCallbacks, 1000);
|
||||
$timeout(runRetryConnectCallbacks, getTimeoutTime());
|
||||
};
|
||||
socket.onmessage = function (event) {
|
||||
var dataList = [];
|
||||
|
@ -183,10 +183,12 @@ angular.module('OpenSlidesApp.core.projector', ['OpenSlidesApp.core'])
|
||||
var setElements = function (projector) {
|
||||
// Get all elements, that should be projected.
|
||||
var newElements = [];
|
||||
var enable_clock = Config.get('projector_enable_clock');
|
||||
enable_clock = enable_clock ? enable_clock.value : true;
|
||||
_.forEach(slides.getElements(projector), function (element) {
|
||||
if (!element.error) {
|
||||
// Exclude the clock if it should be disabled.
|
||||
if (Config.get('projector_enable_clock').value || element.name !== 'core/clock') {
|
||||
if (enable_clock || element.name !== 'core/clock') {
|
||||
newElements.push(element);
|
||||
}
|
||||
} else {
|
||||
|
@ -376,10 +376,9 @@ angular.module('OpenSlidesApp.motions', [
|
||||
name = gettextCatalog.getString(this.state.name);
|
||||
if (this.state.show_state_extension_field) {
|
||||
// check motion comment fields for flag 'forState'
|
||||
var fields = Config.get('motions_comments').value;
|
||||
var index = _.findIndex(fields, ['forState', true]);
|
||||
if (index > -1) {
|
||||
additionalName = ' ' + this.comments[index];
|
||||
var commentFieldForStateId = MotionComment.getFieldIdForFlag('forState');
|
||||
if (commentFieldForStateId > -1) {
|
||||
additionalName = ' ' + this.comments[commentFieldForStateId];
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -394,10 +393,9 @@ angular.module('OpenSlidesApp.motions', [
|
||||
recommendation = gettextCatalog.getString(this.recommendation.recommendation_label);
|
||||
if (this.recommendation.show_recommendation_extension_field) {
|
||||
// check motion comment fields for flag 'forRecommendation'
|
||||
var fields = Config.get('motions_comments').value;
|
||||
var index = _.findIndex(fields, ['forRecommendation', true]);
|
||||
if (index > -1) {
|
||||
additionalName = ' ' + this.comments[index];
|
||||
var commentFieldForRecommendationId = MotionComment.getFieldIdForFlag('forRecommendation');
|
||||
if (commentFieldForRecommendationId > -1) {
|
||||
additionalName = ' ' + this.comments[commentFieldForRecommendationId];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1194,6 +1194,7 @@ angular.module('OpenSlidesApp.motions.site', [
|
||||
'$scope',
|
||||
'$http',
|
||||
'$timeout',
|
||||
'$window',
|
||||
'operator',
|
||||
'ngDialog',
|
||||
'gettextCatalog',
|
||||
@ -1220,7 +1221,7 @@ angular.module('OpenSlidesApp.motions.site', [
|
||||
'PersonalNoteManager',
|
||||
'WebpageTitle',
|
||||
'EditingWarning',
|
||||
function($scope, $http, $timeout, operator, ngDialog, gettextCatalog, MotionForm,
|
||||
function($scope, $http, $timeout, $window, operator, ngDialog, gettextCatalog, MotionForm,
|
||||
ChangeRecommmendationCreate, ChangeRecommmendationView, MotionChangeRecommendation,
|
||||
Motion, MotionComment, Category, Mediafile, Tag, User, Workflow, Config, motionId, MotionInlineEditing,
|
||||
MotionCommentsInlineEditing, Editor, Projector, ProjectionDefault, MotionBlock, MotionPdfExport,
|
||||
@ -1259,6 +1260,10 @@ angular.module('OpenSlidesApp.motions.site', [
|
||||
}, function () {
|
||||
$scope.motion = Motion.get(motionId);
|
||||
MotionComment.populateFields($scope.motion);
|
||||
if (motion.comments) {
|
||||
$scope.stateExtension = $scope.motion.comments[$scope.commentFieldForStateId];
|
||||
$scope.recommendationExtension = $scope.motion.comments[$scope.commentFieldForRecommendationId];
|
||||
}
|
||||
$scope.motion.personalNote = PersonalNoteManager.getNote($scope.motion);
|
||||
|
||||
var webpageTitle = gettextCatalog.getString('Motion') + ' ';
|
||||
@ -1410,17 +1415,13 @@ angular.module('OpenSlidesApp.motions.site', [
|
||||
};
|
||||
// save additional state field
|
||||
$scope.saveAdditionalStateField = function (stateExtension) {
|
||||
if (stateExtension) {
|
||||
motion['comment_' + $scope.commentFieldForStateId] = stateExtension;
|
||||
$scope.save(motion);
|
||||
}
|
||||
motion['comment_' + $scope.commentFieldForStateId] = stateExtension;
|
||||
$scope.save(motion);
|
||||
};
|
||||
// save additional recommendation field
|
||||
$scope.saveAdditionalRecommendationField = function (recommendationExtension) {
|
||||
if (recommendationExtension) {
|
||||
motion['comment_' + $scope.commentFieldForRecommendationId] = recommendationExtension;
|
||||
$scope.save(motion);
|
||||
}
|
||||
motion['comment_' + $scope.commentFieldForRecommendationId] = recommendationExtension;
|
||||
$scope.save(motion);
|
||||
};
|
||||
// update recommendation
|
||||
$scope.updateRecommendation = function (recommendation_id) {
|
||||
@ -1506,6 +1507,10 @@ angular.module('OpenSlidesApp.motions.site', [
|
||||
$('#personalNote').css('width', '');
|
||||
}
|
||||
};
|
||||
$scope.gotoPersonalNote = function () {
|
||||
var pos = $('#personalNote').offset();
|
||||
$window.scrollTo(pos.left, pos.top);
|
||||
};
|
||||
var resizePersonalNoteContainer = function () {
|
||||
if ($scope.personalNotePinned) {
|
||||
var width = $('#main-column').width() - 40; // Subtract 2x20px margin
|
||||
|
@ -92,7 +92,7 @@
|
||||
</div>
|
||||
<div class="detail" uib-collapse="isMeta">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
<div class="col-sm-4">
|
||||
<!-- submitters -->
|
||||
<h3 translate>Submitters</h3>
|
||||
<div ng-repeat="submitter in motion.submitters">
|
||||
@ -132,7 +132,7 @@
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="col-sm-4">
|
||||
<!-- State -->
|
||||
<h3 ng-if="!motion.isAllowed('change_state')" class="heading" translate>State</h3>
|
||||
<div ng-if="motion.isAllowed('change_state')" class="heading">
|
||||
@ -161,10 +161,10 @@
|
||||
</div>
|
||||
<div os-perms="motions.can_manage" class="input-group spacer"
|
||||
ng-show="motion.state.show_state_extension_field">
|
||||
<label class="sr-only" for="stateExtensionField">{{ motion.comments[commentFieldForStateId] }}</label>
|
||||
<label class="sr-only" for="stateExtensionField">{{ commentsFields[commentFieldForStateId].name }}</label>
|
||||
<input type="text" ng-model="stateExtension"
|
||||
id="stateNameExtensionField" class="form-control input-sm"
|
||||
placeholder="{{ motion.comments[commentFieldForStateId] }}">
|
||||
placeholder="{{ commentsFields[commentFieldForStateId].name }}">
|
||||
<span class="input-group-btn">
|
||||
<button ng-click="saveAdditionalStateField(stateExtension)" class="btn btn-default btn-sm">
|
||||
<i class="fa fa-check"></i>
|
||||
@ -204,11 +204,11 @@
|
||||
<div class="input-group spacer"
|
||||
ng-if="motion.recommendation.show_recommendation_extension_field">
|
||||
<label class="sr-only" for="recommendationExtensionField">
|
||||
{{ motion.comments[commentFieldForRecommendationId] }}
|
||||
{{ commentsFields[commentFieldForRecommendationId].name }}
|
||||
</label>
|
||||
<input type="text" ng-model="recommendationExtension"
|
||||
id="recommendationExtensionField" class="form-control input-sm"
|
||||
placeholder="{{ motion.comments[commentFieldForRecommendationId] }}">
|
||||
placeholder="{{ commentsFields[commentFieldForRecommendationId].name }}">
|
||||
<span class="input-group-btn">
|
||||
<button ng-click="saveAdditionalRecommendationField(recommendationExtension)" class="btn btn-default btn-sm">
|
||||
<i class="fa fa-check"></i>
|
||||
@ -244,7 +244,9 @@
|
||||
</ul>
|
||||
</span>
|
||||
</div>
|
||||
{{ motion.category.prefix }} – {{ motion.category.name }}
|
||||
<div ng-show="motion.category">
|
||||
{{ motion.category.prefix }} – {{ motion.category.name }}
|
||||
</div>
|
||||
|
||||
<!-- Motion block -->
|
||||
<h3 class="heading" os-perms="!motions.can_manage" ng-show="motion.motionBlock" translate>Motion block</h3>
|
||||
@ -295,7 +297,7 @@
|
||||
{{ motion.origin }}
|
||||
|
||||
</div>
|
||||
<div class="col-md-4">
|
||||
<div class="col-sm-4">
|
||||
<h3 ng-if="motion.polls.length > 0" translate>Voting result</h3>
|
||||
<ol>
|
||||
<li ng-controller="MotionPollDetailCtrl" ng-repeat="poll in motion.polls" class="spacer"
|
||||
@ -426,7 +428,7 @@
|
||||
</button>
|
||||
|
||||
<div class="spacer-top pull-right nobr">
|
||||
<a href="#personalNote" translate>Personal note</a>
|
||||
<a href ng-click="gotoPersonalNote()" translate>Personal note</a>
|
||||
<span ng-click="pinPersonalNote()" class="spacer-left pointer" title="{{ 'Pin personal note' || translate }}">
|
||||
<i class="fa fa-thumb-tack" ng-class="{'rotate-45-deg-right': !personalNotePinned}"></i>
|
||||
</span>
|
||||
|
@ -585,7 +585,8 @@ angular.module('OpenSlidesApp.users.site', [
|
||||
},
|
||||
};
|
||||
}
|
||||
$scope.filter.propertyList = ['first_name', 'last_name', 'title', 'number', 'comment', 'structure_level'];
|
||||
$scope.filter.propertyList = ['first_name', 'last_name', 'username', 'title',
|
||||
'number', 'comment', 'structure_level'];
|
||||
$scope.filter.propertyDict = {
|
||||
'groups_id' : function (group_id) {
|
||||
return Group.get(group_id).name;
|
||||
|
@ -22,8 +22,7 @@ LOREM_IPSUM = [
|
||||
commodi consequat. Quis aute iure reprehenderit in voluptate velit esse
|
||||
cillum dolore eu fugiat nulla pariatur. Excepteur sint obcaecat
|
||||
cupiditat non proident, sunt in culpa qui officia deserunt mollit anim
|
||||
id est laborum.</p>
|
||||
""",
|
||||
id est laborum.</p>""".replace('\n', ' '),
|
||||
|
||||
"""\
|
||||
<p>Sed ut perspiciatis, unde omnis iste natus error sit voluptatem
|
||||
@ -39,8 +38,7 @@ LOREM_IPSUM = [
|
||||
aliquid ex ea commodi consequatur? Quis autem vel eum iure
|
||||
reprehenderit, qui in ea voluptate velit esse, quam nihil molestiae
|
||||
consequatur, vel illum, qui dolorem eum fugiat, quo voluptas nulla
|
||||
pariatur?</p>
|
||||
""",
|
||||
pariatur?</p>""".replace('\n', ' '),
|
||||
|
||||
"""\
|
||||
<p>At vero eos et accusamus et iusto odio dignissimos ducimus, qui
|
||||
@ -55,8 +53,7 @@ LOREM_IPSUM = [
|
||||
necessitatibus saepe eveniet, ut et voluptates repudiandae sint et
|
||||
molestiae non recusandae. Itaque earum rerum hic tenetur a sapiente
|
||||
delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut
|
||||
perferendis doloribus asperiores repellat…</p>
|
||||
""",
|
||||
perferendis doloribus asperiores repellat…</p>""".replace('\n', ' '),
|
||||
]
|
||||
|
||||
DEFAULT_NUMBER = 100
|
||||
|
Loading…
Reference in New Issue
Block a user