added file addition and file editing feature in the file show view
enhanced the file home view to show a file entry without actual upload files. updated the wiki show view not to use the colum-count css element when the count is 1
This commit is contained in:
parent
798ff45888
commit
65b0e818cc
@ -404,7 +404,7 @@ class File extends Controller
|
||||
if (strpos($_FILES[$fid]['name'], ':') !== FALSE ||
|
||||
strpos($_FILES[$fid]['name'], '/') !== FALSE)
|
||||
{
|
||||
/* for wiki */
|
||||
// prevents these letters for wiki creole
|
||||
$status = "error - colon or slash not allowed - {$_FILES[$fid]['name']}";
|
||||
break;
|
||||
}
|
||||
@ -435,6 +435,172 @@ class File extends Controller
|
||||
print $status;
|
||||
}
|
||||
|
||||
function xhr_add_file ($projectid = '', $name = '')
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
$this->load->model ('FileModel', 'files');
|
||||
$this->load->library ('upload');
|
||||
|
||||
$login = $this->login->getUser ();
|
||||
$revision_saved = -1;
|
||||
|
||||
if ($login['id'] == '')
|
||||
{
|
||||
$status = 'error - anonymous user';
|
||||
}
|
||||
else
|
||||
{
|
||||
$name = $this->converter->HexToAscii ($name);
|
||||
|
||||
$project = $this->projects->get ($projectid);
|
||||
if ($project === FALSE)
|
||||
{
|
||||
$status = "error - failed to get the project {$projectid}";
|
||||
}
|
||||
else if ($project === NULL)
|
||||
{
|
||||
$status = "error - no such project {$projectid}";
|
||||
}
|
||||
else if (!$login['sysadmin?'] &&
|
||||
$this->projects->projectHasMember($projectid, $login['id']) === FALSE)
|
||||
{
|
||||
$status = "error - not a member {$login['id']}";
|
||||
}
|
||||
else
|
||||
{
|
||||
$post_add_file_count = $this->input->post('file_add_file_count');
|
||||
if ($post_add_file_count === FALSE || $post_add_file_count <= 0) $post_add_file_count = 0;
|
||||
|
||||
$status = '';
|
||||
$add_files = array ();
|
||||
for ($i = 0; $i < $post_add_file_count; $i++)
|
||||
{
|
||||
$fid = "file_add_file_{$i}";
|
||||
if (array_key_exists($fid, $_FILES) && $_FILES[$fid]['name'] != '')
|
||||
{
|
||||
$d = $this->input->post("file_add_file_desc_{$i}");
|
||||
if ($d === FALSE || ($d = trim($d)) == '')
|
||||
{
|
||||
$status = "error - no short description for {$_FILES[$fid]['name']}";
|
||||
break;
|
||||
}
|
||||
|
||||
if (strpos($_FILES[$fid]['name'], ':') !== FALSE ||
|
||||
strpos($_FILES[$fid]['name'], '/') !== FALSE)
|
||||
{
|
||||
// prevents these letters for wiki creole
|
||||
$status = "error - colon or slash not allowed - {$_FILES[$fid]['name']}";
|
||||
break;
|
||||
}
|
||||
|
||||
array_push ($add_files, array ('fid' => $fid, 'name' => $_FILES[$fid]['name'], 'desc' => $d));
|
||||
}
|
||||
}
|
||||
|
||||
if ($status == '')
|
||||
{
|
||||
if (count($add_files) <= 0)
|
||||
{
|
||||
$status = 'error - no files uploaded';
|
||||
}
|
||||
else if ($this->files->addFiles ($login['id'], $projectid, $name, $add_files, $this->upload) === FALSE)
|
||||
{
|
||||
$status = 'error - ' . $this->files->getErrorMessage();
|
||||
}
|
||||
else
|
||||
{
|
||||
$status = 'ok';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print $status;
|
||||
}
|
||||
|
||||
function xhr_edit_file ($projectid = '', $name = '')
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
$this->load->model ('FileModel', 'files');
|
||||
|
||||
$login = $this->login->getUser ();
|
||||
$revision_saved = -1;
|
||||
|
||||
if ($login['id'] == '')
|
||||
{
|
||||
$status = 'error - anonymous user';
|
||||
}
|
||||
else
|
||||
{
|
||||
$name = $this->converter->HexToAscii ($name);
|
||||
|
||||
$project = $this->projects->get ($projectid);
|
||||
if ($project === FALSE)
|
||||
{
|
||||
$status = "error - failed to get the project {$projectid}";
|
||||
}
|
||||
else if ($project === NULL)
|
||||
{
|
||||
$status = "error - no such project {$projectid}";
|
||||
}
|
||||
else if (!$login['sysadmin?'] &&
|
||||
$this->projects->projectHasMember($projectid, $login['id']) === FALSE)
|
||||
{
|
||||
$status = "error - not a member {$login['id']}";
|
||||
}
|
||||
else
|
||||
{
|
||||
$post_edit_file_count = $this->input->post('file_edit_file_count');
|
||||
if ($post_edit_file_count === FALSE || $post_edit_file_count <= 0) $post_edit_file_count = 0;
|
||||
|
||||
$status = '';
|
||||
$edit_files = array ();
|
||||
for ($i = 0; $i < $post_edit_file_count; $i++)
|
||||
{
|
||||
$n = $this->input->post("file_edit_file_name_{$i}");
|
||||
$k = $this->input->post("file_edit_file_kill_{$i}");
|
||||
$d = $this->input->post("file_edit_file_desc_{$i}");
|
||||
|
||||
if ($n != '')
|
||||
{
|
||||
if ($k == 'yes')
|
||||
{
|
||||
array_push ($edit_files, array ('name' => $n, 'kill' => $k));
|
||||
}
|
||||
else if ($d !== FALSE)
|
||||
{
|
||||
if (($d = trim($d)) == '')
|
||||
{
|
||||
$status = "error - no short description for {$n}";
|
||||
break;
|
||||
}
|
||||
|
||||
array_push ($edit_files, array ('name' => $n, 'desc' => $d));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($status == '')
|
||||
{
|
||||
if (count($edit_files) <= 0)
|
||||
{
|
||||
//$status = 'error - no input avaialble';
|
||||
$status = 'ok';
|
||||
}
|
||||
else if ($this->files->editFiles ($login['id'], $projectid, $name, $edit_files) === FALSE)
|
||||
{
|
||||
$status = 'error - ' . $this->files->getErrorMessage();
|
||||
}
|
||||
else
|
||||
{
|
||||
$status = 'ok';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print $status;
|
||||
}
|
||||
|
||||
function xhr_delete ($projectid = '', $name = '')
|
||||
{
|
||||
|
@ -139,7 +139,6 @@ class FileModel extends Model
|
||||
{
|
||||
$this->db->trans_start ();
|
||||
|
||||
/*
|
||||
$this->db->where ('projectid', $projectid);
|
||||
$this->db->where ('name', $name);
|
||||
$this->db->set ('name', $file->name);
|
||||
@ -149,7 +148,9 @@ class FileModel extends Model
|
||||
$this->db->set ('updatedby', $userid);
|
||||
$this->db->update ('file');
|
||||
// file_list gets updated for the schema itself (reference/trigger)
|
||||
*/
|
||||
/*
|
||||
// this way of updating is bad in that it won't update info
|
||||
// if there is no file items in file_list for the target file.
|
||||
$this->db->where ('f.projectid', $projectid);
|
||||
$this->db->where ('f.name', $name);
|
||||
$this->db->where ('f.projectid = fl.projectid');
|
||||
@ -161,6 +162,7 @@ class FileModel extends Model
|
||||
$this->db->set ('f.updatedby', $userid);
|
||||
$this->db->set ('fl.name', $file->name);
|
||||
$this->db->update ('file as f, file_list as fl');
|
||||
*/
|
||||
|
||||
$this->db->set ('createdon', date('Y-m-d H:i:s'));
|
||||
$this->db->set ('type', 'file');
|
||||
@ -366,6 +368,178 @@ class FileModel extends Model
|
||||
restore_error_handler ();
|
||||
return $x;
|
||||
}
|
||||
|
||||
private function _add_files ($userid, $projectid, $name, $import_files, $uploader)
|
||||
{
|
||||
$this->db->trans_begin (); // manual transaction. not using trans_start().
|
||||
|
||||
$config['allowed_types'] = '*';
|
||||
$config['upload_path'] = CODEPOT_FILE_DIR;
|
||||
$config['max_size'] = CODEPOT_MAX_UPLOAD_SIZE;
|
||||
$config['encrypt_name'] = TRUE;
|
||||
$config['overwrite'] = FALSE;
|
||||
$config['remove_spaces'] = FALSE;
|
||||
$uploader->initialize ($config);
|
||||
|
||||
$ok_files = array();
|
||||
$file_count = count($import_files);
|
||||
for ($i = 0; $i < $file_count; $i++)
|
||||
{
|
||||
$f = $import_files[$i];
|
||||
if (!$uploader->do_upload($f['fid']))
|
||||
{
|
||||
$this->errmsg = "Failed to upload {$f['name']}";
|
||||
$this->db->trans_rollback ();
|
||||
$this->delete_all_files ($ok_files);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$ud = $uploader->data();
|
||||
array_push ($ok_files, $ud['full_path']);
|
||||
|
||||
$md5sum = @md5_file ($ud['full_path']);
|
||||
if ($md5sum === FALSE)
|
||||
{
|
||||
$this->db->trans_rollback ();
|
||||
$this->delete_all_files ($ok_files);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$this->db->set ('projectid', $projectid);
|
||||
$this->db->set ('name', $name);
|
||||
$this->db->set ('filename', $f['name']);
|
||||
$this->db->set ('encname', $ud['file_name']);
|
||||
|
||||
$this->db->set ('md5sum', $md5sum);
|
||||
$this->db->set ('description', $f['desc']);
|
||||
$this->db->insert ('file_list');
|
||||
if ($this->db->trans_status() === FALSE)
|
||||
{
|
||||
$this->errmsg = $this->db->_error_message();
|
||||
$this->db->trans_rollback ();
|
||||
$this->delete_all_files ($ok_files);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->set ('createdon', date('Y-m-d H:i:s'));
|
||||
$this->db->set ('type', 'file');
|
||||
$this->db->set ('action', 'update');
|
||||
$this->db->set ('projectid', $projectid);
|
||||
$this->db->set ('userid', $userid);
|
||||
$this->db->set ('message', $name);
|
||||
$this->db->insert ('log');
|
||||
|
||||
if ($this->db->trans_status() === FALSE)
|
||||
{
|
||||
$this->errmsg = $this->db->_error_message();
|
||||
$this->db->trans_rollback ();
|
||||
$this->delete_all_files ($ok_files);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$this->db->trans_commit ();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
function addFiles ($userid, $projectid, $name, $import_files, $uploader)
|
||||
{
|
||||
set_error_handler (array ($this, 'capture_error'));
|
||||
$errmsg = '';
|
||||
$x = $this->_add_files ($userid, $projectid, $name, $import_files, $uploader);
|
||||
restore_error_handler ();
|
||||
return $x;
|
||||
}
|
||||
|
||||
private function _edit_files ($userid, $projectid, $name, $edit_files)
|
||||
{
|
||||
$this->db->trans_begin (); // manual transaction. not using trans_start().
|
||||
|
||||
$kill_files = array();
|
||||
$file_count = count($edit_files);
|
||||
for ($i = 0; $i < $file_count; $i++)
|
||||
{
|
||||
$f = $edit_files[$i];
|
||||
|
||||
if (array_key_exists('kill', $f))
|
||||
{
|
||||
$this->db->where ('projectid', $projectid);
|
||||
$this->db->where ('name', $name);
|
||||
$this->db->where ('filename', $f['name']);
|
||||
$this->db->select ('encname');
|
||||
$query = $this->db->get('file_list');
|
||||
if ($this->db->trans_status() === FALSE)
|
||||
{
|
||||
$this->errmsg = $this->db->_error_message();
|
||||
$this->db->trans_rollback ();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$result = $query->result ();
|
||||
if (empty($result))
|
||||
{
|
||||
$this->errmsg = "no such file - {$f['name']}";
|
||||
$this->db->trans_rollback ();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
array_push ($kill_files, CODEPOT_FILE_DIR . '/' . $result[0]->encname);
|
||||
|
||||
$this->db->where ('projectid', $projectid);
|
||||
$this->db->where ('name', $name);
|
||||
$this->db->where ('filename', $f['name']);
|
||||
$query = $this->db->delete('file_list');
|
||||
if ($this->db->trans_status() === FALSE)
|
||||
{
|
||||
$this->errmsg = $this->db->_error_message();
|
||||
$this->db->trans_rollback ();
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
else if (array_key_exists('desc', $f))
|
||||
{
|
||||
$this->db->where ('projectid', $projectid);
|
||||
$this->db->where ('name', $name);
|
||||
$this->db->where ('filename', $f['name']);
|
||||
$this->db->set ('description', $f['desc']);
|
||||
$this->db->update ('file_list');
|
||||
if ($this->db->trans_status() === FALSE)
|
||||
{
|
||||
$this->errmsg = $this->db->_error_message();
|
||||
$this->db->trans_rollback ();
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$this->db->set ('createdon', date('Y-m-d H:i:s'));
|
||||
$this->db->set ('type', 'file');
|
||||
$this->db->set ('action', 'update');
|
||||
$this->db->set ('projectid', $projectid);
|
||||
$this->db->set ('userid', $userid);
|
||||
$this->db->set ('message', $name);
|
||||
$this->db->insert ('log');
|
||||
|
||||
if ($this->db->trans_status() === FALSE)
|
||||
{
|
||||
$this->errmsg = $this->db->_error_message();
|
||||
$this->db->trans_rollback ();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
$this->delete_all_files ($kill_files);
|
||||
$this->db->trans_commit ();
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
function editFiles ($userid, $projectid, $name, $edit_files)
|
||||
{
|
||||
set_error_handler (array ($this, 'capture_error'));
|
||||
$errmsg = '';
|
||||
$x = $this->_edit_files ($userid, $projectid, $name, $edit_files);
|
||||
restore_error_handler ();
|
||||
return $x;
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
@ -53,7 +53,6 @@ function render_wiki(input_text)
|
||||
prettyPrint ();
|
||||
}
|
||||
|
||||
var new_item_no = 0;
|
||||
var import_in_progress = false;
|
||||
var populated_file_obj = [];
|
||||
var populated_file_max = 0;
|
||||
@ -108,8 +107,6 @@ $(function () {
|
||||
|
||||
<?php if (isset($login['id']) && $login['id'] != ''): ?>
|
||||
|
||||
new_item_no = 0;
|
||||
|
||||
$('#file_home_mainarea_new_files').change (function () {
|
||||
populate_selected_files ();
|
||||
});
|
||||
@ -344,15 +341,12 @@ else
|
||||
|
||||
$file_list_count = count($file->file_list);
|
||||
|
||||
for ($i = 0; $i < $file_list_count; $i++)
|
||||
if ($file_list_count <= 0)
|
||||
{
|
||||
print "<tr class='{$rowclass}'>";
|
||||
|
||||
$f = $file->file_list[$i];
|
||||
$xname = $this->converter->AsciiToHex ($f->filename);
|
||||
|
||||
print '<td>';
|
||||
if ($i == 0 && $file->tag != $oldtag)
|
||||
if ($file->tag != $oldtag)
|
||||
{
|
||||
print htmlspecialchars($file->tag);
|
||||
$oldtag = $file->tag;
|
||||
@ -360,23 +354,51 @@ else
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
if ($i == 0) print anchor ("file/show/{$project->id}/{$hexname}", htmlspecialchars($file->name));
|
||||
print anchor ("file/show/{$project->id}/{$hexname}", htmlspecialchars($file->name));
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
print anchor ("file/get/{$project->id}/{$xname}", $f->filename);
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
print htmlspecialchars($f->description);
|
||||
print '</td>';
|
||||
|
||||
print '<td><tt>';
|
||||
print $f->md5sum;
|
||||
print '</tt></td>';
|
||||
print '<td></td>';
|
||||
print '<td></td>';
|
||||
print '<td></td>';
|
||||
|
||||
print '</tr>';
|
||||
}
|
||||
else
|
||||
{
|
||||
for ($i = 0; $i < $file_list_count; $i++)
|
||||
{
|
||||
print "<tr class='{$rowclass}'>";
|
||||
|
||||
$f = $file->file_list[$i];
|
||||
$xname = $this->converter->AsciiToHex ($f->filename);
|
||||
|
||||
print '<td>';
|
||||
if ($i == 0 && $file->tag != $oldtag)
|
||||
{
|
||||
print htmlspecialchars($file->tag);
|
||||
$oldtag = $file->tag;
|
||||
}
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
if ($i == 0) print anchor ("file/show/{$project->id}/{$hexname}", htmlspecialchars($file->name));
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
print anchor ("file/get/{$project->id}/{$xname}", htmlspecialchars($f->filename));
|
||||
print '</td>';
|
||||
|
||||
print '<td>';
|
||||
print htmlspecialchars($f->description);
|
||||
print '</td>';
|
||||
|
||||
print '<td><tt>';
|
||||
print $f->md5sum;
|
||||
print '</tt></td>';
|
||||
|
||||
print '</tr>';
|
||||
}
|
||||
}
|
||||
}
|
||||
print '</table>';
|
||||
}
|
||||
@ -406,9 +428,7 @@ else
|
||||
</div>
|
||||
<div id='file_home_mainarea_new_description_preview' class='form_input_preview'>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
|
@ -1,4 +1,6 @@
|
||||
<html>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
|
||||
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
||||
@ -23,6 +25,7 @@
|
||||
|
||||
<?php
|
||||
$hexname = $this->converter->AsciiToHex ($file->name);
|
||||
$file_count = count ($file->file_list);
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
@ -54,7 +57,100 @@ function render_wiki()
|
||||
prettyPrint ();
|
||||
}
|
||||
|
||||
var populated_file_obj_for_adding = [];
|
||||
var populated_file_max_for_adding = 0;
|
||||
|
||||
function populate_selected_files_for_adding ()
|
||||
{
|
||||
var file_desc = {};
|
||||
for (var n = 0; n < populated_file_max_for_adding; n++)
|
||||
{
|
||||
var f = populated_file_obj_for_adding[n];
|
||||
if (f != null)
|
||||
{
|
||||
var d = $('#file_show_mainarea_add_file_desc_' + n);
|
||||
if (d != null) file_desc[f.name] = d.val();
|
||||
}
|
||||
}
|
||||
|
||||
$('#file_show_mainarea_add_file_table').empty();
|
||||
populated_file_obj_for_adding = [];
|
||||
|
||||
var f = $('#file_show_mainarea_add_files').get(0);
|
||||
var f_no = 0;
|
||||
for (var n = 0; n < f.files.length; n++)
|
||||
{
|
||||
if (f.files[n] != null)
|
||||
{
|
||||
var desc = file_desc[f.files[n].name];
|
||||
if (desc == null) desc = '';
|
||||
|
||||
$('#file_show_mainarea_add_file_table').append (
|
||||
codepot_sprintf (
|
||||
'<tr id="file_show_mainarea_add_file_row_%d"><td><a href="#" id="file_show_mainarea_add_file_cancel_%d" onClick="cancel_out_add_file(%d); return false;"><i class="fa fa-trash"></i></a></td><td>%s</td><td><input type="text" id="file_show_mainarea_add_file_desc_%d" size="40" value="%s" /></td></tr>',
|
||||
f_no, f_no, f_no, codepot_htmlspecialchars(f.files[n].name), f_no, codepot_addslashes(desc)
|
||||
)
|
||||
);
|
||||
|
||||
populated_file_obj_for_adding[f_no] = f.files[n];
|
||||
f_no++;
|
||||
}
|
||||
}
|
||||
|
||||
populated_file_max_for_adding = f_no;
|
||||
}
|
||||
|
||||
|
||||
function cancel_out_add_file (no)
|
||||
{
|
||||
$('#file_show_mainarea_add_file_row_' + no).remove ();
|
||||
populated_file_obj_for_adding[no] = null;
|
||||
}
|
||||
|
||||
function kill_edit_file (no)
|
||||
{
|
||||
var n = $('#file_show_mainarea_edit_file_name_' + no);
|
||||
var d = $('#file_show_mainarea_edit_file_desc_' + no);
|
||||
if (n && d)
|
||||
{
|
||||
if (d.prop('disabled'))
|
||||
{
|
||||
n.css ('text-decoration', '');
|
||||
d.prop ('disabled', false);
|
||||
}
|
||||
else
|
||||
{
|
||||
n.css ('text-decoration', 'line-through');
|
||||
d.prop ('disabled', true);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
var delete_in_progress = false;
|
||||
var add_file_in_progress = false;
|
||||
var edit_file_in_progress = false;
|
||||
|
||||
var original_file_name = [<?php
|
||||
for ($i = 0; $i < $file_count; $i++)
|
||||
{
|
||||
$f = $file->file_list[$i];
|
||||
printf ("%s\t'%s'", (($i == 0)? '': ",\n"), addslashes($f->filename));
|
||||
}
|
||||
print "\n";
|
||||
?>
|
||||
];
|
||||
|
||||
var original_file_desc = [
|
||||
<?php
|
||||
for ($i = 0; $i < $file_count; $i++)
|
||||
{
|
||||
$f = $file->file_list[$i];
|
||||
printf ("%s\t'%s'", (($i == 0)? '': ",\n"), addslashes($f->description));
|
||||
}
|
||||
print "\n";
|
||||
?>
|
||||
];
|
||||
|
||||
$(function () {
|
||||
if ($("#file_show_mainarea_result_info").is(":visible"))
|
||||
@ -79,6 +175,11 @@ $(function () {
|
||||
}
|
||||
});
|
||||
|
||||
$('#file_show_mainarea_files').accordion({
|
||||
collapsible: true
|
||||
});
|
||||
|
||||
|
||||
<?php if (isset($login['id']) && $login['id'] != ''): ?>
|
||||
|
||||
$('#file_show_mainarea_delete_form_div').dialog (
|
||||
@ -155,13 +256,205 @@ $(function () {
|
||||
}
|
||||
);
|
||||
|
||||
$('#file_show_mainarea_add_files').change (function () {
|
||||
populate_selected_files_for_adding ();
|
||||
});
|
||||
|
||||
$('#file_show_mainarea_add_file_form_div').dialog (
|
||||
{
|
||||
title: '<?php print $this->lang->line('Add');?>',
|
||||
resizable: true,
|
||||
autoOpen: false,
|
||||
width: 'auto',
|
||||
height: 'auto',
|
||||
modal: true,
|
||||
buttons: {
|
||||
'<?php print $this->lang->line('OK')?>': function () {
|
||||
if (add_file_in_progress) return;
|
||||
|
||||
if (!!window.FormData)
|
||||
{
|
||||
// FormData is supported
|
||||
add_file_in_progress = true;
|
||||
|
||||
var form_data = new FormData();
|
||||
|
||||
var f_no = 0;
|
||||
for (var i = 0; i <= populated_file_max_for_adding; i++)
|
||||
{
|
||||
var f = populated_file_obj_for_adding[i];
|
||||
if (f != null)
|
||||
{
|
||||
form_data.append ('file_add_file_' + f_no, f);
|
||||
|
||||
var d = $('#file_show_mainarea_add_file_desc_' + i);
|
||||
if (d != null) form_data.append('file_add_file_desc_' + f_no, d.val());
|
||||
f_no++;
|
||||
}
|
||||
}
|
||||
form_data.append ('file_add_file_count', f_no);
|
||||
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('disable');
|
||||
$.ajax({
|
||||
url: codepot_merge_path('<?php print site_url() ?>', '<?php print "/file/xhr_add_file/{$project->id}/{$hexname}"; ?>'),
|
||||
type: 'POST',
|
||||
data: form_data,
|
||||
mimeType: 'multipart/form-data',
|
||||
contentType: false,
|
||||
processData: false,
|
||||
cache: false,
|
||||
|
||||
success: function (data, textStatus, jqXHR) {
|
||||
add_file_in_progress = false;
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('enable');
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('close');
|
||||
if (data == 'ok')
|
||||
{
|
||||
// refresh the page to the head revision
|
||||
$(location).attr ('href', codepot_merge_path('<?php print site_url(); ?>', '<?php print "/file/show/{$project->id}/{$hexname}"; ?>'));
|
||||
}
|
||||
else
|
||||
{
|
||||
show_alert ('<pre>' + codepot_htmlspecialchars(data) + '</pre>', "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
},
|
||||
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
add_file_in_progress = false;
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('enable');
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('close');
|
||||
show_alert ('Failed - ' + errorThrown, "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
show_alert ('<pre>NOT SUPPORTED</pre>', "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
},
|
||||
'<?php print $this->lang->line('Cancel')?>': function () {
|
||||
if (add_file_in_progress) return;
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('close');
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
beforeClose: function() {
|
||||
// if importing is in progress, prevent dialog closing
|
||||
return !add_file_in_progress;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog (
|
||||
{
|
||||
title: '<?php print $this->lang->line('Edit');?>',
|
||||
resizable: true,
|
||||
autoOpen: false,
|
||||
width: 'auto',
|
||||
height: 'auto',
|
||||
modal: true,
|
||||
buttons: {
|
||||
'<?php print $this->lang->line('OK')?>': function () {
|
||||
if (edit_file_in_progress) return;
|
||||
|
||||
if (!!window.FormData)
|
||||
{
|
||||
// FormData is supported
|
||||
edit_file_in_progress = true;
|
||||
|
||||
var form_data = new FormData();
|
||||
|
||||
var f_no = 0;
|
||||
for (var i = 0; i <= <?php print $file_count; ?>; i++)
|
||||
{
|
||||
var n = $('#file_show_mainarea_edit_file_name_' + i);
|
||||
var d = $('#file_show_mainarea_edit_file_desc_' + i);
|
||||
|
||||
if (n && d)
|
||||
{
|
||||
if (d.prop('disabled'))
|
||||
{
|
||||
form_data.append ('file_edit_file_name_' + f_no, original_file_name[i]);
|
||||
form_data.append('file_edit_file_kill_' + f_no, 'yes');
|
||||
f_no++;
|
||||
}
|
||||
else if (d.val() != original_file_desc[i])
|
||||
{
|
||||
form_data.append ('file_edit_file_name_' + f_no, original_file_name[i]);
|
||||
form_data.append('file_edit_file_desc_' + f_no, d.val());
|
||||
f_no++;
|
||||
}
|
||||
}
|
||||
}
|
||||
form_data.append ('file_edit_file_count', f_no);
|
||||
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('disable');
|
||||
$.ajax({
|
||||
url: codepot_merge_path('<?php print site_url() ?>', '<?php print "/file/xhr_edit_file/{$project->id}/{$hexname}"; ?>'),
|
||||
type: 'POST',
|
||||
data: form_data,
|
||||
mimeType: 'multipart/form-data',
|
||||
contentType: false,
|
||||
processData: false,
|
||||
cache: false,
|
||||
|
||||
success: function (data, textStatus, jqXHR) {
|
||||
edit_file_in_progress = false;
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('enable');
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('close');
|
||||
if (data == 'ok')
|
||||
{
|
||||
// refresh the page to the head revision
|
||||
$(location).attr ('href', codepot_merge_path('<?php print site_url(); ?>', '<?php print "/file/show/{$project->id}/{$hexname}"; ?>'));
|
||||
}
|
||||
else
|
||||
{
|
||||
show_alert ('<pre>' + codepot_htmlspecialchars(data) + '</pre>', "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
},
|
||||
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
edit_file_in_progress = false;
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('enable');
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('close');
|
||||
show_alert ('Failed - ' + errorThrown, "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
show_alert ('<pre>NOT SUPPORTED</pre>', "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
},
|
||||
'<?php print $this->lang->line('Cancel')?>': function () {
|
||||
if (edit_file_in_progress) return;
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('close');
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
beforeClose: function() {
|
||||
// if importing is in progress, prevent dialog closing
|
||||
return !edit_file_in_progress;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
$('#file_show_mainarea_delete_button').button().click (function() {
|
||||
$('#file_show_mainarea_delete_form_div').dialog('open');
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#file_show_mainarea_add_file_button').button ();
|
||||
$('#file_show_mainarea_delete_file_button').button ();
|
||||
$('#file_show_mainarea_add_file_button').button().click (function() {
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('open');
|
||||
return false;
|
||||
});
|
||||
|
||||
$('#file_show_mainarea_edit_file_button').button().click (function() {
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('open');
|
||||
return false;
|
||||
});
|
||||
<?php endif; ?>
|
||||
|
||||
render_wiki ();
|
||||
@ -216,6 +509,36 @@ $this->load->view (
|
||||
|
||||
<div id="file_show_mainarea_result">
|
||||
|
||||
<div id='file_show_mainarea_files' class='collapsible-box'>
|
||||
<div id='file_show_mainarea_files_header' class='collapsible-box-header'><?php print $this->lang->line('Files')?></div>
|
||||
|
||||
<div id='file_show_mainarea_files_body'>
|
||||
<?php if (isset($login['id']) && $login['id'] != ''): ?>
|
||||
<div>
|
||||
<a id="file_show_mainarea_add_file_button" href='#'><?php print $this->lang->line('Add')?></a>
|
||||
<a id="file_show_mainarea_edit_file_button" href='#'><?php print $this->lang->line('Edit')?></a>
|
||||
</div>
|
||||
<?php endif; ?>
|
||||
|
||||
<table>
|
||||
<?php
|
||||
for ($i = 0; $i < $file_count; $i++)
|
||||
{
|
||||
$f = $file->file_list[$i];
|
||||
|
||||
$xname = $this->converter->AsciiToHex($f->filename);
|
||||
print '<tr><td>';
|
||||
print anchor ("file/get/{$project->id}/{$xname}", htmlspecialchars($f->filename));
|
||||
print '</td><td>';
|
||||
print htmlspecialchars($f->description);
|
||||
print '</td><td>';
|
||||
print " <tt>{$f->md5sum}</tt>";
|
||||
print '</td></tr>';
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="result" id="file_show_mainarea_wiki">
|
||||
<pre id="file_show_mainarea_wiki_text" style="visibility: hidden">
|
||||
@ -223,38 +546,13 @@ $this->load->view (
|
||||
</pre>
|
||||
</div> <!-- file_show_mainarea_wiki -->
|
||||
|
||||
|
||||
<div id="file_show_mainarea_result_info" class="infobox">
|
||||
|
||||
<ul>
|
||||
<li><?php print $this->lang->line('Created on')?> <?php print $file->createdon ?></li>
|
||||
<li><?php print $this->lang->line('Created by')?> <?php print $file->createdby ?></li>
|
||||
<li><?php print $this->lang->line('Last updated on')?> <?php print $file->updatedon ?></li>
|
||||
<li><?php print $this->lang->line('Last updated by')?> <?php print $file->updatedby ?></li>
|
||||
</ul>
|
||||
|
||||
<div class="title"><?php print $this->lang->line('Files')?></div>
|
||||
<?php if (isset($login['id']) && $login['id'] != ''): ?>
|
||||
<!--
|
||||
<div>
|
||||
<a id="file_show_mainarea_add_file_button" href='#'><?php print $this->lang->line('Add')?></a>
|
||||
<a id="file_show_mainarea_delete_file_button" href='#'><?php print $this->lang->line('Delete')?></a>
|
||||
</div>
|
||||
-->
|
||||
<?php endif; ?>
|
||||
<ul>
|
||||
<?php
|
||||
foreach ($file->file_list as $f)
|
||||
{
|
||||
$xname = $this->converter->AsciiToHex($f->filename);
|
||||
print '<li>';
|
||||
print anchor ("file/get/{$project->id}/{$xname}", $f->filename);
|
||||
print " <tt>{$f->md5sum}</tt>";
|
||||
print '</li>';
|
||||
}
|
||||
?>
|
||||
</ul>
|
||||
|
||||
</div> <!-- file_show_mainarea_result_info -->
|
||||
|
||||
</div> <!-- file_show_mainarea_result -->
|
||||
@ -267,6 +565,31 @@ $this->load->view (
|
||||
<?php print $this->lang->line('MSG_SURE_TO_DELETE_THIS') . ' - ' . htmlspecialchars($file->name); ?>
|
||||
</div>
|
||||
|
||||
<div id='file_show_mainarea_add_file_form_div'>
|
||||
<div id='file_show_mainarea_add_file_input'>
|
||||
<input type='file' id='file_show_mainarea_add_files' name='file_show_add_files' multiple='' autocomplete='off' style='color: transparent;' />
|
||||
<table id='file_show_mainarea_add_file_table'></table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id='file_show_mainarea_edit_file_form_div'>
|
||||
<table>
|
||||
<?php
|
||||
for ($i = 0; $i < $file_count; $i++)
|
||||
{
|
||||
$f = $file->file_list[$i];
|
||||
print '<tr><td>';
|
||||
printf ('<a href="#" onClick="kill_edit_file(%d); return false;"><i class="fa fa-trash"></i></a>', $i);
|
||||
print '</td><td>';
|
||||
printf ('<span id="file_show_mainarea_edit_file_name_%d">%s</span>', $i, htmlspecialchars($f->filename));
|
||||
print '</td><td>';
|
||||
printf ('<input type="text" id="file_show_mainarea_edit_file_desc_%d" value="%s" size="40" autocomplete="off" />', $i, addslashes($f->description));
|
||||
print '</td></tr>';
|
||||
}
|
||||
?>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<?php endif; ?>
|
||||
|
||||
<div id='file_show_mainarea_alert'></div>
|
||||
|
@ -261,7 +261,7 @@ $this->load->view (
|
||||
$trimmed = $this->lang->line('Issue') . " {$log['message']}";
|
||||
}
|
||||
|
||||
if ($uri != '')
|
||||
if ($uri != '' && $trimmed != '')
|
||||
{
|
||||
print anchor (
|
||||
$uri,
|
||||
@ -276,10 +276,7 @@ $this->load->view (
|
||||
$fmt = $this->lang->line (
|
||||
'MSG_LOG_'.strtoupper($log['action']).'_BY');
|
||||
|
||||
//print htmlspecialchars (sprintf($fmt, $log['userid']));
|
||||
printf (
|
||||
htmlspecialchars ($fmt),
|
||||
anchor ("/site/userlog/{$log['userid']}", htmlspecialchars ($log['userid'])));
|
||||
printf ($fmt, anchor ("/site/userlog/{$log['userid']}", htmlspecialchars($log['userid'])));
|
||||
print '</span>';
|
||||
}
|
||||
|
||||
|
@ -245,7 +245,7 @@ foreach ($latest_projects as $project)
|
||||
$trimmed = $this->lang->line('Issue') . " {$log['message']}";
|
||||
}
|
||||
|
||||
if ($uri != '')
|
||||
if ($uri != '' && $trimmed != '')
|
||||
print anchor ($uri, htmlspecialchars($trimmed));
|
||||
else
|
||||
print htmlspecialchars($trimmed);
|
||||
|
@ -38,13 +38,15 @@ function render_wiki()
|
||||
if (isNaN(x_column_count) || x_column_count < 1) x_column_count = 1;
|
||||
else if (x_column_count > 9) x_column_count = 9; // sync this max value with wiki_edit. TODO: put this into codepot.ini
|
||||
|
||||
column_count = x_column_count.toString();
|
||||
|
||||
$("#wiki_show_mainarea_wiki").css ({
|
||||
"-moz-column-count": column_count,
|
||||
"-webkit-column-count": column_count,
|
||||
"column-count": column_count
|
||||
});
|
||||
if (x_column_count > 1)
|
||||
{
|
||||
column_count = x_column_count.toString();
|
||||
$("#wiki_show_mainarea_wiki").css ({
|
||||
"-moz-column-count": column_count,
|
||||
"-webkit-column-count": column_count,
|
||||
"column-count": column_count
|
||||
});
|
||||
}
|
||||
|
||||
creole_render_wiki (
|
||||
"wiki_show_mainarea_wiki_text",
|
||||
|
Loading…
Reference in New Issue
Block a user