diff --git a/static/js/editDialog.js b/static/js/editDialog.js
index 2339ec3..3188ebd 100644
--- a/static/js/editDialog.js
+++ b/static/js/editDialog.js
@@ -41,48 +41,7 @@ oml.ui.editDialog = function() {
width: 512
});
- getMetadata(renderMetadata);
-
- function editMetadata(key, value) {
- var edit = {id: ids};
- if (Ox.contains(arrayKeys, key)) {
- edit[key] = value ? value.split(separator) : [];
- } else {
- edit[key] = value;
- }
- oml.api.edit(edit, function(result) {
- Ox.Request.clearCache();
- oml.$ui.info.updateElement();
- oml.$ui.filters.forEach(function($filter) {
- $filter.reloadList();
- });
- oml.$ui.list.reloadList(true);
- });
- }
-
- function formatLight(string) {
- return '' + string + '';
- }
-
- function formatKey(key) {
- var item = Ox.getObjectById(oml.config.itemKeys, key);
- return ''
- + Ox._(Ox.toTitleCase(key)) + ': ';
- }
-
- function formatValue(value, key) {
- var isMixed = value === mixed || (
- Ox.isArray(value) && value.length == 1 && value[0] === mixed
- );
- return isMixed ? formatLight(Ox._(
- key == 'title' ? 'Mixed Title'
- : key == 'author' ? 'Mixed Author'
- : key == 'description' ? 'Mixed Description'
- : 'mixed'
- )) : value ? (Ox.isArray(value) ? value : [value]).map(function(value) {
- return key == 'date' && value ? value.slice(0, 4) : value;
- }).join(separator) : '';
- }
+ getMetadata();
function getMetadata(callback) {
oml.api.find({
@@ -99,6 +58,7 @@ oml.ui.editDialog = function() {
}
}, function(result) {
var data = {},
+ isMixed = {},
items = result.data.items;
keys.forEach(function(key) {
var isArray = Ox.contains(arrayKeys, key),
@@ -110,185 +70,16 @@ oml.ui.editDialog = function() {
return (value || []).join(separator);
});
}
- data[key] = Ox.unique(values).length == 1
- ? (isArray ? values[0].split(separator) : values[0])
- : isArray ? [mixed] : mixed;
+ if (Ox.unique(values).length > 1) {
+ isMixed[key] = true;
+ }
+ data[key] = isMixed[key] ? null
+ : isArray ? values[0].split(separator)
+ : values[0];
+ });
+ that.options({
+ content: oml.ui.infoView(data, isMixed)
});
- callback(data);
- });
- }
-
- function renderMetadata(data) {
-
- var $div;
-
- // Title
-
- $('
')
- .css({
- marginTop: '-2px'
- })
- .append(
- Ox.EditableContent({
- editable: true,
- format: function(value) {
- return formatValue(value, 'title');
- },
- placeholder: formatLight(Ox._('No Title')),
- tooltip: tooltip,
- value: data.title ? Ox.encodeHTMLEntities(data.title) : ''
- })
- .css({
- fontWeight: 'bold',
- fontSize: '13px'
- })
- .bindEvent({
- submit: function(event) {
- editMetadata('title', Ox.decodeHTMLEntities(event.value));
- }
- })
- )
- .appendTo($info);
-
- // Author
-
- $('
')
- .css({
- marginTop: '2px'
- })
- .append(
- Ox.EditableContent({
- editable: true,
- format: function(value) {
- return formatValue(splitValue(value), 'author');
- },
- placeholder: formatLight(Ox._('Unknown Author')),
- tooltip: tooltip,
- value: data.author ? Ox.encodeHTMLEntities(data.author.join(separator)) : ''
- })
- .css({
- marginBottom: '-3px',
- fontWeight: 'bold',
- fontSize: '13px'
- })
- .bindEvent({
- submit: function(event) {
- editMetadata('author', Ox.decodeHTMLEntities(event.value));
- }
- })
- )
- .appendTo($info);
-
- // Place, Publisher, Date
-
- $div = $('
')
- .css({
- marginTop: '4px'
- })
- .appendTo($info);
- ['place', 'publisher', 'date'].forEach(function(key, index) {
- if (index) {
- $('
').html(', ').appendTo($div);
- }
- $('')
- .html(formatKey(key))
- .appendTo($div);
- Ox.EditableContent({
- editable: true,
- format: function(value) {
- return formatValue(
- key == 'place' ? splitValue(value) : value,
- key
- );
- },
- placeholder: formatLight(Ox._('unknown')),
- tooltip: tooltip,
- value: data[key] ? Ox.encodeHTMLEntities(
- Ox.contains(arrayKeys, key) && Ox.isArray(data[key])
- ? data[key].join('; ') : data[key]
- ) : ''
- })
- .bindEvent({
- submit: function(event) {
- editMetadata(key, Ox.decodeHTMLEntities(event.value));
- }
- })
- .appendTo($div);
- });
-
- // Edition, Language, Pages
-
- $div = $('')
- .css({
- marginTop: '4px'
- })
- .appendTo($info);
- ['edition', 'language', 'pages'].forEach(function(key, index) {
- if (index) {
- $('
').html(', ').appendTo($div);
- }
- $('')
- .html(formatKey(key))
- .appendTo($div);
- Ox.EditableContent({
- editable: true,
- format: function(value) {
- return formatValue(
- key == 'language' ? splitValue(value) : value,
- key
- );
- },
- placeholder: formatLight(Ox._('unknown')),
- tooltip: tooltip,
- value: data[key] ? Ox.encodeHTMLEntities(
- Ox.contains(arrayKeys, key) && Ox.isArray(data[key])
- ? data[key].join(separator) : data[key]
- ) : ''
- })
- .bindEvent({
- submit: function(event) {
- editMetadata(key, Ox.decodeHTMLEntities(event.value));
- }
- })
- .appendTo($div);
- });
-
- // Description
-
- $('')
- .css({
- marginTop: '8px',
- textAlign: 'justify'
- }).append(
- Ox.EditableContent({
- editable: true,
- format: function(value) {
- return value.replace(/\n/g, '
');
- },
- placeholder: formatLight('No Description'),
- tooltip: tooltip,
- type: 'textarea',
- value: data.description ? Ox.encodeHTMLEntities(data.description) : ''
- })
- .bindEvent({
- submit: function(event) {
- editMetadata(
- 'description',
- Ox.decodeHTMLEntities(event.value).replace(/
/g, '\n')
- );
- }
- })
- ).appendTo($info);
-
- $('
').css({height: '16px'}).appendTo($info);
-
- that.options({content: $info});
-
- }
-
- function splitValue(value) {
- return Ox.decodeHTMLEntities(value).split('; ').map(function(value) {
- return Ox.encodeHTMLEntities(value);
});
}