diff --git a/sites/all/modules/imce/README.txt b/sites/all/modules/imce/README.txt index acdd5af711c649ba199d2947700ff96781fe237f..1c7f1c0c85c12e4cbe325837c6db9dc5901b246c 100644 --- a/sites/all/modules/imce/README.txt +++ b/sites/all/modules/imce/README.txt @@ -1,4 +1,4 @@ -// $Id: README.txt,v 1.18 2010/10/06 04:42:57 ufku Exp $ +// $Id: README.txt,v 1.18.2.1 2010/11/08 04:37:21 ufku Exp $ IMCE http://drupal.org/project/imce @@ -54,7 +54,7 @@ Having nothing to do with IMCE, it appeared many times in issue queues. This is - Upload does not work in Opera Jquery form plugin before version 2.09 has problems with Opera 9.2+. Replace Drupal's misc/jquery.form.js with the one at http://jquery.malsup.com/form/#download -- IMCE may have problem working with Google Analytics and Secure pages modules. Just make sure to add imce* path to the exceptions list of these modules. +- IMCE may have problem working with Google Analytics and Secure pages modules. Just make sure to add *imce* path to the exceptions list of these modules. INTEGRATION METHODS diff --git a/sites/all/modules/imce/css/close.png b/sites/all/modules/imce/css/close.png index dde4617b16e415236b50e85dd7ef995e2899ac95..ea709d08e8fdf90941f1f98e9973618dc3fdf7b0 100644 Binary files a/sites/all/modules/imce/css/close.png and b/sites/all/modules/imce/css/close.png differ diff --git a/sites/all/modules/imce/css/collapsed.png b/sites/all/modules/imce/css/collapsed.png index 53462448a522b9a9bb0eec5bb5b241c928042ce5..aa4a93283a9b73abfd282038ed3dcc04195addc4 100644 Binary files a/sites/all/modules/imce/css/collapsed.png and b/sites/all/modules/imce/css/collapsed.png differ diff --git a/sites/all/modules/imce/css/delete.png b/sites/all/modules/imce/css/delete.png index 7751a6896792c8849f98234595b321b43780b59f..277f9f325d1c6356a501ed7b25bf01fe859b6dce 100644 Binary files a/sites/all/modules/imce/css/delete.png and b/sites/all/modules/imce/css/delete.png differ diff --git a/sites/all/modules/imce/css/error.png b/sites/all/modules/imce/css/error.png index 513f819ec13029524996535ce11c57eb9c33a1ee..b92fb75e700f1d5bd2becfc54ee5074e2096f06f 100644 Binary files a/sites/all/modules/imce/css/error.png and b/sites/all/modules/imce/css/error.png differ diff --git a/sites/all/modules/imce/css/expanded.png b/sites/all/modules/imce/css/expanded.png index 7ed7671d228717d3e4642999e1f79142542d38f0..5179e82cf0141318890f57c17a2a296008e453b9 100644 Binary files a/sites/all/modules/imce/css/expanded.png and b/sites/all/modules/imce/css/expanded.png differ diff --git a/sites/all/modules/imce/css/folder-open.png b/sites/all/modules/imce/css/folder-open.png index f42a75234f35095f6eb8ff9ff8d6610bcea5c1b9..ce473f4aa5023e94edef01c6fad31f95cddaf484 100644 Binary files a/sites/all/modules/imce/css/folder-open.png and b/sites/all/modules/imce/css/folder-open.png differ diff --git a/sites/all/modules/imce/css/folder-root.png b/sites/all/modules/imce/css/folder-root.png index 1a6c5f7e90a0922520d1c730dae4c94f097e56b1..140d5f20a328ea3eaf09cd6d3728020607e24a6e 100644 Binary files a/sites/all/modules/imce/css/folder-root.png and b/sites/all/modules/imce/css/folder-root.png differ diff --git a/sites/all/modules/imce/css/folder.png b/sites/all/modules/imce/css/folder.png index 7586a2de3b1a71beab02c17c7112c34dc517883c..6e059125533ee733ef1aede1f678763b566f7f1c 100644 Binary files a/sites/all/modules/imce/css/folder.png and b/sites/all/modules/imce/css/folder.png differ diff --git a/sites/all/modules/imce/css/header.png b/sites/all/modules/imce/css/header.png index ade32cead984ed91065027284576f3650b96c724..4a1e8c6dbf17c26db56d7cf6a80ec5b08e2d628d 100644 Binary files a/sites/all/modules/imce/css/header.png and b/sites/all/modules/imce/css/header.png differ diff --git a/sites/all/modules/imce/css/help.png b/sites/all/modules/imce/css/help.png index 4b3252a9416e54d7e20a631e66e7eb7a068d72f4..8f7af95ca2dc05eb32fcbbb11c6aee8d61d7b80b 100644 Binary files a/sites/all/modules/imce/css/help.png and b/sites/all/modules/imce/css/help.png differ diff --git a/sites/all/modules/imce/css/leaf.png b/sites/all/modules/imce/css/leaf.png index 022695c8977e4f0f393e2ffd7147b297711638ce..605d3ac811754459a0f16a464244c4024925cebb 100644 Binary files a/sites/all/modules/imce/css/leaf.png and b/sites/all/modules/imce/css/leaf.png differ diff --git a/sites/all/modules/imce/css/loading.gif b/sites/all/modules/imce/css/loading.gif index d1578b5499591d0be9be180eb141a69e47bfc824..16baa5bac9a27dc206ffde16cca51081ce80a932 100644 Binary files a/sites/all/modules/imce/css/loading.gif and b/sites/all/modules/imce/css/loading.gif differ diff --git a/sites/all/modules/imce/css/op.png b/sites/all/modules/imce/css/op.png index aba39c2e0a4c8b836fe4268e7c8276be8b771ee7..74055e2b73e083bd5abdf305e9743a71ae50ce39 100644 Binary files a/sites/all/modules/imce/css/op.png and b/sites/all/modules/imce/css/op.png differ diff --git a/sites/all/modules/imce/css/ops.png b/sites/all/modules/imce/css/ops.png index 70cd625fe28e45b45e517c21bb207488c468011b..25b4c2cd306c8c88c53f715a41641169506ebd1c 100644 Binary files a/sites/all/modules/imce/css/ops.png and b/sites/all/modules/imce/css/ops.png differ diff --git a/sites/all/modules/imce/css/resize.png b/sites/all/modules/imce/css/resize.png index 94314890822161104723f3bac239c2c58b872f09..2ee120cb0f6063d90394c36c94c27e5fe076e046 100644 Binary files a/sites/all/modules/imce/css/resize.png and b/sites/all/modules/imce/css/resize.png differ diff --git a/sites/all/modules/imce/css/sendto.png b/sites/all/modules/imce/css/sendto.png index 64bc32753630dfb21e7961b695709b4d754e95f5..90309230d3fdef07717510c5b687b9f105706e0a 100644 Binary files a/sites/all/modules/imce/css/sendto.png and b/sites/all/modules/imce/css/sendto.png differ diff --git a/sites/all/modules/imce/css/status.png b/sites/all/modules/imce/css/status.png index da78caa9c43cacfbb5f2fde6f422180315c95af5..33594977a6e0fdd6df40f3ff4051f2c4828765d2 100644 Binary files a/sites/all/modules/imce/css/status.png and b/sites/all/modules/imce/css/status.png differ diff --git a/sites/all/modules/imce/css/submit.png b/sites/all/modules/imce/css/submit.png index 8dec75430499ef45ce1d02b55db919e95ef8f812..4e045722935ae792a92e4dd18097bf0b34a4b936 100644 Binary files a/sites/all/modules/imce/css/submit.png and b/sites/all/modules/imce/css/submit.png differ diff --git a/sites/all/modules/imce/css/thumb.png b/sites/all/modules/imce/css/thumb.png index d62878d8cfe0029a8b0a8b21be85c4e44d92d854..ef2949794e01717117d4338659cbe1d8e8e383d8 100644 Binary files a/sites/all/modules/imce/css/thumb.png and b/sites/all/modules/imce/css/thumb.png differ diff --git a/sites/all/modules/imce/css/tree.png b/sites/all/modules/imce/css/tree.png index 28203b2a18b6eaefd1fbe0f2e9a4001d0fb47e51..645d25c31da9e84bf707c5b371bd59d0f7384c70 100644 Binary files a/sites/all/modules/imce/css/tree.png and b/sites/all/modules/imce/css/tree.png differ diff --git a/sites/all/modules/imce/css/upload.png b/sites/all/modules/imce/css/upload.png index 74d5aa59777c78ed225f82b390629ce87983e379..6cba6092c8ab16c01bc2ae71754540d2aaf471e9 100644 Binary files a/sites/all/modules/imce/css/upload.png and b/sites/all/modules/imce/css/upload.png differ diff --git a/sites/all/modules/imce/css/view-box.png b/sites/all/modules/imce/css/view-box.png new file mode 100644 index 0000000000000000000000000000000000000000..45086f6c6c9c3c9ec139790b6e2d48cc91106903 Binary files /dev/null and b/sites/all/modules/imce/css/view-box.png differ diff --git a/sites/all/modules/imce/css/view-list.png b/sites/all/modules/imce/css/view-list.png new file mode 100644 index 0000000000000000000000000000000000000000..c761f64536aaa2afd542cc82f83233f0d3c9642b Binary files /dev/null and b/sites/all/modules/imce/css/view-list.png differ diff --git a/sites/all/modules/imce/css/warning.png b/sites/all/modules/imce/css/warning.png index 50910c9d05a070b26dbecddd7f67ab0705ff491e..6d2756033a1c138f87cacf2bb8422f323c4ec2b1 100644 Binary files a/sites/all/modules/imce/css/warning.png and b/sites/all/modules/imce/css/warning.png differ diff --git a/sites/all/modules/imce/css/x-resizer.png b/sites/all/modules/imce/css/x-resizer.png index 54ad5c80de2390ba6bb1bad762307bcfa4fe1cb6..e54941fffd927dcf4b7428787277b9bd2d19b6da 100644 Binary files a/sites/all/modules/imce/css/x-resizer.png and b/sites/all/modules/imce/css/x-resizer.png differ diff --git a/sites/all/modules/imce/css/y-resizer.png b/sites/all/modules/imce/css/y-resizer.png index 8e9740dce0398bace2762b3f2c867f535be6a2eb..3a32f6549b0234cb844ea337f268119ec2cc1223 100644 Binary files a/sites/all/modules/imce/css/y-resizer.png and b/sites/all/modules/imce/css/y-resizer.png differ diff --git a/sites/all/modules/imce/imce.info b/sites/all/modules/imce/imce.info index c939de2d14f13d38c5fb7bfd0cd618a07221f46f..9b64b1689a116170bfc48f7625bdb9ff63461d1a 100644 --- a/sites/all/modules/imce/imce.info +++ b/sites/all/modules/imce/imce.info @@ -1,17 +1,12 @@ -; $Id: imce.info,v 1.7 2010/03/17 21:36:38 ufku Exp $ +; $Id: imce.info,v 1.7.2.1 2010/12/27 20:10:34 ufku Exp $ name = "IMCE" description = "An image/file uploader and browser supporting personal directories and user quota." core = "7.x" package = "Media" -files[] = "imce.install" -files[] = "imce.module" -files[] = "inc/imce.admin.inc" -files[] = "inc/imce.page.inc" - -; Information added by drupal.org packaging script on 2010-10-09 -version = "7.x-1.0-beta1" +; Information added by drupal.org packaging script on 2010-12-27 +version = "7.x-1.1" core = "7.x" project = "imce" -datestamp = "1286606462" +datestamp = "1293481279" diff --git a/sites/all/modules/imce/inc/imce.admin.inc b/sites/all/modules/imce/inc/imce.admin.inc index 420ee39616b34fc1384a64c5946f418edb91c42e..3dd437823b573d625afa8012d706a66d4c0df41c 100644 --- a/sites/all/modules/imce/inc/imce.admin.inc +++ b/sites/all/modules/imce/inc/imce.admin.inc @@ -1,5 +1,5 @@ <?php -// $Id: imce.admin.inc,v 1.7 2010/10/09 05:49:37 ufku Exp $ +// $Id: imce.admin.inc,v 1.7.2.1 2010/12/12 07:14:44 ufku Exp $ /** * @file @@ -114,9 +114,9 @@ function imce_admin_theme($variables) { $rows = array(array(t('Site maintenance account'))); $keys = array('name'); //add each stream wrapper as a column - $swrappers = file_get_stream_wrappers(); + $swrappers = file_get_stream_wrappers(STREAM_WRAPPERS_VISIBLE); foreach ($swrappers as $scheme => $info) { - $header[] = $info['name']; + $header[] = l($info['name'], 'imce/' . $scheme); $rows[0][] = $profile1['name']; $keys[] = $scheme . '_pid'; } @@ -140,7 +140,7 @@ function imce_admin_theme($variables) { $output = '<h2 class="title">' . t('Role-profile assignments') . '</h2>'; $output .= theme('table', array('header' => $header, 'rows' => $rows)); - $output .= '<div class="form-item"><div class="description">' . t('Assign profiles to user roles for available file systems. Your default file system is %name', array('%name' => $swrappers[variable_get('file_default_scheme', 'public')]['name'])) . ' ' . $weight_info . '</div></div>'; + $output .= '<div class="form-item"><div class="description">' . t('Assign profiles to user roles for available file systems. Your default file system is %name.', array('%name' => $swrappers[variable_get('file_default_scheme', 'public')]['name'])) . ' ' . $weight_info . '</div></div>'; $output .= drupal_render($form['common']); $output .= drupal_render_children($form); return $output; @@ -475,7 +475,7 @@ function imce_role_form($role, $weight = TRUE, $core = TRUE) { '#default_value' => $role['weight'], ); } - foreach (array_keys(file_get_stream_wrappers()) as $scheme) { + foreach (array_keys(file_get_stream_wrappers(STREAM_WRAPPERS_VISIBLE)) as $scheme) { $form[$scheme . '_pid'] = array( '#type' => 'select', '#options' => imce_profile_options(), @@ -645,7 +645,7 @@ function imce_sorted_roles() { $roles_profiles = variable_get('imce_roles_profiles', array()); $roles_profiles[DRUPAL_ANONYMOUS_RID]['weight'] = 12; $roles_profiles[DRUPAL_AUTHENTICATED_RID]['weight'] = 11; - $schemes = array_keys(file_get_stream_wrappers()); + $schemes = array_keys(file_get_stream_wrappers(STREAM_WRAPPERS_VISIBLE)); foreach ($roles as $rid => $name) { $sorted[$rid] = array( 'name' => $name, diff --git a/sites/all/modules/imce/inc/imce.page.inc b/sites/all/modules/imce/inc/imce.page.inc index d517ab993fd4eb0a4d3e1d42c32944e6e0e61f75..072c0f0e8e7c39a8bdc84fda7b0adc0bebfb5c46 100644 --- a/sites/all/modules/imce/inc/imce.page.inc +++ b/sites/all/modules/imce/inc/imce.page.inc @@ -1,5 +1,5 @@ <?php -// $Id: imce.page.inc,v 1.10 2010/08/30 04:06:25 ufku Exp $ +// $Id: imce.page.inc,v 1.10.2.3 2010/12/27 20:09:02 ufku Exp $ /** * @file @@ -599,14 +599,14 @@ function imce_remove_file($filename, &$imce) { /** * Validate uploaded file. */ -function imce_validate_all(&$file, $imce) { +function imce_validate_all($file, $imce) { //validate image resolution only if filesize validation passes. //because user might have uploaded a very big image //and scaling it may exploit system memory. $errors = imce_validate_filesize($file, $imce['filesize']); //image resolution validation - if (empty($errors)) { + if (empty($errors) && preg_match('/\.(png|gif|jpe?g)$/i', $file->filename)) { $errors = array_merge($errors, file_validate_image_resolution($file, $imce['dimensions'])); } //directory quota validation diff --git a/sites/all/modules/imce/js/imce.js b/sites/all/modules/imce/js/imce.js index 9331291ea4cedcc5d48bdc42280ebf56f7fd7069..91552233a159b5e75b0c334b0eb535962e674412 100644 --- a/sites/all/modules/imce/js/imce.js +++ b/sites/all/modules/imce/js/imce.js @@ -1,4 +1,4 @@ -// $Id: imce.js,v 1.26 2010/10/06 04:42:57 ufku Exp $ +// $Id: imce.js,v 1.26.2.2 2010/12/12 07:15:56 ufku Exp $ (function($) { //Global container. @@ -23,8 +23,6 @@ initiate: function() { imce.invoke('load', window);//run functions set by external applications. }, -/**************** DIRECTORIES ********************/ - //process navigation tree initiateTree: function() { $('#navigation-tree li').each(function(i) { @@ -108,8 +106,6 @@ dirSubdirs: function(dir, subdirs) { } }, -/**************** FILES ********************/ - //process file list initiateList: function(cached) { var L = imce.hooks.list, dir = imce.conf.dir, token = {'%dir': dir == '.' ? $(imce.tree['.'].a).text() : imce.decode(dir)} @@ -225,8 +221,6 @@ fileToggleSelect: function (fid) { imce['file'+ (imce.selected[fid] ? 'De' : '') +'Select'](fid); }, -/**************** OPERATIONS ********************/ - //process file operation form and create operation tabs. initiateOps: function() { imce.setHtmlOps(); @@ -268,7 +262,7 @@ setFileOps: function () { var Op = {name: $sbmt.attr('id').substr(5)}; var func = function() {imce.fopSubmit(Op.name); return false;}; $sbmt.click(func); - Op.title = $(this).children('legend').remove().text(); + Op.title = $(this).children('legend').remove().text() || $sbmt.val(); Op.name == 'delete' ? (Op.func = func) : (Op.content = this.childNodes); imce.opAdd(Op); }).remove(); @@ -374,8 +368,6 @@ opShrink: function(name, effect) { imce.vars.op = null; }, -/**************** AJAX OPERATIONS ********************/ - //navigate to dir navigate: function(dir) { if (imce.vars.navbusy || (dir == imce.conf.dir && !confirm(Drupal.t('Do you want to refresh the current directory?')))) return; @@ -431,7 +423,6 @@ navCache: function (dir, newdir) { imce.invoke('cache', C, newdir); }, -/**************** UPLOAD ********************/ //validate upload form uploadValidate: function (data, form, options) { var path = data[0].value; @@ -453,7 +444,6 @@ uploadSettings: function () { return {beforeSubmit: imce.uploadValidate, success: function (response) {imce.processResponse($.parseJSON(response));}, complete: function () {imce.fopLoading('upload', false);}, resetForm: true}; }, -/**************** FILE OPS ********************/ //validate default ops(delete, thumb, resize) fopValidate: function(fop) { if (!imce.validateSelCount(1, imce.conf.filenum)) return false; @@ -513,15 +503,13 @@ fopLoading: function(fop, state) { } }, -/**************** PREVIEW & SEND TO ********************/ - //preview a file. setPreview: function (fid) { var row, html = ''; imce.vars.prvfid = fid; if (fid && (row = imce.fids[fid])) { var width = row.cells[2].innerHTML * 1; - html = imce.vars.previewImages && width ? imce.imgHtml(fid, width, row.cells[3].innerHTML) : imce.decode(fid); + html = imce.vars.previewImages && width ? imce.imgHtml(fid, width, row.cells[3].innerHTML) : imce.decodePlain(fid); html = '<a href="#" onclick="imce.send(\''+ fid +'\'); return false;" title="'+ (imce.vars.prvtitle||'') +'">'+ html +'</a>'; } imce.el('file-preview').innerHTML = html; @@ -543,8 +531,6 @@ setSendTo: function (title, func) { return imce.opAdd({name: 'sendto', title: title, func: opFunc}); }, -/**************** LOG MESSAGES ********************/ - //move initial page messages into log prepareMsgs: function () { var msgs; @@ -575,7 +561,6 @@ setMessage: function (msg, type) { return false; }, -/**************** OTHER HELPER FUNCTIONS ********************/ //invoke hooks invoke: function (hook) { var i, args, func, funcs; @@ -590,6 +575,7 @@ processResponse: function (response) { if (response.data) imce.resData(response.data); if (response.messages) imce.resMsgs(response.messages); }, + //process response data resData: function (data) { var i, added, removed; @@ -611,6 +597,7 @@ resData: function (data) { imce.conf.dirsize = data.dirsize; imce.updateStat(); }, + //set response messages resMsgs: function (msgs) { for (var type in msgs) for (var i in msgs[type]) { @@ -620,12 +607,14 @@ resMsgs: function (msgs) { //return img markup imgHtml: function (fid, width, height) { - return '<img src="'+ imce.getURL(fid) +'" width="'+ width +'" height="'+ height +'" alt="'+ imce.decode(fid) +'">'; + return '<img src="'+ imce.getURL(fid) +'" width="'+ width +'" height="'+ height +'" alt="'+ imce.decodePlain(fid) +'">'; }, + //check if the file is an image isImage: function (fid) { return imce.fids[fid].cells[2].innerHTML * 1; }, + //find the first non-image in the selection getNonImage: function (selected) { for (var fid in selected) { @@ -633,11 +622,13 @@ getNonImage: function (selected) { } return false; }, + //validate current selection for images validateImage: function () { var nonImg = imce.getNonImage(imce.selected); return nonImg ? imce.setMessage(Drupal.t('%filename is not an image.', {'%filename': imce.decode(nonImg)}), 'error') : true; }, + //validate number of selected files validateSelCount: function (Min, Max) { if (Min && imce.selcount < Min) { @@ -654,6 +645,7 @@ updateStat: function () { imce.el('file-count').innerHTML = imce.findex.length; imce.el('dir-size').innerHTML = imce.conf.dirsize; }, + //serialize selected files. return fids with a colon between them serialNames: function () { var str = ''; @@ -662,37 +654,44 @@ serialNames: function () { } return str.substr(1); }, + //get file url. re-encode & and # for mod rewrite getURL: function (fid) { var path = (imce.conf.dir == '.' ? '' : imce.conf.dir +'/') + fid; return imce.conf.furl + (imce.conf.modfix ? path.replace(/%(23|26)/g, '%25$1') : path); }, + //el. by id el: function (id) { return document.getElementById(id); }, + //find the latest selected fid lastFid: function () { if (imce.vars.lastfid) return imce.vars.lastfid; for (var fid in imce.selected); return fid; }, + //create ajax url ajaxURL: function (op, dir) { return imce.conf.url + (imce.conf.clean ? '?' :'&') +'jsop='+ op +'&dir='+ (dir||imce.conf.dir); }, + //fast class check hasC: function (el, name) { return el.className && (' '+ el.className +' ').indexOf(' '+ name +' ') != -1; }, + //highlight a single file highlight: function (fid) { if (imce.vars.prvfid) imce.fileClick(imce.vars.prvfid); imce.fileClick(fid); }, + //process a row processRow: function (row) { - row.cells[0].innerHTML = '<span>' + imce.decode(row.id) + '</span>'; + row.cells[0].innerHTML = '<span>' + imce.decodePlain(row.id) + '</span>'; row.onmousedown = function(e) { var e = e||window.event; imce.fileClick(this, e.ctrlKey, e.shiftKey); @@ -703,24 +702,34 @@ processRow: function (row) { return false; }; }, + //decode urls. uses unescape. can be overridden to use decodeURIComponent decode: function (str) { return unescape(str); }, + +//decode and convert to plain text +decodePlain: function (str) { + return Drupal.checkPlain(imce.decode(str)); +}, + //global ajax error function ajaxError: function (e, response, settings, thrown) { imce.setMessage(Drupal.ajaxError(response, settings.url).replace(/\n/g, '<br />'), 'error'); }, + //convert button elements to standard input buttons convertButtons: function(form) { $('button:submit', form).each(function(){ $(this).replaceWith('<input type="submit" value="'+ $(this).text() +'" name="'+ this.name +'" class="form-submit" id="'+ this.id +'" />'); }); }, + //create element newEl: function(name) { return document.createElement(name); }, + //scroll syncronization for section headers syncScroll: function(scrlEl, fixEl, bottom) { var $fixEl = $(fixEl); @@ -737,6 +746,7 @@ syncScroll: function(scrlEl, fixEl, bottom) { }); }); }, + //get UI ready. provide backward compatibility. updateUI: function() { //file urls. @@ -789,6 +799,7 @@ updateUI: function() { //scrolling directory tree imce.syncScroll(imce.NW, '#navigation-header'); } + }; //initiate diff --git a/sites/all/modules/imce/js/imce_set_app.js b/sites/all/modules/imce/js/imce_set_app.js index 7dfea4c3a863b35c7f427fdd5636854f50b6656f..667294c1f48738e8cdb57566c3595a5b93c395f1 100644 --- a/sites/all/modules/imce/js/imce_set_app.js +++ b/sites/all/modules/imce/js/imce_set_app.js @@ -1,4 +1,4 @@ -// $Id: imce_set_app.js,v 1.8 2010/08/29 03:46:54 ufku Exp $ +// $Id: imce_set_app.js,v 1.8.2.1 2010/12/12 07:14:44 ufku Exp $ /* * IMCE Integration by URL * Ex-1: http://example.com/imce?app=XEditor|url@urlFieldId|width@widthFieldId|height@heightFieldId @@ -6,7 +6,7 @@ * of the selected file in the parent window * Ex-2: http://example.com/imce?app=XEditor|sendto@functionName * "Insert file" operation calls parent window's functionName(file, imceWindow) - * Ex-3: http://example.com/imce?app=nomatter|imceload@functionName + * Ex-3: http://example.com/imce?app=XEditor|imceload@functionName * Parent window's functionName(imceWindow) is called as soon as IMCE UI is ready. Send to operation * needs to be set manually. See imce.setSendTo() method in imce.js */ @@ -15,61 +15,70 @@ var appFields = {}, appWindow = (top.appiFrm||window).opener || parent; -//execute when imce loads. +// Execute when imce loads. imce.hooks.load.push(function(win) { - var data = decodeURIComponent(location.href.substr(location.href.lastIndexOf('app=')+4)).split('|'); - var func, appName = data.shift(); - //extract fields - for (var i in data) { - var arr = data[i].split('@'); - arr.length > 1 && (appFields[arr[0]] = arr[1]); + var index = location.href.lastIndexOf('app='); + if (index == -1) return; + var data = decodeURIComponent(location.href.substr(index + 4)).split('|'); + var arr, prop, str, func, appName = data.shift(); + // Extract fields + for (var i = 0, len = data.length; i < len; i++) { + str = data[i]; + if (!str.length) continue; + if (str.indexOf('&') != -1) str = str.split('&')[0]; + arr = str.split('@'); + if (arr.length > 1) { + prop = arr.shift(); + appFields[prop] = arr.join('@'); + } } - //run custom onload function if available - if (appFields['imceload'] && (func = isFunc(appFields['imceload']))) { + // Run custom onload function if available + if (appFields.imceload && (func = isFunc(appFields.imceload))) { func(win); - delete appFields['imceload']; + delete appFields.imceload; } - //set custom sendto function. appFinish is the default. - var sendtoFunc = appFields['url'] ? appFinish : false; + // Set custom sendto function. appFinish is the default. + var sendtoFunc = appFields.url ? appFinish : false; //check sendto@funcName syntax in URL - if (appFields['sendto'] && (func = isFunc(appFields['sendto']))) { + if (appFields.sendto && (func = isFunc(appFields.sendto))) { sendtoFunc = func; - delete appFields['sendto']; + delete appFields.sendto; } - //check windowname+ImceFinish. old method + // Check old method windowname+ImceFinish. else if (win.name && (func = isFunc(win.name +'ImceFinish'))) { sendtoFunc = func; } - //highlight file - if (appFields['url']) { - if (appFields['url'].indexOf(',') > -1) {//support multiple url fields url@field1,field2.. - var arr = appFields['url'].split(','); + // Highlight file + if (appFields.url) { + // Support multiple url fields url@field1,field2.. + if (appFields.url.indexOf(',') > -1) { + var arr = appFields.url.split(','); for (var i in arr) { if ($('#'+ arr[i], appWindow.document).size()) { - appFields['url'] = arr[i]; + appFields.url = arr[i]; break; } } } - var filename = $('#'+ appFields['url'], appWindow.document).val(); + var filename = $('#'+ appFields.url, appWindow.document).val() || ''; imce.highlight(filename.substr(filename.lastIndexOf('/')+1)); } - //set send to + // Set send to sendtoFunc && imce.setSendTo(Drupal.t('Insert file'), sendtoFunc); }); -//sendTo function +// Default sendTo function var appFinish = function(file, win) { var $doc = $(appWindow.document); for (var i in appFields) { $doc.find('#'+ appFields[i]).val(file[i]); } - if (appFields['url']) { + if (appFields.url) { try{ - $doc.find('#'+ appFields['url']).blur().change().focus(); + $doc.find('#'+ appFields.url).blur().change().focus(); }catch(e){ try{ - $doc.find('#'+ appFields['url']).trigger('onblur').trigger('onchange').trigger('onfocus');//inline events for IE + $doc.find('#'+ appFields.url).trigger('onblur').trigger('onchange').trigger('onfocus');//inline events for IE }catch(e){} } } @@ -77,7 +86,8 @@ var appFinish = function(file, win) { win.close(); }; -//checks if a string is a function name in the given scope. returns function reference. supports x.y.z notation. +// Checks if a string is a function name in the given scope. +// Returns function reference. Supports x.y.z notation. var isFunc = function(str, scope) { var obj = scope || appWindow; var parts = str.split('.'), len = parts.length;