renewed the code diff view and enhanced the code controller and the subversion model as necessary
This commit is contained in:
		| @ -915,7 +915,6 @@ class Code extends Controller | |||||||
| 		print codepot_json_encode ($result); | 		print codepot_json_encode ($result); | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	function history ($projectid = '', $path = '', $rev = SVN_REVISION_HEAD) | 	function history ($projectid = '', $path = '', $rev = SVN_REVISION_HEAD) | ||||||
| 	{ | 	{ | ||||||
| 		$this->load->model ('ProjectModel', 'projects'); | 		$this->load->model ('ProjectModel', 'projects'); | ||||||
| @ -1175,8 +1174,15 @@ class Code extends Controller | |||||||
| 				$data['message'] = 'Failed to get diff'; | 				$data['message'] = 'Failed to get diff'; | ||||||
| 				$this->load->view ($this->VIEW_ERROR, $data); | 				$this->load->view ($this->VIEW_ERROR, $data); | ||||||
| 			} | 			} | ||||||
|  | 			else if (($head_rev = $this->subversion->getHeadRev ($projectid, $path, $rev1)) === FALSE) | ||||||
|  | 			{ | ||||||
|  | 				$data['project'] = $project; | ||||||
|  | 				$data['message'] = 'Failed to get head revision'; | ||||||
|  | 				$this->load->view ($this->VIEW_ERROR, $data); | ||||||
|  | 			} | ||||||
| 			else | 			else | ||||||
| 			{ | 			{ | ||||||
|  | 				$file['head_rev'] = $head_rev; | ||||||
| 				$file['prev_rev'] = | 				$file['prev_rev'] = | ||||||
| 					$this->subversion->getPrevRev ($projectid, $path, $file['created_rev']); | 					$this->subversion->getPrevRev ($projectid, $path, $file['created_rev']); | ||||||
| 				$file['next_rev'] = | 				$file['next_rev'] = | ||||||
|  | |||||||
| @ -146,6 +146,12 @@ class SubversionModel extends Model | |||||||
| 				$fileinfo['last_author'] = ''; | 				$fileinfo['last_author'] = ''; | ||||||
| 			else | 			else | ||||||
| 				$fileinfo['last_author'] = $info0['last_changed_author']; | 				$fileinfo['last_author'] = $info0['last_changed_author']; | ||||||
|  |  | ||||||
|  | 			if (array_key_exists ('last_changed_date', $info0) === FALSE) | ||||||
|  | 				$fileinfo['last_changed_date'] = ''; | ||||||
|  | 			else | ||||||
|  | 				$fileinfo['last_changed_date'] = $info0['last_changed_date']; | ||||||
|  |  | ||||||
| 			$fileinfo['content'] = $list; | 			$fileinfo['content'] = $list; | ||||||
| 			return $fileinfo; | 			return $fileinfo; | ||||||
| 		} | 		} | ||||||
| @ -310,7 +316,6 @@ class SubversionModel extends Model | |||||||
| 		return TRUE; | 		return TRUE; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  |  | ||||||
| 	function importFiles ($projectid, $path, $committer, $commit_message, $files, $uploader) | 	function importFiles ($projectid, $path, $committer, $commit_message, $files, $uploader) | ||||||
| 	{ | 	{ | ||||||
| 		$this->errmsg = ''; | 		$this->errmsg = ''; | ||||||
| @ -1090,6 +1095,16 @@ class SubversionModel extends Model | |||||||
| 		} | 		} | ||||||
| 		fclose ($diff); | 		fclose ($diff); | ||||||
|  |  | ||||||
|  | 		$log = @svn_log ($info1[0]['url'], $fileinfo['created_rev'], $fileinfo['created_rev'], 1, SVN_DISCOVER_CHANGED_PATHS); | ||||||
|  | 		if ($log === FALSE) $log = @svn_log ($workurl1, $fileinfo['created_rev'], $fileinfo['created_rev'], 1, SVN_DISCOVER_CHANGED_PATHS); | ||||||
|  | 		if ($log === FALSE) $fileinfo['logmsg'] = ''; | ||||||
|  | 		else $fileinfo['logmsg'] = (count($log) > 0)? $log[0]['msg']: ''; | ||||||
|  |  | ||||||
|  | 		$log = @svn_log ($info2[0]['url'], $fileinfo['against']['created_rev'], $fileinfo['against']['created_rev'], 1, SVN_DISCOVER_CHANGED_PATHS); | ||||||
|  | 		if ($log === FALSE)  $log = @svn_log ($workurl2, $fileinfo['against']['created_rev'], $fileinfo['against']['created_rev'], 1, SVN_DISCOVER_CHANGED_PATHS); | ||||||
|  | 		if ($log === FALSE) $fileinfo['logmsg'] = ''; | ||||||
|  | 		else $fileinfo['against']['logmsg'] = (count($log) > 0)? $log[0]['msg']: ''; | ||||||
|  |  | ||||||
| 		return $fileinfo; | 		return $fileinfo; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
|  | |||||||
| @ -227,7 +227,6 @@ $this->load->view ( | |||||||
|  |  | ||||||
| 		print '<div class="metadata-menu">'; | 		print '<div class="metadata-menu">'; | ||||||
|  |  | ||||||
| 		 |  | ||||||
| 		$detail_anchor_text = $this->lang->line('Details'); | 		$detail_anchor_text = $this->lang->line('Details'); | ||||||
| 		$history_anchor_text = '<i class="fa fa-history"></i> ' . $this->lang->line('History'); | 		$history_anchor_text = '<i class="fa fa-history"></i> ' . $this->lang->line('History'); | ||||||
| 		$download_anchor_text = '<i class="fa fa-download"></i> ' . $this->lang->line('Download'); | 		$download_anchor_text = '<i class="fa fa-download"></i> ' . $this->lang->line('Download'); | ||||||
|  | |||||||
| @ -21,8 +21,115 @@ | |||||||
| <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_headpath = $this->converter->AsciiTohex ($headpath); | ||||||
|  |  | ||||||
|  | if ($revision1 <= 0) | ||||||
|  | { | ||||||
|  | 	$revreq = ''; | ||||||
|  | 	$revreqroot = ''; | ||||||
|  | 	$history_path = "/code/history/{$project->id}/{$hex_headpath}"; | ||||||
|  | } | ||||||
|  | else | ||||||
|  | { | ||||||
|  | 	$revreq = "/{$file['created_rev']}"; | ||||||
|  | 	$revreqroot = '/' . $this->converter->AsciiToHex ('.') . $revreq; | ||||||
|  | 	if ($hex_headpath == '') $revtrailer = $revreqroot; | ||||||
|  | 	else $revtrailer = "/{$hex_headpath}{$revreq}"; | ||||||
|  | 	$history_path = "/code/history/{$project->id}{$revtrailer}"; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | $revreq_against = "/{$file['against']['created_rev']}"; | ||||||
|  | $revreqroot_against = '/' . $this->converter->AsciiToHex ('.') . $revreq_against; | ||||||
|  | if ($hex_headpath == '') $revtrailer_against = $revreqroot_against; | ||||||
|  | else $revtrailer_against = "/{$hex_headpath}{$revreq_against}"; | ||||||
|  | $history_against_path = "/code/history/{$project->id}{$revtrailer_against}"; | ||||||
|  |  | ||||||
|  | $head_revision_text = '<i class="fa fa-exclamation-triangle" style="color:#CC2222"></i> ' . $this->lang->line('Head revision'); | ||||||
|  | $history_anchor_text = '<i class="fa fa-history"></i> ' . $this->lang->line('History'); | ||||||
|  |  | ||||||
|  | $blame_anchor_text = '<i class="fa fa-bomb"></i> ' . $this->lang->line('Blame'); | ||||||
|  | $download_anchor_text = '<i class="fa fa-download"></i> ' . $this->lang->line('Download'); | ||||||
|  |  | ||||||
|  | if ($fullview) | ||||||
|  | { | ||||||
|  | 	$diff_view = 'fulldiff'; | ||||||
|  | 	$altdiff_view = 'diff'; | ||||||
|  |  | ||||||
|  | 	$diff_anchor_text = '<i class="fa fa-tasks"></i> ' . $this->lang->line('Full Difference'); | ||||||
|  | 	$altdiff_anchor_text = '<i class="fa fa-server"></i> ' . $this->lang->line('Difference'); | ||||||
|  | } | ||||||
|  | else | ||||||
|  | { | ||||||
|  | 	$diff_view = 'diff'; | ||||||
|  | 	$altdiff_view = 'fulldiff'; | ||||||
|  |  | ||||||
|  | 	$diff_anchor_text = '<i class="fa fa-server"></i> ' . $this->lang->line('Difference'); | ||||||
|  | 	$altdiff_anchor_text = '<i class="fa fa-tasks"></i> ' . $this->lang->line('Full Difference'); | ||||||
|  | } | ||||||
|  | ?> | ||||||
|  |  | ||||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||||
| $(function() { | $(function() { | ||||||
|  | 	$('#code_diff_metadata').accordion({ | ||||||
|  | 		collapsible: true | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | 	$('#code_diff_metadata_against').accordion({ | ||||||
|  | 		collapsible: true | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	<?php if ($file['created_rev'] != $file['head_rev']): ?> | ||||||
|  | 		$("#code_diff_headrev_button").button().click (function() { | ||||||
|  | 			$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/{$diff_view}/{$project->id}/${hex_headpath}"; ?>')); | ||||||
|  | 			return false; | ||||||
|  | 		}); | ||||||
|  | 	<?php endif; ?> | ||||||
|  |  | ||||||
|  | 	$("#code_diff_detail_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/file/{$project->id}/${hex_headpath}{$revreq}"; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  | 	$("#code_diff_blame_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/blame/{$project->id}/${hex_headpath}{$revreq}"; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  | 	$("#code_diff_diff_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/{$altdiff_view}/{$project->id}/${hex_headpath}{$revreq}"; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  | 	$("#code_diff_history_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print $history_path; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  | 	$("#code_diff_download_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/fetch/{$project->id}/${hex_headpath}{$revreq}"; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 	$("#code_diff_detail_against_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/file/{$project->id}/${hex_headpath}{$revreq_against}"; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  | 	$("#code_diff_blame_against_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/blame/{$project->id}/${hex_headpath}{$revreq_against}"; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  | 	$("#code_diff_diff_against_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/{$altdiff_view}/{$project->id}/${hex_headpath}{$revreq}"; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  | 	$("#code_diff_history_against_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print $history_against_path; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  | 	$("#code_diff_download_against_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/fetch/{$project->id}/${hex_headpath}{$revreq_against}"; ?>')); | ||||||
|  | 		return false; | ||||||
|  | 	}); | ||||||
|  |  | ||||||
| 	prettyPrint(); | 	prettyPrint(); | ||||||
| }); | }); | ||||||
| </script> | </script> | ||||||
| @ -105,45 +212,77 @@ $this->load->view ( | |||||||
| 	<div style="clear: both;"></div> | 	<div style="clear: both;"></div> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <div class="menu" id="code_diff_mainarea_menu"> | <div id='code_diff_metadata_container'> | ||||||
| <?php |  | ||||||
| 	$history_anchor_text = '<i class="fa fa-history"></i> ' . $this->lang->line('History'); |  | ||||||
| 	$diff_anchor_text = '<i class="fa fa-server"></i> ' . $this->lang->line('Difference'); |  | ||||||
| 	$fulldiff_anchor_text = '<i class="fa fa-tasks"></i> ' . $this->lang->line('Full Difference'); |  | ||||||
| 	$blame_anchor_text = '<i class="fa fa-bomb"></i> ' . $this->lang->line('Blame'); |  | ||||||
|  |  | ||||||
| 	$xpar = $this->converter->AsciiTohex ($headpath); | 	<div id='code_diff_metadata_against' class='collapsible-box'> | ||||||
| 	print anchor ( | 		<div id='code_diff_metadata_against_header' class='collapsible-box-header'> | ||||||
| 		"code/file/{$project->id}/{$xpar}{$revreq}", | 			<?php | ||||||
| 		$this->lang->line('Details')); | 			print '<div class="metadata-committer">'; | ||||||
| 	print ' | '; | 			$user_icon_url = codepot_merge_path (site_url(), '/user/icon/' . $this->converter->AsciiToHex($file['against']['last_author'])); | ||||||
| 	print anchor ("code/blame/{$project->id}/{$xpar}{$revreq}", $blame_anchor_text); | 			print "<img src='{$user_icon_url}' class='metadata-committer-icon' />"; | ||||||
| 		 | 			print htmlspecialchars ($file['against']['last_author']); | ||||||
| 	print ' | '; | 			print '</div>'; | ||||||
|  |  | ||||||
| 	if (!$fullview) | 			print '<div class="metadata-menu">'; | ||||||
| 	{ | 			print anchor ("#", $this->lang->line('Details'), 'id="code_diff_detail_against_button"'); | ||||||
| 		print anchor ("code/fulldiff/{$project->id}/{$xpar}{$revreq}", $fulldiff_anchor_text); | 			print anchor ("#", $blame_anchor_text, 'id="code_diff_blame_against_button"'); | ||||||
| 	} | 			print anchor ("#", $altdiff_anchor_text, 'id="code_diff_diff_against_button"'); | ||||||
| 	else | 			print anchor ("#", $history_anchor_text, 'id="code_diff_history_against_button"'); | ||||||
| 	{ | 			print anchor ("#", $download_anchor_text, 'id="code_diff_download_against_button"'); | ||||||
| 		print anchor ("code/diff/{$project->id}/{$xpar}{$revreq}", $diff_anchor_text); | 			print '</div>'; | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	print ' | '; | 			print '<div class="metadata-commit-date">'; | ||||||
|  | 			printf ('[%s] ', $file['against']['created_rev']); | ||||||
|  | 			print strftime ('%Y-%m-%d %H:%M:%S %z', $file['time_t']); | ||||||
|  | 			print '</div>' | ||||||
|  | 			?> | ||||||
|  |  | ||||||
| 	if ($revision1 > 0) | 			<div style='clear: both'></div> | ||||||
| 	{ | 		</div> | ||||||
| 		if ($xpar == '') $revtrailer = $revreqroot; |  | ||||||
| 		else $revtrailer = "/{$xpar}{$revreq}"; | 		<div id='code_diff_metadata_against_body'> | ||||||
| 		print anchor ("code/history/{$project->id}{$revtrailer}", $history_anchor_text); | 			<pre class='pre-wrapped'><?php print htmlspecialchars ($file['against']['logmsg']); ?></pre> | ||||||
| 	} | 		</div> | ||||||
| 	else | 	</div> | ||||||
| 	{ |  | ||||||
| 		print anchor ("code/history/{$project->id}/{$xpar}", $history_anchor_text); | 	<div id='code_diff_metadata' class='collapsible-box'> | ||||||
| 	} | 		<div id='code_diff_metadata_header' class='collapsible-box-header'> | ||||||
| ?> | 			<?php | ||||||
| </div> <!-- code_diff_mainarea_menu --> | 			print '<div class="metadata-committer">'; | ||||||
|  | 			$user_icon_url = codepot_merge_path (site_url(), '/user/icon/' . $this->converter->AsciiToHex($file['last_author'])); | ||||||
|  | 			print "<img src='{$user_icon_url}' class='metadata-committer-icon' />"; | ||||||
|  | 			print htmlspecialchars ($file['last_author']); | ||||||
|  | 			print '</div>'; | ||||||
|  |  | ||||||
|  | 			print '<div class="metadata-menu">'; | ||||||
|  | 			if ($file['created_rev'] != $file['head_rev'])  | ||||||
|  | 			{ | ||||||
|  | 				print anchor ('#', $head_revision_text, 'id="code_diff_headrev_button"'); | ||||||
|  | 			} | ||||||
|  |  | ||||||
|  | 			print anchor ("#", $this->lang->line('Details'), 'id="code_diff_detail_button"'); | ||||||
|  | 			print anchor ("#", $blame_anchor_text, 'id="code_diff_blame_button"'); | ||||||
|  | 			print anchor ("#", $altdiff_anchor_text, 'id="code_diff_diff_button"'); | ||||||
|  | 			print anchor ("#", $history_anchor_text, 'id="code_diff_history_button"'); | ||||||
|  | 			print anchor ("#", $download_anchor_text, 'id="code_diff_download_button"'); | ||||||
|  | 			print '</div>'; | ||||||
|  |  | ||||||
|  | 			print '<div class="metadata-commit-date">'; | ||||||
|  | 			printf ('[%s] ', $file['created_rev']); | ||||||
|  | 			print strftime ('%Y-%m-%d %H:%M:%S %z', $file['time_t']); | ||||||
|  | 			print '</div>' | ||||||
|  | 			?> | ||||||
|  |  | ||||||
|  | 			<div style='clear: both'></div> | ||||||
|  | 		</div> | ||||||
|  |  | ||||||
|  | 		<div id='code_diff_metadata_body'> | ||||||
|  | 			<pre class='pre-wrapped'><?php print htmlspecialchars ($file['logmsg']); ?></pre> | ||||||
|  | 		</div> | ||||||
|  | 	</div> | ||||||
|  |  | ||||||
|  | 	<div style='clear: both;'></div> | ||||||
|  | </div> | ||||||
|  |  | ||||||
| <?php  | <?php  | ||||||
| 	$fileext = substr(strrchr($file['name'], '.'), 1); | 	$fileext = substr(strrchr($file['name'], '.'), 1); | ||||||
| @ -151,250 +290,67 @@ $this->load->view ( | |||||||
| ?> | ?> | ||||||
|  |  | ||||||
| <div class="result" id="code_diff_result"> | <div class="result" id="code_diff_result"> | ||||||
| <?php | 	<?php | ||||||
|  | 	function format_diff2 ($a, $b, $css_class) | ||||||
| function format_diff2 ($a, $b, $css_class) |  | ||||||
| { |  | ||||||
| 	$ms = codepot_find_matching_sequences ($a, $b); |  | ||||||
| 	$ms_count = count($ms); |  | ||||||
|  |  | ||||||
| 	$k = 0; |  | ||||||
| 	$cc = '';  |  | ||||||
|  |  | ||||||
| 	if ($css_class == 'diffchangedold') |  | ||||||
| 	{ | 	{ | ||||||
| 		for ($i = 0; $i < $ms_count; $i++) | 		$ms = codepot_find_matching_sequences ($a, $b); | ||||||
|  | 		$ms_count = count($ms); | ||||||
|  |  | ||||||
|  | 		$k = 0; | ||||||
|  | 		$cc = '';  | ||||||
|  |  | ||||||
|  | 		if ($css_class == 'diffchangedold') | ||||||
| 		{ | 		{ | ||||||
| 			list($mp1, $mp2, $ml) = $ms[$i]; | 			for ($i = 0; $i < $ms_count; $i++) | ||||||
| 			if ($mp1 > $k) | 			{ | ||||||
|  | 				list($mp1, $mp2, $ml) = $ms[$i]; | ||||||
|  | 				if ($mp1 > $k) | ||||||
|  | 				{ | ||||||
|  | 					$cc .= sprintf ('<span class="%s">', $css_class); | ||||||
|  | 					$cc .= htmlspecialchars(substr($a, $k, $mp1 - $k)); | ||||||
|  | 					$cc .= '</span>'; | ||||||
|  | 				} | ||||||
|  | 				$cc .= htmlspecialchars(substr($a, $mp1, $ml)); | ||||||
|  | 				$k = $mp1 + $ml; | ||||||
|  | 			} | ||||||
|  | 			if ($k < strlen($a))  | ||||||
| 			{ | 			{ | ||||||
| 				$cc .= sprintf ('<span class="%s">', $css_class); | 				$cc .= sprintf ('<span class="%s">', $css_class); | ||||||
| 				$cc .= htmlspecialchars(substr($a, $k, $mp1 - $k)); | 				$cc .= htmlspecialchars(substr($a, $k)); | ||||||
| 				$cc .= '</span>'; | 				$cc .= '</span>'; | ||||||
| 			} | 			} | ||||||
| 			$cc .= htmlspecialchars(substr($a, $mp1, $ml)); |  | ||||||
| 			$k = $mp1 + $ml; |  | ||||||
| 		} |  | ||||||
| 		if ($k < strlen($a))  |  | ||||||
| 		{ |  | ||||||
| 			$cc .= sprintf ('<span class="%s">', $css_class); |  | ||||||
| 			$cc .= htmlspecialchars(substr($a, $k)); |  | ||||||
| 			$cc .= '</span>'; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		for ($i = 0; $i < $ms_count; $i++) |  | ||||||
| 		{ |  | ||||||
| 			list($mp1, $mp2, $ml) = $ms[$i]; |  | ||||||
| 			if ($mp2 > $k) |  | ||||||
| 			{ |  | ||||||
| 				$cc .= sprintf ('<span class="%s">', $css_class); |  | ||||||
| 				$cc .= htmlspecialchars(substr($b, $k, $mp2 - $k)); |  | ||||||
| 				$cc .= '</span>'; |  | ||||||
| 			} |  | ||||||
| 			$cc .= htmlspecialchars(substr($b, $mp2, $ml)); |  | ||||||
| 			$k = $mp2 + $ml; |  | ||||||
| 		} |  | ||||||
| 		if ($k < strlen($b))  |  | ||||||
| 		{ |  | ||||||
| 			$cc .= sprintf ('<span class="%s">', $css_class); |  | ||||||
| 			$cc .= htmlspecialchars(substr($b, $k)); |  | ||||||
| 			$cc .= '</span>'; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	return $cc; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| /* |  | ||||||
| function format_diff ($a, $b, $css_class) |  | ||||||
| { |  | ||||||
| 	if ($b == '') return htmlspecialchars($a); |  | ||||||
|  |  | ||||||
| 	// TODO: word by word comparison to be less position dependent  |  | ||||||
| 	$cc = ''; |  | ||||||
| 	$diffstart = -1; |  | ||||||
| 	$alen = strlen($a); |  | ||||||
| 	$blen = strlen($b); |  | ||||||
|  |  | ||||||
| 	for ($i = 0; $i < $alen && $i < $blen; $i++) |  | ||||||
| 	{ |  | ||||||
| 		if ($a[$i] == $b[$i]) |  | ||||||
| 		{ |  | ||||||
| 			if ($diffstart >= 0) |  | ||||||
| 			{ |  | ||||||
| 				$cc .= sprintf ('<span class="%s">', $css_class); |  | ||||||
| 				$cc .= htmlspecialchars(substr($a, $diffstart, $i - $diffstart)); |  | ||||||
| 				$cc .= '</span>'; |  | ||||||
| 				$diffstart = -1; |  | ||||||
| 			} |  | ||||||
| 			$cc .= htmlspecialchars($a[$i]); |  | ||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| 		{ | 		{ | ||||||
| 			if ($diffstart < 0) $diffstart = $i; | 			for ($i = 0; $i < $ms_count; $i++) | ||||||
|  | 			{ | ||||||
|  | 				list($mp1, $mp2, $ml) = $ms[$i]; | ||||||
|  | 				if ($mp2 > $k) | ||||||
|  | 				{ | ||||||
|  | 					$cc .= sprintf ('<span class="%s">', $css_class); | ||||||
|  | 					$cc .= htmlspecialchars(substr($b, $k, $mp2 - $k)); | ||||||
|  | 					$cc .= '</span>'; | ||||||
|  | 				} | ||||||
|  | 				$cc .= htmlspecialchars(substr($b, $mp2, $ml)); | ||||||
|  | 				$k = $mp2 + $ml; | ||||||
|  | 			} | ||||||
|  | 			if ($k < strlen($b))  | ||||||
|  | 			{ | ||||||
|  | 				$cc .= sprintf ('<span class="%s">', $css_class); | ||||||
|  | 				$cc .= htmlspecialchars(substr($b, $k)); | ||||||
|  | 				$cc .= '</span>'; | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  |  | ||||||
|  | 		return $cc; | ||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	if ($diffstart >= 0) |  | ||||||
| 	{ |  | ||||||
| 		$cc .= sprintf ('<span class="%s">', $css_class); |  | ||||||
| 		$cc .= htmlspecialchars(substr($a, $diffstart, $alen - $diffstart)); |  | ||||||
| 		$cc .= '</span>'; |  | ||||||
| 	}	 |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		if ($alen > $blen) |  | ||||||
| 		{ |  | ||||||
| 			$cc .= sprintf ('<span class="%s">', $css_class); |  | ||||||
| 			$cc .= htmlspecialchars(substr ($a, $blen, $alen - $blen)); |  | ||||||
| 			$cc .= '</span>'; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	return $cc; |  | ||||||
| } |  | ||||||
| */ |  | ||||||
|  |  | ||||||
| //if (!$fullview) |  | ||||||
| if (FALSE) // don't want to delete code for the original diff view.  |  | ||||||
| { |  | ||||||
| 	print '<table id="code_diff_result_table">'; |  | ||||||
| 	/* |  | ||||||
| 	print '<pre>'; |  | ||||||
| 	print_r ($file['content']); |  | ||||||
| 	print '</pre>'; |  | ||||||
| 	*/ |  | ||||||
|  |  | ||||||
| 	print '<tr class="heading">'; |  | ||||||
| 	print '<th>'; |  | ||||||
| 	print ' '; |  | ||||||
|  |  | ||||||
| 	$currev = $file['created_rev']; |  | ||||||
| 	$prevrev = $file['against']['prev_rev']; |  | ||||||
| 	$prevanc = "code/diff/{$project->id}/{$xpar}/{$currev}/{$prevrev}"; |  | ||||||
| 	print anchor ($prevanc, '<i class="fa fa-arrow-circle-left"></i>'); |  | ||||||
| 	print ' '; |  | ||||||
|  |  | ||||||
| 	print $this->lang->line('Revision'); |  | ||||||
| 	print ' '; |  | ||||||
| 	print $file['against']['created_rev']; |  | ||||||
|  |  | ||||||
| 	$currev = $file['created_rev']; |  | ||||||
| 	$nextrev = $file['against']['next_rev']; |  | ||||||
| 	$nextanc = "code/diff/{$project->id}/{$xpar}/{$currev}/{$nextrev}"; |  | ||||||
| 	print ' '; |  | ||||||
| 	print anchor ($nextanc, '<i class="fa fa-arrow-circle-right"></i>'); |  | ||||||
|  |  | ||||||
| 	print '</th>'; |  | ||||||
|  |  | ||||||
| 	print '<th>'; |  | ||||||
| 	print ' '; |  | ||||||
|  |  | ||||||
| 	$currev = $file['against']['created_rev']; |  | ||||||
| 	$prevrev = $file['prev_rev']; |  | ||||||
| 	$prevanc = "code/diff/{$project->id}/{$xpar}/{$prevrev}/{$currev}"; |  | ||||||
| 	print anchor ($prevanc, '<i class="fa fa-arrow-circle-left"></i>'); |  | ||||||
| 	print ' '; |  | ||||||
|  |  | ||||||
| 	print $this->lang->line('Revision'); |  | ||||||
| 	print ' '; |  | ||||||
| 	print $file['created_rev']; |  | ||||||
|  |  | ||||||
| 	$currev = $file['against']['created_rev']; |  | ||||||
| 	$nextrev = $file['next_rev']; |  | ||||||
| 	$nextanc = "code/diff/{$project->id}/{$xpar}/{$nextrev}/{$currev}"; |  | ||||||
| 	print ' '; |  | ||||||
| 	print anchor ($nextanc, '<i class="fa fa-arrow-circle-right"></i>'); |  | ||||||
|  |  | ||||||
| 	print '</th>'; |  | ||||||
| 	print '</tr>'; |  | ||||||
|  |  | ||||||
| 	if ($headpath != $file['fullpath'] || |  | ||||||
| 	    $headpath != $file['against']['fullpath']) |  | ||||||
| 	{ |  | ||||||
| 		print '<tr>'; |  | ||||||
|  |  | ||||||
| 		print '<th>'; |  | ||||||
| 		print anchor ( |  | ||||||
| 			"code/file/{$project->id}/{$xpar}/{$file['against']['created_rev']}", |  | ||||||
| 			htmlspecialchars ($file['against']['fullpath'])); |  | ||||||
| 		print '</th>'; |  | ||||||
|  |  | ||||||
| 		print '<th>'; |  | ||||||
| 		print anchor ( |  | ||||||
| 			"code/file/{$project->id}/{$xpar}/{$file['created_rev']}", |  | ||||||
| 			htmlspecialchars ($file['fullpath'])); |  | ||||||
| 		print '</th>'; |  | ||||||
|  |  | ||||||
| 		print '</tr>'; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if (empty($file['content'])) |  | ||||||
| 	{ |  | ||||||
| 		print '<tr>'; |  | ||||||
| 		print '<td colspan="2">'; |  | ||||||
| 		print htmlspecialchars ($this->lang->line('MSG_NO_DIFF')); |  | ||||||
| 		print '</td>'; |  | ||||||
| 		print '</tr>'; |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		foreach ($file['content'] as $x) |  | ||||||
| 		{ |  | ||||||
| 			print '<tr class="diff">'; |  | ||||||
|  |  | ||||||
| 			if (array_key_exists('rev1line', $x))  |  | ||||||
| 			{ |  | ||||||
| 				$diffclass = array_key_exists('rev1diffclass', $x)? $x['rev1diffclass']: 'diff'; |  | ||||||
| 				print "<td class='{$diffclass}'>"; |  | ||||||
| 				print "<pre class='prettyprint lang-{$fileext}'>"; |  | ||||||
| 				if ($x['rev1line'] == '') print ' '; |  | ||||||
| 				else print htmlspecialchars($x['rev1line']); |  | ||||||
| 				print '</pre>'; |  | ||||||
| 				print '</td>'; |  | ||||||
| 			} |  | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 				print '<td class="diffrow">'; |  | ||||||
| 				print $x['rev1lineno']; |  | ||||||
| 				print '</td>'; |  | ||||||
| 			} |  | ||||||
|  |  | ||||||
| 			if (array_key_exists('rev2line', $x))  |  | ||||||
| 			{ |  | ||||||
| 				$diffclass = array_key_exists('rev2diffclass', $x)? $x['rev2diffclass']: 'diff'; |  | ||||||
| 				print "<td class='{$diffclass}'>"; |  | ||||||
| 				print "<pre class='prettyprint lang-{$fileext}'>"; |  | ||||||
| 				if ($x['rev2line'] == '') print ' '; |  | ||||||
| 				else print htmlspecialchars($x['rev2line']); |  | ||||||
| 				print '</pre>'; |  | ||||||
| 				print '</td>'; |  | ||||||
| 			} |  | ||||||
| 			else |  | ||||||
| 			{ |  | ||||||
| 				print '<td class="diffrow">'; |  | ||||||
| 				print $x['rev2lineno']; |  | ||||||
| 				print '</td>'; |  | ||||||
| 			} |  | ||||||
| 	 |  | ||||||
| 			print '</tr>'; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	print '</table>'; |  | ||||||
| } |  | ||||||
| else |  | ||||||
| { |  | ||||||
| 	$http_user_agent = $_SERVER['HTTP_USER_AGENT'];  | 	$http_user_agent = $_SERVER['HTTP_USER_AGENT'];  | ||||||
| 	$is_msie = (stristr($http_user_agent, 'MSIE') !== FALSE &&  | 	$is_msie = (stristr($http_user_agent, 'MSIE') !== FALSE &&  | ||||||
| 	            stristr($http_user_agent, 'Opera') === FALSE); | 			  stristr($http_user_agent, 'Opera') === FALSE); | ||||||
| 	if (!$is_msie) $is_msie = (preg_match ("/^Mozilla.+\(Windows.+\) like Gecko$/", $http_user_agent) !== FALSE); | 	if (!$is_msie) $is_msie = (preg_match ("/^Mozilla.+\(Windows.+\) like Gecko$/", $http_user_agent) !== FALSE); | ||||||
|  |  | ||||||
| 	$diff_view = $fullview? 'fulldiff': 'diff'; |  | ||||||
|  |  | ||||||
| 	print '<div style="width: 100%; overflow: hidden;" id="code_diff_result_fullview">'; | 	print '<div style="width: 100%; overflow: hidden;" id="code_diff_result_fullview">'; | ||||||
|  |  | ||||||
| 	// | 	// | ||||||
| @ -406,21 +362,21 @@ else | |||||||
|  |  | ||||||
| 	$currev = $file['created_rev']; | 	$currev = $file['created_rev']; | ||||||
| 	$prevrev = $file['against']['prev_rev']; | 	$prevrev = $file['against']['prev_rev']; | ||||||
| 	$prevanc = "code/{$diff_view}/{$project->id}/{$xpar}/{$currev}/{$prevrev}"; | 	$prevanc = "code/{$diff_view}/{$project->id}/{$hex_headpath}/{$currev}/{$prevrev}"; | ||||||
|  |  | ||||||
| 	print anchor ($prevanc, '<i class="fa fa-arrow-circle-left"></i>'); | 	print anchor ($prevanc, '<i class="fa fa-arrow-circle-left"></i>'); | ||||||
| 	print ' '; | 	print ' '; | ||||||
|  |  | ||||||
| 	// show the history details of the previous revision at the root directory | 	// show the history details of the previous revision at the root directory | ||||||
| 	$revanc = "code/revision/{$project->id}/!/{$file['against']['created_rev']}"; | 	$revanc = "code/revision/{$project->id}/!/{$file['against']['created_rev']}"; | ||||||
| 	$codeanc = "code/file/{$project->id}/{$xpar}/{$file['against']['created_rev']}"; | 	$codeanc = "code/file/{$project->id}/{$hex_headpath}/{$file['against']['created_rev']}"; | ||||||
| 	print anchor ($revanc, $this->lang->line('Revision')); | 	print anchor ($revanc, $this->lang->line('Revision')); | ||||||
| 	print ' '; | 	print ' '; | ||||||
| 	print anchor ($codeanc, $file['against']['created_rev']); | 	print anchor ($codeanc, $file['against']['created_rev']); | ||||||
|  |  | ||||||
| 	$currev = $file['created_rev']; | 	$currev = $file['created_rev']; | ||||||
| 	$nextrev = $file['against']['next_rev']; | 	$nextrev = $file['against']['next_rev']; | ||||||
| 	$nextanc = "code/{$diff_view}/{$project->id}/{$xpar}/{$currev}/{$nextrev}"; | 	$nextanc = "code/{$diff_view}/{$project->id}/{$hex_headpath}/{$currev}/{$nextrev}"; | ||||||
| 	print ' '; | 	print ' '; | ||||||
| 	print anchor ($nextanc, '<i class="fa fa-arrow-circle-right"></i>'); | 	print anchor ($nextanc, '<i class="fa fa-arrow-circle-right"></i>'); | ||||||
| 	print "</div>"; // navigator | 	print "</div>"; // navigator | ||||||
| @ -511,20 +467,20 @@ else | |||||||
|  |  | ||||||
| 	$currev = $file['against']['created_rev']; | 	$currev = $file['against']['created_rev']; | ||||||
| 	$prevrev = $file['prev_rev']; | 	$prevrev = $file['prev_rev']; | ||||||
| 	$prevanc = "code/{$diff_view}/{$project->id}/{$xpar}/{$prevrev}/{$currev}"; | 	$prevanc = "code/{$diff_view}/{$project->id}/{$hex_headpath}/{$prevrev}/{$currev}"; | ||||||
| 	print anchor ($prevanc, '<i class="fa fa-arrow-circle-left"></i>'); | 	print anchor ($prevanc, '<i class="fa fa-arrow-circle-left"></i>'); | ||||||
| 	print ' '; | 	print ' '; | ||||||
|  |  | ||||||
| 	// show the history details of the current revision at the root directory | 	// show the history details of the current revision at the root directory | ||||||
| 	$revanc = "code/revision/{$project->id}/!/{$file['created_rev']}"; | 	$revanc = "code/revision/{$project->id}/!/{$file['created_rev']}"; | ||||||
| 	$codeanc = "code/file/{$project->id}/${xpar}/{$file['created_rev']}"; | 	$codeanc = "code/file/{$project->id}/{$hex_headpath}/{$file['created_rev']}"; | ||||||
| 	print anchor ($revanc, $this->lang->line('Revision')); | 	print anchor ($revanc, $this->lang->line('Revision')); | ||||||
| 	print ' '; | 	print ' '; | ||||||
| 	print anchor ($codeanc, $file['created_rev']); | 	print anchor ($codeanc, $file['created_rev']); | ||||||
|  |  | ||||||
| 	$currev = $file['against']['created_rev']; | 	$currev = $file['against']['created_rev']; | ||||||
| 	$nextrev = $file['next_rev']; | 	$nextrev = $file['next_rev']; | ||||||
| 	$nextanc = "code/{$diff_view}/{$project->id}/{$xpar}/{$nextrev}/{$currev}"; | 	$nextanc = "code/{$diff_view}/{$project->id}/{$hex_headpath}/{$nextrev}/{$currev}"; | ||||||
| 	print ' '; | 	print ' '; | ||||||
| 	print anchor ($nextanc, '<i class="fa fa-arrow-circle-right"></i>'); | 	print anchor ($nextanc, '<i class="fa fa-arrow-circle-right"></i>'); | ||||||
| 	print "</div>"; // navigator | 	print "</div>"; // navigator | ||||||
| @ -558,7 +514,7 @@ else | |||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	print '</span>'; | 	print '</span>'; | ||||||
| 	 |  | ||||||
| 	print '<code class="line-numbered-code prettyprint lang-{$fileext}" id="new-code" class="line-numbered-code">'; | 	print '<code class="line-numbered-code prettyprint lang-{$fileext}" id="new-code" class="line-numbered-code">'; | ||||||
| 	$actual_line_no = 1; | 	$actual_line_no = 1; | ||||||
| 	foreach ($file['content'] as $x) | 	foreach ($file['content'] as $x) | ||||||
| @ -611,8 +567,8 @@ else | |||||||
|  |  | ||||||
|  |  | ||||||
| 	print '</div>'; | 	print '</div>'; | ||||||
| } |  | ||||||
| ?> | 	?> | ||||||
|  |  | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | |||||||
| @ -65,6 +65,7 @@ | |||||||
| 	$fulldiff_anchor_text = '<i class="fa fa-tasks"></i> ' . $this->lang->line('Full Difference'); | 	$fulldiff_anchor_text = '<i class="fa fa-tasks"></i> ' . $this->lang->line('Full Difference'); | ||||||
| 	$blame_anchor_text = '<i class="fa fa-bomb"></i> ' . $this->lang->line('Blame');  | 	$blame_anchor_text = '<i class="fa fa-bomb"></i> ' . $this->lang->line('Blame');  | ||||||
|  |  | ||||||
|  | 	$show_search = (CODEPOT_SIGNIN_FOR_CODE_SEARCH === FALSE || (isset($login['id']) && $login['id'] != '')); | ||||||
| ?> | ?> | ||||||
|  |  | ||||||
| <script type="text/javascript"> | <script type="text/javascript"> | ||||||
| @ -78,7 +79,7 @@ function show_alert (outputMsg, titleMsg) | |||||||
| 		width: 'auto', | 		width: 'auto', | ||||||
| 		height: 'auto', | 		height: 'auto', | ||||||
| 		buttons: { | 		buttons: { | ||||||
| 			"OK": function () { | 			"<?php print $this->lang->line('OK')?>": function () { | ||||||
| 				$(this).dialog("close"); | 				$(this).dialog("close"); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @ -613,33 +614,24 @@ $(function () { | |||||||
| 	}); | 	}); | ||||||
| <?php endif; ?> | <?php endif; ?> | ||||||
|  |  | ||||||
| 	$('#code_search_submit').button().click (function () { | 	$('#code_folder_metadata').accordion({ | ||||||
| 		if ($.trim($("#code_search_string").val()) != "") | 		collapsible: true | ||||||
| 		{ |  | ||||||
| 			$('#code_search_submit').button ('disable'); |  | ||||||
| 			$('#code_search_string_icon').addClass("fa-cog fa-spin"); |  | ||||||
| 			$('#code_search_form').submit (); |  | ||||||
| 		} |  | ||||||
|  |  | ||||||
| 		return false; // prevent the default behavior |  | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	$('#code_search_invertedly').button(); | 	<?php if ($revision > 0 && $revision < $next_revision): ?> | ||||||
| 	$('#code_search_case_insensitively').button(); | 		$("#code_folder_headrev_button").button().click (function() { | ||||||
| 	$('#code_search_recursively').button(); | 			$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/file/{$project->id}/${hex_headpath}"; ?>')); | ||||||
| 	$('#code_search_in_name').button(); | 			return false; | ||||||
| 	$('#code_search_is_regex').button(); | 		}); | ||||||
| 	$('.code_search_option').tooltip(); | 	<?php endif; ?> | ||||||
|  |  | ||||||
| 	$('#code_search_wildcard').text($('input[name=search_wildcard_pattern]').val()); | 	$("#code_folder_history_button").button().click (function() { | ||||||
|  | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print $history_path; ?>')); | ||||||
| 	$('#code_search_wildcard').editable({ | 		return false; | ||||||
| 		type: 'text',  | 	}); | ||||||
| 		title: '<?php print $this->lang->line('CODE_SEARCH_WILDCARD') ?>', | 	$("#code_folder_download_button").button().click (function() { | ||||||
| 		placement: 'bottom', | 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/fetch/{$project->id}/${hex_headpath}{$revreq}"; ?>')); | ||||||
| 		success: function(response, newValue) { | 		return false; | ||||||
| 			$('input[name=search_wildcard_pattern]').val(newValue); |  | ||||||
| 		} |  | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| 	$("#code_folder_loc_by_lang_button").button().click (function () { | 	$("#code_folder_loc_by_lang_button").button().click (function () { | ||||||
| @ -671,41 +663,53 @@ $(function () { | |||||||
| 		return false; | 		return false; | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
|  | <?php if ($show_search): ?> | ||||||
|  | 	$('#code_search_invertedly').button(); | ||||||
|  | 	$('#code_search_case_insensitively').button(); | ||||||
|  | 	$('#code_search_recursively').button(); | ||||||
|  | 	$('#code_search_in_name').button(); | ||||||
|  | 	$('#code_search_is_regex').button(); | ||||||
|  | 	$('.code_search_option').tooltip(); | ||||||
|  |  | ||||||
| 	$("#code_folder_search").hide(); | 	$('#code_search_wildcard').text($('input[name=search_wildcard_pattern]').val()); | ||||||
| 	btn = $("#code_folder_search_button").button().click (function () { |  | ||||||
| 		if ($("#code_folder_search").is(":visible")) | 	$('#code_search_wildcard').editable({ | ||||||
| 		{ | 		type: 'text',  | ||||||
| 			$("#code_folder_search").hide("blind",{},200); | 		title: '<?php print $this->lang->line('CODE_SEARCH_WILDCARD') ?>', | ||||||
|  | 		placement: 'bottom', | ||||||
|  | 		success: function(response, newValue) { | ||||||
|  | 			$('input[name=search_wildcard_pattern]').val(newValue); | ||||||
| 		} | 		} | ||||||
| 		else | 	}); | ||||||
| 		{ |  | ||||||
| 			$("#code_folder_search").show("blind",{},200); | 	$('#code_folder_search').dialog({ | ||||||
|  | 		title: '<?php print $this->lang->line('Search'); ?>', | ||||||
|  | 		resizable: true, | ||||||
|  | 		autoOpen: false, | ||||||
|  | 		modal: true, | ||||||
|  | 		width: 'auto', | ||||||
|  | 		height: 'auto', | ||||||
|  | 		buttons: { | ||||||
|  | 			'<?php print $this->lang->line('OK')?>': function () { | ||||||
|  | 				if ($.trim($('#code_search_string').val()) != "") | ||||||
|  | 				{ | ||||||
|  | 					$('#code_search_string_icon').addClass("fa-cog fa-spin"); | ||||||
|  | 					$('#code_folder_search').dialog ('disable'); | ||||||
|  | 					$('#code_search_form').submit (); | ||||||
|  | 				} | ||||||
|  | 			}, | ||||||
|  | 			'<?php print $this->lang->line('Cancel')?>': function () { | ||||||
|  | 				if (import_in_progress) return; | ||||||
|  | 				$('#code_folder_search').dialog('close'); | ||||||
|  | 			} | ||||||
| 		} | 		} | ||||||
|  | 	}); | ||||||
|  |  | ||||||
|  | 	$("#code_folder_search_button").button().click (function () { | ||||||
|  | 		$('#code_folder_search').dialog('open'); | ||||||
| 		return false; | 		return false; | ||||||
| 	}); | 	}); | ||||||
|  | <?php endif; ?> | ||||||
| 	$('#code_folder_metadata').accordion({ |  | ||||||
| 		collapsible: true |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
| 	<?php if ($revision > 0 && $revision < $next_revision): ?> |  | ||||||
| 		$("#code_folder_headrev_button").button().click (function() { |  | ||||||
| 			$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/file/{$project->id}/${hex_headpath}"; ?>')); |  | ||||||
| 			return false; |  | ||||||
| 		}); |  | ||||||
| 	<?php endif; ?> |  | ||||||
|  |  | ||||||
| 	$("#code_folder_history_button").button().click (function() { |  | ||||||
| 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print $history_path; ?>')); |  | ||||||
| 		return false; |  | ||||||
| 	}); |  | ||||||
| 	$("#code_folder_download_button").button().click (function() { |  | ||||||
| 		$(location).attr ('href', codepot_merge_path("<?php print site_url(); ?>", '<?php print "/code/fetch/{$project->id}/${hex_headpath}{$revreq}"; ?>')); |  | ||||||
| 		return false; |  | ||||||
| 	}); |  | ||||||
|  |  | ||||||
|  |  | ||||||
| 	render_readme (); | 	render_readme (); | ||||||
| }); | }); | ||||||
| @ -846,15 +850,18 @@ $this->load->view ( | |||||||
| 		print $this->lang->line('File');  | 		print $this->lang->line('File');  | ||||||
| 		print '</a>'; | 		print '</a>'; | ||||||
|  |  | ||||||
| 		print '<a id="code_folder_search_button" href="#">'; | 		if ($show_search) | ||||||
| 		print $this->lang->line('Search');  | 		{ | ||||||
| 		print '</a>'; | 			print '<a id="code_folder_search_button" href="#">'; | ||||||
|  | 			print $this->lang->line('Search');  | ||||||
|  | 			print '</a>'; | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		print '</div>'; | 		print '</div>'; | ||||||
|  |  | ||||||
| 		print '<div class="metadata-commit-date">'; | 		print '<div class="metadata-commit-date">'; | ||||||
| 		printf ('[%s] ', $file['created_rev']); | 		printf ('[%s] ', $file['created_rev']); | ||||||
| 		print strftime ('%Y-%m-%d %H:%M:%S %z', 0 /*$file['time_t']*/); | 		print strftime ('%Y-%m-%d %H:%M:%S %z', strtotime($file['last_changed_date'])); | ||||||
| 		print '</div>'; | 		print '</div>'; | ||||||
| 		?> | 		?> | ||||||
| 		<div style='clear: both;'></div> | 		<div style='clear: both;'></div> | ||||||
| @ -889,96 +896,95 @@ $this->load->view ( | |||||||
| 	<div id="code_folder_result_loc_by_file_graph"></div> | 	<div id="code_folder_result_loc_by_file_graph"></div> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | <div id="code_folder_search"> | ||||||
|  | 	<?php | ||||||
|  | 	print form_open("code/search/{$project->id}/", 'id="code_search_form"'); | ||||||
|  | 	if ($show_search) | ||||||
|  | 	{ | ||||||
|  | 		print form_hidden('search_folder', set_value('search_folder', $file['fullpath'])); | ||||||
|  | 		print form_hidden('search_revision', set_value('search_revision', $revision)); | ||||||
|  |  | ||||||
|  | 		print '<div id="code_folder_search_string_div">'; | ||||||
|  | 		print form_input(array( | ||||||
|  | 			'name' => 'search_string',  | ||||||
|  | 			'value' => set_value('search_string', ''),  | ||||||
|  | 			'id' =>'code_search_string', | ||||||
|  | 			'placeholder' => $this->lang->line('CODE_SEARCH_STRING') | ||||||
|  | 		)); | ||||||
|  | 		print '<i id="code_search_string_icon" class="fa"></i> '; | ||||||
|  | 		print '</div>'; | ||||||
|  |  | ||||||
|  | 		print '<div id="code_folder_search_option_div">'; | ||||||
|  | 		print form_checkbox(array( | ||||||
|  | 			'name'    => 'search_invertedly',  | ||||||
|  | 			'id'      => 'code_search_invertedly', | ||||||
|  | 			'class'   => 'code_search_option', | ||||||
|  | 			'value'   => 'Y', | ||||||
|  | 			'checked' => FALSE, | ||||||
|  | 			'title'   => $this->lang->line('CODE_SEARCH_INVERTEDLY') | ||||||
|  | 		)); | ||||||
|  | 		print form_label('v', 'code_search_invertedly',  | ||||||
|  | 			array('class'=>'code_search_option', 'id'=>'code_search_invertedly_label') | ||||||
|  | 		); | ||||||
|  |  | ||||||
|  | 		print form_checkbox(array( | ||||||
|  | 			'name'    => 'search_case_insensitively',  | ||||||
|  | 			'id'      => 'code_search_case_insensitively', | ||||||
|  | 			'class'   => 'code_search_option', | ||||||
|  | 			'value'   => 'Y', | ||||||
|  | 			'checked' => FALSE, | ||||||
|  | 			'title'   => $this->lang->line('CODE_SEARCH_CASE_INSENSITIVELY') | ||||||
|  | 		)); | ||||||
|  | 		print form_label('i', 'code_search_case_insensitively',  | ||||||
|  | 			array('class'=>'code_search_option', 'id'=>'code_search_case_insensitively_label') | ||||||
|  | 		); | ||||||
|  |  | ||||||
|  | 		print form_checkbox(array( | ||||||
|  | 			'name'    => 'search_recursively',  | ||||||
|  | 			'id'      => 'code_search_recursively', | ||||||
|  | 			'class'   => 'code_search_option', | ||||||
|  | 			'value'   => 'Y', | ||||||
|  | 			'checked' => TRUE, | ||||||
|  | 			'title'   => $this->lang->line('CODE_SEARCH_RECURSIVELY') | ||||||
|  | 		)); | ||||||
|  | 		print form_label('r', 'code_search_recursively',  | ||||||
|  | 			array('class'=>'code_search_option', 'id'=>'code_search_recursively_label') | ||||||
|  | 		); | ||||||
|  |  | ||||||
|  | 		print form_checkbox(array( | ||||||
|  | 			'name'    => 'search_in_name',  | ||||||
|  | 			'id'      => 'code_search_in_name', | ||||||
|  | 			'class'   => 'code_search_option', | ||||||
|  | 			'value'   => 'Y', | ||||||
|  | 			'checked' => FALSE, | ||||||
|  | 			'title'   => $this->lang->line('CODE_SEARCH_IN_NAME') | ||||||
|  | 		)); | ||||||
|  | 		print form_label('n', 'code_search_in_name', | ||||||
|  | 			array('class'=>'code_search_option', 'id'=>'code_search_in_name_label') | ||||||
|  | 		); | ||||||
|  |  | ||||||
|  | 		print form_checkbox(array( | ||||||
|  | 			'name'    => 'search_is_regex',  | ||||||
|  | 			'id'      => 'code_search_is_regex', | ||||||
|  | 			'class'   => 'code_search_option', | ||||||
|  | 			'value'   => 'Y', | ||||||
|  | 			'checked' => FALSE, | ||||||
|  | 			'title'   => $this->lang->line('CODE_SEARCH_IS_REGEX') | ||||||
|  | 		)); | ||||||
|  | 		print form_label('x', 'code_search_is_regex', | ||||||
|  | 			array('class'=>'code_search_option', 'id'=>'code_search_is_regex_label') | ||||||
|  | 		); | ||||||
|  |  | ||||||
|  | 		print '<a id="code_search_wildcard" href="#"></a>'; | ||||||
|  | 		print form_hidden('search_wildcard_pattern', set_value('search_wildcard_pattern', $wildcard_pattern)); | ||||||
|  |  | ||||||
|  | 		print '</div>'; | ||||||
|  | 	}  | ||||||
|  | 	print form_close(); | ||||||
|  | 	?> | ||||||
|  | </div> | ||||||
|  |  | ||||||
| <div class="result" id="code_folder_result"> | <div class="result" id="code_folder_result"> | ||||||
|  |  | ||||||
| 	<div id="code_folder_search" class="infobox"> |  | ||||||
| 		<?php |  | ||||||
| 		print form_open("code/search/{$project->id}/", 'id="code_search_form"'); |  | ||||||
| 		if (CODEPOT_SIGNIN_FOR_CODE_SEARCH === FALSE || (isset($login['id']) && $login['id'] != '')) |  | ||||||
| 		{ |  | ||||||
| 			print form_hidden('search_folder', set_value('search_folder', $file['fullpath'])); |  | ||||||
| 			print form_hidden('search_revision', set_value('search_revision', $revision)); |  | ||||||
|  |  | ||||||
| 			print '<i id="code_search_string_icon" class="fa"></i> '; |  | ||||||
| 			print form_input(array( |  | ||||||
| 				'name' => 'search_string',  |  | ||||||
| 				'value' => set_value('search_string', ''),  |  | ||||||
| 				'id' =>'code_search_string', |  | ||||||
| 				'placeholder' => $this->lang->line('CODE_SEARCH_STRING') |  | ||||||
| 			)); |  | ||||||
| 			print ' '; |  | ||||||
|  |  | ||||||
| 			print form_checkbox(array( |  | ||||||
| 				'name'    => 'search_invertedly',  |  | ||||||
| 				'id'      => 'code_search_invertedly', |  | ||||||
| 				'class'   => 'code_search_option', |  | ||||||
| 				'value'   => 'Y', |  | ||||||
| 				'checked' => FALSE, |  | ||||||
| 				'title'   => $this->lang->line('CODE_SEARCH_INVERTEDLY') |  | ||||||
| 			)); |  | ||||||
| 			print form_label('v', 'code_search_invertedly',  |  | ||||||
| 				array('class'=>'code_search_option', 'id'=>'code_search_invertedly_label') |  | ||||||
| 			); |  | ||||||
|  |  | ||||||
| 			print form_checkbox(array( |  | ||||||
| 				'name'    => 'search_case_insensitively',  |  | ||||||
| 				'id'      => 'code_search_case_insensitively', |  | ||||||
| 				'class'   => 'code_search_option', |  | ||||||
| 				'value'   => 'Y', |  | ||||||
| 				'checked' => FALSE, |  | ||||||
| 				'title'   => $this->lang->line('CODE_SEARCH_CASE_INSENSITIVELY') |  | ||||||
| 			)); |  | ||||||
| 			print form_label('i', 'code_search_case_insensitively',  |  | ||||||
| 				array('class'=>'code_search_option', 'id'=>'code_search_case_insensitively_label') |  | ||||||
| 			); |  | ||||||
|  |  | ||||||
| 			print form_checkbox(array( |  | ||||||
| 				'name'    => 'search_recursively',  |  | ||||||
| 				'id'      => 'code_search_recursively', |  | ||||||
| 				'class'   => 'code_search_option', |  | ||||||
| 				'value'   => 'Y', |  | ||||||
| 				'checked' => TRUE, |  | ||||||
| 				'title'   => $this->lang->line('CODE_SEARCH_RECURSIVELY') |  | ||||||
| 			)); |  | ||||||
| 			print form_label('r', 'code_search_recursively',  |  | ||||||
| 				array('class'=>'code_search_option', 'id'=>'code_search_recursively_label') |  | ||||||
| 			); |  | ||||||
|  |  | ||||||
| 			print form_checkbox(array( |  | ||||||
| 				'name'    => 'search_in_name',  |  | ||||||
| 				'id'      => 'code_search_in_name', |  | ||||||
| 				'class'   => 'code_search_option', |  | ||||||
| 				'value'   => 'Y', |  | ||||||
| 				'checked' => FALSE, |  | ||||||
| 				'title'   => $this->lang->line('CODE_SEARCH_IN_NAME') |  | ||||||
| 			)); |  | ||||||
| 			print form_label('n', 'code_search_in_name', |  | ||||||
| 				array('class'=>'code_search_option', 'id'=>'code_search_in_name_label') |  | ||||||
| 			); |  | ||||||
|  |  | ||||||
| 			print form_checkbox(array( |  | ||||||
| 				'name'    => 'search_is_regex',  |  | ||||||
| 				'id'      => 'code_search_is_regex', |  | ||||||
| 				'class'   => 'code_search_option', |  | ||||||
| 				'value'   => 'Y', |  | ||||||
| 				'checked' => FALSE, |  | ||||||
| 				'title'   => $this->lang->line('CODE_SEARCH_IS_REGEX') |  | ||||||
| 			)); |  | ||||||
| 			print form_label('x', 'code_search_is_regex', |  | ||||||
| 				array('class'=>'code_search_option', 'id'=>'code_search_is_regex_label') |  | ||||||
| 			); |  | ||||||
|  |  | ||||||
| 			print '<a id="code_search_wildcard" href="#"></a>'; |  | ||||||
| 			print form_hidden('search_wildcard_pattern', set_value('search_wildcard_pattern', $wildcard_pattern)); |  | ||||||
|  |  | ||||||
| 			print ' '; |  | ||||||
| 			printf ('<a id="code_search_submit" href="#">%s</a>', $this->lang->line('Search')); |  | ||||||
| 		}  |  | ||||||
| 		print form_close(); |  | ||||||
| 		?> |  | ||||||
| 	</div> |  | ||||||
|  |  | ||||||
| 	<?php | 	<?php | ||||||
| 	function comp_files ($a, $b) | 	function comp_files ($a, $b) | ||||||
| 	{ | 	{ | ||||||
|  | |||||||
| @ -501,7 +501,7 @@ function hide_unneeded_divs() | |||||||
| } | } | ||||||
|  |  | ||||||
| $(function() { | $(function() { | ||||||
| 	$("#code_revision_result_message").accordion ({ | 	$("#code_revision_metadata").accordion ({ | ||||||
| 		collapsible: true | 		collapsible: true | ||||||
| 	}); | 	}); | ||||||
|  |  | ||||||
| @ -634,16 +634,11 @@ $history = $file['history']; | |||||||
| 	<div style="clear: both;"></div> | 	<div style="clear: both;"></div> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <div class="menu" id="code_revision_mainarea_menu"> |  | ||||||
| <?php |  | ||||||
|  |  | ||||||
| ?> |  | ||||||
| </div> <!-- code_revision_mainarea_menu --> |  | ||||||
|  |  | ||||||
| <div class="result" id="code_revision_result"> |  | ||||||
|  |  | ||||||
| <div id="code_revision_result_message" class="collapsible-box"> | <div id="code_revision_metadata" class="collapsible-box"> | ||||||
| 	<div id="code_revision_result_message_header" class="collapsible-box-header" > | 	<div id="code_revision_metadata_header" class="collapsible-box-header" > | ||||||
| 		<?php | 		<?php | ||||||
| 		print '<div class="metadata-committer">'; | 		print '<div class="metadata-committer">'; | ||||||
| 		$user_icon_url = codepot_merge_path (site_url(), '/user/icon/' . $this->converter->AsciiToHex($history['author'])); | 		$user_icon_url = codepot_merge_path (site_url(), '/user/icon/' . $this->converter->AsciiToHex($history['author'])); | ||||||
| @ -673,11 +668,13 @@ $history = $file['history']; | |||||||
| 		<div style='clear: both'></div> | 		<div style='clear: both'></div> | ||||||
| 	</div> | 	</div> | ||||||
|  |  | ||||||
| 	<div id="code_revision_result_message_body"> | 	<div id="code_revision_metadata_body"> | ||||||
| 		<pre id="code_revision_result_message_text" class="pre-wrapped"><?php print htmlspecialchars($history['msg']); ?></pre> | 		<pre id="code_revision_metadata_text" class="pre-wrapped"><?php print htmlspecialchars($history['msg']); ?></pre> | ||||||
| 	</div> | 	</div> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
|  | <div class="result" id="code_revision_result"> | ||||||
|  |  | ||||||
| <div id="code_revision_result_files" class="collapsible-box"> | <div id="code_revision_result_files" class="collapsible-box"> | ||||||
| <div class="collapsible-box-header"><?php print $this->lang->line('Files')?></div> | <div class="collapsible-box-header"><?php print $this->lang->line('Files')?></div> | ||||||
| <div id="code_revision_result_files_table_container" class="collapsible-box-panel"> | <div id="code_revision_result_files_table_container" class="collapsible-box-panel"> | ||||||
|  | |||||||
| @ -110,136 +110,141 @@ $this->load->view ( | |||||||
|  |  | ||||||
| <div class="mainarea" id="code_search_mainarea"> | <div class="mainarea" id="code_search_mainarea"> | ||||||
|  |  | ||||||
| <div class="title"> | <div class="title-band" id="code_search_title_band"> | ||||||
| <?php |  | ||||||
| 	if ($revision <= 0) |  | ||||||
| 	{ |  | ||||||
| 		$revreq = ''; |  | ||||||
| 		$revreqroot = ''; |  | ||||||
| 	} |  | ||||||
| 	else |  | ||||||
| 	{ |  | ||||||
| 		$revreq = "/{$revision}"; |  | ||||||
| 		$revreqroot = '/' . $this->converter->AsciiToHex('.') . $revreq; |  | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	// print the main anchor for the root folder.  | 	<div class="title"> | ||||||
| 	// let the anchor text be the project name. | 		<?php | ||||||
| 	print anchor ( | 		if ($revision <= 0) | ||||||
| 		"code/file/{$project->id}{$revreqroot}",  | 		{ | ||||||
| 		htmlspecialchars($project->name)); | 			$revreq = ''; | ||||||
|  | 			$revreqroot = ''; | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			$revreq = "/{$revision}"; | ||||||
|  | 			$revreqroot = '/' . $this->converter->AsciiToHex('.') . $revreq; | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 	// explode non-root folder parts to anchors | 		// print the main anchor for the root folder.  | ||||||
| 	$exps = explode ('/', $headpath); | 		// let the anchor text be the project name. | ||||||
| 	$expsize = count($exps); |  | ||||||
| 	$par = ''; |  | ||||||
| 	for ($i = 1; $i < $expsize; $i++) |  | ||||||
| 	{ |  | ||||||
| 		print '/'; |  | ||||||
| 		$par .= '/' . $exps[$i]; |  | ||||||
| 		$xpar = $this->converter->AsciiToHex ($par); |  | ||||||
| 		print anchor ( | 		print anchor ( | ||||||
| 			"code/file/{$project->id}/{$xpar}{$revreq}", | 			"code/file/{$project->id}{$revreqroot}",  | ||||||
| 			htmlspecialchars($exps[$i])); | 			htmlspecialchars($project->name)); | ||||||
| 	} |  | ||||||
|  |  | ||||||
| 	if ($headpath != $file['fullpath']) | 		// explode non-root folder parts to anchors | ||||||
| 	{ | 		$exps = explode ('/', $headpath); | ||||||
| 		print ' - '; | 		$expsize = count($exps); | ||||||
| 		print htmlspecialchars ($file['fullpath']); | 		$par = ''; | ||||||
| 	} | 		for ($i = 1; $i < $expsize; $i++) | ||||||
| ?> | 		{ | ||||||
| </div> | 			print '/'; | ||||||
|  | 			$par .= '/' . $exps[$i]; | ||||||
|  | 			$xpar = $this->converter->AsciiToHex ($par); | ||||||
|  | 			print anchor ( | ||||||
|  | 				"code/file/{$project->id}/{$xpar}{$revreq}", | ||||||
|  | 				htmlspecialchars($exps[$i])); | ||||||
|  | 		} | ||||||
|  |  | ||||||
| <div class="infostrip" id="code_search_mainarea_infostrip"> | 		if ($headpath != $file['fullpath']) | ||||||
| 	<?php | 		{ | ||||||
| 	print form_open("code/search/{$project->id}/", 'id="code_search_form"'); | 			print ' - '; | ||||||
| 	print form_hidden ('search_folder', set_value('search_folder', $file['fullpath'])); | 			print htmlspecialchars ($file['fullpath']); | ||||||
| 	print form_hidden ('search_revision', set_value('search_revision', $revision)); | 		} | ||||||
| 	 | 		?> | ||||||
| 	print '<i id="code_search_string_icon" class="fa"></i> '; | 	</div> | ||||||
| 	print form_input(array( |  | ||||||
| 		'name' => 'search_string',  |  | ||||||
| 		'value' => set_value('search_string', ''),  |  | ||||||
| 		'id' =>'code_search_string', |  | ||||||
| 		'placeholder' => $this->lang->line('CODE_SEARCH_STRING') |  | ||||||
| 	)); |  | ||||||
| 	print ' '; |  | ||||||
|  |  | ||||||
| 	print form_checkbox(array( | 	<div class="actions"> | ||||||
| 		'name'    => 'search_invertedly',  | 		<?php | ||||||
| 		'id'      => 'code_search_invertedly', | 		print form_open("code/search/{$project->id}/", 'id="code_search_form"'); | ||||||
| 		'class'   => 'code_search_option', | 		print form_hidden ('search_folder', set_value('search_folder', $file['fullpath'])); | ||||||
| 		'value'   => 'Y', | 		print form_hidden ('search_revision', set_value('search_revision', $revision)); | ||||||
| 		'checked' => ($invertedly == 'Y'), | 		 | ||||||
| 		'title'   => $this->lang->line('CODE_SEARCH_INVERTEDLY') | 		print '<i id="code_search_string_icon" class="fa"></i> '; | ||||||
| 	)); | 		print form_input(array( | ||||||
| 	print form_label('v', 'code_search_invertedly', | 			'name' => 'search_string',  | ||||||
| 		array('class'=>'code_search_option', 'id'=>'code_search_invertedly_label') | 			'value' => set_value('search_string', ''),  | ||||||
| 	); | 			'id' =>'code_search_string', | ||||||
|  | 			'placeholder' => $this->lang->line('CODE_SEARCH_STRING') | ||||||
|  | 		)); | ||||||
|  | 		print ' '; | ||||||
|  |  | ||||||
| 	print form_checkbox(array( | 		print form_checkbox(array( | ||||||
| 		'name'    => 'search_case_insensitively',  | 			'name'    => 'search_invertedly',  | ||||||
| 		'id'      => 'code_search_case_insensitively', | 			'id'      => 'code_search_invertedly', | ||||||
| 		'class'   => 'code_search_option', | 			'class'   => 'code_search_option', | ||||||
| 		'value'   => 'Y', | 			'value'   => 'Y', | ||||||
| 		'checked' => ($case_insensitively == 'Y'), | 			'checked' => ($invertedly == 'Y'), | ||||||
| 		'title'   => $this->lang->line('CODE_SEARCH_CASE_INSENSITIVELY') | 			'title'   => $this->lang->line('CODE_SEARCH_INVERTEDLY') | ||||||
| 	)); | 		)); | ||||||
| 	print form_label('i', 'code_search_case_insensitively',  | 		print form_label('v', 'code_search_invertedly', | ||||||
| 		array('class'=>'code_search_option', 'id'=>'code_search_case_insensitively_label') | 			array('class'=>'code_search_option', 'id'=>'code_search_invertedly_label') | ||||||
| 	); | 		); | ||||||
|  |  | ||||||
| 	print form_checkbox(array( | 		print form_checkbox(array( | ||||||
| 		'name'    => 'search_recursively',  | 			'name'    => 'search_case_insensitively',  | ||||||
| 		'id'      => 'code_search_recursively', | 			'id'      => 'code_search_case_insensitively', | ||||||
| 		'class'   => 'code_search_option', | 			'class'   => 'code_search_option', | ||||||
| 		'value'   => 'Y', | 			'value'   => 'Y', | ||||||
| 		'checked' => ($recursively == 'Y'), | 			'checked' => ($case_insensitively == 'Y'), | ||||||
| 		'title'   => $this->lang->line('CODE_SEARCH_RECURSIVELY') | 			'title'   => $this->lang->line('CODE_SEARCH_CASE_INSENSITIVELY') | ||||||
| 	)); | 		)); | ||||||
| 	print form_label('r', 'code_search_recursively',  | 		print form_label('i', 'code_search_case_insensitively',  | ||||||
| 		array('class'=>'code_search_option', 'id'=>'code_search_recursively_label') | 			array('class'=>'code_search_option', 'id'=>'code_search_case_insensitively_label') | ||||||
| 	); | 		); | ||||||
|  |  | ||||||
| 	print form_checkbox(array( | 		print form_checkbox(array( | ||||||
| 		'name'    => 'search_in_name',  | 			'name'    => 'search_recursively',  | ||||||
| 		'id'      => 'code_search_in_name', | 			'id'      => 'code_search_recursively', | ||||||
| 		'class'   => 'code_search_option', | 			'class'   => 'code_search_option', | ||||||
| 		'value'   => 'Y', | 			'value'   => 'Y', | ||||||
| 		'checked' => ($in_name == 'Y'), | 			'checked' => ($recursively == 'Y'), | ||||||
| 		'title'   => $this->lang->line('CODE_SEARCH_IN_NAME') | 			'title'   => $this->lang->line('CODE_SEARCH_RECURSIVELY') | ||||||
| 	)); | 		)); | ||||||
| 	print form_label('n', 'code_search_in_name',  | 		print form_label('r', 'code_search_recursively',  | ||||||
| 		array('class'=>'code_search_option', 'id'=>'code_search_in_name_label') | 			array('class'=>'code_search_option', 'id'=>'code_search_recursively_label') | ||||||
| 	); | 		); | ||||||
|  |  | ||||||
| 	print form_checkbox(array( | 		print form_checkbox(array( | ||||||
| 		'name'    => 'search_is_regex',  | 			'name'    => 'search_in_name',  | ||||||
| 		'id'      => 'code_search_is_regex', | 			'id'      => 'code_search_in_name', | ||||||
| 		'class'   => 'code_search_option', | 			'class'   => 'code_search_option', | ||||||
| 		'value'   => 'Y', | 			'value'   => 'Y', | ||||||
| 		'checked' => ($is_regex == 'Y'), | 			'checked' => ($in_name == 'Y'), | ||||||
| 		'title'   => $this->lang->line('CODE_SEARCH_IS_REGEX') | 			'title'   => $this->lang->line('CODE_SEARCH_IN_NAME') | ||||||
| 	)); | 		)); | ||||||
| 	print form_label('x', 'code_search_is_regex',  | 		print form_label('n', 'code_search_in_name',  | ||||||
| 		array('class'=>'code_search_option', 'id'=>'code_search_is_regex_label') | 			array('class'=>'code_search_option', 'id'=>'code_search_in_name_label') | ||||||
| 	); | 		); | ||||||
|  |  | ||||||
| 	print '<a id="code_search_wildcard" href="#"></a>'; | 		print form_checkbox(array( | ||||||
| 	print form_hidden('search_wildcard_pattern', set_value('search_wildcard_pattern', $wildcard_pattern)); | 			'name'    => 'search_is_regex',  | ||||||
|  | 			'id'      => 'code_search_is_regex', | ||||||
|  | 			'class'   => 'code_search_option', | ||||||
|  | 			'value'   => 'Y', | ||||||
|  | 			'checked' => ($is_regex == 'Y'), | ||||||
|  | 			'title'   => $this->lang->line('CODE_SEARCH_IS_REGEX') | ||||||
|  | 		)); | ||||||
|  | 		print form_label('x', 'code_search_is_regex',  | ||||||
|  | 			array('class'=>'code_search_option', 'id'=>'code_search_is_regex_label') | ||||||
|  | 		); | ||||||
|  |  | ||||||
| 	print ' '; | 		print '<a id="code_search_wildcard" href="#"></a>'; | ||||||
| 	printf ('<a id="code_search_submit" href="#">%s</a>', $this->lang->line('Search')); | 		print form_hidden('search_wildcard_pattern', set_value('search_wildcard_pattern', $wildcard_pattern)); | ||||||
| 	//print form_submit ('search_submit', $this->lang->line('Search'), 'id="code_search_submit"'); |  | ||||||
| 	print ' | '; |  | ||||||
| 	print anchor ( |  | ||||||
| 		"code/revision/{$project->id}/!/{$file['created_rev']}", |  | ||||||
| 		sprintf("%s %s", $this->lang->line('Revision'), $file['created_rev']) |  | ||||||
| 	); |  | ||||||
|  |  | ||||||
| 	print form_close(); | 		print ' '; | ||||||
| 	?> | 		printf ('<a id="code_search_submit" href="#">%s</a>', $this->lang->line('Search')); | ||||||
|  | 		//print form_submit ('search_submit', $this->lang->line('Search'), 'id="code_search_submit"'); | ||||||
|  | 		print ' | '; | ||||||
|  | 		print anchor ( | ||||||
|  | 			"code/revision/{$project->id}/!/{$file['created_rev']}", | ||||||
|  | 			sprintf("%s %s", $this->lang->line('Revision'), $file['created_rev']) | ||||||
|  | 		); | ||||||
|  |  | ||||||
|  | 		print form_close(); | ||||||
|  | 		?> | ||||||
|  | 	</div> | ||||||
|  |  | ||||||
|  | 	<div style="clear: both;"></div> | ||||||
| </div> | </div> | ||||||
|  |  | ||||||
| <div id="code_search_mainarea_result" class="result"> | <div id="code_search_mainarea_result" class="result"> | ||||||
|  | |||||||
| @ -7,7 +7,8 @@ | |||||||
| #code_blame_result, | #code_blame_result, | ||||||
| #code_revision_result, | #code_revision_result, | ||||||
| #code_history_result, | #code_history_result, | ||||||
| #code_diff_result { | #code_diff_result, | ||||||
|  | #code_search_result { | ||||||
| 	position: relative; | 	position: relative; | ||||||
| 	overflow: auto; | 	overflow: auto; | ||||||
| 	margin: 0.2em 0 0.2em 0; | 	margin: 0.2em 0 0.2em 0; | ||||||
| @ -35,22 +36,39 @@ | |||||||
| 	height: auto; | 	height: auto; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | #code_diff_metadata_container { | ||||||
|  | 	margin: 0; | ||||||
|  | 	padding: 0; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | #code_diff_metadata, | ||||||
|  | #code_diff_metadata_against { | ||||||
|  | 	width: 50%; | ||||||
|  | 	float: left; | ||||||
|  | 	margin: 0; | ||||||
|  | 	padding: 0; | ||||||
|  | } | ||||||
|  |  | ||||||
| #code_folder_metadata_header, | #code_folder_metadata_header, | ||||||
| #code_file_metadata_header, | #code_file_metadata_header, | ||||||
| #code_blame_metadata_header, | #code_blame_metadata_header, | ||||||
| #code_revision_result_message_header { | #code_revision_metadata_header, | ||||||
|  | #code_diff_metadata_header, | ||||||
|  | #code_diff_metadata_against_header { | ||||||
| 	line-height: 2em; | 	line-height: 2em; | ||||||
| } | } | ||||||
|  |  | ||||||
| #code_folder_metadata_header .metadata-committer-icon, | #code_folder_metadata_header .metadata-committer-icon, | ||||||
| #code_file_metadata_header .metadata-committer-icon, | #code_file_metadata_header .metadata-committer-icon, | ||||||
| #code_blame_metadata_header .metadata-committer-icon, | #code_blame_metadata_header .metadata-committer-icon, | ||||||
| #code_revision_result_message_header .metadata-committer-icon { | #code_revision_metadata_header .metadata-committer-icon, | ||||||
|  | #code_diff_metadata_header .metadata-committer-icon, | ||||||
|  | #code_diff_metadata_against_header .metadata-committer-icon { | ||||||
| 	height: 2em;  | 	height: 2em;  | ||||||
| 	width: auto; | 	width: auto; | ||||||
| 	vertical-align: middle; | 	vertical-align: middle; | ||||||
| 	margin-right: 2px; | 	margin-right: 2px; | ||||||
| 	 |  | ||||||
| 	-moz-border-radius: 3px; | 	-moz-border-radius: 3px; | ||||||
| 	-webkit-border-radius: 3px; | 	-webkit-border-radius: 3px; | ||||||
| 	border-radius: 3px; | 	border-radius: 3px; | ||||||
| @ -59,7 +77,9 @@ | |||||||
| #code_folder_metadata_header .metadata-committer, | #code_folder_metadata_header .metadata-committer, | ||||||
| #code_file_metadata_header .metadata-committer, | #code_file_metadata_header .metadata-committer, | ||||||
| #code_blame_metadata_header .metadata-committer, | #code_blame_metadata_header .metadata-committer, | ||||||
| #code_revision_result_message_header .metadata-committer { | #code_revision_metadata_header .metadata-committer, | ||||||
|  | #code_diff_metadata_header .metadata-committer, | ||||||
|  | #code_diff_metadata_against_header .metadata-committer { | ||||||
| 	float: left; | 	float: left; | ||||||
| 	color: #111111; | 	color: #111111; | ||||||
| } | } | ||||||
| @ -67,7 +87,9 @@ | |||||||
| #code_folder_metadata_header .metadata-menu, | #code_folder_metadata_header .metadata-menu, | ||||||
| #code_file_metadata_header .metadata-menu, | #code_file_metadata_header .metadata-menu, | ||||||
| #code_blame_metadata_header .metadata-menu, | #code_blame_metadata_header .metadata-menu, | ||||||
| #code_revision_result_message_header .metadata-menu { | #code_revision_metadata_header .metadata-menu, | ||||||
|  | #code_diff_metadata_header .metadata-menu, | ||||||
|  | #code_diff_metadata_against_header .metadata-menu { | ||||||
| 	float: left; | 	float: left; | ||||||
| 	margin-left: 1em; | 	margin-left: 1em; | ||||||
| } | } | ||||||
| @ -75,14 +97,18 @@ | |||||||
| #code_folder_metadata_header .metadata-commit-date, | #code_folder_metadata_header .metadata-commit-date, | ||||||
| #code_file_metadata_header .metadata-commit-date, | #code_file_metadata_header .metadata-commit-date, | ||||||
| #code_blame_metadata_header .metadata-commit-date, | #code_blame_metadata_header .metadata-commit-date, | ||||||
| #code_revision_result_message_header .metadata-commit-date { | #code_revision_metadata_header .metadata-commit-date, | ||||||
|  | #code_diff_metadata_header .metadata-commit-date, | ||||||
|  | #code_diff_metadata_against_header .metadata-commit-date { | ||||||
| 	float: right; | 	float: right; | ||||||
| } | } | ||||||
|  |  | ||||||
| #code_folder_metadata_body, | #code_folder_metadata_body, | ||||||
| #code_file_metadata_body, | #code_file_metadata_body, | ||||||
| #code_blame_metadata_body, | #code_blame_metadata_body, | ||||||
| #code_revision_result_message_body { | #code_revision_metadata_body, | ||||||
|  | #code_diff_metadata_body,  | ||||||
|  | #code_diff_metadata_against_body { | ||||||
| 	background-color: #FCFCFC; | 	background-color: #FCFCFC; | ||||||
| 	padding: 0.2em 0.2em 0.2em 0.2em; | 	padding: 0.2em 0.2em 0.2em 0.2em; | ||||||
| 	margin: 0; | 	margin: 0; | ||||||
| @ -109,10 +135,6 @@ | |||||||
| /*-----------------------------------------------  | /*-----------------------------------------------  | ||||||
|  * project source folder view  |  * project source folder view  | ||||||
|  *-----------------------------------------------*/ |  *-----------------------------------------------*/ | ||||||
| #code_folder_search { |  | ||||||
| 	padding: 0.2em 0.2em 0.2em 0.2em; |  | ||||||
| } |  | ||||||
| 	 |  | ||||||
| #code_folder_result_table tr { | #code_folder_result_table tr { | ||||||
| 	vertical-align: middle; | 	vertical-align: middle; | ||||||
| } | } | ||||||
| @ -228,11 +250,7 @@ | |||||||
| /*-----------------------------------------------  | /*-----------------------------------------------  | ||||||
|  * project source revision view  |  * project source revision view  | ||||||
|  *-----------------------------------------------*/ |  *-----------------------------------------------*/ | ||||||
| #code_revision_result .collapsible-box { | #code_revision_metadata_text { | ||||||
| 	margin-bottom: 0.5em; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| #code_revision_result_message_text { |  | ||||||
| 	line-height: 1.3em; | 	line-height: 1.3em; | ||||||
| 	padding: 0 0.2em 0 0.2em; | 	padding: 0 0.2em 0 0.2em; | ||||||
| } | } | ||||||
|  | |||||||
| @ -123,7 +123,7 @@ textarea { | |||||||
| } | } | ||||||
|  |  | ||||||
| .content .collapsible-box-panel { | .content .collapsible-box-panel { | ||||||
| 	line-height: 2em; | 	line-height: 1.5em; | ||||||
| 	margin: 1px 0 0 0; | 	margin: 1px 0 0 0; | ||||||
| 	padding: 0.2em 0.2em 0.2em 0.2em !important; /* !important so that jquery-ui.css doesn't override this */ | 	padding: 0.2em 0.2em 0.2em 0.2em !important; /* !important so that jquery-ui.css doesn't override this */ | ||||||
| } | } | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user