View | Details | Raw Unified | Return to bug 47195
Collapse All | Expand All

(-)a/management/univention-web/js/tools.js (-13 / +30 lines)
 Lines 31-36    Link Here 
31
define([
31
define([
32
	"dojo/_base/lang",
32
	"dojo/_base/lang",
33
	"dojo/_base/array",
33
	"dojo/_base/array",
34
	"dojo/_base/kernel",
34
	"dojo/_base/window",
35
	"dojo/_base/window",
35
	"dojo/request/xhr",
36
	"dojo/request/xhr",
36
	"dojo/_base/xhr",
37
	"dojo/_base/xhr",
 Lines 50-56   define([ Link Here 
50
	"umc/widgets/Text",
51
	"umc/widgets/Text",
51
	"umc/i18n/tools",
52
	"umc/i18n/tools",
52
	"umc/i18n!"
53
	"umc/i18n!"
53
], function(lang, array, _window, xhr, basexhr, Deferred, all, json, string, topic, cookie, Dialog, TitlePane, timing, styles, entities, ContainerWidget, ConfirmDialog, Text, i18nTools, _) {
54
], function(lang, array, kernel, _window, xhr, basexhr, Deferred, all, json, string, topic, cookie, Dialog, TitlePane, timing, styles, entities, ContainerWidget, ConfirmDialog, Text, i18nTools, _) {
54
	// in order to break circular dependencies (umc.tools needs a Widget and
55
	// in order to break circular dependencies (umc.tools needs a Widget and
55
	// the Widget needs umc/tools), we define umc/dialog as an empty object and
56
	// the Widget needs umc/tools), we define umc/dialog as an empty object and
56
	// require it explicitely
57
	// require it explicitely
 Lines 1130-1136   define([ Link Here 
1130
				var o = {
1131
				var o = {
1131
					attr: '',
1132
					attr: '',
1132
					desc: 1,
1133
					desc: 1,
1133
					ignCase: true
1134
					ignCase: true,
1135
					useCollator: true,
1136
					collatorLocales: kernel.locale,
1137
					collatorOptions: {
1138
						numeric: true
1139
					}
1134
				};
1140
				};
1135
1141
1136
				// entry for ordering can by a String or an Object
1142
				// entry for ordering can by a String or an Object
 Lines 1141-1146   define([ Link Here 
1141
					o.attr = args[i].attribute;
1147
					o.attr = args[i].attribute;
1142
					o.desc = (args[i].descending ? -1 : 1);
1148
					o.desc = (args[i].descending ? -1 : 1);
1143
					o.ignCase = undefined === args[i].ignoreCase ? true : args[i].ignoreCase;
1149
					o.ignCase = undefined === args[i].ignoreCase ? true : args[i].ignoreCase;
1150
1151
					o.useCollator = undefined === args[i].useCollator ?  o.useCollator : args[i].useCollator;
1152
					o.collatorLocales = undefined === args[i].collatorLocales ? o.collatorLocales : args[i].collatorLocales;
1153
					lang.mixin(o.collatorOptions, args[i].collatorOptions);
1144
				}
1154
				}
1145
				else {
1155
				else {
1146
					// error case
1156
					// error case
 Lines 1156-1178   define([ Link Here 
1156
				for (var i = 0; i < order.length; ++i) {
1166
				for (var i = 0; i < order.length; ++i) {
1157
					var o = order[i];
1167
					var o = order[i];
1158
1168
1159
					// check for lowercase (ignore not existing values!)
1160
					var a = _a[o.attr];
1169
					var a = _a[o.attr];
1161
					var b = _b[o.attr];
1170
					var b = _b[o.attr];
1162
					if (o.ignCase && a && a.toLowerCase && b && b.toLowerCase) {
1163
						a = a.toLowerCase();
1164
						b = b.toLowerCase();
1165
					}
1166
1171
1167
					// check for lower/greater
1172
					// check for lower/greater
1168
					if (a < b) {
1173
					var hasCollator = typeof(Intl) === 'object' && Intl.hasOwnProperty('Collator') && typeof(Intl.Collator) === 'function';
1169
						return -1 * o.desc;
1174
					if (o.useCollator && hasCollator) {
1170
					}
1175
						// should we cache a collator for the same settings?
1171
					if (a > b) {
1176
						var collator = new Intl.Collator(o.collatorLocales, o.collatorOptions);
1172
						return 1 * o.desc;
1177
						return collator.compare(a, b) * o.desc;
1178
					} else {
1179
						// check for lowercase (ignore not existing values!)
1180
						if (o.ignCase && a && a.toLowerCase && b && b.toLowerCase) {
1181
							a = a.toLowerCase();
1182
							b = b.toLowerCase();
1183
						}
1184
						if (a < b) {
1185
							return -1 * o.desc;
1186
						}
1187
						if (a > b) {
1188
							return 1 * o.desc;
1189
						}
1190
						return 0;
1173
					}
1191
					}
1174
				}
1192
				}
1175
				return 0;
1176
			};
1193
			};
1177
		},
1194
		},
1178
1195

Return to bug 47195