Merge pull request #3329 from FinnStutzenstein/category-sort-in-export
Add the option to sort the categories different in the motion export
This commit is contained in:
commit
f806dc4017
@ -30,7 +30,9 @@ Motions:
|
|||||||
- Reworked DOCX export parser and added comments to DOCX [#3258].
|
- Reworked DOCX export parser and added comments to DOCX [#3258].
|
||||||
- New PDF export for personal note and comments [#3239].
|
- New PDF export for personal note and comments [#3239].
|
||||||
- Bugfix: Creating colliding change recommendation is now prevented
|
- Bugfix: Creating colliding change recommendation is now prevented
|
||||||
on server side [#3304]
|
on server side [#3304].
|
||||||
|
- Added config value for customize sorting of category list in
|
||||||
|
pdf/docx export [#3329].
|
||||||
|
|
||||||
Users:
|
Users:
|
||||||
- User without permission to see users can now see agenda item speakers,
|
- User without permission to see users can now see agenda item speakers,
|
||||||
|
@ -253,3 +253,15 @@ def get_config_variables():
|
|||||||
weight=375,
|
weight=375,
|
||||||
group='Motions',
|
group='Motions',
|
||||||
subgroup='Export')
|
subgroup='Export')
|
||||||
|
|
||||||
|
yield ConfigVariable(
|
||||||
|
name='motions_export_category_sorting',
|
||||||
|
default_value='prefix',
|
||||||
|
input_type='choice',
|
||||||
|
label='Sort categories by',
|
||||||
|
choices=(
|
||||||
|
{'value': 'prefix', 'display_name': 'Prefix'},
|
||||||
|
{'value': 'name', 'display_name': 'Name'}),
|
||||||
|
weight=385,
|
||||||
|
group='Motions',
|
||||||
|
subgroup='Export')
|
||||||
|
@ -22,7 +22,6 @@ angular.module('OpenSlidesApp.motions.docx', ['OpenSlidesApp.core.docx'])
|
|||||||
|
|
||||||
var getData = function (motions, params) {
|
var getData = function (motions, params) {
|
||||||
var data = {};
|
var data = {};
|
||||||
var categories = Category.getAll();
|
|
||||||
// header
|
// header
|
||||||
var headerline1 = [
|
var headerline1 = [
|
||||||
Config.translate(Config.get('general_event_name').value),
|
Config.translate(Config.get('general_event_name').value),
|
||||||
@ -39,9 +38,10 @@ angular.module('OpenSlidesApp.motions.docx', ['OpenSlidesApp.core.docx'])
|
|||||||
data.preamble = Config.get('motions_export_preamble').value;
|
data.preamble = Config.get('motions_export_preamble').value;
|
||||||
|
|
||||||
// categories
|
// categories
|
||||||
|
var categories = getCategoriesData(motions);
|
||||||
data.has_categories = categories.length === 0 ? false : true;
|
data.has_categories = categories.length === 0 ? false : true;
|
||||||
data.categories_translation = gettextCatalog.getString('Categories');
|
data.categories_translation = gettextCatalog.getString('Categories');
|
||||||
data.categories = getCategoriesData(categories);
|
data.categories = categories;
|
||||||
data.no_categories = gettextCatalog.getString('No categories available.');
|
data.no_categories = gettextCatalog.getString('No categories available.');
|
||||||
data.pagebreak_main = categories.length === 0 ? '' : PAGEBREAK;
|
data.pagebreak_main = categories.length === 0 ? '' : PAGEBREAK;
|
||||||
|
|
||||||
@ -58,13 +58,21 @@ angular.module('OpenSlidesApp.motions.docx', ['OpenSlidesApp.core.docx'])
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
var getCategoriesData = function (categories) {
|
var getCategoriesData = function (motions) {
|
||||||
return _.map(categories, function (category) {
|
var categories = _.map(motions, function (motion) {
|
||||||
|
if (motion.category) {
|
||||||
return {
|
return {
|
||||||
prefix: category.prefix,
|
prefix: motion.category.prefix,
|
||||||
name: category.name,
|
name: motion.category.name,
|
||||||
};
|
};
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
// clear out 'undefined' and make the categories unique.
|
||||||
|
categories = _.uniqBy(_.filter(categories, function(category) {
|
||||||
|
return category;
|
||||||
|
}), 'prefix');
|
||||||
|
var sortKey = Config.get('motions_export_category_sorting').value;
|
||||||
|
return _.orderBy(categories, [sortKey]);
|
||||||
};
|
};
|
||||||
|
|
||||||
var getMotionShortData = function (motions) {
|
var getMotionShortData = function (motions) {
|
||||||
|
@ -718,15 +718,16 @@ angular.module('OpenSlidesApp.motions.pdf', ['OpenSlidesApp.core.pdf'])
|
|||||||
categories.push(category);
|
categories.push(category);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
categories = _.uniqBy(categories, 'id');
|
var sortKey = Config.get('motions_export_category_sorting').value;
|
||||||
|
categories = _.orderBy(_.uniqBy(categories, 'id'), [sortKey]);
|
||||||
if (categories.length > 1) {
|
if (categories.length > 1) {
|
||||||
var heading = {
|
var heading = {
|
||||||
text: gettextCatalog.getString("Categories"),
|
text: gettextCatalog.getString('Categories'),
|
||||||
style: "heading2"
|
style: 'heading2',
|
||||||
};
|
};
|
||||||
|
|
||||||
var toc = [];
|
var toc = [];
|
||||||
angular.forEach(_.orderBy(categories, ['prefix']), function(cat) {
|
angular.forEach(categories, function(cat) {
|
||||||
toc.push(
|
toc.push(
|
||||||
{
|
{
|
||||||
columns: [
|
columns: [
|
||||||
|
@ -2260,6 +2260,7 @@ angular.module('OpenSlidesApp.motions.site', [
|
|||||||
// subgroup PDF
|
// subgroup PDF
|
||||||
gettext('Title for PDF and DOCX documents (all motions)');
|
gettext('Title for PDF and DOCX documents (all motions)');
|
||||||
gettext('Preamble text for PDF and DOCX documents (all motions)');
|
gettext('Preamble text for PDF and DOCX documents (all motions)');
|
||||||
|
gettext('Sort categories by');
|
||||||
|
|
||||||
// misc strings (used dynamically in templates by translate filter)
|
// misc strings (used dynamically in templates by translate filter)
|
||||||
gettext('needed');
|
gettext('needed');
|
||||||
|
Loading…
Reference in New Issue
Block a user