From e7a4f42da50f0041eff971e2b1b545fab3ce8b67 Mon Sep 17 00:00:00 2001 From: rlx Date: Mon, 11 Jan 2016 19:03:29 +0530 Subject: [PATCH] update edit dialog --- static/js/editDialog.js | 231 ++-------------------------------------- 1 file changed, 11 insertions(+), 220 deletions(-) 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); }); }