55 lines
No EOL
1.3 KiB
JavaScript
55 lines
No EOL
1.3 KiB
JavaScript
(function($) {
|
|
|
|
$.fn.imagefield = function() {
|
|
|
|
return this.each(function() {
|
|
|
|
var field = $(this);
|
|
|
|
// avoid multiple init
|
|
if(field.data('imagefield')) return true;
|
|
field.data('imagefield', true);
|
|
|
|
var select = field.find('select');
|
|
var preview = field.find('.input-preview figure');
|
|
var link = preview.parent('a');
|
|
|
|
select.on('keydown change', function() {
|
|
|
|
var option = select.find('option:selected');
|
|
var url = option.data('url');
|
|
var thumb = option.data('thumb');
|
|
|
|
if(option.val() === '') {
|
|
url = '#';
|
|
}
|
|
|
|
if(thumb) {
|
|
preview.attr('style', 'background-image: url(' + thumb + ')');
|
|
} else {
|
|
preview.attr('style', 'background-image: none');
|
|
}
|
|
|
|
link.attr('href', url);
|
|
|
|
}).trigger('change');
|
|
|
|
field.find('.input-preview').on('click', function() {
|
|
if($(this).attr('href') == '#') {
|
|
return false;
|
|
}
|
|
});
|
|
|
|
field.find('.input').droppable({
|
|
hoverClass: 'over',
|
|
accept: $('.sidebar .draggable-file'),
|
|
drop: function(e, ui) {
|
|
$(this).find('select').val(ui.draggable.data('helper')).trigger('change');
|
|
}
|
|
});
|
|
|
|
});
|
|
|
|
};
|
|
|
|
})(jQuery); |