Template improvements

- Show item duration and done for normal users correctly.
- Fixed CSS class for countdown warning time.
- Improved projector manage button layout.
- Updated fontawsome icons to 4.7.
- Fixed iframe width/height to show border correctly.
- Improved 'close list of speakers' button.
- Improved 'clear all filter' icons.
- Fixed election pdf if candidate was deleted.
- Moved ban icon for internal icons.
- Improved edit projector form. Show simple scaling steps instead of
  width/height resolution.
- Consolidated both agenda item filters.
- Used better sort icon.
- Installed colordialog plugin for ckeditor to select more colors.
- Several css improvements.
This commit is contained in:
Emanuel Schütze 2018-04-22 12:14:28 +02:00
parent f1b87af623
commit ef2a22fefe
27 changed files with 199 additions and 172 deletions

View File

@ -26,7 +26,7 @@
"bootstrap-ui-datetime-picker": "~2.4.0",
"ckeditor": "~4.7.2",
"docxtemplater": "~2.1.5",
"font-awesome-bower": "~4.5.0",
"font-awesome-bower": "~4.7.0",
"jquery.cookie": "~1.4.1",
"js-data": "~2.9.0",
"js-data-angular": "~3.2.1",

View File

@ -181,6 +181,7 @@ gulp.task('ckeditor-plugins', function () {
[
path.join('bower_components', 'ckeditor', 'plugins', 'clipboard', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'colorbutton', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'colordialog', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'dialog', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'find', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'image', '**', '*'),

View File

@ -19,7 +19,7 @@
<!-- current list of speakers -->
<a ui-sref="agenda.current-list-of-speakers" os-perms="users.can_see_name"
class="btn btn-default btn-sm">
<i class="fa fa-microphone"></i>
<i class="fa fa-microphone fa-lg"></i>
<translate>Current list of speakers</translate>
</a>
<!-- project agenda button -->
@ -199,33 +199,47 @@
<span class="sort-spacer pointer" ng-click="filter.reset(isSelectMode)"
ng-if="filter.areFiltersSet()" ng-disabled="isSelectMode"
ng-class="{'disabled': isSelectMode}">
<i class="fa fa-times-circle"></i>
<i class="fa fa-window-close"></i>
<translate>Filter</translate>
</span>
<!-- boolean Filters -->
<span ng-repeat="(name, booleanFilter) in filter.booleanFilters"
ng-if="!booleanFilter.permission || operator.hasPerms(booleanFilter.permission)" uib-dropdown>
<span class="pointer" id="dropdown{{ name }}" uib-dropdown-toggle
ng-class="{'bold': booleanFilter.value !== undefined, 'disabled': isSelectMode}"
ng-disabled="isSelectMode">
{{ booleanFilter.displayName | translate }}
<span class="caret"></span>
</span>
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdown{{ name }}">
<li>
<a href ng-click="booleanFilter.value = (booleanFilter.value ? undefined : true); filter.save();">
<i class="fa" ng-class="{'fa-check': booleanFilter.value === true}"></i>
{{ booleanFilter.choiceYes | translate }}
</a>
</li>
<li>
<a href ng-click="booleanFilter.value = (booleanFilter.value === false) ? undefined : false; filter.save();">
<i class="fa" ng-class="{'fa-check': booleanFilter.value === false}"></i>
{{ booleanFilter.choiceNo | translate }}
</a>
</li>
</ul>
</span>
<!-- boolean Filters (combined!) -->
<span uib-dropdown>
<span class="sort-spacer pointer" id="dropdownItems" uib-dropdown-toggle
ng-class="{'bold': (filter.booleanFilters.closed.value !== undefined) ||
(filter.booleanFilters.is_hidden.value !== undefined),
'disabled': isSelectMode}"
ng-disabled="isSelectMode">
<translate>Items</translate>
<span class="caret"></span>
</span>
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownItems">
<li>
<a href ng-click="filter.booleanFilters.closed.value = (filter.booleanFilters.closed.value ? undefined : true); filter.save();">
<i class="fa" ng-class="{'fa-check': filter.booleanFilters.closed.value === true}"></i>
{{ filter.booleanFilters.closed.choiceYes | translate }}
</a>
</li>
<li>
<a href ng-click="filter.booleanFilters.closed.value = (filter.booleanFilters.closed.value === false) ? undefined : false; filter.save();">
<i class="fa" ng-class="{'fa-check': filter.booleanFilters.closed.value === false}"></i>
{{ filter.booleanFilters.closed.choiceNo | translate }}
</a>
</li>
<li class="divider"></li>
<li>
<a href ng-click="filter.booleanFilters.is_hidden.value = (filter.booleanFilters.is_hidden.value ? undefined : true); filter.save();">
<i class="fa" ng-class="{'fa-check': filter.booleanFilters.is_hidden.value === true}"></i>
{{ filter.booleanFilters.is_hidden.choiceYes | translate }}
</a>
</li>
<li>
<a href ng-click="filter.booleanFilters.is_hidden.value = (filter.booleanFilters.is_hidden.value === false) ? undefined : false; filter.save();">
<i class="fa" ng-class="{'fa-check': filter.booleanFilters.is_hidden.value === false}"></i>
{{ filter.booleanFilters.is_hidden.choiceNo | translate }}
</a>
</li>
</ul>
</span>
<!-- search field -->
<span class="form-group">
<span class="input-group">
@ -311,10 +325,6 @@
<!-- main content column -->
<div class="col-xs-6 content"
style="padding-left: calc({{ items.length === itemsSearched.length ? item.parentCount : 0 }}*25px)">
<div class="icon-column">
<i class="fa fa-ban" ng-style="{'visibility': item.is_hidden ? 'visible' : 'hidden'}"
title="{{ 'Internal item' | translate }}"></i>
</div>
<div class="caret-spacer" ng-if="items.length === itemsSearched.length">
<i class="fa pointer"
ng-style="{visibility: hasChildren(item) ? 'visible' : 'hidden'}"
@ -364,9 +374,12 @@
</span>
</div>
<div os-perms="!agenda.can_manage">
<span ng-if="item.duration">
<i class="fa fa-clock-o"></i> {{ item.duration | osMinutesToTime }}
</span>
<div os-perms="agenda.can_see_hidden_items">
<span ng-if="item.duration">
<i class="fa fa-clock-o"></i> {{ item.duration | osMinutesToTime }}
<translate translate-comment="'h' means time in hours">h</translate>
</span>
</div>
</div>
</div>
<div ng-style="{'visibility': (item.comment || item.hover) ? 'visible' : 'hidden'}">
@ -390,20 +403,26 @@
<template-hook hook-name="agendaListAdditionalContentColumn"></template-hook>
</small>
</div>
<div style="width: 40%;" class="pull-right">
<div style="width: 40%; overflow: hidden;" class="pull-right">
<div os-perms="agenda.can_manage">
<div class="pointer nobr" ng-click="item.type = (item.type == 1) ? 2 : 1; save(item);" ng-show="item.hover || item.is_hidden">
<i class="fa" ng-class="item.is_hidden ? 'fa-check-square-o' : 'fa-square-o'"></i>
<span class="spacer-left" translate>Internal item</span>
<span class="spacer-left" translate>Internal</span>
</div>
<div class="pointer nobr" ng-click="item.closed = !item.closed; save(item);" ng-show="item.hover || item.closed">
<i class="fa" ng-class="item.closed ? 'fa-check-square-o' : 'fa-square-o'"></i>
<span class="spacer-left" translate>Done</span>
</div>
</div>
<div os-perms="!agenda.can_manage" ng-if="item.closed">
<i class="fa fa-check-square-o"></i>
<span class="spacer-left" translate>Done</span>
<div os-perms="!agenda.can_manage" >
<div ng-show="item.is_hidden">
<i class="fa fa-ban"></i>
<span class="spacer-left" translate>Internal</span>
</div>
<div ng-show="item.closed">
<i class="fa fa-check-square-o"></i>
<span class="spacer-left" translate>Done</span>
</div>
</div>
</div>
</div>

View File

@ -1,6 +1,16 @@
<div ng-if="item" class="details" ng-controller="ListOfSpeakersManagementCtrl">
<div class="speakers-toolbar">
<div class="pull-right">
<span os-perms="agenda.can_manage">
<button ng-if="item.speaker_list_closed" ng-click="closeList(false)"
class="btn btn-sm btn-default">
<translate>Open list of speakers</translate>
</button>
<button ng-if="!item.speaker_list_closed" ng-click="closeList(true)"
class="btn btn-sm btn-default">
<translate>Close list of speakers</translate>
</button>
</span>
<span os-perms="agenda.can_manage_list_of_speakers">
<button ng-if="isAllowed('removeAll')" class="btn btn-sm btn-danger"
ng-bootbox-confirm="{{ 'Are you sure you want to remove all speakers from this list?'| translate }}"
@ -9,18 +19,6 @@
<translate>Remove all speakers</translate>
</button>
</span>
<span os-perms="agenda.can_manage">
<button ng-if="item.speaker_list_closed" ng-click="closeList(false)"
class="btn btn-sm btn-default">
<i class="fa fa-toggle-off"></i>
<translate>Closed</translate>
</button>
<button ng-if="!item.speaker_list_closed" ng-click="closeList(true)"
class="btn btn-sm btn-default">
<i class="fa fa-toggle-on"></i>
<translate>Open</translate>
</button>
</span>
</div>
</div>

View File

@ -115,17 +115,16 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
//creates the voting string for the result table and differentiates between special values
var parseVoteValue = function(voteObject, printLabel) {
var voteVal = "";
if (voteObject) {
if (printLabel) {
voteVal += voteObject.label + ": ";
}
voteVal += voteObject.value;
if (printLabel) {
voteVal += voteObject.label + ": ";
if (voteObject.percentStr) {
voteVal += " " + voteObject.percentStr;
}
}
voteVal += voteObject.value;
if (voteObject.percentStr) {
voteVal += " " + voteObject.percentStr;
}
voteVal += "\n";
return voteVal;
};
@ -373,7 +372,10 @@ angular.module('OpenSlidesApp.assignments.pdf', ['OpenSlidesApp.core.pdf'])
});
} else {
angular.forEach(candidates, function(option) {
var candidate = option.candidate.get_full_name();
var candidate;
if (option.candidate) {
candidate = option.candidate.get_full_name();
}
candidateBallotList.push(createYNBallotEntry(candidate));
});
}

