From a953290a24761f73d632d2bb538fc9b53360b9e5 Mon Sep 17 00:00:00 2001 From: Eric Rasmussen <eric@unl.edu> Date: Fri, 25 Jun 2010 15:13:26 +0000 Subject: [PATCH] Update imce module to 7.x-1.0-alpha3 git-svn-id: file:///tmp/wdn_thm_drupal/branches/drupal-7.x@110 20a16fea-79d4-4915-8869-1ea9d5ebf173 --- sites/all/modules/imce/README.txt | 6 ++-- sites/all/modules/imce/css/close.png | Bin 395 -> 421 bytes sites/all/modules/imce/css/sendto.png | Bin 0 -> 575 bytes sites/all/modules/imce/imce.info | 6 ++-- sites/all/modules/imce/imce.install | 7 ++-- sites/all/modules/imce/imce.module | 6 ++-- sites/all/modules/imce/inc/imce.admin.inc | 9 ++++- sites/all/modules/imce/inc/imce.page.inc | 33 +++++++++++++++---- sites/all/modules/imce/js/imce.js | 28 +++++++++++----- sites/all/modules/imce/js/imce_extras.js | 25 +++++++------- sites/all/modules/imce/js/imce_set_app.js | 6 ++-- sites/all/modules/imce/js/imce_set_inline.js | 4 +-- 12 files changed, 86 insertions(+), 44 deletions(-) create mode 100644 sites/all/modules/imce/css/sendto.png diff --git a/sites/all/modules/imce/README.txt b/sites/all/modules/imce/README.txt index 19bb9a96..76fbf2bb 100644 --- a/sites/all/modules/imce/README.txt +++ b/sites/all/modules/imce/README.txt @@ -1,4 +1,4 @@ -// $Id: README.txt,v 1.15 2010/04/10 12:36:20 ufku Exp $ +// $Id: README.txt,v 1.17 2010/06/19 15:12:34 ufku Exp $ IMCE http://drupal.org/project/imce @@ -30,10 +30,10 @@ FEATURES INSTALLATION ----------- 1) Copy imce directory to your modules directory -2) Enable the module at: /admin/build/modules +2) Enable the module at module administration page 3) Create configuration profiles and assign them to user roles at /admin/config/media/imce 4) Test it at /imce. -5) See imce-content.tpl.php for some configuration options such as absolute URLs ad inline previewing. +5) See imce-content.tpl.php for some configuration options such as inline previewing. 6) See INTEGRATION METHODS to make IMCE collaborate with your application if it's not already integrated. Notes: - When you configure IMCE for inline image/file insertion into textareas there should appear an IMCE link under each textarea you specified. diff --git a/sites/all/modules/imce/css/close.png b/sites/all/modules/imce/css/close.png index 1af29cac63261cd724d0ece69bf6dd497991e336..dde4617b16e415236b50e85dd7ef995e2899ac95 100644 GIT binary patch delta 393 zcmeBXUdpW48Q|y6%O%Cdz`(%k>ERN@z`!5?!W_&D3=A5&{J|3y)$17&0(?ST^GbXE z{{7q5Icedd#S^BlVHEXc5i-{{@i%u)_3(?{w(I1kO`F1_(;hu~lAc}s=FOW`Yqy;~ zcP%!f`|jO)=PusRH?|W~usMJJJQJ6Knt9gScOP~iIQQenkK6ZNRMbuU|NlQ%OQQw@ z1A{_IkYDhBWKfUHfv_23Vx-?PFfgq5ba4!+xE0fXTBuop$5mKi0aMo2gjFK{{_9KM z@)O_N?Ng+-p8Ku;hdzJi**mAp&tMa>J<}wg@M5*@G(NRkdJ0nOyiAq0{7~5C=f2(e z_8RdD{vDr}8EjZu;BcGeM#GAThR;lE;x&@<H(bliSk)~0-M0Q<?4&N!hg!OhZe1G> zTN;MXsSMb(MR&8bu5rKS`M7gtJrkCu&2D<vzcp-;WU!ax&%HHg9u`%s{d@83UKR-k ZQx$>8zC-)gGB7YOc)I$ztaD0e0s#9xy9EFM delta 367 zcmZ3=+|8`m8Q|y6%O%Cdz`(%k>ERN@z`(!*!W?W23=CnVG0!I|s@F5>db&7<RNR^} zalh9Q2Z<x*o#oH(KkjmFQOKHj?bfMt>L;8d;!@S`FuMpwUo79SMZjBoc7u|HOXt>; zxh{rk(=9f?YqQ??u{r*mcbS^??(D0jy8nWWYa*tpCd_fRX0T4+(K}%H>{u}0I)+;h zmi-G&jf`_j`k#7Z@q-61w)h3tuS_`aH7P~hDE(AG=v7g5%{%gPS~vdJc%N5{PWY6@ zZxGS<xFc@8w%N7ttNk}NcP)C65Wx~(v-Ruo?7qc;YV+pBi@b>}l)0bu!epa_CP&j# zoAdI%BEr62mCtv*6HCcX*k-uk*1q@Efg*ELBfl}cJ8WR{(I#KIcy<EomMfwc8eBJT zD?MlTV%A<m-3bpw_Z06wmcW-Fr}OgZ&M)c}%<{jCjxKS0;hp6>r+Veeo(Itlj11RT X9b)^n(El+50|SGntDnm{r-UW|){>ye diff --git a/sites/all/modules/imce/css/sendto.png b/sites/all/modules/imce/css/sendto.png new file mode 100644 index 0000000000000000000000000000000000000000..64bc32753630dfb21e7961b695709b4d754e95f5 GIT binary patch literal 575 zcmeAS@N?(olHy`uVBq!ia0y~yU=RRd4mJh`2Kmqb6B!s7BuiW)N`mv#O3D+9QW+dm z@{>{(JaZG%Q-e|yQz{EjrrIztFh2BjaSW-rbtKqdBPUSi-?_b?)jyf=>#H8k{*)y2 zzO{AkqGx(4s{V(a&foUfxG6+u*&C7F;W|g%_HLN5X@bU-R>gWTo5emUi%#}j+*|zK zvaWsN>`z}dRqVI={^#$$&vV~@-|fTE_`Rj6yv@1J?u-G4l;I-bIaQOziZj;SS~szG zVaqL<-nInADPOwxYj|9&RK9%4#QY)S@gM!m=9{wcUF!O#?_VHTv1Y@*1@DB!f4qCY z!tGb%laHMFEXp4?EDp>3G3T|e)$@xb6}7)76!z>1S#a_9_IXP@U+z$rzw{!s>tfi% z_u9ToglzWgtUaP{z}I**or$rxhr4WBdF|xAbJDNPzMAu;@{?Va@<a|kvv2*CESFX4 zy(G4ocm;Sb*qY^kKlBgd+w8U_@qq?!KJ7d;$>yPl>*VDYhixP+PU$e+;_N8QNc{BO zZ=3b$h@CM(`&sr(HMp?$+M+u}Qh9Z0Zbvz%wR*l}woEej2upgWGFe3`m$kdf?&rFo zjXK+p^Zt!$|H^Jy%$<FvQSP0~oKK9$<PMt0ezSVOp;>bH=lUD_lnS!%y>#Fy%oa{8 z+B4tpNc`F(%M}b2%a~sXb680S=B#_vae%qRH{{*wd_kKQPnGKprrvI=BwXb9mb?k? iezO06?{_912A$Wt<GC{)ePdu?VDNPHb6Mw<&;$VYkO&a~ literal 0 HcmV?d00001 diff --git a/sites/all/modules/imce/imce.info b/sites/all/modules/imce/imce.info index 130f5561..b032cc4b 100644 --- a/sites/all/modules/imce/imce.info +++ b/sites/all/modules/imce/imce.info @@ -9,9 +9,9 @@ files[] = "imce.module" files[] = "inc/imce.admin.inc" files[] = "inc/imce.page.inc" -; Information added by drupal.org packaging script on 2010-05-29 -version = "7.x-1.0-alpha2" +; Information added by drupal.org packaging script on 2010-06-21 +version = "7.x-1.0-alpha3" core = "7.x" project = "imce" -datestamp = "1275125108" +datestamp = "1277145015" diff --git a/sites/all/modules/imce/imce.install b/sites/all/modules/imce/imce.install index 3c3256e2..3a0cfcc8 100644 --- a/sites/all/modules/imce/imce.install +++ b/sites/all/modules/imce/imce.install @@ -1,5 +1,5 @@ <?php -// $Id: imce.install,v 1.6 2010/05/29 08:23:20 ufku Exp $ +// $Id: imce.install,v 1.7 2010/06/02 08:27:00 ufku Exp $ /** * @file @@ -42,10 +42,13 @@ function imce_schema() { 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, - 'description' => 'The {files}.fid that belongs to IMCE.', + 'description' => 'The {file_managed}.fid that belongs to IMCE.', ), ), 'primary key' => array('fid'), + 'foreign keys' => array( + 'fid' => array('file_managed' => 'fid'), + ), ); return $schema; } diff --git a/sites/all/modules/imce/imce.module b/sites/all/modules/imce/imce.module index 680e6957..6b6cb01d 100644 --- a/sites/all/modules/imce/imce.module +++ b/sites/all/modules/imce/imce.module @@ -1,5 +1,5 @@ <?php -// $Id: imce.module,v 1.32 2010/05/29 08:23:20 ufku Exp $ +// $Id: imce.module,v 1.34 2010/06/02 08:31:10 ufku Exp $ /** * @file @@ -95,7 +95,7 @@ function imce_theme() { * Support private downloads if not disabled. */ function imce_file_download($uri) { - $serve = file_uri_scheme($uri) == 'private' && !variable_get('imce_settings_disable_private', 1) && file_exists($uri); + $serve = file_uri_scheme($uri) == 'private' && !variable_get('imce_settings_disable_private', 1) && file_exists($uri) && strpos(basename($uri), '.'); if ($serve) { return array( 'Content-type' => file_get_mimetype($uri), @@ -247,7 +247,7 @@ function imce_user_page_access($account, $user = FALSE) { global $user; } - return $account->uid == $user->uid && ($profile = imce_user_profile($user)) && $profile['usertab']; + return ($user->uid == 1 || $account->uid == $user->uid) && ($profile = imce_user_profile($account)) && $profile['usertab']; } /** diff --git a/sites/all/modules/imce/inc/imce.admin.inc b/sites/all/modules/imce/inc/imce.admin.inc index a36a1f29..7d1d4a30 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.4 2010/05/29 02:09:05 ufku Exp $ +// $Id: imce.admin.inc,v 1.5 2010/06/02 08:31:10 ufku Exp $ /** * @file @@ -72,6 +72,12 @@ function imce_admin_form($form, &$form_state) { '#maxlength' => NULL, '#description' => t('If you don\'t use any WYSIWYG editor, this feature will allow you to add your images or files as <strong>html code into any plain textarea</strong>. Enter <strong>comma separated textarea IDs</strong> under which you want to enable a link to IMCE. The * character is a wildcard. Hint: ID of Body fields in most node types starts with edit-body.'), ); + $form['common']['absurls'] = array( + '#type' => 'checkbox', + '#title' => t('Absolute URLs'), + '#default_value' => variable_get('imce_settings_absurls', 0), + '#description' => t('Check if you want IMCE to return absolute file URLs.'), + ); $form['common']['replace'] = array( '#type' => 'radios', '#title' => t('Default behaviour for existing files during file uploads'), @@ -150,6 +156,7 @@ function imce_admin_submit($form, &$form_state) { } variable_set('imce_roles_profiles', $roles); variable_set('imce_settings_textarea', $form_state['values']['textarea']); + variable_set('imce_settings_absurls', $form_state['values']['absurls']); variable_set('imce_settings_replace', $form_state['values']['replace']); variable_set('imce_settings_thumb_method', $form_state['values']['thumb_method']); variable_set('imce_settings_disable_private', $form_state['values']['disable_private']); diff --git a/sites/all/modules/imce/inc/imce.page.inc b/sites/all/modules/imce/inc/imce.page.inc index b907ce30..c16ca5a6 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.5 2010/05/29 08:23:20 ufku Exp $ +// $Id: imce.page.inc,v 1.9 2010/06/19 15:13:35 ufku Exp $ /** * @file @@ -385,10 +385,21 @@ function imce_process_files($filenames, &$imce, $function, $args = array()) { } /** - * Delete a file in the file list. + * Deletes a file in the file list. */ function imce_delete_file($filename, &$imce) { $uri = imce_dir_uri($imce) . $filename; + if (!imce_delete_filepath($uri)) { + return FALSE; + } + imce_remove_file($filename, $imce); + return TRUE; +} + +/** + * Deletes a file by uri. + */ +function imce_delete_filepath($uri) { $file = file_load_multiple(array(), array('uri' => $uri)); $file = reset($file); @@ -412,7 +423,6 @@ function imce_delete_file($filename, &$imce) { return FALSE; } - imce_remove_file($filename, $imce); return TRUE; } @@ -688,9 +698,10 @@ function imce_initiate_profile($user, $scheme = NULL) { if ($imce = imce_user_profile($user, $scheme)) { imce_process_directories($imce, $user); if (!empty($imce['directories'])) { - $imce['uid'] = (int)$user->uid; + $imce['uid'] = (int) $user->uid; $imce['url'] = url($_GET['q']); $imce['clean'] = variable_get('clean_url', 0) == 1; + $imce['absurls'] = variable_get('imce_settings_absurls', 0) == 1; $imce['furl'] = file_create_url($imce['scheme'] . '://'); $imce['filesize'] *= 1048576;//convert from Mb to byte $imce['quota'] *= 1048576; @@ -1054,12 +1065,22 @@ function theme_imce_root_text($variables) { * Returns the html for user's file browser tab. */ function theme_imce_user_page($variables) { - return '<iframe src="' . url('imce') . '" frameborder="0" style="border: 1px solid #eee; width: 99%; height: 520px" class="imce-frame"></iframe>'; + global $user; + $account = $variables['account']; + $options = array(); + //switch to account's active folder + if ($user->uid == 1 && $account->uid != 1) { + $imce = imce_initiate_profile($account); + $options['query'] = array('dir' => $imce['dir']); + } + return '<iframe src="' . url('imce', $options) . '" frameborder="0" style="border: 1px solid #eee; width: 99%; height: 520px" class="imce-frame"></iframe>'; } /** * Registers the file as an IMCE file. */ function imce_file_register($file) { - return $file->fid && @db_insert('imce_files')->fields(array('fid' => $file->fid))->execute(); + if (!db_query('SELECT 1 FROM {imce_files} WHERE fid = :fid', array(':fid' => $file->fid))->fetchField()) { + return @db_insert('imce_files')->fields(array('fid' => $file->fid))->execute(); + } } \ No newline at end of file diff --git a/sites/all/modules/imce/js/imce.js b/sites/all/modules/imce/js/imce.js index c67866a2..87211864 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.19 2010/05/29 08:24:01 ufku Exp $ +// $Id: imce.js,v 1.23 2010/06/19 15:14:20 ufku Exp $ (function($) { //Global container. @@ -323,7 +323,12 @@ opClick: function(name) { var $opcon = $('#op-contents').css({left: 0}); $(Op.div).slideDown('normal', function() { setTimeout(function() { - imce.vars.op && $('input:first', imce.ops[imce.vars.op].div).focus(); + if (imce.vars.op) { + var $inputs = $('input', imce.ops[imce.vars.op].div); + $inputs.eq(0).focus(); + //form inputs become invisible in IE. Solution is as stupid as the behavior. + $('html').is('.ie') && $inputs.addClass('dummyie').removeClass('dummyie'); + } }); }); var diff = left + $opcon.width() - $('#imce-content').width(); @@ -699,7 +704,7 @@ decode: function (str) { }, //global ajax error function ajaxError: function (e, response, settings, thrown) { - imce.setMessage(Drupal.ahahError(response, settings.url).replace('\n', '<br />'), 'error'); + imce.setMessage(Drupal.ajaxError(response, settings.url).replace(/\n/g, '<br />'), 'error'); }, //convert button elements to standard input buttons convertButtons: function(form) { @@ -731,11 +736,18 @@ syncScroll: function(scrlEl, fixEl, bottom) { updateUI: function() { //file urls. var furl = imce.conf.furl, isabs = furl.indexOf('://') > -1; - furl.charAt(furl.length - 1) != '/' && (furl += '/'); - imce.conf.modfix = imce.conf.clean && furl.indexOf(location.host + '/system/') > -1; - if (imce.vars.absurls && !isabs || !imce.vars.absurls && isabs) { - var baseurl = location.protocol + '//' + location.host + (location.port ? ':' + location.port : ''); - imce.conf.furl = isabs ? furl.substr(baseurl.length) : baseurl + furl; + var absurls = imce.conf.absurls = imce.vars.absurls || imce.conf.absurls; + var host = location.host; + var baseurl = location.protocol + '//' + host; + if (furl.charAt(furl.length - 1) != '/') { + furl += '/'; + } + imce.conf.modfix = imce.conf.clean && furl.indexOf(host + '/system/') > -1; + if (absurls && !isabs) { + imce.conf.furl = baseurl + furl; + } + else if (!absurls && isabs && furl.indexOf(baseurl) == 0) { + imce.conf.furl = furl.substr(baseurl.length); } //convert button elements to input elements. imce.convertButtons(imce.el('forms-wrapper')); diff --git a/sites/all/modules/imce/js/imce_extras.js b/sites/all/modules/imce/js/imce_extras.js index 8f7586e5..a06ad342 100644 --- a/sites/all/modules/imce/js/imce_extras.js +++ b/sites/all/modules/imce/js/imce_extras.js @@ -1,4 +1,4 @@ -// $Id: imce_extras.js,v 1.5 2010/05/15 13:31:16 ufku Exp $ +// $Id: imce_extras.js,v 1.6 2010/06/05 08:04:41 ufku Exp $ //This pack implemets: keyboard shortcuts, file sorting, resize bars, and inline thumbnail preview. (function($) { @@ -109,11 +109,10 @@ imce.initiateSorting = function() { imce.hooks.navigate.push(function (data, olddir, cached) { cached ? imce.updateSortState(data.cid, data.dsc) : imce.firstSort(); }); - imce.vars.cid = imce.cookie('icid')*1; - imce.vars.dsc = imce.cookie('idsc')*1; + imce.vars.cid = imce.cookie('imcecid') * 1; + imce.vars.dsc = imce.cookie('imcedsc') * 1; imce.cols = imce.el('file-header').rows[0].cells; $(imce.cols).click(function () {imce.columnSort(this.cellIndex, imce.hasC(this, 'asc'));}); - $(window).unload(function() {imce.cookie('icid', imce.vars.cid); imce.cookie('idsc', imce.vars.dsc ? 1 : 0);}); imce.firstSort(); }; @@ -145,8 +144,8 @@ imce.columnSort = function(cid, dsc) { imce.updateSortState = function(cid, dsc) { $(imce.cols[imce.vars.cid]).removeClass(imce.vars.dsc ? 'desc' : 'asc'); $(imce.cols[cid]).addClass(dsc ? 'desc' : 'asc'); - imce.vars.cid = cid; - imce.vars.dsc = dsc; + imce.vars.cid != cid && imce.cookie('imcecid', imce.vars.cid = cid); + imce.vars.dsc != dsc && imce.cookie('imcedsc', (imce.vars.dsc = dsc) ? 1 : 0); }; //sorters @@ -159,13 +158,13 @@ imce.sortNumDsc = function(a, b) {return b-a}; //set resizers for resizable areas and recall previous dimensions imce.initiateResizeBars = function () { - imce.setResizer('navigation-resizer', 'X', 'navigation-wrapper', null, 1); - imce.setResizer('browse-resizer', 'Y', 'browse-wrapper', 'preview-wrapper', 50); - imce.recallDimensions(); - $(window).unload(function() { - imce.cookie('imcebwh', $(imce.BW).height()); - imce.cookie('imcenww', Math.max($(imce.NW).width(), 1)); + imce.setResizer('navigation-resizer', 'X', 'navigation-wrapper', null, 1, function(p1, p2, m) { + p1 != p2 && imce.cookie('imcenww', p2); + }); + imce.setResizer('browse-resizer', 'Y', 'browse-wrapper', 'preview-wrapper', 50, function(p1, p2, m) { + p1 != p2 && imce.cookie('imcebwh', p2); }); + imce.recallDimensions(); }; //set a resize bar @@ -231,7 +230,7 @@ imce.cookie = function (name, value) { if (typeof(value) == 'undefined') {//get return unescape((document.cookie.match(new RegExp('(^|;) *'+ name +'=([^;]*)(;|$)')) || ['', '', ''])[2]); } - document.cookie = name +'='+ escape(value) +'; expires='+ (new Date(new Date()*1 + 30*86400000)).toGMTString() +'; path=/';//set + document.cookie = name +'='+ escape(value) +'; expires='+ (new Date(new Date() * 1 + 15 * 86400000)).toGMTString() +'; path=' + Drupal.settings.basePath + 'imce';//set }; //view thumbnails(smaller than tMaxW x tMaxH) inside the rows. diff --git a/sites/all/modules/imce/js/imce_set_app.js b/sites/all/modules/imce/js/imce_set_app.js index 38a317b9..f910cc57 100644 --- a/sites/all/modules/imce/js/imce_set_app.js +++ b/sites/all/modules/imce/js/imce_set_app.js @@ -1,11 +1,11 @@ -// $Id: imce_set_app.js,v 1.5 2010/04/03 16:04:41 ufku Exp $ +// $Id: imce_set_app.js,v 1.6 2010/06/02 08:28:47 ufku Exp $ /* * IMCE Integration by URL * Ex-1: http://example.com/imce?app=XEditor|url@urlFieldId|width@widthFieldId|height@heightFieldId - * Creates "Send to XEditor" operation tab, which fills the specified fields with url, width, height properties + * Creates "Insert file" operation tab, which fills the specified fields with url, width, height properties * of the selected file in the parent window * Ex-2: http://example.com/imce?app=XEditor|sendto@functionName - * "Send to XEditor" operation calls parent window's functionName(file, imceWindow) + * "Insert file" operation calls parent window's functionName(file, imceWindow) * Ex-3: http://example.com/imce?app=nomatter|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 diff --git a/sites/all/modules/imce/js/imce_set_inline.js b/sites/all/modules/imce/js/imce_set_inline.js index 107db732..462efef1 100644 --- a/sites/all/modules/imce/js/imce_set_inline.js +++ b/sites/all/modules/imce/js/imce_set_inline.js @@ -1,4 +1,4 @@ -// $Id: imce_set_inline.js,v 1.4 2010/03/17 20:55:38 ufku Exp $ +// $Id: imce_set_inline.js,v 1.5 2010/06/02 08:29:40 ufku Exp $ (function($) { @@ -21,7 +21,7 @@ ii.initiate = function() { //function to be executed when imce loads. ii.load = function(win) { - win.imce.setSendTo(Drupal.t('Send to @app', {'@app': Drupal.t('textarea')}), ii.insert); + win.imce.setSendTo(Drupal.t('Insert file'), ii.insert); $(window).unload(function() { if (ii.pop && !ii.pop.closed) ii.pop.close(); }); -- GitLab