diff --git a/css/imce-content.css b/css/imce-content.css index ba5c245..d81901a 100644 --- a/css/imce-content.css +++ b/css/imce-content.css @@ -454,4 +454,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; -} \ No newline at end of file +} +#dir-stat .imce_pager { + text-align:right; + width:49%; + + float:right; +} +#dir-stat .dir-stat-inner { + width:49%; + + float:left; +} diff --git a/imce.module b/imce.module index 698d40f..99bb566 100644 --- a/imce.module +++ b/imce.module @@ -71,9 +71,14 @@ function imce_theme() { 'arguments' => array('imce_ref' => NULL), 'path' => $path, ); + $theme['imce_pager'] = array( + 'template' => 'imce-pager', + 'arguments' => array('imce' => NULL, 'start' => NULL, 'end' => NULL, 'total' => NULL, 'page' => NULL), + 'path' => $path, + ); $theme['imce_content'] = array( 'template' => 'imce-content', - 'arguments' => 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 +203,27 @@ 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)); +} + +/** + * Get pager + */ +function imce_get_pager($imce) { + $imce_showperpage = variable_get('imce_showperpage', 20); + if ($imce_showperpage != 0) { + $page = 1; + $total = intval(count($imce['files']) / $imce_showperpage); + + if (isset($_GET['page'])) { + $page = intval($_GET['page']); + } + + $start = $page >= 7 ? $page - 4 : 1; + $end = $page >= 7 ? (($page + 4) > $total ? $total : $page + 4 ) : variable_get('imce_maxpages', 10); + + return theme('imce_pager', $imce, $start, $end, $total, $page); + } + else { + return ''; + } } \ No newline at end of file diff --git a/inc/imce.admin.inc b/inc/imce.admin.inc index b844811..2c22feb 100644 --- a/inc/imce.admin.inc +++ b/inc/imce.admin.inc @@ -45,6 +45,28 @@ function imce_admin_form(&$form_state) { $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'), + ); + + $form['pager']['imce_maxpages'] = array( + '#type' => 'textfield', + '#title' => t('Maximum number of pages to display.'), + '#default_value' => variable_get('imce_maxpages', 10), + '#description' => t('By default 10 pages displayd in pager.'), + ); + //common settings $form['common'] = array( '#type' => 'fieldset', @@ -148,6 +170,14 @@ function imce_admin_submit($form, &$form_state) { if (isset($form_state['values']['disable_private'])) { 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.')); } diff --git a/inc/imce.page.inc b/inc/imce.page.inc index 07609f7..2832bb7 100644 --- a/inc/imce.page.inc +++ b/inc/imce.page.inc @@ -73,7 +73,20 @@ function imce_content($user, $jsop = NULL) { } } - $content = theme('imce_content', imce_create_tree($imce), $forms, $imce_ref); + //pager start + $page = 1; + $total = intval(count($imce['files']) / variable_get('imce_showperpage', 20)); + + if (isset($_GET['page'])) { + $page = intval($_GET['page']); + } + + $start = $page >= 7 ? $page - 4 : 1; + $end = $page >= 7 ? (($page + 4) > $total ? $total : $page + 4 ) : variable_get('imce_maxpages', 10); + //pager end + + $pager = theme('imce_pager', $imce, $start, $end, $total, $page); + $content = theme('imce_content', imce_create_tree($imce), $forms, $imce_ref, $pager); //make necessary changes for js conversion $imce['dir'] = str_replace('%2F', '/', rawurlencode($imce['dir'])); @@ -106,9 +119,10 @@ function imce_js($user, $jsop = '') { } } } + //pager + $response['data']['dirpager'] = imce_get_pager($imce); //messages $response['messages'] = drupal_get_messages(); - //disable devel log. $GLOBALS['devel_shutdown'] = FALSE; //for upload we must return plain text header. diff --git a/js/imce.js b/js/imce.js index 2fa265e..02c91b8 100644 --- a/js/imce.js +++ b/js/imce.js @@ -416,7 +416,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); @@ -593,6 +593,7 @@ resData: function (data) { imce.fileRemove(removed[i]); } imce.conf.dirsize = data.dirsize; + imce.conf.dirpager = data.dirpager imce.updateStat(); }, @@ -642,6 +643,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 diff --git a/js/imce_set_app.js b/js/imce_set_app.js index 2390868..fe118db 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); diff --git a/tpl/imce-content.tpl.php b/tpl/imce-content.tpl.php index c57fdfa..a7e2295 100644 --- a/tpl/imce-content.tpl.php +++ b/tpl/imce-content.tpl.php @@ -87,11 +87,15 @@ $imce =& $imce_ref['imce'];//keep this line. -
@@ -20,6 +31,6 @@ if ($imce['perm']['browse'] && !empty($imce['files'])) { |