View File

@ -94,7 +94,7 @@
<span class="sort-spacer pointer" ng-click="filter.reset(isSelectMode)"
ng-if="filter.areFiltersSet()" ng-disabled="isSelectMode"
ng-class="{'disabled': isSelectMode}">
<i class="fa fa-times-circle"></i>
<i class="fa fa-window-close"></i>
<translate>Filter</translate>
</span>
<!-- Tag filter -->
@ -152,11 +152,13 @@
<!-- all sortOptions -->
<li ng-repeat="option in sortOptions">
<a ng-click="sort.toggle(option.name)">
{{ option.display_name | translate }}
<span class="spacer-right pull-right"></span>
<span ng-style="{'font-weight': sort.column === option.name ? 'bold' : 'normal'}">
{{ option.display_name | translate }}
</span>
<span class="spacer-right pull-right"></span>
<i class="pull-right fa"
ng-style="{'visibility': sort.column === option.name ? 'visible' : 'hidden'}"
ng-class="sort.reverse ? 'fa-sort-desc' : 'fa-sort-asc'">
ng-class="sort.reverse ? 'fa-sort-amount-desc' : 'fa-sort-amount-asc'">
</i>
</a>
</li>

View File

@ -131,6 +131,10 @@
display: auto;
}
.inline {
display: inline;
}
.login-logo {
width: 250px;
}
@ -243,3 +247,9 @@ tr.selected td {
background-color: #fcf8e3;
border-color: #faebcc;
}
.close {
opacity: 0.3 !important;
}
.close:hover {
opacity: 0.6 !important;
}

