2015-11-29 22:25:01 +01:00
|
|
|
<div class="header">
|
|
|
|
<div class="title">
|
|
|
|
<div class="submenu">
|
2016-01-10 13:47:59 +01:00
|
|
|
<a ng-click="openDialog()" os-perms="motions.can_create" class="btn btn-primary btn-sm">
|
2015-11-29 22:25:01 +01:00
|
|
|
<i class="fa fa-plus fa-lg"></i>
|
|
|
|
<translate>New</translate>
|
|
|
|
</a>
|
|
|
|
<a ui-sref="motions.category.list" os-perms="motions.can_manage" class="btn btn-default btn-sm">
|
|
|
|
<i class="fa fa-sitemap fa-lg"></i>
|
|
|
|
<translate>Categories</translate>
|
|
|
|
</a>
|
2016-10-01 20:42:44 +02:00
|
|
|
<a ui-sref="motions.motionBlock.list" os-perms="motions.can_manage" class="btn btn-default btn-sm">
|
2016-10-14 15:38:56 +02:00
|
|
|
<i class="fa fa-th-large fa-lg"></i>
|
2016-10-01 20:42:44 +02:00
|
|
|
<translate>Motion blocks</translate>
|
|
|
|
</a>
|
2015-11-29 22:25:01 +01:00
|
|
|
<a ui-sref="core.tag.list" os-perms="core.can_manage_tags" class="btn btn-default btn-sm">
|
|
|
|
<i class="fa fa-tags fa-lg"></i>
|
|
|
|
<translate>Tags</translate>
|
|
|
|
</a>
|
2015-11-28 19:59:58 +01:00
|
|
|
<a ui-sref="motions.motion.import" os-perms="motions.can_manage" class="btn btn-default btn-sm">
|
|
|
|
<i class="fa fa-download fa-lg"></i>
|
|
|
|
<translate>Import</translate>
|
|
|
|
</a>
|
2015-11-29 22:25:01 +01:00
|
|
|
</div>
|
|
|
|
<h1 translate>Motions</h1>
|
|
|
|
</div>
|
2015-03-09 15:40:54 +01:00
|
|
|
</div>
|
|
|
|
|
2015-11-29 22:25:01 +01:00
|
|
|
<div class="details">
|
|
|
|
<div class="row">
|
2016-08-12 15:01:41 +02:00
|
|
|
<div class="col-sm-12">
|
2016-11-18 13:50:40 +01:00
|
|
|
<!-- select mode -->
|
2017-02-01 22:16:26 +01:00
|
|
|
<button os-perms="motions.can_manage" class="btn btn-sm"
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-class="$parent.isSelectMode ? 'btn-primary' : 'btn-default'"
|
|
|
|
ng-click="$parent.isSelectMode = !$parent.isSelectMode; uncheckAll()">
|
2015-11-29 22:25:01 +01:00
|
|
|
<i class="fa fa-check-square-o"></i>
|
2015-12-11 20:04:05 +01:00
|
|
|
<translate>Select ...</translate>
|
2015-11-29 22:25:01 +01:00
|
|
|
</button>
|
2016-08-12 15:01:41 +02:00
|
|
|
<!-- Export dropdown -->
|
|
|
|
<div class="dropdown pull-right" uib-dropdown>
|
2017-02-01 22:16:26 +01:00
|
|
|
<button type="button" class="btn btn-default btn-sm" id="dropdownExport" uib-dropdown-toggle>
|
2016-08-12 15:01:41 +02:00
|
|
|
<i class="fa fa-upload"></i>
|
|
|
|
<span ng-if="motionsFiltered.length == motions.length" translate>
|
|
|
|
Export all
|
|
|
|
</span>
|
|
|
|
<span ng-if="motionsFiltered.length != motions.length" translate>
|
|
|
|
Export filtered
|
|
|
|
</span>
|
|
|
|
<span class="caret"></span>
|
2015-11-29 22:25:01 +01:00
|
|
|
</button>
|
2016-08-12 15:01:41 +02:00
|
|
|
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownExport">
|
2016-09-13 11:54:30 +02:00
|
|
|
<!-- PDF export -->
|
2016-08-12 15:01:41 +02:00
|
|
|
<li>
|
2016-11-04 11:57:23 +01:00
|
|
|
<a href="" ng-click="pdfExport()">
|
2017-02-01 22:16:26 +01:00
|
|
|
<i class="fa fa-file-pdf-o"></i>
|
2016-09-26 12:44:23 +02:00
|
|
|
PDF
|
2016-08-12 15:01:41 +02:00
|
|
|
</a>
|
|
|
|
</li>
|
2016-09-26 12:44:23 +02:00
|
|
|
<!-- CSV export -->
|
2017-03-21 16:16:38 +01:00
|
|
|
<li os-perms="motions.can_manage">
|
2016-09-13 11:54:30 +02:00
|
|
|
<a href="" id="downloadLinkCSV"
|
2016-11-04 11:57:23 +01:00
|
|
|
ng-click="csvExport()">
|
2017-02-01 22:16:26 +01:00
|
|
|
<i class="fa fa-file-text-o"></i>
|
2016-09-26 12:44:23 +02:00
|
|
|
CSV
|
2016-08-12 15:01:41 +02:00
|
|
|
</a>
|
|
|
|
</li>
|
2016-09-26 12:44:23 +02:00
|
|
|
<!-- DOCX export -->
|
2017-03-21 16:16:38 +01:00
|
|
|
<li os-perms="motions.can_manage">
|
2016-11-04 11:57:23 +01:00
|
|
|
<a href="" ng-click="docxExport()">
|
2017-02-01 22:16:26 +01:00
|
|
|
<i class="fa fa-file-word-o"></i>
|
2016-09-26 12:44:23 +02:00
|
|
|
DOCX
|
2016-09-13 11:54:30 +02:00
|
|
|
</a>
|
|
|
|
</li>
|
2016-08-12 15:01:41 +02:00
|
|
|
</ul>
|
2015-10-15 17:25:40 +02:00
|
|
|
</div>
|
2015-11-29 22:25:01 +01:00
|
|
|
</div>
|
|
|
|
</div>
|
2016-08-12 15:01:41 +02:00
|
|
|
|
2016-11-18 13:50:40 +01:00
|
|
|
<div uib-collapse="!isSelectMode" class="row spacer">
|
2016-12-12 12:14:30 +01:00
|
|
|
<div class="col-sm-12 text-left form-inline" ng-show="isSelectMode" os-perms="motions.can_manage">
|
|
|
|
<!-- actions -->
|
2017-02-01 22:16:26 +01:00
|
|
|
<select ng-model="selectedAction" class="form-control input-sm">
|
2016-12-12 12:14:30 +01:00
|
|
|
<option value="" translate>--- Select action ---</option>
|
|
|
|
<option value="delete" translate>Delete</option>
|
|
|
|
<option value="setStatus" translate>Set status</option>
|
|
|
|
<option value="setCategory" ng-if="categories.length" translate>Set category</option>
|
|
|
|
<option value="setMotionBlock" ng-if="motionBlocks.length" translate>Set motion block</option>
|
|
|
|
</select>
|
|
|
|
<!-- state select -->
|
2017-02-01 22:16:26 +01:00
|
|
|
<select ng-show="selectedAction == 'setStatus'" ng-model="selectedState" class="form-control input-sm">
|
2016-12-13 12:20:14 +01:00
|
|
|
<option value="" translate>--- Select state ---</option>
|
2016-12-12 12:14:30 +01:00
|
|
|
<option ng-repeat="state in states" ng-disabled="state.workflowHeader" value="{{ state.id }}">
|
|
|
|
{{ (state.workflowHeader ? state.headername : state.name) | translate }}
|
|
|
|
</option>
|
|
|
|
</select>
|
|
|
|
<!-- set state button -->
|
|
|
|
<a ng-show="selectedAction == 'setStatus' && selectedState"
|
2017-02-01 22:16:26 +01:00
|
|
|
ng-click="setStatusMultiple(selectedState)" class="btn btn-default btn-sm">
|
2016-12-12 12:14:30 +01:00
|
|
|
<translate>Set status</translate>
|
|
|
|
</a>
|
|
|
|
<!-- category select -->
|
2017-02-01 22:16:26 +01:00
|
|
|
<select ng-show="selectedAction == 'setCategory'" ng-model="selectedCategory" class="form-control input-sm">
|
2016-12-13 12:20:14 +01:00
|
|
|
<option value="" translate>--- Select category ---</option>
|
2016-12-12 12:14:30 +01:00
|
|
|
<option ng-repeat="category in categories" value="{{ category.id }}">
|
|
|
|
{{ category.name }}
|
|
|
|
</option>
|
|
|
|
<option value="no_category_selected" translate>No category</option>
|
|
|
|
</select>
|
|
|
|
<!-- set category button -->
|
|
|
|
<a ng-show="selectedAction == 'setCategory' && selectedCategory"
|
2017-02-01 22:16:26 +01:00
|
|
|
ng-click="setCategoryMultiple(selectedCategory)" class="btn btn-default btn-sm">
|
2016-12-12 12:14:30 +01:00
|
|
|
<translate>Set category</translate>
|
|
|
|
</a>
|
|
|
|
<!-- motionBlock select -->
|
2017-02-01 22:16:26 +01:00
|
|
|
<select ng-show="selectedAction == 'setMotionBlock'" ng-model="selectedMotionBlock" class="form-control input-sm">
|
2016-12-13 12:20:14 +01:00
|
|
|
<option value="" translate>--- Select motion block ---</option>
|
2016-12-12 12:14:30 +01:00
|
|
|
<option ng-repeat="motionBlock in motionBlocks" value="{{ motionBlock.id }}">
|
|
|
|
{{ motionBlock.title }}
|
|
|
|
</option>
|
|
|
|
<option value="no_motionBlock_selected" translate>No motion block</option>
|
|
|
|
</select>
|
|
|
|
<!-- set motion block button -->
|
|
|
|
<a ng-show="selectedAction == 'setMotionBlock' && selectedMotionBlock"
|
2017-02-01 22:16:26 +01:00
|
|
|
ng-click="setMotionBlockMultiple(selectedMotionBlock)" class="btn btn-default btn-sm">
|
2016-12-12 12:14:30 +01:00
|
|
|
<translate>Set motion block</translate>
|
|
|
|
</a>
|
2015-11-29 22:25:01 +01:00
|
|
|
<!-- delete button -->
|
2016-12-12 12:14:30 +01:00
|
|
|
<a ng-show="selectedAction == 'delete'"
|
2016-09-18 11:03:30 +02:00
|
|
|
ng-bootbox-confirm="{{ 'Are you sure you want to delete all selected motions?' | translate }}"
|
2016-09-15 14:48:03 +02:00
|
|
|
ng-bootbox-confirm-action="deleteMultiple()"
|
2017-02-10 09:11:45 +01:00
|
|
|
class="btn btn-default btn-sm btn-danger">
|
2015-11-29 22:25:01 +01:00
|
|
|
<i class="fa fa-trash fa-lg"></i>
|
2015-11-28 19:59:58 +01:00
|
|
|
<translate>Delete selected motions</translate>
|
2015-11-29 22:25:01 +01:00
|
|
|
</a>
|
2015-11-03 21:38:53 +01:00
|
|
|
</div>
|
2015-03-09 15:40:54 +01:00
|
|
|
</div>
|
|
|
|
|
2015-12-04 12:25:39 +01:00
|
|
|
<div class="spacer-top-lg italic">
|
2016-01-21 20:43:04 +01:00
|
|
|
{{ motionsFiltered.length }} /
|
2015-12-01 13:45:54 +01:00
|
|
|
{{ motions.length }} {{ "motions" | translate }}<span ng-if="(motions|filter:{selected:true}).length > 0">,
|
2015-11-29 22:25:01 +01:00
|
|
|
{{(motions|filter:{selected:true}).length}} {{ "selected" | translate }}</span>
|
2015-12-04 12:25:39 +01:00
|
|
|
</div>
|
2016-01-25 21:22:22 +01:00
|
|
|
|
2016-11-18 13:50:40 +01:00
|
|
|
<div class="os-table container-fluid">
|
2016-08-12 15:01:41 +02:00
|
|
|
<div class="row header-row">
|
2016-11-18 13:50:40 +01:00
|
|
|
<div class="col-xs-1 centered" ng-show="isSelectMode">
|
2016-08-12 15:01:41 +02:00
|
|
|
<i class="fa text-danger pointer" ng-class=" selectedAll ? 'fa-check-square-o' : 'fa-square-o'"
|
|
|
|
ng-click="checkAll()"></i>
|
|
|
|
</div>
|
|
|
|
<div class="col-xs-11 main-header">
|
|
|
|
<span class="form-inline text-right pull-right">
|
2016-11-18 13:50:40 +01:00
|
|
|
<!-- clear all filters -->
|
2016-12-09 13:10:09 +01:00
|
|
|
<span class="sort-spacer pointer" ng-click="resetFilters()"
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-if="filter.areFiltersSet()" ng-disabled="isSelectMode"
|
|
|
|
ng-class="{'disabled': isSelectMode}">
|
2016-08-12 15:01:41 +02:00
|
|
|
<i class="fa fa-times-circle"></i>
|
|
|
|
<translate>Filter</translate>
|
|
|
|
</span>
|
2016-10-14 15:38:56 +02:00
|
|
|
<!-- State filter -->
|
2016-11-18 13:50:40 +01:00
|
|
|
<span uib-dropdown>
|
2016-08-12 15:01:41 +02:00
|
|
|
<span class="pointer" id="dropdownState" uib-dropdown-toggle
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-class="{'bold': filter.multiselectFilters.state.length > 0, 'disabled': isSelectMode}"
|
|
|
|
ng-disabled="isSelectMode">
|
2016-08-12 15:01:41 +02:00
|
|
|
<translate>State</translate>
|
|
|
|
<span class="caret"></span>
|
|
|
|
</span>
|
2017-02-27 09:36:21 +01:00
|
|
|
<ul class="dropdown-menu dropdown-menu-left" aria-labelledby="dropdownState">
|
2016-08-12 15:01:41 +02:00
|
|
|
<li ng-repeat="state in states" ng-class="state.workflowHeader ? 'dropdown-header' : ''">
|
2016-11-18 13:50:40 +01:00
|
|
|
<a ng-if="state.workflowHeader">
|
2016-12-09 11:21:55 +01:00
|
|
|
{{ state.headername | translate }}
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
|
|
|
<a href ng-if="!state.workflowHeader"
|
2016-12-09 13:10:09 +01:00
|
|
|
ng-click="operateStateFilter(state.id, isSelectMode)">
|
2016-11-18 13:50:40 +01:00
|
|
|
<i class="fa fa-check" ng-if="filter.multiselectFilters.state.indexOf(state.id) > -1"></i>
|
2016-08-12 15:01:41 +02:00
|
|
|
{{ state.name | translate }}
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
2016-08-12 15:01:41 +02:00
|
|
|
</li>
|
2016-12-09 13:10:09 +01:00
|
|
|
<li class="divider"></li>
|
|
|
|
<li>
|
|
|
|
<a href ng-click="operateStateFilter(-1, isSelectMode)">
|
|
|
|
<i class="fa fa-check" ng-if="filter.multiselectFilters.category.indexOf(-1) > -1"></i>
|
2017-03-22 12:52:11 +01:00
|
|
|
<translate>done</translate>
|
2016-12-09 13:10:09 +01:00
|
|
|
</a>
|
|
|
|
</li>
|
2016-08-12 15:01:41 +02:00
|
|
|
</ul>
|
|
|
|
</span>
|
2017-02-27 09:36:21 +01:00
|
|
|
<!-- recommendation filter -->
|
|
|
|
<span uib-dropdown ng-if="config('motions_recommendations_by') != ''">
|
|
|
|
<span class="pointer" id="dropdownRecommendation" uib-dropdown-toggle
|
|
|
|
ng-class="{'bold': filter.multiselectFilters.recommendation.length > 0, 'disabled': isSelectMode}"
|
|
|
|
ng-disabled="isSelectMode">
|
|
|
|
<translate>Recommendation</translate>
|
|
|
|
<span class="caret"></span>
|
|
|
|
</span>
|
|
|
|
<ul class="dropdown-menu dropdown-menu-left" aria-labelledby="dropdownRecommentation">
|
|
|
|
<li ng-repeat="recommendation in recommendations" ng-class="recommendation.workflowHeader ? 'dropdown-header' : ''">
|
|
|
|
<a ng-if="recommendation.workflowHeader">
|
|
|
|
{{ recommendation.headername | translate }}
|
|
|
|
</a>
|
|
|
|
<a href ng-if="!recommendation.workflowHeader"
|
|
|
|
ng-click="filter.operateMultiselectFilter('recommendation', recommendation.id, isSelectMode)">
|
|
|
|
<i class="fa fa-check" ng-if="filter.multiselectFilters.recommendation.indexOf(recommendation.id) > -1"></i>
|
|
|
|
{{ recommendation.recommendation_label | translate }}
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="divider"></li>
|
|
|
|
<li>
|
|
|
|
<a href ng-click="filter.operateMultiselectFilter('recommendation', -1, isSelectMode)">
|
|
|
|
<i class="fa fa-check" ng-if="filter.multiselectFilters.recommendation.indexOf(-1) > -1"></i>
|
|
|
|
<translate>No recommendation set</translate>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</span>
|
2016-10-14 15:38:56 +02:00
|
|
|
<!-- Category filter -->
|
2016-11-18 13:50:40 +01:00
|
|
|
<span uib-dropdown ng-if="categories.length > 0">
|
2016-08-12 15:01:41 +02:00
|
|
|
<span class="pointer" id="dropdownCategory" uib-dropdown-toggle
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-class="{'bold': filter.multiselectFilters.category.length > 0, 'disabled': isSelectMode}"
|
|
|
|
ng-disabled="isSelectMode">
|
2016-08-12 15:01:41 +02:00
|
|
|
<translate>Category</translate>
|
|
|
|
<span class="caret"></span>
|
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownCategory">
|
2016-08-12 15:01:41 +02:00
|
|
|
<li ng-repeat="category in categories">
|
2016-11-18 13:50:40 +01:00
|
|
|
<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>
|
2016-08-12 15:01:41 +02:00
|
|
|
{{ category.name }}
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="divider"></li>
|
|
|
|
<li>
|
|
|
|
<a href ng-click="filter.operateMultiselectFilter('category', -1, isSelectMode)">
|
|
|
|
<i class="fa fa-check" ng-if="filter.multiselectFilters.category.indexOf(-1) > -1"></i>
|
|
|
|
<translate>No category set</translate>
|
|
|
|
</a>
|
2016-08-12 15:01:41 +02:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</span>
|
2016-10-14 15:38:56 +02:00
|
|
|
<!-- Motion block filter -->
|
2016-11-18 13:50:40 +01:00
|
|
|
<span uib-dropdown ng-if="motionBlocks.length > 0">
|
2016-10-14 15:38:56 +02:00
|
|
|
<span class="pointer" id="dropdownBlock" uib-dropdown-toggle
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-class="{'bold': filter.multiselectFilters.motionBlock.length > 0, 'disabled': isSelectMode}"
|
|
|
|
ng-disabled="isSelectMode">
|
2016-10-14 15:38:56 +02:00
|
|
|
<translate>Motion block</translate>
|
|
|
|
<span class="caret"></span>
|
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownBlock">
|
2016-10-14 15:38:56 +02:00
|
|
|
<li ng-repeat="block in motionBlocks">
|
2016-11-18 13:50:40 +01:00
|
|
|
<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>
|
2016-10-14 15:38:56 +02:00
|
|
|
{{ block.title }}
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="divider"></li>
|
|
|
|
<li>
|
|
|
|
<a href ng-click="filter.operateMultiselectFilter('motionBlock', -1, isSelectMode)">
|
|
|
|
<i class="fa fa-check" ng-if="filter.multiselectFilters.motionBlock.indexOf(-1) > -1"></i>
|
|
|
|
<translate>No motion block set</translate>
|
|
|
|
</a>
|
2016-10-14 15:38:56 +02:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</span>
|
|
|
|
<!-- Tag filter -->
|
2016-11-18 13:50:40 +01:00
|
|
|
<span uib-dropdown ng-if="tags.length > 0">
|
2016-08-12 15:01:41 +02:00
|
|
|
<span class="pointer" id="dropdownTag" uib-dropdown-toggle
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-class="{'bold': filter.multiselectFilters.tag.length > 0, 'disabled': isSelectMode}"
|
|
|
|
ng-disabled="isSelectMode">
|
2016-08-12 15:01:41 +02:00
|
|
|
<translate>Tag</translate>
|
|
|
|
<span class="caret"></span>
|
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownTag">
|
2016-08-12 15:01:41 +02:00
|
|
|
<li ng-repeat="tag in tags">
|
2016-11-18 13:50:40 +01:00
|
|
|
<a href ng-click="filter.operateMultiselectFilter('tag', tag.id, isSelectMode)">
|
|
|
|
<i class="fa fa-check" ng-if="filter.multiselectFilters.tag.indexOf(tag.id) > -1"></i>
|
2016-08-12 15:01:41 +02:00
|
|
|
{{ tag.name }}
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="divider"></li>
|
|
|
|
<li>
|
|
|
|
<a href ng-click="filter.operateMultiselectFilter('tag', -1, isSelectMode)">
|
|
|
|
<i class="fa fa-check" ng-if="filter.multiselectFilters.tag.indexOf(-1) > -1"></i>
|
|
|
|
<translate>No tag set</translate>
|
|
|
|
</a>
|
2016-08-12 15:01:41 +02:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</span>
|
|
|
|
<!-- dropdown sort -->
|
2016-11-18 13:50:40 +01:00
|
|
|
<span uib-dropdown>
|
2016-08-12 15:01:41 +02:00
|
|
|
<span class="pointer" id="dropdownSort" uib-dropdown-toggle
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-class="{'disabled': isSelectMode}"
|
|
|
|
ng-disabled="isSelectMode">
|
2016-08-12 15:01:41 +02:00
|
|
|
<translate>Sort</translate>
|
|
|
|
<span class="caret"></span>
|
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<ul class="dropdown-menu dropdown-menu-right" aria-labelledby="dropdownSort">
|
2016-11-04 11:57:23 +01:00
|
|
|
<!-- item -->
|
2016-08-12 15:01:41 +02:00
|
|
|
<li>
|
2016-11-18 13:50:40 +01:00
|
|
|
<a href ng-click="sort.toggle('agenda_item.getItemNumberWithAncestors()')">
|
2016-08-12 15:01:41 +02:00
|
|
|
<translate translate-comment="short form of agenda item">Item</translate>
|
|
|
|
<span class="spacer-right pull-right"></span>
|
|
|
|
<i class="pull-right fa"
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-style="{'visibility': sort.column === 'agenda_item.getItemNumberWithAncestors()' ? 'visible' : 'hidden'}"
|
|
|
|
ng-class="sort.reverse ? 'fa-sort-desc' : 'fa-sort-asc'">
|
2016-08-12 15:01:41 +02:00
|
|
|
</i>
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
2016-08-12 15:01:41 +02:00
|
|
|
</li>
|
2016-11-04 11:57:23 +01:00
|
|
|
<!-- all other sortOptions -->
|
|
|
|
<li ng-repeat="option in sortOptions">
|
2016-11-18 13:50:40 +01:00
|
|
|
<a href ng-click="sort.toggle(option.name)">
|
2016-11-04 11:57:23 +01:00
|
|
|
{{ option.display_name | translate }}
|
2016-08-12 15:01:41 +02:00
|
|
|
<span class="spacer-right pull-right"></span>
|
|
|
|
<i class="pull-right fa"
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-style="{'visibility': sort.column === option.name ? 'visible' : 'hidden'}"
|
|
|
|
ng-class="sort.reverse ? 'fa-sort-desc' : 'fa-sort-asc'">
|
2016-08-12 15:01:41 +02:00
|
|
|
</i>
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
2016-08-12 15:01:41 +02:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</span>
|
|
|
|
<!-- search field -->
|
|
|
|
<span class="form-group">
|
|
|
|
<span class="input-group">
|
|
|
|
<span class="input-group-addon"><i class="fa fa-search"></i></span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<input type="text" ng-model="filter.filterString" class="form-control"
|
2016-12-02 09:38:02 +01:00
|
|
|
placeholder="{{ 'Search' | translate}}" ng-disabled="isSelectMode"
|
|
|
|
ng-change="filter.save()">
|
2016-08-12 15:01:41 +02:00
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
<!-- show all selected multiselectoptions -->
|
|
|
|
<span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<!-- state -->
|
2016-08-12 15:01:41 +02:00
|
|
|
<span ng-repeat="state in states" class="pointer spacer-left-lg"
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-if="!state.workflowHeader && filter.multiselectFilters.state.indexOf(state.id) > -1"
|
2016-12-09 13:10:09 +01:00
|
|
|
ng-click="operateStateFilter(state.id, isSelectMode)"
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-class="{'disabled': isSelectMode}">
|
2016-08-12 15:01:41 +02:00
|
|
|
<span class="nobr">
|
|
|
|
<i class="fa fa-times-circle"></i>
|
|
|
|
{{ state.name | translate }}
|
|
|
|
</span>
|
|
|
|
</span>
|
2016-12-09 13:10:09 +01:00
|
|
|
<span ng-if="filter.multiselectFilters.state.indexOf(-1) > -1" class="pointer spacer-left-lg"
|
|
|
|
ng-click="operateStateFilter(-1, isSelectMode)"
|
|
|
|
ng-class="{'disabled': isSelectMode}">
|
|
|
|
<i class="fa fa-times-circle"></i>
|
2017-03-22 12:52:11 +01:00
|
|
|
<translate>done</translate>
|
2016-12-09 13:10:09 +01:00
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<!-- category -->
|
2016-08-12 15:01:41 +02:00
|
|
|
<span ng-repeat="category in categories" class="pointer spacer-left-lg"
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-if="filter.multiselectFilters.category.indexOf(category.id) > -1"
|
|
|
|
ng-click="filter.operateMultiselectFilter('category', category.id, isSelectMode)"
|
|
|
|
ng-class="{'disabled': isSelectMode}">
|
2016-08-12 15:01:41 +02:00
|
|
|
<span class="nobr">
|
|
|
|
<i class="fa fa-times-circle"></i>
|
|
|
|
{{ category.name }}
|
|
|
|
</span>
|
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<span ng-if="filter.multiselectFilters.category.indexOf(-1) > -1" class="pointer spacer-left-lg"
|
|
|
|
ng-click="filter.operateMultiselectFilter('category', -1, isSelectMode)"
|
|
|
|
ng-class="{'disabled': isSelectMode}">
|
|
|
|
<i class="fa fa-times-circle"></i>
|
|
|
|
<translate>No category set</translate>
|
|
|
|
</span>
|
|
|
|
<!-- motion block -->
|
2016-10-14 15:38:56 +02:00
|
|
|
<span ng-repeat="motionBlock in motionBlocks" class="pointer spacer-left-lg"
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-if="filter.multiselectFilters.motionBlock.indexOf(motionBlock.id) > -1"
|
|
|
|
ng-click="filter.operateMultiselectFilter('motionBlock', motionBlock.id, isSelectMode)"
|
|
|
|
ng-class="{'disabled': isSelectMode}">
|
2016-10-14 15:38:56 +02:00
|
|
|
<span class="nobr">
|
|
|
|
<i class="fa fa-times-circle"></i>
|
|
|
|
{{ motionBlock.title }}
|
|
|
|
</span>
|
|
|
|
</span>
|
2016-12-09 11:21:55 +01:00
|
|
|
<!-- recommendation -->
|
|
|
|
<span ng-repeat="recommendation in recommendations" class="pointer spacer-left-lg"
|
|
|
|
ng-if="filter.multiselectFilters.recommendation.indexOf(recommendation.id) > -1"
|
|
|
|
ng-click="filter.operateMultiselectFilter('recommendation', recommendation.id, isSelectMode)"
|
|
|
|
ng-class="{'disabled': isSelectMode}">
|
|
|
|
<span class="nobr">
|
|
|
|
<i class="fa fa-times-circle"></i>
|
|
|
|
{{ recommendation.recommendation_label | translate }}
|
|
|
|
</span>
|
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<span ng-if="filter.multiselectFilters.motionBlock.indexOf(-1) > -1" class="pointer spacer-left-lg"
|
|
|
|
ng-click="filter.operateMultiselectFilter('motionBlock', -1, isSelectMode)"
|
|
|
|
ng-class="{'disabled': isSelectMode}">
|
|
|
|
<i class="fa fa-times-circle"></i>
|
|
|
|
<translate>No motion block set</translate>
|
|
|
|
</span>
|
|
|
|
<!-- tags -->
|
2016-08-12 15:01:41 +02:00
|
|
|
<span ng-repeat="tag in tags" class="pointer spacer-left-lg"
|
2016-11-18 13:50:40 +01:00
|
|
|
ng-if="filter.multiselectFilters.tag.indexOf(tag.id) > -1"
|
|
|
|
ng-click="filter.operateMultiselectFilter('tag', tag.id, isSelectMode)"
|
|
|
|
ng-class="{'disabled': isSelectMode}">
|
2016-08-12 15:01:41 +02:00
|
|
|
<span class="nobr">
|
|
|
|
<i class="fa fa-times-circle"></i>
|
2016-06-08 21:27:10 +02:00
|
|
|
{{ tag.name }}
|
2016-01-10 13:47:59 +01:00
|
|
|
</span>
|
2016-08-12 15:01:41 +02:00
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<span ng-if="filter.multiselectFilters.tag.indexOf(-1) > -1" class="pointer spacer-left-lg"
|
|
|
|
ng-click="filter.operateMultiselectFilter('tag', -1, isSelectMode)"
|
|
|
|
ng-class="{'disabled': isSelectMode}">
|
|
|
|
<i class="fa fa-times-circle"></i>
|
|
|
|
<translate>No tag set</translate>
|
|
|
|
</span>
|
2016-08-12 15:01:41 +02:00
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- main table -->
|
|
|
|
<div class="row data-row" ng-mouseover="motion.hover=true"
|
|
|
|
ng-mouseleave="motion.hover=false"
|
2016-10-31 17:10:21 +01:00
|
|
|
ng-class="{'projected': motion.isProjected().length}"
|
2016-08-12 15:01:41 +02:00
|
|
|
ng-repeat="motion in motionsFiltered = (motions
|
2016-11-18 13:50:40 +01:00
|
|
|
| osFilter: filter.filterString : filter.getObjectQueryString
|
2016-12-09 13:10:09 +01:00
|
|
|
| MultiselectFilter: stateFilter : getItemId.state
|
2016-11-18 13:50:40 +01:00
|
|
|
| MultiselectFilter: filter.multiselectFilters.category : getItemId.category
|
|
|
|
| MultiselectFilter: filter.multiselectFilters.motionBlock : getItemId.motionBlock
|
2016-12-09 11:21:55 +01:00
|
|
|
| MultiselectFilter: filter.multiselectFilters.recommendation : getItemId.recommendation
|
2016-11-18 13:50:40 +01:00
|
|
|
| MultiselectFilter: filter.multiselectFilters.tag : getItemId.tag
|
2016-10-14 15:38:56 +02:00
|
|
|
| toArray
|
2017-01-25 16:19:02 +01:00
|
|
|
| orderBy: sort.column : sort.reverse)
|
|
|
|
| limitTo : itemsPerPage : limitBegin">
|
2016-09-20 16:29:42 +02:00
|
|
|
|
2016-08-12 15:01:41 +02:00
|
|
|
<!-- select column -->
|
2016-11-18 13:50:40 +01:00
|
|
|
<div ng-show="isSelectMode" os-perms="motions.can_manage" class="col-xs-1 centered">
|
2016-08-12 15:01:41 +02:00
|
|
|
<i class="fa text-danger pointer" ng-click="motion.selected=!motion.selected"
|
|
|
|
ng-class="motion.selected ? 'fa-check-square-o' : 'fa-square-o'"></i>
|
|
|
|
</div>
|
|
|
|
<!-- projector column -->
|
2016-11-04 11:57:23 +01:00
|
|
|
<div class="col-xs-1 centered projector" os-perms="core.can_manage_projector">
|
2016-11-21 15:01:54 +01:00
|
|
|
<projector-button model="motion" default-projector-id="defaultProjectorId">
|
2016-09-12 11:05:34 +02:00
|
|
|
</projector-button>
|
2016-08-12 15:01:41 +02:00
|
|
|
</div>
|
2016-12-12 12:14:30 +01:00
|
|
|
<div class="no-projector-spacer" os-perms="!core.can_manage_projector"></div>
|
2016-08-12 15:01:41 +02:00
|
|
|
<!-- main content column -->
|
|
|
|
<div class="col-xs-6 content">
|
2016-11-18 13:50:40 +01:00
|
|
|
<div class="id-col">
|
2016-11-11 09:40:30 +01:00
|
|
|
<span ng-show="motion.identifier">
|
2016-10-14 15:38:56 +02:00
|
|
|
{{ motion.identifier }}
|
2016-11-11 09:40:30 +01:00
|
|
|
</span>
|
2016-08-12 15:01:41 +02:00
|
|
|
</div>
|
2016-12-09 11:21:55 +01:00
|
|
|
<div class="id-col-space">
|
2016-08-12 15:01:41 +02:00
|
|
|
<!-- ID and title -->
|
|
|
|
<div>
|
|
|
|
<a class="title" ui-sref="motions.motion.detail({id: motion.id})">{{ motion.getTitle() }}</a>
|
|
|
|
<i class="fa fa-paperclip" ng-if="motion.attachments_id.length > 0"></i>
|
2016-12-09 11:21:55 +01:00
|
|
|
</div>
|
|
|
|
<!-- state -->
|
|
|
|
<div>
|
2016-12-12 20:30:50 +01:00
|
|
|
<span ng-mouseover="motion.stateHover=true" ng-mouseleave="motion.stateHover=false"
|
|
|
|
class="dropdown-hover-space">
|
2016-08-12 15:01:41 +02:00
|
|
|
<span class="label" ng-class="'label-'+motion.state.css_class">
|
2016-10-27 14:01:12 +02:00
|
|
|
{{ motion.getStateName() }}
|
2015-11-29 22:25:01 +01:00
|
|
|
</span>
|
2016-10-07 11:42:33 +02:00
|
|
|
<span os-perms="motions.can_manage" ng-class="{'hiddenDiv': !motion.stateHover}" uib-dropdown>
|
2016-11-18 13:50:40 +01:00
|
|
|
<i class="fa fa-cog pointer" uib-dropdown-toggle id="stateDropdown{{ motion.id }}"></i>
|
|
|
|
<ul class="dropdown-menu" aria-labelledby="stateDropdown{{ motion.id }}">
|
2016-08-12 15:01:41 +02:00
|
|
|
<li ng-repeat="state in motion.state.getNextStates()">
|
|
|
|
<a href ng-click="updateState(motion, state.id)">{{ state.action_word | translate }}</a>
|
|
|
|
</li>
|
|
|
|
<li class="divider" ng-if="motion.state.getNextStates().length"></li>
|
|
|
|
<li>
|
2016-12-09 11:21:55 +01:00
|
|
|
<a href ng-if="motion.isAllowed('reset_state')" ng-click="resetState(motion)">
|
2016-08-12 15:01:41 +02:00
|
|
|
<i class="fa fa-exclamation-triangle"></i>
|
|
|
|
<translate>Reset state</translate>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
2015-11-29 22:25:01 +01:00
|
|
|
</span>
|
2016-08-12 15:01:41 +02:00
|
|
|
</span>
|
2015-10-15 17:25:40 +02:00
|
|
|
</div>
|
2016-12-09 11:21:55 +01:00
|
|
|
<!-- recommendation -->
|
|
|
|
<div ng-if="motion.recommendation">
|
2016-12-12 20:30:50 +01:00
|
|
|
<span ng-mouseover="motion.recommendationHover=true" ng-mouseleave="motion.recommendationHover=false"
|
|
|
|
class="dropdown-hover-space">
|
2016-12-09 11:21:55 +01:00
|
|
|
<span class="label" ng-class="'label-'+motion.recommendation.css_class" uib-tooltip="{{ config('motions_recommendations_by') }}">
|
|
|
|
{{ motion.getRecommendationName() }}
|
|
|
|
</span>
|
|
|
|
<span os-perms="motions.can_manage" ng-class="{'hiddenDiv': !motion.recommendationHover}" uib-dropdown>
|
|
|
|
<i class="fa fa-cog pointer" uib-dropdown-toggle id="recommendationDropdown{{ motion.id }}"></i>
|
|
|
|
<ul class="dropdown-menu" aria-labelledby="recommendationDropdown{{ motion.id }}">
|
|
|
|
<li ng-repeat="recommendation in motion.state.getRecommendations()">
|
|
|
|
<a href ng-click="updateRecommendation(motion, recommendation.id)">
|
|
|
|
{{ recommendation.recommendation_label | translate }}
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
<li class="divider" ng-if="motion.state.getRecommendations().length && motion.recommendation"></li>
|
|
|
|
<li ng-if="motion.recommendation">
|
|
|
|
<a href ng-click="resetRecommendation(motion)">
|
|
|
|
<i class="fa fa-exclamation-triangle"></i>
|
|
|
|
<translate>Reset recommendation</translate>
|
|
|
|
</a>
|
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
2016-08-12 15:01:41 +02:00
|
|
|
<!-- Submitters -->
|
2016-12-05 16:22:58 +01:00
|
|
|
<div ng-if="motion.submitters.length">
|
2016-09-18 00:45:00 +02:00
|
|
|
<small>
|
2016-09-20 16:29:42 +02:00
|
|
|
<span class="optional" translate>by</span>
|
2016-09-30 17:19:27 +02:00
|
|
|
<span class="optional" ng-repeat="submitter in motion.submitters | limitTo:1">
|
|
|
|
{{ submitter.get_full_name() }}<span ng-if="!$last">,</span></span><span ng-if="motion.submitters.length > 1">,
|
|
|
|
... [+{{ motion.submitters.length - 1 }}]</span>
|
2016-08-12 15:01:41 +02:00
|
|
|
<!-- sorry for merging them together, but otherwise there would be a whitespace because of the new line -->
|
2016-09-18 00:45:00 +02:00
|
|
|
</small>
|
2016-08-12 15:01:41 +02:00
|
|
|
</div>
|
2016-09-30 17:19:27 +02:00
|
|
|
<!-- hover menu -->
|
|
|
|
<div ng-if="motion.isAllowed('update')" ng-class="{'hiddenDiv': !motion.hover}">
|
|
|
|
<small>
|
|
|
|
<span ng-if="motion.isAllowed('update')">
|
|
|
|
<a href="" ng-click="openDialog(motion)" translate>Edit</a>
|
|
|
|
</span>
|
|
|
|
<span ng-if="motion.isAllowed('delete')"> ·
|
|
|
|
<a href="" class="text-danger"
|
|
|
|
ng-bootbox-confirm="{{ 'Are you sure you want to delete this entry?' | translate }}<br><b>{{ motion.getTitle() }}</b>"
|
|
|
|
ng-bootbox-confirm-action="delete(motion)" translate>Delete</a>
|
|
|
|
</span>
|
|
|
|
</small>
|
|
|
|
</div>
|
2016-01-25 21:22:22 +01:00
|
|
|
|
2016-08-12 15:01:41 +02:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<!-- additional content column -->
|
2016-11-18 13:50:40 +01:00
|
|
|
<div class="col-xs-4 content" ng-style="{'width': isSelectMode ? 'calc(50% - 120px)' : 'calc(50% - 70px)'}">
|
2016-08-12 15:01:41 +02:00
|
|
|
<div style="width: 60%;" class="optional">
|
|
|
|
<small>
|
2016-10-07 11:42:33 +02:00
|
|
|
<!-- Category dropdown for manage user -->
|
|
|
|
<div os-perms="motions.can_manage" ng-show="categories.length > 0"
|
|
|
|
ng-mouseover="motion.categoryHover=true"
|
|
|
|
ng-mouseleave="motion.categoryHover=false">
|
2016-11-04 11:57:23 +01:00
|
|
|
<span uib-dropdown>
|
2016-11-18 13:50:40 +01:00
|
|
|
<span id="dropdownCategory{{ motion.id }}" class="pointer"
|
2016-08-12 15:01:41 +02:00
|
|
|
uib-dropdown-toggle uib-tooltip="{{ 'Set a category' | translate }}"
|
|
|
|
tooltip-class="nobr">
|
|
|
|
<span ng-if="motion.category == null" ng-show="motion.hover">
|
|
|
|
<i class="fa fa-sitemap"></i>
|
|
|
|
<i class="fa fa-plus"></i>
|
|
|
|
</span>
|
|
|
|
<span ng-if="motion.category != null">
|
|
|
|
<i class="fa fa-sitemap spacer-right"></i>
|
|
|
|
{{ motion.category.name }}
|
|
|
|
<i class="fa fa-cog fa-lg spacer-left" ng-show="motion.categoryHover"></i>
|
|
|
|
</span>
|
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<ul class="dropdown-menu" aria-labelledby="dropdownCategory{{ motion.id }}">
|
2016-08-12 15:01:41 +02:00
|
|
|
<li ng-repeat="category in categories">
|
2016-11-18 13:50:40 +01:00
|
|
|
<a href ng-click="toggleCategory(motion, category)">
|
2016-08-12 15:01:41 +02:00
|
|
|
<i class="fa fa-check" ng-if="category.id == motion.category.id"></i>
|
|
|
|
{{ category.name }}
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
2016-08-12 15:01:41 +02:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</span>
|
2015-10-15 17:25:40 +02:00
|
|
|
</div>
|
2016-10-07 11:42:33 +02:00
|
|
|
<!-- Category string for normal user -->
|
|
|
|
<div os-perms="!motions.can_manage" ng-show="motion.category != null">
|
|
|
|
<i class="fa fa-sitemap spacer-right"></i>
|
|
|
|
{{ motion.category.name }}
|
|
|
|
</div>
|
|
|
|
|
2016-10-14 15:38:56 +02:00
|
|
|
<!-- Motion block dropdown for manage user -->
|
|
|
|
<div os-perms="motions.can_manage" ng-show="motionBlocks.length > 0"
|
|
|
|
ng-mouseover="motion.motionBlockHover=true"
|
|
|
|
ng-mouseleave="motion.motionBlockHover=false">
|
2016-11-04 11:57:23 +01:00
|
|
|
<span uib-dropdown>
|
2016-11-18 13:50:40 +01:00
|
|
|
<span id="dropdownMotionBlock{{ motion.id }}" class="pointer"
|
2016-10-14 15:38:56 +02:00
|
|
|
uib-dropdown-toggle uib-tooltip="{{ 'Set a motion block' | translate }}"
|
|
|
|
tooltip-class="nobr">
|
|
|
|
<span ng-if="motion.motionBlock == null" ng-show="motion.hover">
|
|
|
|
<i class="fa fa-th-large"></i>
|
|
|
|
<i class="fa fa-plus"></i>
|
|
|
|
</span>
|
|
|
|
<span ng-if="motion.motionBlock != null">
|
|
|
|
<i class="fa fa-th-large spacer-right"></i>
|
|
|
|
{{ motion.motionBlock.title }}
|
|
|
|
<i class="fa fa-cog fa-lg spacer-left" ng-show="motion.motionBlockHover"></i>
|
|
|
|
</span>
|
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<ul class="dropdown-menu" aria-labelledby="dropdownMotionBlock{{ motion.id }}">
|
2016-10-14 15:38:56 +02:00
|
|
|
<li ng-repeat="motionBlock in motionBlocks">
|
2016-11-18 13:50:40 +01:00
|
|
|
<a href ng-click="toggleMotionBlock(motion, motionBlock)">
|
2016-10-14 15:38:56 +02:00
|
|
|
<i class="fa fa-check" ng-if="motionBlock.id == motion.motionBlock.id"></i>
|
|
|
|
{{ motionBlock.title }}
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
2016-10-14 15:38:56 +02:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<!-- Motion block string for normal user -->
|
|
|
|
<div os-perms="!motions.can_manage" ng-show="motion.motionBlock != null">
|
2017-02-24 08:37:27 +01:00
|
|
|
<i class="fa fa-th-large spacer-right"></i>
|
2016-10-14 15:38:56 +02:00
|
|
|
{{ motion.motionBlock.title }}
|
|
|
|
</div>
|
|
|
|
|
2016-10-07 11:42:33 +02:00
|
|
|
<!-- Tag dropdown for manage user -->
|
|
|
|
<div os-perms="motions.can_manage" ng-show="tags.length > 0"
|
|
|
|
ng-mouseover="motion.tagHover=true"
|
|
|
|
ng-mouseleave="motion.tagHover=false">
|
2016-08-12 15:01:41 +02:00
|
|
|
<span uib-dropdown>
|
2016-11-18 13:50:40 +01:00
|
|
|
<span id="dropdownTags{{ motion.id }}" class="pointer"
|
2016-08-12 15:01:41 +02:00
|
|
|
uib-dropdown-toggle uib-tooltip="{{ 'Add a tag' | translate }}"
|
|
|
|
tooltip-class="nobr">
|
|
|
|
<span ng-if="motion.tags.length == 0" ng-show="motion.hover">
|
|
|
|
<i class="fa fa-tags"></i>
|
|
|
|
<i class="fa fa-plus"></i>
|
|
|
|
</span>
|
|
|
|
<span ng-if="motion.tags.length > 0">
|
|
|
|
<i class="fa fa-tags spacer-right"></i>
|
|
|
|
<span ng-repeat="tag in motion.tags">
|
|
|
|
{{ tag.name }}<span ng-if="!$last">,</span>
|
|
|
|
</span>
|
|
|
|
<i class="fa fa-cog fa-lg spacer-left" ng-show="motion.tagHover"></i>
|
|
|
|
</span>
|
|
|
|
</span>
|
2016-11-18 13:50:40 +01:00
|
|
|
<ul class="dropdown-menu" aria-labelledby="dropdownTags{{ motion.id }}">
|
2016-08-12 15:01:41 +02:00
|
|
|
<li ng-repeat="tag in tags">
|
2016-11-18 13:50:40 +01:00
|
|
|
<a href ng-click="toggleTag(motion, tag)">
|
|
|
|
<i class="fa fa-check" ng-if="hasTag(motion, tag)"></i>
|
2016-08-12 15:01:41 +02:00
|
|
|
{{ tag.name }}
|
2016-11-18 13:50:40 +01:00
|
|
|
</a>
|
2016-08-12 15:01:41 +02:00
|
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</span>
|
2015-11-29 22:25:01 +01:00
|
|
|
</div>
|
2016-10-07 11:42:33 +02:00
|
|
|
<!-- Tag string for normal user -->
|
|
|
|
<div os-perms="!motions.can_manage" ng-show="motion.tags.length > 0">
|
|
|
|
<i class="fa fa-tags spacer-right"></i>
|
|
|
|
<span ng-repeat="tag in motion.tags">
|
|
|
|
{{ tag.name }}<span ng-if="!$last">,</span>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Origin -->
|
2016-08-12 15:01:41 +02:00
|
|
|
<div ng-if="motion.origin">
|
|
|
|
<i class="fa fa-share spacer-right" uib-tooltip="{{ 'Origin' | translate }}"></i>
|
2016-12-02 09:38:02 +01:00
|
|
|
<div class="popover-wrapper">
|
|
|
|
<span editable-text="motion.origin" onaftersave="save(motion)">
|
|
|
|
{{ motion.origin | limitTo:25 }}{{ motion.origin.length > 25 ? '...' : '' }}
|
|
|
|
</span>
|
|
|
|
</div>
|
2015-11-29 22:25:01 +01:00
|
|
|
</div>
|
2016-08-12 15:01:41 +02:00
|
|
|
</small>
|
|
|
|
</div>
|
|
|
|
<div style="width: 10%;" class="pull-right optional">
|
2016-11-18 13:50:40 +01:00
|
|
|
<div class="centered" ng-if="config('motions_min_supporters') != 0"
|
2016-08-12 15:01:41 +02:00
|
|
|
uib-tooltip="{{ motion.supporters.length }} {{ 'Supporters' | translate }}
|
|
|
|
{{ (config('motions_min_supporters') - motion.supporters.length) > 0 ? '(' + (config('motions_min_supporters') - motion.supporters.length) + ' ' + ('needed' | translate) + ')': '' }}"
|
|
|
|
tooltip-class="nobr">
|
|
|
|
<span class="badge"
|
|
|
|
ng-class="{'badge-info': motion.supporters.length < config('motions_min_supporters')}">
|
|
|
|
{{ motion.supporters.length }}
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div style="width: 30%;" class="pull-right">
|
|
|
|
<div class="centered">{{ motion.agenda_item.getItemNumberWithAncestors() }}</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div> <!-- data row -->
|
|
|
|
|
2017-01-25 16:19:02 +01:00
|
|
|
<ul uib-pagination
|
|
|
|
ng-show="motionsFiltered.length > itemsPerPage"
|
|
|
|
total-items="motionsFiltered.length"
|
|
|
|
items-per-page="itemsPerPage"
|
|
|
|
ng-model="currentPage"
|
|
|
|
ng-change="pageChanged()"
|
|
|
|
class="pagination-sm"
|
|
|
|
direction-links="false"
|
|
|
|
boundary-links="true"
|
|
|
|
first-text="«"
|
|
|
|
last-text="»">
|
|
|
|
</ul>
|
|
|
|
|
2016-08-12 15:01:41 +02:00
|
|
|
</div> <!-- container -->
|
|
|
|
</div> <!-- details -->
|