diff options
author | Adrian Lang <mail@adrianlang.de> | 2011-09-24 16:34:32 +0200 |
---|---|---|
committer | Adrian Lang <mail@adrianlang.de> | 2011-09-24 16:34:32 +0200 |
commit | 554a8c9ffe7dc256ff10fdb49a144ca7dc510989 (patch) | |
tree | 5946bdb4e94cdcaaa6a34a2d97ebfb9cb6d643c3 /lib/scripts/media.js | |
parent | 33e91473c28e8f1c8542459bb4d755beb620305e (diff) | |
download | rpg-554a8c9ffe7dc256ff10fdb49a144ca7dc510989.tar.gz rpg-554a8c9ffe7dc256ff10fdb49a144ca7dc510989.tar.bz2 |
More mediamanager reworking
Diffstat (limited to 'lib/scripts/media.js')
-rw-r--r-- | lib/scripts/media.js | 164 |
1 files changed, 87 insertions, 77 deletions
diff --git a/lib/scripts/media.js b/lib/scripts/media.js index 8200de730..b3768b9db 100644 --- a/lib/scripts/media.js +++ b/lib/scripts/media.js @@ -19,8 +19,8 @@ var dw_mediamanager = { size: false, forbidden_opts: {}, - // File list view type - view: false, + // File list options + view_opts: {list: false, sort: false}, layout_width: 0, @@ -66,7 +66,8 @@ var dw_mediamanager = { }}); $tree.delegate('a', 'click', dw_mediamanager.list); - dw_mediamanager.set_filelist_view(dw_mediamanager.view, false); + // Init view property + dw_mediamanager.set_fileview_list(); dw_mediamanager.init_options(); @@ -100,37 +101,43 @@ var dw_mediamanager = { // less/more recent buttons in media revisions form .delegate('.btn_newer, .btn_older', 'submit', dw_mediamanager.details); + dw_mediamanager.update_resizable(); + dw_mediamanager.layout_width = jQuery("#mediamanager__page").width(); + jQuery(window).resize(dw_mediamanager.window_resize); }, init_options: function () { var $options = jQuery('div.filelist div.panelHeader form.options'), - $listType, $sortBy; + $listType, $sortBy, $both; if ($options.length === 0) { return; } $listType = $options.find('li.listType'); $sortBy = $options.find('li.sortBy'); + $both = $listType.add($sortBy); // Remove the submit button $options.find('input[type=submit]').parent().hide(); // Prepare HTML for jQuery UI buttonset - $listType.add($sortBy).find('label').each(function () { + $both.find('label').each(function () { var $this = jQuery(this); $this.children('input').appendTo($this.parent()); $this.find('span span').addClass('a11y'); }); // Init buttonset - $listType.add($sortBy).buttonset(); + $both.buttonset(); // Change handlers $listType.children('input').change(function (event) { - event.preventDefault(); - dw_mediamanager.set_filelist_view(this.value, true); + dw_mediamanager.set_fileview_list(); + }); + $sortBy.children('input').change(function (event) { + dw_mediamanager.set_fileview_sort(); + dw_mediamanager.list.call(this, event); }); - $sortBy.children('input').change(dw_mediamanager.list); }, /** @@ -293,16 +300,19 @@ var dw_mediamanager = { */ list: function (event) { var $link, $content, params; - $link = jQuery(this); - event.preventDefault(); + if (event) { + event.preventDefault(); + } jQuery('div.success, div.info, div.error, div.notify').remove(); - if (document.getElementById('media__content')) { - //popup - $content = jQuery('#media__content'); - } else { + $link = jQuery(this); + + //popup + $content = jQuery('#media__content'); + + if ($content.length === 0) { //fullscreen media manager $content = jQuery('div.filelist'); @@ -314,33 +324,18 @@ var dw_mediamanager = { } } - params = ''; + params = 'call=medialist&'; if ($link[0].search) { - params = $link[0].search.substr(1)+'&call=medialist'; - } else if ($link[0].action) { - params = dw_mediamanager.form_params($link)+'&call=medialist'; - } else if ($link.parents('form')) { - params = dw_mediamanager.form_params($link.parents('form'))+'&call=medialist'; - - if ($link.parents('form').hasClass('options')) { - DokuCookie.setValue('sort', $link.val()); - params += '&q=' + $link.val(); - params += '&mediado=searchlist'; - } + params += $link[0].search.substr(1); + } else if ($link.is('form')) { + params += dw_mediamanager.form_params($link); + } else if ($link.closest('form').length > 0) { + params += dw_mediamanager.form_params($link.closest('form')); } // fetch the subtree dw_mediamanager.update_content($content, params); - - if (document.getElementById('media__content')) { - //popup - $content = jQuery('#media__content'); - $content.html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); - } else { - //fullscreen media manager - jQuery('div.panelContent', $content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); - } }, /** @@ -350,26 +345,42 @@ var dw_mediamanager = { */ form_params: function ($form) { if (!$form.length) return; - var elements = $form.serialize(); var action = ''; var i = $form[0].action.indexOf('?'); if (i >= 0) action = $form[0].action.substr(i+1); - return elements+'&'+action; + return action+'&'+$form.serialize(); }, - set_filelist_view: function (type, cookies) { - type = type || DokuCookie.getValue('view'); + set_fileview_list: function (new_type) { + dw_mediamanager.set_fileview_opt(['list', 'listType', function (new_type) { + jQuery('div.filelist div.panelContent ul') + .toggleClass('rows', new_type === 'rows') + .toggleClass('thumbs', new_type === 'thumbs'); + }], new_type); - jQuery('div.filelist div.panelContent ul') - .toggleClass('rows', type === 'rows') - .toggleClass('thumbs', type === 'thumbs'); + // FIXME: Move to onchange handler (opt[2])? + dw_mediamanager.resize(); + }, - if (cookies) { - DokuCookie.setValue('view', type); + set_fileview_sort: function (new_sort) { + dw_mediamanager.set_fileview_opt(['sort', 'sortBy', function (new_sort) { + // FIXME + }], new_sort); + }, + + set_fileview_opt: function (opt, new_val) { + if (typeof new_val === 'undefined') { + new_val = jQuery('form.options li.' + opt[1] + ' input') + .filter(':checked').val(); } - dw_mediamanager.view = type; - dw_mediamanager.resize(); + if (new_val !== dw_mediamanager.view_opts[opt[0]]) { + opt[2](new_val); + + DokuCookie.setValue(opt[0], new_val); + + dw_mediamanager.view_opts[opt[0]] = new_val; + } }, /** @@ -384,31 +395,33 @@ var dw_mediamanager = { jQuery('div.success, div.info, div.error, div.notify').remove(); - if ($link[0].id == 'mediamanager__btn_delete' && !confirm(LANG['del_confirm'])) return false; - if ($link[0].id == 'mediamanager__btn_restore' && !confirm(LANG['restore_confirm'])) return false; + if ($link[0].id == 'mediamanager__btn_delete' && !confirm(LANG.del_confirm)) { + return false; + } + if ($link[0].id == 'mediamanager__btn_restore' && !confirm(LANG.restore_confirm)) { + return false; + } $content = jQuery('div.file'); - params = ''; + params = 'call=mediadetails&'; if ($link[0].search) { - params = $link[0].search.substr(1)+'&call=mediadetails'; - } else if ($link[0].action) { - params = dw_mediamanager.form_params($link)+'&call=mediadetails'; - } else if ($link.parents('form')) { - params = dw_mediamanager.form_params($link.parents('form'))+'&call=mediadetails'; + params += $link[0].search.substr(1); + } else if ($link.is('form')) { + params += dw_mediamanager.form_params($link); + } else if ($link.closest('form').length > 0) { + params += dw_mediamanager.form_params($link.closest('form')); } - update_list = ($link[0].id == 'mediamanager__btn_delete' || $link[0].id == 'mediamanager__btn_restore'); - dw_mediamanager.update_content($content, params, update_list); + update_list = ($link[0].id == 'mediamanager__btn_delete' || + $link[0].id == 'mediamanager__btn_restore'); - if (jQuery('div.panelContent', $content).length) { - jQuery('div.panelContent', $content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); - } else { - jQuery($content).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); - } + dw_mediamanager.update_content($content, params, update_list); }, update_content: function ($content, params, update_list) { + var $container; + jQuery.post( DOKU_BASE + 'lib/exe/ajax.php', params, @@ -422,22 +435,25 @@ var dw_mediamanager = { dw_mediamanager.update_resizable(); dw_behaviour.revisionBoxHandler(); - dw_mediamanager.set_filelist_view(dw_mediamanager.view, false); + + // Make sure that the list view style stays the same + dw_mediamanager.set_fileview_list(dw_mediamanager.view_opts.list); + dw_mediamanager.image_diff(); dw_mediamanager.init_ajax_uploader(); dw_mediamanager.init_options(); if (update_list) { - var $link1, $content1, params1; - $link1 = jQuery('a.files'); - params1 = $link1[0].search.substr(1)+'&call=medialist'; - $content1 = jQuery('div.filelist'); - dw_mediamanager.update_content($content1, params1); - jQuery('div.panelContent', $content1).html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); + dw_mediamanager.list.call(jQuery('a.files')[0]); } }, 'html' ); + $container = $content.find('div.panelContent'); + if ($container.length === 0) { + $container = $content; + } + $container.html('<img src="' + DOKU_BASE + 'lib/images/loading.gif" alt="..." class="load" />'); }, window_resize: function () { @@ -540,7 +556,7 @@ var dw_mediamanager = { })); // If the screen is too small, don’t try to resize - if (height < dw_mediamanager.minHeights[dw_mediamanager.view]) { + if (height < dw_mediamanager.minHeights[dw_mediamanager.view_opts.list]) { $contents.add(dw_mediamanager.$resizables()).height('auto'); } else { $contents.height(height); @@ -591,7 +607,7 @@ var dw_mediamanager = { $select = jQuery('#mediamanager__difftype'); $content = jQuery('#mediamanager__diff'); - params = dw_mediamanager.form_params($select.parents('form'))+'&call=mediadiff'; + params = dw_mediamanager.form_params($select.closest('form'))+'&call=mediadiff'; jQuery.post( DOKU_BASE + 'lib/exe/ajax.php', params, @@ -970,10 +986,4 @@ function hasFlash(version){ return ver >= version; } -jQuery(document).ready(function() { - dw_mediamanager.update_resizable(); - dw_mediamanager.layout_width = jQuery("#mediamanager__page").width(); - jQuery(window).resize(dw_mediamanager.window_resize); -}); - jQuery(dw_mediamanager.init); |