View File

@ -24,9 +24,9 @@
font-weight: normal;
font-size: 5vw;
}
#countdown.warning {
.warning_time {
color: #ed940d;
}
#countdown.negative {
.negative {
color: #CC0000;
}

View File

@ -5,7 +5,7 @@
right: 30px;
padding: 10px 30px;
background: white;
opacity: 0.6;
opacity: 0.8;
transition: opacity 250ms ease-out;
z-index: 100;

View File

@ -20,18 +20,8 @@
}
}
.dropdown {
width: 65%;
padding-right: 5px;
float: left;
button {
width: 100%;
}
}
.btn-danger {
width: 35%;
.dropdown button {
width: 100%;
}
.resolution {

View File

@ -14,6 +14,7 @@
& > button {
width: 100%;
overflow: hidden;
}
}
}

View File

@ -191,14 +191,6 @@ hr {
margin-top: 20px;
padding-right: 6px;
}
&.warning {
color: #ed940d;
}
&.negative {
color: #CC0000;
}
}
.message_background {

View File

@ -561,7 +561,7 @@ strong, b, th {
}
.iframewrapper {
width: 256px;
width: 258px;
position: relative;
overflow: hidden;
border: 1px solid #D5D5D5;
@ -597,3 +597,13 @@ strong, b, th {
font-size: 16px;
color: #000;
}
/** Config **/
#config .panel-body {
padding-top: 0;
}
#config.details h3 {
font-size: 22px;
padding-top: 30px;
margin-top: 0;
}

