css/imce-content.css | 11 +++++++++ imce.info | 7 ++++++ imce.module | 47 ++++++++++++++++++++++++++++++++++-- inc/imce.admin.inc | 24 ++++++++++++++++++- inc/imce.page.inc | 62 ++++++++++++++++++++++++++++++++++++++++++------ js/imce.js | 6 +++-- js/imce_set_app.js | 6 +++-- tpl/imce-content.tpl.php | 12 +++++++--- 8 files changed, 158 insertions(+), 17 deletions(-) diff --git a/css/imce-content.css b/css/imce-content.css index f746e0d..ce557dc 100644 --- a/css/imce-content.css +++ b/css/imce-content.css @@ -457,4 +457,15 @@ body.imce { } .box-view #file-list td.size, .box-view #file-list td.date, .box-view #file-list td.width, .box-view #file-list td.height { display: none; +} +#dir-stat .imce_pager { + text-align:right; + width:49%; + + float:right; +} +#dir-stat .dir-stat-inner { + width:49%; + + float:left; } \ No newline at end of file diff --git a/imce.info b/imce.info index 85623bd..ac23626 100644 --- a/imce.info +++ b/imce.info @@ -3,3 +3,10 @@ description = "An image/file uploader and browser supporting personal directorie core = "7.x" package = "Media" configure = "admin/config/media/imce" + +; Information added by Drupal.org packaging script on 2016-03-30 +version = "7.x-1.10" +core = "7.x" +project = "imce" +datestamp = "1459346870" + diff --git a/imce.module b/imce.module index f3dc4bf..ee12042 100644 --- a/imce.module +++ b/imce.module @@ -69,6 +69,13 @@ function imce_theme() { $theme['imce_root_text'] = array( 'variables' => array('imce_ref' => NULL), ); + + $theme['imce_pager'] = array( + 'template' => 'imce-pager', + 'arguments' => array('imce' => NULL, 'pager' => NULL), + 'path' => $path, + ); + $theme['imce_user_page'] = array( 'variables' => array('account' => NULL), ); @@ -79,7 +86,7 @@ function imce_theme() { ); $theme['imce_content'] = array( 'template' => 'imce-content', - 'variables' => array('tree' => NULL, 'forms' => NULL, 'imce_ref' => NULL), + 'arguments' => array('tree' => NULL, 'forms' => NULL, 'imce_ref' => NULL, 'pager' => NULL), 'path' => $path, ); $theme['imce_page'] = array( @@ -198,4 +205,40 @@ function imce_user_page_access($account, $user = FALSE) { */ function imce_reg_dir($dirname) { return $dirname == '.' || is_int($dirname) || (is_string($dirname) && $dirname != '' && !preg_match('@(^\s)|(^/)|(^\./)|(\s$)|(/$)|(/\.$)|(\.\.)|(//)|(\\\\)|(/\./)@', $dirname)); -} \ No newline at end of file +} + + +function imce_get_pager($imce) { + $imce_showperpage = variable_get('imce_showperpage', 20); + if ($imce_showperpage != 0) { + $page = 1; + if (isset($_GET['page'])) { + $page = intval($_GET['page']); + } + + $prev = ''; + $next = ''; + if($page > 1) { + $prev = ''.t('Previous').' | '; + } + + if(count($imce['files']) === (int) $imce_showperpage) { + $next = ' | ' . t('Next') . ''; + } + return theme('imce_pager', array( + 'imce' => $imce, + 'pager' => array( + 'page' => $page, + 'prev' => $prev, + 'next' => $next, + ) + )); + } + else { + return ''; + } + } + + + + diff --git a/inc/imce.admin.inc b/inc/imce.admin.inc index 587aa47..f63e4dc 100644 --- a/inc/imce.admin.inc +++ b/inc/imce.admin.inc @@ -63,6 +63,20 @@ function imce_admin_form($form, &$form_state) { $core = $rid == DRUPAL_ANONYMOUS_RID || $rid == DRUPAL_AUTHENTICATED_RID; $form['roles'][$rid] = imce_role_form($role, $form['#weighted'], $core); } +//pager settings + $form['pager'] = array( + '#type' => 'fieldset', + '#title' => t('Pager settings'), + '#collapsible' => true, + '#collapsed' => false, + ); + + $form['pager']['imce_showperpage'] = array( + '#type' => 'textfield', + '#title' => t('Number files per page'), + '#default_value' => variable_get('imce_showperpage', 20), + '#description' => t('By default 20 shown per page. Smaller number faster rendering. Set to 0 for remove paging'), + ); //common settings $form['common'] = array( @@ -183,6 +197,14 @@ function imce_admin_submit($form, &$form_state) { 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']); + if (isset($form_state['values']['imce_maxpages'])) { + variable_set('imce_maxpages', $form_state['values']['imce_maxpages']); + } + + if (isset($form_state['values']['imce_showperpage'])) { + variable_set('imce_showperpage', $form_state['values']['imce_showperpage']); + } + drupal_set_message(t('Changes have been saved.')); } @@ -737,4 +759,4 @@ function imce_admin_check_wildcard_upload($rid, $conf = NULL) { } //Include core profile functions. -include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'imce') . '/inc/imce.core.profiles.inc'; \ No newline at end of file +include_once DRUPAL_ROOT . '/' . drupal_get_path('module', 'imce') . '/inc/imce.core.profiles.inc'; diff --git a/inc/imce.page.inc b/inc/imce.page.inc index 32e267c..6479ed8 100644 --- a/inc/imce.page.inc +++ b/inc/imce.page.inc @@ -73,11 +73,22 @@ function imce_content($user, $scheme = NULL, $jsop = NULL) { } } - $content = theme('imce_content', array( - 'tree' => imce_create_tree($imce), - 'forms' => $forms, - 'imce_ref' => $imce_ref, - )); + //pager start + $page = 1; + + if (isset($_GET['page'])) { + $page = intval($_GET['page']); + } + if (isset($_GET)) { + //first load of the window capture any GET params that were passed in so the pager can still use them. + $_SESSION['imce_init_get'] = $_GET; + } + + //pager end + + $pager = imce_get_pager($imce);//theme('imce_pager', array('imce'=>$imce, 'page'=>$page)); + + $content = theme('imce_content', array('tree'=>imce_create_tree($imce),'forms'=>$forms,'imce_ref'=>$imce_ref,'pager'=>$pager)); //make necessary changes for js conversion $imce['dir'] = str_replace('%2F', '/', rawurlencode($imce['dir'])); @@ -110,6 +121,8 @@ function imce_js($user, $scheme, $jsop = '') { } } } + //pager + $response['data']['dirpager'] = imce_get_pager($imce); //messages $response['messages'] = drupal_get_messages(); @@ -184,7 +197,7 @@ function imce_fileop_form($form, &$form_state, $ref) { '#title' => t('Resize'), ) + imce_resize_form($imce); } - + $form['#action'] = $imce['url']; return $form; } @@ -763,6 +776,7 @@ function imce_process_profile(&$imce) { $imce += $scan($imce['dir'], $imce); //run custom process functions + foreach (variable_get('imce_custom_process', array()) as $func => $state) { if ($state && function_exists($func)) { $func($imce); @@ -773,6 +787,7 @@ function imce_process_profile(&$imce) { if (!$imce['error'] && !imce_subdirectories_accessible($imce)) { $imce['subdirectories'] = array(); } + } /** @@ -977,6 +992,33 @@ function imce_scan_directory($dirname, $imce) { return $directory; } + + $start = 0; + $imce_showperpage = variable_get('imce_showperpage', 10); + if ($imce_showperpage != 0) { + if (isset($_GET['page']) && $_GET['page'] != 1) { + $start = ($_GET['page'] - 1) * $imce_showperpage; + } + } + + // skip the files of the prev-pages + $files_skipped = $start; + while ($files_skipped > 0 && ($file = readdir($handle)) !== FALSE) { + // Do not include dot files and folders + if (substr($file, 0, 1) === '.' || is_dir($diruri . $file)) { + continue; + } + $files_skipped--; + } + + // If we couldn't skip enough, we don't have any files left. + // Return an empty list. + if($files_skipped > 0) { + closedir($handle); + return array(); + } + + $files_read = 0; while (($file = readdir($handle)) !== FALSE) { // Do not include dot files and folders @@ -991,6 +1033,10 @@ function imce_scan_directory($dirname, $imce) { continue; } + // If we've read the files we wanted, skip the next part + // But keep the loop going so we get all directories. + if($imce_showperpage > 0 && $files_read++ >= $imce_showperpage) continue; + $width = $height = 0; if ($img = imce_image_info($path)) { $width = $img['width']; @@ -1006,10 +1052,12 @@ function imce_scan_directory($dirname, $imce) { 'date' => $date ); $directory['dirsize'] += $size; + } closedir($handle); sort($directory['subdirectories']); + return $directory; } @@ -1126,4 +1174,4 @@ function imce_file_register($file) { if (!db_query("SELECT 1 FROM {file_usage} WHERE module = 'imce' AND fid = :fid", array(':fid' => $file->fid))->fetchField()) { file_usage_add($file, 'imce', 'file', $file->fid); } -} \ No newline at end of file +} diff --git a/js/imce.js b/js/imce.js index 49cc156..9b32363 100644 --- a/js/imce.js +++ b/js/imce.js @@ -432,7 +432,7 @@ navUpdate: function(data, dir) { //set cache navCache: function (dir, newdir) { - var C = imce.cache[dir] = {'dir': dir, files: imce.el('file-list'), dirsize: imce.el('dir-size').innerHTML, perm: $.extend({}, imce.conf.perm)}; + var C = imce.cache[dir] = {'dir': dir, files: imce.el('file-list'), dirsize: imce.el('dir-size').innerHTML, dirpager: imce.el('dir-pager').innerHTML, perm: $.extend({}, imce.conf.perm)}; C.files.id = 'cached-list-'+ dir; imce.FW.appendChild(C.files); imce.invoke('cache', C, newdir); @@ -622,6 +622,7 @@ resData: function (data) { imce.fileRemove(removed[i]); } imce.conf.dirsize = data.dirsize; + imce.conf.dirpager = data.dirpager; imce.updateStat(); }, @@ -671,6 +672,7 @@ validateSelCount: function (Min, Max) { updateStat: function () { imce.el('file-count').innerHTML = imce.findex.length; imce.el('dir-size').innerHTML = imce.conf.dirsize; + imce.el('dir-pager').innerHTML = imce.conf.dirpager; }, //serialize selected files. return fids with a colon between them @@ -849,4 +851,4 @@ updateUI: function() { //initiate $(document).ready(imce.initiate); -})(jQuery); \ No newline at end of file +})(jQuery); diff --git a/js/imce_set_app.js b/js/imce_set_app.js index 419f7df..060a5ac 100644 --- a/js/imce_set_app.js +++ b/js/imce_set_app.js @@ -60,7 +60,9 @@ imce.hooks.load.push(function(win) { } } var filename = $('#'+ appFields.url, appWindow.document).val() || ''; - imce.highlight(filename.substr(filename.lastIndexOf('/')+1)); + if (typeof (filename) != 'undefined') { + imce.highlight(filename.substr(filename.lastIndexOf('/')+1)); + } } // Set send to sendtoFunc && imce.setSendTo(Drupal.t('Insert file'), sendtoFunc); @@ -94,4 +96,4 @@ var isFunc = function(str, scope) { return obj && i == len && (typeof obj == 'function' || typeof obj != 'string' && !obj.nodeName && obj.constructor != Array && /^[\s[]?function/.test(obj.toString())) ? obj : false; } -})(jQuery); \ No newline at end of file +})(jQuery); diff --git a/tpl/imce-content.tpl.php b/tpl/imce-content.tpl.php index 53a397c..ebf1bb6 100644 --- a/tpl/imce-content.tpl.php +++ b/tpl/imce-content.tpl.php @@ -87,11 +87,15 @@ $imce =& $imce_ref['imce'];//keep this line. $imce_ref)); /* see imce-file-list-tpl.php */?> -
+
+ ''. count($imce['files']) .'', '!dirsize' => ''. format_size($imce['dirsize']) .'', '!quota' => ''. ($imce['quota'] ? format_size($imce['quota']) : ($imce['tuquota'] ? format_size($imce['tuquota']) : t('unlimited quota'))) .'' )); ?> +
+
@@ -103,6 +107,8 @@ $imce =& $imce_ref['imce'];//keep this line. -
+
\ No newline at end of file +print $forms; ?>
+ +