[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Phpgroupware-cvs] [18589] feature: move file or folder
From: |
Pascal Vilarem |
Subject: |
[Phpgroupware-cvs] [18589] feature: move file or folder |
Date: |
Tue, 03 Jun 2008 12:23:25 +0000 |
Revision: 18589
http://svn.sv.gnu.org/viewvc/?view=rev&root=phpgroupware&revision=18589
Author: maat
Date: 2008-06-03 12:23:24 +0000 (Tue, 03 Jun 2008)
Log Message:
-----------
feature: move file or folder
Modified Paths:
--------------
trunk/ged/inc/class.ged_dm.inc.php
trunk/ged/inc/class.ged_ui.inc.php
trunk/ged/templates/base/browse.tpl
Added Paths:
-----------
trunk/ged/templates/base/move_element.tpl
Modified: trunk/ged/inc/class.ged_dm.inc.php
===================================================================
--- trunk/ged/inc/class.ged_dm.inc.php 2008-06-03 12:22:18 UTC (rev 18588)
+++ trunk/ged/inc/class.ged_dm.inc.php 2008-06-03 12:23:24 UTC (rev 18589)
@@ -362,6 +362,28 @@
}
+ function move_element($element_id,$new_parent_id)
+ {
+ $element_info=$this->get_element_info($element_id);
+ $new_parent_info=$this->get_element_info($new_parent_id);
+
+ $sql="UPDATE ".$this->tables['elements']." SET ";
+ $sql.="parent_id='".$new_parent_id."' ";
+ $sql.="WHERE element_id=".$element_id;
+
+ $this->db->query($sql, __LINE__, __FILE__);
+ $this->db->unlock();
+
+ if ( $new_parent_id == 0)
+ {
+ $new_parent_info['project_root']=null;
+ }
+
+ if ( $element_info['project_root'] !=
$new_parent_info['project_root'] )
+ {
+ $this->set_project ($element_id,
$new_parent_info['project_name'], $new_parent_info['project_root']);
+ }
+ }
function delete_element ( $element_id )
{
$element_info=$this->get_element_info($element_id);
@@ -1614,7 +1636,7 @@
}
// DONE acl management
- function list_elements($parent_id=0, $type='', $order='name')
+ function list_elements($parent_id=0, $type='', $order='name',
$criteria='readable')
{
if ( ! $this->can_read($parent_id))
@@ -1646,7 +1668,10 @@
}
elseif ( $the_element_type == "folder" )
{
- $go=true;
+ if (($criteria == 'writable' &&
$this->can_write($the_element_id)) || $criteria == 'readable')
+ {
+ $go=true;
+ }
}
elseif ( $the_element_type == "file" )
{
@@ -1702,9 +1727,9 @@
}
- function list_sub_folders ( $element_id )
+ function list_sub_folders ( $element_id, $criteria='readable' )
{
- return( $this->list_elements($element_id, 'folder'));
+ return( $this->list_elements($element_id, 'folder', 'name',
$criteria));
}
function list_versions($element_id)
Modified: trunk/ged/inc/class.ged_ui.inc.php
===================================================================
--- trunk/ged/inc/class.ged_ui.inc.php 2008-06-03 12:22:18 UTC (rev 18588)
+++ trunk/ged/inc/class.ged_ui.inc.php 2008-06-03 12:23:24 UTC (rev 18589)
@@ -31,11 +31,13 @@
'browse'=>true,
'add_file'=>true,
'add_folder'=>true,
- 'update_folder'=>true,
+ 'update_folder'=>true,
+ 'move_folder' => true,
'delete_folder'=>true,
'download'=>true,
'package_download' => true,
- 'view'=>true,
+ 'view'=>true,
+ 'move_file'=>true,
'delete_file'=>true,
'change_acl'=>true,
'search' => true,
@@ -48,8 +50,8 @@
var $icons;
/* TODO document my code in English :P */
+
/* Constructor method called when ged_ui object is created */
-
function ged_ui()
{
//$this->theme = $GLOBALS['phpgw_info']['theme'];
@@ -64,7 +66,6 @@
//$this->users=$this->acct->get_list('accounts');
//_debug_array($this->users);
-
$this->ged_dm=CreateObject('ged.ged_dm', True);
$this->categories=CreateObject('phpgwapi.categories');
$this->browser=CreateObject('phpgwapi.browser');
@@ -77,7 +78,6 @@
}
$GLOBALS['phpgw']->css->validate_file('default','ged');
-
//TODO Move this to a function, maybe an api mime class ?
$this->icons["txt"]="txt";
$this->icons["doc"]="word";
@@ -216,6 +216,7 @@
$this->t->set_var('lang_update_file', lang('Update file'));
$this->t->set_var('lang_update_folder', lang('Update folder'));
$this->t->set_var('lang_confirm_deletion', lang('Confirm
deletion'));
+ $this->t->set_var('lang_confirm_move', lang('Confirm move'));
$this->t->set_var('lang_informations', 'Informations');
$this->t->set_var('lang_versions', 'Versions');
@@ -1038,6 +1039,14 @@
$link_data['element_id']=$focused_id;
$delete_file_url=$GLOBALS['phpgw']->link('/index.php', $link_data);
$this->t->set_var('delete_file', "<a
href=\"".$delete_file_url."\">".lang('Delete file')."</a>");
+
+ $link_data=array
+ (
+ 'menuaction' =>
'ged.ged_ui.move_file',
+ 'element_id' => $focused_id
+ );
+
$delete_file_url=$GLOBALS['phpgw']->link('/index.php', $link_data);
+ $this->t->set_var('move_file', "<a
href=\"".$delete_file_url."\">".lang('move file')."</a>");
}
break;
@@ -1088,6 +1097,14 @@
$link_data['element_id']=$focused_id;
$delete_folder_url=$GLOBALS['phpgw']->link('/index.php', $link_data);
$this->t->set_var('delete_folder', "<a
href=\"".$delete_folder_url."\">".lang('Delete folder')."</a>");
+
+ $link_data=array
+ (
+ 'menuaction' =>
'ged.ged_ui.move_folder',
+ 'element_id' => $focused_id
+ );
+
$delete_file_url=$GLOBALS['phpgw']->link('/index.php', $link_data);
+ $this->t->set_var('move_folder', "<a
href=\"".$delete_file_url."\">".lang('move folder')."</a>");
}
break;
@@ -1246,7 +1263,12 @@
$this->t->pfp('out', 'add_file_tpl');
}
-
+
+ function move_file()
+ {
+ $this->move_element();
+ }
+
function delete_file()
{
@@ -1479,6 +1501,134 @@
}
+ function move_folder()
+ {
+ $this->move_element();
+ }
+
+ function gen_subfolder_select ( $element_id, $field_name,
$selected_element_id='', $get_root=false, $recursion_level=0)
+ {
+ if ( isset( $this->cached_gen_subfolders[$element_id]))
+ {
+
$my_sub_folders=$this->cached_gen_subfolders[$element_id];
+ }
+ else
+ {
+
$my_sub_folders=$this->ged_dm->list_sub_folders($element_id,'writable');
+
$this->cached_gen_subfolder[$element_id]=$my_sub_folders;
+ }
+
+ if ( $recursion_level == 0)
+ {
+ $select_sub_folders_html="<select
name=\"".$field_name."\">\n";
+ }
+ else
+ {
+ $select_sub_folders_html="";
+ }
+
+ if ( $get_root )
+ {
+
$element_info=$this->ged_dm->get_element_info($element_id);
+
+ $selected="";
+ if ( $element_id == $selected_element_id)
+ {
+ $selected="selected ";
+ }
+ $project_style="style=\"font-weight:bold;\"";
+
+ $select_sub_folders_html.="<option ".$project_style."
value=\"".$element_id."\" $selected>".$element_info['name']."</option>\n";
+ $recursion_level=1;
+ }
+
+ $indent=str_repeat(" ", $recursion_level*4)."-";
+
+ foreach ( $my_sub_folders as $my_sub_folder )
+ {
+ $selected="";
+ if ( $my_sub_folder['element_id'] ==
$selected_element_id)
+ {
+ $selected="selected ";
+ }
+
+ $project_style="";
+ if ( $my_sub_folder['element_id'] ==
$my_sub_folder['project_root'])
+ {
+ $project_style="style=\"font-weight:bold;\"";
+ }
+
+ $select_sub_folders_html.="<option ".$project_style."
value=\"".$my_sub_folder['element_id']."\"
$selected>".$indent.$my_sub_folder['name']."</option>\n";
+
+ $select_sub_folders_html.=$this->gen_subfolder_select (
$my_sub_folder['element_id'], $field_name, $selected_element_id, false,
$recursion_level+1);
+ }
+
+ if ( $recursion_level == 0)
+ {
+ $select_sub_folders_html.="</select>\n";
+ }
+
+ return ( $select_sub_folders_html );
+ }
+
+ function move_element()
+ {
+ $element_id=$this->get_var('element_id', array('GET', 'POST'));
+ $move=$this->get_var('move', array('GET', 'POST'));
+ $destination=$this->get_var('destination', array('GET',
'POST'));
+
+ $element_info=$this->ged_dm->get_element_info($element_id);
+ $parent_id=$element_info['parent_id'];
+ $project_root_id=$element_info['project_root'];
+
+ // Access control
+ if ( ! $this->ged_dm->can_delete($element_id) || $element_id==0
)
+ {
+ $link_data=array
+ (
+ 'menuaction' => 'ged.ged_ui.browse',
+ 'focused_id' => $element_id
+ );
+ $GLOBALS['phpgw']->redirect_link('/index.php',
$link_data);
+ }
+
+ // Confirmation and action
+ if ($move==lang('Confirm move') )
+ {
+
$parent_id=$this->ged_dm->move_element($element_id,$destination);
+
+ $link_data=array
+ (
+ 'menuaction' => 'ged.ged_ui.browse',
+ 'focused_id' => $element_id
+ );
+ $GLOBALS['phpgw']->redirect_link('/index.php',
$link_data);
+ }
+
+ // Display form
+
+ $this->set_template_defaults();
+ $this->display_app_header();
+
+
$this->t->set_file(array('move_element_tpl'=>'move_element.tpl'));
+
+ $this->t->set_var('element_name', $element_info['name']);
+ $this->t->set_var('element_type', lang($element_info['type']));
+ $this->t->set_var('element_id_value', $element_id);
+ $this->t->set_var('confirm_move_field', 'move');
+ $this->t->set_var('confirm_move_value', lang('Confirm move'));
+
+ // TODO : Select box of possible destinations
+ if ( $this->ged_dm->admin )
+ {
+ $project_root_id=0;
+ }
+ $this->t->set_var('select',
$this->gen_subfolder_select($project_root_id,"destination", $destination,
true));
+
+ $this->t->pfp('out', 'move_element_tpl');
+
+ }
+
// DONE : gerer la confirmation
// TODO : Afficher quelques details... nom etc.
function delete_folder()
Modified: trunk/ged/templates/base/browse.tpl
===================================================================
--- trunk/ged/templates/base/browse.tpl 2008-06-03 12:22:18 UTC (rev 18588)
+++ trunk/ged/templates/base/browse.tpl 2008-06-03 12:23:24 UTC (rev 18589)
@@ -1,4 +1,4 @@
-<div id="ged_top_menu">{top_link} {up_link} {update_folder} {add_folder}
{delete_folder} {add_file} {edit_file} {update_file} {lock_file} <!-- BEGIN
flow_actions_list --><a href="{flow_do_link}">{flow_do}</a> <!-- END
flow_actions_list --> {delete_file} {change_acl} {search} {stats} {chrono}
{dico}</div>
+<div id="ged_top_menu">{top_link} {up_link} {update_folder} {add_folder}
{move_folder} {delete_folder} {add_file} {edit_file} {update_file} {lock_file}
<!-- BEGIN flow_actions_list --><a
href="{flow_do_link}">{flow_do}</a> <!-- END flow_actions_list -->
{move_file} {delete_file} {change_acl} {search} {stats} {chrono} {dico}</div>
<br/>
<div id="ged_info">
{main_content}
Added: trunk/ged/templates/base/move_element.tpl
===================================================================
--- trunk/ged/templates/base/move_element.tpl (rev 0)
+++ trunk/ged/templates/base/move_element.tpl 2008-06-03 12:23:24 UTC (rev
18589)
@@ -0,0 +1,9 @@
+<h1>{lang_confirm_move} ?</h1>
+
+<h2>{element_type} : {element_name}</h2>
+
+<form method="POST">
+{lang_move_to} : {select}
+<input type="hidden" name="{element_id_field}" value="{element_id_value}">
+<input type="submit" name="{confirm_move_field}" value="{confirm_move_value}">
+</form>
\ No newline at end of file
Property changes on: trunk/ged/templates/base/move_element.tpl
___________________________________________________________________
Name: svn:mime-type
+ text/plain
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Phpgroupware-cvs] [18589] feature: move file or folder,
Pascal Vilarem <=