View File

@ -4,6 +4,7 @@
@import "variables";
@import "helper";
@import "ui-override";
@import "core/countdown";
/* Apps */
@import "core/projector";

View File

@ -1070,7 +1070,7 @@ angular.module('OpenSlidesApp.core', [
* - YOffset: move the editor toolbar 40px up
*/
getOptions: function () {
var extraPluginsString = 'colorbutton,find,sourcedialog,justify,showblocks';
var extraPluginsString = 'colorbutton,colordialog,find,sourcedialog,justify,showblocks';
var registeredPluginsString = extraPlugins.join(',');
if (registeredPluginsString) {
extraPluginsString += ',' + registeredPluginsString;

View File

@ -1626,6 +1626,7 @@ angular.module('OpenSlidesApp.core.site', [
id: projector.id,
floor: 800,
ceil: 3840,
step: 10,
translate: function (value) {
return value + 'px';
},

View File

@ -2,7 +2,7 @@
<div>
<div id="countdown" ng-class="{
'negative': countdown.seconds <= 0,
'warning': countdown.seconds <= config('agenda_countdown_warning_time') && countdown.seconds > 0 }">
'warning_time': countdown.seconds <= config('agenda_countdown_warning_time') && countdown.seconds > 0 }">
<div class="row">
<div class="col-d-12">{{ countdown.seconds | osSecondsToTime}}</div>
</div>

View File

@ -45,14 +45,31 @@
{{ projector.id }}:
<strong>{{ projector.name | translate }}</strong>
</a>
<a href="" class="pull-right" ng-click="toggleEditMenu(projector.id)"><i class="fa" ng-class="edit[projector.id] ? 'fa-times' : 'fa-pencil'"></i></a>
<span class="pull-right">
<a href="" ng-click="toggleEditMenu(projector.id)"><i class="fa" ng-class="edit[projector.id] ? 'fa-times' : 'fa-pencil'"></i></a>
<a href="" class="text-danger" style="padding-left: 5px;"
ng-hide="projector.id==1 || edit[projector.id]"
ng-bootbox-confirm="{{ 'Are you sure you want to delete this entry?' | translate }}<br>
<b>{{ projector.name | translate }}</b>"
ng-bootbox-confirm-action="deleteProjector(projector)">
<i class="fa fa-trash"></i>
</a>
</span>
</div>
<div ng-show="edit[projector.id]" style="margin-bottom: -20px;">
<div>
<div class="form-group">
<label for="name{{ projector.id }}" class="control-label"><translate>Name</translate>:</label>
<input type="text" class="form-control" id="name{{ projector.id }}"
ng-model="projector.name" ng-change="editName(projector)"
ng-model-options="{debounce: 2000}"></input>
</div>
<div class="form-group">
<label for="menuProjector{{ projector.id }}" class="control-label"><translate>Projection defaults</translate>:</label>
<div class="dropdown" uib-dropdown>
<button class="btn btn-default btn-sm" id="menuProjector{{ projector.id }}" uib-dropdown-toggle>
<translate>Projection defaults</translate>
--- <translate>Please select</translate> ---
<span class="caret"></span>
</button>
<ul class="dropdown-menu" uib-dropdown-menu aria-labelledby="menuProjector{{ projector.id }}">
@ -64,49 +81,34 @@
</li>
</ul>
</div>
<button type="button" class="btn btn-danger btn-sm"
ng-hide="projector.id==1"
ng-bootbox-confirm="{{ 'Are you sure you want to delete this entry?' | translate }}<br>
<b>{{ projector.name | translate }}</b>"
ng-bootbox-confirm-action="deleteProjector(projector)">
<i class="fa fa-trash"></i>
<translate>Delete</translate>
</button>
<div ng-show="projector.id==1" style="height: 30px"><!-- Placeholder --></div>
</div>
<div>
<label for="name{{ projector.id }}" class="control-label"><translate>Name</translate>:</label>
<input type="text" class="form-control" id="name{{ projector.id }}"
ng-model="projector.name" ng-change="editName(projector)"
ng-model-options="{debounce: 2000}"></input>
<div class="form-group">
<label for="aspectRatio{{ projector.id }}" class="control-label"><translate>Aspect ratio</translate>:</label>
<div id="aspectRatio{{ projector.id }}">
<div class="dropdown" uib-dropdown>
<button class="btn btn-default btn-sm" uib-dropdown-toggle>
{{ resolutions[projector.id].aspectRatio }}
<span class="caret"></span>
</button>
<ul class="dropdown-menu" uib-dropdown-menu aria-labelledby="aspectRatio{{ projector.id }}">
<li ng-repeat="(aspectRatio, value) in aspectRatios track by $index">
<a href ng-click="setAspectRatio(projector, aspectRatio); saveResolution(projector);">
<i class="fa fa-check" ng-if="aspectRatio === resolutions[projector.id].aspectRatio"></i>
{{ aspectRatio }}
</a>
</li>
</ul>
</div>
</div>
</div>
<div>
<label for="resolution{{ projector.id }}" class="control-label"><translate>Resolution</translate>:</label>
<div class="form-group">
<label for="resolution{{ projector.id }}" class="control-label"><translate>Scaling</translate>:</label>
<div id="resolution{{ projector.id }}">
<div>
<span>
{{ resolutions[projector.id].width }}&times;{{ resolutions[projector.id].height }}
</span>
<div class="dropdown" uib-dropdown>
<button class="btn btn-default btn-sm" id="aspectRatio{{ projector.id }}" uib-dropdown-toggle>
<translate>Aspect ratio</translate>: {{ resolutions[projector.id].aspectRatio }}
<span class="caret"></span>
</button>
<ul class="dropdown-menu" uib-dropdown-menu aria-labelledby="aspectRatio{{ projector.id }}">
<li ng-repeat="(aspectRatio, value) in aspectRatios track by $index">
<a href ng-click="setAspectRatio(projector, aspectRatio); saveResolution(projector);">
<i class="fa fa-check" ng-if="aspectRatio === resolutions[projector.id].aspectRatio"></i>
{{ aspectRatio }}
</a>
</li>
</ul>
</div>
</div>
<div>
<rzslider class="os-slider"
rz-slider-model="sliders[projector.id].value"
rz-slider-options="sliders[projector.id].options"></rzslider>
</div>
</div>
<p class="help-block">
{{ resolutions[projector.id].error }}
@ -127,7 +129,7 @@
}
#iframewrapper_{{ projector.id }} {
height: {{ projector.iframeHeight }}px;
height: {{ projector.iframeHeight + 2 }}px;
}
#iframeoverlay_{{ projector.id }} {
@ -195,15 +197,15 @@
<!-- Default, BC, Blank -->
<div class="middle">
<div class="btn-group">
<button class="btn btn-sm" ng-class="broadcast == projector.id ? 'btn-primary' : 'btn-default'"
<button class="btn btn-sm" ng-class="broadcast == projector.id ? 'btn-danger' : 'btn-default'"
ng-click="projector.toggleBroadcast(projector)"
ng-disabled="broadcast > 0 && broadcast != projector.id"
uib-tooltip="{{ 'Broadcast the content of this projector to all other projectors.' | translate }}"
tooltip-placement="bottom">
<i class="fa" ng-class="broadcast == projector.id ? 'fa-star' : 'fa-star-o'"></i>
<i class="fa fa-bullhorn"></i>
<translate>Broadcast</translate>
</button>
<button class="btn btn-sm" ng-class="projector.blank ? 'btn-primary' : 'btn-default'"
<button class="btn btn-sm" ng-class="projector.blank ? 'btn-danger' : 'btn-default'"
ng-click="projector.toggleBlank(projector)"
ng-disabled="broadcast > 0 && broadcast != projector.id">
<i class="fa" ng-class="projector.blank ? 'fa-square' : 'fa-square-o'"></i>

View File

@ -49,7 +49,7 @@
</div>
<div os-perms="core.can_manage_projector">
<button class="btn btn-sm" ng-click="active_projector.toggleBlank()" ng-hide="projectors.length > 1"
ng-class="active_projector.blank ? 'btn-primary' : 'btn-default'">
ng-class="active_projector.blank ? 'btn-danger' : 'btn-default'">
<i class="fa" ng-class="active_projector.blank ? 'fa-square' : 'fa-square-o'"></i>
<translate>Blank</translate>
</button>
@ -59,20 +59,6 @@
<translate>Manage</translate>
</a>
</div>
<div class="btn-group nobr" ng-show="projectors.length > 1" os-perms="core.can_manage_projector">
<button class="btn btn-sm" ng-class="broadcast == active_projector.id ? 'btn-primary' : 'btn-default'"
ng-click="active_projector.toggleBroadcast()" ng-disabled="broadcast > 0 && broadcast != active_projector.id">
<i class="fa" ng-class="broadcast == active_projector.id ? 'fa-star' : 'fa-star-o'"></i>
<translate>Broadcast</translate>
</button>
<button class="btn btn-sm" ng-click="active_projector.toggleBlank()"
ng-class="active_projector.blank ? 'btn-primary' : 'btn-default'"
ng-disabled="broadcast > 0 && broadcast != active_projector.id">
<i class="fa" ng-class="active_projector.blank ? 'fa-square' : 'fa-square-o'"></i>
<translate>Blank</translate>
</button>
</div>
</div>
<a ui-sref="projector({id: active_projector.id })" target="_blank">
@ -187,7 +173,7 @@
<span ng-if="!countdown.editTime" class="countdown_timer vcenter"
ng-class="{
'negative': countdown.seconds <= 0,
'warning': countdown.seconds <= config('agenda_countdown_warning_time') && countdown.seconds > 0 }">
'warning_time': countdown.seconds <= config('agenda_countdown_warning_time') && countdown.seconds > 0 }">
{{ countdown.seconds | osSecondsToTime }}
</span>
<!-- edit countdown form -->

