summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAdrian Lang <mail@adrianlang.de>2011-09-24 16:34:32 +0200
committerAdrian Lang <mail@adrianlang.de>2011-09-24 16:34:32 +0200
commit554a8c9ffe7dc256ff10fdb49a144ca7dc510989 (patch)
tree5946bdb4e94cdcaaa6a34a2d97ebfb9cb6d643c3 /lib
parent33e91473c28e8f1c8542459bb4d755beb620305e (diff)
downloadrpg-554a8c9ffe7dc256ff10fdb49a144ca7dc510989.tar.gz
rpg-554a8c9ffe7dc256ff10fdb49a144ca7dc510989.tar.bz2
More mediamanager reworking
Diffstat (limited to 'lib')
-rw-r--r--lib/scripts/media.js164
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);