From 235a5e131acb88950af7ff1b08882e5c7021cccf Mon Sep 17 00:00:00 2001 From: Eric Marguin Date: Tue, 11 Sep 2007 16:49:05 +0200 Subject: [PATCH] [svn r12996] refactor a bit the dropbox tool. Indeed there was two incrusted form tags which made a bug when there was several pages of files (you couldn't add feedbacks anymore). My solution is probably not totally perfect, but it uses functions of SortableTable ... that seems more logical. --- main/dropbox/dropbox_functions.inc.php | 27 +++++++++------- main/dropbox/dropbox_init.inc.php | 13 ++------ main/dropbox/index.php | 43 ++++++-------------------- main/inc/lib/display.lib.php | 3 +- plugin/messages/new_message.php | 3 +- 5 files changed, 31 insertions(+), 58 deletions(-) diff --git a/main/dropbox/dropbox_functions.inc.php b/main/dropbox/dropbox_functions.inc.php index 3153265ac1..9e36fedf83 100644 --- a/main/dropbox/dropbox_functions.inc.php +++ b/main/dropbox/dropbox_functions.inc.php @@ -40,31 +40,34 @@ function handle_multiple_actions() global $_user, $is_courseAdmin, $is_courseTutor; // STEP 1: are we performing the actions on the received or on the sent files? - foreach ($_POST as $key=>$value) + if($_POST['action']=='delete_received' || $_POST['action']=='download_received') { - if (strstr($key,'do_actions_') AND !$part) - { - $part=str_replace('do_actions_','',$key); - } + $part = 'received'; + } + elseif($_POST['action']=='delete_sent' || $_POST['action']=='download_sent') + { + $part = 'sent'; } // STEP 2: at least one file has to be selected. If not we return an error message foreach ($_POST as $key=>$value) { - if (strstr($key,$part.'_') AND $key!='view_received_category' AND $key!='view_sent_category') + if (strstr($value,$part.'_') AND $key!='view_received_category' AND $key!='view_sent_category') { $checked_files=true; - $checked_file_ids[]=$value; + $checked_file_ids[]=intval(substr($value,strrpos($value,'_'))); } } - if (!$checked_files) + $checked_file_ids = $_POST['id']; + + if (!is_array($checked_file_ids) || count($checked_file_ids)==0) { return get_lang('CheckAtLeastOneFile'); } // STEP 3A: deleting - if ($_POST['actions']=='delete') + if ($_POST['action']=='delete_received' || $_POST['action']=='delete_sent') { $dropboxfile=new Dropbox_Person( $_user['user_id'], $is_courseAdmin, $is_courseTutor); foreach ($checked_file_ids as $key=>$value) @@ -103,7 +106,7 @@ function handle_multiple_actions() } // STEP 3D: downloading - if ($_POST['actions']=='download') + if ($_POST['action']=='download_sent' || $_POST['action']=='download_received') { zip_download($checked_file_ids); } @@ -184,7 +187,7 @@ function display_move_form($part, $id, $target=array()) $message.=''; } $message.= ''; - $message.=''; + $message.=''; $message.=''; Display :: display_normal_message($message,false); } @@ -1067,7 +1070,7 @@ function feedback_form() $number_users_who_see_file=mysql_num_rows($result); if ($number_users_who_see_file>1) { - $return .= '
'; + $return .= '
'; } else { diff --git a/main/dropbox/dropbox_init.inc.php b/main/dropbox/dropbox_init.inc.php index c73fd503fa..cb5cf90c64 100644 --- a/main/dropbox/dropbox_init.inc.php +++ b/main/dropbox/dropbox_init.inc.php @@ -268,23 +268,16 @@ else { header ('location: index.php?view='.$_GET['view'].'&error=Error'); } -if ($_POST['actions']=='download' and !$_POST['store_feedback']) +if (($_POST['action']=='download_received' || $_POST['action']=='download_sent') and !$_POST['store_feedback']) { - foreach ($_POST as $key=>$value) { - if (strstr($key,$part.'_')) - { - $checked_files=true; - $checked_file_ids[]=$value; - } - } - if ($checked_files==false) + $checked_file_ids = $_POST['id']; + if (!is_array($checked_file_ids) || count($checked_file_ids)==0) { header ('location: index.php?view='.$_GET['view'].'&error=CheckAtLeastOneFile'); exit; } else - { handle_multiple_actions(); exit; } diff --git a/main/dropbox/index.php b/main/dropbox/index.php index c0ef61a8fa..ed09967e25 100644 --- a/main/dropbox/index.php +++ b/main/dropbox/index.php @@ -228,14 +228,15 @@ if (($_GET['action']=='deletereceivedcategory' OR $_GET['action']=='deletesentca // *** Do an action on multiple files *** // only the download has is handled separately in dropbox_init_inc.php because this has to be done before the headers are sent // (which also happens in dropbox_init.inc.php -if ($_POST['do_actions_received'] OR $_POST['do_actions_sent']) + +if (!isset($_POST['feedback']) && $_POST['action'] == 'delete_received' OR $_POST['action'] == 'download_received' OR $_POST['action'] == 'delete_sent' OR $_POST['action'] == 'download_sent') { $display_message=handle_multiple_actions(); Display :: display_normal_message($display_message); } // *** Store Feedback *** -if ($_POST['store_feedback']) +if ($_POST['feedback']) { $display_message = store_feedback(); Display :: display_normal_message($display_message); @@ -313,9 +314,6 @@ if (!$_GET['view'] OR $_GET['view']=='received' OR $dropbox_cnf['sent_received_t echo "\"".get_lang('NewFolder')."\" ".get_lang('AddNewCategory')."\n"; - echo '
'; - - // object initialisation $dropbox_person = new Dropbox_Person( $_user['user_id'], $is_courseAdmin, $is_courseTutor); // note: are the $is_courseAdmin and $is_courseTutor parameters needed???? @@ -343,7 +341,7 @@ if (!$_GET['view'] OR $_GET['view']=='received' OR $dropbox_cnf['sent_received_t $dropbox_file_data=array(); if ($view_dropbox_category_received==$dropbox_file->category) // we only display the files that are in the category that we are in. { - $dropbox_file_data[]=display_file_checkbox($dropbox_file->id, 'received'); + $dropbox_file_data[]=$dropbox_file->id; // new icon if ($dropbox_file->last_upload_date > $last_access AND !in_array($dropbox_file->id,$_SESSION['_seen'][$_course['id']][TOOL_DROPBOX])) { @@ -408,19 +406,8 @@ if (!$_GET['view'] OR $_GET['view']=='received' OR $dropbox_cnf['sent_received_t // Displaying the table $additional_get_parameters=array('view'=>$_GET['view'], 'view_received_category'=>$_GET['view_received_category'],'view_sent_category'=>$_GET['view_sent_category']); - Display::display_sortable_table($column_header, $dropbox_data_recieved, $sorting_options, $paging_options, $additional_get_parameters); - if (empty($dropbox_data_recieved)) - { - //echo get_lang('NoFilesHere'); - } - else - { - echo ''.get_lang('SelectAll').' - '; - echo ''.get_lang('UnSelectAll').' '; - echo get_lang('WithSelected').': '; - display_action_options('received',$dropbox_received_category, $view_dropbox_category_received); - } - echo '
'; + Display::display_sortable_table($column_header, $dropbox_data_recieved, $sorting_options, $paging_options, $additional_get_parameters, array ('delete_received' => get_lang('Delete'),'download_received'=>get_lang('Download'))); + } @@ -456,7 +443,6 @@ if ($_GET['view']=='sent' OR $dropbox_cnf['sent_received_tabs']==false) echo "\"".get_lang('NewFolder')."\" ".get_lang('AddNewCategory')."\n"; //echo '
'; - echo ''; // object initialisation $dropbox_person = new Dropbox_Person( $_user['user_id'], $is_courseAdmin, $is_courseTutor); @@ -489,7 +475,7 @@ if ($_GET['view']=='sent' OR $dropbox_cnf['sent_received_tabs']==false) if ($view_dropbox_category_sent==$dropbox_file->category) { - $dropbox_file_data[]=display_file_checkbox($dropbox_file->id, 'sent'); ; + $dropbox_file_data[]=$dropbox_file->id; $dropbox_file_data[]=build_document_icon_tag('file',$dropbox_file->title); $dropbox_file_data[]=''.get_lang('Save').''.$dropbox_file->title.''; $dropbox_file_data[]=$dropbox_file->author; @@ -549,19 +535,8 @@ if ($_GET['view']=='sent' OR $dropbox_cnf['sent_received_tabs']==false) // Displaying the table $additional_get_parameters=array('view'=>$_GET['view'], 'view_received_category'=>$_GET['view_received_category'],'view_sent_category'=>$_GET['view_sent_category']); - Display::display_sortable_table($column_header, $dropbox_data_sent, $sorting_options, $paging_options, $additional_get_parameters); - if (empty($dropbox_data_sent)) - { - //echo get_lang('NoFilesHere'); - } - else - { - echo ''.get_lang('SelectAll').' - '; - echo ''.get_lang('UnSelectAll').' '; - echo get_lang('WithSelected').': '; - display_action_options('sent',$dropbox_sent_category, $view_dropbox_category_sent); - } - echo '
'; + Display::display_sortable_table($column_header, $dropbox_data_sent, $sorting_options, $paging_options, $additional_get_parameters, array ('delete_received' => get_lang('Delete'),'download_received'=>get_lang('Download'))); + } diff --git a/main/inc/lib/display.lib.php b/main/inc/lib/display.lib.php index 53ee2c9bca..9fe67b4dea 100644 --- a/main/inc/lib/display.lib.php +++ b/main/inc/lib/display.lib.php @@ -276,7 +276,7 @@ class Display { * @param array $query_vars Additional variables to add in the query-string * @author bart.mollet@hogent.be */ - function display_sortable_table($header, $content, $sorting_options = array (), $paging_options = array (), $query_vars = null) + function display_sortable_table($header, $content, $sorting_options = array (), $paging_options = array (), $query_vars = null, $form_actions=array()) { global $origin; $column = isset ($sorting_options['column']) ? $sorting_options['column'] : 0; @@ -289,6 +289,7 @@ class Display { { $table->set_header($index, $header_item[0], $header_item[1], $header_item[2], $header_item[3]); } + $table->set_form_actions($form_actions); $table->display(); } /** diff --git a/plugin/messages/new_message.php b/plugin/messages/new_message.php index 3b2dd75906..2a2b95102d 100755 --- a/plugin/messages/new_message.php +++ b/plugin/messages/new_message.php @@ -1,4 +1,4 @@ -