View File

@ -2,7 +2,7 @@
<div class="countdown well pull-right"
ng-class="{
'negative': countdown.seconds <= 0,
'warning': countdown.seconds <= config('agenda_countdown_warning_time') && countdown.seconds > 0 }">
'warning_time': countdown.seconds <= config('agenda_countdown_warning_time') && countdown.seconds > 0 }">
{{ countdown.seconds | osSecondsToTime}}
<div class="description">{{ countdown.description }}</div>
</div>

View File

@ -124,7 +124,7 @@
<!-- language switcher -->
<span uib-dropdown> |
<a href="" class="headerlink" uib-dropdown-toggle id="language-dropdown">
<i class="fa fa-flag"></i>
<i class="fa fa-globe"></i>
<span class="hide-sm">{{ selectedLanguage[0].name | translate }}</span>
</a>
<ul class="dropdown-menu pull-right" uib-dropdown-menu aria-labelledby="language-dropdown">

View File

@ -172,7 +172,7 @@
<span class="sort-spacer pointer" ng-click="filter.reset(isSelectMode)"
ng-if="filter.areFiltersSet()" ng-disabled="isSelectMode"
ng-class="{'disabled': isSelectMode}">
<i class="fa fa-times-circle"></i>
<i class="fa fa-window-close"></i>
<translate>Filter</translate>
</span>
<!-- boolean Filters -->
@ -210,11 +210,13 @@
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownSort">
<li ng-repeat="option in sortOptions">
<a href ng-click="sort.toggle(option.name)">
{{ option.display_name | translate }}
<span ng-style="{'font-weight': sort.column === option.name ? 'bold' : 'normal'}">
{{ option.display_name | translate }}
</span>
<span class="spacer-right pull-right"></span>
<i class="pull-right fa"
ng-style="{'visibility': sort.column === option.name ? 'visible' : 'hidden'}"
ng-class="sort.reverse ? 'fa-sort-desc' : 'fa-sort-asc'">
ng-class="sort.reverse ? 'fa-sort-amount-desc' : 'fa-sort-amount-asc'">
</i>
</a>
</li>

