enhanced the edit button in the file view.
fixed some issues handling page or image references
This commit is contained in:
parent
d41ae391a1
commit
a5c6ebbc1c
@ -237,6 +237,8 @@ class File extends Controller
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// DEPRECATED
|
||||
function update ($projectid = '', $name = '')
|
||||
{
|
||||
$this->load->helper ('form');
|
||||
@ -288,6 +290,7 @@ class File extends Controller
|
||||
|
||||
if ($this->input->post('file'))
|
||||
{
|
||||
$file = new stdClass();
|
||||
$file->name = $this->input->post('file_name');
|
||||
$file->tag = $this->input->post('file_tag');
|
||||
$file->description = $this->input->post('file_description');
|
||||
@ -334,6 +337,7 @@ class File extends Controller
|
||||
}
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
function xhr_import ($projectid = '')
|
||||
{
|
||||
@ -602,6 +606,72 @@ class File extends Controller
|
||||
print $status;
|
||||
}
|
||||
|
||||
function xhr_update ($projectid = '', $name = '')
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
$this->load->model ('FileModel', 'files');
|
||||
|
||||
$login = $this->login->getUser ();
|
||||
|
||||
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
|
||||
{
|
||||
$file = new stdClass();
|
||||
$file->name = $this->input->post('file_edit_name');
|
||||
$file->tag = $this->input->post('file_edit_tag');
|
||||
$file->description = $this->input->post('file_edit_description');
|
||||
|
||||
|
||||
if ($file->name === FALSE || ($file->name = trim($file->name)) == '')
|
||||
{
|
||||
$status = 'error - no name';
|
||||
}
|
||||
else if ($file->tag === FALSE || ($file->tag = trim($file->tag)) == '')
|
||||
{
|
||||
$status = 'error - no tag';
|
||||
}
|
||||
else if ($file->description === FALSE || ($file->description = trim($file->description)) == '')
|
||||
{
|
||||
$status = 'error - no description';
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($this->files->update ($login['id'], $projectid, $name, $file) === FALSE)
|
||||
{
|
||||
$status = 'error - ' . $this->files->getErrorMessage();
|
||||
}
|
||||
else
|
||||
{
|
||||
$status = 'ok';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
print $status;
|
||||
}
|
||||
|
||||
function xhr_delete ($projectid = '', $name = '')
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
|
@ -918,7 +918,100 @@ DEPRECATED
|
||||
print $status;
|
||||
}
|
||||
|
||||
private function _handle_file ($login, $projectid, $issueid, $filename)
|
||||
////////////////////////////////////////////////////////////////////////
|
||||
// Handling of attached files share the (almost) same code
|
||||
// between issue.php and wiki.php. It would be way better
|
||||
// to put the common code into a parent class and use inheritance.
|
||||
// Makre sure to apply changes to both files if any.
|
||||
|
||||
private function _handle_wiki_attachment ($login, $projectid, $wikiname, $name)
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
$this->load->model ('WikiModel', 'wikis');
|
||||
|
||||
$data['login'] = $login;
|
||||
|
||||
$project = $this->projects->get ($projectid);
|
||||
if ($project === FALSE)
|
||||
{
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($project === NULL)
|
||||
{
|
||||
$data['message'] =
|
||||
$this->lang->line('MSG_NO_SUCH_PROJECT') .
|
||||
" - {$projectid}";
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($project->public !== 'Y' && $login['id'] == '')
|
||||
{
|
||||
// non-public projects require sign-in.
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
}
|
||||
|
||||
$att = $this->wikis->getAttachment ($login['id'], $project, $wikiname, $name);
|
||||
if ($att === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($att === NULL)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('MSG_NO_SUCH_FILE'), $name);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
$path = CODEPOT_ATTACHMENT_DIR . "/{$att->encname}";
|
||||
|
||||
$stat = @stat($path);
|
||||
if ($stat === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('MSG_FAILED_TO_READ_FILE'), $name);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$etag = sprintf ('%x-%x-%x-%x', $stat['dev'], $stat['ino'], $stat['size'], $stat['mtime']);
|
||||
$lastmod = gmdate ('D, d M Y H:i:s', $stat['mtime']);
|
||||
|
||||
header ('Last-Modified: ' . $lastmod . ' GMT');
|
||||
header ('Etag: ' . $etag);
|
||||
|
||||
if ((isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag) ||
|
||||
(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $stat['mtime']))
|
||||
{
|
||||
header('Not Modified', true, 304);
|
||||
flush ();
|
||||
return;
|
||||
}
|
||||
|
||||
header ('Content-Type: ' . mime_content_type($path));
|
||||
header ('Content-Length: ' . $stat['size']);
|
||||
header ('Content-Disposition: inline; filename=' . $name);
|
||||
flush ();
|
||||
|
||||
$x = @readfile($path);
|
||||
if ($x === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('MSG_FAILED_TO_READ_FILE'), $name);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function _handle_issue_file ($login, $projectid, $issueid, $filename)
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
$this->load->model ('IssueModel', 'issues');
|
||||
@ -957,7 +1050,7 @@ DEPRECATED
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('ISSUE_MSG_NO_SUCH_FILE'), $filename);
|
||||
$this->lang->line('MSG_NO_SUCH_FILE'), $filename);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
@ -969,7 +1062,7 @@ DEPRECATED
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('issue_MSG_FAILED_TO_READ_FILE'), $filename);
|
||||
$this->lang->line('MSG_FAILED_TO_READ_FILE'), $filename);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
@ -998,7 +1091,7 @@ DEPRECATED
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('ISSUE_MSG_FAILED_TO_READ_FILE'), $filename);
|
||||
$this->lang->line('MSG_FAILED_TO_READ_FILE'), $filename);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
}
|
||||
@ -1007,6 +1100,11 @@ DEPRECATED
|
||||
|
||||
function file ($projectid = '', $issueid = '', $filename = '')
|
||||
{
|
||||
// this function is for handling a file name for the following format:
|
||||
// 1. filename
|
||||
// 2. projectid:issueid:filename
|
||||
// 3. projectid:wikiname:filename
|
||||
//
|
||||
$login = $this->login->getUser ();
|
||||
if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '')
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
@ -1021,40 +1119,30 @@ DEPRECATED
|
||||
|
||||
$filename = $this->converter->HexToAscii ($filename);
|
||||
|
||||
$wikiname = '';
|
||||
$part = explode (':', $filename);
|
||||
if (count($part) == 3)
|
||||
{
|
||||
if ($part[0] != '') $projectid = $part[0];
|
||||
if ($part[1] != '') $issueid = $part[1];
|
||||
if ($part[1] != '')
|
||||
{
|
||||
if ($part[1][0] == '#' && $part[1][1] == 'I')
|
||||
{
|
||||
$issueid = substr ($part[1],2);
|
||||
$wikiname = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$wikiname = $part[1];
|
||||
$issueid = '';
|
||||
}
|
||||
}
|
||||
if ($part[2] != '') $filename = $part[2];
|
||||
}
|
||||
|
||||
$this->_handle_file ($login, $projectid, $issueid, $filename);
|
||||
}
|
||||
|
||||
|
||||
function file0 ($projectid = '', $target = '')
|
||||
{
|
||||
//$target => projectid:issueid:filename
|
||||
|
||||
$login = $this->login->getUser ();
|
||||
if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '')
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
|
||||
if ($target == '')
|
||||
{
|
||||
$data['login'] = $login;
|
||||
$data['message'] = 'INVALID PARAMETERS';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$target = $this->converter->HexToAscii ($target);
|
||||
$part = explode (':', $target);
|
||||
if (count($part) == 3)
|
||||
{
|
||||
if ($part[0] == '') $part[0] = $projectid;
|
||||
$this->_handle_attachment ($login, $part[0], $part[1], $part[2]);
|
||||
}
|
||||
if ($wikiname != '')
|
||||
$this->_handle_wiki_attachment ($login, $projectid, $wikiname, $filename);
|
||||
else
|
||||
$this->_handle_issue_file ($login, $projectid, $issueid, $filename);
|
||||
}
|
||||
}
|
||||
|
@ -175,147 +175,6 @@ class Wiki extends Controller
|
||||
$this->_show_wiki ($projectid, $name, FALSE);
|
||||
}
|
||||
|
||||
function attachment0 ($projectid = '', $target = '')
|
||||
{
|
||||
//$target => projectid:wikiname:attachment
|
||||
|
||||
$login = $this->login->getUser ();
|
||||
if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '')
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
|
||||
if ($target == '')
|
||||
{
|
||||
$data['login'] = $login;
|
||||
$data['message'] = 'INVALID PARAMETERS';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$target = $this->converter->HexToAscii ($target);
|
||||
$part = explode (':', $target);
|
||||
if (count($part) == 3)
|
||||
{
|
||||
if ($part[0] == '') $part[0] = $projectid;
|
||||
$this->_handle_attachment ($login, $part[0], $part[1], $part[2]);
|
||||
}
|
||||
}
|
||||
|
||||
function attachment ($projectid = '', $wikiname = '', $name = '')
|
||||
{
|
||||
$login = $this->login->getUser ();
|
||||
if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '')
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
|
||||
|
||||
if ($wikiname == '' || $name == '')
|
||||
{
|
||||
$data['login'] = $login;
|
||||
$data['message'] = 'INVALID PARAMETERS';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$wikiname = $this->converter->HexToAscii ($wikiname);
|
||||
$name = $this->converter->HexToAscii ($name);
|
||||
|
||||
$part = explode (':', $name);
|
||||
if (count($part) == 3)
|
||||
{
|
||||
if ($part[0] != '') $projectid = $part[0];
|
||||
if ($part[1] != '') $wikiname = $part[1];
|
||||
if ($part[2] != '') $name = $part[2];
|
||||
}
|
||||
|
||||
$this->_handle_attachment ($login, $projectid, $wikiname, $name);
|
||||
}
|
||||
|
||||
private function _handle_attachment ($login, $projectid, $wikiname, $name)
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
$this->load->model ('WikiModel', 'wikis');
|
||||
|
||||
$data['login'] = $login;
|
||||
|
||||
$project = $this->projects->get ($projectid);
|
||||
if ($project === FALSE)
|
||||
{
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($project === NULL)
|
||||
{
|
||||
$data['message'] =
|
||||
$this->lang->line('MSG_NO_SUCH_PROJECT') .
|
||||
" - {$projectid}";
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($project->public !== 'Y' && $login['id'] == '')
|
||||
{
|
||||
// non-public projects require sign-in.
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
}
|
||||
|
||||
$att = $this->wikis->getAttachment ($login['id'], $project, $wikiname, $name);
|
||||
if ($att === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($att === NULL)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('WIKI_MSG_NO_SUCH_ATTACHMENT'), $name);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
$path = CODEPOT_ATTACHMENT_DIR . "/{$att->encname}";
|
||||
|
||||
$stat = @stat($path);
|
||||
if ($stat === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('WIKI_MSG_FAILED_TO_READ_ATTACHMENT'), $name);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$etag = sprintf ('%x-%x-%x-%x', $stat['dev'], $stat['ino'], $stat['size'], $stat['mtime']);
|
||||
$lastmod = gmdate ('D, d M Y H:i:s', $stat['mtime']);
|
||||
|
||||
header ('Last-Modified: ' . $lastmod . ' GMT');
|
||||
header ('Etag: ' . $etag);
|
||||
|
||||
if ((isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag) ||
|
||||
(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $stat['mtime']))
|
||||
{
|
||||
header('Not Modified', true, 304);
|
||||
flush ();
|
||||
return;
|
||||
}
|
||||
|
||||
header ('Content-Type: ' . mime_content_type($path));
|
||||
header ('Content-Length: ' . $stat['size']);
|
||||
header ('Content-Disposition: inline; filename=' . $name);
|
||||
flush ();
|
||||
|
||||
$x = @readfile($path);
|
||||
if ($x === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('WIKI_MSG_FAILED_TO_READ_ATTACHMENT'), $name);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _edit_wiki ($projectid, $name, $mode)
|
||||
{
|
||||
$this->load->helper ('form');
|
||||
@ -377,6 +236,7 @@ class Wiki extends Controller
|
||||
|
||||
if ($this->input->post('wiki'))
|
||||
{
|
||||
$wiki = new stdClass();
|
||||
$wiki->projectid = $this->input->post('wiki_projectid');
|
||||
if ($mode == 'update')
|
||||
{
|
||||
@ -542,6 +402,7 @@ class Wiki extends Controller
|
||||
}
|
||||
else
|
||||
{
|
||||
$wiki = new stdClass();
|
||||
$wiki->projectid = $projectid;
|
||||
$wiki->name = $name;
|
||||
$wiki->text = '';
|
||||
@ -623,6 +484,7 @@ class Wiki extends Controller
|
||||
|
||||
if($this->input->post('wiki'))
|
||||
{
|
||||
$wiki = new stdClass();
|
||||
$wiki->projectid = $this->input->post('wiki_projectid');
|
||||
$wiki->name = $this->input->post('wiki_name');
|
||||
$data['wiki_confirm'] = $this->input->post('wiki_confirm');
|
||||
@ -738,4 +600,262 @@ class Wiki extends Controller
|
||||
|
||||
return array(TRUE,$attachments);
|
||||
}
|
||||
|
||||
///////////////////////////////////////////////////////////////////////
|
||||
// Handling of attached files share the (almost) same code
|
||||
// between issue.php and wiki.php. It would be way better
|
||||
// to put the common code into a parent class and use inheritance.
|
||||
// Makre sure to apply changes to both files if any.
|
||||
|
||||
private function _handle_wiki_attachment ($login, $projectid, $wikiname, $name)
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
$this->load->model ('WikiModel', 'wikis');
|
||||
|
||||
$data['login'] = $login;
|
||||
|
||||
$project = $this->projects->get ($projectid);
|
||||
if ($project === FALSE)
|
||||
{
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($project === NULL)
|
||||
{
|
||||
$data['message'] =
|
||||
$this->lang->line('MSG_NO_SUCH_PROJECT') .
|
||||
" - {$projectid}";
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($project->public !== 'Y' && $login['id'] == '')
|
||||
{
|
||||
// non-public projects require sign-in.
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
}
|
||||
|
||||
$att = $this->wikis->getAttachment ($login['id'], $project, $wikiname, $name);
|
||||
if ($att === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($att === NULL)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('MSG_NO_SUCH_FILE'), $name);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
$path = CODEPOT_ATTACHMENT_DIR . "/{$att->encname}";
|
||||
|
||||
$stat = @stat($path);
|
||||
if ($stat === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('MSG_FAILED_TO_READ_FILE'), $name);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$etag = sprintf ('%x-%x-%x-%x', $stat['dev'], $stat['ino'], $stat['size'], $stat['mtime']);
|
||||
$lastmod = gmdate ('D, d M Y H:i:s', $stat['mtime']);
|
||||
|
||||
header ('Last-Modified: ' . $lastmod . ' GMT');
|
||||
header ('Etag: ' . $etag);
|
||||
|
||||
if ((isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag) ||
|
||||
(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $stat['mtime']))
|
||||
{
|
||||
header('Not Modified', true, 304);
|
||||
flush ();
|
||||
return;
|
||||
}
|
||||
|
||||
header ('Content-Type: ' . mime_content_type($path));
|
||||
header ('Content-Length: ' . $stat['size']);
|
||||
header ('Content-Disposition: inline; filename=' . $name);
|
||||
flush ();
|
||||
|
||||
$x = @readfile($path);
|
||||
if ($x === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('MSG_FAILED_TO_READ_FILE'), $name);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function _handle_issue_file ($login, $projectid, $issueid, $filename)
|
||||
{
|
||||
$this->load->model ('ProjectModel', 'projects');
|
||||
$this->load->model ('IssueModel', 'issues');
|
||||
|
||||
$data['login'] = $login;
|
||||
|
||||
$project = $this->projects->get ($projectid);
|
||||
if ($project === FALSE)
|
||||
{
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($project === NULL)
|
||||
{
|
||||
$data['message'] =
|
||||
$this->lang->line('MSG_NO_SUCH_PROJECT') .
|
||||
" - {$projectid}";
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ($project->public !== 'Y' && $login['id'] == '')
|
||||
{
|
||||
// non-public projects require sign-in.
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
}
|
||||
|
||||
$att = $this->issues->getFile ($login['id'], $project, $issueid, $filename);
|
||||
if ($att === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = 'DATABASE ERROR';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else if ($att === NULL)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('MSG_NO_SUCH_FILE'), $filename);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
else
|
||||
{
|
||||
$path = CODEPOT_ISSUE_FILE_DIR . "/{$att->encname}";
|
||||
|
||||
$stat = @stat($path);
|
||||
if ($stat === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('MSG_FAILED_TO_READ_FILE'), $filename);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$etag = sprintf ('%x-%x-%x-%x', $stat['dev'], $stat['ino'], $stat['size'], $stat['mtime']);
|
||||
$lastmod = gmdate ('D, d M Y H:i:s', $stat['mtime']);
|
||||
|
||||
header ('Last-Modified: ' . $lastmod . ' GMT');
|
||||
header ('Etag: ' . $etag);
|
||||
|
||||
if ((isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $etag) ||
|
||||
(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) && strtotime($_SERVER['HTTP_IF_MODIFIED_SINCE']) >= $stat['mtime']))
|
||||
{
|
||||
header('Not Modified', true, 304);
|
||||
flush ();
|
||||
return;
|
||||
}
|
||||
|
||||
header ('Content-Type: ' . mime_content_type($path));
|
||||
header ('Content-Length: ' . $stat['size']);
|
||||
header ('Content-Disposition: inline; filename=' . $filename);
|
||||
flush ();
|
||||
|
||||
$x = @readfile($path);
|
||||
if ($x === FALSE)
|
||||
{
|
||||
$data['project'] = $project;
|
||||
$data['message'] = sprintf (
|
||||
$this->lang->line('MSG_FAILED_TO_READ_FILE'), $filename);
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function attachment0 ($projectid = '', $target = '')
|
||||
{
|
||||
//$target => projectid:wikiname:attachment
|
||||
//$target => projectid:#I1:file
|
||||
|
||||
$login = $this->login->getUser ();
|
||||
if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '')
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
|
||||
if ($target == '')
|
||||
{
|
||||
$data['login'] = $login;
|
||||
$data['message'] = 'INVALID PARAMETERS';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$target = $this->converter->HexToAscii ($target);
|
||||
$part = explode (':', $target);
|
||||
if (count($part) == 3)
|
||||
{
|
||||
if ($part[0] == '') $part[0] = $projectid;
|
||||
if ($part[1][0] == '#' && $part[1][1] == 'I')
|
||||
{
|
||||
$issueid = substr ($part[1],2);
|
||||
$this->_handle_issue_file ($login, $part[0], $issueid, $part[2]);
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->_handle_wiki_attachment ($login, $part[0], $part[1], $part[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function attachment ($projectid = '', $wikiname = '', $filename = '')
|
||||
{
|
||||
$login = $this->login->getUser ();
|
||||
if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '')
|
||||
redirect ("main/signin/" . $this->converter->AsciiTohex(current_url()));
|
||||
|
||||
if ($wikiname == '' || $filename == '')
|
||||
{
|
||||
$data['login'] = $login;
|
||||
$data['message'] = 'INVALID PARAMETERS';
|
||||
$this->load->view ($this->VIEW_ERROR, $data);
|
||||
return;
|
||||
}
|
||||
|
||||
$wikiname = $this->converter->HexToAscii ($wikiname);
|
||||
$filename = $this->converter->HexToAscii ($filename);
|
||||
|
||||
$part = explode (':', $filename);
|
||||
if (count($part) == 3)
|
||||
{
|
||||
if ($part[0] != '') $projectid = $part[0];
|
||||
if ($part[1] != '')
|
||||
{
|
||||
if ($part[1][0] == '#' && $part[1][1] == 'I')
|
||||
{
|
||||
$issueid = substr ($part[1],2);
|
||||
$wikiname = '';
|
||||
}
|
||||
else
|
||||
{
|
||||
$wikiname = $part[1];
|
||||
$issueid = '';
|
||||
}
|
||||
}
|
||||
if ($part[2] != '') $filename = $part[2];
|
||||
}
|
||||
|
||||
if ($wikiname != '')
|
||||
$this->_handle_wiki_attachment ($login, $projectid, $wikiname, $filename);
|
||||
else
|
||||
$this->_handle_issue_file ($login, $projectid, $issueid, $filename);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -126,6 +126,8 @@ $lang['MSG_NO_DIFF'] = 'No difference found';
|
||||
$lang['MSG_NO_CODE_AVAIL'] = 'No source code available';
|
||||
$lang['MSG_NO_SUCH_PROJECT'] = 'No such project';
|
||||
$lang['MSG_SURE_TO_DELETE_THIS'] = "I'm sure to delete this";
|
||||
$lang['MSG_FAILED_TO_READ_FILE'] = 'Failed to read file - %s';
|
||||
$lang['MSG_NO_SUCH_FILE'] = 'No such file - %s';
|
||||
|
||||
$lang['MSG_PROJECT_MEMBERSHIP_REQUIRED'] = 'You have to be a member of the %s project to perform this task';
|
||||
$lang['MSG_FORM_INPUT_INCOMPLETE'] = 'Your input is incomplete';
|
||||
|
@ -4,10 +4,8 @@ $lang['WIKI_NEW_ATTACHMENTS'] = 'New attachments';
|
||||
$lang['WIKI_MORE_NEW_ATTACHMENTS'] = 'Add more';
|
||||
|
||||
$lang['WIKI_MSG_ATTACHMENT_NAME_NO_COLON'] = 'Attachment name containing a colon';
|
||||
$lang['WIKI_MSG_FAILED_TO_READ_ATTACHMENT'] = 'Failed to read wiki attachment - %s';
|
||||
$lang['WIKI_MSG_NAME_DISALLOWED_CHARS'] = 'Wiki name contains disallowed characters';
|
||||
$lang['WIKI_MSG_NO_PAGES_AVAILABLE'] = 'No wiki pages available';
|
||||
$lang['WIKI_MSG_NO_SUCH_PAGE'] = 'No such wiki page - %s';
|
||||
$lang['WIKI_MSG_NO_SUCH_ATTACHMENT'] = 'No such wiki attachment - %s';
|
||||
$lang['WIKI_MSG_RESERVED_WIKI_NAME'] = 'Wiki name containing a reserved word - %s';
|
||||
?>
|
||||
|
@ -123,6 +123,8 @@ $lang['MSG_NO_DIFF'] = 'Tidak ada bedanya';
|
||||
$lang['MSG_NO_CODE_AVAIL'] = 'Tidak ada kode sumber tersedia';
|
||||
$lang['MSG_NO_SUCH_PROJECT'] = 'No such project';
|
||||
$lang['MSG_SURE_TO_DELETE_THIS'] = "Saya yakin untuk menghapus";
|
||||
$lang['MSG_FAILED_TO_READ_FILE'] = 'Failed to read file - %s';
|
||||
$lang['MSG_NO_SUCH_FILE'] = 'No such file - %s';
|
||||
|
||||
$lang['MSG_PROJECT_MEMBERSHIP_REQUIRED'] = 'You have to be a member of the %s project to perform this task';
|
||||
$lang['MSG_FORM_INPUT_INCOMPLETE'] = 'Your input is incomplete';
|
||||
|
@ -126,6 +126,8 @@ $lang['MSG_NO_DIFF'] = '차이점이 없습니다';
|
||||
$lang['MSG_NO_CODE_AVAIL'] = '소스코드가 없습니다';
|
||||
$lang['MSG_NO_SUCH_PROJECT'] = '프로젝트가 없습니다';
|
||||
$lang['MSG_SURE_TO_DELETE_THIS'] = '반드시 이것을 삭제하고 싶어요';
|
||||
$lang['MSG_FAILED_TO_READ_FILE'] = '파일을 읽을 수 없습니다 - %s';
|
||||
$lang['MSG_NO_SUCH_FILE'] = '파일이 없습니다 - %s';
|
||||
|
||||
$lang['MSG_PROJECT_MEMBERSHIP_REQUIRED'] = '이 작업을 수행하려면 %s 프로젝트의 멤버가 되어야 합니다';
|
||||
$lang['MSG_FORM_INPUT_INCOMPLETE'] = '입력이 완전하지 않습니다';
|
||||
|
@ -4,10 +4,8 @@ $lang['WIKI_NEW_ATTACHMENTS'] = '새로운 첨부파일';
|
||||
$lang['WIKI_MORE_NEW_ATTACHMENTS'] = '첨부파일 추가';
|
||||
|
||||
$lang['WIKI_MSG_ATTACHMENT_NAME_NO_COLON'] = '첨부파일이름에 콜론기호를 포함할 수 없습니다';
|
||||
$lang['WIKI_MSG_FAILED_TO_READ_ATTACHMENT'] = '위키 첨부파일을 읽을 수 없습니다 - %s';
|
||||
$lang['WIKI_MSG_NAME_DISALLOWED_CHARS'] = '위키이름에 허용되지 않는 문자가 포함되어 있습니다';
|
||||
$lang['WIKI_MSG_NO_PAGES_AVAILABLE'] = '사용할 수 있는 위키 페이지가 없습니다';
|
||||
$lang['WIKI_MSG_NO_SUCH_PAGE'] = '위키 페이지를 찾을수 없습니다 - %s';
|
||||
$lang['WIKI_MSG_NO_SUCH_ATTACHMENT'] = '위키 첨부파일을 찾을 수 없습니다 - %s';
|
||||
$lang['WIKI_MSG_RESERVED_WIKI_NAME'] = '%s은(는) 사용할 수 없는 위키이름입니다';
|
||||
?>
|
||||
|
@ -135,7 +135,7 @@ class FileModel extends Model
|
||||
}
|
||||
*/
|
||||
|
||||
function update ($userid, $projectid, $name, $file)
|
||||
private function _update_file ($userid, $projectid, $name, $file)
|
||||
{
|
||||
$this->db->trans_start ();
|
||||
|
||||
@ -176,6 +176,15 @@ class FileModel extends Model
|
||||
return $this->db->trans_status();
|
||||
}
|
||||
|
||||
function update ($userid, $projectid, $name, $file)
|
||||
{
|
||||
set_error_handler (array ($this, 'capture_error'));
|
||||
$errmsg = '';
|
||||
$x = $this->_update_file ($userid, $projectid, $name, $file);
|
||||
restore_error_handler ();
|
||||
return $x;
|
||||
}
|
||||
|
||||
private function _delete_file ($userid, $projectid, $name)
|
||||
{
|
||||
$this->db->trans_begin (); // manual transaction. not using trans_start().
|
||||
|
@ -43,7 +43,7 @@ class LoginModel extends Model
|
||||
{
|
||||
$settings = @unserialize ($settings);
|
||||
if ($settings === FALSE || $settings === NULL)
|
||||
$settings = new stdObject();
|
||||
$settings = new stdClass();
|
||||
|
||||
// Sanity check on the session/cookie data
|
||||
// See Controller/User->settings() for required fields.
|
||||
|
@ -26,6 +26,9 @@
|
||||
<?php
|
||||
$hexname = $this->converter->AsciiToHex ($file->name);
|
||||
$file_count = count ($file->file_list);
|
||||
|
||||
$creole_base = site_url() . "/wiki/show/{$project->id}/";
|
||||
$creole_file_base = site_url() . "/wiki/attachment0/{$project->id}/";
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
@ -50,8 +53,20 @@ function render_wiki()
|
||||
creole_render_wiki (
|
||||
"file_show_mainarea_wiki_text",
|
||||
"file_show_mainarea_wiki",
|
||||
"<?php print site_url()?>/wiki/show/<?php print $project->id?>/",
|
||||
"<?php print site_url()?>/wiki/attachment0/<?php print $project->id?>/"
|
||||
"<?php print $creole_base; ?>",
|
||||
"<?php print $creole_file_base; ?>/"
|
||||
);
|
||||
|
||||
prettyPrint ();
|
||||
}
|
||||
|
||||
function preview_edit_description (input_text)
|
||||
{
|
||||
creole_render_wiki_with_input_text (
|
||||
input_text,
|
||||
"file_show_mainarea_edit_description_preview",
|
||||
"<?php print $creole_base; ?>",
|
||||
"<?php print $creole_file_base; ?>/"
|
||||
);
|
||||
|
||||
prettyPrint ();
|
||||
@ -126,9 +141,7 @@ function kill_edit_file (no)
|
||||
}
|
||||
}
|
||||
|
||||
var delete_in_progress = false;
|
||||
var add_file_in_progress = false;
|
||||
var edit_file_in_progress = false;
|
||||
var work_in_progress = false;
|
||||
|
||||
var original_file_name = [
|
||||
<?php
|
||||
@ -182,7 +195,94 @@ $(function () {
|
||||
|
||||
<?php if (isset($login['id']) && $login['id'] != ''): ?>
|
||||
|
||||
$('#file_show_mainarea_delete_form_div').dialog (
|
||||
$('#file_show_mainarea_edit_description_tabs').tabs ();
|
||||
$('#file_show_mainarea_edit_description_tabs').bind ('tabsshow', function (event, ui) {
|
||||
if (ui.index == 1) preview_edit_description ($('#file_show_mainarea_edit_description').val());
|
||||
});
|
||||
|
||||
$('#file_show_mainarea_edit_form').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 (work_in_progress) return;
|
||||
|
||||
if (!!window.FormData)
|
||||
{
|
||||
// FormData is supported
|
||||
work_in_progress = true;
|
||||
|
||||
var form_data = new FormData();
|
||||
|
||||
var new_name = $('#file_show_mainarea_edit_name').val()
|
||||
|
||||
form_data.append ('file_edit_name', new_name);
|
||||
form_data.append ('file_edit_tag', $('#file_show_mainarea_edit_tag').val());
|
||||
form_data.append ('file_edit_description', $('#file_show_mainarea_edit_description').val());
|
||||
|
||||
$('#file_show_mainarea_edit_form').dialog('disable');
|
||||
$.ajax({
|
||||
url: codepot_merge_path('<?php print site_url() ?>', '<?php print "/file/xhr_update/{$project->id}/{$hexname}"; ?>'),
|
||||
type: 'POST',
|
||||
data: form_data,
|
||||
mimeType: 'multipart/form-data',
|
||||
contentType: false,
|
||||
processData: false,
|
||||
cache: false,
|
||||
|
||||
success: function (data, textStatus, jqXHR) {
|
||||
work_in_progress = false;
|
||||
$('#file_show_mainarea_edit_form').dialog('enable');
|
||||
$('#file_show_mainarea_edit_form').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}/"; ?>' + codepot_ascii_to_hex(new_name)));
|
||||
}
|
||||
else
|
||||
{
|
||||
show_alert ('<pre>' + codepot_htmlspecialchars(data) + '</pre>', "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
},
|
||||
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
work_in_progress = false;
|
||||
$('#file_show_mainarea_edit_form').dialog('enable');
|
||||
$('#file_show_mainarea_edit_form').dialog('close');
|
||||
var errmsg = '';
|
||||
if (errmsg == '' && errorThrown != null) errmsg = errorThrown;
|
||||
if (errmsg == '' && textStatus != null) errmsg = textStatus;
|
||||
if (errmsg == '') errmsg = 'Unknown error';
|
||||
show_alert ('Failed - ' + errmsg, "<?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 (work_in_progress) return;
|
||||
$('#file_show_mainarea_edit_form').dialog('close');
|
||||
}
|
||||
},
|
||||
|
||||
beforeClose: function() {
|
||||
// if importing is in progress, prevent dialog closing
|
||||
return !work_in_progress;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
$('#file_show_mainarea_delete_form').dialog (
|
||||
{
|
||||
title: '<?php print $this->lang->line('Delete');?>',
|
||||
resizable: true,
|
||||
@ -192,19 +292,19 @@ $(function () {
|
||||
modal: true,
|
||||
buttons: {
|
||||
'<?php print $this->lang->line('OK')?>': function () {
|
||||
if (delete_in_progress) return;
|
||||
if (work_in_progress) return;
|
||||
|
||||
if (!!window.FormData)
|
||||
{
|
||||
// FormData is supported
|
||||
delete_in_progress = true;
|
||||
work_in_progress = true;
|
||||
|
||||
var form_data = new FormData();
|
||||
|
||||
var f = $('#file_show_mainarea_delete_confirm');
|
||||
if (f != null && f.is(':checked')) form_data.append ('file_delete_confirm', 'Y');
|
||||
|
||||
$('#file_show_mainarea_delete_form_div').dialog('disable');
|
||||
$('#file_show_mainarea_delete_form').dialog('disable');
|
||||
$.ajax({
|
||||
url: codepot_merge_path('<?php print site_url() ?>', '<?php print "/file/xhr_delete/{$project->id}/{$hexname}"; ?>'),
|
||||
type: 'POST',
|
||||
@ -215,9 +315,9 @@ $(function () {
|
||||
cache: false,
|
||||
|
||||
success: function (data, textStatus, jqXHR) {
|
||||
delete_in_progress = false;
|
||||
$('#file_show_mainarea_delete_form_div').dialog('enable');
|
||||
$('#file_show_mainarea_delete_form_div').dialog('close');
|
||||
work_in_progress = false;
|
||||
$('#file_show_mainarea_delete_form').dialog('enable');
|
||||
$('#file_show_mainarea_delete_form').dialog('close');
|
||||
if (data == 'ok')
|
||||
{
|
||||
// refresh the page to the head revision
|
||||
@ -230,9 +330,9 @@ $(function () {
|
||||
},
|
||||
|
||||
error: function (jqXHR, textStatus, errorThrown) {
|
||||
delete_in_progress = false;
|
||||
$('#file_show_mainarea_delete_form_div').dialog('enable');
|
||||
$('#file_show_mainarea_delete_form_div').dialog('close');
|
||||
work_in_progress = false;
|
||||
$('#file_show_mainarea_delete_form').dialog('enable');
|
||||
$('#file_show_mainarea_delete_form').dialog('close');
|
||||
show_alert ('Failed - ' + errorThrown, "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
});
|
||||
@ -243,15 +343,15 @@ $(function () {
|
||||
}
|
||||
},
|
||||
'<?php print $this->lang->line('Cancel')?>': function () {
|
||||
if (delete_in_progress) return;
|
||||
$('#file_show_mainarea_delete_form_div').dialog('close');
|
||||
if (work_in_progress) return;
|
||||
$('#file_show_mainarea_delete_form').dialog('close');
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
beforeClose: function() {
|
||||
// if importing is in progress, prevent dialog closing
|
||||
return !delete_in_progress;
|
||||
return !work_in_progress;
|
||||
}
|
||||
}
|
||||
);
|
||||
@ -260,7 +360,7 @@ $(function () {
|
||||
populate_selected_files_for_adding ();
|
||||
});
|
||||
|
||||
$('#file_show_mainarea_add_file_form_div').dialog (
|
||||
$('#file_show_mainarea_add_file_form').dialog (
|
||||
{
|
||||
title: '<?php print $this->lang->line('Add');?>',
|
||||
resizable: true,
|
||||
@ -270,12 +370,12 @@ $(function () {
|
||||
modal: true,
|
||||
buttons: {
|
||||
'<?php print $this->lang->line('OK')?>': function () {
|
||||
if (add_file_in_progress) return;
|
||||
if (work_in_progress) return;
|
||||
|
||||
if (!!window.FormData)
|
||||
{
|
||||
// FormData is supported
|
||||
add_file_in_progress = true;
|
||||
work_in_progress = true;
|
||||
|
||||
var form_data = new FormData();
|
||||
|
||||
@ -294,7 +394,7 @@ $(function () {
|
||||
}
|
||||
form_data.append ('file_add_file_count', f_no);
|
||||
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('disable');
|
||||
$('#file_show_mainarea_add_file_form').dialog('disable');
|
||||
$.ajax({
|
||||
url: codepot_merge_path('<?php print site_url() ?>', '<?php print "/file/xhr_add_file/{$project->id}/{$hexname}"; ?>'),
|
||||
type: 'POST',
|
||||
@ -305,9 +405,9 @@ $(function () {
|
||||
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');
|
||||
work_in_progress = false;
|
||||
$('#file_show_mainarea_add_file_form').dialog('enable');
|
||||
$('#file_show_mainarea_add_file_form').dialog('close');
|
||||
if (data == 'ok')
|
||||
{
|
||||
// refresh the page to the head revision
|
||||
@ -320,9 +420,9 @@ $(function () {
|
||||
},
|
||||
|
||||
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');
|
||||
work_in_progress = false;
|
||||
$('#file_show_mainarea_add_file_form').dialog('enable');
|
||||
$('#file_show_mainarea_add_file_form').dialog('close');
|
||||
show_alert ('Failed - ' + errorThrown, "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
});
|
||||
@ -333,20 +433,20 @@ $(function () {
|
||||
}
|
||||
},
|
||||
'<?php print $this->lang->line('Cancel')?>': function () {
|
||||
if (add_file_in_progress) return;
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('close');
|
||||
if (work_in_progress) return;
|
||||
$('#file_show_mainarea_add_file_form').dialog('close');
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
beforeClose: function() {
|
||||
// if importing is in progress, prevent dialog closing
|
||||
return !add_file_in_progress;
|
||||
return !work_in_progress;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog (
|
||||
$('#file_show_mainarea_edit_file_form').dialog (
|
||||
{
|
||||
title: '<?php print $this->lang->line('Edit');?>',
|
||||
resizable: true,
|
||||
@ -356,12 +456,12 @@ $(function () {
|
||||
modal: true,
|
||||
buttons: {
|
||||
'<?php print $this->lang->line('OK')?>': function () {
|
||||
if (edit_file_in_progress) return;
|
||||
if (work_in_progress) return;
|
||||
|
||||
if (!!window.FormData)
|
||||
{
|
||||
// FormData is supported
|
||||
edit_file_in_progress = true;
|
||||
work_in_progress = true;
|
||||
|
||||
var form_data = new FormData();
|
||||
|
||||
@ -389,7 +489,7 @@ $(function () {
|
||||
}
|
||||
form_data.append ('file_edit_file_count', f_no);
|
||||
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('disable');
|
||||
$('#file_show_mainarea_edit_file_form').dialog('disable');
|
||||
$.ajax({
|
||||
url: codepot_merge_path('<?php print site_url() ?>', '<?php print "/file/xhr_edit_file/{$project->id}/{$hexname}"; ?>'),
|
||||
type: 'POST',
|
||||
@ -400,9 +500,9 @@ $(function () {
|
||||
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');
|
||||
work_in_progress = false;
|
||||
$('#file_show_mainarea_edit_file_form').dialog('enable');
|
||||
$('#file_show_mainarea_edit_file_form').dialog('close');
|
||||
if (data == 'ok')
|
||||
{
|
||||
// refresh the page to the head revision
|
||||
@ -415,9 +515,9 @@ $(function () {
|
||||
},
|
||||
|
||||
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');
|
||||
work_in_progress = false;
|
||||
$('#file_show_mainarea_edit_file_form').dialog('enable');
|
||||
$('#file_show_mainarea_edit_file_form').dialog('close');
|
||||
show_alert ('Failed - ' + errorThrown, "<?php print $this->lang->line('Error')?>");
|
||||
}
|
||||
});
|
||||
@ -428,33 +528,45 @@ $(function () {
|
||||
}
|
||||
},
|
||||
'<?php print $this->lang->line('Cancel')?>': function () {
|
||||
if (edit_file_in_progress) return;
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('close');
|
||||
if (work_in_progress) return;
|
||||
$('#file_show_mainarea_edit_file_form').dialog('close');
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
beforeClose: function() {
|
||||
// if importing is in progress, prevent dialog closing
|
||||
return !edit_file_in_progress;
|
||||
return !work_in_progress;
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
$('#file_show_mainarea_delete_button').button().click (function() {
|
||||
$('#file_show_mainarea_delete_form_div').dialog('open');
|
||||
$('#file_show_mainarea_edit_button').button().click (
|
||||
function () {
|
||||
$('#file_show_mainarea_edit_form').dialog('open');
|
||||
return false; // prevent the default behavior
|
||||
}
|
||||
);
|
||||
$('#file_show_mainarea_delete_button').button().click (
|
||||
function() {
|
||||
$('#file_show_mainarea_delete_form').dialog('open');
|
||||
return false;
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
$('#file_show_mainarea_add_file_button').button().click (function() {
|
||||
$('#file_show_mainarea_add_file_form_div').dialog('open');
|
||||
$('#file_show_mainarea_add_file_button').button().click (
|
||||
function() {
|
||||
$('#file_show_mainarea_add_file_form').dialog('open');
|
||||
return false;
|
||||
});
|
||||
}
|
||||
);
|
||||
|
||||
$('#file_show_mainarea_edit_file_button').button().click (function() {
|
||||
$('#file_show_mainarea_edit_file_form_div').dialog('open');
|
||||
$('#file_show_mainarea_edit_file_button').button().click (
|
||||
function() {
|
||||
$('#file_show_mainarea_edit_file_form').dialog('open');
|
||||
return false;
|
||||
});
|
||||
}
|
||||
);
|
||||
<?php endif; ?>
|
||||
|
||||
render_wiki ();
|
||||
@ -488,7 +600,8 @@ $this->load->view (
|
||||
),
|
||||
|
||||
'ctxmenuitems' => array (
|
||||
array ("file/update/{$project->id}/{$hexname}", '<i class="fa fa-edit"></i> ' . $this->lang->line('Edit'))
|
||||
// DEPRECATED
|
||||
//array ("file/update/{$project->id}/{$hexname}", '<i class="fa fa-edit"></i> ' . $this->lang->line('Edit'))
|
||||
)
|
||||
)
|
||||
);
|
||||
@ -502,6 +615,7 @@ $this->load->view (
|
||||
|
||||
<div class="infostrip" id="wiki_show_mainarea_infostrip">
|
||||
<?php if (isset($login['id']) && $login['id'] != ''): ?>
|
||||
<a id="file_show_mainarea_edit_button" href='#'><?php print $this->lang->line('Edit')?></a>
|
||||
<a id="file_show_mainarea_delete_button" href='#'><?php print $this->lang->line('Delete')?></a>
|
||||
<?php endif; ?>
|
||||
<a id="file_show_mainarea_metadata_button" href='#'><?php print $this->lang->line('Metadata')?></a>
|
||||
@ -560,19 +674,39 @@ $this->load->view (
|
||||
|
||||
<?php if (isset($login['id']) && $login['id'] != ''): ?>
|
||||
|
||||
<div id='file_show_mainarea_delete_form_div'>
|
||||
<div id='file_show_mainarea_edit_form'>
|
||||
<div style='line-height: 2em;'>
|
||||
<?php print $this->lang->line('Tag'); ?>: <input type='text' id='file_show_mainarea_edit_tag' name='file_show_edit_tag' size='30' value='<?php print addslashes($file->tag); ?>'/>
|
||||
<?php print $this->lang->line('Name'); ?>: <input type='text' id='file_show_mainarea_edit_name' name='file_show_edit_name' size='60' value='<?php print addslashes($file->name); ?>'/>
|
||||
</div>
|
||||
|
||||
<div id='file_show_mainarea_edit_description_tabs' style='width:100%;'>
|
||||
<ul>
|
||||
<li><a href='#file_show_mainarea_edit_description_input'><?php print $this->lang->line('Description'); ?></a></li>
|
||||
<li><a href='#file_show_mainarea_edit_description_preview'><?php print $this->lang->line('Preview'); ?></a></li>
|
||||
</ul>
|
||||
|
||||
<div id='file_show_mainarea_edit_description_input'>
|
||||
<textarea type='textarea' id='file_show_mainarea_edit_description' name='file_show_edit_description' rows=24 cols=100 style='width:100%;'><?php print htmlspecialchars($file->description); ?></textarea>
|
||||
</div>
|
||||
<div id='file_show_mainarea_edit_description_preview' class='form_input_preview'>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div id='file_show_mainarea_delete_form'>
|
||||
<input type='checkbox' id='file_show_mainarea_delete_confirm' />
|
||||
<?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_form'>
|
||||
<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'>
|
||||
<div id='file_show_mainarea_edit_file_form'>
|
||||
<table>
|
||||
<?php
|
||||
for ($i = 0; $i < $file_count; $i++)
|
||||
|
@ -23,6 +23,14 @@
|
||||
<script type="text/javascript" src="<?php print base_url_make('/js/jquery-ui.min.js')?>"></script>
|
||||
<link type="text/css" rel="stylesheet" href="<?php print base_url_make('/css/jquery-ui.css')?>" />
|
||||
|
||||
<?php
|
||||
$creole_base = site_url() . "/wiki/show/{$project->id}/";
|
||||
// the issue page doesn't exist yet. so use wiki/attachment0 instead of
|
||||
// issue/file/issueid. the local imange reference like {{xxx.png}}
|
||||
// won't work. furthermore, the file hasn't been uploaded and isn't available.
|
||||
$creole_file_base = site_url() . "/wiki/attachment0/{$project->id}/";
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
/* <![CDATA[ */
|
||||
function show_alert (outputMsg, titleMsg)
|
||||
@ -53,13 +61,13 @@ function AsciiToHex (x) {
|
||||
}
|
||||
|
||||
|
||||
function render_wiki(input_text)
|
||||
function preview_new_description(input_text)
|
||||
{
|
||||
creole_render_wiki_with_input_text (
|
||||
input_text,
|
||||
"issue_home_mainarea_new_description_preview",
|
||||
"<?php print site_url()?>/issue/show/<?php print $project->id?>/",
|
||||
"<?php print site_url()?>/issue/file0/<?php print $project->id?>/"
|
||||
"<?php print $creole_base; ?>",
|
||||
"<?php print $creole_file_base; ?>"
|
||||
);
|
||||
|
||||
prettyPrint ();
|
||||
@ -121,9 +129,9 @@ $(function () {
|
||||
populate_selected_files ();
|
||||
});
|
||||
|
||||
$("#issue_home_mainarea_new_description_tabs").tabs ();
|
||||
$("#issue_home_mainarea_new_description_tabs").bind ('tabsshow', function (event, ui) {
|
||||
if (ui.index == 1) render_wiki ($("#issue_home_mainarea_new_description").val());
|
||||
$('#issue_home_mainarea_new_description_tabs').tabs ();
|
||||
$('#issue_home_mainarea_new_description_tabs').bind ('tabsshow', function (event, ui) {
|
||||
if (ui.index == 1) preview_new_description ($('#issue_home_mainarea_new_description').val());
|
||||
});
|
||||
|
||||
$('#issue_home_mainarea_new_form').dialog (
|
||||
|
@ -24,6 +24,9 @@
|
||||
<?php
|
||||
$hex_issue_id = $this->converter->AsciiToHex ($issue->id);
|
||||
$issue_file_count = count ($issue->files);
|
||||
|
||||
$creole_base = site_url() . "/wiki/show/{$project->id}/";
|
||||
$creole_file_base = site_url() . "/issue/file/{$project->id}/{$issue->id}/";
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
@ -165,7 +168,19 @@ function kill_edit_file (no)
|
||||
d.prop ('disabled', true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
function preview_edit_description (input_text)
|
||||
{
|
||||
creole_render_wiki_with_input_text (
|
||||
input_text,
|
||||
"issue_show_mainarea_edit_description_preview",
|
||||
"<?php print $creole_base; ?>",
|
||||
"<?php print $creole_file_base; ?>/"
|
||||
);
|
||||
|
||||
prettyPrint ();
|
||||
}
|
||||
|
||||
var work_in_progress = false;
|
||||
@ -194,9 +209,9 @@ var original_file_desc = [
|
||||
|
||||
$(function () {
|
||||
<?php if (isset($login['id']) && $login['id'] != ''): ?>
|
||||
$("#issue_show_mainarea_edit_description_tabs").tabs ();
|
||||
$("#issue_show_mainarea_edit_description_tabs").bind ('tabsshow', function (event, ui) {
|
||||
if (ui.index == 1) render_wiki ($("#issue_show_mainarea_edit_description").val());
|
||||
$('#issue_show_mainarea_edit_description_tabs').tabs ();
|
||||
$('#issue_show_mainarea_edit_description_tabs').bind ('tabsshow', function (event, ui) {
|
||||
if (ui.index == 1) preview_edit_description ($('#issue_show_mainarea_edit_description').val());
|
||||
});
|
||||
|
||||
$('#issue_show_mainarea_edit_form').dialog (
|
||||
@ -608,14 +623,14 @@ $(function () {
|
||||
);
|
||||
<?php endif; ?>
|
||||
|
||||
$("#issue_show_mainarea_change_form_open").button().click (
|
||||
$('#issue_show_mainarea_change_form_open').button().click (
|
||||
function () {
|
||||
$('#issue_show_mainarea_change_form').dialog('open');
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
$("#issue_show_mainarea_undo_change_confirm").dialog (
|
||||
$('#issue_show_mainarea_undo_change_confirm').dialog (
|
||||
{
|
||||
title: '<?php print $this->lang->line('Undo')?>',
|
||||
resizable: false,
|
||||
@ -635,17 +650,17 @@ $(function () {
|
||||
}
|
||||
);
|
||||
|
||||
$("#issue_show_mainarea_undo_change").button().click (
|
||||
$('#issue_show_mainarea_undo_change').button().click (
|
||||
function () {
|
||||
$('#issue_show_mainarea_undo_change_confirm').dialog('open');
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
$("#issue_change_comment_preview_button").button().click(
|
||||
$('#issue_change_comment_preview_button').button().click(
|
||||
function () {
|
||||
render_wiki_comment_preview ($("#issue_change_comment").val());
|
||||
preview_issue_change_comment ($('#issue_change_comment').val());
|
||||
return false;
|
||||
}
|
||||
);
|
||||
|
||||
@ -925,7 +940,7 @@ $this->load->view (
|
||||
'id="issue_show_mainarea_edit_type" disabled="disabled"'
|
||||
);
|
||||
?>
|
||||
<input type='text' id='issue_show_mainarea_edit_summary' name='issue_home_new_summary' size='50' placeholder='<?php print $this->lang->line('Summary'); ?>' value='<?php print addslashes($issue->summary); ?>'/>
|
||||
<input type='text' id='issue_show_mainarea_edit_summary' name='issue_show_edit_summary' size='50' placeholder='<?php print $this->lang->line('Summary'); ?>' value='<?php print addslashes($issue->summary); ?>'/>
|
||||
</div>
|
||||
|
||||
<div id='issue_show_mainarea_edit_description_tabs' style='width:100%;'>
|
||||
@ -935,7 +950,7 @@ $this->load->view (
|
||||
</ul>
|
||||
|
||||
<div id='issue_show_mainarea_edit_description_input'>
|
||||
<textarea type='textarea' id='issue_show_mainarea_edit_description' name='issue_home_new_description' rows=24 cols=100 style='width:100%;'><?php print htmlspecialchars($issue->description); ?></textarea>
|
||||
<textarea type='textarea' id='issue_show_mainarea_edit_description' name='issue_show_edit_description' rows=24 cols=100 style='width:100%;'><?php print htmlspecialchars($issue->description); ?></textarea>
|
||||
</div>
|
||||
<div id='issue_show_mainarea_edit_description_preview' class='form_input_preview'>
|
||||
</div>
|
||||
@ -1075,10 +1090,6 @@ $this->load->view (
|
||||
<!---------------------------------------------------------------------------->
|
||||
|
||||
|
||||
<?php
|
||||
$creole_base = site_url() . "/issue/show/{$project->id}/{$issue->id}/";
|
||||
$creole_attachment_base = site_url() . "/issue/file/{$project->id}/{$issue->id}/";
|
||||
?>
|
||||
|
||||
<script type="text/javascript">
|
||||
function render_wiki()
|
||||
@ -1087,7 +1098,7 @@ function render_wiki()
|
||||
"issue_show_mainarea_description_pre",
|
||||
"issue_show_mainarea_description",
|
||||
"<?php print $creole_base?>",
|
||||
"<?php print $creole_attachment_base?>"
|
||||
"<?php print $creole_file_base?>"
|
||||
);
|
||||
|
||||
<?php
|
||||
@ -1099,7 +1110,7 @@ function render_wiki()
|
||||
'issue_show_mainarea_changes_comment_pre_{$xxx}',
|
||||
'issue_show_mainarea_changes_comment_{$xxx}',
|
||||
'{$creole_base}',
|
||||
'{$creole_attachment_base}');";
|
||||
'{$creole_file_base}');";
|
||||
}
|
||||
}
|
||||
?>
|
||||
@ -1107,13 +1118,13 @@ function render_wiki()
|
||||
prettyPrint ();
|
||||
}
|
||||
|
||||
function render_wiki_comment_preview(input_text)
|
||||
function preview_issue_change_comment(input_text)
|
||||
{
|
||||
creole_render_wiki_with_input_text (
|
||||
input_text,
|
||||
"issue_change_comment_preview",
|
||||
"<?php print $creole_base?>",
|
||||
"<?php print $creole_attachment_base?>"
|
||||
"<?php print $creole_file_base?>"
|
||||
);
|
||||
|
||||
prettyPrint ();
|
||||
|
@ -90,3 +90,32 @@
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------
|
||||
* file home show - edit file dialog
|
||||
*-----------------------------------------------*/
|
||||
#file_show_mainarea_edit_description_tabs {
|
||||
border: none !important;
|
||||
}
|
||||
|
||||
#file_show_mainarea_edit_description_tabs .ui-tabs-panel {
|
||||
padding: 0.2em 0em 0em 0em !important;
|
||||
}
|
||||
|
||||
#file_show_mainarea_edit_description_tabs .ui-widget-header {
|
||||
border: none !important;
|
||||
background: none !important;
|
||||
padding: 0em !important;
|
||||
}
|
||||
|
||||
#file_show_mainarea_edit_description_tabs .ui-tabs-nav {
|
||||
padding: 0em !important;
|
||||
}
|
||||
|
||||
/* #file_show_mainarea_edit_description_tabs .ui-tabs-nav li { */
|
||||
.ui-tabs .ui-tabs-nav li.ui-state-default {
|
||||
border-bottom: 1px solid #cccccc !important;
|
||||
}
|
||||
|
||||
.ui-tabs .ui-tabs-nav li.ui-state-active {
|
||||
border-bottom: 1px solid #fbd850 !important;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user