added an edit dialog to the issue_show view
This commit is contained in:
		| @ -379,7 +379,7 @@ class File extends Controller | |||||||
| 				{ | 				{ | ||||||
| 					$status = 'error - no name'; | 					$status = 'error - no name'; | ||||||
| 				} | 				} | ||||||
| 				else if ($post_new_description === FALSE || ($post_new_description = $post_new_description) == '') | 				else if ($post_new_description === FALSE || ($post_new_description = trim($post_new_description)) == '') | ||||||
| 				{ | 				{ | ||||||
| 					$status = 'error - no description'; | 					$status = 'error - no description'; | ||||||
| 				} | 				} | ||||||
|  | |||||||
| @ -575,9 +575,9 @@ class Issue extends Controller | |||||||
| 				} | 				} | ||||||
| 				else if ($issue->summary === FALSE || ($issue->summary = trim($issue->summary)) == '') | 				else if ($issue->summary === FALSE || ($issue->summary = trim($issue->summary)) == '') | ||||||
| 				{ | 				{ | ||||||
| 					$status = 'error - no name'; | 					$status = 'error - no summary'; | ||||||
| 				} | 				} | ||||||
| 				else if ($issue->description === FALSE || ($issue->description = $issue->description) == '') | 				else if ($issue->description === FALSE || ($issue->description = trim($issue->description)) == '') | ||||||
| 				{ | 				{ | ||||||
| 					$status = 'error - no description'; | 					$status = 'error - no description'; | ||||||
| 				} | 				} | ||||||
| @ -624,4 +624,216 @@ class Issue extends Controller | |||||||
|  |  | ||||||
| 		print $status; | 		print $status; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	function xhr_update ($projectid = '') | ||||||
|  | 	{ | ||||||
|  | 		$this->load->model ('ProjectModel', 'projects'); | ||||||
|  | 		$this->load->model ('IssueModel', 'issues'); | ||||||
|  | 		$this->load->library ('upload'); | ||||||
|  |  | ||||||
|  | 		$login = $this->login->getUser (); | ||||||
|  | 		$revision_saved = -1; | ||||||
|  |  | ||||||
|  | 		if ($login['id'] == '') | ||||||
|  | 		{ | ||||||
|  | 			$status = 'error - anonymous user'; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			$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 | ||||||
|  | 			{ | ||||||
|  | 				$issue = new stdClass(); | ||||||
|  | 				$issue->projectid = $projectid; | ||||||
|  | 				$issue->id = $this->input->post('issue_edit_id'); | ||||||
|  | 				$issue->summary = $this->input->post('issue_edit_summary'); | ||||||
|  | 				$issue->description = $this->input->post('issue_edit_description'); | ||||||
|  | 				//$issue->type = $this->input->post('issue_edit_type'); | ||||||
|  |  | ||||||
|  | 				if ($issue->id === FALSE || ($issue->id = trim($issue->id)) == '') | ||||||
|  | 				{ | ||||||
|  | 					$status = 'error - no ID'; | ||||||
|  | 				} | ||||||
|  | 				else if ($issue->summary === FALSE || ($issue->summary = trim($issue->summary)) == '') | ||||||
|  | 				{ | ||||||
|  | 					$status = 'error - no summary'; | ||||||
|  | 				} | ||||||
|  | 				else if ($issue->description === FALSE || ($issue->description = trim($issue->description)) == '') | ||||||
|  | 				{ | ||||||
|  | 					$status = 'error - no description'; | ||||||
|  | 				} | ||||||
|  | 				else | ||||||
|  | 				{ | ||||||
|  | 					$status = ''; | ||||||
|  |  | ||||||
|  | 					if ($status == '') | ||||||
|  | 					{ | ||||||
|  | 						if ($this->issues->update_summary_and_description ($login['id'], $issue) === FALSE) | ||||||
|  | 						{ | ||||||
|  | 							$status = 'error - ' . $this->issues->getErrorMessage(); | ||||||
|  | 						} | ||||||
|  | 						else | ||||||
|  | 						{ | ||||||
|  | 							$status = 'ok'; | ||||||
|  | 						} | ||||||
|  | 					} | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		print $status; | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	private function _handle_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('ISSUE_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('issue_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('ISSUE_MSG_FAILED_TO_READ_FILE'), $filename); | ||||||
|  | 					$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	function file ($projectid = '', $issueid = '', $filename = '') | ||||||
|  | 	{ | ||||||
|  | 		$login = $this->login->getUser (); | ||||||
|  | 		if (CODEPOT_SIGNIN_COMPULSORY && $login['id'] == '') | ||||||
|  | 			redirect ("main/signin/" . $this->converter->AsciiTohex(current_url())); | ||||||
|  |  | ||||||
|  | 		if ($issueid == '' || $filename == '') | ||||||
|  | 		{ | ||||||
|  | 			$data['login'] = $login; | ||||||
|  | 			$data['message'] = 'INVALID PARAMETERS'; | ||||||
|  | 			$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 			return; | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		$filename = $this->converter->HexToAscii ($filename); | ||||||
|  |  | ||||||
|  | 		$part = explode (':', $filename); | ||||||
|  | 		if (count($part) == 3) | ||||||
|  | 		{ | ||||||
|  | 			if ($part[0] != '') $projectid = $part[0]; | ||||||
|  | 			if ($part[1] != '') $issueid = $part[1]; | ||||||
|  | 			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]); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  | |||||||
| @ -229,7 +229,7 @@ class Wiki extends Controller | |||||||
| 		$this->_handle_attachment ($login, $projectid, $wikiname, $name); | 		$this->_handle_attachment ($login, $projectid, $wikiname, $name); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	function _handle_attachment ($login, $projectid, $wikiname, $name) | 	private function _handle_attachment ($login, $projectid, $wikiname, $name) | ||||||
| 	{ | 	{ | ||||||
| 		$this->load->model ('ProjectModel', 'projects'); | 		$this->load->model ('ProjectModel', 'projects'); | ||||||
| 		$this->load->model ('WikiModel', 'wikis'); | 		$this->load->model ('WikiModel', 'wikis'); | ||||||
|  | |||||||
| @ -22,34 +22,49 @@ class IssueModel extends Model | |||||||
|  |  | ||||||
| 	function get ($userid, $project, $id) | 	function get ($userid, $project, $id) | ||||||
| 	{ | 	{ | ||||||
| 		$this->db->trans_start (); | 		$this->db->trans_begin (); // manual transaction. not using trans_start(). | ||||||
|  |  | ||||||
| 		$this->db->where ('projectid', $project->id); | 		$this->db->where ('projectid', $project->id); | ||||||
| 		$this->db->where ('id', $id); | 		$this->db->where ('id', $id); | ||||||
| 		$query = $this->db->get ('issue'); | 		$query = $this->db->get ('issue'); | ||||||
| 		if ($this->db->trans_status() === FALSE)  | 		if ($this->db->trans_status() === FALSE)  | ||||||
| 		{ | 		{ | ||||||
| 			$this->db->trans_complete (); | 			$this->db->trans_rollback (); | ||||||
| 			return FALSE; | 			return FALSE; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		$result = $query->result (); | 		$result = $query->result (); | ||||||
| 		if (empty($result)) | 		if (empty($result)) | ||||||
| 		{ | 		{ | ||||||
| 			$this->db->trans_complete (); | 			$this->db->trans_commit (); | ||||||
| 			return NULL; | 			return NULL; | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		$this->db->where ('projectid', $project->id); | ||||||
|  | 		$this->db->where ('issueid', $id); | ||||||
|  | 		$query = $this->db->get ('issue_file_list'); | ||||||
|  | 		if ($this->db->trans_status() === FALSE) | ||||||
|  | 		{ | ||||||
|  | 			$this->db->trans_rollback (); | ||||||
|  | 			return FALSE; | ||||||
|  | 		} | ||||||
|  | 		$files = $query->result(); | ||||||
|  |  | ||||||
| 		$this->db->where ('projectid', $project->id); | 		$this->db->where ('projectid', $project->id); | ||||||
| 		$this->db->where ('id', $id); | 		$this->db->where ('id', $id); | ||||||
| 		$this->db->order_by ('sno', 'asc'); | 		$this->db->order_by ('sno', 'asc'); | ||||||
| 		$query = $this->db->get ('issue_change'); | 		$query = $this->db->get ('issue_change'); | ||||||
|  | 		if ($this->db->trans_status() === FALSE) | ||||||
| 		$this->db->trans_complete (); | 		{ | ||||||
| 		if ($this->db->trans_status() === FALSE) return FALSE; | 			$this->db->trans_rollback (); | ||||||
|  | 			return FALSE; | ||||||
|  | 		} | ||||||
| 		$changes = $query->result(); | 		$changes = $query->result(); | ||||||
|  |  | ||||||
|  | 		$this->db->trans_commit (); | ||||||
|  |  | ||||||
| 		$result[0]->changes = $changes; | 		$result[0]->changes = $changes; | ||||||
|  | 		$result[0]->files = $files; | ||||||
| 		return $result[0]; | 		return $result[0]; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| @ -145,6 +160,25 @@ class IssueModel extends Model | |||||||
| 		return $query->result (); | 		return $query->result (); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	function getFile ($userid, $project, $issueid, $filename) | ||||||
|  | 	{ | ||||||
|  | 		$this->db->trans_start (); | ||||||
|  |  | ||||||
|  | 		$this->db->select ('filename,encname,md5sum,description,createdon,createdby'); | ||||||
|  | 		$this->db->where ('projectid', $project->id); | ||||||
|  | 		$this->db->where ('issueid', $issueid); | ||||||
|  | 		$this->db->where ('filename', $filename); | ||||||
|  |  | ||||||
|  | 		$query = $this->db->get ('issue_file_list'); | ||||||
|  | 		$this->db->trans_complete (); | ||||||
|  |  | ||||||
|  | 		if ($this->db->trans_status() === FALSE) return FALSE; | ||||||
|  | 		$result = $query->result (); | ||||||
|  | 		if (empty($result)) return NULL; | ||||||
|  |  | ||||||
|  | 		return $result[0]; | ||||||
|  | 	} | ||||||
|  |  | ||||||
| 	function create ($userid, $issue) | 	function create ($userid, $issue) | ||||||
| 	{ | 	{ | ||||||
| 		// TODO: check if userid can do this.. | 		// TODO: check if userid can do this.. | ||||||
| @ -554,6 +588,32 @@ class IssueModel extends Model | |||||||
| 		restore_error_handler (); | 		restore_error_handler (); | ||||||
| 		return $x; | 		return $x; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | 	function update_summary_and_description ($userid, $issue) | ||||||
|  | 	{ | ||||||
|  | 		// TODO: check if userid can do this.. | ||||||
|  | 		$this->db->trans_start (); | ||||||
|  | 		$this->db->where ('projectid', $issue->projectid); | ||||||
|  | 		$this->db->where ('id', $issue->id); | ||||||
|  | 		$this->db->set ('summary', $issue->summary); | ||||||
|  | 		$this->db->set ('description', $issue->description); | ||||||
|  | 		$this->db->set ('updatedon', date('Y-m-d H:i:s')); | ||||||
|  | 		$this->db->set ('updatedby', $userid); | ||||||
|  | 		$this->db->update ('issue'); | ||||||
|  |  | ||||||
|  | 		$this->db->set ('createdon', date('Y-m-d H:i:s')); | ||||||
|  | 		$this->db->set ('type',      'issue'); | ||||||
|  | 		$this->db->set ('action',    'update'); | ||||||
|  | 		$this->db->set ('projectid', $issue->projectid); | ||||||
|  | 		$this->db->set ('userid',    $userid); | ||||||
|  | 		$this->db->set ('message',   $issue->id); | ||||||
|  | 		$this->db->insert ('log'); | ||||||
|  |  | ||||||
|  | 		$this->db->trans_complete (); | ||||||
|  | 		if ($this->db->trans_status() === FALSE) return FALSE; | ||||||
|  |  | ||||||
|  | 		return $issue->id; | ||||||
|  | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| ?> | ?> | ||||||
|  | |||||||
| @ -58,14 +58,14 @@ function render_wiki(input_text) | |||||||
| 	creole_render_wiki_with_input_text ( | 	creole_render_wiki_with_input_text ( | ||||||
| 		input_text, | 		input_text, | ||||||
| 		"issue_home_mainarea_new_description_preview",  | 		"issue_home_mainarea_new_description_preview",  | ||||||
| 		"<?php print site_url()?>/wiki/show/<?php print $project->id?>/", | 		"<?php print site_url()?>/issue/show/<?php print $project->id?>/", | ||||||
| 		"<?php print site_url()?>/wiki/attachment0/<?php print $project->id?>/" | 		"<?php print site_url()?>/issue/file0/<?php print $project->id?>/" | ||||||
| 	); | 	); | ||||||
|  |  | ||||||
| 	prettyPrint (); | 	prettyPrint (); | ||||||
| } | } | ||||||
|  |  | ||||||
| var import_in_progress = false; | var work_in_progress = false; | ||||||
| var populated_file_obj = []; | var populated_file_obj = []; | ||||||
| var populated_file_max = 0; | var populated_file_max = 0; | ||||||
|  |  | ||||||
| @ -137,12 +137,12 @@ $(function () { | |||||||
| 			buttons: { | 			buttons: { | ||||||
|  |  | ||||||
| 				'<?php print $this->lang->line('OK')?>': function () { | 				'<?php print $this->lang->line('OK')?>': function () { | ||||||
| 					if (import_in_progress) return; | 					if (work_in_progress) return; | ||||||
|  |  | ||||||
| 					if (!!window.FormData) | 					if (!!window.FormData) | ||||||
| 					{ | 					{ | ||||||
| 						// FormData is supported | 						// FormData is supported | ||||||
| 						import_in_progress = true; | 						work_in_progress = true; | ||||||
|  |  | ||||||
| 						var form_data = new FormData(); | 						var form_data = new FormData(); | ||||||
|  |  | ||||||
| @ -178,7 +178,7 @@ $(function () { | |||||||
| 							cache: false, | 							cache: false, | ||||||
|  |  | ||||||
| 							success: function (data, textStatus, jqXHR) {  | 							success: function (data, textStatus, jqXHR) {  | ||||||
| 								import_in_progress = false; | 								work_in_progress = false; | ||||||
| 								$('#issue_home_mainarea_new_form').dialog('enable'); | 								$('#issue_home_mainarea_new_form').dialog('enable'); | ||||||
| 								$('#issue_home_mainarea_new_form').dialog('close'); | 								$('#issue_home_mainarea_new_form').dialog('close'); | ||||||
| 								if (data == 'ok')  | 								if (data == 'ok')  | ||||||
| @ -193,7 +193,7 @@ $(function () { | |||||||
| 							}, | 							}, | ||||||
|  |  | ||||||
| 							error: function (jqXHR, textStatus, errorThrown) {  | 							error: function (jqXHR, textStatus, errorThrown) {  | ||||||
| 								import_in_progress = false; | 								work_in_progress = false; | ||||||
| 								$('#issue_home_mainarea_new_form').dialog('enable'); | 								$('#issue_home_mainarea_new_form').dialog('enable'); | ||||||
| 								$('#issue_home_mainarea_new_form').dialog('close'); | 								$('#issue_home_mainarea_new_form').dialog('close'); | ||||||
| 								var errmsg = ''; | 								var errmsg = ''; | ||||||
| @ -210,14 +210,14 @@ $(function () { | |||||||
| 					} | 					} | ||||||
| 				}, | 				}, | ||||||
| 				'<?php print $this->lang->line('Cancel')?>': function () { | 				'<?php print $this->lang->line('Cancel')?>': function () { | ||||||
| 					if (import_in_progress) return; | 					if (work_in_progress) return; | ||||||
| 					$('#issue_home_mainarea_new_form').dialog('close'); | 					$('#issue_home_mainarea_new_form').dialog('close'); | ||||||
| 				} | 				} | ||||||
| 			}, | 			}, | ||||||
|  |  | ||||||
| 			beforeClose: function() {  | 			beforeClose: function() {  | ||||||
| 				// if importing is in progress, prevent dialog closing | 				// if importing is in progress, prevent dialog closing | ||||||
| 				return !import_in_progress; | 				return !work_in_progress; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	); | 	); | ||||||
|  | |||||||
| @ -21,8 +21,28 @@ | |||||||
| <script type="text/javascript" src="<?php print base_url_make('/js/jquery-ui.min.js')?>"></script> | <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')?>" /> | <link type="text/css" rel="stylesheet" href="<?php print base_url_make('/css/jquery-ui.css')?>" /> | ||||||
|  |  | ||||||
|  | <?php | ||||||
|  | $hex_issue_id = $this->converter->AsciiToHex ($issue->id); | ||||||
|  | ?> | ||||||
|  |  | ||||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||||
|  |  | ||||||
|  | function show_alert (outputMsg, titleMsg)  | ||||||
|  | { | ||||||
|  | 	$('#issue_show_mainarea_alert').html(outputMsg).dialog({ | ||||||
|  | 		title: titleMsg, | ||||||
|  | 		resizable: true, | ||||||
|  | 		modal: true, | ||||||
|  | 		width: 'auto', | ||||||
|  | 		height: 'auto', | ||||||
|  | 		buttons: { | ||||||
|  | 			"OK": function () { | ||||||
|  | 				$(this).dialog("close"); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	}); | ||||||
|  | } | ||||||
|  |  | ||||||
| $.widget("ui.combobox", { | $.widget("ui.combobox", { | ||||||
| 	_create: function() { | 	_create: function() { | ||||||
| 		var self = this; | 		var self = this; | ||||||
| @ -78,7 +98,95 @@ $.widget("ui.combobox", { | |||||||
| }); | }); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | var work_in_progress = false; | ||||||
|  |  | ||||||
| $(function () {  | $(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_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(); | ||||||
|  |  | ||||||
|  | 						form_data.append ('issue_edit_id', '<?php print $issue->id; ?>'); | ||||||
|  | 						form_data.append ('issue_edit_summary', $('#issue_show_mainarea_edit_summary').val()); | ||||||
|  | 						form_data.append ('issue_edit_description', $('#issue_show_mainarea_edit_description').val()); | ||||||
|  |  | ||||||
|  | 						$('#issue_show_mainarea_edit_form').dialog('disable'); | ||||||
|  | 						$.ajax({ | ||||||
|  | 							url: codepot_merge_path('<?php print site_url() ?>', '<?php print "/issue/xhr_update/{$project->id}"; ?>'), | ||||||
|  | 							type: 'POST', | ||||||
|  | 							data: form_data, | ||||||
|  | 							mimeType: 'multipart/form-data', | ||||||
|  | 							contentType: false, | ||||||
|  | 							processData: false, | ||||||
|  | 							cache: false, | ||||||
|  |  | ||||||
|  | 							success: function (data, textStatus, jqXHR) {  | ||||||
|  | 								work_in_progress = false; | ||||||
|  | 								$('#issue_show_mainarea_edit_form').dialog('enable'); | ||||||
|  | 								$('#issue_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 "/issue/show/{$project->id}/{$hex_issue_id}"; ?>')); | ||||||
|  | 								} | ||||||
|  | 								else | ||||||
|  | 								{ | ||||||
|  | 									show_alert ('<pre>' + codepot_htmlspecialchars(data) + '</pre>', "<?php print $this->lang->line('Error')?>"); | ||||||
|  | 								} | ||||||
|  | 							}, | ||||||
|  |  | ||||||
|  | 							error: function (jqXHR, textStatus, errorThrown) {  | ||||||
|  | 								work_in_progress = false; | ||||||
|  | 								$('#issue_show_mainarea_edit_form').dialog('enable'); | ||||||
|  | 								$('#issue_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; | ||||||
|  | 					$('#issue_show_mainarea_edit_form').dialog('close'); | ||||||
|  | 				} | ||||||
|  | 			}, | ||||||
|  |  | ||||||
|  | 			beforeClose: function() {  | ||||||
|  | 				// if importing is in progress, prevent dialog closing | ||||||
|  | 				return !work_in_progress; | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 	); | ||||||
|  | <?php endif; ?> | ||||||
|  |  | ||||||
| 	/* | 	/* | ||||||
| 	$("#issue_change_type").combobox(); | 	$("#issue_change_type").combobox(); | ||||||
| 	$("#issue_change_status").combobox(); | 	$("#issue_change_status").combobox(); | ||||||
| @ -117,6 +225,15 @@ $(function () { | |||||||
| 		}  | 		}  | ||||||
| 	);  | 	);  | ||||||
|  |  | ||||||
|  | <?php if (isset($login['id']) && $login['id'] != ''): ?> | ||||||
|  | 	$("#issue_show_mainarea_edit_button").button().click ( | ||||||
|  | 		function () {  | ||||||
|  | 			$('#issue_show_mainarea_edit_form').dialog('open');  | ||||||
|  | 			return false; // prevent the default behavior | ||||||
|  | 		} | ||||||
|  | 	); | ||||||
|  | <?php endif; ?> | ||||||
|  |  | ||||||
| 	$("#issue_show_mainarea_change_form_open").button().click ( | 	$("#issue_show_mainarea_change_form_open").button().click ( | ||||||
| 		function () {  | 		function () {  | ||||||
| 			$('#issue_show_mainarea_change_form').dialog('open');  | 			$('#issue_show_mainarea_change_form').dialog('open');  | ||||||
| @ -176,7 +293,6 @@ $(function () { | |||||||
| <!----------------------------------------------------------------------------> | <!----------------------------------------------------------------------------> | ||||||
|  |  | ||||||
| <?php | <?php | ||||||
| $hexid = $this->converter->AsciiToHex ($issue->id); |  | ||||||
| $this->load->view ( | $this->load->view ( | ||||||
| 	'projectbar', | 	'projectbar', | ||||||
| 	array ( | 	array ( | ||||||
| @ -190,8 +306,8 @@ $this->load->view ( | |||||||
|  |  | ||||||
| 		'ctxmenuitems' => array ( | 		'ctxmenuitems' => array ( | ||||||
| 			array ("issue/create/{$project->id}", '<i class="fa fa-plus"></i> ' . $this->lang->line('New')), | 			array ("issue/create/{$project->id}", '<i class="fa fa-plus"></i> ' . $this->lang->line('New')), | ||||||
| 			array ("issue/update/{$project->id}/{$hexid}", '<i class="fa fa-edit"></i> ' . $this->lang->line('Edit')), | 			array ("issue/update/{$project->id}/{$hex_issue_id}", '<i class="fa fa-edit"></i> ' . $this->lang->line('Edit')), | ||||||
| 			array ("issue/delete/{$project->id}/{$hexid}", '<i class="fa fa-trash"></i> ' . $this->lang->line('Delete')) | 			array ("issue/delete/{$project->id}/{$hex_issue_id}", '<i class="fa fa-trash"></i> ' . $this->lang->line('Delete')) | ||||||
| 		) | 		) | ||||||
| 	) | 	) | ||||||
| ); | ); | ||||||
| @ -237,6 +353,14 @@ $this->load->view ( | |||||||
| 			print ': ';  | 			print ': ';  | ||||||
| 			print htmlspecialchars($issue->owner); | 			print htmlspecialchars($issue->owner); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | 		if (isset($login['id']) && $login['id'] != '') | ||||||
|  | 		{ | ||||||
|  | 			print ' | '; | ||||||
|  | 			print '<a id="issue_show_mainarea_edit_button" href="#">'; | ||||||
|  | 			print $this->lang->line('Edit'); | ||||||
|  | 			print '</a>'; | ||||||
|  | 		} | ||||||
| 	?> | 	?> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| @ -246,6 +370,28 @@ $this->load->view ( | |||||||
| </pre> | </pre> | ||||||
| </div> <!-- issue_show_mainarea_description --> | </div> <!-- issue_show_mainarea_description --> | ||||||
|  |  | ||||||
|  | <div id="issue_show_mainarea_file_list"> | ||||||
|  | <?php if (!empty($issue->files)): ?> | ||||||
|  | <ul> | ||||||
|  | <?php | ||||||
|  | 	 | ||||||
|  | 	foreach ($issue->files as $f) | ||||||
|  | 	{ | ||||||
|  | 		$hexname = $this->converter->AsciiToHex ($f->filename); | ||||||
|  | 		print '<li>'; | ||||||
|  | 		print anchor ( | ||||||
|  | 			"issue/file/{$project->id}/{$issue->id}/{$hexname}",  | ||||||
|  | 			htmlspecialchars($f->filename) | ||||||
|  | 		); | ||||||
|  |  | ||||||
|  | 		if (!empty($f->description)) printf ('- %s', htmlspecialchars($f->description)); | ||||||
|  | 		print '</li>'; | ||||||
|  | 	} | ||||||
|  | ?> | ||||||
|  | </ul> | ||||||
|  | <?php endif; ?> | ||||||
|  | </div> | ||||||
|  |  | ||||||
| <div id="issue_show_mainarea_changes"> | <div id="issue_show_mainarea_changes"> | ||||||
| <?php | <?php | ||||||
| 	$commentno = 0; | 	$commentno = 0; | ||||||
| @ -376,11 +522,41 @@ $this->load->view ( | |||||||
| 	print '</table>'; | 	print '</table>'; | ||||||
| ?> | ?> | ||||||
|  |  | ||||||
|  |  | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | <?php if (isset($login['id']) && $login['id'] != ''): ?> | ||||||
|  | <div id='issue_show_mainarea_edit_form'> | ||||||
|  | 	<div style='line-height: 2em;'> | ||||||
|  | 		<?php | ||||||
|  | 		print form_dropdown ( | ||||||
|  | 			'issue_show_edit_type',  | ||||||
|  | 			$issue_type_array, | ||||||
|  | 			set_value('issue_show_edit_type', $issue->type), | ||||||
|  | 			'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); ?>'/> | ||||||
|  | 	</div> | ||||||
|  |  | ||||||
|  | 	<div id='issue_show_mainarea_edit_description_tabs' style='width:100%;'> | ||||||
|  | 		<ul> | ||||||
|  | 			<li><a href='#issue_show_mainarea_edit_description_input'><?php print $this->lang->line('Description'); ?></a></li> | ||||||
|  | 			<li><a href='#issue_show_mainarea_edit_description_preview'><?php print $this->lang->line('Preview'); ?></a></li> | ||||||
|  | 		</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> | ||||||
|  | 		</div> | ||||||
|  | 		<div id='issue_show_mainarea_edit_description_preview' class='form_input_preview'> | ||||||
|  | 		</div> | ||||||
|  | 	</div> | ||||||
|  | </div> | ||||||
|  | <?php endif; ?> | ||||||
|  |  | ||||||
| <div id="issue_show_mainarea_change_form"> | <div id="issue_show_mainarea_change_form"> | ||||||
|  |  | ||||||
| 	<?php print form_open("issue/show/{$project->id}/{$hexid}/", 'id="issue_change_form"')?> | 	<?php print form_open("issue/show/{$project->id}/{$hex_issue_id}/", 'id="issue_change_form"')?> | ||||||
|  |  | ||||||
| 		<input type='hidden' name='issue_change' id='issue_change' value='change' /> | 		<input type='hidden' name='issue_change' id='issue_change' value='change' /> | ||||||
|  |  | ||||||
| @ -462,6 +638,8 @@ $this->load->view ( | |||||||
| 	<?php print $this->lang->line ('ISSUE_MSG_CONFIRM_UNDO')?> | 	<?php print $this->lang->line ('ISSUE_MSG_CONFIRM_UNDO')?> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | <div id='issue_show_mainarea_alert'></div> | ||||||
|  |  | ||||||
| </div> <!-- issue_show_mainarea --> | </div> <!-- issue_show_mainarea --> | ||||||
|  |  | ||||||
| <div class='footer-pusher'></div> <!-- for sticky footer --> | <div class='footer-pusher'></div> <!-- for sticky footer --> | ||||||
| @ -476,8 +654,8 @@ $this->load->view ( | |||||||
|  |  | ||||||
|  |  | ||||||
| <?php  | <?php  | ||||||
| 	$creole_base = site_url() . "/wiki/show/{$project->id}/";  | 	$creole_base = site_url() . "/issue/show/{$project->id}/{$issue->id}/";  | ||||||
| 	$creole_attachment_base = site_url() . "/wiki/attachment0/{$project->id}/";  | 	$creole_attachment_base = site_url() . "/issue/file/{$project->id}/{$issue->id}/";  | ||||||
| ?> | ?> | ||||||
|  |  | ||||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||||
|  | |||||||
| @ -235,3 +235,33 @@ | |||||||
| .ui-tabs .ui-tabs-nav li.ui-state-active { | .ui-tabs .ui-tabs-nav li.ui-state-active { | ||||||
| 	border-bottom: 1px solid #fbd850 !important; | 	border-bottom: 1px solid #fbd850 !important; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | /*----------------------------------------------- | ||||||
|  |  * issue home show - edit issue dialog | ||||||
|  |  *-----------------------------------------------*/ | ||||||
|  | #issue_show_mainarea_edit_description_tabs { | ||||||
|  | 	border: none !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #issue_show_mainarea_edit_description_tabs .ui-tabs-panel { | ||||||
|  | 	padding: 0.2em 0em 0em 0em !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #issue_show_mainarea_edit_description_tabs .ui-widget-header { | ||||||
|  | 	border: none !important; | ||||||
|  | 	background: none !important; | ||||||
|  | 	padding: 0em !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #issue_show_mainarea_edit_description_tabs .ui-tabs-nav { | ||||||
|  | 	padding: 0em !important; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /* #issue_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; | ||||||
|  | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user