View File

@ -370,10 +370,16 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
style: 'heading3',
marginTop: 25,
});
var width;
if (params.lineNumberMode == 'outside') {
width = '80%';
} else {
width = '100%';
}
reason.push({
columns: [
{
width: '80%',
width: width,
stack: converter.convertHTML(motion.getReason(motionVersion), 'none'),
},
]

View File

@ -47,13 +47,13 @@
</label>
</div>
<!-- line number mode for resonsive size small/extra small (dropdown) -->
<div class="dropdown hidden-md hidden-lg" uib-dropdown>
<div class="dropdown hidden-md hidden-lg inline" uib-dropdown>
<button type="button" class="btn btn-default btn-sm" id="dropdownLineMode" uib-dropdown-toggle>
<i class="fa fa-list-ol" aria-hidden="true"></i>
<translate>Line numbering</translate>
<span class="caret"></span>
</button>
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownLineMode">
<ul class="dropdown-menu" aria-labelledby="dropdownLineMode">
<li>
<a href="" ng-click="setLineNumberMode('none')">
<i class="fa fa-check" ng-if="lineNumberMode == 'none'"></i>

View File

@ -221,7 +221,7 @@
<translate>Category</translate>
<span class="caret"></span>
</span>
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownCategory">
<ul class="dropdown-menu dropdown-menu-left" aria-labelledby="dropdownCategory">
<li ng-repeat="category in categories | orderBy: config('motions_export_category_sorting')">
<a href ng-click="filter.operateMultiselectFilter('category', category.id, isSelectMode)">
<i class="fa fa-check" ng-if="filter.multiselectFilters.category.indexOf(category.id) > -1"></i>
@ -245,7 +245,7 @@
<translate>Motion block</translate>
<span class="caret"></span>
</span>
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownBlock">
<ul class="dropdown-menu dropdown-menu-left" aria-labelledby="dropdownBlock">
<li ng-repeat="block in motionBlocks">
<a href ng-click="filter.operateMultiselectFilter('motionBlock', block.id, isSelectMode)">
<i class="fa fa-check" ng-if="filter.multiselectFilters.motionBlock.indexOf(block.id) > -1"></i>
@ -376,18 +376,20 @@
<span class="spacer-right pull-right"></span>
<i class="pull-right fa"
ng-style="{'visibility': sort.column === 'agenda_item.getItemNumberWithAncestors()' ? 'visible' : 'hidden'}"
ng-class="sort.reverse ? 'fa-sort-desc' : 'fa-sort-asc'">
ng-class="sort.reverse ? 'fa-sort-amount-desc' : 'fa-sort-amount-asc'">
</i>
</a>
</li>
<!-- all other sortOptions -->
<li ng-repeat="option in sortOptions">
<a href ng-click="sort.toggle(option.name)">
{{ option.display_name | translate }}
<span class="spacer-right pull-right"></span>
<span ng-style="{'font-weight': sort.column === option.name ? 'bold' : 'normal'}">
{{ option.display_name | translate }}
</span>
<span class="spacer-right pull-right"></span>
<i class="pull-right fa"
ng-style="{'visibility': sort.column === option.name ? 'visible' : 'hidden'}"
ng-class="sort.reverse ? 'fa-sort-desc' : 'fa-sort-asc'">
ng-class="sort.reverse ? 'fa-sort-amount-desc' : 'fa-sort-amount-asc'">
</i>
</a>
</li>
@ -409,7 +411,7 @@
<span class="spacer-left-lg pointer" ng-click="resetFilters(isSelectMode)"
ng-if="filter.areFiltersSet()" ng-disabled="isSelectMode"
ng-class="{'disabled': isSelectMode}">
<i class="fa fa-times-circle"></i>
<i class="fa fa-window-close"></i>
<strong translate>All Filters</strong>
</span>
<!-- state -->

View File

@ -18,7 +18,7 @@
<a os-perms="agenda.can_manage" ng-click="openDialog(topic)"
class="btn btn-default btn-sm"
title="{{ 'Edit' | translate}}">
<i class="fa fa-pencil"></i>
<i class="fa fa-pencil fa-lg"></i>
</a>
</div>
<h1>{{ topic.agenda_item.getTitle() }}</h1>

View File

@ -198,7 +198,7 @@
<span class="sort-spacer pointer" ng-click="filter.reset(isSelectMode)"
ng-if="filter.areFiltersSet()" ng-disabled="isSelectMode"
ng-class="{'disabled': isSelectMode}">
<i class="fa fa-times-circle"></i>
<i class="fa fa-window-close"></i>
<translate>Filter</translate>
</span>
<!-- Group filter -->
@ -260,11 +260,13 @@
<ul class="dropdown-menu dropdown-menu-right dropdown-entries" aria-labelledby="dropdownSort">
<li ng-repeat="option in sortOptions">
<a href ng-click="sort.toggle(option.name)">
{{ option.display_name | translate }}
<span ng-style="{'font-weight': sort.column === option.name ? 'bold' : 'normal'}">
{{ option.display_name | translate }}
</span>
<span class="spacer-right pull-right"></span>
<i class="pull-right fa"
ng-style="{'visibility': sort.column === option.name ? 'visible' : 'hidden'}"
ng-class="sort.reverse ? 'fa-sort-desc' : 'fa-sort-asc'">
ng-class="sort.reverse ? 'fa-sort-amount-desc' : 'fa-sort-amount-asc'">
</i>
</a>
</li>
@ -409,7 +411,7 @@
</div>
<div os-perms="users.can_manage" ng-show="user.structure_level || user.hover">
<div class="popover-wrapper" uib-tooltip="{{ 'Structure level' | translate }}" tooltip-placement="top-left">
<div class="popover-wrapper">
<i class="fa fa-flag"></i>
<span editable-text="user.structure_level" onaftersave="save(user)">
<span ng-if="!user.structure_level" translate>Set structure level ...</span>
@ -425,7 +427,7 @@
</div>
<div os-perms="users.can_manage" ng-show="user.comment || user.hover">
<div class="popover-wrapper" uib-tooltip="{{ 'Comment' | translate }}" tooltip-placement="top-left">
<div class="popover-wrapper">
<i class="fa fa-info-circle"></i>
<span editable-text="user.comment" onaftersave="save(user)">
<span ng-if="!user.comment" translate>Set comment ...</span>